set ns [new Simulator -multicast on] set f [open DyDM-repo.tr w] $ns trace-all $f $ns namtrace-all [open DyDM-repo.nam w] $ns color 0 yellow $ns color 1 blue $ns color 2 black # prune/graft packets $ns color 30 purple $ns color 31 green $ns color 32 red set group [Node allocaddr] set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] # right nodes... set n5 [$ns node] set n6 [$ns node] set n7 [$ns node] set n8 [$ns node] # left nodes... set n9 [$ns node] set n10 [$ns node] set n11 [$ns node] set n12 [$ns node] set n13 [$ns node] set n14 [$ns node] # Use automatic layout $ns duplex-link $n0 $n1 1Mb 10ms DropTail $ns duplex-link $n1 $n2 10Mb 10ms DropTail $ns duplex-link $n1 $n3 1Mb 10ms DropTail $ns duplex-link $n0 $n3 1Mb 10ms DropTail $ns duplex-link $n1 $n4 1Mb 10ms DropTail # S1 $ns duplex-link $n0 $n5 5Mb 10ms DropTail $ns duplex-link $n5 $n6 0.5Mb 10ms DropTail $ns duplex-link $n5 $n7 0.5Mb 10ms DropTail $ns duplex-link $n5 $n8 0.55Mb 10ms DropTail # R3 $ns duplex-link $n3 $n9 5Mb 10ms DropTail $ns duplex-link $n3 $n10 5Mb 10ms DropTail $ns duplex-link $n9 $n11 5Mb 10ms DropTail $ns duplex-link $n9 $n12 5Mb 10ms DropTail # R4 $ns duplex-link $n10 $n13 5Mb 10ms DropTail # R1 $ns duplex-link $n10 $n14 5Mb 10ms DropTail # R2 $ns duplex-link-op $n0 $n1 orient right $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n1 $n4 orient left-up $ns duplex-link-op $n1 $n3 orient right-down $ns duplex-link-op $n0 $n5 orient left $ns duplex-link-op $n3 $n9 orient right $ns duplex-link-op $n3 $n10 orient right-down $ns duplex-link-op $n0 $n1 queuePos 0.5 $ns duplex-link-op $n1 $n2 queuePos 0.5 $ns duplex-link-op $n1 $n4 queuePos 0.5 $ns duplex-link-op $n1 $n3 queuePos 0.5 $ns duplex-link-op $n0 $n5 queuePos 0.5 $ns duplex-link-op $n3 $n9 queuePos 0.5 $ns duplex-link-op $n3 $n10 queuePos 0.5 dynamicDM set PruneTimeout 0.3 dynamicDM set ReportRouteTimeout 0.5 set mproto dynamicDM # configure multicast protocol set mrthandle [$ns mrtproto $mproto {}] #set cbr0 [new Application/Traffic/CBR] set cbr0 [new Agent/CBR] $cbr0 set dst_ 0x8001 $cbr0 set class_ 1 $ns attach-agent $n4 $cbr0 #set udp1 [new Agent/UDP] #$udp1 set dst_ 0x8002 #$udp1 set class_ 1 #$ns attach-agent $n13 $udp1 #set cbr1 [new Application/Traffic/CBR] #$cbr1 attach-agent $udp1 set rcvr [new Agent/LossMonitor] $ns attach-agent $n8 $rcvr $ns attach-agent $n12 $rcvr $ns attach-agent $n13 $rcvr $ns attach-agent $n14 $rcvr #set mcastmonitor [$ns McastMonitor] #$mcastmonitor set period_ 0.02 #$mcastmonitor trace-topo $cbr0 $group $ns at 1.3 "$n8 join-group $rcvr 0x8001" $ns at 1.5 "$n8 leave-group $rcvr 0x8001" $ns at 1.3 "$n12 join-group $rcvr 0x8001" $ns at 1.6 "$n12 leave-group $rcvr 0x8001" $ns at 1.3 "$n13 join-group $rcvr 0x8001" $ns at 1.7 "$n13 leave-group $rcvr 0x8001" $ns at 1.3 "$n14 join-group $rcvr 0x8001" $ns at 1.8 "$n14 leave-group $rcvr 0x8001" $ns at 1.0 "$cbr0 start" #$ns at 1.001 "$cbr0 stop" #$ns at 1.1 "$cbr1 start" #set tcp [new Agent/TCP] #set sink [new Agent/TCPSink] #$ns attach-agent $n0 $tcp #$ns attach-agent $n3 $sink #$ns connect $tcp $sink #set ftp [new Application/FTP] #$ftp attach-agent $tcp #$ns at 1.2 "$ftp start" #puts [$cbr0 set packet_size_] #puts [$cbr0 set interval_] $ns at 2.0 "finish" proc finish {} { global ns $ns flush-trace puts "running nam..." exec nam DyDM-repo.nam & exit 0 } $ns run