Subject: FW: [pim] PIM-SM: Assert Issue resulting in assert-loser forwarding onto LAN

From: "Venu Hemige" <[email-masked]>
Date: Wed, 11 Aug 2004 22:59:20 -0700

Hi All,

I am resending this email since I did not hear from anyone. There is an
issue in the draft that can result in multiple routers forwarding onto a
LAN. I am sending the text from the email I sent earlier. However, the
fix I suggested there turns out to be incorrect. I have deleted that
portion of the email to avoid confusion and replaced it with the correct
fix. We have tested this in our lab and it works. I think this should be
addressed in the draft. I would appreciate any comments.

Regards,

-Venu

-----Original Message-----
From: [email-masked] [mailto:[email-masked]] On Behalf Of
Venugopal Hemige
Sent: Thursday, July 22, 2004 2:38 PM
To: [email-masked]
Subject: [pim] Assert Issue resulting in assert-loser forwarding onto
LAN

I noticed an issue with the draft that results in the assert-loser
forwarding traffic onto the LAN. Here is the scenario with respect to
the router that is misbehaving:

1. Consider interface I on a router A.

    RPF_Interface(RP(G)) is also I.

2. After a SPT switchover, an (S,G) entry is also created on router A.

    SPT bit is set once traffic starts flowing down the source-specific
tree.

3. Because of another router B on the LAN that is also forwarding
traffic onto the LAN, there is an (S,G) assert election between A and B
on the LAN.

    As a result, A becomes assert loser and B becomes assert winner.

4. A is now expected to not forward traffic coming down the SPT onto
interface I, but it does. 

5. A would normally send a Prune(S,G,rpt) on RPF_Interface(RP(G)). If B
is RPF'(*,G), it should cause it to stop forwarding to the LAN and
should cause Assert(S,G,I) on B to transition to no-info. However, it is
possible that there is a third router C that is sending (*,G) Joins to B
on I. Then the Prune(S,G,rpt) from A would be over-ridden by the (*,G)
Join from C. So we end up with both A and B forwarding traffic onto the
LAN. 

 To fix this:

1.	inherited_olist(S,G,rpt) must be modified by replacing the
lost_assert(S,G,rpt) with lost_assert(S,G). This will cause the
Assert(S,G,I) loser (router A in the above example) to stop forwarding
traffic onto the LAN. 

Inherited_olist(S,G,rpt) = joins(*,*,RP) (+) joins(*,G) (-)
prunes(S,G,rpt) (+) (pim_include(*,G) (-) pim_exclude(S,G))

                                      (-) (lost_assert(*,G) (+)
lost_assert(S,G))

2.	But by doing so, we risk blackholing the traffic since router A
sends  a Prune(S,G,rpt). So it is also necessary to make sure router A
does not send the Prune(S,G,rpt) in this scenario. This requires
modifying PruneDesired(S,G,rpt) to the following:

PruneDesired(S,G,rpt) = RPTJoinDesired(G) &&
!lost_assert(S,G,RPF_Interface(RP(G)) &&

                                     (inherited_olist(S,G,rpt) == NULL
|| RPF'(S,G) != RPF'(*,G)) 

_______________________________________________
pim mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/pim