mmac-test.tcl
上传用户:sdhqmy
上传日期:2015-12-07
资源大小:63k
文件大小:6k
源码类别:

3G开发

开发平台:

C/C++

  1. # mmac-36.tcl
  2. # common network environment & topology file
  3. # 36 nodes in 6*6 grid form, WLAN (single hop)
  4. # ======================================================================
  5. # Define options
  6. # ======================================================================
  7. set opt(chan)           Channel/WirelessChannel    ;# channel type
  8. set opt(prop)           Propagation/TwoRayGround   ;# radio-propagation model
  9. set opt(netif)          Phy/WirelessPhy            ;# network interface type
  10. set opt(mac)            Mac/802_11                 ;# MAC type
  11. set opt(ifq)            Queue/DropTail/PriQueue    ;# interface queue type
  12. set opt(ll)             LL                         ;# link layer type
  13. set opt(ant)            Antenna/OmniAntenna        ;# antenna model
  14. set opt(ifqlen)         50                         ;# max packet in ifq
  15. set opt(nn)             36                        ;# number of mobilenodes
  16. set opt(flow) 3
  17. set opt(row) 6
  18. set opt(column) 6
  19. set opt(adhocRouting)   DSDV                       ;# routing protocol
  20. set opt(cp)             ""                         ;# connection pattern file
  21. set opt(sc)      ""     ;# node movement file. 
  22. set opt(x)      400                            ;# x coordinate of topology
  23. set opt(y)      400                            ;# y coordinate of topology
  24. set opt(seed)   0                            ;# seed for random number gen.
  25. set opt(stop)   50                            ;# time to stop simulation
  26. # ============================================================================
  27. # check for boundary parameters and random seed
  28. if { $opt(x) == 0 || $opt(y) == 0 } {
  29. puts "No X-Y boundary values given for wireless topologyn"
  30. }
  31. if {$opt(seed) > 0} {
  32. puts "Seeding Random number generator with $opt(seed)n"
  33. ns-random $opt(seed)
  34. }
  35. # create simulator instance
  36. set ns_   [new Simulator]
  37. set tracefd  [open out.tr w]
  38. $ns_ trace-all $tracefd
  39. # Create topography object
  40. set topo   [new Topography]
  41. # define topology
  42. $topo load_flatgrid $opt(x) $opt(y)
  43. # create God
  44. create-god [expr $opt(nn)]
  45. # configure for base-station node
  46. $ns_ node-config -adhocRouting $opt(adhocRouting) 
  47.       -llType $opt(ll) 
  48.                  -macType $opt(mac) 
  49.                  -ifqType $opt(ifq) 
  50.                  -ifqLen $opt(ifqlen) 
  51.                  -antType $opt(ant) 
  52.                  -propType $opt(prop) 
  53.                  -phyType $opt(netif) 
  54.                  -channelType $opt(chan) 
  55.  -topoInstance $topo 
  56.  -agentTrace ON 
  57.                  -routerTrace OFF 
  58.                  -macTrace ON 
  59.  -movementTrace OFF
  60.  
  61. # create mobilenodes in the same domain as BS(0)  
  62. # note the position and movement of mobilenodes is as defined
  63. # in $opt(sc)
  64. #configure for mobilenodes
  65. for {set j 0} {$j < $opt(nn)} {incr j} {
  66. set node_($j) [$ns_ node]
  67. }
  68. for {set j 0} {$j < $opt(row)} {incr j} {
  69. for {set i 0} {$i < $opt(column)} {incr i} {
  70. $node_([expr $j * $opt(column) + $i]) set X_ [expr $i * 10]
  71. $node_([expr $j * $opt(column) + $i]) set Y_ [expr $j * 10]
  72. $node_([expr $j * $opt(column) + $i]) set Z_ 0
  73. }
  74. }
  75.  
  76. #mmac
  77. for {set j 0} {$j < $opt(nn)} {incr j} {
  78. [$node_($j) set mac_(0)] make-pc
  79. [$node_($j) set mac_(0)] beaconperiod 100 
  80. [$node_($j) set mac_(0)] atimwindowsize 20
  81. }
  82. #load traffic file
  83. #source $opt(traffic)
  84. ###########################################################
  85. set udp_(1) [new Agent/UDP]
  86. $ns_ attach-agent $node_(0) $udp_(1)
  87. set null_(1) [new Agent/Null]
  88. $ns_ attach-agent $node_(1) $null_(1)
  89. set cbr_(1) [new Application/Traffic/CBR]
  90. $cbr_(1) set packetSize_ 512 
  91. $cbr_(1) set interval_ 0.025 
  92. $cbr_(1) set random_ 1
  93. $cbr_(1) attach-agent $udp_(1)
  94. $ns_ connect $udp_(1) $null_(1)
  95. $ns_ at 9.8 "$cbr_(1) start"
  96. $ns_ at 30.0 "$cbr_(1) stop"
  97. set udp_(2) [new Agent/UDP]
  98. $ns_ attach-agent $node_(2) $udp_(2)
  99. set null_(2) [new Agent/Null]
  100. $ns_ attach-agent $node_(3) $null_(2)
  101. set cbr_(2) [new Application/Traffic/CBR]
  102. $cbr_(2) set packetSize_ 512 
  103. $cbr_(2) set interval_ 0.025 
  104. $cbr_(2) set random_ 1
  105. $cbr_(2) attach-agent $udp_(2)
  106. $ns_ connect $udp_(2) $null_(2)
  107. $ns_ at 9.9 "$cbr_(2) start"
  108. $ns_ at 30.0 "$cbr_(2) stop"
  109. set udp_(3) [new Agent/UDP]
  110. $ns_ attach-agent $node_(4) $udp_(3)
  111. set null_(3) [new Agent/Null]
  112. $ns_ attach-agent $node_(5) $null_(3)
  113. set cbr_(3) [new Application/Traffic/CBR]
  114. $cbr_(3) set packetSize_ 512 
  115. $cbr_(3) set interval_ 0.025 
  116. $cbr_(3) set random_ 1
  117. $cbr_(3) attach-agent $udp_(3)
  118. $ns_ connect $udp_(3) $null_(3)
  119. $ns_ at 10.0 "$cbr_(3) start"
  120. $ns_ at 30.0 "$cbr_(3) stop"
  121. ###########################################################
  122. # source connection-pattern and node-movement scripts
  123. if { $opt(cp) == "" } {
  124. puts "*** NOTE: no connection pattern specified."
  125.         set opt(cp) "none"
  126. } else {
  127. puts "Loading connection pattern..."
  128. source $opt(cp)
  129. }
  130. if { $opt(sc) == "" } {
  131. puts "*** NOTE: no scenario file specified."
  132.         set opt(sc) "none"
  133. } else {
  134. puts "Loading scenario file..."
  135. source $opt(sc)
  136. puts "Load complete..."
  137. }
  138. puts " "
  139. puts "MMAC  Flow:3  Rate:0.025  P-Size:512  A-Size:20"
  140. puts " "
  141. # Tell all nodes when the simulation ends
  142. for {set i 0} {$i < $opt(nn) } {incr i} {
  143.     $ns_ at $opt(stop).0 "$node_($i) reset";
  144. }
  145. $ns_ at $opt(stop).0004 "stop"
  146. $ns_ at $opt(stop).0005 "puts "NS EXITING..." ; $ns_ halt"
  147. proc stop {} {
  148.     global ns_ tracefd
  149.     $ns_ flush-trace
  150.     close $tracefd
  151. }
  152. # informative headers for CMUTracefile
  153. #puts $tracefd "M 0.0 nn $opt(nn) x $opt(x) y $opt(y) rp 
  154. # $opt(adhocRouting)"
  155. #puts $tracefd "M 0.0 sc $opt(sc) cp $opt(cp) seed $opt(seed)"
  156. #puts $tracefd "M 0.0 prop $opt(prop) ant $opt(ant)"
  157. puts "Starting Simulation..."
  158. $ns_ run