fake_world

6

Dec 6th, 2019
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 7.84 KB | None | 0 0
  1. # This script is created by NSG2 beta1
  2. # <http://wushoupong.googlepages.com/nsg>
  3.  
  4. #===================================
  5. #     Simulation parameters setup
  6. #===================================
  7. set val(chan)   Channel/WirelessChannel    ;# channel type
  8. set val(prop)   Propagation/TwoRayGround   ;# radio-propagation model
  9. set val(netif)  Phy/WirelessPhy            ;# network interface type
  10. set val(mac)    Mac/802_11                 ;# MAC type
  11. set val(ifq)    Queue/DropTail/PriQueue    ;# interface queue type
  12. set val(ll)     LL                         ;# link layer type
  13. set val(ant)    Antenna/OmniAntenna        ;# antenna model
  14. set val(ifqlen) 50                         ;# max packet in ifq
  15. set val(nn)     20                         ;# number of mobilenodes
  16. set val(rp)     DSDV                       ;# routing protocol
  17. set val(x)      1211                      ;# X dimension of topography
  18. set val(y)      1000                      ;# Y dimension of topography
  19. set val(stop)   50.0                         ;# time of simulation end
  20.  
  21. Mac/802_11 set cdma_code_bw_start_ 0 ;#cdma code
  22. Mac/802_11 set cdma_code_bw_stop_ 63
  23. Mac/802_11 set cdma_code_init_start_ 64
  24. Mac/802_11 set cdma_code_init_stop_ 127
  25. Mac/802_11 set cdma_code_cqich_start_ 128
  26. Mac/802_11 set cdma_code_cqich_stop_ 195
  27. Mac/802_11 set cdma_code_handover_start_ 196
  28. Mac/802_11 set cdma_code_handover_start_ 196
  29. set f0 [open throughput.tr w]
  30. set f1 [open lost.tr w]
  31. set f2 [open delay.tr w]
  32. #===================================
  33. #        Initialization        
  34. #===================================
  35. #Create a ns simulator
  36. set ns [new Simulator]
  37.  
  38. #Setup topography object
  39. set topo       [new Topography]
  40. $topo load_flatgrid $val(x) $val(y)
  41. create-god $val(nn)
  42.  
  43. #Open the NS trace file
  44. set tracefile [open 6.tr w]
  45. $ns trace-all $tracefile
  46.  
  47. #Open the NAM trace file
  48. set namfile [open 6.nam w]
  49. $ns namtrace-all $namfile
  50. $ns namtrace-all-wireless $namfile $val(x) $val(y)
  51. set chan [new $val(chan)];#Create wireless channel
  52.  
  53. #===================================
  54. #     Mobile node parameter setup
  55. #===================================
  56. $ns node-config -adhocRouting  $val(rp) \
  57.                 -llType        $val(ll) \
  58.                 -macType       $val(mac) \
  59.                 -ifqType       $val(ifq) \
  60.                 -ifqLen        $val(ifqlen) \
  61.                 -antType       $val(ant) \
  62.                 -propType      $val(prop) \
  63.                 -phyType       $val(netif) \
  64.                 -channel       $chan \
  65.                 -topoInstance  $topo \
  66.                 -agentTrace    ON \
  67.                 -routerTrace   ON \
  68.                 -macTrace      ON \
  69.                 -movementTrace ON
  70.  
  71. #===================================
  72. #        Nodes Definition        
  73. #===================================
  74. #Create 20 nodes
  75. set n0 [$ns node]
  76. $n0 set X_ 231
  77. $n0 set Y_ 506
  78. $n0 set Z_ 0.0
  79. $ns initial_node_pos $n0 20
  80. set n1 [$ns node]
  81. $n1 set X_ 380
  82. $n1 set Y_ 498
  83. $n1 set Z_ 0.0
  84. $ns initial_node_pos $n1 20
  85. set n2 [$ns node]
  86. $n2 set X_ 511
  87. $n2 set Y_ 498
  88. $n2 set Z_ 0.0
  89. $ns initial_node_pos $n2 20
  90. set n3 [$ns node]
  91. $n3 set X_ 675
  92. $n3 set Y_ 498
  93. $n3 set Z_ 0.0
  94. $ns initial_node_pos $n3 20
  95. set n4 [$ns node]
  96. $n4 set X_ 831
  97. $n4 set Y_ 505
  98. $n4 set Z_ 0.0
  99. $ns initial_node_pos $n4 20
  100. set n5 [$ns node]
  101. $n5 set X_ 855
  102. $n5 set Y_ 314
  103. $n5 set Z_ 0.0
  104. $ns initial_node_pos $n5 20
  105. set n6 [$ns node]
  106. $n6 set X_ 672
  107. $n6 set Y_ 306
  108. $n6 set Z_ 0.0
  109. $ns initial_node_pos $n6 20
  110. set n7 [$ns node]
  111. $n7 set X_ 505
  112. $n7 set Y_ 310
  113. $n7 set Z_ 0.0
  114. $ns initial_node_pos $n7 20
  115. set n8 [$ns node]
  116. $n8 set X_ 376
  117. $n8 set Y_ 300
  118. $n8 set Z_ 0.0
  119. $ns initial_node_pos $n8 20
  120. set n9 [$ns node]
  121. $n9 set X_ 222
  122. $n9 set Y_ 309
  123. $n9 set Z_ 0.0
  124. $ns initial_node_pos $n9 20
  125. set n10 [$ns node]
  126. $n10 set X_ 872
  127. $n10 set Y_ 169
  128. $n10 set Z_ 0.0
  129. $ns initial_node_pos $n10 20
  130. set n11 [$ns node]
  131. $n11 set X_ 687
  132. $n11 set Y_ 166
  133. $n11 set Z_ 0.0
  134. $ns initial_node_pos $n11 20
  135. set n12 [$ns node]
  136. $n12 set X_ 498
  137. $n12 set Y_ 154
  138. $n12 set Z_ 0.0
  139. $ns initial_node_pos $n12 20
  140. set n13 [$ns node]
  141. $n13 set X_ 378
  142. $n13 set Y_ 143
  143. $n13 set Z_ 0.0
  144. $ns initial_node_pos $n13 20
  145. set n14 [$ns node]
  146. $n14 set X_ 240
  147. $n14 set Y_ 144
  148. $n14 set Z_ 0.0
  149. $ns initial_node_pos $n14 20
  150. set n15 [$ns node]
  151. $n15 set X_ 889
  152. $n15 set Y_ 9
  153. $n15 set Z_ 0.0
  154. $ns initial_node_pos $n15 20
  155. set n16 [$ns node]
  156. $n16 set X_ 681
  157. $n16 set Y_ 0
  158. $n16 set Z_ 0.0
  159. $ns initial_node_pos $n16 20
  160. set n17 [$ns node]
  161. $n17 set X_ 495
  162. $n17 set Y_ -11
  163. $n17 set Z_ 0.0
  164. $ns initial_node_pos $n17 20
  165. set n18 [$ns node]
  166. $n18 set X_ 372
  167. $n18 set Y_ -10
  168. $n18 set Z_ 0.0
  169. $ns initial_node_pos $n18 20
  170. set n19 [$ns node]
  171. $n19 set X_ 228
  172. $n19 set Y_ -13
  173. $n19 set Z_ 0.0
  174. $ns initial_node_pos $n19 20
  175.  
  176. #===================================
  177. #        Agents Definition        
  178. #===================================
  179. #Setup a UDP connection
  180. set udp0 [new Agent/UDP]
  181. $ns attach-agent $n0 $udp0
  182. set sink [new Agent/LossMonitor]
  183. $ns attach-agent $n14 $sink
  184. $ns connect $udp0 $sink
  185. $udp0 set packetSize_ 1500
  186.  
  187.  
  188. #===================================
  189. #        Applications Definition        
  190. #===================================
  191. #Setup a CBR Application over UDP connection
  192. set cbr0 [new Application/Traffic/CBR]
  193. $cbr0 attach-agent $udp0
  194. $cbr0 set packetSize_ 1000
  195. $cbr0 set rate_ 1.0Mb
  196. $cbr0 set random_ null
  197. set holdtime 0
  198. set holdseq 0
  199. set holdrate1 0
  200. #===================================
  201. # Recording
  202. #===================================
  203. #Define a 'record' procedure
  204.  proc record {} {
  205.  global sink f0 f1 f2 holdtime holdseq holdrate1
  206.  set nsi [Simulator instance]
  207.  set time 0.9 ;#Set sampling time to 0.9 sec
  208.  set bw0 [$sink set bytes_]
  209. puts "$bw0"
  210.  set bw1 [$sink set nlost_]
  211.  set bw2 [$sink set lastPktTime_]
  212.  set bw3 [$sink set npkts_]
  213.  set now [$nsi now]
  214.  # Record bit rate in tracefiles
  215.  puts $f0 "$now [expr (($bw0+ $holdrate1)*8)/(2*$time*1000000)]"
  216. #Record Packet loss rate in file
  217.  puts $f1 "$now [expr $bw1/$time]"
  218.  # Record Packet Delay in File
  219.  if { $bw3 > $holdseq } {
  220.  puts $f2 "$now [expr ($bw2 -$holdtime)/($bw3-$holdseq)]"
  221.  } else {
  222.  puts $f2 "$now [expr ($bw3-$holdseq)]"
  223.  }
  224.  $sink set bytes_ 0
  225.  $sink set nlost_ 0
  226.  set holdtime $bw2
  227.  set holdseq $bw3
  228.  set holdrate1 $bw0
  229.  $nsi at [expr $now+$time] "record" ;#schedule record after $time interval sec
  230.  }
  231. $ns at 0.0 "record"
  232. $ns at 1.0 "$cbr0 start"
  233. $ns at 50.0 "$cbr0 stop"
  234. $ns at 2.0 "$n0 setdest 300 250 20"
  235. $ns at 2.0 "$n1 setdest 500 650 20"
  236. $ns at 2.0 "$n2 setdest 685 705 20"
  237. $ns at 2.0 "$n3 setdest 765 745 20"
  238. $ns at 2.0 "$n4 setdest 567 900 20"
  239. $ns at 2.0 "$n5 setdest 155 200 20"
  240. $ns at 2.0 "$n6 setdest 358 600 20"
  241. $ns at 2.0 "$n7 setdest 1100 950 20"
  242. $ns at 10.0 "$n8 setdest 1153 836 20"
  243. $ns at 10.0 "$n9 setdest 950 940 20"
  244. $ns at 10.0 "$n10 setdest 124 174 20"
  245. $ns at 10.0 "$n11 setdest 200 150 20"
  246. $ns at 10.0 "$n12 setdest 300 200 20"
  247. $ns at 10.0 "$n13 setdest 400 250 20"
  248. $ns at 10.0 "$n14 setdest 500 300 20"
  249. $ns at 10.0 "$n15 setdest 600 550 20"
  250. $ns at 10.0 "$n16 setdest 300 500 20"
  251. $ns at 10.0 "$n17 setdest 300 550 20"
  252. $ns at 2.0 "$n18 setdest 900 500 20"
  253. $ns at 2.0 "$n19 setdest 1000 550 20"
  254. $ns at 0.5 "$n0 add-mark m blue square"
  255. $ns at 0.5 "$n14 add-mark m red square"
  256. $ns at 0.5 "$n0 label source"
  257. $ns at 0.5 "$n14 label Destination"
  258.  
  259. #===================================
  260. #        Termination        
  261. #===================================
  262. #Define a 'finish' procedure
  263. proc finish {} {
  264.     global ns tracefile namfile
  265.     $ns flush-trace
  266.     close $tracefile
  267.     close $namfile
  268.     exec nam 6.nam &
  269.     exec xgraph throughput.tr &
  270.     exec xgraph lost.tr &
  271.     exec xgraph delay.tr &
  272.     exit 0
  273. }
  274. for {set i 0} {$i < $val(nn) } { incr i } {
  275.     $ns at $val(stop) "\$n$i reset"
  276. }
  277. $ns at $val(stop) "$ns nam-end-wireless $val(stop)"
  278. $ns at $val(stop) "finish"
  279. $ns at $val(stop) "puts \"done\" ; $ns halt"
  280. $ns run
Add Comment
Please, Sign In to add comment