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

通讯编程

开发平台:

Visual C++

  1. Class Traffic/Mix -superclass TestSuite
  2. TestSuite instproc trafficMix {} {
  3.     $self instvar node_
  4.     
  5.     set fid 1
  6.     for {set i 0} {$i< 3} {incr i} {
  7. for {set j 0} {$j< 3} {incr j} {
  8. #$self new_Tcp $startTime $src $dst $rwnd $fid $dump $pktSize $type $maxPkts 
  9. $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d$j) 50 $fid 1 1000 sack 0
  10. incr fid
  11. }
  12.     }
  13.     #50% of the link bandwidth
  14.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .0016 $fid 0   
  15.     incr fid
  16. #    $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 500 .0008 $fid 0   
  17. #    incr fid
  18.     #45% of the link
  19. #    $self new_Cbr [$self rnd 10] $node_(s1) $node_(d1) 1000 .0018 $fid 0   
  20. #    incr fid
  21.     #40% of the link
  22. #    $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 1000 .0021 $fid 0   
  23. #    incr fid
  24.     #35% of the link bandwidth
  25. #    $self new_Cbr [$self rnd 10] $node_(s2) $node_(s5) 1000 .0023 $fid 0   
  26. #    incr fid 
  27.     #30% of the link bandwidth
  28.     $self new_Cbr [$self rnd 10] $node_(s1) $node_(d1) 1000  .0026 $fid 0   
  29.     incr fid 
  30.     #20% of the link bandwidth
  31. #     $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 1000 .004 $fid 0   
  32. #     incr fid
  33.     
  34. #     $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 1000 .004 $fid 0   
  35. #     incr fid
  36.     
  37. #     $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 500 .002 $fid 0   
  38. #     incr fid
  39. #     $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 500 .002 $fid 0   
  40. #     incr fid
  41.    
  42.     #15% of the link bandwidth
  43. #     $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 1000 .0052 $fid 0   
  44. #     incr fid
  45. #     $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 1000 .0052 $fid 0   
  46. #     incr fid
  47. #    $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 1000 .0052 $fid 0   
  48. #    incr fid
  49.   
  50.   
  51.     #10% of the link bandwidth
  52. $self new_Cbr [$self rnd 10] $node_(s2) $node_(d2) 1000 .008 $fid 0   
  53.     incr fid
  54. #     $self new_Cbr [$self rnd 10] $node_(s3) $node_(s6) 1000 .008 $fid 0   
  55. #     incr fid
  56. #     $self new_Cbr [$self rnd 10] $node_(s3) $node_(s6) 1000 .008 $fid 0   
  57. #     incr fid
  58. #     $self new_Cbr [$self rnd 10] $node_(s3) $node_(s6) 1000 .008 $fid 0   
  59. #     incr fid
  60. #     $self new_Cbr [$self rnd 10] $node_(s3) $node_(s6) 1000 .008 $fid 0   
  61. #     incr fid
  62. #     $self new_Cbr [$self rnd 10] $node_(s3) $node_(s6) 1000 .008 $fid 0   
  63. #     incr fid
  64.     
  65.     #2% of link bandwidth
  66. #    $self new_Cbr [$self rnd 10] $node_(s3) $node_(s6) 1000 .04 $fid 0   
  67. #    incr fid
  68.     
  69.     #4% of link bandwidth
  70. #    $self new_Cbr [$self rnd 10] $node_(s3) $node_(s6) 1000 .02 $fid 0   
  71. #    incr fid
  72.     #varying cbr 0.25*f(R,p) -> 4*f(R,p)
  73. #     $self new_VaryingCbr [$self rnd 10] $node_(s2) $node_(d2) 1000 0.02262742 $fid 0   
  74. }
  75. Class Traffic/Varying -superclass TestSuite
  76. TestSuite instproc trafficVarying {} {
  77.     $self instvar node_
  78.     
  79.     set fid 1
  80.     for {set i 0} {$i< 3} {incr i} {
  81. for {set j 0} {$j< 3} {incr j} {
  82. #$self new_Tcp $startTime $src $dst $rwnd $fid $dump $pktSize $type $maxPkts 
  83. $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d$j) 50 $fid 1 1000 sack 0
  84. incr fid
  85. }
  86.     }
  87.     #varying cbr 0.25Mbps -> 4Mbps
  88. $self new_VaryingCbr [$self rnd 10] $node_(s2) $node_(d2) 1000 0.032 $fid 0   
  89. }
  90. Class Traffic/AllTCP -superclass TestSuite
  91. TestSuite instproc trafficAllTCP {} {
  92.     $self instvar node_
  93.     
  94.     set fid 1
  95.     for {set i 0} {$i< 4} {incr i} {
  96. for {set j 0} {$j< 2} {incr j} {
  97. #$self new_Tcp $startTime $src $dst $rwnd $fid $dump $pktSize $type $maxPkts 
  98. $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d$j) 50 $fid 1 1000 sack 0
  99. incr fid
  100. if {$i == 3 } {
  101. for {set k 0} {$k < 3} {incr k} {
  102. $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d$j) 50 $fid 1 1000 sack 0
  103. incr fid
  104. }
  105. }
  106. }
  107. }
  108. }
  109. Class Traffic/AllUDP -superclass TestSuite
  110. TestSuite instproc trafficAllUDP {} {
  111.     $self instvar node_ 
  112.     
  113.     set fid 1
  114.     
  115.     #1% of the link 
  116.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .08 $fid 0   
  117.     incr fid 
  118.     #5% of the link 
  119.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .016 $fid 0   
  120.     incr fid 
  121.     
  122.     #10% of the link bandwidth
  123.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .008 $fid 0   
  124.     incr fid 
  125.     
  126.     #15% of the link bandwidth
  127.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .0053 $fid 0   
  128.     incr fid
  129.     #20% of the link bandwidth
  130.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .004 $fid 0   
  131.     incr fid 
  132.     
  133.     #25% of the link bandwidth
  134.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .0032 $fid 0   
  135.     incr fid 
  136.     
  137.     #30% of the link bandwidth
  138.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .0026 $fid 0   
  139.     incr fid 
  140.     
  141.     #35% of the link bandwidth
  142.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .0023 $fid 0   
  143.     incr fid 
  144.     #40% of the link
  145.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .002 $fid 0   
  146.     incr fid
  147.     #45% of the link
  148.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .0018 $fid 0   
  149.     incr fid
  150.     #50% of the link
  151.     $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .0016 $fid 0   
  152.     incr fid
  153. }
  154. Class Traffic/TestIdent -superclass TestSuite
  155. TestSuite instproc trafficTestIdent {} {
  156.     $self instvar node_  topo_
  157.     $topo_ instvar redpdq_
  158.     global traf_para1_ target_rtt_ traf_para2_
  159.     set fid 1
  160.     switch -exact $traf_para1_ {
  161. "tcp" {
  162.     for {set i 0} {$i< 5} {incr i} {
  163. #$self new_Tcp $startTime $src $dst $rwnd $fid $dump $pktSize $type $maxPkts 
  164. $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d0) 50 $fid 1 1000 sack 0
  165. incr fid
  166.     }
  167. }
  168. "cbr" { 
  169.     set p [$redpdq_ set P_testFRp_]
  170.     set frp [expr sqrt(1.5)/($target_rtt_*sqrt($p))]
  171.     set rate [expr {1.0/($traf_para2_*$frp)}]
  172.     
  173.     for {set i 0} {$i< 5} {incr i} {
  174. $self new_Cbr [$self rnd 1] $node_(s$i) $node_(d0) 1000 $rate $fid 0   
  175. incr fid
  176.     }
  177. }
  178. default {
  179.     puts stderr "Unknown Traffic Type"
  180.     exit 1
  181. }
  182.     }
  183. }
  184. Class Traffic/Web -superclass TestSuite
  185. TestSuite instproc trafficWeb {} {
  186.     $self instvar node_
  187.     
  188.     Agent/TCP set packetSize_ 500
  189.     Agent/UDP set packetSize_ 500
  190.     
  191.     PagePool/WebTraf set TCPTYPE_ Sack1
  192.     PagePool/WebTraf set TCPSINKTYPE_ TCPSink/Sack1
  193.     PagePool/WebTraf set FID_ASSIGNING_MODE_ 1
  194. PagePool/WebTraf set VERBOSE_ 1
  195.    set fid 1
  196.     
  197.     for {set i 0} {$i<5} {incr i} {
  198. #$self new_Tcp $startTime $src $dst $rwnd $fid $dump $pktSize $type $maxPkts
  199. $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d$i) 50 $fid 1 500 sack 0
  200. incr fid
  201. $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d[expr ($i+1)%5]) 50 $fid 1 500 sack 0
  202. incr fid
  203. #reverse
  204. # $self new_Tcp [$self rnd 10] $node_(s$j) $node_(s$i) 50 $fid 0 1000 sack 0
  205. # incr fid
  206.     }
  207.     #20% of the link bandwidth
  208.     $self new_Cbr [$self rnd 10] $node_(s3) $node_(d3) 500 .002 $fid 0   
  209.     incr fid 
  210.     
  211.     set pool [new PagePool/WebTraf]
  212.     $pool instvar maxFid_
  213.     set maxFid_ $fid
  214.     #something like this should have been there 
  215.     # instead of the ugly hack I put in place in tcl/webcache/webtraf.tcl
  216.     # WebPage set LASTOBJ_ 10
  217.     $pool set-num-client 5
  218.     $pool set-num-server 5
  219.     for {set i 0} {$i < 5} {incr i} {
  220. $pool set-server $i $node_(s$i)
  221.     }
  222.     for {set i 0} {$i < 5} {incr i} {
  223. $pool set-client $i $node_(d$i)
  224.     }
  225.     set numSession 50
  226.     $pool set-num-session $numSession
  227.     
  228.     set interSession [new RandomVariable/Exponential]
  229.     $interSession set avg_ 1
  230.     
  231.     set sessionSize [new RandomVariable/Constant]
  232.     $sessionSize set val_ 100
  233.     
  234.     set launchTime 0
  235.     for {set i 0} {$i < $numSession} {incr i} {
  236.     #number of pages in a session
  237.     set numPage [$sessionSize value]
  238.     
  239.     #time between requesting various pages
  240.     set interPage [new RandomVariable/Exponential]
  241.     $interPage set avg_ 10
  242.     #set interPage [new RandomVariable/Constant]
  243.     #$interPage set val_ 10
  244.     
  245.     # number of objects in a page
  246.     set pageSize [new RandomVariable/Exponential]
  247.     $pageSize set avg_ 10
  248.     #set pageSize [new RandomVariable/Constant]
  249.     #$pageSize set val_ 10
  250.     
  251.     # the time between requesting various objects
  252.     set interObj [new RandomVariable/Exponential]
  253.     $interObj set avg_ 0.01
  254.     #set interObj [new RandomVariable/Constant]
  255.     #$interObj set val_ 0.01
  256.     
  257.     #the size of objects being requested
  258.     set objSize [new RandomVariable/ParetoII]
  259.     $objSize set avg_ 24
  260.     $objSize set shape_ 1.2
  261.     #set objSize [new RandomVariable/Constant]
  262.     #$objSize set val_ 24
  263.     
  264.     
  265.     $pool create-session $i $numPage [expr $launchTime + 0.1] 
  266. $interPage $pageSize $interObj $objSize
  267.     set launchTime [expr $launchTime + [$interSession value]]
  268.     
  269.     }
  270. }
  271. Class Traffic/Multi -superclass TestSuite
  272. TestSuite instproc trafficMulti {noLinks_} {
  273. $self instvar node_ 
  274. set fid 1
  275. for {set link 0} {$link < $noLinks_} {incr link} {
  276.     for {set i 0} {$i < 2} {incr i} {
  277. $self new_Tcp [$self rnd 10] $node_(s$link) $node_(d$link) 50 $fid 1 1000 sack 0
  278. incr fid
  279.   $self new_Tcp [$self rnd 10] $node_(s1$link) $node_(d$link) 50 $fid 1 1000 sack 0
  280.   incr fid
  281.   $self new_Tcp [$self rnd 10] $node_(s2$link) $node_(d$link) 50 $fid 1 1000 sack 0
  282.   incr fid
  283. $self new_Tcp [$self rnd 10] $node_(s3$link) $node_(d$link) 50 $fid 1 1000 sack 0
  284. incr fid
  285. }
  286.       for {set i 0} {$i < 2} {incr i} {
  287. #4.0 Mbps
  288. $self new_Cbr [$self rnd 10] $node_(s$link) $node_(d$link) 1000 .0020 $fid 0   
  289. incr fid
  290.       }
  291. }
  292. global traf_para1_
  293. switch -exact $traf_para1_ {
  294. "cbr" {
  295. #1.0 Mbps
  296. $self new_Cbr [$self rnd 10] $node_(source) $node_(sink) 1000 .008 $fid 0 
  297. incr fid
  298. }
  299. "tcp" {
  300. $self new_Tcp [$self rnd 10] $node_(source) $node_(sink) 50 $fid 1 1000 sack 0
  301. incr fid
  302. }
  303. default {
  304. puts stderr "Unknown flow type"
  305. exit 1
  306. }
  307. }
  308. }
  309. Class Traffic/TFRC -superclass TestSuite
  310. TestSuite instproc trafficTFRC {} {
  311.     $self instvar node_
  312. global traf_para1_
  313. set noFlows [expr $traf_para1_/4]
  314. if {$traf_para1_ <=0 || [expr $noFlows*4] != $traf_para1_} {
  315. puts stderr "Invalid number of flows $traf_para1_ specified. Has to be a multiple of 4"
  316. set fid 1
  317.     for {set i 0} {$i<2} {incr i} {
  318. for {set j 0} {$j < $noFlows} {incr j} {
  319. #new_TFRC startTime source dest fid pktSize
  320. $self new_TFRC [$self rnd 10] $node_(s$i) $node_(d$j) $fid 1000 
  321. incr fid
  322. $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d$j) 50 $fid 1 1000 sack 0
  323. incr fid
  324. }
  325.     }
  326. }
  327. Class Traffic/TestFRp -superclass TestSuite
  328. TestSuite instproc trafficTestFRp {} {
  329.     $self instvar node_ topo_
  330.     $topo_ instvar redpdq_
  331.     set fid 1
  332.     global target_rtt_ traf_para1_ traf_para2_    
  333.     
  334.     switch -exact $traf_para1_ { 
  335. "tcp" { 
  336.     $self new_Tcp [$self rnd 10] $node_(s0) $node_(d0) 50 $fid 1 1000 sack 0
  337.     incr fid
  338. "cbr" {
  339.     set p [$redpdq_ set P_testFRp_]
  340.     set frp [expr sqrt(1.5)/($target_rtt_*sqrt($p))]
  341.     set rate [expr {1.0/($traf_para2_*$frp)}]
  342.     
  343.     $self new_Cbr [$self rnd 1] $node_(s0) $node_(d0) 1000 $rate $fid 0   
  344.     incr fid
  345. }
  346. default {
  347.     puts stderr "Unknown Traffic Type"
  348.     exit 1
  349. }
  350.     }
  351. }
  352. Class Traffic/Response -superclass TestSuite
  353. TestSuite instproc trafficResponse {} {
  354.     $self instvar node_ topo_
  355.     $topo_ instvar redpdq_
  356.     set fid 1
  357.     global target_rtt_
  358.     set p [$redpdq_ set P_testFRp_]
  359.     set frp [expr sqrt(1.5)/($target_rtt_*sqrt($p))]
  360.     set rate [expr {1.0/(0.25*$frp)}]
  361.     #varying cbr 30->15->7.5->15->30. changes every 50s starting at 30s.
  362.     $self new_VaryingCbr [$self rnd 10] $node_(s0) $node_(d0) 1000 $rate $fid 0 
  363.     incr fid
  364.     for {set i 0} {$i < [expr $traf_para1_ - 1]} {incr i} {
  365. $self new_VaryingCbr [$self rnd 10] $node_(s0) $node_(d0) 1000 [expr $rate*(2+2*0)] $fid 0 
  366. incr fid
  367.     }
  368. }
  369. Class Traffic/PktsVsBytes -superclass TestSuite
  370. TestSuite instproc trafficPktsVsBytes {} {
  371.     $self instvar node_
  372.     global traf_para1_
  373.     set noFlows [expr $traf_para1_/4]
  374.     if {$traf_para1_ <=0 || [expr $noFlows*4] != $traf_para1_} {
  375. puts stderr "Invalid number of flows $traf_para1_ specified. Has to be a multiple of 4"
  376.     } 
  377.     set fid 1
  378.     for {set i 0} {$i < 2} {incr i} { 
  379. for {set j 0} {$j < $noFlows} {incr j} {
  380.     
  381.     $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d$j) 50 $fid 1 1000 sack 0
  382.     incr fid
  383.     
  384.     $self new_Tcp [$self rnd 10] $node_(s$i) $node_(d$j) 50 $fid 1 500 sack 0
  385.     incr fid
  386.     
  387. }
  388.     }
  389.     
  390.     
  391.     
  392.     #20% of the link bandwidth
  393. #    $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 1000 .002 $fid 0   
  394. #    incr fid 
  395.     
  396.     #20% of the link bandwidth
  397. #    $self new_Cbr [$self rnd 10] $node_(s0) $node_(d0) 500 .001 $fid 0   
  398. #    incr fid 
  399.            
  400. }