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

通讯编程

开发平台:

Visual C++

  1. # rmcc-3.tcl
  2. # Multiple RM flows scenario
  3. #                  
  4. #             RM sender1   
  5. # topology:    2 o               o 6  RM recv 1
  6. #                  0         1 /
  7. #    RM send2 3o---o-----------o--o 7  RM recv 2
  8. #                 /| B/N link  |
  9. #                / |           |    
  10. #               o  o           o  o 8 RM recv 3
  11. #    RM send3 4    5           9   
  12. #                             CBR receiver1
  13. #                CBR sender1 
  14. # RM sender 1 starts to send at t=0s
  15. # RM sender 2 starts to send at t=5s
  16. # RM sender 3 starts to send at t=10
  17. # CBR sender 1 starts to send at t=20s at 500Kbps
  18. # CBR reduces its rate to 200Kbps at t=40s
  19. # comparison of flow bandwidth for RM flows by flow monitors attached on
  20. # links 1-6, 1-7, 1-8 and 1-9
  21. # usage : ns rmcc-3.tcl
  22. #
  23. source rmcc.tcl
  24. ScenLib/RM instproc make_topo3 { time } {
  25.     global ns n t opts
  26.     $self make_nodes 10
  27.     #color them
  28.     $n(0) color "red"
  29.     $n(1) color "red"
  30.     $n(2) color "orchid"
  31.     $n(3) color "orchid"
  32.     $n(4) color "orchid"
  33.     $n(6) color "green"
  34.     $n(7) color "green"
  35.     $n(8) color "green"
  36.     $n(4) color "black"
  37.     $n(9) color "black"
  38.     #now setup topology
  39. # bottleneck link
  40.     $ns duplex-link $n(0) $n(1) $opts(bottleneckBW) 
  41. $opts(bottleneckDelay) DropTail
  42. $ns duplex-link-op $n(0) $n(1) queuePos 0.5
  43.     $ns duplex-link $n(0) $n(2) 10Mb 5ms DropTail
  44.     $ns duplex-link $n(0) $n(3) 10Mb 5ms DropTail
  45.     $ns duplex-link $n(0) $n(4) 10Mb 5ms DropTail
  46.     $ns duplex-link $n(0) $n(5) 10Mb 5ms DropTail
  47.     $ns duplex-link $n(1) $n(6) 10Mb 5ms DropTail
  48.     $ns duplex-link-op $n(1) $n(6) queuePos 0.5
  49.     $ns duplex-link $n(1) $n(7) 10Mb 5ms DropTail
  50.     $ns duplex-link-op $n(1) $n(7) queuePos 0.5
  51.     $ns duplex-link $n(1) $n(8) 10Mb 5ms DropTail
  52.     $ns duplex-link $n(1) $n(9) 10Mb 5ms DropTail
  53.     
  54.     $ns duplex-link-op $n(0) $n(1) orient right
  55.     $ns duplex-link-op $n(0) $n(2) orient left-up
  56.     $ns duplex-link-op $n(0) $n(3) orient left
  57. $ns duplex-link-op $n(0) $n(4) orient left-down
  58. $ns duplex-link-op $n(0) $n(5) orient down
  59. $ns duplex-link-op $n(1) $n(6) orient up
  60. $ns duplex-link-op $n(1) $n(7) orient right
  61. $ns duplex-link-op $n(1) $n(8) orient right-down
  62. $ns duplex-link-op $n(1) $n(9) orient down
  63. $ns queue-limit $n(0) $n(1) $opts(bottleneckQSize)
  64. $ns queue-limit $n(1) $n(0) $opts(bottleneckQSize)
  65. $self make_flowmon $time $n(1) $n(6) flowStats_1_6.$t 
  66.     $n(1) $n(7) flowStats_1_7.$t 
  67.     $n(1) $n(8) flowStats_1_8.$t 
  68.     $n(1) $n(9) flowStats_1_9.$t
  69. }
  70. proc run {} {
  71.     global ns n
  72.     set test_scen [new ScenLib/RM]
  73.     $test_scen make_topo3 40.0
  74.     $test_scen create_mcast 2 0.1 0.4 1.0 6
  75.     $test_scen create_mcast 3 8.3 9.0 10.0 7
  76.     $test_scen create_mcast 4 18.3 19.0 20.0 8
  77.     $test_scen create_cbr 5 2.0 9 40.0 60.0 5 5.0 9 60.0 80.0 
  78.     $test_scen dump_flowmon $n(1) $n(6) 10.0
  79.     $test_scen dump_flowmon $n(1) $n(6) 20.0
  80.     $test_scen dump_flowmon $n(1) $n(7) 20.0
  81.     $test_scen dump_flowmon $n(1) $n(6) 40.0
  82.     $test_scen dump_flowmon $n(1) $n(7) 40.0
  83.     $test_scen dump_flowmon $n(1) $n(8) 40.0
  84.     $test_scen dump_flowmon $n(1) $n(6) 60.0
  85.     $test_scen dump_flowmon $n(1) $n(9) 60.0
  86.     $test_scen dump_flowmon $n(1) $n(6) 80.0
  87.     $test_scen dump_flowmon $n(1) $n(9) 80.0
  88.     $ns at 80.0 "finish"
  89.     $ns run
  90. }
  91. global argv prog opts t mflag
  92. set mflag 0
  93. if [string match {*.tcl} $argv0] {
  94.     set prog [string range $argv0 0 [expr [string length $argv0] - 5]]
  95. } else {
  96.     set prog $argv0
  97. }
  98. process_args $argv
  99. set t $prog
  100. run