Subject: Re: PIM-SM: question on Sending J/P Messages

From: Ardas Cilingiroglu <[email-masked]>
Date: Tue, 22 Dec 1998 10:51:11 -0500 (EST)

Any comments?

thanks,
Ardas

> 
> I have two questions on Sending Join/Prune Messages.
> 
> Section 3.2.1.1 1(b) of PIM-SM spec says that a Join for (*,G) or
> (*,*,RP) is sent periodically as long as its oif is non-NULL, or
> the router is the DR on the same interface as the RPF neighbor.
> 
> In all other cases mentioned in the spec, entries are Joined 
> based on their oif being non-NULL, and Pruned based on their 
> oif being NULL. 
> 
> I think all these cases should also check "whether the router is the
> DR on the same interface as the RPF neighbor" when the oif list is NULL.
> 
> For example, in 3.2.1.1 4(a), it says
> 
>    4.A particular source address, S, is included in the prune
>      list with the RPT-bit set and the WC bit cleared under the
>      following conditions:
> 
>       (a) The Join/Prune message is being sent to the RPF
>           neighbor  toward the RP and there exists a (S,G) entry with
>           the RPT-bit flag  set and null oif list, or
>  
> I think the check should be extended with "the router is NOT the
> DR on the same interface as the RPF neighbor" as the example shows:
> 
> 
>                                        ~~ RP 
>                                        |
>                                      +---+
>          Local-rvcr                  | X |
>              |                       +---+ 
>              |                         |
>     ------------------------------------- 
>         |DR 
>        1|
>       +---+   (*,G) iif=1  oif={2}
>       | Y |
>       +---+   (S,G)RPT iif=1  oif=NULL
>        2|
>      -------------------
>                   |
>                 +---+  
>                 | Z |    "Z prunes S from RP-Tree"
>                 +---+    
>                   |        
>                ----------------
>                            |
>                         Local-rcvr
> 
> As shown above, after Z prunes S from RP-Tree, oif of the (S,G)RPT 
> entry in Y becomes NULL and it further sends Prunes for (S,G)RPT 
> to X. However it shouldn't because there is a Local-Receiver in 
> between X and Y. 
> 
> Similarly, I think the DR check should be done for (S,G) entries 
> (without RPT-bit set).
> 
> My second question is about the DR check itself. I think
>   "the router is the DR on the same interface as the RPF neighbor"
> should be changed to  
>   "the router is the Last-Hop router for the Entry on the same
>    interface as the RPF neighbor, and there is a local-receiver 
>    on that interface". 
> 
> thanks,
> Ardas

---

From: [email-masked]
Date: Tue, 22 Dec 1998 11:38:06 -0800 (PST)

> > DR on the same interface as the RPF neighbor" as the example shows:

yes, this sounds correct. the wording probably ought to be consistent, 
or perhaps a single disclaimer stating that prune messages are not
sent on the interface of a DR with a local member.  

> > Similarly, I think the DR check should be done for (S,G) entries 

yes, this sounds correct also.

> >    interface as the RPF neighbor, and there is a local-receiver 

i think the original is correct.  if the interface is not the DR and
there are local members, then it should be recieving joins from the DR 
through this interface and it's oif will not become null, as long as
there are local members.

- rusty

---

From: [email-masked] (Ardas Cilingiroglu)
Date: Tue, 22 Dec 1998 15:47:33 -0500 (EST)

Hi,

> through this interface and it's oif will not become null, as long as

I have two changes to the statement:
   - the router should be the Last-Hop router, NOT the DR router, on the
     same interface as the RPF neighbor. 

     This is based on the section 2.9 of the spec, which says

       The DR may lose the (*,G) Assert process to another router on the LAN
       if there are multiple paths to the RP through the LAN.  From then on,
       the DR is no longer the last-hop router for local receivers and
       removes the LAN from its (*,G) oif list. The winning router becomes
       the last-hop router and is responsible for sending (*,G) join
       messages to the RP.

   - there must be a local-receiver on that interface.
 
     I think you also agree on this. If there is no local-receiver,
     (in addition to oif being NULL), the router should send Prunes.

-Ardas