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