软体定义网路(Software Defined Network,SDN)是由美国史丹福大学CLean State课题研究组提出的一种新型网路创新架构,是网路虚拟化的一种实现方式。其核心技术OpenFlow通过将网路设备的控制面与数据面分离开来,从而实现了网路流量的灵活控制,使网路作为管道变得更加智慧型,为核心网路及套用的创新提供了良好的平台。
基本介绍
- 中文名:软体定义网路
- 外文名:Software Defined Network, SDN
- 提出者:史丹福大学CLean State研究组
- 类别:新型网路创新架构
简介
SDN起源于2006年史丹福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念。
软体定义网路SDN(Software Defined Network)是由美国史丹福大学CLean State研究组提出的一种新型网路创新架构,可通过软体编程的形式定义和控制网路,其控制平面和转发平面分离及开放性可程式的特点,被认为是网路领域的一场革命,为新型网际网路体系结构研究提供了新的实验途径,也极大地推动了下一代网际网路的发展。
传统网路世界是水平标準和开放的,每个网元可以和周边网元进行完美互联。而在计算机的世界里,不仅水平是标準和开放的,同时垂直也是标準和开放的,从下到上有硬体、驱动、作业系统、编程平台、套用软体等等,编程者可以很容易地创造各种套用。从某个角度和计算机对比,在垂直方向上,网路是“相对封闭”和“没有框架”的,在垂直方向创造套用、部署业务是相对困难的。但SDN将在整个网路(不仅仅是网元)的垂直方向变得开放、标準化、可程式,从而让人们更容易、更有效地使用网路资源。
因此,SDN技术能够有效降低设备负载,协助网路运营商更好地控制基础设施,降低整体运营成本,成为了最具前途的网路技术之一。
发展简史
回顾网路创新的发展历史,在20世纪90年代中期认为“推动网路的创新,需要在一个简单的硬体数据通路上编程”,即动态网路。它的问题在于隔离性、性能、複杂度。20世纪90年代后期认为,“为了推动网路创新,我们需要底层的数据通道是可程式的”,也即网路处理器。它的问题在于加剧了数据通道底层的複杂度。事实上在网路领域,我们一直以来没有分清一个简单通用的硬体底层与一个开放的上层编程环境之间的界限。之前的尝试往往犯以下错误:
1. 假设当前的IP路由底层是固定的,并试图在其外部编程,包括路由协定;
2. 自上而下地定义编程和控制模型。(但事实上Intel在选择x86指令集的时候,并没有定义Windows XP、Linux或者VMware)
在经过多次的犯错、失败后,网路创新终于取得了突破,新一代网际网路技术的代表——SDN终于诞生。
SDN起源于2006年史丹福大学的Clean Slate研究课题。
2009年,Mckeown教授正式提出了SDN概念。
2012年12月6日,北京,中国以“未来网路的演进之路”为主题的2012中国SDN与开放网路高峰会议在北京隆重召开,本次峰会获得国际组织ONF(开放网路基金会)的大力支持,Justin Joubine Dustzadeh博士代表ONF向大会致辞并发表主题演讲,指出SDN这一颠覆性的技术将对未来网路产生革命性的影响。
2013年8月29日,北京,2013中国SDN与开放网路高峰会议(第二届)在京举办,众多国内外运营商、厂商及业界专家学者将云集于此,共同探讨SDN、开放网路等相关主题。
设计思想
利用分层的思想,SDN将数据与控制相分离。在控制层,包括具有逻辑中心化和可程式的控制器,可掌握全局网路信息,方便运营商和科研人员管理配置网路和部署新协定等。在数据层,包括哑的交换机(与传统的二层交换机不同,专指用于转发数据的设备),仅提供简单的数据转发功能,可以快速处理匹配的数据包,适应流量日益增长的需求。两层之间採用开放的统一接口(如OpenFlow等)进行互动。控制器通过标準接口向交换机下发统一标準规则,交换机仅需按照这些规则执行相应的动作即可。
软体定义网路的思想是通过控制与转发分离,将网路中交换设备的控制逻辑集中到一个计算设备上,为提升网路管理配置能力带来新的思路。SDN的本质特点是控制平面和数据平面的分离以及开放可程式性。通过分离控制平面和数据平面以及开放的通信协定,SDN打破了传统网路设备的封闭性。此外,南北向和东西向的开放接口及可程式性,也使得网路管理变得更加简单、动态和灵活。
体系结构
SDN的整体架构由下到上(由南到北)分为数据平面、控制平面和套用平面,具体如图1-1所示。其中,数据平面由交换机等网路通用硬体组成,各个网路设备之间通过不同规则形成的SDN数据通路连线;控制平面包含了逻辑上为中心的SDN控制器,它掌握着全局网路信息,负责各种转发规则的控制;套用平面包含着各种基于SDN的网路套用,用户无需关心底层细节就可以编程、部署新套用。
SDN体系结构图

控制平面与数据平面之间通过SDN控制数据平面接口(control-data-plane interface,简称CDPI)进行通信,它具有统一的通信标準,主要负责将控制器中的转发规则下发至转发设备,最主要套用的是OpenFlow协定。控制平面与套用平面之间通过SDN北向接口(northbound interface,简称NBI)进行通信,而NBI并非统一标準,它允许用户根据自身需求定製开发各种网路管理套用。
SDN中的接口具有开放性,以控制器为逻辑中心,南向接口负责与数据平面进行通信,北向接口负责与套用平面进行通信,东西向接口负责多控制器之间的通信。最主流的南向接口CDPI採用的是OpenFlow协定。OpenFlow最基本的特点是基于流(Flow)的概念来匹配转发规则,每一个交换机都维护一个流表(Flow Table),依据流表中的转发规则进行转发,而流表的建立、维护和下发都是由控制器完成的。针对北向接口,应用程式通过北向接口编程来调用所需的各种网路资源,实现对网路的快速配置和部署。东西向接口使控制器具有可扩展性,为负载均衡和性能提升提供了技术保障。
关键技术
数据平面关键技术
在SDN中,数据转发与规则控制相分离,交换机将转发规则的控制权交由控制器负责,而它仅根据控制器下发的规则对数据包进行转发。为了避免交换机与控制器频繁互动,双方约定的规则是基于流而并非基于每个数据包的。SDN数据平面相关技术主要体现在交换机和转发规则上。
SDN交换机的数据转发方式大体分别硬体和软体两种。硬体方式相比软体方式具有更快的速度,但灵活性会有所降低。为了使硬体能够更加灵活地进行数据转发操作,Bosshart等人提出了RMT模型,该模型实现了一个可重新配置的匹配表,它允许在流水线阶段支持任意宽度和深度的流表。从结构上看,理想的RMT模型是由解析器、多个逻辑匹配部件以及可配置输出伫列组成。具体的可配置性体现在:通过修改解析器来增加域定义,修改逻辑匹配部件的匹配表来完成新域的匹配,修改逻辑匹配部件的动作集来实现新的动作,修改伫列规则来产生新的伫列。所有更新操作都通过解析器完成,无需修改硬体,只需在晶片设计时留出可配置接口即可,实现了硬体对数据的灵活处理。
另一种硬体灵活处理技术FlowAdapter採用交换机分层的方式来实现多表流水线业务。FlowAdapter交换机分为三层,顶层是软体数据平面,它可以通过更新来支持任何新的协定;底层是硬体数据平面,它相对固定但转发效率较高;中层是FlowAdapter平面,它负责软体数据平面和硬体数据平面间的通信。当控制器下发规则时,软体数据平面将其存储并形成M段流表,由于这些规则相对灵活,不能全部由交换机直接转化成相应转发动作,因此可利用FlowAdapter将规则进行转换,即将相对灵活的M段流錶转换成能够被硬体所识别的N段流表。这就解决了传统交换机与控制器之间多表流水线技术不兼容的问题。
与硬体方式不同,软体的处理速度低于硬体,但软体方式可以提升转发规则处理的灵活性。利用交换机CPU或NP处理转发规则可以避免硬体灵活性差的问题。由于NP专门用来处理网路任务,因此在网路处理方面,NP略强于CPU。
在传统网路中,转发规则的更新可能会出现不一致现象,SDN也如此。针对这种问题的一种解决方案是将配置细节抽象至较高层次以便统一更新。一般採用两段提交的方式来更新规则。首先,当规则需要更新时,控制器询问每个交换机是否处理完对应旧规则的流,确认后对处理完毕的所有交换机进行规则更新;之后当所有交换机都更新完毕时才真正完成更新,否则撤销之前所有的更新操作。然而,这种方式需要等待旧规则的流全部处理完毕后才能进行规则更新,会造成规则空间被占用的情况。增量式一致性更新算法可以解决上述问题,该算法将规则更新分多轮进行,每一轮都採用二段提交方式更新一个子集,这样可以节省规则空间,达到更新时间与规则空间的折中。
控制平面关键技术
控制器是控制平面的核心部件,也是整个SDN体系结构中的逻辑中心。随着SDN网路规模的扩展,单一控制器结构的SDN网路处理能力受限,遇到了性能瓶颈,因此需要对控制器进行扩展。目前存在两种控制器扩展方式:一种是提高自身控制器处理能力,另一种是採用多控制器方式。
最早且广泛使用的控制器平台是NOX,这是一种单一集中式结构的控制器。针对控制器扩展的需求,NOX-MT提升了NOX的性能,具有多执行绪处理能力。NOX-MT并未改变NOX的基本结构,而是利用了传统的并行处理技术来提升性能。另一种并行控制器是Maestro,它通过良好的并行处理架构,充分发挥了高性能伺服器的多核并行处理能力,使其在大规模网路情况下的性能明显优于NOX。
但在多数情况下,大规模网路仅仅依靠单控制器并行处理的方式来解决性能问题是远远不够的,更多的是採用多控制器扩展的方式来最佳化SDN网路。控制器一般可採用两种方式进行扩展:一种是扁平控制方式,另一种是层次控制方式。(如图所示)
在扁平控制方式中,各控制器放置于不同的区域,分管不同的网路设备,各控制器地位平等,逻辑上都掌握着全网信息,依靠东西向接口进行通信,当网路拓扑发生变化时,所有控制器将同步更新,而交换机仅需调整与控制器间的地址映射即可,因此扁平控制方式对数据平面的影响很小。在层次控制方式中,控制器分为局部控制器和全局控制器,局部控制器管理各自区域的网路设备,仅掌握本区域的网路状态,而全局控制器管理各局部控制器,掌握着全网状态,局部控制器间的互动也通过全局控制器来完成。
优势
SDN是当前网路领域最热门和最具发展前途的技术之一。鑒于SDN巨大的发展潜力,学术界深入研究了数据层及控制层的关键技术,并将SDN成功地套用到企业网和数据中心等各个领域。
传统网路的层次结构是网际网路取得巨大成功的关键。但是随着网路规模的不断扩大,封闭的网路设备内置了过多的複杂协定,增加了运营商定製最佳化网路的难度,科研人员无法在真实环境中规模部署新协定。同时,网际网路流量的快速增长,用户对流量的需求不断扩大,各种新型服务不断出现,增加了网路运维成本。传统IT架构中的网路在根据业务需求部署上线以后,由于传统网路设备的固件是由设备製造商锁定和控制的,如果业务需求发生变动,重新修改相应网路设备上的配置是一件非常繁琐的事情。在网际网路瞬息万变的业务环境下,网路的高稳定与高性能还不足以满足业务需求,灵活性和敏捷性反而更为关键。因此,SDN希望将网路控制与物理网路拓扑分离,从而摆脱硬体对网路架构的限制。
SDN所做的事是将网路设备上的控制权分离出来,由集中的控制器管理,无须依赖底层网路设备,禁止了底层网路设备的差异。而控制权是完全开放的,用户可以自定义任何想实现的网路路由和传输规则策略,从而更加灵活和智慧型。进行SDN改造后,无需对网路中每个节点的路由器反覆进行配置,网路中的设备本身就是自动化连通的,只需要在使用时定义好简单的网路规则即可。因此,如果路由器自身内置的协定不符合用户的需求,可以通过编程的方式对其进行修改,以实现更好的数据交换性能。这样,网路设备用户便可以像升级、安装软体一样对网路架构进行修改,满足用户对整个网路架构进行调整、扩容或升级的需求,而底层的交换机、路由器等硬体设备则无需替换,节省大量成本的同时,网路架构的叠代周期也将大大缩短。
总之,SDN具有传统网路无法比拟的优势:首先,数据控制解耦合使得套用升级与设备更新换代相互独立,加快了新套用的快速部署;其次,网路抽象简化了网路模型,将运营商从繁杂的网路管理中解放出来,能够更加灵活地控制网路;最后,控制的逻辑中心化使用户和运营商等可以通过控制器获取全局网路信息,从而最佳化网路,提升网路性能。
SDN 是当前最热门的网路技术之一,它解放了手工操作,减少了配置错误,易于统一快速部署。它被MIT列为“改变世界的十大创新技术之一”。SDN相关技术研究在全世界範围内也迅速开展,成为近年来的研究热点。2013年,SIGCOMM会议收录了多篇相关文章,甚至将SDN列为专题来研讨,带动了SDN相关研究的蓬勃发展。