set ns [new Simulator]
$ns multicast
$ns color 1 Yellow
$ns color 2 Red
$ns color 3 Blue
set nf [open out.nam w]
$ns namtrace-all $nf
proc finish { } {
global ns nf
$ns flush-trace
close $nf
exec nam out.nam &
exit 0
}
set asterisco [Node allocaddr]
set stellina [Node allocaddr]
set punto [Node allocaddr]
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
set n6 [$ns node]
set n7 [$ns node]
set n8 [$ns node]
set n9 [$ns node]
set n10 [$ns node]
$ns duplex-link $n0 $n1 1.5Mb 10ms DropTail
$ns duplex-link $n0 $n5 1.5Mb 10ms DropTail
$ns duplex-link $n0 $n6 1.5Mb 10ms DropTail
$ns duplex-link $n1 $n3 1.5Mb 10ms DropTail
$ns duplex-link $n1 $n2 1.5Mb 10ms DropTail
$ns duplex-link $n2 $n3 1.5Mb 10ms DropTail
$ns duplex-link $n3 $n4 1.5Mb 10ms DropTail
$ns duplex-link $n4 $n5 1.5Mb 10ms DropTail
$ns duplex-link $n4 $n8 1.5Mb 10ms DropTail
$ns duplex-link $n5 $n7 1.5Mb 10ms DropTail
$ns duplex-link $n6 $n7 1.5Mb 10ms DropTail
$ns duplex-link $n7 $n8 1.5Mb 10ms DropTail
$ns duplex-link $n7 $n9 1.5Mb 10ms DropTail
$ns duplex-link $n7 $n10 1.5Mb 10ms DropTail
$ns duplex-link $n8 $n9 1.5Mb 10ms DropTail
$ns duplex-link $n9 $n10 1.5Mb 10ms DropTail
set mproto detailedDM
set mrthandle [$ns mrtproto $mproto { } ]
set udp01 [new Agent/UDP]
$ns attach-agent $n0 $udp01
set src01 [new Application/Traffic/CBR]
$src01 attach-agent $udp01
$udp01 set dst_ $asterisco
$udp01 set fid_ 1
set udp02 [new Agent/UDP]
$ns attach-agent $n0 $udp02
set src02 [new Application/Traffic/CBR]
$src02 attach-agent $udp02
$udp02 set dst_ $stellina
$udp02 set fid_ 2
set udp03 [new Agent/UDP]
$ns attach-agent $n0 $udp03
set src03 [new Application/Traffic/CBR]
$src03 attach-agent $udp03
$udp03 set dst_ $punto
$udp03 set fid_ 3
set rec2 [new Agent/LossMonitor]
$ns attach-agent $n2 $rec2
set rec3 [new Agent/LossMonitor]
$ns attach-agent $n3 $rec3
set rec4 [new Agent/LossMonitor]
$ns attach-agent $n4 $rec4
set rec5 [new Agent/LossMonitor]
$ns attach-agent $n5 $rec5
set rec7 [new Agent/LossMonitor]
$ns attach-agent $n7 $rec7
set rec8 [new Agent/LossMonitor]
$ns attach-agent $n8 $rec8
set rec9 [new Agent/LossMonitor]
$ns attach-agent $n9 $rec9
set rec10 [new Agent/LossMonitor]
$ns attach-agent $n10 $rec10
set mcastmonitor1 [$ns McastMonitor]
$mcastmonitor1 set period_ 0.02
$mcastmonitor1 trace-tree $src01 $asterisco
set mcastmonitor2 [$ns McastMonitor]
$mcastmonitor2 set period_ 0.02
$mcastmonitor2 trace-tree $src02 $stellina
set mcastmonitor3 [$ns McastMonitor]
$mcastmonitor3 set period_ 0.02
$mcastmonitor3 trace-tree $src03 $punto
$ns at 0.3 "$src02 start"
$ns at 0.6 "$n2 join-group $rec2 $stellina"
$ns at 0.6 "$n2 color red"
$ns at 0.6 "$n8 join-group $rec8 $stellina"
$ns at 0.6 "$n8 color red"
$ns at 0.6 "$n9 join-group $rec9 $stellina"
$ns at 0.6 "$n9 color red"
$ns at 0.6 "$n10 join-group $rec10 $stellina"
$ns at 0.6 "$n10 color red"
$ns at 1.3 "$src01 start"
$ns at 1.6 "$n3 join-group $rec3 $asterisco"
$ns at 1.6 "$n3 color yellow"
$ns at 1.6 "$n4 join-group $rec4 $asterisco"
$ns at 1.6 "$n4 color yellow"
$ns at 2.3 "$src03 start"
$ns at 2.6 "$n4 join-group $rec4 $punto"
$ns at 2.6 "$n4 add-mark color blue"
$ns at 2.6 "$n5 join-group $rec5 $punto"
$ns at 2.6 "$n5 color blue"
$ns at 2.6 "$n7 join-group $rec7 $punto"
$ns at 2.6 "$n7 color blue"
$ns at 3.3 "finish"
$ns run