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

通讯编程

开发平台:

Visual C++

  1. # Slow start protocol in a heavily loaded network.
  2. # features : labeling, annotation, nam-graph, and window size monitoring
  3. #
  4. # n0    n5 
  5. #                / 
  6. # n1 -- n3 ---------- n4 -- n6
  7. #    /  
  8. # n2    n7
  9. set ns [new Simulator]
  10. $ns color 0 black
  11. $ns color 1 red
  12. $ns trace-all [open C3-slow-start.tr w]
  13. $ns namtrace-all [open C3-slow-start.nam w]
  14. ### build topology with 8 nodes
  15. foreach i " 0 1 2 3 4 5 6 7" {
  16. set n$i [$ns node]
  17. }
  18.         $ns at 0.0 "$n0 label TCP"
  19.         $ns at 0.0 "$n5 label TCP"
  20.         $ns at 0.0 "$n1 label CBR-1"
  21.         $ns at 0.0 "$n2 label CBR-2" 
  22.         $ns at 0.0 "$n6 label CBR-1"
  23.         $ns at 0.0 "$n7 label CBR-2"
  24.         $ns duplex-link $n0 $n3 5Mb 20ms DropTail
  25.         $ns duplex-link $n1 $n3 1Mb 20ms DropTail
  26.         $ns duplex-link $n2 $n3 1Mb 20ms DropTail
  27.         $ns duplex-link $n3 $n4 1Mb 50ms DropTail
  28. $ns duplex-link $n4 $n5 5Mb 20ms DropTail
  29.         $ns duplex-link $n4 $n6 1Mb 20ms DropTail
  30.         $ns duplex-link $n4 $n7 1Mb 20ms DropTail
  31.         $ns queue-limit $n3 $n4 15
  32.         $ns duplex-link-op $n0 $n3 orient right-down
  33.         $ns duplex-link-op $n1 $n3 orient right
  34.         $ns duplex-link-op $n2 $n3 orient right-up
  35.         $ns duplex-link-op $n3 $n4 orient right     
  36.         $ns duplex-link-op $n4 $n5 orient right-up
  37.         $ns duplex-link-op $n4 $n6 orient right     
  38.         $ns duplex-link-op $n4 $n7 orient right-down     
  39.         $ns duplex-link-op $n3 $n4 queuePos 0.5
  40. Agent/TCP set nam_tracevar_ true         
  41. Agent/TCP set window_ 20
  42. ### TCP between n0 and n5 (Black)
  43. set tcp [new Agent/TCP]
  44. $tcp set fid_ 0
  45. $ns attach-agent $n0 $tcp
  46.         
  47. set sink [new Agent/TCPSink]
  48. $ns attach-agent $n5 $sink
  49. $ns connect $tcp $sink
  50. set ftp [new Application/FTP]
  51. $ftp attach-agent $tcp
  52. $ns add-agent-trace $tcp tcp
  53. $ns monitor-agent-trace $tcp
  54. $tcp tracevar cwnd_
  55. $tcp tracevar ssthresh_
  56. ### CBR traffic between (n1 & n6) and (n2 & n7)
  57. set cbr0 [new Agent/CBR]
  58. $ns attach-agent $n1 $cbr0
  59. $cbr0 set fid_ 1
  60. $cbr0 set packetSize_ 500
  61. $cbr0 set interval_ 0.01
  62. set null0 [new Agent/CBR]
  63. $ns attach-agent $n6 $null0
  64. $ns connect $cbr0 $null0
  65. set cbr1 [new Agent/CBR]
  66. $ns attach-agent $n2 $cbr1
  67. $cbr1 set fid_ 1
  68. $cbr1 set packetSize_ 1000
  69. $cbr1 set interval_ 0.02
  70. set null1 [new Agent/CBR]
  71. $ns attach-agent $n7 $null1
  72. $ns connect $cbr1 $null1 
  73. proc finish {} {
  74.         global ns
  75.         $ns flush-trace
  76.         puts "filtering..."
  77.         exec tclsh ../bin/namfilter.tcl C3-slow-start.nam
  78.         puts "running nam..."
  79.         exec nam C3-slow-start.nam &
  80.         exit 0
  81. }
  82. ### set operations
  83. $ns at 0.05 "$cbr0 start"
  84. $ns at 2.3 "$cbr0 stop" 
  85. $ns at 0.1 "$cbr1 start"
  86. $ns at 2.5 "$cbr1 stop"
  87. $ns at 0.5 "$ftp start"
  88. $ns at 2.5 "$ftp stop"
  89. $ns at 2.7 "finish"
  90. ### add annotations
  91. $ns at 0.05 "$ns trace-annotate "CBR-1 starts""
  92. $ns at 0.1 "$ns trace-annotate "CBR-2 starts""
  93. $ns at 0.5 "$ns trace-annotate "TCP starts""
  94. $ns at 2.55 "$ns trace-annotate "FTP stops""
  95. $ns run