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

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (c) Xerox Corporation 1997. All rights reserved.
  3. #
  4. # This program is free software; you can redistribute it and/or modify it
  5. # under the terms of the GNU General Public License as published by the
  6. # Free Software Foundation; either version 2 of the License, or (at your
  7. # option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful, but
  10. # WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. # General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU General Public License along
  15. # with this program; if not, write to the Free Software Foundation, Inc.,
  16. # 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  17. #
  18. # Linking this file statically or dynamically with other modules is making
  19. # a combined work based on this file.  Thus, the terms and conditions of
  20. # the GNU General Public License cover the whole combination.
  21. #
  22. # In addition, as a special exception, the copyright holders of this file
  23. # give you permission to combine this file with free software programs or
  24. # libraries that are released under the GNU LGPL and with code included in
  25. # the standard release of ns-2 under the Apache 2.0 license or under
  26. # otherwise-compatible licenses with advertising requirements (or modified
  27. # versions of such code, with unchanged license).  You may copy and
  28. # distribute such a system following the terms of the GNU GPL for this
  29. # file and the licenses of the other code concerned, provided that you
  30. # include the source code of that other code when and as the GNU GPL
  31. # requires distribution of source code.
  32. #
  33. # Note that people who make modified versions of this file are not
  34. # obligated to grant this special exception for their modified versions;
  35. # it is their choice whether to do so.  The GNU General Public License
  36. # gives permission to release a modified version without this exception;
  37. # this exception also makes it possible to release a modified version
  38. # which carries forward this exception.
  39. #
  40. # This example script demonstrates using the token bucket filter as a
  41. # traffic-shaper. 
  42. # There are 2 identical source models(exponential on/off) connected to a common
  43. # receiver. One of the sources is connected via a tbf whereas the other one is 
  44. # connected directly.The tbf parameters are such that they shape the exponential
  45. # on/off source to look like a cbr-like source.
  46. set ns [new Simulator]
  47. set n0 [$ns node]
  48. set n1 [$ns node]
  49. set n2 [$ns node]
  50. set f [open out.tr w]
  51. $ns trace-all $f
  52. set nf [open out.nam w]
  53. $ns namtrace-all $nf
  54. set trace_flow 1
  55. $ns color 0 red
  56. $ns color 1 blue
  57. $ns duplex-link $n2 $n1 0.2Mbps 100ms DropTail
  58. $ns duplex-link $n0 $n1 0.2Mbps 100ms DropTail
  59. $ns duplex-link-op $n2 $n1 orient right-down
  60. $ns duplex-link-op $n0 $n1 orient right-up
  61. set exp1 [new Application/Traffic/Exponential]
  62. $exp1 set packetSize_ 128
  63. $exp1 set burst_time_ [expr 20.0/64]
  64. $exp1 set idle_time_ 325ms
  65. $exp1 set rate_ 65.536k
  66. set a [new Agent/UDP]
  67. $a set fid_ 0
  68. $a set rate_ 32.768k
  69. $a set bucket_ 1024
  70. $exp1 attach-agent $a
  71. set tbf [new TBF]
  72. $tbf set bucket_ [$a set bucket_]
  73. $tbf set rate_ [$a set rate_]
  74. $tbf set qlen_  100
  75. $ns attach-tbf-agent $n0 $a $tbf
  76. set rcvr [new Agent/SAack]
  77. $ns attach-agent $n1 $rcvr
  78. $ns connect $a $rcvr
  79. set exp2 [new Application/Traffic/Exponential]
  80. $exp2 set packetSize_ 128
  81. $exp2 set burst_time_ [expr 20.0/64]
  82. $exp2 set idle_time_ 325ms
  83. $exp2 set rate_ 65.536k
  84. set a2 [new Agent/UDP]
  85. $a2 set fid_ 1
  86. $exp2 attach-agent $a2
  87. $ns attach-agent $n2 $a2
  88. $ns connect $a2 $rcvr
  89. $ns at 0.0 "$exp1 start;$exp2 start"
  90. $ns at 20.0 "$exp1 stop;$exp2 stop;close $f;close $nf;exec nam out.nam &;exit 0"
  91. $ns run