Description

Sometimes multicast traffic drop is seen when configuring PIM. This is article talks about why it happens and how to avoid it.   

Symptoms

Enabling a new PIM neighbor in the existing topology can cause traffic impact. In this example, a new device R3 is being added to the existing topology. The DR at present in the current topology is R1.

 

(RP) R4 ---------  R1 irb.2501 ------------- xe-1/0/1.2501 R3

                     | igmp

                    |vlan 2501

                  R2

   

 

PIM configuration and status in R1.

 

root@R1> show configuration protocols pim 

rp {

  static {

    address 100.11.0.254;

}

interface irb.2501 {

     mode sparse;

}

 

show configuration interfaces irb.2501 

family inet {

  address 10.1.1.65/26;

}

 

root@R1> show pim interfaces

 

Stat = Status, V = Version, NbrCnt = Neighbor Count,

S = Sparse, D = Dense, B = Bidirectional,

DR = Designated Router, DDR = Dual DR, DistDR = Distributed DR,

P2P = Point-to-point link, P2MP = Point-to-Multipoint,

Active = Bidirectional is active, NotCap = Not Bidirectional Capable

 

Name              Stat Mode IP V State       NbrCnt JoinCnt(sg/*g) DR address

irb.2501          Up      S    4 2 DR,NotCap        0 0/0           10.1.1.65

 

Above output shows that the R1 irb.2501 is the DR.

 

Making below configuration change in R3.

 

show interfaces xe-1/0/1.2501   

vlan-id 2501;

family inet {

   address 10.1.1.66/26;

}

protocols pim

rp {

      static {

        address 10.1.1.65; <<<<<<<<<<<<<<<<<<< creating a new RP

      }

    }

interface xe-1/0/1.2501 { <<<<<<<<<<<<<<<<<<<<<< Enabling the interface for PIM

  }

 

root@R3#commit                           

commit complete

 

On checking the R1 and R3, we can see the DR state is changed.

 

 

root@R1> show pim interfaces

 

Stat = Status, V = Version, NbrCnt = Neighbor Count,

S = Sparse, D = Dense, B = Bidirectional,

DR = Designated Router, DDR = Dual DR, DistDR = Distributed DR,

P2P = Point-to-point link, P2MP = Point-to-Multipoint,

Active = Bidirectional is active, NotCap = Not Bidirectional Capable

 

Name              Stat Mode IP V State       NbrCnt JoinCnt(sg/*g) DR address

irb.2501          Up  S    4 2 NotDR,NotCap     1 0/0           10.1.1.66 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< R1 became non-DR

 

root@R2# run show pim interfaces

Stat = Status, V = Version, NbrCnt = Neighbor Count,

S = Sparse, D = Dense, B = Bidirectional,

DR = Designated Router, DDR = Dual DR, DistDR = Distributed DR,

P2P = Point-to-point link, P2MP = Point-to-Multipoint,

Active = Bidirectional is active, NotCap = Not Bidirectional Capable

 

Name              Stat Mode IP V State       NbrCnt JoinCnt(sg/*g) DR address

xe-1/0/1.2501     Up  S    4 2 DR,NotCap        1 0/0           10.1.1.66 <<<<<<<<<<<<<<<<<<<<<<<<<< R2 is DR

ppe0.32769        Up  S    4 2 P2P,NotCap       0 0/0

 

 

We see traffic impact on existing groups in the R1 and also to new groups that join via R3.

 

Issue is seen because of the mismatch of RP and change of DR. Initially to start with R1 was the DR. When the configuration change was made, R3 became the DR and R1 became non-DR.

 

In this LAN scenario, DR election happened and R3 won the DR election because it had higher IP address. R3(DR) sends out a PIM join towards the RP which is R1 as per the config. R1 drops them as the received PIM join has different RP address than the RP address configured on R1.  So, there would be impact to new groups that joins R3.

 

The existing joins in R1 are not propagated towards RP as R1 is a non-DR now resulting in traffic failure.

Solution

When configuring a PIM neighbor to existing network, consider below.

 

  1. Make sure that the PIM-DR election is considered in a LAN scenario. On enabling the PIM neighborship in new device, the existing DR should remain a DR. Any change in the existing neighborship would result in traffic loss. One of the below options can be used
  • Use the interface ip lower than the DR ip or
  • Use lower interface priority for the non-DR.

Example: set protocols pim interface <> priority <> [ Please note the default priority of the interface is 1]

 

  • Use stickydr knob in the DR.

Example : set protocols pim interface <> stickydr 

 

2.Use the same RP address in the network.

 

Modification History

09/05/23 Initial Draft