RFC 6420

PIM Multi-Topology ID (MT-ID) Join Attribute

πŸ“… published November 2011, from ietf

PIM Multi-Topology ID (MT-ID) Join Attribute πŸŽ€

Okay bestie, this is RFC 6420 πŸ’–. It's from the Internet Engineering Task Force (IETF), it's a Standards Track doc, and it was published in November 2011 🌸. The authors are Y. Cai and H. Ou from Cisco Systems, Inc. 🧚 The ISSN is 2070-1721. The header doesn't list any RFCs that it obsoletes or updates, so it's standing on its own πŸ’….


Abstract ✨

Okay so the big idea is this: the doc adds a brand new type of PIM Join Attribute πŸ¦‹. It lets PIM signal which topology should be used when building a specific multicast distribution tree, which is basically PIM saying "use THIS route map, not that one" πŸ—ΊοΈπŸ’œ.

Status of This Memo πŸ“œ

This is an Internet Standards Track document, so it's officially a standard, not just a suggestion πŸ‘‘. It came out of the IETF, and it represents the consensus of the IETF community 🫢. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG) πŸ”₯. If you want more info on Internet Standards, check out Section 2 of RFC 5741 🌈. Errata and feedback info live at http://www.rfc-editor.org/info/rfc6420 πŸ’….

Copyright (c) 2011 IETF Trust and the persons identified as the document authors, all rights reserved πŸ’–. This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info), as they stood on the publication date πŸ“œ. Read them carefully, because they spell out your rights and restrictions πŸ™ˆ. Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as the Simplified BSD License describes πŸ¦‹.

Table of Contents πŸ“

   1. Introduction ....................................................2
   2. Terminology .....................................................3
   3. Functional Overview .............................................4
      3.1. PIM RPF Topology ...........................................4
      3.2. PIM MT-ID ..................................................6
      3.3. Applicability ..............................................7
   4. Protocol Specification of PIM MT-ID .............................7
      4.1. PIM MT-ID Hello Option .....................................7
      4.2. PIM MT-ID Join Attribute ...................................7
           4.2.1. Sending PIM MT-ID Join Attribute ....................7
           4.2.2. Receiving PIM MT-ID Join Attribute ..................8
           4.2.3. Validating PIM MT-ID Join Attribute .................8
           4.2.4. Conflict Resolution .................................9
                  4.2.4.1. Conflict Resolution Rules for
                           Upstream Routers ..........................10
                  4.2.4.2. Conflict Resolution Rules for
                           Downstream Routers ........................10
   5. Packet Format ..................................................10
      5.1. PIM MT-ID Hello Option ....................................11
      5.2. PIM MT-ID Join Attribute TLV Format .......................11
   6. IANA Considerations ............................................11
      6.1. PIM MT-ID Hello Option ....................................11
      6.2. PIM MT-ID Join Attribute Type .............................12
   7. Security Considerations ........................................12
   8. Acknowledgments ................................................12
   9. References .....................................................12
      9.1. Normative References ......................................12
      9.2. Informative References ....................................13

1. Introduction ✨

Some unicast protocols, like OSPF and IS-IS, can treat one network as multiple topologies [RFC4915] [RFC5120] 🌈. That's the whole point of multi-topology (MT) routing: different paths through the network can be picked for different traffic, or you get protection paths for when stuff fails πŸ›‘οΈ.

PIM [RFC4601] uses a technique called Reverse Path Forwarding (RPF) to build forwarding trees between multicast sources and receivers 🌊. RPF runs on topology info that routing protocols like OSPF and IS-IS hand over πŸ—ΊοΈ. The PIM MT-ID Join Attribute from this doc lets PIM reach those multiple topologies and build multicast trees on separate network paths, even when the roots of the trees are the same πŸ”₯.

This is a huge win for resilience πŸ’ͺ. Say a multicast stream gets duplicated and sent over two source trees, (S1, G1) and (S1, G2), at the same time πŸ¦‹. With MT-capable unicast routing and the procedures in this doc, those two source trees can be built so they don't share any transit network segment 🫢. So a single network failure won't cause any loss to the stream 😭✨.

This doc introduces a new type of PIM Join Attribute [RFC5384] called "MT-ID Join Attribute" πŸ’œ. It encodes the numerical identity of the topology PIM uses for RPF on the forwarding tree being joined 🧚. It also lays out the procedures and rules for processing the attribute and for resolving conflicts when routers don't match on support for the attribute, or on its value πŸ‘‘.

Here's the thing though: this doc doesn't change the RPF check procedure that verifies the incoming interface when a packet gets forwarded, as defined in [RFC4601] πŸ™ˆ. To use this capability, an app can pick group addresses, source addresses, or both to identify a unique multicast stream πŸ’…. It might also need to do splitting and merging πŸ“. The detailed processing for all that is out of scope for this doc 🌸.

From here on out, the MT-ID Join Attribute gets called "MT-ID" πŸ’–.

2. Terminology πŸ“š

Here are the acronyms you'll see a lot in this doc πŸ’….

  • RPF: RPF stands for "Reverse Path Forwarding" 🌊. A PIM router uses RPF for two things. When it builds a forwarding tree, it finds an interface (the RPF interface) and an upstream PIM neighbor (the RPF neighbor) to send PIM Joins to πŸ¦‹. When a data packet shows up, it runs an RPF check (aka RPF check, lol) to confirm the packet came in on the expected incoming interface, before it decides whether to replicate the packet πŸ”.
  • RPF Topology: an RPF topology is a collection of routes that a PIM router uses for RPF πŸ—ΊοΈ. A PIM router can have one or more of these πŸ’œ.
  • MT: MT stands for "Multi-Topology" in this doc 🌈. People sometimes call it "multi-topology routing" too ✨. In the PIM world, MT means the router can build and maintain multiple RPF topologies at once πŸ‘‘.
  • PIM MT-ID: an MT-ID is a numerical identifier linked to an RPF topology 🧚.
  • PIM MT-ID Join Attribute: this is a brand new type of Join Attribute that this doc introduces, so PIM Join messages can name the RPF topology πŸ”₯.

Now, the key words list πŸŽ€. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this doc get read exactly the way [RFC2119] describes πŸ™ˆ. So when you see them in capitals, they're doing official spec work, not just being loud πŸ“œ.

3. Functional Overview 🌊

PIM depends on routes it learns from routing protocols for RPF πŸ—ΊοΈ. Those routes add up to one or more topologies πŸ¦‹. This section covers what multi-topology routing does for PIM and where it's useful πŸ’….

3.1. PIM RPF Topology 🧚

An PIM RPF topology is a collection of routes that PIM uses for the RPF operation when it builds shared trees or source trees 🌲. The routes in a topology can come from different protocols, which is a lot of mixing and matching 🌈. For the rest of the doc, "topology" can be used on its own as shorthand for PIM RPF topology, as long as nothing's confusing πŸ’–.

In a multi-topology setup, you can have several RPF topologies on the same network πŸ”₯. A given source might only be reachable in one of those topologies, or it might be reachable in several of them through different paths πŸ¦‹.

To see how an MT-capable unicast routing protocol connects to MT-capable RPF topologies, check out the example in Figure 1 πŸ‘€.

                              +++ A +++ B +++
                             +               +
                      S -- R1                 R2 -- receivers
                             *               *
                              *** C *** D ***

                 Figure 1. A simple topology for multicast
  • The traffic source is S 🎬. R1 announces S to every router using Multiprotocol BGP (MBGP) πŸ“£. That route gets installed in every topology 🫢.
  • Two topologies get created in the unicast IGP, which we'll call OSPF 1000 and OSPF 2000 ✨. OSPF 1000 includes A, B, and the interfaces on R1 and R2 that are configured to be part of OSPF 1000 πŸ’œ. OSPF 2000 includes C, D, and the interfaces on R1 and R2 that are configured to be part of OSPF 2000 🌸.
  • Two PIM RPF topologies get created, which we'll call PIM 500 and PIM 600 πŸ‘‘.

PIM 500 has these routes: S announced by MBGP, plus those learned via OSPF 1000 🌊 PIM 600 has these routes: S announced by MBGP, plus those learned via OSPF 2000 🧚

Okay this part is so cool 😭. The example shows that the naming spaces of MT-ID don't have to match between PIM and the IGPs πŸŽ€. A unicast IGP topology and the PIM RPF topology it feeds routes into also don't have to hold the same set of routes πŸ’…. In this example, the prefix covering S isn't in OSPF 1000 or OSPF 2000, but it does show up in PIM 500 and PIM 600, so R2 can join to it through either path πŸ¦‹.

There are two ways to pick the RPF topology for a particular multicast distribution tree: through configuration, or through PIM πŸ—ΊοΈ.

With configuration, a network admin sets up a policy that maps a group range to a topology, a source prefix range to a topology, or both πŸ› οΈ. Using the same example, the policy can say that for building a forwarding tree for G1, only the routes in PIM 500 get used, and for G2, only the routes in PIM 600 get used 🌈. The result is that packets for (S, G1) follow S-R1-A-B-R2, and packets for (S, G2) follow S-R1-C-D-R2 πŸ”₯.

The other option is to include the RPF topology info as a new PIM Join Attribute in the PIM Join packets that downstream routers send 🧚✨.

You can use both methods at the same time πŸ’–. The details of the first method are implementation specific, and this doc doesn't discuss them πŸ™ˆ. The spec for the second method is included right here in this doc πŸ’œ.

3.2. PIM MT-ID ✨

okay so every PIM RPF topology that gets created gets its own unique numerical ID inside the PIM domain πŸ¦‹. This one is called the PIM MT-ID, and it's giving main character energy. It has these properties:

  • It's the path identifier the PIM control plane uses, but it does not do anything in the forwarding state for a specific topology 🌸. Topologies get told apart on the forwarding plane by different group addresses and/or source addresses instead.
  • This value doesn't have to match the MT-ID used by the unicast routing protocols that feed routes into the topology. In practice, when only one unicast routing protocol (such as OSPF or IS-IS) is in use, the PIM MT-ID is RECOMMENDED to use the same value as the IGP topology identifier πŸ’…. Using the example from earlier, if every route in PIM 500 comes from OSPF 1000, it is RECOMMENDED to name that RPF topology PIM 1000 instead of PIM 500. This cuts down on management overhead and makes troubleshooting way easier 🧚.
  • This value MUST be unique and consistent within the network for the same topology. For example, PIM 500 MUST refer to the same topology on routers R1, C, D, and R2 🫢. In a real deployment, you should have a way to detect inconsistency in the PIM MT-ID configuration, but the details of that mechanism are beyond the scope of this document.
  • 0 is reserved as the default, and it MUST NOT be included in the Join Attribute encoding πŸ™ˆ.
  • How a PIM MT-ID gets assigned to a topology is up to the network administrator and is outside the scope of this document πŸŽ€.

3.3. Applicability 🌈

The PIM MT-ID Join Attribute in this document applies to PIM Join/Assert packets used by PIM SM/SSM/Bidir (Sparse Mode/Source-Specific Mode/Bidirectional). It's not used in any other PIM packets πŸ’œ. So it can only be used to build shared or source trees for PIM SM/SSM and PIM-Bidir downstream.

When this attribute is used together with the RPF vectors defined in [RFC5496] and [MVPN], the vectors get processed against the topology identified by the PIM MT-ID attribute ✨.

4. Protocol Specification of PIM MT-ID πŸ‘‘

The change to the PIM protocol has two pieces: the PIM MT-ID Hello Option and the PIM MT-ID Join Attribute πŸ¦‹.

4.1. PIM MT-ID Hello Option πŸŽ€

A router uses the PIM MT-ID Hello Option to say whether it supports the functionality in this document πŸ’–. If it does, it MUST include the PIM Hello Option in its PIM Hello packets, and it MUST include both the Join Attribute Option [RFC5384] and the new PIM MT-ID Option (see Section 5.1 of this document for the packet format) 😭.

4.2. PIM MT-ID Join Attribute πŸ”₯

4.2.1. Sending PIM MT-ID Join Attribute

When a PIM router originates a PIM Join/Assert packet, it may choose to encode the PIM MT-ID of the topology where the RPF lookup is supposed to happen for the matching (*,G) or (S,G) entry 🌸. The PIM MT-ID identifies the topology picked by local policy/configuration, or it's the value received from downstream routers after the MT-ID conflict resolution procedures have been applied (see Section 4.2.4 for the full story).

Here are the exceptions πŸ’…:

  • A router SHOULD NOT include the attribute if the PIM MT-ID is 0. The value of 0 is ignored on reception.
  • A router SHOULD NOT include the PIM MT-ID in its Join/Assert packets if the upstream router, or any of the routers on the LAN, does not include the "PIM Join Attribute" or "PIM MT-ID" option in its Hello packets πŸ™ˆ.
  • A router SHOULD NOT attach the PIM MT-ID for pruned sources. The PIM MT-ID MUST be ignored for a pruned source by a router processing the Prune message πŸ’€.

4.2.2. Receiving PIM MT-ID Join Attribute 🧚

When a PIM router receives a PIM MT-ID Join Attribute in a Join/Assert packet, it MUST do the following:

  • Validate the attribute encoding. The details are in the next section 🫢.
  • If the Join Attribute is valid, use the rules in the section "Conflict Resolution" to figure out which PIM MT-ID to use 🌈.
  • Use the topology identified by the selected PIM MT-ID to do the RPF lookup for the (*,G)/(S,G) entry, unless a different topology is specified by a local configuration. The local configuration always takes precedence πŸ‘‘.

It's an exception case, but it's worth walking through what happens when a router gets a PIM MT-ID Join Attribute and doesn't support the functionality in [RFC5384] or this document πŸ¦‹. If the router supports [RFC5384] but not this document, it can skip the PIM MT-ID Join Attribute and move on to the next Join Attribute, if there is one. The RPF decision won't change, because the router doesn't understand what the PIM MT-ID Join Attribute means. The router uses the procedures in [RFC5384] to do the conflict resolution πŸ’œ.

If a router doesn't support [RFC5384], it ignores the Join/Assert message, because it isn't able to parse the encoded sources 😭.

If a router supports both [RFC5384] and this document, but chooses not to send either the PIM MT-ID or the PIM Join Attribute Option in its Hello packets (probably for administrative reasons), it SHOULD ignore the Join/Assert message when it receives a PIM Join/Assert packet carrying the PIM MT-ID Join Attribute πŸ“.

4.2.3. Validating PIM MT-ID Join Attribute ✨

An upstream router MUST be known to support this document before a downstream router can include the PIM MT-ID attribute in its Join packets πŸ”₯. However, an upstream router doesn't need to know whether a downstream router supports this document when it decides whether to accept the attribute. So if the Join packet sender doesn't include the "PIM Join Attribute" or "PIM MT-ID" options in its Hello packets, the PIM MT-ID attribute in the Join may still be considered valid. This also lines up with the "Robustness Principle" outlined in [RFC793] 🌸.

Here's the detail of the validity check πŸ’…:

  • There is at most 1 PIM MT-ID attribute encoded. If multiple PIM MT-ID Join Attributes are included (possibly because of an implementation error), only the last one is accepted for this particular source. Processing of the rest of the Join message continues πŸ™ˆ.
  • The Length field must be 2. If the Length field is not 2, the rest of the Join message, including the current (S,G) or (*,G) entry, MUST be ignored. The group, source, and Rendezvous Point (RP) in the Join message that were already processed SHOULD still be considered valid πŸ’€.
  • The value MUST NOT be 0. If it is 0, the PIM MT-ID attribute is ignored. Processing of the rest of the Join message, including the current (S,G) or (*,G) entry, continues as if that PIM MT-ID attribute weren't in the packet 🧚.

4.2.4. Conflict Resolution πŸŽ€

The definition of "PIM MT-ID conflict" changes depending on whether you're looking at an upstream or a downstream router πŸ¦‹.

PIM MT-ID conflicts arise on an upstream router when it doesn't have a local topology selection policy and receives Join packets from downstream routers and/or Assert packets from other forwarding routers on the LAN, and those packets carry different PIM MT-IDs πŸ’œ.

That said, if an upstream router has a local configuration that specifies PIM MT-IDs to identify RPF topologies, and those MT-IDs don't match the MT-ID on a received Join or Assert packet, this is not considered a conflict, so the resolution procedures aren't applied 🌈. This includes the case where there are local PIM MT-IDs but no PIM MT-ID is encoded in the incoming packet ✨.

On the other hand, when a downstream router sees a different PIM MT-ID attribute from other routers on the LAN, it applies the rules to resolve the conflict, whether or not the router has a local topology selection policy πŸ”₯.

When two PIM MT-IDs are compared, only the 12-bit Value field (see Section 5.2) is compared. The other fields of the PIM MT-ID Join Attribute TLV Format (including the four reserved bits) MUST NOT be used in the comparison πŸ™ˆ.

4.2.4.1. Conflict Resolution Rules for Upstream Routers πŸ‘‘

  • If an upstream router receives different PIM MT-ID attributes from PIM Join packets, it MUST follow the rules in [RFC5384] to select one. The PIM MT-ID chosen is the one encoded for its upstream neighbor 🫢.

To keep the chances of potential transient forwarding loops low, an upstream router MAY choose to ignore the incoming PIM Join packets altogether if it sees a conflict in the PIM MT-ID attributes 😭. An upstream router that has a locally configured topology selection policy may also take this action, as an exception to the rules above 🌸.

  • If an upstream router receives a different PIM MT-ID attribute in an Assert packet, it MUST use the tiebreaker rules in [RFC4601] to determine the Assert winner. The PIM MT-ID is not considered when deciding the winner in the Assert process πŸ’….

4.2.4.2. Conflict Resolution Rules for Downstream Routers πŸ¦‹

  • If a downstream router sees different PIM MT-ID attributes from PIM Join packets, it MUST follow the specification in [RFC4601] as if the attribute didn't exist. For example, the router suppresses its own Join packet if a Join for the same (S,G) is seen 🧚.

The router MUST NOT use the rules in [RFC5384] to select a PIM MT-ID from Join packets sent by other downstream routers πŸ™ˆ.

  • If a downstream router sees that its preferred upstream router loses in the Assert process, and the Assert winner uses a different PIM MT-ID, the downstream router SHOULD still choose the Assert winner as its RPF neighbour, but it MUST NOT encode the PIM MT-ID when sending Join packets to it πŸ’€.

5. Packet Format πŸ’–

This section describes the format of the new PIM messages introduced by this document. The messages follow the same transmission order as the messages defined in [RFC4601] ✨.

5.1. PIM MT-ID 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      OptionType = 30          |       OptionLength = 0        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • OptionType: 30.
  • OptionLength: 0.

5.2. PIM MT-ID Join Attribute TLV 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |F|E| Attr Type | Length        |R R R R| Value                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • F bit: 0 Non-transitive Attribute.
  • E bit: As specified by [RFC5384].
  • Attr Type: 2
  • Length: 2.
  • R: Reserved bits, 4 in total. Set to zero on transmission. Ignored upon receipt 🫢.
  • Value: PIM MT-ID, 1 to 4095 πŸ’œ.

6. IANA Considerations 🌸

6.1. PIM MT-ID Hello Option πŸ’…

IANA maintains a registry of "Protocol Independent Multicast (PIM) Parameters" with a sub-registry called "PIM-Hello Options" πŸŽ€.

IANA has assigned the PIM Hello Option type value 30 for the PIM MT-ID Hello Option, according to the First Come First Served allocation policy πŸ‘‘.

IANA has assigned a Length value of 0 🧚.

6.2. PIM MT-ID Join Attribute Type πŸ“‹βœ¨

Okay so the IANA keeps a registry called "Protocol Independent Multicast (PIM) Parameters" πŸŽ€, and inside it there's a sub-registry called "PIM Join Attribute Types" πŸ’…. bestie this is literally where the paperwork lives 🫢

The IANA has assigned a value of 2 for the PIM MT-ID Join Attribute defined in Section 5.2 of this document πŸ¦‹. So that's the number, periodt πŸ‘‘

7. Security Considerations πŸ”

ngl this section is serious 😭. As described in [RFC5384], the security of the Join Attribute is only guaranteed by the security of the PIM packet that carries it πŸ”’. Similarly, the security of the Hello Option is only guaranteed by securing the whole Hello Packet πŸ’œ.

⚠️ Okay bestie, read this part carefully. Malicious alteration of the PIM MT-ID Hello Option, or of the PIM MT-ID carried in a packet, might cause the PIM resiliency goals to be violated 🚨. Because of that, the security considerations of [RFC4601] apply to the extensions described in this document πŸ›‘οΈ.

As a type of PIM Join Attribute, the security considerations described in [RFC5384] apply here 🧚. Specifically, malicious alteration of PIM MT-ID may cause the resiliency goals to be violated πŸ’€.

8. Acknowledgments 🌸

The authors would like to thank Eric Rosen, Ice Wijnands, Dino Farinacci, Colby Barth, Les Ginsberg, Dimitri Papadimitriou, Thomas Morin, and Hui Liu for their input πŸ’–.

The authors would also like to thank Adrian Farrel for his detailed and constructive comments during the AD review πŸ™Œβœ¨.

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.
  • [RFC5384] Boers, A., Wijnands, I., and E. Rosen, "The Protocol Independent Multicast (PIM) Join Attribute Format", RFC 5384, November 2008.

9.2. Informative References

  • [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981.
  • [RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", RFC 4915, June 2007.
  • [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi Topology (MT) Routing in Intermediate System to Intermediate Systems (IS-ISs)", RFC 5120, February 2008.
  • [RFC5496] Wijnands, IJ., Boers, A., and E. Rosen, "The Reverse Path Forwarding (RPF) Vector TLV", RFC 5496, March 2009.
  • [MVPN] Rosen, E. and R. Aggarwal, "Multicast in MPLS/BGP IP VPNs", Work in Progress, January 2010.

Authors' Addresses πŸ¦‹

Yiqun Cai
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134

EMail: ycai@cisco.com


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

EMail: hou@cisco.com
πŸ“¦ where this page comes from