estudy.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:6k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #
  2. # Used for energy study
  3. #
  4. #
  5. # ======================================================================
  6. # Define options
  7. # ======================================================================
  8. set opt(chan) Channel/WirelessChannel
  9. set opt(prop) Propagation/TwoRayGround
  10. set opt(netif) Phy/WirelessPhy
  11. set opt(mac) Mac/802_11
  12. set opt(ifq) Queue/DropTail/PriQueue
  13. set opt(ll) LL
  14. set opt(ant)            Antenna/OmniAntenna
  15. set opt(x) 670 ;# X dimension of the topography
  16. set opt(y) 670 ;# Y dimension of the topography
  17. set opt(cp) "../Scene/S1/cbr-50-50-1-512.tcl"
  18. set opt(sc) "../Scene/S1/mobility.tcl"
  19. set opt(ifqlen) 50 ;# max packet in ifq
  20. set opt(nn) 50 ;# number of nodes
  21. set opt(seed) 0.0
  22. set opt(stop) 1500.0 ;# simulation time
  23. set opt(tr) estudy-aodv.tr ;# trace file
  24. set opt(nam) demo.nam
  25. set opt(rp)             AODV            ;# routing protocol script
  26. set opt(lm)             "off"           ;# log movement
  27. set opt(energymodel)    EnergyModel     ;
  28. set opt(initialenergy)  100               ;# Initial energy in Joules
  29. #set opt(logenergy)      "on"           ;# log energy every 150 seconds
  30. # ======================================================================
  31. # needs to be fixed later
  32. set AgentTrace ON
  33. set RouterTrace ON
  34. set MacTrace OFF
  35. LL set mindelay_ 50us
  36. LL set delay_ 25us
  37. LL set bandwidth_ 0 ;# not used
  38. LL set off_prune_ 0 ;# not used
  39. LL set off_CtrMcast_ 0 ;# not used
  40. Agent/Null set sport_ 0
  41. Agent/Null set dport_ 0
  42. Agent/CBR set sport_ 0
  43. Agent/CBR set dport_ 0
  44. Agent/TCPSink set sport_ 0
  45. Agent/TCPSink set dport_ 0
  46. Agent/TCP set sport_ 0
  47. Agent/TCP set dport_ 0
  48. Agent/TCP set packetSize_ 1460
  49. Queue/DropTail/PriQueue set Prefer_Routing_Protocols    1
  50. # unity gain, omni-directional antennas
  51. # set up the antennas to be centered in the node and 1.5 meters above it
  52. Antenna/OmniAntenna set X_ 0
  53. Antenna/OmniAntenna set Y_ 0
  54. Antenna/OmniAntenna set Z_ 1.5
  55. Antenna/OmniAntenna set Gt_ 1.0
  56. Antenna/OmniAntenna set Gr_ 1.0
  57. # Initialize the SharedMedia interface with parameters to make
  58. # it work like the 914MHz Lucent WaveLAN DSSS radio interface
  59. Phy/WirelessPhy set CPThresh_ 10.0
  60. Phy/WirelessPhy set CSThresh_ 1.559e-11
  61. Phy/WirelessPhy set RXThresh_ 3.652e-10
  62. Phy/WirelessPhy set Rb_ 2*1e6
  63. Phy/WirelessPhy set Pt_ 0.2818
  64. Phy/WirelessPhy set freq_ 914e+6 
  65. Phy/WirelessPhy set L_ 1.0
  66. # ======================================================================
  67. proc usage { argv0 }  {
  68. puts "Usage: $argv0"
  69. puts "tmandatory arguments:"
  70. puts "tt[-x MAXX] [-y MAXY]"
  71. puts "toptional arguments:"
  72. puts "tt[-cp conn pattern] [-sc scenario] [-nn nodes]"
  73. puts "tt[-seed seed] [-stop sec] [-tr tracefile]n"
  74. }
  75. proc getopt {argc argv} {
  76. global opt
  77. lappend optlist cp nn seed sc stop tr x y
  78. for {set i 0} {$i < $argc} {incr i} {
  79. set arg [lindex $argv $i]
  80. if {[string range $arg 0 0] != "-"} continue
  81. set name [string range $arg 1 end]
  82. set opt($name) [lindex $argv [expr $i+1]]
  83. }
  84. }
  85. # ======================================================================
  86. # Main Program
  87. # ======================================================================
  88. getopt $argc $argv
  89. #source ../lib/ns-bsnode.tcl
  90. #source ../mobility/com.tcl
  91. # do the get opt again incase the routing protocol file added some more
  92. # options to look for
  93. getopt $argc $argv
  94. if { $opt(x) == 0 || $opt(y) == 0 } {
  95. usage $argv0
  96. exit 1
  97. }
  98. if {$opt(seed) > 0} {
  99. puts "Seeding Random number generator with $opt(seed)n"
  100. ns-random $opt(seed)
  101. }
  102. #
  103. # Initialize Global Variables
  104. #
  105. set ns_ [new Simulator]
  106. set topo [new Topography]
  107. set god_         [new God]
  108. set tracefd [open $opt(tr) w]
  109. set namtrace    [open $opt(nam) w]
  110. $topo load_flatgrid $opt(x) $opt(y)
  111. $ns_ trace-all $tracefd
  112. $ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)
  113. #$ns_ use-newtrace
  114. #
  115. # Create God
  116. #
  117. create-god $opt(nn)
  118. #
  119. #  Create the specified number of nodes $opt(nn) and "attach" them
  120. #  the channel.
  121. #  Each routing protocol script is expected to have defined a proc
  122. #  create-mobile-node that builds a mobile node and inserts it into the
  123. #  array global $node_($i)
  124. #
  125. #global node setting
  126.         $ns_ node-config -adhocRouting $opt(rp) 
  127.  -llType $opt(ll) 
  128.  -macType $opt(mac) 
  129.  -ifqType $opt(ifq) 
  130.  -ifqLen $opt(ifqlen) 
  131.  -antType $opt(ant) 
  132.  -propType $opt(prop) 
  133.  -phyType $opt(netif) 
  134.  -channelType $opt(chan) 
  135.  -topoInstance $topo 
  136.  -energyModel $opt(energymodel) 
  137.  -macTrace ON 
  138.  -rxPower 0.3 
  139.  -txPower 0.6 
  140.  -initialEnergy $opt(initialenergy)
  141.  
  142. for {set i 0} {$i < $opt(nn) } {incr i} {
  143. set node_($i) [$ns_ node]
  144. $node_($i) random-motion 0 ;# disable random motion
  145. }
  146. #
  147. # Source the Connection and Movement scripts
  148. #
  149. if { $opt(cp) == "" } {
  150. puts "*** NOTE: no connection pattern specified."
  151.         set opt(cp) "none"
  152. } else {
  153. puts "Loading connection pattern..."
  154. source $opt(cp)
  155. }
  156. #
  157. # Tell all the nodes when the simulation ends
  158. #
  159. for {set i 0} {$i < $opt(nn) } {incr i} {
  160.     $ns_ at $opt(stop).000000001 "$node_($i) reset";
  161. }
  162. $ns_ at $opt(stop).00000001 "puts "NS EXITING..." ; $ns_ halt"
  163. if { $opt(sc) == "" } {
  164. puts "*** NOTE: no scenario file specified."
  165.         set opt(sc) "none"
  166. } else {
  167. puts "Loading scenario file..."
  168. source $opt(sc)
  169. puts "Load complete..."
  170. }
  171. # Define node initial position in nam
  172. for {set i 0} {$i < $opt(nn)} {incr i} {
  173.     # 20 defines the node size in nam, must adjust it according to your scenario
  174.     # The function must be called after mobility model is defined
  175.     $ns_ initial_node_pos $node_($i) 20
  176. }
  177. puts $tracefd "G -t * -N $opt(nn) -X $opt(x) -Y $opt(y) -p $opt(rp) -E $opt(initialenergy)"
  178. puts $tracefd "G -t * -sc $opt(sc) -cp $opt(cp) -seed $opt(seed)"
  179. puts $tracefd "G -t * -prop $opt(prop) -ant $opt(ant)"
  180. puts "Starting Simulation..."
  181. $ns_ run