石太彬 童孟軍
摘 要: 網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,使計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)模式必須不斷改進(jìn)以滿足實(shí)際需求。為此,在計(jì)算機(jī)網(wǎng)絡(luò)課堂中引入了網(wǎng)絡(luò)仿真軟件NS2以輔助教學(xué)。NS2是一款優(yōu)秀的開源軟件,能夠仿真計(jì)算機(jī)網(wǎng)絡(luò)的眾多協(xié)議,以及最新的網(wǎng)絡(luò)技術(shù)。將NS2融入教學(xué)的同時(shí),開發(fā)了相應(yīng)的軟件來管理NAM文件。這種教學(xué)模式可以使學(xué)生輕松地理解網(wǎng)絡(luò)協(xié)議及其原理。
關(guān)鍵詞: NS2; 網(wǎng)絡(luò)仿真; 輔助教學(xué); 網(wǎng)絡(luò)協(xié)議; NAM文件管理軟件
中圖分類號:G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2013)07-62-04
0 引言
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,傳統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)受到較大的沖擊,在教學(xué)中引入網(wǎng)絡(luò)模擬顯出了十分的必要性與重要性。計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)一般可分為理論教學(xué)和實(shí)驗(yàn)教學(xué)兩個(gè)部分,傳統(tǒng)的教學(xué)模式存在很突出的問題。首先,計(jì)算機(jī)網(wǎng)絡(luò)課程從設(shè)計(jì)到許多復(fù)雜的概念和原理,教學(xué)中通常使用幻燈片來教學(xué),無法簡單靈活地來展示動態(tài)過程。學(xué)生在學(xué)習(xí)中感到枯燥乏味,難以理解,導(dǎo)致漸漸失去興趣。其次,實(shí)驗(yàn)器材比較昂貴,實(shí)驗(yàn)室內(nèi)配備的實(shí)驗(yàn)器材數(shù)量有限,很難達(dá)到較高標(biāo)準(zhǔn)的實(shí)驗(yàn)環(huán)境,并且實(shí)驗(yàn)的時(shí)間也是有限的,學(xué)生無法充分地理解并且掌握通信技術(shù)以及網(wǎng)絡(luò)工程應(yīng)用能力,久而久之更加感到無趣。
解決這一難題的有效方法是,在教學(xué)中引入網(wǎng)絡(luò)模擬技術(shù),使用NAM工具,可以清晰地向?qū)W生展示網(wǎng)絡(luò)協(xié)議的動態(tài)運(yùn)行過程,提高學(xué)生的學(xué)習(xí)效率,改善教學(xué)效果。
1 NS2仿真軟件簡介
NS2是一款開放源代碼的網(wǎng)絡(luò)模擬原件,由美國加州大學(xué)伯克利分校(UC Berkeley)的MASH研究組開發(fā)。NS2能夠仿真多種網(wǎng)絡(luò)上的眾多協(xié)議,這些協(xié)議涉及到網(wǎng)絡(luò)的各個(gè)層次[1]。
NS2的本質(zhì)是一個(gè)面向?qū)ο蟮碾x散事件模擬器[2],所有的仿真都是由離散事件驅(qū)動的。NS2采用C++和OTcl兩種開發(fā)語言進(jìn)行開發(fā),底層仿真引擎主要用C++編寫,OTcl作為仿真時(shí)的命令和配置語言。C++是強(qiáng)制類型的程序設(shè)計(jì)語言,程序模塊運(yùn)行速度非??欤讓?shí)現(xiàn)精確復(fù)雜的算法。Otcl是無強(qiáng)制類型的腳本程序編寫語言,具有簡單、容易實(shí)現(xiàn)和修改的特性,可以在不必重新編譯的情況下修改仿真參數(shù)和仿真過程,兩種語言的結(jié)合使NS2的仿真效率特別高。
NS2為基于Unix平臺的開源免費(fèi)軟件,可以在其官方網(wǎng)站下載。同時(shí)也可以在Windows下使用,鑒于多媒體教室以及實(shí)驗(yàn)室條件,可以采用Windows+Cygwin+NS2的安裝方式。
2 NS2模擬仿真實(shí)驗(yàn)管理器
為了方便管理編寫后的NAM文件,開發(fā)了NS2模擬仿真實(shí)驗(yàn)管理器(圖1)。該軟件以nam-1.0a11a-win32.exe[3]作為插件,以支持對NAM文件的播放。該軟件具有添加、刪除NAM文件的功能,另外還可以查詢常用的腳本代碼。它使用簡單、方便,是管理NAM與編寫腳本的得力助手。
3 NS2應(yīng)用于教學(xué)的優(yōu)勢
⑴ NS2豐富的組件模塊。NS2提供了豐富的網(wǎng)絡(luò)組件,如各種節(jié)點(diǎn)、鏈路延遲、隊(duì)列管理以及從數(shù)據(jù)鏈路層到應(yīng)用層中的多種協(xié)議[4]。課堂使用的仿真過程比較簡單,無需對NS進(jìn)行擴(kuò)展,因此只需要稍作修改或者編寫一個(gè)OTcl腳本,就可以達(dá)到課堂教學(xué)的需求。
⑵ NAM生動形象的動畫。有些課程內(nèi)容比較難以講述和理解,但是通過動畫方式便簡單多了。比如在學(xué)習(xí)路由協(xié)議時(shí),通過NAM動畫和Xgraph,幫助學(xué)生理解路由的變化情況。NAM可以將網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和仿真腳本的運(yùn)行過程以動畫的形式生動形象地顯示出來,Xgraph則通過平面坐標(biāo)圖的形式顯示運(yùn)行時(shí)獲取的數(shù)據(jù)。
⑶ 緩解高校建設(shè)網(wǎng)絡(luò)實(shí)驗(yàn)室的壓力。使用NS2,學(xué)生完全可以在單機(jī)環(huán)境中模擬整個(gè)網(wǎng)絡(luò)的各個(gè)元素,學(xué)??苫谠械木W(wǎng)絡(luò)實(shí)驗(yàn)設(shè)備,只需投入較少的資金就能為大量學(xué)生提供實(shí)用的網(wǎng)絡(luò)設(shè)計(jì)與操作環(huán)境,既節(jié)約了實(shí)驗(yàn)成本,又能得到較好的實(shí)驗(yàn)教學(xué)效果。
⑷ 學(xué)生的知識體系在深度和廣度上得到拓展。學(xué)生能靈活地掌握自己的實(shí)驗(yàn)時(shí)間,不受傳統(tǒng)真實(shí)實(shí)驗(yàn)室關(guān)閉和開放時(shí)間的限制,重點(diǎn)攻克自己的難點(diǎn);按照自己的進(jìn)度,自主地選擇自己所需要的實(shí)驗(yàn)內(nèi)容。同時(shí),有利于加強(qiáng)對學(xué)生自學(xué)能力的培養(yǎng)。從而可以開拓學(xué)生視野,激發(fā)學(xué)生實(shí)驗(yàn)的興趣,有助于學(xué)生創(chuàng)新思維能力和動手能力的培養(yǎng)。
4 NS2在教學(xué)中的應(yīng)用
NS2的體系結(jié)構(gòu)復(fù)雜,對于初學(xué)者來說具有很大的困難[1],為了將NS2應(yīng)用到計(jì)算機(jī)網(wǎng)絡(luò)課程的教學(xué)中,需要設(shè)計(jì)合理的教學(xué)方案。首先,在授課前,教師編寫或者修改NS2仿真的源代碼,然后在授課時(shí)演示仿真實(shí)例,做到深入淺出。為了使得知識更加形象直觀地展示給學(xué)生,對于仿真中的參數(shù),需要精心設(shè)計(jì)。其次,在實(shí)驗(yàn)教學(xué)中,教師向?qū)W生提供NS2的仿真實(shí)驗(yàn)?zāi)_本,學(xué)生通過運(yùn)行實(shí)驗(yàn)?zāi)_本,加深對于理論知識的理解,并且建議學(xué)生修改腳本中的仿真參數(shù),觀察和思考不同環(huán)境下的實(shí)驗(yàn)結(jié)果,最終將知識消化和吸收。對于編程能力較好的同學(xué),教師可以設(shè)計(jì)一些題目,讓學(xué)生獨(dú)立編寫仿真腳本代碼,這樣不僅能加深學(xué)生對知識的理解和NS2的掌握,同時(shí)培養(yǎng)學(xué)生的動手操作能力以及獨(dú)立思考的能力。
以下給出的是計(jì)算機(jī)網(wǎng)絡(luò)中TCP與UDP、靜態(tài)路由與動態(tài)路由、CSMA/CD協(xié)議的仿真實(shí)例。
4.1 TCP與UDP仿真模擬。
TCP包含了復(fù)雜的機(jī)制,是計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)的一個(gè)難點(diǎn)[5]。為了便于理解,設(shè)計(jì)了TCP與UDP的對比實(shí)驗(yàn)。在進(jìn)行TCP與UDP模擬實(shí)驗(yàn)時(shí),首先建立一個(gè)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖,如圖2所示。
該網(wǎng)絡(luò)環(huán)境包含了兩個(gè)傳輸節(jié)點(diǎn)0和1,路由器2和數(shù)據(jù)接收端3。節(jié)點(diǎn)0到節(jié)點(diǎn)2之間與節(jié)點(diǎn)1到節(jié)點(diǎn)2之間的網(wǎng)絡(luò)帶寬都為2Mbps,傳遞延遲時(shí)間為10ms。網(wǎng)絡(luò)結(jié)構(gòu)中帶寬瓶頸都是在節(jié)點(diǎn)2和節(jié)點(diǎn)3之間,瓶頸為1.7Mpbs,傳遞延遲時(shí)間為20ms。而且所有的隊(duì)列模式都是DropTail,在節(jié)點(diǎn)2和節(jié)點(diǎn)3之間的最大隊(duì)列長度是10個(gè)包。在節(jié)點(diǎn)0和節(jié)點(diǎn)3之間會有一條FTP聯(lián)機(jī),F(xiàn)TP使用的傳輸層協(xié)議是TCP。節(jié)點(diǎn)0上使用TCP代理,而節(jié)點(diǎn)1上使用UDP代理。目的節(jié)點(diǎn)3使用TCPsink代理來接收TCP數(shù)據(jù),并返回ACK數(shù)據(jù)包。
在本仿真實(shí)例中,0.1秒時(shí),節(jié)點(diǎn)1開始向節(jié)點(diǎn)3發(fā)送CBR數(shù)據(jù)流(速率恒定數(shù)據(jù)流),圖3為NAM動畫的截圖,圖中連線為鏈路,線上方的流動的圖形為數(shù)據(jù)包,在NAM動畫中可以控制動畫的播放速度,可以清晰的看到CBR數(shù)據(jù)流的恒定發(fā)送情況。
UDP為面向無連接的,因此,節(jié)點(diǎn)3沒有向節(jié)點(diǎn)1返回確認(rèn)包。1.0秒時(shí),節(jié)點(diǎn)0開始向節(jié)點(diǎn)3發(fā)送FTP數(shù)據(jù)包,圖4為NAM動畫的截圖,TCP為面向連接的可靠傳輸協(xié)議,圖中連線下方的豎線便是節(jié)點(diǎn)3返回節(jié)點(diǎn)0的確認(rèn)包。初始擁塞窗口大小設(shè)置為1,隨著時(shí)間的推進(jìn),節(jié)點(diǎn)0收到節(jié)點(diǎn)3返回的確認(rèn)包,在TCP協(xié)議的控制下,發(fā)送窗口的大小成倍增加,當(dāng)擁塞窗口增加到一定程度時(shí),節(jié)點(diǎn)2出現(xiàn)丟包現(xiàn)象(圖4中節(jié)點(diǎn)2下方的方塊即為丟棄的數(shù)據(jù)包),節(jié)點(diǎn)3返回的確認(rèn)包少于節(jié)點(diǎn)0發(fā)送的數(shù)據(jù)包,節(jié)點(diǎn)0將重傳丟失的數(shù)據(jù)包,并且減小發(fā)送窗口的大小。在NAM動畫中,可以觀察到節(jié)點(diǎn)2丟失的數(shù)據(jù)包中也包含CBR的數(shù)據(jù)包,由于UDP是面向無連接的,節(jié)點(diǎn)1并不知道丟失了數(shù)據(jù)包,依然繼續(xù)發(fā)送CBR數(shù)據(jù)流。在本仿真實(shí)例中,學(xué)生可以直觀地觀察到TCP的擁塞控制、TCP慢啟動以及TCP與UDP鮮明的對比,輕松而愉快地掌握了原本枯燥乏味的協(xié)議理論知識。
4.2 靜態(tài)路由與動態(tài)路由仿真模擬
路由協(xié)議是學(xué)生學(xué)習(xí)中的重點(diǎn),其概念抽象,同時(shí)也是一個(gè)難點(diǎn)[6]。NS2提供了對Dijkstra、靜態(tài)路由、動態(tài)路由、組播路由等多中路由協(xié)議的支持,因此設(shè)計(jì)了動態(tài)路由與靜態(tài)路由的對比仿真實(shí)驗(yàn)。
4.2.1 靜態(tài)路由仿真模擬
模擬靜態(tài)路由。圖5與圖6為靜態(tài)路由的NAM截圖,網(wǎng)絡(luò)拓?fù)淙鐖D5所示。在圖5中,1.0s以前數(shù)據(jù)正確傳送,通過鏈路(n0,n1,n3,n4)進(jìn)行傳送。如圖6所示,當(dāng)?shù)?.0s時(shí)鏈路(n1,n3)發(fā)生問題,由于是靜態(tài)路由,其沒有重新選擇鏈路的功能,數(shù)據(jù)傳送進(jìn)入癱瘓狀態(tài),節(jié)點(diǎn)3附近的數(shù)據(jù)包,為鏈路斷開后,節(jié)點(diǎn)1丟棄的數(shù)據(jù)包。通過NAM動畫可以看到,每經(jīng)過一段時(shí)間節(jié)點(diǎn)0會進(jìn)行嘗試性傳送,直到斷開的鏈路重新恢復(fù)正常,數(shù)據(jù)包又在原來的鏈路上進(jìn)行傳送,數(shù)據(jù)發(fā)送情況與圖5相同。
4.2.2 動態(tài)路由仿真模擬
模擬動態(tài)路由。圖7與圖8為動態(tài)路由的NAM截圖,網(wǎng)絡(luò)拓?fù)淙鐖D7所示。通過觀察NAM動畫看以看到,動態(tài)路由協(xié)議在連接開始之時(shí),各個(gè)節(jié)點(diǎn)之間相互交換路由信息。當(dāng)確定最短路徑之后,便開始通過這條路徑向目的網(wǎng)絡(luò)發(fā)送數(shù)據(jù),如圖7所示,鏈路為:n0,n1,n3,n4。鏈路(n1,n3)發(fā)生問題后數(shù)據(jù)發(fā)送如圖8所示。這時(shí)根據(jù)動態(tài)路由算法,更新各自的路由表,重新選擇代價(jià)最小的路徑到達(dá)目的網(wǎng)絡(luò),鏈路為:n0,n1,n2,n4。節(jié)點(diǎn)3附近的數(shù)據(jù)包為鏈路出現(xiàn)故障時(shí)節(jié)點(diǎn)1丟棄的數(shù)據(jù)包。當(dāng)鏈路恢復(fù)時(shí),再次更新路由信息,使用代價(jià)最小的路徑發(fā)送數(shù)據(jù),重新變?yōu)殒溌穘0,n1,n3,n4,此時(shí)因?yàn)樗墟溌范紱]有問題,不會有數(shù)據(jù)包的丟失,數(shù)據(jù)發(fā)送情況與圖7相同。
通過靜態(tài)路由與動態(tài)路由協(xié)議仿真實(shí)驗(yàn)的觀察以及對比,學(xué)生可以輕松地理解靜態(tài)路由和動態(tài)路由建立的過程,以及它們各自應(yīng)對鏈路故障的方法。原本抽象的路由協(xié)議的每一個(gè)過程都通過NAM直觀的展現(xiàn)出來,學(xué)生因此也很容易記憶與掌握。
4.3 CSMA/CD仿真模擬
CSMA/CD是工作在數(shù)據(jù)鏈路層的協(xié)議,原理簡單并且易于實(shí)現(xiàn),但是不少同學(xué)對于如何實(shí)現(xiàn)偵聽不能很好的理解。于是我們設(shè)計(jì)了本仿真實(shí)驗(yàn)。圖9為NAM動畫的截圖,創(chuàng)建一個(gè)總線型的局域網(wǎng),并且在MAC層使用了CSMA/CD協(xié)議。在本實(shí)驗(yàn)構(gòu)建的這個(gè)總線型局域網(wǎng)中,包含了12個(gè)節(jié)點(diǎn),將局域網(wǎng)的帶寬設(shè)置為10Mb,時(shí)延設(shè)置為10ms,隊(duì)列類型設(shè)置為DropTail。節(jié)點(diǎn)9向節(jié)點(diǎn)10發(fā)送數(shù)據(jù),在進(jìn)行播放NAM動畫時(shí),控制播放速度,可以很好地觀察到整個(gè)傳輸過程,很容易理解偵聽的實(shí)現(xiàn)、LAN的資源共享與競爭機(jī)制。利用本仿真實(shí)驗(yàn),我們可以更好地理解CSMA/CD協(xié)議。
5 結(jié)束語
在教學(xué)實(shí)踐中,將NS2引入教學(xué),使理論知識的學(xué)習(xí)不再枯燥乏味,學(xué)生可以更加輕松、深入地學(xué)習(xí),學(xué)習(xí)興趣也得到提高。NS2中的NAM動畫工具不同于傳統(tǒng)的幻燈片和視頻等其他演示工具,它具有很高的靈活性,直觀性,準(zhǔn)確性,在理論知識的教學(xué)中可以化抽象為具體,把抽象的網(wǎng)絡(luò)協(xié)議運(yùn)行過程直觀地呈現(xiàn)給學(xué)生,激發(fā)學(xué)生的學(xué)習(xí)興趣,提升教學(xué)效果。對于學(xué)有余力的學(xué)生,可以讓他們深入學(xué)習(xí)NS2,獨(dú)立編寫代碼,構(gòu)思并且設(shè)計(jì)實(shí)驗(yàn),提高創(chuàng)新思維能力[7]。任課教師應(yīng)當(dāng)建立一個(gè)數(shù)據(jù)庫,或者教學(xué)平臺,用于存放了常用的仿真腳本、測試題以及NS2資料,讓學(xué)生能自行下載,進(jìn)行自主學(xué)習(xí)喝相互討論。因此,下一步的目標(biāo)就是建立這種教學(xué)平臺。
參考文獻(xiàn):
[1] 方路平,劉世華,陳盼等.NS-2網(wǎng)絡(luò)模擬基礎(chǔ)與應(yīng)用[M].國防工業(yè)出版社,2008.
[2] 李大勇.NS2仿真軟件在無線網(wǎng)絡(luò)教學(xué)中的應(yīng)用[J].微計(jì)算機(jī)信息,2010.19:181-183
[3] http://www.isi.edu/nsnam/nam/[EB/0L].
[4] 劉俊,徐昌彪,隆克平.基于NS的網(wǎng)絡(luò)仿真探討[J].計(jì)算機(jī)應(yīng)用研究,2002.9:56-59
[5] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第五版)[M].電子工業(yè)出版社,2008.
[6] 王相林.計(jì)算機(jī)網(wǎng)絡(luò)——原理、技術(shù)與應(yīng)用[M].機(jī)械工業(yè)出版社,2010.
[7] 留嵐蘭.實(shí)驗(yàn)課程設(shè)置與創(chuàng)新型人才培養(yǎng)[J].實(shí)驗(yàn)技術(shù)與管理,2007.1:132-134