RFC 6420
PIM Multi-Topology ID (MT-ID) Join Attribute
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 Notice πΈ
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Fbit: 0 Non-transitive Attribute.Ebit: As specified by [RFC5384].Attr Type: 2Length: 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
- ietf: rfc6420 2011-11
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms