近些年,以Linux领衔的开源项目在IT界出尽了风头,涌现了很多的优秀开源项目。如今人人都在讲开源,在刚理解了软件开源之后,又听说了硬件开源,仿佛现在不说开源就不够Bigge。So,为什么要开源呢?在网络数通领域也掀起了开源热潮,我们今天就围绕SDN、NFV来捋一捋开源到底干了什么。
传统网络做了什么
在传统的网络行业中,标准制定和厂商具体的技术实现并不是很合拍。像IETF这些机构会对网络和存储的相关标准进行定义,供应商也会相应地实现他们的解决方案,但这看似两个正常的工作过程往往会由于实现的多样性导致兼容性问题(这会对最初定义的标准造成破坏)。
为了让各种黑盒之间实现兼容,供应商不得不在各种相关工程上耗费数周的时间。然后,工程师们再开个“Plug Fests”大会,来测试和验证硬件和软件的互操作性(话说这样工作真的很充实)。但是为每个新应用建立标准和证明操作性这一过程在效率至上的时代绝对是荒谬和不切实际的。那么为什么在网络中标准化软件和硬件仍然是一个常见的做法呢?
部分原因在于网络标准化已经经历了三十年。以前,这些网络标准由电信用例驱动,已经部署好的失败系统的下行风险是灾难性的,所以无法被忽视。然而重新定义标准化这一繁琐的过程将推迟供应商将产品推向市场的时间。因为修改了固件以后,软件需要重新测试和验证,这就会推迟产品的发行。
如今,Linux已经成为服务器的主流操作系统,但对网络来说并非如此。部分原因在于网络供应商的专制和网络应用程序和服务、网络操作系统(OS)、硬件的黑盒实现。在传统网络中,数据平面和控制平面通过路由器和交换机固件实现。这两个平面协调工作,数据平面负责转发数据流、通过一些协议(包括VXLAN、GRE)处理多个对话、连接与管理远程客户端。控制平面负责处理信号流,定义路由器如何处理传入的数据包,通过使用路由表和实现数据包的优先处理,如差异化服务的QoS。
反过来说,整个系统本质上就是一个黑盒。
软件定义网络(SDN)正是致力于改变这种方式的网络方案。SDN将控制平面从数据平面分离,用软件实现控制平面,从而不再是黑盒实现。这意味着网络应用、网络操作系统、硬件可以来自不同的供应商,只要他们可以使用部署在白盒或“brite”盒上彼此约定的接口进行通信。白盒交换机用的是现成的商用交换机芯片,里面含有开放的SDN软件来运行网络应用程序。
好腻害的Linux
随着Linux进军网络操作系统(基于标准的x86服务器),网络应用程序和网络操作系统之间的通信一直采用标准的Linux协议,该协议是开放的。Linux作为网络操作系统改变了网络格局,因为运行在启用Linux的交换机上的应用程序不再需要IETF标准来进行交互,就像运行在数据中心中Linux服务器上任何的应用程序。
控制平面通过开放接口来开启网络空间基础创新的大门。新一代的网络应用程序之前受限于专门的ASICs(耗时数年,耗资数百万设计和制造出来),现在可以作为小型产品重新构思,因为Linux交换机成为了主流操作系统。
数据平面完成上面讨论的如传输数据、通过一些协议处理多个对话、连接与管理远程客户端等功能。然而,数据平面仍然会或多或少受ASICs和固件的约束。原因在于控制数据平面的供应商(如博科和英特尔)保持网络操作系统和商业芯片之间的接口的关闭状态或者限制访问。
虽然Linux作为网络操作系统,其开发工具和库被广泛使用,但是网络应用程序的开发仍然比较复杂。抛开复杂性不说,在全球社区中,似乎也并不缺少Linux专家一起解决问题。而对于传统网络来说,开发者往往在少数公司掌握的闭源平台上开发。
传统的网络应用程序必须为每个支持的网络操作系统单独编写。但是对于Linux来说,网络应用程序只要编写一次,就可以在任何地方运行。之前花在平台上的循环操作(如互操作性测试)可以被重定向解决由来已久的网络问题(受限于固件/ASICs),开放全新一代的基于软件的网络工具( automation、security、overlays、 fabric managers)。而传统网络没有pan-data中心意识,Linux向新一代网络虚拟化解决方案打开大门,可以利用fabric和overlay的力量提供给网络运营商完全控制物理和虚拟环境的功能。
SDN你在干森么
SDN解决方案通过封装低层协议到更高级别的对象来实现相同的目标。网络虚拟化解决方案实现他们自己虚拟网络的互通性。
云计算运营商正通过以下场景连接云:两个不同的系统之间、两个地理上分散的数据中心之间、公共云和私有云之间,通常会使用像BGP这样的标准协议连接两个云基础设施。
我们的未来捏
传统网络的垄断地位即将被供应商瓦解,取而代之的是更灵活、创新的软件。运行Linux的交换机将会解决遗留已久的固件/ASICs问题。新入市者利用开源和商品组件能够使得终端用户更易获得市场份额。传统标准向解耦模型的转变最终对终端用户和整个行业来说是双赢的局面。