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

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

2009-04-29
作者:劉 強

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

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