什么是开放网络?

网络行业的发展如果非要归纳出一个明确的发展趋势的话,那这个趋势无疑是“开放”。业界有一个奇怪的现象,但凡涉及到“开源、开放”的技术或者社区,好像都比较受到追捧,网络行业也不外如是,那么到底什么是开放网络呢?

网络用户和运营商长期以来一直在传播这样一个观点,他们认为开放是指支持组织的自由替代。如果我现在在网络中有个A盒子,它可以用B盒子加以取代,那这就是开放网络。但是这是不是就意味着用户可以简单地在同一个位置取代设备?这些接口是否完全相同?用户能够接受需要微调以支持硬件取代的网络吗?甚至是只支持主流硬件替代的“开放”网络吗?

扑朔迷离的未来

传统网络设备有三种类型的接口。一类支持端口/中继数据平面连接。另一种支持的控制交互,第三种支持设备管理。软件组件在某种意义上等同于身,需要独立的接口,通常被称为应用程序接口即API,我们将网络软件API归类于设备接口相同的第三个种类中。事实上,像托管路由实例一样的网络软件将具备这三类接口,但是它们同时还具有一整套设备从未显示的API,而这些API使软件定义中的开放性变得扑朔迷离。

假设用户需要托管一个Virtual_Router单个软件元素,用户必须能够将其部署在需要软件和一组API的服务器上,用户必须能够管理服务器和路由器实例。

当用户希望能够扩展虚拟路由器的端口和中继接口时,这种情况将变得不受控制。端口和中继件必须连接核心路由器元素——另一套API,用户可以在完整的软件定义网络(SDN)或网络功能虚拟化(NFV)中轻松识别几十个API,并且部署完成的SDN/NFV可能具有数万个API。处理数量呈爆炸式增长的API,厂商给出的方式是将API发布在某种目录中。

然而,这种方式效果非常有限,因为API不是我们在设备中可以看到的物理接口,设备通过物理接口以非常具体的方式互通。API不会描述集体图案管虚拟设备的工作原理,而是如何在虚拟设备内部进行工作。API支持软件组件工作流程,但是当路由器具备标准功能时,每个路由器供应商将其软件分成相同的组件?还是使用完全相同的信息格式来进行通信?

举个规模化网络软件的负载能力的例子,一个厂商可能会在其“规模化控制”API中要求每个分组数据包的规模限制,另一厂商可能希望根据托管它的处理器的CPU利用率来规模化组件的副本。第三个厂商可能都不接受明确的规模化控制。当今开放的最大问题是,开放API不仅仅意味着已发布的API,还意味着通过API的信息格式,并且取决于软件实现的细节。

基于意图(intent)

网络软件正在试图通过一种基于所谓“意图”的层次建模来解决这个问题,意图模式描述“what”所指的是功能而不是实现方式(How)。由于暴露了特定的属性显式API,虚拟路由首先被建模,任何想要成为虚拟路由的东西都必须具备这样的高级模型。其中可能会定义“port-instances”和“trunk-instances”,它们描述了虚拟路由的各项功能,但在某种程度上,某一部分的意图模型包含隐藏或专用的逻辑,这些是不开放的。

用户可以根据开放的定义将一个兼容的虚拟路由替换成另一个虚拟路由,如果虚拟路由模型分解成“port-instances”和“trunk-instances”模型,那么也可以通过替换这些加以实现。然而,如果基本的核心路由逻辑不是单独建模的,那么用户不能实现设备或虚拟路由的替换。

这意味着在我网络软件和软件驱动的网络中,我们承认了一切都不开放且不允许实现专有的变化的方式来表述所谓的开放性的概念扩展。这意味着开放API本身就是一个笑话,因为它不具备任何意义,开放的未来是将功能与实现分开的软件建模的未来。

我们应该关注的是如何建立软件建模,如果我们可以为设备和设备网络定义标准结构,并且可以在基于意图的层次结构上构建这种标准的网络,我们未来的软件定义网络元素将遍地开花,这也是我们所期待的。

原文发布于微信公众号 - SDNLAB(SDNLAB)

原文发表时间:2017-07-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

数据库设计中的6个最佳实践步骤

如果设计得当,数据库是记录、存储、检索和比较数据的强大工具。然而,一个没有经过精心设计和目的的数据库不仅仅是无效的,它对那些使用它最多的人(开发人员)来说是一个...

1292
来自专栏ThoughtWorks

TW洞见〡软件缺陷的有效管理

文章作者来自ThoughtWorks:林冰玉,图片来自网络。 “这次发布之前怎么这么多的缺陷,是不是需要分析一下啊?” 答案是肯定的,可是这个时候才想起要分...

2677
来自专栏Golang语言社区

[Go语言]采用Go语言作为服务端编程语言的建议书

按:这是我给公司(部门)写的使用推广Go语言的建议书,给领导看了以后,领导同意使用Go语言对一些服务器程序进行改写并部署到外网进行验证。希望这篇文章能够给同样在...

5727
来自专栏ThoughtWorks

「微前端」- 将微服务理念扩展到前端开发 | 洞见

前言 在 ThoughtWorks 正式发布的最新一期技术雷达当中,「微前端(Micro Fontends)」已经进入到试验阶段,而试验环所列出的技术是我们认为...

4627
来自专栏Golang语言社区

[Go语言]采用Go语言作为服务端编程语言的建议书

按:这是我给公司(部门)写的使用推广Go语言的建议书,给领导看了以后,领导同意使用Go语言对一些服务器程序进行改写并部署到外网进行验证。希望这篇文章能够给同样在...

9288
来自专栏技术杂文

微服务:真正的架构模式

微服务的相关知识和它的神秘令我着迷。概念上的微服务就像是现代最有趣的流行架构之一。它足够功能强大,有着广泛的使用方法;也足够模糊,难以统一而论。

2643
来自专栏编程

深度解析用例设计方法

许多测试类书籍中都有大幅的篇章介绍用例的设计方法,如等价类划分,边界值,错误推断,因果图等。 ? 但实际应用中这些理论却不能给我们很明确的行为指导,尤其是业务复...

2045
来自专栏云原生架构实践

什么是微服务

《POJOs in Action》作者,CloudFoundry.com的创建者之一

1864
来自专栏木可大大

漫谈软件开发过程

一个合理而又有效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。目前软件开发一般过程包含以下几个步骤:理解需求、架构设...

1294
来自专栏Java后端技术栈

一篇故事告诉你什么是微服务架构!

看到最近“微服务架构”这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习。而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落...

1343

扫码关注云+社区

领取腾讯云代金券