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

通讯编程

开发平台:

Visual C++

  1. # rmcc-2.tcl
  2. # Competing with TCP scenario 
  3. #                  RM sender   
  4. # topology:     2 o           o 5  RM recv1
  5. #                   0     1 /
  6. #    TCP send1 3 o--o-------o--o 6  RM rec 2
  7. #                  /        |
  8. #    TCP send2 4  o         | o 7  TCP recv 1
  9. #                           o 8  TCP recv 2
  10. # TCP sender 1 starts to send at t=0sec
  11. # SRM sender starts to send at t=10s
  12. # tcp sender 2 starts to send at t=20s
  13. # BW of link 0-1 = 1 Mbps and delay is 20ms . For rest of the 
  14. # topology BW = 10Mbps and delay of 5ms.
  15. # flowmonitors compare thruput of TCP and rm flows in links 1-5, 1-6,
  16. # 1-7 and 1-8.
  17. #
  18. # usage:  ns rmcc-2.tcl
  19. #
  20. source rmcc.tcl
  21. ScenLib/RM instproc make_topo2 { time } {
  22.     global ns n t opts
  23.     $self make_nodes 9
  24.     #color them
  25.     $n(0) color "red"
  26.     $n(1) color "red"
  27.     $n(2) color "orchid"
  28.     $n(5) color "orchid"
  29.     $n(6) color "orchid"
  30.     $n(3) color "green"
  31.     $n(4) color "green"
  32.     $n(7) color "green"
  33.     $n(8) color "green"
  34.     #now setup topology
  35. # First the bottle-neck link
  36. $ns duplex-link $n(0) $n(1) $opts(bottleneckBW) 
  37. $opts(bottleneckDelay) DropTail
  38. $ns duplex-link-op $n(0) $n(1) queuePos 0.5
  39.     $ns duplex-link $n(0) $n(2) 10Mb 10ms DropTail
  40.     $ns duplex-link $n(0) $n(3) 10Mb 10ms DropTail
  41.     $ns duplex-link $n(0) $n(4) 10Mb 10ms DropTail
  42.     $ns duplex-link $n(1) $n(5) 10Mb 10ms DropTail
  43.     $ns duplex-link $n(1) $n(6) 10Mb 10ms DropTail
  44.     $ns duplex-link $n(1) $n(7) 10Mb 10ms DropTail
  45.     $ns duplex-link $n(1) $n(8) 10Mb 10ms DropTail
  46.     
  47.     $ns duplex-link-op $n(0) $n(1) orient right
  48.     $ns duplex-link-op $n(0) $n(2) orient left-up
  49.     $ns duplex-link-op $n(0) $n(3) orient left
  50.     $ns duplex-link-op $n(0) $n(4) orient left-down
  51. $ns duplex-link-op $n(1) $n(5) orient rightup
  52.     $ns duplex-link-op $n(1) $n(6) orient right
  53.     $ns duplex-link-op $n(1) $n(7) orient right-down
  54.     $ns duplex-link-op $n(1) $n(8) orient down
  55.     $ns queue-limit $n(0) $n(1) $opts(bottleneckQSize)
  56.     $ns queue-limit $n(1) $n(0) $opts(bottleneckQSize)
  57.     
  58.     $self make_flowmon $time $n(1) $n(5) flowStats_1_5.$t 
  59.     $n(1) $n(6) flowStats_1_6.$t 
  60.     $n(1) $n(7) flowStats_1_7.$t 
  61.     $n(1) $n(8) flowStats_1_8.$t
  62. }
  63. proc main {} {
  64.     global ns n
  65.     set test_scen [new ScenLib/RM]
  66.     $test_scen make_topo2 1.0
  67.     $test_scen create_mcast 2 8.3 9.0 10.0 5 6
  68.     $test_scen create_tcp 3 7 0.0
  69.     $test_scen create_tcp 4 8 20.0
  70.     $test_scen dump_flowmon $n(1) $n(7) 10.0
  71.     $test_scen dump_flowmon $n(1) $n(5) 20.0
  72.     $test_scen dump_flowmon $n(1) $n(7) 20.0
  73.     $test_scen dump_flowmon $n(1) $n(5) 30.0
  74.     $test_scen dump_flowmon $n(1) $n(6) 30.0
  75.     $test_scen dump_flowmon $n(1) $n(7) 30.0
  76.     $test_scen dump_flowmon $n(1) $n(8) 30.0
  77.     $ns at 30.0 "finish"
  78.     $ns run
  79. }
  80. global argv prog opts t mflag
  81. set mflag 0
  82. if [string match {*.tcl} $argv0] {
  83.     set prog [string range $argv0 0 [expr [string length $argv0] - 5]]
  84. } else {
  85.     set prog $argv0
  86. }
  87. process_args $argv
  88. set t $prog
  89. main