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

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (c) 1996 Regents of the University of California.
  3. # All rights reserved.
  4. # Redistribution and use in source and binary forms, with or without
  5. # modification, are permitted provided that the following conditions
  6. # are met:
  7. # 1. Redistributions of source code must retain the above copyright
  8. #    notice, this list of conditions and the following disclaimer.
  9. # 2. Redistributions in binary form must reproduce the above copyright
  10. #    notice, this list of conditions and the following disclaimer in the
  11. #    documentation and/or other materials provided with the distribution.
  12. # 3. All advertising materials mentioning features or use of this software
  13. #    must display the following acknowledgement:
  14. #  This product includes software developed by the MASH Research
  15. #  Group at the University of California Berkeley.
  16. # 4. Neither the name of the University nor of the Research Group may be
  17. #    used to endorse or promote products derived from this software without
  18. #    specific prior written permission.
  19. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  20. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  21. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  22. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  23. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  24. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  25. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  26. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  27. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  28. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  29. # SUCH DAMAGE.
  30. #
  31. # @(#) $Header: /cvsroot/nsnam/ns-2/tcl/ex/mcast.tcl,v 1.12 1999/09/10 22:08:41 haoboy Exp $
  32. # updated to use -multicast on and allocaddr by Lloyd Wood
  33. #
  34. # Simple multicast test.  It's easiest to verify the
  35. # output with the animator.
  36. # We create a four node start; start a CBR traffic generator in the center
  37. # and then at node 3 and exercise the join/leave code.
  38. #
  39. # See tcl/ex/newmcast/mcast*.tcl for more mcast example scripts
  40. set ns [new Simulator -multicast on]
  41. set f [open out.tr w]
  42. $ns trace-all $f
  43. $ns namtrace-all [open out.nam w]
  44. $ns color 1 red
  45. # prune/graft packets
  46. $ns color 30 purple
  47. $ns color 31 bisque
  48. set n0 [$ns node]
  49. set n1 [$ns node]
  50. set n2 [$ns node]
  51. set n3 [$ns node]
  52. # Use automatic layout 
  53. $ns duplex-link $n0 $n1 1.5Mb 10ms DropTail
  54. $ns duplex-link $n1 $n2 1.5Mb 10ms DropTail
  55. $ns duplex-link $n1 $n3 1.5Mb 10ms DropTail
  56. $ns duplex-link-op $n0 $n1 orient right
  57. $ns duplex-link-op $n1 $n2 orient right-up
  58. $ns duplex-link-op $n1 $n3 orient right-down
  59. $ns duplex-link-op $n0 $n1 queuePos 0.5
  60. set mproto DM
  61. set mrthandle [$ns mrtproto $mproto {}]
  62. set group0 [Node allocaddr]
  63. set group1 [Node allocaddr]
  64. set udp0 [new Agent/UDP]
  65. $ns attach-agent $n1 $udp0
  66. $udp0 set dst_addr_ $group0
  67. $udp0 set dst_port_ 0
  68. set cbr0 [new Application/Traffic/CBR]
  69. $cbr0 attach-agent $udp0
  70. set udp1 [new Agent/UDP]
  71. $udp1 set dst_addr_ $group1
  72. $udp1 set dst_port_ 0
  73. $udp1 set class_ 1
  74. $ns attach-agent $n3 $udp1
  75. set cbr1 [new Application/Traffic/CBR]
  76. $cbr1 attach-agent $udp1
  77. set rcvr [new Agent/LossMonitor]
  78. $ns attach-agent $n2 $rcvr
  79. $ns at 1.2 "$n2 join-group $rcvr $group1"
  80. $ns at 1.25 "$n2 leave-group $rcvr $group1"
  81. $ns at 1.3 "$n2 join-group $rcvr $group1"
  82. $ns at 1.35 "$n2 join-group $rcvr $group0"
  83. $ns at 1.0 "$cbr0 start"
  84. #$ns at 1.001 "$cbr0 stop"
  85. $ns at 1.1 "$cbr1 start"
  86. #set tcp [new Agent/TCP]
  87. #set sink [new Agent/TCPSink]
  88. #$ns attach-agent $n0 $tcp
  89. #$ns attach-agent $n3 $sink
  90. #$ns connect $tcp $sink
  91. #set ftp [new Application/FTP]
  92. #$ftp attach-agent $tcp
  93. #$ns at 1.2 "$ftp start"
  94. #puts [$cbr0 set packetSize_]
  95. #puts [$cbr0 set interval_]
  96. $ns at 2.0 "finish"
  97. proc finish {} {
  98. global ns
  99. $ns flush-trace
  100. puts "running nam..."
  101. exec nam out.nam &
  102. exit 0
  103. }
  104. $ns run