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

通讯编程

开发平台:

Visual C++

  1. ##
  2. ## simple example to demonstrate use of traffic generation modules
  3. ##
  4. ## topology consists of 6 nodes.  4 traffic sources are attached
  5. ## to each of 4 'access' nodes.  These nodes have links to a single
  6. ## 'concentrator' node, which is connected by the bottleneck link
  7. ## to the destination node.
  8. ## 
  9. ## there are 4 source agents that generate packets
  10. ## 1 generates traffic based on an Exponential On/Off distribution
  11. ## 1 generates traffic based on a Pareto On/Off distribution
  12. ## 2 generate traffic using the trace file 'example-trace'.
  13. ##
  14. set stoptime 10.0
  15. set plottime 11.0
  16. set ns [new Simulator]
  17. set n0 [$ns node]
  18. set n1 [$ns node]
  19. set n2 [$ns node]
  20. set n3 [$ns node]
  21. set n4 [$ns node]
  22. set n5 [$ns node]
  23. set f [open out.tr w]
  24. $ns trace-all $f
  25. set nf [open out.nam w]
  26. $ns namtrace-all $nf
  27. $ns duplex-link $n0 $n1 1.5Mb 10ms DropTail
  28. $ns duplex-link $n0 $n2 10Mb 5ms DropTail
  29. $ns duplex-link $n0 $n3 10Mb 5ms DropTail
  30. $ns duplex-link $n0 $n4 10Mb 5ms DropTail
  31. $ns duplex-link $n0 $n5 10Mb 5ms DropTail
  32. $ns duplex-link-op $n0 $n1 orient right
  33. $ns duplex-link-op $n0 $n2 orient left-up
  34. $ns duplex-link-op $n0 $n3 orient left
  35. $ns duplex-link-op $n0 $n4 orient left-down
  36. $ns duplex-link-op $n0 $n5 orient down
  37. $ns duplex-link-op $n0 $n1 queuePos 0.5
  38. #$ns trace-queue $n0 $n1 $f
  39. ## set up the exponential on/off source, parameterized by packet size,
  40. ## ave on time, ave off time and peak rate
  41. set s1 [new Agent/UDP]
  42. $ns attach-agent $n2 $s1
  43. set null1 [new Agent/Null]
  44. $ns attach-agent $n1 $null1
  45. $ns connect $s1 $null1
  46. set exp1 [new Application/Traffic/Exponential]
  47. $exp1 set packetSize_ 210
  48. $exp1 set burst_time_ 500ms
  49. $exp1 set idle_time_ 500ms
  50. $exp1 set rate_ 100k
  51. $exp1 attach-agent $s1
  52. ## set up the pareto on/off source, parameterized by packet size,
  53. ## ave on time, ave  off time, peak rate and pareto shape parameter
  54. set s2 [new Agent/UDP]
  55. $ns attach-agent $n3 $s2
  56. set null2 [new Agent/Null]
  57. $ns attach-agent $n1 $null2
  58. $ns connect $s2 $null2
  59. set pareto2 [new Application/Traffic/Pareto]
  60. $pareto2 set packetSize_ 210
  61. $pareto2 set burst_time_ 500ms
  62. $pareto2 set idle_time_ 500ms
  63. $pareto2 set rate_ 200k
  64. $pareto2 set shape_ 1.5
  65. $pareto2 attach-agent $s2
  66. ## initialize a trace file
  67. set tfile [new Tracefile]
  68. $tfile filename example-trace
  69. ## set up a source that uses the trace file
  70. set s3 [new Agent/UDP]
  71. $ns attach-agent $n4 $s3
  72. set null3 [new Agent/Null]
  73. $ns attach-agent $n1 $null3
  74. $ns connect $s3 $null3
  75. set tfile [new Tracefile]
  76. #$tfile filename /tmp/example-trace
  77. $tfile filename example-trace
  78. set trace3 [new Application/Traffic/Trace]
  79. $trace3 attach-tracefile $tfile
  80. $trace3 attach-agent $s3
  81. ## attach a 2nd source to the same trace file
  82. set s4 [new Agent/UDP]
  83. $ns attach-agent $n5 $s4
  84. set null4 [new Agent/Null]
  85. $ns attach-agent $n1 $null4
  86. $ns connect $s4 $null4
  87. set trace4 [new Application/Traffic/Trace]
  88. $trace4 attach-tracefile $tfile
  89. $trace4 attach-agent $s4
  90. $ns at 1.0 "$exp1 start"
  91. $ns at 1.0 "$pareto2 start"
  92. $ns at 1.0 "$trace3 start"
  93. $ns at 1.0 "$trace4 start"
  94. $ns at $stoptime "$exp1 stop"
  95. $ns at $stoptime "$pareto2 stop"
  96. $ns at $stoptime "$trace3 stop"
  97. $ns at $stoptime "$trace4 stop"
  98. $ns at $plottime "close $f"
  99. $ns at $plottime "finish tg"
  100. proc finish file {
  101.  
  102.         set f [open temp.rands w]
  103.         puts $f "TitleText: $file"
  104.         puts $f "Device: Postscript"
  105.         exec rm -f temp.p1 temp.p2 temp.p3 temp.p4
  106.         exec touch temp.p1 temp.p2 temp.p3 temp.p4
  107.         #
  108.         #
  109. exec awk {
  110. {
  111. if (($1 == "+") && ($3 != 0) && ($9 == 2.0)) 
  112.      print $2, 2
  113. }
  114. } out.tr > temp.p1
  115. exec awk {
  116. {
  117. if (($1 == "+") && ($3 != 0) && ($9 == 3.0)) 
  118.      print $2, 3
  119. }
  120. } out.tr > temp.p2
  121. exec awk {
  122. {
  123. if (($1 == "+") && ($3 != 0) && ($9 == 4.0)) 
  124.      print $2, 4
  125. }
  126. } out.tr > temp.p3
  127. exec awk {
  128. {
  129. if (($1 == "+") && ($3 != 0) && ($9 == 5.0)) 
  130.      print $2, 5
  131. }
  132. } out.tr > temp.p4
  133. puts $f [format "n"ExpOnOff"]
  134. flush $f
  135. exec cat temp.p1 >@ $f
  136. flush $f
  137. puts $f [format "n"ParetoOnOff"]
  138. flush $f
  139. exec cat temp.p2 >@ $f
  140. flush $f
  141. puts $f [format "n"Trace1"]
  142. flush $f
  143. exec cat temp.p3 >@ $f
  144. flush $f
  145. puts $f [format "n"Trace2"]
  146. flush $f
  147. exec cat temp.p4 >@ $f
  148. flush $f
  149.         close $f
  150. exec rm -f temp.p1 temp.p2 temp.p3 temp.p4
  151.         exec xgraph -bb -tk -nl -m -x time -y "source node" temp.rands &
  152. puts "running nam..."
  153. exec nam out.nam &
  154. exec rm -f out.tr
  155. }
  156. $ns run
  157. exit 0