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

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (C) 1999 by USC/ISI
  3. # All rights reserved.                                            
  4. #                                                                
  5. # Redistribution and use in source and binary forms are permitted
  6. # provided that the above copyright notice and this paragraph are
  7. # duplicated in all such forms and that any documentation, advertising
  8. # materials, and other materials related to such distribution and use
  9. # acknowledge that the software was developed by the University of
  10. # Southern California, Information Sciences Institute.  The name of the
  11. # University may not be used to endorse or promote products derived from
  12. # this software without specific prior written permission.
  13. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  14. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  15. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16. # An example script that simulates web traffic. 
  17. # See large-scale-web-traffic.tcl for a large-scale web traffic simulation.
  18. # Initial setup
  19. #source ../webcache/webtraf.tcl
  20. source dumbbell.tcl
  21. global num_node n
  22. set ns [new Simulator]
  23. # set up colors for nam 
  24. for {set i 1} {$i <= 30} {incr i} {
  25.     set color [expr $i % 6]
  26.     if {$color == 0} {
  27. $ns color $i blue
  28.     } elseif {$color == 1} {
  29. $ns color $i red
  30.     } elseif {$color == 2} {
  31. $ns color $i green
  32.     } elseif {$color == 3} {
  33. $ns color $i yellow
  34.     } elseif {$color == 4} {
  35. $ns color $i brown
  36.     } elseif {$color == 5} {
  37. $ns color $i black
  38.     }
  39. }
  40. # Create nam trace and generic packet trace
  41. $ns namtrace-all [open validate.nam w]
  42. # trace-all is the generic trace we've been using
  43. $ns trace-all [open validate.out w]
  44. create_topology
  45. set pool [new PagePool/WebTraf]
  46. # Set up server and client nodes
  47. $pool set-num-client [llength [$ns set src_]]
  48. $pool set-num-server [llength [$ns set dst_]]
  49. global n
  50. set i 0
  51. foreach s [$ns set src_] {
  52. $pool set-client $i $n($s)
  53. incr i
  54. }
  55. set i 0
  56. foreach s [$ns set dst_] {
  57. $pool set-server $i $n($s)
  58. incr i
  59. }
  60. # Number of Pages per Session
  61. set numPage 10
  62. # Session 0 starts from 0.1s, session 1 starts from 0.2s
  63. $pool set-num-session 2
  64. # XXX Can't initialize instvars using something like this:
  65. # set interPage [new RandomVariable/Exponential -avg_ 1]
  66. # Must explicitly set variable values
  67. set interPage [new RandomVariable/Exponential] 
  68. $interPage set avg_ 1
  69. set pageSize [new RandomVariable/Constant]
  70. $pageSize set val_ 1
  71. set interObj [new RandomVariable/Exponential]
  72. $interObj set avg_ 0.01
  73. set objSize [new RandomVariable/ParetoII]
  74. $objSize set avg_ 10
  75. $objSize set shape_ 1.2
  76. $pool create-session 0 $numPage 0.1 $interPage $pageSize $interObj $objSize
  77. set interPage [new RandomVariable/Exponential]
  78. $interPage set avg_ 1
  79. set pageSize [new RandomVariable/Constant]
  80. $pageSize set val_ 1
  81. set interObj [new RandomVariable/Exponential]
  82. $interObj set avg_ 0.01
  83. set objSize [new RandomVariable/ParetoII]
  84. $objSize set avg_ 10
  85. $objSize set shape_ 1.2
  86. $pool create-session 1 $numPage 0.2 $interPage $pageSize $interObj $objSize
  87. # $pool set-interPageOption 0; # 0 for time between the start of 2 pages
  88.                                # 1 for time between the end of a page and 
  89.                                #   the start of the next
  90.                                # default: 1
  91. $ns at 1000.0 "finish"
  92. proc finish {} {
  93. global ns
  94. $ns flush-trace
  95. puts "running nam..."
  96. exec nam validate.nam &
  97. exit 0
  98. }
  99. # Start the simualtion
  100. $ns run