林為偉
(福建師范大學福清分校數(shù)學與計算機科學系 福建福清 350300)
NS2仿真在計算機網絡實踐教學中的應用
林為偉
(福建師范大學福清分校數(shù)學與計算機科學系 福建福清 350300)
為不斷提高網絡課程教學實踐水平,引入了網絡仿真軟件NS2以輔助計算機網絡教學。NS2是一款開放源代碼的網絡仿真軟件,可以模擬實際網絡以及網絡協(xié)議的交互行為。將NS2融入教學,利用基于軟件的網絡模擬與仿真技術,給學生一個很好的綜合性實驗平臺,讓學生更好的理解和學習網絡協(xié)議原理,教學效果會更好。
NS2,網絡協(xié)議,網絡實驗,網絡仿真
隨著通信技術與網絡技術的蓬勃發(fā)展,計算機網絡、網絡規(guī)劃與設計等課程已經成為計算機類專業(yè)和通信信息類專業(yè)的核心課程,通常涉及到繁多復雜網絡硬件設備和大量抽象的網絡協(xié)議理論知識,學生很難很好的理解和掌握。通過部署真實網絡環(huán)境的實踐教學可以很好的解決上述問題,但由于真實網絡實驗環(huán)境受有限的資金和網絡條件的限制,運用不靈活,且很難重新配置和共享資源,在統(tǒng)計數(shù)據(jù)的收集和分析上存在一定困難。為克服這些缺陷,可以借助于專用的網絡仿真軟件。網絡仿真是近年來興起的一種專業(yè)網絡研究技術,它借助于軟件工具,將網絡抽象為數(shù)據(jù)模型,并仿真網絡以及協(xié)議的實際運行,從仿真結果中對網絡性能做出評估,以便進行網絡研究學習和設計開放。筆者選擇NS2仿真軟件應用于計算機網絡課程的實踐教學中,帶給學生各種“真實”的網絡環(huán)境,深受學生好評,取得了良好的教學效果。
NS2(Network Simulator,version 2)是一款開放源代碼的網絡模擬軟件,最初由加州大學伯克利分校(UC Berkeley)開發(fā)。它最初的開發(fā)目的是為了研究大規(guī)模網絡以及當前和未來網絡協(xié)議的交互行為,為模擬研究有線和無線網絡上的TCP、路由和多播協(xié)議提供了強有力的支持。整個NS2模擬過程主要分為源碼修改、編寫TCL模擬腳本、執(zhí)行腳本文件和分析結果四個步驟[1]。
為了更好的將NS2應用融入于計算機網絡實踐教學中,授課教師必須合理設計教學方案案例。教師設計編寫或者修改NS2仿真案例的源代碼和參數(shù),通過Nam動畫演示、分析圖表的繪制等方式在課程教學中演示仿真實例,加深學生對網絡原理和相關協(xié)議的理解,同時掌握NS2的用法。亦可把仿真案例實驗腳本直接提供給學生,建議學生自己修改案例中的參數(shù),觀察和思考不同環(huán)境下的運行結果。與此同時,可以鼓勵一些動手能力編程能力較高的學生自己設計編寫仿真實驗案例腳本,甚至更新修改協(xié)議源碼,從而進一步提高學生自己動手設計和獨立思考的能力。下面以TCP協(xié)議的為例詳細說明NS2仿真教學案例。
2.1 TCP協(xié)議簡介
TCP協(xié)議(Transmission Control Protocol)是TCP/IP系統(tǒng)中非常復雜的一個協(xié)議,TCP提供端到端全雙工通信,面向連接的傳輸控制確保了數(shù)據(jù)包的可靠傳輸,并且使用了滑動窗口來進行流量的控制,同時TCP協(xié)議采用慢啟動門限和擁塞控制來實現(xiàn)鏈路的擁塞控制,保證了數(shù)據(jù)的高效傳輸。[2]
2.2案例設計思路
為了統(tǒng)一集中說明TCP協(xié)議的特性,教學案例構建了三條鏈路,其中鏈路1用于實現(xiàn)TCP的快速重傳和快速恢復模擬;鏈路2用于實現(xiàn)TCP滑動窗口機制模擬;鏈路3作為參照組,用于對比支持慢啟動和不支持慢啟動的TCP協(xié)議區(qū)別,以及慢啟動中添加慢啟動門限和沒有添加慢啟動門限的區(qū)別。將3條鏈路模擬的結果使用NS-2自帶的Xgraph將其繪制在同一張坐標圖上進行對照??偼負浣Y構如圖1所示。
圖1 案例總拓撲圖
(1)鏈路0-3為鏈路1,實現(xiàn)TCP協(xié)議的快速重傳和快速恢復。節(jié)點0為發(fā)送端口,節(jié)點3為接收端口,在節(jié)點1-2之間的鏈路限制了帶寬,使之可以產生瓶頸從而模擬丟包現(xiàn)象,鏈路1中使用的是支持慢啟動的TCP協(xié)議(TCP/Reno),同時添加慢啟動門限。
(2)鏈路0-4為鏈路2,實現(xiàn)TCP滑動窗口機制。節(jié)點0為發(fā)送端口,節(jié)點4為接收端口,鏈路2中使用不支持慢啟動的TCP協(xié)議(TCP/RFC793edu),該協(xié)議支持滑動窗口機制。
(3)鏈路3-5為鏈路3,作為參照組。節(jié)點3為發(fā)送端口,節(jié)點5為接收端口,鏈路3中使用支持慢啟動的TCP協(xié)議(TCP/Reno),同時不添加慢啟動門限。
運行模擬腳本,在Nam動畫演示中觀察數(shù)據(jù)分組的收發(fā)情況,對模擬產生的Xgraph圖和Trace文件進行分析,同時通過參照對比3條鏈路的窗口大小,說明滑動窗口、慢啟動、慢啟動門限等知識點,最后抽取Trace文件中丟包信息,說明TCP的快速重傳與快速恢復的機制。
2.3案例運行數(shù)據(jù)分析
案例運行數(shù)據(jù)分析是教學中非常重要的一個環(huán)節(jié),通過Nam動畫演示、分析圖表的繪制等方式,提高學生的學習興趣,加深學生對網絡原理和相關協(xié)議的理解,下面重點說明該案例的運行數(shù)據(jù)分析。
(1)滑動窗口與慢啟動算法分析 結合Nam動畫演示。分析鏈路0-4和鏈路3-5,如圖2和圖3所示,可以觀察到0.1s時FTP應用模擬器啟動,節(jié)點O與節(jié)點3分別發(fā)送第一個TCP連接請求,0.3s時節(jié)點4和節(jié)點5收到第一個ACK,然后節(jié)點0和節(jié)點3發(fā)送攜帶ACK的數(shù)據(jù)包并連發(fā)兩個數(shù)據(jù)包。
圖2 0.1s時Nam狀態(tài)圖
圖3 0.3s時Nam狀態(tài)圖
由于鏈路0-4與鏈路3-5所封裝的TCP協(xié)議版本不同,如圖4和圖5所示,可以很清楚地觀察在0.5~0.7s時候,在封裝了滑動窗口TCP的鏈路上節(jié)點0開始以固定窗口發(fā)送數(shù)據(jù)包,而封裝了慢啟動TCP的鏈路上節(jié)點3發(fā)送的窗口大小為4,其增長趨勢呈指數(shù)上漲,到達0.7s時節(jié)點3所發(fā)送的窗口大小則變?yōu)?。
圖4 0.5s時Nam狀態(tài)圖
圖5 0.7s時Nam狀態(tài)圖
正是由于TCP滑動窗口機制和慢啟動機制的不同,在不添加其它條件的情況下,鏈路1一直以固定窗口發(fā)送數(shù)據(jù),而鏈路2在未遇到慢啟動門限的情況下窗口的大小一直呈指數(shù)上漲,同時配合上慢啟動門限,慢啟動算法就可以控制網絡的擁塞情況。
結合坐標圖分析:如圖6所示,圖中紅色線為鏈路1封裝TCP/Reno并啟用慢啟動門限,綠色線為鏈路2封裝的是TCP_RFC793edu,藍色線為鏈路3封裝的是TCP/Reno未用慢啟動門限。結合曲線圖我們可以清楚地看到,在0.5s前紅線、藍線和綠線重合,窗口大小從1變?yōu)?,0.5s后綠線直線上升,窗口大小變?yōu)?4,這是我們在前面代碼中所設置的TCP窗口的大小,并在后面的各個時段,綠線一直以此固定窗口收發(fā)數(shù)據(jù)。藍線的窗口大小呈指數(shù)增長,分別為2、4、8、16、32、64。對比紅藍兩條線,在1.5s前兩條線走向一樣,由于出現(xiàn)丟包發(fā)生沖突,紅線沒有繼續(xù)上升而是將ssthresh調整為cwnd的一半為10,窗口也跟著ssthresh調整為當前窗口值的一半10,然后擁塞窗口設置為1,2.8s時開始每次窗口增加1。
圖6 Xgraph圖
(2)快速重傳和快速恢復分析。結合Nam分析:結合時間,觀察Nam窗口Monitors一欄,如圖7所示,0.4s左右,節(jié)點0與節(jié)點3連接成功后第一次發(fā)送兩個數(shù)據(jù)包,此時cwnd大小為2,ACK為0;如圖8所示,0.7s左右,節(jié)點0收到節(jié)點3的兩個包確定后ACK變?yōu)?,表示確認收到前面的兩個數(shù)據(jù)包,同時節(jié)點0發(fā)送4個數(shù)據(jù)包,此時窗口大小為4;以此類推如圖9所示,1.4s左右,收到的確認包為14(2+4+8),窗口大小為16。這段時間為慢啟動。
圖7 0.4s監(jiān)視圖 圖8 0.7s監(jiān)視圖
圖9 1.4s監(jiān)視圖
如圖10所示,當1.65s時節(jié)點0發(fā)送的窗口大小發(fā)生變化,不再呈指數(shù)上漲,鏈路中產生瓶頸,鏈路啟動慢啟動門限;1.7s時窗口大小由20左右直接落到10,在此期間,在節(jié)點0收到22個確認包后,ACK不再上升。如圖11所示,1.72s時重復ACK計數(shù)器收到1個重復的確認包,這表示序號為23的包被丟棄未收到,而節(jié)點0重復發(fā)送序列號為22的確認包,因此重復ACK計數(shù)器的數(shù)值一直增加,如圖12所示,直到2.05s時節(jié)點0收到重復的ACK為15。而如圖13所示,2.06s時重復ACK計數(shù)器清0,節(jié)點0收到前24個數(shù)據(jù)包,由此大家可以看見在短短的0.3s內TCP協(xié)議快速重傳了15個丟失的數(shù)據(jù)包,實現(xiàn)了快速重傳和快速恢復。
圖10 1.65s監(jiān)視圖 圖11 1.72s監(jiān)視圖
圖12 2.05s監(jiān)視圖 圖13 2.06s監(jiān)視圖3 結語
網絡實驗仿真教學,解決了過去因為實驗設備不足,僅靠教師進行理論教學的窘態(tài),帶給學生各種“真實”的網絡環(huán)境,提高了學生學習興趣,使學習過程和學習方式更具主動性,加深了對概念和知識的理解,又優(yōu)化了教學過程。目前NS2仿真系統(tǒng)存在的平臺界面友好性差、網絡建模復雜而繁瑣以及功能單一等問題,在今后的教學中,可以考慮從功能完善性、操作方便性以及界面友好性出發(fā),設計并實現(xiàn)一套基于NS2的綜合性的網絡實驗模擬平臺,使現(xiàn)實網絡實驗與網絡仿真實驗相結合,從而最大程度地滿足計算機網絡類課程的實驗實踐教學的需求[3]。
[1]方路平,劉世華,陳盼,等.NS-2網絡模擬基礎與應用[M].北京:國防工業(yè)出版社,2008.77.
[2]謝希仁.計算機網絡(第5版)[M].北京:電子工業(yè)出版社,2009.36.
[3]王波,孫燚,周志偉.計算機網絡實驗綜合模擬平臺的研發(fā)[J].計算機教育,2009,7(3):86-.
(責任編輯李平)
2014-3-24
林為偉(1978-),男,福建福清人,碩士,講師,研究方向為計算機網絡及其應用。
TN 915.04
A
1674-9545(2014)03-0126-(00)