draft-ietf-spring-sr-yang-00.txt   draft-ietf-spring-sr-yang-01.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: January 21, 2016 Cisco Systems Expires: April 19, 2016 Cisco Systems
P. Sarkar P. Sarkar
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
Ericsson Ericsson
July 20, 2015 October 17, 2015
YANG Data Model for Segment Routing YANG Data Model for Segment Routing
draft-ietf-spring-sr-yang-00 draft-ietf-spring-sr-yang-01
Abstract Abstract
This document defines a YANG data model ([RFC6020]) for segment This document defines a YANG data model ([RFC6020]) for segment
routing ([I-D.ietf-spring-segment-routing]) configuration and routing ([I-D.ietf-spring-segment-routing]) configuration and
operation. This YANG model is intended to be used on network operation. This YANG model is intended to be used on network
elements to configure or operate segment routing. This document elements to configure or operate segment routing. This document
defines also generic containers that SHOULD be reused by IGP protocol defines also generic containers that SHOULD be reused by IGP protocol
modules to support segment routing. modules to support segment routing.
skipping to change at page 1, line 46 skipping to change at page 1, line 46
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 January 21, 2016. This Internet-Draft will expire on April 19, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 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 34 skipping to change at page 2, line 34
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
3. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 5
4. IGP Control plane configuration . . . . . . . . . . . . . . . 6 4. IGP Control plane configuration . . . . . . . . . . . . . . . 6
4.1. IGP interface configuration . . . . . . . . . . . . . . . 6 4.1. IGP interface configuration . . . . . . . . . . . . . . . 6
4.1.1. Adjacency SID properties . . . . . . . . . . . . . . 6 4.1.1. Adjacency SID properties . . . . . . . . . . . . . . 6
4.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 6 4.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 6
4.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 7 4.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 7
5. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5. States . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 7 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 7
7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8 7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8
8. Security Considerations . . . . . . . . . . . . . . . . . . . 20 8. Security Considerations . . . . . . . . . . . . . . . . . . . 21
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21
11. Normative References . . . . . . . . . . . . . . . . . . . . 21 11. Normative References . . . . . . . . . . . . . . . . . . . . 21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21
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
skipping to change at page 4, line 20 skipping to change at page 4, line 20
| | +--rw start-sid uint32 | | +--rw start-sid uint32
| | +--rw range? uint32 | | +--rw range? uint32
| | +--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] | +--rw ipv6-prefix-sid* [prefix]
| +--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 last-hop-behavior? enumeration {sid-last-hop-behavior}? | +--rw last-hop-behavior? enumeration {sid-last-hop-behavior}?
+--rw srgb* [lower-bound upper-bound] +--rw global-srgb
+--rw lower-bound uint32 +--rw srgb* [lower-bound upper-bound]
+--rw upper-bound uint32 +--rw lower-bound uint32
+--rw upper-bound uint32
augment /rt:routing-state/rt:routing-instance: augment /rt:routing-state/rt:routing-instance:
+--ro segment-routing +--ro segment-routing
+--ro node-capabilities +--ro node-capabilities
| +--ro transport-planes* [transport-plane] | +--ro transport-planes* [transport-plane]
| | +--ro transport-plane identityref | | +--ro transport-plane identityref
| +--ro segment-stack-push-limit? uint8 | +--ro segment-stack-push-limit? uint8
| +--ro readable-label-stack-depth? uint8 | +--ro readable-label-stack-depth? uint8
+--ro label-blocks* +--ro label-blocks*
| +--ro lower-bound? uint32 | +--ro lower-bound? uint32
| +--ro upper-bound? uint32 | +--ro upper-bound? uint32
skipping to change at page 8, line 16 skipping to change at page 8, line 16
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@2015-06-22.yang" <CODE BEGINS> file "ietf-segment-routing@2015-10-17.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-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} }
organization organization
"IETF SPRING Working Group"; "IETF SPRING Working Group";
contact contact
"WG List: &lt;mailto:spring@ietf.org&gt; "WG List: <mailto:spring@ietf.org>
Editor: Stephane Litkowski Editor: Stephane Litkowski
&lt;mailto:stephane.litkowski@orange.com&gt; <mailto:stephane.litkowski@orange.com>
Acee Lindem Author: Acee Lindem
&lt;mailto:acee@cisco.com&gt; <mailto:acee@cisco.com>
Yingzhen Qu Author: Yingzhen Qu
&lt;mailto:yiqu@cisco.com&gt; <mailto:yiqu@cisco.com>
Pushpasis Sarkar Author: Pushpasis Sarkar
&lt;mailto:psarkar@juniper.net&gt; <mailto:psarkar@juniper.net>
Ing-Wher Chen Author: Ing-Wher Chen
&lt;mailto:ing-wher.chen@ericsson.com&gt; <mailto:ing-wher.chen@ericsson.com>
Jeff Tantsura Author: Jeff Tantsura
&lt;jeff.tantsura@ericsson.com&gt; <jeff.tantsura@ericsson.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 2015-06-22 { revision 2015-10-17 {
description description "
" * Add per-protocol SRGB config feature
* Move SRBG config to a grouping
";
reference
"RFC XXXX: YANG Data Model for Segment Routing.";
}
revision 2015-06-22 {
description "
* Prefix SID config moved to * Prefix SID config moved to
connected-prefix-sid-map in global SR cfg connected-prefix-sid-map in global SR cfg
rather than IGP. 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 * Node flag deprecated from prefixSID
* SR interface cfg moved to protocol * SR interface cfg moved to protocol
* Adding multiple binding policies for SRMS * 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";
} }
/* Identities */
identity segment-routing-transport {
description
"Base identity for segment routing transport.";
}
identity segment-routing-transport-mpls {
base segment-routing-transport;
description
"This identity represents MPLS transport for segment
routing.";
}
/* Features */
feature mapping-server {
description
"Support of SRMS.";
}
feature sid-last-hop-behavior {
description
"Configurable last hop behavior.";
}
/* Groupings */
grouping controlplane-cfg {
container segment-routing {
leaf enabled {
type boolean;
default false;
description
"Enables segment-routing
protocol extensions.";
}
container bindings {
container advertise {
leaf-list policies {
type string;
description
"List of policies to be advertised.";
}
description
"Authorize the advertise
of local mappings in binding TLV.";
}
leaf receive {
type boolean;
default true;
description
"Authorize the reception and usage
of binding TLV.";
}
description
"Control of binding advertisement
and reception.";
}
description /* Identities */
"segment routing global config."; identity segment-routing-transport {
} description
description "Base identity for segment routing transport.";
"Defines protocol configuration."; }
} identity segment-routing-transport-mpls {
base segment-routing-transport;
description
"This identity represents MPLS transport for segment
routing.";
}
grouping sid-value-type { /* Features */
leaf value-type { feature mapping-server {
type enumeration { description
enum index { "Support of SRMS.";
description }
"The value will be
interpreted as an index.";
}
enum absolute {
description
"The value will become
interpreted as an absolute
value.";
}
}
default index;
description
"This leaf defines how value
must be interpreted.";
}
description
"Defines how the SID value is expressed.";
}
grouping ipv4-sid-cfg { feature sid-last-hop-behavior {
description
"Configurable last hop behavior.";
}
leaf prefix { feature protocol-srgb {
type inet:ipv4-prefix; description
description "Support per-protocol srgb configuration.";
"connected prefix sid."; }
}
uses sid-value-type; /* Groupings */
leaf start-sid { grouping srgb-cfg {
type uint32; list srgb {
mandatory true; key "lower-bound upper-bound";
description ordered-by user;
"Value associated with leaf lower-bound {
prefix. The value must type uint32;
be interpreted in the description
context of value-type."; "Lower value in the block.";
} }
leaf upper-bound {
type uint32;
description
"Upper value in the block.";
}
description
"List of global blocks to be
advertised.";
}
description
"Grouping for SRGB configuration.";
}
leaf range { grouping controlplane-cfg {
type uint32; container segment-routing {
description leaf enabled {
"Describes how many SIDs could be type boolean;
allocated."; default false;
} description
description "Enables segment-routing
"This grouping defines cfg of prefix SID."; protocol extensions.";
}
container bindings {
container advertise {
leaf-list policies {
type string;
description
"List of policies to be advertised.";
}
description
"Authorize the advertise
of local mappings in binding TLV.";
}
leaf receive {
type boolean;
default true;
description
"Authorize the reception and usage
of binding TLV.";
}
description
"Control of binding advertisement
and reception.";
}
} description
"segment routing global config.";
}
description
"Defines protocol configuration.";
}
grouping ipv6-sid-cfg { grouping sid-value-type {
leaf prefix { leaf value-type {
type inet:ipv6-prefix; type enumeration {
description enum index {
"connected prefix sid."; description
} "The value will be
interpreted as an index.";
}
enum absolute {
description
"The value will become
interpreted as an absolute
value.";
}
}
default index;
description
"This leaf defines how value
must be interpreted.";
}
description
"Defines how the SID value is expressed.";
}
uses sid-value-type; grouping ipv4-sid-cfg {
leaf start-sid { leaf prefix {
type uint32; type inet:ipv4-prefix;
mandatory true; description
description "connected prefix sid.";
"Value associated with }
prefix. The value must
be interpreted in the
context of value-type.";
}
leaf range { uses sid-value-type;
type uint32;
description
"Describes how many SIDs could be
allocated.";
}
description leaf start-sid {
"This grouping defines cfg of prefix SID."; type uint32;
} mandatory true;
description
"Value associated with
prefix. The value must
be interpreted in the
context of value-type.";
}
grouping last-hop-behavior { leaf range {
leaf last-hop-behavior { type uint32;
if-feature sid-last-hop-behavior; description
type enumeration { "Describes how many SIDs could be
enum explicit-null { allocated.";
description }
"Use explicit-null for the SID."; description
} "This grouping defines cfg of prefix SID.";
enum no-php { }
description
"Do no use PHP for the SID.";
}
enum php {
description
"Use PHP for the SID.";
}
} grouping ipv6-sid-cfg {
description leaf prefix {
"Configure last hop behavior."; type inet:ipv6-prefix;
} description
description "connected prefix sid.";
"Defines last hop behavior"; }
}
grouping igp-interface-cfg { uses sid-value-type;
container segment-routing {
container adjacency-sid { leaf start-sid {
list advertise-adj-group-sid { type uint32;
key group-id; mandatory true;
description
"Value associated with
prefix. The value must
be interpreted in the
context of value-type.";
}
leaf group-id { leaf range {
type uint32; type uint32;
description description
"Describes how many SIDs could be
allocated.";
}
"The value is an internal value to identify description
a group-ID. Interfaces with the same "This grouping defines cfg of prefix SID.";
group-ID will be bundled together. }
";
}
description
"Control advertisement of S flag.
Enable to advertise a common Adj-SID
for parallel links.";
}
leaf advertise-protection {
type enumeration {
enum "single" {
description
"A single Adj-SID is associated
with the adjacency and reflects
the protection configuration.";
}
enum "dual" {
description
"Two Adj-SIDs will be associated
with the adjacency if interface
is protected. In this case
one will be enforced with
backup flag set, the other
will be enforced to backup flag unset.
In case, protection is not configured,
a single Adj-SID will be advertised
with backup flag unset.";
} grouping last-hop-behavior {
} leaf last-hop-behavior {
description if-feature sid-last-hop-behavior;
"If set, the Adj-SID refers to an type enumeration {
adjacency being protected."; enum explicit-null {
} description
description "Use explicit-null for the SID.";
"Defines the adjacency SID properties."; }
} enum no-php {
description description
"container for SR interface cfg."; "Do no use PHP for the SID.";
} }
description enum php {
"Grouping for IGP interface cfg."; description
} "Use PHP for the SID.";
}
}
description
"Configure last hop behavior.";
}
description
"Defines last hop behavior";
}
/* Cfg */ grouping igp-interface-cfg {
container segment-routing {
augment "/rt:routing/rt:routing-instance" { container adjacency-sid {
description list advertise-adj-group-sid {
"This augments routing-instance key group-id;
configuration with segment-routing."; leaf group-id {
container segment-routing { type uint32;
leaf transport-type { description
type identityref {
base segment-routing-transport;
}
default "segment-routing-transport-mpls";
description "Dataplane to be used.";
}
container bindings {
container mapping-server {
if-feature mapping-server;
list policy {
key name;
leaf name {
type string;
description
"Name of the mapping policy.";
}
container ipv4 {
list mapping-entry {
key prefix;
uses ipv4-sid-cfg;
description "The value is an internal value to identify
"Mapping entries."; a group-ID. Interfaces with the same
} group-ID will be bundled together.
description ";
"IPv4 mapping entries."; }
} description
container ipv6 { "Control advertisement of S flag.
list mapping-entry { Enable to advertise a common Adj-SID
key prefix; for parallel links.";
uses ipv6-sid-cfg; }
description leaf advertise-protection {
"Mapping entries."; type enumeration {
} enum "single" {
description description
"IPv6 mapping entries."; "A single Adj-SID is associated
} with the adjacency and reflects
description the protection configuration.";
"Definition of mapping policy."; }
} enum "dual" {
description description
"Configuration of mapping-server "Two Adj-SIDs will be associated
local entries."; with the adjacency if interface
} is protected. In this case
container connected-prefix-sid-map { one will be enforced with
container ipv4 { backup flag set, the other
list ipv4-prefix-sid { will be enforced to backup flag unset.
key prefix; In case, protection is not configured,
uses ipv4-sid-cfg; a single Adj-SID will be advertised
uses last-hop-behavior; with backup flag unset.";
description }
"List of prefix SID }
mapped to IPv4 local prefixes."; description
} "If set, the Adj-SID refers to an
description adjacency being protected.";
"Parameters associated with IPv4 prefix SID"; }
} description
container ipv6 { "Defines the adjacency SID properties.";
list ipv6-prefix-sid { }
key prefix; description
uses ipv6-sid-cfg; "container for SR interface cfg.";
uses last-hop-behavior; }
description description
"List of prefix SID "Grouping for IGP interface cfg.";
mapped to IPv6 local prefixes."; }
} /* Cfg */
description
"Parameters associated with IPv6 prefix SID";
}
description
"Prefix SID configuration.";
}
description
"List of bindings.";
}
list srgb {
key "lower-bound upper-bound";
ordered-by user;
leaf lower-bound {
type uint32;
description
"Lower value in the block.";
}
leaf upper-bound {
type uint32;
description
"Upper value in the block.";
}
description
"List of global blocks to be
advertised.";
}
description
"segment routing global config.";
}
}
/* Operational states */ augment "/rt:routing/rt:routing-instance" {
description
"This augments routing-instance
configuration with segment-routing.";
container segment-routing {
leaf transport-type {
type identityref {
base segment-routing-transport;
}
default "segment-routing-transport-mpls";
description "Dataplane to be used.";
}
container bindings {
container mapping-server {
if-feature mapping-server;
list policy {
key name;
leaf name {
type string;
description
"Name of the mapping policy.";
}
container ipv4 {
list mapping-entry {
key prefix;
uses ipv4-sid-cfg;
augment "/rt:routing-state/rt:routing-instance" { description
description "Mapping entries.";
"This augments the operational states }
with segment-routing."; description
container segment-routing { "IPv4 mapping entries.";
container node-capabilities { }
list transport-planes { container ipv6 {
key transport-plane; list mapping-entry {
leaf transport-plane { key prefix;
type identityref { uses ipv6-sid-cfg;
base segment-routing-transport; description
} "Mapping entries.";
description }
"Transport plane supported"; description
} "IPv6 mapping entries.";
description }
"List of supported transport planes."; description
} "Definition of mapping policy.";
leaf segment-stack-push-limit { }
type uint8; description
description "Configuration of mapping-server
"Describes the number of segments local entries.";
that can be pushed by the node."; }
} container connected-prefix-sid-map {
leaf readable-label-stack-depth { container ipv4 {
type uint8; list ipv4-prefix-sid {
description key prefix;
"Number of MPLS labels that uses ipv4-sid-cfg;
can be read in the stack."; uses last-hop-behavior;
} description
description "List of prefix SID
"Shows the SR capability of the node."; mapped to IPv4 local prefixes.";
} }
list label-blocks { description
leaf lower-bound { "Parameters associated with IPv4 prefix SID";
type uint32; }
description container ipv6 {
"Lower bound of the label block."; list ipv6-prefix-sid {
} key prefix;
leaf upper-bound { uses ipv6-sid-cfg;
type uint32; uses last-hop-behavior;
description description
"Upper bound of the label block."; "List of prefix SID
} mapped to IPv6 local prefixes.";
leaf size { }
type uint32; description
description "Parameters associated with IPv6 prefix SID";
"Number of indexes in the block."; }
} description
leaf free { "Prefix SID configuration.";
type uint32; }
description description
"Number of indexes free in the block."; "List of bindings.";
} }
leaf used { container global-srgb {
type uint32; uses srgb-cfg;
description description
"Number of indexes used in the block."; "Global SRGB configuration.";
} }
description description
"List of labels blocks currently "segment routing global config.";
in use."; }
} }
container global-sid-list { /* Operational states */
list sid { augment "/rt:routing-state/rt:routing-instance" {
key "target sid source source-protocol binding-type"; description
ordered-by system; "This augments the operational states
leaf target { with segment-routing.";
type string; container segment-routing {
description container node-capabilities {
"Defines the target of the binding. list transport-planes {
It can be a prefix or something else."; key transport-plane;
} leaf transport-plane {
leaf sid { type identityref {
type uint32; base segment-routing-transport;
description }
"Index associated with the prefix."; description
} "Transport plane supported";
leaf algorithm { }
type uint8; description
description "List of supported transport planes.";
"Algorithm to be used for the prefix }
SID."; leaf segment-stack-push-limit {
} type uint8;
leaf source { description
type inet:ip-address; "Describes the number of segments
description that can be pushed by the node.";
"IP address of the router than own }
the binding."; leaf readable-label-stack-depth {
} type uint8;
leaf used { description
type boolean; "Number of MPLS labels that
description can be read in the stack.";
"Defines if the binding is used }
in forwarding plane."; description
} "Shows the SR capability of the node.";
leaf source-protocol { }
type leafref { list label-blocks {
path "/rt:routing-state/rt:routing-instance/" + leaf lower-bound {
"rt:routing-protocols/rt:routing-protocol/rt:name"; type uint32;
} description
description "Lower bound of the label block.";
"Rtg protocol that owns the binding"; }
} leaf upper-bound {
leaf binding-type { type uint32;
type enumeration { description
enum prefix-sid { "Upper bound of the label block.";
description }
"Binding is learned from leaf size {
a prefix SID."; type uint32;
} description
enum binding-tlv { "Number of indexes in the block.";
description
"Binding is learned from
a binding TLV.";
} }
} leaf free {
description type uint32;
"Type of binding."; description
} "Number of indexes free in the block.";
description }
"Binding."; leaf used {
type uint32;
description
"Number of indexes used in the block.";
}
description
"List of labels blocks currently
in use.";
}
} container global-sid-list {
description list sid {
"List of prefix and SID associations."; key "target sid source source-protocol binding-type";
} ordered-by system;
description leaf target {
"Segment routing operational states."; type string;
} description
} "Defines the target of the binding.
It can be a prefix or something else.";
}
leaf sid {
type uint32;
description
"Index associated with the prefix.";
}
leaf algorithm {
type uint8;
description
"Algorithm to be used for the prefix
SID.";
}
leaf source {
type inet:ip-address;
description
"IP address of the router than own
the binding.";
}
leaf used {
type boolean;
description
"Defines if the binding is used
in forwarding plane.";
/* Notifications */ }
leaf source-protocol {
type leafref {
path "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol/rt:name";
}
description
"Rtg protocol that owns the binding";
}
leaf binding-type {
type enumeration {
enum prefix-sid {
description
"Binding is learned from
a prefix SID.";
}
enum binding-tlv {
description
"Binding is learned from
a binding TLV.";
}
}
description
"Type of binding.";
}
description
"Binding.";
notification segment-routing-global-sid-collision { }
leaf received-target { description
type string; "List of prefix and SID associations.";
description }
"Target received in the controlplane that description
caused SID collision."; "Segment routing operational states.";
} }
leaf original-target { }
type string;
description
"Target already available in database that have the same SID
as the received target.";
}
leaf index {
type uint32;
description
"Value of the index used by two different prefixes.";
}
leaf routing-protocol {
type leafref {
path "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-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:routing-instance/" +
"rt:routing-protocols/rt:routing-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. ";
}
} /* Notifications */
<CODE ENDS> notification segment-routing-global-sid-collision {
leaf received-target {
type string;
description
"Target received in the controlplane that
caused SID collision.";
}
leaf original-target {
type string;
description
"Target already available in database that have the same SID
as the received target.";
}
leaf index {
type uint32;
description
"Value of the index used by two different prefixes.";
}
leaf routing-protocol {
type leafref {
path "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-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:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol/rt:name";
}
description
"Routing protocol reference that received the event.";
}
description
"This notification is sent when a binding
is received, containing a segment index
which is out of the local configured ranges.
The notification generation must be throttled with at least
a 5 second gap. ";
}
}
<CODE ENDS>
8. Security Considerations 8. Security Considerations
TBD. TBD.
9. Acknowledgements 9. Acknowledgements
Authors would like to thank Derek Yeung, Acee Lindem, Greg Hankins, Authors would like to thank Derek Yeung, Acee Lindem, Greg Hankins,
Hannes Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge for their Hannes Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge for their
contributions. contributions.
 End of changes. 52 change blocks. 
564 lines changed or deleted 579 lines changed or added

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