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

Multicast and RLM problem




I am testing out RLM with multiple sources and am having trouble with
packets being routed to receivers who have not joined the multicast
group.  This "routing" happens about 100 seconds into my simulation and
repeats about every 100 seconds.  I'm guessing it has to do with ns's
handling of multicast routing but I cannot find anything in the
documentation.  

While I am running ns version 2.1b5, I have gone back and run this
simulation on older versions of ns with similar results.

I have attached a simple scenario to use in test-rlm.tcl.  If you use
nam to look at the results you will see the problem about 104-110
seconds into the simulation.  This problem repeats approximately every
100 seconds (so 104, 204...).

Any help would be appreciated.  Thanks, Hugh


Class Scenario2 -superclass Topology

Scenario2 instproc init args {

    eval $self next $args
    $self instvar ns node
    
    $self build_link 0 2 200ms  2000e3
    $self build_link 1 2 200ms  2000e3
    $self build_link 23 2 200ms 2000e3
    
    $self build_link 2 3 200ms 2000e3
    $self build_link 3 4 200ms 800e3

    
    $self build_link 4 5 200ms 2000e3
    $self build_link 5 6 200ms 2000e3
    $self build_link 5 7 200ms 2000e3
    $self build_link 5 11 200ms 2000e3
    $self build_link 5 13 200ms 2000e3
    $self build_link 5 14 200ms 2000e3
    $self build_link 5 15 200ms 2000e3
    $self build_link 5 16 200ms 100e3
    $self build_link 5 17 200ms 100e3
    
    
    $self build_link 4 8 200ms 2000e3
    $self build_link 8 9 200ms 2000e3
    $self build_link 8 10 200ms 2000e3
    $self build_link 8 12 200ms 2000e3
    $self build_link 8 18 200ms 2000e3
    $self build_link 8 19 200ms 2000e3
    $self build_link 8 20 200ms 2000e3
    $self build_link 8 21 200ms 100e3
    $self build_link 8 22 200ms 100e3
        

    $self build_link 4 24 200ms 2000e3
    $self build_link 24 25 200ms 2000e3
    $self build_link 24 26 200ms 2000e3
    $self build_link 24 27 200ms 2000e3
    $self build_link 24 28 200ms 2000e3
    $self build_link 24 29 200ms 2000e3
    $self build_link 24 30 200ms 2000e3
    $self build_link 24 31 200ms 100e3
    $self build_link 24 32 200ms 100e3

    set time0 10
    set addr0 [$self place_source 0 1]
  
    set time1 50
    set addr1 [$self place_source 1 1]
   
    #note: Third source is not started up until very late.  It makes
    #it easy to see the "routing" problem.
    set time2 590
    set addr2 [$self place_source 23 1] 
 
    $self place_receiver 6 $addr0 [expr 5 + $time0]
    $self place_receiver 7 $addr0 [expr 5 + $time0]
    $self place_receiver 11 $addr0 [expr 5 + $time0]
    $self place_receiver 13 $addr0 [expr 5 + $time0]
    $self place_receiver 14 $addr0 [expr 5 + $time0]
    $self place_receiver 15 $addr0 [expr 5 + $time0]
    $self place_receiver 16 $addr0 [expr 5 + $time0]
    $self place_receiver 17 $addr0 [expr 5 + $time0]
    
    
    $self place_receiver 9 $addr1 [expr 5 + $time1]
    $self place_receiver 10 $addr1 [expr 5 + $time1]
    $self place_receiver 12 $addr1 [expr 5 + $time1]
    $self place_receiver 18 $addr1 [expr 5 + $time1]
    $self place_receiver 19 $addr1 [expr 5 + $time1]
    $self place_receiver 20 $addr1 [expr 5 + $time1]
    $self place_receiver 21 $addr1 [expr 5 + $time1]
    $self place_receiver 22 $addr1 [expr 5 + $time1]

    $self place_receiver 25 $addr2 [expr 5 + $time2]
    $self place_receiver 26 $addr2 [expr 5 + $time2]
    $self place_receiver 27 $addr2 [expr 5 + $time2]
    $self place_receiver 28 $addr2 [expr 5 + $time2]
    $self place_receiver 29 $addr2 [expr 5 + $time2]
    $self place_receiver 30 $addr2 [expr 5 + $time2]
    $self place_receiver 31 $addr2 [expr 5 + $time2]
    $self place_receiver 32 $addr2 [expr 5 + $time2]
    
    
    #mcast set up
    DM set PruneTimeout 100
    set mproto DM
    set mrthandle [$ns mrtproto $mproto {} ]
}