摘? 要: 介紹網(wǎng)絡(luò)仿真的免費軟件ns2的概況,對利用ns2進行網(wǎng)絡(luò)拓撲的輸入、結(jié)構(gòu)的定義,、運行仿真、動態(tài)觀察仿真過程,、仿真數(shù)據(jù)處理進行了分析,同時用一個例子對仿真過程進行了說明,。
關(guān)鍵詞: 網(wǎng)絡(luò)仿真? 免費軟件
?
網(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行較精確的分析,,一般都是依靠仿真的方法對設(shè)計方案進行評估,這對于減少投資風(fēng)險,,降低網(wǎng)絡(luò)實現(xiàn)費用等都有著巨大的好處[1],。在網(wǎng)絡(luò)仿真軟件中,比較有名的有MIL3公司的OPNET軟件,、Cadence公司的VCC軟件,,這些軟件一般的價格都在20~30萬美元左右,每年還需要幾萬美元的服務(wù)費,,對于研究單位,、學(xué)校甚至大型的公司來講都是一筆巨大的投資。除了上面的商業(yè)軟件,,在網(wǎng)絡(luò)仿真領(lǐng)域還有一些免費軟件,,這里面比較有名的就是VINT的ns2軟件。
1 ns2網(wǎng)絡(luò)仿真軟件簡介
Network Simulator 仿真軟件是位于美國加州的 Lawrence Berkeley國家實驗室于1989年開始開發(fā)的軟件,,簡稱ns軟件,。ns是一種可擴展、易配置和編程的事件驅(qū)動網(wǎng)絡(luò)仿真工具,。ns 從S. Keshav's REAL 仿真器發(fā)展而來,。目前ns 正在Virtual InterNetwork Testbed (VINT)項目的支持下由南加州大學(xué)、施樂公司,、加州大學(xué)與Lawrence Berkeley國家實驗室協(xié)作發(fā)展ns軟件,。目前最高版本為ns2。
ns所用仿真語言是Tool Command Language(tcl)語言的一個擴展,,tcl語言是一種簡單的腳本語言,,它的解釋器可與任何C語言相鏈接,tcl最強大的功能是它的X工具包(tk),,該工具包可以讓用戶開發(fā)具有圖形用戶界面的腳本,,仿真通過tcl語言進行定義[2]。利用ns命令編寫腳本來定義網(wǎng)絡(luò)拓撲結(jié)構(gòu),、配置網(wǎng)絡(luò)信息流量的產(chǎn)生和接收以及收集統(tǒng)計信息,。軟件配有仿真過程動態(tài)觀察器,可以在仿真運行結(jié)束后,,動態(tài)查看仿真的運行過程,,觀察跟蹤數(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é)點星型拓撲滿足UDP協(xié)議的網(wǎng)絡(luò)仿真進行說明,。ns2所有相關(guān)文件可以在位于www.isi.edu/nsnam/ns的網(wǎng)址上找到,。
2 網(wǎng)絡(luò)拓撲及結(jié)構(gòu)的定義
網(wǎng)絡(luò)拓撲采用5個節(jié)點的星型結(jié)構(gòu),具體結(jié)構(gòu)如圖1所示,。
?
下面利用tcl語言對網(wǎng)絡(luò)拓撲結(jié)構(gòu)進行定義如下:
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é)點,,后4行分別定義了從n0、n1,、n2到n3以及n3到n4的網(wǎng)絡(luò)鏈路,,鏈路設(shè)置均相同,都為1Mbit/s,,延遲100ms,,丟棄超出信道容量的數(shù)據(jù)。定義完基本的節(jié)點和鏈路后,,對網(wǎng)絡(luò)的數(shù)據(jù)源和應(yīng)用的協(xié)議進行定義,,由于需要定義的節(jié)點較多,采用子程序的方法,。網(wǎng)絡(luò)的信源采用On/Off指數(shù)分布隨機信源,,協(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é)點上,,之后創(chuàng)建一個開關(guān)時間滿足指數(shù)分布的On/Off隨機信源,設(shè)置信源的包大小,、開關(guān)時間,、峰值速率參數(shù),并將信源綁定到UDP協(xié)議上,,最后指出信息流的源地址和目的地址,。
仿真模型定義完成后,在腳本程序中設(shè)置仿真的開始時間和結(jié)束時間,,以及通過編寫腳本將仿真中需要記錄的數(shù)據(jù)寫入文本文件,。這樣,仿真模型的整個腳本就完成了,,下面我們就可以運行仿真,,以及觀察仿真的結(jié)果。
3 運行仿真并動態(tài)觀察仿真過程
ns2軟件的仿真運行比較簡單,,采用后臺方式,,只需要在命令行中輸入如下命令即可:
ns? 腳本程序名.tcl
仿真運行結(jié)束后,我們可以利用仿真動態(tài)觀察器nam軟件查看仿真過程,,運行如下命令:
nam out.nam
觀察器啟動后,,我們可以看到一個圖形界面如圖2所示。通過觀察器按鈕,,我們可以正向播放,、反向播放,、快速前進、快速后退,、停止仿真動畫的播放,。我們也可以給網(wǎng)絡(luò)上傳輸?shù)陌由蠘?biāo)記,動態(tài)觀察包的傳遞過程,。在觀察器的右上角設(shè)置有步長設(shè)置滑塊,用來設(shè)置仿真演示的速度,。利用該工具大大方便了對網(wǎng)路運行情況的理解與觀察,。
?
4 仿真數(shù)據(jù)處理
利用仿真過程中記錄的數(shù)據(jù)和xgraph軟件,我們可以對這些數(shù)據(jù)進行圖形化的分析,。在此例中我們可以顯示節(jié)點n0,、n1、n2分別到n4的信息流量圖,,峰值速率分別為我們所設(shè)定的值,。我們也可以利用仿真形成的數(shù)據(jù)文件,根據(jù)需要對其進行進一步的處理,。
從上面的整個仿真過程來看,,ns2免費網(wǎng)絡(luò)系統(tǒng)仿真軟件具有功能完整,使用較方便,,支持較多網(wǎng)絡(luò)協(xié)議的特點,,但利用腳本來構(gòu)建網(wǎng)絡(luò)模型稍顯煩瑣。
?
參考文獻
1 逯昭義,,王思明. 計算機通信網(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)