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

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (c) 1999 Regents of the University of California.
  3. # All rights reserved.
  4. #
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions
  7. # are met:
  8. # 1. Redistributions of source code must retain the above copyright
  9. #    notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions and the following disclaimer in the
  12. #    documentation and/or other materials provided with the distribution.
  13. # 3. All advertising materials mentioning features or use of this software
  14. #    must display the following acknowledgement:
  15. #       This product includes software developed by the MASH Research
  16. #       Group at the University of California Berkeley.
  17. # 4. Neither the name of the University nor of the Research Group may be
  18. #    used to endorse or promote products derived from this software without
  19. #    specific prior written permission.
  20. #
  21. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31. # SUCH DAMAGE.
  32. #
  33. # Contributed by Tom Henderson, UCB Daedalus Research Group, June 1999
  34. #
  35. # $Header: /cvsroot/nsnam/ns-2/tcl/ex/sat-repeater.tcl,v 1.5 2002/07/10 02:29:50 tomh Exp $
  36. #
  37. # Simple script with a geostationary satellite and two terminals
  38. # and an error module on the receiving terminal.  The traffic consists of
  39. # a FTP source and a CBR stream  
  40. global ns
  41. set ns [new Simulator]
  42. # Global configuration parameters
  43. # We'll set these global options for the satellite terminals
  44. global opt
  45. set opt(chan)           Channel/Sat
  46. set opt(bw_up) 2Mb
  47. set opt(bw_down) 2Mb
  48. set opt(phy)            Phy/Sat
  49. set opt(mac)            Mac/Sat
  50. set opt(ifq)            Queue/DropTail
  51. set opt(qlim) 50
  52. set opt(ll)             LL/Sat
  53. set opt(wiredRouting)   OFF
  54. # XXX This tracing enabling must precede link and node creation 
  55. set outfile [open out.tr w]
  56. $ns trace-all $outfile
  57. # Set up satellite and terrestrial nodes
  58. # Configure the node generator for bent-pipe satellite
  59. # geo-repeater uses type Phy/Repeater
  60. $ns node-config -satNodeType geo-repeater 
  61. -phyType Phy/Repeater 
  62. -channelType $opt(chan) 
  63. -downlinkBW $opt(bw_down)  
  64. -wiredRouting $opt(wiredRouting)
  65. # GEO satellite at 95 degrees longitude West
  66. set n1 [$ns node]
  67. $n1 set-position -95
  68. # Configure the node generator for satellite terminals
  69. $ns node-config -satNodeType terminal 
  70.                 -llType $opt(ll) 
  71.                 -ifqType $opt(ifq) 
  72.                 -ifqLen $opt(qlim) 
  73.                 -macType $opt(mac) 
  74.                 -phyType $opt(phy) 
  75.                 -channelType $opt(chan) 
  76.                 -downlinkBW $opt(bw_down) 
  77.                 -wiredRouting $opt(wiredRouting)
  78. # Two terminals: one in NY and one in SF 
  79. set n2 [$ns node]
  80. $n2 set-position 40.9 -73.9; # NY
  81. set n3 [$ns node]
  82. $n3 set-position 37.8 -122.4; # SF
  83. # Add GSLs to geo satellites
  84. $n2 add-gsl geo $opt(ll) $opt(ifq) $opt(qlim) $opt(mac) $opt(bw_up) 
  85.     $opt(phy) [$n1 set downlink_] [$n1 set uplink_]
  86. $n3 add-gsl geo $opt(ll) $opt(ifq) $opt(qlim) $opt(mac) $opt(bw_up) 
  87.     $opt(phy) [$n1 set downlink_] [$n1 set uplink_]
  88. # Add an error model to the receiving terminal node
  89. set em_ [new ErrorModel]
  90. $em_ unit pkt
  91. $em_ set rate_ 0.02
  92. $em_ ranvar [new RandomVariable/Uniform]
  93. $n3 interface-errormodel $em_ 
  94. $ns trace-all-satlinks $outfile
  95. # Attach agents for CBR traffic generator 
  96. set udp0 [new Agent/UDP]
  97. $ns attach-agent $n2 $udp0
  98. set cbr0 [new Application/Traffic/CBR]
  99. $cbr0 attach-agent $udp0
  100. $cbr0 set interval_ 6
  101. set null0 [new Agent/Null]
  102. $ns attach-agent $n3 $null0
  103. $ns connect $udp0 $null0
  104. # Attach agents for FTP  
  105. set tcp1 [$ns create-connection TCP $n2 TCPSink $n3 0]
  106. set ftp1 [$tcp1 attach-app FTP]
  107. $ns at 7.0 "$ftp1 produce 100"
  108. # We use centralized routing
  109. set satrouteobject_ [new SatRouteObject]
  110. $satrouteobject_ compute_routes
  111. $ns at 1.0 "$cbr0 start"
  112. $ns at 100.0 "finish"
  113. proc finish {} {
  114. global ns outfile
  115. $ns flush-trace
  116. close $outfile
  117. exit 0
  118. }
  119. $ns run