黃家瑋, 韓 瑞, 鐘 萍, 王建新
(中南大學(xué) 信息科學(xué)與工程學(xué)院, 湖南 長(zhǎng)沙 410083)
基于Mininet的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)方案
黃家瑋, 韓 瑞, 鐘 萍, 王建新
(中南大學(xué) 信息科學(xué)與工程學(xué)院, 湖南 長(zhǎng)沙 410083)
為保證計(jì)算機(jī)網(wǎng)絡(luò)課程實(shí)驗(yàn)的真實(shí)性、靈活度和可擴(kuò)展性,以Mininet為基礎(chǔ)架構(gòu),設(shè)計(jì)和實(shí)現(xiàn)了基于真實(shí)操作系統(tǒng)內(nèi)核的輕量級(jí)虛擬實(shí)驗(yàn)平臺(tái)。通過(guò)路由轉(zhuǎn)發(fā)和聯(lián)通測(cè)試的典型網(wǎng)絡(luò)實(shí)驗(yàn),展示了實(shí)驗(yàn)平臺(tái)的網(wǎng)絡(luò)拓?fù)渑渲?、路由配置和用戶交互流程。該?shí)驗(yàn)平臺(tái)能更好地幫助學(xué)生掌握真實(shí)計(jì)算機(jī)網(wǎng)絡(luò)的算法、協(xié)議和實(shí)踐操作。
計(jì)算機(jī)網(wǎng)絡(luò); 虛擬化; Mininet; 實(shí)驗(yàn)教學(xué)
計(jì)算機(jī)網(wǎng)絡(luò)是計(jì)算機(jī)科學(xué)、通信工程和信息安全等專(zhuān)業(yè)本科和研究生教育的核心課程,具有理論范圍廣、實(shí)踐操作多、知識(shí)更新快的特點(diǎn)。在計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)中特別注重理論教學(xué)和實(shí)踐教學(xué)相結(jié)合,通過(guò)不同的網(wǎng)絡(luò)實(shí)驗(yàn)來(lái)幫助學(xué)生理解計(jì)算機(jī)網(wǎng)絡(luò)的基本概念和算法協(xié)議原理,掌握計(jì)算機(jī)網(wǎng)絡(luò)通信和組網(wǎng)的相關(guān)操作[1-2]。
為了幫助學(xué)生掌握計(jì)算機(jī)網(wǎng)絡(luò)的工作原理,目前的計(jì)算機(jī)網(wǎng)絡(luò)課程通常在網(wǎng)絡(luò)操作系統(tǒng)和網(wǎng)絡(luò)設(shè)備上進(jìn)行命令或編程操作。但由于計(jì)算機(jī)網(wǎng)絡(luò)的分布式特性,需要利用多臺(tái)計(jì)算機(jī)和交換設(shè)備搭建一定規(guī)模的網(wǎng)絡(luò)環(huán)境才能開(kāi)展網(wǎng)絡(luò)實(shí)驗(yàn)。由于受經(jīng)費(fèi)和場(chǎng)地的限制,很多高校缺乏大規(guī)模的專(zhuān)用計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)設(shè)備,開(kāi)展真實(shí)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)比較困難,很多時(shí)候只能利用一些低端網(wǎng)絡(luò)設(shè)備、采用多人一組的方式進(jìn)行實(shí)驗(yàn)教學(xué)。這使得教師難以在有限時(shí)間內(nèi)安排實(shí)驗(yàn)內(nèi)容,學(xué)生難以深入進(jìn)行實(shí)踐操作,最終影響了計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)的效果。
筆者利用Mininet[3]網(wǎng)絡(luò)模擬軟件,搭建了基于真實(shí)操作系統(tǒng)內(nèi)核的輕量級(jí)虛擬實(shí)驗(yàn)平臺(tái),提供了貼近真實(shí)、配置靈活、擴(kuò)展性強(qiáng)、價(jià)格低廉、具可重復(fù)性的網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境。學(xué)生可以從網(wǎng)絡(luò)管理員和操作用戶的角度來(lái)深入理解計(jì)算機(jī)網(wǎng)絡(luò)算法和協(xié)議,更方便地進(jìn)行網(wǎng)絡(luò)操作系統(tǒng)和網(wǎng)絡(luò)設(shè)備的操作和軟件開(kāi)發(fā)。
目前在計(jì)算機(jī)網(wǎng)絡(luò)課程教學(xué)中,除演示性、驗(yàn)證性的實(shí)驗(yàn)教學(xué)以外,一般采用網(wǎng)絡(luò)仿真(simulation)、實(shí)驗(yàn)床(testbed)和模擬(emulation)3種方法進(jìn)行網(wǎng)絡(luò)實(shí)驗(yàn)。其中,網(wǎng)絡(luò)仿真基于數(shù)學(xué)模型模擬真實(shí)網(wǎng)絡(luò)的動(dòng)態(tài)行為,可以脫離真實(shí)網(wǎng)絡(luò)獨(dú)立運(yùn)行。
典型的網(wǎng)絡(luò)仿真平臺(tái)包括:(1)Packet Tracer[4],它是思科公司開(kāi)發(fā)的輔助學(xué)習(xí)軟件,通過(guò)可視化的圖形交互界面仿真了終端、路由器、交換機(jī)、集線器和連接線等各種計(jì)算機(jī)和網(wǎng)絡(luò)設(shè)備,提供了多種協(xié)議供用戶直接調(diào)用;(2)OPENT[5],它采用開(kāi)源架構(gòu),提供了各種網(wǎng)絡(luò)模型庫(kù),幫助用戶利用圖形界面操作,快速搭建各種網(wǎng)絡(luò)場(chǎng)景,調(diào)用已有的網(wǎng)絡(luò)協(xié)議和算法,并且支持用戶改進(jìn)或者重新設(shè)計(jì)網(wǎng)絡(luò)協(xié)議和算法;(3)NS[6],它是應(yīng)用最為廣泛的開(kāi)源仿真軟件平臺(tái),采用面向?qū)ο蟮募軜?gòu),支持大規(guī)模、多種協(xié)議的網(wǎng)絡(luò)仿真。
雖然以上網(wǎng)絡(luò)仿真軟件為用戶提供了較好的教學(xué)和科研實(shí)驗(yàn)平臺(tái),但也有以下問(wèn)題:
(1) 由于網(wǎng)絡(luò)仿真軟件具有各自不同的用戶界面和網(wǎng)絡(luò)抽象程度,用戶(特別是初學(xué)者)在理解和掌握網(wǎng)絡(luò)知識(shí)過(guò)程中面臨一定的困難;
(2) 用戶所操作的并不是真實(shí)的網(wǎng)絡(luò)操作系統(tǒng)或網(wǎng)絡(luò)設(shè)備交互系統(tǒng)代碼,與真實(shí)體驗(yàn)并不盡相同;
(3) 當(dāng)用戶需要進(jìn)行一些深度操作(如修改真實(shí)操作系統(tǒng)內(nèi)核)的時(shí)候,這些系統(tǒng)變得不再適用;
(4) 網(wǎng)絡(luò)仿真軟件在設(shè)計(jì)時(shí)更關(guān)注于某些特定的網(wǎng)絡(luò)特性,而忽視了其他眾多的網(wǎng)絡(luò)影響因素,這使得網(wǎng)絡(luò)仿真軟件和真實(shí)網(wǎng)絡(luò)的運(yùn)行結(jié)果不一定相符。
網(wǎng)絡(luò)實(shí)驗(yàn)床是利用大規(guī)模的分布式計(jì)算機(jī)集群,基于虛擬化技術(shù)來(lái)模擬各種真實(shí)網(wǎng)絡(luò)設(shè)備和計(jì)算機(jī)主機(jī)的實(shí)驗(yàn)平臺(tái)。典型的實(shí)驗(yàn)床有Planetlab[7]和ONL[8],其中Planetlab基于Internet上的覆蓋網(wǎng)架構(gòu),利用分布在全球的1 100多臺(tái)主機(jī)組建了大規(guī)模的網(wǎng)絡(luò)實(shí)驗(yàn)床。網(wǎng)絡(luò)實(shí)驗(yàn)床的優(yōu)點(diǎn)在于可以直接操作網(wǎng)絡(luò)系統(tǒng),并能動(dòng)態(tài)重現(xiàn)真實(shí)的網(wǎng)絡(luò)流量。但由于過(guò)高的建設(shè)和維護(hù)費(fèi)用,網(wǎng)絡(luò)實(shí)驗(yàn)床通常只能被預(yù)約使用,而且在網(wǎng)絡(luò)拓?fù)浜蛯?shí)驗(yàn)場(chǎng)景設(shè)置上的靈活性也不強(qiáng),并不適用于高校網(wǎng)絡(luò)課程實(shí)驗(yàn)。
相對(duì)于以上兩類(lèi)實(shí)驗(yàn)方法,vEmulab[9]、Mininet等網(wǎng)絡(luò)模擬平臺(tái)兼顧了網(wǎng)絡(luò)仿真和網(wǎng)絡(luò)實(shí)驗(yàn)床的優(yōu)點(diǎn)。網(wǎng)絡(luò)模擬和網(wǎng)絡(luò)仿真軟件一樣,能靈活設(shè)置網(wǎng)絡(luò)拓?fù)?并利用虛擬機(jī)技術(shù)來(lái)降低部署成本,通過(guò)鏡像文件架構(gòu)對(duì)相關(guān)實(shí)驗(yàn)代碼、配置和數(shù)據(jù)實(shí)施快速遷移。和網(wǎng)絡(luò)實(shí)驗(yàn)床相似,網(wǎng)絡(luò)模擬可以對(duì)操作系統(tǒng)、網(wǎng)絡(luò)設(shè)備、甚至是系統(tǒng)內(nèi)核的真實(shí)代碼進(jìn)行操作。網(wǎng)絡(luò)模擬平臺(tái)占用資源很少,用一臺(tái)服務(wù)器甚至筆記本電腦就可以便捷地開(kāi)展大規(guī)模網(wǎng)絡(luò)實(shí)驗(yàn)?;谶@些特性,筆者應(yīng)用Mininet網(wǎng)絡(luò)模擬平臺(tái)來(lái)設(shè)計(jì)計(jì)算機(jī)網(wǎng)絡(luò)課程實(shí)驗(yàn)教學(xué)方法。
Mininet是Stanford大學(xué)Nick McKeown的研究組研發(fā)的一個(gè)基于Linux Container架構(gòu)的網(wǎng)絡(luò)模擬平臺(tái)。由于采用輕量級(jí)的虛擬化技術(shù),Mininet可以在一臺(tái)電腦上模擬出包含數(shù)百臺(tái)計(jì)算機(jī)終端和各種網(wǎng)絡(luò)設(shè)備的復(fù)雜大規(guī)模計(jì)算機(jī)網(wǎng)絡(luò)。Mininet最初是為軟件定義網(wǎng)絡(luò)[10]的測(cè)試而開(kāi)發(fā),因此能支持OpenFlow[11]、Open vSwitch[12]等軟件定義網(wǎng)絡(luò)部件。Mininet與Linux完全兼容,具有很好的硬件移植性,可以快速部署到真實(shí)硬件環(huán)境中。
Mininet為上層實(shí)驗(yàn)提供了一系列接口,這些接口文件用python編寫(xiě),并編譯為二進(jìn)制模塊pyc,以方便導(dǎo)入。常用的功能模塊有l(wèi)ink、node、net和topo,分別負(fù)責(zé)創(chuàng)建鏈路、節(jié)點(diǎn)、網(wǎng)絡(luò)控制和拓?fù)淇蚣苌伞3S玫妮o助模塊有util、cli和log,分別負(fù)責(zé)控制運(yùn)行模式、用戶命令行交互和日志記錄。
以下通過(guò)“路由轉(zhuǎn)發(fā)和聯(lián)通測(cè)試”實(shí)驗(yàn)來(lái)闡述基于Mininet的計(jì)算機(jī)網(wǎng)絡(luò)課程實(shí)驗(yàn)平臺(tái)的實(shí)驗(yàn)流程。實(shí)驗(yàn)內(nèi)容主要包括配置路由以實(shí)現(xiàn)主機(jī)間的通信,同時(shí)測(cè)試端到端傳輸性能。本實(shí)驗(yàn)網(wǎng)絡(luò)環(huán)境是一個(gè)小型網(wǎng)絡(luò)(見(jiàn)圖1),1臺(tái)客戶機(jī)h0和2臺(tái)服務(wù)器h1、h2分處3個(gè)不同網(wǎng)段,通過(guò)路由器r0相連。實(shí)驗(yàn)?zāi)繕?biāo)是幫助學(xué)生掌握網(wǎng)絡(luò)拓?fù)涞膭?chuàng)建過(guò)程、不同網(wǎng)段間路由配置方法和網(wǎng)絡(luò)連通性的測(cè)試工具,理解往返延時(shí)的概念。
圖1 實(shí)驗(yàn)拓?fù)鋱D
2.1 創(chuàng)建拓?fù)?/p>
Mininet實(shí)驗(yàn)平臺(tái)使用python腳本完成實(shí)驗(yàn)配置,在導(dǎo)入常見(jiàn)的功能和輔助模塊后,創(chuàng)建網(wǎng)絡(luò)拓?fù)?。網(wǎng)絡(luò)拓?fù)涠x為SimpleTopo類(lèi),創(chuàng)建主機(jī)h0和鏈路h0-r0代碼分別為h0 = self.add_host(′h0′)和self.add_link(h0,r0,port1=0,port2=0,**lconfig_client)。其中l(wèi)config_client可以定義為鏈路帶寬、丟包率和延時(shí)等屬性,這里通過(guò)lconfig_client = {′delay′:′5ms′}設(shè)定h0-r0鏈路延時(shí)為5 ms。同時(shí),h1-r0、h2-r0鏈路延時(shí)都設(shè)為3 ms。
2.2 路由配置
路由器r0的路由配置函數(shù)SetIpRt()腳本如下:
defSetIpRt(): r0intf0 = r0.defaultIntf() #調(diào)用接口獲得主機(jī)端口對(duì)象 r0intf0.setIP(′10.0.0.100′) #向mininet通告IP地址 r0intf1 = r0.intfs[1] r0intf1.setIP(′100.0.0.1′) r0intf2 = r0.intfs[2] r0intf2.setIP(′200.0.0.2′) r0.cmd(′ifconfig r0-eth0 10.0.0.100′) #設(shè)定IP地址 r0.cmd(′ifconfig r0-eth1 100.0.0.1′) r0.cmd(′ifconfig r0-eth2 200.0.0.2′) r0.cmd(′echo 1 > /proc/sys/net/ipv4/ip_forward′) #開(kāi)啟內(nèi)核的轉(zhuǎn)發(fā)功能 h0.cmd(′route add -net 100.0.0.0/24gw 10.0.0.100′) #配置路由表 h0.cmd(′route add -net 200.0.0.0/24gw 10.0.0.100′) h1.cmd(′route add -net 10.0.0.0/24gw 100.0.0.1′) h2.cmd(′route add -net 10.0.0.0/24gw 200.0.0.2′)
首先通過(guò)調(diào)用接口獲得端口對(duì)象并設(shè)定IP,然后進(jìn)行路由表配置。Mininet為每個(gè)主機(jī)虛擬一個(gè)內(nèi)核協(xié)議棧,因此Linux常用命令如ifconfig都能通過(guò)cmd()的形式調(diào)用。由于使用了userswitch組件充當(dāng)交換機(jī),路由轉(zhuǎn)發(fā)工作由系統(tǒng)內(nèi)核承擔(dān),因此需要手動(dòng)開(kāi)啟內(nèi)核的轉(zhuǎn)發(fā)功能。最后通過(guò)cmd()調(diào)用route命令配置路由表。主機(jī)h0路由到100.0.0.0/24和200.0.0.0/24網(wǎng)段經(jīng)過(guò)r0的端口0,而h1和h2需要設(shè)置反向路由,分別經(jīng)由r0的端口1和2轉(zhuǎn)發(fā)。
2.3 實(shí)驗(yàn)主流程
實(shí)驗(yàn)步驟如下:
def main(): topo = SimpleTopo() #創(chuàng)建拓?fù)?link = custom(TCLink) #指定鏈路類(lèi)型 net =Mininet(topo=topo,link=link,switch=Switch) #指定拓?fù)?、鏈路和交換機(jī) net.start() #網(wǎng)絡(luò)開(kāi)始工作 global h1,h2,r0,h0 h1,h2,r0,h0 =net.get(′h1′,′h2′,′r0′,′h0′) #獲取全局變量 SetIpRt() #設(shè)定路由 CLI(net) #開(kāi)啟命令行交互 net.stop() #網(wǎng)絡(luò)停止工作 if __name__ == ′__main__′: main() #設(shè)置程序入口函數(shù)
實(shí)驗(yàn)中首先創(chuàng)建SimpleTopo類(lèi)對(duì)象,然后指定拓?fù)洹㈡溌泛徒粨Q機(jī)類(lèi)型,創(chuàng)建網(wǎng)絡(luò)。其中,CLI()開(kāi)啟命令行交互,提供用戶進(jìn)行操作系統(tǒng)和網(wǎng)絡(luò)操作的接口。
2.4 用戶交互
在啟動(dòng)命令行交互之后,用戶可以進(jìn)行各種操作。本實(shí)驗(yàn)中用ping測(cè)試各個(gè)主機(jī)之間的連通性和傳輸延時(shí),以檢驗(yàn)路由配置是否正確。測(cè)試結(jié)果顯示如下:
mininet> h0 ping h1 PING 100.0.0.10(100.0.0.10) 56(84) bytes of data. 64 bytes from 100.0.0.10:icmp_req=2 ttl=63 time=16.5 ms …………………………………… --- 100.0.0.10 ping statistics --- 6 packets transmitted,6 received,0% packet loss,time 5007ms rtt min/avg/max/mdev = 16.442/19.220/32.855/6.098 ms
實(shí)驗(yàn)中從h0發(fā)出ping包,測(cè)試與目的主機(jī)h1之間的鏈路連通性??梢钥闯雎酚赊D(zhuǎn)發(fā)結(jié)果正確,同時(shí)往返延時(shí)rtt的測(cè)試結(jié)果也符合鏈路的預(yù)設(shè)值。
從以上“路由轉(zhuǎn)發(fā)和聯(lián)通測(cè)試”實(shí)驗(yàn)可以看出,學(xué)生通過(guò)創(chuàng)建拓?fù)浜吐酚膳渲?搭建了一個(gè)虛擬實(shí)驗(yàn)網(wǎng)絡(luò),通過(guò)交互操作,在該虛擬網(wǎng)絡(luò)上調(diào)用操作系統(tǒng)和交換機(jī)的真實(shí)命令,還可以對(duì)虛擬機(jī)的內(nèi)核編程。這樣,學(xué)生只需要進(jìn)行很少的部署就能進(jìn)行靈活、可擴(kuò)展的課程實(shí)驗(yàn),不但可以深入理解計(jì)算機(jī)網(wǎng)絡(luò)的算法和協(xié)議,還可以直接進(jìn)行真實(shí)的操作系統(tǒng)和網(wǎng)絡(luò)設(shè)備操作,在知識(shí)掌握和應(yīng)用能力方面都得到了提升。還可以看出,基于Mininet的計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)方案能夠幫助學(xué)生靈活、簡(jiǎn)便、快速地搭建實(shí)驗(yàn)網(wǎng)絡(luò)環(huán)境,開(kāi)展面向Linux操作系統(tǒng)內(nèi)核和真實(shí)網(wǎng)絡(luò)操作的課程實(shí)驗(yàn)。筆者將在方案改進(jìn)中進(jìn)一步設(shè)計(jì)實(shí)驗(yàn)平臺(tái)的圖形交互界面,提供更直觀、形象的人機(jī)接口。
References)
[1] 潘江波,鄧建高.仿真軟件在計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)中的應(yīng)用[J].實(shí)驗(yàn)技術(shù)與管理,2011,28(7):91-93.
[2] 錢(qián)權(quán),張瑞,袁方.計(jì)算機(jī)網(wǎng)絡(luò)課程中的項(xiàng)目式實(shí)驗(yàn)教學(xué)[J].實(shí)驗(yàn)室研究與探索,2013,32(5):142-145.
[3] Lantz B,Heller B,McKeown N. A network in a laptop:rapid prototyping for software-defined networks [ C]// Proceedings of the 9th ACM SIGCOMM Workshop on Hot Topics in Networks. New York:ACM,2010:1-6.
[4] Packet Tracer [EB/OL].(2013-09-01)[2015-04-18]. https://www.netacad.com/web/about-us/cisco-packet-tracer.
[5] The network simulator [EB/OL].(2013-02-10)[2015-04-10]. http://www.isi.edu/nsnam/ns.
[6] Opnet modeler [EB/OL].(2013-05-10)[2015-04-10]. http://www.opnet.com/solutions/network_rd/modeler.html.
[7] Chun B,Culler D,Roscoe T,et al. Planetlab:an overlay testbed for broad-coverage services[J]. SIGCOMM Computer Communication Review,2003,33(3):3-12.
[8] DeHart J,Kuhns F,Parwatikar J,et al. The open network laboratory[C]//Proceedings of the Technical Symposium on Computer Science Education.New York:ACM,2006:107-111.
[9] Emulab-network emulation testbed home[EB/OL].(2014-01-20)[2015-4-20]. http://emulab.net/.
[10] 張朝昆,崔勇,唐翯祎,等.軟件定義網(wǎng)絡(luò)(SDN)研究進(jìn)展[J].軟件學(xué)報(bào),2015,26(1):62-81.
[11] McKeown N,Anderson T,Balakrishnan H,et al. OpenFlow:Enabling innovation in campus networks[J]. ACM SIGCOMM CCR,2008,38(2):69-74.
[12] OpenFlow switch specification,version 1.4.0 [EB/OL].(2013-05-10)[2015-04-10]. https://www. opennetworking.org/.
Plan of computer network experimental teaching based on Mininet
Huang Jiawei, Han Rui, Zhong Ping, Wang Jianxin
(School of Information Science and Engineering,Central South University,Changsha 410083,China)
To solve the problems of lacking reality,flexibility and scalability in the computer network experiment,a light-weight virtualized experiment platform based on real operation system kernel is designed and implemented with Mininet as the infrastructure. Taking the packet routing and network connection as the experimental cases,the topology setting,routing configuring and user interaction are presented. The experimental platform can help students to better understand the algorithms,protocols and practice of computer the network.
computer network; virtualization; Mininet; experimental teaching
2015- 03- 25
國(guó)家自然科學(xué)基金項(xiàng)目“基于云計(jì)算的虛擬實(shí)驗(yàn)平臺(tái)關(guān)鍵技術(shù)研究”(61202494);中南大學(xué)教師研究基金項(xiàng)目;中南大學(xué)課程群、教學(xué)團(tuán)隊(duì)資助項(xiàng)目
黃家瑋(1976—),男,湖南長(zhǎng)沙,博士,副教授,主要研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)理論.
E-mail:jiaweihuang@csu.edu.cn
P393
A
1002-4956(2015)10- 0139- 03