劉果+陳凡+李劍鋒+吳京京
摘要:軟件定義網(wǎng)絡(luò)(SDN)是一種新型的網(wǎng)絡(luò)架構(gòu),其控制邏輯集中、轉(zhuǎn)發(fā)與控制分離、網(wǎng)絡(luò)可編程化三個(gè)特點(diǎn),給網(wǎng)絡(luò)資源管理帶來(lái)新的思路,SDN的研究也對(duì)仿真實(shí)驗(yàn)平臺(tái)提出要求。文章介紹了SDN及其主要協(xié)議OpenFlow,分析了支持OpenFlow協(xié)議的主要網(wǎng)絡(luò)仿真軟件的功能特點(diǎn)和可操作性。最后描述了基于Mininet的SDN仿真實(shí)驗(yàn)平臺(tái)搭建過(guò)程,同時(shí)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的邏輯隔離策略來(lái)驗(yàn)證該平臺(tái)的有效性。
關(guān)鍵詞:軟件定義網(wǎng)絡(luò);仿真軟件;Mininet;邏輯隔離
中圖分類(lèi)號(hào):TP393
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.3969/j.issn.1003-6970.2015.06.019
本文著錄格式:劉果,陳凡,李劍鋒,等.構(gòu)建SDN仿真實(shí)驗(yàn)平臺(tái)的探討與實(shí)踐[J].軟件,2015,36(6):103-108
DiscussionandPracticeonSDNSimulationPlatformConstruction
LIUGuo,CHENFan,LIJian-feng,WUJing-jing
[Abstract]:Software-DefinedNetworking(SDN)isnovelnetworkarchitecturewiththreemajorfeatures-controlcentralization,separationofcontrollingandforwardingandnetworkprogrammability,andthishasbroughtnewideasfornetworkresourcemanagement.ResearchonSDNmakesdemandsonthesimulationplatform.ThispaperintroducesSDNanditsmostimportantprotocolOpenFlow,anddiscussesthefeaturesandoperabilityofsomemainnetworksim-ulatorsthatsupporttheOpenFlowprotocol.Finally,wetakeMininetasanexampletodescribetheconstructionprocessofSDNsimulationplatform,andimplementasimplestrategyoflogicisolationtoverifyitsvalidity.
[Keywords]:Software-DefinedNetworking;Simulator;Mininet;LogicIsolation
0引言
伴隨著信息技術(shù)的高速發(fā)展,眾多新的互聯(lián)網(wǎng)在線業(yè)務(wù)的用戶(hù)量也在急劇增長(zhǎng),網(wǎng)絡(luò)數(shù)據(jù)量的增多和規(guī)模的擴(kuò)大對(duì)網(wǎng)絡(luò)承載和管理都提出了巨大的挑戰(zhàn)。2009年提出的SDN(Software-DefinedNetworking,軟件定義網(wǎng)絡(luò))是近幾年興起的一種新型網(wǎng)絡(luò)架構(gòu),對(duì)這些挑戰(zhàn)提出了新的思路[1],其核心協(xié)議是OpenFlow[2]。OpenFlow允許遠(yuǎn)程控制器通過(guò)控制網(wǎng)絡(luò)中的交換機(jī)來(lái)決定數(shù)據(jù)包的路徑。這種控制與轉(zhuǎn)發(fā)分離的方式可以用來(lái)進(jìn)行更為靈活、精細(xì)的流量管理[3]。
模擬構(gòu)建真實(shí)網(wǎng)絡(luò)是網(wǎng)絡(luò)技術(shù)研究的主要手段之一。實(shí)現(xiàn)方式有試驗(yàn)床、純粹數(shù)學(xué)模型和網(wǎng)絡(luò)仿真,其中最常用的方法是網(wǎng)絡(luò)仿真[4]。許多學(xué)者利用仿真軟件或者自定義仿真模型來(lái)進(jìn)行網(wǎng)絡(luò)相關(guān)的研究[5-8]。網(wǎng)絡(luò)仿真軟件有很多,其中對(duì)OpenFlow提供較好支持的有Mininet[9]、NS-3[10],OpenvSwitch[11]、Estinet9.0[12]。建立SDN仿真實(shí)驗(yàn)平臺(tái)對(duì)SDN相關(guān)研究與開(kāi)發(fā)工作順利開(kāi)展非常必要。
1SDN與OpenFlow
SDN是一種新型的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)理念,它將網(wǎng)絡(luò)的控制平面與數(shù)據(jù)轉(zhuǎn)發(fā)平面進(jìn)行分離,并實(shí)現(xiàn)可編程化控制。ONF提出的典型SDN架構(gòu)定義如圖1所示[13]。其中最上層為應(yīng)用層,包括各種不同的業(yè)務(wù)和應(yīng)用??刂茖又饕?fù)責(zé)處理數(shù)據(jù)平面資源的編排、維護(hù)網(wǎng)絡(luò)拓?fù)錉顟B(tài)信息等?;A(chǔ)設(shè)施層負(fù)責(zé)基于流表的數(shù)據(jù)處理轉(zhuǎn)發(fā)和狀態(tài)收集。
OpenFlow是控制器與交換機(jī)間通信遵循的協(xié)議。OpenFlow最早由斯坦福大學(xué)的NickMcKeown教授提出,它將控制功能從網(wǎng)絡(luò)設(shè)備中分離出來(lái),在網(wǎng)絡(luò)設(shè)備上維護(hù)流表結(jié)構(gòu)。數(shù)據(jù)分組按照流表進(jìn)行轉(zhuǎn)發(fā),而流表的生成、維護(hù)、配置由中央控制器來(lái)管理。傳統(tǒng)的轉(zhuǎn)發(fā)設(shè)備(交換機(jī)或者路由器)的數(shù)據(jù)轉(zhuǎn)發(fā)依賴(lài)于設(shè)備中保存的地址信息(MAC地址轉(zhuǎn)發(fā)表或者IP地址路由表),而OpenFlow交換機(jī)使用的流表規(guī)則包括網(wǎng)絡(luò)各層的基本配置信息,所以在數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)規(guī)則更靈活豐富??刂破魈峁┝丝晒┚幊痰谋毕蚪涌?,網(wǎng)絡(luò)管理者可以基于這些接口開(kāi)發(fā)出特定的網(wǎng)絡(luò)應(yīng)用[14]。
2支持OpenFlow的網(wǎng)絡(luò)仿真軟件
隨著SDN的快速發(fā)展,SDN的研究和仿真己成為從事SDN的研究人員所必須從事的一項(xiàng)工作。網(wǎng)絡(luò)仿真軟件是支持網(wǎng)絡(luò)研究工作的工具和平臺(tái)。本節(jié)將會(huì)介紹當(dāng)前主流的幾款支持OpenFlow協(xié)議并能用于SDN網(wǎng)絡(luò)研究的仿真軟件。
2.1Mininet
Mininet[9]是2010年斯坦福大學(xué)基于LinuxContainer架構(gòu)開(kāi)發(fā)的一款輕量級(jí)的SDN網(wǎng)絡(luò)仿真平臺(tái)。使用者可以通過(guò)Mininet輕易地在一臺(tái)機(jī)器上(本地PC機(jī)、云平臺(tái)或VM虛擬機(jī))搭建一個(gè)SDN環(huán)境,同時(shí)可通過(guò)Mininet的命令行界面與搭建的網(wǎng)絡(luò)環(huán)境進(jìn)行交互,并且可將其部署在一個(gè)真實(shí)的硬件中。
Mininet具有如下特征:(1)可自定義拓?fù)浜凸?jié)點(diǎn)結(jié)構(gòu),(2)允許多個(gè)并行開(kāi)發(fā)人員在同一個(gè)拓?fù)浣Y(jié)構(gòu)上獨(dú)立工作,(3)支持系統(tǒng)級(jí)的回歸測(cè)試,(4)提供了簡(jiǎn)單的和可擴(kuò)展的PythonAPI,(5)可運(yùn)行標(biāo)準(zhǔn)的Unix/Linux網(wǎng)絡(luò)應(yīng)用,(6)良好的硬件移植性和可擴(kuò)展性。但是,Mininet的使用也有一些限制,如基于Mininet的網(wǎng)絡(luò)不能超出一個(gè)服務(wù)器上的可用CPU和帶寬資源,并且不能運(yùn)行不與Linux兼容的OpenFlow交換機(jī)或應(yīng)用。2.2NS-3
NS-3[lo]是Berkley大學(xué)發(fā)開(kāi)的一個(gè)離散事件的網(wǎng)絡(luò)仿真器,它是在GNUGPLv2license下授予許可的一個(gè)免費(fèi)的網(wǎng)絡(luò)仿真軟件,采用了C++/Python語(yǔ)言對(duì)其進(jìn)行開(kāi)發(fā),可廣泛地用于研究和開(kāi)發(fā)。N3-3并不是NS-2的擴(kuò)展,二者的腳本語(yǔ)言不同,NS-3也不支持NS-2的API。
NS-3仿真支持OpenFlow交換機(jī)。NS-3模擬的OpenFlow交換機(jī)可通過(guò)OpenFlowAPI對(duì)交換機(jī)進(jìn)行配置,以及使用MPLS(MultipleprotocolLabelSwitching,多協(xié)議標(biāo)簽交換技術(shù))的擴(kuò)展來(lái)支持服務(wù)質(zhì)量和服務(wù)水平協(xié)定。NS-3目前使用OpenFlow交換庫(kù)(OpenFlowswitchlibrary,OFSID),OFSID是OpenFlow軟件實(shí)現(xiàn)的分配,它被愛(ài)立信的研究人員創(chuàng)建,并加入了MPLS功能。為了在NS-3中使用OpenFlow模塊,必須下載和構(gòu)建OFSID,將OFSID構(gòu)建到libopenflow.a庫(kù),以及鏈接OpenFlowswitchmodule到NS-3bulid中。
2.30penSwitch
OpenSwitch[ll]是一個(gè)多層的虛擬交換軟件,通過(guò)編程擴(kuò)展可使得大規(guī)模網(wǎng)絡(luò)自動(dòng)化,并支持標(biāo)準(zhǔn)的管理接口和協(xié)議,在開(kāi)源Apache2.0license下授予許可。OpenSwitch可移植到多個(gè)虛擬平臺(tái)和交換芯片上,如Xen、KVM和Virtualbox等,并且它已經(jīng)被集成到多個(gè)虛擬管理系統(tǒng)中,如OpenStack、OpenQRM和OpenNebula等,其程序包可安裝于Ubuntu、Debian和Fedora等多個(gè)Linux操作系統(tǒng)上。
OpenSwitch提供了對(duì)OpenFlow的支持,可用于模擬單個(gè)OpenFlow交換機(jī)。在實(shí)際的OpenFlow環(huán)境搭建中,一個(gè)Ubuntu系統(tǒng)的PC機(jī)上安裝OpenSwitch的程序包,通過(guò)簡(jiǎn)單的配置網(wǎng)橋、端口,就可將該P(yáng)C機(jī)配置為一臺(tái)OpenFlow交換機(jī)。OpenSwitch也支持查詢(xún)交換機(jī)狀態(tài)和操作流表。
2.4EstiNet
EstiNet[15]是臺(tái)灣思銳科技推出的網(wǎng)絡(luò)仿真器,可用于網(wǎng)絡(luò)規(guī)劃、測(cè)試、協(xié)議開(kāi)發(fā)和應(yīng)用性能預(yù)測(cè)。它運(yùn)行在Linux操作系統(tǒng)中,直接采用LinuxTCP/IP協(xié)議棧來(lái)產(chǎn)生高可信度的仿真結(jié)果,支持基于UNIX的應(yīng)用程序和網(wǎng)絡(luò)監(jiān)控軟件。
EstiNet的最新版本9.0提供了對(duì)OpenFlow網(wǎng)絡(luò)仿真的支持,便于開(kāi)展軟件定義網(wǎng)絡(luò)的相關(guān)研究。它可以模擬幾千個(gè)1.0.0或1.3.4版本的OpenFlow交換機(jī)。EstiNet允許OpenDaylight、NOX、POX、Floodlight等常用SDN控制器直接運(yùn)行在EstiNet中的控制器節(jié)點(diǎn)之上,并且支持研究人員自己開(kāi)發(fā)的控制器應(yīng)用。它能準(zhǔn)確、快速地模擬控制器應(yīng)用和OpenFlow交換機(jī)之間的交互,以及交換機(jī)之間鏈路的特性,例如帶寬、鏈路延遲、鏈路故障時(shí)間。
3基于Mininet的仿真實(shí)例
在介紹了幾種主要的仿真軟件后,這里將基于專(zhuān)業(yè)的SDN仿真軟件Mininet,介紹搭建SDN仿真環(huán)境的過(guò)程,并實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)邏輯隔離策略。實(shí)驗(yàn)場(chǎng)景設(shè)置為:云平臺(tái)服務(wù)器上搭建有不同的虛擬服務(wù)器,分屬于不同的用戶(hù)。用戶(hù)遠(yuǎn)程登錄自己的虛擬服務(wù)器之后,安全上不允許直接訪問(wèn)同一局域網(wǎng)的其他虛擬服務(wù)器。
3.1實(shí)驗(yàn)方案
方案采用圖2所示拓?fù)?,包含一個(gè)控制器Controller,一臺(tái)主機(jī)Hostl,兩臺(tái)服務(wù)器Serverl、Server2,兩臺(tái)交換機(jī)Switchl、Switch2。通過(guò)控制器對(duì)交換機(jī)的控制,實(shí)現(xiàn)主機(jī)Hostl可以分別訪問(wèn)服務(wù)器Serverl、Server2,但是Serverl和Server2不能互相訪問(wèn),以此實(shí)現(xiàn)邏輯隔離。
3.2環(huán)境搭建
仿真實(shí)驗(yàn)使用開(kāi)源的Floodlight項(xiàng)目作為控制器,網(wǎng)絡(luò)拓?fù)湓贛ininet里實(shí)現(xiàn)。具體步驟如下:
(1)啟動(dòng)控制器Floodlight
.java-jarfloodlight.jar
(2)用Python編寫(xiě)自定義拓?fù)?h2s.py;
(3)通過(guò)Xshell工具登錄到Mininet,調(diào)用拓?fù)湮募⑦B接至控制器,指令如下:
sudomn--custom~Mininet/custom/3h2s.py--topomytopo--controller=remote,ip=192.168.1.106,port=6633
(4)xterm指令打開(kāi)服務(wù)器節(jié)點(diǎn)終端,搭建web服務(wù)器。
Python-mSimpleHTTPServer80
各設(shè)備的主要參數(shù)見(jiàn)表1。
設(shè)備信息
3.3測(cè)試步驟
網(wǎng)絡(luò)中測(cè)試連通性的最常用方法就是ping測(cè)試。本實(shí)驗(yàn)在節(jié)點(diǎn)Serverl和Server2節(jié)點(diǎn)上搭建了web服務(wù)器,除了ping測(cè)試外,也可通過(guò)訪問(wèn)服務(wù)器操作和服務(wù)器端的訪問(wèn)日志來(lái)驗(yàn)證連通性。邏輯隔離策略以流條目的形式,通過(guò)控制器下發(fā)至對(duì)應(yīng)交換機(jī)。在下發(fā)前后,對(duì)設(shè)備間的連通性進(jìn)行測(cè)試,以驗(yàn)證邏輯隔離策略是否有效。
3.3.1初始連通性測(cè)試
Floodlight控制器中有一個(gè)自動(dòng)轉(zhuǎn)發(fā)模塊Forwarding,能夠自動(dòng)為數(shù)據(jù)包尋找可用的最短路徑,該模塊默認(rèn)是開(kāi)啟狀態(tài)。在此狀態(tài)下,若各交換機(jī)中無(wú)流條目限制,各終端節(jié)點(diǎn)能互相訪問(wèn)。
首先進(jìn)行pingall測(cè)試。然后測(cè)試各終端對(duì)服務(wù)器的訪問(wèn)情況。圖2為Serverl訪問(wèn)Server2的示例。
3.3.2下發(fā)流條目
向靠近兩個(gè)服務(wù)器的交換機(jī)Switch2下發(fā)兩條流條目(圖4),限制兩個(gè)服務(wù)器間的互相訪問(wèn)。下發(fā)流條目后,再次進(jìn)行pingall測(cè)試和訪問(wèn)服務(wù)器測(cè)試。
3.4結(jié)果分析
流條目下發(fā)前后,pingall測(cè)試結(jié)果見(jiàn)圖5,服務(wù)器的訪問(wèn)情況統(tǒng)計(jì)見(jiàn)表2。
在默認(rèn)流表的情況下,pingall測(cè)試無(wú)丟包,主機(jī)Hostl可以訪問(wèn)兩個(gè)服務(wù)器,且服務(wù)器間也可以正?;ハ嘣L問(wèn)。
修改流表,對(duì)Serverl訪問(wèn)Server2的流量,Action里output與input端口設(shè)置為一致,這樣便阻斷了Serverl與Server2的連接。進(jìn)行該操作后,主機(jī)Hostl仍能正常訪問(wèn)兩個(gè)服務(wù)器。但兩個(gè)服務(wù)器不能互訪,實(shí)現(xiàn)了邏輯上的隔離,實(shí)驗(yàn)達(dá)到預(yù)期效果。
4總結(jié)
基于OpenFlow的SDN技術(shù)已經(jīng)越來(lái)越得到學(xué)術(shù)界和工業(yè)界的認(rèn)可,各機(jī)構(gòu)對(duì)其研究力度也在不斷增加。文章介紹了常用的幾種SDN仿真軟件,并以Mininet為例描述了SDN仿真環(huán)境的搭建過(guò)程,通過(guò)簡(jiǎn)單的邏輯隔離策略驗(yàn)證了所搭建平臺(tái)的有效性。下一階段,我們將進(jìn)一步拓展該平臺(tái),開(kāi)展流量監(jiān)控、訪存控制等實(shí)驗(yàn)。
參考文獻(xiàn)
[1]MckeownN.Keynotetalk:Software-definednetworking[J].IEEEInfocom,2009,51(2):1一
[2]McKeownN,AndersonT,BalakrishnanH,etal.OpenFlow:enablinginnovationincampusnetworks[J].ACMSIGCOMMComputerCommunicationReview,2008,38(2):69-74.
[3]LaraA,KolasaniA,RamamurthyB.SimplifyingnetworkmanagementusingSoftwareDefinedNetworkingandOpenFlow[C]./Pro-ceedingsofthe2012AdvancedNetworksandTelecommunicationsSystems(ANTS'12),Bangalore,India,2012:24-29.
[4]袁曉,蔡志平,劉書(shū)昊,等.大規(guī)模網(wǎng)絡(luò)仿真軟件及其仿真技術(shù)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(7):9-12.
[5]郝寧霆,忻向軍.變速率OFDM光傳輸系統(tǒng)的仿真實(shí)現(xiàn)[J].新型工業(yè)化,2012,2(8):1-6.
[6]曹永盛,吳亞楠,趙安臻,等.16QAM/ASK正交調(diào)制光標(biāo)記交換系統(tǒng)的設(shè)計(jì)與性能仿真[J].新型工業(yè)化,2014,4(2):45-50.
[7]羅星星,蒲保興,趙穎,等.隨機(jī)網(wǎng)絡(luò)編碼數(shù)據(jù)傳輸?shù)姆抡鎸?shí)現(xiàn)[J].軟件,2014,35(8):32-37.
[8]劉維康,雷磊,周進(jìn)華,等.WLAN-Mesh網(wǎng)絡(luò)中MAC協(xié)議公平性問(wèn)題的半實(shí)物仿真與分析[J]新型工業(yè)化,2012,2(4):16-22.
[9]Mininet.[01].[2015-06-10].http://mininet.org/.
[10]NS-3.[01].[2015-06-10].http://www.nsnam.org/.
[11]OpenvSwitch.[01].[2015-06-10].http://openvswitch.org/.
[12]Esttnet.[01].[2015-06-10].http://www.estinet.com/.
[13]Opennetworkingfoundation[01].[2015-06-10].https://www.opennetworking.org/sdn-resources/sdn-definition/.
[14]龐濤,魏含寧,武娟,等.SDN北向接口發(fā)展現(xiàn)狀與趨勢(shì)研究[J].互聯(lián)網(wǎng)天地,2014,9(9):50-56.
[15]WangSY.ComparisonofSDNOpenFlownetworksimulatorandemulators:EstiNetvs.Mininet[C]//Proceedingsofthe2014IEEESymposiumonComputersandCommunications(ISCC'14),Madeira,Portugal,2014:1-6.