周德榮,夏 齡,舒 濤, 田關(guān)偉
(四川民族學(xué)院 網(wǎng)絡(luò)信息中心,四川 康定 626001)
計算機網(wǎng)絡(luò)課程作為高校計算機類專業(yè)和電氣信息類專業(yè)的核心課程之一,涉及大量的概念、原理以及各種協(xié)議和算法,這些內(nèi)容大多抽象、晦澀,單純通過理論教學(xué)難以讓學(xué)生理解和掌握。實踐教學(xué)是使學(xué)生學(xué)好計算機網(wǎng)絡(luò)基本原理和技術(shù)的有效方法[1-2]。
目前,網(wǎng)絡(luò)實驗室主要有2類:一類是由傳統(tǒng)的計算機機房改建而成,實驗設(shè)備主要由終端計算機和軟件構(gòu)成,側(cè)重網(wǎng)絡(luò)基礎(chǔ)應(yīng)用技術(shù)訓(xùn)練,主要開設(shè)Web、DNS、FTP,DHCP等常規(guī)網(wǎng)絡(luò)服務(wù)及應(yīng)用的實驗;另一類是專門的網(wǎng)絡(luò)實驗室[3],實驗設(shè)備有交換機、路由器、服務(wù)器、終端機等,主要完成交換機配置、路由器配置、NAT轉(zhuǎn)換,網(wǎng)絡(luò)互聯(lián)等實驗,偏重組網(wǎng)技術(shù)實驗。2類實驗室均存在以下不足:
(1) 投入經(jīng)費大、維護困難;
(2) 對網(wǎng)絡(luò)協(xié)議及算法的學(xué)習(xí)輔助力度不夠;
(3) 實驗室設(shè)施、設(shè)備不能及時更新,不能適應(yīng)最新網(wǎng)絡(luò)知識的學(xué)習(xí)和實踐能力培養(yǎng)的要求;
(4) 實驗室位置固定,不利于學(xué)生課后做實驗。
針對以上問題,本文提出采用虛擬機軟件和NS2仿真軟件構(gòu)建網(wǎng)絡(luò)協(xié)議仿真實驗平臺,并將其運用于計算機網(wǎng)絡(luò)的實踐教學(xué)。
利用虛擬機軟件,可以在一臺物理計算機上虛擬出若干臺獨立的邏輯計算機(即虛擬機)[4]。虛擬機是一種嚴密隔離的軟件容器,它可以運行操作系統(tǒng)和應(yīng)用程序,完全類似物理計算機。VMware虛擬機具有以下特點:
(1) 兼容性好:虛擬機與所有標(biāo)準的X86操作系統(tǒng)、應(yīng)用程序、設(shè)備驅(qū)動程序完全兼容,支持多種操作系統(tǒng),如Windows、Linux、FreeBSD、NetWare等;
(2) 隔離性好:虛擬機共享一臺物理計算機資源,但彼此完全隔離,如果一臺虛擬機崩潰,其他虛擬機完全不受影響,在安全性方面有一定優(yōu)勢;
(3) 可移動性好:虛擬機實質(zhì)上是一個軟件容器,它將虛擬硬件資源、操作系統(tǒng)及所有應(yīng)用程序封裝在一個軟件包內(nèi),由物理硬盤上的配置文件(*.vmx)、磁盤文件(*.vmdk)、CMOS配置信息(*.nvram)、日志文件(*.log)和*.vmx.lck(啟動時生成)等5個文件組成,具備很強的可移動性和易管理性;
(4) 系統(tǒng)安裝簡便、克隆快捷:VMware虛擬機虛擬出來的硬件具有固定型號,與物理計算機無關(guān),安裝速度快,且不易產(chǎn)生設(shè)備兼容問題;通過已建立的虛擬機可快速產(chǎn)生新的虛擬機。
NS2是加州大學(xué)伯克利分校開發(fā)的離散事件驅(qū)動的網(wǎng)絡(luò)模擬器[6]。NS2免費使用、開放源碼、支持眾多協(xié)議,并且提供豐富的測試腳本,具有良好的擴展性和廣泛網(wǎng)絡(luò)用戶支持等特點,已成為最流行的網(wǎng)絡(luò)仿真軟件。NS2包含仿真事件調(diào)度器、網(wǎng)絡(luò)組件對象庫以及網(wǎng)絡(luò)構(gòu)建模型庫等。事件調(diào)度器計算仿真時間,激活事件隊列中的當(dāng)前事件,執(zhí)行一些相關(guān)的事件;網(wǎng)絡(luò)組件通過傳遞分組來相互通信,所有需要花費仿真時間來處理分組的網(wǎng)絡(luò)組件都要使用事件調(diào)度器。
NS2中常用的網(wǎng)絡(luò)構(gòu)件有節(jié)點、鏈路、代理、應(yīng)用、隊列、跟蹤對象等。節(jié)點主要用于模擬實際網(wǎng)絡(luò)上的主機、交換機、路由器等網(wǎng)絡(luò)設(shè)備,節(jié)點可配置節(jié)點類型、節(jié)點地址類型、路由算法等屬性;鏈路是將節(jié)點連接起來的一條通路,通過鏈路中的隊列和延時實現(xiàn)實際網(wǎng)絡(luò)中的包緩沖和傳輸延時;代理可以用來模擬傳輸層的TCP、UDP協(xié)議,也可用來模擬網(wǎng)絡(luò)業(yè)務(wù)流量,如CBR、VBR等;應(yīng)用對象用來模擬各種應(yīng)用層對象,如FTP、HTTP等;跟蹤對象用于記錄并存儲NS2中的模擬結(jié)果,可配置需要跟蹤的一些參數(shù),將其寫入跟蹤日志文件。
NS2由OTCL和C++兩種編程語言實現(xiàn)[7],所有的構(gòu)件已編寫成相應(yīng)的C++類和OTCL對象。C++類對象是算法和協(xié)議的具體實現(xiàn);OTCL對象是用戶接口對象,用于編寫模擬腳本,主要是建立OTCL對象、設(shè)置屬性,通過事件調(diào)度器調(diào)度網(wǎng)絡(luò)模擬事件的發(fā)生。針對實際要求,采用構(gòu)件對象配置研究項目的網(wǎng)絡(luò)系統(tǒng)模型進行仿真模擬。
采用NS2進行網(wǎng)絡(luò)模擬的基本過程如圖1所示。網(wǎng)絡(luò)仿真實驗涉及2個層次:基于OTCL編程的層次、C++和OTCL編程的層次。前者利用NS2現(xiàn)有網(wǎng)絡(luò)組件編寫OTCL腳本實現(xiàn)仿真,不需要擴展網(wǎng)絡(luò)組件;后者是對第一個層次的擴展,向NS2中添加所需的新的C++和OTCL類,編寫新的OTCL腳本來實現(xiàn)仿真模擬操作。
圖1 NS2模擬仿真的基本過程
網(wǎng)絡(luò)協(xié)議仿真實驗平臺是通過一系列的軟件實現(xiàn)的(見圖2)。平臺基于X86硬件平臺構(gòu)建,采用主流的Windows操作系統(tǒng),虛擬機軟件采用VMware Workstation 9.0,仿真軟件采用NS2-allinone-2.34。由于NS2必須運行于UNIX/Linux平臺,因而虛擬機中網(wǎng)絡(luò)仿真平臺操作系統(tǒng)采用Ubuntu10.04。
圖2 網(wǎng)絡(luò)協(xié)議仿真平臺的層次結(jié)構(gòu)
網(wǎng)絡(luò)協(xié)議仿真實驗平臺構(gòu)建過程如下:
(1) 在Windows平臺上安裝虛擬機軟件VMware Workstation 9.0,進行簡單配置,確保虛擬機和物理機間能正常通信;
(2) 在VMware Workstation 9.0中建立虛擬機,安裝Ubuntu10.04操作系統(tǒng),配置網(wǎng)絡(luò),系統(tǒng)環(huán)境中安裝gcc,make 和Nam相關(guān)庫文件,如libxmu-dev;
(3) 進入Ubuntu10.04操作系統(tǒng),下載仿真軟件NS2-allinone-2.34.tar.gz,解壓執(zhí)行NS2-allinone-2.34/ns-2.34/./install進行安裝,配置系統(tǒng)環(huán)境變量;
(4) 測試安裝成功與否,若成功,則對虛擬機進行備份,方便實驗環(huán)境遷移,或在進行實驗前對虛擬機建立快照,防止進行網(wǎng)絡(luò)協(xié)議仿真時破壞實驗環(huán)境。
暴露節(jié)點問題是指當(dāng)一個節(jié)點要發(fā)送數(shù)據(jù)給另一個節(jié)點時,因偵聽到鄰近節(jié)點正在發(fā)送數(shù)據(jù)而推遲自身發(fā)送數(shù)據(jù),因而產(chǎn)生不必要的延時,影響節(jié)點的數(shù)據(jù)傳送[8]。如圖3所示,有4個節(jié)點S0、S1、R0、R1,其中R0、R1都不在對方的傳送范圍內(nèi),而S0、S1均在彼此的傳送范圍內(nèi)。當(dāng)S0正傳送數(shù)據(jù)給R0時,S1卻不能將數(shù)據(jù)傳送給R1,因為S1會檢測到S0正在發(fā)送數(shù)據(jù),如果其他也發(fā)送數(shù)據(jù)的話,就會影響S0的數(shù)據(jù)發(fā)送。但事實上,S1是可以正確無誤地將數(shù)據(jù)發(fā)給R1的,因為R1并不在S0的傳送范圍內(nèi)。
圖3 暴露節(jié)點問題示意圖
為了解決暴露節(jié)點問題,802.11 DCF協(xié)議采用RTS/CTS機制[9]。當(dāng)一個節(jié)點偵聽到鄰近節(jié)點發(fā)出的RTS,但沒有偵聽到相對應(yīng)CTS時,判定自身是一個暴露節(jié)點,所以允許傳送數(shù)據(jù)到其他鄰近節(jié)點。這個節(jié)點可以成功送出RTS,但相應(yīng)的CTS不一定能被成功收到。當(dāng)S1收到S0發(fā)出的RTS,但未能收到對應(yīng)CTS時,S1可推測自己是暴露節(jié)點,則可同時發(fā)送數(shù)據(jù)。此時,雖然S1發(fā)出的數(shù)據(jù)不會沖突,但其他節(jié)點發(fā)給S1的數(shù)據(jù)(CTS/ACK)卻可能與S0發(fā)出的數(shù)據(jù)沖突,影響傳輸質(zhì)量。
本實驗的任務(wù)是觀察RTS/CTS機制對暴露節(jié)點問題的影響。無線網(wǎng)絡(luò)暴露節(jié)點問題與傳輸距離有關(guān),NS2提供TwoRayGround、FreeSpace和Shadowing 3種無線傳輸模型預(yù)測接收端所收到的信號強度,以此判斷傳輸數(shù)據(jù)能否成功被接收。本實驗采用TwoRayGround模型,它主要考慮發(fā)送端到接收端直線距離的路徑損耗和地面反射因素,模型[10]為:
其中:P為接收端的接收信號強度,Pt為傳送功率,Gt為傳送端天線增益,Gr為接收端天線增益,ht為傳送天線高度,hr為接收天線高度,d為傳送端到接收端的直線距離。
仿真拓撲如圖3所示。建立500 m×500 m的正方形區(qū)域仿真環(huán)境,S0、S1、R0、R1各節(jié)點之間的距離為100 m,節(jié)點之間的偵聽范圍為150 m,分組有效傳送距離為120 m,節(jié)點S0和R0之間建立一條udp連接,節(jié)點S0在1.5~15.0 s之間采用1 Mbit/s的速率向R0發(fā)送分組大小為1 000 Byte的CBR流,節(jié)點S1在10.0~30 s之間采用1 Mbit/s的速率向R1發(fā)送分組大小為1 000 Byte的CBR流。采用TwoRayGround模型,分組傳送距離為120 m,使用NS2提供的threshold工具[11],計算得到傳送功率為0.281838,發(fā)送頻率為9.14e+8,發(fā)送端天線高度為1.5,接收端天線高度為1.5,發(fā)送端天線增益為1,接收端增益為1,要設(shè)定RxThresh_為6.88081e-9。
默認情況下,NS2所有的無線傳輸都使用了RTS/CTS機制[12],通過在模擬腳本文件中設(shè)置RTSThreshold_的值來決定是否使用RTS/CTS機制。當(dāng)設(shè)置Mac/802_11 set RTSThreshold_為3 000時,不使用RTS/CTS機制;當(dāng)Mac/802_11 set RTSThreshold_為0時,使用RTS/CTS機制。通過修改此值,分別執(zhí)行模擬并保存發(fā)送記錄和接收記錄文件,從各結(jié)點的發(fā)送記錄文件和接收記錄文件得知,當(dāng)未使用RTS/CTS時,結(jié)點S0送出1 688個封包,結(jié)點S1送出1 626個封包,但結(jié)點R0只收到891個從S0送出的封包,結(jié)點R1只收到819個從S1送出的封包。當(dāng)使用RTS/CTS時,結(jié)點S0送出1 688個封包,結(jié)點S1送出1 626個封包,但結(jié)點R0收到756個從S0送出的封包,結(jié)點R1收到758個從S1送出的封包。
同時,針對仿真結(jié)果trace文件,編寫awk數(shù)據(jù)分析腳本,測得2種情況下S0→R0和S1→R1之間的吞吐量如圖4、圖5所示??梢园l(fā)現(xiàn),在1.5~10 s時,由于只有S0向R0發(fā)送CBR流,所以S0→R0之間的流量比較穩(wěn)定。10 s之后,由于S1向R1發(fā)送CBR流,發(fā)生暴露節(jié)點問題,網(wǎng)絡(luò)流量下降,而17 s之后,S0停止發(fā)送CBR流,暴露節(jié)點問題消失,S1→R1之間的吞吐量逐漸穩(wěn)定??梢钥闯?圖5與圖4比較沒有明顯改善,這說明使用RTS/CTS并不能有效地解決暴露節(jié)點問題。
圖4 未采用RTS/CTS機制的暴露節(jié)點現(xiàn)象
圖5 采用RTS/CTS機制的暴露節(jié)點現(xiàn)象
利用NS2網(wǎng)絡(luò)協(xié)議虛擬仿真平臺,能完成網(wǎng)絡(luò)課程教學(xué)過程中的算法模擬,或通過對C++代碼的修改,自由實現(xiàn)協(xié)議或者算法仿真,通過觀察實驗結(jié)果能直接驗證方案的可行性和優(yōu)劣。本文構(gòu)建的基于虛擬機技術(shù)的NS2網(wǎng)絡(luò)協(xié)議仿真平臺,簡化了實驗環(huán)境的建立過程,平臺具有可移動性、易用性和較強的實用性,對計算機網(wǎng)絡(luò)教學(xué)及協(xié)議研究有一定促進作用。
[1] 林元乖.創(chuàng)新型計算機網(wǎng)絡(luò)實驗教學(xué)研究[J].實驗技術(shù)與管理,2010,27(12):173-176.
[2] 晏弼成,何曼娜,蔡文輝.網(wǎng)絡(luò)實驗教學(xué)模式改革的研究與實踐[J].實驗室研究與探索,2007,26(9):93-95.
[3] 歐陽星明,姚小龍,謝欣榮.網(wǎng)絡(luò)虛擬實驗室的設(shè)計與實現(xiàn)[J].計算機工程,2004(2):185-186.
[4] 沈敏虎,查德平,劉百祥,等.虛擬機網(wǎng)絡(luò)部署與管理研究[J].實驗技術(shù)與管理,2011,28(5):311-313.
[5] 方路平,劉世華,陳盼.NS-2網(wǎng)絡(luò)模擬基礎(chǔ)與應(yīng)用[M].北京:國防工業(yè)出版社,2008.
[6] 徐雷鳴,龐博,趙耀.NS與網(wǎng)絡(luò)模擬[M].北京:人民郵電出版社,2003.
[7] 劉乃安.無線局域網(wǎng)原理、技術(shù)與應(yīng)用[M].西安:西安電了科技大學(xué)出版社,2004.
[8] 謝希仁.計算機網(wǎng)絡(luò)[M].4版.北京:電子工業(yè)出版社,2004.
[9] 柯志亨,程榮祥,鄧德雋.NS2仿真實驗:多媒體和無線網(wǎng)絡(luò)通信[M].北京:電子工業(yè)出版社,2009.
[10] 蔡群英,黃鎮(zhèn)建.基于NS2的無線網(wǎng)絡(luò)隱藏節(jié)點問題仿真實驗[J].實驗室研究與探索,2009,28(11):74-76.
[11] 李波,杜德慧,李飛.無線網(wǎng)絡(luò)站點隱藏問題在NS2下的模擬和分析[J].微計算機信息,2006,7(3):122-125.