| < draft-ietf-spring-sr-yang-06.txt | draft-ietf-spring-sr-yang-07.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: September 11, 2017 Huawei | Expires: January 2, 2018 Huawei | |||
| P. Sarkar | P. Sarkar | |||
| J. Tantsura | J. Tantsura | |||
| Individual | Individual | |||
| March 10, 2017 | July 01, 2017 | |||
| YANG Data Model for Segment Routing | YANG Data Model for Segment Routing | |||
| draft-ietf-spring-sr-yang-06 | draft-ietf-spring-sr-yang-07 | |||
| 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 45 ¶ | 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 September 11, 2017. | This Internet-Draft will expire on January 2, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 28 ¶ | skipping to change at page 2, line 28 ¶ | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. IGP Control plane configuration . . . . . . . . . . . . . . . 7 | 4. IGP Control plane configuration . . . . . . . . . . . . . . . 7 | |||
| 4.1. IGP interface configuration . . . . . . . . . . . . . . . 7 | 4.1. IGP interface configuration . . . . . . . . . . . . . . . 7 | |||
| 4.1.1. Adjacency SID properties . . . . . . . . . . . . . . 8 | 4.1.1. Adjacency SID properties . . . . . . . . . . . . . . 7 | |||
| 4.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 8 | 4.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 8 | 4.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 5. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 11. Normative References . . . . . . . . . . . . . . . . . . . . 28 | 11. Normative References . . . . . . . . . . . . . . . . . . . . 29 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 1. Introduction | 1. Introduction | |||
| This document defines a YANG data model for segment routing | This document defines a YANG data model for segment routing | |||
| configuration and operation. This document does not define the IGP | configuration and operation. This document does not define the IGP | |||
| extensions to support segment routing but defines generic groupings | extensions to support segment routing but defines generic groupings | |||
| that SHOULD be reused by IGP extension modules. The reason of this | that SHOULD be reused by IGP extension modules. The reason of this | |||
| design choice is to not require implementations to support all IGP | design choice is to not require implementations to support all IGP | |||
| extensions. For example, an implementation may support IS-IS | extensions. For example, an implementation may support IS-IS | |||
| skipping to change at page 3, line 37 ¶ | skipping to change at page 3, line 37 ¶ | |||
| shown. | shown. | |||
| 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 | |||
| +--ro node-capabilities | ||||
| | +--ro transport-planes* [transport-plane] | ||||
| | | +--ro transport-plane identityref | ||||
| | +--ro readable-label-stack-depth? uint8 | ||||
| +--rw msd {msd}? | +--rw msd {msd}? | |||
| | +--rw node-msd? uint8 | | +--rw node-msd? uint8 | |||
| | +--rw link-msd | | +--rw link-msd | |||
| | +--rw link-msds* [interface] | | +--rw link-msds* [interface] | |||
| | +--rw interface if:interface-ref | | +--rw interface if:interface-ref | |||
| | +--rw msd? uint8 | | +--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 | |||
| skipping to change at page 4, line 50 ¶ | skipping to change at page 5, line 6 ¶ | |||
| | +--rw prefix inet:ipv6-prefix | | +--rw prefix inet:ipv6-prefix | |||
| | +--rw value-type? enumeration | | +--rw value-type? enumeration | |||
| | +--rw start-sid uint32 | | +--rw start-sid uint32 | |||
| | +--rw range? uint32 | | +--rw range? uint32 | |||
| | +--rw algorithm identityref | | +--rw algorithm identityref | |||
| +--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 | |||
| +--rw srlb | +--rw srlb | |||
| +--rw srlb* [lower-bound upper-bound] | | +--rw srlb* [lower-bound upper-bound] | |||
| +--rw lower-bound uint32 | | +--rw lower-bound uint32 | |||
| +--rw upper-bound uint32 | | +--rw upper-bound uint32 | |||
| augment /rt:routing-state: | ||||
| +--ro segment-routing | ||||
| +--ro node-capabilities | ||||
| | +--ro transport-planes* [transport-plane] | ||||
| | | +--ro transport-plane identityref | ||||
| | +--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 scope? enumeration | | +--ro scope? enumeration | |||
| +--ro sid-list | +--ro 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 | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro source inet:ip-address | +--ro source inet:ip-address | |||
| +--ro used? boolean | +--ro used? boolean | |||
| +--ro source-protocol -> /rt:routing-state/control-plane-protocols | +--ro source-protocol -> /rt:routing/control-plane-protocols | |||
| /control-plane-protocol/name | + /control-plane-protocol/name | |||
| +--ro binding-type enumeration | +--ro binding-type enumeration | |||
| +--ro scope? enumeration | +--ro scope? enumeration | |||
| notifications: | notifications: | |||
| +---n segment-routing-global-srgb-collision | +---n segment-routing-global-srgb-collision | |||
| | +--ro srgb-collisions* | | +--ro srgb-collisions* | |||
| | +--ro lower-bound? uint32 | | +--ro lower-bound? uint32 | |||
| | +--ro upper-bound? uint32 | | +--ro upper-bound? uint32 | |||
| | +--ro routing-protocol? -> /rt:routing-state/control-plane-protocols | | +--ro routing-protocol? -> /rt:routing/control-plane-protocols | |||
| | /control-plane-protocol/name | | /control-plane-protocol/name | |||
| | +--ro originating-rtr-id? router-id | | +--ro originating-rtr-id? router-id | |||
| +---n segment-routing-global-sid-collision | +---n segment-routing-global-sid-collision | |||
| | +--ro received-target? string | | +--ro received-target? string | |||
| | +--ro new-sid-rtr-id? router-id | | +--ro new-sid-rtr-id? router-id | |||
| | +--ro original-target? string | | +--ro original-target? string | |||
| | +--ro original-sid-rtr-id? router-id | | +--ro original-sid-rtr-id? router-id | |||
| | +--ro index? uint32 | | +--ro index? uint32 | |||
| | +--ro routing-protocol? -> /rt:routing-state/control-plane-protocols | | +--ro routing-protocol? -> /rt:routing/control-plane-protocols | |||
| | /control-plane-protocol/name | | /control-plane-protocol/name | |||
| +---n segment-routing-index-out-of-range | +---n segment-routing-index-out-of-range | |||
| +--ro received-target? string | +--ro received-target? string | |||
| +--ro received-index? uint32 | +--ro received-index? uint32 | |||
| +--ro routing-protocol? -> /rt:routing-state/control-plane-protocols | +--ro routing-protocol? -> /rt:routing/control-plane-protocols | |||
| /control-plane-protocol/name | /control-plane-protocol/name | |||
| notifications: | ||||
| +---n segment-routing-global-srgb-collision | ||||
| | +--ro srgb-collisions* | ||||
| | +--ro lower-bound? uint32 | ||||
| | +--ro upper-bound? uint32 | ||||
| | +--ro routing-protocol? -> /rt:routing-state/control-plane-protocols | ||||
| | /control-plane-protocol/name | ||||
| | +--ro originating-rtr-id? router-id | ||||
| +---n segment-routing-global-sid-collision | ||||
| | +--ro received-target? string | ||||
| | +--ro new-sid-rtr-id? router-id | ||||
| | +--ro original-target? string | ||||
| | +--ro original-sid-rtr-id? router-id | ||||
| | +--ro index? uint32 | ||||
| | +--ro routing-protocol? -> /rt:routing-state/control-plane-protocols | ||||
| | /control-plane-protocol/name | ||||
| +---n segment-routing-index-out-of-range | ||||
| +--ro received-target? string | ||||
| +--ro received-index? uint32 | ||||
| +--ro routing-protocol? -> /rt:routing-state/control-plane-protocols | ||||
| /control-plane-protocol/name | ||||
| 3. Configuration | 3. Configuration | |||
| This module augments the "/rt:routing:" with a segment-routing | This module augments the "/rt:routing:" with a segment-routing | |||
| container. This container defines all the configuration parameters | container. This container defines all the configuration parameters | |||
| related to segment-routing. | related to segment-routing. | |||
| The segment-routing configuration is split in global configuration | The segment-routing configuration is split in global configuration | |||
| and interface configuration. | and interface configuration. | |||
| skipping to change at page 9, line 35 ¶ | skipping to change at page 9, line 19 ¶ | |||
| 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@2017-03-10.yang" | <CODE BEGINS> file "ietf-segment-routing-common@2017-07-01.yang" | |||
| module ietf-segment-routing-common { | module ietf-segment-routing-common { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; | namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; | |||
| prefix sr-cmn; | prefix sr-cmn; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| } | } | |||
| organization | organization | |||
| "IETF SPRING Working Group"; | "IETF SPRING - SPRING Working Group"; | |||
| contact | contact | |||
| "WG List: <mailto:spring@ietf.org> | "WG Web: <http://tools.ietf.org/wg/spring/> | |||
| WG List: <mailto:spring@ietf.org> | ||||
| Editor: Stephane Litkowski | Editor: Stephane Litkowski | |||
| <mailto:stephane.litkowski@orange.com> | <mailto:stephane.litkowski@orange.com> | |||
| Editor: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@huawei.com> | ||||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Author: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@huawei.com> | ||||
| Author: Pushpasis Sarkar | Author: Pushpasis Sarkar | |||
| <mailto:pushpasis.ietf@gmail.com> | <mailto:pushpasis.ietf@gmail.com> | |||
| Author: Jeff Tantsura | Author: Jeff Tantsura | |||
| <jefftant.ietf@gmail.com> | <jefftant.ietf@gmail.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module defines a collection of types and groupings for | "The YANG module defines a collection of types and groupings for | |||
| Segment routing."; | 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"; | ||||
| revision 2017-07-01 { | ||||
| description | ||||
| " | ||||
| *Conform to RFC6087BIS Appendix C | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2017-03-10 { | revision 2017-03-10 { | |||
| description | description | |||
| " | " | |||
| * Add support of SRLB | * Add support of SRLB | |||
| "; | "; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| } | } | |||
| revision 2016-10-28 { | revision 2016-10-28 { | |||
| description | description | |||
| " | " | |||
| skipping to change at page 11, line 8 ¶ | skipping to change at page 11, line 15 ¶ | |||
| "Base identity for segment routing transport."; | "Base identity for segment routing transport."; | |||
| } | } | |||
| identity segment-routing-transport-mpls { | identity segment-routing-transport-mpls { | |||
| base segment-routing-transport; | base segment-routing-transport; | |||
| description | description | |||
| "This identity represents MPLS transport for segment | "This identity represents MPLS transport for segment | |||
| routing."; | routing."; | |||
| } | } | |||
| identity segment-routing-transport-ipv6 { | ||||
| base segment-routing-transport; | ||||
| description | ||||
| "This identity represents IPv6 transport for segment | ||||
| routing."; | ||||
| } | ||||
| identity prefix-sid-algorithm { | identity prefix-sid-algorithm { | |||
| description | description | |||
| "Base identity for prefix-sid algorithm."; | "Base identity for prefix-sid algorithm."; | |||
| } | } | |||
| identity prefix-sid-algorithm-shortest-path { | identity prefix-sid-algorithm-shortest-path { | |||
| base prefix-sid-algorithm; | base prefix-sid-algorithm; | |||
| description | description | |||
| "The default behavior of prefix-sid algorithm."; | "The default behavior of prefix-sid algorithm."; | |||
| } | } | |||
| skipping to change at page 13, line 38 ¶ | skipping to change at page 14, line 4 ¶ | |||
| } | } | |||
| enum "php" { | enum "php" { | |||
| description | description | |||
| "Use PHP for the SID."; | "Use PHP for the SID."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Configure last hop behavior."; | "Configure last hop behavior."; | |||
| } | } | |||
| } | } | |||
| grouping node-capabilities { | grouping node-capabilities { | |||
| description | description | |||
| "Containing SR node capabilities."; | "Containing SR node capabilities."; | |||
| container node-capabilities { | container node-capabilities { | |||
| config false; | ||||
| description | description | |||
| "Shows the SR capability of the node."; | "Shows the SR capability of the node."; | |||
| list transport-planes { | list transport-planes { | |||
| key "transport-plane"; | key "transport-plane"; | |||
| description | description | |||
| "List of supported transport planes."; | "List of supported transport planes."; | |||
| leaf transport-plane { | leaf transport-plane { | |||
| type identityref { | type identityref { | |||
| base segment-routing-transport; | base segment-routing-transport; | |||
| } | } | |||
| description | description | |||
| "Transport plane supported"; | "Transport plane supported"; | |||
| } | } | |||
| } | } | |||
| leaf readable-label-stack-depth { | leaf readable-label-stack-depth { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Number of MPLS labels that | "Number of MPLS labels that | |||
| can be read in the stack."; | can be read in the stack."; | |||
| skipping to change at page 14, line 48 ¶ | skipping to change at page 15, line 13 ¶ | |||
| leaf algorithm { | leaf algorithm { | |||
| type identityref { | type identityref { | |||
| base prefix-sid-algorithm; | base prefix-sid-algorithm; | |||
| } | } | |||
| description | description | |||
| "Prefix-sid algorithm."; | "Prefix-sid algorithm."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| <CODE BEGINS> file "ietf-segment-routing@2017-03-10.yang" | <CODE BEGINS> file "ietf-segment-routing@2017-07-01.yang" | |||
| module ietf-segment-routing { | module ietf-segment-routing { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; | |||
| prefix sr; | prefix sr; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix rt; | prefix rt; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix if; | prefix if; | |||
| } | } | |||
| import ietf-segment-routing-common { | import ietf-segment-routing-common { | |||
| prefix sr-cmn; | prefix sr-cmn; | |||
| } | } | |||
| organization | organization | |||
| "IETF SPRING Working Group"; | "IETF SPRING Working Group"; | |||
| contact | contact | |||
| "WG List: <mailto:spring@ietf.org> | "WG Web: <http://tools.ietf.org/wg/spring/> | |||
| WG List: <mailto:spring@ietf.org> | ||||
| Editor: Stephane Litkowski | Editor: Stephane Litkowski | |||
| <mailto:stephane.litkowski@orange.com> | <mailto:stephane.litkowski@orange.com> | |||
| Editor: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@huawei.com> | ||||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Author: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@huawei.com> | ||||
| Author: Pushpasis Sarkar | Author: Pushpasis Sarkar | |||
| <mailto:pushpasis.ietf@gmail.com> | <mailto:pushpasis.ietf@gmail.com> | |||
| Author: Jeff Tantsura | Author: Jeff Tantsura | |||
| <jefftant.ietf@gmail.com> | <jefftant.ietf@gmail.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module defines a generic configuration model for | "The YANG module defines a generic configuration model for | |||
| Segment routing common across all of the vendor | Segment routing common across all of the vendor | |||
| implementations."; | implementations. | |||
| 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"; | ||||
| revision 2017-07-01 { | ||||
| description | ||||
| " | ||||
| * Implement NMDA model | ||||
| *Conform to RFC6087BIS Appendix C | ||||
| "; | ||||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | ||||
| } | ||||
| revision 2017-03-10 { | revision 2017-03-10 { | |||
| description | description | |||
| " | " | |||
| * Change global-sid-list to sid-list and add a leaf scope | * Change global-sid-list to sid-list and add a leaf scope | |||
| * Added support of SRLB | * Added support of SRLB | |||
| * Added support of local sids | * Added support of local sids | |||
| * fixed indentations | * fixed indentations | |||
| "; | "; | |||
| reference "RFC XXXX: YANG Data Model for Segment Routing."; | reference "RFC XXXX: YANG Data Model for Segment Routing."; | |||
| skipping to change at page 20, line 31 ¶ | skipping to change at page 21, line 21 ¶ | |||
| } | } | |||
| leaf msd { | leaf msd { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "SID depth of the interface associated with the link."; | "SID depth of the interface associated with the link."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| notification segment-routing-global-srgb-collision { | ||||
| description | ||||
| "This notification is sent when received SRGB blocks from | ||||
| a router conflict."; | ||||
| list srgb-collisions { | ||||
| description | ||||
| "List of SRGB blocks that conflict."; | ||||
| leaf lower-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Lower value in the block."; | ||||
| } | ||||
| leaf upper-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Upper value in the block."; | ||||
| } | ||||
| 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."; | ||||
| } | ||||
| leaf originating-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "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 mapping | ||||
| where the SID is already used. | ||||
| 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 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."; | ||||
| } | ||||
| } | ||||
| 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-state/rt:control-plane-protocols/" | ||||
| + "rt:control-plane-protocol/rt:name"; | ||||
| } | ||||
| description | ||||
| "Routing protocol reference that received the event."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing" { | augment "/rt:routing" { | |||
| description | description | |||
| "This augments routing-instance | "This augments routing-instance | |||
| configuration with segment-routing."; | configuration with segment-routing."; | |||
| container segment-routing { | container segment-routing { | |||
| description | description | |||
| "segment routing global config."; | "segment routing global config."; | |||
| leaf transport-type { | leaf transport-type { | |||
| type identityref { | type identityref { | |||
| base sr-cmn:segment-routing-transport; | base sr-cmn:segment-routing-transport; | |||
| } | } | |||
| default "sr-cmn:segment-routing-transport-mpls"; | default "sr-cmn:segment-routing-transport-mpls"; | |||
| description | description | |||
| "Dataplane to be used."; | "Dataplane to be used."; | |||
| } | } | |||
| uses sr-cmn:node-capabilities; | ||||
| container msd { | container msd { | |||
| if-feature "msd"; | if-feature "msd"; | |||
| description | description | |||
| "MSD configuration."; | "MSD configuration."; | |||
| uses msd-cfg; | uses msd-cfg; | |||
| } | } | |||
| container bindings { | container bindings { | |||
| description | description | |||
| "List of bindings."; | "List of bindings."; | |||
| container mapping-server { | container mapping-server { | |||
| skipping to change at page 25, line 4 ¶ | skipping to change at page 23, line 39 ¶ | |||
| description | description | |||
| "List of local ipv6 sids."; | "List of local ipv6 sids."; | |||
| list ipv6-prefix-sid-local { | list ipv6-prefix-sid-local { | |||
| key "prefix algorithm"; | key "prefix algorithm"; | |||
| description | description | |||
| "List of local prefix-sid."; | "List of local prefix-sid."; | |||
| uses sr-cmn:ipv6-sid-cfg; | uses sr-cmn:ipv6-sid-cfg; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container global-srgb { | container global-srgb { | |||
| description | description | |||
| "Global SRGB configuration."; | "Global SRGB configuration."; | |||
| uses sr-cmn:srgb-cfg; | uses sr-cmn:srgb-cfg; | |||
| } | } | |||
| container srlb { | container srlb { | |||
| description | description | |||
| "SR Local Block configuration."; | "SR Local Block configuration."; | |||
| uses sr-cmn:srlb-cfg; | uses sr-cmn:srlb-cfg; | |||
| } | } | |||
| } | ||||
| } | ||||
| augment "/rt:routing-state" { | ||||
| description | ||||
| "This augments the operational states | ||||
| with segment-routing."; | ||||
| container segment-routing { | ||||
| description | ||||
| "Segment routing operational states."; | ||||
| uses sr-cmn:node-capabilities; | ||||
| container msd { | ||||
| description | ||||
| "MSD configuration state."; | ||||
| uses msd-cfg; | ||||
| } | ||||
| list label-blocks { | list label-blocks { | |||
| config false; | ||||
| description | description | |||
| "List of labels blocks currently | "List of labels blocks currently | |||
| in use."; | in use."; | |||
| leaf lower-bound { | leaf lower-bound { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Lower bound of the label block."; | "Lower bound of the label block."; | |||
| } | } | |||
| leaf upper-bound { | leaf upper-bound { | |||
| type uint32; | type uint32; | |||
| skipping to change at page 26, line 27 ¶ | skipping to change at page 24, line 48 ¶ | |||
| enum "local" { | enum "local" { | |||
| description | description | |||
| "Local sid."; | "Local sid."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Scope of this label block."; | "Scope of this label block."; | |||
| } | } | |||
| } | } | |||
| container sid-list { | container sid-list { | |||
| config false; | ||||
| description | description | |||
| "List of prefix and SID associations."; | "List of prefix and SID associations."; | |||
| list sid { | list sid { | |||
| key "target sid source source-protocol binding-type"; | key "target sid source source-protocol binding-type"; | |||
| ordered-by system; | ordered-by system; | |||
| description | description | |||
| "Binding."; | "Binding."; | |||
| leaf target { | leaf target { | |||
| type string; | type string; | |||
| description | description | |||
| skipping to change at page 27, line 17 ¶ | skipping to change at page 25, line 39 ¶ | |||
| the binding."; | the binding."; | |||
| } | } | |||
| leaf used { | leaf used { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Defines if the binding is used | "Defines if the binding is used | |||
| in forwarding plane."; | in forwarding plane."; | |||
| } | } | |||
| leaf source-protocol { | leaf source-protocol { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing-state/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 | |||
| "Rtg protocol that owns the binding"; | "Rtg protocol that owns the binding"; | |||
| } | } | |||
| leaf binding-type { | leaf binding-type { | |||
| type enumeration { | type enumeration { | |||
| enum "prefix-sid" { | enum "prefix-sid" { | |||
| description | description | |||
| "Binding is learned from | "Binding is learned from | |||
| skipping to change at page 28, line 4 ¶ | skipping to change at page 26, line 26 ¶ | |||
| description | description | |||
| "Global sid."; | "Global sid."; | |||
| } | } | |||
| enum "local" { | enum "local" { | |||
| description | description | |||
| "Local sid."; | "Local sid."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "The sid is local or global."; | "The sid is local or global."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| notification segment-routing-global-srgb-collision { | ||||
| description | ||||
| "This notification is sent when received SRGB blocks from | ||||
| a router conflict."; | ||||
| list srgb-collisions { | ||||
| description | ||||
| "List of SRGB blocks that conflict."; | ||||
| leaf lower-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Lower value in the block."; | ||||
| } | ||||
| leaf upper-bound { | ||||
| type uint32; | ||||
| description | ||||
| "Upper value in the block."; | ||||
| } | ||||
| 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."; | ||||
| } | ||||
| leaf originating-rtr-id { | ||||
| type router-id; | ||||
| description | ||||
| "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 mapping | ||||
| where the SID is already used. | ||||
| 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 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/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> | <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, | |||
| skipping to change at page 28, line 32 ¶ | skipping to change at page 29, line 14 ¶ | |||
| 10. IANA Considerations | 10. IANA Considerations | |||
| TBD. | TBD. | |||
| 11. Normative References | 11. Normative References | |||
| [I-D.ietf-isis-segment-routing-msd] | [I-D.ietf-isis-segment-routing-msd] | |||
| Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, | Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, | |||
| "Signaling MSD (Maximum SID Depth) using IS-IS", draft- | "Signaling MSD (Maximum SID Depth) using IS-IS", draft- | |||
| ietf-isis-segment-routing-msd-02 (work in progress), March | ietf-isis-segment-routing-msd-04 (work in progress), June | |||
| 2017. | 2017. | |||
| [I-D.ietf-ospf-segment-routing-msd] | [I-D.ietf-ospf-segment-routing-msd] | |||
| Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | |||
| "Signaling MSD (Maximum SID Depth) using OSPF", draft- | "Signaling MSD (Maximum SID Depth) using OSPF", draft- | |||
| ietf-ospf-segment-routing-msd-02 (work in progress), March | ietf-ospf-segment-routing-msd-05 (work in progress), June | |||
| 2017. | 2017. | |||
| [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-11 (work in progress), February | spring-segment-routing-12 (work in progress), June 2017. | |||
| 2017. | ||||
| [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. | |||
| End of changes. 43 change blocks. | ||||
| 190 lines changed or deleted | 203 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/ | ||||