emulab/multi-level.ns
changeset 0 2b3e5ec03512
equal deleted inserted replaced
-1:000000000000 0:2b3e5ec03512
       
     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