陳凡+劉果+李劍鋒+但歡
摘要:在軟件定義網(wǎng)絡(luò)(Software-DefinedNetworking,SDN)的體系結(jié)構(gòu)中,控制器是控制層的核心部件,對網(wǎng)絡(luò)的性能起到至關(guān)重要的作用。本文將會對SDN控制器結(jié)構(gòu)和性能等多個因素進行對比和分析,并針對學(xué)術(shù)界和工業(yè)界提出的SDN控制器,分別對基于單一控制的集中式控制和基于多個控制器的分布式控制進行結(jié)構(gòu)、技術(shù)特點等方面的比較與分析。
關(guān)鍵詞:軟件定義網(wǎng)絡(luò);控制器;控制平面;結(jié)構(gòu)分析
中圖分類號:TP393
文獻標識碼:A
DOI:10.3969/j.issn.1003-6970.2015.06.018
本文著錄格式:陳凡,劉果,李劍鋒,等,主要軟件定義網(wǎng)絡(luò)控制器的對比和分析[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引言
當前因特網(wǎng)的網(wǎng)絡(luò)規(guī)模急劇膨脹和網(wǎng)絡(luò)應(yīng)用快速增多,此外,類似于高性能需求的數(shù)據(jù)中心及其網(wǎng)絡(luò)也出現(xiàn)并得到大力發(fā)展,傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)已經(jīng)很難以適應(yīng)這種變化。軟件定義網(wǎng)絡(luò)(SDN)2009年提出以來[1],是當今非常熱門的網(wǎng)絡(luò)架構(gòu)之一,它將數(shù)據(jù)與控制層面分離,并采用集中控制,有著硬件選擇靈活、部署時間更短、可編程和成本低等多種優(yōu)勢,主要以O(shè)penFlow協(xié)議作為其核心通信協(xié)議[2]可以滿足現(xiàn)有網(wǎng)絡(luò)變化的需求。目前,國內(nèi)對OpenFlow和SDN的商業(yè)價值、技術(shù)和可編程的設(shè)計進行了相關(guān)研究[3,4,5]。
作為SDN架構(gòu)中控制層的核心部件,SDN控制器負責(zé)管理整個網(wǎng)絡(luò)設(shè)備和資源,對網(wǎng)絡(luò)的良好運行起到至關(guān)重要的作用。針對不同的網(wǎng)絡(luò)環(huán)境,學(xué)術(shù)界和工業(yè)界已推出各種控制器,如NOX[6]、Beacon[7]、Floodlightc8]等,以及一種功能、接口全面的理想化SDN控制器結(jié)構(gòu)[9]。此外,針對網(wǎng)絡(luò)規(guī)模的急劇膨脹,網(wǎng)絡(luò)性能和擴展性更高的分布式SDN控制器也已被提出,如HyperFlow[10]和Kandoo[11]等。
本文將介紹學(xué)術(shù)界提出的理想化SDN控制器結(jié)構(gòu),接著分析適用于較小或中等網(wǎng)絡(luò)規(guī)模的單一控制器,最后對多個控制器的分布式控制結(jié)構(gòu)和技術(shù)特點進行概括和分析。
1SDN控制器結(jié)構(gòu)
ONF(OpenNetworkingFoundation)提出了一種已被學(xué)術(shù)界、產(chǎn)業(yè)界普遍認可的SDN典型的體系結(jié)構(gòu)[12]。該SDN體系結(jié)構(gòu)由下到上分別為轉(zhuǎn)發(fā)層(基礎(chǔ)設(shè)施層)、控制層和業(yè)務(wù)層(應(yīng)用層)。其中轉(zhuǎn)發(fā)層表示網(wǎng)絡(luò)底層的物理轉(zhuǎn)發(fā)設(shè)備,維護著流表結(jié)構(gòu);控制層集中管理網(wǎng)絡(luò)設(shè)備和資源,并負責(zé)流表的生成和配置,同時為業(yè)務(wù)層提供北向接口;業(yè)務(wù)層根據(jù)不同的應(yīng)用需求實現(xiàn)不同功能的應(yīng)用程序??刂茖油ㄟ^南向接口與轉(zhuǎn)發(fā)層進行通信,并獲取轉(zhuǎn)發(fā)層的網(wǎng)絡(luò)設(shè)備的信息;控制層與業(yè)務(wù)層之間由可擴展的北向接口完成通信。
SDN控制器既為上層業(yè)務(wù)層的網(wǎng)絡(luò)應(yīng)用提供轉(zhuǎn)發(fā)層的網(wǎng)絡(luò)設(shè)備狀態(tài)信息,還生成、配置底層網(wǎng)絡(luò)設(shè)備的流表,是連接上層業(yè)務(wù)層和底層轉(zhuǎn)發(fā)層的橋梁。NadeauTD和GrayK給出一種理想化的SDN控制器框架[9],如圖1所示。
該理想化SDN控制器提供以下主要功能[9]:
網(wǎng)絡(luò)狀態(tài)的管理,通過一些數(shù)據(jù)庫保存網(wǎng)絡(luò)設(shè)備和SDN應(yīng)用程序的控制、狀態(tài)和配置等信息。
高級數(shù)據(jù)模型,用以描述所管理的網(wǎng)絡(luò)資源、相應(yīng)策略和控制器所提供其它服務(wù)之間的關(guān)系。
完善的北向接口(RestAPI),提供業(yè)務(wù)層的應(yīng)用程序使用,為應(yīng)用程序和控制器之間的通信提供一種接口,達到網(wǎng)絡(luò)管理的目的。
基于標準的、協(xié)議適配功能,配置轉(zhuǎn)發(fā)層中的網(wǎng)絡(luò)設(shè)備上應(yīng)用程序的驅(qū)動狀態(tài)。
網(wǎng)絡(luò)設(shè)備、拓撲和虛擬網(wǎng)絡(luò)的管理。
制定路徑計算的系統(tǒng),通過路徑計算單元(PCE)服務(wù)器完成路徑計算和協(xié)議支持。
可靠的會話,通過TCP連接在控制器和網(wǎng)絡(luò)設(shè)備之間建立可靠的會話。
控制器的開發(fā)效率、支持的南向接口協(xié)議和性能等諸多因素都會影響開發(fā)者和研究者的選擇。針對SDN控制器的性能評測,當前研究主要采用兩個性能指標[7,1314]:
控制器單位時間內(nèi)響應(yīng)和處理的消息數(shù)目。
控制器平均處理每個消息的時延。
由于從網(wǎng)卡讀取OpenFlow消息和同OpenFlow交換機之間的通信是OpenFlow控制器操作流程中最耗時的一部分[14]。若將OpenFlow控制器作為一個模塊嵌入到系統(tǒng)內(nèi)核中,控制器讀取OpenFlow消息和同OpenFlow交換機通信的時間將減少,這將極大地增加控制器單位時間內(nèi)處理消息的數(shù)目和降低控制器的處理時延[14]。
2支持集中控制的控制器
SDN控制層中的控制平面最初通過部署單一控制器實現(xiàn)。本文給出的幾款學(xué)術(shù)界和工業(yè)界所推出的采用單一控制器實現(xiàn)控制的SDN控制器,并對它們開發(fā)語言和所支持的系統(tǒng)環(huán)境等方面進行分析。
2.1NOX、NOX-MT和POX
Nicira團隊開發(fā)一款網(wǎng)絡(luò)操作系統(tǒng)NOX[6],并在2008年將其捐給了研究社區(qū),它是第一個開源OpenFlow控制器,采用異步的和基于事件的編程模型,其最初的版本是由C++和Python兩種編程語言實現(xiàn)的,只支持單線程的操作。NOX提供了C++或者Python的應(yīng)用編程接口(API),并采用了基于組件的框架來開發(fā)應(yīng)用程序‘9]。
針對NOX的單線程操作方式,Toronto團隊提出了具有更強大性能的控制器NOX-Mr[13]。MOX-MT采用傳統(tǒng)的并行技術(shù),提高NOX單位時間內(nèi)處理消息的數(shù)目并降低其響應(yīng)時延。但它并沒有改變NOX的基本結(jié)構(gòu),也不能解決NOX的性能缺陷,如基于每個請求的過多內(nèi)存拷貝和大量使用動態(tài)內(nèi)存分配等[10],并且從NOX升級更新到NOX-MT,也不會產(chǎn)生前后不一致的問題[15]。
POX[16]是由NOX團隊開發(fā)的一款更新的、完全基于Python的控制器,它的事件處理機制和編程模式與NOX是一致的,采用了多線程的操作方式。POX具有路徑選擇、拓撲發(fā)現(xiàn)等提供了可重復(fù)使用的組件,并提供了一套基于Python的OpenFlow接口,支持與NOX相同的圖形用戶界面(GUI)和虛擬化T具。
2.2Ryu
Rvu[17]是日本NTT公司開發(fā)的一款基于組件的開源SDN控制器,完全由Python實現(xiàn),并支持Python在其上開發(fā)應(yīng)用,在Ryu的消息服務(wù)中也支持其它語言開發(fā)的應(yīng)用。Ryu支持多種南向接口協(xié)議,其中包括OpenFlow、Netconf和OF-config等。Ryu通過定義好的API提供了完備的組件,如消息機制、應(yīng)用程序管理、事件管理等,同時它還提供了二層交換機、偵測、GRE隧道抽象等的應(yīng)用程序和服務(wù)‘9]。
2.3Beacon
Beacon[7]是斯坦福大學(xué)在2010年設(shè)計開發(fā)的一款基于Java的開源SDN控制器,采用了多線程的操作方式,有著較高的性能和較強的穩(wěn)定性。Beacon提供的應(yīng)用組件包括拓撲、設(shè)備管理和路由等控制平面所需的通用功能,并通過OpenFlow協(xié)議管理網(wǎng)絡(luò)設(shè)備,同時它還支持用戶白定義的應(yīng)用。Beacon向開發(fā)者提供了一系列相關(guān)的shelf庫和API,并提供了一個基于WebUI的管理控制。Beacon通過提供用戶界面OpenServiceGatewayInterface(OSGI).使開發(fā)者可以在Beacon運行狀態(tài)下動態(tài)地添加或者刪除模塊。在v1.0.2版本的Beacon中,定制版的I/O設(shè)計進行了性能的優(yōu)化,因此新版本的Beacon有著強大的性能[7]。
2.4Floodlight
Floodlight[8]1是由BigSwitch公司基于Java開發(fā)并捐獻給開源社區(qū)的一款企業(yè)級SDN控制器,采用Apache2.0license開源協(xié)議標準和多線程的操作方式,提供了可視化的WebUI。BigSwitch公司的商業(yè)版控制器BigNetworkController(BNC)與Floodlight的架構(gòu)和API是共享的,所以基于Floodlight的應(yīng)用程序可直接運用在BNC上。
Floodlight采用了模塊化的核心架構(gòu),其中包括設(shè)備管理、Web訪問和管理、拓撲管理等[5],并提供了一個模塊加載系統(tǒng),以便輕松地進行模塊的拓展和增強。通過提供一系列可擴展的RESTAPI和事件通知系統(tǒng),開發(fā)者可以獲取網(wǎng)絡(luò)設(shè)備信息和設(shè)置控制器的狀態(tài)。由于其核心架構(gòu)來自于商業(yè)的BNC控制器,F(xiàn)loodlight有著較為強大的性能,但由于Floodlight是基于未對I/O進行優(yōu)化的Beacon源碼開發(fā)的,所以Floodlight的性能不如優(yōu)化后的Beacon[7]。
2.50penDaylight
OpenDaylight[18]是由Linux基金聯(lián)合Cisco、Juniper等多家網(wǎng)絡(luò)設(shè)備廠商和軟件公司提出的一個項目,目的是為實現(xiàn)一個具有網(wǎng)絡(luò)可編程性的開源平臺,以便靈活地部署SDN和為網(wǎng)絡(luò)功能虛擬化(NFV)創(chuàng)建一個堅實的基礎(chǔ)。
OpenDaylight有著一套模塊化的、插件化的SDN控制器,其控制器的架構(gòu)分為三個層次,分別為南向協(xié)議插件、服務(wù)抽象層和北向應(yīng)用功能[19]。服務(wù)抽象層(ServiceAdaptationLayer,SAL)將南向協(xié)議插件和北向應(yīng)用插件分開,它支持多種南向協(xié)議插件,并將南向協(xié)議標準換轉(zhuǎn)為北向應(yīng)用可使用的請求服務(wù),同時將北向應(yīng)用的消息轉(zhuǎn)換為符合南向協(xié)議的格式,保證了南向協(xié)議的透明性。OpenDaylight控制器支持的南向協(xié)議插件除了OpenFlow之外,還有Netconf、邊界網(wǎng)關(guān)協(xié)議(BGP)和PathComputationElementProtocol(PCEP)等,這也是與ONF的SDN架構(gòu)的最大區(qū)別,ONF的SDN架構(gòu)的南向協(xié)議插件通常只支持OpenFlow[20]。
2.6綜合比較
下面對以上幾款支持集中控制的SDN控制器主要特征和參數(shù)進行對比和分析(表1)。
控制器的主要開發(fā)語言是Python、C++和Java,其中基于Python的控制器易于上手、靈活性好,基于C++的控制器可提供良好的性能,基于Java的控制器則有著豐富的API。
除NOX外,其余的SDN控制器均采用了多線程的操作方式。同時,除早期的NOX、NOX-MT和POX控制器不支持OpenStack外,隨后的SDNI控制器均可在OpenStack上部署,這說明OpenStack的支持已成為SDN控制器的設(shè)計趨勢。
為了降低部署成本和提高部署靈活性,支持多種南向協(xié)議接口已經(jīng)成為SDN控制器的發(fā)展趨勢。
3支持分布式控制的控制器
針對于規(guī)模較小的網(wǎng)絡(luò),集中式控制可以較為理想地管理網(wǎng)絡(luò)資源和網(wǎng)絡(luò)設(shè)備。但是,通常一個規(guī)模較大的網(wǎng)絡(luò)被劃分為多個不同的域,若采用了單一控制器的集中式控制,控制器與跨域的交換機之間的通信將會產(chǎn)生較大的時延,從而影響控制器的性能和擴展性[21]。因此,分布式控制是基于SDN的大規(guī)模網(wǎng)絡(luò)的發(fā)展趨勢。分布式控制的基本思想就是在每個域內(nèi)部署一個或者多個控制器,控制器之間通過協(xié)議統(tǒng)一管理網(wǎng)絡(luò)設(shè)備的資源。
分布式控制的結(jié)構(gòu)主要可分為兩種[21,22]:層次SDN控制和扁平SDN控制。圖2給出一種典型的層次SDN控制結(jié)構(gòu),不同的控制器被分配到不同的層面上,局部控制器處理其所在域內(nèi)的大多數(shù)底層數(shù)據(jù)通道事件和屏蔽更高的層面;根控制器(全局控制器)控制局部控制器,并完成局部控制器之間的交互。
圖3中所示的為扁平SDN控制網(wǎng)絡(luò)結(jié)構(gòu)[21],每個域的管理由域內(nèi)的控制器完成,整個網(wǎng)絡(luò)中的所有控制器都在同一層面上,網(wǎng)絡(luò)狀態(tài)或拓撲結(jié)構(gòu)的更新將會同步到所有的控制器中。
3.1HyperFlow
HyperFlow[10]是在2010年提出的第一款基于事件的分布式控制器,通過將其作為一個NOX上的一個應(yīng)用程序的方式實現(xiàn)。通過在一個規(guī)模較大的網(wǎng)絡(luò)內(nèi)部署多個控制器,所有的控制器共享相同的全局網(wǎng)絡(luò)視圖,并采用消息的發(fā)布/訂閱模式通信[23],每臺控制器處理本域內(nèi)的服務(wù)請求而不需要和任何遠程節(jié)點建立連接,減少了流表的建立時間。HyperFlow是基于一個分布式文件系統(tǒng)WheeIFS設(shè)計的,并采用文件更新的形式實現(xiàn)控制器之間網(wǎng)絡(luò)事件的傳遞。雖然,HyperFlow實現(xiàn)簡單(對NOX的少量修改),但其性能較低,并在網(wǎng)絡(luò)規(guī)模較大或網(wǎng)絡(luò)事件更新頻繁的情況下,控制器之間的通信會產(chǎn)生較大的開銷。
3.20nix
Onixc24]是在2010年提出的一款面向大規(guī)模網(wǎng)絡(luò)的分布式控制器,其架構(gòu)主要由物理基礎(chǔ)設(shè)施、連接基礎(chǔ)設(shè)施、Onix和控制邏輯四部分組成。在Onix網(wǎng)絡(luò)中,一個網(wǎng)絡(luò)信息庫(NIB)維護著全局網(wǎng)絡(luò)狀態(tài),NIB既是Onix控制模式的核心,也是Onix分布模式的基礎(chǔ),網(wǎng)絡(luò)控制應(yīng)用通過讀和寫NIB內(nèi)的信息完成部署,通過維護NIB的分發(fā)機制,確保網(wǎng)絡(luò)狀態(tài)信息的一致性。
3.3Kandoo
Kandoo[11]是在2012年提出的一款基于層次的SDN控制的分布式控制器,它將控制器劃分到了不同的層面上,分別為頂層的根控制器和與頂層網(wǎng)絡(luò)設(shè)備相連的局部控制器(如圖3所示),根控制器負責(zé)全局的管理和控制器之間的通信,局部控制器負責(zé)本地信息的管理。在Kandoo網(wǎng)絡(luò)中,交換機首先請求信息發(fā)送給本地的局部交換機;若局部交換機可以處理該請求,則發(fā)送回復(fù)信息給交換機,否則轉(zhuǎn)發(fā)給根控制器;這有效地降低了根控制器的處理負擔(dān)和交互頻率。
總之,分布式SDN控制器的提出主要是為了解決單個控制器的集中式控制中的控制器性能無法保證、跨域請求時延過長等問題。表2對4.1到4.3中介紹的3種分布式控制器進行了總結(jié)。
4總結(jié)
SDN的可編程、數(shù)據(jù)與控制平面分離和集中式控制等多項優(yōu)勢使得網(wǎng)絡(luò)的部署和管理變得靈活、智能和方便。SDN控制器的發(fā)展歷程從單線程、單一的南向協(xié)議接口和單一控制器的集中式控制到多線程、多種南向協(xié)議接口的支持和多個控制器的分布式控制,并且支持在OpenStack上的部署已經(jīng)成為控制器的設(shè)計趨勢。本文介紹和分析了理想化的SDN控制器、單一控制器的集中控制和多個控制器的分布式控制等方面的結(jié)構(gòu)和特點;并對比了單一控制器的集中控制平面中的每個控制器的開發(fā)語言、南/北向接口、運行環(huán)境等方面。同時,還對當前主流的三款分布式控制器的所采用的結(jié)構(gòu)和技術(shù)特點進行了總結(jié)。
參考文獻
[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技術(shù)與商業(yè)價值[J]軟件,2013,34(12):186-189.
[4]李文俊.基于OpenFlow的可編程終端設(shè)計與實現(xiàn)[J].軟件,2013,34(11):27-30.
[5]陳紀好,魏冰.基于SDN的蜂窩移動網(wǎng)絡(luò)優(yōu)化研究[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,F(xiàn)osterN,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技術(shù)[J]軟件學(xué)報,2013,24(5):1078-1097.
[21]張朝昆,崔勇,唐嵩嵩,吳建平.軟件定義網(wǎng)絡(luò)(SDN)研究進展[J].軟件學(xué)報,2015,26(1):62-81.
[22]SchmidS,SuomelaJ.ExploitinglocalityindistributedSDNcontrol[C]//Proceedingsofthe2ndACMSIGCOMMWorkshoponHotTopicsinSoftwareDefinedNetworking(HotSDN'13),HongKong,2013.NewYork,NY,USA:ACM,2013:121-126.
[23]郭成,章洋.基于OpenFlow的發(fā)布/訂閱系統(tǒng)的管理與安全[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.