开源软件的兴起与软件定义网络发展现状之讨论
在过去的几十年间,虽然外部世界对网络的需求发生了巨大的变化,但是网络本身并没有什么改变。 现在有各种数量庞大的终端——移动设备、虚拟机、容器等,相互移动十分频繁。但每种终端又不相同,虚拟机可以运行几个小时到几天,而容器存在的时间仅以秒计。对等网络(peer-to-peer)已逐渐赶超客户端/服务器(client-to-server)架构的网络流量。而这种流向在数据中心通常被称为东西向流量(在数据中心的服务器间),而不是南北向流量(在客户端和服务器之间)。尽管如此,网络也仅仅是提高了连接的速度而已。一般来讲,一次只能设置一个设备。运气好的话,也许可以同时控制和配置几台设备(通常它们来自同一个供应商)。不过,对于链接和网络策略的频繁变化,它们的响应通常不佳,大部分是因为这些设备需要进行一对一的管理。
若要解决这一难题,使网络可以与现状相匹配,就需要工程师将网络设备一对一的设置功能转变为全网的设置。为了让控制系统可以同时与大量设备通信,不仅仅需要开放的标准,还需要开源软件提供相应的标准以及工作流的实施规范。曾经运行于网络的专有软件正在让路给开源软件。另外,更多的功能开始从由硬件提供转换为由软件提供(不是直接绑定硬件的软件)。在此之上,需要提供一个统一的IT解决方案。这些转变与其说是与特定的软件定义网络(SDN)技术相关,不如说更多的是因网络领域开源软件技术的兴起所致。
1. OpenFlow与传统的软件定义网络
软件定义网络的OpenFlow模型具有如下特点:首先,控制面(决定网络流量如何转发)与数据面(机械地转发数据)相分离。其次,控制面(逻辑上)集中在常规服务器上运行而不是在独立的网络设备上运行。在OpenFlow中,这意味着在设备上有程序化的流表,如果找不到流表,数据包会被送到新的集中控制面所运行的控制器上,而控制器会对网络流量做出反应,在网络设备的流表上“安装” 相应的规则。随着时间的推移,交换机上的软件会逐渐减少并且变得无足轻重,而大部分功能则被转移到控制器上。
2. 现代、包容的软件定义网络
软件定义网络的理解是从OpenFlow和控制面与数据面相分离这一理念演变而来的。软件定义网络意味着解决现有网络的问题,即解决关于规模和动态的问题。这不仅仅是要将控制面和数据面分离, 更多的是要了解管理面并且允许设备具有某些本地智能。在大多数的网络组成设备中,数据面、控制面以及管理面都由供应商提供且不能更改,这种状况从两个方面限制了创新 :
(1)无法在不同层上选用不同来源的元件。在一个设备中,只能选择同一供应商提供的各个层面的元件。
(2)存在跨设备问题,现有每个设备的专有栈使之解决起来困难重重。
这里所说的现代、包容的软件定义网络着重解决的正是这些问题,它可以将管理面从各个设备提升到中央控制器,而且只提升部分的控制面;使用各种标准协议与尽可能多的设备对话。这可能没有OpenFlow那样清晰明了,但它在当前网络状况下完全胜任,当前网络中存在着各种各样的设备,并且扮演不同的角色,有些运行着OpenFlow,有些则没有。利用软件定义网络,既可以同时在不同的设备中进行操作,也可以在不同层面上进行不同的选择。因此,你可以使用一个供应商提供的管理面软件(甚至是直接的开源软件),也可使用另一个供应商的控制面,并且在第三方的设备上运行。