数据中心作为IT资源的集中地,是数据计算、网络传输、存储的中心,为企业和用户的业务需求提供IT支持。
网络作为提供数据交换的模块,是数据中心中最为核心的基础设施之一,并直接关系到数据中心的性能、规模、可扩展性和管理性。随着云计算、物联网、大数据等众多新技术和应用的空前发展以及智能终端的爆炸式增长,以交换机为代表的传统网络设备为核心的数据中心网络已经很难适应企业和用户对业务和网络快速部署、灵活管理和控制,以及开放协作的需求,网络必须能够像用户应用程序一样可以被定制和编程,也就是软件定义的网络,也叫SDN(Software Defined Networking = 软件定义网络)。
图:IP地址,MAC地址,端口号
SDN的出现对IT产业乃至科技界的各方面产生了巨大的影响,甚至会在一定程度上重新划分当今的IT生态利益格局。
对网络用户,特别是互联网厂商和电信运营商而言,SDN意味着网络的优化和高效的管理,可以利用SDN提高网络的智能性和管控能力,大幅降低网络建设与运维成本,还可以促进网络运营商真正开放底层网络,大大推动互联网业务应用的优化和创新。
对一些初创厂商而言,SDN是获得快速发展的机遇。一是SDN是一个新兴技术,本身就是一个巨大的“金矿”,孕育着巨大的市场机会,对SDN的投入能够获得巨大的收益。二是SDN让传统厂商和初创厂商重新站在同一条起跑线上。初创厂商不受既有产品和利益的约束,轻装上阵,有实现弯道超车的机会。
而对传统厂商而言,SDN则是机遇和挑战并存。一方面,SDN的兴起为产业注入了新的活力,带来了新的需求和增长点,传统厂商可以抓住SDN的机遇扩大市场,增加收入和利润,另一方面, SDN意味着目前网络设备软硬件一体的架构将被打破,软硬件解耦,网络设备只负责数据的转发,这样会让网络设备愈发标准化、低廉化,网络功能将逐渐由软件实现,设备利润转移到软件领域,传统厂商的传统地盘和利益将会受到威胁。在这种背景下,传统厂商对SDN的态度各不相同,有的是处于观望甚至是抵制的态度,有的则是积极探索SDN相关技术和产品,利用自己的江湖地位制定标准,掌握话语权,并准备在合适的时候收购一些初创厂商,继续维护自己的领地。
同软件定义的存储一样,在软件定义的网络中,首先要实现管理接口与数据读写分离。由软件定义的不仅仅是网络的拓扑结构((Network Topology)),还包含层叠的结构(Layered Architecture)。前者可以利用开放的网络管理接口,例如OpenFlow来完成;后者则可能是基于VxLAN的层叠化虚拟网络。
SDN可以用如下所示的逻辑架构来定义,一个SDN网络中包含三个架构层级(见下图):
SDN的逻辑架构
· 数据平面(Data Plane)
· 控制平面(Control Plane)
· 应用层(Application Plane)
数据平面主要由网络设备(Network Device),即支持南向协议的SDN交换机组成。这些交换机可以是物理交换机或者虚拟交换机,它们保留了传统网络设备数据转发的能力,负责基于流表的数据处理、转发和状态收集。在当前SDN方法中,供应商只是把应用和控制器作为单独产品提供。例如,Nicira/VMware将其应用和控制器打包到了一个单独的专属应用堆栈中。思科则通过把控制器嵌入IOS软件的方式把控制器打包到了OnePK产品中。
控制平面主要包含控制器及网络操作系统((Network Operation System,NOS)),负责处理数据平面资源的编排、维护网络拓扑、状态信息等。控制器是一个平台,该平台向下可以直接使用OpenFlow协议或其他南向接口与数据平面会话;向上,为应用层软件提供开放接口,用于应用程序检测网络状态、下发控制策略。大多数的SDN控制器都提供了图形界面,这样可以将整个网络以可视化的效果展示给管理员。
顶层的应用层由众多应用软件构成,这些软件能够根据控制器提供的网络信息执行特定控制算法,并将结果通过控制器转化为流量控制命令,下发到基础设施层的实际设备中。事实上,应用层是SDN最吸引人的地方,原因是SDN实现了应用和控制的分离,开发人员可以基于控制器提供的API来自定义网络,自身只需专注于业务的需求而不需要像传统方式那样从最底层的网络设备开始来部署应用,这大大简化了应用开发的过程,而且,大部分SDN控制器向上提供的API都是标准化、统一化的,这使得应用程序不用修改就可以自由在多个网络平台移植。
SDN 网络控制器与网络设备之间通过专门的控制面和数据面接口连接,这一系列接口是支持SDN 技术实现的关键,我们在下文中分别对三大类接口结构简述。
SDN北向接口:北向接口是SDN控制器和应用程序、管理系统和协调软件之间的应用编程接口,通过控制器向上层业务应用开放的接口,业务应用能够便利地调用底层的网络资源和能力。通过北向接口,网络业务的开发者能以软件编程的形式调用各种网络资源:同时上层的网络资源管理系统可以通过控制器的北向接口全局把控整个网络的资源状态,并对资源进行统一调度。比如OpenStack项目中的Neutron(Quantum)API就是一个典型的北向接口,通过与多种SDN控制器集成对外开放,租户或者应用程序可以利用这组接口来自定义网络、子网、路由、QoS、VLAN等,并且可以通过这些接口来查看当前网络的状况。
当前的北向接口并没有完全的标准,更多的是跟平台相关。SDN组织正致力定义统一规范的北向接口,比如ONF。ONF执行总监Dan Pitt曾经指出,实在不行就开发一个标准北向API。但通过一定规范来控制其潜在用途,供网络运营商、厂商和开发商使用。
北向接口的设计对SDN的应用有着至关重要的作用,原因是这些接口是为应用程序直接调用的,应用程序的多样性和复杂性对北向接口的合理性、便捷性和规范性有着直接的要求,这直接关系到SDN是否能获得广泛应用。
南向接口:南向API或协议是工作在两个最底层(交换ASIC或虚拟机)和中间层(控制器)之间的一组API和协议。它主要用于通信,允许控制器在硬件上安装控制平面决策从而控制数据平面,包括链路发现、拓扑管理、策略制定、表项下发等。其中链路发现和拓扑管理主要是控制其利用南向接口的上行通道对底层交换设备上报信息进行统一监控和统计,策略制定和表项下发则是控制器利用南向接口的下行通道对网络设备进行统一控制。
OpenFlow是最为典型的南向协议。OpenFlow定义了非常全面和系统的标准来控制网络,因而是目前最具发展前景的南向协议,也是获得支持多的网络协议,甚至有人将OpenFlow认为就是SDN。本章将会在后面部分对OpenFlow进行更详细的介绍。
还有其他一些南向通信实现方式正在研究中,比如VXLAN。VXLAN规范记录了终端服务器或虚拟机的详细框架,并把终端站地图定义为网络。VXLAN的关键假设是交换网络(交换机、路由器)不需要指令程序,而是从SDN控制器中提取。VXLAN对SDN的定义是通过控制虚拟机以及用SDN控制器定义基于这些虚拟机通信的域和流量而实现的,并不是对以太网交换机进行编程。
东西向接口:SDN发展中面临的一个问题就是控制平面的扩展性问题,也就是多个设备的控制平面之间如何协同工作,这涉及SDN中控制平面的东西向接口的定义问题。如果没有定义东西向接口,那么SDN充其量只是一个数据设备内部的优化技术,不同SDN设备之间还是要还原为IP路由协议进行互联,其对网络架构创新的影响力就十分有限。如果能够定义标准的控制平面的东西向接口,就可以实现SDN设备“组大网”,使得SDN技术走出IDC内部和数据设备内部,成为一种有革命性影响的网络架构。目前对于SDN东西向接口的研究还刚刚起步,IETF和ITU均未涉及这个研究领域。通常SDN控制器通过控制器集群技术来解决这个问题,比如Hazelcast技术。控制器集群能提供负载均衡,故障转移,提高控制器的可靠性。
·未完待续·