How to do source routing simulation? (for wired network)

 

[說明]

        ns2,若是想要瞭解source routing的是如何運作的,可以參考ns-allinone-2.28/ns-2.28/src_rtg目錄下的C++程式碼(若是使用其他的版本的ns,也可以在相對應的目錄下找到程式碼).而底下所提供的範例則是ns-allinone-2.28/ns-2.28/tcl/ex/src_test.tcl

 

 

#

# Contributed by Rishi Bhargava <rishi_bhargava@yahoo.com> May, 2001.

# Example script for source-routing; also see ~ns/src_rtg/README.txt

#

 

#產生一個模擬的物件

set ns [new Simulator]

 

#告訴ns要使用source routing

$ns src_rting 1

 

#設定顏色 (這是在NAM中會用到)

$ns color 1 Blue

$ns color 2 Red

 

#設定NAM和所有事件的記錄

set nf [open out.tr w]

$ns trace-all $nf

set f [open out.nam w]

$ns namtrace-all $f

 

#產生四個節點

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

set n4 [$ns node]

 

#在節點間建立連線

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

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

$ns duplex-link $n3 $n2 1Mb 10ms DropTail

$ns duplex-link $n2 $n4 1Mb 10ms DropTail

$ns duplex-link $n4 $n3 1Mb 10ms DropTail

$ns duplex-link $n1 $n3 1Mb 10ms DropTail

 

#n0節點上產生一個TCP agent

set cbr0 [new Agent/TCP]

$ns attach-agent $n0 $cbr0

#設定此條flow id 1 (NAM中會以藍色顯示)

#在原本的檔案中是設定為0,請改成1

$cbr0 set fid_ 1

 

#n3節點上產生一個TCP agent

set cbr1 [new Agent/TCP]

$ns attach-agent $n3 $cbr1

 

#設定此條flow id 2 (NAM中會以紅色顯示)

#在原本的檔案中是設定為1,請改成2

$cbr1 set fid_ 2

 

#告訴TCP agent,此條flow要使用source routing

$cbr0 target [$n0 set src_agent_]

$cbr1 target [$n3 set src_agent_]

 

#建立一個連線,並指定要走的路徑

#第一個參數是flow id,[$cbr0 set fid_]

#第二參數是source node id,0

#第三參數是destination node id,1

#剩下的參數就是指訂要走的路徑, 0à2 à4à3à1

set temp [$n0 set src_agent_]

$temp install_connection [$cbr0 set fid_] 0 1 0 2 4 3 1

 

#參考上面的說明

set temp [$n3 set src_agent_]

$temp install_connection [$cbr1 set fid_] 3 4 3 2 4

 

set null0 [new Agent/TCPSink]

set null1 [new Agent/TCPSink]

 

$ns attach-agent $n1 $null0

$ns attach-agent $n4 $null1

 

 

$ns connect $cbr0 $null0 

$ns connect $cbr1 $null1

 

set ftp1 [$cbr0 attach-source FTP]

set ftp2 [$cbr1 attach-source FTP]

 

 

$ns at 0.5 "$ftp1 start"

$ns at 0.5 "$ftp2 start"

$ns at 5.0 "$ftp1 stop"

$ns at 10.5 "$ftp2 stop"

 

 

$ns at 11.0 "$ns halt"

 

$ns run

 

 

執行模擬

 

從動畫中,我們可以看出第一條flow(藍色)所走的路徑為0à2 à4à3à1,第二條flow(紅色),所走的路徑為3à2à4.

但請讀者仔細看看,看看ack是否也是走相同的路徑回到source.

 

Last modified date: 2006/05/30

 

Author: Chih-Heng Ke (柯志亨)

Email: smallko@ee.ncku.edu.tw