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

通讯编程

开发平台:

Visual C++

  1. set val(chan)           Channel/WirelessChannel    ;#Channel Type
  2. set val(prop)           Propagation/TwoRayGround   ;# radio-propagation model
  3. set val(netif)          Phy/WirelessPhy            ;# network interface type
  4. set val(mac)            Mac/802_11                 ;# MAC type
  5. set val(ifq)            Queue/DropTail    ;# interface queue type
  6. set val(ll)             LL                         ;# link layer type
  7. set val(ant)            Antenna/OmniAntenna        ;# antenna model
  8. set val(ifqlen)         50                        ;# max packet in ifq
  9. set val(nn)             10                         ;# number of mobilenodes
  10. set val(rp)             DumbAgent                  ;# routing protocol
  11. set val(x) 600
  12. set val(y) 600
  13. Mac/802_11 set dataRate_ 11Mb
  14. #Phy/WirelessPhy set CSThresh_ 10.00e-12
  15. #Phy/WirelessPhy set RXThresh_ 10.00e-11
  16. #Phy/WirelessPhy set Pt_ 0.1
  17. #Phy/WirelessPhy set Pt_ 7.214e-3
  18. # Initialize Global Variables
  19. set ns_ [new Simulator]
  20. set tracefd     [open infra.tr w]
  21. $ns_ trace-all $tracefd
  22. # set up topography object
  23. set topo       [new Topography]
  24. $topo load_flatgrid $val(x) $val(y)
  25. # Create God
  26. create-god $val(nn)
  27. # Create channel
  28. set chan_1_ [new $val(chan)]
  29. $ns_ node-config -adhocRouting $val(rp) 
  30. -llType $val(ll) 
  31. -macType $val(mac) 
  32. -ifqType $val(ifq) 
  33. -ifqLen $val(ifqlen) 
  34. -antType $val(ant) 
  35. -propType $val(prop) 
  36. -phyType $val(netif) 
  37. -topoInstance $topo 
  38. -agentTrace OFF 
  39. -routerTrace OFF 
  40. -macTrace ON 
  41. -movementTrace ON 
  42. -channel $chan_1_
  43.       for {set i 0} {$i < [expr $val(nn)]} {incr i} {
  44.                   set node_($i) [$ns_ node]
  45.                 $node_($i) random-motion 0              ;# disable random motion
  46.    set mac_($i) [$node_($i) getMac 0]
  47.  
  48.        $mac_($i) set RTSThreshold_ 3000
  49. $node_($i) set X_ $i
  50.    $node_($i) set Y_ 0       ;# Horizontal arrangement of nodes
  51.    $node_($i) set Z_ 0.0
  52. }
  53. #Set Node 0 and Node $val(nn) as the APs. Thus the APs are the ends of the horizontal line. Each STA receives different power levels.
  54. set AP_ADDR1 [$mac_(0) id]
  55. $mac_(0) ap $AP_ADDR1
  56. set AP_ADDR2 [$mac_([expr $val(nn) - 1]) id]
  57. $mac_([expr $val(nn) - 1]) ap $AP_ADDR2
  58. #$mac_([expr $val(nn) - 1]) set BeaconInterval_ 0.2
  59. $mac_(1) ScanType ACTIVE
  60. for {set i 3} {$i < [expr $val(nn) - 1]} {incr i} {
  61. $mac_($i) ScanType PASSIVE ;#Passive
  62. }
  63. $ns_ at 1.0 "$mac_(2) ScanType ACTIVE"
  64. Application/Traffic/CBR set packetSize_ 1023
  65. Application/Traffic/CBR set rate_ 256Kb
  66. for {set i 1} {$i < [expr $val(nn) - 1]} {incr i} {
  67. set udp1($i) [new Agent/UDP]
  68. $ns_ attach-agent $node_($i) $udp1($i)
  69. set cbr1($i) [new Application/Traffic/CBR]
  70. $cbr1($i) attach-agent $udp1($i)
  71. }
  72. set base0 [new Agent/Null]
  73. $ns_ attach-agent $node_(1) $base0
  74. set base1 [new Agent/Null]
  75. $ns_ attach-agent $node_(8) $base1
  76. $ns_ connect $udp1(4) $base0
  77. $ns_ connect $udp1(5) $base1
  78. $ns_ at 2.0 "$cbr1(4) start"
  79. $ns_ at 4.0 "$cbr1(5) start"
  80. $ns_ at 10.0 "$node_(4) setdest 300.0 1.0 30.0"
  81. $ns_ at 20.0 "stop"
  82. $ns_ at 20.0 "puts "NS EXITING..." ; $ns_ halt"
  83. proc stop {} {
  84.     global ns_ tracefd
  85.     $ns_ flush-trace
  86.     close $tracefd
  87.     exit 0
  88. }
  89. puts "Starting Simulation..."
  90. $ns_ run