[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Heres the script: Re: DM routing no longer works



Paul,

I can see the bug now and I'll try to look into this ASAP.  BTW, DM
now can has two modes pimdm and dvmrp.  If you add

DM set CacheMissMode dvmrp

to your script, it will use dvmrp-like pruning and that seems to work
with your example.  The problem is with pimdm prunes.  I'll let you
know when this is fixed.

Thanks,

  Yuri

Paul WHITE <[email protected]> writes:

> Here's the script that is driving me crazy....
> 
> It builds a network of 16 nodes in a square formation with criss-cross mesh
> of links.
> 
> Node 0 is the sender.
> Nodes 12, 10, 5 and 15 are the receivers.
> All 4 receivers and the sender join the group
> The sender starts sending a cbr traffic to the group
> 
> Problem statement(daily snapshot 2.1b5 11th feb 1999): 
> -------------------------------------------------------
> 
> DM prunes receivers 10 and 15 from the tree (WHY DOES IT DO THIS?)
> The result is that only receivers 12 and 5 continue to receive traffic from
> hte sender
> 
> I've just tried this script on ns 2.1b3 and there is no problem, i.e. all 4 
> receivers continue to receive traffic from the sender.
> 
> -----------------------------------------------
> 
> set defdel 0.05s
> set side 4
> set r1 12
> set r2 10
> set r3 5
> set r4 15
> set sen 0
> 
> set group0 0x8001
> 
> #Create a simulator object
> set ns [new Simulator]
> Simulator set EnableMcast_ 1
> Simulator set NumberInterfaces_ 1
> 
> $ns color 1 red
> # prune/graft packets
> $ns color 30 yellow
> $ns color 31 blue
> 
> #Open a trace file
> $ns trace-all [open out.tr w]
> $ns namtrace-all [open out.nam w]
> 
> set i 0
> while {$i < [expr $side*$side]} {
> set n($i) [$ns node]
> set i [expr $i+1]
> }
> 
> set cbr0 [new Agent/CBR]
> $ns attach-agent $n($sen) $cbr0
> $cbr0 set dst_ $group0
> 
> set i 0
> while {$i < $side} {
>   set j 0
>   while {$j < [expr $side*$side]} {
>     if {$j < [expr $side*$side-$side]} {  
>         $ns duplex-link $n([expr $i+$j]) $n([expr $i+$j+$side]) 1Mb $defdel 
> DropTail
>         $ns duplex-link-op $n([expr $i+$j]) $n([expr $i+$j+$side]) orient up
>     }
>     if {$i < [expr $side-1]} {
>         $ns duplex-link $n([expr $i+$j]) $n([expr $i+$j+1]) 1Mb $defdel 
> DropTail
>         $ns duplex-link-op $n([expr $i+$j]) $n([expr $i+$j+1]) orient right
>     }  
>     set j [expr $j+$side]
>   }
>   set i [expr $i+1]
> }
> 
> DM set PruneTimeout 1000
> set mproto DM
> set mrthandle [$ns mrtproto $mproto {}]
> 
> $n($sen) color yellow
> $n($r1) color green
> $n($r2) color green
> $n($r3) color green
> $n($r4) color green
> 
> set nullr1 [new Agent/LossMonitor]
> $ns attach-agent $n($r1) $nullr1
> set nullr2 [new Agent/LossMonitor]
> $ns attach-agent $n($r2) $nullr2
> set nullr3 [new Agent/LossMonitor]
> $ns attach-agent $n($r3) $nullr3
> set nullr4 [new Agent/LossMonitor]
> $ns attach-agent $n($r4) $nullr4
> 
> $ns at 0.09 "$n($sen) join-group $nullr1 $group0"
> $ns at 0.1 "$n($r1) join-group $nullr1 $group0"
> $ns at 0.11 "$n($r2) join-group $nullr2 $group0"
> $ns at 0.12 "$n($r3) join-group $nullr3 $group0"
> $ns at 0.13 "$n($r4) join-group $nullr4 $group0"
> 
> $ns at 1.0 "$cbr0 start"
> 
> $ns at 7.0 "finish"
> 
> proc finish {} {
>         global ns 
>         $ns flush-trace
>         exec nam out.nam &
>         exit 0
> }
> 
> #Run the simulation
> $ns run
> 
> 
> >I tried a DM example script (tcl/ex/newmcast/mcast3.tcl)using the latest
> >ns 
> >snapshot (downloaded last week), and it is working fine. all the 
> >join/prune are ok. I also have the chance to look into the DM.tcl file, 
> >from my point of view, it should be no problem to run.
> 
> >Maybe you can describe what problem you've encountered to the mailing
> >list.
> 
> >shuqian