Guest

Support

Load Splitting IP Multicast Traffic over ECMP

  • Viewing Options

  • PDF (298.0 KB)
  • Feedback
Load Splitting IP Multicast Traffic over ECMP

Table Of Contents

Load Splitting IP Multicast Traffic over ECMP

Contents

Prerequisites for Load Splitting IP Multicast Traffic over ECMP

Information About Load Splitting IP Multicast Traffic over ECMP

Load Splitting Versus Load Balancing

Default Behavior for IP Multicast When Multiple Equal-Cost Paths Exist

Methods to Load Split IP Multicast Traffic

Overview of ECMP Multicast Load Splitting

ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm

ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm

Predictability As a By-Product of Using the S-Hash and Basic S-G-Hash Algorithms for ECMP Multicast Load Splitting

Polarization As a By-Product of Using the S-Hash and Basic S-G-Hash Algorithms for ECMP Multicast Load Splitting

ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm

Effect of ECMP Multicast Load Splitting on PIM Neighbor Query and Hello Messages for RPF Path Selection

Effect of ECMP Multicast Loading Splitting on Assert Processing in PIM-DM and DF Election in Bidir-PIM

Effect of ECMP Multicast Load Splitting on the PIM Assert Process in PIM-SM and PIM-SSM

ECMP Multicast Load Splitting and Reconvergence When Unicast Routing Changes

Use of BGP with ECMP Multicast Load Splitting

Use of ECMP Multicast Load Splitting with Static Mroutes

Alternative Methods of Load Splitting IP Multicast Traffic

How to Load Split IP Multicast Traffic over ECMP

Enabling ECMP Multicast Load Splitting

ECMP Multicast Load Splitting

Prerequisites

Restrictions

Enabling ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm

Enabling ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm

Enabling ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm

Configuration Examples for Load Splitting IP Multicast Traffic over ECMP

Enabling ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm: Example

Enabling ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm: Example

Enabling ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm: Example

Where to Go Next

Additional References

Related Documents

Standards

MIBs

RFCs

Technical Assistance

Feature Information for Load Splitting IP Multicast Traffic over ECMP


Load Splitting IP Multicast Traffic over ECMP


First Published: May 2, 2005
Last Updated: February 27, 2007

This module describes how to load split IP multicast traffic over Equal Cost Multipath (ECMP). Multicast traffic from different sources or from different sources and groups are load split across equal-cost paths to take advantage of multiple paths through the network.

Finding Feature Information in This Module

Your Cisco IOS software release may not support all of the features documented in this module. To reach links to specific feature documentation in this module and to see a list of the releases in which each feature is supported, use the "Feature Information for Load Splitting IP Multicast Traffic over ECMP" section.

Finding Support Information for Platforms and Cisco IOS and Catalyst OS Software Images

Use Cisco Feature Navigator to find information about platform support and Cisco IOS and Catalyst OS software image support. To access Cisco Feature Navigator, go to http://www.cisco.com/go/cfn. An account on Cisco.com is not required.

Contents

Prerequisites for Load Splitting IP Multicast Traffic over ECMP

Information About Load Splitting IP Multicast Traffic over ECMP

How to Load Split IP Multicast Traffic over ECMP

Configuration Examples for Load Splitting IP Multicast Traffic over ECMP

Where to Go Next

Additional References

Feature Information for Load Splitting IP Multicast Traffic over ECMP

Prerequisites for Load Splitting IP Multicast Traffic over ECMP

This module assumes you have met the following prerequisites:

You understand the concepts in the "IP Multicast Technology Overview" module.

You have IP multicast configured in your network. See the "Configuring Basic IP Multicast" module.

Information About Load Splitting IP Multicast Traffic over ECMP

Before you load split IP multicast traffic, you should understand the following concepts:

Load Splitting Versus Load Balancing

Default Behavior for IP Multicast When Multiple Equal-Cost Paths Exist

Methods to Load Split IP Multicast Traffic

Overview of ECMP Multicast Load Splitting

Effect of ECMP Multicast Load Splitting on PIM Neighbor Query and Hello Messages for RPF Path Selection

Effect of ECMP Multicast Loading Splitting on Assert Processing in PIM-DM and DF Election in Bidir-PIM

Effect of ECMP Multicast Load Splitting on the PIM Assert Process in PIM-SM and PIM-SSM

ECMP Multicast Load Splitting and Reconvergence When Unicast Routing Changes

Use of BGP with ECMP Multicast Load Splitting

Use of ECMP Multicast Load Splitting with Static Mroutes

Alternative Methods of Load Splitting IP Multicast Traffic

Load Splitting Versus Load Balancing

Load splitting and load balancing are not the same. Load splitting provides a means to randomly distribute (*, G) and (S, G) traffic streams across multiple equal-cost reverse path forwarding (RPF) paths, which does not necessarily result in a balanced IP multicast traffic load on those equal-cost RPF paths. By randomly distributing (*, G) and (S, G) traffic streams, the methods used for load splitting IP multicast traffic attempt to distribute an equal amount of traffic flows on each of the available RPF paths not by counting the flows, but, rather, by making a pseudorandom decision. These methods are collectively referred to as ECMP multicast load splitting methods. ECMP multicast load splitting methods, thus, result in better load-sharing in networks where there are many traffic streams that utilize approximately the same amount of bandwidth.

If there are just a few (S, G) or (*, G) states flowing across a set of equal-cost links, the chance that they are well balanced is quite low. To overcome this limitation, precalculated source addresses—for (S, G) states—or rendezvous point (RP) addresses—for (*, G) states—can be used to achieve a reasonable form of load balancing. This limitation applies equally to the per-flow load splitting in Cisco Express Forwarding (CEF) or with EtherChannels: As long as there are only a few flows, those methods of load splitting will not result in good load distribution without some form of manual engineering.

Default Behavior for IP Multicast When Multiple Equal-Cost Paths Exist

By default, for Protocol Independent Multicast sparse mode (PIM-SM), Source Specific Multicast (PIM-SSM), bidirectional PIM (bidir-PIM), and PIM dense mode (PIM-DM) groups, if multiple equal-cost paths are available, Reverse Path Forwarding (RPF) for IPv4 multicast traffic is based on the PIM neighbor with the highest IP address. This method is referred to as the highest PIM neighbor behavior. This behavior is in accordance with RFC 2362 for PIM-SM, but also applies to PIM-SSM, PIM-DM, and bidir-PIM.

Figure 1 illustrates a sample topology that is used in this section to explain the default behavior for IP multicast when multiple equal-cost paths exist.

Figure 1 Default Behavior for IP Multicast When Multiple Equal-Cost Paths Exist

In Figure 1, two sources, S1 and S2, are sending traffic to IPv4 multicast groups, G1 and G2. Either PIM-SM, PIM-SSM, or PIM-DM can be used in this topology. If PIM-SM is used, assume that the default of 0 for the ip pim spt-threshold command is being used on Router 2, that an Interior Gateway Protocol (IGP) is being run, and that the output of the show ip route command for S1 and for S2 (when entered on Router 2) displays serial interface 0 and serial interface 1 on Router 1 as equal-cost next-hop PIM neighbors of Router 2.

Without further configuration, IPv4 multicast traffic in the topology illustrated in Figure 1 would always flow across one serial interface (either serial interface 0 or serial interface 1), depending on which interface has the higher IP address. For example, suppose that the IP addresses configured on serial interface 0 and serial interface 1 on Router 1 are 10.1.1.1 and 10.1.2.1, respectively. Given that scenario, in the case of PIM-SM and PIM-SSM, Router 2 would always send PIM join messages towards 10.1.2.1 and would always receive IPv4 multicast traffic on serial interface 1 for all sources and groups shown in Figure 1. In the case of PIM-DM, Router 2 would always receive IP multicast traffic on serial Interface 1, only that in this case, PIM join messages are not used in PIM-DM; instead Router 2 would prune the IP multicast traffic across serial interface 0 and would receive it through serial interface 1 because that interface has the higher IP address on Router 1.

IPv4 RPF lookups are performed by intermediate multicast router to determine the RPF interface and RPF neighbor for IPv4 (*,G) and (S, G) multicast routes (trees). An RPF lookup consists of RPF route-selection and route-path-selection. RPF route-selection operates solely on the IP unicast address to identify the root of the multicast tree. For (*, G) routes (PIM-SM and Bidir-PIM), the root of the multicast tree is the RP address for the group G; for (S, G) trees (PIM-SM, PIM-SSM and PIM-DM), the root of the multicast tree is the source S. RPF route-selection finds the best route towards the RP or source in the routing information base (RIB), and, if configured (or available), the Distance Vector Multicast Routing Protocol (DVMRP) routing table, the Multiprotocol Border Gateway Protocol (MBGP) routing table or configured static mroutes. If the resulting route has only one available path, then the RPF lookup is complete, and the next-hop router and interface of the route become the RPF neighbor and RPF interface of this multicast tree. If the route has more than one path available, then route-path-selection is used to determine which path to choose.

For IP multicast, the following route-path-selection methods are available:


Note All methods but the default method of route-path-selection available in IP multicast enable some form of ECMP multicast load splitting.


Highest PIM neighbor—This is the default method; thus, no configuration is required. If multiple equal-cost paths are available, RPF for IPv4 multicast traffic is based on the PIM neighbor with the highest IP address; as a result, without configuration, ECMP multicast load splitting is disabled by default.

ECMP multicast load splitting method based on source address—You can configure ECMP multicast load splitting using the ip multicast multipath command. Entering this form of the ip multicast multipath command enables ECMP multicast load splitting based on source address using the S-hash algorithm. For more information, see the "ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm" section.

ECMP multicast load splitting method based on source and group address—In Cisco IOS Release 12.2(33)SRB and subsequent 12.2SR releases, you can configure ECMP multicast load splitting using the ip multicast multipath command with the s-g-hash and basic keywords. Entering this form of the ip multicast multipath command enables ECMP multicast load splitting based on source and group address using the basic S-G-hash algorithm. For more information, see the "ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm" section.

ECMP multicast load splitting method based on source, group, and next-hop address—In Cisco IOS Release 12.2(33)SRB and subsequent 12.2SR releases, you can configure ECMP multicast load splitting using the ip multicast multipath command with the s-g-hash and next-hop-based keywords. Entering that form of the command splits IP multicast traffic based on source, group, and next-hop address using the next-hop-based S-G-hash algorithm. For more information, see the "ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm" section.

The default behavior (the highest PIM neighbor behavior) does not result in any form of ECMP load-splitting in IP multicast, but instead selects the PIM neighbor that has the highest IP address among the next-hop PIM neighbors for the available paths. A next hop is considered to be a PIM neighbor when it displays in the output of the show ip pim neighbor command, which is the case when PIM hello messages have been received from it and have not timed out. If none of the available next hops are PIM neighbors, then simply the next hop with the highest IP address is chosen.

Methods to Load Split IP Multicast Traffic

In general, the following methods are available to load split IP multicast traffic:

You can enable ECMP multicast load splitting based on source address, based on source and group address, or based on source, group, and next-hop address. After the equal-cost paths are recognized, ECMP multicast load splitting operates on a per (S, G) basis, rather than a per packet basis as in unicast traffic.

Alternative methods to load split IP multicast are to consolidate two or more equal-cost paths into a generic routing encapsulation (GRE) tunnel and allow the unicast routing protocol to perform the load splitting, or to load split across bundle interfaces, such as Fast or Gigabit EtherChannel interfaces, Multilink PPP (MLPPP) link bundles, or Multilink Frame Relay (FR.16) link bundles.

Overview of ECMP Multicast Load Splitting

By default, ECMP multicast load splitting of IPv4 multicast traffic is disabled. ECMP multicast load splitting can be enabled using the ip multicast multipath command.

ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm

The ip multicast multipath command is used to enable ECMP multicast load splitting traffic based on source address using the S-hash algorithm. When the ip multicast multipath command is configured, the RPF interface for each (*, G) or (S, G) state will be selected among the available equal-cost paths, depending on the RPF address to which the state resolves. For an (S, G) state, the RPF address is the source address of the state; for a (*, G) state, the RPF address is the address of the RP associated with the group address of the state.

When ECMP multicast load splitting based on source address is configured, multicast traffic for different states can be received across more than just one of the equal-cost interfaces. The method applied by IPv4 multicast is quite similar in principle to the default per-flow load splitting in IPv4 CEF or the load splitting used with Fast and Gigabit EtherChannels. This method of ECMP multicast load splitting, however, is subject to polarization.


Note For more information about ECMP multicast load splitting and polarization, see the "Polarization As a By-Product of Using the S-Hash and Basic S-G-Hash Algorithms for ECMP Multicast Load Splitting" section.


ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm

In Cisco IOS Release 12.2(33)SRB and subsequent 12.2SR releases, the ip multicast multipath command is used with the s-g-hash and basic keywords to enable ECMP multicast load splitting based on source and group address. The basic keyword enables a simple hash, referred to as the basic S-G-hash algorithm, which is based on source and group address. The basic S-G-hash algorithm is predictable because no randomization is used in coming up with the hash value. The S-G-hash mechanism, however, is subject to polarization because for a given source and group, the same hash is always picked irrespective of the router this hash is being calculated on.


Note For more information about ECMP multicast load splitting and polarization, see the "Polarization As a By-Product of Using the S-Hash and Basic S-G-Hash Algorithms for ECMP Multicast Load Splitting" section.



Note The basic S-G-hash algorithm ignores bidir-PIM groups.


Predictability As a By-Product of Using the S-Hash and Basic S-G-Hash Algorithms for ECMP Multicast Load Splitting

The method used by ECMP multicast load splitting in IPv4 multicast allows for consistent load splitting in a network where the same number of equal-cost paths are present in multiple places in a topology. If an RP address or source addresses are calculated once to have flows split across N paths, then they will be split across those N paths in the same way in all places in the topology. Consistent load splitting, thus, allows for predictability, which, in turns, enables load splitting of IPv4 multicast traffic to be manually engineered.

Polarization As a By-Product of Using the S-Hash and Basic S-G-Hash Algorithms for ECMP Multicast Load Splitting

The hash mechanism used in IPv4 multicast to load split multicast traffic by source address or by source and group address is subject to a problem usually referred to as polarization. A by-product of ECMP multicast load splitting based on source address or on source and group address, polarization is a problem that prevents routers in some topologies from effectively utilizing all available paths for load splitting.

Figure 2 illustrates a sample topology that is used in this section to explain the problem of polarization when configuring ECMP multicast load splitting based on source address or on source and group address.

Figure 2 Polarization Topology

In the topology illustrated in Figure 2, notice that Router 7 has two equal-cost paths towards the sources, S1 to S10, through Router 5 and Router 6. For this topology, suppose that ECMP multicast load splitting is enabled with the ip multicast multipath command on all routers in the topology. In that scenario, Router 7 would apply equal-cost load splitting to the 10 (S, G) states. The problem of polarization in this scenario would affect Router 7 because that router would end up choosing serial interface 0 on Router 5 for sources S1 to S5 and serial interface 1 on Router 6 for sources S6 to S10. The problem of polarization, furthermore, would also affect Router 5 and Router 6 in this topology. Router 5 has two equal-cost paths for S1 to S5 through serial interface 0 on Router 1 and serial interface 1 on Router 2. Because Router 5 would apply the same hash algorithm to select which of the two paths to use, it would end up using just one of these two upstream paths for sources S1 to S5; that is, either all the traffic would flow across Router 1 and Router 5 or across Router 2 and Router 5. It would be impossible in this topology to utilize Router 1 and Router 5 and Router 2 and Router 5 for load splitting. Likewise, the polarization problem would apply to Router 3 and Router 6 and Router 4 and Router 6; that is, it would be impossible in this topology to utilize both Router 3 and Router 6 and Router 4 and Router 6 for load splitting.

ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm

In Cisco IOS 12.2(33)SRB and subsequent 12.2SR releases, the ip multicast multipath command is used with the s-g-hash and next-hop-based keywords to enable ECMP multicast load splitting based on source, group, and next-hop address. The next-hop-based keyword enables a more complex hash, the next-hop-based S-G-hash algorithm, which is based on source, group, and next-hop address. The next-hop-based S-G-hash algorithm is predictable because no randomization is used in calculating the hash value. Unlike the S-hash and basic S-G-hash algorithms, the hash mechanism used by the next-hop-based S-G-hash algorithm is not subject to polarization.


Note The next-hop-based S-G-hash algorithm in IPv4 multicast is the same algorithm used in IPv6 ECMP multicast load splitting, which, in turn, utilizes the same hash function used for PIM-SM bootstrap router (BSR).


The next-hop-based hash mechanism does not produce polarization and also maintains better RPF stability when paths fail. These benefits come at the cost that the source or RP IP addresses cannot be used to reliably predict and engineer the outcome of load splitting when the next-hop-based S-G-hash algorithm is used. Because many customer networks have implemented equal-cost multipath topologies, the manual engineering of load splitting, thus, is not a requirement in many cases. Rather, it is more of a requirement that the default behavior of IP multicast be similar to IP unicast; that is, it is expected that IP multicast use multiple equal-cost paths on a best-effort basis. Load splitting for IPv4 multicast, therefore, could not be enabled by default because of the anomaly of polarization.


Note Load splitting for Cisco IOS CEF unicast also uses a method that does not exhibit polarization and likewise cannot be used to predict the results of load splitting or engineer the outcome of load splitting.


The next-hop-based hash function avoids polarization because it introduces the actual next-hop IP address of PIM neighbors into the calculation, so the hash results are different for each router, and in effect, there is no problem of polarization. In addition to avoiding polarization, this hash mechanism also increases stability of the RPF paths chosen in the face of path failures. Consider a router with four equal-cost paths and a large number of states that are load split across these paths. Suppose that one of these paths fails, leaving only three available paths. With the hash mechanism used by the polarizing hash mechanisms (the hash mechanism used by the S-hash and basic S-G-hash algorithms), the RPF paths of all states would likely reconverge and thus change between those three paths, especially those paths that were already using one of those three paths. These states, therefore, may unnecessarily change their RPF interface and next-hop neighbor. This problem exists simply because the chosen path is determined by taking the total number of paths available into consideration by the algorithm, so once a path changes, the RPF selection for all states is subject to change too. For the next-hop-based hash mechanism, only the states that were using the changed path for RPF would need to reconverge onto one of the three remaining paths. The states that were already using one of those paths would not change. If the fourth path came back up, the states that initially used it would immediately reconverge back to that path without affecting the other states.


Note The next-hop-based S-G-hash algorithm ignores bidir-PIM groups.


Effect of ECMP Multicast Load Splitting on PIM Neighbor Query and Hello Messages for RPF Path Selection

When the ip multicast multipath command is not enabled, and there are multiple equal-cost paths towards an RP or a source, IPv4 multicast will first elect the highest IP address PIM neighbor. A PIM neighbor is a router from which PIM hello (or PIMv1 query) messages are received. For example, consider a router that has two equal-cost paths learned by an IGP or configured through two static routes. The next hops of these two paths are 10.1.1.1 and 10.1.2.1. If both of these next-hop routers send PIM hello messages, then 10.1.2.1 would be selected as the highest IP address PIM neighbor. If only 10.1.1.1 sends PIM hello messages, then 10.1.1.1 would be selected. If neither of these routers sends PIM hello messages, then 10.1.2.1 would be selected. This deferrence to PIM hello messages allows the construction of certain types of dynamic failover scenarios with only static multicast routes (mroutes); it is otherwise not very useful.


Note For more information about configuring static mroutes, see the "Configuring Multiple Static Mroutes in Cisco IOS" configuration note on the Cisco IOS IP multicast FTP site, which is available at the following FTP path: ftp://ftpeng.cisco.com/ipmulticast.


When the ip multicast multipath command is enabled, the presence of PIM hello message from neighbors is not considered; that is, the chosen RPF neighbor does not depend on whether or not PIM hello messages are received from that neighbor—it only depends on the presence or absence of an equal-cost route entry.

Effect of ECMP Multicast Loading Splitting on Assert Processing in PIM-DM and DF Election in Bidir-PIM

The ip multicast multipath command only changes the RPF selection on the downstream router; it does not have an effect on designated forwarder (DF) election in bidir-PIM or the assert processing on upstream routers in PIM-DM.

Figure 3 illustrates a sample topology that is used in this section to explain the effect of ECMP multicast load splitting on assert processing in PIM-DM and DF election in bidir-PIM.

Figure 3 ECMP Multicast Load Splitting and Assert Processing in PIM-DM and DF Election in Bidir-PIM

In Figure 3, Router 2 has two equal-cost paths to S1 and S2 and the RP addresses on Router 1. Both paths are across Ethernet interface 1: one path towards Router 3 and one path towards Router 4. For PIM-SM and PIM-SSM (*, G) and (S, G) RPF selection, there is no difference in the behavior of Router 2 in this topology versus Router 2 in the topology illustrated in Figure 1. There is, however, a difference when using PIM-DM or bidir-PIM.

If PIM-DM is used in the topology illustrated in Figure 3, Router 3 and Router 4 would start flooding traffic for the states onto Ethernet interface 1 and would use the PIM assert process to elect one router among them to forward the traffic and to avoid traffic duplication. As both Router 3 and Router 4 would have the same route cost, the router with the higher IP address on Ethernet interface 1 would always win the assert process. As a result, if PIM-DM is used in this topology, traffic would not be load split across Router 3 and Router 4.

If bidir-PIM is used in the topology illustrated in Figure 3, a process called DF election would take place between Router 2, Router 3, and Router 4 on Ethernet interface 1. The process of DF election would elect one router for each RP to forward traffic across Ethernet interface 1 for any groups using that particular RP, based on the router with the highest IP address configured for that interface. Even if multiple RPs are used (for example one for G1 and another one for G2), the DF election for those RPs would always be won by the router that has the higher IP address configured on Ethernet interface 1 (either Router 3 or Router 4 in this topology). The election rules used for DF election are virtually the same as the election rules used for the PIM assert process, only the protocol mechanisms to negotiate them are more refined for DF election (in order to return the results more expediently). As a result, when bidir-PIM is used in this topology, load splitting would always occur across Ethernet interface 1.

The reason that ECMP multicast load splitting does influence the RPF selection but not the assert process in PIM-DM or DF election in bidir-PIM is because both the assert process and DF election are cooperative processes that need to be implemented consistently between participating routers. Changing them would require some form of protocol change that would also need to be agreed upon by the participating routers. RPF selection is a purely router local policy and, thus, can be enabled or disabled without protocol changes individually on each router.

For PIM-DM and bidir-PIM, configuring ECMP multicast load splitting with the ip multicast multipath command is only effective in topologies where the equal-cost paths are not upstream PIM neighbors on the same LAN, but rather neighbors on different LANs or point-to-point links.

Effect of ECMP Multicast Load Splitting on the PIM Assert Process in PIM-SM and PIM-SSM

There are also cases where ECMP multicast load splitting with the ip multicast multipath command can become ineffective due to the PIM assert process taking over, even when using PIM-SM with (*, G) or (S, G) forwarding or PIM-SSM with (S, G) forwarding.

Figure 4 illustrates a sample topology that is used in this section to explain the effect of ECMP multicast load splitting on the PIM assert process in PIM-SM and PIM-SSM.

Figure 4 ECMP Multicast Load Splitting and the PIM Assert Process in PIM-SM and PIM-SSM

In the topology illustrated in Figure 4, if both Router 2 and Router 5 are Cisco routers and are consistently configured for ECMP multicast load splitting with the ip multicast multipath command, then load splitting would continue to work as expected; that is, both routers would have Router 3 and Router 4 as equal-cost next hops and would sort the list of equal-cost paths in the same way (by IP address). When applying the multipath hash function, for each (S, G) or (*, G) state, they would choose the same RPF neighbor (either Router 3 or Router 4) and send their PIM joins to this neighbor.

If Router 5 and Router 2 are inconsistently configured with the ip multicast multipath command, or if Router 5 is a third-party router, then Router 2 and Router 5 may choose different RPF neighbors for some (*, G) or (S, G) states. For example Router 2 could choose Router 3 for a particular (S, G) state or Router 5 could choose Router 4 for a particular (S, G) state. In this scenario, Router 3 and Router 4 would both start to forward traffic for that state onto Ethernet interface 1, see each other's forwarded traffic, and—to avoid traffic duplication—start the assert process. As a result, for that (S, G) state, the router with the higher IP address for Ethernet interface 1 would forward the traffic. However, both Router 2 and Router 5 would be tracking the winner of the assert election and would send their PIM joins for that state to this assert winner, even if this assert winner is not the same router as the one that they calculated in their RPF selection. For PIM-SM and PIM-SSM, therefore, the operation of ECMP multicast load splitting can only be guaranteed when all downstream routers on a LAN are consistently configured Cisco routers.

ECMP Multicast Load Splitting and Reconvergence When Unicast Routing Changes

When unicast routing changes, all IP multicast routing states reconverge immediately based on the available unicast routing information. Specifically, if one path goes down, the remaining paths reconverge immediately, and if the path comes up again, multicast forwarding will subsequently reconverge to the same RPF paths that were used before the path failed. Reconvergence occurs whether the ip multicast multipath command is configured or not.

Use of BGP with ECMP Multicast Load Splitting

ECMP multicast load splitting works with RPF information learned through BGP in the same way as with RPF information learned from other protocols: It chooses one path out of the multiple paths installed by the protocol. The main difference with BGP is that it only installs a single path, by default. For example, when a BGP speaker learns two identical external BGP (eBGP) paths for a prefix, it will choose the path with the lowest router ID as the best path. The best path is then installed in the IP routing table. If BGP multipath support is enabled and the eBGP paths are learned from the same neighboring AS, instead of picking the single best path, BGP installs multiple paths in the IP routing table. By default, BGP will install only one path to the IP routing table.

To leverage ECMP multicast load splitting for BGP learned prefixes, you must enable BGP multipath using the maximum-paths command. Once configured, when BGP installs the remote next-hop information, RPF lookups will recurse to find the best next hop towards that BGP next hop (as in unicast). If for example there is only a single BGP path for a given prefix, but there are two IGP paths to reach that BGP next hop, then multicast RPF will correctly load split between the two different IGP paths.


Note For more information about BGP multipath, see the "iBGP Multipath Load Sharing" and "BGP Multipath Load Sharing for Both eBGP and iBGP in an MPLS-VPN" chapters in the "BGP" part of the Cisco IOS IP Routing Configuration Guide, Release 12.4.


Use of ECMP Multicast Load Splitting with Static Mroutes

If it is not possible to use an IGP to install equal cost routes for certain sources or RPs, static routes can be configured using the ip route command to specify the equal-cost paths for load splitting. You cannot use static mroutes (configured with the ip mroute command) to configure equal-cost paths because Cisco IOS software does not support the configuration of one static mroute per prefix. There are some workarounds for this limitation using recursive route lookups, but the workarounds cannot be applied to equal-cost multipath routing.


Note For more information about configuring static mroutes, see the "Configuring Multiple Static Mroutes in Cisco IOS" configuration note on the Cisco IOS IP multicast FTP site, which is available at the following FTP path: ftp://ftpeng.cisco.com/ipmulticast.


If you only want to specify static mroutes for equal-cost multipaths, in IPv4 multicast you can specify static mroutes using the ip mroute command; those static mroutes, however, would only apply to multicast. If you want to specify that the equal-cost multipaths apply to both unicast and multicast routing, you can configure static routes using the ip route command. In Cisco IOS IPv6 multicast, there is no such restriction; that is, equal-cost multipath mroutes can be configured for static IPv6 mroutes that apply to only unicast routing, only multicast routing, or both.


Note For more information about configuring IPv6 static mroutes, see the "Implementing IPv6 Multicast" chapter in the Cisco IOS IPv6 Configuration Guide, Release 12.4.


Alternative Methods of Load Splitting IP Multicast Traffic

Load splitting of IP multicast traffic can also be achieved by consolidating multiple parallel links into a single tunnel over which the multicast traffic is then routed. This method of load splitting is more complex to configure than ECMP multicast load splitting using the ip multicast multipath command. One such case where configuring load splitting across equal-cost paths using GRE links can be beneficial is the case where the total number of (S, G) or (*, G) states is so small and the bandwidth carried by each state so variable that even the manual engineering of the source or RP addresses cannot guarantee the appropriate load splitting of the traffic.


Note With the availability of ECMP multicast load splitting, tunnels typically only need to be used if per-packet load sharing is required.


IP multicast traffic can also be used to load split across bundle interfaces, such as Fast or Gigabit EtherChannel interfaces, MLPPP link bundles or Multilink Frame Relay (FRF.16) bundles. GRE or other type of tunnels can also constitute such forms of Layer 2 link bundles. Before using such an Layer 2 mechanism, it is necessary to understand how unicast and multicast traffic is load split.

For more information about load splitting IP multicast traffic using a GRE tunnel, see the "Configuring IP Multicast" chapter in the "IP Multicast" part of the Cisco IOS IP Configuration Guide, Release 12.2.


Note Before load splitting IP multicast traffic across equal-cost paths over a tunnel, you need to configure CEF per-packet load balancing or else the GRE packets will not be load balanced per packet. For information about configuring CEF per-packet load balancing, see the "Configuring a Load-Balancing Scheme for CEF Traffic" chapter in the Cisco IOS IP Switching Configuration Guide, Release 12.4.


For more information about Cisco IOS software support of MLPPP link bundles, Fast or Gigabit EtherChannels, and Multilink Frame Relay (FRF.16) bundles, perform a search on the Cisco Support site based on your hardware platform.

How to Load Split IP Multicast Traffic over ECMP

This section contains the following procedure:

Enabling ECMP Multicast Load Splitting (required)

Enabling ECMP Multicast Load Splitting

Perform one of the following tasks to load split IP multicast traffic across multiple equal-cost paths, depending on whether you want to enable ECMP multicast load splitting based on source address, source and group address, or on source, group, and next-hop address:

Enabling ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm

Enabling ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm

Enabling ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm

ECMP Multicast Load Splitting

If two or more equal-cost paths from a source are available, unicast traffic will be load split across those paths. However, by default, multicast traffic is not load split across multiple equal-cost paths. In general, multicast traffic flows down from the RPF neighbor. According to PIM specifications, this neighbor must have the highest IP address if more than one neighbor has the same metric.

Configuring load splitting with the ip multicast multipath command causes the system to load split multicast traffic across multiple equal-cost paths based on source address using the S-hash algorithm. When the ip multicast multipath command is configured and multiple equal-cost paths exist, the path in which multicast traffic will travel is selected based on the source IP address. Multicast traffic from different sources will be load split across the different equal-cost paths. Load splitting will not occur across equal-cost paths for multicast traffic from the same source sent to different multicast groups.


Note The ip multicast multipath command load splits the traffic and does not load balance the traffic. Traffic from a source will use only one path, even if the traffic far outweighs traffic from other sources.


If the ip multicast multipath command is configured with the s-g-hash keyword and multiple equal-cost paths exist, load splitting will occur across equal-cost paths based on source and group address or on source, group, and next-hop address. If you specify the optional s-g-hash keyword for load splitting IP multicast traffic, you must select the algorithm used to calculate the equal-cost paths by specifying one of the following keywords:

basic—Enables a simple hash based on source and group address. The basic S-G-hash algorithm is predictable because no randomization is used in calculating the hash value. The basic S-G-hash algorithm, however, is subject to polarization because for a given source and group, the same hash is always picked irrespective of the router the hash is being calculated on.

next-hop-based—Enables a more complex hash based on source, group, and next-hop address. The next-hop-based S-G-hash algorithm is predictable because no randomization is used in coming up with the hash value. Unlike the S-hash and basic S-G-hash algorithms, the next-hop-based hash mechanism is not subject to polarization.

Prerequisites

Be sure to enable the ip multicast multipath command on the router that is supposed to be the receiver for traffic from more than one incoming interfaces, which is opposite of unicast routing. From the perspective of unicast, multicast is active on the sending router connecting to more than one outgoing interfaces.

When enabling ECMP multicast load splitting based on source address, make sure you have an adequate number of sources (that is, at least more than two sources). Because ECMP multicast load splitting is statistically based on source address, if you only have two sources, the two sources may end up using the same link, which, of course, negates ECMP load splitting capabilities.

When using PIM-SM with shortest path tree (SPT) forwarding, ensure that the T-bit is set for the forwarding of all (S, G) states.

Before performing this task ensure that there are multiple paths for sources. Use the show ip route command with the IP address of the source for the ip-address argument to validate that there are multiple paths available to the source or the IP address of the RP to validate that there are multiple paths available to the RP. If you do not see multiple paths in the output of the show ip route command, then you will not be able to configure ECMP multicast load splitting using the ip multicast multipath command.

Prior to configuring ECMP multicast load splitting, it is best practice to use the show ip rpf command to validate whether sources can take advantage of IP multicast multipath capabilities.

BGP does not install multiple equal-cost paths by default. Use the maximum-paths command to configure multipath (for example in BGP). For more information, see the "Use of BGP with ECMP Multicast Load Splitting" section.

Restrictions

The ip multicast multipath command does not support configurations in which the same PIM neighbor IP address is reachable through multiple equal-cost paths. This situation typically occurs if unnumbered interfaces are used. Use different IP addresses for all interfaces when configuring the ip multicast multipath command.

Enabling ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm

Perform this task to enable ECMP multicast load splitting of multicast traffic based on source address (using the S-hash algorithm) to take advantage of multiple paths through the network. The S-hash algorithm is predictable because no randomization is used in calculating the hash value. The S-hash algorithm, however, is subject to polarization because for a given source, the same hash is always picked irrespective of the router the hash is being calculated on.

SUMMARY STEPS

1. enable

2. configure terminal

3. ip multicast multipath

4. Repeat Steps 1 through 3 on all the routers in a redundant topology.

5. end

6. show ip rpf source-address [group-address]

7. show ip route ip-address

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

enable

Example:

Router> enable

Enables privileged EXEC mode.

Enter your password if prompted.

Step 2 

configure terminal

Example:

Router# configure terminal

Enters global configuration mode.

Step 3 

ip multicast multipath

Example:

Router(config)# ip multicast multipath

Enables ECMP multicast load splitting based on source address using the S-hash algorithm.

Because this command changes the way an RPF neighbor is selected, it must be configured consistently on all routers in a redundant topology to avoid looping.

Note Be sure to enable the ip multicast multipath command on the router that is supposed to be the receiver for traffic from more than one incoming interfaces, which is opposite to unicast routing. From the perspective of unicast, multicast is active on the sending router connecting to more than one outgoing interfaces.

Step 4 

Repeat Steps 1 through 3 on all the routers in a redundant topology.

Step 5 

end

Example:

Router(config)# end

Exits global configuration mode and returns to privileged EXEC mode.

Step 6 

show ip rpf source-address [group-address]

Example:

Router# show ip rpf 10.1.1.2

Displays information about how IP multicast routing does RPF.

Use this command to verify RPF selection so as to ensure that IP multicast traffic is being properly load split.

Step 7 

show ip route ip-address

Example:

Router# show ip route 10.1.1.2

Displays the current state of the IP routing table.

Use this command to verify that there multiple paths available to a source or RP for ECMP multicast load splitting.

For the ip-address argument, enter the IP address of a source to validate that there are multiple paths available to the source (for shortest path trees) or the IP address of an RP to validate that there are multiple paths available to the RP (for shared trees).

Enabling ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm

In Cisco IOS Release 12.2(33)SRB and subsequent 12.2SR releases, perform this task to enable ECMP multicast load splitting of multicast traffic based on source and group address (using the basic S-G-hash algorithm) to take advantage of multiple paths through the network. The basic S-G-hash algorithm is predictable because no randomization is used in calculating the hash value.The basic S-G-hash algorithm, however, is subject to polarization because for a given source and group, the same hash is always picked irrespective of the router the hash is being calculated on.

The basic S-G-hash algorithm provides more flexible support for ECMP multicast load splitting than the the S-hash algorithm. Using the basic S-G-hash algorithm for load splitting, in particular, enables multicast traffic from devices that send many streams to groups or that broadcast many channels, such as IPTV servers or MPEG video servers, to be more effectively load split across equal-cost paths.

SUMMARY STEPS

1. enable

2. configure terminal

3. ip multicast multipath s-g-hash basic

4. Repeat Steps 1 through 3 on all the routers in a redundant topology.

5. end

6. show ip rpf source-address [group-address]

7. show ip route ip-address

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

enable

Example:

Router> enable

Enables privileged EXEC mode.

Enter your password if prompted.

Step 2 

configure terminal

Example:

Router# configure terminal

Enters global configuration mode.

Step 3 

ip multicast multipath s-g-hash basic

Example:

Router(config)# ip multicast multipath s-g-hash basic

Enables ECMP multicast load splitting based on source and group address using the basic S-G-hash algorithm.

Because this command changes the way an RPF neighbor is selected, it must be configured consistently on all routers in a redundant topology to avoid looping.

Note Be sure to enable the ip multicast multipath command on the router that is supposed to be the receiver for traffic from more than one incoming interfaces, which is opposite to unicast routing. From the perspective of unicast, multicast is active on the sending router connecting to more than one outgoing interfaces.

Step 4 

Repeat Steps 1 through 3 on all the routers in a redundant topology.

Step 5 

end

Example:

Router(config)# end

Exits global configuration mode and returns to privileged EXEC mode.

Step 6 

show ip rpf source-address [group-address]

Example:

Router# show ip rpf 10.1.1.2

Displays information about how IP multicast routing does RPF.

Use this command to verify RPF selection so as to ensure that IP multicast traffic is being properly load split.

Step 7 

show ip route ip-address

Example:

Router# show ip route 10.1.1.2

Displays the current state of the IP routing table.

Use this command to verify that there multiple paths available to a source or RP for ECMP multicast load splitting.

For the ip-address argument, enter the IP address of a source to validate that there are multiple paths available to the source (for shortest path trees) or the IP address of an RP to validate that there are multiple paths available to the RP (for shared trees).

Enabling ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm

In Cisco IOS Release 12.2(33)SRB and subsequent 12.2SR releases, perform this task to enable ECMP multicast load splitting of multicast traffic based on source, group, and next-hop address (using the next-hop-based S-G-hash algorithm) to take advantage of multiple paths through the network. The next-hop-based S-G-hash algorithm is predictable because no randomization is used in calculating the hash value. Unlike the S-hash and basic S-G-hash algorithms, the hash mechanism used by the next-hop-based S-G-hash algorithm is not subject to polarization.

The next-hop-based S-G-hash algorithm provides more flexible support for ECMP multicast load splitting than S-hash algorithm and eliminates the polarization problem. Using the next-hop-based S-G-hash algorithm for ECMP multicast load splitting enables multicast traffic from devices that send many streams to groups or that broadcast many channels, such as IPTV servers or MPEG video servers, to be more effectively load split across equal-cost paths.

SUMMARY STEPS

1. enable

2. configure terminal

3. ip multicast multipath s-g-hash next-hop-based

4. Repeat Steps 1 through 3 on all the routers in a redundant topology.

5. end

6. show ip rpf source-address [group-address]

7. show ip route ip-address

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

enable

Example:

Router> enable

Enables privileged EXEC mode.

Enter your password if prompted.

Step 2 

configure terminal

Example:

Router# configure terminal

Enters global configuration mode.

Step 3 

ip multicast multipath s-g-hash next-hop-based

Example:

Router(config)# ip multicast multipath s-g-hash next-hop-based

Enables ECMP multicast load splitting based on source, group, and next-hop-address using the next-hop-based S-G-hash algorithm.

Because this command changes the way an RPF neighbor is selected, it must be configured consistently on all routers in a redundant topology to avoid looping.

Note Be sure to enable the ip multicast multipath command on the router that is supposed to be the receiver for traffic from more than one incoming interfaces, which is opposite to unicast routing. From the perspective of unicast, multicast is active on the sending router connecting to more than one outgoing interfaces.

Step 4 

Repeat Steps 1 through 3 on all the routers in a redundant topology.

Step 5 

end

Example:

Router(config)# end

Exits global configuration mode and returns to privileged EXEC mode.

Step 6 

show ip rpf source-address [group-address]

Example:

Router# show ip rpf 10.1.1.2

Displays information about how IP multicast routing does RPF.

Use this command to verify RPF selection so as to ensure that IP multicast traffic is being properly load split.

Step 7 

show ip route ip-address

Example:

Router# show ip route 10.1.1.2

Displays the current state of the IP routing table.

Use this command to verify that there multiple paths available to a source or RP for ECMP multicast load splitting.

For the ip-address argument, enter the IP address of a source to validate that there are multiple paths available to the source (for shortest path trees) or the IP address of an RP to validate that there are multiple paths available to the RP (for shared trees).

Configuration Examples for Load Splitting IP Multicast Traffic over ECMP

This section provides the following configuration examples:

Enabling ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm: Example

Enabling ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm: Example

Enabling ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm: Example

Enabling ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm: Example

The following example shows how to enable ECMP multicast load splitting on a router based on source address using the S-hash algorithm:

ip multicast multipath

Enabling ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm: Example

The following example shows how to enable ECMP multicast load splitting on a router based on source and group address using the basic S-G-hash algorithm:

ip multicast multipath s-g-hash basic

Enabling ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm: Example

The following example shows how to enable ECMP multicast load splitting on a router based on source, group, and next-hop address using the next-hop-based S-G-hash algorithm:

ip multicast multipath s-g-hash next-hop-based

Where to Go Next

To configure basic IP multicast, see the "Configuring Basic IP Multicast" module.

To verify multicast operation, see the "Verifying IP Multicast Operation" module.

To customize IGMP, see the "Customizing IGMP" module.

To optimize PIM sparse mode, see the "Optimizing PIM Sparse Mode in a Large IP Multicast Deployment" module.

To connect non-IP multicast areas, see the "Tunneling to Connect Non-IP Multicast Areas" module.

To configure IP multicast over ATM point-to-multipoint VCs, see the "Configuring IP Multicast over ATM Point-to-Multipoint VCs" module.

To configure IP multicast for operation in a switched Ethernet network, see the "Constraining IP Multicast in a Switched Ethernet Network" module.

To configure IP multicast over unidirectional links, see the "Configuring IP Multicast over Unidirectional Links" module.

To configure IP multicast for operation in a Virtual Private Network, see the "Configuring Multicast-VPN" module.

To monitor and maintain IP multicast, see the "Monitoring and Maintaining IP Multicast" module.

To validate a multicast test packet, see the "Using the Multicast Routing Monitor" module.

Additional References

The following sections provide references related to load splitting IP multicast traffic over ECMP.

Related Documents

Related Topic
Document Title

IP multicast concepts and tasks

Cisco IOS IP Multicast Configuration Guide, Release 12.4

IP multicast commands: complete command syntax, command mode, command history, defaults, usage guidelines, and examples

Cisco IOS IP Multicast Command Reference, Release 12.2SR


Standards

Standard
Title

No new or modified standards are supported by this feature, and support for existing standards has not been modified by this feature.


MIBs

MIB
MIBs Link

No new or modified MIBs are supported by this feature, and support for existing MIBs has not been modified by this feature.

To locate and download MIBs for selected platforms, Cisco IOS releases, and feature sets, use Cisco MIB Locator found at the following URL:

http://www.cisco.com/go/mibs


RFCs


Technical Assistance

Description
Link

The Cisco Support website provides extensive online resources, including documentation and tools for troubleshooting and resolving technical issues with Cisco products and technologies. Access to most tools on the Cisco Support website requires a Cisco.com user ID and password. If you have a valid service contract but do not have a user ID or password, you can register on Cisco.com.

http://www.cisco.com/techsupport


Feature Information for Load Splitting IP Multicast Traffic over ECMP

Table 1 lists the features in this module and provides links to specific configuration information. Only features that were introduced or modified in Cisco IOS Release 12.2(1) or Cisco IOS Releases 12.2(1) or 12.0(3)S or a later release appear in the table.

For information on a feature in this technology that is not documented here, see the "IP Multicast Features Roadmap."

Not all commands may be available in your Cisco IOS software release. For release information about a specific command, see the command reference documentation.

Use Cisco Feature Navigator to find information about platform support and software image support. Cisco Feature Navigator enables you to determine which Cisco IOS and Catalyst OS software images support a specific software release, feature set, or platform. To access Cisco Feature Navigator, go to http://www.cisco.com/go/cfn. An account on Cisco.com is not required.


Note Table 1 lists only the Cisco IOS software release that introduced support for a given feature in a given Cisco IOS software release train. Unless noted otherwise, subsequent releases of that Cisco IOS software release train also support that feature.


Table 1 Feature Information for Load Splitting IP Multicast Traffic over ECMP 

Feature Name
Releases
Feature Information

IP Multicast Load Splitting—Equal Cost Multipath (ECMP) Using S, G and Next Hop

12.2(33)SRB

The IP Multicast Load Splitting—Equal Cost Multipath (ECMP) Using S, G and Next Hop feature introduces more flexible support for ECMP multicast load splitting by adding support for load splitting based on source and group address and on source, group, and next-hop address. This feature enables multicast traffic from devices that send many streams to groups or that broadcast many channels, such as IPTV servers or MPEG video servers, to be more effectively load split across equal-cost paths. Prior to the introduction of this feature, the Cisco IOS software only supported ECMP multicast load splitting based on source address, which restricted multicast traffic sent by a single source to multiple groups from being load split across equal-cost paths.

In 12.2(33)SRB, this feature was introduced on the Cisco 7600 series router.

The following sections provide information about this feature:

ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm

ECMP Multicast Load Splitting Based on Source, Group, and Next-Hop Address Using the Next-Hop-Based S-G-Hash Algorithm

The following commands were modified by this feature: ip multicast multipath, show ip rpf.