The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
IP Multicast Optimization: IP Multicast Load Splitting across Equal-Cost Paths
Finding Feature
Information
Your software release
may not support all the features documented in this module. For the latest
caveats and feature information, see Bug Search Tool and the release notes for
your platform and software release. To find information about the features
documented in this module, and to see a list of the releases in which each
feature is supported, see the feature information table at the end of this
module.
Use Cisco Feature
Navigator to find information about platform support and Cisco software image
support. To access Cisco Feature Navigator, go to
http://www.cisco.com/go/cfn.
An account on Cisco.com is not required.
Prerequisites for IP Multicast Load Splitting across Equal-Cost Paths
IP multicast is enabled on the device using the tasks described in the “Configuring Basic IP Multicast” module of the
IP Multicast: PIM Configuration Guide.
Information About IP Multicast Load Splitting across Equal-Cost Paths
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 equal-cost multipath (ECMP) multicast load splitting methods and 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.
The figure
illustrates a sample topology that is used in this section to explain the
default behavior for IP multicast when multiple equal-cost paths exist.
In the figure, 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
ippimspt-threshold command is being used on Device 2,
that an Interior Gateway Protocol (IGP) is being run, and that the output of
the
showiproute command for S1 and for S2 (when entered on
Device 2) displays serial interface 0 and serial interface 1 on Device 1 as
equal-cost next-hop PIM neighbors of Device 2.
Without further
configuration, IPv4 multicast traffic in the topology illustrated in the figure
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 Device 1 are 10.1.1.1 and 10.1.2.1, respectively. Given
that scenario, in the case of PIM-SM and PIM-SSM, Device 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 the figure.
In the case of PIM-DM, Device 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 Device 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 Device 1.
IPv4 RPF lookups are
performed by intermediate multicast device 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
device 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
ipmulticastmultipath command. Entering this form of the
ipmulticastmultipath 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--You can configure ECMP
multicast load splitting using the
ipmulticastmultipath command with thes-g-hash and
basic keywords.
Entering this form of the
ipmulticastmultipath 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--You can
configure ECMP multicast load splitting using the
ipmulticastmultipath command with thes-g-hash and
next-hop-based
keywords. Entering this form of the command enables ECMP multicast load
splitting 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
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
showippimneighbor 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 ipmulticastmultipath command.
ECMP Multicast Load Splitting Based on Source Address Using the S-Hash Algorithm
ECMP multicast load splitting traffic based on source address uses the S-hash algorithm, enabling the RPF interface for each
(*, G) or (S, G) state to 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.
ECMP Multicast Load Splitting Based on Source and Group Address Using the Basic S-G-Hash Algorithm
ECMP multicast load splitting based on source and group address uses 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 device this hash is being calculated on.
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
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 allows for predictability, which, in turn, 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
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.
The figure
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.
In the topology
illustrated in the figure, 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
ipmulticastmultipath 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
Configuring ECMP multicast load splitting based on source, group, and next-hop address 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 device (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 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 device, 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 device 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
If load splitting of IP multicast traffic over ECMP 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 device from which PIM hello (or PIMv1 query) messages are received. For example,
consider a device 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 devices 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 devices sends PIM hello messages, then 10.1.2.1 would be selected. This deference 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: ftp://ftpeng.cisco.com/ipmulticast /config-notes/static-mroutes.txt.
When load splitting of IP multicast traffic over ECMP 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
ipmulticastmultipath command only changes the RPF selection
on the downstream device; it does not have an effect on designated forwarder
(DF) election in bidir-PIM or the assert processing on upstream devices in
PIM-DM.
The figure
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.
In the figure, Device
2 has two equal-cost paths to S1 and S2 and the RP addresses on Device 1. Both
paths are across Gigabit Ethernet interface 1/0/0: one path towards Device 3
and one path towards Device 4. For PIM-SM and PIM-SSM (*, G) and (S, G) RPF
selection, there is no difference in the behavior of Device 2 in this topology
versus Device 2 in the topology illustrated in the figure. There is, however, a
difference when using PIM-DM or bidir-PIM.
If PIM-DM is used in
the topology illustrated in the figure, Device 3 and Device 4 would start
flooding traffic for the states onto Gigabit Ethernet interface 1/0/0 and would
use the PIM assert process to elect one device among them to forward the
traffic and to avoid traffic duplication. As both Device 3 and Device 4 would
have the same route cost, the device with the higher IP address on Gigabit
Ethernet interface 1/0/0 would always win the assert process. As a result, if
PIM-DM is used in this topology, traffic would not be load split across Device
3 and Device 4.
If bidir-PIM is used
in the topology illustrated in the figure, a process called DF election would
take place between Device 2, Device 3, and Device 4 on Gigabit Ethernet
interface 1/0/0. The process of DF election would elect one device for each RP
to forward traffic across Gigabit Ethernet interface 1/0/0 for any groups using
that particular RP, based on the device 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
device that has the higher IP address configured on Gigabit Ethernet interface
1/0/0 (either Device 3 or Device 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 Gigabit Ethernet interface 1/0/0.
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 devices. Changing them would require some
form of protocol change that would also need to be agreed upon by the
participating devices. RPF selection is a purely device local policy and, thus,
can be enabled or disabled without protocol changes individually on each
device.
For PIM-DM and
bidir-PIM, configuring ECMP multicast load splitting with the
ipmulticastmultipath 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
ipmulticastmultipath 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.
The figure
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.
In the topology
illustrated in the figure, if both Device 2 and Device 5 are Cisco devices and
are consistently configured for ECMP multicast load splitting with the
ipmulticastmultipath command, then load splitting would
continue to work as expected; that is, both devices would have Device 3 and
Device 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
Device 3 or Device 4) and send their PIM joins to this neighbor.
If Device 5 and
Device 2 are inconsistently configured with the
ipmulticastmultipath command, or if Device 5 is a third-party
device, then Device 2 and Device 5 may choose different RPF neighbors for some
(*, G) or (S, G) states. For example Device 2 could choose Device 3 for a
particular (S, G) state or Device 5 could choose Device 4 for a particular (S,
G) state. In this scenario, Device 3 and Device 4 would both start to forward
traffic for that state onto Gigabit Ethernet interface 1/0/0, see each other’s
forwarded traffic, and--to avoid traffic duplication--start the assert process.
As a result, for that (S, G) state, the device with the higher IP address for
Gigabit Ethernet interface 1/0/0 would forward the traffic. However, both
Device 2 and Device 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 device 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 devices on
a LAN are consistently configured Cisco devices.
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 load splitting of IP multicast traffic over ECMP 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 device 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. Once configured, when
BGP installs the remote next-hop information, RPF lookups will execute recursively 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.
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
to specify the equal-cost paths for load splitting. You cannot use static mroutes to configure equal-cost paths because the
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 at ftp://ftpeng.cisco.com/ipmulticast/config-notes/static-mroutes.txt.
You can specify only static mroutes for equal-cost multipaths in IPv4 multicast; however, those static mroutes would only
apply to multicast, or you can specify that the equal-cost multipaths apply to both unicast and multicast routing. In IPv6
multicast, there is no such restriction. Equal-cost multipath mroutes can be configured for static IPv6 mroutes that apply
to only unicast routing, only multicast routing, or both unicast and multicast routing.
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. 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.
Before load splitting IP multicast traffic across equal-cost paths over a tunnel, you must configure CEF per-packet load balancing
or else the GRE packets will not be load balanced per packet.
How to Load Split IP Multicast Traffic over ECMP
Enabling ECMP Multicast Load Splitting
Perform the following tasks to load split IP multicast traffic across multiple equal-cost paths, based on source address.
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
ipmulticastmultipath 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
ipmulticastmultipath 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
ipmulticastmultipathcommand 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.
Prerequisites for IP Multicast Load Splitting - ECMP
You must have an adequate number of sources (at least more than two sources) to enable ECMP multicast load splitting based
on source address.
You must have multiple paths available to the RP to configure ECMP multicast load splitting.
Note
Use the
showiproute command with either the IP address of the source for the
ip-addressargument or the IP address of the RP to validate that there are multiple paths available to the source or RP, respectively.
If you do not see multiple paths in the output of the command, you will not be able to configure ECMP multicast load splitting.
When using PIM-SM with shortest path tree (SPT) forwarding, the T-bit mus be set for the forwarding of all (S, G) states.
Before configuring ECMP multicast load splitting, it is best practice to use the
showiprpf 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
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.
The
ipmulticastmultipath 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
ipmulticastmultipath command.
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.
Enabling ECMP Multicast Load Splitting Based on Source Address
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 device on which the hash is being calculated.
Note
Enable ECMP multicast load splitting on the device that is 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 device connecting
to more than one outgoing interfaces.
Before you begin
You must have an adequate number of sources (at least more than two sources) to enable ECMP multicast load splitting based
on source address.
You must have multiple paths available to the RP to configure ECMP multicast load splitting.
Note
Use the
showiproute command with either the IP address of the source for the
ip-addressargument or the IP address of the RP to validate that there are multiple paths available to the source or RP, respectively.
If you do not see multiple paths in the output of the command, you will not be able to configure ECMP multicast load splitting.
When using PIM-SM with shortest path tree (SPT) forwarding, the T-bit mus be set for the forwarding of all (S, G) states.
Before configuring ECMP multicast load splitting, it is best practice to use the
showiprpf 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.
Procedure
Command or Action
Purpose
Step 1
enable
Example:
Device> enable
Enables privileged EXEC mode.
Enter your password if prompted.
Step 2
configureterminal
Example:
Device# configure terminal
Enters global configuration mode.
Step 3
ipmulticastmultipath
Example:
Device(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 devices in a
redundant topology to avoid looping.
This 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 a different IP address for each interface in
a device on which this command is to be configured.
This 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.
Step 4
Repeat step 3 on all the devices in a redundant topology.
--
Step 5
exit
Example:
Device(config)# exit
Exits global configuration mode and returns to privileged EXEC mode.
Step 6
showiprpfsource-address [group-address]
Example:
Device# show ip rpf 10.1.1.2
(Optional) Displays the information that IP multicast routing uses to perform the RPF check.
Use this command to verify RPF selection so as to ensure that IP multicast traffic is being properly load split.
Step 7
showiprouteip-address
Example:
Device# show ip route 10.1.1.2
(Optional) 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
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 device on which the hash is being
calculated.
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.
Note
Enable ECMP multicast load splitting on the device that is 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 device connecting
to more than one outgoing interfaces.
Procedure
Command or Action
Purpose
Step 1
enable
Example:
Device> enable
Enables privileged EXEC mode.
Enter your password if prompted.
Step 2
configureterminal
Example:
Device# configure terminal
Enters global configuration mode.
Step 3
ipmulticastmultipaths-g-hashbasic
Example:
Device(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 devices in a
redundant topology to avoid looping.
Step 4
Repeat Step 3 on all the devices in a redundant topology.
--
Step 5
exit
Example:
Device(config)# exit
Exits global configuration mode and returns to privileged EXEC mode.
Step 6
showiprpfsource-address [group-address]
Example:
Device# show ip rpf 10.1.1.2
(Optional) Displays the information that IP multicast routing uses to perform the RPF check.
Use this command to verify RPF selection so as to ensure that IP multicast traffic is being properly load split.
Step 7
showiprouteip-address
Example:
Device# show ip route 10.1.1.2
(Optional) 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
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.
Procedure
Command or Action
Purpose
Step 1
enable
Example:
Router> enable
Enables privileged EXEC mode.
Enter your password if prompted.
Step 2
configureterminal
Example:
Router# configure terminal
Enters global configuration mode.
Step 3
ipmulticastmultipaths-g-hashnext-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 ipmulticastmultipath 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
showiprpfsource-address [group-address]
Example:
Router# show ip rpf 10.1.1.2
(Optional) Displays the information that IP multicast routing uses to perform the RPF check.
Use this command to verify RPF selection so as to ensure that IP multicast traffic is being properly load split.
Step 7
showiprouteip-address
Example:
Router# show ip route 10.1.1.2
(Optional) 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
Example Enabling ECMP Multicast Load Splitting Based on Source Address
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
Example Enabling ECMP Multicast Load Splitting Based on Source and Group Address
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
Example Enabling ECMP Multicast Load Splitting Based on Source Group and Next-Hop Address
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:
The Cisco Support and Documentation website provides online resources to download documentation, software, and tools. Use
these resources to install and configure the software and to troubleshoot and resolve technical issues with Cisco products
and technologies. Access to most tools on the Cisco Support and Documentation website requires a Cisco.com user ID and password.