wrls-aodv.tcl
上传用户:yjhhw123
上传日期:2014-05-29
资源大小:1824k
文件大小:4k
源码类别:

网络

开发平台:

Others

  1. # wrls1.tcl
  2. # A 3-node example for ad-hoc simulation with AODV
  3. # Define options
  4. set val(chan)           Channel/WirelessChannel    ;# channel type
  5. set val(prop)           Propagation/TwoRayGround   ;# radio-propagation model
  6. set val(netif)          Phy/WirelessPhy            ;# network interface type
  7. set val(mac)            Mac/802_11                 ;# MAC type
  8. set val(ifq)            Queue/DropTail/PriQueue    ;# interface queue type
  9. set val(ll)             LL                         ;# link layer type
  10. set val(ant)            Antenna/OmniAntenna        ;# antenna model
  11. set val(ifqlen)         50                         ;# max packet in ifq
  12. set val(nn)             5                          ;# number of mobilenodes
  13. set val(rp)             AODV                       ;# routing protocol
  14. set val(x)              500       ;# X dimension of topography
  15. set val(y)              400       ;# Y dimension of topography  
  16. set val(stop) 150    ;# time of simulation end
  17. set ns   [new Simulator]
  18. set tracefd       [open simple.tr w]
  19. set windowVsTime2 [open win.tr w] 
  20. set namtrace      [open simwrls.nam w]    
  21. $ns trace-all $tracefd
  22. $ns namtrace-all-wireless $namtrace $val(x) $val(y)
  23. # set up topography object
  24. set topo       [new Topography]
  25. $topo load_flatgrid $val(x) $val(y)
  26. create-god $val(nn)
  27. #
  28. #  Create nn mobilenodes [$val(nn)] and attach them to the channel. 
  29. #
  30. # configure the nodes
  31.         $ns node-config -adhocRouting $val(rp) 
  32.  -llType $val(ll) 
  33.  -macType $val(mac) 
  34.  -ifqType $val(ifq) 
  35.  -ifqLen $val(ifqlen) 
  36.  -antType $val(ant) 
  37.  -propType $val(prop) 
  38.  -phyType $val(netif) 
  39.  -channelType $val(chan) 
  40.  -topoInstance $topo 
  41.  -agentTrace ON 
  42.  -routerTrace ON 
  43.  -macTrace OFF 
  44.  -movementTrace ON
  45.  
  46. for {set i 0} {$i < $val(nn) } { incr i } {
  47. set node_($i) [$ns node]
  48. }
  49. # Provide initial location of mobilenodes
  50. $node_(0) set X_ 5.0
  51. $node_(0) set Y_ 5.0
  52. $node_(0) set Z_ 0.0
  53. $node_(1) set X_ 490.0
  54. $node_(1) set Y_ 285.0
  55. $node_(1) set Z_ 0.0
  56. $node_(2) set X_ 150.0
  57. $node_(2) set Y_ 240.0
  58. $node_(2) set Z_ 0.0
  59. $node_(3) set X_ 250.0
  60. $node_(3) set Y_ 240.0
  61. $node_(3) set Z_ 0.0
  62. $node_(4) set X_ 100.0
  63. $node_(4) set Y_ 70.0
  64. $node_(4) set Z_ 0.0
  65. # Generation of movements
  66. $ns at 10.0 "$node_(0) setdest 250.0 250.0 10.0"
  67. $ns at 15.0 "$node_(1) setdest 45.0 285.0 10.0"
  68. $ns at 110.0 "$node_(0) setdest 480.0 300.0 10.0" 
  69. $ns at 70.0 "$node_(3) setdest 180.0 30.0 10.0" 
  70. # Set a TCP connection between node_(0) and node_(1)
  71. set tcp [new Agent/TCP/Newreno]
  72. $tcp set class_ 2
  73. set sink [new Agent/TCPSink]
  74. $ns attach-agent $node_(0) $tcp
  75. $ns attach-agent $node_(1) $sink
  76. $ns connect $tcp $sink
  77. set ftp [new Application/FTP]
  78. $ftp attach-agent $tcp
  79. $ns at 10.0 "$ftp start" 
  80. # Printing the window size
  81. proc plotWindow {tcpSource file} {
  82. global ns
  83. set time 0.01
  84. set now [$ns now]
  85. set cwnd [$tcpSource set cwnd_]
  86. puts $file "$now $cwnd"
  87. $ns at [expr $now+$time] "plotWindow $tcpSource $file" }
  88. $ns at 10.1 "plotWindow $tcp $windowVsTime2"  
  89. # Define node initial position in nam
  90. for {set i 0} {$i < $val(nn)} { incr i } {
  91. # 30 defines the node size for nam
  92. $ns initial_node_pos $node_($i) 30
  93. }
  94. # Telling nodes when the simulation ends
  95. for {set i 0} {$i < $val(nn) } { incr i } {
  96.     $ns at $val(stop) "$node_($i) reset";
  97. }
  98. # ending nam and the simulation 
  99. $ns at $val(stop) "$ns nam-end-wireless $val(stop)"
  100. $ns at $val(stop) "stop"
  101. $ns at 150.01 "puts "end simulation" ; $ns halt"
  102. proc stop {} {
  103.     global ns tracefd namtrace
  104.     $ns flush-trace
  105.     close $tracefd
  106.     close $namtrace
  107.     #Execute nam on the trace file
  108.     exec nam simwrls.nam &
  109.     exit 0
  110. }
  111. #Call the finish procedure after 5 seconds of simulation time
  112. $ns run