web-traffic-embobj.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. # This is intended to be a simpler version than the large-scale-web-traffic.tcl
  19. # but consists of more than one objects per page. 
  20. #
  21. # Created by Polly Huang (huang@catarina.usc.edu)
  22. # Modified by Haobo Yu (haoboy@isi.edu)
  23. global num_node n verbose
  24. set verbose 0
  25. source varybell.tcl
  26. # Basic ns setup
  27. set ns [new Simulator]
  28. # Create generic packet trace
  29. $ns trace-all [open my-largescale.out w]
  30. # Defined in varybell.tcl
  31. create_topology
  32. ########################### Modify From Here #####################
  33. # Create page pool
  34. set pool [new PagePool/WebTraf]
  35. # Setup servers and clients
  36. $pool set-num-client [llength [$ns set src_]]
  37. $pool set-num-server [llength [$ns set dst_]]
  38. set i 0
  39. foreach s [$ns set src_] {
  40. $pool set-client $i $n($s)
  41. incr i
  42. }
  43. set i 0
  44. foreach s [$ns set dst_] {
  45. $pool set-server $i $n($s)
  46. incr i
  47. }
  48. # Number of Sessions
  49. set numSession 5
  50. # Inter-session Interval
  51. set interSession [new RandomVariable/Exponential]
  52. $interSession set avg_ 1
  53. ## Number of Pages per Session
  54. set sessionSize [new RandomVariable/Constant]
  55. $sessionSize set val_ 5 
  56. # Random seed at every run
  57. global defaultRNG
  58. $defaultRNG seed 0
  59. # Create sessions
  60. $pool set-num-session $numSession
  61. set launchTime 0
  62. for {set i 0} {$i < $numSession} {incr i} {
  63. set numPage [$sessionSize value]
  64. puts "Session $i has $numPage pages"
  65. set interPage [new RandomVariable/Exponential]
  66. $interPage set avg_ 15
  67. set pageSize [new RandomVariable/Constant]
  68. $pageSize set val_ 3
  69. set interObj [new RandomVariable/Exponential]
  70. $interObj set avg_ 0.01
  71. set objSize [new RandomVariable/ParetoII]
  72. $objSize set avg_ 12
  73. $objSize set shape_ 1.2
  74. $pool create-session $i $numPage [expr $launchTime + 0.1] 
  75. $interPage $pageSize $interObj $objSize
  76. set launchTime [expr $launchTime + [$interSession value]]
  77. }
  78. ## Start the simulation
  79. $ns at 800.1 "finish"
  80. proc finish {} {
  81. global ns
  82. $ns flush-trace
  83. exit 0
  84. }
  85. puts "ns started"
  86. $ns run