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

通讯编程

开发平台:

Visual C++

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