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

From: Ardas Cilingiroglu <[email-masked]>
Date: Wed, 16 Dec 1998 13:34:54 -0500 (EST)

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: Shahzad Ali <[email-masked]>
Date: Tue, 22 Dec 1998 14:57:37 -0500 (EST)

hi,

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

But wait, if Y sends prunes up to X, it does not necessarily mean the X
will not send down traffic.  All it means is that X will not send traffic
down on that interface "due to a join".  It will continue to send traffic
down because of the local receiver that IGMP reports.  I dont think there
is a need to check for the DR.  So the OIFlist at X will have the
interface towards Y in it because of a local host, not because of the
join, which IMHO is the correct behaviour.

-Shahzad

---

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

> join, which IMHO is the correct behaviour.
IGMP reports are effective only at the Last-Hop routers, which is in this 
case the DR router (router Y). Therefore router X will not include
the interface towards the local-receiver in its oif-list.

It is stated in section 3.2.1.2 1 of the spec:

      1.Receipt of an indication from IGMP that the state of
        directly-connected-membership has changed (i.e., new members
        have just joined `membership indication' or all members have
        left), for a group G, may cause the last-hop router to build or
        modify corresponding (*,G) state.

---

From: Shahzad Ali <[email-masked]>
Date: Mon, 28 Dec 1998 11:15:21 -0500 (EST)

Hi,

>         modify corresponding (*,G) state. 

Sorry.  Didnt think too much before replying :) You're right.

-Shahzad