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

通讯编程

开发平台:

Visual C++

  1. source ../lan/vlan.tcl
  2. set opt(tr) out
  3. set opt(namtr) "vlantest-mcst.nam"
  4. set opt(seed) 0
  5. set opt(stop) 0.2
  6. set opt(node) 3
  7. set opt(qsize) 100y
  8. set opt(bw) 20Mb
  9. set opt(delay) 1ms
  10. set opt(ll) LL
  11. set opt(ifq) Queue/DropTail
  12. set opt(mac) Mac/Csma/Cd
  13. set opt(chan) Channel
  14. set opt(tcp) TCP/Reno
  15. set opt(sink) TCPSink
  16. set opt(source) FTP
  17. proc finish {} {
  18. global ns opt
  19. $ns flush-trace
  20. exec nam $opt(namtr) &
  21. exit 0
  22. }
  23. proc create-trace {} {
  24. global ns opt
  25. if [file exists $opt(tr)] {
  26. catch "exec rm -f $opt(tr) $opt(tr)-bw [glob $opt(tr).*]"
  27. }
  28. set trfd [open $opt(tr) w]
  29. $ns trace-all $trfd
  30. if {$opt(namtr) != ""} {
  31. $ns namtrace-all [open $opt(namtr) w]
  32. }
  33. return $trfd
  34. }
  35. proc create-topology {} {
  36. global ns opt
  37. global lan node source node0 nodex nodey
  38. set num $opt(node)
  39. for {set i 0} {$i < $num} {incr i} {
  40. set node($i) [$ns node]
  41. lappend nodelist $node($i)
  42. }
  43. set lan [$ns newLan $nodelist $opt(bw) $opt(delay) 
  44. -llType $opt(ll) -ifqType $opt(ifq) 
  45. -macType $opt(mac) -chanType $opt(chan)]
  46. #$lan addNode $nodelist $opt(bw) $opt(delay)
  47. set node0 [$ns node]
  48. $ns duplex-link $node0 $node(1) 5Mb 2ms DropTail
  49. $ns duplex-link-op $node0 $node(1) orient right
  50. set nodex [$ns node]
  51. $ns duplex-link $nodex $node(2) 5Mb 2ms DropTail
  52. $ns duplex-link-op $nodex $node(2) orient left
  53. set nodey [$ns node]
  54. $ns duplex-link $nodey $node(0) 5Mb 2ms DropTail
  55. $ns duplex-link-op $nodey $node(0) orient down
  56. }
  57. ## MAIN ##
  58. set ns [new Simulator -multicast on]
  59. $ns color 2 black
  60. $ns color 1 blue
  61. $ns color 0 red
  62. $ns color 30 purple
  63. $ns color 31 green
  64. set trfd [create-trace]
  65. create-topology
  66. set mproto DM
  67. set mrthandle [$ns mrtproto $mproto  {}]
  68. set group [Node allocaddr]
  69. set udp0 [new Agent/UDP]
  70. $ns attach-agent $node0 $udp0
  71. set cbr0 [new Application/Traffic/CBR]
  72. $cbr0 attach-agent $udp0
  73. set rcvrx [new Agent/Null]
  74. $ns attach-agent $nodex $rcvrx
  75. set rcvry [new Agent/Null]
  76. $ns attach-agent $nodey $rcvry
  77. $udp0 set dst_ $group
  78. $cbr0 set interval_ 0.01
  79. $ns at 0.0 "$nodex join-group $rcvrx $group"
  80. $ns at 0.0 "$nodey join-group $rcvry $group"
  81. $ns at 0.1 "$cbr0 start"
  82. $ns at $opt(stop) "finish"
  83. $ns run