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

通讯编程

开发平台:

Visual C++

  1. # Copyright (C) 1999 by USC/ISI
  2. # All rights reserved.                                            
  3. #                                                                
  4. # Redistribution and use in source and binary forms are permitted
  5. # provided that the above copyright notice and this paragraph are
  6. # duplicated in all such forms and that any documentation, advertising
  7. # materials, and other materials related to such distribution and use
  8. # acknowledge that the software was developed by the University of
  9. # Southern California, Information Sciences Institute.  The name of the
  10. # University may not be used to endorse or promote products derived from
  11. # this software without specific prior written permission.
  12. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  13. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  14. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  15. # An example script that simulates large-scale web traffic. 
  16. # See web-traffic.tcl for a smaller scale web traffic simulation.
  17. #
  18. # Some attributes:
  19. # 1. Topology: ~460 nodes, 420 web clients, 40 web servers
  20. # 2. Traffic: approximately 200,000 TCP connections, heavy-tailed connection 
  21. #             sizes, throughout 4200 second simulation time
  22. # 3. Simulation scale: ~62 MB memory, ~1 hrs running on FreeBSD 3.0
  23. #              Pentium II Xeon 450 MHz PC with 1GB physical memory
  24. #
  25. # Created by Polly Huang (huang@catarina.usc.edu)
  26. # Modified by Haobo Yu (haoboy@isi.edu)
  27. global num_node n verbose
  28. set verbose 0
  29. source varybell.tcl
  30. # Basic ns setup
  31. set ns [new Simulator]
  32. # Create generic packet trace
  33. $ns trace-all [open my-largescale.out w]
  34. # Defined in varybell.tcl
  35. create_topology
  36. ########################### Modify From Here #####################
  37. # Create page pool
  38. set pool [new PagePool/WebTraf]
  39. # Setup servers and clients
  40. $pool set-num-client [llength [$ns set src_]]
  41. $pool set-num-server [llength [$ns set dst_]]
  42. set i 0
  43. foreach s [$ns set src_] {
  44. $pool set-client $i $n($s)
  45. incr i
  46. }
  47. set i 0
  48. foreach s [$ns set dst_] {
  49. $pool set-server $i $n($s)
  50. incr i
  51. }
  52. # Number of Sessions
  53. set numSession 400
  54. # Inter-session Interval
  55. set interSession [new RandomVariable/Exponential]
  56. $interSession set avg_ 1
  57. ## Number of Pages per Session
  58. set sessionSize [new RandomVariable/Constant]
  59. $sessionSize set val_ 250
  60. # Random seed at every run
  61. global defaultRNG
  62. $defaultRNG seed 0
  63. # Create sessions
  64. $pool set-num-session $numSession
  65. set launchTime 0
  66. for {set i 0} {$i < $numSession} {incr i} {
  67. set numPage [$sessionSize value]
  68. puts "Session $i has $numPage pages"
  69. set interPage [new RandomVariable/Exponential]
  70. $interPage set avg_ 15
  71. set pageSize [new RandomVariable/Constant]
  72. $pageSize set val_ 1
  73. set interObj [new RandomVariable/Exponential]
  74. $interObj set avg_ 0.01
  75. set objSize [new RandomVariable/ParetoII]
  76. $objSize set avg_ 12
  77. $objSize set shape_ 1.2
  78. $pool create-session $i $numPage [expr $launchTime + 0.1] 
  79. $interPage $pageSize $interObj $objSize
  80. set launchTime [expr $launchTime + [$interSession value]]
  81. }
  82. # $pool set-interPageOption 0; # 0 for time between the start of 2 pages
  83.                                # 1 for time between the end of a page and 
  84.                                #   the start of the next
  85.                                # default: 1
  86. ## Start the simulation
  87. $ns at 4200.1 "finish"
  88. proc finish {} {
  89. global ns
  90. $ns flush-trace
  91. exit 0
  92. }
  93. puts "ns started"
  94. $ns run