draft-ietf-spring-sr-yang-05.txt   draft-ietf-spring-sr-yang-06.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: May 1, 2017 Cisco Systems Expires: September 11, 2017 Huawei
P. Sarkar P. Sarkar
J. Tantsura J. Tantsura
Individual Individual
October 28, 2016 March 10, 2017
YANG Data Model for Segment Routing YANG Data Model for Segment Routing
draft-ietf-spring-sr-yang-05 draft-ietf-spring-sr-yang-06
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 May 1, 2017. This Internet-Draft will expire on September 11, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
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 . . . . . . . . . . . . . . . . . . . . . . . . 6
4. IGP Control plane configuration . . . . . . . . . . . . . . . 6 4. IGP Control plane configuration . . . . . . . . . . . . . . . 7
4.1. IGP interface configuration . . . . . . . . . . . . . . . 7 4.1. IGP interface configuration . . . . . . . . . . . . . . . 7
4.1.1. Adjacency SID properties . . . . . . . . . . . . . . 7 4.1.1. Adjacency SID properties . . . . . . . . . . . . . . 8
4.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 7 4.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 8
4.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 7 4.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 8
5. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 9
7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8 7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 9
8. Security Considerations . . . . . . . . . . . . . . . . . . . 26 8. Security Considerations . . . . . . . . . . . . . . . . . . . 28
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
11. Normative References . . . . . . . . . . . . . . . . . . . . 26 11. Normative References . . . . . . . . . . . . . . . . . . . . 28
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29
1. Introduction 1. Introduction
This document defines a YANG data model for segment routing This document defines a YANG data model for segment routing
configuration and operation. This document does not define the IGP configuration and operation. This document does not define the IGP
extensions to support segment routing but defines generic groupings extensions to support segment routing but defines generic groupings
that SHOULD be reused by IGP extension modules. The reason of this that SHOULD be reused by IGP extension modules. The reason of this
design choice is to not require implementations to support all IGP design choice is to not require implementations to support all IGP
extensions. For example, an implementation may support IS-IS extensions. For example, an implementation may support IS-IS
extension but not OSPF. extension but not OSPF.
skipping to change at page 3, line 35 skipping to change at page 3, line 35
o Ellipsis ("...") stands for contents of subtrees that are not o Ellipsis ("...") stands for contents of subtrees that are not
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
+--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
| | +--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
| | | +--rw algorithm identityref | | | +--rw algorithm identityref
| | +--rw ipv6 | | +--rw ipv6
| | +--rw mapping-entry* [prefix algorithm] | | +--rw mapping-entry* [prefix algorithm]
| | +--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 connected-prefix-sid-map | +--rw connected-prefix-sid-map
| +--rw ipv4 | | +--rw ipv4
| | +--rw ipv4-prefix-sid* [prefix algorithm] | | | +--rw ipv4-prefix-sid* [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
| | +--rw algorithm identityref | | | +--rw algorithm identityref
| | +--rw last-hop-behavior? enumeration {sid-last-hop-behavior}? | | | +--rw last-hop-behavior? enumeration {sid-last-hop-behavior}?
| +--rw ipv6 | | +--rw ipv6
| +--rw ipv6-prefix-sid* [prefix algorithm] | | +--rw ipv6-prefix-sid* [prefix algorithm]
| +--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 last-hop-behavior? enumeration {sid-last-hop-behavior}? | | +--rw last-hop-behavior? enumeration {sid-last-hop-behavior}?
+--rw global-srgb | +--rw local-prefix-sid
+--rw srgb* [lower-bound upper-bound] | +--rw ipv4
+--rw lower-bound uint32 | | +--rw ipv4-prefix-sid-local* [prefix algorithm]
+--rw upper-bound uint32 | | +--rw prefix inet:ipv4-prefix
augment /rt:routing-state: | | +--rw value-type? enumeration
+--ro segment-routing | | +--rw start-sid uint32
+--ro node-capabilities | | +--rw range? uint32
| +--ro transport-planes* [transport-plane] | | +--rw algorithm identityref
| | +--ro transport-plane identityref | +--rw ipv6
| +--ro readable-label-stack-depth? uint8 | +--rw ipv6-prefix-sid-local* [prefix algorithm]
+--ro msd | +--rw prefix inet:ipv6-prefix
| +--ro node-msd? uint8 | +--rw value-type? enumeration
| +--ro link-msd | +--rw start-sid uint32
| +--ro link-msds* [interface] | +--rw range? uint32
| +--ro interface if:interface-ref | +--rw algorithm identityref
| +--ro msd? uint8 +--rw global-srgb
+--ro label-blocks* | +--rw srgb* [lower-bound upper-bound]
| +--ro lower-bound? uint32 | +--rw lower-bound uint32
| +--ro upper-bound? uint32 | +--rw upper-bound uint32
| +--ro size? uint32 +--rw srlb
| +--ro free? uint32 +--rw srlb* [lower-bound upper-bound]
| +--ro used? uint32 +--rw lower-bound uint32
+--ro global-sid-list +--rw upper-bound uint32
+--ro sid* [target sid source source-protocol binding-type] augment /rt:routing-state:
+--ro target string +--ro segment-routing
+--ro sid uint32 +--ro node-capabilities
+--ro algorithm? uint8 | +--ro transport-planes* [transport-plane]
+--ro source inet:ip-address | | +--ro transport-plane identityref
+--ro used? boolean | +--ro readable-label-stack-depth? uint8
+--ro source-protocol -> /rt:routing-state/control-plane-protocols +--ro msd
/control-plane-protocol/name | +--ro node-msd? uint8
+--ro binding-type enumeration | +--ro link-msd
| +--ro link-msds* [interface]
| +--ro interface if:interface-ref
| +--ro msd? uint8
+--ro label-blocks*
| +--ro lower-bound? uint32
| +--ro upper-bound? uint32
| +--ro size? uint32
| +--ro free? uint32
| +--ro used? uint32
| +--ro scope? enumeration
+--ro sid-list
+--ro sid* [target sid source source-protocol binding-type]
+--ro target string
+--ro sid uint32
+--ro algorithm? uint8
+--ro source inet:ip-address
+--ro used? boolean
+--ro source-protocol -> /rt:routing-state/control-plane-protocols
/control-plane-protocol/name
+--ro binding-type enumeration
+--ro scope? enumeration
notifications:
+---n segment-routing-global-srgb-collision
| +--ro srgb-collisions*
| +--ro lower-bound? uint32
| +--ro upper-bound? uint32
| +--ro routing-protocol? -> /rt:routing-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
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-state/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
skipping to change at page 6, line 29 skipping to change at page 7, line 23
for segment routing (see Section 4). The SID value can be for segment routing (see Section 4). The SID value can be
expressed as an index (default), or an absolute value. The expressed as an index (default), or an absolute value. The
"last-hop-behavior" configuration dictates the PHP behavior: "last-hop-behavior" configuration dictates the PHP behavior:
"explicit-null", "php", or "non-php". "explicit-null", "php", or "non-php".
o SRGB (Segment Routing Global Block): Defines a list of label o SRGB (Segment Routing Global Block): Defines a list of label
blocks represented by a pair of lower-bound/upper-bound labels. blocks represented by a pair of lower-bound/upper-bound labels.
The SRGB is also agnostic to the control plane used. So all The SRGB is also agnostic to the control plane used. So all
routing-protocol instance will have to advertise the same SRGB. routing-protocol instance will have to advertise the same SRGB.
o SRLB (Segment Routing Local Block): Defines a list of label blocks
represented by a pair of lower-bound/upper-bound labels, reserved
for lcoal SIDs.
4. IGP Control plane configuration 4. IGP Control plane configuration
Support of segment-routing extensions for a particular IGP control Support of segment-routing extensions for a particular IGP control
plane is done by augmenting routing-protocol configuration with plane is done by augmenting routing-protocol configuration with
segment-routing extensions. This augmentation SHOULD be part of segment-routing extensions. This augmentation SHOULD be part of
separate YANG modules in order to not create any dependency for separate YANG modules in order to not create any dependency for
implementations to support all protocol extensions. implementations to support all protocol extensions.
This module defines groupings that SHOULD be used by IGP segment This module defines groupings that SHOULD be used by IGP segment
routing modules. routing modules.
skipping to change at page 8, line 40 skipping to change at page 9, line 35
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-28.yang" <CODE BEGINS> file "ietf-segment-routing-common@2017-03-10.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: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.";
revision 2017-03-10 {
description
"
* Add support of SRLB
";
reference "RFC XXXX: YANG Data Model for Segment Routing.";
}
revision 2016-10-28 { revision 2016-10-28 {
description " description
* Add support of MSD (Maximum SID Depth) "
* Update contact info * Add support of MSD (Maximum SID Depth)
"; * Update contact info
reference ";
"RFC XXXX: YANG Data Model for Segment Routing."; reference "RFC XXXX: YANG Data Model for Segment Routing.";
} }
revision 2016-10-24 { revision 2016-10-24 {
description "Initial"; description
reference "Initial";
"RFC XXXX: YANG Data Model for Segment Routing."; reference "RFC XXXX: YANG Data Model for Segment Routing.";
}
feature sid-last-hop-behavior {
description
"Configurable last hop behavior.";
} }
/* Identities */
identity segment-routing-transport { identity segment-routing-transport {
description description
"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 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.";
} }
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 */ grouping srlr {
feature sid-last-hop-behavior {
description description
"Configurable last hop behavior."; "Grouping for SR Label Range configuration.";
} leaf lower-bound {
/* Groupings */
grouping srgb-cfg {
list srgb {
key "lower-bound upper-bound";
ordered-by user;
leaf lower-bound {
type uint32; type uint32;
description description
"Lower value in the block."; "Lower value in the block.";
} }
leaf upper-bound { leaf upper-bound {
type uint32; type uint32;
description description
"Upper value in the block."; "Upper value in the block.";
} }
}
grouping srgb-cfg {
description
"Grouping for SR Label Range configuration.";
list srgb {
key "lower-bound upper-bound";
ordered-by user;
description description
"List of global blocks to be "List of global blocks to be
advertised."; advertised.";
uses srlr;
} }
}
grouping srlb-cfg {
description description
"Grouping for SRGB configuration."; "Grouping for SR Local Block range configuration.";
list srlb {
key "lower-bound upper-bound";
ordered-by user;
description
"List of SRLBs.";
uses srlr;
}
} }
grouping sid-value-type { grouping sid-value-type {
description
"Defines how the SID value is expressed.";
leaf value-type { leaf value-type {
type enumeration { type enumeration {
enum index { enum "index" {
description description
"The value will be "The value will be
interpreted as an index."; interpreted as an index.";
} }
enum absolute { enum "absolute" {
description description
"The value will become "The value will become
interpreted as an absolute interpreted as an absolute
value."; value.";
} }
} }
default index; default "index";
description description
"This leaf defines how value "This leaf defines how value
must be interpreted."; must be interpreted.";
} }
description
"Defines how the SID value is expressed.";
} }
grouping ipv4-sid-cfg { grouping ipv4-sid-cfg {
description
"This grouping defines cfg of prefix SID.";
leaf prefix { leaf prefix {
type inet:ipv4-prefix; type inet:ipv4-prefix;
description description
"connected prefix sid."; "connected prefix sid.";
} }
uses prefix-sid-attributes; uses prefix-sid-attributes;
description
"This grouping defines cfg of prefix SID.";
} }
grouping ipv6-sid-cfg { grouping ipv6-sid-cfg {
description
"This grouping defines cfg of prefix SID.";
leaf prefix { leaf prefix {
type inet:ipv6-prefix; type inet:ipv6-prefix;
description description
"connected prefix sid."; "connected prefix sid.";
} }
uses prefix-sid-attributes; uses prefix-sid-attributes;
description
"This grouping defines cfg of prefix SID.";
} }
grouping last-hop-behavior { grouping last-hop-behavior {
description
"Defines last hop behavior";
leaf last-hop-behavior { leaf last-hop-behavior {
if-feature sid-last-hop-behavior; if-feature "sid-last-hop-behavior";
type enumeration { type enumeration {
enum explicit-null { enum "explicit-null" {
description description
"Use explicit-null for the SID."; "Use explicit-null for the SID.";
} }
enum no-php { enum "no-php" {
description description
"Do no use PHP for the SID."; "Do no use PHP for the SID.";
} }
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.";
} }
description
"Defines last hop behavior";
} }
grouping node-capabilities { grouping node-capabilities {
description "Containing SR node capabilities."; description
"Containing SR node capabilities.";
container node-capabilities { container node-capabilities {
description
"Shows the SR capability of the node.";
list transport-planes { list transport-planes {
key transport-plane; key "transport-plane";
description
"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";
} }
description
"List of supported transport planes.";
} }
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.";
} }
description }
"Shows the SR capability of the node."; }
} // node-capabilities
} // sr-node-capabilities
grouping prefix-sid-attributes { grouping prefix-sid-attributes {
description "Containing SR attributes for a prefix."; description
"Containing SR attributes for a prefix.";
uses sid-value-type; uses sid-value-type;
leaf start-sid { leaf start-sid {
type uint32; type uint32;
mandatory true; mandatory true;
description description
"Value associated with "Value associated with
prefix. The value must prefix. The value must
be interpreted in the be interpreted in the
context of value-type."; context of value-type.";
} }
skipping to change at page 13, line 22 skipping to change at page 14, line 32
uses sid-value-type; uses sid-value-type;
leaf start-sid { leaf start-sid {
type uint32; type uint32;
mandatory true; mandatory true;
description description
"Value associated with "Value associated with
prefix. The value must prefix. The value must
be interpreted in the be interpreted in the
context of value-type."; context of value-type.";
} }
leaf range { leaf range {
type uint32; type uint32;
description description
"Describes how many SIDs could be "Describes how many SIDs could be
allocated."; allocated.";
} }
leaf algorithm { leaf algorithm {
type identityref { type identityref {
base prefix-sid-algorithm; base prefix-sid-algorithm;
} }
description "Prefix-sid algorithm."; description
"Prefix-sid algorithm.";
} }
} //prefix-sid-attributes }
} }
<CODE ENDS> <CODE ENDS>
<CODE BEGINS> file "ietf-segment-routing@2016-10-28.yang" <CODE BEGINS> file "ietf-segment-routing@2017-03-10.yang"
module ietf-segment-routing { module ietf-segment-routing {
namespace "urn:ietf:params:xml:ns:" namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing";
+ "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 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: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.";
revision 2017-03-10 {
description
"
* Change global-sid-list to sid-list and add a leaf scope
* Added support of SRLB
* Added support of local sids
* fixed indentations
";
reference "RFC XXXX: YANG Data Model for Segment Routing.";
}
revision 2016-10-28 { revision 2016-10-28 {
description " description
* Add support of MSD (Maximum SID Depth) "
* Update contact info * Add support of MSD (Maximum SID Depth)
"; * Update contact info
reference ";
"RFC XXXX: YANG Data Model for Segment Routing."; reference "RFC XXXX: YANG Data Model for Segment Routing.";
} }
revision 2016-10-24 { revision 2016-10-24 {
description " description
* Moved common SR types and groupings to a seperate module "
"; * Moved common SR types and groupings to a seperate module
reference ";
"RFC XXXX: YANG Data Model for Segment Routing."; reference "RFC XXXX: YANG Data Model for Segment Routing.";
} }
revision 2016-07-07 { revision 2016-07-07 {
description " description
* Add support of prefix-sid algorithm configuration "
* change routing-protocols to control-plane-protocols * Add support of prefix-sid algorithm configuration
"; * change routing-protocols to control-plane-protocols
reference ";
"RFC XXXX: YANG Data Model for Segment Routing."; reference "RFC XXXX: YANG Data Model for Segment Routing.";
} }
revision 2016-03-17 { revision 2016-03-17 {
description " description
* Add notification segment-routing-global-srgb-collision "
* Add router-id to segment-routing-global-sid-collision * Add notification segment-routing-global-srgb-collision
* Remove routing-instance * Add router-id to segment-routing-global-sid-collision
* Add typedef router-id * Remove routing-instance
"; * Add typedef router-id
reference ";
"RFC XXXX: YANG Data Model for Segment Routing."; reference "RFC XXXX: YANG Data Model for Segment Routing.";
} }
revision 2015-10-17 { revision 2015-10-17 {
description " description
* Add per-protocol SRGB config feature "
* Move SRBG config to a grouping * Add per-protocol SRGB config feature
"; * Move SRBG config to a grouping
reference ";
"RFC XXXX: YANG Data Model for Segment Routing."; reference "RFC XXXX: YANG Data Model for Segment Routing.";
} }
revision 2015-06-22 { revision 2015-06-22 {
description " description
* Prefix SID config moved to "
connected-prefix-sid-map in global SR cfg * Prefix SID config moved to
rather than IGP. connected-prefix-sid-map in global SR cfg
rather than IGP.
"; ";
reference "draft-litkowski-spring-sr-yang-01"; reference "draft-litkowski-spring-sr-yang-01";
} }
revision 2015-04-23 { revision 2015-04-23 {
description " description
* Node flag deprecated from prefixSID "
* SR interface cfg moved to protocol * Node flag deprecated from prefixSID
* Adding multiple binding policies for SRMS * SR interface cfg moved to protocol
* Adding multiple binding policies for SRMS
"; ";
reference ""; reference "";
} }
revision 2015-02-27 { revision 2015-02-27 {
description "Initial"; description
"Initial";
reference "draft-litkowski-spring-sr-yang-00"; reference "draft-litkowski-spring-sr-yang-00";
} }
/* Features */
feature mapping-server { feature mapping-server {
description description
"Support of SRMS."; "Support of SRMS.";
} }
feature protocol-srgb { feature protocol-srgb {
description description
"Support per-protocol srgb configuration."; "Support per-protocol srgb configuration.";
} }
feature msd { feature msd {
description description
"Support of signaling MSD (Maximum SID Depth) in IGP."; "Support of signaling MSD (Maximum SID Depth) in IGP.";
} }
/* 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 */
grouping controlplane-cfg { grouping controlplane-cfg {
description
"Defines protocol configuration.";
container segment-routing { container segment-routing {
description
"segment routing global config.";
leaf enabled { leaf enabled {
type boolean; type boolean;
default false; default "false";
description description
"Enables segment-routing "Enables segment-routing
protocol extensions."; protocol extensions.";
} }
container bindings { container bindings {
description
"Control of binding advertisement
and reception.";
container advertise { container advertise {
description
"Authorize the advertise
of local mappings in binding TLV.";
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
"Authorize the advertise
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
"Control of binding advertisement
and reception.";
} }
description
"segment routing global config.";
} }
description
"Defines protocol configuration.";
} }
grouping igp-interface-cfg { grouping igp-interface-cfg {
description
"Grouping for IGP interface cfg.";
container segment-routing { container segment-routing {
description
"container for SR interface cfg.";
container adjacency-sid { container adjacency-sid {
description
"Defines the adjacency SID properties.";
list advertise-adj-group-sid { list advertise-adj-group-sid {
key group-id; key "group-id";
description
"Control advertisement of S flag.
Enable to advertise a common Adj-SID
for parallel links.";
leaf group-id { leaf group-id {
type uint32; type uint32;
description description
"The value is an internal value to identify "The value is an internal value to identify
a group-ID. Interfaces with the same a group-ID. Interfaces with the same
group-ID will be bundled together."; 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 { leaf advertise-protection {
type enumeration { type enumeration {
enum "single" { enum "single" {
description description
"A single Adj-SID is associated "A single Adj-SID is associated
with the adjacency and reflects with the adjacency and reflects
the protection configuration."; the protection configuration.";
} }
enum "dual" { enum "dual" {
skipping to change at page 18, line 36 skipping to change at page 19, line 45
will be enforced to backup flag unset. will be enforced to backup flag unset.
In case, protection is not configured, In case, protection is not configured,
a single Adj-SID will be advertised a single Adj-SID will be advertised
with backup flag unset."; with backup flag unset.";
} }
} }
description description
"If set, the Adj-SID refers to an "If set, the Adj-SID refers to an
adjacency being protected."; adjacency being protected.";
} }
description
"Defines the adjacency SID properties.";
} }
description
"container for SR interface cfg.";
} }
description
"Grouping for IGP interface cfg.";
} }
grouping msd-cfg { grouping msd-cfg {
description
"MSD configuration grouping.";
leaf node-msd { leaf node-msd {
type uint8; type uint8;
description description
"Node MSD is the lowest MSD supported by the node."; "Node MSD is the lowest MSD supported by the node.";
} }
container link-msd { container link-msd {
description
"Link MSD is a number represetns the particular link MSD value.";
list link-msds { list link-msds {
key interface; key "interface";
description
"List of link MSDs.";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"Name of the interface."; "Name of the interface.";
} }
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 description
"List of link MSDs."; "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 description
"Link MSD is a number represetns the particular link MSD value."; "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 description
"MSD configuration grouping."; "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.";
}
} }
/* Cfg */
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
"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 "Dataplane to be used."; description
"Dataplane to be used.";
} }
container msd { container msd {
if-feature msd; if-feature "msd";
uses msd-cfg;
description description
"MSD configuration."; "MSD configuration.";
uses msd-cfg;
} }
container bindings { container bindings {
description
"List of bindings.";
container mapping-server { container mapping-server {
if-feature mapping-server; if-feature "mapping-server";
description
"Configuration of mapping-server
local entries.";
list policy { list policy {
key name; key "name";
description
"Definition of mapping policy.";
leaf name { leaf name {
type string; type string;
description description
"Name of the mapping policy."; "Name of the mapping policy.";
} }
container ipv4 { container ipv4 {
description
"IPv4 mapping entries.";
list mapping-entry { list mapping-entry {
key "prefix algorithm"; key "prefix algorithm";
uses sr-cmn:ipv4-sid-cfg;
description description
"Mapping entries."; "Mapping entries.";
uses sr-cmn:ipv4-sid-cfg;
} }
description
"IPv4 mapping entries.";
} }
container ipv6 { container ipv6 {
description
"IPv6 mapping entries.";
list mapping-entry { list mapping-entry {
key "prefix algorithm"; key "prefix algorithm";
uses sr-cmn:ipv6-sid-cfg;
description description
"Mapping entries."; "Mapping entries.";
uses sr-cmn:ipv6-sid-cfg;
} }
description
"IPv6 mapping entries.";
} }
description
"Definition of mapping policy.";
} }
description
"Configuration of mapping-server
local entries.";
} }
container connected-prefix-sid-map { container connected-prefix-sid-map {
description
"Prefix SID configuration.";
container ipv4 { container ipv4 {
description
"Parameters associated with IPv4 prefix SID";
list ipv4-prefix-sid { list ipv4-prefix-sid {
key "prefix algorithm"; key "prefix algorithm";
uses sr-cmn:ipv4-sid-cfg;
uses sr-cmn:last-hop-behavior;
description description
"List of prefix SID "List of prefix SID
mapped to IPv4 local prefixes."; mapped to IPv4 local prefixes.";
uses sr-cmn:ipv4-sid-cfg;
uses sr-cmn:last-hop-behavior;
} }
description
"Parameters associated with IPv4 prefix SID";
} }
container ipv6 { container ipv6 {
description
"Parameters associated with IPv6 prefix SID";
list ipv6-prefix-sid { list ipv6-prefix-sid {
key "prefix algorithm"; key "prefix algorithm";
uses sr-cmn:ipv6-sid-cfg;
uses sr-cmn:last-hop-behavior;
description description
"List of prefix SID "List of prefix SID
mapped to IPv6 local prefixes."; mapped to IPv6 local prefixes.";
uses sr-cmn:ipv6-sid-cfg;
uses sr-cmn:last-hop-behavior;
} }
description
"Parameters associated with IPv6 prefix SID";
} }
}
container local-prefix-sid {
description description
"Prefix SID configuration."; "Local sid configuration.";
container ipv4 {
description
"List of local ipv4 sids.";
list ipv4-prefix-sid-local {
key "prefix algorithm";
description
"List of local prefix-sid.";
uses sr-cmn:ipv4-sid-cfg;
}
}
container ipv6 {
description
"List of local ipv6 sids.";
list ipv6-prefix-sid-local {
key "prefix algorithm";
description
"List of local prefix-sid.";
uses sr-cmn:ipv6-sid-cfg;
}
}
} }
description
"List of bindings.";
} }
container global-srgb { container global-srgb {
uses sr-cmn:srgb-cfg;
description description
"Global SRGB configuration."; "Global SRGB configuration.";
uses sr-cmn:srgb-cfg;
}
container srlb {
description
"SR Local Block configuration.";
uses sr-cmn:srlb-cfg;
} }
description
"segment routing global config.";
} }
} }
/* Operational states */
augment "/rt:routing-state" { augment "/rt:routing-state" {
description description
"This augments the operational states "This augments the operational states
with segment-routing."; with segment-routing.";
container segment-routing { container segment-routing {
description
"Segment routing operational states.";
uses sr-cmn:node-capabilities; uses sr-cmn:node-capabilities;
container msd { container msd {
uses msd-cfg;
description description
"MSD configuration state."; "MSD configuration state.";
uses msd-cfg;
} }
list label-blocks { list label-blocks {
description
"List of labels blocks currently
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;
description description
"Upper bound of the label block."; "Upper bound of the label block.";
} }
leaf size { leaf size {
type uint32; type uint32;
description description
"Number of indexes in the block."; "Number of indexes in the block.";
} }
leaf free { leaf free {
type uint32; type uint32;
description description
"Number of indexes free in the block."; "Number of indexes free in the block.";
} }
leaf used { leaf used {
type uint32; type uint32;
description description
"Number of indexes used in the block."; "Number of indexes used in the block.";
}
leaf scope {
type enumeration {
enum "global" {
description
"Global sid.";
}
enum "local" {
description
"Local sid.";
}
}
description
"Scope of this label block.";
} }
description
"List of labels blocks currently
in use.";
} }
container sid-list {
container global-sid-list { description
"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
"Binding.";
leaf target { leaf target {
type string; type string;
description description
"Defines the target of the binding. "Defines the target of the binding.
It can be a prefix or something else."; It can be a prefix or something else.";
} }
leaf sid { leaf sid {
type uint32; type uint32;
description description
"Index associated with the prefix."; "Index associated with the prefix.";
} }
leaf algorithm { leaf algorithm {
type uint8; type uint8;
description description
"Algorithm to be used for the prefix "Algorithm to be used for the prefix
SID."; SID.";
} }
leaf source { leaf source {
type inet:ip-address; type inet:ip-address;
description description
"IP address of the router than own "IP address of the router than own
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-state/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
a prefix SID."; a prefix SID.";
} }
enum binding-tlv { enum "binding-tlv" {
description description
"Binding is learned from "Binding is learned from
a binding TLV."; a binding TLV.";
} }
} }
description description
"Type of binding."; "Type of binding.";
} }
description leaf scope {
"Binding."; type enumeration {
enum "global" {
} description
description "Global sid.";
"List of prefix and SID associations."; }
} enum "local" {
description description
"Segment routing operational states."; "Local sid.";
} }
} }
description
/* Notifications */ "The sid is local or global.";
notification segment-routing-global-srgb-collision { }
list srgb-collisions {
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.";
}
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.";
}
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> <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, Les
contributions. Ginsberg for their contributions.
10. IANA Considerations 10. IANA Considerations
TBD. TBD.
11. Normative References 11. Normative References
[I-D.ietf-isis-segment-routing-msd]
Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg,
"Signaling MSD (Maximum SID Depth) using IS-IS", draft-
ietf-isis-segment-routing-msd-02 (work in progress), March
2017.
[I-D.ietf-ospf-segment-routing-msd]
Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak,
"Signaling MSD (Maximum SID Depth) using OSPF", draft-
ietf-ospf-segment-routing-msd-02 (work in progress), March
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-09 (work in progress), July 2016. spring-segment-routing-11 (work in progress), February
2017.
[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.
Authors' Addresses Authors' Addresses
Stephane Litkowski Stephane Litkowski
Orange Business Service Orange Business Service
Email: stephane.litkowski@orange.com Email: stephane.litkowski@orange.com
Yingzhen Qu Yingzhen Qu
Cisco Systems Huawei
Email: yiqu@cisco.com Email: yingzhen.qu@huawei.com
Pushpasis Sarkar Pushpasis Sarkar
Individual Individual
Email: pushpasis.ietf@gmail.com Email: pushpasis.ietf@gmail.com
Jeff Tantsura Jeff Tantsura
Individual Individual
Email: jefftant.ietf@gmail.com Email: jefftant.ietf@gmail.com
 End of changes. 200 change blocks. 
479 lines changed or deleted 590 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/