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