set ns [new Simulator -multicast on] $ns color 1 Red $ns color 30 Purple $ns color 31 Green set f [open out.tr w] $ns trace-all $f $ns namtrace-all [open out.nam w] proc finish {} { global ns $ns flush-trace exec nam out.nam & exit 0 } set group [Node allocaddr] for {set i 0} {$i <= 6} {incr i} { set n($i) [$ns node] } # links between the nodes $ns duplex-link $n(1) $n(0) 0.5Mb 10ms DropTail $ns duplex-link $n(2) $n(0) 0.3Mb 10ms DropTail $ns duplex-link $n(3) $n(0) 0.5Mb 10ms DropTail $ns duplex-link $n(4) $n(0) 0.3Mb 10ms DropTail $ns duplex-link $n(5) $n(0) 0.5Mb 10ms DropTail $ns duplex-link $n(6) $n(0) 0.3Mb 10ms DropTail # configure multicast protocol BST set RP_($group) $n(0) $ns mrtproto BST set udp1 [new Agent/UDP] set udp2 [new Agent/UDP] $ns attach-agent $n(1) $udp1 $ns attach-agent $n(2) $udp2 set src1 [new Application/Traffic/CBR] $src1 attach-agent $udp1 $udp1 set dst_addr_ $group $udp1 set dst_port_ 1 $src1 set random_ false set src2 [new Application/Traffic/CBR] $src2 attach-agent $udp2 $udp2 set dst_addr_ $group $udp2 set dst_port_ 2 $src2 set random_ false set rcvr [new Agent/LossMonitor] $ns at 0.4 "$src1 start" $ns at 0.6 "$n(3) join-group $rcvr $group" $ns at 1.3 "$n(4) join-group $rcvr $group" $ns at 1.6 "$n(5) join-group $rcvr $group" $ns at 1.9 "$n(4) leave-group $rcvr $group" $ns at 2.0 "$src2 start" $ns at 2.3 "$n(6) join-group $rcvr $group" $ns at 3.5 "$n(3) leave-group $rcvr $group" $ns at 4.0 "finish" $ns run