Subject: PIM-SM <--> BGMP interaction

From: [email-masked]
Date: Mon, 9 Apr 2001 15:46:01 -0700

Hi all,

     I have some questions on the PIM-SM behavior of a RP router in the
following scenario:

(1) BGMP/MASC  is used as the inter-domain multicast routing protocol
(2) group g is is rooted at domain G
(3) The RP router is in domain D running PIM-SM and is the shared-domain tree
ingress border router for group g
(4) receivers for (*, g) traffic exists in domain D
(5) (s,g) traffic is active and is sourced in a domain S and is delivered to
domain D through domain G.

                       +--- G ---+
                       |         |
                       |         |
                       S         D
                       |         |

In this situation,
(a) Will RP ever have register/regiser-stop interaction for (s,g) traffic?
(b) Will RP ever send PIM-SM (s,g) join toward s?  If so, how does it get
triggered? Is KeepAliveTImer(s,g) running?
(c) Is the "Data Packet Forwarding Rules" in the PIM-SM spec still vaild?
According to the PIM-SM spec, RPF_interface(RP) at the RP is the virtual
interface on which register packets are received.  So I assume RPF_interface(RP)
!= interface connected to domain G.  If RPF_interface(s) != (interface connected
to domain G) either, then (s,g) traffics will be dropped according to the PIM-SM
forwarding rules.

Thanks for answering these questions.

-- James C.  Huang

---

From: "Dave Thaler" <[email-masked]>
Date: Mon, 9 Apr 2001 16:11:10 -0700

> (a) Will RP ever have register/regiser-stop interaction for 

No.

> (b) Will RP ever send PIM-SM (s,g) join toward s?  If so, how 
> does it get triggered? Is KeepAliveTImer(s,g) running?

No, it's similar to when the source is directly connected to the RP.

> to domain G) either, then (s,g) traffics will be dropped 

Per RFC 2715, the iif for (*,G) is the interface towards domain G, 
and PIM only applies an RPF check if the iif is owned by PIM, 
which is not the case here.

-Dave

---

From: [email-masked]
Date: Wed, 11 Apr 2001 11:47:38 -0700

From:  James Huang@MITEL on 04/11/2001 11:47 AM PDT
>James Huang wrotes:
>>      I have some questions on the PIM-SM behavior of a RP
>> router in the following scenario:
>>
>> (3) The RP router is in domain D running PIM-SM and is the
>> shared-domain tree ingress border router for group g
>> (5) (s,g) traffic is active and is sourced in a domain S and
>> is delivered to domain D through domain G.
>>
>>                        +--- G ---+
>>                        |         |
>>                        |         |
>>                        S         D
>>                        |         |
>>
>>
>> Is the "Data Packet Forwarding Rules" in sec 4.2 of the latest PIM-SM draft
>> still vaild?
>> According to the PIM-SM draft, RPF_interface(RP) at the RP is
>> the virtual interface on which register packets are received.  So I
>> assume RPF_interface(RP) != interface connected to domain G.
>> If RPF_interface(s) != (interface connected to domain G) either,
>> then (s,g) traffics will be dropped according to the PIM-SM
>> forwarding rules.
>

Sec 4.2 of the latest PIM-SM draft (draft-ietf-pim-sm-v2-new-02.txt) has the
following section of code:

On receipt on a data from S to G on interface iif:

 if( DirectlyConnected(S) == TRUE ) {
      set KeepaliveTimer(S,G) to Keepalive_Period
      # Note: register state transition may happen as a result
      # of restarting KeepaliveTimer, and must be dealt with here.
 }

 Update_SPTbit(S,G,iif)

 if( iif == RPF_interface(S) AND UpstreamJPState(S,G) == Joined ) {
    oiflist = inherited_olist(S,G)
    if( oiflist != NULL ) {
        restart KeepaliveTimer(S,G)
    }
 } else if( iif == RPF_interface(RP) AND SPTbit(S,G) == FALSE) {
   oiflist = inherited_olist(S,G,rpt)
 } else {
    # Note: RPF check failed
    if ( SPTbit(S,G) == TRUE AND iif is in inherited_olist(S,G) ) {
      send Assert(S,G) on iif
    } else if ( SPTbit(S,G) == FALSE AND
                iif is in inherited_olist(S,G,rpt) {
       send Assert(*,G) on iif
    }
 }

 oiflist = oiflist (-) iif
 forward packet on all interfaces in oiflist

This code does not differentiate packets recieived from a iif owned by PIM from
packets received from a iif owned by BGMP. So unless this code is changed
accordingly, it is likely that packets will be dropped by PIM-SM component of a
PMBR if BGMP is used as the inter-domain routing protocol.

-- James Huang

---

From: "Dave Thaler" <[email-masked]>
Date: Wed, 11 Apr 2001 14:45:27 -0700

> Sec 4.2 of the latest PIM-SM draft 
> (draft-ietf-pim-sm-v2-new-02.txt) has the
[...]
> PMBR if BGMP is used as the inter-domain routing protocol.

The code you quote assumes that all interfaces are owned by
PIM-SM.  (Hence, it's not just BGMP, it's *any* other protocol 
using other interfaces, that the quoted code would have a problem
with.)  The PIM-SM spec only specifies the behavior of
a PIM-SM router, not of a PIM-SM border router.

Hence, RFC 2715 overrides what's in the PIM-SM spec.

-Dave

---

From: "Dave Thaler" <[email-masked]>
Date: Wed, 11 Apr 2001 16:33:40 -0700

James Huang writes:
>      Here is the quote of Rule 2 of RFC 2715 (section 2),
> 
>    Rule 2: The component owning an interface specifies the 
> criteria for
>            which packets received on that interface are to be accepted
>            or dropped (e.g., whether to perform an RPF check, and what
>            scoped boundaries exist on that interface).  Once 
> a packet is
>            accepted, however, it is processed according to the
>            forwarding rules of all components.
> 
>      According to this rule, when a multicast packet is 
> received by the BGMP
> component, the following will happen
>      (1) BGMP component will check if the packet should be 
> accepted or dropped.
>      (2) If the packet is accepted, BGMP component will 
> forward it to all
> targets (other than the iif)
>      (3) If PIM-SM is one of the target, then PIM-SM will 
> forward it according
> to PIM-SM's Data packet forwarding rules (which may include 
> some RPF check.)

No, it definitely shouldn't include some RPF check.
The RPF check is applied when (and only when) determining
whether to accept a packet.  

Once the determination to accept has been made, the
packet will go out whatever interfaces are in the oiflist
(and PIM controls whether its interfaces appear in the oiflist).

>      Now, if the PIM-SM data packet forwarding rules for a 
> border router is
> exactly the same as specified in section 4.2 of 
> draft-ietf-pim-sm-v2-new-02.txt,
> packets will likely be dropped by the PIM-SM component.  
> Section 4.4 of RFC 2715
> does not specify any change for PIM-SM forwarding rules on a 
> border router.

That would be a broken implementation.

-Dave