周德榮,夏 齡,舒 濤, 田關(guān)偉
(四川民族學(xué)院 網(wǎng)絡(luò)信息中心,四川 康定 626001)
計(jì)算機(jī)網(wǎng)絡(luò)課程作為高校計(jì)算機(jī)類專業(yè)和電氣信息類專業(yè)的核心課程之一,涉及大量的概念、原理以及各種協(xié)議和算法,這些內(nèi)容大多抽象、晦澀,單純通過(guò)理論教學(xué)難以讓學(xué)生理解和掌握。實(shí)踐教學(xué)是使學(xué)生學(xué)好計(jì)算機(jī)網(wǎng)絡(luò)基本原理和技術(shù)的有效方法[1-2]。
目前,網(wǎng)絡(luò)實(shí)驗(yàn)室主要有2類:一類是由傳統(tǒng)的計(jì)算機(jī)機(jī)房改建而成,實(shí)驗(yàn)設(shè)備主要由終端計(jì)算機(jī)和軟件構(gòu)成,側(cè)重網(wǎng)絡(luò)基礎(chǔ)應(yīng)用技術(shù)訓(xùn)練,主要開(kāi)設(shè)Web、DNS、FTP,DHCP等常規(guī)網(wǎng)絡(luò)服務(wù)及應(yīng)用的實(shí)驗(yàn);另一類是專門(mén)的網(wǎng)絡(luò)實(shí)驗(yàn)室[3],實(shí)驗(yàn)設(shè)備有交換機(jī)、路由器、服務(wù)器、終端機(jī)等,主要完成交換機(jī)配置、路由器配置、NAT轉(zhuǎn)換,網(wǎng)絡(luò)互聯(lián)等實(shí)驗(yàn),偏重組網(wǎng)技術(shù)實(shí)驗(yàn)。2類實(shí)驗(yàn)室均存在以下不足:
(1) 投入經(jīng)費(fèi)大、維護(hù)困難;
(2) 對(duì)網(wǎng)絡(luò)協(xié)議及算法的學(xué)習(xí)輔助力度不夠;
(3) 實(shí)驗(yàn)室設(shè)施、設(shè)備不能及時(shí)更新,不能適應(yīng)最新網(wǎng)絡(luò)知識(shí)的學(xué)習(xí)和實(shí)踐能力培養(yǎng)的要求;
(4) 實(shí)驗(yàn)室位置固定,不利于學(xué)生課后做實(shí)驗(yàn)。
針對(duì)以上問(wèn)題,本文提出采用虛擬機(jī)軟件和NS2仿真軟件構(gòu)建網(wǎng)絡(luò)協(xié)議仿真實(shí)驗(yàn)平臺(tái),并將其運(yùn)用于計(jì)算機(jī)網(wǎng)絡(luò)的實(shí)踐教學(xué)。
利用虛擬機(jī)軟件,可以在一臺(tái)物理計(jì)算機(jī)上虛擬出若干臺(tái)獨(dú)立的邏輯計(jì)算機(jī)(即虛擬機(jī))[4]。虛擬機(jī)是一種嚴(yán)密隔離的軟件容器,它可以運(yùn)行操作系統(tǒng)和應(yīng)用程序,完全類似物理計(jì)算機(jī)。VMware虛擬機(jī)具有以下特點(diǎn):
(1) 兼容性好:虛擬機(jī)與所有標(biāo)準(zhǔn)的X86操作系統(tǒng)、應(yīng)用程序、設(shè)備驅(qū)動(dòng)程序完全兼容,支持多種操作系統(tǒng),如Windows、Linux、FreeBSD、NetWare等;
(2) 隔離性好:虛擬機(jī)共享一臺(tái)物理計(jì)算機(jī)資源,但彼此完全隔離,如果一臺(tái)虛擬機(jī)崩潰,其他虛擬機(jī)完全不受影響,在安全性方面有一定優(yōu)勢(shì);
(3) 可移動(dòng)性好:虛擬機(jī)實(shí)質(zhì)上是一個(gè)軟件容器,它將虛擬硬件資源、操作系統(tǒng)及所有應(yīng)用程序封裝在一個(gè)軟件包內(nèi),由物理硬盤(pán)上的配置文件(*.vmx)、磁盤(pán)文件(*.vmdk)、CMOS配置信息(*.nvram)、日志文件(*.log)和*.vmx.lck(啟動(dòng)時(shí)生成)等5個(gè)文件組成,具備很強(qiáng)的可移動(dòng)性和易管理性;
(4) 系統(tǒng)安裝簡(jiǎn)便、克隆快捷:VMware虛擬機(jī)虛擬出來(lái)的硬件具有固定型號(hào),與物理計(jì)算機(jī)無(wú)關(guān),安裝速度快,且不易產(chǎn)生設(shè)備兼容問(wèn)題;通過(guò)已建立的虛擬機(jī)可快速產(chǎn)生新的虛擬機(jī)。
NS2是加州大學(xué)伯克利分校開(kāi)發(fā)的離散事件驅(qū)動(dòng)的網(wǎng)絡(luò)模擬器[6]。NS2免費(fèi)使用、開(kāi)放源碼、支持眾多協(xié)議,并且提供豐富的測(cè)試腳本,具有良好的擴(kuò)展性和廣泛網(wǎng)絡(luò)用戶支持等特點(diǎn),已成為最流行的網(wǎng)絡(luò)仿真軟件。NS2包含仿真事件調(diào)度器、網(wǎng)絡(luò)組件對(duì)象庫(kù)以及網(wǎng)絡(luò)構(gòu)建模型庫(kù)等。事件調(diào)度器計(jì)算仿真時(shí)間,激活事件隊(duì)列中的當(dāng)前事件,執(zhí)行一些相關(guān)的事件;網(wǎng)絡(luò)組件通過(guò)傳遞分組來(lái)相互通信,所有需要花費(fèi)仿真時(shí)間來(lái)處理分組的網(wǎng)絡(luò)組件都要使用事件調(diào)度器。
NS2中常用的網(wǎng)絡(luò)構(gòu)件有節(jié)點(diǎn)、鏈路、代理、應(yīng)用、隊(duì)列、跟蹤對(duì)象等。節(jié)點(diǎn)主要用于模擬實(shí)際網(wǎng)絡(luò)上的主機(jī)、交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)備,節(jié)點(diǎn)可配置節(jié)點(diǎn)類型、節(jié)點(diǎn)地址類型、路由算法等屬性;鏈路是將節(jié)點(diǎn)連接起來(lái)的一條通路,通過(guò)鏈路中的隊(duì)列和延時(shí)實(shí)現(xiàn)實(shí)際網(wǎng)絡(luò)中的包緩沖和傳輸延時(shí);代理可以用來(lái)模擬傳輸層的TCP、UDP協(xié)議,也可用來(lái)模擬網(wǎng)絡(luò)業(yè)務(wù)流量,如CBR、VBR等;應(yīng)用對(duì)象用來(lái)模擬各種應(yīng)用層對(duì)象,如FTP、HTTP等;跟蹤對(duì)象用于記錄并存儲(chǔ)NS2中的模擬結(jié)果,可配置需要跟蹤的一些參數(shù),將其寫(xiě)入跟蹤日志文件。
NS2由OTCL和C++兩種編程語(yǔ)言實(shí)現(xiàn)[7],所有的構(gòu)件已編寫(xiě)成相應(yīng)的C++類和OTCL對(duì)象。C++類對(duì)象是算法和協(xié)議的具體實(shí)現(xiàn);OTCL對(duì)象是用戶接口對(duì)象,用于編寫(xiě)模擬腳本,主要是建立OTCL對(duì)象、設(shè)置屬性,通過(guò)事件調(diào)度器調(diào)度網(wǎng)絡(luò)模擬事件的發(fā)生。針對(duì)實(shí)際要求,采用構(gòu)件對(duì)象配置研究項(xiàng)目的網(wǎng)絡(luò)系統(tǒng)模型進(jìn)行仿真模擬。
采用NS2進(jìn)行網(wǎng)絡(luò)模擬的基本過(guò)程如圖1所示。網(wǎng)絡(luò)仿真實(shí)驗(yàn)涉及2個(gè)層次:基于OTCL編程的層次、C++和OTCL編程的層次。前者利用NS2現(xiàn)有網(wǎng)絡(luò)組件編寫(xiě)OTCL腳本實(shí)現(xiàn)仿真,不需要擴(kuò)展網(wǎng)絡(luò)組件;后者是對(duì)第一個(gè)層次的擴(kuò)展,向NS2中添加所需的新的C++和OTCL類,編寫(xiě)新的OTCL腳本來(lái)實(shí)現(xiàn)仿真模擬操作。

圖1 NS2模擬仿真的基本過(guò)程
網(wǎng)絡(luò)協(xié)議仿真實(shí)驗(yàn)平臺(tái)是通過(guò)一系列的軟件實(shí)現(xiàn)的(見(jiàn)圖2)。平臺(tái)基于X86硬件平臺(tái)構(gòu)建,采用主流的Windows操作系統(tǒng),虛擬機(jī)軟件采用VMware Workstation 9.0,仿真軟件采用NS2-allinone-2.34。由于NS2必須運(yùn)行于UNIX/Linux平臺(tái),因而虛擬機(jī)中網(wǎng)絡(luò)仿真平臺(tái)操作系統(tǒng)采用Ubuntu10.04。

圖2 網(wǎng)絡(luò)協(xié)議仿真平臺(tái)的層次結(jié)構(gòu)
網(wǎng)絡(luò)協(xié)議仿真實(shí)驗(yàn)平臺(tái)構(gòu)建過(guò)程如下:
(1) 在Windows平臺(tái)上安裝虛擬機(jī)軟件VMware Workstation 9.0,進(jìn)行簡(jiǎn)單配置,確保虛擬機(jī)和物理機(jī)間能正常通信;
(2) 在VMware Workstation 9.0中建立虛擬機(jī),安裝Ubuntu10.04操作系統(tǒng),配置網(wǎng)絡(luò),系統(tǒng)環(huán)境中安裝gcc,make 和Nam相關(guān)庫(kù)文件,如libxmu-dev;
(3) 進(jìn)入U(xiǎn)buntu10.04操作系統(tǒng),下載仿真軟件NS2-allinone-2.34.tar.gz,解壓執(zhí)行NS2-allinone-2.34/ns-2.34/./install進(jìn)行安裝,配置系統(tǒng)環(huán)境變量;
(4) 測(cè)試安裝成功與否,若成功,則對(duì)虛擬機(jī)進(jìn)行備份,方便實(shí)驗(yàn)環(huán)境遷移,或在進(jìn)行實(shí)驗(yàn)前對(duì)虛擬機(jī)建立快照,防止進(jìn)行網(wǎng)絡(luò)協(xié)議仿真時(shí)破壞實(shí)驗(yàn)環(huán)境。
暴露節(jié)點(diǎn)問(wèn)題是指當(dāng)一個(gè)節(jié)點(diǎn)要發(fā)送數(shù)據(jù)給另一個(gè)節(jié)點(diǎn)時(shí),因偵聽(tīng)到鄰近節(jié)點(diǎn)正在發(fā)送數(shù)據(jù)而推遲自身發(fā)送數(shù)據(jù),因而產(chǎn)生不必要的延時(shí),影響節(jié)點(diǎn)的數(shù)據(jù)傳送[8]。如圖3所示,有4個(gè)節(jié)點(diǎn)S0、S1、R0、R1,其中R0、R1都不在對(duì)方的傳送范圍內(nèi),而S0、S1均在彼此的傳送范圍內(nèi)。當(dāng)S0正傳送數(shù)據(jù)給R0時(shí),S1卻不能將數(shù)據(jù)傳送給R1,因?yàn)镾1會(huì)檢測(cè)到S0正在發(fā)送數(shù)據(jù),如果其他也發(fā)送數(shù)據(jù)的話,就會(huì)影響S0的數(shù)據(jù)發(fā)送。但事實(shí)上,S1是可以正確無(wú)誤地將數(shù)據(jù)發(fā)給R1的,因?yàn)镽1并不在S0的傳送范圍內(nèi)。

圖3 暴露節(jié)點(diǎn)問(wèn)題示意圖
為了解決暴露節(jié)點(diǎn)問(wèn)題,802.11 DCF協(xié)議采用RTS/CTS機(jī)制[9]。當(dāng)一個(gè)節(jié)點(diǎn)偵聽(tīng)到鄰近節(jié)點(diǎn)發(fā)出的RTS,但沒(méi)有偵聽(tīng)到相對(duì)應(yīng)CTS時(shí),判定自身是一個(gè)暴露節(jié)點(diǎn),所以允許傳送數(shù)據(jù)到其他鄰近節(jié)點(diǎn)。這個(gè)節(jié)點(diǎn)可以成功送出RTS,但相應(yīng)的CTS不一定能被成功收到。當(dāng)S1收到S0發(fā)出的RTS,但未能收到對(duì)應(yīng)CTS時(shí),S1可推測(cè)自己是暴露節(jié)點(diǎn),則可同時(shí)發(fā)送數(shù)據(jù)。此時(shí),雖然S1發(fā)出的數(shù)據(jù)不會(huì)沖突,但其他節(jié)點(diǎn)發(fā)給S1的數(shù)據(jù)(CTS/ACK)卻可能與S0發(fā)出的數(shù)據(jù)沖突,影響傳輸質(zhì)量。
本實(shí)驗(yàn)的任務(wù)是觀察RTS/CTS機(jī)制對(duì)暴露節(jié)點(diǎn)問(wèn)題的影響。無(wú)線網(wǎng)絡(luò)暴露節(jié)點(diǎn)問(wèn)題與傳輸距離有關(guān),NS2提供TwoRayGround、FreeSpace和Shadowing 3種無(wú)線傳輸模型預(yù)測(cè)接收端所收到的信號(hào)強(qiáng)度,以此判斷傳輸數(shù)據(jù)能否成功被接收。本實(shí)驗(yàn)采用TwoRayGround模型,它主要考慮發(fā)送端到接收端直線距離的路徑損耗和地面反射因素,模型[10]為:
其中:P為接收端的接收信號(hào)強(qiáng)度,Pt為傳送功率,Gt為傳送端天線增益,Gr為接收端天線增益,ht為傳送天線高度,hr為接收天線高度,d為傳送端到接收端的直線距離。
仿真拓?fù)淙鐖D3所示。建立500 m×500 m的正方形區(qū)域仿真環(huán)境,S0、S1、R0、R1各節(jié)點(diǎn)之間的距離為100 m,節(jié)點(diǎn)之間的偵聽(tīng)范圍為150 m,分組有效傳送距離為120 m,節(jié)點(diǎn)S0和R0之間建立一條udp連接,節(jié)點(diǎn)S0在1.5~15.0 s之間采用1 Mbit/s的速率向R0發(fā)送分組大小為1 000 Byte的CBR流,節(jié)點(diǎn)S1在10.0~30 s之間采用1 Mbit/s的速率向R1發(fā)送分組大小為1 000 Byte的CBR流。采用TwoRayGround模型,分組傳送距離為120 m,使用NS2提供的threshold工具[11],計(jì)算得到傳送功率為0.281838,發(fā)送頻率為9.14e+8,發(fā)送端天線高度為1.5,接收端天線高度為1.5,發(fā)送端天線增益為1,接收端增益為1,要設(shè)定RxThresh_為6.88081e-9。
默認(rèn)情況下,NS2所有的無(wú)線傳輸都使用了RTS/CTS機(jī)制[12],通過(guò)在模擬腳本文件中設(shè)置RTSThreshold_的值來(lái)決定是否使用RTS/CTS機(jī)制。當(dāng)設(shè)置Mac/802_11 set RTSThreshold_為3 000時(shí),不使用RTS/CTS機(jī)制;當(dāng)Mac/802_11 set RTSThreshold_為0時(shí),使用RTS/CTS機(jī)制。通過(guò)修改此值,分別執(zhí)行模擬并保存發(fā)送記錄和接收記錄文件,從各結(jié)點(diǎn)的發(fā)送記錄文件和接收記錄文件得知,當(dāng)未使用RTS/CTS時(shí),結(jié)點(diǎn)S0送出1 688個(gè)封包,結(jié)點(diǎn)S1送出1 626個(gè)封包,但結(jié)點(diǎn)R0只收到891個(gè)從S0送出的封包,結(jié)點(diǎn)R1只收到819個(gè)從S1送出的封包。當(dāng)使用RTS/CTS時(shí),結(jié)點(diǎn)S0送出1 688個(gè)封包,結(jié)點(diǎn)S1送出1 626個(gè)封包,但結(jié)點(diǎn)R0收到756個(gè)從S0送出的封包,結(jié)點(diǎn)R1收到758個(gè)從S1送出的封包。
同時(shí),針對(duì)仿真結(jié)果trace文件,編寫(xiě)awk數(shù)據(jù)分析腳本,測(cè)得2種情況下S0→R0和S1→R1之間的吞吐量如圖4、圖5所示??梢园l(fā)現(xiàn),在1.5~10 s時(shí),由于只有S0向R0發(fā)送CBR流,所以S0→R0之間的流量比較穩(wěn)定。10 s之后,由于S1向R1發(fā)送CBR流,發(fā)生暴露節(jié)點(diǎn)問(wèn)題,網(wǎng)絡(luò)流量下降,而17 s之后,S0停止發(fā)送CBR流,暴露節(jié)點(diǎn)問(wèn)題消失,S1→R1之間的吞吐量逐漸穩(wěn)定。可以看出,圖5與圖4比較沒(méi)有明顯改善,這說(shuō)明使用RTS/CTS并不能有效地解決暴露節(jié)點(diǎn)問(wèn)題。

圖4 未采用RTS/CTS機(jī)制的暴露節(jié)點(diǎn)現(xiàn)象

圖5 采用RTS/CTS機(jī)制的暴露節(jié)點(diǎn)現(xiàn)象
利用NS2網(wǎng)絡(luò)協(xié)議虛擬仿真平臺(tái),能完成網(wǎng)絡(luò)課程教學(xué)過(guò)程中的算法模擬,或通過(guò)對(duì)C++代碼的修改,自由實(shí)現(xiàn)協(xié)議或者算法仿真,通過(guò)觀察實(shí)驗(yàn)結(jié)果能直接驗(yàn)證方案的可行性和優(yōu)劣。本文構(gòu)建的基于虛擬機(jī)技術(shù)的NS2網(wǎng)絡(luò)協(xié)議仿真平臺(tái),簡(jiǎn)化了實(shí)驗(yàn)環(huán)境的建立過(guò)程,平臺(tái)具有可移動(dòng)性、易用性和較強(qiáng)的實(shí)用性,對(duì)計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)及協(xié)議研究有一定促進(jìn)作用。
[1] 林元乖.創(chuàng)新型計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)研究[J].實(shí)驗(yàn)技術(shù)與管理,2010,27(12):173-176.
[2] 晏弼成,何曼娜,蔡文輝.網(wǎng)絡(luò)實(shí)驗(yàn)教學(xué)模式改革的研究與實(shí)踐[J].實(shí)驗(yàn)室研究與探索,2007,26(9):93-95.
[3] 歐陽(yáng)星明,姚小龍,謝欣榮.網(wǎng)絡(luò)虛擬實(shí)驗(yàn)室的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004(2):185-186.
[4] 沈敏虎,查德平,劉百祥,等.虛擬機(jī)網(wǎng)絡(luò)部署與管理研究[J].實(shí)驗(yàn)技術(shù)與管理,2011,28(5):311-313.
[5] 方路平,劉世華,陳盼.NS-2網(wǎng)絡(luò)模擬基礎(chǔ)與應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2008.
[6] 徐雷鳴,龐博,趙耀.NS與網(wǎng)絡(luò)模擬[M].北京:人民郵電出版社,2003.
[7] 劉乃安.無(wú)線局域網(wǎng)原理、技術(shù)與應(yīng)用[M].西安:西安電了科技大學(xué)出版社,2004.
[8] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].4版.北京:電子工業(yè)出版社,2004.
[9] 柯志亨,程榮祥,鄧德雋.NS2仿真實(shí)驗(yàn):多媒體和無(wú)線網(wǎng)絡(luò)通信[M].北京:電子工業(yè)出版社,2009.
[10] 蔡群英,黃鎮(zhèn)建.基于NS2的無(wú)線網(wǎng)絡(luò)隱藏節(jié)點(diǎn)問(wèn)題仿真實(shí)驗(yàn)[J].實(shí)驗(yàn)室研究與探索,2009,28(11):74-76.
[11] 李波,杜德慧,李飛.無(wú)線網(wǎng)絡(luò)站點(diǎn)隱藏問(wèn)題在NS2下的模擬和分析[J].微計(jì)算機(jī)信息,2006,7(3):122-125.