| < draft-ietf-spring-sr-yang-21.txt | draft-ietf-spring-sr-yang-22.txt > | |||
|---|---|---|---|---|
| SPRING Working Group S. Litkowski | SPRING Working Group S. Litkowski | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: February 26, 2021 Futurewei | Expires: February 27, 2021 Futurewei | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| P. Sarkar | P. Sarkar | |||
| Individual | Individual | |||
| J. Tantsura | J. Tantsura | |||
| Apstra | Apstra | |||
| August 25, 2020 | August 26, 2020 | |||
| YANG Data Model for Segment Routing | YANG Data Model for Segment Routing | |||
| draft-ietf-spring-sr-yang-21 | draft-ietf-spring-sr-yang-22 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model for segment routing | This document defines a YANG data model for segment routing | |||
| configuration and operation, which is to be augmented by different | configuration and operation, which is to be augmented by different | |||
| segment routing data planes. The document also defines a YANG model | segment routing data planes. The document also defines a YANG model | |||
| that is intended to be used on network elements to configure or | that is intended to be used on network elements to configure or | |||
| operate segment routing MPLS data plane, as well as some generic | operate segment routing MPLS data plane, as well as some generic | |||
| containers to be reused by IGP protocol modules to support segment | containers to be reused by IGP protocol modules to support segment | |||
| routing. | routing. | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on February 26, 2021. | This Internet-Draft will expire on February 27, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 31 ¶ | skipping to change at page 2, line 31 ¶ | |||
| 3. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | 3. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. IGP Control plane configuration . . . . . . . . . . . . . . . 6 | 5. IGP Control plane configuration . . . . . . . . . . . . . . . 6 | |||
| 5.1. IGP interface configuration . . . . . . . . . . . . . . . 7 | 5.1. IGP interface configuration . . . . . . . . . . . . . . . 7 | |||
| 5.1.1. Adjacency SID properties . . . . . . . . . . . . . . 7 | 5.1.1. Adjacency SID properties . . . . . . . . . . . . . . 7 | |||
| 5.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 7 | 5.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 8 | 5.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. State Data . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6. State Data . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | 7. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8. YANG Modules . . . . . . . . . . . . . . . . . . . . . . . . 8 | 8. YANG Modules . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.1. YANG Module for Segment Routing . . . . . . . . . . . . . 9 | ||||
| 8.2. YANG Module for Segment Routing Common Types . . . . . . 10 | ||||
| 8.3. YANG Module for Segment Routing MPLS . . . . . . . . . . 16 | ||||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 29 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 29 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 31 | 12.2. Informative References . . . . . . . . . . . . . . . . . 32 | |||
| Appendix A. Configuration example . . . . . . . . . . . . . . . 32 | Appendix A. Configuration example . . . . . . . . . . . . . . . 32 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 1. Introduction | 1. Introduction | |||
| This document defines a YANG data model [RFC7950] for segment routing | This document defines a YANG data model [RFC7950] for segment routing | |||
| [RFC8402] configuration and operation. The document also defines a | [RFC8402] configuration and operation. The document also defines a | |||
| YANG model that is intended to be used on network elements to | YANG model that is intended to be used on network elements to | |||
| configure or operate segment routing MPLS data plane [RFC8660]. This | configure or operate segment routing MPLS data plane [RFC8660]. This | |||
| document does not define the IGP extensions to support segment | document does not define the IGP extensions to support segment | |||
| skipping to change at page 8, line 46 ¶ | skipping to change at page 8, line 46 ¶ | |||
| advertised index is already associated with another target (in | advertised index is already associated with another target (in | |||
| this version, the only defined targets are IPv4 and IPv6 | this version, the only defined targets are IPv4 and IPv6 | |||
| prefixes). | prefixes). | |||
| o segment-routing-index-out-of-range: Raised when a control plane | o segment-routing-index-out-of-range: Raised when a control plane | |||
| advertised index fall outside the range of SRGBs configured for | advertised index fall outside the range of SRGBs configured for | |||
| the network device. | the network device. | |||
| 8. YANG Modules | 8. YANG Modules | |||
| There are three modules included in this document: | There are three YANG modules included in this document. | |||
| o ietf-segment-routing.yang: This module defines a generic framework | ||||
| for Segment Routing, and it is to be augmented by models for | ||||
| different SR data planes. | ||||
| o ietf-segment-routing-common.yang: This module defines a collection | ||||
| of generic types and groupings for SR as defined in [RFC8402]. | ||||
| o ietf-segment-routing-mpls.yang: This module defines the | ||||
| configuration and operation states for Segment Routing MPLS data | ||||
| plane. | ||||
| The following RFCs and drafts are not referenced in the document text | The following RFCs and drafts are not referenced in the document text | |||
| but are referenced in the ietf-segment-routing-common.yang and/or | but are referenced in the ietf-segment-routing-common.yang and/or | |||
| ietf-segment-routing.yang module: [RFC6991], [RFC8294], [RFC8476], | ietf-segment-routing.yang module: [RFC6991], [RFC8294], [RFC8476], | |||
| [RFC8491], [RFC8665], and [RFC8667]. | [RFC8491], [RFC8665], and [RFC8667]. | |||
| <CODE BEGINS> file "ietf-segment-routing@2020-08-17.yang" | 8.1. YANG Module for Segment Routing | |||
| module ietf-segment-routing { | ||||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | ||||
| prefix sr; | ||||
| import ietf-routing { | ietf-segment-routing.yang: This module defines a generic framework | |||
| prefix rt; | for Segment Routing, and it is to be augmented by models for | |||
| reference "RFC 8349: A YANG Data Model for Routing | different SR data planes. | |||
| Management (NMDA Version)"; | ||||
| } | ||||
| organization | <CODE BEGINS> file "ietf-segment-routing@2020-08-17.yang" | |||
| "IETF SPRING - SPRING Working Group"; | module ietf-segment-routing { | |||
| contact | yang-version 1.1; | |||
| "WG Web: <http://tools.ietf.org/wg/spring/> | namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | |||
| WG List: <mailto:spring@ietf.org> | prefix sr; | |||
| Author: Stephane Litkowski | import ietf-routing { | |||
| <mailto:slitkows.ietf@gmail.com> | prefix rt; | |||
| Author: Yingzhen Qu | reference "RFC 8349: A YANG Data Model for Routing | |||
| <mailto:yingzhen.qu@futurewei.com> | Management (NMDA Version)"; | |||
| Author: Acee Lindem | } | |||
| <mailto:acee@cisco.com> | ||||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Jeff Tantsura | ||||
| <jefftant.ietf@gmail.com> | ||||
| "; | organization | |||
| description | "IETF SPRING - SPRING Working Group"; | |||
| "The YANG module defines a generic framework for Segment | contact | |||
| Routing. It is to be augmented by models for different | "WG Web: <http://tools.ietf.org/wg/spring/> | |||
| SR data planes. | WG List: <mailto:spring@ietf.org> | |||
| This YANG model conforms to the Network Management | Author: Stephane Litkowski | |||
| Datastore Architecture (NMDA) as described in RFC 8242. | <mailto:slitkows.ietf@gmail.com> | |||
| Author: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@futurewei.com> | ||||
| Author: Acee Lindem | ||||
| <mailto:acee@cisco.com> | ||||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Jeff Tantsura | ||||
| <jefftant.ietf@gmail.com> | ||||
| Copyright (c) 2020 IETF Trust and the persons identified as | "; | |||
| authors of the code. All rights reserved. | description | |||
| "The YANG module defines a generic framework for Segment | ||||
| Routing. It is to be augmented by models for different | ||||
| SR data planes. | ||||
| Redistribution and use in source and binary forms, with or | This YANG model conforms to the Network Management | |||
| without modification, is permitted pursuant to, and subject | Datastore Architecture (NMDA) as described in RFC 8242. | |||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| see the RFC itself for full legal notices. | authors of the code. All rights reserved. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | Redistribution and use in source and binary forms, with or | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | without modification, is permitted pursuant to, and subject | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | to the license terms contained in, the Simplified BSD License | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| they appear in all capitals, as shown here."; | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | ||||
| reference "RFC XXXX"; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices. | ||||
| revision 2020-08-17 { | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| description | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| "Initial Version"; | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| } | they appear in all capitals, as shown here."; | |||
| augment "/rt:routing" { | reference "RFC XXXX"; | |||
| description | ||||
| "This module augments routing data model (RFC 8349) | revision 2020-08-17 { | |||
| with Segment Routing (SR)."; | ||||
| container segment-routing { | ||||
| description | description | |||
| "Segment Routing configuration. This container | "Initial Version"; | |||
| is to be augmented by models for different SR | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| data planes."; | ||||
| reference "RFC 8402: Segment Routing Architecture."; | ||||
| } | } | |||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| <CODE BEGINS> file "ietf-segment-routing-common@2020-08-17.yang" | ||||
| module ietf-segment-routing-common { | ||||
| yang-version 1.1; | ||||
| namespace | ||||
| "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; | ||||
| prefix sr-cmn; | ||||
| import ietf-inet-types { | augment "/rt:routing" { | |||
| prefix inet; | description | |||
| reference "RFC 6991: Common YANG Data Types"; | "This module augments routing data model (RFC 8349) | |||
| with Segment Routing (SR)."; | ||||
| container segment-routing { | ||||
| description | ||||
| "Segment Routing configuration. This container | ||||
| is to be augmented by models for different SR | ||||
| data planes."; | ||||
| reference "RFC 8402: Segment Routing Architecture."; | ||||
| } | ||||
| } | ||||
| } | } | |||
| <CODE ENDS> | ||||
| organization | 8.2. YANG Module for Segment Routing Common Types | |||
| "IETF SPRING - SPRING Working Group"; | ||||
| contact | ietf-segment-routing-common.yang: This module defines a collection of | |||
| "WG Web: <http://tools.ietf.org/wg/spring/> | generic types and groupings for SR as defined in [RFC8402]. | |||
| WG List: <mailto:spring@ietf.org> | ||||
| Author: Stephane Litkowski | <CODE BEGINS> file "ietf-segment-routing-common@2020-08-17.yang" | |||
| <mailto:slitkows.ietf@gmail.com> | module ietf-segment-routing-common { | |||
| Author: Yingzhen Qu | yang-version 1.1; | |||
| <mailto:yingzhen.qu@futurewei.com> | namespace | |||
| Author: Acee Lindem | "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; | |||
| <mailto:acee@cisco.com> | prefix sr-cmn; | |||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Jeff Tantsura | ||||
| <jefftant.ietf@gmail.com> | ||||
| "; | import ietf-inet-types { | |||
| description | prefix inet; | |||
| "The YANG module defines a collection of generic types and | reference "RFC 6991: Common YANG Data Types"; | |||
| groupings for Segment Routing (SR) as described in RFC 8402. | } | |||
| This YANG model conforms to the Network Management | organization | |||
| Datastore Architecture (NMDA) as described in RFC 8242. | "IETF SPRING - SPRING Working Group"; | |||
| Copyright (c) 2020 IETF Trust and the persons identified as | contact | |||
| authors of the code. All rights reserved. | "WG Web: <http://tools.ietf.org/wg/spring/> | |||
| WG List: <mailto:spring@ietf.org> | ||||
| Redistribution and use in source and binary forms, with or | Author: Stephane Litkowski | |||
| without modification, is permitted pursuant to, and subject | <mailto:slitkows.ietf@gmail.com> | |||
| to the license terms contained in, the Simplified BSD License | Author: Yingzhen Qu | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | <mailto:yingzhen.qu@futurewei.com> | |||
| Relating to IETF Documents | Author: Acee Lindem | |||
| (http://trustee.ietf.org/license-info). | <mailto:acee@cisco.com> | |||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Jeff Tantsura | ||||
| <jefftant.ietf@gmail.com> | ||||
| This version of this YANG module is part of RFC XXXX; | "; | |||
| see the RFC itself for full legal notices. | description | |||
| "The YANG module defines a collection of generic types and | ||||
| groupings for Segment Routing (SR) as described in RFC 8402. | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | This YANG model conforms to the Network Management | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | Datastore Architecture (NMDA) as described in RFC 8242. | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here."; | ||||
| reference "RFC XXXX"; | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | ||||
| revision 2020-08-17 { | Redistribution and use in source and binary forms, with or | |||
| description | without modification, is permitted pursuant to, and subject | |||
| "Initial version"; | to the license terms contained in, the Simplified BSD License | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| } | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | ||||
| feature sid-last-hop-behavior { | This version of this YANG module is part of RFC XXXX; | |||
| description | see the RFC itself for full legal notices. | |||
| "Configurable last hop behavior."; | ||||
| reference "RFC 8660: Segment Routing with the MPLS Data Plane"; | ||||
| } | ||||
| identity prefix-sid-algorithm { | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| description | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| "Base identity for prefix-sid algorithm."; | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| reference "RFC 8402: Segment Routing Architecture"; | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| } | they appear in all capitals, as shown here."; | |||
| identity prefix-sid-algorithm-shortest-path { | reference "RFC XXXX"; | |||
| base prefix-sid-algorithm; | ||||
| description | ||||
| "Shortest Path First (SPF) prefix-sid algorithm. This | ||||
| is the default algorithm."; | ||||
| } | ||||
| identity prefix-sid-algorithm-strict-spf { | revision 2020-08-17 { | |||
| base prefix-sid-algorithm; | description | |||
| description | "Initial version"; | |||
| "This algorithm mandates that the packet is forwarded | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| according to ECMP-aware SPF algorithm."; | } | |||
| } | ||||
| grouping srlr { | feature sid-last-hop-behavior { | |||
| description | description | |||
| "Grouping for SR Label Range configuration."; | "Configurable last hop behavior."; | |||
| leaf lower-bound { | reference "RFC 8660: Segment Routing with the MPLS Data Plane"; | |||
| type uint32; | ||||
| description | ||||
| "Lower value in the label range."; | ||||
| } | } | |||
| leaf upper-bound { | ||||
| type uint32; | identity prefix-sid-algorithm { | |||
| must "../lower-bound < ../upper-bound" { | description | |||
| error-message | "Base identity for prefix-sid algorithm."; | |||
| "The upper-bound must be larger than the lower-bound."; | reference "RFC 8402: Segment Routing Architecture"; | |||
| description | ||||
| "The value must be greater than 'lower-bound'."; | ||||
| } | ||||
| description | ||||
| "Upper value in the label range."; | ||||
| } | } | |||
| } | ||||
| grouping srgb { | identity prefix-sid-algorithm-shortest-path { | |||
| description | base prefix-sid-algorithm; | |||
| "Grouping for SR Global Label range."; | ||||
| list srgb { | ||||
| key "lower-bound upper-bound"; | ||||
| ordered-by user; | ||||
| description | description | |||
| "List of global blocks to be advertised."; | "Shortest Path First (SPF) prefix-sid algorithm. This | |||
| uses srlr; | is the default algorithm."; | |||
| } | } | |||
| } | ||||
| grouping srlb { | identity prefix-sid-algorithm-strict-spf { | |||
| description | base prefix-sid-algorithm; | |||
| "Grouping for SR Local Block range."; | ||||
| list srlb { | ||||
| key "lower-bound upper-bound"; | ||||
| ordered-by user; | ||||
| description | description | |||
| "List of SRLBs."; | "This algorithm mandates that the packet is forwarded | |||
| uses srlr; | according to ECMP-aware SPF algorithm."; | |||
| } | } | |||
| } | ||||
| grouping sid-value-type { | grouping srlr { | |||
| description | description | |||
| "Defines how the SID value is expressed."; | "Grouping for SR Label Range configuration."; | |||
| leaf value-type { | leaf lower-bound { | |||
| type enumeration { | type uint32; | |||
| enum "index" { | ||||
| description | description | |||
| "The value will be interpreted as an index."; | "Lower value in the label range."; | |||
| } | } | |||
| enum "absolute" { | leaf upper-bound { | |||
| type uint32; | ||||
| must "../lower-bound < ../upper-bound" { | ||||
| error-message | ||||
| "The upper-bound must be larger than the lower-bound."; | ||||
| description | ||||
| "The value must be greater than 'lower-bound'."; | ||||
| } | ||||
| description | description | |||
| "The value will become interpreted as an absolute | "Upper value in the label range."; | |||
| value."; | ||||
| } | ||||
| } | } | |||
| default "index"; | } | |||
| grouping srgb { | ||||
| description | description | |||
| "This leaf defines how value must be interpreted."; | "Grouping for SR Global Label range."; | |||
| list srgb { | ||||
| key "lower-bound upper-bound"; | ||||
| ordered-by user; | ||||
| description | ||||
| "List of global blocks to be advertised."; | ||||
| uses srlr; | ||||
| } | ||||
| } | } | |||
| } | ||||
| grouping prefix-sid { | grouping srlb { | |||
| description | ||||
| "This grouping defines cfg of prefix SID."; | ||||
| leaf prefix { | ||||
| type inet:ip-prefix; | ||||
| description | description | |||
| "connected prefix sid."; | "Grouping for SR Local Block range."; | |||
| list srlb { | ||||
| key "lower-bound upper-bound"; | ||||
| ordered-by user; | ||||
| description | ||||
| "List of SRLBs."; | ||||
| uses srlr; | ||||
| } | ||||
| } | } | |||
| uses prefix-sid-attributes; | ||||
| } | ||||
| grouping ipv4-sid { | grouping sid-value-type { | |||
| description | ||||
| "Grouping for an IPv4 prefix SID."; | ||||
| leaf prefix { | ||||
| type inet:ipv4-prefix; | ||||
| description | description | |||
| "Connected IPv4 prefix sid."; | "Defines how the SID value is expressed."; | |||
| leaf value-type { | ||||
| type enumeration { | ||||
| enum "index" { | ||||
| description | ||||
| "The value will be interpreted as an index."; | ||||
| } | ||||
| enum "absolute" { | ||||
| description | ||||
| "The value will become interpreted as an absolute | ||||
| value."; | ||||
| } | ||||
| } | ||||
| default "index"; | ||||
| description | ||||
| "This leaf defines how value must be interpreted."; | ||||
| } | ||||
| } | } | |||
| uses prefix-sid-attributes; | ||||
| } | grouping prefix-sid { | |||
| grouping ipv6-sid { | ||||
| description | ||||
| "Grouping for an IPv6 prefix SID."; | ||||
| leaf prefix { | ||||
| type inet:ipv6-prefix; | ||||
| description | description | |||
| "Connected ipv6 prefix sid."; | "This grouping defines cfg of prefix SID."; | |||
| leaf prefix { | ||||
| type inet:ip-prefix; | ||||
| description | ||||
| "connected prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | ||||
| } | } | |||
| uses prefix-sid-attributes; | ||||
| } | ||||
| grouping last-hop-behavior { | grouping ipv4-sid { | |||
| description | description | |||
| "Defines last hop behavior"; | "Grouping for an IPv4 prefix SID."; | |||
| leaf last-hop-behavior { | leaf prefix { | |||
| if-feature "sid-last-hop-behavior"; | type inet:ipv4-prefix; | |||
| type enumeration { | description | |||
| enum "explicit-null" { | "Connected IPv4 prefix sid."; | |||
| description | ||||
| "Use explicit-null for the SID."; | ||||
| } | ||||
| enum "no-php" { | ||||
| description | ||||
| "Do not use Penultimate Hop Popping (PHP) | ||||
| for the SID."; | ||||
| } | ||||
| enum "php" { | ||||
| description | ||||
| "Use PHP for the SID."; | ||||
| } | ||||
| } | } | |||
| uses prefix-sid-attributes; | ||||
| } | ||||
| grouping ipv6-sid { | ||||
| description | description | |||
| "Configure last hop behavior."; | "Grouping for an IPv6 prefix SID."; | |||
| leaf prefix { | ||||
| type inet:ipv6-prefix; | ||||
| description | ||||
| "Connected ipv6 prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | ||||
| } | } | |||
| } | ||||
| grouping node-capabilities { | grouping last-hop-behavior { | |||
| description | ||||
| "Containing SR node capabilities."; | ||||
| container node-capabilities { | ||||
| config false; | ||||
| description | description | |||
| "Shows the SR capability of the node."; | "Defines last hop behavior"; | |||
| leaf entropy-readable-label-depth { | leaf last-hop-behavior { | |||
| type uint8; | if-feature "sid-last-hop-behavior"; | |||
| type enumeration { | ||||
| enum "explicit-null" { | ||||
| description | ||||
| "Use explicit-null for the SID."; | ||||
| } | ||||
| enum "no-php" { | ||||
| description | ||||
| "Do not use Penultimate Hop Popping (PHP) | ||||
| for the SID."; | ||||
| } | ||||
| enum "php" { | ||||
| description | ||||
| "Use PHP for the SID."; | ||||
| } | ||||
| } | ||||
| description | description | |||
| "Maximum label stack depth that a router can read."; | "Configure last hop behavior."; | |||
| } | } | |||
| } | } | |||
| } | ||||
| grouping prefix-sid-attributes { | grouping node-capabilities { | |||
| description | ||||
| "Grouping for Segment Routing (SR) prefix attributes."; | ||||
| uses sid-value-type; | ||||
| leaf start-sid { | ||||
| type uint32; | ||||
| mandatory true; | ||||
| description | description | |||
| "Value associated with prefix. The value must be | "Containing SR node capabilities."; | |||
| interpreted in the context of value-type."; | container node-capabilities { | |||
| config false; | ||||
| description | ||||
| "Shows the SR capability of the node."; | ||||
| leaf entropy-readable-label-depth { | ||||
| type uint8; | ||||
| description | ||||
| "Maximum label stack depth that a router can read."; | ||||
| } | ||||
| } | ||||
| } | } | |||
| leaf range { | ||||
| type uint32; | grouping prefix-sid-attributes { | |||
| description | description | |||
| "Indicates how many SIDs can be allocated."; | "Grouping for Segment Routing (SR) prefix attributes."; | |||
| uses sid-value-type; | ||||
| leaf start-sid { | ||||
| type uint32; | ||||
| mandatory true; | ||||
| description | ||||
| "Value associated with prefix. The value must be | ||||
| interpreted in the context of value-type."; | ||||
| } | ||||
| leaf range { | ||||
| type uint32; | ||||
| description | ||||
| "Indicates how many SIDs can be allocated."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type identityref { | ||||
| base prefix-sid-algorithm; | ||||
| } | } | |||
| description | leaf algorithm { | |||
| "Prefix-sid algorithm."; | type identityref { | |||
| base prefix-sid-algorithm; | ||||
| } | ||||
| description | ||||
| "Prefix-sid algorithm."; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | <CODE ENDS> | |||
| <CODE ENDS> | ||||
| 8.3. YANG Module for Segment Routing MPLS | ||||
| ietf-segment-routing-mpls.yang: This module defines the configuration | ||||
| and operation states for Segment Routing MPLS data plane. | ||||
| <CODE BEGINS> file "ietf-segment-routing-mpls@2020-08-17.yang" | <CODE BEGINS> file "ietf-segment-routing-mpls@2020-08-17.yang" | |||
| module ietf-segment-routing-mpls { | module ietf-segment-routing-mpls { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-mpls"; | namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-mpls"; | |||
| prefix sr-mpls; | prefix sr-mpls; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| skipping to change at page 28, line 43 ¶ | skipping to change at page 28, line 48 ¶ | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
| notification) to these data nodes. | notification) to these data nodes. | |||
| 10. Acknowledgements | 10. Acknowledgements | |||
| Authors would like to thank Derek Yeung, Greg Hankins, Hannes | Authors would like to thank Derek Yeung, Greg Hankins, Hannes | |||
| Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge, Les Ginsberg for | Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge, Les Ginsberg for | |||
| their contributions. | their contributions. | |||
| Thanks to Ladislav Lhotka for his thorough reviews and helpful | ||||
| comments. | ||||
| 11. IANA Considerations | 11. IANA Considerations | |||
| This document registers a URI in the IETF XML registry [RFC3688]. | This document registers a URI in the IETF XML registry [RFC3688]. | |||
| Following the format in [RFC3688], the following registration is | Following the format in [RFC3688], the following registration is | |||
| requested to be made: | requested to be made: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-segment-routing-commmon | URI: urn:ietf:params:xml:ns:yang:ietf-segment-routing-commmon | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
| skipping to change at page 34, line 6 ¶ | skipping to change at page 34, line 6 ¶ | |||
| <srgb> | <srgb> | |||
| <lower-bound>45000</lower-bound> | <lower-bound>45000</lower-bound> | |||
| <upper-bound>55000</upper-bound> | <upper-bound>55000</upper-bound> | |||
| </srgb> | </srgb> | |||
| </global-srgb> | </global-srgb> | |||
| </sr-mpls> | </sr-mpls> | |||
| </segment-routing> | </segment-routing> | |||
| </routing> | </routing> | |||
| The following is the same example using JSON format. | The following is the same example using JSON format. | |||
| { | { | |||
| "ietf-routing:routing": { | "ietf-routing:routing": { | |||
| "ietf-segment-routing:segment-routing": { | "ietf-segment-routing:segment-routing": { | |||
| "ietf-segment-routing-mpls:sr-mpls": { | "ietf-segment-routing-mpls:sr-mpls": { | |||
| "msd": { | "msd": { | |||
| "node-msd": 5 | "node-msd": 5 | |||
| }, | }, | |||
| "bindings": { | "bindings": { | |||
| "mapping-server": { | "mapping-server": { | |||
| "policy": [ | "policy": [ | |||
| { | { | |||
| End of changes. 80 change blocks. | ||||
| 283 lines changed or deleted | 296 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||