Subject: prune question

From: "Andrew L. Adams" <[email-masked]>
Date: Tue, 04 Apr 2000 17:09:16 -0400

Hi all.  In thinking through the following scenario, I'm not sure
if I'm misunderstanding the current spec, or if these are wholes
in the spec (and I've missed the problem descriptions on the
"issues" page).

Topology:

                  i2   i1
   RP ----- P2 ---- P3 ---- P4 ---- S
             |
             R

S is a sender to group G.
R is a receiver for group G.
P3 has interfaces i2 and i1.

Actions:

1. P2 joins the RPT for G.
2. Data flows from S to the RP to P2 to R.
3. P2 decides to join the SPT rooted at S. It sends a J/P msg to
   P3 with RPTbit = 0, and S in the join list.  P3 now has the 
   following state.

        Src   Grp   SPT   RPT   iif   oiflist
         S     G     0     0     i1     i2

4. P4 now joins the RPT for G.  It sends a (*,G) join to P3.
   P3 now has the following state.

        Src   Grp   SPT   RPT   iif   oiflist
         S     G     0     0     i1     i2
         *     G     0     1     i2     i1

5. Now say that S's data rate drops and P2 decides to switch back to
   the RPT for G.  It sends a J/P message to P3 with RPTbit=0 and
   S in the prune list.  After the oif-deletion delay, P3 has
   the following state ( according to 3.2.2/Sp in the prune list/1/1
   and 1/2).

        Src   Grp   SPT   RPT   iif   oiflist
         S     G     0     0     i1    <null>
         *     G     0     1     i2     i1
 
Question 1
3.2.3/Sp in the prune list/1/2 seems to indicate that the (S,G)
state will never go away.  Shouldn't the check be something like:

    If the router has a current (*,G), or (*,*,RP), route
    entry, and if the existing (Sp,G) entry has its RPT-bit
    flag set to 1, and _the (*,G) or (*,*,RP) entry has the same
    iif_, then this (Sp,G)RPT-bit entry is maintained
    (not deleted) even if its outgoing interface list is null.

Question 2
Shouldn't a prune be triggered towards S when the (S,G) oiflist
goes null (to remove state on the source tree)?  If so, I don't
see this in the "Triggered Join/Prune Messages:" section.
3.2.1/Triggered/2/2 indicates what to do when the oif list for
an (S,G)RPT-bit goes null.  However, there's no mention of a simple
(S,G) RPT-bit=0 entry.

Thanks for any pointers.

-Andy

---

From: Mohit Talwar <[email-masked]>
Date: Fri, 7 Apr 2000 11:24:01 -0700

hi andrew,

see below...

>        Src   Grp   SPT   RPT   iif   oiflist

just for the record...
P4, along with the (*,G) join, will also send an (S,G)RPT prune.
see 3.2.1/PeriodicJoinPrune/4/3
but this is irrelevant as far as ur questions are concerned.

>    (not deleted) even if its outgoing interface list is null.

3.2.2/Sp in the prune list/1/2
the exisiting (S,G) state does not have its RPT bit set.
so this rule does not apply.

also see 
http://www.aciri.org/fenner/mcast/pim/sm/4.html
PIM-SM issue #4: (S,G) state being kept alive by data

so this (S,G) state should be expired once its OIL goes to null.

>an (S,G)RPT-bit goes null.  However, there's no mention of a simple

i think u r right, this is not listed as a triggering event, 
but it should be.  of course, the secion on periodic joinprunes 
(3.2.1/3) requires that S be included in the prune list.

mohit.