set ns new Simulator set Bandwidth "1Mb" set packetsize 5000 set wind 1 set cwnd 1
$ns color 1 purple $ns color 2 seagreen $ns color 3 orange
foreach i " 0 1 2 3 4 5 6 " {
set n$i [$ns node] }
$n0 color "blue" $n1 color "purple" $n2 color "seagreen" $n3 color "orange" $n4 color "skyblue" $n5 color "red" $n6 color "black"
$ns at 0.0 "$n0 label Sender" $ns at 0.0 "$n1 label Receiver1" $ns at 0.0 "$n2 label Receiver2" $ns at 0.0 "$n3 label Receiver3"
set nf open bus.nam w $ns namtrace-all $nf set f open bus.tr w $ns trace-all $f
$ns duplex-link $n0 $n5 $Bandwidth 30ms DropTail $ns duplex-link $n5 $n2 $Bandwidth 30ms DropTail $ns duplex-link $n4 $n1 $Bandwidth 30ms DropTail $ns duplex-link $n4 $n5 $Bandwidth 30ms DropTail $ns duplex-link $n5 $n6 $Bandwidth 30ms DropTail $ns duplex-link $n6 $n3 $Bandwidth 30ms DropTail
$ns duplex-link-op $n0 $n5 orient down $ns duplex-link-op $n5 $n2 orient down $ns duplex-link-op $n4 $n1 orient down $ns duplex-link-op $n4 $n5 orient right $ns duplex-link-op $n5 $n6 orient right $ns duplex-link-op $n6 $n3 orient down
$ns queue-limit $n4 $n5 10
Agent/TCP set nam_tracevar_ true Agent/TCP set window_ $wind Agent/TCP set cwnd_ $cwnd
set tcp1 new Agent/TCP $ns attach-agent $n0 $tcp1 $tcp1 set fid_ 1 ;
set sink1 new Agent/TCPSink $ns attach-agent $n1 $sink1
$ns connect $tcp1 $sink1
set ftp1 new Application/FTP $ftp1 attach-agent $tcp1
set tcp2 new Agent/TCP $ns attach-agent $n0 $tcp2 $tcp2 set fid_ 1 ;
set sink2 new Agent/TCPSink $ns attach-agent $n2 $sink2
$ns connect $tcp2 $sink2
set ftp2 new Application/FTP $ftp2 attach-agent $tcp2
$ns at 0.05 "$ftp1 start" $ns at 0.35 "$ns detach-agent $n0 $tcp1 ; $ns detach-agent $n1 $sink1" $ns at 0.45 "$ftp2 start" $ns at 0.90 "$ns detach-agent $n0 $tcp2 ; $ns detach-agent $n2 $sink2"
$ns at 0.90 "finish"
proc finish {} {
global ns nf $ns flush-trace close $nf exec awk { { if ($1=="-" && $5=="tcp") { print $2 "\t" $11 }
} } bus.tr > throughput.data
puts "filtering..." # exec tclsh ../bin/namfilter.tcl multicast.nam # puts "running nam..." exec nam bus.nam & exec xgraph throughput.data & exit 0
}
$ns run