Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

header-navigation
keyboard_arrow_up
close
keyboard_arrow_left
Multicast Protocols User Guide
Table of Contents Expand all
list Table of Contents
file_download PDF
{ "lLangCode": "en", "lName": "English", "lCountryCode": "us", "transcode": "en_US" }
English
keyboard_arrow_right

Example: Configuring PIM Make-Before-Break Join Load Balancing

date_range 23-Nov-23

Understanding the PIM Automatic Make-Before-Break Join Load-Balancing Feature

The PIM automatic make-before-break (MBB) join load-balancing feature introduces redistribution of PIM joins on equal-cost multipath (ECMP) links, with minimal disruption of traffic, when an interface is added to an ECMP path.

The existing PIM join load-balancing feature enables distribution of joins across ECMP links. In case of a link failure, the joins are redistributed among the remaining ECMP links, and traffic is lost. The addition of an interface causes no change to this distribution of joins unless the clear pim join-distribution command is used to load-balance the existing joins to the new interface. If the PIM automatic MBB join load-balancing feature is configured, this process takes place automatically.

The feature can be enabled by using the automatic statement at the [edit protocols pim join-load-balance] hierarchy level. When a new neighbor is available, the time taken to create a path to the neighbor (standby path) can be configured by using the standby-path-creation-delay seconds statement at the [edit protocols pim] hierarchy level. In the absence of this statement, the standby path is created immediately, and the joins are redistributed as soon as the new neighbor is added to the network. For a join to be moved to the standby path in the absence of traffic, the idle-standby-path-switchover-delay seconds statement is configured at the [edit protocols pim] hierarchy level. In the absence of this statement, the join is not moved until traffic is received on the standby path.

content_copy zoom_out_map
protocols {
    pim {
        join-load-balance {
            automatic;
        }
        standby-path-creation-delay seconds;
        idle-standby-path-switchover-delay seconds;
    }
}

Example: Configuring PIM Make-Before-Break Join Load Balancing

This example shows how to configure the PIM make-before-break (MBB) join load-balancing feature.

Requirements

This example uses the following hardware and software components:

  • Three routers that can be a combination of M Series Multiservice Edge Routers (M120 and M320 only), MX Series 5G Universal Routing Platforms, or T Series Core Routers (TX Matrix and TX Matrix Plus only).

  • Junos OS Release 12.2 or later.

Before you configure the MBB feature, be sure you have:

  • Configured the device interfaces.

  • Configured an interior gateway protocol (IGP) for both IPv4 and IPv6 routes on the devices (for example, OSPF and OSPFv3).

  • Configured multiple ECMP interfaces (logical tunnels) using VLANs on any two routers (for example, Routers R1 and R2).

Overview

Junos OS provides a PIM automatic MBB join load-balancing feature to ensure that PIM joins are evenly redistributed to all upstream PIM neighbors on an equal-cost multipath (ECMP) path. When an interface is added to an ECMP path, MBB provides a switchover to an alternate path with minimal traffic disruption.

Topology

In this example, three routers are connected in a linear manner between source and receiver. An IGP protocol and PIM sparse mode are configured on all three routers. The source is connected to Router R0, and five interfaces are configured between Routers R1 and R2. The receiver is connected to Router R2, and PIM automatic MBB join load balancing is configured on Router R2.

Figure 1 shows the topology used in this example.

Figure 1: Configuring PIM Automatic MBB Join Load BalancingConfiguring PIM Automatic MBB Join Load Balancing

Configuration

CLI Quick Configuration

To quickly configure this example, copy the following commands, paste them into a text file, remove any line breaks, change any details necessary to match your network configuration, and then copy and paste the commands into the CLI at the [edit] hierarchy level.

Router R0 (Source)

content_copy zoom_out_map
set protocols pim interface all mode sparse
set protocols pim interface all version 2
set protocols pim rp static address 10.255.12.34
set protocols pim rp static address abcd::10:255:12:34

Router R1 (RP)

content_copy zoom_out_map
set protocols pim interface all mode sparse
set protocols pim interface all version 2
set protocols pim rp local family inet address 10.255.12.34
set protocols pim rp local family inet6 address abcd::10:255:12:34

Router R2 (Receiver)

content_copy zoom_out_map
set protocols pim interface all mode sparse
set protocols pim interface all version 2
set protocols pim rp static address 10.255.12.34
set protocols pim rp static address abcd::10:255:12:34
set protocols mld interface ge-0/0/3 version 1
set protocols mld interface ge-0/0/3 static group ff05::e100:1 group-count 100
set protocols pim join load-balance automatic
set protocols pim standby-path-creation-delay 5
set protocols pim idle-standby-path-switchover-delay 10

Configuring PIM MBB Join Load Balancing

Step-by-Step Procedure

The following example requires that you navigate various levels in the configuration hierarchy. For information about navigating the CLI, see Using the CLI Editor in Configuration Mode in the Junos OS CLI User Guide.

To configure PIM MBB join load balancing across the setup:

  1. Configure PIM sparse mode on all three routers.

    content_copy zoom_out_map
    [edit protocols pim interface all]
    user@host# set mode sparse
    user@host# set version 2
    
  2. Configure Router R1 as the RP.

    content_copy zoom_out_map
    [edit protocols pim rp local]
    user@R1# set family inet address 10.255.12.34
    user@R1# set family inet6 address abcd::10:255:12:34
    
  3. Configure the RP static address on non-RP routers (R0 and R2).

    content_copy zoom_out_map
    [edit protocols pim rp ]
    user@host# set static address 10.255.12.34
    user@host# set static address abcd::10:255:12:34
    
  4. Configure the Multicast Listener Discovery (MLD) group for ECMP interfaces on Router R2.

    content_copy zoom_out_map
    [edit protocols mld interface ge-0/0/3]
    user@R2# set version 1
    user@R2# set static group ff05::e100:1 group-count 100
    
  5. Configure the PIM MBB join load-balancing feature on the receiver router (Router R2).

    content_copy zoom_out_map
    [edit protocols pim]
    user@R2# set join load-balance automatic
    user@R2# set standby-path-creation-delay 5
    user@R2# set idle-standby-path-switchover-delay 10
    

Results

From configuration mode, confirm your configuration by entering the show protocols command. If the output does not display the intended configuration, repeat the instructions in this example to correct the configuration.

content_copy zoom_out_map
user@R0# show protocols
ospf {
    area 0.0.0.0 {
        interface lo0.0;
        interface ge-0/0/3.1;
        interface ge-0/0/3.2;
        interface ge-0/0/3.3;
        interface ge-0/0/3.4;
        interface ge-0/0/3.5;
    }
}
    ospf3 {
        area 0.0.0.0 {
            interface lo0.0;
            interface ge-0/0/3.1;
            interface ge-0/0/3.2;
            interface ge-0/0/3.3;
            interface ge-0/0/3.4;
            interface ge-0/0/3.5;
        }
    }
    pim {
        rp {
            static {
                address 10.255.12.34;
                address abcd::10:255:12:34;
            }
        }
        interface all {
            mode sparse;
            version 2;
        }
        interface fxp0.0 {
            disable;
        }
        interface ge-0/0/3.1;
        interface ge-0/0/3.2;
        interface ge-0/0/3.3;
        interface ge-0/0/3.4;
        interface ge-0/0/3.5;
    }
content_copy zoom_out_map
user@R1# show protocols
ospf {
    area 0.0.0.0 {
        interface lo0.0;
        interface ge-0/0/3.1;
        interface ge-0/0/3.2;
        interface ge-0/0/3.3;
        interface ge-0/0/3.4;
        interface ge-0/0/3.5;
    }
}
    ospf3 {
        area 0.0.0.0 {
            interface lo0.0;
            interface ge-0/0/3.1;
            interface ge-0/0/3.2;
            interface ge-0/0/3.3;
            interface ge-0/0/3.4;
            interface ge-0/0/3.5;
        }
    }
    pim {
        rp {
            local {
                family inet {
                    address 10.255.12.34;
                }
                family inet6 {
                    address abcd::10:255:12:34;
                }
            }
        }
        interface all {
            mode sparse;
            version 2;
        }
        interface fxp0.0 {
            disable;
        }
        interface ge-0/0/3.1;
        interface ge-0/0/3.2;
        interface ge-0/0/3.3;
        interface ge-0/0/3.4;
        interface ge-0/0/3.5;
    }
content_copy zoom_out_map
user@R2# show protocols
mld {
    interface ge-0/0/3.1 {
        version 1;
        static {
            group ff05::e100:1 {
                group-count 100;
            }
        }
    }
    ospf {
        area 0.0.0.0 {
            interface lo0.0;
            interface ge-1/0/7.1;
            interface ge-1/0/7.2;
            interface ge-1/0/7.3;
            interface ge-1/0/7.4;
            interface ge-1/0/7.5;
            interface ge-0/0/3.1;
        }
    }
    ospf3 {
        area 0.0.0.0 {
            interface lo0.0;
            interface ge-1/0/7.1;
            interface ge-1/0/7.2;
            interface ge-1/0/7.3;
            interface ge-1/0/7.4;
            interface ge-1/0/7.5;
            interface ge-0/0/3.1;
        }
    }
    pim {
        rp {
            static {
                address 10.255.12.34;
                address abcd::10:255:12:34;
            }
        }
        interface all {
            mode sparse;
            version 2;
        }
        interface fxp0.0 {
            disable;
        }
        interface ge-1/0/7.1;
        interface ge-1/0/7.2;
        interface ge-1/0/7.3;
        interface ge-1/0/7.4;
        interface ge-1/0/7.5;
        interface ge-0/0/3.1;
        join-load-balance {
            automatic;
        }
        standby-path-creation-delay 5;
        idle-standby-path-switchover-delay 10;
    }

Verification

Verifying Interface Configuration

Purpose

Verify that the configured interfaces are functional.

Action

Send 100 (S,G) joins from the receiver to Router R2 . From the operational mode of Router R2, run the show pim interfaces command.

content_copy zoom_out_map
user@R2> show pim interfaces

Stat = Status, V = Version, NbrCnt = Neighbor Count,
S = Sparse, D = Dense, B = Bidirectional,
DR = Designated Router, P2P = Point-to-point link,
Active = Bidirectional is active, NotCap = Not Bidirectional Capable
Name       Stat Mode IP V State     NbrCnt JoinCnt(sg/*g) DR address
ge-0/0/3.1 Up      S 4  2 DR,NotCap 0      0/0            70.0.0.1
ge-1/0/7.1 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.2
ge-1/0/7.2 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.6
ge-1/0/7.3 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.10
ge-1/0/7.4 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.14
ge-1/0/7.5 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.18

The output lists all the interfaces configured for use with the PIM protocol. The Stat field indicates the current status of the interface. The DR address field lists the configured IP addresses. All the interfaces are operational. If the output does not indicate that the interfaces are operational, reconfigure the interfaces before proceeding.

Meaning

All the configured interfaces are functional in the network.

Verifying PIM

Purpose

Verify that PIM is operational in the configured network.

Action

From operational mode, enter the show pim statistics command.

content_copy zoom_out_map
user@R2> show pim statistics

PIM Message type        Received       Sent  Rx errors
V2 Hello                    4253       5269          0
V2 Register                    0          0          0
V2 Register Stop               0          0          0
V2 Join Prune                  0       1750          0
V2 Bootstrap                   0          0          0
V2 Assert                      0          0          0
V2 Graft                       0          0          0
V2 Graft Ack                   0          0          0
V2 Candidate RP                0          0          0
V2 State Refresh               0          0          0
V2 DF Election                 0          0          0
V1 Query                       0          0          0
V1 Register                    0          0          0
V1 Register Stop               0          0          0
V1 Join Prune                  0          0          0
V1 RP Reachability             0          0          0
V1 Assert                      0          0          0
V1 Graft                       0          0          0
V1 Graft Ack                   0          0          0
AutoRP Announce                0          0          0
AutoRP Mapping                 0          0          0
AutoRP Unknown type            0
Anycast Register               0          0          0
Anycast Register Stop          0          0          0

Global Statistics

Hello dropped on neighbor policy              0
Unknown type                                  0
V1 Unknown type                               0
Unknown Version                               0
Neighbor unknown                              0
Bad Length                                    0
Bad Checksum                                  0
Bad Receive If                                0
Rx Bad Data                                   0
Rx Intf disabled                              0
Rx V1 Require V2                              0
Rx V2 Require V1                              0
Rx Register not RP                            0
Rx Register no route                          0
Rx Register no decap if                       0
Null Register Timeout                         0
RP Filtered Source                            0
Rx Unknown Reg Stop                           0
Rx Join/Prune no state                        0
Rx Join/Prune on upstream if                  0
Rx Join/Prune for invalid group               0
Rx Join/Prune messages dropped                0
Rx sparse join for dense group                0
Rx Graft/Graft Ack no state                   0
Rx Graft on upstream if                       0
Rx CRP not BSR                                0
Rx BSR when BSR                               0
Anycast Register Stop          0          0          0

The V2 Hello field lists the number of PIM hello messages sent and received. The V2 Join Prune field lists the number of join messages sent before the join-prune-timeout value is reached. If both values are nonzero, PIM is functional.

Meaning

PIM is operational in the network.

Verifying the PIM Automatic MBB Join Load-Balancing Feature

Purpose

Verify that the PIM automatic MBB join load-balancing feature works as configured.

Action

To see the effect of the MBB feature on Router R2:

  1. Run the show pim interfaces operational mode command before disabling an interface.

    content_copy zoom_out_map
    user@R2> show pim interfaces
    Stat = Status, V = Version, NbrCnt = Neighbor Count,
    S = Sparse, D = Dense, B = Bidirectional,
    DR = Designated Router, P2P = Point-to-point link,
    Active = Bidirectional is active, NotCap = Not Bidirectional Capable
    Name       Stat Mode IP V State     NbrCnt JoinCnt(sg/*g) DR address
    ge-0/0/3.1 Up      S 4  2 DR,NotCap 0      0/0            70.0.0.1
    ge-1/0/7.1 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.2
    ge-1/0/7.2 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.6
    ge-1/0/7.3 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.10
    ge-1/0/7.4 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.14
    ge-1/0/7.5 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.18
    

    The JoinCnt(sg/*g) field shows that the 100 joins are equally distributed among the five interfaces.

  2. Disable the ge-1/0/7.5 interface.

    content_copy zoom_out_map
    [edit]
    user@R2# set interfaces ge-1/0/7.5 disable
    user@R2# commit
    
  3. Run the show pim interfaces command to check if load balancing of joins is taking place.

    content_copy zoom_out_map
    user@R2> show pim interfaces
    Stat = Status, V = Version, NbrCnt = Neighbor Count,
    S = Sparse, D = Dense, B = Bidirectional,
    DR = Designated Router, P2P = Point-to-point link,
    Active = Bidirectional is active, NotCap = Not Bidirectional Capable
    Name       Stat Mode IP V State     NbrCnt JoinCnt(sg/*g) DR address
    ge-0/0/3.1 Up      S 4  2 DR,NotCap 0      0/0            70.0.0.1
    ge-1/0/7.1 Up      S 4  2 DR,NotCap 1      25/0           14.0.0.2
    ge-1/0/7.2 Up      S 4  2 DR,NotCap 1      25/0           14.0.0.6
    ge-1/0/7.3 Up      S 4  2 DR,NotCap 1      25/0           14.0.0.10
    ge-1/0/7.4 Up      S 4  2 DR,NotCap 1      25/0           14.0.0.14
    

    The JoinCnt(sg/*g) field shows that the 100 joins are equally redistributed among the four active interfaces.

  4. Add the removed interface on Router R2.

    content_copy zoom_out_map
    [edit]
    user@R2# delete interfaces ge-1/0/7.5 disable
    user@R2# commit
    
  5. Run the show pim interfaces command to check if load balancing of joins is taking place after enabling the inactive interface.

    content_copy zoom_out_map
    user@R2> show pim interfaces
    Stat = Status, V = Version, NbrCnt = Neighbor Count,
    S = Sparse, D = Dense, B = Bidirectional,
    DR = Designated Router, P2P = Point-to-point link,
    Active = Bidirectional is active, NotCap = Not Bidirectional Capable
    Name       Stat Mode IP V State     NbrCnt JoinCnt(sg/*g) DR address
    ge-0/0/3.1 Up      S 4  2 DR,NotCap 0      0/0            70.0.0.1
    ge-1/0/7.1 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.2
    ge-1/0/7.2 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.6
    ge-1/0/7.3 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.10
    ge-1/0/7.4 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.14
    ge-1/0/7.5 Up      S 4  2 DR,NotCap 1      20/0           14.0.0.18
    

    The JoinCnt(sg/*g) field shows that the 100 joins are equally distributed among the five interfaces.

    Note:

    This output should resemble the output in Step 1.

Meaning

The PIM automatic MBB join load-balancing feature works as configured.

footer-navigation