黃家瑋, 韓 瑞, 鐘 萍, 王建新
(中南大學 信息科學與工程學院, 湖南 長沙 410083)
基于Mininet的計算機網絡實驗教學方案
黃家瑋, 韓 瑞, 鐘 萍, 王建新
(中南大學 信息科學與工程學院, 湖南 長沙 410083)
為保證計算機網絡課程實驗的真實性、靈活度和可擴展性,以Mininet為基礎架構,設計和實現(xiàn)了基于真實操作系統(tǒng)內核的輕量級虛擬實驗平臺。通過路由轉發(fā)和聯(lián)通測試的典型網絡實驗,展示了實驗平臺的網絡拓撲配置、路由配置和用戶交互流程。該實驗平臺能更好地幫助學生掌握真實計算機網絡的算法、協(xié)議和實踐操作。
計算機網絡; 虛擬化; Mininet; 實驗教學
計算機網絡是計算機科學、通信工程和信息安全等專業(yè)本科和研究生教育的核心課程,具有理論范圍廣、實踐操作多、知識更新快的特點。在計算機網絡教學中特別注重理論教學和實踐教學相結合,通過不同的網絡實驗來幫助學生理解計算機網絡的基本概念和算法協(xié)議原理,掌握計算機網絡通信和組網的相關操作[1-2]。
為了幫助學生掌握計算機網絡的工作原理,目前的計算機網絡課程通常在網絡操作系統(tǒng)和網絡設備上進行命令或編程操作。但由于計算機網絡的分布式特性,需要利用多臺計算機和交換設備搭建一定規(guī)模的網絡環(huán)境才能開展網絡實驗。由于受經費和場地的限制,很多高校缺乏大規(guī)模的專用計算機網絡實驗設備,開展真實網絡實驗教學比較困難,很多時候只能利用一些低端網絡設備、采用多人一組的方式進行實驗教學。這使得教師難以在有限時間內安排實驗內容,學生難以深入進行實踐操作,最終影響了計算機網絡實驗教學的效果。
筆者利用Mininet[3]網絡模擬軟件,搭建了基于真實操作系統(tǒng)內核的輕量級虛擬實驗平臺,提供了貼近真實、配置靈活、擴展性強、價格低廉、具可重復性的網絡實驗環(huán)境。學生可以從網絡管理員和操作用戶的角度來深入理解計算機網絡算法和協(xié)議,更方便地進行網絡操作系統(tǒng)和網絡設備的操作和軟件開發(fā)。
目前在計算機網絡課程教學中,除演示性、驗證性的實驗教學以外,一般采用網絡仿真(simulation)、實驗床(testbed)和模擬(emulation)3種方法進行網絡實驗。其中,網絡仿真基于數(shù)學模型模擬真實網絡的動態(tài)行為,可以脫離真實網絡獨立運行。
典型的網絡仿真平臺包括:(1)Packet Tracer[4],它是思科公司開發(fā)的輔助學習軟件,通過可視化的圖形交互界面仿真了終端、路由器、交換機、集線器和連接線等各種計算機和網絡設備,提供了多種協(xié)議供用戶直接調用;(2)OPENT[5],它采用開源架構,提供了各種網絡模型庫,幫助用戶利用圖形界面操作,快速搭建各種網絡場景,調用已有的網絡協(xié)議和算法,并且支持用戶改進或者重新設計網絡協(xié)議和算法;(3)NS[6],它是應用最為廣泛的開源仿真軟件平臺,采用面向對象的架構,支持大規(guī)模、多種協(xié)議的網絡仿真。
雖然以上網絡仿真軟件為用戶提供了較好的教學和科研實驗平臺,但也有以下問題:
(1) 由于網絡仿真軟件具有各自不同的用戶界面和網絡抽象程度,用戶(特別是初學者)在理解和掌握網絡知識過程中面臨一定的困難;
(2) 用戶所操作的并不是真實的網絡操作系統(tǒng)或網絡設備交互系統(tǒng)代碼,與真實體驗并不盡相同;
(3) 當用戶需要進行一些深度操作(如修改真實操作系統(tǒng)內核)的時候,這些系統(tǒng)變得不再適用;
(4) 網絡仿真軟件在設計時更關注于某些特定的網絡特性,而忽視了其他眾多的網絡影響因素,這使得網絡仿真軟件和真實網絡的運行結果不一定相符。
網絡實驗床是利用大規(guī)模的分布式計算機集群,基于虛擬化技術來模擬各種真實網絡設備和計算機主機的實驗平臺。典型的實驗床有Planetlab[7]和ONL[8],其中Planetlab基于Internet上的覆蓋網架構,利用分布在全球的1 100多臺主機組建了大規(guī)模的網絡實驗床。網絡實驗床的優(yōu)點在于可以直接操作網絡系統(tǒng),并能動態(tài)重現(xiàn)真實的網絡流量。但由于過高的建設和維護費用,網絡實驗床通常只能被預約使用,而且在網絡拓撲和實驗場景設置上的靈活性也不強,并不適用于高校網絡課程實驗。
相對于以上兩類實驗方法,vEmulab[9]、Mininet等網絡模擬平臺兼顧了網絡仿真和網絡實驗床的優(yōu)點。網絡模擬和網絡仿真軟件一樣,能靈活設置網絡拓撲,并利用虛擬機技術來降低部署成本,通過鏡像文件架構對相關實驗代碼、配置和數(shù)據(jù)實施快速遷移。和網絡實驗床相似,網絡模擬可以對操作系統(tǒng)、網絡設備、甚至是系統(tǒng)內核的真實代碼進行操作。網絡模擬平臺占用資源很少,用一臺服務器甚至筆記本電腦就可以便捷地開展大規(guī)模網絡實驗。基于這些特性,筆者應用Mininet網絡模擬平臺來設計計算機網絡課程實驗教學方法。
Mininet是Stanford大學Nick McKeown的研究組研發(fā)的一個基于Linux Container架構的網絡模擬平臺。由于采用輕量級的虛擬化技術,Mininet可以在一臺電腦上模擬出包含數(shù)百臺計算機終端和各種網絡設備的復雜大規(guī)模計算機網絡。Mininet最初是為軟件定義網絡[10]的測試而開發(fā),因此能支持OpenFlow[11]、Open vSwitch[12]等軟件定義網絡部件。Mininet與Linux完全兼容,具有很好的硬件移植性,可以快速部署到真實硬件環(huán)境中。
Mininet為上層實驗提供了一系列接口,這些接口文件用python編寫,并編譯為二進制模塊pyc,以方便導入。常用的功能模塊有l(wèi)ink、node、net和topo,分別負責創(chuàng)建鏈路、節(jié)點、網絡控制和拓撲框架生成。常用的輔助模塊有util、cli和log,分別負責控制運行模式、用戶命令行交互和日志記錄。
以下通過“路由轉發(fā)和聯(lián)通測試”實驗來闡述基于Mininet的計算機網絡課程實驗平臺的實驗流程。實驗內容主要包括配置路由以實現(xiàn)主機間的通信,同時測試端到端傳輸性能。本實驗網絡環(huán)境是一個小型網絡(見圖1),1臺客戶機h0和2臺服務器h1、h2分處3個不同網段,通過路由器r0相連。實驗目標是幫助學生掌握網絡拓撲的創(chuàng)建過程、不同網段間路由配置方法和網絡連通性的測試工具,理解往返延時的概念。

圖1 實驗拓撲圖
2.1 創(chuàng)建拓撲
Mininet實驗平臺使用python腳本完成實驗配置,在導入常見的功能和輔助模塊后,創(chuàng)建網絡拓撲。網絡拓撲定義為SimpleTopo類,創(chuàng)建主機h0和鏈路h0-r0代碼分別為h0 = self.add_host(′h0′)和self.add_link(h0,r0,port1=0,port2=0,**lconfig_client)。其中l(wèi)config_client可以定義為鏈路帶寬、丟包率和延時等屬性,這里通過lconfig_client = {′delay′:′5ms′}設定h0-r0鏈路延時為5 ms。同時,h1-r0、h2-r0鏈路延時都設為3 ms。
2.2 路由配置
路由器r0的路由配置函數(shù)SetIpRt()腳本如下:
defSetIpRt(): r0intf0 = r0.defaultIntf() #調用接口獲得主機端口對象 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′) #設定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′) #開啟內核的轉發(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′)
首先通過調用接口獲得端口對象并設定IP,然后進行路由表配置。Mininet為每個主機虛擬一個內核協(xié)議棧,因此Linux常用命令如ifconfig都能通過cmd()的形式調用。由于使用了userswitch組件充當交換機,路由轉發(fā)工作由系統(tǒng)內核承擔,因此需要手動開啟內核的轉發(fā)功能。最后通過cmd()調用route命令配置路由表。主機h0路由到100.0.0.0/24和200.0.0.0/24網段經過r0的端口0,而h1和h2需要設置反向路由,分別經由r0的端口1和2轉發(fā)。
2.3 實驗主流程
實驗步驟如下:
def main(): topo = SimpleTopo() #創(chuàng)建拓撲 link = custom(TCLink) #指定鏈路類型 net =Mininet(topo=topo,link=link,switch=Switch) #指定拓撲、鏈路和交換機 net.start() #網絡開始工作 global h1,h2,r0,h0 h1,h2,r0,h0 =net.get(′h1′,′h2′,′r0′,′h0′) #獲取全局變量 SetIpRt() #設定路由 CLI(net) #開啟命令行交互 net.stop() #網絡停止工作 if __name__ == ′__main__′: main() #設置程序入口函數(shù)
實驗中首先創(chuàng)建SimpleTopo類對象,然后指定拓撲、鏈路和交換機類型,創(chuàng)建網絡。其中,CLI()開啟命令行交互,提供用戶進行操作系統(tǒng)和網絡操作的接口。
2.4 用戶交互
在啟動命令行交互之后,用戶可以進行各種操作。本實驗中用ping測試各個主機之間的連通性和傳輸延時,以檢驗路由配置是否正確。測試結果顯示如下:
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
實驗中從h0發(fā)出ping包,測試與目的主機h1之間的鏈路連通性。可以看出路由轉發(fā)結果正確,同時往返延時rtt的測試結果也符合鏈路的預設值。
從以上“路由轉發(fā)和聯(lián)通測試”實驗可以看出,學生通過創(chuàng)建拓撲和路由配置,搭建了一個虛擬實驗網絡,通過交互操作,在該虛擬網絡上調用操作系統(tǒng)和交換機的真實命令,還可以對虛擬機的內核編程。這樣,學生只需要進行很少的部署就能進行靈活、可擴展的課程實驗,不但可以深入理解計算機網絡的算法和協(xié)議,還可以直接進行真實的操作系統(tǒng)和網絡設備操作,在知識掌握和應用能力方面都得到了提升。還可以看出,基于Mininet的計算機網絡實驗教學方案能夠幫助學生靈活、簡便、快速地搭建實驗網絡環(huán)境,開展面向Linux操作系統(tǒng)內核和真實網絡操作的課程實驗。筆者將在方案改進中進一步設計實驗平臺的圖形交互界面,提供更直觀、形象的人機接口。
References)
[1] 潘江波,鄧建高.仿真軟件在計算機網絡教學中的應用[J].實驗技術與管理,2011,28(7):91-93.
[2] 錢權,張瑞,袁方.計算機網絡課程中的項目式實驗教學[J].實驗室研究與探索,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] 張朝昆,崔勇,唐翯祎,等.軟件定義網絡(SDN)研究進展[J].軟件學報,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
國家自然科學基金項目“基于云計算的虛擬實驗平臺關鍵技術研究”(61202494);中南大學教師研究基金項目;中南大學課程群、教學團隊資助項目
黃家瑋(1976—),男,湖南長沙,博士,副教授,主要研究方向為計算機網絡理論.
E-mail:jiaweihuang@csu.edu.cn
P393
A
1002-4956(2015)10- 0139- 03