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

通讯编程

开发平台:

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-iridium.tcl,v 1.4 2001/11/06 06:20:11 tomh Exp $
  36. #
  37. # Example of a broadband LEO constellation with orbital configuration 
  38. # similar to that of Iridium.  The script sets up two terminals (one in 
  39. # Boston, one at Berkeley) and sends a packet from Berkeley to Boston
  40. # every second for a whole day-- the script illustrates how the latency
  41. # due to propagation delay changes depending on the satellite configuration. 
  42. #
  43. # This script relies on sourcing two additional files:
  44. # - sat-iridium-nodes.tcl
  45. # - sat-iridium-links.tcl
  46. # Iridium does not have crossseam ISLs-- to enable crossseam ISLs, uncomment 
  47. # the last few lines of "sat-iridium-links.tcl"
  48. #
  49. # Iridium parameters [primary reference:  "Satellite-Based Global Cellular
  50. # Communications by Bruno Pattan (1997-- McGraw-Hill)]
  51. # Altitude = 780 km
  52. # Orbital period = 6026.9 sec
  53. # intersatellite separation = 360/11 deg
  54. # interplane separation = 31.6 deg
  55. # seam separation = 22 deg
  56. # inclination = 86.4
  57. # eccentricity =  0.002 (not modelled)
  58. # minimum elevation angle at edge of coverage = 8.2 deg
  59. # ISL cross-link pattern:  2 intraplane to nearest neighbors in plane, 
  60. #   2 interplane except at seam where only 1 interplane exists
  61. global ns
  62. set ns [new Simulator]
  63. # Global configuration parameters 
  64. HandoffManager/Term set elevation_mask_ 8.2
  65. HandoffManager/Term set term_handoff_int_ 10
  66. HandoffManager/Sat set sat_handoff_int_ 10
  67. HandoffManager/Sat set latitude_threshold_ 60 
  68. HandoffManager/Sat set longitude_threshold_ 10 
  69. HandoffManager set handoff_randomization_ true
  70. SatRouteObject set metric_delay_ true
  71. # Set this to false if opt(wiredRouting) == ON below
  72. SatRouteObject set data_driven_computation_ true
  73. # "ns-random 0" sets seed heuristically; other integers are deterministic
  74. ns-random 1
  75. Agent set ttl_ 32; # Should be > than max diameter in network
  76. # One plane of Iridium-like satellites
  77. global opt
  78. set opt(chan)           Channel/Sat
  79. set opt(bw_down)        1.5Mb; # Downlink bandwidth (satellite to ground)
  80. set opt(bw_up)          1.5Mb; # Uplink bandwidth
  81. set opt(bw_isl)         25Mb
  82. set opt(phy)            Phy/Sat
  83. set opt(mac)            Mac/Sat
  84. set opt(ifq)            Queue/DropTail
  85. set opt(qlim)           50
  86. set opt(ll)             LL/Sat
  87. set opt(wiredRouting)  OFF
  88. set opt(alt)            780; # Polar satellite altitude (Iridium)
  89. set opt(inc)            86.4; # Orbit inclination w.r.t. equator
  90. # XXX This tracing enabling must precede link and node creation
  91. set outfile [open out.tr w]
  92. $ns trace-all $outfile
  93. # Create the satellite nodes
  94. # Nodes 0-99 are satellite nodes; 100 and higher are earth terminals
  95. $ns node-config -satNodeType polar 
  96. -llType $opt(ll) 
  97. -ifqType $opt(ifq) 
  98. -ifqLen $opt(qlim) 
  99. -macType $opt(mac) 
  100. -phyType $opt(phy) 
  101. -channelType $opt(chan) 
  102. -downlinkBW $opt(bw_down) 
  103. -wiredRouting $opt(wiredRouting) 
  104. set alt $opt(alt)
  105. set inc $opt(inc)
  106. source sat-iridium-nodes.tcl
  107. # configure the ISLs
  108. source sat-iridium-links.tcl
  109. # Set up terrestrial nodes
  110. $ns node-config -satNodeType terminal
  111. set n100 [$ns node]
  112. $n100 set-position 37.9 -122.3; # Berkeley
  113. set n101 [$ns node]
  114. $n101 set-position 42.3 -71.1; # Boston 
  115. # Add GSL links
  116. # It doesn't matter what the sat node is (handoff algorithm will reset it)
  117. $n100 add-gsl polar $opt(ll) $opt(ifq) $opt(qlim) $opt(mac) $opt(bw_up) 
  118.   $opt(phy) [$n0 set downlink_] [$n0 set uplink_]
  119. $n101 add-gsl polar $opt(ll) $opt(ifq) $opt(qlim) $opt(mac) $opt(bw_up) 
  120.   $opt(phy) [$n0 set downlink_] [$n0 set uplink_]
  121. # Trace all queues
  122. $ns trace-all-satlinks $outfile
  123. # Attach agents
  124. set udp0 [new Agent/UDP]
  125. $ns attach-agent $n100 $udp0
  126. set cbr0 [new Application/Traffic/CBR]
  127. $cbr0 attach-agent $udp0
  128. $cbr0 set interval_ 60.01
  129. set null0 [new Agent/Null]
  130. $ns attach-agent $n101 $null0
  131. $ns connect $udp0 $null0
  132. $ns at 1.0 "$cbr0 start"
  133. # We're using a centralized routing genie-- create and start it here
  134. set satrouteobject_ [new SatRouteObject]
  135. $satrouteobject_ compute_routes
  136. $ns at 86400.0 "finish" ; # one earth rotation 
  137. proc finish {} {
  138. global ns outfile 
  139. $ns flush-trace
  140. close $outfile
  141. exit 0
  142. }
  143. $ns run