劉 廣
【摘要】利用網(wǎng)絡(luò)仿真工具搭建仿真平臺(tái),通過模擬環(huán)境下的實(shí)驗(yàn)提高學(xué)生對(duì)計(jì)算機(jī)網(wǎng)絡(luò)知識(shí)的理解能力,充分培養(yǎng)學(xué)生的創(chuàng)新能力,將是高校計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)的一種發(fā)展趨勢(shì)。文章通過分析網(wǎng)絡(luò)仿真工具NS2的特點(diǎn)、原理、工作流程,以及NS2在實(shí)驗(yàn)教學(xué)中的具體實(shí)例,闡述了網(wǎng)絡(luò)仿真工具在教學(xué)中的應(yīng)用及其意義。
【關(guān)鍵詞】網(wǎng)絡(luò)仿真;NS2;計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)
【中圖分類號(hào)】G420 【文獻(xiàn)標(biāo)識(shí)碼】A 【論文編號(hào)】1009—8097(2009)10—0111—03
一 引言
在以信息化帶動(dòng)工業(yè)化和工業(yè)化促進(jìn)信息化的現(xiàn)代化發(fā)展進(jìn)程中,計(jì)算機(jī)網(wǎng)絡(luò)扮演了越來越重要的角色。為了適應(yīng)信息社會(huì)對(duì)人才培養(yǎng)的需要,許多高校都開設(shè)了計(jì)算機(jī)網(wǎng)絡(luò)課程。但在一般的計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)過程中,僅通過課堂學(xué)習(xí)或書本知識(shí)的學(xué)習(xí),學(xué)生對(duì)網(wǎng)絡(luò)知識(shí)的理解只能停留在比較抽象的認(rèn)知層面。即使學(xué)生利用設(shè)備進(jìn)行實(shí)際組網(wǎng)實(shí)驗(yàn),但由于硬件設(shè)備本身的具體特性,屏蔽了網(wǎng)絡(luò)的底層運(yùn)作原理,這使得學(xué)生對(duì)網(wǎng)絡(luò)底層的具體運(yùn)作依然無法深入的理解。對(duì)于這些問題,網(wǎng)絡(luò)仿真為我們提供了一個(gè)很好的解決思路。網(wǎng)絡(luò)仿真工具利用數(shù)學(xué)建模和統(tǒng)計(jì)分析的方法模擬網(wǎng)絡(luò)行為,它通過建立網(wǎng)絡(luò)設(shè)備、鏈路、協(xié)議和協(xié)議模型,并模擬網(wǎng)絡(luò)流量傳輸,從而驗(yàn)證網(wǎng)絡(luò)協(xié)議的正確性或獲取網(wǎng)絡(luò)設(shè)計(jì)和優(yōu)化的性能數(shù)據(jù)。利用網(wǎng)絡(luò)仿真工具構(gòu)建仿真平臺(tái),我們可以演示計(jì)算機(jī)網(wǎng)絡(luò)課程涉及到的原理、協(xié)議和算法等,讓學(xué)生可以深入到網(wǎng)絡(luò)技術(shù)的核心,這不僅可以充分調(diào)動(dòng)學(xué)生的積極性,而且可以使學(xué)生加深對(duì)計(jì)算機(jī)網(wǎng)絡(luò)原理的理解程度。此外,通過使用網(wǎng)絡(luò)仿真平臺(tái),我們可以進(jìn)行大規(guī)模網(wǎng)絡(luò)模擬,從而使學(xué)生能夠有機(jī)會(huì)接觸和了解大規(guī)模網(wǎng)絡(luò)的運(yùn)行。同時(shí),通過仿真實(shí)驗(yàn)對(duì)各種新老協(xié)議或算法進(jìn)行比較學(xué)習(xí),可以讓學(xué)生對(duì)網(wǎng)絡(luò)協(xié)議或算法得到更深入的理解。
本文將詳細(xì)介紹開源的網(wǎng)絡(luò)仿真工具NS2的原理及其工作流程,并結(jié)合實(shí)例分析闡述如何在教學(xué)中使用NS2,以提高學(xué)生的學(xué)習(xí)積極性并使學(xué)生能對(duì)網(wǎng)絡(luò)的基本原理和運(yùn)作有更深入的認(rèn)識(shí)。
二 NS2簡(jiǎn)介
自從仿真技術(shù)出現(xiàn)以來,各種網(wǎng)絡(luò)仿真工具被研發(fā)并廣泛的使用?,F(xiàn)有的網(wǎng)絡(luò)仿真工具中,有專門針對(duì)特定網(wǎng)絡(luò)環(huán)境的仿真工具、有專門測(cè)試網(wǎng)絡(luò)協(xié)議算法性能的仿真工具,也有囊括了現(xiàn)有常用的網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)仿真工具,如NS2、OPNET等。目前,使用較多的網(wǎng)絡(luò)仿真工具主要有NS2(Network Simulator Version 2)和 OPNET。OPNET屬于商業(yè)化軟件,由于其采購(gòu)成本較高,在中國(guó)高校里較少使用。
NS2是一個(gè)開放源碼的多協(xié)議網(wǎng)絡(luò)模擬軟件,來源于1989年的Real Network Simulator項(xiàng)目,經(jīng)過多年的發(fā)展,于1995年得到施樂公司(Xerox)的支持,加入VINT項(xiàng)目。NS2一直以來都在吸收世界各地研究者的成果,包括UCB、CMU等大學(xué)和SUN等公司的無線網(wǎng)絡(luò)方面的代碼,因此NS2一直都在不斷的被更新和完善。
NS2是一個(gè)面向?qū)ο蟮?、離散事件驅(qū)動(dòng)的網(wǎng)絡(luò)環(huán)境模擬工具,可以完整地模擬整個(gè)網(wǎng)絡(luò)環(huán)境。NS2使用一整套C++類庫(kù)實(shí)現(xiàn)了絕大多數(shù)常見的網(wǎng)絡(luò)協(xié)議以及鏈路層的模型,如:有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)的TCP、UDP、路由、多播等多種協(xié)議模型,利用這些類庫(kù)的實(shí)例就可以搭建起整個(gè)網(wǎng)絡(luò)的模型,而且包括詳盡的細(xì)節(jié)實(shí)現(xiàn)。
三 NS2的原理及工作流程
NS2使用了兩種編程語(yǔ)言,OTcl(具有面向?qū)ο筇匦缘腡cl腳本程序設(shè)計(jì)語(yǔ)言)和C++,NS2采用這兩種語(yǔ)言是因?yàn)榉抡婀ぞ哂袃煞矫娴氖虑橐?一方面,具體協(xié)議的模擬和實(shí)現(xiàn),這需要一種能高效率的處理字節(jié)、報(bào)頭等信息的程序設(shè)計(jì)語(yǔ)言,即對(duì)運(yùn)行速度非常重要,而運(yùn)行模擬環(huán)境的時(shí)間、尋找和修復(fù)Bug的時(shí)間,以及重新編譯和運(yùn)行的時(shí)間不是很重要,在這種情況下,C++語(yǔ)言是非常合適的;另一方面,許多網(wǎng)絡(luò)中的實(shí)驗(yàn)或研究工作主要是圍繞著網(wǎng)絡(luò)組件和環(huán)境的具體參數(shù)的設(shè)置和改變而進(jìn)行的,需要在短時(shí)間內(nèi)快速的開發(fā)或模擬出所需要的網(wǎng)絡(luò)環(huán)境,并且方便的修改和發(fā)現(xiàn),在這種情況下,網(wǎng)絡(luò)環(huán)境設(shè)置的時(shí)間就顯得重要了,而腳本語(yǔ)言在這方面有很大的優(yōu)勢(shì),具有面向?qū)ο筇匦缘腡cl腳本語(yǔ)言可以充分的滿足此需求。
C++和OTcl兩種語(yǔ)言的對(duì)象和變量是通過TclCL關(guān)聯(lián)起來的,C++的類和對(duì)象為編譯類和編譯對(duì)象,相反地OTcl的類和對(duì)象為解釋類和解釋對(duì)象,TclCL是在OTcl基礎(chǔ)上的封裝。通過下面的NS2架構(gòu)圖來理解幾者之間的關(guān)系。
對(duì)NS2使用者來說,OTcl腳本語(yǔ)言用于實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)洳糠?OTcl是架構(gòu)在Tcl之上的面向?qū)ο蠛蟮难由?事件調(diào)度器和網(wǎng)絡(luò)組件這兩部分主要用C++編寫。C++在最底層則是表示NS2的核心主要就是C++。TclCL是連接OTcl和C++的橋梁,最后搭配用戶接口就構(gòu)成了NS2。
NS2的工作流程就是使用OTcl語(yǔ)言編寫腳本,模擬要解決問題的模型的處理過程,通過OTcl語(yǔ)言解釋器解釋執(zhí)行,使用NS2仿真庫(kù)進(jìn)行編譯和仿真,輸出仿真結(jié)果,根據(jù)仿真的結(jié)果記錄,可進(jìn)行相關(guān)內(nèi)容的分析,生成網(wǎng)絡(luò)拓?fù)鋱D或者得到數(shù)據(jù)的可視化圖表。對(duì)于特殊情況或研發(fā)的新協(xié)議,可以修改、編寫C++代碼,提供新的類庫(kù)以滿足試驗(yàn)需要。NS2的工作流程如圖2。
四 NS2在實(shí)驗(yàn)教學(xué)中的應(yīng)用
1 NS2在實(shí)驗(yàn)教學(xué)中的應(yīng)用
本文以TCP擁塞控制的隨機(jī)及早檢測(cè)(Random Early Detection,RED)為例,利用仿真工具NS2進(jìn)行建模,然后運(yùn)行得出結(jié)果,對(duì)結(jié)果數(shù)據(jù)進(jìn)行分析,并以圖形方式展示出來,從而讓學(xué)生能夠深入了解RED的運(yùn)行機(jī)制以及其性能。
下面對(duì)RED做一個(gè)簡(jiǎn)要的介紹,RED是隨機(jī)及早檢測(cè)算法,是一種擁塞避免機(jī)制,它在每個(gè)路由器上檢查自己的隊(duì)列,當(dāng)它檢測(cè)到擁塞即將發(fā)生時(shí),就通知源調(diào)整擁塞窗口。
實(shí)驗(yàn)場(chǎng)景如下:構(gòu)建如圖3網(wǎng)絡(luò)拓?fù)?RED隊(duì)列位于路由器r1和r2之間的鏈路上,可以容納25個(gè)數(shù)據(jù)包,通過觀察RED隊(duì)列如何通過測(cè)量當(dāng)前和平均隊(duì)列的動(dòng)態(tài)長(zhǎng)度,從而避免擁塞的出現(xiàn)。
實(shí)驗(yàn)結(jié)束后,利用圖形工具XGraph對(duì)仿真產(chǎn)生的數(shù)據(jù)以圖形方式輸出,如圖4。其中紅線是隊(duì)列的瞬時(shí)長(zhǎng)度,綠線是隊(duì)列的加權(quán)動(dòng)態(tài)平均長(zhǎng)度。通過試驗(yàn)觀察,可以讓學(xué)生直觀深入的了解RED是如何工作的,即RED隊(duì)列瞬時(shí)長(zhǎng)度隨著平均長(zhǎng)度上下波動(dòng),產(chǎn)生這種效果是由于當(dāng)隊(duì)列長(zhǎng)度超過某個(gè)丟棄級(jí)別時(shí),按照一定的丟棄概率將到達(dá)的分組丟棄,以避免擁塞出現(xiàn)。
2 利用NS2對(duì)改進(jìn)的或自己新設(shè)計(jì)的協(xié)議進(jìn)行驗(yàn)證
在計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)中,我們不僅要讓學(xué)生充分理解網(wǎng)絡(luò)的基本知識(shí)和運(yùn)作原理,還應(yīng)該積極引導(dǎo)學(xué)生通過試驗(yàn)對(duì)現(xiàn)有協(xié)議進(jìn)行對(duì)比學(xué)習(xí),了解現(xiàn)有協(xié)議的優(yōu)缺點(diǎn),盡可能的啟發(fā)學(xué)生去改進(jìn)現(xiàn)有協(xié)議或提出新的協(xié)議,充分調(diào)動(dòng)學(xué)生的創(chuàng)造性。
這里通過列舉一個(gè)簡(jiǎn)單的實(shí)例,說明如何通過編碼在NS2中創(chuàng)建一個(gè)新的協(xié)議,并對(duì)新建協(xié)議進(jìn)行驗(yàn)證。
實(shí)驗(yàn)場(chǎng)景如下:假設(shè)有一個(gè)通過UDP進(jìn)行通訊的多媒體應(yīng)用程序,數(shù)據(jù)發(fā)送者和接受者可以通過自動(dòng)協(xié)商工作在五種不同的編碼和傳輸速率刻度值上,而具體采用的刻度值通過網(wǎng)絡(luò)擁塞情況決定。五種刻度值設(shè)為:0-4,發(fā)送者開始以刻度值為0的速率工作,并且根據(jù)接收者返回的刻度值調(diào)整自己發(fā)送的速率。為了監(jiān)控網(wǎng)絡(luò)擁塞,設(shè)計(jì)一個(gè)簡(jiǎn)單的周期發(fā)送的監(jiān)控?cái)?shù)據(jù)報(bào),在一個(gè)周期內(nèi),如果監(jiān)測(cè)數(shù)據(jù)包丟失了,則認(rèn)為網(wǎng)絡(luò)出現(xiàn)擁塞,數(shù)據(jù)傳送雙方降低自己的刻度值,減慢編碼和傳輸速率,如果沒有監(jiān)控?cái)?shù)據(jù)包丟失,則增加刻度值,加大編碼和傳輸速率。
在這個(gè)實(shí)驗(yàn)場(chǎng)景中,UDP代理分發(fā)和傳送數(shù)據(jù)報(bào),應(yīng)用層通訊需要的所有信息要求UDP代理作為一個(gè)數(shù)據(jù)流進(jìn)行處理,而現(xiàn)有UDP代理分發(fā)的數(shù)據(jù)報(bào)里只有一個(gè)頭棧,因此需要更改現(xiàn)有的UDP代理,給它增加一個(gè)發(fā)送來自應(yīng)用層數(shù)據(jù)報(bào)的機(jī)制,并在IP報(bào)文頭沒用使用的字段里增設(shè)一個(gè)標(biāo)記數(shù)據(jù)類型的標(biāo)志。
根據(jù)實(shí)驗(yàn)場(chǎng)景利用C++語(yǔ)言,編寫數(shù)據(jù)接收和數(shù)據(jù)發(fā)送類,并對(duì)現(xiàn)有的UDP代理根據(jù)實(shí)驗(yàn)場(chǎng)景需求進(jìn)行更改(由于篇幅問題,具體代碼略)。最后設(shè)計(jì)一個(gè)拓?fù)鋱D,對(duì)設(shè)計(jì)的利用UDP傳輸?shù)亩嗝襟w程序進(jìn)行測(cè)試,拓?fù)湟妶D5。
五 結(jié)束語(yǔ)
通過上面的分析可以看出,利用網(wǎng)絡(luò)仿真工具不僅可以使學(xué)生通過實(shí)驗(yàn)對(duì)計(jì)算機(jī)網(wǎng)絡(luò)知識(shí)和運(yùn)作原理有更深入的理解,而且通過實(shí)驗(yàn)的比較分析學(xué)習(xí)后,可以啟發(fā)學(xué)生,更好的培養(yǎng)學(xué)生的創(chuàng)新意識(shí)和創(chuàng)新能力,更好的滿足社會(huì)發(fā)展的需求。因此,把網(wǎng)絡(luò)仿真工具引入到高校計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)中,充分地發(fā)揮網(wǎng)絡(luò)仿真工具在教學(xué)工作中的優(yōu)勢(shì),將是高校計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)的一種發(fā)展趨勢(shì)。
參考文獻(xiàn)
[1] Kevin Fall, Kannan Varadhan. The ns Manual[EB/OL].<http://www.isi.edu/nsnam/ns/ns-documentation.html, 2009-02-24.>
[2] Jae Chung, Mark Claypool.NS2 by Example[EB/OL].<http://nile.wpi.edu/NS/, 2009-03-16.>
[3] 于斌,孫斌,溫暖,等.NS2與網(wǎng)絡(luò)模擬[M].北京:人民郵電出版社,2007:35-43.
[4] 柯志亨.NS2教學(xué)手冊(cè)[EB/OL].<http://140.116.72.80/~smallko/ns2/ns2.htm, 2009-03-16.>
[5] 楊延雙,張建標(biāo),王全民.TCP/IP協(xié)議分析及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2007:23-31.