| < draft-ietf-spring-sr-yang-04.txt | draft-ietf-spring-sr-yang-05.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: April 27, 2017 Cisco Systems | Expires: May 1, 2017 Cisco Systems | |||
| P. Sarkar | P. Sarkar | |||
| Juniper Networks | ||||
| J. Tantsura | J. Tantsura | |||
| Individual | Individual | |||
| October 24, 2016 | October 28, 2016 | |||
| YANG Data Model for Segment Routing | YANG Data Model for Segment Routing | |||
| draft-ietf-spring-sr-yang-04 | draft-ietf-spring-sr-yang-05 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model ([RFC6020], [RFC7950]) for | This document defines a YANG data model ([RFC6020], [RFC7950]) for | |||
| segment routing ([I-D.ietf-spring-segment-routing]) configuration and | segment routing ([I-D.ietf-spring-segment-routing]) configuration and | |||
| operation. This YANG model is intended to be used on network | operation. This YANG model is intended to be used on network | |||
| elements to configure or operate segment routing. This document | elements to configure or operate segment routing. This document | |||
| defines also generic containers that SHOULD be reused by IGP protocol | defines also generic containers that SHOULD be reused by IGP protocol | |||
| modules to support segment routing. | modules to support segment routing. | |||
| skipping to change at page 1, line 46 ¶ | skipping to change at page 1, line 45 ¶ | |||
| 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 http://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 April 27, 2017. | This Internet-Draft will expire on May 1, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
| (http://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 | |||
| skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
| 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 | |||
| 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. IGP Control plane configuration . . . . . . . . . . . . . . . 6 | 4. IGP Control plane configuration . . . . . . . . . . . . . . . 6 | |||
| 4.1. IGP interface configuration . . . . . . . . . . . . . . . 6 | 4.1. IGP interface configuration . . . . . . . . . . . . . . . 7 | |||
| 4.1.1. Adjacency SID properties . . . . . . . . . . . . . . 6 | 4.1.1. Adjacency SID properties . . . . . . . . . . . . . . 7 | |||
| 4.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 6 | 4.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 7 | 4.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 5. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 11. Normative References . . . . . . . . . . . . . . . . . . . . 25 | 11. Normative References . . . . . . . . . . . . . . . . . . . . 26 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | 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 3, line 38 ¶ | skipping to change at page 3, line 38 ¶ | |||
| 2. Design of the Data Model | 2. Design of the Data Model | |||
| As the module definition is just starting, it is expected that there | As the module definition is just starting, it is expected that there | |||
| will be changes as the module matures. | will be changes as the module matures. | |||
| module: ietf-segment-routing | module: ietf-segment-routing | |||
| augment /rt:routing: | augment /rt:routing: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| +--rw transport-type? identityref | +--rw transport-type? identityref | |||
| +--rw msd {msd}? | ||||
| | +--rw node-msd? uint8 | ||||
| | +--rw link-msd | ||||
| | +--rw link-msds* [interface] | ||||
| | +--rw interface if:interface-ref | ||||
| | +--rw msd? uint8 | ||||
| +--rw bindings | +--rw bindings | |||
| | +--rw mapping-server {mapping-server}? | | +--rw mapping-server {mapping-server}? | |||
| | | +--rw policy* [name] | | | +--rw policy* [name] | |||
| | | +--rw name string | | | +--rw name string | |||
| | | +--rw ipv4 | | | +--rw ipv4 | |||
| | | | +--rw mapping-entry* [prefix algorithm] | | | | +--rw mapping-entry* [prefix algorithm] | |||
| | | | +--rw prefix inet:ipv4-prefix | | | | +--rw prefix inet:ipv4-prefix | |||
| | | | +--rw value-type? enumeration | | | | +--rw value-type? enumeration | |||
| | | | +--rw start-sid uint32 | | | | +--rw start-sid uint32 | |||
| | | | +--rw range? uint32 | | | | +--rw range? uint32 | |||
| skipping to change at page 4, line 33 ¶ | skipping to change at page 4, line 39 ¶ | |||
| | +--rw last-hop-behavior? enumeration {sid-last-hop-behavior}? | | +--rw last-hop-behavior? enumeration {sid-last-hop-behavior}? | |||
| +--rw global-srgb | +--rw global-srgb | |||
| +--rw srgb* [lower-bound upper-bound] | +--rw srgb* [lower-bound upper-bound] | |||
| +--rw lower-bound uint32 | +--rw lower-bound uint32 | |||
| +--rw upper-bound uint32 | +--rw upper-bound uint32 | |||
| augment /rt:routing-state: | augment /rt:routing-state: | |||
| +--ro segment-routing | +--ro segment-routing | |||
| +--ro node-capabilities | +--ro node-capabilities | |||
| | +--ro transport-planes* [transport-plane] | | +--ro transport-planes* [transport-plane] | |||
| | | +--ro transport-plane identityref | | | +--ro transport-plane identityref | |||
| | +--ro segment-stack-push-limit? uint8 | ||||
| | +--ro readable-label-stack-depth? uint8 | | +--ro readable-label-stack-depth? uint8 | |||
| +--ro msd | ||||
| | +--ro node-msd? uint8 | ||||
| | +--ro link-msd | ||||
| | +--ro link-msds* [interface] | ||||
| | +--ro interface if:interface-ref | ||||
| | +--ro msd? uint8 | ||||
| +--ro label-blocks* | +--ro label-blocks* | |||
| | +--ro lower-bound? uint32 | | +--ro lower-bound? uint32 | |||
| | +--ro upper-bound? uint32 | | +--ro upper-bound? uint32 | |||
| | +--ro size? uint32 | | +--ro size? uint32 | |||
| | +--ro free? uint32 | | +--ro free? uint32 | |||
| | +--ro used? uint32 | | +--ro used? uint32 | |||
| +--ro global-sid-list | +--ro global-sid-list | |||
| +--ro sid* [target sid source source-protocol binding-type] | +--ro sid* [target sid source source-protocol binding-type] | |||
| +--ro target string | +--ro target string | |||
| +--ro sid uint32 | +--ro sid uint32 | |||
| skipping to change at page 8, line 27 ¶ | skipping to change at page 8, line 40 ¶ | |||
| advertised index is already associated with another target (in | advertised index is already associated with another target (in | |||
| this version, the only defined targets are IPv4 and IPv6 | this version, the only defined targets are IPv4 and IPv6 | |||
| prefixes). | prefixes). | |||
| o segment-routing-index-out-of-range: Raised when a control plane | o segment-routing-index-out-of-range: Raised when a control plane | |||
| advertised index fall outside the range of SRGBs configured for | advertised index fall outside the range of SRGBs configured for | |||
| the network device. | the network device. | |||
| 7. YANG Module | 7. YANG Module | |||
| <CODE BEGINS> file "ietf-segment-routing-common@2016-10-24.yang" | <CODE BEGINS> file "ietf-segment-routing-common@2016-10-28.yang" | |||
| module ietf-segment-routing-common { | module ietf-segment-routing-common { | |||
| namespace "urn:ietf:params:xml:ns:" | namespace "urn:ietf:params:xml:ns:" | |||
| + "yang:ietf-segment-routing-common"; | + "yang:ietf-segment-routing-common"; | |||
| prefix sr-cmn; | prefix sr-cmn; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| } | } | |||
| organization | organization | |||
| "IETF SPRING Working Group"; | "IETF SPRING Working Group"; | |||
| contact | contact | |||
| "WG List: <mailto:spring@ietf.org> | "WG List: <mailto:spring@ietf.org> | |||
| Editor: Stephane Litkowski | Editor: Stephane Litkowski | |||
| <mailto:stephane.litkowski@orange.com> | <mailto:stephane.litkowski@orange.com> | |||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Author: Yingzhen Qu | Author: Yingzhen Qu | |||
| <mailto:yiqu@cisco.com> | <mailto:yiqu@cisco.com> | |||
| Author: Pushpasis Sarkar | Author: Pushpasis Sarkar | |||
| <mailto:psarkar@juniper.net> | <mailto:pushpasis.ietf@gmail.com> | |||
| Author: Ing-Wher Chen | Author: Jeff Tantsura | |||
| <mailto:ing-wher.chen@ericsson.com> | <jefftant.ietf@gmail.com> | |||
| Author: Jeff Tantsura | ||||
| <jeff.tantsura@ericsson.com> | ||||
| "; | "; | |||
| description | description | |||
| "The YANG module defines a collection of types and groupings for | "The YANG module defines a collection of types and groupings for | |||
| Segment routing."; | Segment routing."; | |||
| revision 2016-10-24 { | revision 2016-10-28 { | |||
| description "Initial"; | description " | |||
| reference | * Add support of MSD (Maximum SID Depth) | |||
| "RFC XXXX: YANG Data Model for Segment Routing."; | * Update contact info | |||
| } | "; | |||
| reference | ||||
| "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| /* Identities */ | revision 2016-10-24 { | |||
| identity segment-routing-transport { | description "Initial"; | |||
| description | reference | |||
| "Base identity for segment routing transport."; | "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | } | |||
| identity segment-routing-transport-mpls { | ||||
| base segment-routing-transport; | ||||
| description | ||||
| "This identity represents MPLS transport for segment | ||||
| routing."; | ||||
| } | ||||
| identity prefix-sid-algorithm { | /* Identities */ | |||
| description | identity segment-routing-transport { | |||
| "Base identity for prefix-sid algorithm."; | 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 prefix-sid-algorithm { | ||||
| description | ||||
| "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 | |||
| "The default behavior of prefix-sid algorithm."; | "The default behavior of prefix-sid algorithm."; | |||
| } | } | |||
| 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 forwared | "This algorithm mandates that the packet is forwared | |||
| according to ECMP-aware SPF algorithm."; | according to ECMP-aware SPF algorithm."; | |||
| } | } | |||
| /* Features */ | /* Features */ | |||
| feature sid-last-hop-behavior { | ||||
| description | ||||
| "Configurable last hop behavior."; | ||||
| } | ||||
| /* Groupings */ | feature sid-last-hop-behavior { | |||
| description | ||||
| "Configurable last hop behavior."; | ||||
| } | ||||
| grouping srgb-cfg { | /* Groupings */ | |||
| list srgb { | ||||
| key "lower-bound upper-bound"; | ||||
| ordered-by user; | ||||
| leaf lower-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Lower value in the block."; | ||||
| } | ||||
| leaf upper-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Upper value in the block."; | ||||
| } | ||||
| description | ||||
| "List of global blocks to be | ||||
| advertised."; | ||||
| } | ||||
| description | ||||
| "Grouping for SRGB configuration."; | ||||
| } | ||||
| grouping sid-value-type { | grouping srgb-cfg { | |||
| leaf value-type { | list srgb { | |||
| type enumeration { | key "lower-bound upper-bound"; | |||
| enum index { | ordered-by user; | |||
| description | leaf lower-bound { | |||
| "The value will be | type uint32; | |||
| interpreted as an index."; | description | |||
| } | "Lower value in the block."; | |||
| enum absolute { | } | |||
| description | leaf upper-bound { | |||
| "The value will become | type uint32; | |||
| interpreted as an absolute | description | |||
| value."; | "Upper value in the block."; | |||
| } | } | |||
| } | description | |||
| default index; | "List of global blocks to be | |||
| description | advertised."; | |||
| "This leaf defines how value | } | |||
| must be interpreted."; | description | |||
| "Grouping for SRGB configuration."; | ||||
| } | ||||
| grouping sid-value-type { | ||||
| leaf value-type { | ||||
| type enumeration { | ||||
| enum index { | ||||
| description | ||||
| "The value will be | ||||
| interpreted as an index."; | ||||
| } | ||||
| enum absolute { | ||||
| description | ||||
| "The value will become | ||||
| interpreted as an absolute | ||||
| value."; | ||||
| } | ||||
| } | ||||
| default index; | ||||
| description | ||||
| "This leaf defines how value | ||||
| must be interpreted."; | ||||
| } | ||||
| description | ||||
| "Defines how the SID value is expressed."; | ||||
| } | ||||
| } | grouping ipv4-sid-cfg { | |||
| description | ||||
| "Defines how the SID value is expressed."; | ||||
| } | ||||
| grouping ipv4-sid-cfg { | leaf prefix { | |||
| type inet:ipv4-prefix; | ||||
| description | ||||
| "connected prefix sid."; | ||||
| } | ||||
| leaf prefix { | uses prefix-sid-attributes; | |||
| type inet:ipv4-prefix; | ||||
| description | ||||
| "connected prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | description | |||
| "This grouping defines cfg of prefix SID."; | ||||
| } | ||||
| description | grouping ipv6-sid-cfg { | |||
| "This grouping defines cfg of prefix SID."; | leaf prefix { | |||
| } | type inet:ipv6-prefix; | |||
| description | ||||
| "connected prefix sid."; | ||||
| } | ||||
| grouping ipv6-sid-cfg { | uses prefix-sid-attributes; | |||
| leaf prefix { | ||||
| type inet:ipv6-prefix; | ||||
| description | ||||
| "connected prefix sid."; | ||||
| } | ||||
| uses prefix-sid-attributes; | description | |||
| "This grouping defines cfg of prefix SID."; | ||||
| } | ||||
| description | grouping last-hop-behavior { | |||
| "This grouping defines cfg of prefix SID."; | leaf last-hop-behavior { | |||
| } | if-feature sid-last-hop-behavior; | |||
| type enumeration { | ||||
| enum explicit-null { | ||||
| description | ||||
| "Use explicit-null for the SID."; | ||||
| } | ||||
| enum no-php { | ||||
| description | ||||
| "Do no use PHP for the SID."; | ||||
| } | ||||
| enum php { | ||||
| description | ||||
| "Use PHP for the SID."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Configure last hop behavior."; | ||||
| } | ||||
| description | ||||
| "Defines last hop behavior"; | ||||
| } | ||||
| grouping last-hop-behavior { | grouping node-capabilities { | |||
| leaf last-hop-behavior { | description "Containing SR node capabilities."; | |||
| if-feature sid-last-hop-behavior; | container node-capabilities { | |||
| type enumeration { | list transport-planes { | |||
| enum explicit-null { | key transport-plane; | |||
| description | leaf transport-plane { | |||
| "Use explicit-null for the SID."; | type identityref { | |||
| } | base segment-routing-transport; | |||
| enum no-php { | } | |||
| description | description | |||
| "Do no use PHP for the SID."; | "Transport plane supported"; | |||
| } | } | |||
| enum php { | description | |||
| description | "List of supported transport planes."; | |||
| "Use PHP for the SID."; | } | |||
| } | leaf readable-label-stack-depth { | |||
| type uint8; | ||||
| description | ||||
| "Number of MPLS labels that | ||||
| can be read in the stack."; | ||||
| } | ||||
| description | ||||
| "Shows the SR capability of the node."; | ||||
| } // node-capabilities | ||||
| } // sr-node-capabilities | ||||
| } | grouping prefix-sid-attributes { | |||
| description | description "Containing SR attributes for a prefix."; | |||
| "Configure last hop behavior."; | ||||
| } | ||||
| description | ||||
| "Defines last hop behavior"; | ||||
| } | ||||
| grouping node-capabilities { | uses sid-value-type; | |||
| description "Containing SR node capabilities."; | leaf start-sid { | |||
| container node-capabilities { | type uint32; | |||
| list transport-planes { | mandatory true; | |||
| key transport-plane; | description | |||
| leaf transport-plane { | "Value associated with | |||
| type identityref { | prefix. The value must | |||
| base segment-routing-transport; | be interpreted in the | |||
| } | context of value-type."; | |||
| description | } | |||
| "Transport plane supported"; | ||||
| } | ||||
| description | ||||
| "List of supported transport planes."; | ||||
| } | ||||
| leaf segment-stack-push-limit { | ||||
| type uint8; | ||||
| description | ||||
| "Describes the number of segments | ||||
| that can be pushed by the node."; | ||||
| } | ||||
| leaf readable-label-stack-depth { | ||||
| type uint8; | ||||
| description | ||||
| "Number of MPLS labels that | ||||
| can be read in the stack."; | ||||
| } | ||||
| description | ||||
| "Shows the SR capability of the node."; | ||||
| } // node-capabilities | ||||
| } // sr-node-capabilities | ||||
| grouping prefix-sid-attributes { | leaf range { | |||
| description "Containing SR attributes for a prefix."; | type uint32; | |||
| description | ||||
| "Describes how many SIDs could be | ||||
| allocated."; | ||||
| } | ||||
| uses sid-value-type; | leaf algorithm { | |||
| leaf start-sid { | type identityref { | |||
| type uint32; | base prefix-sid-algorithm; | |||
| mandatory true; | } | |||
| description | description "Prefix-sid algorithm."; | |||
| "Value associated with | } | |||
| prefix. The value must | } //prefix-sid-attributes | |||
| be interpreted in the | } | |||
| context of value-type."; | <CODE ENDS> | |||
| } | <CODE BEGINS> file "ietf-segment-routing@2016-10-28.yang" | |||
| module ietf-segment-routing { | ||||
| namespace "urn:ietf:params:xml:ns:" | ||||
| + "yang:ietf-segment-routing"; | ||||
| prefix sr; | ||||
| leaf range { | import ietf-inet-types { | |||
| type uint32; | prefix "inet"; | |||
| description | } | |||
| "Describes how many SIDs could be | ||||
| allocated."; | ||||
| } | ||||
| leaf algorithm { | import ietf-yang-types { | |||
| type identityref { | prefix "yang"; | |||
| base prefix-sid-algorithm; | } | |||
| } | import ietf-routing { | |||
| description "Prefix-sid algorithm."; | prefix "rt"; | |||
| } | } | |||
| } //prefix-sid-attributes | ||||
| } | ||||
| <CODE ENDS> | ||||
| <CODE BEGINS> file "ietf-segment-routing@2016-10-24.yang" | ||||
| module ietf-segment-routing { | ||||
| namespace "urn:ietf:params:xml:ns:" | ||||
| + "yang:ietf-segment-routing"; | ||||
| prefix sr; | ||||
| import ietf-inet-types { | import ietf-interfaces { | |||
| prefix "inet"; | prefix "if"; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-segment-routing-common { | |||
| prefix "yang"; | prefix "sr-cmn"; | |||
| } | } | |||
| import ietf-routing { | organization | |||
| prefix "rt"; | "IETF SPRING Working Group"; | |||
| } | ||||
| import ietf-segment-routing-common { | contact | |||
| prefix "sr-cmn"; | "WG List: <mailto:spring@ietf.org> | |||
| } | ||||
| organization | Editor: Stephane Litkowski | |||
| "IETF SPRING Working Group"; | <mailto:stephane.litkowski@orange.com> | |||
| contact | Author: Acee Lindem | |||
| "WG List: <mailto:spring@ietf.org> | <mailto:acee@cisco.com> | |||
| Author: Yingzhen Qu | ||||
| <mailto:yiqu@cisco.com> | ||||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Jeff Tantsura | ||||
| <jefftant.ietf@gmail.com> | ||||
| Editor: Stephane Litkowski | "; | |||
| <mailto:stephane.litkowski@orange.com> | ||||
| Author: Acee Lindem | description | |||
| <mailto:acee@cisco.com> | "The YANG module defines a generic configuration model for | |||
| Author: Yingzhen Qu | Segment routing common across all of the vendor | |||
| <mailto:yiqu@cisco.com> | implementations."; | |||
| Author: Pushpasis Sarkar | ||||
| <mailto:psarkar@juniper.net> | ||||
| Author: Ing-Wher Chen | ||||
| <mailto:ing-wher.chen@ericsson.com> | ||||
| Author: Jeff Tantsura | ||||
| <jeff.tantsura@ericsson.com> | ||||
| "; | revision 2016-10-28 { | |||
| description " | ||||
| * Add support of MSD (Maximum SID Depth) | ||||
| * Update contact info | ||||
| "; | ||||
| reference | ||||
| "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| description | revision 2016-10-24 { | |||
| "The YANG module defines a generic configuration model for | description " | |||
| Segment routing common across all of the vendor | * Moved common SR types and groupings to a seperate module | |||
| implementations."; | "; | |||
| 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"; | ||||
| } | ||||
| revision 2016-10-24 { | /* Features */ | |||
| 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"; | ||||
| } | ||||
| /* Features */ | feature mapping-server { | |||
| description | ||||
| "Support of SRMS."; | ||||
| } | ||||
| feature mapping-server { | feature protocol-srgb { | |||
| description | description | |||
| "Support of SRMS."; | "Support per-protocol srgb configuration."; | |||
| } | } | |||
| feature protocol-srgb { | feature msd { | |||
| description | description | |||
| "Support per-protocol srgb configuration."; | "Support of signaling MSD (Maximum SID Depth) in IGP."; | |||
| } | } | |||
| /* Type Definitions */ | /* Type Definitions */ | |||
| typedef system-id { | typedef system-id { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.00'; | '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.00'; | |||
| } | } | |||
| description | description | |||
| "This type defines ISIS system id using pattern, | "This type defines ISIS system id using pattern, | |||
| system id looks like : 0143.0438.AeF0.00"; | system id looks like : 0143.0438.AeF0.00"; | |||
| } | } | |||
| typedef router-id { | typedef router-id { | |||
| type union { | type union { | |||
| type system-id; | type system-id; | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| } | } | |||
| description | description | |||
| "OSPF/BGP router id or ISIS system ID."; | "OSPF/BGP router id or ISIS system ID."; | |||
| } | } | |||
| /* Groupings */ | /* Groupings */ | |||
| grouping controlplane-cfg { | grouping controlplane-cfg { | |||
| container segment-routing { | container segment-routing { | |||
| 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 { | |||
| container advertise { | container advertise { | |||
| leaf-list policies { | leaf-list policies { | |||
| type string; | type string; | |||
| description | description | |||
| "List of policies to be advertised."; | "List of policies to be advertised."; | |||
| } | } | |||
| description | description | |||
| "Authorize the advertise | "Authorize the advertise | |||
| of local mappings in binding TLV."; | of local mappings in binding TLV."; | |||
| } | } | |||
| leaf receive { | leaf receive { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Authorize the reception and usage | "Authorize the reception and usage | |||
| of binding TLV."; | of binding TLV."; | |||
| } | } | |||
| description | description | |||
| "Control of binding advertisement | "Control of binding advertisement | |||
| and reception."; | and reception."; | |||
| } | } | |||
| description | ||||
| "segment routing global config."; | ||||
| } | ||||
| description | ||||
| "Defines protocol configuration."; | ||||
| } | ||||
| grouping igp-interface-cfg { | description | |||
| container segment-routing { | "segment routing global config."; | |||
| } | ||||
| description | ||||
| "Defines protocol configuration."; | ||||
| } | ||||
| container adjacency-sid { | grouping igp-interface-cfg { | |||
| list advertise-adj-group-sid { | container segment-routing { | |||
| key group-id; | ||||
| leaf group-id { | container adjacency-sid { | |||
| type uint32; | list advertise-adj-group-sid { | |||
| description | key group-id; | |||
| "The value is an internal value to identify | ||||
| a group-ID. Interfaces with the same | ||||
| group-ID will be bundled together."; | ||||
| } | ||||
| description | ||||
| "Control advertisement of S flag. | ||||
| Enable to advertise a common Adj-SID | ||||
| for parallel links."; | ||||
| } | ||||
| 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 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."; | ||||
| } | ||||
| description | ||||
| "Defines the adjacency SID properties."; | ||||
| } | ||||
| description | ||||
| "container for SR interface cfg."; | ||||
| } | ||||
| description | ||||
| "Grouping for IGP interface cfg."; | ||||
| } | ||||
| /* Cfg */ | 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."; | ||||
| augment "/rt:routing" { | } | |||
| description | description | |||
| "This augments routing-instance | "Control advertisement of S flag. | |||
| configuration with segment-routing."; | Enable to advertise a common Adj-SID | |||
| container segment-routing { | for parallel links."; | |||
| leaf transport-type { | } | |||
| type identityref { | leaf advertise-protection { | |||
| base sr-cmn:segment-routing-transport; | type enumeration { | |||
| } | enum "single" { | |||
| default "sr-cmn:segment-routing-transport-mpls"; | description | |||
| description "Dataplane to be used."; | "A single Adj-SID is associated | |||
| } | with the adjacency and reflects | |||
| container bindings { | the protection configuration."; | |||
| container mapping-server { | } | |||
| if-feature mapping-server; | enum "dual" { | |||
| list policy { | description | |||
| key name; | "Two Adj-SIDs will be associated | |||
| leaf name { | with the adjacency if interface | |||
| type string; | is protected. In this case | |||
| description | one will be enforced with | |||
| "Name of the mapping policy."; | backup flag set, the other | |||
| } | will be enforced to backup flag unset. | |||
| container ipv4 { | In case, protection is not configured, | |||
| list mapping-entry { | a single Adj-SID will be advertised | |||
| key "prefix algorithm"; | with backup flag unset."; | |||
| uses sr-cmn:ipv4-sid-cfg; | } | |||
| } | ||||
| description | ||||
| "If set, the Adj-SID refers to an | ||||
| adjacency being protected."; | ||||
| } | ||||
| description | ||||
| "Defines the adjacency SID properties."; | ||||
| } | ||||
| description | ||||
| "container for SR interface cfg."; | ||||
| } | ||||
| description | ||||
| "Grouping for IGP interface cfg."; | ||||
| } | ||||
| description | grouping msd-cfg { | |||
| "Mapping entries."; | leaf node-msd { | |||
| } | type uint8; | |||
| description | description | |||
| "IPv4 mapping entries."; | "Node MSD is the lowest MSD supported by the node."; | |||
| } | } | |||
| container ipv6 { | container link-msd { | |||
| list mapping-entry { | list link-msds { | |||
| key "prefix algorithm"; | key interface; | |||
| uses sr-cmn:ipv6-sid-cfg; | leaf interface { | |||
| description | type if:interface-ref; | |||
| "Mapping entries."; | description | |||
| } | "Name of the interface."; | |||
| description | } | |||
| "IPv6 mapping entries."; | leaf msd { | |||
| } | type uint8; | |||
| description | description | |||
| "Definition of mapping policy."; | "SID depth of the interface associated with the link."; | |||
| } | } | |||
| description | description | |||
| "Configuration of mapping-server | "List of link MSDs."; | |||
| local entries."; | } | |||
| } | description | |||
| container connected-prefix-sid-map { | "Link MSD is a number represetns the particular link MSD value."; | |||
| container ipv4 { | } | |||
| list ipv4-prefix-sid { | description | |||
| key "prefix algorithm"; | "MSD configuration grouping."; | |||
| uses sr-cmn:ipv4-sid-cfg; | } | |||
| uses sr-cmn:last-hop-behavior; | ||||
| description | ||||
| "List of prefix SID | ||||
| mapped to IPv4 local prefixes."; | ||||
| } | ||||
| description | ||||
| "Parameters associated with IPv4 prefix SID"; | ||||
| } | ||||
| container ipv6 { | ||||
| list ipv6-prefix-sid { | ||||
| key "prefix algorithm"; | ||||
| uses sr-cmn:ipv6-sid-cfg; | ||||
| uses sr-cmn:last-hop-behavior; | ||||
| description | ||||
| "List of prefix SID | ||||
| mapped to IPv6 local prefixes."; | ||||
| } | ||||
| description | ||||
| "Parameters associated with IPv6 prefix SID"; | ||||
| } | ||||
| description | ||||
| "Prefix SID configuration."; | ||||
| } | ||||
| description | ||||
| "List of bindings."; | ||||
| } | ||||
| container global-srgb { | ||||
| uses sr-cmn:srgb-cfg; | ||||
| description | ||||
| "Global SRGB configuration."; | ||||
| } | ||||
| description | ||||
| "segment routing global config."; | ||||
| } | ||||
| } | ||||
| /* Operational states */ | /* Cfg */ | |||
| augment "/rt:routing-state" { | augment "/rt:routing" { | |||
| description | description | |||
| "This augments the operational states | "This augments routing-instance | |||
| with segment-routing."; | configuration with segment-routing."; | |||
| container segment-routing { | container segment-routing { | |||
| uses sr-cmn:node-capabilities; | leaf transport-type { | |||
| list label-blocks { | type identityref { | |||
| leaf lower-bound { | base sr-cmn:segment-routing-transport; | |||
| type uint32; | } | |||
| description | default "sr-cmn:segment-routing-transport-mpls"; | |||
| "Lower bound of the label block."; | description "Dataplane to be used."; | |||
| } | } | |||
| leaf upper-bound { | container msd { | |||
| type uint32; | if-feature msd; | |||
| description | uses msd-cfg; | |||
| "Upper bound of the label block."; | description | |||
| } | "MSD configuration."; | |||
| leaf size { | } | |||
| type uint32; | container bindings { | |||
| description | container mapping-server { | |||
| "Number of indexes in the block."; | if-feature mapping-server; | |||
| } | list policy { | |||
| leaf free { | key name; | |||
| type uint32; | leaf name { | |||
| description | type string; | |||
| "Number of indexes free in the block."; | description | |||
| } | "Name of the mapping policy."; | |||
| leaf used { | } | |||
| type uint32; | container ipv4 { | |||
| description | list mapping-entry { | |||
| "Number of indexes used in the block."; | key "prefix algorithm"; | |||
| } | uses sr-cmn:ipv4-sid-cfg; | |||
| description | ||||
| "List of labels blocks currently | ||||
| in use."; | ||||
| } | description | |||
| "Mapping entries."; | ||||
| } | ||||
| description | ||||
| "IPv4 mapping entries."; | ||||
| } | ||||
| container ipv6 { | ||||
| list mapping-entry { | ||||
| key "prefix algorithm"; | ||||
| uses sr-cmn:ipv6-sid-cfg; | ||||
| description | ||||
| "Mapping entries."; | ||||
| } | ||||
| description | ||||
| "IPv6 mapping entries."; | ||||
| } | ||||
| description | ||||
| "Definition of mapping policy."; | ||||
| } | ||||
| description | ||||
| "Configuration of mapping-server | ||||
| local entries."; | ||||
| } | ||||
| container connected-prefix-sid-map { | ||||
| container ipv4 { | ||||
| list ipv4-prefix-sid { | ||||
| key "prefix algorithm"; | ||||
| uses sr-cmn:ipv4-sid-cfg; | ||||
| uses sr-cmn:last-hop-behavior; | ||||
| description | ||||
| "List of prefix SID | ||||
| mapped to IPv4 local prefixes."; | ||||
| } | ||||
| description | ||||
| "Parameters associated with IPv4 prefix SID"; | ||||
| } | ||||
| container ipv6 { | ||||
| list ipv6-prefix-sid { | ||||
| key "prefix algorithm"; | ||||
| uses sr-cmn:ipv6-sid-cfg; | ||||
| uses sr-cmn:last-hop-behavior; | ||||
| description | ||||
| "List of prefix SID | ||||
| mapped to IPv6 local prefixes."; | ||||
| } | ||||
| description | ||||
| "Parameters associated with IPv6 prefix SID"; | ||||
| } | ||||
| description | ||||
| "Prefix SID configuration."; | ||||
| } | ||||
| description | ||||
| "List of bindings."; | ||||
| } | ||||
| container global-srgb { | ||||
| uses sr-cmn:srgb-cfg; | ||||
| description | ||||
| "Global SRGB configuration."; | ||||
| } | ||||
| description | ||||
| "segment routing global config."; | ||||
| } | ||||
| } | ||||
| container global-sid-list { | /* Operational states */ | |||
| list sid { | ||||
| key "target sid source source-protocol binding-type"; | ||||
| ordered-by system; | ||||
| 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-state/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."; | ||||
| } | ||||
| description | ||||
| "Binding."; | ||||
| } | augment "/rt:routing-state" { | |||
| description | description | |||
| "List of prefix and SID associations."; | "This augments the operational states | |||
| } | with segment-routing."; | |||
| description | container segment-routing { | |||
| "Segment routing operational states."; | uses sr-cmn:node-capabilities; | |||
| } | container msd { | |||
| } | uses msd-cfg; | |||
| description | ||||
| "MSD configuration state."; | ||||
| } | ||||
| list label-blocks { | ||||
| 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."; | ||||
| } | ||||
| description | ||||
| "List of labels blocks currently | ||||
| in use."; | ||||
| } | ||||
| /* Notifications */ | container global-sid-list { | |||
| list sid { | ||||
| key "target sid source source-protocol binding-type"; | ||||
| ordered-by system; | ||||
| 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-state/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."; | ||||
| } | ||||
| description | ||||
| "Binding."; | ||||
| notification segment-routing-global-srgb-collision { | } | |||
| list srgb-collisions { | description | |||
| leaf lower-bound { | "List of prefix and SID associations."; | |||
| type uint32; | } | |||
| description | description | |||
| "Lower value in the block."; | "Segment routing operational states."; | |||
| } | } | |||
| leaf upper-bound { | } | |||
| type uint32; | ||||
| description | /* Notifications */ | |||
| "Upper value in the block."; | ||||
| } | notification segment-routing-global-srgb-collision { | |||
| leaf routing-protocol { | list srgb-collisions { | |||
| type leafref { | leaf lower-bound { | |||
| path "/rt:routing-state/rt:control-plane-protocols/" | type uint32; | |||
| + "rt:control-plane-protocol/rt:name"; | description | |||
| } | "Lower value in the block."; | |||
| description | } | |||
| "Routing protocol reference that received the event."; | leaf upper-bound { | |||
| } | type uint32; | |||
| leaf originating-rtr-id { | description | |||
| type router-id; | "Upper value in the block."; | |||
| description | } | |||
| "Originating router id of this SRGB block."; | leaf routing-protocol { | |||
| } | type leafref { | |||
| description | path "/rt:routing-state/rt:control-plane-protocols/" | |||
| "List of SRGB blocks that conflict."; | + "rt:control-plane-protocol/rt:name"; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when received SRGB blocks from | ||||
| a router conflict."; | ||||
| } | ||||
| notification segment-routing-global-sid-collision { | ||||
| leaf received-target { | ||||
| type string; | ||||
| description | ||||
| "Target received in the controlplane that | ||||
| caused SID collision."; | ||||
| } | ||||
| leaf new-sid-rtr-id { | ||||
| type router-id; | ||||
| 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-state/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference that received the event."; | ||||
| } | ||||
| description | ||||
| "This notification is sent when a new mapping is learned | ||||
| , containing mapping | ||||
| where the SID is already used. | ||||
| The notification generation must be throttled with at least | ||||
| a 5 second gap. "; | ||||
| } | ||||
| notification segment-routing-index-out-of-range { | ||||
| 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-state/rt:control-plane-protocols/" + | ||||
| "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference that received the event."; | "Routing protocol reference that received the event."; | |||
| } | } | |||
| description | leaf originating-rtr-id { | |||
| "This notification is sent when a binding | type router-id; | |||
| is received, containing a segment index | description | |||
| which is out of the local configured ranges. | "Originating router id of this SRGB block."; | |||
| The notification generation must be throttled with at least | } | |||
| a 5 second gap. "; | description | |||
| } | "List of SRGB blocks that conflict."; | |||
| } | ||||
| description | ||||
| "This notification is sent when received SRGB blocks from | ||||
| a router conflict."; | ||||
| } | ||||
| notification segment-routing-global-sid-collision { | ||||
| leaf received-target { | ||||
| type string; | ||||
| description | ||||
| "Target received in the controlplane that | ||||
| caused SID collision."; | ||||
| } | ||||
| leaf new-sid-rtr-id { | ||||
| type router-id; | ||||
| 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."; | ||||
| } | } | |||
| <CODE ENDS> | 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-state/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference that received the event."; | ||||
| } | ||||
| description | ||||
| "This notification is sent when a new mapping is learned | ||||
| , containing mapping | ||||
| where the SID is already used. | ||||
| The notification generation must be throttled with at least | ||||
| a 5 second gap. "; | ||||
| } | ||||
| notification segment-routing-index-out-of-range { | ||||
| 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-state/rt:control-plane-protocols/" + | ||||
| "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference that received the event."; | ||||
| } | ||||
| 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. "; | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| TBD. | TBD. | |||
| 9. Acknowledgements | 9. 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 for their | Hannes Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge for their | |||
| contributions. | contributions. | |||
| skipping to change at page 25, line 16 ¶ | skipping to change at page 26, line 33 ¶ | |||
| TBD. | TBD. | |||
| 11. Normative References | 11. Normative References | |||
| [I-D.ietf-spring-segment-routing] | [I-D.ietf-spring-segment-routing] | |||
| Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., | Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., | |||
| and R. Shakir, "Segment Routing Architecture", draft-ietf- | and R. Shakir, "Segment Routing Architecture", draft-ietf- | |||
| spring-segment-routing-09 (work in progress), July 2016. | spring-segment-routing-09 (work in progress), July 2016. | |||
| [I-D.tantsura-isis-segment-routing-msd] | ||||
| Tantsura, J. and U. Chunduri, "Signaling MSD (Maximum SID | ||||
| Depth) using IS-IS", draft-tantsura-isis-segment-routing- | ||||
| msd-02 (work in progress), September 2016. | ||||
| [I-D.tantsura-ospf-segment-routing-msd] | ||||
| Tantsura, J. and U. Chunduri, "Signaling MSD (Maximum SID | ||||
| Depth) using OSPF", draft-tantsura-ospf-segment-routing- | ||||
| msd-01 (work in progress), September 2016. | ||||
| [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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | |||
| Network Configuration Protocol (NETCONF)", RFC 6020, | Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| October 2010. | October 2010. | |||
| [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, August 2016. | RFC 7950, August 2016. | |||
| skipping to change at page 25, line 39 ¶ | skipping to change at page 27, line 18 ¶ | |||
| Orange Business Service | Orange Business Service | |||
| Email: stephane.litkowski@orange.com | Email: stephane.litkowski@orange.com | |||
| Yingzhen Qu | Yingzhen Qu | |||
| Cisco Systems | Cisco Systems | |||
| Email: yiqu@cisco.com | Email: yiqu@cisco.com | |||
| Pushpasis Sarkar | Pushpasis Sarkar | |||
| Juniper Networks | Individual | |||
| Email: psarkar@juniper.net | Email: pushpasis.ietf@gmail.com | |||
| Jeff Tantsura | Jeff Tantsura | |||
| Individual | Individual | |||
| Email: jefftant.ietf@gmail.com | Email: jefftant.ietf@gmail.com | |||
| End of changes. 80 change blocks. | ||||
| 732 lines changed or deleted | 806 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/ | ||||