RFC 9020: YANG Data Model for Segment Routing
- S. Litkowski,
- Y. Qu,
- A. Lindem,
- P. Sarkar,
- J. Tantsura
Abstract
This document defines three YANG data models. The first is for Segment Routing (SR) configuration and operation, which is to be augmented by different Segment Routing data planes. The next is a YANG data model that defines a collection of generic types and groupings for SR. The third module defines the configuration and operational states for the Segment Routing MPLS data plane.¶
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. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2021 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
(https://
1. Introduction
This document defines three YANG data models [RFC7950]. The first one is for Segment Routing (SR) [RFC8402] configuration and operation. This document does not define the IGP extensions to support SR, but the second module defines generic groupings to be reused by IGP extension modules. The reason for this design choice is to not require implementations to support all IGP extensions. For example, an implementation may support the IS-IS extension but not the OSPF extension. The third YANG data model defines a module that is intended to be used on network elements to configure or operate the SR MPLS data plane [RFC8660].¶
The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA) [RFC8342].¶
2. Terminology and Notation
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.1. Tree Diagram
Tree diagrams used in this document follow the notation defined in [RFC8340].¶
2.2. Prefixes in Data Node Names
In this document, names of data nodes, actions, and other data model objects are often used without a prefix, as long as it is clear from the context in which YANG module each name is defined. Otherwise, names are prefixed using the standard prefix associated with the corresponding YANG module, as shown in Table 1.¶
3. Design of the Data Model
The ietf
Module ietf
Module ietf
4. Configuration
The module ietf
The sr-mpls configuration is split into global configuration and interface configuration.¶
The global configuration includes:¶
- Bindings:
-
Defines Prefix to Segment Identifier (Prefix-SID) mappings. The operator can control advertisement of Prefix-SIDs independently for IPv4 and IPv6. Two types of mappings are available:¶
- Mapping-server:
- Maps prefixes that are not local to a SID. Configuration of bindings does not
automatically allow advertisement of those
bindings. Advertisement must be controlled by each
routing
-protocol instance (see Section 5). Multiple mapping policies may be defined.¶ - Connected prefixes:
- Maps connected prefixes to a SID. Advertisement of the mapping
will be done by IGP when enabled for SR (see Section 5). The SID value can be expressed as an index (default) or an absolute
value. The "last
-hop -behavior" configuration dictates the MPLS Penultimate Hop Popping (PHP) behavior: "explicit -null", "php", or "non-php".¶
- Segment Routing Global Block (SRGB):
- Defines a list of label
blocks represented by a pair of lower
-bound /upper -bound labels. The SRGB is also agnostic to the control plane used. So, all local routing -protocol instances will have to advertise the same SRGB.¶ - Segment Routing Local Block (SRLB):
- Defines a list of label
blocks represented by a pair of lower
-bound /upper -bound labels reserved for local SIDs.¶
5. IGP Control-Plane Configuration
Support of SR extensions for a particular IGP control plane is achieved by augmenting routing
This module defines groupings that SHOULD be used by IGP SR modules.¶
The "sr
The "enabled" leaf enables SR extensions for the
routing
The "bindings" container controls the routing
5.1. IGP Interface Configuration
The interface configuration is part of the "igp-interface" grouping and includes Adjacency SID (Adj-SID) properties.¶
5.1.1. Adjacency SID (Adj-SID) Properties
5.1.1.1. Bundling
In case of parallel IP links between routers, an additional Adj-SID [RFC8402] may be advertised representing more than one adjacency (i.e.,
a bundle of adjacencies). The "advertise
The "advertise
In the figure above, R1 and R2 are interconnected by four links. A routing protocol adjacency is established on each link. The operator would like to create Adj-SIDs that represent bundles of links. We can imagine two different bundles: L1/L2 and L3/L4. To achieve this behavior, the operator will configure a "group-id" X for interfaces L1 and L2 and a "group-id" Y for interfaces L3 and L4. This will result in R1 advertising an additional Adj-SID for each adjacency. For example, an Adj-SID with a value of 400 will be added to L1 and L2, and an Adj-SID with a value of 500 will be added to L3 and L4. As L1/L2 and L3/L4 do not share the same "group-id", a different SID value will be allocated.¶
5.1.1.2. Protection
The "advertise
6. State Data
The operational state contains information reflecting the usage of allocated SRGB labels.¶
It also includes a list of all global SIDs, their associated bindings, and other information, such as the associated source protocol and algorithm.¶
7. Notifications
The model defines the following notifications for SR.¶
- segment
-routing -srgb -collision : - Raised when control
-plane -advertised SRGB blocks have conflicts¶ - segment
-routing -global -sid -collision : - Raised when a control
-plane -advertised index is already associated with another target (in this version, the only defined targets are IPv4 and IPv6 prefixes)¶ - segment
-routing -index -out -of -range : - Raised when a control
-plane -advertised index falls outside the range of SRGBs configured for the network device¶
8. YANG Modules
There are three YANG modules included in this document.¶
The following RFCs are not referenced in the document text but
are referenced in the ietf
8.1. YANG Module for Segment Routing
- ietf
-segment -routing .yang : - This module defines a generic framework for Segment Routing (SR), and it is to be augmented by models for different SR data planes.¶
8.3. YANG Module for Segment Routing MPLS
- ietf
-segment -routing -mpls .yang : - This module defines the configuration and operational states for the Segment Routing MPLS data plane.¶
9. Security Considerations
The YANG modules specified in this document define a schema for
data that is designed to be accessed via network
management protocols, such as NETCONF [RFC6241] or
RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport
layer, and the mandatory
The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.¶
There are a number of data nodes defined in the modules
that are writable
Some of the readable data nodes in these YANG modules
may be considered sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or notification)
to these data nodes. These are the subtrees and data nodes and their sensitivity
10. IANA Considerations
This document registers a URI in the "IETF XML Registry" [RFC3688]. Following the format in [RFC3688], the following registration is requested to be made:¶
- ID:
- yang
:ietf -segment -routing -common¶ - URI:
- urn
:ietf :params :xml :ns :yang :ietf -segment -routing -common¶ - Registrant Contact:
- The IESG.¶
- XML:
- N/A, the requested URI is an XML namespace.¶
- ID:
- yang
:ietf -segment -routing¶ - URI:
- urn
:ietf :params :xml :ns :yang :ietf -segment -routing¶ - Registrant Contact:
- The IESG.¶
- XML:
- N/A, the requested URI is an XML namespace.¶
- ID:
- yang
:ietf -segment -routing -mpls¶ - URI:
- urn
:ietf :params :xml :ns :yang :ietf -segment -routing -mpls¶ - Registrant Contact:
- The IESG.¶
- XML:
- N/A, the requested URI is an XML namespace.¶
This document registers YANG modules in the "YANG Module Names" registry [RFC6020].¶
- Name:
- ietf
-segment -routing -common¶ - Maintained by IANA:
- N¶
- Namespace:
- urn
:ietf :params :xml :ns :yang :ietf -segment -routing -common¶ - Prefix:
- sr-cmn¶
- Reference:
- RFC 9020¶
11. References
11.1. Normative References
- [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC3688]
-
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10
.17487 , , <https:///RFC3688 www >..rfc -editor .org /info /rfc3688 - [RFC6020]
-
Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10
.17487 , , <https:///RFC6020 www >..rfc -editor .org /info /rfc6020 - [RFC6241]
-
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10
.17487 , , <https:///RFC6241 www >..rfc -editor .org /info /rfc6241 - [RFC6242]
-
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10
.17487 , , <https:///RFC6242 www >..rfc -editor .org /info /rfc6242 - [RFC6991]
-
Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10
.17487 , , <https:///RFC6991 www >..rfc -editor .org /info /rfc6991 - [RFC7950]
-
Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10
.17487 , , <https:///RFC7950 www >..rfc -editor .org /info /rfc7950 - [RFC8040]
-
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10
.17487 , , <https:///RFC8040 www >..rfc -editor .org /info /rfc8040 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174 - [RFC8294]
-
Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, "Common YANG Data Types for the Routing Area", RFC 8294, DOI 10
.17487 , , <https:///RFC8294 www >..rfc -editor .org /info /rfc8294 - [RFC8341]
-
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10
.17487 , , <https:///RFC8341 www >..rfc -editor .org /info /rfc8341 - [RFC8342]
-
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10
.17487 , , <https:///RFC8342 www >..rfc -editor .org /info /rfc8342 - [RFC8343]
-
Bjorklund, M., "A YANG Data Model for Interface Management", RFC 8343, DOI 10
.17487 , , <https:///RFC8343 www >..rfc -editor .org /info /rfc8343 - [RFC8349]
-
Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for Routing Management (NMDA Version)", RFC 8349, DOI 10
.17487 , , <https:///RFC8349 www >..rfc -editor .org /info /rfc8349 - [RFC8402]
-
Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10
.17487 , , <https:///RFC8402 www >..rfc -editor .org /info /rfc8402 - [RFC8446]
-
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10
.17487 , , <https:///RFC8446 www >..rfc -editor .org /info /rfc8446 - [RFC8660]
-
Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing with the MPLS Data Plane", RFC 8660, DOI 10
.17487 , , <https:///RFC8660 www >..rfc -editor .org /info /rfc8660 - [RFC8661]
-
Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., Decraene, B., and S. Litkowski, "Segment Routing MPLS Interworking with LDP", RFC 8661, DOI 10
.17487 , , <https:///RFC8661 www >..rfc -editor .org /info /rfc8661 - [RFC8665]
-
Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler, H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF Extensions for Segment Routing", RFC 8665, DOI 10
.17487 , , <https:///RFC8665 www >..rfc -editor .org /info /rfc8665 - [RFC8667]
-
Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C., Bashandy, A., Gredler, H., and B. Decraene, "IS-IS Extensions for Segment Routing", RFC 8667, DOI 10
.17487 , , <https:///RFC8667 www >..rfc -editor .org /info /rfc8667 - [RFC8669]
-
Previdi, S., Filsfils, C., Lindem, A., Ed., Sreekantiah, A., and H. Gredler, "Segment Routing Prefix Segment Identifier Extensions for BGP", RFC 8669, DOI 10
.17487 , , <https:///RFC8669 www >..rfc -editor .org /info /rfc8669 - [RFC8814]
-
Tantsura, J., Chunduri, U., Talaulikar, K., Mirsky, G., and N. Triantafillis, "Signaling Maximum SID Depth (MSD) Using the Border Gateway Protocol - Link State", RFC 8814, DOI 10
.17487 , , <https:///RFC8814 www >..rfc -editor .org /info /rfc8814 - [W3C
.REC -xml11 -20060816] -
Bray, T., Paoli, J., Sperberg
-Mc , Maler, E., Yergeau, F., and J. Cowan, "Extensible Markup Language (XML) 1.1 (Second Edition)", World Wide Web Consortium Recommendation RECQueen, M. -xml11 , , <https://-20060816 www >..w3 .org /TR /2006 /REC -xml11 -20060816
11.2. Informative References
- [RFC8340]
-
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10
.17487 , , <https:///RFC8340 www >..rfc -editor .org /info /rfc8340 - [RFC8792]
-
Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, "Handling Long Lines in Content of Internet-Drafts and RFCs", RFC 8792, DOI 10
.17487 , , <https:///RFC8792 www >..rfc -editor .org /info /rfc8792
Appendix A. Configuration Examples
Note: '\' line wrapping per [RFC8792].¶
A.1. SR-MPLS with IPv4
The following is an XML [W3C
The following is the same example using JSON format.¶
A.2. SR-MPLS with IPv6
The following is an XML [W3C
The following is the same example using JSON format.¶
Acknowledgements
The authors would like to thank Derek Yeung, Greg Hankins, Hannes Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge, and Les Ginsberg for their contributions.¶
Thanks to Ladislav Lhotka and Tom Petch for their thorough reviews and helpful comments.¶
The authors would like to thank Benjamin Kaduk, Alvaro Retana, and Roman Danyliw for IESG review and comments.¶