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

通讯编程

开发平台:

Visual C++

  1. # It will show how TCP adjusts its window size by multiplicative decrease
  2. # features : labeling, annotation, nam-graph, and window size monitoring
  3. #
  4. # n0 --- n1 -------------- n2 --- n3
  5. #
  6. set ns [new Simulator]
  7. $ns trace-all [open fast-retransmit.tr w]
  8. $ns namtrace-all [open fast-retransmit.nam w]
  9. ### build topology with 4 nodes
  10.         foreach i " 0 1 2 3 " {
  11.                 set n$i [$ns node]
  12.         }
  13.         $ns at 0.0 "$n0 label TCP"
  14.         $ns at 0.0 "$n3 label TCP"
  15.         $ns duplex-link $n0 $n1 5Mb 20ms DropTail
  16.         $ns duplex-link $n1 $n2 0.5Mb 100ms DropTail
  17.         $ns duplex-link $n2 $n3 5Mb 20ms DropTail
  18.         $ns queue-limit $n1 $n2 5
  19.         $ns duplex-link-op $n0 $n1 orient right
  20.         $ns duplex-link-op $n1 $n2 orient right     
  21.         $ns duplex-link-op $n2 $n3 orient right     
  22.         $ns duplex-link-op $n1 $n2 queuePos 0.5
  23. ### set TCP variables
  24. Agent/TCP set nam_tracevar_ true        
  25. Agent/TCP set window_ 20
  26. Agent/TCP set ssthresh_ 20
  27. ### TCP between n0 and n3 (Black)
  28. set tcp [new Agent/TCP/Reno]
  29. $ns attach-agent $n0 $tcp
  30.         
  31. set sink [new Agent/TCPSink]
  32. $ns attach-agent $n3 $sink
  33. $ns connect $tcp $sink
  34. set ftp [new Application/FTP]
  35. $ftp attach-agent $tcp
  36. $ns add-agent-trace $tcp tcp
  37. $ns monitor-agent-trace $tcp
  38. $tcp tracevar cwnd_
  39. $tcp tracevar ssthresh_
  40. proc finish {} {
  41.         global ns
  42.         $ns flush-trace
  43.         puts "filtering..."
  44.         exec tclsh ../bin/namfilter.tcl fast-retransmit.nam
  45.         puts "running nam..."
  46.         exec nam fast-retransmit.nam &
  47.         exit 0
  48. }
  49. ### set operations
  50. $ns at 0.1 "$ftp start"
  51. $ns at 5.0 "$ftp stop"
  52. $ns at 5.1 "finish"
  53. ### add annotations
  54. $ns at 0.0 "$ns trace-annotate "TCP with multiplicative decrease"" 
  55. $ns run