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

From: Venugopal Hemige <[email-masked]>
Date: Thu, 22 Jul 2004 14:38:07 -0700 (PDT)

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.

    There is a local (*,G) receiver on I.

    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. And here is why:

Considering only the sets relevant to this scenario:

inherited_olist(S,G,rpt) = pim_include(*,G) (-) ( lost_assert(*,G) (+) lost_assert(S,G,rpt) )

We would expect lost_assert(S,G,rpt) to include interface I in the set. But since it is RPF_Interface(RP(G)), it does not get included in this set.

I think the bug is in the definition of lost_assert(S,G,rpt,I). The correct definition should be:

bool lost_assert(S,G,rpt,I) {
    if ( ( RPF_interface(RP(G)) == I  AND SPTbit(S,G) == FALSE ) OR
         ( RPF_interface(S) == I AND SPTbit(S,G) == TRUE ) ) {
       return FALSE
    } else {
       return ( AssertWinner(S,G,I) != NULL AND
                AssertWinner(S,G,I) != me )
    }
  }

If SPTbit is already set for the (S,G), then RPF_Interface(RP(G)) should just be treated as another (S,G) OIF and we should return TRUE if AssertWinner(S,G,I) is not me.

Am I missing something?

Regards,

-Venu

---------------------------------
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!

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