摘? 要: 介紹網(wǎng)絡(luò)仿真的免費(fèi)軟件ns2的概況,,對利用ns2進(jìn)行網(wǎng)絡(luò)拓?fù)?/a>的輸入、結(jié)構(gòu)的定義,、運(yùn)行仿真,、動態(tài)觀察仿真過程、仿真數(shù)據(jù)處理進(jìn)行了分析,,同時用一個例子對仿真過程進(jìn)行了說明,。
關(guān)鍵詞: 網(wǎng)絡(luò)仿真? 免費(fèi)軟件
?
網(wǎng)絡(luò)仿真軟件是網(wǎng)絡(luò)性能理論分析、評估網(wǎng)絡(luò)設(shè)計方案以及網(wǎng)絡(luò)故障診斷的有力工具,。在網(wǎng)絡(luò)系統(tǒng)方案設(shè)計階段,,對于規(guī)模稍大的互連網(wǎng)絡(luò)目前還沒有哪個理論能夠?qū)ζ溥M(jìn)行較精確的分析,一般都是依靠仿真的方法對設(shè)計方案進(jìn)行評估,,這對于減少投資風(fēng)險,,降低網(wǎng)絡(luò)實(shí)現(xiàn)費(fèi)用等都有著巨大的好處[1]。在網(wǎng)絡(luò)仿真軟件中,,比較有名的有MIL3公司的OPNET軟件,、Cadence公司的VCC軟件,這些軟件一般的價格都在20~30萬美元左右,,每年還需要幾萬美元的服務(wù)費(fèi),,對于研究單位、學(xué)校甚至大型的公司來講都是一筆巨大的投資,。除了上面的商業(yè)軟件,,在網(wǎng)絡(luò)仿真領(lǐng)域還有一些免費(fèi)軟件,這里面比較有名的就是VINT的ns2軟件,。
1 ns2網(wǎng)絡(luò)仿真軟件簡介
Network Simulator 仿真軟件是位于美國加州的 Lawrence Berkeley國家實(shí)驗室于1989年開始開發(fā)的軟件,,簡稱ns軟件。ns是一種可擴(kuò)展,、易配置和編程的事件驅(qū)動網(wǎng)絡(luò)仿真工具,。ns 從S. Keshav's REAL 仿真器發(fā)展而來。目前ns 正在Virtual InterNetwork Testbed (VINT)項目的支持下由南加州大學(xué),、施樂公司,、加州大學(xué)與Lawrence Berkeley國家實(shí)驗室協(xié)作發(fā)展ns軟件。目前最高版本為ns2,。
ns所用仿真語言是Tool Command Language(tcl)語言的一個擴(kuò)展,,tcl語言是一種簡單的腳本語言,它的解釋器可與任何C語言相鏈接,tcl最強(qiáng)大的功能是它的X工具包(tk),,該工具包可以讓用戶開發(fā)具有圖形用戶界面的腳本,,仿真通過tcl語言進(jìn)行定義[2]。利用ns命令編寫腳本來定義網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),、配置網(wǎng)絡(luò)信息流量的產(chǎn)生和接收以及收集統(tǒng)計信息,。軟件配有仿真過程動態(tài)觀察器,可以在仿真運(yùn)行結(jié)束后,,動態(tài)查看仿真的運(yùn)行過程,,觀察跟蹤數(shù)據(jù)。軟件還有圖形顯示器,,顯示從仿真中得到的結(jié)果數(shù)據(jù),,直觀而清晰。
目前ns2主要基于UNIX平臺,,需要tcl-8.0.5,、tk-8.0.5、otcl-1.0a4,、tclcl-1.0b8和ns-2.1b6的支持,。如果基于Windows98平臺,,還需要Perl(Practical Extraction and Report Language)以及Cygwin(Ports of the pupular GNU development)支持,,但在Windows98平臺下軟件可能會不穩(wěn)定。
ns2仿真軟件主要支持下面一些已完成測試的協(xié)議:HTTP,、telnet業(yè)務(wù)流,、ftp業(yè)務(wù)流、CBR業(yè)務(wù)流,、On/Off業(yè)務(wù)流,、UDP、TCP,、RTP,、SRM、算法路由,、分級路由,、廣播路由、多播路由,、靜態(tài)路由,、動態(tài)路由、CSMA/CD MAC層協(xié)議等[3],。
下面將結(jié)合基于Linux平臺上的ns2軟件,,對5節(jié)點(diǎn)星型拓?fù)錆M足UDP協(xié)議的網(wǎng)絡(luò)仿真進(jìn)行說明。ns2所有相關(guān)文件可以在位于www.isi.edu/nsnam/ns的網(wǎng)址上找到,。
2 網(wǎng)絡(luò)拓?fù)浼敖Y(jié)構(gòu)的定義
網(wǎng)絡(luò)拓?fù)洳捎?個節(jié)點(diǎn)的星型結(jié)構(gòu),,具體結(jié)構(gòu)如圖1所示,。
?
下面利用tcl語言對網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行定義如下:
set n0 [$ns node]?
set n1 [$ns node]?
set n2 [$ns node]?
set n3 [$ns node]?
set n4 [$ns node]
$ns duplex-link $n0 $n3 1Mb 100ms DropTail?
$ns duplex-link $n1 $n3 1Mb 100ms DropTail?
$ns duplex-link $n2 $n3 1Mb 100ms DropTail?
$ns duplex-link $n3 $n4 1Mb 100ms DropTail?
前4行設(shè)置了從n0到n4的4個網(wǎng)絡(luò)節(jié)點(diǎn),后4行分別定義了從n0,、n1,、n2到n3以及n3到n4的網(wǎng)絡(luò)鏈路,鏈路設(shè)置均相同,,都為1Mbit/s,,延遲100ms,丟棄超出信道容量的數(shù)據(jù),。定義完基本的節(jié)點(diǎn)和鏈路后,,對網(wǎng)絡(luò)的數(shù)據(jù)源和應(yīng)用的協(xié)議進(jìn)行定義,由于需要定義的節(jié)點(diǎn)較多,,采用子程序的方法,。網(wǎng)絡(luò)的信源采用On/Off指數(shù)分布隨機(jī)信源,協(xié)議采用UDP無連接協(xié)議,,具體程序腳本如下:
proc attach-expoo-traffic { node sink size burst idle rate }
? {
?????? #Get an instance of the simulator
?????? set ns [Simulator instance]
?????? #Create a UDP agent and attach it to the node
?????? set source [new Agent/CBR/UDP]
?????? $ns attach-agent $node $source
?????? #Create an Expoo traffic agent and set its?configuration parameters
?????? set traffic [new Traffic/Expoo]
?????? $traffic set packet-size $size
?????? $traffic set burst-time $burst
?????? $traffic set idle-time $idle
?????? $traffic set rate $rate
?????? #Attach the traffic agent to the traffic source
?????? $source attach-traffic $traffic
?????? #Connect the source and the sink
?????? $ns connect $source $sink
?????? return $source
}
子程序首先設(shè)置ns作為仿真器,,然后創(chuàng)建一個UDP協(xié)議并把這個協(xié)議附加到節(jié)點(diǎn)上,之后創(chuàng)建一個開關(guān)時間滿足指數(shù)分布的On/Off隨機(jī)信源,,設(shè)置信源的包大小,、開關(guān)時間、峰值速率參數(shù),,并將信源綁定到UDP協(xié)議上,,最后指出信息流的源地址和目的地址。
仿真模型定義完成后,,在腳本程序中設(shè)置仿真的開始時間和結(jié)束時間,,以及通過編寫腳本將仿真中需要記錄的數(shù)據(jù)寫入文本文件。這樣,,仿真模型的整個腳本就完成了,,下面我們就可以運(yùn)行仿真,以及觀察仿真的結(jié)果,。
3 運(yùn)行仿真并動態(tài)觀察仿真過程
ns2軟件的仿真運(yùn)行比較簡單,,采用后臺方式,只需要在命令行中輸入如下命令即可:
ns? 腳本程序名.tcl
仿真運(yùn)行結(jié)束后,,我們可以利用仿真動態(tài)觀察器nam軟件查看仿真過程,,運(yùn)行如下命令:
nam out.nam
觀察器啟動后,我們可以看到一個圖形界面如圖2所示,。通過觀察器按鈕,,我們可以正向播放、反向播放、快速前進(jìn),、快速后退,、停止仿真動畫的播放。我們也可以給網(wǎng)絡(luò)上傳輸?shù)陌由蠘?biāo)記,,動態(tài)觀察包的傳遞過程,。在觀察器的右上角設(shè)置有步長設(shè)置滑塊,用來設(shè)置仿真演示的速度,。利用該工具大大方便了對網(wǎng)路運(yùn)行情況的理解與觀察,。
?
4 仿真數(shù)據(jù)處理
利用仿真過程中記錄的數(shù)據(jù)和xgraph軟件,我們可以對這些數(shù)據(jù)進(jìn)行圖形化的分析,。在此例中我們可以顯示節(jié)點(diǎn)n0,、n1、n2分別到n4的信息流量圖,,峰值速率分別為我們所設(shè)定的值,。我們也可以利用仿真形成的數(shù)據(jù)文件,根據(jù)需要對其進(jìn)行進(jìn)一步的處理,。
從上面的整個仿真過程來看,,ns2免費(fèi)網(wǎng)絡(luò)系統(tǒng)仿真軟件具有功能完整,使用較方便,,支持較多網(wǎng)絡(luò)協(xié)議的特點(diǎn),,但利用腳本來構(gòu)建網(wǎng)絡(luò)模型稍顯煩瑣。
?
參考文獻(xiàn)
1 逯昭義,,王思明. 計算機(jī)通信網(wǎng)信息量理論. 電子工業(yè)出版社.1997
2 John K. Ousterhout.Tcl and Tk Toolkit. Addison Wesley. 1994
3 Lee Breslau,, Deborah Estrin etc. Advances in Network?Simulation.IEEE Computer 2000(5)