PIM-ECMP Redirect Configuration
A Protocol Independent Multicast (PIM) router uses Reverse Path Forwarding (RPF) procedure to select an upstream interface and router in order to build forwarding state. When there are equal-cost multipaths (ECMPs), existing implementations often use hash algorithms to select a path. Such algorithms do not allow the spread of traffic among the ECMPs according to administrative metrics. This usually leads to inefficient or ineffective use of network resources. PIM ECMP Redirect (RFC 6754) provides a mechanism to improve the RPF procedure over ECMPs. It allows ECMP selection to be based on administratively selected metrics, such as data transmission delays, path preferences, and routing metric. An interface identifier option is used in PIM hello messages as a tiebreaker during ECMP path selection.
Note: PIM ECMP Redirect is not supported for Bidirectional PIM, PIM-DM and PIM-SMDM.
Note: PIM-ECMP feature is not supported for ZebIC.
Terminology
Following is a brief description of terms and concepts used to describe the PIM-ECMP Redirect protocol:
Equal Cost Multipath (ECMP)
ECMP refers to parallel, single-hop, equal-cost links between adjacent nodes.
ECMP Bundle
An ECMP bundle is a set of PIM-enabled interfaces on a router, where all interfaces belonging to the same bundle share the same routing metric. The next hops for the ECMP are all one hop away. There can be one or more ECMP bundles on any router, while one individual interface can only belong to a single bundle. ECMP bundles are created on a router via configuration.
Reverse Path Forwarding
Reverse Path Forwarding (RPF) is an optimized form of flooding, in which the router accepts a packet from SourceA through Interface IF1, only if IF1 is the interface the router uses to reach SourceA. To determine if the interface is correct, it consults its unicast routing tables. The packet that arrives through interface IF1 is forwarded because the routing table lists this interface as the shortest path. The router's unicast routing table determines the shortest path for the multicast packets. Because a router accepts a packet from only one neighbor, it floods the packet only once, meaning that (assuming point-to-point links) each packet is transmitted over each link, once in each direction.
Upstream
Towards the root of the multicast forwarding tree. An upstream router refers to a router that is forwarding, or potentially capable of forwarding, data packets onto interfaces in an ECMP bundle. When there are multiple routers forwarding packets onto interfaces in the ECMP bundle, all these routers are called upstream routers.
Downstream
Away from the root of the multicast forwarding tree. A downstream router is a router that uses an interface in the ECMP bundle as an RPF interface for a multicast forwarding entry
When a PIM router downstream of the ECMP interfaces creates a new (*,G) or (S,G) entry, it will populate the RPF interface and RPF neighbor information according to the rules specified by [RFC4601]. This router will send its initial PIM Joins to that RPF neighbor. When the RPF neighbor router receives the Join message and finds that the receiving interface is one of the ECMP interfaces, it will check if the same flow is already being forwarded out of another ECMP interface. If so, this RPF neighbor router will send a PIM ECMPRedirect message onto the interface the Join was received on. The PIM ECMP Redirect message contains the address of the desired RPF neighbor, an Interface ID [RFC6395], and the other parameters used as tiebreakers. In essence, a PIM ECMP Redirect message is sent by an upstream router to notify downstream routers to redirect PIM Joins to the new RPF neighbor via a different interface. When the downstream routers receive this message, they SHOULD trigger PIM Joins toward the new RPF neighbor specified in the packet.
This PIM ECMP Redirect message has similar functions as the existing PIM Assert message:
• It is sent by an upstream router.
• It is used to influence the RPF selection by downstream routers.
• A tiebreaker metric is used
However, the existing Assert message is used to select an upstream router within the same multi-access network (such as a LAN), while the Redirect message is used to select both a network and an upstream router.
Sending ECMP Redirect
ECMP Redirects are sent by an upstream router under either of the following conditions:
• It detects a PIM Join on a non-desired outgoing interface.
• It detects multicast traffic on a non-desired outgoing interface.
In both cases, an ECMP Redirect is sent to the non-desired interface. An outgoing interface is considered non-desired when:
• The upstream router is already forwarding the same flow out of another interface belonging to the same ECMP bundle.
• The upstream router is not yet forwarding the flow out any interfaces of the ECMP bundle, but there is another interface with more desired attributes.
Receiving ECMP Redirect
When a downstream router receives an ECMP Redirect, and detects that the desired RPF path from its upstream router's point of view is different from its current one, it should choose to join the newly suggested path and prune from the current path.
If a downstream router receives multiple ECMP Redirects sent by different upstream routers, it SHOULD use the Preference, Metric, or other fields as specified below as the tiebreakers to choose the most preferred RPF interface and neighbor. The tie-break procedure is the same as that used in PIM Assert processing described by [RFC4601].
If an upstream router receives an ECMP Redirect, it SHOULD NOT change its forwarding behavior even if the ECMP Redirect makes it a less preferred RPF neighbor on the receiving interface.
PIM-ECMP Configuration
This section provides the configuration steps for configuring PIM ECMP Redirect and examples for a relevant scenario.
Topology
In this network topology, the source address is 172.31.1.52 and the group address is set to 224.0.1.3.
PIM ECMP Redirect Topology
Configure PIM Router-ID
Configure PIM router-id on all of the PIM routers inside the PIM domain:
# configure terminal | Enter configure mode. |
(config)# ip pim router-id 1.1.1.1 | Configure PIM router-id |
(config)#exit | Exit Configure mode. |
Validation
#show running-config
!
ip multicast-routing
!
ip pim router-id 1.1.1.1
Configure PIM ECMP Bundle
Configure PIM ECMP Bundle on all of the PIM routers inside the PIM domain:
# configure terminal | Enter configure mode. |
(config)# ip pim ecmp-bundle <bundle-name> | Configure PIM ECMP Bundle |
(config)#exit | Exit Configure mode. |
Validation
#show running-config
!
ip multicast-routing
!
Bind PIM ECMP Bundle
Bind an ECMP Bundle to an interface on the PIM routers inside the PIM domain:
# configure terminal | Enter configure mode. |
(config)# interface eth1 | Enter interface mode |
(config-if)# ip pim bind ecmp-bundle ecmpbundle | Bind PIM ECMP Bundle to an interface |
(config-if)#exit | Exit interface mode. |
Validation
Validation 1
Enter the commands listed in this section to confirm the previous configurations.
router_1#show running-config interface eth2
interface eth2
ip address 192.168.1.57/24
no shutdown
ip ospf cost 10
ip pim bind ecmp-bundle ecmpbundle
ip pim sparse-mode
lldp-agent
no dcbx enable
exit
Validation 2
The following output displays the bundle information:
router_1#show ip pim ecmp-bundle
Name : ecmpbundle1
Interface : <ECMP REDIRECT status>
eth2 : allowed
eth3 : allowed
router_1#show ip pim ecmp-bundle ecmpbundle1
Name : ecmpbundle1
Interface : <ECMP REDIRECT status>
eth2 : allowed
eth3 : allowed
exit
Validation 3
The following output displays the interface details:
router_1#show ip pim interface detail
eth1 (vif 0):
Address 192.168.10.57, Mode: Sparse
DR 192.168.10.57, DR's priority: 1
Hello period 30 seconds, Next Hello in 22 seconds
Triggered Hello period 5 seconds
PIM GenID sent in Hellos: 56e71c93
Propagation delay is 1000 milli-seconds
Interface ID: Router-ID:1.1.1.1 Local-ID 3
Neighbors:
192.168.10.52
PIM neighbor count: 1
PIM neighbor holdtime: 105
PIM configured DR priority: 1
PIM border interface: no
PIM Neighbor policy: not configured
eth2 (vif 2):
Address 192.168.1.57, Mode: Sparse
DR 192.168.1.152, DR's priority: 1
Hello period 30 seconds, Next Hello in 23 seconds
Triggered Hello period 5 seconds
PIM GenID sent in Hellos: 5f2ebb37
Propagation delay is 1000 milli-seconds
Interface ID: Router-ID:1.1.1.1 Local-ID 4
ECMP REDIRECT, bundle : ecmpbundle1, status : allowed
Neighbors:
192.168.1.149
192.168.1.150
192.168.1.152
PIM neighbor count: 3
PIM neighbor holdtime: 105
PIM configured DR priority: 1
PIM border interface: no
PIM Neighbor policy: not configured
IP Multicast Routing Table for ECMP Redirect
Note: The multicast routing table displays for an RP router are different from other routers.
Validation 1:
Initially router_1 sends the (*, G) to Router_2 IF-2, as Router_2 IF-2 is RIB indicated RPF neighbor.The RIB indicated RPF neighbor can be checked using command show ip rpf
router_1#show ip rpf 172.31.5.153
RPF information for 172.31.5.153
RPF interface: eth3
RPF neighbor: 192.168.11.152
RPF route: 172.31.5.0/24
RPF type: unicast (ospf)
RPF recursion count: 0
Doing distance-preferred lookups across tables
Distance: 110
Metric: 30
Validation 2:
The show ip pim mroute command displays the IP multicast routing table. In this table, the following fields are defined:
RPF nbr Displays the unicast next-hop to reach RP. and mask length.
RPF idx Displays the incoming interface for this (*, G) state.
RP Displays the IP address for the RP router
B Displays the bidirectional pim mode
The leading dots....Stand for VIF index
Router-2 upon receiving (*, G) on IF-2, which is rib indicated RPF, sends an ECMP redirect message to Router-1 IF-2 to intimate that, subsequent joins should be sent to IF-1 being the desired path with a (*,G). Since, Router-2 IF-1 already has a (*, G), the show ip pim mroute command output suggests 192.168.1.152 as the RPF neighbor, which is ECMP redirected RPF neighbor.
router_1#show ip pim mroute
IP Multicast Routing Table
(*,*,RP) Entries: 0
(*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
FCR Entries: 0
(*, 224.1.1.1)
RP: 172.31.5.153
RPF nbr: 192.168.1.152
RPF idx: eth2
Upstream State: JOINED
Local i...............................
Joined ................................
Asserted ................................
FCR:
0
The below output displays (*,G) at router_2 IF-1 using the command show ip pim mroute detail:
router_2#show ip pim mroute detail
IP Multicast Routing Table
(*,*,RP) Entries: 0
(*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
FCR Entries: 0
(*, 224.1.1.1) Uptime: 00:30:45
RP: 172.31.5.153, RPF nbr: 172.31.12.153, RPF idx: eth1
Upstream:
State: JOINED, SPT Switch: Disabled, JT Expiry: 15 secs
Macro state: Join Desired,
Downstream:
eth1:
State: JOINED, ET Expiry: 176 secs, PPT: off
Assert State: NO INFO, AT: off
Winner: 0.0.0.0, Metric: 4294967295, Pref: 4294967295, RPT bit: on
Macro state: Could Assert, Assert Track
Local Olist:
eth1
Join Olist:
eth1