王曉鋒 吳文燕 孔軍 蔣敏
摘 要 基于OpenStack云平臺,構(gòu)建計算機(jī)網(wǎng)絡(luò)課程仿真實驗,可滿足可擴(kuò)展、高逼真、開放式的實踐教學(xué)需要。分析OpenStack云平臺在計算機(jī)網(wǎng)絡(luò)實驗教學(xué)中面臨的問題,研究虛擬路由器、虛擬鏈路等關(guān)鍵要素的構(gòu)建方法。面向路由協(xié)議以及TCP協(xié)議等實踐教學(xué)環(huán)節(jié),構(gòu)建典型的仿真場景,驗證基于云平臺仿真實驗的有效性。
關(guān)鍵詞 計算機(jī)網(wǎng)絡(luò)課程;OpenStack云平臺;仿真實驗
中圖分類號:TP391.9 文獻(xiàn)標(biāo)識碼:B
文章編號:1671-489X(2018)02-0123-04
1 前言
計算機(jī)網(wǎng)絡(luò)課程是高等學(xué)校計算機(jī)科學(xué)與技術(shù)專業(yè)的核心課程,具有實踐性強(qiáng)的特點。為加深學(xué)生對計算機(jī)網(wǎng)絡(luò)課程理論知識的理解,培養(yǎng)學(xué)生對計算機(jī)網(wǎng)絡(luò)領(lǐng)域的實踐與創(chuàng)新能力,各高校計算機(jī)網(wǎng)絡(luò)課程都設(shè)置了實驗與實踐課程。以各種交換機(jī)、路由器等物理設(shè)備構(gòu)建的實驗環(huán)境存在運(yùn)維成本高、靈活性低等缺點;基于各種網(wǎng)絡(luò)模擬與仿真軟件構(gòu)建的虛擬仿真平臺,成為計算機(jī)網(wǎng)絡(luò)實踐教學(xué)的重要支撐[1]。
基于經(jīng)典的NS2、NS3等開源的網(wǎng)絡(luò)模擬軟件,可構(gòu)建面向計算機(jī)網(wǎng)絡(luò)實驗的虛擬仿真場景[2],但存在真實計算機(jī)網(wǎng)絡(luò)應(yīng)用軟件無法加載,仿真界面效果差等缺點,導(dǎo)致教學(xué)實驗可操作性差;OPNET、Qualnet等網(wǎng)絡(luò)模擬軟件盡管具有良好的用戶界面,但是由于是收費(fèi)的商業(yè)軟件,這制約了這些軟件在計算機(jī)網(wǎng)絡(luò)實驗教學(xué)中的使用[3]。思科公司的Packet Tracer網(wǎng)絡(luò)仿真軟件具有良好的用戶界面,被廣泛應(yīng)用于計算機(jī)網(wǎng)絡(luò)實驗教學(xué)與培訓(xùn)中[4],但僅是單機(jī)版網(wǎng)絡(luò)仿真軟件,在可擴(kuò)展性與開放性方面存在不足,且存在真實計算機(jī)網(wǎng)絡(luò)應(yīng)用軟件無法加載的問題。
鑒于上述問題,本文基于OpenStack[5]云計算平臺,研究計算機(jī)網(wǎng)絡(luò)課程仿真實驗的構(gòu)建方法。OpenStack云平臺隨著自身的不斷完善與發(fā)展,逐漸成為主流云平臺,其相關(guān)優(yōu)勢有助于構(gòu)建可擴(kuò)展、高逼真、開放式的計算機(jī)網(wǎng)絡(luò)課程仿真實驗平臺。本文首先分析OpenStack在計算機(jī)網(wǎng)絡(luò)仿真實驗方面的優(yōu)勢與不足,接著有針對性地研究虛擬路由器、虛擬鏈路的構(gòu)建方法,最后面向路由協(xié)議以及TCP協(xié)議等教學(xué)內(nèi)容,構(gòu)建相應(yīng)的仿真實驗,驗證有效性。
2 基于OpenStack的網(wǎng)絡(luò)仿真實驗分析
OpenStack云平臺介紹 OpenStack是一個開源的基礎(chǔ)架構(gòu)即服務(wù)(IaaS)云計算平臺,其目標(biāo)是為大規(guī)模的共有云和小規(guī)模的私有云提供一個易于擴(kuò)展的、彈性云計算服務(wù)。它給用戶提供一個Web交互接口的控制面板(Dash-board),管理一個或多個數(shù)據(jù)中心的所有計算資源池、存儲資源池、網(wǎng)絡(luò)資源池等硬件資源,且支持多種不同的Hypervisor(如QEMU/KVM、Xen、VMware、Hyper-V、LXC等)。OpenStack云平臺的基礎(chǔ)架構(gòu)如圖1所示。
Openstack云平臺物理環(huán)境主要由控制節(jié)點、網(wǎng)絡(luò)節(jié)點與若干計算節(jié)點組成??刂乒?jié)點負(fù)責(zé)管控整個平臺,提供包括資源分配、虛擬機(jī)管理、平臺實時監(jiān)管等功能,并向用戶提供名為Dashboard的圖形管理界面,用于管理平臺中的虛擬網(wǎng)絡(luò)和服務(wù)器集群。網(wǎng)絡(luò)節(jié)點提供各種網(wǎng)絡(luò)服務(wù),其中router-namespace提供路由服務(wù)和地址轉(zhuǎn)換服務(wù)(NAT),dhcp可自動為各個虛擬機(jī)分配IP地址。計算節(jié)點為虛擬機(jī)的建立提供各種資源,在一個基礎(chǔ)架構(gòu)中可以包含多個計算節(jié)點,計算節(jié)點越多,可以構(gòu)建的虛擬網(wǎng)絡(luò)的規(guī)模越大。
計算節(jié)點和網(wǎng)絡(luò)節(jié)點均有Open vSwitch(OVS)模塊,是支持軟件定義功能的虛擬交換機(jī)。OVS由各個網(wǎng)橋構(gòu)成,分別為br-tun、br-ex和br-int。br-tun作為接口用于連接分布在不同節(jié)點中的OVS,實現(xiàn)平臺的分布式架構(gòu)。br-ex只存在于網(wǎng)絡(luò)節(jié)點的OVS中,它和網(wǎng)絡(luò)節(jié)點外網(wǎng)網(wǎng)卡相連,用于接入外部實物網(wǎng)絡(luò)。br-int是數(shù)據(jù)包的中繼站,所有的虛擬機(jī)和OVS中其他的兩種網(wǎng)橋都與br-int相連,保證了同一虛擬網(wǎng)絡(luò)的連通性,待轉(zhuǎn)發(fā)的數(shù)據(jù)包都會進(jìn)入br-int進(jìn)行流表匹配并執(zhí)行相關(guān)操作。OVS支持VLAN功能,可實現(xiàn)虛擬網(wǎng)絡(luò)的相互隔離。
Openstack云平臺中由物理服務(wù)器網(wǎng)卡所連接形成的網(wǎng)絡(luò)分為三種,分別為管理網(wǎng)、隧道網(wǎng)和外網(wǎng)。管理網(wǎng)用于控制節(jié)點對各個節(jié)點進(jìn)行管控以及下達(dá)操作虛擬網(wǎng)絡(luò)的命令;隧道網(wǎng)連接各個節(jié)點,用于構(gòu)建分布式平臺;外網(wǎng)即外部物理網(wǎng)絡(luò),可與實物網(wǎng)絡(luò)互聯(lián)。
OpenStack的網(wǎng)絡(luò)仿真實驗?zāi)芰Ψ治?基于上述介紹,對OpenStack用于網(wǎng)絡(luò)仿真實驗的優(yōu)勢進(jìn)行分析。
1)擴(kuò)展性:通過擴(kuò)展OpenStack計算節(jié)點個數(shù),可實現(xiàn)大規(guī)模網(wǎng)絡(luò)拓?fù)涞慕虒W(xué)實驗以及實現(xiàn)多個教學(xué)實驗任務(wù)的并發(fā)展開;OpenStack平臺支持輕量級虛擬化,可在單臺物理服務(wù)器上構(gòu)建具有上百個甚至上千個節(jié)點規(guī)模的仿真網(wǎng)絡(luò);通過OpenStack的br-ex,可實現(xiàn)虛擬網(wǎng)絡(luò)與實物網(wǎng)絡(luò)的互聯(lián)互通,為構(gòu)建半實物計算機(jī)網(wǎng)絡(luò)實驗場景提供支撐。
2)逼真性:OpenStack融合了虛擬化技術(shù),可無縫融合各類操作系統(tǒng)并支持各種真實計算機(jī)網(wǎng)絡(luò)軟件加載,可為計算機(jī)網(wǎng)絡(luò)教學(xué)實驗提供逼真的終端環(huán)境;此外,Open-Stack支持三層網(wǎng)絡(luò),可為各類鏈路層與網(wǎng)絡(luò)層教學(xué)實驗提供逼真的環(huán)境。
3)開放可用性:基于云計算技術(shù),可構(gòu)建遠(yuǎn)程開放式云端計算機(jī)網(wǎng)絡(luò)虛擬實驗室[6],可為學(xué)生提供全天候?qū)嶒灲虒W(xué)服務(wù),學(xué)生利用任意一臺連接到網(wǎng)絡(luò)的計算機(jī),即可遠(yuǎn)程連接進(jìn)行計算機(jī)網(wǎng)絡(luò)實驗場景的生成與教學(xué)實驗;Open-
Stack的Dashboard提供圖形管理界面,方便管理計算機(jī)網(wǎng)絡(luò)仿真實驗場景。
4)多實驗隔離性:OpenStack支持VLAN等安全隔離方式,可為計算機(jī)網(wǎng)絡(luò)課程提供多個教學(xué)實驗場景間的安全隔離。
5)實驗場景多樣性:基于OpenStack現(xiàn)有的網(wǎng)絡(luò)層與鏈路層基本功能,可支持諸如VLAN、NAT、DHCP、ARP、數(shù)據(jù)包捕獲與解析、基本網(wǎng)絡(luò)命令操作等計算機(jī)網(wǎng)絡(luò)實驗。
然而,盡管OpenStack具有上述優(yōu)勢,其本身并不是為計算機(jī)網(wǎng)絡(luò)仿真而專門開發(fā)的,在計算機(jī)網(wǎng)絡(luò)仿真實驗上存在一定的局限性。
1)OpenStack的neutron網(wǎng)絡(luò)組件盡管可支持三層網(wǎng)絡(luò),但只能滿足最基礎(chǔ)的IP報文轉(zhuǎn)發(fā)服務(wù),所提供的虛擬路由器qrouter只能夠轉(zhuǎn)發(fā)與其直連的網(wǎng)絡(luò)流量,無法構(gòu)建復(fù)雜的仿真網(wǎng)絡(luò),也不支持各類動態(tài)路由協(xié)議,這制約了復(fù)雜網(wǎng)絡(luò)拓?fù)鋵嶒?、路由協(xié)議實驗等教學(xué)場景的構(gòu)建。
2)OpenStack中各個虛擬機(jī)都被連接到OVS上,可實現(xiàn)虛擬網(wǎng)絡(luò)的連通性。依靠OVS的可定義配置,可靈活構(gòu)建虛擬機(jī)間的虛擬鏈路。但是,所構(gòu)建的虛擬鏈路僅僅是連通性,缺乏對虛擬鏈路帶寬、延遲等參數(shù)的仿真,這制約了與鏈路參數(shù)有關(guān)的教學(xué)實驗場景(如TCP協(xié)議的流量控制等)的構(gòu)建。
為此,針對上述問題,本文第3、4節(jié),分別研究了虛擬路由器與虛擬鏈路的構(gòu)建方法,實現(xiàn)對OpenStack相關(guān)仿真模型的擴(kuò)展,滿足計算機(jī)網(wǎng)絡(luò)仿真實驗的需求。
3 虛擬路由器構(gòu)建方法
基于KVM虛擬機(jī)以及Quagga軟件,可構(gòu)建支持路由協(xié)議且支持復(fù)雜網(wǎng)絡(luò)仿真的虛擬路由器,并可集成到OpenStack
云平臺中。Quagga是一款功能強(qiáng)大的開源路由軟件,可支持rip、ripng、ospfv2、ospfv3、bgp等協(xié)議的仿真,而且Quagga的命令行界面與主要路由器廠商思科的基本一致。
基于OpenStack的虛擬路由器的具體構(gòu)建方法:
首先,基于KVM虛擬化技術(shù),構(gòu)建具有多虛擬網(wǎng)卡的虛擬機(jī),每一個虛擬網(wǎng)卡分別連接不同的虛擬網(wǎng)絡(luò);
其次,基于該虛擬機(jī),安裝可仿真各類路由協(xié)議的Quagga軟件,形成動態(tài)路由協(xié)議仿真引擎;
最后,構(gòu)建虛擬網(wǎng)絡(luò),配置嗅探模塊,可自動獲得虛擬機(jī)的IP地址等信息,并對動態(tài)路由協(xié)議仿真引擎進(jìn)行自動化配置,啟動RIP、OSPF、BGP協(xié)議的仿真。
值得注意的是,上述虛擬路由器構(gòu)建方法形成的虛擬機(jī)可制作成虛擬路由器鏡像并存儲于OpenStack鏡像庫中。當(dāng)需要構(gòu)建計算機(jī)網(wǎng)絡(luò)仿真實驗場景時,可基于鏡像進(jìn)行按需部署,自動化形成可支持各類路由協(xié)議仿真且可互聯(lián)不同虛擬網(wǎng)絡(luò)的虛擬路由器。
4 虛擬鏈路構(gòu)建方法
如第2節(jié)所述,基于OVS可靈活構(gòu)建虛擬機(jī)間的虛擬鏈路,具體構(gòu)建方式:每建一個虛擬機(jī),OpenStack會自動為該虛擬機(jī)在OVS的br-int上建立一個端口并將該虛擬機(jī)連接到這個端口上,接著在OVS中添加相關(guān)流表規(guī)則。流表規(guī)則保證了該虛擬機(jī)能夠正常收發(fā)數(shù)據(jù)包。
上述操作相當(dāng)于為該虛擬機(jī)建立了一條接入虛擬交換機(jī)的鏈路。由于所有的虛擬機(jī)都被接入OVS,因此,相當(dāng)于在同一虛擬網(wǎng)絡(luò)中,任意一對虛擬機(jī)之間都有一條虛擬鏈路,這保證了虛擬機(jī)之間的連通性。
基于上述方法所構(gòu)建的虛擬鏈路,依靠Linux操作系統(tǒng)中的流量控制器TC(Traffic Control),可以進(jìn)一步構(gòu)建帶有帶寬、延遲特性的虛擬鏈路。TC通過建立處理數(shù)據(jù)包的隊列,實現(xiàn)對流量的控制,并可仿真出復(fù)雜的互聯(lián)網(wǎng)傳輸性能,諸如帶寬、傳輸延遲、丟包等。在仿真虛擬鏈路的特性時,可根據(jù)實際需要,將TC仿真命令添加到虛擬鏈路對應(yīng)的虛擬機(jī)的虛擬網(wǎng)卡上即可。如通過下列命令,可設(shè)置虛擬鏈路的帶寬為100 Mbps,傳播延遲為10 ms:
tc qdisc add dev eth0 handle 1: root htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbps
tc qdisc add dev eth0 root netem delay 10ms
5 計算機(jī)網(wǎng)絡(luò)仿真實驗場景驗證
為驗證OpenStack云平臺對典型計算機(jī)網(wǎng)絡(luò)教學(xué)實驗的支持能力,構(gòu)建典型的路由協(xié)議實驗場景以及TCP協(xié)議實驗場景進(jìn)行驗證。值得一提的是,這兩個實驗場景也重點驗證了新構(gòu)建的虛擬路由器以及虛擬鏈路對仿真實驗的支撐能力。
路由協(xié)議實驗 所構(gòu)建的虛擬網(wǎng)絡(luò)拓?fù)鋱D如圖2所示,共有六個虛擬路由器(分別標(biāo)志為R1、R2、R3、R4、R5、R6)以及四個虛擬主機(jī)(分別標(biāo)志為H1、H2、H3、H4)。
以經(jīng)典的域內(nèi)路由協(xié)議OSPF為代表,進(jìn)行路由協(xié)議實驗,其主要實驗步驟如下。
1)配置IP地址。以路由器R3為例,其IP地址具體配置過程如圖3所示,其他路由器的IP地址配置過程類似。
2)配置OSPF協(xié)議。以路由器R3為例,其OSPF協(xié)議的具體配置過程如圖4所示。
3)查看路由表。通過OSPF協(xié)議的一段時間學(xué)習(xí)后,可以查看新學(xué)習(xí)到的路由信息。路由器R3的路由信息查看命令與顯示結(jié)果如圖5所示。
4)路由路徑測試。通過traceroute命令測試各個主機(jī)之間的連通性以及路由信息的正確性,其中主機(jī)H1到H3的路由路徑測試結(jié)果如圖6所示,表明主機(jī)H1到H3的路由路徑為R1、R3、R4、R5,這驗證了基于OSPF協(xié)議構(gòu)建的路由表的有效性。
通過該實驗,可以讓學(xué)生掌握IP地址的配置、OSPF協(xié)議的配置、路由信息的查詢與顯示以及路由路徑等相關(guān)知識,提升實踐能力。此外,該實驗也驗證了本文所提出的虛擬路由器構(gòu)建方法具備支持路由協(xié)議仿真的能力。
TCP協(xié)議實驗 針對圖2中的虛擬網(wǎng)絡(luò)拓?fù)洌M(jìn)一步開展TCP協(xié)議實驗。由于TCP協(xié)議的擁塞控制過程是計算機(jī)網(wǎng)絡(luò)課程的難點和重點,為此以TCP協(xié)議擁塞控制實驗為對象,進(jìn)行相關(guān)實驗演示。由于擁塞控制與鏈路的帶寬、延遲等參數(shù)相關(guān),為此基于圖2首先設(shè)置所有鏈路的帶寬和延遲:R3與R4的鏈路設(shè)置為瓶頸鏈路,其帶寬設(shè)置為20 Mbps,傳播延遲為160 ms;其余路由器間的所有鏈路帶寬均設(shè)置為100 Mbps,傳播延遲為160 ms;所有主機(jī)到相連路由器的鏈路帶寬設(shè)置為100 Mbps,傳播延遲為10 ms。
在主機(jī)H1、H3上安裝了Iperf網(wǎng)絡(luò)性能測試工具,啟動主機(jī)H1到H3的TCP流量發(fā)送,并實時記錄吞吐量,其前50秒的實時吞吐量如圖7所示。
依靠圖7,可以演示TCP的擁塞控制過程。
在第0~20秒之間,TCP的吞吐量急劇上升,表明此階段為TCP的慢開始階段和擁塞避免階段。在這兩個階段,每經(jīng)過一個輪次,TCP吞吐量就會提升,其中第0~14秒吞吐量提升較快,因為處于慢開始階段;第14~20秒提升較慢,因為處于擁塞避免階段。
在第20~26秒,TCP實時吞吐量維持在一個較穩(wěn)定的值,接近瓶頸鏈路的額定帶寬。
從第26秒開始,TCP的實時吞吐量急劇下降,主要是在第25~35秒,主機(jī)H2到H4通過Iperf啟動UDP流量傳輸,傳輸速率為10 Mbps。因此,R3、R4間的瓶頸鏈路出現(xiàn)嚴(yán)重的擁塞,導(dǎo)致TCP分組丟失而執(zhí)行了“乘法減小”策略。
在第36秒,UDP流量停止,TCP的實時吞吐量繼續(xù)增加,逐漸接近瓶頸鏈路的額定帶寬。
通過該實驗,可以讓學(xué)生掌握TCP協(xié)議流量控制涉及的慢開始、擁塞避免、“乘法減小”等知識,提升實踐能力。此外,該實驗也驗證了本文所提出的虛擬鏈路構(gòu)建方法具備支持與鏈路參數(shù)有關(guān)的教學(xué)實驗的能力。
6 結(jié)語
本文分析了基于OpenStack云平臺構(gòu)建計算機(jī)網(wǎng)絡(luò)仿真實驗,具有擴(kuò)展性、逼真性、開放可用性、多實驗隔離性、實驗場景多樣性等優(yōu)勢,并構(gòu)建了虛擬路由器、虛擬鏈路等仿真模塊,進(jìn)一步增強(qiáng)了OpenStack在計算機(jī)網(wǎng)絡(luò)仿真實驗方面的能力。基于OpenStack云平臺,構(gòu)建了路由協(xié)議仿真實驗教學(xué)場景以及TCP協(xié)議仿真實驗教學(xué)場景,驗證了OpenStack云平臺以及虛擬路由器、虛擬鏈路構(gòu)建方法的有效性。通過云計算平臺可任意靈活構(gòu)建各類豐富的計算機(jī)網(wǎng)絡(luò)課程實驗場景,能讓學(xué)生更加輕松地學(xué)習(xí)網(wǎng)絡(luò)理論知識,提升學(xué)生的鉆研興趣以及創(chuàng)新實踐能力。
參考文獻(xiàn)
[1]李英杰.虛擬仿真實驗在計算機(jī)網(wǎng)絡(luò)教學(xué)中的有效運(yùn)用[J].信息與電腦:理論版,2017(1):214-216.
[2]王曉鋒,毛力.NS2在TCP協(xié)議教學(xué)中的應(yīng)用研究[J].中國教育技術(shù)裝備,2012(3):13-15.
[3]顏慶茁,葉添福.基于OPNET的計算機(jī)網(wǎng)絡(luò)仿真實驗教學(xué)研究[J].集美大學(xué)學(xué)報:教育科學(xué)版,2014(3):111-114.
[4]薛琴.基于Packet Tracer的計算機(jī)網(wǎng)絡(luò)仿真實驗教學(xué)[J].實驗室研究與探索,2010(2):57-59.
[5]OpenStack Community. OpenStack[EB/OL].[2017-02-01].http://www.OpenStack.org/.
[6]徐林,盧廣宇,楊凱,等.遠(yuǎn)程開放式云端虛擬實驗室建設(shè)初探[J].教育教學(xué)論壇,2014(43):254-256.