ONRC是 SDN创始人斯坦福大学教授Nick McKeown和加州大学伯克利分校教授 Scott Shenker,以 Larry Peterson教授 共同创建的研究架构。ONRC对SDN的定义是:“SDN是一种逻辑集中控制的新网络架构,其关键属性包括:数据平面和控制平面分离;控制平面和数据平面之间有统一的开放接口OpenFlow。”在ONRC的定义中,SDN的特征表现为数据平面和控制品面分离,拥有逻辑集中式的控制平面,并通过统一而开放的南向接口来实现对网络的控制。ONRC强调“数控分离”,逻辑集中式控制和统一、开放的接口。
另一个重要的组织ONF2 对SDN 定义做出了不同的描述。ONF 是Nick McKeown 教授和Scott Shenker 教授联合多家业界厂商发起的非营利性开放组织,其工作的主要内容是推动SDN 的标准化和商业化进程。ONF 认为:“SDN是一种支持动态、弹性管理的新型网络体系结构,是实现高带宽、动态网络的理想架构。SDN 将网络的控制平面和数据平面解耦分离,抽象了数据平面网络资源,并支持通过统一的接口对网络直接进行编程控制”。相比之下,ONF 强调了SDN 对网络资源的抽象能力和可编程能力。
2012年4月,ONF发布白皮书《Software-Defined Networking: The New Norm for Networks》3。ONF认为,SDN的典型架构可分为三层,最上层为应用层,包括各种不同的业务和应用;中间的控制层主要负责处理数据平面资源的编排、维护网络拓扑和状态信息等;最下层的基础设施层负责数据处理、转发和状态收集。除上述三个层次外,控制层与基础层之间的接口和应用层与控制层之间的接口也是SDN架构中的两个重要组成部分。按照接口与控制层的位置关系,前者通常被称为南向接口,后者则被称为北向接口。其中ONF在南向接口上定义了开放的OpenFlow标准4,而在北向接口上还没有统一要求。因此,ONF SDN架构更多的是从网络资源用户的角度出发,希望通过对网络的抽象推动跟快速的业务创新。
本质上,这两个组织给出的SDN 定义并没有太大的差别,都强调了SDN 拥有数据平面和控制平面解耦分离的特点,也都强调了SDN 支持通过软件编程对网络进行控制的能力。但是ONRC 更强调数控分离和集中控制等表现形式,而ONF 则强调抽象和可编程等功能。
OpenFlow标准描述了OpenFlow交换机的需求,涵盖了OpenFlow交换机的所有组件和基本功能,并且对远程控制器管理OpenFlow交换机采用的OpenFlow协议进行描述,即OpenFlow协议用来描述控制器和交换机之间交互所用的信息的标准,以及控制器和交换机的接口标准。
OpenFlow交换机包括用于查找和转发数据部分组成的一个或多个流表,以及与外部控制器进行通信的OpenFlow信道,交换机与控制器进行通信以及控制器管理交换机均采用OpenFlow协议。
2012年6月发布了OpenFlow1.3,主要针对SDN的基础设施层的转发面抽象模型进行了定义,将网络中的转发面设备抽象为一个由多级流表驱动的转发模型。OpenFlow多级流表转发模型如下图:
OpenDaylight开源联盟隶属于Linux基金会,旨在提供一个支持SDN的网络编程平台,并且为NFV及更多的不同大小共和规模的网络创建一个可靠的基础平台。
网络开放可编程:SDN 建立了新的网络抽象模型,为用户提供了一套完整的通用API,使用户可以在控制器上编程实现对网络的配置、控制和管理,从而加快网络业务部署的进程。
控制平面与数据平面的分离:此处的分离是指控制平面与数据平面的解耦合。控制平面和数据平面之间不再相互依赖,两者可以独立完成体系结构的演进,类似于计算机工业的Wintel 模式,双方只需要遵循统一的开放接口进行通信即可。控制平面与数据平面的分离是SDN 架构区别于传统网络体系结构的重要标志,是网络获得更多可编程能力的架构基础。
逻辑上的集中控制:主要是指对分布式网络状态的集中统一管理。在SDN 架构中,控制器会担负起收集和管理所有网络状态信息的重任。逻辑集中控制为软件编程定义网络功能提供了架构基础,也为网络自动化管理提供了可能。
因此,只要符合以上三个特征的网络都可以称之为软件定义网络。在这三个特征中,控制平面和数据平面分离为逻辑集中控制创造了条件,逻辑集中控制为开放可编程控制提供了架构基础,而网络开放可编程才是SDN 的核心特征。
一般来说,SDN 网络体系结构主要包括SDN 网络应用、北向接口、SDN 控制器、南向接口和SDN 数据平面共五部分,如图所示。
SDN 网络应用层实现了对应的网络功能应用。这些应用程序通过调用SDN 控制器的北向接口,实现对网络数据平面设备的配置、管理和控制。
北向接口是SDN 控制器与网络应用之间的开放接口,它将数据平面资源和状态信息抽象成统一的开放编程接口。
SDN 控制器是SDN 的大脑,也称作网络操作系统。控制器不仅要通过北向接口给上层网络应用提供不同层次的可编程能力,还要通过南向接口对SDN 数据平面进行统一配置、管理和控制。
南向接口是SDN 控制器与数据平面之间的开放接口。SDN 控制器通过南向接口对数据平面进行编程控制,实现数据平面的转发等网络行为。
SDN 数据平面包括基于软件实现的和基于硬件实现的数据平面设备。数据平面设备通过南向接口接收来自控制器的指令,并按照这些指令完成特定的网络数据处理。同时,SDN 数据平面设备也可以通过南向接口给控制器反馈网络配置和运行时的状态信息。
在SDN 架构中,网络的控制平面与数据平面相分离,数据平面将变得更加通用化,变得与计算机通用硬件底层类似,不再需要具体实现各种网络协议的控制逻辑,而只需要接收控制平面的操作指令并执行即可。网络设备的控制逻辑转而由软件实现的SDN 控制器和SDN 应用来定义,从而实现网络功能的软件定义化。随着开源SDN 控制器和开源SDN 开放接口的出现,网络体系结构也拥有了通用底层硬件、支持软件定义和开源模式三个要素。从传统网络体系结构到SDN 网络体系结构的演进关系如图所示。
传统网络架构向SDN 架构演进示意图
传统网络设备
控制平面与数据平面的分离
时间 | 事件 | 影响力 |
---|---|---|
2007 | Ethane 项目论文发表 | SDN 架构的雏形,论文发表获得了学术圈的关注 |
2007 | 第一个初创公司Nicira 诞生 | SDN 走向工业界 |
2008 | OpenFlow 论文发表 | OpenFlow 获得广泛关注 |
2008 | 第一个开源控制器NOX 诞生 | SDN 系统实验得以部署 |
2009 | SDN 被MIT Technology View 评为十大突破性技术之一 | SDN 的诞生 |
2009 | OpenFlow 协议规范1.0 发布 | OpenFlow 走进大众视野 |
2010 | Big Switch 和Cumulus 诞生 | SDN 初创公司开始增加 |
2011 | ONF 成立 | SDN 获得工业界的广泛关注 |
根据ONF的定义,SDN的架构可自下而上划分为三个层面,如下图所示,分别是基础设施层、控制层和应用层。最上层为应用层,包括各种不同的业务和应用,网络运营者可以设计各种面向业务的应用,来对网络进行有针对性的运维和管理;中间的控制层需集成网络操作系统,主要负责处理数据平面资源的编排、维护网络拓扑和状态信息等;最下层的基础设施层只需关注设备的硬件性能,负责数据处理、转发和状态收集。控制层和基础设施层之间一般通过OpenFlow或者其他南向接口协议进行通信,该协议规定了设备按照流表转发的多种匹配规则,致力于满足网络各个方面的功能需要。
除上述的功能模块以外,控制器通过北向接口,以API的形式连接上层应用,北向接口是各种网络应用和控制器交互的接口。同时,基于网络虚拟化层功能,SDN转发设备提供网络资源服务,能够通过北向接口开放不同权限,客户可以进行端到端的全网业务监控、流量分析和端口监控。
在SDN架构中,转发节点负责数据流的转发,一般由数据平面模块、控制代理模块、管理代理模块组成,如图所示。
在该架构中,转发节点的控制面上已经上移到控制器。管理代理接收来自网管的配置信息,提供面向网管的设备端口、电源/电压和环境监控等信息;控制代理负责接受从控制器下发的外部信令信息和转发信息,经过控制器的信令和转发设配等模块处理后,结合自身的信令和转发信息,将必要的转发信息下发给数据平面,实现控制代理对数据平面的控制。数据平面完成数据的转发,同时具备发送转发状态信息到控制代理,实现对控制代理相应模块的查询、响应和反馈能力。控制代理将需要传送到外部的转发状态信息通过信令通信接口发给控制器。
控制层有多种实现,主要有NOX、Floodlight、Open Daylight和ONOS(开放网络操作系统)。
NOX是针对软件定义网络架构下网络控制器的一种开源实现,支持C++/Python,主要由Nicira公司支持。
Floodlight是由BigSwitch公司赞助支持的一个开源OpenFlow控制器实现,主要支持通过Java语言进行功能扩展,其架构如图所示。
Open Daylight是一套以社区为主导的开源架构,旨在推动创新实施以及软件定义网络的透明化。Open Daylight拥有一套模块化、可插拔且极为灵活的控制器,这使其能够被部署在任何支持Java的平台上。
ONOS的设计理念是能在任何硬件上灵活地创建服务并大规模部署,实现降低运营开支、加快服务加速和收入,以及提供在运营商看来具有核心价值地白盒硬件等。
从网络运营者地视角来看,由于网络组成的复杂性,目前很难采用单一类型的SDN控制器实现对全网的控制。同时,在运营商的大网中往往都存在多厂家的情形。因此,SDN的引入也有两种方式,第一种方式是参照OpenFlow协议,采用标准的南向接口,实现控制器和各厂家转发设备之间的完全解耦,同时运营商需要具备对SDN控制器的绝对控制权。第二种方式是暂时不开放南向接口,采用各个设备厂商控制器搭配转发设备,南向接口可以采用私有协议或者公有协议的扩展实现,但是运营商在各厂家控制器之上搭建统一的协同层,实现对跨厂家域业务的管理和调度。目前来看,第二种方式是运营商近期引入SDN的主要选择。
应用层位于SDN架构最上层,它基于控制器提供的API接口,实现和网络业务相关的管理、安全等应用,还能根据用户需求定制其他网络业务。目前SDN应用主要包括三种类型:
网络功能虚拟化NFV,是指借助于标准的IT虚拟化技术、传统的专有硬件(如路由器、防火墙、DPI、CDN、NAT等),通过采用工业标准大容量服务器、存储器和交换机承载各种各样软件化的网络功能(Network Function)的技术。
狭义SDN特指基于ONF组织发布的OpenFlow标准协议构建的SDN。它由软件Controller、OpenFlow交换机组成,通过将网络设备控制面和数据面分离来实现网络流量的灵活控制。狭义SDN设备形态主要是交换机,在运营商网络中主要应用在数据中心等场景。
狭义的SDN的目的是通过控制转发分离生成网络的抽象,能够快速创新,体现在集中控制、开放协同的网络可编程。NFV的目的是通过软硬件解耦实现网络功能虚拟化,能够实现自动化管理和运维,体现在工业服务器硬件标准化和网络功能软件化。SDN与NFV关注网络角度不同,两者之间是互补的关系,但两者相互独立,并无直接依赖关系。NFV技术可以在没有SDN的前提下部署,反之亦然。
狭义SDN | NFV |
---|---|
核心思想 | 控制转发分离 |
关注 | 多个网络设备的集中控制 |
控制点 | 控制平面 |
技术优势 | 集中控制、开放协同和网络可编程 |
相关知识 | ONF、Open daylight、IETF |
广义SDN泛指基于开放接口实现软件可编程的各种网络架构。只要网络架构满足三个特征,即控制转发分离、逻辑集中控制、开放API,我们就称其为广义SDN。广义的SDN除了包括狭义SDN外,还包括NFV技术。广义SDN的设备可以是无线接入网、有线接入网、核心网、传送网、承载网、云计算和IDC等各个专业领域的架构符合三个特征的设备,可以应用在运营商的整个网络的各个方面。