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

通讯编程

开发平台:

Visual C++

  1. # sliding window protocol in normal situation
  2. # features : labeling, annotation, nam-graph, and window size monitoring
  3. set ns [new Simulator]
  4. $ns color 1 red
  5. #$ns trace-all [open B3-sliding-color.tr w]
  6. #$ns namtrace-all [open B3-sliding-color.nam w]
  7.         foreach i "s1 s2 r1 r2 s3 s4" {
  8.                set node_($i) [$ns node]
  9.         }
  10.         $node_(s2) color "red"
  11.         $node_(s4) color "red"
  12.         $node_(r1) color "blue"
  13.         $node_(r2) color "blue"
  14. $node_(r1) shape "rectangular"
  15.         $node_(r2) shape "rectangular"
  16.         $ns at 0.0 "$node_(s1) label Sliding-W-sender"
  17.         $ns at 0.0 "$node_(s2) label CBR-sender"
  18.         $ns at 0.0 "$node_(s3) label Sliding-W-receiver"
  19.         $ns at 0.0 "$node_(s4) label CBR-receiver"
  20. $ns duplex-link $node_(s1) $node_(r1) 0.5Mb 50ms DropTail
  21.         $ns duplex-link $node_(s2) $node_(r1) 0.5Mb 50ms DropTail
  22.         $ns duplex-link $node_(r1) $node_(r2) 0.5Mb 50ms DropTail
  23.         $ns duplex-link $node_(r2) $node_(s3) 0.5Mb 50ms DropTail
  24.         $ns duplex-link $node_(r2) $node_(s4) 0.5Mb 50ms DropTail
  25. $ns queue-limit $node_(r1) $node_(r2) 100
  26.         $ns queue-limit $node_(r2) $node_(r1) 100
  27. $ns duplex-link-op $node_(s1) $node_(r1) orient right-down
  28.         $ns duplex-link-op $node_(s2) $node_(r1) orient right-up
  29.         $ns duplex-link-op $node_(r1) $node_(r2) orient right
  30.         $ns duplex-link-op $node_(r2) $node_(s3) orient right-up
  31.         $ns duplex-link-op $node_(r2) $node_(s4) orient right-down
  32.         $ns duplex-link-op $node_(r1) $node_(r2) queuePos 0.5
  33.         $ns duplex-link-op $node_(r2) $node_(r1) queuePos 0.5
  34. Agent/TCP set nam_tracevar_ true
  35. # setting sliding window size to 4
  36. Agent/TCP set maxcwnd_ 4
  37. ### sliding-window protocol between s1 and s3 (Black)
  38. #set sliding [new Agent/TCP/SlidingWindow]
  39. set sliding [new Agent/TCP]
  40. $sliding set fid_ 0
  41. $ns attach-agent $node_(s1) $sliding
  42. #set sink [new Agent/TCPSink/SlidingWindowSink]
  43. set sink [new Agent/TCPSink]
  44. $ns attach-agent $node_(s3) $sink
  45. $ns connect $sliding $sink
  46. set ftp [new Application/FTP]
  47. $ftp attach-agent $sliding
  48. $ns add-agent-trace $sliding tcp
  49. $ns monitor-agent-trace $sliding
  50. $sliding tracevar cwnd_
  51. ### CBR traffic between s2 and s4 (Red)
  52. set cbr [$ns create-connection CBR $node_(s2) Null $node_(s4) 1]
  53. $cbr set packetSize_ 500
  54. $cbr set interval_ 0.05
  55. $cbr set class_ 1
  56. proc finish {} {
  57. global ns
  58. $ns flush-trace
  59. # puts "filtering..."
  60. # exec tclsh ../bin/namfilter.tcl B3-sliding-color.nam
  61. puts "running nam..."
  62. exec nam B3-sliding-color.nam &
  63. exit 0
  64. }
  65. ### set operations
  66. $ns at 0.1 "$ftp start"
  67. $ns at 1.7 "$ftp stop"
  68. $ns at 0.1 "$cbr start"
  69. $ns at 1.7 "$cbr stop"
  70. $ns at 2.0 "finish"
  71. ### add annotations
  72. $ns at 0.0 "$ns trace-annotate "Normal operation of <Sliding Window> with window size, 4"" 
  73. $ns at 0.1 "$ns trace-annotate "FTP starts at 0.1""
  74. $ns at 0.1 "$ns trace-annotate "CBR starts at 0.1""
  75. $ns at 0.11 "$ns trace-annotate "Send Packet_0,1,2,3 : window size, 4""
  76. $ns at 0.32 "$ns trace-annotate "Ack_0,1,2,3""
  77. $ns at 0.46 "$ns trace-annotate "Send Packet_4,5,6,7 : window size, 4"" 
  78. $ns at 0.66 "$ns trace-annotate "Ack_4,5,6,7""
  79. $ns at 0.81 "$ns trace-annotate "Send Packet_8,9,10,11   : window size, 4""
  80. $ns at 1.00 "$ns trace-annotate "Ack_8,9,10,11""
  81. $ns at 1.16 "$ns trace-annotate "Send Packet_12,13,14,15  : window size, 4"" 
  82. $ns at 1.35 "$ns trace-annotate "Ack_12,13,14,15""
  83. $ns at 1.50 "$ns trace-annotate "Send Packet_16,17,18,19   : window size, 4""
  84. $ns at 1.71 "$ns trace-annotate "Ack_16,17,18,19""
  85. $ns at 1.8 "$ns trace-annotate "FTP stops at 1.7""
  86. $ns at 1.8 "$ns trace-annotate "CBR stops at 1.7""
  87. $ns run