《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于免費(fèi)軟件ns2的網(wǎng)絡(luò)仿真

基于免費(fèi)軟件ns2的網(wǎng)絡(luò)仿真

2009-04-29
作者:劉 強(qiáng)

  摘? 要: 介紹網(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)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。