3.3 NS2快速上手

3.3.1 NS2語法

set ns [new Simulator]

目的在創造一個 NS2 模擬的物件,主要的功能在

1. 初使化封包格式( packet format)

2. 創造一個Scheduler

 

set node1[$ns node]

建立一個名稱叫做 node1 Node

 

$ns simplex-link < n0 > < n1 > < bandwidth > < delay > < queuetype >

建立一條 Node n0 n1 的一條實體連結,並設定頻寬、延遲時間和 queue typequeue type DropTail(a FIFO queue)FQSFQDRRREDCBQCBQ/WRR type

範例如下

# n0 n1 間建立一個頻寬為2Mb DropTail Queue Link

$ns duplex-link $n0 $n1 2Mb 20ms DropTail

 

$ns attache-agent < node > < agent >

將一個 agent 結合到一個 node 上, agent 簡單來說也就表示一個 node 上所用的 protocol,而一開始建立Node ,預設的 agent Null

範例如下:

# 創造一個TCPAgent

set tcp [new Agent/TCP]

# TCP agent
結合到 node(n0)

$ns attach-agent $n0 $tcp

#
但光只有 TCP 是無法產生任何 Traffic 所以我們都會再建立一些Application Protocol TCP ( FTP)

set ftp [new Application/FTP] $ftp attach-agent $tcp

 

$ns connect < agent1 > < agent2 >

在兩個 agent 中建立一條 logical 的連結,不同於 Simplex-link 等方式所建立的實體連結,如 agent1 agent2 之間可能相隔好幾個點

 

$ns trace-all < tracefile >

ns2 模擬的內容寫回到在 < tracefile > 檔案中

範例如下:

set nf [open out.tr w]

$ns trace-all $nf

ps. 建議此指令最好放在程式的前面 (在建立 node link 之前) 以免模擬結果無法完整寫回檔案。
$ns namtrace-all < tracefile >

同樣是將 ns2 模擬的內容寫回到在 < tracefile > 檔案中,不過可以放在 nam 上去顯示模擬畫面

 

$ns at < time > < event >

在特定的時間 < time > 讓這個事件 < event > 被執行.

 

範例如下

# 4.5秒的時候執行 ftp

$ns at 4.5 "$ftp start"

# 5秒時候執行我們自己所定義的 finish 函式

$ns at 5.0 "finish"


$ns run

開始執行 scheduler.

 

3.3.2 NS2圖形分析工具介紹

Nam 是一個能將 NS2 模擬結果視覺化顯示出來的工具, 他能顯示封包的流向和 Drop 等資訊.
執行方式:

nam < trace-file >

 

畫面

此外再介紹關於在 nam 中顯示的NS2語法(如顯示顏色、標籤等)
Node options - color shape label

# 設定 node 顏色

$node color red

 

# 設定 node 形狀(預設圓形)

$node shape square (circle square and hexagon)

#
設定 node 的標籤

$node label "Text"

#
設定 node 標籤的顏色

$node label-color blue

 

Link options

# 設定 Link 顏色

$ns duplex-link-op $n1 $n2 color green

#
設定 Link 的標籤

$ns duplex-link-op $n1 $n2 label "Text"


 

# 設定 Link 標籤的顏色

$ns duplex-link-op $n1 $n2 label-color blue

 

3.3.3 NS2產生的trace file

trace file 的檔案格式

假如我們的 tcp script 有做 trace-all 的動作,那當我們執行完 ns2 之後,就會產生一個紀錄的檔案,而這個檔案主要就是紀錄一些 packet 在我們模擬中的傳輸情況,我們可以試著去打開這個檔案來研究看看,如下:


檔案中,每行的每個欄位所代表的意義分別如下:

1 代表事件的類別

2 代表事件發生的時間

3 代表 packet source node

4 代表 packet destination node

5 代表 packet 的類別

6 代表 packet 的大小 (encoded in IP header)

7 代表 packet flags

8 代表 connection(flow) id

9 代表 source address ( node.port )

10 代表 destinations address ( node.port )

11 代表 packet sequence number ( network layer protocol's )

12 代表 packet id ( unique )

回上一頁