nsBench介紹

[簡介]

      The goal of nsBench [1] project is to develop supporting tools that enable creating, analyzing and visualizing NS-2 simulation scripts and traces automatically.

nsBench is a drag-and-drop GUI and easy to use in undergraduate and graduate networking courses. nsBench makes NS-2 simulation development and analysis faster and easier for students and researchers without losing the flexibility or expressiveness gained by writing a script.

[特色]

1.      Nodes, simplex/duplex links and LANs

2.      Agents: TCP, UDP, TCPSink, TCP/Fack, TCP/FullTcp, TCP/Newreno, TCP/Reno, TCP/Sack1, TCPSink, TCPSink/Sack1, TCPSink/DelAck, TCPSink/Sack1/DelAck, TCP/Vegas, Null Agent

3.      Applications/Traffic: FTP, Telent, Http/Server, Http/Client, Http/Cache, webtraf, Traffic/CBR, Traffic/Pareto, Traffic/Exponential

4.      Services: Multicast, Packet Scheduling, RED, DiffServ

5.      Creating "Groups" concept to compensate for "loops"

6.      Scenario generator

7.      Link Monitors

8.      Loss Models

9.      Routing Protocols

 

[準備工具]

        由於nsBench是由Java所開發的,因此在實行nsBench之前必需先安裝可執行JVM,此軟體可到Sun的網站下載,而筆者所使用的是jre-1_5_0_03-windows-i586-p.exe

        安裝完後,接著就是下載nsBench,下載網址是http://www.mnlab.cs.depaul.edu/projects/nsbench/download/nsBench-1.0b3.jar

 

[執行nsBench]

        作者所使用的環境是windows xp + cygwin + ns2.28nsBench的軟體nsBench-1.0b3.jar是放在c:\cygwin\home\smallko\nsBench下。執行的方法為:

1.      打開一個cygwin的視窗。

2.      $cd nsBench

3.      $java  -jar   nsBench-1.0b3.jar

4.      就會出現底下的視窗。

 

[範例:設計出http://csie.nqu.edu.tw/smallko/ns2_old/tool.htm內的模擬環境]

1.      建立節點

 

2.      請建立四個節點,建立後如下圖所示

 

3.      按住節點,並拖曳到適當的位置,如下圖所示。

 

4.      建立連線。以n0n2為例,先把滑鼠移至到n0上,等到游標變成+後按住左鍵,並拖曳到ns2上。

 

5.      設定n0n2Link相關參數。在n0ns2link上快速的連續按兩次,則可出現如下圖所示。(使用者則可以根據需要在此視窗中做設定)

 

6.      所有link都設定完後,則如下圖所示。

 

7.      選擇TCP agent

 

8.      tcp0n0產生連結,方法同link的建立。同理產生一個TCP sink,完成後如下圖所示。

 

9.      tcp0上產生一個FTP的應用程式。

 

10.  tcp0sink0之間產生連線。先把滑鼠移至到tcp0上,等到游標變成+後按住左鍵,並拖曳到sink0上。

 

11.   同理設定UDP agentNull agentCBR應用程式。

 

12.  設定CBR的參數。

 

13.  設定應用程式執行的時間。

(按一下Add Row,並把相關的資料填入)

 

14.  設定trace的檔案名稱。

 

15.  產生TCL

(設定此project的檔名,本例是以example為例)

 

16.  觀看TCL程式碼。

(會使用wordpad開啟sim.tcl檔案,內容如下所示)

# Creating New Simulator

set ns [new Simulator]

 

# Setting up the traces

set f [open out.tr w]

set nf [open out.nam w]

$ns namtrace-all $nf

$ns trace-all $f

proc finish {} {

           global ns nf f

           $ns flush-trace

           puts "Simulation completed."

           close $nf

           close $f

           exit 0

}

 

 

#

#Create Nodes

#

 

set n0 [$ns node]

      puts "n0: [$n0 id]"

set n1 [$ns node]

      puts "n1: [$n1 id]"

set n2 [$ns node]

      puts "n2: [$n2 id]"

set n3 [$ns node]

      puts "n3: [$n3 id]"

 

 

#

#Setup Connections

#

 

$ns duplex-link $n0 $n2 2Mb 10ms DropTail

 

$ns duplex-link $n1 $n2 2Mb 10ms DropTail

 

$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail

$ns queue-limit $n2 $n3 10

 

 

 

#

#Set up Transportation Level Connections

#

 

set tcp0 [new Agent/TCP]

$ns attach-agent $n0 $tcp0

 

set sink0 [new Agent/TCPSink]

$ns attach-agent $n3 $sink0

 

set udp0 [new Agent/UDP]

$ns attach-agent $n1 $udp0

 

set null0 [new Agent/Null]

$ns attach-agent $n3 $null0

 

 

 

#

#Setup traffic sources

#

 

set ftp0 [new Application/FTP]

$ftp0 attach-agent $tcp0

 

set cbr0 [new Application/Traffic/CBR]

$cbr0 attach-agent $udp0

 

$ns connect $tcp0 $sink0

$tcp0 set fid_ 0

$ns connect $udp0 $null0

$udp0 set fid_ 1

 

#

#Start up the sources

#

 

$ns at 0.1 "$cbr0 start"

$ns at 1.0 "$ftp0 start"

$ns at 4.0 "$ftp0 stop"

$ns at 4.5 "$cbr0 stop"

$ns at 5.0 "finish"

$ns run

 

17.  執行模擬。筆者建議直接到cygwin視窗下去執行$ns sim.tcl,這樣比較不會有問題。

 

[參考]

1. http://www.mnlab.cs.depaul.edu/projects/nsbench/