Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # This script is created by NSG2 beta1
- # <http://wushoupong.googlepages.com/nsg>
- #===================================
- # Simulation parameters setup
- #===================================
- set val(chan) Channel/WirelessChannel ;# channel type
- set val(prop) Propagation/TwoRayGround ;# radio-propagation model
- set val(netif) Phy/WirelessPhy ;# network interface type
- set val(mac) Mac/802_11 ;# MAC type
- set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
- set val(ll) LL ;# link layer type
- set val(ant) Antenna/OmniAntenna ;# antenna model
- set val(ifqlen) 50 ;# max packet in ifq
- set val(nn) 20 ;# number of mobilenodes
- set val(rp) DSDV ;# routing protocol
- set val(x) 1211 ;# X dimension of topography
- set val(y) 1000 ;# Y dimension of topography
- set val(stop) 50.0 ;# time of simulation end
- Mac/802_11 set cdma_code_bw_start_ 0 ;#cdma code
- Mac/802_11 set cdma_code_bw_stop_ 63
- Mac/802_11 set cdma_code_init_start_ 64
- Mac/802_11 set cdma_code_init_stop_ 127
- Mac/802_11 set cdma_code_cqich_start_ 128
- Mac/802_11 set cdma_code_cqich_stop_ 195
- Mac/802_11 set cdma_code_handover_start_ 196
- Mac/802_11 set cdma_code_handover_start_ 196
- set f0 [open throughput.tr w]
- set f1 [open lost.tr w]
- set f2 [open delay.tr w]
- #===================================
- # Initialization
- #===================================
- #Create a ns simulator
- set ns [new Simulator]
- #Setup topography object
- set topo [new Topography]
- $topo load_flatgrid $val(x) $val(y)
- create-god $val(nn)
- #Open the NS trace file
- set tracefile [open 6.tr w]
- $ns trace-all $tracefile
- #Open the NAM trace file
- set namfile [open 6.nam w]
- $ns namtrace-all $namfile
- $ns namtrace-all-wireless $namfile $val(x) $val(y)
- set chan [new $val(chan)];#Create wireless channel
- #===================================
- # Mobile node parameter setup
- #===================================
- $ns node-config -adhocRouting $val(rp) \
- -llType $val(ll) \
- -macType $val(mac) \
- -ifqType $val(ifq) \
- -ifqLen $val(ifqlen) \
- -antType $val(ant) \
- -propType $val(prop) \
- -phyType $val(netif) \
- -channel $chan \
- -topoInstance $topo \
- -agentTrace ON \
- -routerTrace ON \
- -macTrace ON \
- -movementTrace ON
- #===================================
- # Nodes Definition
- #===================================
- #Create 20 nodes
- set n0 [$ns node]
- $n0 set X_ 231
- $n0 set Y_ 506
- $n0 set Z_ 0.0
- $ns initial_node_pos $n0 20
- set n1 [$ns node]
- $n1 set X_ 380
- $n1 set Y_ 498
- $n1 set Z_ 0.0
- $ns initial_node_pos $n1 20
- set n2 [$ns node]
- $n2 set X_ 511
- $n2 set Y_ 498
- $n2 set Z_ 0.0
- $ns initial_node_pos $n2 20
- set n3 [$ns node]
- $n3 set X_ 675
- $n3 set Y_ 498
- $n3 set Z_ 0.0
- $ns initial_node_pos $n3 20
- set n4 [$ns node]
- $n4 set X_ 831
- $n4 set Y_ 505
- $n4 set Z_ 0.0
- $ns initial_node_pos $n4 20
- set n5 [$ns node]
- $n5 set X_ 855
- $n5 set Y_ 314
- $n5 set Z_ 0.0
- $ns initial_node_pos $n5 20
- set n6 [$ns node]
- $n6 set X_ 672
- $n6 set Y_ 306
- $n6 set Z_ 0.0
- $ns initial_node_pos $n6 20
- set n7 [$ns node]
- $n7 set X_ 505
- $n7 set Y_ 310
- $n7 set Z_ 0.0
- $ns initial_node_pos $n7 20
- set n8 [$ns node]
- $n8 set X_ 376
- $n8 set Y_ 300
- $n8 set Z_ 0.0
- $ns initial_node_pos $n8 20
- set n9 [$ns node]
- $n9 set X_ 222
- $n9 set Y_ 309
- $n9 set Z_ 0.0
- $ns initial_node_pos $n9 20
- set n10 [$ns node]
- $n10 set X_ 872
- $n10 set Y_ 169
- $n10 set Z_ 0.0
- $ns initial_node_pos $n10 20
- set n11 [$ns node]
- $n11 set X_ 687
- $n11 set Y_ 166
- $n11 set Z_ 0.0
- $ns initial_node_pos $n11 20
- set n12 [$ns node]
- $n12 set X_ 498
- $n12 set Y_ 154
- $n12 set Z_ 0.0
- $ns initial_node_pos $n12 20
- set n13 [$ns node]
- $n13 set X_ 378
- $n13 set Y_ 143
- $n13 set Z_ 0.0
- $ns initial_node_pos $n13 20
- set n14 [$ns node]
- $n14 set X_ 240
- $n14 set Y_ 144
- $n14 set Z_ 0.0
- $ns initial_node_pos $n14 20
- set n15 [$ns node]
- $n15 set X_ 889
- $n15 set Y_ 9
- $n15 set Z_ 0.0
- $ns initial_node_pos $n15 20
- set n16 [$ns node]
- $n16 set X_ 681
- $n16 set Y_ 0
- $n16 set Z_ 0.0
- $ns initial_node_pos $n16 20
- set n17 [$ns node]
- $n17 set X_ 495
- $n17 set Y_ -11
- $n17 set Z_ 0.0
- $ns initial_node_pos $n17 20
- set n18 [$ns node]
- $n18 set X_ 372
- $n18 set Y_ -10
- $n18 set Z_ 0.0
- $ns initial_node_pos $n18 20
- set n19 [$ns node]
- $n19 set X_ 228
- $n19 set Y_ -13
- $n19 set Z_ 0.0
- $ns initial_node_pos $n19 20
- #===================================
- # Agents Definition
- #===================================
- #Setup a UDP connection
- set udp0 [new Agent/UDP]
- $ns attach-agent $n0 $udp0
- set sink [new Agent/LossMonitor]
- $ns attach-agent $n14 $sink
- $ns connect $udp0 $sink
- $udp0 set packetSize_ 1500
- #===================================
- # Applications Definition
- #===================================
- #Setup a CBR Application over UDP connection
- set cbr0 [new Application/Traffic/CBR]
- $cbr0 attach-agent $udp0
- $cbr0 set packetSize_ 1000
- $cbr0 set rate_ 1.0Mb
- $cbr0 set random_ null
- set holdtime 0
- set holdseq 0
- set holdrate1 0
- #===================================
- # Recording
- #===================================
- #Define a 'record' procedure
- proc record {} {
- global sink f0 f1 f2 holdtime holdseq holdrate1
- set nsi [Simulator instance]
- set time 0.9 ;#Set sampling time to 0.9 sec
- set bw0 [$sink set bytes_]
- puts "$bw0"
- set bw1 [$sink set nlost_]
- set bw2 [$sink set lastPktTime_]
- set bw3 [$sink set npkts_]
- set now [$nsi now]
- # Record bit rate in tracefiles
- puts $f0 "$now [expr (($bw0+ $holdrate1)*8)/(2*$time*1000000)]"
- #Record Packet loss rate in file
- puts $f1 "$now [expr $bw1/$time]"
- # Record Packet Delay in File
- if { $bw3 > $holdseq } {
- puts $f2 "$now [expr ($bw2 -$holdtime)/($bw3-$holdseq)]"
- } else {
- puts $f2 "$now [expr ($bw3-$holdseq)]"
- }
- $sink set bytes_ 0
- $sink set nlost_ 0
- set holdtime $bw2
- set holdseq $bw3
- set holdrate1 $bw0
- $nsi at [expr $now+$time] "record" ;#schedule record after $time interval sec
- }
- $ns at 0.0 "record"
- $ns at 1.0 "$cbr0 start"
- $ns at 50.0 "$cbr0 stop"
- $ns at 2.0 "$n0 setdest 300 250 20"
- $ns at 2.0 "$n1 setdest 500 650 20"
- $ns at 2.0 "$n2 setdest 685 705 20"
- $ns at 2.0 "$n3 setdest 765 745 20"
- $ns at 2.0 "$n4 setdest 567 900 20"
- $ns at 2.0 "$n5 setdest 155 200 20"
- $ns at 2.0 "$n6 setdest 358 600 20"
- $ns at 2.0 "$n7 setdest 1100 950 20"
- $ns at 10.0 "$n8 setdest 1153 836 20"
- $ns at 10.0 "$n9 setdest 950 940 20"
- $ns at 10.0 "$n10 setdest 124 174 20"
- $ns at 10.0 "$n11 setdest 200 150 20"
- $ns at 10.0 "$n12 setdest 300 200 20"
- $ns at 10.0 "$n13 setdest 400 250 20"
- $ns at 10.0 "$n14 setdest 500 300 20"
- $ns at 10.0 "$n15 setdest 600 550 20"
- $ns at 10.0 "$n16 setdest 300 500 20"
- $ns at 10.0 "$n17 setdest 300 550 20"
- $ns at 2.0 "$n18 setdest 900 500 20"
- $ns at 2.0 "$n19 setdest 1000 550 20"
- $ns at 0.5 "$n0 add-mark m blue square"
- $ns at 0.5 "$n14 add-mark m red square"
- $ns at 0.5 "$n0 label source"
- $ns at 0.5 "$n14 label Destination"
- #===================================
- # Termination
- #===================================
- #Define a 'finish' procedure
- proc finish {} {
- global ns tracefile namfile
- $ns flush-trace
- close $tracefile
- close $namfile
- exec nam 6.nam &
- exec xgraph throughput.tr &
- exec xgraph lost.tr &
- exec xgraph delay.tr &
- exit 0
- }
- for {set i 0} {$i < $val(nn) } { incr i } {
- $ns at $val(stop) "\$n$i reset"
- }
- $ns at $val(stop) "$ns nam-end-wireless $val(stop)"
- $ns at $val(stop) "finish"
- $ns at $val(stop) "puts \"done\" ; $ns halt"
- $ns run
Add Comment
Please, Sign In to add comment