第一個可正常使用 DSR, DSDV, AODV Routing 的 Wireless Simulation
參考 ns-2/tcl/test/test-suite-WLtutorial.tcl
參考網址 http://www.net.c.dendai.ac.jp/~yuuki/
如果要使用 DSDV
記得 Application 啟動的時間要比較晚
因為 DSDV 要建立好 routing table
花的時間比較久
routing-test.tcl
[code]
#===================================
# Simulation parameters setup
#===================================
set opt(chan) Channel/WirelessChannel ;# channel type
set opt(prop) Propagation/TwoRayGround ;# radio-propagation model
set opt(netif) Phy/WirelessPhy ;# network interface type
set opt(mac) Mac/802_11 ;# MAC type
set opt(ifq) Queue/DropTail/PriQueue ;# interface queue type
set opt(ll) LL ;# link layer type
set opt(ant) Antenna/OmniAntenna ;# antenna model
set opt(ifqlen) 50 ;# max packet in ifq
set opt(nn) 20 ;# number of mobilenodes
set opt(rp) DSDV ;# routing protocol
set opt(x) 700 ;# X dimension of topography
set opt(y) 550 ;# Y dimension of topography
set opt(stop) 150.0 ;# time of simulation end
set opt(cp) "cbr-test.tcl"
set opt(sc) "scen-test.tcl"
#===================================
# Initialization
#===================================
# Create a ns simulator
set ns [new Simulator]
# Setup topography object
set topo [new Topography]
$topo load_flatgrid $opt(x) $opt(y)
set god [create-god $opt(nn)]
# Open the NS trace file
$ns use-newtrace
set tracefile [open out.tr w]
$ns trace-all $tracefile
# Open the NAM trace file
set namfile [open out.nam w]
$ns namtrace-all $namfile
$ns namtrace-all-wireless $namfile $opt(x) $opt(y)
#===================================
# Mobile node parameter setup
#===================================
if {$opt(rp) == "DSR"} {
set opt(ifq) CMUPriQueue
} else {
set opt(ifq) Queue/DropTail/PriQueue
}
$ns node-config -adhocRouting $opt(rp) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-phyType $opt(netif) \
-channel [new $opt(chan)] \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON
#===================================
# Nodes Definition
#===================================
# Create 20 nodes
for {set i 0} {$i < $opt(nn)} {incr i} {
set node($i) [$ns node]
$node($i) random-motion 0
}
puts "Loading scenario file..."
source $opt(sc)
for {set i 0} {$i < $opt(nn)} {incr i} {
$ns initial_node_pos $node($i) 20
}
#===================================
# Agents & Applications Definition
#===================================
puts "Loading connection pattern..."
source $opt(cp)
#===================================
# Termination
#===================================
# Define a 'finish' procedure
proc finish {} {
global ns tracefile namfile
$ns flush-trace
close $tracefile
close $namfile
puts "running nam..."
exec nam out.nam &
exit 0
}
for {set i 0} {$i < $opt(nn)} {incr i} {
$ns at $opt(stop) "$node($i) reset"
}
$ns at $opt(stop) "$ns nam-end-wireless $opt(stop)"
$ns at $opt(stop) "finish"
$ns at $opt(stop) "puts \"done\" ; $ns halt"
puts "Starting Simulation..."
$ns run
[/code]
cbr-test.tcl
[code]
#===================================
# Agents Definition
#===================================
# Setup a TCP connection
set tcp [new Agent/TCP]
$ns attach-agent $node(15) $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $node(4) $sink
$ns connect $tcp $sink
#===================================
# Applications Definition
#===================================
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ns at 120.0 "$ftp start"
[/code]
scen-test.tcl
[code]
#===================================
# Nodes Definition
#===================================
set god [God instance]
#$god set-dist 15 16 1 ;# node 15 <--> node 16 : 2 hop
#$god set-dist 16 17 1 ;# node 15 <--> node 17 : 2 hop
#$god set-dist 17 18 1 ;# node 15 <--> node 16 : 2 hop
$node(0) set X_ 0
$node(0) set Y_ 600
$node(0) set Z_ 0.0
$node(1) set X_ 200
$node(1) set Y_ 600
$node(1) set Z_ 0.0
$node(2) set X_ 400
$node(2) set Y_ 600
$node(2) set Z_ 0.0
$node(3) set X_ 600
$node(3) set Y_ 600
$node(3) set Z_ 0.0
$node(4) set X_ 800
$node(4) set Y_ 600
$node(4) set Z_ 0.0
$node(5) set X_ 0
$node(5) set Y_ 400
$node(5) set Z_ 0.0
$node(6) set X_ 200
$node(6) set Y_ 400
$node(6) set Z_ 0.0
$node(7) set X_ 400
$node(7) set Y_ 400
$node(7) set Z_ 0.0
$node(8) set X_ 600
$node(8) set Y_ 400
$node(8) set Z_ 0.0
$node(9) set X_ 800
$node(9) set Y_ 400
$node(9) set Z_ 0.0
$node(10) set X_ 0
$node(10) set Y_ 200
$node(10) set Z_ 0.0
$node(11) set X_ 200
$node(11) set Y_ 200
$node(11) set Z_ 0.0
$node(12) set X_ 400
$node(12) set Y_ 200
$node(12) set Z_ 0.0
$node(13) set X_ 600
$node(13) set Y_ 200
$node(13) set Z_ 0.0
$node(14) set X_ 800
$node(14) set Y_ 200
$node(14) set Z_ 0.0
$node(15) set X_ 0
$node(15) set Y_ 0
$node(15) set Z_ 0.0
$node(16) set X_ 200
$node(16) set Y_ 0
$node(16) set Z_ 0.0
$node(17) set X_ 400
$node(17) set Y_ 0
$node(17) set Z_ 0.0
$node(18) set X_ 600
$node(18) set Y_ 0
$node(18) set Z_ 0.0
$node(19) set X_ 800
$node(19) set Y_ 0
$node(19) set Z_ 0.0
[/code]
No comments:
Post a Comment