| < draft-ietf-spring-sr-yang-11.txt | draft-ietf-spring-sr-yang-12.txt > | |||
|---|---|---|---|---|
| SPRING Working Group S. Litkowski | SPRING Working Group S. Litkowski | |||
| Internet-Draft Orange Business Service | Internet-Draft Orange Business Service | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: August 19, 2019 Huawei | Expires: September 1, 2019 Huawei | |||
| A. Lindem | ||||
| Cisco | ||||
| P. Sarkar | P. Sarkar | |||
| Individual | Individual | |||
| J. Tantsura | J. Tantsura | |||
| Apstra | Apstra | |||
| A. Lindem | February 28, 2019 | |||
| Cisco | ||||
| February 15, 2019 | ||||
| YANG Data Model for Segment Routing | YANG Data Model for Segment Routing | |||
| draft-ietf-spring-sr-yang-11 | draft-ietf-spring-sr-yang-12 | |||
| 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. This document defines also generic | |||
| containers that SHOULD be reused by IGP protocol modules to support | containers that SHOULD be reused by IGP protocol modules to support | |||
| segment routing. | 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 http://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 August 19, 2019. | This Internet-Draft will expire on September 1, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | (http://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 | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 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 . . . . . . . . . . . . . . . . . . . 28 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 28 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 25 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 30 | 12.2. Informative References . . . . . . . . . . . . . . . . . 26 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 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. | |||
| skipping to change at page 8, line 48 ¶ | skipping to change at page 8, line 48 ¶ | |||
| 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 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], and | ietf-segment-routing.yang module: [RFC6991], [RFC8294], [RFC8476], | |||
| [RFC8476]. | and [RFC8491]. | |||
| <CODE BEGINS> file "ietf-segment-routing-common@2019-02-15.yang" | ||||
| module ietf-segment-routing-common { | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; | ||||
| prefix sr-cmn; | ||||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| } | ||||
| 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:stephane.litkowski@orange.com> | ||||
| Editor: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@huawei.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 collection of types and groupings for | ||||
| Segment routing. | ||||
| Copyright (c) 2017 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"; | <CODE BEGINS> file "ietf-segment-routing-common@2019-02-28.yang" | |||
| module ietf-segment-routing-common { | ||||
| yang-version 1.1; | ||||
| namespace | ||||
| "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; | ||||
| prefix sr-cmn; | ||||
| revision 2019-02-15 { | import ietf-inet-types { | |||
| description | prefix inet; | |||
| " | } | |||
| * Addressed YANG Doctor's review comments; | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2018-06-25 { | organization | |||
| description | "IETF SPRING - SPRING Working Group"; | |||
| " | ||||
| * Renamed readable-label-stack-depth to | ||||
| * entropy-readable-label-depth; | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2017-07-01 { | ||||
| description | ||||
| " | ||||
| *Conform to RFC6087BIS Appendix C | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2017-03-10 { | ||||
| description | ||||
| " | ||||
| * Add support of SRLB | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2016-10-28 { | ||||
| description | ||||
| " | ||||
| * Add support of MSD (Maximum SID Depth) | ||||
| * Update contact info | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2016-10-24 { | ||||
| description | ||||
| "Initial"; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| feature sid-last-hop-behavior { | contact | |||
| description | "WG Web: <http://tools.ietf.org/wg/spring/> | |||
| "Configurable last hop behavior."; | WG List: <mailto:spring@ietf.org> | |||
| } | ||||
| identity segment-routing-transport { | Editor: Stephane Litkowski | |||
| description | <mailto:stephane.litkowski@orange.com> | |||
| "Base identity for segment routing transport."; | Editor: Yingzhen Qu | |||
| } | <mailto:yingzhen.qu@huawei.com> | |||
| identity segment-routing-transport-mpls { | Author: Acee Lindem | |||
| base segment-routing-transport; | <mailto:acee@cisco.com> | |||
| description | Author: Pushpasis Sarkar | |||
| "This identity represents MPLS transport for segment | <mailto:pushpasis.ietf@gmail.com> | |||
| routing."; | Author: Jeff Tantsura | |||
| } | <jefftant.ietf@gmail.com> | |||
| identity segment-routing-transport-ipv6 { | "; | |||
| base segment-routing-transport; | description | |||
| description | "The YANG module defines a collection of generic types and | |||
| "This identity represents IPv6 transport for segment | grouping for Segment Routing (SR) as described in RFC 8402. | |||
| routing."; | ||||
| } | ||||
| identity prefix-sid-algorithm { | Copyright (c) 2019 IETF Trust and the persons identified as | |||
| description | authors of the code. All rights reserved. | |||
| "Base identity for prefix-sid algorithm."; | ||||
| } | ||||
| identity prefix-sid-algorithm-shortest-path { | Redistribution and use in source and binary forms, with or | |||
| base prefix-sid-algorithm; | without modification, is permitted pursuant to, and subject | |||
| description | to the license terms contained in, the Simplified BSD License | |||
| "The default behavior of prefix-sid algorithm."; | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| } | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | ||||
| identity prefix-sid-algorithm-strict-spf { | This version of this YANG module is part of RFC XXXX; | |||
| base prefix-sid-algorithm; | see the RFC itself for full legal notices."; | |||
| description | ||||
| "This algorithm mandates that the packet is forwared | ||||
| according to ECMP-aware SPF algorithm."; | ||||
| } | ||||
| grouping srlr { | reference "RFC XXXX"; | |||
| description | revision 2019-02-28 { | |||
| "Grouping for SR Label Range configuration."; | description | |||
| leaf lower-bound { | "Initial version"; | |||
| type uint32; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| description | } | |||
| "Lower value in the block."; | ||||
| } | ||||
| leaf upper-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Upper value in the block."; | ||||
| } | feature sid-last-hop-behavior { | |||
| } | description | |||
| "Configurable last hop behavior."; | ||||
| } | ||||
| grouping srgb { | identity segment-routing-transport { | |||
| description | description | |||
| "Grouping for SR Global Label range."; | "Base identity for segment routing transport."; | |||
| list srgb { | } | |||
| key "lower-bound upper-bound"; | ||||
| ordered-by user; | ||||
| description | ||||
| "List of global blocks to be | ||||
| advertised."; | ||||
| uses srlr; | ||||
| } | ||||
| } | ||||
| grouping srlb { | identity segment-routing-transport-mpls { | |||
| description | base segment-routing-transport; | |||
| "Grouping for SR Local Block range."; | description | |||
| list srlb { | "This identity represents MPLS transport for segment | |||
| key "lower-bound upper-bound"; | routing."; | |||
| ordered-by user; | } | |||
| description | ||||
| "List of SRLBs."; | ||||
| uses srlr; | ||||
| } | ||||
| } | ||||
| grouping sid-value-type { | identity segment-routing-transport-ipv6 { | |||
| description | base segment-routing-transport; | |||
| "Defines how the SID value is expressed."; | description | |||
| leaf value-type { | "This identity represents IPv6 transport for segment | |||
| type enumeration { | routing."; | |||
| 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."; | ||||
| } | ||||
| } | ||||
| grouping prefix-sid { | identity prefix-sid-algorithm { | |||
| description | description | |||
| "This grouping defines cfg of prefix SID."; | "Base identity for prefix-sid algorithm."; | |||
| leaf prefix { | } | |||
| type inet:ip-prefix; | ||||
| description | ||||
| "connected prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | ||||
| } | ||||
| grouping ipv4-sid { | identity prefix-sid-algorithm-shortest-path { | |||
| description | base prefix-sid-algorithm; | |||
| "This grouping defines ipv4 prefix SID."; | description | |||
| leaf prefix { | "Shortest Path First (SPF) prefix-sid algorithm. This | |||
| type inet:ipv4-prefix; | is the default algorthm."; | |||
| description | } | |||
| "connected prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | ||||
| } | ||||
| grouping ipv6-sid { | ||||
| description | ||||
| "This grouping defines ipv6 prefix SID."; | ||||
| leaf prefix { | ||||
| type inet:ipv6-prefix; | ||||
| description | ||||
| "connected prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | ||||
| } | ||||
| grouping last-hop-behavior { | identity prefix-sid-algorithm-strict-spf { | |||
| description | base prefix-sid-algorithm; | |||
| "Defines last hop behavior"; | description | |||
| leaf last-hop-behavior { | "This algorithm mandates that the packet is forwarded | |||
| if-feature "sid-last-hop-behavior"; | according to ECMP-aware SPF algorithm."; | |||
| type enumeration { | } | |||
| enum "explicit-null" { | grouping srlr { | |||
| description | description | |||
| "Use explicit-null for the SID."; | "Grouping for SR Label Range configuration."; | |||
| } | leaf lower-bound { | |||
| enum "no-php" { | type uint32; | |||
| description | description | |||
| "Do no use PHP for the SID."; | "Lower value in the label range."; | |||
| } | } | |||
| enum "php" { | leaf upper-bound { | |||
| description | type uint32; | |||
| "Use PHP for the SID."; | description | |||
| } | "Upper value in the label range."; | |||
| } | } | |||
| description | } | |||
| "Configure last hop behavior."; | ||||
| } | ||||
| } | ||||
| grouping node-capabilities { | grouping srgb { | |||
| description | description | |||
| "Containing SR node capabilities."; | "Grouping for SR Global Label range."; | |||
| container node-capabilities { | list srgb { | |||
| config false; | key "lower-bound upper-bound"; | |||
| description | ordered-by user; | |||
| "Shows the SR capability of the node."; | description | |||
| list transport-planes { | "List of global blocks to be advertised."; | |||
| key "transport-plane"; | uses srlr; | |||
| description | } | |||
| "List of supported transport planes."; | } | |||
| leaf transport-plane { | ||||
| type identityref { | ||||
| base segment-routing-transport; | ||||
| } | ||||
| description | ||||
| "Transport plane supported"; | ||||
| } | ||||
| } | ||||
| leaf entropy-readable-label-depth { | ||||
| type uint8; | ||||
| description | ||||
| "Maximum label statck depth that | ||||
| the router can read. "; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping prefix-sid-attributes { | grouping srlb { | |||
| description | description | |||
| "Containing SR attributes for a prefix."; | "Grouping for SR Local Block range."; | |||
| uses sid-value-type; | list srlb { | |||
| leaf start-sid { | key "lower-bound upper-bound"; | |||
| type uint32; | ordered-by user; | |||
| mandatory true; | description | |||
| description | "List of SRLBs."; | |||
| "Value associated with | uses srlr; | |||
| prefix. The value must | } | |||
| be interpreted in the | } | |||
| context of value-type."; | ||||
| } | ||||
| leaf range { | ||||
| type uint32; | ||||
| description | ||||
| "Describes how many SIDs could be | ||||
| allocated."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type identityref { | ||||
| base prefix-sid-algorithm; | ||||
| } | ||||
| description | ||||
| "Prefix-sid algorithm."; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| <CODE BEGINS> file "ietf-segment-routing@2019-02-15.yang" | ||||
| module ietf-segment-routing { | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | ||||
| prefix sr; | ||||
| import ietf-inet-types { | grouping sid-value-type { | |||
| prefix inet; | description | |||
| } | "Defines how the SID value is expressed."; | |||
| import ietf-yang-types { | leaf value-type { | |||
| prefix yang; | type enumeration { | |||
| } | enum "index" { | |||
| import ietf-routing { | description | |||
| prefix rt; | "The value will be interpreted as an index."; | |||
| } | } | |||
| import ietf-interfaces { | enum "absolute" { | |||
| prefix if; | description | |||
| } | "The value will become interpreted as an absolute | |||
| import ietf-routing-types { | value."; | |||
| prefix rt-types; | } | |||
| } | } | |||
| import ietf-segment-routing-common { | default "index"; | |||
| prefix sr-cmn; | description | |||
| } | "This leaf defines how value must be interpreted."; | |||
| } | ||||
| } | ||||
| organization | grouping prefix-sid { | |||
| "IETF SPRING - SPRING Working Group"; | description | |||
| contact | "This grouping defines cfg of prefix SID."; | |||
| "WG Web: <http://tools.ietf.org/wg/spring/> | leaf prefix { | |||
| WG List: <mailto:spring@ietf.org> | type inet:ip-prefix; | |||
| description | ||||
| "connected prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | ||||
| } | ||||
| Editor: Stephane Litkowski | grouping ipv4-sid { | |||
| <mailto:stephane.litkowski@orange.com> | description | |||
| Editor: Yingzhen Qu | "Grouping for an IPv4 prefix SID."; | |||
| <mailto:yingzhen.qu@huawei.com> | leaf prefix { | |||
| type inet:ipv4-prefix; | ||||
| description | ||||
| "Connected IPv4 prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | ||||
| } | ||||
| grouping ipv6-sid { | ||||
| description | ||||
| "Grouping for an IPv6 prefix SID."; | ||||
| leaf prefix { | ||||
| type inet:ipv6-prefix; | ||||
| description | ||||
| "Connected ipv6 prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | ||||
| } | ||||
| Author: Acee Lindem | grouping last-hop-behavior { | |||
| <mailto:acee@cisco.com> | description | |||
| Author: Pushpasis Sarkar | "Defines last hop behavior"; | |||
| <mailto:pushpasis.ietf@gmail.com> | leaf last-hop-behavior { | |||
| Author: Jeff Tantsura | if-feature "sid-last-hop-behavior"; | |||
| <jefftant.ietf@gmail.com> | 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 | ||||
| "Configure last hop behavior."; | ||||
| } | ||||
| } | ||||
| "; | grouping node-capabilities { | |||
| description | description | |||
| "The YANG module defines a generic configuration model for | "Containing SR node capabilities."; | |||
| Segment routing common across all of the vendor | container node-capabilities { | |||
| implementations. | config false; | |||
| description | ||||
| "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 { | ||||
| type uint8; | ||||
| description | ||||
| "Maximum label stack depth that a router can read."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping prefix-sid-attributes { | ||||
| description | ||||
| "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 | ||||
| "Prefix-sid algorithm."; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| <CODE BEGINS> file "ietf-segment-routing@2019-02-28.yang" | ||||
| module ietf-segment-routing { | ||||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | ||||
| prefix sr; | ||||
| Copyright (c) 2018 IETF Trust and the persons identified as | import ietf-inet-types { | |||
| authors of the code. All rights reserved. | prefix inet; | |||
| } | ||||
| import ietf-routing { | ||||
| prefix rt; | ||||
| } | ||||
| import ietf-interfaces { | ||||
| prefix if; | ||||
| } | ||||
| import ietf-routing-types { | ||||
| prefix rt-types; | ||||
| } | ||||
| import ietf-segment-routing-common { | ||||
| prefix sr-cmn; | ||||
| } | ||||
| organization | ||||
| "IETF SPRING - SPRING Working Group"; | ||||
| contact | ||||
| "WG Web: <http://tools.ietf.org/wg/spring/> | ||||
| WG List: <mailto:spring@ietf.org> | ||||
| Redistribution and use in source and binary forms, with or | Editor: Stephane Litkowski | |||
| without modification, is permitted pursuant to, and subject | <mailto:stephane.litkowski@orange.com> | |||
| to the license terms contained in, the Simplified BSD License | Editor: Yingzhen Qu | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | <mailto:yingzhen.qu@huawei.com> | |||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; | Author: Acee Lindem | |||
| see the RFC itself for full legal notices."; | <mailto:acee@cisco.com> | |||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Jeff Tantsura | ||||
| <jefftant.ietf@gmail.com> | ||||
| reference "RFC XXXX"; | "; | |||
| description | ||||
| "The YANG module defines a generic configuration model for | ||||
| Segment routing common across all of the vendor | ||||
| implementations. | ||||
| revision 2019-02-15 { | Copyright (c) 2019 IETF Trust and the persons identified as | |||
| description | authors of the code. All rights reserved. | |||
| " | ||||
| * Addressed YANG Doctor's review comments; | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2018-06-25 { | Redistribution and use in source and binary forms, with or | |||
| description | without modification, is permitted pursuant to, and subject | |||
| ""; | 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). | ||||
| } | This version of this YANG module is part of RFC XXXX; | |||
| revision 2017-07-01 { | see the RFC itself for full legal notices."; | |||
| description | ||||
| " | ||||
| * Implement NMDA model | ||||
| *Conform to RFC6087BIS Appendix C | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2017-03-10 { | reference "RFC XXXX"; | |||
| description | ||||
| " | ||||
| * Change global-sid-list to sid-list and add a leaf scope | ||||
| * Added support of SRLB | ||||
| * Added support of local sids | ||||
| * fixed indentations | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2016-10-28 { | ||||
| description | ||||
| " | ||||
| * Add support of MSD (Maximum SID Depth) | ||||
| * Update contact info | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2016-10-24 { | ||||
| description | ||||
| " | ||||
| * Moved common SR types and groupings to a seperate module | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2016-07-07 { | ||||
| description | ||||
| " | ||||
| * Add support of prefix-sid algorithm configuration | ||||
| * change routing-protocols to control-plane-protocols | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2016-03-17 { | ||||
| description | ||||
| " | ||||
| * Add notification segment-routing-global-srgb-collision | ||||
| * Add router-id to segment-routing-global-sid-collision | ||||
| * Remove routing-instance | ||||
| * Add typedef router-id | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2015-10-17 { | ||||
| description | ||||
| " | ||||
| * Add per-protocol SRGB config feature | ||||
| * Move SRBG config to a grouping | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2015-06-22 { | ||||
| description | ||||
| " | ||||
| * Prefix SID config moved to | ||||
| connected-prefix-sid-map in global SR cfg | ||||
| rather than IGP. | ||||
| "; | ||||
| reference "draft-litkowski-spring-sr-yang-01"; | ||||
| } | ||||
| revision 2015-04-23 { | ||||
| description | ||||
| " | ||||
| * Node flag deprecated from prefixSID | ||||
| * SR interface cfg moved to protocol | ||||
| * Adding multiple binding policies for SRMS | ||||
| "; | ||||
| reference ""; | ||||
| } | ||||
| revision 2015-02-27 { | ||||
| description | ||||
| "Initial"; | ||||
| reference "draft-litkowski-spring-sr-yang-00"; | ||||
| } | ||||
| feature mapping-server { | revision 2019-02-28 { | |||
| description | description | |||
| "Support of Segment Routing Mapping Server (SRMS)."; | "Initial Version"; | |||
| } | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | ||||
| feature mapping-server { | ||||
| description | ||||
| "Support for Segment Routing Mapping Server (SRMS)."; | ||||
| } | ||||
| feature protocol-srgb { | ||||
| description | ||||
| "Support for per-protocol Segment Routing Global Block | ||||
| (SRGB) configuration."; | ||||
| } | ||||
| feature protocol-srgb { | feature max-sid-depth { | |||
| description | description | |||
| "Support per-protocol Segment Routing Global Block (SRGB) | "Support for signaling MSD (Maximum SID Depth) in IGP."; | |||
| configuration."; | } | |||
| } | ||||
| feature max-sid-depth { | ||||
| description | ||||
| "Support of signaling MSD (Maximum SID Depth) in IGP."; | ||||
| } | ||||
| typedef system-id { | typedef system-id { | |||
| type string { | type string { | |||
| pattern "[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.00"; | pattern | |||
| } | '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; | |||
| description | } | |||
| "This type defines ISIS system id using pattern, | description | |||
| system id looks like : 0143.0438.AeF0.00"; | "This type defines IS-IS system-id using pattern, | |||
| } | An example system-id is 0143.0438.AEF0"; | |||
| } | ||||
| typedef router-id { | typedef router-id { | |||
| type union { | type union { | |||
| type system-id; | type system-id; | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| } | } | |||
| description | description | |||
| "OSPF/BGP router id or ISIS system ID."; | "OSPF/BGP router-id or ISIS system ID."; | |||
| } | } | |||
| grouping sr-controlplane { | grouping sr-controlplane { | |||
| description | description | |||
| "Defines protocol configuration."; | "Defines protocol configuration."; | |||
| container segment-routing { | container segment-routing { | |||
| description | description | |||
| "segment routing global config."; | "Segment Routing global configuration."; | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables segment-routing | "Enables segment-routing protocol extensions."; | |||
| protocol extensions."; | } | |||
| } | container bindings { | |||
| container bindings { | description | |||
| description | "Control of binding advertisement and reception."; | |||
| "Control of binding advertisement | container advertise { | |||
| and reception."; | description | |||
| container advertise { | "Control advertisement of local mappings | |||
| description | in binding TLVs."; | |||
| "Authorize the advertise | leaf-list policies { | |||
| of local mappings in binding TLV."; | type string; | |||
| leaf-list policies { | description | |||
| type string; | "List of binding advertisement policies."; | |||
| description | } | |||
| "List of policies to be advertised."; | } | |||
| leaf receive { | ||||
| type boolean; | ||||
| default "true"; | ||||
| description | ||||
| "Allow the reception and usage of binding TLVs."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | grouping igp-interface { | |||
| } | description | |||
| leaf receive { | "Grouping for IGP interface configuration."; | |||
| type boolean; | container segment-routing { | |||
| default "true"; | description | |||
| description | "Container for SR interface configuration."; | |||
| "Authorize the reception and usage | container adjacency-sid { | |||
| of binding TLV."; | description | |||
| } | "Adjacency SID configuration."; | |||
| } | list advertise-adj-group-sid { | |||
| } | key "group-id"; | |||
| } | description | |||
| "Control advertisement of S flag. Enable advertisement | ||||
| of a common Adj-SID for parallel links."; | ||||
| leaf group-id { | ||||
| type uint32; | ||||
| description | ||||
| "The value is an internal value to identify a | ||||
| group-ID. Interfaces with the same group-ID will be | ||||
| bundled together."; | ||||
| } | ||||
| } | ||||
| leaf advertise-protection { | ||||
| type enumeration { | ||||
| enum "single" { | ||||
| description | ||||
| "A single Adj-SID is associated with the adjacency | ||||
| and reflects the protection configuration."; | ||||
| } | ||||
| enum "dual" { | ||||
| description | ||||
| "Two Adj-SIDs will be associated with the adjacency | ||||
| if the interface is protected. In this case, will | ||||
| be advertised with backup flag set, the other will | ||||
| be advertised with theo backup flag clear. In case | ||||
| protection is not configured, single Adj-SID will | ||||
| be advertised with the backup flag clear."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "If set, the Adj-SID refers to a protected adjacency."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping igp-interface { | grouping max-sid-depth { | |||
| description | description | |||
| "Grouping for IGP interface cfg."; | "Maximum SID Depth (MSD)D configuration grouping."; | |||
| container segment-routing { | leaf node-msd { | |||
| description | type uint8; | |||
| "container for SR interface cfg."; | description | |||
| container adjacency-sid { | "Node MSD is the lowest MSD supported by the node."; | |||
| description | } | |||
| "Defines the adjacency SID properties."; | container link-msd { | |||
| list advertise-adj-group-sid { | description | |||
| key "group-id"; | "MSD supported by an individual interface."; | |||
| description | list link-msds { | |||
| "Control advertisement of S flag. | key "interface"; | |||
| Enable to advertise a common Adj-SID | description | |||
| for parallel links."; | "List of link MSDs."; | |||
| leaf group-id { | leaf interface { | |||
| type uint32; | type if:interface-ref; | |||
| description | description | |||
| "The value is an internal value to identify | "Reference to device interface."; | |||
| a group-ID. Interfaces with the same | } | |||
| group-ID will be bundled together."; | leaf msd { | |||
| } | type uint8; | |||
| } | description | |||
| leaf advertise-protection { | "MSD supported by the interface."; | |||
| type enumeration { | } | |||
| enum "single" { | } | |||
| description | } | |||
| "A single Adj-SID is associated | } | |||
| with the adjacency and reflects | ||||
| the protection configuration."; | ||||
| } | ||||
| enum "dual" { | ||||
| description | ||||
| "Two Adj-SIDs will be associated | ||||
| with the adjacency if interface | ||||
| is protected. In this case | ||||
| one will be enforced with | ||||
| backup flag set, the other | ||||
| will be enforced to backup flag unset. | ||||
| In case, protection is not configured, | ||||
| a single Adj-SID will be advertised | ||||
| with backup flag unset."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "If set, the Adj-SID refers to an | ||||
| adjacency being protected."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping max-sid-depth { | augment "/rt:routing" { | |||
| description | description | |||
| "MSD configuration grouping."; | "This augments routing data model (RFC 8349) | |||
| leaf node-msd { | with Segment Routing (SR)."; | |||
| type uint8; | ||||
| description | ||||
| "Node MSD is the lowest MSD supported by the node."; | ||||
| } | ||||
| container link-msd { | ||||
| description | ||||
| "Link MSD is a number representing the particular link | ||||
| MSD value."; | ||||
| list link-msds { | ||||
| key "interface"; | ||||
| description | ||||
| "List of link MSDs."; | ||||
| leaf interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Name of the interface."; | ||||
| } | ||||
| leaf msd { | ||||
| type uint8; | ||||
| description | ||||
| "SID depth of the interface associated with the link."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| augment "/rt:routing" { | container segment-routing { | |||
| description | description | |||
| "This augments routing data model (RFC 8349) | "Segment Routing global configuration."; | |||
| with segment-routing."; | leaf transport-type { | |||
| container segment-routing { | type identityref { | |||
| description | base sr-cmn:segment-routing-transport; | |||
| "segment routing global config."; | } | |||
| leaf transport-type { | default "sr-cmn:segment-routing-transport-mpls"; | |||
| type identityref { | description | |||
| base sr-cmn:segment-routing-transport; | "Dataplane to be used."; | |||
| } | } | |||
| default "sr-cmn:segment-routing-transport-mpls"; | uses sr-cmn:node-capabilities; | |||
| description | container msd { | |||
| "Dataplane to be used."; | if-feature "max-sid-depth"; | |||
| } | description | |||
| uses sr-cmn:node-capabilities; | "MSD configuration."; | |||
| container msd { | uses max-sid-depth; | |||
| if-feature "max-sid-depth"; | } | |||
| description | container bindings { | |||
| "MSD configuration."; | description | |||
| uses max-sid-depth; | "List of bindings."; | |||
| } | container mapping-server { | |||
| container bindings { | if-feature "mapping-server"; | |||
| description | description | |||
| "List of bindings."; | "Configuration of mapping-server local entries."; | |||
| container mapping-server { | list policy { | |||
| if-feature "mapping-server"; | key "name"; | |||
| description | description | |||
| "Configuration of mapping-server | "List mapping-server policies."; | |||
| local entries."; | leaf name { | |||
| list policy { | type string; | |||
| key "name"; | description | |||
| description | "Name of the mapping policy."; | |||
| "Definition of mapping policy."; | } | |||
| leaf name { | container entries { | |||
| type string; | description | |||
| description | "IPv4/IPv6 mapping entries."; | |||
| "Name of the mapping policy."; | list mapping-entry { | |||
| } | key "prefix algorithm"; | |||
| container entries { | description | |||
| description | "Mapping entries."; | |||
| "IPv4/IPv6 mapping entries."; | uses sr-cmn:prefix-sid; | |||
| list mapping-entry { | } | |||
| key "prefix algorithm"; | } | |||
| description | } | |||
| "Mapping entries."; | } | |||
| uses sr-cmn:prefix-sid; | container connected-prefix-sid-map { | |||
| } | description | |||
| } | "Prefix SID configuration."; | |||
| list connected-prefix-sid { | ||||
| key "prefix algorithm"; | ||||
| description | ||||
| "List of prefix SID mapped to IPv4/IPv6 | ||||
| local prefixes."; | ||||
| uses sr-cmn:prefix-sid; | ||||
| uses sr-cmn:last-hop-behavior; | ||||
| } | ||||
| } | ||||
| container local-prefix-sid { | ||||
| description | ||||
| "Local sid configuration."; | ||||
| list local-prefix-sid { | ||||
| key "prefix algorithm"; | ||||
| description | ||||
| "List of local IPv4/IPv6 prefix-sids."; | ||||
| uses sr-cmn:prefix-sid; | ||||
| } | ||||
| } | ||||
| } | ||||
| container global-srgb { | ||||
| description | ||||
| "Global SRGB configuration."; | ||||
| uses sr-cmn:srgb; | ||||
| } | ||||
| container srlb { | ||||
| description | ||||
| "Segment Routing Local Block (SRLB) configuration."; | ||||
| uses sr-cmn:srlb; | ||||
| } | ||||
| } | list label-blocks { | |||
| } | config false; | |||
| container connected-prefix-sid-map { | description | |||
| description | "List of label blocks currently in use."; | |||
| "Prefix SID configuration."; | leaf lower-bound { | |||
| list connected-prefix-sid { | type uint32; | |||
| key "prefix algorithm"; | description | |||
| description | "Lower bound of the label block."; | |||
| "List of prefix SID mapped to | } | |||
| ipv4/ipv6 local prefixes."; | leaf upper-bound { | |||
| uses sr-cmn:prefix-sid; | type uint32; | |||
| uses sr-cmn:last-hop-behavior; | description | |||
| } | "Upper bound of the label block."; | |||
| } | } | |||
| container local-prefix-sid { | leaf size { | |||
| description | type uint32; | |||
| "Local sid configuration."; | description | |||
| list local-prefix-sid { | "Number of indexes in the block."; | |||
| key "prefix algorithm"; | } | |||
| description | leaf free { | |||
| "List of local ipv4/ipv6 prefix-sid."; | type uint32; | |||
| uses sr-cmn:prefix-sid; | description | |||
| } | "Number of free indexes in the block."; | |||
| } | } | |||
| } | leaf used { | |||
| container global-srgb { | type uint32; | |||
| description | description | |||
| "Global SRGB configuration."; | "Number of indexes in use in the block."; | |||
| uses sr-cmn:srgb; | } | |||
| } | leaf scope { | |||
| container srlb { | type enumeration { | |||
| description | enum "global" { | |||
| "SR Local Block configuration."; | description | |||
| uses sr-cmn:srlb; | "Global SID."; | |||
| } | } | |||
| enum "local" { | ||||
| description | ||||
| "Local SID."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Scope of this label block."; | ||||
| } | ||||
| } | ||||
| container sid-list { | ||||
| config false; | ||||
| description | ||||
| "List of prefix and SID associations."; | ||||
| list sid { | ||||
| key "target sid source source-protocol binding-type"; | ||||
| ordered-by system; | ||||
| description | ||||
| "SID Binding."; | ||||
| leaf target { | ||||
| type string; | ||||
| description | ||||
| "Defines the target of the binding. It can be a | ||||
| prefix or something else."; | ||||
| } | ||||
| leaf sid { | ||||
| type uint32; | ||||
| description | ||||
| "Index associated with the prefix."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "Algorithm to be used for the prefix SID."; | ||||
| } | ||||
| leaf source { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "IP address of the router that owns the binding."; | ||||
| } | ||||
| leaf used { | ||||
| type boolean; | ||||
| description | ||||
| "Indicates if the binding is install in the | ||||
| forwarding plane."; | ||||
| } | ||||
| leaf source-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol that owns the binding"; | ||||
| } | ||||
| leaf binding-type { | ||||
| type enumeration { | ||||
| enum "prefix-sid" { | ||||
| description | ||||
| "Binding is learned from a prefix SID."; | ||||
| } | ||||
| enum "binding-tlv" { | ||||
| description | ||||
| "Binding is learned from a binding TLV."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Type of binding."; | ||||
| } | ||||
| leaf scope { | ||||
| type enumeration { | ||||
| enum "global" { | ||||
| description | ||||
| "Global SID."; | ||||
| } | ||||
| enum "local" { | ||||
| description | ||||
| "Local SID."; | ||||
| } | ||||
| list label-blocks { | } | |||
| config false; | description | |||
| description | "SID scoping."; | |||
| "List of labels blocks currently | } | |||
| in use."; | } | |||
| leaf lower-bound { | } | |||
| type uint32; | } | |||
| description | } | |||
| "Lower bound of the label block."; | ||||
| } | ||||
| leaf upper-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Upper bound of the label block."; | ||||
| } | ||||
| leaf size { | ||||
| type uint32; | ||||
| description | ||||
| "Number of indexes in the block."; | ||||
| } | ||||
| leaf free { | ||||
| type uint32; | ||||
| description | ||||
| "Number of indexes free in the block."; | ||||
| } | ||||
| leaf used { | ||||
| type uint32; | ||||
| description | ||||
| "Number of indexes used in the block."; | ||||
| } | ||||
| leaf scope { | ||||
| type enumeration { | ||||
| enum "global" { | ||||
| description | ||||
| "Global sid."; | ||||
| } | ||||
| enum "local" { | ||||
| description | ||||
| "Local sid."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Scope of this label block."; | ||||
| } | ||||
| } | ||||
| container sid-list { | ||||
| config false; | ||||
| description | ||||
| "List of prefix and SID associations."; | ||||
| list sid { | ||||
| key "target sid source source-protocol binding-type"; | ||||
| ordered-by system; | ||||
| description | ||||
| "Binding."; | ||||
| leaf target { | ||||
| type string; | ||||
| description | ||||
| "Defines the target of the binding. | ||||
| It can be a prefix or something else."; | ||||
| } | ||||
| leaf sid { | ||||
| type uint32; | ||||
| description | ||||
| "Index associated with the prefix."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "Algorithm to be used for the prefix | ||||
| SID."; | ||||
| } | ||||
| leaf source { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "IP address of the router than own | ||||
| the binding."; | ||||
| } | ||||
| leaf used { | ||||
| type boolean; | ||||
| description | ||||
| "Defines if the binding is used | ||||
| in forwarding plane."; | ||||
| } | ||||
| leaf source-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Rtg protocol that owns the binding"; | ||||
| } | ||||
| leaf binding-type { | ||||
| type enumeration { | ||||
| enum "prefix-sid" { | ||||
| description | ||||
| "Binding is learned from | ||||
| a prefix SID."; | ||||
| } | ||||
| enum "binding-tlv" { | ||||
| description | ||||
| "Binding is learned from | ||||
| a binding TLV."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Type of binding."; | ||||
| } | ||||
| leaf scope { | ||||
| type enumeration { | ||||
| enum "global" { | ||||
| description | ||||
| "Global sid."; | ||||
| } | ||||
| enum "local" { | ||||
| description | ||||
| "Local sid."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "The sid is local or global."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| notification segment-routing-global-srgb-collision { | notification segment-routing-global-srgb-collision { | |||
| description | description | |||
| "This notification is sent when received SRGB blocks from | "This notification is sent when SRGB blocks received from | |||
| a router conflict."; | routers conflict."; | |||
| list srgb-collisions { | list srgb-collisions { | |||
| description | description | |||
| "List of SRGB blocks that conflict."; | "List of SRGB blocks that conflict."; | |||
| leaf lower-bound { | leaf lower-bound { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Lower value in the block."; | "Lower value in the block."; | |||
| } | } | |||
| leaf upper-bound { | leaf upper-bound { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Upper value in the block."; | "Upper value in the block."; | |||
| } | } | |||
| leaf routing-protocol { | leaf routing-protocol { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
| } | } | |||
| description | description | |||
| "Routing protocol reference that received the event."; | "Routing protocol reference for SRGB collision."; | |||
| } | } | |||
| leaf originating-rtr-id { | leaf originating-rtr-id { | |||
| type router-id; | type router-id; | |||
| description | description | |||
| "Originating router id of this SRGB block."; | "Originating Router ID of this SRGB block."; | |||
| } | } | |||
| } | ||||
| } | ||||
| notification segment-routing-global-sid-collision { | ||||
| description | ||||
| "This notification is sent when a new mapping is learned | ||||
| containing s mapping where the SID is already used. | ||||
| The notification generation must be throttled with at least | ||||
| a 5 second gap between notifications."; | ||||
| leaf received-target { | ||||
| type string; | ||||
| description | ||||
| "Target received in the router advertisement that caused | ||||
| the SID collision."; | ||||
| } | ||||
| leaf new-sid-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Router ID that advertised the conflicting SID."; | ||||
| } | ||||
| leaf original-target { | ||||
| type string; | ||||
| description | ||||
| "Target already available in the database with the same SID | ||||
| as the received target."; | ||||
| } | ||||
| leaf original-sid-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Router-ID for the router that originally advertised the | ||||
| conflicting SID, i.e., the instance in the database."; | ||||
| } | ||||
| leaf index { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the index used by two different prefixes."; | ||||
| } | ||||
| leaf routing-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference for conflicting SID."; | ||||
| } | ||||
| } | ||||
| notification segment-routing-index-out-of-range { | ||||
| description | ||||
| "This notification is sent when a binding is received | ||||
| containing a segment index which is out of the local | ||||
| configured ranges. The notification generation must be | ||||
| throttled with at least a 5 second gap between | ||||
| notifications."; | ||||
| leaf received-target { | ||||
| type string; | ||||
| description | ||||
| "Target received in the router advertisement with | ||||
| the out-of-range index."; | ||||
| } | } | |||
| } | leaf received-index { | |||
| notification segment-routing-global-sid-collision { | type uint32; | |||
| description | description | |||
| "This notification is sent when a new mapping is learned | "Value of the index received."; | |||
| , containing mapping | } | |||
| where the SID is already used. | leaf routing-protocol { | |||
| The notification generation must be throttled with at least | type leafref { | |||
| a 5 second gap. "; | path "/rt:routing/rt:control-plane-protocols/" | |||
| leaf received-target { | + "rt:control-plane-protocol/rt:name"; | |||
| type string; | } | |||
| description | description | |||
| "Target received in the controlplane that | "Routing protocol reference for out-of-range indexd."; | |||
| caused SID collision."; | } | |||
| } | } | |||
| leaf new-sid-rtr-id { | } | |||
| type router-id; | <CODE ENDS> | |||
| description | ||||
| "Router Id that advertising the conflicting SID."; | ||||
| } | ||||
| leaf original-target { | ||||
| type string; | ||||
| description | ||||
| "Target already available in database that have the same SID | ||||
| as the received target."; | ||||
| } | ||||
| leaf original-sid-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "Original router ID that advertised the conflicting SID."; | ||||
| } | ||||
| leaf index { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the index used by two different prefixes."; | ||||
| } | ||||
| leaf routing-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference that received the event."; | ||||
| } | ||||
| } | ||||
| notification segment-routing-index-out-of-range { | ||||
| description | ||||
| "This notification is sent when a binding | ||||
| is received, containing a segment index | ||||
| which is out of the local configured ranges. | ||||
| The notification generation must be throttled with at least | ||||
| a 5 second gap. "; | ||||
| leaf received-target { | ||||
| type string; | ||||
| description | ||||
| "Target received in the controlplane | ||||
| that caused SID collision."; | ||||
| } | ||||
| leaf received-index { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the index received."; | ||||
| } | ||||
| leaf routing-protocol { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference that received the event."; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 9. Security Considerations | 9. Security Considerations | |||
| TBD. | TBD. | |||
| 10. Acknowledgements | 10. Acknowledgements | |||
| Authors would like to thank Derek Yeung, Acee Lindem, Greg Hankins, | Authors would like to thank Derek Yeung, Acee Lindem, Greg Hankins, | |||
| Hannes Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge, Les | Hannes Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge, Les | |||
| Ginsberg for their contributions. | Ginsberg for their contributions. | |||
| skipping to change at page 29, line 7 ¶ | skipping to change at page 25, line 43 ¶ | |||
| 11. IANA Considerations | 11. IANA Considerations | |||
| TBD. | TBD. | |||
| 12. References | 12. References | |||
| 12.1. Normative References | 12.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | |||
| <https://www.rfc-editor.org/info/rfc2119>. | editor.org/info/rfc2119>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, <https://www.rfc- | |||
| <https://www.rfc-editor.org/info/rfc6020>. | editor.org/info/rfc6020>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <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>. | |||
| [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- | |||
| <https://www.rfc-editor.org/info/rfc8294>. | 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>. | |||
| [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8343>. | <https://www.rfc-editor.org/info/rfc8343>. | |||
| [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
| Routing Management (NMDA Version)", RFC 8349, | Routing Management (NMDA Version)", RFC 8349, | |||
| DOI 10.17487/RFC8349, March 2018, | DOI 10.17487/RFC8349, March 2018, <https://www.rfc- | |||
| <https://www.rfc-editor.org/info/rfc8349>. | editor.org/info/rfc8349>. | |||
| [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | |||
| Decraene, B., Litkowski, S., and R. Shakir, "Segment | Decraene, B., Litkowski, S., and R. Shakir, "Segment | |||
| Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | |||
| July 2018, <https://www.rfc-editor.org/info/rfc8402>. | July 2018, <https://www.rfc-editor.org/info/rfc8402>. | |||
| [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- | |||
| <https://www.rfc-editor.org/info/rfc8476>. | 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- | |||
| <https://www.rfc-editor.org/info/rfc8491>. | editor.org/info/rfc8491>. | |||
| 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 | |||
| Orange Business Service | Orange Business Service | |||
| Email: stephane.litkowski@orange.com | Email: stephane.litkowski@orange.com | |||
| Yingzhen Qu | Yingzhen Qu | |||
| Huawei | Huawei | |||
| Email: yingzhen.qu@huawei.com | Email: yingzhen.qu@huawei.com | |||
| Acee Lindem | ||||
| Cisco | ||||
| 301 Mindenhall Way | ||||
| Cary, NC 27513 | ||||
| US | ||||
| Email: acee@cisco.com | ||||
| Pushpasis Sarkar | Pushpasis Sarkar | |||
| Individual | Individual | |||
| Email: pushpasis.ietf@gmail.com | Email: pushpasis.ietf@gmail.com | |||
| Jeff Tantsura | Jeff Tantsura | |||
| Apstra | Apstra | |||
| Email: jefftant.ietf@gmail.com | Email: jefftant.ietf@gmail.com | |||
| Acee Lindem | ||||
| Cisco | ||||
| 301 Mindenhall Way | ||||
| Cary, NC 27513 | ||||
| US | ||||
| Email: acee@cisco.com | ||||
| End of changes. 62 change blocks. | ||||
| 928 lines changed or deleted | 779 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/ | ||||