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

通讯编程

开发平台:

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. #
  17. # Maintainer: Polly Huang <huang@isi.edu>
  18. # Version Date: $Date: 1999/04/20 22:34:31 $
  19. #
  20. # @(#) $Header: /cvsroot/nsnam/ns-2/tcl/ex/varybell.tcl,v 1.1 1999/04/20 22:34:31 polly Exp $ (USC/ISI)
  21. #
  22. # Unbalanced dumbell topology
  23. # Used by large-scale-web-traffic.tcl
  24. #        clients      servers
  25. #
  26. #            7       2    3
  27. #           |       | / 
  28. #         -- 1 ----- 0 -- 4
  29. #          / |        
  30. #           426         5   
  31. proc create_topology {} {
  32. global ns n verbose num_node
  33. set num_server 40
  34. set num_client 420
  35. set num_node [expr 7 + [expr $num_client + $num_server]]
  36. #setup colors for nam
  37. for {set i 0} {$i <= 100} {incr i} {
  38.     set color [expr $i % 6]
  39.     if {$color == 0} {
  40.         $ns color $i blue
  41.     } elseif {$color == 1} {
  42.         $ns color $i red
  43.     } elseif {$color == 2} {
  44.         $ns color $i green
  45.     } elseif {$color == 3} {
  46.         $ns color $i yellow
  47.     } elseif {$color == 4} {
  48.         $ns color $i brown
  49.     } elseif {$color == 5} {
  50.         $ns color $i purple
  51.     }
  52. }
  53. if {$verbose} { puts "Creating $num_server server, $num_client client dumbell topology..." }
  54. for {set i 0} {$i < $num_node} {incr i} {
  55. set n($i) [$ns node]
  56. }
  57. # EDGES (from-node to-node length a b):
  58. # node 0 connects to the server pool
  59. # node num-node -1 is the extra node introduced in between 0 and 1
  60. $ns duplex-link $n(0) $n([expr $num_node - 1]) 10Mb 20ms DropTail
  61. # node 1 connects to the client pool
  62. $ns duplex-link $n([expr $num_node - 1]) $n(1) 3Mb 20ms DropTail
  63. $ns duplex-link $n(0) $n(2) 1.5Mb 20ms DropTail
  64. $ns duplex-link $n(0) $n(3) 1.5Mb 30ms DropTail
  65. $ns duplex-link $n(0) $n(4) 1.5Mb 40ms DropTail
  66. $ns duplex-link $n(0) $n(5) 1.5Mb 60ms DropTail
  67. for {set i 0} {$i < $num_server} {incr i} {
  68.     set base [expr $i / 10]
  69.     set delay [uniform 10 100]
  70.     $ns duplex-link $n([expr $base + 2]) $n([expr $i + 6]) 10Mb [expr $delay * 0.001] DropTail
  71.     if {$verbose} {puts "$ns duplex-link $n([expr $base + 2]) $n([expr $i + 6]) 10Mb [expr $delay * 0.001] DropTail"}
  72. }
  73. for {set i 0} {$i < $num_client} {incr i} {
  74.     set bandwidth [uniform 22 32]
  75.     set delay [uniform 10 100]
  76.     $ns duplex-link $n(1) $n([expr [expr $i + $num_server] + 6]) [expr $bandwidth * 1000000] [expr $delay * 0.001] DropTail
  77.     if {$verbose} {puts "$ns duplex-link $n(1) $n([expr [expr $i + $num_server] + 6]) [expr $bandwidth * 1000] [expr $delay * 0.001] DropTail"}
  78. }
  79. $ns set dst_ "";  #define list of web servers
  80. for {set i 0} {$i < $num_server} {incr i} {
  81.     $ns set dst_ "[$ns set dst_] [list [expr $i + 6]]"
  82. }
  83. if {$verbose} {puts "server set: [$ns set dst_]"}
  84. $ns set src_ "";  #define list of web clients 
  85. for {set i 0} {$i < $num_client} {incr i} {
  86.     $ns set src_ "[$ns set src_] [list [expr [expr $i + $num_server] + 6]]"
  87. }
  88. if {$verbose} {puts "client set: [$ns set src_]"}
  89. if {$verbose} { puts "Finished creating topology..." }
  90. }
  91. # end of create_topology