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

通讯编程

开发平台:

Visual C++

  1. # -*- Mode:tcl; tcl-indent-level:8; tab-width:8; indent-tabs-mode:t -*-
  2. Agent/TCP set tcpTick_ 0.1
  3. # The default for tcpTick_ is being changed to reflect a changing reality.
  4. Agent/TCP set rfc2988_ false
  5. # The default for rfc2988_ is being changed to true.
  6. # FOR UPDATING GLOBAL DEFAULTS:
  7. Agent/TCP set precisionReduce_ false ;   # default changed on 2006/1/24.
  8. Agent/TCP set rtxcur_init_ 6.0 ;      # Default changed on 2006/01/21
  9. Agent/TCP set updated_rttvar_ false ;  # Variable added on 2006/1/21
  10. Agent/TCP set minrto_ 1
  11. # default changed on 10/14/2004.
  12. Agent/TCP set windowInit_ 1
  13. # The default is being changed to 2.
  14. Agent/TCP set singledup_ 0
  15. # The default is being changed to 1
  16. #
  17. # Copyright (c) 1998 University of Southern California.
  18. # All rights reserved.                                            
  19. #                                                                
  20. # Redistribution and use in source and binary forms are permitted
  21. # provided that the above copyright notice and this paragraph are
  22. # duplicated in all such forms and that any documentation, advertising
  23. # materials, and other materials related to such distribution and use
  24. # acknowledge that the software was developed by the University of
  25. # Southern California, Information Sciences Institute.  The name of the
  26. # University may not be used to endorse or promote products derived from
  27. # this software without specific prior written permission.
  28. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  29. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  30. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  31. # $Header: /cvsroot/nsnam/ns-2/tcl/test/test-suite-wireless-lan-tora.tcl,v 1.8 2006/01/24 23:00:08 sallyfloyd Exp $
  32. # This test suite is for validating wireless lans 
  33. # To run all tests: test-all-wireless-lan-tora
  34. # to run individual test:
  35. #
  36. # To view a list of available test to run with this script:
  37. # ns test-suite-wireless-lan.tcl
  38. #
  39. Class TestSuite
  40. Class Test/tora -superclass TestSuite
  41. #wireless model using TORA
  42. proc usage {} {
  43. global argv0
  44. puts stderr "usage: ns $argv0 <tests> "
  45. puts "Valid Tests: dsdv dsr"
  46. exit 1
  47. }
  48. proc default_options {} {
  49.     global opt
  50.     set opt(chan) Channel/WirelessChannel
  51.     set opt(prop) Propagation/TwoRayGround
  52.     set opt(netif) Phy/WirelessPhy
  53.     set opt(mac) Mac/802_11
  54.     set opt(ifq) Queue/DropTail/PriQueue
  55.     set opt(ll) LL
  56.     set opt(ant)        Antenna/OmniAntenna
  57.     set opt(x) 670 ;# X dimension of the topography
  58.     set opt(y) 670;# Y dimension of the topography
  59.     set opt(ifqlen) 50       ;# max packet in ifq
  60.     set opt(seed) 0.0
  61.     set opt(tr) temp.rands    ;# trace file
  62.     set opt(lm)         "off"          ;# log movement
  63. }
  64. # =====================================================================
  65. # Other default settings
  66. LL set mindelay_ 50us
  67. LL set delay_ 25us
  68. LL set bandwidth_ 0 ;# not used
  69. Agent/Null set sport_ 0
  70. Agent/Null set dport_ 0
  71. Agent/CBR set sport_ 0
  72. Agent/CBR set dport_ 0
  73. Agent/TCPSink set sport_ 0
  74. Agent/TCPSink set dport_ 0
  75. Agent/TCP set sport_ 0
  76. Agent/TCP set dport_ 0
  77. Agent/TCP set packetSize_ 1460
  78. Queue/DropTail/PriQueue set Prefer_Routing_Protocols    1
  79. # unity gain, omni-directional antennas
  80. # set up the antennas to be centered in the node and 1.5 meters above it
  81. Antenna/OmniAntenna set X_ 0
  82. Antenna/OmniAntenna set Y_ 0
  83. Antenna/OmniAntenna set Z_ 1.5
  84. Antenna/OmniAntenna set Gt_ 1.0
  85. Antenna/OmniAntenna set Gr_ 1.0
  86. # Initialize the SharedMedia interface with parameters to make
  87. # it work like the 914MHz Lucent WaveLAN DSSS radio interface
  88. Phy/WirelessPhy set CPThresh_ 10.0
  89. Phy/WirelessPhy set CSThresh_ 1.559e-11
  90. Phy/WirelessPhy set RXThresh_ 3.652e-10
  91. Phy/WirelessPhy set Rb_ 2*1e6
  92. Phy/WirelessPhy set Pt_ 0.2818
  93. Phy/WirelessPhy set freq_ 914e+6 
  94. Phy/WirelessPhy set L_ 1.0
  95. # =====================================================================
  96. TestSuite instproc init {} {
  97. global opt tracefd topo chan prop 
  98. global node_ god_ 
  99. $self instvar ns_ testName_
  100. set ns_         [new Simulator]
  101. if {[string compare $testName_ "dsdv"] && 
  102. [string compare $testName_ "tora"]} {
  103. $ns_ set-address-format hierarchical
  104. AddrParams set domain_num_ 3
  105. lappend cluster_num 2 1 1
  106. AddrParams set cluster_num_ $cluster_num
  107. lappend eilastlevel 1 1 4 1
  108. AddrParams set nodes_num_ $eilastlevel
  109.         }  
  110. set topo [new Topography]
  111. set tracefd [open $opt(tr) w]
  112. $ns_ trace-all $tracefd
  113. $topo load_flatgrid $opt(x) $opt(y)
  114. puts $tracefd "M 0.0 nn:$opt(nn) x:$opt(x) y:$opt(y) rp:$opt(rp)"
  115. puts $tracefd "M 0.0 sc:$opt(sc) cp:$opt(cp) seed:$opt(seed)"
  116. puts $tracefd "M 0.0 prop:$opt(prop) ant:$opt(ant)"
  117. }
  118. Test/tora instproc init {} {
  119. global opt node_ god_ chan topo
  120. $self instvar ns_ testName_
  121. set testName_       tora
  122. set opt(rp)         tora
  123. set opt(cp) "../mobility/scene/cbr-3-test" 
  124. set opt(sc) "../mobility/scene/scen-3-test" 
  125. set opt(nn) 3       
  126. set opt(stop)       200.0
  127. $self next
  128. #
  129. # Create God
  130. #
  131. set god_ [create-god $opt(nn)]
  132. $ns_ node-config -adhocRouting TORA 
  133. -llType $opt(ll) 
  134. -macType $opt(mac) 
  135. -ifqType $opt(ifq) 
  136. -ifqLen $opt(ifqlen) 
  137. -antType $opt(ant) 
  138. -propType $opt(prop) 
  139. -phyType $opt(netif) 
  140. -channel [new $opt(chan)] 
  141. -topoInstance $topo 
  142. -agentTrace ON 
  143. -routerTrace ON 
  144. -macTrace OFF 
  145. -toraDebug OFF 
  146. -movementTrace OFF
  147. for {set i 0} {$i < $opt(nn) } {incr i} {
  148.                 set node_($i) [$ns_ node]
  149.                 $node_($i) random-motion 0            ;# disable random motion
  150. }
  151. puts "Loading connection pattern..."
  152. source $opt(cp)
  153.     
  154. puts "Loading scenario file..."
  155. source $opt(sc)
  156. puts "Load complete..."
  157. $ns_ at $opt(stop) "puts "NS EXITING..." ; exit"
  158. }
  159. Test/tora instproc run {} {
  160. $self instvar ns_
  161. puts "Starting Simulation..."
  162. $ns_ run
  163. }
  164. TestSuite instproc finish {} {
  165. $self instvar ns_
  166. global quiet
  167. $ns_ flush-trace
  168. puts "finishing.."
  169. exit 0
  170. }
  171. TestSuite instproc log-movement {} {
  172. global ns
  173. $self instvar logtimer_ ns_
  174. set ns $ns_
  175. source ../mobility/timer.tcl
  176. Class LogTimer -superclass Timer
  177. LogTimer instproc timeout {} {
  178. global opt node_;
  179. for {set i 0} {$i < $opt(nn)} {incr i} {
  180. $node_($i) log-movement
  181. }
  182. $self sched 0.1
  183. }
  184. set logtimer_ [new LogTimer]
  185. $logtimer_ sched 0.1
  186. }
  187. TestSuite instproc create-tcp-traffic {id src dst start} {
  188.     $self instvar ns_
  189.     set tcp_($id) [new Agent/TCP]
  190.     $tcp_($id) set class_ 2
  191.     set sink_($id) [new Agent/TCPSink]
  192.     $ns_ attach-agent $src $tcp_($id)
  193.     $ns_ attach-agent $dst $sink_($id)
  194.     $ns_ connect $tcp_($id) $sink_($id)
  195.     set ftp_($id) [new Application/FTP]
  196.     $ftp_($id) attach-agent $tcp_($id)
  197.     $ns_ at $start "$ftp_($id) start"
  198. }
  199. TestSuite instproc create-udp-traffic {id src dst start} {
  200.     $self instvar ns_
  201.     set udp_($id) [new Agent/UDP]
  202.     $ns_ attach-agent $src $udp_($id)
  203.     set null_($id) [new Agent/Null]
  204.     $ns_ attach-agent $dst $null_($id)
  205.     set cbr_($id) [new Application/Traffic/CBR]
  206.     $cbr_($id) set packetSize_ 512
  207.     $cbr_($id) set interval_ 4.0
  208.     $cbr_($id) set random_ 1
  209.     $cbr_($id) set maxpkts_ 10000
  210.     $cbr_($id) attach-agent $udp_($id)
  211.     $ns_ connect $udp_($id) $null_($id)
  212.     $ns_ at $start "$cbr_($id) start"
  213. }
  214. proc runtest {arg} {
  215. global quiet
  216. set quiet 0
  217. set b [llength $arg]
  218. if {$b == 1} {
  219. set test $arg
  220. } elseif {$b == 2} {
  221. set test [lindex $arg 0]
  222. if {[lindex $arg 1] == "QUIET"} {
  223. set quiet 1
  224. }
  225. } else {
  226. usage
  227. }
  228. set t [new Test/$test]
  229. $t run
  230. }
  231. global argv arg0
  232. default_options
  233. runtest $argv