|
1 |
|
2 Tierstore config: |
|
3 |
|
4 |
|
5 source tb_compat.tcl |
|
6 set ns [new Simulator] |
|
7 |
|
8 # |
|
9 # Parameters |
|
10 # |
|
11 |
|
12 # Fanout of nodes at each level, i.e. for each node at level 1, there |
|
13 # are $level2 children, etc. Max fanout at the first two levels is 9 |
|
14 set level1 2 |
|
15 set level2 1 |
|
16 set level3 5 |
|
17 |
|
18 # Bandwidth / delay |
|
19 set bandwidth12 128kb |
|
20 set delay12 300ms |
|
21 |
|
22 set bandwidth23 56kb |
|
23 set delay23 10ms |
|
24 |
|
25 # Tracing |
|
26 set trace_type header |
|
27 |
|
28 # Hardware / OS Image |
|
29 set image FC4-TIERSTORE2 |
|
30 tb-make-soft-vtype root {pc3000 pc2000 pc850} |
|
31 tb-make-soft-vtype level1 {pc3000 pc2000 pc850} |
|
32 tb-make-soft-vtype level2 {pc3000 pc2000 pc850} |
|
33 tb-make-soft-vtype level3 {pc3000 pc2000 pc850} |
|
34 |
|
35 # |
|
36 # Script |
|
37 # |
|
38 |
|
39 # node 0 is the root |
|
40 # nodes 1-9 are at level 1 |
|
41 # nodes 10-99 are at level 2 |
|
42 # nodes 100-999 are at level 3 |
|
43 |
|
44 # make nodes |
|
45 set node(0) [$ns node] |
|
46 for {set i 1} {$i <= $level1} {incr i} { |
|
47 set node($i) [$ns node] |
|
48 |
|
49 for {set j 0} {$j < $level2} {incr j} { |
|
50 set node($i$j) [$ns node] |
|
51 |
|
52 for {set k 0} {$k < $level3} {incr k} { |
|
53 set node($i$j$k) [$ns node] |
|
54 } |
|
55 } |
|
56 } |
|
57 |
|
58 # links from level 0 - 1 |
|
59 for {set i 1} {$i <= $level1} {incr i} { |
|
60 set links(0-$i) [$ns duplex-link $node(0) $node($i) 100Mb 0ms DropTail] |
|
61 #[[$ns link $node(0) $node(1)] queue] set trace_type $trace_type |
|
62 $links(0-$i) trace $trace_type |
|
63 } |
|
64 |
|
65 # lans from level 1 - 2 |
|
66 for {set i 1} {$i <= $level1} {incr i} { |
|
67 set nodes [list $node($i)] |
|
68 for {set j 0} {$j < $level2} {incr j} { |
|
69 lappend nodes $node($i$j) |
|
70 } |
|
71 |
|
72 set lan($i) [$ns make-lan $nodes 100Mb 0ms] |
|
73 for {set j 0} {$j < $level2} {incr j} { |
|
74 tb-set-node-lan-bandwidth $node($i$j) $lan($i) $bandwidth12 |
|
75 tb-set-node-lan-delay $node($i$j) $lan($i) $delay12 |
|
76 #[[$ns lanlink $lan($i) $node($i$j)] queue] set trace_type $trace_type |
|
77 $lan($i) trace $trace_type |
|
78 } |
|
79 } |
|
80 |
|
81 # lans from level 2 - 3 |
|
82 for {set i 1} {$i <= $level1} {incr i} { |
|
83 for {set j 0} {$j < $level2} {incr j} { |
|
84 set nodes [list $node($i$j)] |
|
85 |
|
86 for {set k 0} {$k < $level3} {incr k} { |
|
87 lappend nodes $node($i$j$k) |
|
88 } |
|
89 set lan($i$j) [$ns make-lan $nodes 100Mb 0ms] |
|
90 for {set k 0} {$k < $level3} {incr k} { |
|
91 tb-set-node-lan-bandwidth $node($i$j$k) $lan($i$j) $bandwidth23 |
|
92 tb-set-node-lan-delay $node($i$j$k) $lan($i$j) $delay23 |
|
93 #[[$ns lanlink $lan($i$j) $node($i$j$k)] queue] set trace_type $trace_type |
|
94 $lan($i$j) trace $trace_type |
|
95 } |
|
96 } |
|
97 } |
|
98 |
|
99 foreach {id n} [array get node] { |
|
100 tb-set-node-os $n $image |
|
101 if {$id == 0} { |
|
102 tb-set-hardware $n root |
|
103 } elseif {$id < 10} { |
|
104 tb-set-hardware $n level1 |
|
105 } elseif {$id < 100} { |
|
106 tb-set-hardware $n level2 |
|
107 } else { |
|
108 tb-set-hardware $n level3 |
|
109 } |
|
110 } |
|
111 |
|
112 tb-set-sync-server $node(0) |
|
113 |
|
114 $ns rtproto Static |
|
115 $ns run |