主要软件定义网络控制器的对比和分析

2015-12-26 12:32陈凡刘果李剑锋但欢
软件 2015年6期
关键词:软件定义网络结构分析控制器

陈凡+刘果+李剑锋+但欢

摘要:在软件定义网络(Software-DefinedNetworking,SDN)的体系结构中,控制器是控制层的核心部件,对网络的性能起到至关重要的作用。本文将会对SDN控制器结构和性能等多个因素进行对比和分析,并针对学术界和工业界提出的SDN控制器,分别对基于单一控制的集中式控制和基于多个控制器的分布式控制进行结构、技术特点等方面的比较与分析。

关键词:软件定义网络;控制器;控制平面;结构分析

中图分类号:TP393

文献标识码:A

DOI:10.3969/j.issn.1003-6970.2015.06.018

本文著录格式:陈凡,刘果,李剑锋,等,主要软件定义网络控制器的对比和分析[J].软件,2015,36(6):97-102

ComparisonandAnalysisofMainSoftware-DefinedNetworkingControllersCHENFan,LIUGuo,LIJian-feng,DANHuan

[Abstract]:Inthesoftware-definednetworkingarchitecture,controlleristhekeycomponentofcontrolplane,whichplaysanextremelyimportantroleforthenetworkperformances.ThispapermakescomparisonandanalysisfortheSDNcontrollerarchitecture,performances,andsoon.Meanwhile,consideringtheSDNcontrollersproposedbyaca-demiaandindustry,thispaperanalyzesandcontrastsfeaturesofthesinglecontrollerincentralcontrolplaneanddis-tributedcontroller,includingarchitecture,technicalcharacteristic,etc

[Keywords]:Software-definednetworking(SDN);Controller;Controlplane;Structuralanalysis

0引言

当前因特网的网络规模急剧膨胀和网络应用快速增多,此外,类似于高性能需求的数据中心及其网络也出现并得到大力发展,传统的网络架构已经很难以适应这种变化。软件定义网络(SDN)2009年提出以来[1],是当今非常热门的网络架构之一,它将数据与控制层面分离,并采用集中控制,有着硬件选择灵活、部署时间更短、可编程和成本低等多种优势,主要以OpenFlow协议作为其核心通信协议[2]可以满足现有网络变化的需求。目前,国内对OpenFlow和SDN的商业价值、技术和可编程的设计进行了相关研究[3,4,5]。

作为SDN架构中控制层的核心部件,SDN控制器负责管理整个网络设备和资源,对网络的良好运行起到至关重要的作用。针对不同的网络环境,学术界和工业界已推出各种控制器,如NOX[6]、Beacon[7]、Floodlightc8]等,以及一种功能、接口全面的理想化SDN控制器结构[9]。此外,针对网络规模的急剧膨胀,网络性能和扩展性更高的分布式SDN控制器也已被提出,如HyperFlow[10]和Kandoo[11]等。

本文将介绍学术界提出的理想化SDN控制器结构,接着分析适用于较小或中等网络规模的单一控制器,最后对多个控制器的分布式控制结构和技术特点进行概括和分析。

1SDN控制器结构

ONF(OpenNetworkingFoundation)提出了一种已被学术界、产业界普遍认可的SDN典型的体系结构[12]。该SDN体系结构由下到上分别为转发层(基础设施层)、控制层和业务层(应用层)。其中转发层表示网络底层的物理转发设备,维护着流表结构;控制层集中管理网络设备和资源,并负责流表的生成和配置,同时为业务层提供北向接口;业务层根据不同的应用需求实现不同功能的应用程序。控制层通过南向接口与转发层进行通信,并获取转发层的网络设备的信息;控制层与业务层之间由可扩展的北向接口完成通信。

SDN控制器既为上层业务层的网络应用提供转发层的网络设备状态信息,还生成、配置底层网络设备的流表,是连接上层业务层和底层转发层的桥梁。NadeauTD和GrayK给出一种理想化的SDN控制器框架[9],如图1所示。

该理想化SDN控制器提供以下主要功能[9]:

网络状态的管理,通过一些数据库保存网络设备和SDN应用程序的控制、状态和配置等信息。

高级数据模型,用以描述所管理的网络资源、相应策略和控制器所提供其它服务之间的关系。

完善的北向接口(RestAPI),提供业务层的应用程序使用,为应用程序和控制器之间的通信提供一种接口,达到网络管理的目的。

基于标准的、协议适配功能,配置转发层中的网络设备上应用程序的驱动状态。

网络设备、拓扑和虚拟网络的管理。

制定路径计算的系统,通过路径计算单元(PCE)服务器完成路径计算和协议支持。

可靠的会话,通过TCP连接在控制器和网络设备之间建立可靠的会话。

控制器的开发效率、支持的南向接口协议和性能等诸多因素都会影响开发者和研究者的选择。针对SDN控制器的性能评测,当前研究主要采用两个性能指标[7,1314]:

控制器单位时间内响应和处理的消息数目。

控制器平均处理每个消息的时延。

由于从网卡读取OpenFlow消息和同OpenFlow交换机之间的通信是OpenFlow控制器操作流程中最耗时的一部分[14]。若将OpenFlow控制器作为一个模块嵌入到系统内核中,控制器读取OpenFlow消息和同OpenFlow交换机通信的时间将减少,这将极大地增加控制器单位时间内处理消息的数目和降低控制器的处理时延[14]。

2支持集中控制的控制器

SDN控制层中的控制平面最初通过部署单一控制器实现。本文给出的几款学术界和工业界所推出的采用单一控制器实现控制的SDN控制器,并对它们开发语言和所支持的系统环境等方面进行分析。

2.1NOX、NOX-MT和POX

Nicira团队开发一款网络操作系统NOX[6],并在2008年将其捐给了研究社区,它是第一个开源OpenFlow控制器,采用异步的和基于事件的编程模型,其最初的版本是由C++和Python两种编程语言实现的,只支持单线程的操作。NOX提供了C++或者Python的应用编程接口(API),并采用了基于组件的框架来开发应用程序‘9]。

针对NOX的单线程操作方式,Toronto团队提出了具有更强大性能的控制器NOX-Mr[13]。MOX-MT采用传统的并行技术,提高NOX单位时间内处理消息的数目并降低其响应时延。但它并没有改变NOX的基本结构,也不能解决NOX的性能缺陷,如基于每个请求的过多内存拷贝和大量使用动态内存分配等[10],并且从NOX升级更新到NOX-MT,也不会产生前后不一致的问题[15]。

POX[16]是由NOX团队开发的一款更新的、完全基于Python的控制器,它的事件处理机制和编程模式与NOX是一致的,采用了多线程的操作方式。POX具有路径选择、拓扑发现等提供了可重复使用的组件,并提供了一套基于Python的OpenFlow接口,支持与NOX相同的图形用户界面(GUI)和虚拟化T具。

2.2Ryu

Rvu[17]是日本NTT公司开发的一款基于组件的开源SDN控制器,完全由Python实现,并支持Python在其上开发应用,在Ryu的消息服务中也支持其它语言开发的应用。Ryu支持多种南向接口协议,其中包括OpenFlow、Netconf和OF-config等。Ryu通过定义好的API提供了完备的组件,如消息机制、应用程序管理、事件管理等,同时它还提供了二层交换机、侦测、GRE隧道抽象等的应用程序和服务‘9]。

2.3Beacon

Beacon[7]是斯坦福大学在2010年设计开发的一款基于Java的开源SDN控制器,采用了多线程的操作方式,有着较高的性能和较强的稳定性。Beacon提供的应用组件包括拓扑、设备管理和路由等控制平面所需的通用功能,并通过OpenFlow协议管理网络设备,同时它还支持用户白定义的应用。Beacon向开发者提供了一系列相关的shelf库和API,并提供了一个基于WebUI的管理控制。Beacon通过提供用户界面OpenServiceGatewayInterface(OSGI).使开发者可以在Beacon运行状态下动态地添加或者删除模块。在v1.0.2版本的Beacon中,定制版的I/O设计进行了性能的优化,因此新版本的Beacon有着强大的性能[7]。

2.4Floodlight

Floodlight[8]1是由BigSwitch公司基于Java开发并捐献给开源社区的一款企业级SDN控制器,采用Apache2.0license开源协议标准和多线程的操作方式,提供了可视化的WebUI。BigSwitch公司的商业版控制器BigNetworkController(BNC)与Floodlight的架构和API是共享的,所以基于Floodlight的应用程序可直接运用在BNC上。

Floodlight采用了模块化的核心架构,其中包括设备管理、Web访问和管理、拓扑管理等[5],并提供了一个模块加载系统,以便轻松地进行模块的拓展和增强。通过提供一系列可扩展的RESTAPI和事件通知系统,开发者可以获取网络设备信息和设置控制器的状态。由于其核心架构来自于商业的BNC控制器,Floodlight有着较为强大的性能,但由于Floodlight是基于未对I/O进行优化的Beacon源码开发的,所以Floodlight的性能不如优化后的Beacon[7]。

2.50penDaylight

OpenDaylight[18]是由Linux基金联合Cisco、Juniper等多家网络设备厂商和软件公司提出的一个项目,目的是为实现一个具有网络可编程性的开源平台,以便灵活地部署SDN和为网络功能虚拟化(NFV)创建一个坚实的基础。

OpenDaylight有着一套模块化的、插件化的SDN控制器,其控制器的架构分为三个层次,分别为南向协议插件、服务抽象层和北向应用功能[19]。服务抽象层(ServiceAdaptationLayer,SAL)将南向协议插件和北向应用插件分开,它支持多种南向协议插件,并将南向协议标准换转为北向应用可使用的请求服务,同时将北向应用的消息转换为符合南向协议的格式,保证了南向协议的透明性。OpenDaylight控制器支持的南向协议插件除了OpenFlow之外,还有Netconf、边界网关协议(BGP)和PathComputationElementProtocol(PCEP)等,这也是与ONF的SDN架构的最大区别,ONF的SDN架构的南向协议插件通常只支持OpenFlow[20]。

2.6综合比较

下面对以上几款支持集中控制的SDN控制器主要特征和参数进行对比和分析(表1)。

控制器的主要开发语言是Python、C++和Java,其中基于Python的控制器易于上手、灵活性好,基于C++的控制器可提供良好的性能,基于Java的控制器则有着丰富的API。

除NOX外,其余的SDN控制器均采用了多线程的操作方式。同时,除早期的NOX、NOX-MT和POX控制器不支持OpenStack外,随后的SDNI控制器均可在OpenStack上部署,这说明OpenStack的支持已成为SDN控制器的设计趋势。

为了降低部署成本和提高部署灵活性,支持多种南向协议接口已经成为SDN控制器的发展趋势。

3支持分布式控制的控制器

针对于规模较小的网络,集中式控制可以较为理想地管理网络资源和网络设备。但是,通常一个规模较大的网络被划分为多个不同的域,若采用了单一控制器的集中式控制,控制器与跨域的交换机之间的通信将会产生较大的时延,从而影响控制器的性能和扩展性[21]。因此,分布式控制是基于SDN的大规模网络的发展趋势。分布式控制的基本思想就是在每个域内部署一个或者多个控制器,控制器之间通过协议统一管理网络设备的资源。

分布式控制的结构主要可分为两种[21,22]:层次SDN控制和扁平SDN控制。图2给出一种典型的层次SDN控制结构,不同的控制器被分配到不同的层面上,局部控制器处理其所在域内的大多数底层数据通道事件和屏蔽更高的层面;根控制器(全局控制器)控制局部控制器,并完成局部控制器之间的交互。

图3中所示的为扁平SDN控制网络结构[21],每个域的管理由域内的控制器完成,整个网络中的所有控制器都在同一层面上,网络状态或拓扑结构的更新将会同步到所有的控制器中。

3.1HyperFlow

HyperFlow[10]是在2010年提出的第一款基于事件的分布式控制器,通过将其作为一个NOX上的一个应用程序的方式实现。通过在一个规模较大的网络内部署多个控制器,所有的控制器共享相同的全局网络视图,并采用消息的发布/订阅模式通信[23],每台控制器处理本域内的服务请求而不需要和任何远程节点建立连接,减少了流表的建立时间。HyperFlow是基于一个分布式文件系统WheeIFS设计的,并采用文件更新的形式实现控制器之间网络事件的传递。虽然,HyperFlow实现简单(对NOX的少量修改),但其性能较低,并在网络规模较大或网络事件更新频繁的情况下,控制器之间的通信会产生较大的开销。

3.20nix

Onixc24]是在2010年提出的一款面向大规模网络的分布式控制器,其架构主要由物理基础设施、连接基础设施、Onix和控制逻辑四部分组成。在Onix网络中,一个网络信息库(NIB)维护着全局网络状态,NIB既是Onix控制模式的核心,也是Onix分布模式的基础,网络控制应用通过读和写NIB内的信息完成部署,通过维护NIB的分发机制,确保网络状态信息的一致性。

3.3Kandoo

Kandoo[11]是在2012年提出的一款基于层次的SDN控制的分布式控制器,它将控制器划分到了不同的层面上,分别为顶层的根控制器和与顶层网络设备相连的局部控制器(如图3所示),根控制器负责全局的管理和控制器之间的通信,局部控制器负责本地信息的管理。在Kandoo网络中,交换机首先请求信息发送给本地的局部交换机;若局部交换机可以处理该请求,则发送回复信息给交换机,否则转发给根控制器;这有效地降低了根控制器的处理负担和交互频率。

总之,分布式SDN控制器的提出主要是为了解决单个控制器的集中式控制中的控制器性能无法保证、跨域请求时延过长等问题。表2对4.1到4.3中介绍的3种分布式控制器进行了总结。

4总结

SDN的可编程、数据与控制平面分离和集中式控制等多项优势使得网络的部署和管理变得灵活、智能和方便。SDN控制器的发展历程从单线程、单一的南向协议接口和单一控制器的集中式控制到多线程、多种南向协议接口的支持和多个控制器的分布式控制,并且支持在OpenStack上的部署已经成为控制器的设计趋势。本文介绍和分析了理想化的SDN控制器、单一控制器的集中控制和多个控制器的分布式控制等方面的结构和特点;并对比了单一控制器的集中控制平面中的每个控制器的开发语言、南/北向接口、运行环境等方面。同时,还对当前主流的三款分布式控制器的所采用的结构和技术特点进行了总结。

参考文献

[1]MckeownN.Keynotetalk:Software-definednetworking[J].IEEEInfocom,2009,51(2):1-2.

[2]McKeownN,AndersonT,BalakrishnanH,etal.OpenFlow:enablinginnovationincampusnetworks[J].ACMSIGCOMMComputerCommunicationReview,2008,38(2):69-74.

[3]李程程,王晓云.OpenFlow技术与商业价值[J]软件,2013,34(12):186-189.

[4]李文俊.基于OpenFlow的可编程终端设计与实现[J].软件,2013,34(11):27-30.

[5]陈纪好,魏冰.基于SDN的蜂窝移动网络优化研究[J].软件,2013,34(12):229-230.

[6]

GudeN,KoponenT,PettitJ,etal.NOX:towardsanoperatingsystemfornetworks[J].ACMSIGCOMMComputerCommunicationReview,2008,38(3):105-110.

[7]EricksonD.TheBeaconOpenFlowcontroller[C],/Proceedingsofthe2ndACMSIGCOMMWorkshoponHotTopicsinSoftwareDefinedNetworking(HotSDN'13),HongKong,2010.NewYork,NY,USA:ACM,2013:13-18.

[8]Floodlight[EB/OL].[2015—05-20].http://www.projectfloodlight.org/floodlight/.

[9]NadeauTD,GrayK.SDN:SoftwareDefinedNetworks[M].北京:人民邮电出版社,2014:65-68.

[10]TootoonchianA,GanjaliY.HyperFlow:adistributedcontrolplaneforOpenFlow[C],/Proceedingsofthe2010InternetNetworkManagementWorkshop/WorkshoponResearchonEnterpriseNetworking(INM/WREN'10),SanJose,2010.Berkeley,CA,USA:USENIXAssociation,2010.

[11]YeganehSH,GanjaliY.Kandoo:aframeworkforefficientandscalableoffloadingofcontrolapplications[C]//ProceedingsofthelstWorkshoponHotTopicsinSoftwareDefinedNetworks(HotSDN'12),Helsinki,2012.NewYork,NY,USA:ACM,2012:19-24.

[12]Opennetworkingfoundation[EB/OL].[2015-05-20].https://www.opennetworking.org/sdn-resources/sdn-definition/.

[13]TootoonchianA,GorbunovS,GanjaliY,etal.Oncontrollerperformanceinsoftware-definednetworks[C],/Proceedingsofthe2ndUSENIXConferenceonHotTopicsinManagementofInternet,Cloud,andEnterpriseNetworksandServices(Hot-ICE'12),SanJose,2012.Berkeley,CA,USA:USENIXAssociation,2012.

[14]IvashchenkoP,ShalimovA,SmelianskyR.Highperformancein-kernelSDN/OpenFlowcontroller[C]//ProceedingsofOpenNet-workingSummitResearchTrack,USENIX,SantaClara,USA,March,2014.

[15]VanbeverL,ReichJ,BensonT,FosterN,etal.HotSwap:correctandefficientcontrollerupgradesforsoftware-definednetworks[C],/Proceedingsofthe2ndACMSIGCOMMWorkshoponHotTopicsinSoftwareDefinedNetworking(HotSDN'13),HongKong,2013.NewYork,NY,USA:ACM,2013:133-137.

[16]POX[EB/OL].[2015-05-20].http://www.noxrepo.org/pox/about-pox/.

[17]Ryu[EB/OL].[2015-05-20].http://osrg.github.io/ryu/.

[18]OpenDayLight[EB/OL].[2015-05-20].http://www.opendaylight.org/.

[19]MedvedJ,TkacikA,VargaR,etal.OpenDaylight:towardsamodel-drivenSDNcontrollerarchitecture[C]//Proceedingsofthe15thAWorldofWireless,MobileandMultimediaNetworks(WoWMoM'14),Sydney,Australia,2014:1-6.

[20]左青云,陈鸣,赵广松,等.基于OpenFlow的SDN技术[J]软件学报,2013,24(5):1078-1097.

[21]张朝昆,崔勇,唐嵩嵩,吴建平.软件定义网络(SDN)研究进展[J].软件学报,2015,26(1):62-81.

[22]SchmidS,SuomelaJ.ExploitinglocalityindistributedSDNcontrol[C]//Proceedingsofthe2ndACMSIGCOMMWorkshoponHotTopicsinSoftwareDefinedNetworking(HotSDN'13),HongKong,2013.NewYork,NY,USA:ACM,2013:121-126.

[23]郭成,章洋.基于OpenFlow的发布/订阅系统的管理与安全[J].软件,2014,35(9):31-37.

[24]KoponenT,CasadoM,GudeN,etal.Onix:adistributedcontrolplatformforlarge-scaleproductionnetworks[C],/Proceedingsofthe9thUSENIXConferenceonOperatingSystemsDesignandImplementation(OSDI'10),Vancouver,2010.Berkeley,CA,USA:USENIXAssociation,2010:1-6.

猜你喜欢
软件定义网络结构分析控制器
业务功能链技术及其应用探析
针对大规模软件定义网络的子域划分及控制器部署方法
一种新的SDN架构下端到端网络主动测量机制
2016年中国经济走势展望
MOXA RTU控制器ioPAC 5542系列
倍福 CX8091嵌入式控制器
4V三输出同步降压型控制器