proc create_topology {} { global ns n num_node link qmon p dst src link test_node set num_node 28 set test_node [expr $num_node - 1] for {set i 0} {$i < $num_node} {incr i} { set n($i) [$ns node] } $ns duplex-link $n(0) $n(1) 1.5Mb 100ms DropTail $ns queue-limit $n(1) $n(0) 10 $ns duplex-link $n(1) $n(2) 10Mb 1ms DropTail for {set i 3} {$i < $test_node} {incr i} { $ns duplex-link $n(0) $n($i) 10Mb 1ms DropTail set dst($i) [new Agent/TCPSink] $ns attach-agent $n($i) $dst($i) set src($i) [new Agent/TCP/Vegas] # $src($i) set windowInitOption_ 1 $src($i) set fid_ $i $src($i) set packetSize_ 576 $ns attach-agent $n(2) $src($i) $ns connect $src($i) $dst($i) set p($i) [new Application/Traffic/Pareto] $p($i) attach-agent $src($i) $p($i) set burst_time_ 500ms $p($i) set idel_time_ 500ms $p($i) set burstlen_ 50 $p($i) set shape_ 1.5 } $ns duplex-link $n(0) $n($test_node) 1Mb 20ms DropTail set dst($test_node) [new Agent/TCPSink] set src($test_node) [new Agent/TCP/Reno] $ns attach-agent $n($test_node) $dst($test_node) $ns attach-agent $n(2) $src($test_node) $ns connect $dst($test_node) $src($test_node) $src($test_node) set packetSize_ 576 $src($test_node) set fid_ $test_node } set ns [new Simulator] # set up colors for nam for {set i 1} {$i <= 30} {incr i} { set color [expr $i % 6] if {$color == 0} { $ns color $i blue } elseif {$color == 1} { $ns color $i red } elseif {$color == 2} { $ns color $i green } elseif {$color == 3} { $ns color $i yellow } elseif {$color == 4} { $ns color $i brown } elseif {$color == 5} { $ns color $i black } } # Create nam trace and generic packet trace #$ns namtrace-all [open validate.nam w] # trace-all is the generic trace we've been using $ns trace-all [open /tmp/validate.out w] create_topology proc open_trace { stop_time} { global ns trace_file_ n link src test_node $src($test_node) advanceby 50 } for { set i 3 } { $i < $test_node } { incr i } { $ns at 0.0 "$p($i) start" } $ns at 500 "finish" proc finish {} { global ns qmon dst test_node $ns flush-trace puts "running nam..." # exec nam validate.nam & exit 0 } # Start the simualtion $ns run