?? final.tcl
字號:
# ======================================================================# Define options# ====================================================================== set val(chan) Channel/WirelessChannel ;# channel type set val(prop) Propagation/TwoRayGround ;# radio-propagation model set val(ant) Antenna/OmniAntenna ;# Antenna type set val(ll) LL ;# Link layer type set val(ifq) Queue/DropTail/PriQueue ;# Interface queue type set val(ifqlen) 250 ;# max packet in ifq set val(netif) Phy/WirelessPhy ;# network interface type set val(mac) Mac/802_11 ;# MAC type set val(nn) 20 ;# number of mobilenodes set val(rp) AO2P ;# routing protocol set val(x) 1000 set val(y) 1000CMUTrace set newtrace_ 1set RouterTrace ON
set MacTrace ONPhy/WirelessPhy set CPThresh_ 10.0Phy/WirelessPhy set CSThresh_ 1.559e-11Phy/WirelessPhy set RXThresh_ 3.652e-10Phy/WirelessPhy set bandwidth_ 2e6Phy/WirelessPhy set Pt_ 0.2818 ;# for 250.0Phy/WirelessPhy set freq_ 914e+6Phy/WirelessPhy set L_ 1.0 set ns [new Simulator]#ns-random 0set f [open output.tr w]$ns trace-all $fset namtrace [open output.nam w]$ns namtrace-all-wireless $namtrace $val(x) $val(y)$ns use-newtrace# *** Throughput Trace ***set f0 [open out1.tr w]set f1 [open out2.tr w]set f2 [open out3.tr w]# *** Packet Loss Trace ***set f3 [open jitter1.tr w]set f4 [open jitter2.tr w]set f5 [open jitter3.tr w]# *** Packet Delay Trace ***set f6 [open delay1.tr w]set f7 [open delay2.tr w]set f8 [open delay3.tr w]set topo [new Topography]$topo load_flatgrid 1000 1000create-god $val(nn)#set chan_1 [new $val(chan)]#set chan_2 [new $val(chan)]#set chan_3 [new $val(chan)]#set chan_4 [new $val(chan)]#set chan_5 [new $val(chan)]#set chan_6 [new $val(chan)]# CONFIGURE AND CREATE NODES$ns node-config -adhocRouting AODV \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON \ -movementTrace ON \ proc finish {} { global ns f f0 f1 f2 f3 f4 f5 f6 f7 f8 namtrace $ns flush-trace close $namtrace close $f0 close $f1 close $f2 close $f3 close $f4 close $f5 close $f6 close $f7 close $f8 exec ./xgraph out1.tr out2.tr out3.tr -geometry 800x400 & exec ./xgraph jitter1.tr jitter2.tr jitter3.tr -geometry 800x400 & exec ./xgraph delay1.tr delay2.tr delay3.tr -geometry 800x400 & exit 0} # define color index$ns color 0 red$ns color 1 blue$ns color 2 chocolate$ns color 3 red$ns color 4 brown$ns color 5 tan$ns color 6 gold$ns color 7 black set n(0) [$ns node]$n(0) color "0"$n(0) shape "circle"set n(1) [$ns node]$n(1) color "blue"$n(1) shape "circle"set n(2) [$ns node]$n(2) color "tan"$n(2) shape "circle"set n(3) [$ns node]$n(3) color "red"$n(3) shape "circle"set n(4) [$ns node]$n(4) color "tan"$n(4) shape "circle"set n(5) [$ns node]$n(5) color "red"$n(5) shape "circle"set n(6) [$ns node]$n(6) color "0"$n(6) shape "circle"set n(7) [$ns node]$n(7) color "brown"$n(7) shape "circle"set n(8) [$ns node]$n(8) color "black"$n(8) shape "circle"set n(9) [$ns node] $n(9) color "red"$n(9) shape "circle"set n(10) [$ns node]$n(10) color "tan"$n(10) shape "circle"set n(11) [$ns node]$n(11) color "red"$n(11) shape "circle"set n(12) [$ns node]$n(12) color "red"$n(12) shape "circle"set n(13) [$ns node]$n(13) color "tan"$n(13) shape "circle"set n(14) [$ns node]$n(14) color "red"$n(14) shape "circle"set n(15) [$ns node]$n(15) color "tan"$n(15) shape "circle"set n(16) [$ns node]$n(16) color "red"$n(16) shape "circle"set n(17) [$ns node]$n(17) color "red"$n(17) shape "circle"set n(18) [$ns node]$n(18) color "tan"$n(18) shape "circle"set n(19) [$ns node]$n(19) color "red"$n(19) shape "circle"for {set i 0} {$i < $val(nn)} {incr i} { $ns initial_node_pos $n($i) 30+i*100}$n(0) set X_ 0.0$n(0) set Y_ 0.0$n(0) set Z_ 0.0$n(1) set X_ 0.0$n(1) set Y_ 0.0$n(1) set Z_ 0.0$n(2) set X_ 0.0$n(2) set Y_ 0.0$n(2) set Z_ 0.0$n(3) set X_ 0.0$n(3) set Y_ 0.0$n(3) set Z_ 0.0$n(4) set X_ 0.0$n(4) set Y_ 0.0$n(4) set Z_ 0.0$n(5) set X_ 0.0$n(5) set Y_ 0.0$n(5) set Z_ 0.0$n(6) set X_ 0.0$n(6) set Y_ 0.0$n(6) set Z_ 0.0$n(7) set X_ 0.0$n(7) set Y_ 0.0$n(7) set Z_ 0.0$n(8) set X_ 0.0$n(8) set Y_ 0.0$n(8) set Z_ 0.0$n(9) set X_ 0.0$n(9) set Y_ 0.0$n(9) set Z_ 0.0$n(10) set X_ 0.0$n(10) set Y_ 0.0$n(10) set Z_ 0.0$n(11) set X_ 0.0$n(11) set Y_ 0.0$n(11) set Z_ 0.0$n(12) set X_ 0.0$n(12) set Y_ 0.0$n(12) set Z_ 0.0$n(13) set X_ 0.0$n(13) set Y_ 0.0$n(13) set Z_ 0.0$n(14) set X_ 0.0$n(14) set Y_ 0.0$n(14) set Z_ 0.0$n(15) set X_ 0.0$n(15) set Y_ 0.0$n(15) set Z_ 0.0$n(16) set X_ 0.0$n(16) set Y_ 0.0$n(16) set Z_ 0.0$n(17) set X_ 0.0$n(17) set Y_ 0.0$n(17) set Z_ 0.0$n(18) set X_ 0.0$n(18) set Y_ 0.0$n(18) set Z_ 0.0$n(19) set X_ 0.0$n(19) set Y_ 0.0$n(19) set Z_ 0.0$ns at 0.0 "$n(0) setdest 100.0 100.0 3000.0"$ns at 0.0 "$n(1) setdest 200.0 200.0 3000.0"$ns at 0.0 "$n(2) setdest 300.0 200.0 3000.0"$ns at 0.0 "$n(3) setdest 400.0 300.0 3000.0"$ns at 0.0 "$n(4) setdest 500.0 300.0 3000.0"$ns at 0.0 "$n(5) setdest 600.0 400.0 3000.0"$ns at 0.0 "$n(6) setdest 550.0 30.0 3000.0"$ns at 0.0 "$n(7) setdest 15.0 740.0 3000.0"$ns at 0.0 "$n(8) setdest 600.0 340.0 3000.0"$ns at 0.0 "$n(9) setdest 180.0 240.0 3000.0"$ns at 0.0 "$n(10) setdest 25.0 610.0 3000.0"$ns at 0.0 "$n(11) setdest 615.0 535.0 3000.0"$ns at 0.0 "$n(12) setdest 425.0 79.0 3000.0"$ns at 0.0 "$n(13) setdest 346.0 95.0 3000.0"$ns at 0.0 "$n(14) setdest 645.0 57.0 3000.0"$ns at 0.0 "$n(15) setdest 120.0 245.0 3000.0"$ns at 0.0 "$n(16) setdest 367.0 410.0 3000.0"$ns at 0.0 "$n(17) setdest 560.0 390.0 3000.0"$ns at 0.0 "$n(18) setdest 680.0 235.0 3000.0"$ns at 0.0 "$n(19) setdest 168.0 157.0 3000.0"$ns at 2.0 "$n(5) setdest 170.566.0 106.349 5.0"$ns at 1.5 "$n(3) setdest 134.868 84.518 5.0"$ns at 5.0 "$n(7) setdest 37.0 45.0 5.0"$ns at 5.1 "$n(8) setdest 160.0 740.0 5.0"$ns at 5.2 "$n(9) setdest 480.0 640.0 5.0"$ns at 5.9 "$n(9) setdest 330.0 400.0 5.0"$ns at 5.2 "$n(10) setdest 580.0 90.0 5.0"$ns at 5.8 "$n(11) setdest 160.0 300.0 5.0"$ns at 5.9 "$n(12) setdest 230.0 390.0 5.0"$ns at 6.0 "$n(13) setdest 136.0 410.0 5.0"$ns at 7.5 "$n(14) setdest 430.0 330.0 5.0" $ns at 5.8 "$n(15) setdest 247.0 315.0 5.0"$ns at 5.9 "$n(16) setdest 128.0 522.0 5.0"$ns at 6.0 "$n(17) setdest 380.0 45.0 5.0"$ns at 7.5 "$n(18) setdest 305.0 202.0 5.0"$ns at 7.5 "$n(19) setdest 538.0 455.0 5.0" $ns at 1.0 "$n(0) color Blue"$ns at 1.0 "$n(0) label Source1"$ns at 1.0 "$n(7) color blue"$ns at 1.0 "$n(7) label Receiver1"$ns at 1.0 "$n(6) color brown"$ns at 1.0 "$n(6) label source2"$ns at 1.0 "$n(11) color Brown"$ns at 1.0 "$n(11) label Receiver2"$ns at 1.0 "$n(2) color cyan"$ns at 1.0 "$n(2) label source3"$ns at 1.0 "$n(5) color cyan"$ns at 1.0 "$n(5) label Receiver3"# CONFIGURE AND SET UP A FLOWproc record {} { global sink7 sink11 sink5 f0 f1 f2 f3 f4 f5 f6 f7 f8 set ns [Simulator instance] set time 0.9 ;#Set Sampling Time to 0.9 Sec set bw0 [$sink7 set bytes_] set bw1 [$sink11 set bytes_] set bw2 [$sink5 set bytes_] set bw3 [$sink7 set nlost_] set bw4 [$sink11 set nlost_] set bw5 [$sink5 set nlost_] set bw6 [$sink7 set lastPktTime_] set bw7 [$sink7 set npkts_] set bw8 [$sink11 set lastPktTime_] set bw9 [$sink11 set npkts_] set bw10 [$sink5 set lastPktTime_] set bw11 [$sink5 set npkts_] set now [$ns now] # Record Bit Rate in Trace Files puts $f0 "$now [expr (($bw0)*8)/(2*$time*1000000)]" puts $f1 "$now [expr (($bw1)*8)/(2*$time*1000000)]" puts $f2 "$now [expr (($bw2)*8)/(2*$time*1000000)]" # Record Packet Loss Rate in File puts $f3 "$now [expr $bw3/$time]" puts $f4 "$now [expr $bw4/$time]" puts $f5 "$now [expr $bw5/$time]" # Record Packet Delay in File if { $bw7 > 0} { puts $f6 "$now [expr ($bw6)/($bw7)]" } else { puts $f6 "$now [expr ($bw7)]" } if { $bw9 > 0 } { puts $f7 "$now [expr ($bw8)/($bw9)]" } else { puts $f7 "$now [expr ($bw9)]" } if { $bw11 > 0 } { puts $f8 "$now [expr ($bw10)/($bw11)]" } else { puts $f8 "$now [expr ($bw11)]" } $ns at [expr $now+$time] "record" ;# Schedule Record after $time #interval sec}set sink0 [new Agent/LossMonitor]set sink1 [new Agent/LossMonitor]set sink2 [new Agent/LossMonitor]set sink3 [new Agent/LossMonitor]set sink4 [new Agent/LossMonitor]set sink5 [new Agent/LossMonitor]set sink6 [new Agent/LossMonitor]set sink7 [new Agent/LossMonitor]set sink8 [new Agent/LossMonitor]set sink9 [new Agent/LossMonitor]set sink10 [new Agent/LossMonitor]set sink11 [new Agent/LossMonitor]set sink12 [new Agent/LossMonitor]set sink13 [new Agent/LossMonitor]set sink14 [new Agent/LossMonitor]set sink15 [new Agent/LossMonitor]$ns attach-agent $n(0) $sink0$ns attach-agent $n(1) $sink1$ns attach-agent $n(2) $sink2$ns attach-agent $n(3) $sink3$ns attach-agent $n(4) $sink4$ns attach-agent $n(5) $sink5$ns attach-agent $n(6) $sink6$ns attach-agent $n(7) $sink7$ns attach-agent $n(8) $sink8$ns attach-agent $n(9) $sink9$ns attach-agent $n(10) $sink10$ns attach-agent $n(11) $sink11$ns attach-agent $n(12) $sink12$ns attach-agent $n(13) $sink13$ns attach-agent $n(14) $sink14$ns attach-agent $n(15) $sink15set tcp0 [new Agent/TCP]$tcp0 set prio_ 1 $ns attach-agent $n(0) $tcp0set tcp1 [new Agent/TCP]$tcp1 set prio_ 2$ns attach-agent $n(1) $tcp1set tcp2 [new Agent/TCP]$tcp2 set prio_ 3$ns attach-agent $n(2) $tcp2set tcp3 [new Agent/TCP]$ns attach-agent $n(3) $tcp3set tcp4 [new Agent/TCP]$tcp4 set prio_ 4$ns attach-agent $n(4) $tcp4set tcp5 [new Agent/TCP]$ns attach-agent $n(5) $tcp5set tcp6 [new Agent/TCP]$ns attach-agent $n(6) $tcp6set tcp7 [new Agent/TCP]$ns attach-agent $n(7) $tcp7set tcp8 [new Agent/TCP]$ns attach-agent $n(8) $tcp8set tcp9 [new Agent/TCP]$ns attach-agent $n(9) $tcp9set tcp10 [new Agent/TCP]$ns attach-agent $n(10) $tcp10set tcp11 [new Agent/TCP]$tcp11 set prio_ 5$ns attach-agent $n(11) $tcp11set tcp12 [new Agent/TCP]$tcp12 set prio_ 6$ns attach-agent $n(12) $tcp12set tcp13 [new Agent/TCP]$tcp13 set prio_ 7$ns attach-agent $n(13) $tcp13set tcp14 [new Agent/TCP]$tcp14 set prio_ 8$ns attach-agent $n(14) $tcp14proc attach-CBR-traffic { node sink size interval } { #Get an instance of the simulator set ns [Simulator instance] #Create a CBR sink14 agent and attach it to the node set cbr [new Agent/CBR] $ns attach-agent $node $cbr $cbr set packetSize_ $size $cbr set interval_ $interval #Attach CBR source to sink; $ns connect $cbr $sink return $cbr }set cbr0 [attach-CBR-traffic $n(0) $sink7 512 .042]set cbr1 [attach-CBR-traffic $n(6) $sink11 512 .041]set cbr2 [attach-CBR-traffic $n(2) $sink5 512 .041]$ns at 0.0 "record"$ns at 1.0 "$cbr0 start"$ns at 1.0 "$cbr1 start"$ns at 1.0 "$cbr2 start"$ns at 100.0 "finish"puts "Start of simulation.."$ns run
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -