2.1.2 SDN架构

目前各大厂商对SDN的系统架构都有自己的理解和认识,而且也都有自己独特的实现方式,这种多样性使得SDN充满活力。ONF作为SDN最重要的标准化组织,自成立开始,就一直致力于SDN体系架构的标准化,它提出的系统架构对SDN的技术发展产生了很大影响。下面将首先分析ONF组织提出的SDN系统架构,力求使读者对架构中几个组成部分有一个明确的理解,并对SDN技术有一个宏观的认识,然后在后面详细介绍其他厂商的理念,使读者能够尽可能完整地了解到业界各方对于SDN技术的理解与思考。

图2-3给出了ONF组织定义的SDN系统架构,它认为SDN的最终目标是为软件应用提供一套完整的编程接口,上层的软件应用可以通过这套编程接口灵活地控制网络中的资源以及经过这些网络资源的流量,并能按照应用需求灵活地调度这些流量。由图2-3可以看到,ONF定义的架构共由4个平面组成,即数据平面(Data Plane)、控制平面(Control Plane)、应用平面(Application Plane)以及右侧的管理平面(Management&Admin)。各平面之间使用不同的接口协议进行交互,下面首先来介绍一下各平面的主要功能。

(1)数据平面

由若干网元(Network Element)构成,每个网元可以包含一个或多个 SDN Datapath(SDN数据路径),是一个被管理的资源在逻辑上的抽象集合。每个SDN Datapath 是一个逻辑上的网络设备,它没有控制能力,只是单纯用来转发和处理数据,它在逻辑上代表全部或部分的物理资源,可以包括与转发相关的各类计算、存储、网络功能等虚拟化资源。同时,一个网元应该支持多种物理连接类型(例如分组交换和电路交换),支持多种物理和软件平台,支持多种转发协议。如图2-3所示,一个SDN Datapath包含控制数据平面接口(Control Data Plane Interface, CDPI)代理、转发引擎(Forwarding Engine)表和处理功能(Processing Function) 3个部分。

图2-3 ONF组织提出的SDN系统架构

(2)控制平面

即图2-3所示的SDN控制器(SDN Controller),SDN控制器是一个逻辑上集中的实体,它主要承担两个任务:一是将SDN应用层请求转换到SDN Datapath,二是为SDN应用提供底层网络的抽象模型(可以是状态,也可以是事件)。一个SDN 控制器包含北向接口(Northbound Interfaces,NB)代理、SDN 控制逻辑(Control Logic)以及控制数据平面接口驱动(CDPI Driver)3个部分。SDN控制器只要求逻辑上完整,因此它可以由多个控制器实例协同组成,也可以是层级式的控制器集群。从地理位置上来讲,既可以是所有控制器实例在同一位置,也可以是多个实例分散在不同位置。

(3)应用平面

由若干SDN应用(SDN Application)构成,SDN应用是用户关注的应用程序,它可以通过北向接口与SDN控制器进行交互,即这些应用能够通过可编程方式把需要请求的网络行为提交给控制器。一个SDN应用可以包含多个北向接口驱动(使用多种不同的北向API),同时SDN应用也可以对本身的功能进行抽象、封装来对外提供北向代理接口,封装后的接口就形成了更高级的北向接口。

(4)管理平面

该平面主要负责一系列静态的工作,这些工作比较适合在应用、控制、数据平面外实现,例如,进行网元初始配置,指定SDN Datapath控制器,定义SDN控制器以及SDN应用的控制范围等。

在初步了解了几个平面的基本功能后,下面来看看数据平面、控制平面、应用平面和管理运维平面之间是如何通过接口协议进行协作的,以及需要共同支持哪些基本能力。几个平面之间的接口实现都由驱动(Driver)和代理(Agent)配对构成,其中代理表示运行在南向的、底层的部分,而驱动则表示运行在北向的、上层的部分。具体说明如下。

(1)SDN控制数据平面接口

SDN CDPI是控制平面和数据平面之间的接口,它提供的主要功能包括:对所有转发行为进行控制、设备性能查询、统计报告、事件通知等。SDN一个非常重要的价值就体现在CDPI实现上,它应该是一个开放的、与厂商无关的接口。

(2)SDN北向接口

SDN NBI是应用平面和控制平面之间的一系列接口,它主要负责提供抽象的网络视图,并使应用能直接控制网络的行为,其中包含从不同层次对网络及功能进行的抽象,这个接口也应该是一个开放的、与厂商无关的接口。

从ONF组织对SDN架构的定义可以看到,SDN架构下集中式控制平面与分布式数据平面是相互分离的。SDN控制器负责收集网络的实时状态,将其开放并通知给上层应用,同时把上层应用程序翻译成更为底层、低级的规则或者设备硬件指令下发给底层网络设备。考虑到可扩展性、可靠性等问题,SDN控制器可以不是物理上集中的,而是可以通过分布式的多个控制器实例协同工作来实现逻辑上的集中。通过SDN架构,控制策略建立在整个网络视图之上,而不再是传统的分布式控制策略,控制平面演变成了一个单一、逻辑集中的网络操作系统,这个操作系统可以实现对底层网络资源的抽象隔离,并在全局网络视图的基础上有效解决资源冲突与高效分配问题,下一节将对SDN架构的特点进行分析。

ONF组织所定义的SDN体系架构最突出的特点就是标准化的南向接口协议,它希望所有的底层网络设备都能实现一个标准化的接口协议,这样控制平面和应用平面就不再依赖于底层具体厂商的交换设备。控制平面可以使用标准的南向接口协议来控制底层数据平面的设备,从而使得任何实现了这套标准化南向接口协议的设备都可以进入市场并投入使用。交换设备生产厂商可以专注于底层的硬件设备,甚至交换设备能够逐步向白盒化的方向发展。

事实上,ONF组织提出的这一网络设计思想与PC的发展思想十分类似。对于个人计算机领域,计算机系统能持续革新并创造辉煌今天的两个重要因素就是底层硬件使用统一的x86指令集和基于x86架构的操作系统。事实上,最初的芯片生产商如摩托罗拉、Intel、AMD都有各自的硬件架构,程序开发者需要直接在芯片之上来开发设计自己的程序,因此基于不同芯片设计的程序是不可以相互移植的,同时由于应用直接基于芯片开发,因此应用需要直接操作底层的硬件,开发效率十分低下。1978年Intel推出了8086处理器,与此同时微软与Intel合作,开始基于8086处理器开发DOS,从此开启了Intel与微软的时代,业界已经找到了一个统一的硬件指令集——x86指令集,并形成了Intel和微软两大帝国,其中Intel公司负责底层的处理器设计,微软公司负责基于x86系列处理器的操作系统的开发,两者高度互补。在x86架构的流行之下,像Dell、HP、联想等PC硬件厂商都基于Intel的芯片和微软的操作系统生产个人PC。这使得PC设备制造商和处理器芯片生产商只需要专注于提升硬件的性能,而不用关心上层的软件与操作系统,而操作系统由于广泛使用了x86指令集,使得操作系统减少了设计上的复杂性,能更好地兼容各厂商生产的硬件,同时又由于使用了该操作系统,应用也不再需要直接与底层硬件打交道,使得上层应用的兼容性和开发效率都有了很大的提升。

相比之下,互联网领域的网络设备设计并非如此,通常来讲,各个厂商需要负责自己硬件设计,同时还负责设计自己的软件系统。因此,底层硬件没有统一的设计标准,软件控制也没有使用统一的指令集,于是网络协议基本上只能由设备厂商实现,从而造成了少量设备厂商对网络设备领域的垄断,最终设备缺乏足够的开放性。随着网络新需求的日益增加,OSPF、BGP、NAT、MPLS等众多功能不断被加入设备的体系中,使得网络设备越来越复杂,最初简单的转发设备如今已经非常臃肿,设备的管理系统十分复杂,这导致网络技术的发展相对缓慢,基于网络应用的软件设计变得繁琐不堪,网络缺乏良好的编程性。

因此,ONF 组织期望达到 SDN 技术最初提出时的目标,即希望定义一个标准化的南向接口协议。期望这个南向接口协议和控制器的关系,与x86指令集和计算机操作系统的关系相似,硬件厂商专注于底层设备性能的突破,而软件厂商专注于上层的应用。事实上,如果这一目标真正实现,这将有可能彻底改变整个网络领域的产业生态链,尤其对传统设备厂商将可能带来巨大冲击,因此产业各方都予以了高度关注。2013年4月8日,一个以设备厂商为首的项目——OpenDaylight开源项目诞生了[4],其主要参与者大都是设备厂商,其中包括Cisco、Juniper、IBM等设备巨头,该开源项目的核心目标是通过社区方式设计一套开源的控制器,而不是对SDN进行标准化。在其控制器架构中,一个突出的特点就是以插件(Plugin)的形式支持众多南向接口协议,并通过引入一个新的服务抽象层来对底层南向协议进行抽象与适配,从而使底层可以自由地扩展多个协议,如OpenFlow、I2RS、NETCONF、XMPP等。

此外,还有一些厂商认为交换设备的软件仍然能够以目前的方式,即分布式地集成在交换机内部,只需要把一些实时性要求较低的功能分离出来,在远端实现集中式控制即可。仔细思考不难看出,这种理念与前面介绍的ONF SDN技术在系统架构上有非常大的不同,它并没有严格地实现所有网络功能的集中式控制,但它在某种程度上也确实使网络具备了一定程度的可编程性,因此宽泛地讲它也算是一种SDN技术。事实上,这种思路的产生与设备厂商自身利益密不可分,在提供一定开放性的同时,他们可以继续控制交换设备大部分的软件和硬件。

虽然 ONF和 OpenDaylight 两个组织在南向接口是否需要开放标准化上观点仍略有差别,但是它们对SDN总体架构的理解是大致相同的,主要表现为:都支持数据控制分离以实现集中化控制,整体体系架构都分为数据、控制和应用3个平面,并通过南向和北向接口实现3个平面之间的交互,且二者都支持开放网络的可编程能力给用户以实现用软件来定义网络。

综上所述,SDN技术之所以能够如此吸引产业界的目光,主要是因为它有两个重要的属性:一是数据控制分离以实现逻辑集中式控制,二是网络具有可编程性以实现灵活可定义。下面我们将通过回顾历史上网络技术的发展来详细分析SDN这两大属性,以便使读者进一步地深入理解SDN技术。