| < draft-ietf-spring-sr-yang-14.txt | draft-ietf-spring-sr-yang-15.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: May 6, 2020 Futurewei | Expires: July 12, 2020 Futurewei | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| P. Sarkar | P. Sarkar | |||
| Individual | Individual | |||
| J. Tantsura | J. Tantsura | |||
| Apstra | Apstra | |||
| November 3, 2019 | January 9, 2020 | |||
| YANG Data Model for Segment Routing | YANG Data Model for Segment Routing | |||
| draft-ietf-spring-sr-yang-14 | draft-ietf-spring-sr-yang-15 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model ([RFC6020], [RFC7950]) for | This document defines a YANG data model ([RFC6020], [RFC7950]) for | |||
| segment routing ([RFC8402]) configuration and operation. This YANG | segment routing ([RFC8402]) configuration and operation. This YANG | |||
| model is intended to be used on network elements to configure or | model is intended to be used on network elements to configure or | |||
| operate segment routing. This document defines also generic | operate segment routing MPLS data plane [RFC8660]. This document | |||
| containers that SHOULD be reused by IGP protocol modules to support | defines also generic containers that SHOULD be reused by IGP protocol | |||
| segment routing. | modules to support segment routing. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 May 6, 2020. | This Internet-Draft will expire on July 12, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 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. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | 7. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 8. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 27 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 27 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 28 | 12.2. Informative References . . . . . . . . . . . . . . . . . 29 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 1. Introduction | 1. Introduction | |||
| This document defines a YANG data model for segment routing | This document defines a YANG data model for segment routing | |||
| configuration and operation. This document does not define the IGP | configuration and operation. This document does not define the IGP | |||
| extensions to support segment routing but defines generic groupings | extensions to support segment routing but defines generic groupings | |||
| that SHOULD be reused by IGP extension modules. The reason of this | that SHOULD be reused by IGP extension modules. The reason of this | |||
| design choice is to not require implementations to support all IGP | design choice is to not require implementations to support all IGP | |||
| extensions. For example, an implementation may support IS-IS | extensions. For example, an implementation may support IS-IS | |||
| extension but not OSPF. | extension but not OSPF. | |||
| The YANG modules in this document conform to the Network Management | The YANG modules in this document conform to the Network Management | |||
| Datastore Architecture (NMDA) [RFC8342]. | Datastore Architecture (NMDA) [RFC8342]. | |||
| 2. Terminology and Notation | 2. Terminology and Notation | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| document are to be interpreted as described in [RFC2119]. | "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 | 2.1. Tree diagram | |||
| Tree diagrams used in this document follow the notation defined in | Tree diagrams used in this document follow the notation defined in | |||
| [RFC8340]. | [RFC8340]. | |||
| 2.2. Prefixes in Data Node Names | 2.2. Prefixes in Data Node Names | |||
| In this document, names of data nodes, actions, and other data model | 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 | objects are often used without a prefix, as long as it is clear from | |||
| skipping to change at page 3, line 38 ¶ | skipping to change at page 3, line 40 ¶ | |||
| | rt | ietf-routing | [RFC8349] | | | rt | ietf-routing | [RFC8349] | | |||
| | rt-types | ietf-routing-types | [RFC8294] | | | rt-types | ietf-routing-types | [RFC8294] | | |||
| | yang | ietf-yang-types | [RFC6991] | | | yang | ietf-yang-types | [RFC6991] | | |||
| | inet | ietf-inet-types | [RFC6991] | | | inet | ietf-inet-types | [RFC6991] | | |||
| +----------+--------------------+-----------+ | +----------+--------------------+-----------+ | |||
| Table 1: Prefixes and Corresponding YANG Modules | Table 1: Prefixes and Corresponding YANG Modules | |||
| 3. Design of the Data Model | 3. Design of the Data Model | |||
| As the module definition is just starting, it is expected that there | Module ietf-segment-routing augments the routing container in the | |||
| will be changes as the module matures. | ietf-routing model [RFC8349], and defines generic segment routing | |||
| configuration and operational state. This module is augmented by | ||||
| modules supporting different data planes. | ||||
| module: ietf-segment-routing | Module ietf-segment-routing-mpls augments ietf-segment-routing, and | |||
| augment /rt:routing: | supports SR MPLS data plane configuration and operational state. | |||
| +--rw segment-routing | ||||
| +--rw transport-type? identityref | ||||
| +--ro node-capabilities | ||||
| | +--ro transport-planes* [transport-plane] | ||||
| | | +--ro transport-plane identityref | ||||
| | +--ro entropy-readable-label-depth? uint8 | ||||
| +--rw msd {max-sid-depth}? | ||||
| | +--rw node-msd? uint8 | ||||
| | +--rw link-msd | ||||
| | +--rw link-msds* [interface] | ||||
| | +--rw interface if:interface-ref | ||||
| | +--rw msd? uint8 | ||||
| +--rw bindings | ||||
| | +--rw mapping-server {mapping-server}? | ||||
| | | +--rw policy* [name] | ||||
| | | +--rw name string | ||||
| | | +--rw entries | ||||
| | | +--rw mapping-entry* [prefix algorithm] | ||||
| | | +--rw prefix inet:ip-prefix | ||||
| | | +--rw value-type? enumeration | ||||
| | | +--rw start-sid uint32 | ||||
| | | +--rw range? uint32 | ||||
| | | +--rw algorithm identityref | ||||
| | +--rw connected-prefix-sid-map | ||||
| | | +--rw connected-prefix-sid* [prefix algorithm] | ||||
| | | +--rw prefix inet:ip-prefix | ||||
| | | +--rw value-type? enumeration | ||||
| | | +--rw start-sid uint32 | ||||
| | | +--rw range? uint32 | ||||
| | | +--rw algorithm identityref | ||||
| | | +--rw last-hop-behavior? enumeration | ||||
| | | {sid-last-hop-behavior}? | ||||
| | +--rw local-prefix-sid | ||||
| | +--rw local-prefix-sid* [prefix algorithm] | ||||
| | +--rw prefix inet:ip-prefix | ||||
| | +--rw value-type? enumeration | ||||
| | +--rw start-sid uint32 | ||||
| | +--rw range? uint32 | ||||
| | +--rw algorithm identityref | ||||
| +--rw global-srgb | ||||
| | +--rw srgb* [lower-bound upper-bound] | ||||
| | +--rw lower-bound uint32 | ||||
| | +--rw upper-bound uint32 | ||||
| +--rw srlb | ||||
| | +--rw srlb* [lower-bound upper-bound] | ||||
| | +--rw lower-bound uint32 | ||||
| | +--rw upper-bound uint32 | ||||
| +--ro label-blocks* | ||||
| | +--ro lower-bound? uint32 | ||||
| | +--ro upper-bound? uint32 | ||||
| | +--ro size? uint32 | ||||
| | +--ro free? uint32 | ||||
| | +--ro used? uint32 | ||||
| | +--ro scope? enumeration | ||||
| +--ro sid-list | ||||
| +--ro sid* [target sid source source-protocol binding-type] | ||||
| +--ro target string | ||||
| +--ro sid uint32 | ||||
| +--ro algorithm? uint8 | ||||
| +--ro source inet:ip-address | ||||
| +--ro used? boolean | ||||
| +--ro source-protocol -> /rt:routing | ||||
| /control-plane-protocols | ||||
| /control-plane-protocol/name | ||||
| +--ro binding-type enumeration | ||||
| +--ro scope? enumeration | ||||
| notifications: | module: ietf-segment-routing | |||
| +---n segment-routing-global-srgb-collision | augment /rt:routing: | |||
| | +--ro srgb-collisions* | +--rw segment-routing | |||
| | +--ro lower-bound? uint32 | ||||
| | +--ro upper-bound? uint32 | module: ietf-segment-routing-mpls | |||
| | +--ro routing-protocol? -> /rt:routing | augment /rt:routing/sr:segment-routing: | |||
| | /control-plane-protocols | +--rw sr-mpls | |||
| | /control-plane-protocol/name | +--ro node-capabilities | |||
| | +--ro originating-rtr-id? router-id | | +--ro entropy-readable-label-depth? uint8 | |||
| +---n segment-routing-global-sid-collision | +--rw msd {max-sid-depth}? | |||
| | +--ro received-target? string | | +--rw node-msd? uint8 | |||
| | +--ro new-sid-rtr-id? router-id | | +--rw link-msd | |||
| | +--ro original-target? string | | +--rw link-msds* [interface] | |||
| | +--ro original-sid-rtr-id? router-id | | +--rw interface if:interface-ref | |||
| | +--ro index? uint32 | | +--rw msd? uint8 | |||
| | +--ro routing-protocol? -> /rt:routing | +--rw bindings | |||
| | /control-plane-protocols | | +--rw mapping-server {mapping-server}? | |||
| | /control-plane-protocol/name | | | +--rw policy* [name] | |||
| +---n segment-routing-index-out-of-range | | | +--rw name string | |||
| +--ro received-target? string | | | +--rw entries | |||
| +--ro received-index? uint32 | | | +--rw mapping-entry* [prefix algorithm] | |||
| +--ro routing-protocol? -> /rt:routing | | | +--rw prefix inet:ip-prefix | |||
| /control-plane-protocols | | | +--rw value-type? enumeration | |||
| /control-plane-protocol/name | | | +--rw start-sid uint32 | |||
| | | +--rw range? uint32 | ||||
| | | +--rw algorithm identityref | ||||
| | +--rw connected-prefix-sid-map | ||||
| | | +--rw connected-prefix-sid* [prefix algorithm] | ||||
| | | +--rw prefix inet:ip-prefix | ||||
| | | +--rw value-type? enumeration | ||||
| | | +--rw start-sid uint32 | ||||
| | | +--rw range? uint32 | ||||
| | | +--rw algorithm identityref | ||||
| | | +--rw last-hop-behavior? enumeration {sid-last-hop-behavior}? | ||||
| | +--rw local-prefix-sid | ||||
| | +--rw local-prefix-sid* [prefix algorithm] | ||||
| | +--rw prefix inet:ip-prefix | ||||
| | +--rw value-type? enumeration | ||||
| | +--rw start-sid uint32 | ||||
| | +--rw range? uint32 | ||||
| | +--rw algorithm identityref | ||||
| +--rw global-srgb | ||||
| | +--rw srgb* [lower-bound upper-bound] | ||||
| | +--rw lower-bound uint32 | ||||
| | +--rw upper-bound uint32 | ||||
| +--rw srlb | ||||
| | +--rw srlb* [lower-bound upper-bound] | ||||
| | +--rw lower-bound uint32 | ||||
| | +--rw upper-bound uint32 | ||||
| +--ro label-blocks* [] | ||||
| | +--ro lower-bound? uint32 | ||||
| | +--ro upper-bound? uint32 | ||||
| | +--ro size? uint32 | ||||
| | +--ro free? uint32 | ||||
| | +--ro used? uint32 | ||||
| | +--ro scope? enumeration | ||||
| +--ro sid-db | ||||
| +--ro sid* [target sid source source-protocol binding-type] | ||||
| +--ro target string | ||||
| +--ro sid uint32 | ||||
| +--ro algorithm? uint8 | ||||
| +--ro source inet:ip-address | ||||
| +--ro used? boolean | ||||
| +--ro source-protocol -> /rt:routing | ||||
| /control-plane-protocols | ||||
| /control-plane-protocol/name | ||||
| +--ro binding-type enumeration | ||||
| +--ro scope? enumeration | ||||
| notifications: | ||||
| +---n segment-routing-global-srgb-collision | ||||
| | +--ro srgb-collisions* [] | ||||
| | +--ro lower-bound? uint32 | ||||
| | +--ro upper-bound? uint32 | ||||
| | +--ro routing-protocol? -> /rt:routing | ||||
| | /control-plane-protocols | ||||
| | /control-plane-protocol/name | ||||
| | +--ro originating-rtr-id? router-id | ||||
| +---n segment-routing-global-sid-collision | ||||
| | +--ro received-target? string | ||||
| | +--ro new-sid-rtr-id? router-id | ||||
| | +--ro original-target? string | ||||
| | +--ro original-sid-rtr-id? router-id | ||||
| | +--ro index? uint32 | ||||
| | +--ro routing-protocol? -> /rt:routing | ||||
| | /control-plane-protocols | ||||
| | /control-plane-protocol/name | ||||
| +---n segment-routing-index-out-of-range | ||||
| +--ro received-target? string | ||||
| +--ro received-index? uint32 | ||||
| +--ro routing-protocol? -> /rt:routing | ||||
| /control-plane-protocols | ||||
| /control-plane-protocol/name | ||||
| 4. Configuration | 4. Configuration | |||
| This module augments the "/rt:routing:" with a segment-routing | The module ietf-segment-routing-mpls augments the "/rt:routing/ | |||
| container. This container defines all the configuration parameters | sr:segment-routing:" with a sr-mpls container. This container | |||
| related to segment-routing. | defines all the configuration parameters related to segment-routing | |||
| MPLS data plane. | ||||
| The segment-routing configuration is split in global configuration | The sr-mpls configuration is split in global configuration and | |||
| and interface configuration. | interface configuration. | |||
| The global configuration includes : | The global configuration includes : | |||
| o segment-routing transport type : The underlying transport type for | ||||
| segment routing. The version of the model limits the transport | ||||
| type to an MPLS dataplane. The transport-type is only defined | ||||
| once for a particular routing-instance and is agnostic to the | ||||
| control plane used. Only a single transport-type is supported in | ||||
| this version of the model. | ||||
| o bindings : Defines prefix to SID mappings. The operator can | o bindings : Defines prefix to SID mappings. The operator can | |||
| control advertisement of Prefix-SID independently for IPv4 and | control advertisement of Prefix-SID independently for IPv4 and | |||
| IPv6. Two types of mappings are available : | IPv6. Two types of mappings are available: | |||
| * Mapping-server : maps non local prefixes to a segment ID. | * Mapping-server : maps non local prefixes to a segment ID. | |||
| Configuration of bindings does not automatically allow | Configuration of bindings does not automatically allow | |||
| advertisement of those bindings. Advertisement must be | advertisement of those bindings. Advertisement must be | |||
| controlled by each routing-protocol instance (see Section 5). | controlled by each routing-protocol instance (see Section 5). | |||
| Multiple mapping policies may be defined. | Multiple mapping policies may be defined. | |||
| * Connected prefixes : maps connected prefixes to a segment ID. | * Connected prefixes : maps connected prefixes to a segment ID. | |||
| Advertisement of the mapping will be done by IGP when enabled | Advertisement of the mapping will be done by IGP when enabled | |||
| for segment routing (see Section 5). The SID value can be | for segment routing (see Section 5). The SID value can be | |||
| skipping to change at page 8, line 51 ¶ | skipping to change at page 8, line 51 ¶ | |||
| 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 Module | 8. YANG Module | |||
| 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-rouuting-common.yang and/or | but are referenced in the ietf-segment-rouuting-common.yang and/or | |||
| ietf-segment-routing.yang module: [RFC6991], [RFC8294], [RFC8476], | ietf-segment-routing.yang module: [RFC6991], [RFC8294], [RFC8476], | |||
| and [RFC8491]. | and [RFC8491]. | |||
| <CODE BEGINS> file "ietf-segment-routing-common@2019-11-03.yang" | <CODE BEGINS> file "ietf-segment-routing@2020-01-09.yang" | |||
| module ietf-segment-routing { | ||||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | ||||
| prefix sr; | ||||
| import ietf-routing { | ||||
| prefix rt; | ||||
| } | ||||
| organization | ||||
| "IETF SPRING - SPRING Working Group"; | ||||
| contact | ||||
| "WG Web: <http://tools.ietf.org/wg/spring/> | ||||
| WG List: <mailto:spring@ietf.org> | ||||
| Editor: Stephane Litkowski | ||||
| <mailto:slitkows.ietf@gmail.com> | ||||
| Editor: 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> | ||||
| "; | ||||
| description | ||||
| "The YANG module defines a generic configuration model for | ||||
| Segment Routing common across all of the vendor | ||||
| implementations. It's to be augmented by different SR data | ||||
| planes. | ||||
| Copyright (c) 2020 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject | ||||
| 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; | ||||
| see the RFC itself for full legal notices."; | ||||
| reference "RFC XXXX"; | ||||
| revision 2020-01-09 { | ||||
| description | ||||
| "Initial Version"; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| augment "/rt:routing" { | ||||
| description | ||||
| "This augments routing data model (RFC 8349) | ||||
| with Segment Routing (SR)."; | ||||
| container segment-routing { | ||||
| description | ||||
| "Segment Routing configuration. This container | ||||
| is to be augmented by different SR data planes."; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| <CODE BEGINS> file "ietf-segment-routing-common@2020-01-09.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; | |||
| } | } | |||
| skipping to change at page 9, line 37 ¶ | skipping to change at page 11, line 10 ¶ | |||
| Author: Pushpasis Sarkar | Author: Pushpasis Sarkar | |||
| <mailto:pushpasis.ietf@gmail.com> | <mailto:pushpasis.ietf@gmail.com> | |||
| Author: Jeff Tantsura | Author: Jeff Tantsura | |||
| <jefftant.ietf@gmail.com> | <jefftant.ietf@gmail.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module defines a collection of generic types and | "The YANG module defines a collection of generic types and | |||
| grouping for Segment Routing (SR) as described in RFC 8402. | grouping for Segment Routing (SR) as described in RFC 8402. | |||
| Copyright (c) 2019 IETF Trust and the persons identified as | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| 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."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2019-11-03 { | ||||
| revision 2020-01-09 { | ||||
| 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."; | |||
| } | } | |||
| identity segment-routing-transport { | ||||
| description | ||||
| "Base identity for segment routing transport."; | ||||
| } | ||||
| identity segment-routing-transport-mpls { | ||||
| base segment-routing-transport; | ||||
| description | ||||
| "This identity represents MPLS transport for segment | ||||
| routing."; | ||||
| } | ||||
| identity segment-routing-transport-ipv6 { | ||||
| base segment-routing-transport; | ||||
| description | ||||
| "This identity represents IPv6 transport for segment | ||||
| routing."; | ||||
| } | ||||
| identity prefix-sid-algorithm { | identity prefix-sid-algorithm { | |||
| description | description | |||
| "Base identity for prefix-sid algorithm."; | "Base identity for prefix-sid algorithm."; | |||
| } | } | |||
| identity prefix-sid-algorithm-shortest-path { | identity prefix-sid-algorithm-shortest-path { | |||
| base prefix-sid-algorithm; | base prefix-sid-algorithm; | |||
| description | description | |||
| "Shortest Path First (SPF) prefix-sid algorithm. This | "Shortest Path First (SPF) prefix-sid algorithm. This | |||
| is the default algorthm."; | is the default algorthm."; | |||
| skipping to change at page 10, line 51 ¶ | skipping to change at page 12, line 4 ¶ | |||
| description | description | |||
| "Shortest Path First (SPF) prefix-sid algorithm. This | "Shortest Path First (SPF) prefix-sid algorithm. This | |||
| is the default algorthm."; | is the default algorthm."; | |||
| } | } | |||
| identity prefix-sid-algorithm-strict-spf { | identity prefix-sid-algorithm-strict-spf { | |||
| base prefix-sid-algorithm; | base prefix-sid-algorithm; | |||
| description | description | |||
| "This algorithm mandates that the packet is forwarded | "This algorithm mandates that the packet is forwarded | |||
| according to ECMP-aware SPF algorithm."; | according to ECMP-aware SPF algorithm."; | |||
| } | } | |||
| grouping srlr { | grouping srlr { | |||
| description | description | |||
| "Grouping for SR Label Range configuration."; | "Grouping for SR Label Range configuration."; | |||
| leaf lower-bound { | leaf lower-bound { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Lower value in the label range."; | "Lower value in the label range."; | |||
| } | } | |||
| leaf upper-bound { | leaf upper-bound { | |||
| type uint32; | type uint32; | |||
| must "../lower-bound < ../upper-bound" { | must "../lower-bound < ../upper-bound" { | |||
| error-message | error-message | |||
| "The upper-bound must be larger than the lower-bound."; | "The upper-bound must be larger than the lower-bound."; | |||
| description | description | |||
| "The value MUST be greater than 'lower-bound'."; | "The value must be greater than 'lower-bound'."; | |||
| } | } | |||
| description | description | |||
| "Upper value in the label range."; | "Upper value in the label range."; | |||
| } | } | |||
| } | } | |||
| grouping srgb { | grouping srgb { | |||
| description | description | |||
| "Grouping for SR Global Label range."; | "Grouping for SR Global Label range."; | |||
| list srgb { | list srgb { | |||
| skipping to change at page 13, line 39 ¶ | skipping to change at page 14, line 41 ¶ | |||
| } | } | |||
| } | } | |||
| grouping node-capabilities { | grouping node-capabilities { | |||
| description | description | |||
| "Containing SR node capabilities."; | "Containing SR node capabilities."; | |||
| container node-capabilities { | container node-capabilities { | |||
| config false; | config false; | |||
| description | description | |||
| "Shows the SR capability of the node."; | "Shows the SR capability of the node."; | |||
| list transport-planes { | ||||
| key "transport-plane"; | ||||
| description | ||||
| "List of supported transport planes."; | ||||
| leaf transport-plane { | ||||
| type identityref { | ||||
| base segment-routing-transport; | ||||
| } | ||||
| description | ||||
| "Transport plane supported"; | ||||
| } | ||||
| } | ||||
| leaf entropy-readable-label-depth { | leaf entropy-readable-label-depth { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Maximum label stack depth that a router can read."; | "Maximum label stack depth that a router can read."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping prefix-sid-attributes { | grouping prefix-sid-attributes { | |||
| description | description | |||
| skipping to change at page 14, line 36 ¶ | skipping to change at page 15, line 26 ¶ | |||
| 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> | |||
| <CODE BEGINS> file "ietf-segment-routing@2019-11-03.yang" | <CODE BEGINS> file "ietf-segment-routing-mpls@2020-01-09.yang" | |||
| module ietf-segment-routing { | module ietf-segment-routing-mpls { | |||
| 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-mpls"; | |||
| prefix sr; | prefix sr-mpls; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix rt; | prefix rt; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix if; | prefix if; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix rt-types; | prefix rt-types; | |||
| } | } | |||
| import ietf-segment-routing { | ||||
| prefix sr; | ||||
| } | ||||
| import ietf-segment-routing-common { | import ietf-segment-routing-common { | |||
| prefix sr-cmn; | prefix sr-cmn; | |||
| } | } | |||
| organization | organization | |||
| "IETF SPRING - SPRING Working Group"; | "IETF SPRING - SPRING Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/spring/> | "WG Web: <http://tools.ietf.org/wg/spring/> | |||
| WG List: <mailto:spring@ietf.org> | WG List: <mailto:spring@ietf.org> | |||
| skipping to change at page 15, line 31 ¶ | skipping to change at page 16, line 24 ¶ | |||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Author: Pushpasis Sarkar | Author: Pushpasis Sarkar | |||
| <mailto:pushpasis.ietf@gmail.com> | <mailto:pushpasis.ietf@gmail.com> | |||
| Author: Jeff Tantsura | Author: Jeff Tantsura | |||
| <jefftant.ietf@gmail.com> | <jefftant.ietf@gmail.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module defines a generic configuration model for | "The YANG module defines a generic configuration model for | |||
| Segment routing common across all of the vendor | Segment Routing MPLS data plane. | |||
| implementations. | ||||
| Copyright (c) 2019 IETF Trust and the persons identified as | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| 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."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2019-11-03 { | revision 2020-01-09 { | |||
| 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)."; | |||
| } | } | |||
| feature protocol-srgb { | feature protocol-srgb { | |||
| description | description | |||
| "Support for per-protocol Segment Routing Global Block | "Support for per-protocol Segment Routing Global Block | |||
| (SRGB) configuration."; | (SRGB) configuration."; | |||
| } | } | |||
| feature max-sid-depth { | feature max-sid-depth { | |||
| description | description | |||
| "Support for signaling MSD (Maximum SID Depth) in IGP."; | "Support for signaling MSD (Maximum SID Depth) in IGP."; | |||
| } | } | |||
| skipping to change at page 19, line 24 ¶ | skipping to change at page 20, line 17 ¶ | |||
| } | } | |||
| leaf msd { | leaf msd { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "MSD supported by the interface."; | "MSD supported by the interface."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt: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)."; | |||
| container segment-routing { | container sr-mpls { | |||
| description | description | |||
| "Segment Routing global configuration."; | "Segment Routing global configuration."; | |||
| leaf transport-type { | ||||
| type identityref { | ||||
| base sr-cmn:segment-routing-transport; | ||||
| } | ||||
| default "sr-cmn:segment-routing-transport-mpls"; | ||||
| description | ||||
| "Dataplane to be used."; | ||||
| } | ||||
| uses sr-cmn:node-capabilities; | uses sr-cmn:node-capabilities; | |||
| container msd { | container msd { | |||
| if-feature "max-sid-depth"; | if-feature "max-sid-depth"; | |||
| description | description | |||
| "MSD configuration."; | "MSD configuration."; | |||
| uses max-sid-depth; | uses max-sid-depth; | |||
| } | } | |||
| container bindings { | container bindings { | |||
| description | description | |||
| "List of bindings."; | "List of bindings."; | |||
| skipping to change at page 22, line 8 ¶ | skipping to change at page 22, line 41 ¶ | |||
| } | } | |||
| enum "local" { | enum "local" { | |||
| description | description | |||
| "Local SID."; | "Local SID."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Scope of this label block."; | "Scope of this label block."; | |||
| } | } | |||
| } | } | |||
| container sid-list { | container sid-db { | |||
| config false; | config false; | |||
| description | description | |||
| "List of prefix and SID associations."; | "List of prefix and SID associations."; | |||
| list sid { | list sid { | |||
| key "target sid source source-protocol binding-type"; | key "target sid source source-protocol binding-type"; | |||
| ordered-by system; | ordered-by system; | |||
| description | description | |||
| "SID Binding."; | "SID Binding."; | |||
| leaf target { | leaf target { | |||
| type string; | type string; | |||
| skipping to change at page 28, line 13 ¶ | skipping to change at page 28, line 45 ¶ | |||
| <https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://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/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
| "Common YANG Data Types for the Routing Area", RFC 8294, | "Common YANG Data Types for the Routing Area", RFC 8294, | |||
| DOI 10.17487/RFC8294, December 2017, | DOI 10.17487/RFC8294, December 2017, | |||
| <https://www.rfc-editor.org/info/rfc8294>. | <https://www.rfc-editor.org/info/rfc8294>. | |||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
| skipping to change at page 28, line 47 ¶ | skipping to change at page 29, line 34 ¶ | |||
| [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | |||
| "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, | "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, | |||
| DOI 10.17487/RFC8476, December 2018, | DOI 10.17487/RFC8476, December 2018, | |||
| <https://www.rfc-editor.org/info/rfc8476>. | <https://www.rfc-editor.org/info/rfc8476>. | |||
| [RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, | [RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, | |||
| "Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491, | "Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491, | |||
| DOI 10.17487/RFC8491, November 2018, | DOI 10.17487/RFC8491, November 2018, | |||
| <https://www.rfc-editor.org/info/rfc8491>. | <https://www.rfc-editor.org/info/rfc8491>. | |||
| [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/RFC8660, December 2019, | ||||
| <https://www.rfc-editor.org/info/rfc8660>. | ||||
| 12.2. Informative References | 12.2. Informative References | |||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Stephane Litkowski | Stephane Litkowski | |||
| Cisco Systems | Cisco Systems | |||
| End of changes. 39 change blocks. | ||||
| 177 lines changed or deleted | 220 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/ | ||||