datarate.tcl
上传用户:hzie11
上传日期:2013-10-07
资源大小:1487k
文件大小:6k
源码类别:

网络

开发平台:

C/C++

  1. # Test script to evaluate datarate in 802.16 networks.
  2. # @author rouil
  3. # Scenario: Communication between MN and Sink Node with MN attached to BS.
  4. #
  5. # Topology scenario:
  6. #
  7. #
  8. #         |-----|          
  9. #         | MN0 |                 ; 1.0.1 
  10. #         |-----|        
  11. #
  12. #
  13. #   (^)
  14. #    |
  15. #     |--------------|
  16. #           | Base Station |  ; 1.0.0
  17. #           |--------------|
  18. #         |
  19. #         |
  20. #      |-----------|
  21. #            | Sink node |  ; 0.0.0
  22. #            |-----------|
  23. #
  24. #check input parameters
  25. if {$argc != 2} {
  26. puts ""
  27. puts "Wrong Number of Arguments! 2 arguments for this script"
  28. puts "Usage: ns datarate.tcl modulation cyclic_prefix "
  29.         puts "modulation: OFDM_BPSK_1_2, OFDM_QPSK_1_2, OFDM_QPSK_3_4"
  30.         puts "            OFDM_16QAM_1_2, OFDM_16QAM_3_4, OFDM_64QAM_2_3, OFDM_64QAM_3_4"
  31.         puts "cyclic_prefix: 0.25, 0.125, 0.0625, 0.03125"
  32. exit 
  33. }
  34. # set global variables
  35. set output_dir .
  36. set traffic_start 2
  37. set traffic_stop  7
  38. set simulation_stop 8
  39. # Configure Wimax
  40. Mac/802_16 set debug_ 0
  41. Mac/802_16 set frame_duration_ 0.020
  42. #define coverage area for base station: 20m coverage 
  43. Phy/WirelessPhy/OFDM set g_ [lindex $argv 1]
  44. Phy/WirelessPhy set Pt_ 0.025
  45. Phy/WirelessPhy set RXThresh_ 2.025e-12 ;# 500m radius
  46. Phy/WirelessPhy set CSThresh_ [expr 0.9*[Phy/WirelessPhy set RXThresh_]]
  47. # Parameter for wireless nodes
  48. set opt(chan)           Channel/WirelessChannel    ;# channel type
  49. set opt(prop)           Propagation/TwoRayGround   ;# radio-propagation model
  50. set opt(netif)          Phy/WirelessPhy/OFDM       ;# network interface type
  51. set opt(mac)            Mac/802_16                 ;# MAC type
  52. set opt(ifq)            Queue/DropTail/PriQueue    ;# interface queue type
  53. set opt(ll)             LL                         ;# link layer type
  54. set opt(ant)            Antenna/OmniAntenna        ;# antenna model
  55. set opt(ifqlen)         50                  ;# max packet in ifq
  56. set opt(adhocRouting)   DSDV                       ;# routing protocol
  57. set opt(x) 1100    ;# X dimension of the topography
  58. set opt(y) 1100    ;# Y dimension of the topography
  59. #defines function for flushing and closing files
  60. proc finish {} {
  61.         global ns tf output_dir nb_mn
  62.         $ns flush-trace
  63.         close $tf
  64. exit 0
  65. }
  66. #create the simulator
  67. set ns [new Simulator]
  68. $ns use-newtrace
  69. #create the topography
  70. set topo [new Topography]
  71. $topo load_flatgrid $opt(x) $opt(y)
  72. #puts "Topology created"
  73. #open file for trace
  74. set tf [open $output_dir/out.res w]
  75. $ns trace-all $tf
  76. #puts "Output file configured"
  77. # set up for hierarchical routing (needed for routing over a basestation)
  78. $ns node-config -addressType hierarchical
  79. AddrParams set domain_num_ 2           ;# domain number
  80. lappend cluster_num 1 1             ;# cluster number for each domain 
  81. AddrParams set cluster_num_ $cluster_num
  82. lappend eilastlevel 1 2  ;# number of nodes for each cluster (1 for sink and one for mobile node + base station
  83. AddrParams set nodes_num_ $eilastlevel
  84. puts "Configuration of hierarchical addressing done"
  85. # Create God
  86. create-god 2
  87. #creates the sink node in first address space.
  88. set sinkNode [$ns node 0.0.0]
  89. puts "sink node created"
  90. #creates the Access Point (Base station)
  91. $ns node-config -adhocRouting $opt(adhocRouting) 
  92.                  -llType $opt(ll) 
  93.                  -macType $opt(mac) 
  94.                  -ifqType $opt(ifq) 
  95.                  -ifqLen $opt(ifqlen) 
  96.                  -antType $opt(ant) 
  97.                  -propType $opt(prop)    
  98.                  -phyType $opt(netif) 
  99.                  -channel [new $opt(chan)] 
  100.                  -topoInstance $topo 
  101.                  -wiredRouting ON 
  102.                  -agentTrace ON 
  103.                  -routerTrace ON 
  104.                  -macTrace ON  
  105.                  -movementTrace OFF
  106. #puts "Configuration of base station"
  107. set bstation [$ns node 1.0.0]  
  108. $bstation random-motion 0
  109. #provide some co-ord (fixed) to base station node
  110. $bstation set X_ 550.0
  111. $bstation set Y_ 550.0
  112. $bstation set Z_ 0.0
  113. set clas [new SDUClassifier/Dest]
  114. [$bstation set mac_(0)] add-classifier $clas
  115. #set the scheduler for the node. Must be changed to -shed [new $opt(sched)]
  116. set bs_sched [new WimaxScheduler/BS]
  117. $bs_sched set-default-modulation [lindex $argv 0]     ;#OFDM_BPSK_1_2
  118. [$bstation set mac_(0)] set-scheduler $bs_sched
  119. [$bstation set mac_(0)] set-channel 0
  120. puts "Base-Station node created"
  121. # creation of the mobile nodes
  122. $ns node-config -wiredRouting OFF 
  123.                 -macTrace ON   ;# Mobile nodes cannot do routing.
  124. set wl_node [$ns node 1.0.1]  ;# create the node with given @.
  125. $wl_node random-motion 0 ;# disable random motion
  126. $wl_node base-station [AddrParams addr2id [$bstation node-addr]] ;#attach mn to basestation
  127. #compute position of the node
  128. $wl_node set X_ 400.0
  129. $wl_node set Y_ 550.0
  130. $wl_node set Z_ 0.0
  131. puts "wireless node created ..."
  132. set clas [new SDUClassifier/Dest]
  133. [$wl_node set mac_(0)] add-classifier $clas
  134. #set the scheduler for the node. Must be changed to -shed [new $opt(sched)]
  135. set ss_sched [new WimaxScheduler/SS]
  136. [$wl_node set mac_(0)] set-scheduler $ss_sched
  137. [$wl_node set mac_(0)] set-channel 0
  138. #create source traffic
  139. #Create a UDP agent and attach it to node n0
  140. set udp [new Agent/UDP]
  141. $udp set packetSize_ 1500
  142. $ns attach-agent $wl_node $udp
  143. # Create a CBR traffic source and attach it to udp0
  144. set cbr [new Application/Traffic/CBR]
  145. $cbr set packetSize_ 1500
  146. $cbr set interval_ 0.0005
  147. $cbr attach-agent $udp
  148. #create an sink into the sink node
  149. # Create the Null agent to sink traffic
  150. set null [new Agent/Null] 
  151. $ns attach-agent $sinkNode $null
  152. # Attach the 2 agents
  153. $ns connect $udp $null
  154. # create the link between sink node and base station
  155. $ns duplex-link $sinkNode $bstation 100Mb 1ms DropTail
  156. #Schedule start/stop of traffic
  157. $ns at $traffic_start "$cbr start"
  158. $ns at $traffic_stop "$cbr stop"
  159. $ns at $simulation_stop "finish"
  160. puts "Starts simulation"
  161. $ns run
  162. puts "Simulation done."