NS-2-TCP Agent
############################################################
# set option value
############################################################
set opt(trace) out.nam ;# 設定nam檔為out.nam
set opt(nodes) 10 ;# 節點個數
set opt(rtproto) DV ;# 路由協定
set opt(src.packet.size) 1000 ;# 來源端封包大小
set opt(src.packet.int) 0.005 ;# 來源端封包間隔
############################################################
# main program
############################################################
set ns [new Simulator] ;# 在檔案一開始會先建立一個的模擬
$ns rtproto $opt(rtproto) ;# 設定路由協定
set nf [open $opt(trace) w] ;# 開啟一個可寫入的檔案out.nam
$ns namtrace-all $nf ;# 將所有模擬的資料都寫入$nf這個檔案中
$ns use-newtrace
proc finish {} { ;# 新增一個procedure "finish"
global ns nf opt ;# 讓這個proc能讀取這個scrpit的其他變數
$ns flush-trace ;# Use new trace format 使用新的trace format
close $nf
exec nam $opt(trace) &
exit 0
}
for {set i 0} {$i < $opt(nodes)} {incr i} { ;# 建立節點
set n($i) [$ns node]
}
for {set i 0} {$i < $opt(nodes)} {incr i} { ;# 建立一個環狀的topology
$ns duplex-link $n($i) $n([expr ($i+1)%$opt(nodes)]) 1Mb 10ms DropTail
}
set tcpS0 [new Agent/TCP] ;# TCP Sender
$ns attach-agent $n(0) $tcpS0 ;# 將TCP Sender裝在$n(0)
set tcpR0 [new Agent/TCPSink] ;# TCP Sink with one ACK per packet
$ns attach-agent $n(2) $tcpR0 ;# 將TCP Sink裝在$n(2)
$ns connect $tcpS0 $tcpR0 ;# 將TCP Sender 和TCP Sink做連結
set ftp [$tcpS0 attach-app FTP] ;# TCP上層的流量是FTP
$ns at 0.5 "$ftp start"
$ns rtmodel-at 1.5 down $n(1) ;# 在第1.5秒$n(1)停掉所有的interface
$ns rtmodel-at 3.5 up $n(0) $n(1) ;# 在第2.5秒,將$n(0)和$n(1)的介面up
$ns rtmodel-at 5.5 up $n(1) $n(2) ;# 在第2.5秒,將$n(1)和$n(2)的介面up
$ns at 7.5 "$ftp stop"
$ns at 9.5 "finish" ;# 在第9.5秒,結束模擬
$ns run ;# 開始執行模擬
沒有留言:
張貼留言