protoname-6nodes.tcl
上传用户:juan65231
上传日期:2014-02-17
资源大小:194k
文件大小:4k
源码类别:

网络

开发平台:

Unix_Linux

  1. # ======================================================================
  2. # Define options
  3. # ======================================================================
  4. set val(ifqlen)         50                         ;# max packet in ifq
  5. set val(nn)             6                          ;# number of mobilenodes
  6. set val(rp)             Protoname                  ;# routing protocol
  7. set val(chan)       Channel/WirelessChannel
  8. set val(prop)       Propagation/TwoRayGround
  9. set val(netif)      Phy/WirelessPhy
  10. set val(mac)        Mac/802_11
  11. set val(ifq)        Queue/DropTail/PriQueue
  12. set val(ll)         LL
  13. set val(ant)        Antenna/OmniAntenna
  14. set val(stop)     10
  15. # ======================================================================
  16. # Main Program
  17. # ======================================================================
  18. #ns-random 0
  19. # Initialize Global Variables
  20. set ns_ [new Simulator]
  21. set tracefd [open protoname.tr w]
  22. $ns_ trace-all $tracefd
  23. set namtrace    [open protoname.nam w]
  24. $ns_ namtrace-all-wireless $namtrace 1000 500
  25. # set up topography
  26. set topo [new Topography]
  27. $topo load_flatgrid 1000 500
  28. # Create God
  29. create-god $val(nn)
  30. # Create the specified number of mobilenodes [$val(nn)] and "attach" them
  31. # to the channel. 
  32. # configure node
  33. set channel [new Channel/WirelessChannel]
  34. $channel set errorProbability_ 0.0
  35.         $ns_ node-config -adhocRouting $val(rp) 
  36.  -llType $val(ll) 
  37.  -macType $val(mac) 
  38.  -ifqType $val(ifq) 
  39.  -ifqLen $val(ifqlen) 
  40.  -antType $val(ant) 
  41.  -propType $val(prop) 
  42.  -phyType $val(netif) 
  43.  -channel $channel 
  44.  -topoInstance $topo 
  45.  -agentTrace ON 
  46.  -routerTrace ON
  47.  -macTrace OFF 
  48.  -movementTrace OFF
  49.  
  50. for {set i 0} {$i < $val(nn) } {incr i} {
  51. set node_($i) [$ns_ node]      
  52. $node_($i) random-motion 0;
  53. }
  54. # Provide initial (X,Y, for now Z=0) co-ordinates for mobilenodes
  55. $node_(0) set X_ 100.0
  56. $node_(0) set Y_ 200.0
  57. $node_(0) set Z_ 0.0
  58. $node_(1) set X_ 250.0
  59. $node_(1) set Y_ 200.0
  60. $node_(1) set Z_ 0.0
  61. $node_(2) set X_ 400.0
  62. $node_(2) set Y_ 200.0
  63. $node_(2) set Z_ 0.0
  64. $node_(3) set X_ 400.0
  65. $node_(3) set Y_ 350.0
  66. $node_(3) set Z_ 0.0
  67. $node_(4) set X_ 250.0
  68. $node_(4) set Y_ 350.0
  69. $node_(4) set Z_ 0.0
  70. $node_(5) set X_ 100.0
  71. $node_(5) set Y_ 350.0
  72. $node_(5) set Z_ 0.0
  73. # Define node initial position in nam
  74. for {set i 0} {$i < $val(nn)} {incr i} {
  75.     # 20 defines the node size in nam, must adjust it according to your scenario
  76.     # The function must be called after mobility model is defined
  77.     $ns_ initial_node_pos $node_($i) 20
  78. }
  79. # Tell nodes when the simulation ends
  80. for {set i 0} {$i < $val(nn) } {incr i} {
  81.     $ns_ at $val(stop).0 "$node_($i) reset";
  82. }
  83. # $ns_ at 0.1 "[$node_(0) set ragent_] send-pkt-to [$node_(3) id]"  for {set i 0} {$i < $val(nn) } {incr i} {        $ns_ at 0.0 "[$node_($i) set ragent_] initilize"; # all the node broadcast his key element } for {set i 0} {$i < $val(nn) } {incr i} {        $ns_ at 0.0 "[$node_($i) set ragent_] gen-pair-keys"; # all the node broadcast his key element } # $ns_ at 0.1 "[$node_(3) set ragent_] gen-pair-keys" # $ns_ at 0.1 "[$node_(3) set ragent_] send-to [$node_(4) id]" # $ns_ at 0.1 "[$node_(1) set ragent_] send-to [$node_(2) id]"
  84. $ns_ at $val(stop).0 "stop"
  85. $ns_ at $val(stop).01 "puts "NS EXITING..." ; $ns_ halt"
  86. proc stop {} {
  87.     global ns_ tracefd
  88.     $ns_ flush-trace
  89.     close $tracefd
  90.     exec nam protoname.nam
  91. }
  92. puts "Starting Simulation..."
  93. $ns_ run