1. 程式人生 > >基於免費軟體ns2的網路模擬

基於免費軟體ns2的網路模擬

網路模擬軟體是網路性理論分析、評估網路設計方案以及網路故障診斷有力工具。在網路系統方案設計階段,對於規模稍大的互連網路目前還沒有哪個理論能夠對其進行較精確的分析。一般都減少投資風險,降低網路實現費用等都有著巨大的好處[1]。在網路模擬軟體中,比較有名的有MIL3公司的OPNET軟體、Cadence公司的VCC軟體,這些軟體一般的價格都在調20-30美元左右,每年還需要幾萬美元的服務費,對於研究單位、學校甚至大型的公司來講都一筆巨大原投資。除了上面的商業軟體,在網路模擬領域還有一些免費軟體,這裡面比較有名的就是VINT的ns2軟體。

1 ns2網路模擬軟體簡介

Network Simulator模擬軟體是位於美國加州的Lawrence Berkeley國家實驗室於1989年開始開發的軟體,簡稱ns軟體。Ns是一種可擴充套件、易配置和程式設計的事件驅動網路模擬工具。ns從S.keshavs REAL模擬器發展而來的。目前ns正在Virtual InterNetwork Tesbed(VINT)專案的支援下由南加州大學、施樂公司、加州大學與Lanrence Berkeley國家實驗室協作發展ns軟體。目前最高版本為ns2。

ns所用模擬語言是Tool Command Language(tel)語言的一個擴充套件,tcl語言一個簡單的指令碼語言,它有直譯器可與任何C語言相連結,tcl最強大的功能是它的X工具包(tk),該工具包可以讓使用者開發具有圖形使用者介面的指令碼,模擬通過tcl語言進行定義[2]。利用ns命令編寫指令碼來定義網路拓樸結構、配置網路資訊流量的產生和接收以及收集統計資訊。軟體配有模擬過程動態觀察器,可以在模擬執行結束後,動態檢視模擬的執行過程,觀察跟蹤資料。軟體還有圖形顯示器,顯示從模擬中得到的結果資料,直觀而清晰。

目前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平臺下軟體可能會不穩定。

ns2模擬軟體主要支援下面一些已完成測試的協議:HTTP、telnet業務流、ftp業務流、CBR業務流、On/Off業務流、UDP、TCP、RTP、SRM、演算法路由、分級路由、廣播路由、多播路由、靜態路由、動態路由、CSMA/CD MAC層協議等[3]。

下面將結合基於Linux平臺上的ns2軟體,對5節點星型拓樸滿足UDP協議的網路模擬進行說明。ns2所有相關檔案可以在位於www.isi.edu/nsnam/ns的網址上找到。

2 網路拓樸及結構的定義

網路拓樸採用5個節點的星型結構,具體結構如圖1所示。

下面利用tcl語言對網路拓樸結構進行定義如下:

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行設定了從n0到n4的4個網路節點,後4行分別定義了從n0、n1、n2到n3以及n3到n4的網路鏈路,鏈路設定均相同,都為1Mbit/s,延遲100ms,丟棄超出通道容量的資料。定義完基本的節點和鏈路後,對網路的資料來源和應用的協議進行定義,由於需要定義的節點較多,採用子程式的方法。網路的信源採用On/Off指數分佈隨機信源,協議採用UDP無邊接協議,具體程式指令碼如下:

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 3168le

$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

}

子程式首先設定ns作為模擬器,然後建立一個UDP協議並把這個協議附加到節點上,之後建立一個開關時間滿足指數分佈的On/Off隨機信源,設定信源的包大小、開關時間、峰值速率引數,並將信源繫結到UDP協議上,最後指出資訊流的源地址和目的地址。

模擬模型定義完成後,在指令碼程式中設定模擬的開始時間和結束時間,以及通過編寫指令碼將模擬中需要記錄的資料寫入文字檔案。這樣,模擬模型的整個指令碼就完成了,下面我們就可以執行模擬,以及觀察模擬的結果。

3 執行模擬並動態觀察模擬過程

ns2軟體的模擬執行比較簡單,採用後臺方式,只需要在命令列中輸入下命令即可:

ns指令碼程式名.tcl

模擬執行結束後,我們可以利用模擬動態觀察器nam軟體檢視模擬過程,執行如下命令:

nam out.nam

觀察器啟動後,我們可以看到一個圖形介面如圖2所示。通過觀察器按鈕,我們可以正向播放、反向播放、快速前進、快速後退、停止模擬動畫的播放。我們也可以給網路上傳輸的包加上標記,動態觀察包的傳遞過程。在觀察器的右上角設定有步長設定滑塊,用來設定模擬演示的速度。利用該工具大大方便了對網路執行情況的理解ns2與觀察。

4 模擬資料處理

利用模擬過程中記錄的資料和xgraph軟體,我們呆以對這些資料進行圖形化的分析。在此例中我們中以顯示節點n0、n1、n2分別到n4的資訊流量圖,峰值速率分別為我們所設定的值。我們也可以利用模擬形成的資料檔案,根據需要對其進行進一步的處理。

從上面的整個模擬過程來看,ns2免費網路系統模擬軟體具有功能完整,使用較方便,支援較多網路協議的特點,但利用指令碼來構建網路模型稍顯繁瑣。