[Contents] [Prev] [Next] [Index] [Report an Error]

Configuring PIM Join Load Balancing

By default, PIM join messages are sent toward a source based on the RPF routing table check. If there is more than one equal-cost path toward the source, then one upstream interface is chosen to send the join message and add to the multicast data tree. This interface is also used for all downstream traffic, so even though there are alternatives interfaces available, the multicast load is concentrated on one upstream interface and router.

For PIM sparse mode, you can configure PIM join load balancing to spread join messages and traffic across equal-cost upstream paths (interfaces and routers) provided by unicast routing towards a source. PIM join load balancing is only supported for PIM sparse mode configurations.

To configure join load balancing for PIM sparse mode, include the join-load-balance statement:

join-load-balance;

You can include this statement at the following hierarchy levels:

By default, when multiple PIM joins are received for different groups, all joins are sent to the same upstream gateway chosen by the unicast routing protocol. Even if there are multiple equal-cost paths available, these alternative paths are not utilized to distribute multicast traffic from the source to the various groups.

When PIM join load balancing is configured, the PIM joins are distributed equally among all equal-cost upstream interfaces and neighbors. Every new join triggers the selection of the least loaded upstream interface and neighbor. If there are multiple neighbors on the same interface (for example, on a LAN), join load balancing maintains a value for each of the neighbors and distributes multicast joins (and downstream traffic) among these as well.

Join counts for interfaces and neighbors are maintained globally and not on a per-source basis. Therefore, there is no guarantee that joins for a particular source will be load-balanced, but the joins for all sources and all groups known to the router will be load-balanced. There is also no way to administratively give preference to one neighbor over another: all equal-cost paths are treated the same way.

This example configures join load balancing for PIM sparse mode:

[edit protocols pim]
rp {
static {
address 10.10.10.1;
}
}
interface all {
mode sparse;
version 2;
}
join-load-balance;

You can find out if there are multiple paths available for a source (for example, an RP) with the output of the show pim join extensive or show pim source commands.


user@router> show pim join extensive
Instance: PIM.master Family: INET

Group: 224.1.1.1
    Source: *
    RP: 10.255.245.6
    Flags: sparse,rptree,wildcard
    Upstream interface: t1–0/2/3.0
    Upstream neighbor: 192.168.38.57
    Upstream state: Join to RP
    Downstream neighbors:
        Interface: t1–0/2/1.0
            192.168.38.16 State: JOIN Flags; SRW Timeout: 164
Group: 224.2.127.254
    Source: *
    RP: 10.255.245.6
    Flags: sparse,rptree,wildcard
    Upstream interface: so–0/3/0.0
    Upstream neighbor: 192.168.38.47
    Upstream state: Join to RP
    Downstream neighbors:
        Interface: t1–0/2/3.0
            192.168.38.16 State: JOIN Flags; SRW Timeout: 164

Note that the for this router, the RP at IP address 10.255.245.6 is the source for two multicast groups: 224.1.1.1 and 224.2.127.254. This router has two equal-cost paths through two different upstream interfaces (t1–0/2/3.0 and so-0/3/0.0) with two different neighbors (192.168.38.57 and 192.168.38.47). This router is a good candidate for PIM join load balancing.

If load balancing is enabled for this router, the number of PIM joins sent on each interface is shown in the output for the show pim interfaces command.


user@router> show pim interfaces
Instance: PIM.master

Name               Stat Mode        IP V State NbrCnt JoinCnt DR address
lo0.0              Up   Sparse       4 2 DR         0       0 10.255.168.58
pe-1/2/0.32769     Up   Sparse       4 2 P2P        0       0 
so-0/3/0.0         Up   Sparse       4 2 P2P        1       1 
t1-0/2/1.0         Up   Sparse       4 2 P2P        1       0 
t1-0/2/3.0         Up   Sparse       4 2 P2P        1       1 
lo0.0              Up   Sparse       6 2 DR         0       0 fe80::2a0:a5ff:4b7

Note that the two equal-cost paths shown by the show pim join extensive command now have nonzero join counts. The counts should never differ by more than one if they were zero when load balancing commenced (joins prior to load balancing are not redistributed). Join count also appears in the show pim neighbors detail output:


user@router> show pim neighbors detail
Interface: so-0/3/0.0

    Address: 192.168.38.46,      IPv4, PIM v2, Mode: Sparse, Join Count: 0
        Hello Option Holdtime: 65535 seconds
        Hello Option DR Priority: 1
        Hello Option Generation ID: 1689116164
        Hello Option LAN Prune Delay: delay 500 ms override 2000 ms

    Address: 192.168.38.47,      IPv4, PIM v2, Join Count: 1
        BFD: Disabled
        Hello Option Holdtime: 105 seconds 102 remaining
        Hello Option DR Priority: 1
        Hello Option Generation ID: 792890329
        Hello Option LAN Prune Delay: delay 500 ms override 2000 ms

Interface: t1-0/2/3.0

    Address: 192.168.38.56,      IPv4, PIM v2, Mode: Sparse, Join Count: 0
        Hello Option Holdtime: 65535 seconds
        Hello Option DR Priority: 1
        Hello Option Generation ID: 678582286
        Hello Option LAN Prune Delay: delay 500 ms override 2000 ms

    Address: 192.168.38.57,      IPv4, PIM v2, Join Count: 1
        BFD: Disabled
        Hello Option Holdtime: 105 seconds 97 remaining
        Hello Option DR Priority: 1
        Hello Option Generation ID: 1854475503
        Hello Option LAN Prune Delay: delay 500 ms override 2000 ms

Note that the join count is nonzero on the two load-balanced interfaces toward the upstream neighbors.

PIM join load balancing only takes effect when the feature is configured. Prior joins are not redistributed to achieve perfect load balancing. In addition, if an interface or neighbor fails, the new joins are redistributed among remaining active interfaces and neighbors. However, when the interface or neighbor is restored, prior joins are not redistributed.

When PIM join load balancing is enabled in a multicast VPN scenario with point-to-multipoint (P2MP) tunnels, the load balancing is achieved based on the join counts for the far-end PE routers, not for any intermediate P routers.


[Contents] [Prev] [Next] [Index] [Report an Error]