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





