RFC 6754

Protocol Independent Multicast Equal-Cost Multipath (ECMP) Redirect

πŸ“… published October 2012, from ietf

RFC 6754 πŸŽ€

Protocol Independent Multicast Equal-Cost Multipath (ECMP) Redirect ✨

Okay bestie, here's the header rundown πŸ’…

  • Authors: Y. Cai (Microsoft), L. Wei and H. Ou (Cisco Systems, Inc.), and V. Arya and S. Jethwani (DIRECTV Inc.) 🫢
  • Category: Standards Track πŸ“œ
  • Date: October 2012 πŸ“…
  • ISSN: 2070-1721
  • Obsoletes / Updates: The header doesn't list anything this one obsoletes or updates 🧚

Abstract 🌸

Okay so a Protocol Independent Multicast (PIM) router uses the Reverse Path Forwarding (RPF) procedure to pick an upstream interface and router so it can build its forwarding state πŸ¦‹ When there are equal-cost multipaths (ECMPs), existing implementations usually reach for hash algorithms to choose a path. The problem is those algorithms don't let traffic spread across the ECMPs according to administrative metrics, so network resources end up used inefficiently or ineffectively 😭

This document introduces the ECMP Redirect, a mechanism that upgrades the RPF procedure over ECMPs. It lets ECMP selection be based on administratively selected metrics, like data transmission delays, path preferences, and routing metrics πŸ’–

Status of This Memo πŸ“œ

This is an Internet Standards Track document. πŸŽ€

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community, has received public review, and has been approved for publication by the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check Section 2 of RFC 5741 πŸ€“

You can find the current status of this document, any errata, and how to send feedback at http://www.rfc-editor.org/info/rfc6754 ✨

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. πŸ’œ

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, because they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they are provided without warranty as described in the Simplified BSD License 🫢

Table of Contents πŸ—ΊοΈ

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  3
3.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
4.  Applicability  . . . . . . . . . . . . . . . . . . . . . . . .  5
5.  Protocol Specification . . . . . . . . . . . . . . . . . . . .  6
  5.1.  Sending ECMP Redirect  . . . . . . . . . . . . . . . . . .  6
  5.2.  Receiving ECMP Redirect  . . . . . . . . . . . . . . . . .  7
  5.3.  Transient State  . . . . . . . . . . . . . . . . . . . . .  7
  5.4.  Interoperability . . . . . . . . . . . . . . . . . . . . .  8
  5.5.  Packet Format  . . . . . . . . . . . . . . . . . . . . . .  8
    5.5.1.  PIM ECMP Redirect Hello Option . . . . . . . . . . . .  8
    5.5.2.  PIM ECMP Redirect Format . . . . . . . . . . . . . . .  9
6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 10
7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 10
8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 10
9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
  9.1.  Normative References . . . . . . . . . . . . . . . . . . . 11
  9.2.  Informative References . . . . . . . . . . . . . . . . . . 11

1. Introduction 🌈

Okay so a PIM router uses the RPF procedure to pick an upstream interface, plus a PIM neighbor on that interface, to build its forwarding state πŸ¦‹ When there are ECMPs upstream, existing implementations often use hash algorithms to choose a path. Those algorithms don't let traffic spread across the ECMP according to administrative metrics, which usually means network resources get used inefficiently or ineffectively 😭 This document introduces the ECMP Redirect, a mechanism that improves the RPF procedure over ECMP. It lets ECMP selection be based on administratively selected metrics, like data transmission delays, path preferences, and routing metrics, or a combination of those metrics ✨

ECMPs are used a lot in networks because they give you redundancy and more available bandwidth, which is so iconic πŸ’– A PIM router picks a path in the ECMP using its own implementation-specific choice. That's a local decision. One approach is to pick the PIM neighbor with the highest IP address. Another is to pick the PIM neighbor with the best hash value over the destination and source addresses 🧚

Even though ECMP-capable implementations are already widely deployed, the existing RPF selection methods have weaknesses. The big one is that there aren't administratively effective ways to allocate traffic over alternative paths πŸ’€ For example, there's no straightforward way to tell two downstream routers to pick either the same RPF neighbor routers or different ones for the same traffic flows πŸ™ˆ

Here's where ECMP Redirect comes in πŸ‘‘ The upstream routers use a PIM ECMP Redirect message to tell the downstream routers how to tiebreak among the upstream neighbors. That message carries the tiebreak information, and the information is based on metrics selected administratively πŸŽ€

2. Terminology 🧠

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. πŸ’…

This document uses terms defined in [RFC4601] to describe the actions PIM routers take 🌸

These terms have special significance for ECMP Redirect:

  • Equal-Cost Multipath (ECMP). In this document, "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 the interfaces in 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, but one individual interface can only belong to a single bundle. ECMP bundles are created on a router via configuration. βš™οΈ

  • RPF. RPF stands for Reverse Path Forwarding. πŸ”
  • Upstream. Toward the root of the multicast forwarding tree. An upstream router is 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 of 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. ⬇️

3. Overview πŸ”­

The existing PIM Assert mechanism lets the upstream router detect when multiple forwarders exist for the same multicast flow onto the same downstream interface. The upstream router sends a PIM Assert message containing a routing metric, and downstream routers use that metric to tiebreak among the multiple upstream forwarders on the same RPF interface 🧁

When there are ECMP interfaces between the downstream and upstream routers, the PIM ECMP Redirect mechanism works in a similar way, but it extends the ability to resolve the selection of forwarders among different interfaces in the ECMP πŸ¦„

When a PIM router downstream of the ECMP interfaces creates a new (*,G) or (S,G) entry, it will fill in 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 checks whether the same flow is already being forwarded out of another ECMP interface. If so, this RPF neighbor router sends a PIM ECMP Redirect 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. Basically, an upstream router sends a PIM ECMP Redirect message to tell downstream routers to redirect PIM Joins to the new RPF neighbor through 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 to the existing PIM Assert message:

  1. It is sent by an upstream router.
  2. It is used to influence the RPF selection by downstream routers.
  3. A tiebreaker metric is used.

The difference is that 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 🀯

One perk of this design is that control messages are only sent when there's a need to "rebalance" the traffic. That cuts down on the amount of control traffic, which is honestly so smart 🧠✨

4. Applicability 🎯

ECMP Redirect applies to shared trees or source trees built with the procedures described in [RFC4601]. Using ECMP Redirect in PIM Dense Mode [RFC3973] or in Bidirectional PIM [RFC5015] is not considered in this document 🚫

This enhancement can be applied to a bunch of scenarios. For example, it lets a network operator use ECMPs and split load based on bandwidth. To do that, the downstream routers do RPF selection with bandwidth, instead of IP addresses, as the tiebreaker. The ECMP Redirect mechanism makes sure all the downstream routers select the desired network link and upstream router whenever possible πŸŽ€ Another example is an operator imposing a transmission delay limit on certain links. The ECMP Redirect mechanism gives an upstream router a way to tell a downstream router to choose a different RPF path πŸ“

This specification doesn't dictate the scope of applications for this mechanism πŸ’œ

5. Protocol Specification πŸ’…

Part 2 picks this section up from here, so stay tuned, bestie 🫢

5.1. Sending ECMP Redirect πŸ“€

okay so ECMP Redirects get sent by an upstream router, but not all the time 🫢 It sends them in a rate-limited fashion, and only under either of these 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, the ECMP Redirect goes to the non-desired interface. An outgoing interface counts as "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.

An upstream router MAY choose not to send ECMP Redirects if it becomes aware that some of the downstream routers are unreachable via some links in the ECMP bundle. πŸ™ˆ

An upstream router uses the Neighbor Address or the Interface ID field in the ECMP Redirect message to say which interface it wants traffic sent to. This Neighbor Address MUST be associated with an interface in the same ECMP bundle as the ECMP Redirect message's outgoing interface. If the Interface ID field is ignored, this Neighbor Address field uniquely identifies a LAN and an upstream router. That's where a downstream router SHOULD redirect its Join messages. An ECMP Redirect message MUST be discarded if the Neighbor Address field in the message does not match the cached neighbor address. πŸ’…

The Interface ID field is used in IPv4 when one or more RPF neighbors in the ECMP bundle are unnumbered, or in IPv6 where link-local addresses are in use. For other IPv4 usage, this field is zeroed when sent and ignored when received. If the Router ID part of the Interface ID is zero, the field MUST be ignored. See [RFC6395] for details of its assignment and usage in PIM Hellos. If the Interface ID is not ignored, the receiving router of this message MUST use the Interface ID, instead of Neighbor Address, to identify the new RPF neighbor. Also, an ECMP Redirect message MUST be discarded if the Interface ID field in the message does not match the cached Interface ID. ✨

5.2. Receiving ECMP Redirect πŸ“₯

when a downstream router gets an ECMP Redirect and notices 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. The exact order of those actions is implementation specific. 🧚

if a downstream router gets multiple ECMP Redirects from different upstream routers, it SHOULD use the Preference, Metric, or other fields as specified below as the tiebreakers. That's how it picks the most preferred RPF interface and neighbor. The tiebreak procedure is the same one used in PIM Assert processing, described by [RFC4601]. It's giving consistency πŸ‘‘

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. Not me changing my whole routing just because of one message πŸ’…

5.3. Transient State 🌸

during a transient network outage with a single link cut in an ECMP bundle, a downstream router may lose its connection to its RPF neighbor, and the normal ECMP Redirect operation may get interrupted for a bit. In that situation, the following actions are RECOMMENDED. πŸ₯Ί

The downstream router SHOULD select a new RPF neighbor. Among all ECMP upstream routers, the preferred pick is the one on the LAN where the previous RPF neighbor lived.

If there is no upstream router reachable on the LAN where the previous RPF neighbor lived, the downstream router will select a new RPF neighbor on a different LAN. Among all ECMP upstream routers, the one that served as RPF neighbor before the link failure is preferred. You can identify that router by its Router ID, which is part of the Interface ID in the PIM ECMP Redirect Hello option. πŸ¦‹

During normal ECMP Redirect operations, when PIM Joins for the same (*,G) or (S,G) arrive on a different LAN, an upstream router will send an ECMP Redirect to prune the non-preferred LAN. During a partial network outage, those ECMP Redirects can be suppressed if the upstream router decides the non-preferred PIM Join came from a router that can't be reached via the preferred LAN. To check, the upstream router can look up the downstream router's Router ID using the source address in the PIM Join, then search the neighbors on the preferred LAN for one with the same Router ID. Galaxy brain stuff 🧠✨

5.4. Interoperability 🀝

if a PIM router supports this specification, it MUST send the PIM ECMP Redirect Hello Option in its PIM Hello messages. πŸŽ€

A PIM router sends ECMP Redirects on an interface only when it detects that all neighbors on that interface have sent this Hello option. If a PIM router detects that any of its neighbors on an ECMP bundle does not support this Hello option, it SHOULD NOT send ECMP Redirects to interfaces in that bundle. However, it SHOULD still process any ECMP Redirects received from interfaces in that same bundle. Be nice to everyone, but also be careful πŸ’œ

If a PIM router does not support this specification, it will ignore the PIM ECMP Redirect Hello Options and the ECMP Redirects in the PIM packets it receives. πŸ™ƒ

5.5. Packet Format πŸ“¦

5.5.1. PIM ECMP Redirect Hello Option 🧁

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Type = 32           |         Length = 0            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Figure 1: ECMP Redirect Hello Option

Type: 32

Length: 0

5.5.2. PIM ECMP Redirect Format πŸ“

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |PIM Ver| Type  |   Reserved    |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |              Group Address (Encoded-Group format)             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            Source Address (Encoded-Unicast format)            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Neighbor Address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +-+-+-+-+-+- ............ Interface ID ........... -+-+-+-+-+-+-+
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Preference  |                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+--  ... Metric ...  -+-+-+-+-+-+-+-+-+
   |                                                               |
   +- .. Metric .. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               |
   +-+-+-+-+-+-+-+-+

                  Figure 2: ECMP Redirect Message Format

PIM Ver: See Section 4.9 in [RFC4601].

Type: 11

Reserved: See Section 4.9 in [RFC4601].

Checksum: See Section 4.9 in [RFC4601].

Group Address (64 or 160 bits): Encoded-Group address as specified in Section 4.9.1 of [RFC4601].

Source Address (48 or 144 bits): Encoded-Unicast address as specified in Section 4.9.1 of [RFC4601].

Neighbor Address (32 or 128 bits): Address of the desired upstream neighbor where the downstream receiver redirects PIM Joins. πŸ“

Interface ID (64 bits): See [RFC6395] for details.

Preference (8 bits): This is the first tiebreaker when ECMP Redirects from multiple upstream routers are compared against each other. A numerically smaller value is preferred. The reserved value (15) indicates that the Metric value following the Preference field is a Network Time Protocol (NTP) timestamp, encoded in the format specified in [RFC5905], taken at the moment the sending router started to forward out of this interface. ⏰

Metric (64 bits): This is the second tiebreaker if the Preference values are the same. A numerically smaller value is preferred. This Metric can contain path parameters defined by users. When the Preference and Metric values are the same, the Neighbor Address or Interface ID field is used as the third tiebreaker, depending on which field identifies the RPF neighbor. The bigger value wins. πŸ†

6. IANA Considerations πŸ—‚οΈ

A PIM-Hello Option Type (32) has been assigned to the PIM ECMP Redirect Hello Option. 🎫

In the PIM Message Types registry created by [RFC6166], a PIM Message Type (11) has been assigned to the ECMP Redirect message. 🎟️

7. Security Considerations πŸ”

⚠️ Okay, bestie, this part is SERIOUS. Please read it carefully. πŸ’€

Security of the ECMP Redirect is only guaranteed by the security of the PIM packet. The security considerations for PIM Assert packets, as described in [RFC4601], apply here. Spoofed ECMP Redirect packets may cause downstream routers to send PIM Joins to an undesired upstream router and trigger more ECMP Redirect messages. The security considerations for PIM packets described in [RFC4601] also apply to the new Hello option defined here. Stay safe out there πŸ˜­πŸ›‘οΈ

8. Acknowledgements 🫢

The authors would like to thank Apoorva Karan for helping with the original idea. They also thank Eric Rosen, Isidor Kouvelas, Toerless Eckert, Stig Venaas, Jeffrey Zhang, Bill Atwood, and Adrian Farrel for their review comments. Iconic squad πŸ‘‘πŸŒˆ

9. References πŸ“š

9.1. Normative References

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC4601]  Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas,
           "Protocol Independent Multicast - Sparse Mode (PIM-SM):
           Protocol Specification (Revised)", RFC 4601, August 2006.

9.2. Informative References

[RFC3973]  Adams, A., Nicholas, J., and W. Siadak, "Protocol
           Independent Multicast - Dense Mode (PIM-DM): Protocol
           Specification (Revised)", RFC 3973, January 2005.

[RFC5015]  Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano,
           "Bidirectional Protocol Independent Multicast (BIDIR-
           PIM)", RFC 5015, October 2007.

[RFC5905]  Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch,
           "Network Time Protocol Version 4: Protocol and Algorithms
           Specification", RFC 5905, June 2010.

[RFC6166]  Venaas, S., "A Registry for PIM Message Types", RFC 6166,
           April 2011.

[RFC6395]  Gulrajani, S. and S. Venaas, "An Interface Identifier (ID)
           Hello Option for PIM", RFC 6395, October 2011.

Authors' Addresses πŸ¦‹

Yiqun Cai
Microsoft
1065 La Avenida
Mountain View, CA  94043
USA

EMail: yiqunc@microsoft.com


Liming Wei
Cisco Systems, Inc.
Tasman Drive
San Jose, CA  95134
USA

EMail: lwei@cisco.com


Heidi Ou
Cisco Systems, Inc.
Tasman Drive
San Jose, CA  95134
USA

EMail: hou@cisco.com


Vishal Arya
DIRECTV Inc.
2230 E Imperial Hwy
El Segundo, CA  90245
USA

EMail: varya@directv.com


Sunil Jethwani
DIRECTV Inc.
2230 E Imperial Hwy
El Segundo, CA  90245
USA

EMail: sjethwani@directv.com
πŸ“¦ where this page comes from