| < draft-ietf-spring-sr-yang-28.txt | draft-ietf-spring-sr-yang-29.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: June 1, 2021 Futurewei | Expires: June 11, 2021 Futurewei | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| P. Sarkar | P. Sarkar | |||
| Arrcus Networks | Arrcus Networks | |||
| J. Tantsura | J. Tantsura | |||
| Apstra | Apstra | |||
| November 28, 2020 | December 8, 2020 | |||
| YANG Data Model for Segment Routing | YANG Data Model for Segment Routing | |||
| draft-ietf-spring-sr-yang-28 | draft-ietf-spring-sr-yang-29 | |||
| 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 June 1, 2021. | This Internet-Draft will expire on June 11, 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 30 ¶ | skipping to change at page 2, line 30 ¶ | |||
| 2.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 | 2.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 8.1. YANG Module for Segment Routing . . . . . . . . . . . . . 9 | 8.1. YANG Module for Segment Routing . . . . . . . . . . . . . 9 | |||
| 8.2. YANG Module for Segment Routing Common Types . . . . . . 10 | 8.2. YANG Module for Segment Routing Common Types . . . . . . 11 | |||
| 8.3. YANG Module for Segment Routing MPLS . . . . . . . . . . 16 | 8.3. YANG Module for Segment Routing MPLS . . . . . . . . . . 16 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 31 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 31 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 31 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 33 | 12.2. Informative References . . . . . . . . . . . . . . . . . 33 | |||
| Appendix A. Configuration examples . . . . . . . . . . . . . . . 33 | Appendix A. Configuration examples . . . . . . . . . . . . . . . 34 | |||
| A.1. SR MPLS with IPv4 . . . . . . . . . . . . . . . . . . . . 34 | A.1. SR MPLS with IPv4 . . . . . . . . . . . . . . . . . . . . 34 | |||
| A.2. SR MPLS with IPv6 . . . . . . . . . . . . . . . . . . . . 37 | A.2. SR MPLS with IPv6 . . . . . . . . . . . . . . . . . . . . 37 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 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 | |||
| skipping to change at page 4, line 8 ¶ | skipping to change at page 4, line 8 ¶ | |||
| 3. Design of the Data Model | 3. Design of the Data Model | |||
| Module ietf-segment-routing augments the routing container in the | Module ietf-segment-routing augments the routing container in the | |||
| ietf-routing model [RFC8349], and defines generic segment routing | ietf-routing model [RFC8349], and defines generic segment routing | |||
| configuration and operational state. This module is augmented by | configuration and operational state. This module is augmented by | |||
| modules supporting different data planes. | modules supporting different data planes. | |||
| Module ietf-segment-routing-mpls augments ietf-segment-routing, and | Module ietf-segment-routing-mpls augments ietf-segment-routing, and | |||
| supports SR MPLS data plane configuration and operational state. | supports SR MPLS data plane configuration and operational state. | |||
| Module ietf-segment-routing-common defines generic types and | ||||
| groupings that SHOULD be reused by IGP extension modules. | ||||
| module: ietf-segment-routing | module: ietf-segment-routing | |||
| augment /rt:routing: | augment /rt:routing: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| module: ietf-segment-routing-mpls | module: ietf-segment-routing-mpls | |||
| augment /rt:routing/sr:segment-routing: | augment /rt:routing/sr:segment-routing: | |||
| +--rw sr-mpls | +--rw sr-mpls | |||
| +--ro node-capabilities | +--ro node-capabilities | |||
| | +--ro entropy-readable-label-depth? uint8 | | +--ro entropy-readable-label-depth? uint8 | |||
| +--ro msd {max-sid-depth}? | +--ro msd {max-sid-depth}? | |||
| skipping to change at page 9, line 11 ¶ | skipping to change at page 9, line 21 ¶ | |||
| routing-common.yang, and/or ietf-segment-routing-mpls.yang modules: | routing-common.yang, and/or ietf-segment-routing-mpls.yang modules: | |||
| [RFC6991], [RFC8294], [RFC8476], [RFC8491], [RFC8665], [RFC8667], | [RFC6991], [RFC8294], [RFC8476], [RFC8491], [RFC8665], [RFC8667], | |||
| [RFC8669], and [RFC8814]. | [RFC8669], and [RFC8814]. | |||
| 8.1. YANG Module for Segment Routing | 8.1. YANG Module for Segment Routing | |||
| ietf-segment-routing.yang: This module defines a generic framework | ietf-segment-routing.yang: This module defines a generic framework | |||
| for Segment Routing, and it is to be augmented by models for | for Segment Routing, and it is to be augmented by models for | |||
| different SR data planes. | different SR data planes. | |||
| <CODE BEGINS> file "ietf-segment-routing@2020-11-27.yang" | <CODE BEGINS> file "ietf-segment-routing@2020-12-08.yang" | |||
| module ietf-segment-routing { | module ietf-segment-routing { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | |||
| prefix sr; | prefix sr; | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix rt; | prefix rt; | |||
| reference "RFC 8349: A YANG Data Model for Routing | reference "RFC 8349: A YANG Data Model for Routing | |||
| Management (NMDA Version)"; | Management (NMDA Version)"; | |||
| } | } | |||
| skipping to change at page 10, line 21 ¶ | skipping to change at page 10, line 31 ¶ | |||
| see the RFC itself for full legal notices. | see the RFC itself for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| revision 2020-11-27 { | revision 2020-12-08 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | } | |||
| augment "/rt:routing" { | augment "/rt:routing" { | |||
| description | description | |||
| "This module augments routing data model (RFC 8349) | "This module augments routing data model (RFC 8349) | |||
| with Segment Routing (SR)."; | with Segment Routing (SR)."; | |||
| container segment-routing { | container segment-routing { | |||
| skipping to change at page 10, line 47 ¶ | skipping to change at page 11, line 10 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 8.2. YANG Module for Segment Routing Common Types | 8.2. YANG Module for Segment Routing Common Types | |||
| ietf-segment-routing-common.yang: This module defines a collection of | ietf-segment-routing-common.yang: This module defines a collection of | |||
| generic types and groupings for SR as defined in [RFC8402]. | generic types and groupings for SR as defined in [RFC8402]. | |||
| <CODE BEGINS> file "ietf-segment-routing-common@2020-11-27.yang" | <CODE BEGINS> file "ietf-segment-routing-common@2020-12-08.yang" | |||
| module ietf-segment-routing-common { | module ietf-segment-routing-common { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace | namespace | |||
| "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; | "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; | |||
| prefix sr-cmn; | prefix sr-cmn; | |||
| 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 12, line 11 ¶ | skipping to change at page 12, line 20 ¶ | |||
| see the RFC itself for full legal notices. | see the RFC itself for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| revision 2020-11-27 { | revision 2020-12-08 { | |||
| description | description | |||
| "Initial version"; | "Initial version"; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | } | |||
| feature sid-last-hop-behavior { | feature sid-last-hop-behavior { | |||
| description | description | |||
| "Configurable last hop behavior."; | "Configurable last hop behavior."; | |||
| reference "RFC 8660: Segment Routing with the MPLS Data Plane"; | reference "RFC 8660: Segment Routing with the MPLS Data Plane"; | |||
| } | } | |||
| skipping to change at page 16, line 4 ¶ | skipping to change at page 16, line 13 ¶ | |||
| type uint32; | type uint32; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Value associated with prefix. The value must be | "Value associated with prefix. The value must be | |||
| interpreted in the context of value-type."; | interpreted in the context of value-type."; | |||
| } | } | |||
| leaf range { | leaf range { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Indicates how many SIDs can be allocated."; | "Indicates how many SIDs can be allocated."; | |||
| } | } | |||
| leaf algorithm { | leaf algorithm { | |||
| type identityref { | type identityref { | |||
| base prefix-sid-algorithm; | base prefix-sid-algorithm; | |||
| } | } | |||
| description | description | |||
| "Prefix-sid algorithm."; | "Prefix-sid algorithm."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 8.3. YANG Module for Segment Routing MPLS | 8.3. YANG Module for Segment Routing MPLS | |||
| ietf-segment-routing-mpls.yang: This module defines the configuration | ietf-segment-routing-mpls.yang: This module defines the configuration | |||
| and operational states for Segment Routing MPLS data plane. | and operational states for Segment Routing MPLS data plane. | |||
| <CODE BEGINS> file "ietf-segment-routing-mpls@2020-11-28 | <CODE BEGINS> file "ietf-segment-routing-mpls@2020-12-08 | |||
| 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"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| skipping to change at page 18, line 4 ¶ | skipping to change at page 18, line 13 ¶ | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices. | see the RFC itself for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| revision 2020-11-28 { | ||||
| revision 2020-12-08 { | ||||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | } | |||
| feature mapping-server { | feature mapping-server { | |||
| description | description | |||
| "Support for Segment Routing Mapping Server (SRMS)."; | "Support for Segment Routing Mapping Server (SRMS)."; | |||
| reference "RFC 8661: Segment Routing MPLS Interworking | reference "RFC 8661: Segment Routing MPLS Interworking | |||
| with LDP"; | with LDP"; | |||
| skipping to change at page 22, line 4 ¶ | skipping to change at page 22, line 14 ¶ | |||
| description | description | |||
| "Node MSD is the lowest MSD supported by the node."; | "Node MSD is the lowest MSD supported by the node."; | |||
| } | } | |||
| container link-msds { | container link-msds { | |||
| description | description | |||
| "MSD supported by an individual interface."; | "MSD supported by an individual interface."; | |||
| list link-msds { | list link-msds { | |||
| key "interface"; | key "interface"; | |||
| description | description | |||
| "List of link MSDs."; | "List of link MSDs."; | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Reference to device interface."; | "Reference to device interface."; | |||
| } | } | |||
| leaf msd { | leaf msd { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "MSD supported by the interface."; | "MSD supported by the interface."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/sr:segment-routing" { | augment "/rt:routing/sr:segment-routing" { | |||
| description | description | |||
| "This augments routing data model (RFC 8349) | "This augments routing data model (RFC 8349) | |||
| with Segment Routing (SR)."; | with Segment Routing (SR) with the MPLS Data Plane."; | |||
| container sr-mpls { | container sr-mpls { | |||
| description | description | |||
| "Segment Routing global configuration and | "Segment Routing global configuration and | |||
| operational state."; | operational state."; | |||
| uses sr-cmn:node-capabilities; | uses sr-cmn:node-capabilities; | |||
| container msd { | container msd { | |||
| if-feature "max-sid-depth"; | if-feature "max-sid-depth"; | |||
| config false; | config false; | |||
| description | description | |||
| "Maximum Segment Depth (MSD) Operational State."; | "Maximum Segment Depth (MSD) Operational State."; | |||
| End of changes. 18 change blocks. | ||||
| 17 lines changed or deleted | 19 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/ | ||||