Subject: PIM-SMv2 interoperability issue w.r.t Bootstrap packets

From: Nair Venugopal <[email-masked]>
Date: Tue, 19 Oct 1999 12:22:25 -0700 (PDT)

I would like to do a survey of how various PIM-SMv2 
implementations forward Bootstrap packets on downstream 
links. First, a bit of context.

While testing PIM-SM interoperability with another 
implementation { Cisco-11.3(3)T }, we observed that our 
implementation  was dropping Bootstrap packets forwarded 
by a Cisco router (R2 in the Figure1 below). 

Figure1:
-------
                  |             |
    R1(RP/BSR)----|-----R2------|------R3---
                  |             |

### all interfaces have a configured IP address 
### R1,R3: 3Com routers
### R2   : Cisco router

On investigating, it turned out that router R2 was forwarding
Bootstrap packets to R3, using the IP address of its interface
on the R2-R1 link as the <source-IP> in the IP header of the 
Bootstrap packet.

Our implementation ignored the Bootstrap packet because 
it failed the 
   "was the Bootstrap packet sent by the RPF neighbor towards the BSR" 
check (rfc 2362: section 3.6.3.1).

Our "RPF neighbor" check to handle this scenario is as follows.
  a) Do we have an RPF route to the BSR's IP address ?

  b) Did we receive the Bootstrap packet on the correct incoming i/f ?

  c) Is the the previous-hop gateway IP address  of this RPF route
     equal to the srcIP address in the bootstrap packet?

     OR

     If the link on which the we received the BSR packet is 
     an UnNumbered link, does the <source-IP> in the IP header 
     of the bootstrap packet exist in the PIM neighbor list 
     for this link.

We dropped the packet from R2 because check (c) failed. 
i.e., because the srcIP address in the Bootstrap packet forwarded
by R2 did not match the IP address of any of the 
PIM neighbors on the R2-R3 link.

----------------------------------------------------------------------
So my questions are....

Figure2:
-------
            R8(BSR)
           /      \
          /        \
          R6       R7
           \_______/
              |
              R5
           ---|---
              |
              R4
 
 1) Are the checks listed above, specifically (c) TOO conservative?
    Or should one "lighten-up" and accept/process all Bootstrap
    packets received on the correct  RPF interface?

 2) In the topology (figure 2), should R4 get multiple 
    BSR packets every Bootstrap period ? 
 
 3) In the topology (figure 2), should R5 process the 
    RP-Sets in the BSR packets forwarded by both R6 and R7 ?

 4) If one ignores the check (c) above, there is no protocol failure;
    only additional processing on each downstream router. Is this correct?

 5) For PIM packets sent out on UnNumbered links, are there 
    any de-facto conventions for picking up the <sourceIP> in the 
    in the IP header.

    E.g.: All "link-local" PIM packets (Hellos/JoinPrunes/BootStraps/Asserts)
          sourced on an UnNumbered link SHOULD use the same IP
          address as the source IP address in the IP header?

Thanks.
--Venu

--------------------------------------------------------------------
Nair Venugopal  --- [email-masked] --- 3Com WAP Engineering

---

From: [email-masked]
Date: Tue, 19 Oct 1999 17:00:03 -0700 (PDT)

>     packets received on the correct  RPF interface?
i don't think so.  in the following topology

       -+---+---+-  L1
        |   |   |
  L3 - BSR  R1  R2
        |   |   |
       -+---+---+-  L2

say BSR uses it's L3 addr as the BSR addr, R1 RPF's L1 to BSR and R2
RPF's L2 to BSR you'd get looping BSR's if you only checked  the
neighbors address.   also requiring the forwarder to use it's oif when 
sending the BSR.

>     only additional processing on each downstream router. Is this correct?
i think you get a failure, or an extreme case of reliability :)

- rusty

---

From: [email-masked]
Date: Tue, 19 Oct 1999 17:34:28 -0700 (PDT)

> neighbors address.   also requiring the forwarder to use it's oif when 
  ^^^^^^^^^^^^^^^^^

oops, ment to say interface.

- rusty