mininet簡(jiǎn)單的自定義拓?fù)鋉第1頁(yè)
mininet簡(jiǎn)單的自定義拓?fù)鋉第2頁(yè)
mininet簡(jiǎn)單的自定義拓?fù)鋉第3頁(yè)
mininet簡(jiǎn)單的自定義拓?fù)鋉第4頁(yè)
mininet簡(jiǎn)單的自定義拓?fù)鋉第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、- CustomTopo.pyCoursera:- SoftwareDefinedNetworking(SDN)course- -Module3ProgrammingAssignmentProfessor:NickFeamsterTeachingAssistant:MuhammadShahbazfrommininet.topoimportTopoimportMininetfrommininet.nodeimportCPULimitedHostfrommininet.linkimportTCLinkfrommininet.utilimportirange,dumpNodeConnectionsf

2、rommininet.logimportsetLogLevelclassCustomTopo(Topo):SimpleDataCenterTopologylinkopts-(1:c1,2:aggregation,3:edge)parametersfanout-numberofchildswitchperparentswitchdef_init_(self,linkopts1,linkopts2,linkopts3,fanout=2,*opts):# InitializetopologyanddefaultoptionsTopo._init_(self,*opts)# Addyourlogich

3、ere.self.fanout=fanoutcore=self.addSwitch(c1)foriinirange(1,fanout):aggregation=self.addSwitch(a%s%i)self.addLink(core,aggregation,*linkopts1)forjinirange(1,fanout):edge=self.addSwitch(e%s%(fanout*(i-1)+j)self.addLink(aggregation,edge,*linkopts2)forkinirange(1,fanout):host=self.addHost(h%s%(fanout*(

4、fanout*(i-1)+j-1)+k)self.addLink(edge,host,*linkopts3)topos=custom:(lambda:CustomTopo()defsimpleTest():Createandtestasimplenetworklinkoptsl=dict(bw=10,delay=3ms,use_htb=True)linkopts2=dict(bw=8,delay=4ms,10ss=1,max_queue_size=900,)1inkopts3=dict(bw=6,delay=5ms,10ss=1,max_queue_size=800)topo=CustomTo

5、po(linkopts1,linkopts2,linkopts3,fanout=2)net=Mininet(topo,host=CPULimitedHost,link=TCLink)net.start()printDumpinghostconnectionsdumpNodeConnections(net.hosts)printTestingnetworkconnectivitynet.pingAll()net.stop()真實(shí)的SDN網(wǎng)絡(luò)需要很多OpenFlow設(shè)備包括控制器、交換機(jī)、功能虛擬化等一系列設(shè)備共同依賴來(lái)搭建并應(yīng)用,但因條件有限,每一位實(shí)驗(yàn)者不可能有這樣真實(shí)的環(huán)境來(lái)驗(yàn)證或者實(shí)驗(yàn),此

6、文將主要介紹在沒(méi)有OpenFlow硬件設(shè)備下模擬搭建通過(guò)Mininet基于不同數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)?。使用Mininet設(shè)計(jì)模擬不同網(wǎng)絡(luò)數(shù)據(jù)中心拓?fù)?,可以用?lái)分析網(wǎng)絡(luò)的總流量,而且除此之外,還可以通過(guò)負(fù)載均衡策略來(lái)保證數(shù)據(jù)中心的可用性。不同數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)涔芾碓O(shè)計(jì),主要是基于胖樹(shù)(Fat-Tree)拓?fù)鋭?chuàng)建網(wǎng)絡(luò),胖樹(shù)網(wǎng)絡(luò)的好處是具有一個(gè)多層次的樹(shù)狀拓?fù)浣Y(jié)構(gòu)固有的容錯(cuò)能力。1.1 Mininet實(shí)例模擬1.1 實(shí)驗(yàn)?zāi)康?,掌握多數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)涞臉?gòu)建;1.2 握多數(shù)據(jù)中心數(shù)據(jù)交換過(guò)程。1.3 實(shí)例介紹基于樹(shù)型拓?fù)漕悇?chuàng)建彈性的樹(shù)狀網(wǎng)絡(luò)能夠展現(xiàn)多層次的樹(shù)型拓?fù)浣Y(jié)構(gòu)固有的容錯(cuò)能力。假設(shè)每層具有不同的級(jí)別,

7、具體分為:核心層、匯聚層、邊緣層,每一層都只含有交換機(jī)。因此,一個(gè)簡(jiǎn)單的交換機(jī)/主機(jī)層網(wǎng)絡(luò)可以由核心交換機(jī)、匯聚交換機(jī)、邊緣交換機(jī)以及主機(jī)組成,也可以根據(jù)扇出大小來(lái)配置不同的數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)洹T谠撏負(fù)渲?,一個(gè)或多個(gè)核心交換機(jī)構(gòu)成根;匯聚交換機(jī)的一層或多層位于樹(shù)的中間;終端主機(jī)連接至頂端交換機(jī),形成了樹(shù)的葉子(邊緣)。當(dāng)拓?fù)鋭?chuàng)建完成后,本實(shí)例的主要目的是實(shí)現(xiàn)交換機(jī)下掛主機(jī)間的連通。實(shí)現(xiàn)過(guò)程如下:主機(jī)間發(fā)送消息上報(bào)給交換機(jī),交換機(jī)對(duì)收到的報(bào)文信息進(jìn)行分析判斷,如果交換機(jī)中存在此消息相對(duì)應(yīng)的流表,則交換機(jī)直接下發(fā)流表,將報(bào)文消息轉(zhuǎn)發(fā)給目的主機(jī);如果交換機(jī)中沒(méi)有消息相對(duì)應(yīng)的流表,交換機(jī)將此發(fā)送消息給控

8、制器,控制器根net據(jù)消息分析關(guān)鍵字段內(nèi)容,進(jìn)行流表下發(fā)決策,交換機(jī)再將消息發(fā)送給目的主機(jī),實(shí)現(xiàn)主機(jī)間達(dá)到通信的目的。1.4 實(shí)例模擬拓?fù)涫褂肕ininet設(shè)計(jì)模擬一個(gè)多數(shù)據(jù)中心網(wǎng)絡(luò)。用Mininet模擬仿真測(cè)試,主要是用Mininet中的OpenFlow交換機(jī)和自己提供的POX控制器進(jìn)行測(cè)試,幫助在真實(shí)數(shù)據(jù)中心和仿真測(cè)試床數(shù)據(jù)中心提供有用的信息評(píng)估不同數(shù)據(jù)中心的網(wǎng)絡(luò)性能應(yīng)用性能。一個(gè)簡(jiǎn)單的基于兩個(gè)數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)洌鐖D所示:III;同POXiVMl:mininet2mtrc-圖基于兩個(gè)數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)渚唧w主要測(cè)試及驗(yàn)證交換機(jī)下掛主機(jī)間的連通性以及主機(jī)間通信收發(fā)數(shù)據(jù)包的速度。Mininet

9、中自帶的iperf性能測(cè)試工具可以測(cè)試不同主機(jī)間通信的性能帶寬質(zhì)量,在此例中,主要是對(duì)相同邊緣交換機(jī)下的主機(jī)間、相同聚合交換機(jī)下不同邊緣交換機(jī)間、相同核心交換機(jī)不同聚合交換機(jī)下的主機(jī)間進(jìn)行測(cè)試。1.5 實(shí)例代碼在此實(shí)驗(yàn)中,使用Mininet通過(guò)python自定義拓?fù)渚帉?xiě)腳本創(chuàng)建兩個(gè)數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)?,且使用已?zhǔn)備的POX控制器(IP地址為192.168.5.104)進(jìn)行管控。應(yīng)用Mininet創(chuàng)建兩個(gè)數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)湓O(shè)計(jì)的腳本代碼如下:# FatTree.pyCustomtopologyexampleAddingthetoposdictwithakey/valuepairtogenerate

10、ournewlydefinedtopologyenablesonetopassin-topo=mytopofromthecommandline.frommininet.topoimportTopoclassMyTopo(Topo):Simpletopologyexample.def_init_(self):Createcustomtopo.# InitializetopologyTopo._init_(self)1.6 =2L2=L1*2L3=L2c=a=e=# addcoreovsforiinrange(L1):sw=self.addSwitch(c.format(i+1)c.append(

11、sw)# addaggregationovsforiinrange(L2):sw=self.addSwitch(a.format(L1+i+1)a.append(sw)# addedgeovsforiinrange(L3):sw=self.addSwitch(e.format(L1+L2+i+1)e.append(sw)# addlinksbetweencoreandaggregationovsforiinrange(L1):sw1=ciforsw2inai/2:L1/2:# self.addLink(sw2,sw1,bw=10,delay=5ms,10ss=10,max_queue_size

12、=1000,use_htb=True)self.addLink(sw2,sw1)# addlinksbetweenaggregationandedgeovsforiinrange(0,L2,2):forsw1inai:i+2:forsw2inei:i+2:# se1f.addLink(sw2,sw1,bw=10,de1ay=5ms,1oss=10,max_queue_size=1000,use_htb=True)se1f.addLink(sw2,sw1)# addhostsandits1inkswithedgeovscount=1forsw1ine:foriinrange(2):host=se

13、1f.addHost(h.format(count)se1f.addLink(sw1,host)count+=1topos=mytopo:(1ambda:MyTopo()在代碼中可以通過(guò)L1變量擴(kuò)來(lái)改變核心交換機(jī)的數(shù)量,繼而改變整個(gè)數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)?,使之交換機(jī)數(shù)量改變后,邊緣交換機(jī)數(shù)量也會(huì)改變,主機(jī)個(gè)數(shù)也隨之改變,應(yīng)用Mininet的易用可擴(kuò)展性,生成多個(gè)不同數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)?,可以?shí)現(xiàn)更好更高效率的全局統(tǒng)配。拓?fù)鋭?chuàng)建代碼完成后,可以在Mininet命令行操作界面通過(guò)ping操作和iperf命令進(jìn)一步驗(yàn)證主機(jī)間的連通性以及性能帶寬分析,也可以通過(guò)編寫(xiě)測(cè)試腳本應(yīng)用Mininet的操作命令進(jìn)行全

14、自動(dòng)化測(cè)試連通性及性能帶寬質(zhì)量,代碼如下:defsimpleTest():Createandtestasimplenetworktopo=MyTopo()net=Mininet(topo,controller=RemoteController,host=CPULimitedHost,link=TCLink)net.addController(c0,controller=RemoteController,ip=192.168.5.104,port=6633)net.start()printDumpinghostconnectionsdumpNodeConnections(net.hosts)pr

15、intTestingnetworkconnectivitynet.pingall()printTestingbandwidthbetweenhlwithh2,h3,h5hi,h2=net.get(hi,h2)net.iperf(hi,h2)hi,h3=net.get(hi,h3)net.iperf(hi,h3)hi,h5=net.get(hi,h5)net.iperf(hi,h5)net.stop()if_name_=_main_:# TellmininettoprintusefulinformationsetLogLevel(info)simpleTest()self.addLink(Swi

16、tchi,Switch2)通過(guò)測(cè)試腳本,驗(yàn)證所有主機(jī)的連通性測(cè)試以及各主機(jī)間的帶寬性能測(cè)試。使用iperf指定特定兩個(gè)主機(jī)進(jìn)行測(cè)試并顯示測(cè)試結(jié)果。i.3實(shí)驗(yàn)結(jié)果本次實(shí)驗(yàn)中應(yīng)用Mininet模擬不同數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)?,如上述拓?fù)渌荆厦娴臏y(cè)試腳本外,也可以通過(guò)Mininet命令控制臺(tái)進(jìn)行手動(dòng)輸入命令測(cè)試驗(yàn)證或通過(guò)實(shí)例開(kāi)發(fā)中的測(cè)試腳本進(jìn)行主機(jī)間的連通性及性能帶寬進(jìn)行驗(yàn)證,測(cè)試結(jié)果如下:通過(guò)Mininet手動(dòng)操作命令創(chuàng)建拓?fù)洌簊udomn-custom/mininet/custom/FatTree.py-topomytopo-controller=remote,ip=i92.i68.5.i04,port=66331 .同一交換機(jī)內(nèi)部的主機(jī)間連通性及通信帶寬測(cè)試:hi和h2之間進(jìn)行ping操作,經(jīng)驗(yàn)證主機(jī)間能夠ping通。當(dāng)操作iperfhih2命令時(shí),hi和h2的帶寬性能測(cè)試結(jié)果為:測(cè)試TCP帶寬發(fā)送數(shù)據(jù)的速率為i02Mbit/s,接收數(shù)據(jù)的速率為i02Mbit/s。2 .相同匯聚交換機(jī)下不同機(jī)架的主機(jī)間測(cè)試:hi和h3之間進(jìn)行ping操作,經(jīng)驗(yàn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論