Subject: [pim] setting SPT bit when RPF'(S,G) is different from RPF'(*,G) on same iif.

From: "Sridhar Vallepalli" <[email-masked]>
Date: Tue, 4 Mar 2003 18:39:32 -0800

Under certain conditions in the below topology SPT bit will never be set
on router R1. 

                                            +----------+
                                            |             |
                                            |     RP    |
                                            +----+----+
                                                    | 2
 
---------+----------------+-------------------+--------------
                              |   1
|  1
                    +------+-----+
+-----+-----+
                    |                |                                |
|
                    |      R1      |                                |
R2     |
                    +------------+
+------------+
                           |     2
|  2
                          R
S

1) Receiver joins group G at R1

R1 state : (*,G)  iif = 1 oif = 2

2) Join sent by R1 to RP

RP state : (*,G) iif=regvif oif = 2

3) Source start sending traffic R2 sends register packets.

R2 state : (S,G) iif=2 oif = register interface SPT bit = TRUE

4) RP receives Register packet forwards data based on (*,G) entry and
generates (S,G) join towards source

RP state : (S,G) iif = 2 oif = NULL SPT bit = FALSE
             : (*,G) iif=regvif oif = 2

5) R1 receives data packet and triggers a SPT switchover right away

R1 state : (S,G) iif = 1 oif =2 SPT bit = FALSE
             : (*,G)  iif = 1 oif =2

6) (S,G) join received by R2 

R2 state : (S,G) iif=2 oif = (register interface, 1)   SPT bit = TRUE 
Traffic starts flowing on interface 1 and also registered to RP

7) Traffic seen on interface 2 of RP and SPT is set, further register
packets are discarded and register stop is sent.

In this case there is a possibility that there will never be a duplicate
traffic flowing on to the lan causing Assert condition.
Because of not seeing any (S,G) assert packets R1 will never set its SPT
bit to TRUE, as its RPF'(S,G) != RPF'(*,G) and RPF interface for S and
RP are same.

Is there a way that this can be avoided, or is this an acceptable case??
Please comment.

Thanks
Sridhar