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

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (C) 1999 by USC/ISI
  3. # All rights reserved.                                            
  4. #                                                                
  5. # Redistribution and use in source and binary forms are permitted
  6. # provided that the above copyright notice and this paragraph are
  7. # duplicated in all such forms and that any documentation, advertising
  8. # materials, and other materials related to such distribution and use
  9. # acknowledge that the software was developed by the University of
  10. # Southern California, Information Sciences Institute.  The name of the
  11. # University may not be used to endorse or promote products derived from
  12. # this software without specific prior written permission.
  13. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  14. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  15. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16. #
  17. # Maintained by: Polly Huang Tue Feb  2 14:34:54 PST 1999
  18. # Version Date: $Date: 1999/09/09 03:29:46 $
  19. #
  20. # @(#) $Header: /cvsroot/nsnam/ns-2/tcl/ex/shuttle-mcast.tcl,v 1.3 1999/09/09 03:29:46 salehi Exp $ (USC/ISI)
  21. #
  22. # Creating 3 multicast sessions over a partial mbone topology (1996)
  23. source shuttle.tcl
  24. set mcastConnection 3
  25. set ns [new Simulator]
  26. $ns multicast
  27. # set colors for nam
  28. for {set i 0} {$i < 10} {incr i} {
  29.     set color [expr $i % 6]
  30.     if {$color == 0} {
  31.         $ns color $i blue
  32.     } elseif {$color == 1} {
  33.         $ns color $i red
  34.     } elseif {$color == 2} {
  35.         $ns color $i green
  36.     } elseif {$color == 3} {
  37.         $ns color $i yellow
  38.     } elseif {$color == 4} {
  39.         $ns color $i brown
  40.     } elseif {$color == 5} {
  41.         $ns color $i black
  42.     }
  43. }
  44. # config output files
  45. set f [open shuttle-mcast.out w]
  46. $ns trace-all $f
  47. set nf [open shuttle-mcast.nam w]
  48. $ns namtrace-all $nf
  49. # creating mbone shuttle session topology 
  50. # generated from 1996 trace
  51. puts "This simulation will take a long time..."
  52. #Node expandaddr
  53. create-topology
  54. # mcast config
  55. set mproto CtrMcast
  56. set mrthandle [$ns mrtproto $mproto {}]
  57. # create mcast sessions
  58. for {set i 0} {$i < $mcastConnection} {incr i} {
  59.     # groups config
  60.     set g($i) [expr [Node allocaddr]]
  61.     if {$mrthandle != ""} {
  62. $ns at 0.01 "$mrthandle switch-treetype $g($i)"
  63.     }    
  64.     # source config
  65.     set udp($i) [new Agent/UDP]
  66.     $ns attach-agent $n($i) $udp($i)
  67.     set cbr($i) [new Application/Traffic/CBR]
  68.     $cbr($i) attach-agent $udp($i)
  69.     $udp($i) set dst_addr_ $g($i)
  70.     $udp($i) set dst_port_ 0
  71.     $udp($i) set fid_ $i
  72.     $ns at [expr $i + 1] "$cbr($i) start"
  73.     # member config
  74.     set member1 [expr [expr $num_node - $i] - 1]
  75.     set member2 [expr [expr $num_node / 2 ] - $i]
  76.     set rcvr($i:$member1) [new Agent/Null]
  77.     set rcvr($i:$member2) [new Agent/Null]
  78.     $ns attach-agent $n($member1) $rcvr($i:$member1)
  79.     $ns attach-agent $n($member2) $rcvr($i:$member2)
  80.     $ns at 0.5 "$n($member1) join-group  $rcvr($i:$member1) $g($i)"
  81.     $ns at 0.5 "$n($member2) join-group  $rcvr($i:$member2) $g($i)"
  82. }
  83. proc finish {} {
  84.     global ns f nf
  85.     $ns flush-trace
  86.     close $f
  87.     close $nf
  88.     exec nam shuttle-mcast.nam
  89.     exit
  90. }
  91. $ns at 13.0 "finish"
  92. $ns run