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

通讯编程

开发平台:

Visual C++

  1. # A simple tcp example that uses event tracing
  2. #source ../lib/ns-default.tcl
  3. Simulator set eventTraceAll_ 0
  4. set ns [new Simulator]
  5. #
  6. #
  7. # Create a simple six node topology:
  8. #
  9. #        s1                 s3
  10. #                          /
  11. # 10Mb,2ms   1.5Mb,20ms   / 10Mb,4ms
  12. #           r1 --------- r2
  13. # 10Mb,3ms /                10Mb,5ms
  14. #         /                 
  15. #        s2                 s4
  16. #
  17. proc build_topology { ns } {
  18.     global node_
  19.     set node_(s1) [$ns node]
  20.     set node_(s2) [$ns node]
  21.     set node_(r1) [$ns node]
  22.     set node_(r2) [$ns node]
  23.     set node_(s3) [$ns node]
  24.     set node_(s4) [$ns node]
  25.     $ns duplex-link $node_(s1) $node_(r1) 10Mb 2ms DropTail
  26.     $ns duplex-link $node_(s2) $node_(r1) 10Mb 2ms DropTail
  27.     $ns duplex-link $node_(r1) $node_(r2) 1.5Mb 20ms RED
  28.     $ns queue-limit $node_(r1) $node_(r2) 10
  29.     $ns queue-limit $node_(r2) $node_(r1) 10
  30.     $ns duplex-link $node_(s3) $node_(r2) 10Mb 4ms DropTail
  31.     $ns duplex-link $node_(s4) $node_(r2) 10Mb 5ms DropTail
  32.  
  33.     $ns duplex-link-op $node_(r1) $node_(r2) queuePos 0.5
  34.     $ns duplex-link-op $node_(r2) $node_(r1) queuePos 0.5
  35.  
  36. }
  37. set f [open out.tr w]
  38. $ns trace-all $f
  39. set nf [open out.nam w]
  40. $ns namtrace-all $nf
  41. #should add eventrace line after trace-all since trace-all file is used as defualt by eventracing.
  42. #set file [open et.tr w]
  43. $ns eventtrace-all
  44. #$ns eventtrace-all $file
  45. #$ns eventtrace-some tcp srm etc -future work
  46. build_topology $ns
  47. set redq [[$ns link $node_(r1) $node_(r2)] queue]
  48. #$redq set setbit_ true
  49. # Use nam trace format for TCP variable trace 
  50. #Agent/TCP set nam_tracevar_ true
  51. set tcp1 [$ns create-connection TCP/Sack1 $node_(s1) TCPSink/Sack1 $node_(s3) 0]
  52. $tcp1 set window_ 30
  53. set tcp2 [$ns create-connection TCP/Reno $node_(s4) TCPSink $node_(s2) 1]
  54. #$tcp1 set ecn_ 1
  55. set ftp1 [$tcp1 attach-app FTP]   
  56. set ftp2 [$tcp2 attach-app FTP]
  57. #$ns add-agent-trace $tcp1 tcp1
  58. #$ns monitor-agent-trace $tcp1
  59. #$tcp1 tracevar cwnd_
  60. $ns at 0.0 "$ftp1 start"
  61. $ns at 1.0 "$ftp2 start"
  62. $ns at 7.0 "finish"
  63. proc finish {} {
  64.         global ns f nf
  65.         $ns flush-trace
  66.         close $f
  67.         close $nf
  68.  
  69.         #XXX
  70.         puts "Filtering ..."
  71. exec tclsh8.0 ../nam/bin/namfilter.tcl out.nam
  72.         puts "running nam..."
  73.         exec nam out.nam &
  74.         exit 0
  75. }
  76.  
  77. $ns run