Subject: PIM-SM: Parallel downstream routers.

From: Ardas Cilingiroglu <[email-masked]>
Date: Wed, 10 Mar 1999 19:39:13 -0500 (EST)

I have some questions on triggered Join/Prune messages in case of 
a parallel downstream router pruning your active entry (section 
3.2.1.2 item 5).

Consider the following scenario:

               RT-UP 
                 |   
   -------------------------------
     |           |            |
    RT1         RT2          RT3 
   (*,G)       (*,G)        (*,G)
   (S1,G)RPT   (S1,G)RPT
   (S2,G)RPT   (S3,G)RPT

Assume (*,G)s have oif<>NULL and (S,G)RPTs have oif==NULL.

Consider the following events:

   - RT1 sends Join for (*,G) and Prunes for (S1,G)RPT and (S2,G)RPT.

   - what should RT2 do in this case?
     According to spec, RT2 will only trigger a Join for (*,G).
     However, since RT2 and the message from RT1 agrees on the
     prune of (S1,G)RPT, shouldn't it also send Prune for (S1,G)RPT 
     along with the Join for (*,G)?

   - how should RT-UP collect downstream reactions to a received prune? 
     According to the spec, it should lower its Oif-Timer to Oif-Delay-
     Period and wait for a downstream join to increase the Oif-Timer
     back to Join-Prune-Holdtime.

     However, should in it wait for a complete Oif-Delay-Period period
     to collect all the reactions and behave accordingly. The following 
     set of events explains the reason:
          - RT1 sends a message
          - RT2 and RT3 triggers 
          - RT-UP receives RT3's message before RT2's message.
            Since RT2's message is the last one, RT-UP will
            prune the oif for (S1,G)RPT.
        
thanks,
Ardas

---

From: Liming Wei <[email-masked]>
Date: Wed, 10 Mar 1999 22:55:07 -0800 (PST)

> From: Ardas Cilingiroglu <[email-masked]>
> 

Well,  RT2 should not "trigger" the (*,G) join since it has no
need to send another (*,G) join in response to a (*,G) join. It only
needs to override the (S2,G)RPTbit prune since it still expects
packets from S2 along the RP tree. (This should only be a trancient
situation since ultimately they should have the same set of
source state once data packets start flowing).

>             prune the oif for (S1,G)RPT.

If the prune-override messages don't gratuitously include pruned
sources, such race condition should not occur. But if your
implementation already implements it that way to include pruned
sources in the prune override message, you can make the (*,G) join
without prune list the "persist" overrider, i.e. it triggers
a (*,G) join whenever it sees any source prunes. This way it will
interoperate with other implementations.

-Liming

---

From: Ardas Cilingiroglu <[email-masked]>
Date: Thu, 11 Mar 1999 10:57:43 -0500 (EST)

On Wed, 10 Mar 1999, Liming Wei wrote:

> packets from S2 along the RP tree. i

Do you mean RT2 will override (S2,G)RPT prune with an (S2,G)RPT join?
If that is the case, then I think the spec should mention it more clearly,
because I did not see the mention of an (S,G)RPT join message anywhere 
in the spec.

thanks,
Ardas