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

通讯编程

开发平台:

Visual C++

  1. # Copyright (c) 2000 University of Southern California.
  2. #  All rights reserved.                                            
  3. #                                                                
  4. #  Redistribution and use in source and binary forms are permitted
  5. #  provided that the above copyright notice and this paragraph are
  6. #  duplicated in all such forms and that any documentation, advertising
  7. #  materials, and other materials related to such distribution and use
  8. #  acknowledge that the software was developed by the University of
  9. #  Southern California, Information Sciences Institute.  The name of the
  10. #  University may not be used to endorse or promote products derived from
  11. #  this software without specific prior written permission.
  12. #  
  13. #  THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  14. #  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  15. #  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16. #
  17. #  A example test program for the shadowing propagation model
  18. #  Wei Ye, weiye@isi.edu, 2000
  19. # ======================================================================
  20. # Define options
  21. # ======================================================================
  22. set opt(chan) Channel/WirelessChannel
  23. #set opt(prop) Propagation/Shadowing
  24. set opt(netif) Phy/WirelessPhy
  25. set opt(mac) Mac/802_11
  26. set opt(ifq) Queue/DropTail/PriQueue
  27. set opt(ll) LL
  28. set opt(ant) Antenna/OmniAntenna
  29. set opt(adhocRouting)   DSDV
  30. set opt(x) 100   ;# X dimension of the topography
  31. set opt(y) 100   ;# Y dimension of the topography
  32. set opt(ifqlen) 50       ;# max packet in ifq
  33. set opt(seed) 0.0
  34. set opt(tr) shadowing.tr    ;# trace file
  35. set opt(nam)            shadowing.nam   ;# nam trace file
  36. set opt(nn)             2             ;# how many nodes are simulated
  37. set opt(stop) 2000.0 ;# simulation time
  38. # =====================================================================
  39. # Other default settings
  40. LL set mindelay_ 50us
  41. LL set delay_ 25us
  42. LL set bandwidth_ 0 ;# not used
  43. Agent/Null set sport_ 0
  44. Agent/Null set dport_ 0
  45. Agent/CBR set sport_ 0
  46. Agent/CBR set dport_ 0
  47. Agent/TCPSink set sport_ 0
  48. Agent/TCPSink set dport_ 0
  49. Agent/TCP set sport_ 0
  50. Agent/TCP set dport_ 0
  51. Agent/TCP set packetSize_ 1460
  52. Queue/DropTail/PriQueue set Prefer_Routing_Protocols    1
  53. # unity gain, omni-directional antennas
  54. # set up the antennas to be centered in the node and 1.5 meters above it
  55. Antenna/OmniAntenna set X_ 0
  56. Antenna/OmniAntenna set Y_ 0
  57. Antenna/OmniAntenna set Z_ 0.5
  58. Antenna/OmniAntenna set Gt_ 1.0
  59. Antenna/OmniAntenna set Gr_ 1.0
  60. # Initialize the SharedMedia interface with parameters to make
  61. # it work like the 914MHz Lucent WaveLAN DSSS radio interface
  62. Phy/WirelessPhy set CPThresh_ 10.0
  63. Phy/WirelessPhy set CSThresh_ 1.559e-11
  64. #Phy/WirelessPhy set RXThresh_ 3.652e-10
  65. Phy/WirelessPhy set RXThresh_ 1.47635e-07
  66. Phy/WirelessPhy set bandwidth_ 2e6
  67. Phy/WirelessPhy set Pt_ 0.2818
  68. Phy/WirelessPhy set freq_ 914e+6 
  69. Phy/WirelessPhy set L_ 1.0
  70. # Pt_ is transmitted signal power. The propagation model and Pt_ determines
  71. # the received signal power of each packet. The packet can not be correctly
  72. # received if received power is below RXThresh_.
  73. # ======================================================================
  74. # Main Program
  75. # ======================================================================
  76. #
  77. # Initialize Global Variables
  78. #
  79. # create simulator instance
  80. set ns_ [new Simulator]
  81. # set wireless channel
  82. #set wchan [new $opt(chan)]
  83. #define propagation model
  84. # pathlossExp_ is path-loss exponent, for predicting mean received power
  85. # std_db_ is shadowing deviation (dB), reflecting how large the propagation
  86. # property changes within the environment.
  87. # dist0_ is a close-in reference distance, usually 1.0 m for indoor
  88. #
  89. set prop [new Propagation/Shadowing]
  90. $prop set pathlossExp_ 2.0
  91. $prop set std_db_ 4.0
  92. $prop set dist0_ 1.0
  93. $prop seed predef 0
  94. # define topology
  95. set wtopo [new Topography]
  96. $wtopo load_flatgrid $opt(x) $opt(y)
  97. # create trace object for ns and nam
  98. set tracefd [open $opt(tr) w]
  99. set namtrace    [open $opt(nam) w]
  100. $ns_ trace-all $tracefd
  101. $ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)
  102. # use new trace file format
  103. $ns_ use-newtrace 
  104. #
  105. # Create God
  106. #
  107. set god_ [create-god $opt(nn)]
  108. #
  109. # define how node should be created
  110. #
  111. #global node setting
  112. $ns_ node-config  -adhocRouting $opt(adhocRouting) 
  113.  -llType $opt(ll) 
  114.  -macType $opt(mac) 
  115.  -ifqType $opt(ifq) 
  116.  -ifqLen $opt(ifqlen) 
  117.  -antType $opt(ant) 
  118.  -propInstance $prop 
  119.  -phyType $opt(netif) 
  120.  -channelType $opt(chan) 
  121.  -topoInstance $wtopo 
  122.  -agentTrace OFF 
  123.  -routerTrace OFF 
  124.  -macTrace ON
  125. #
  126. #  Create the specified number of nodes [$opt(nn)] and "attach" them
  127. #  to the channel. 
  128. for {set i 0} {$i < $opt(nn) } {incr i} {
  129. set node_($i) [$ns_ node]
  130. # $node_($i) random-motion 0 ;# disable random motion
  131. # $node_($i) topography $wtopo
  132. }
  133. # Define node positions
  134. #
  135. $node_(0) set X_ 0.0
  136. $node_(0) set Y_ 50.0
  137. $node_(0) set Z_ 0.0
  138. $node_(1) set X_ 20.0
  139. $node_(1) set Y_ 50.0
  140. $node_(1) set Z_ 0.0
  141. set udp_(0) [new Agent/UDP]
  142. $ns_ attach-agent $node_(0) $udp_(0)
  143. set null_(0) [new Agent/Null]
  144. $ns_ attach-agent $node_(1) $null_(0)
  145. set cbr_(0) [new Application/Traffic/CBR]
  146. $cbr_(0) set packetSize_ 128
  147. $cbr_(0) set interval_ 4.0
  148. $cbr_(0) set random_ 1
  149. $cbr_(0) set maxpkts_ 10000
  150. $cbr_(0) attach-agent $udp_(0)
  151. $ns_ connect $udp_(0) $null_(0)
  152. $ns_ at 1.0 "$cbr_(0) start"
  153. # Define node initial position in nam
  154. for {set i 0} {$i < $opt(nn)} {incr i} {
  155.     # 20 defines the node size in nam, must adjust it according to your scenario
  156.     # The function must be called after mobility model is defined
  157.     
  158.     $ns_ initial_node_pos $node_($i) 20
  159. }
  160. #
  161. # Tell nodes when the simulation ends
  162. #
  163. for {set i 0} {$i < $opt(nn) } {incr i} {
  164.     $ns_ at $opt(stop).000000001 "$node_($i) reset";
  165. }
  166. # tell nam the simulation stop time
  167. $ns_ at  $opt(stop) "$ns_ nam-end-wireless $opt(stop)"
  168. $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  169. puts "Starting Simulation..."
  170. $ns_ run