emulab/multi-level.ns
changeset 0 2b3e5ec03512
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emulab/multi-level.ns	Thu Apr 21 14:57:45 2011 +0100
@@ -0,0 +1,115 @@
+
+Tierstore config:
+
+
+source tb_compat.tcl
+set ns [new Simulator]
+
+#
+# Parameters
+#
+
+# Fanout of nodes at each level, i.e. for each node at level 1, there
+# are $level2 children, etc. Max fanout at the first two levels is 9
+set level1 2
+set level2 1
+set level3 5
+
+# Bandwidth / delay
+set bandwidth12 128kb
+set delay12     300ms
+
+set bandwidth23 56kb
+set delay23     10ms
+
+# Tracing
+set trace_type header
+
+# Hardware / OS Image
+set image    FC4-TIERSTORE2
+tb-make-soft-vtype root   {pc3000 pc2000 pc850}
+tb-make-soft-vtype level1 {pc3000 pc2000 pc850}
+tb-make-soft-vtype level2 {pc3000 pc2000 pc850}
+tb-make-soft-vtype level3 {pc3000 pc2000 pc850}
+
+#
+# Script
+#
+
+# node 0 is the root
+# nodes 1-9 are at level 1
+# nodes 10-99 are at level 2
+# nodes 100-999 are at level 3
+
+# make nodes
+set node(0) [$ns node]
+for {set i 1} {$i <= $level1} {incr i} {
+    set node($i)    [$ns node]
+
+    for {set j 0} {$j < $level2} {incr j} {
+	set node($i$j) [$ns node]
+
+	for {set k 0} {$k < $level3} {incr k} {
+	    set node($i$j$k) [$ns node]
+	}
+    }
+}
+
+# links from level 0 - 1
+for {set i 1} {$i <= $level1} {incr i} {
+    set links(0-$i) [$ns duplex-link $node(0) $node($i) 100Mb 0ms DropTail]
+    #[[$ns link $node(0) $node(1)] queue] set trace_type $trace_type
+    $links(0-$i) trace $trace_type
+}
+
+# lans from level 1 - 2
+for {set i 1} {$i <= $level1} {incr i} {
+    set nodes [list $node($i)]
+    for {set j 0} {$j < $level2} {incr j} {
+	lappend nodes $node($i$j)
+    }
+
+    set lan($i) [$ns make-lan $nodes 100Mb 0ms]
+    for {set j 0} {$j < $level2} {incr j} {
+	tb-set-node-lan-bandwidth $node($i$j) $lan($i) $bandwidth12
+	tb-set-node-lan-delay     $node($i$j) $lan($i) $delay12
+        #[[$ns lanlink $lan($i) $node($i$j)] queue] set trace_type $trace_type
+        $lan($i) trace $trace_type
+    }
+}
+
+# lans from level 2 - 3
+for {set i 1} {$i <= $level1} {incr i} {
+    for {set j 0} {$j < $level2} {incr j} {
+	set nodes [list $node($i$j)]
+	
+	for {set k 0} {$k < $level3} {incr k} {
+	    lappend nodes $node($i$j$k)
+	}
+	set lan($i$j) [$ns make-lan $nodes 100Mb 0ms]
+	for {set k 0} {$k < $level3} {incr k} {
+	    tb-set-node-lan-bandwidth $node($i$j$k) $lan($i$j) $bandwidth23
+	    tb-set-node-lan-delay     $node($i$j$k) $lan($i$j) $delay23
+	    #[[$ns lanlink $lan($i$j) $node($i$j$k)] queue] set trace_type $trace_type
+            $lan($i$j) trace $trace_type
+        }
+    }
+}
+
+foreach {id n} [array get node] {
+    tb-set-node-os  $n $image
+    if {$id == 0} {
+       tb-set-hardware $n root
+    } elseif {$id < 10} {
+       tb-set-hardware $n level1
+    } elseif {$id < 100} {
+       tb-set-hardware $n level2
+    } else {
+       tb-set-hardware $n level3
+    }
+}
+
+tb-set-sync-server $node(0)
+
+$ns rtproto Static
+$ns run