RFC 8814

Signaling Maximum SID Depth (MSD) Using the Border Gateway Protocol - Link State

πŸ“… published August 2020, from ietf

1. Introduction πŸ¦‹

okay so, when a centralized controller computes Segment Routing (SR) [RFC8402] paths, it's critical that it knows the Maximum SID Depth (MSD) that can be imposed at each node/link on a given SR path 😭. That's how it makes sure a computed path's Segment Identifier (SID) stack depth never goes past the number of SIDs the node can actually handle. no cap, it's the whole vibe.

[RFC8664] defines how to signal MSD in the Path Computation Element Protocol (PCEP) πŸ’œ. The OSPF and IS-IS extensions for signaling MSD are defined in [RFC8476] and [RFC8491], respectively.

BUT, if PCEP isn't supported or configured on the head-end of an SR tunnel (or a Binding-SID anchor node), and the controller doesn't take part in IGP routing, it has zero way of learning the MSD of nodes and links πŸ’€. That's where BGP-LS [RFC7752] comes in. It defines a way to expose the topology, plus the attributes and capabilities of the nodes in that topology, to a centralized controller. iconic πŸ‘‘

This document adds extensions to BGP-LS so it can advertise one or more types of MSDs at node and/or link granularity ✨. Other MSD types are known to be useful too! For example, [OSPF-ELC] and [ISIS-ELC] define Entropy Readable Label Depth (ERLD), which a head-end uses to insert an Entropy Label (EL) at a depth that transit nodes can read 🌈.

In the future, new MSD-Types are expected to be defined for signaling extra capabilities, e.g., ELs, SIDs that can be imposed through recirculation, or SIDs tied to another data plane such as IPv6 🧚. MSD advertisements may be useful even when SR itself isn't enabled. For example, in a non-SR MPLS network, MSD defines the maximum label depth πŸ“.

1.1. Conventions Used in This Document πŸŽ€

1.1.1. Terminology πŸ“š

  • MSD: Maximum SID Depth - the number of SIDs supported by a node or a link on a node
  • PCE: Path Computation Element
  • PCEP: Path Computation Element Protocol
  • SID: Segment Identifier as defined in [RFC8402]
  • SR: Segment Routing
  • Label Imposition: Imposition is the act of modifying and/or adding labels to the outgoing label stack associated with a packet. This includes:
    • replacing the label at the top of the label stack with a new label
    • pushing one or more new labels onto the label stack

The number of labels imposed is then the sum of the number of labels that are replaced and the number of labels that are pushed. See [RFC3031] for further details.

1.1.2. Requirements Language 🫢

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

2. Advertisement of MSD via BGP-LS 🌸

This document describes extensions that let BGP-LS speakers signal the MSD capabilities [RFC8491] of nodes and their links in a network to a BGP-LS consumer of network topology, like a centralized controller πŸ’–. The controller can use this info when it computes SR paths based on their MSD capabilities. When a BGP-LS speaker is originating topology it learned from link-state routing protocols like OSPF or IS-IS, the MSD info for the nodes and their links comes from the underlying extensions defined in [RFC8476] and [RFC8491], respectively.

The extensions in this document allow advertisement of different MSD-Types. Those are defined elsewhere and were introduced in [RFC8491]. This lets MSD-Types that the IGPs define in the future get shared in BGP-LS too ⭐.

3. Node MSD TLV πŸ’œ

The Node MSD ([RFC8476] [RFC8491]) is encoded in a new Node Attribute TLV [RFC7752] to carry the provisioned SID depth of the router identified by the corresponding Router-ID. The Node MSD is the smallest MSD the node supports across the set of interfaces configured for use. MSD values may be learned via a hardware API or may be provisioned. The format looks like this πŸ‘€:

      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             |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    MSD-Type   |  MSD-Value    |  MSD-Type...  |  MSD-Value... |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 1: Node MSD TLV Format

Where:

  • Type: 266
  • Length: variable (multiple of 2); represents the total length of the value field in octets.
  • Value: consists of one or more pairs of a 1-octet MSD-Type and 1-octet MSD-Value.
    • MSD-Type: one of the values defined in the "IGP MSD-Types" registry defined in [RFC8491].
    • MSD-Value: a number in the range of 0-255. For all MSD-Types, 0 represents the lack of ability to impose an MSD stack of any depth; any other value represents that of the node. This value MUST represent the lowest value supported by any link configured for use by the advertising protocol instance.

The Link MSD ([RFC8476] [RFC8491]) is defined to carry the MSD of the interface associated with the link. It's encoded in a new Link Attribute TLV [RFC7752] using this 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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |              Type             |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    MSD-Type   |  MSD-Value    |  MSD-Type...  |  MSD-Value... |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 2: Link MSD TLV Format

Where:

  • Type: 267
  • Length: variable (multiple of 2); represents the total length of the value field in octets.
  • Value: consists of one or more pairs of a 1-octet MSD-Type and 1-octet MSD-Value.
    • MSD-Type: one of the values defined in the "IGP MSD-Types" registry defined in [RFC8491].
    • MSD-Value: a number in the range of 0-255. For all MSD-Types, 0 represents the lack of ability to impose an MSD stack of any depth; any other value represents that of the link when used as an outgoing interface.

6. Manageability Considerations πŸŽ€

Okay so this section is all about how you actually keep an eye on this stuff day to day πŸ‘€ The new extensions here just add to the IGP topology info that [RFC7752] already distributes, so they're basically a glow-up on existing data πŸ’–

BGP itself doesn't change. The procedures and extensions here don't touch BGP operations or management, except for what's already covered in Section 6 (Manageability Considerations) of [RFC7752]. The one twist is that the malformed attribute tests for syntactic checks in Section 6.2.2 (Fault Management) of [RFC7752] now cover the new BGP-LS Attribute TLVs defined here 🧐 Checking whether the content makes sense, and whether it matches the BGP-LS Network Layer Reachability Information (NLRI) types or their BGP-LS Attribute, is the job of whoever consumes the BGP-LS info (like an app or a controller) and not BGP. Not BGP's problem, bestie πŸ’…

Consumers get this info over a BGP-LS session (see Sections 1 and 2 of [RFC7752]) πŸ¦‹

This document only adds new Attribute TLVs, so any syntactic error in them means the BGP-LS Attribute gets discarded [RFC7752] πŸ—‘οΈ The MSD info introduced here can be used by BGP-LS consumer apps like an SR PCE to learn the SR SID stack handling capabilities of nodes in the topology ✨ That lets the SR PCE compute paths while taking into account how big a SID stack a specific head-end node can impose 🧚 Now, if the MSD info gets encoded or decoded wrong, the SR PCE might not get it at all, or it might get incorrect info 😬 That can stop the head-end node from setting up the desired SR path in its forwarding, so you lose the SR-based optimization. Mega yikes. How SR PCE and similar apps handle these errors is implementation specific and out of scope for this document πŸ™ˆ

The extensions here don't define any new configuration or monitoring aspects in BGP or BGP-LS. Work on BGP models is still ongoing, based on [BGP-MODEL] 🌸


7. Security Considerations πŸ”

Okay, this part is serious, so let's get into it 😭 Advertising an incorrect MSD value can cause real problems. If the value is smaller than what's actually supported, path computation may fail to find a viable path πŸ’€ If the value is larger than what's supported, the system may try to set up a path that the head-end (the node doing the SID imposition) can't actually handle 🚨 And the info itself might tell an attacker how to cause any of those problems. Not cute πŸ™…β€β™€οΈ

The procedures and extensions here don't affect the BGP security model. For the BGP security discussion, go to the "Security Considerations" Section of [RFC4271]. Also check out [RFC4272] and [RFC6952] for analyses of BGP security issues πŸ›‘οΈ Security for acquiring and distributing BGP-LS info is covered in [RFC7752]. The TLVs in this document carry the MSD IGP extensions defined in [RFC8476] and [RFC8491]. The assumption is that the IGP instances originating these TLVs will support all the required security (as described in [RFC8476] and [RFC8491]), so nothing bad happens when the TLVs get propagated into BGP-LS πŸ”’ Overall, advertising the node and link attribute info defined here doesn't add any significant extra risk beyond what the existing node and link attribute info in [RFC7752] already carries ✨


8. References πŸ“š

8.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and S. Ray, "North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP", RFC 7752, DOI 10.17487/RFC7752, March 2016, <https://www.rfc-editor.org/info/rfc7752>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, DOI 10.17487/RFC8476, December 2018, <https://www.rfc-editor.org/info/rfc8476>.

[RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, "Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491, DOI 10.17487/RFC8491, November 2018, <https://www.rfc-editor.org/info/rfc8491>.

8.2. Informative References

[BGP-MODEL] Jethanandani, M., Patel, K., Hares, S., and J. Haas, "BGP YANG Model for Service Provider Networks", Work in Progress, Internet-Draft, draft-ietf-idr-bgp-model-09, 28 June 2020, <https://tools.ietf.org/html/draft-ietf-idr-bgp-model-09>.

[ISIS-ELC] Xu, X., Kini, S., Psenak, P., Filsfils, C., Litkowski, S., and M. Bocci, "Signaling Entropy Label Capability and Entropy Readable Label Depth Using IS-IS", Work in Progress, Internet-Draft, draft-ietf-isis-mpls-elc-13, 28 May 2020, <https://tools.ietf.org/html/draft-ietf-isis-mpls-elc-13>.

[OSPF-ELC] Xu, X., Kini, S., Psenak, P., Filsfils, C., Litkowski, S., and M. Bocci, "Signaling Entropy Label Capability and Entropy Readable Label Depth Using OSPF", Work in Progress, Internet-Draft, draft-ietf-ospf-mpls-elc-15, 1 June 2020, <https://tools.ietf.org/html/draft-ietf-ospf-mpls-elc-15>.

[RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, DOI 10.17487/RFC3031, January 2001, <https://www.rfc-editor.org/info/rfc3031>.

[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, DOI 10.17487/RFC4271, January 2006, <https://www.rfc-editor.org/info/rfc4271>.

[RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", RFC 4272, DOI 10.17487/RFC4272, January 2006, <https://www.rfc-editor.org/info/rfc4272>.

[RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, <https://www.rfc-editor.org/info/rfc6952>.

[RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, July 2018, <https://www.rfc-editor.org/info/rfc8402>.

[RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., and J. Hardwick, "Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing", RFC 8664, DOI 10.17487/RFC8664, December 2019, <https://www.rfc-editor.org/info/rfc8664>.


Acknowledgements 🫢

We would like to thank Acee Lindem, Stephane Litkowski, Bruno Decraene, and Alvaro Retana for their reviews and valuable comments πŸ’œ

Contributors 🌈

Siva Sivabalan
Cisco Systems Inc.
Canada

Email: msiva@cisco.com

Authors' Addresses πŸ¦‹

Jeff Tantsura
Apstra, Inc.

Email: jefftant.ietf@gmail.com


Uma Chunduri
Futurewei Technologies

Email: umac.ietf@gmail.com


Ketan Talaulikar
Cisco Systems

Email: ketant@cisco.com


Greg Mirsky
ZTE Corp.

Email: gregimirsky@gmail.com


Nikos Triantafillis
Amazon Web Services

Email: nikost@amazon.com
πŸ“¦ where this page comes from