draft-zhang-i2rs-l1-topo-yang-model-00.txt   draft-zhang-i2rs-l1-topo-yang-model-01.txt 
I2RS Working Group Xian Zhang I2RS Working Group Xian Zhang
Internet-Draft Baoquan Rao Internet-Draft Baoquan Rao
Intended status: Standards Track Huawei Intended status: Standards Track Huawei
Xufeng Liu
Ericsson
Expires: August 13, 2015 February 12, 2015 Expires: September 9, 2015 March 9, 2015
A YANG Data Model for Layer 1 Network Topology A YANG Data Model for Layer 1 Network Topology
draft-zhang-i2rs-l1-topo-yang-model-00.txt draft-zhang-i2rs-l1-topo-yang-model-01.txt
Abstract Abstract
This draft describes a YANG data model to manipulate the topologies This draft describes a YANG data model to manipulate the topologies
of a layer 1 network. It is independent of data plan technologies of a layer 1 network. It is independent of data plan technologies
and control plane protocols. It can be augmented to include and control plane protocols. It can be augmented to include
technology-specific data, such as for Optical Transport Networks technology-specific data, such as for Optical Transport Networks
(OTN). (OTN).
Status of this Memo Status of this Memo
skipping to change at page 1, line 42 skipping to change at page 1, line 44
documents at any time. It is inappropriate to use Internet-Drafts documents at any time. It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in as reference material or to cite them other than as "work in
progress." progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 13, 2015. This Internet-Draft will expire on September 9, 2015.
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
carefully, as they describe your rights and restrictions with carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described in document must include Simplified BSD License text as described in
skipping to change at page 2, line 20 skipping to change at page 2, line 22
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described in document must include Simplified BSD License text as described in
Section 4.e of the Trust Legal Provisions and are provided without Section 4.e of the Trust Legal Provisions and are provided without
warranty as described in the Simplified BSD License. warranty as described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction ................................................ 2 1. Introduction ................................................ 2
2. Conventions used in this document............................ 3 2. Conventions used in this document............................ 3
3. Terminology and Notations.................................... 3 3. Terminology and Notations.................................... 3
4. YANG Data Model for Layer 1 Topology .........................3 4. YANG Data Model for Layer 1 Topology......................... 4
4.1. YANG Tree ............................................. 3 4.1. YANG Tree ............................................. 4
4.1.1. Notification.......................................5 4.1.1. The node and link list............................. 5
4.2. YANG Code ............................................. 5 4.1.2. Notification....................................... 5
5. Security Considerations..................................... 18 4.2. YANG Code .............................................. 5
6. Manageability Considerations................................ 18 5. Security Considerations .....................................21
7. IANA Considerations ........................................ 18 6. Manageability Considerations ................................21
8. Acknowledgements ........................................... 18 7. IANA Considerations ........................................ 21
9. References ................................................. 18 8. Acknowledgements ........................................... 21
9.1. Normative References.................................. 18 9. References ................................................. 22
9.2. Informative References................................ 19 9.1. Normative References .................................. 22
10. Contributors' Addresses.................................... 19 9.2. Informative References ................................ 22
11. Authors' Addresses .........................................19 10. Contributors' Addresses ....................................22
11. Authors' Addresses .........................................22
1. Introduction 1. Introduction
This document defines a data model of a layer one network topology, This document defines a data model of a layer one network topology,
using YANG [RFC6020]. The model can be used by an application via using YANG [RFC6020]. The model can be used by an application via
the I2RS interface [draft-ietf-i2rs-architecture], in the following the I2RS interface [draft-ietf-i2rs-architecture], in the following
ways (but not limited to): ways (but not limited to):
o to obtain a whole view of the network topology information of o to obtain a whole view of the network topology information of
its interest; its interest;
skipping to change at page 2, line 46 skipping to change at page 3, line 4
This document defines a data model of a layer one network topology, This document defines a data model of a layer one network topology,
using YANG [RFC6020]. The model can be used by an application via using YANG [RFC6020]. The model can be used by an application via
the I2RS interface [draft-ietf-i2rs-architecture], in the following the I2RS interface [draft-ietf-i2rs-architecture], in the following
ways (but not limited to): ways (but not limited to):
o to obtain a whole view of the network topology information of o to obtain a whole view of the network topology information of
its interest; its interest;
o to receive notifications with regard to the information of the o to receive notifications with regard to the information of the
change of the network topology of its interest; change of the network topology of its interest;
o to enforce the establishment/update of a network topology with o to enforce the establishment/update of a network topology with
the characteristic specified in the data model; the characteristic specified in the data model;
This model is confined to describe layer 1 networks, but it is data This model is confined to describe layer 1 networks, but it is data
plane technology independent and can be augmented to specify the plane technology independent and can be augmented to specify the
topology for networks such as Optical Transport networks (OTN), topology for networks such as Optical Transport networks (OTN),
Synchronous Digital Network/ (SDH/SONET). Synchronous Digital Network/ (SDH/SONET) DWDM (Dense Wavelength
Division Multiplexing).
[Editor's Note: The authors are aware that there are other drafts [Editor's Note: The authors are aware that there are other drafts
closely relating to this draft. Coordination works have been closely relating to this draft. Coordination works have been
undergoing to get these drafts aligned. ] undergoing to get these drafts aligned. The authors are working on
obtaining layer one topology by augmenting the data model proposed
in draft-clemm-i2rs-yang-network-topo in the next version of this
draft.]
2. Conventions used in this document 2. Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119 [RFC2119]. document are to be interpreted as described in RFC-2119 [RFC2119].
3. Terminology and Notations 3. Terminology and Notations
A simplified graphical representation of the data model is used in A simplified graphical representation of the data model is used in
skipping to change at page 3, line 44 skipping to change at page 4, line 9
o Parentheses enclose choice and case nodes, and case nodes are o Parentheses enclose choice and case nodes, and case nodes are
also marked with a colon (":"). also marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not o Ellipsis ("...") stands for contents of subtrees that are not
shown. shown.
4. YANG Data Model for Layer 1 Topology 4. YANG Data Model for Layer 1 Topology
4.1. YANG Tree 4.1. YANG Tree
module: layer-one-topology module: ietf-layer1topology
+--rw layer-one-topology +--rw layer-one-topology
+--rw topology* [topology-id] +--rw topology* [topology-id]
+--rw topology-id topology-id +--rw topology-id topology-id
+--rw name? string +--rw name? string
+--rw supporting-topology* [topo-ref] +--rw supporting-topology* [topo-ref]
| +--rw topo-ref leafref | +--rw topo-ref leafref
+--rw node* [node-id] +--rw node* [node-id]
| +--rw node-id node-id | +--rw node-id node-id
| +--rw interface* [interface-id] | +--rw interface* [interface-id]
| | +--rw interface-id interface-id | | +--rw interface-id interface-id
| | +--rw adaptation-capability! | | +--rw interface-name? if:interface-state-ref
| +--rw connectivity-matrix* [id] | | +--rw adaptation-capability
| +--rw id uint32 | +--rw connectivity-matrix* [id]
| +--rw type? enumeration | +--rw id uint32
| +--rw in-interface* [interface-ref] | +--rw type? enumeration
| | +--rw interface-ref leafref | +--rw in-interface* [interface-ref]
| +--rw out-interface* [interface-ref] | | +--rw interface-ref leafref
| | +--rw interface-ref leafref | +--rw out-interface* [interface-ref]
| +--rw dir? enumeration | | +--rw interface-ref leafref
+--rw link* [link-id] | +--rw dir? enumeration
+--rw link-id link-id +--rw link* [link-id]
+--rw local +--rw link-id link-id
| +--rw local-node? leafref +--rw local
| +--rw local-interface? leafref | +--rw local-node leafref
+--rw remote | +--rw local-interface leafref
| +--rw remote-node? leafref +--rw remote
| +--rw remote-interface? leafref | +--rw remote-node leafref
+--rw supporting-path* [supporting-path-index] | +--rw remote-interface leafref
| +--rw supporting-path-index uint32 +--rw supporting-path* [supporting-path-index]
| +--rw topo-ref? leafref | +--rw supporting-path-index uint32
| +--rw server-path-identifier! | +--rw topo-ref? leafref
| +--rw server-path-srlg | +--rw server-path-identifier
| +--rw srlg-values* [srlg-value] | +--rw server-path-srlg
| +--rw srlg-value uint32 | +--rw srlg-values* [srlg-value]
+--rw te-attributes | +--rw srlg-value uint32
+--rw link-index? uint64 +--rw attributes
+--ro information-source? enumeration +--ro information-source? enumeration
+--ro credibility-preference? uint16 +--ro credibility-preference? uint16
+--rw admin-status? enumeration +--rw admin-status? enumeration
+--ro oper-status? enumeration +--ro oper-status? enumeration
+--rw area-id? binary +--rw area-id? binary
+--rw max-link-bandwidth? decimal64 +--rw max-link-bandwidth? decimal64
+--rw unreserved-bandwidth* [priority] +--rw unreserved-bandwidth* [priority]
| +--rw priority uint8 | +--rw priority uint8
| +--rw bandwidth? decimal64 | +--rw bandwidth? decimal64
+--ro distance? uint32 +--ro distance? uint32
+--rw te-default-metric? uint32 +--rw te-metric? uint32
+--rw link-protection-type? enumeration +--rw link-protection-type? enumeration
+--rw interface-switching-capability* [switching- +--rw switching-capability? switching-
capability] capabilities
| +--rw switching-capability switching-capabilities +--rw encoding? encoding-types
| +--rw encoding? encoding-types +--rw switching-capability-specific
| +--rw max-lsp-bandwidth* [priority] +--rw srlg
| | +--rw priority uint8 +--rw srlg-values* [srlg-value]
| | +--rw bandwidth? decimal64 +--rw srlg-value uint32
| +--rw switching-capability-specific-information! notifications:
+--rw srlg +---n link-failure
+--rw srlg-values* [srlg-value] | +--ro topology-id leafref
+--rw srlg-value uint32 | +--ro link-id leafref
4.1.1. Notification | +--ro admin-status? leafref
| +--ro oper-status leafref
+---n node-failure
+--ro topology-id leafref
+--ro link-id leafref
[TBD] 4.1.1. The node and link list
The Layer One Topology module contains all the nodes and links
information pertaining to a layer one network. The node is
identified by the node-id, which is unique within the network.
Within the nodes, all the interfaces pertaining to this node and
their potential capabilities/constraints SHOULD be present. Besides
this, the constraints associated with a node as a whole SHOULD also
be present, such as the connectivity constraints introduced due to
abstraction or due to the hardware limitations. The link is
identified by the link-id, which is unique within a node. It
includes the association with nodes as well as interfaces. Moreover,
it includes information that is of interest to the I2RS client, for
purposes, such as path computation, monitoring etc.
4.2. YANG Code 4.1.2. Notification
<CODE BEGINS> Two types of notifications are introduced: node failure and link
failure.
module layer-one-topology { 4.2. YANG Code
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:layer-one-topology"; <CODE BEGINS> file "l1topo.yang"
prefix l1topo; module ietf-layer1topology {
yang-version 1;
import ietf-inet-types { namespace
prefix inet; "urn:ietf:params:xml:ns:yang:ietf-layer1topology";
} prefix "l1topo";
organization "Internet Engineering Task Force (IETF) I2RS WG"; import ietf-inet-types {
contact prefix "inet";
"ID-draft editor: zhang.xian@huawei.com"; }
description import ietf-interfaces {
"This module defines a data-plan technology/protocol independent prefix "if";
Layer One topology data model."; }
revision 2015-02-11 { organization
description "Internet Engineering Task Force (IETF) I2RS WG";
"Initial version"; contact
"ID-draft editor: zhang.xian@huawei.com";
reference description
"TBD: draft-zhang-i2rs-l1-topo-yang-model-00.txt"; "This module defines a data-plan technology/protocol
} independent Layer One topology data model.";
/*
* Typedefs
*/
typedef topology-id { revision 2015-03-09 {
type inet:uri; description
} "Initial version.";
reference
"draft-zhang-i2rs-l1-topo-yang-model-01.txt";
}
typedef node-id { /*
type inet:ip-address; * Typedefs
} */
typedef interface-id { typedef topology-id {
type union { type inet:uri;
type inet:ip-address; // IPv4 or IPv6 address description "the identifier for a topology";
type int32; // Unnumbered }
}
description
"the identifier of an interface within a node, supporting both
numbered/unumbered";
}
typedef link-id { typedef node-id {
type inet:ip-address;
description
"the identifier for a node";
}
typedef interface-id {
type union {
type inet:ip-address; // IPv4 or IPv6 address type inet:ip-address; // IPv4 or IPv6 address
description type int32; // Un-numbered
"the identifier of a link"; }
} description
"the identifier of an interface within a node, supporting both
numbered/unnumbered";
}
typedef switching-capabilities { typedef link-id {
type enumeration { type inet:ip-address; // IPv4 or IPv6 address
enum "psc-1" { description "the identifier of a link";
value 1; }
description
"Packet-Switch Capable-1 (PSC-1)";
}
enum "evpl" {
value 30;
description
"Ethernet Virtual Private Line (EVPL)";
}
enum "pbb-te"{ typedef switching-capabilities {
value 40; type enumeration {
description enum "psc-1" {
"802_1 PBB-TE"; value 1;
} description
enum "l2sc" { "Packet-Switch Capable-1 (PSC-1)";
value 51; }
description enum "evpl" {
"Layer-2 Switch Capable (L2SC)"; value 30;
} description
enum "tdm" { "Ethernet Virtual Private Line (EVPL)";
value 100; }
description
"Time-Division-Multiplex Capable (TDM)";
}
enum "otn-tdm" {
value 110;
description
"OTN-TDM Capable";
}
enum "lsc" {
value 150;
description
"Lambda-Switch Capable (LSC)";
}
enum "fsc" {
value 200;
description
"Fiber-Switch Capable (FSC)";
}
}
description enum "pbb-te"{
"Switching capability of an interface. value 40;
Only a subset of the above-mentioned values are applicable to description
Layer 1 network. Here it is included for completeness and will later "802_1 PBB-TE";
be updated if a base model is augmented to create layer 1 network }
topology YANG data model.";
reference enum "l2sc" {
"The definition of switching types, their values and the value 51;
relevant RFCs (i.e., RFC3471, 4328) can be found at: description
http://www.iana.org/assignments/gmpls-sig-parameters/gmpls- "Layer-2 Switch Capable (L2SC)";
sig-parameters.xhtml#gmpls-sig-parameters-3"; }
} enum "tdm" {
value 100;
description
"Time-Division-Multiplex Capable (TDM)";
}
enum "otn-tdm" {
value 110;
description
"OTN-TDM Capable";
}
enum "lsc" {
value 150;
description
"Lambda-Switch Capable (LSC)";
}
enum "fsc" {
value 200;
description
"Fiber-Switch Capable (FSC)";
}
}
typedef encoding-types { description
type enumeration { "Switching capability of an interface.
enum "packet" { Only a subset of the above-mentioned values are applicable
value 1; to Layer 1 network.
description Here it is included for completeness and will later be
"Packet"; updated if a base model is augmented to create layer 1
} network topology YANG data model.";
enum "ethernet" {
value 2;
description
"Ethernet";
}
enum "pdh" {
value 3;
description
"PDH";
}
enum "sdh-sonet" {
value 5;
description
"SDH/SONET";
}
enum "digital-wrapper" {
value 7;
description
"Digital Wrapper";
}
enum "lambda" {
value 8;
description
"Lambda(photonic)";
}
enum "fiber" {
value 9;
description
"Fiber";
}
enum "fiber-channel" {
value 11;
description
"FiberChannel";
}
enum "oduk" {
value 12;
description
"G.709 OKUk (Digital Path)";
}
enum "optical-channel" {
value 13;
description
"G.709 Optical Channel";
}
enum "line" {
value 14;
description
"Line (e.g., 8B/10B)";
}
}
description
"The encoding type supported by an interface or link.
Not all encoding types are applicable to Layer one network
nodes. They are included here for completeness and will be updated
if a base model is available to augment so as to build a layer-one
specific YANG data model.";
reference
"The definition of encoding types, their values and the
relevant RFCs (RFC3471, RFC4328, RFC6004) can be found at
http://www.iana.org/assignments/gmpls-sig-parameters/gmpls-sig-
parameters.xhtml#gmpls-sig-parameters-3";
}
/* reference
* Groupings "The definition of switching types, their values and the
*/ relevant RFCs can be found at:
http://www.iana.org/assignments/gmpls-sig-parameters/gmpls
-sig-parameters.xhtml#gmpls-sig-parameters-3";
}
grouping srlg-attribute { typedef encoding-types {
description type enumeration {
"Shared Risk Link Group Attributes"; enum "packet" {
reference value 1;
"RFC 4203: OSPF Extensions in Support of Generalized Multi- description "Packet";
Protocol Label Switching (GMPLS)"; }
list srlg-values { enum "ethernet" {
key "srlg-value"; value 2;
leaf srlg-value { description "Ethernet";
type uint32; }
} enum "pdh" {
} value 3;
} description "PDH";
}
enum "sdh-sonet" {
value 5;
description "SDH/SONET";
}
enum "digital-wrapper" {
value 7;
description "Digital Wrapper";
}
enum "lambda" {
value 8;
description "Lambda(photonic)";
}
enum "fiber" {
value 9;
description "Fiber";
}
enum "fiber-channel" {
value 11;
description "FiberChannel";
}
enum "oduk" {
value 12;
description
"G.709 OKUk (Digital Path)";
}
enum "optical-channel" {
value 13;
description "G.709 Optical Channel";
}
enum "line" {
value 14;
description "Line (e.g., 8B/10B)";
}
}
description
"The encoding type supported by an interface or link.
Not all encoding types are applicable to Layer one network
nodes. They are included here for completeness and will be
updated if a base model is available to augment
so as to build a layer-one specific YANG data model.";
reference
"The definition of encoding types, their values and the
relevant RFCs can be found at http://www.iana.org/
assignments/gmpls-sig-parameters/gmpls-sig-parameters.xhtml#
gmpls-sig-parameters-3";
}
/* /*
* Configuration data nodes * Groupings
*/ */
container layer-one-topology { grouping srlg-attribute {
list topology { description
key "topology-id"; "Shared Risk Link Group Attributes";
leaf topology-id { reference
type topology-id; "RFC 4203: OSPF Extensions in Support of Generalized
Multi-Protocol Label Switching (GMPLS)";
list srlg-values {
key "srlg-value";
leaf srlg-value {
type uint32;
description "SRLG value";
}
description
"the SRLG value list";
}
}
} /*
* Configuration data nodes
*/
leaf name { container layer-one-topology {
type string; description
} "this container holds all the inforamtion to layer
one network. It includes one or multiple topologies";
list supporting-topology { list topology {
key "topo-ref"; key "topology-id";
leaf topo-ref {
type leafref {
path "/layer-one-topology/topology/topology-id";
}
description
"a Layer-One network might be supported by a lower layer
network and this is a pointer to the suporting topology if there is
one";
}
}
list node { description
key "node-id"; "This contains all the information to one topoogy";
leaf node-id {
type node-id;
}
list interface {
key "interface-id";
leaf interface-id {
type interface-id;
}
container adaptation-capability {
presence "to define adaptation capability for different
technologies.";
description
"TBD";
}
}
list connectivity-matrix {
key "id";
description leaf topology-id {
"This describes the connectivity contraints within a type topology-id;
node in the network. It can be one matrix or a set of matrixes. description "topology identifier";
Further details, read the reference provided below."; }
reference
"https://tools.ietf.org/html/draft-ietf-ccamp-general-
constraint-encode-16 Section 2.1";
leaf id {
type uint32;
}
leaf type {
type enumeration {
enum fixed {
value 0;
}
enum dynamic {
value 1;
}
}
description leaf name {
"This field describes the attribute of a connectivity type string;
matrix, i.e., whether it is fixed or switched."; description "topology name";
} }
list in-interface {
key "interface-ref";
description list supporting-topology {
"This list describes a (sub)-set of ingoing- key "topo-ref";
interfaces within a node that may have connectivity constraints. leaf topo-ref {
Note: directionality may not be relevant and it is type leafref {
decided by the dir parameter."; path "/layer-one-topology/topology/topology-id";
}
description
"a Layer-One network might be supported by a lower
layer network and this is a pointer to the suporting
topology if there is one";
}
description "underlaying topology information";
}
leaf interface-ref { list node {
type leafref { key "node-id";
path "/layer-one- description "the list of nodes within the topology";
topology/topology/node/interface/interface-id";
}
}
}
list out-interface {
key "interface-ref";
description leaf node-id {
"This list describes a (sub)-set of ingoing- type node-id;
interfaces within a node that may have connectivity constraints. description "node identifier";
Note: directionality may not be relevant and it is }
decided by the dir parameter.";
leaf interface-ref { list interface {
type leafref { key "interface-id";
path "/layer-one- leaf interface-id {
topology/topology/node/interface/interface-id"; type interface-id;
} description "interface identifier";
}
leaf interface-name {
type if:interface-state-ref;
description
"Name of the incoming interface.";
}
container adaptation-capability {
description
"TBD -to add for technology specific information";
}
description "interface list pertaining to a node";
}
} list connectivity-matrix {
} key "id";
leaf dir{
type enumeration{
enum "uni-dir"{
description
"the matrix is unidirectional.";
}
enum "bi-dir"{
description
"this matrix is bidirecdtional.";
}
}
}
}
}
list link { description
key "link-id"; "This describes the connectivity contraints within
leaf link-id { a node in the network. It can be one matrix or a set
type link-id; of matrixes. Further details, read the reference
description provided below.";
"remaining issue: if there is no IP addresses reference
associated with this link, "https://tools.ietf.org/html/draft-ietf-ccamp-general
what would be the key?"; -constraint-encode-16 Section 2.1";
}
container local { leaf id {
leaf local-node { type uint32;
type leafref { description "matrix id";
path "/l1topo:layer-one-topology/topology/node/node-id"; }
leaf type {
type enumeration {
enum fixed {
value 0;
description "Fixed";
}
enum dynamic {
value 1;
description "Dynamic/changeable";
} }
} }
leaf local-interface { description
"This field describes the attribute of a
connectivity matrix, i.e., whether it is
fixed or switched.";
}
list in-interface {
key "interface-ref";
description
"This list describes a (sub)-set of ingoing
interfaces within a node that may have
connectivity constraints.
Note: directionality may not be relevant
and it is decided by the dir parameter.";
leaf interface-ref {
type leafref { type leafref {
path "/l1topo:layer-one- path "/layer-one-topology/topology/node/" +
topology/topology/node/interface/interface-id"; "interface/interface-id";
} }
description "reference to an incoming interface";
} }
} }
container remote { list out-interface {
leaf remote-node { key "interface-ref";
description
"This list describes a (sub)-set of outgoing
interfaces within a node that may have
connectivity constraints.
Note: directionality may not be relevant and
it is decided by the dir parameter.";
leaf interface-ref {
type leafref { type leafref {
path "/l1topo:layer-one-topology/topology/node/node- path "/layer-one-topology/topology/node/"+
id"; "interface/interface-id";
} }
description "reference to an outgoing interface";
} }
leaf remote-interface { }
type leafref { leaf dir{
path "/l1topo:layer-one- type enumeration{
topology/topology/node/interface/interface-id"; enum "uni-dir"{
description
"the matrix is unidirectional.";
}
enum "bi-dir"{
description
"this matrix is bidirecdtional.";
} }
} }
} description
list supporting-path { "the directionality attribute of a connc. matrix.";
key "supporting-path-index"; }
leaf supporting-path-index { }
type uint32; }// end of node data node
list link {
key "link-id";
description "list of the links within a topology";
leaf link-id {
type link-id;
description
"remaining issue: if there is no IP addresses
associated with this link, what would be the key?";
}
container local {
description "near end information for this link";
leaf local-node {
type leafref {
path "/l1topo:layer-one-topology/topology"+
"/node/node-id";
} }
leaf topo-ref { mandatory true;
type leafref { description "refence to the local node";
path "/l1topo:layer-one-topology/topology/topology-id";
} }
leaf local-interface {
type leafref {
path "/l1topo:layer-one-topology/topology/node/"
+"interface/interface-id";
} }
container server-path-identifier { mandatory true;
presence "Define server path identifier."; description "reference to the local interface";
}
}
container remote {
description "far end information of this link";
leaf remote-node {
type leafref {
path "/l1topo:layer-one-topology/topology"+
"/node/node-id";
} }
container server-path-srlg { mandatory true;
uses srlg-attribute; description "reference to the remote node";
}
leaf remote-interface {
type leafref {
path "/l1topo:layer-one-topology/topology/node/"
+ "interface/interface-id";
} }
} mandatory true;
description "reference to the remote interface";
}
}
list supporting-path {
key "supporting-path-index";
container te-attributes { description
leaf link-index { "information pertaining to the underlying path if
type uint64; there is any";
leaf supporting-path-index {
type uint32;
description "the identifer of the supporting path";
}
leaf topo-ref {
type leafref {
path "/l1topo:layer-one-topology/"+
"topology/topology-id";
} }
leaf information-source { description "reference to the underlying topology";
type enumeration {
enum "unknown" {
description
"The source is unknown";
}
enum "locally-configured" {
description
"Configured TE link";
}
enum "ospfv2" {
description
"OSPFv2";
}
enum "ospfv3" {
description
"OSPFv3";
}
enum "isis" {
description
"ISIS";
}
}
config false;
description }
"Indicates the source of the information about the link. container server-path-identifier {
remaining issue: if configuration of a link is allowed, description "TBD";
what additional types are needed to add?"; }
container server-path-srlg {
uses srlg-attribute;
description "the SRLG values of the server path";
}
}
container attributes {
description "additional information of the link";
leaf information-source {
type enumeration {
enum "unknown" {
description "The source is unknown";
}
enum "locally-configured" {
description "Configured TE link";
}
enum "ospfv2" {
description "OSPFv2";
}
enum "ospfv3" {
description "OSPFv3";
}
enum "isis" {
description "ISIS";
}
} }
leaf credibility-preference { config false;
type uint16;
config false; description
"Indicates the source of the information about
the link. remaining issue: if configuration of
a link is allowed, what additional types are
needed to add?";
}
leaf credibility-preference {
type uint16;
config false;
description "the level of credibility";
}
leaf admin-status {
type enumeration {
enum up {
value 1;
description "up";
}
enum down {
value 2;
description "down";
}
enum testing {
value 3;
description "testing - in some test mode.";
}
} }
leaf admin-status { description
type enumeration { "The adminstrative state of the link.";
enum up { reference
value 1;
description
"up";
}
enum down {
value 2;
description
"down";
}
enum testing {
value 3;
description
"testing - in some test mode.";
}
}
description
"The adminstrative state of the link.";
reference
"RFC2863: The Interfaces Group MIB."; "RFC2863: The Interfaces Group MIB.";
} }
leaf oper-status { leaf oper-status {
type enumeration { type enumeration {
enum up { enum up {
value 1; value 1;
description description "up";
"up"; }
} enum down {
enum down { value 2;
value 2; description "down";
description }
"down"; enum testing {
} value 3;
enum testing { description "testing - in some test mode";
value 3; }
description enum unknown {
"testing - in some test mode"; value 4;
} description "unknown - status cannot be
enum unknown { determined for some reason.";
value 4; }
description enum dormant{
"unknown - status cannot be determined for some value 5;
reason."; description "dormant";
} }
enum dormant{ }
value 5; config false;
} description
} "The current operational state of the link.";
config false; reference
description
"The current operational state of the link.";
reference
"RFC2863: The Interfaces Group MIB."; "RFC2863: The Interfaces Group MIB.";
}
leaf area-id {
type binary {
length 1..13;
}
description
"This object indicates the area identifier of the IGP,
it can identify either a OSPF or ISIS area.";
reference
"RFC4920: Crankback Signaling Extensions for MPLS and
GMPLS RSVP-TE.";
}
leaf max-link-bandwidth { }
type decimal64 { leaf area-id {
fraction-digits 2; type binary {
} length 1..13;
description }
description
"This object indicates the area identifier of
the IGP. If OSPF is used to advertise LSA,
this represents an ospfArea. If IS-IS is used,
this represents an area address.
Otherwise, this is zero.";
reference
"RFC4920: Crankback Signaling Extensions for MPLS
and GMPLS RSVP-TE.";
}
leaf max-link-bandwidth {
type decimal64 {
fraction-digits 2;
}
description
"the max bandwidth supported by this link"; "the max bandwidth supported by this link";
} }
list unreserved-bandwidth { list unreserved-bandwidth {
key "priority"; key "priority";
max-elements "8"; max-elements "8";
description description
"This describes the unreserved bandwidth (in "This describes the unreserved bandwidth (in
Bytes/second) on a level basis ( level 0-7)."; Bytes/second) on a level basis ( level 0-7).";
leaf priority { leaf priority {
type uint8{ type uint8{
range "0..7"; range "0..7";
} }
} description "priority level";
leaf bandwidth { }
type decimal64 { leaf bandwidth {
fraction-digits 2; type decimal64 {
} fraction-digits 2;
} }
} description "badnwidth per priority";
}
}
leaf distance { leaf distance {
type uint32; type uint32;
units "kilometers"; units "kilometers";
config false; config false;
description description
"the distance this link spans."; "the distance this link spans.";
} }
leaf te-default-metric { leaf te-metric {
type uint32; type uint32;
} description "the metric supported by the link";
}
leaf link-protection-type { leaf link-protection-type {
type enumeration { type enumeration {
enum "extra-traffic" { enum "extra-traffic" {
description "Extra traffic"; value 1;
} description "Extra traffic";
enum "unprotected" { }
description "unprotected"; enum "unprotected" {
} value 2;
enum "shared" { description "unprotected";
description "Shared"; }
} enum "shared" {
enum "1-for-1" { value 4;
description "Dedicated one for one protection"; description "Shared";
} }
enum "1-plus-1" { enum "1-for-1" {
description "Dedicated one plus one protection"; value 8;
} description "Dedicated one for one protection";
enum "enhanced" { }
description "a protection type that is more reliable enum "1-plus-1" {
than Dedicated 1-plus-1, e.g., 4 fiber BLSR/MS-SPRING."; value 16;
} description "Dedicated one plus one protection";
} }
description enum "enhanced" {
"Link Protection Type configured for this link"; value 32;
reference description "a protection type that is
"RFC3471: Generalized MUlti-Protocol Label Switching more reliable than Dedicated 1+1,
(GMPLS) Signaling Functional Description."; e.g.,4 fiber BLSR/MS-SPRING.";
} }
list interface-Switching-capability { }
key "switching-capability"; description
leaf switching-capability { "Link Protection Type configured for this link";
type switching-capabilities; reference
} "RFC3471: Generalized MUlti-Protocol Label
leaf encoding { Switching (GMPLS) Signaling Functional
type encoding-types; Description.";
description
"the encoding type supported by this link.";
}
list max-lsp-bandwidth {
key "priority";
max-elements "8";
leaf priority {
type uint8 {
range "0..7";
}
}
leaf bandwidth {
type decimal64 {
fraction-digits 2;
}
}
description
"remaining issue: to check how is used.";
}
container switching-capability-specific-information {
presence "to define switch capability specific
information for technology specific network (e.g., OTN).";
}
}
container srlg {
uses srlg-attribute;
}
}
}
} }
}
}
<CODE ENDS>
leaf switching-capability {
type switching-capabilities;
description
"the switching capability supported by the link";
}
leaf encoding {
type encoding-types;
description
"the encoding type supported by this link.";
}
container switching-capability-specific {
description
"TBD - to add for technology specific information";
}
container srlg {
uses srlg-attribute;
description " the SRLG values of a link";
}
}// end of link attributes
}// end of link leaf data node
}
}// end of configuring data nodes
/*
* notifications - only provide operational change information.
* reply to topology/node/link creation is acked via rpc-reply.
*/
notification link-failure {
leaf topology-id {
type leafref {
path "/layer-one-topology/topology/topology-id";
}
mandatory true;
description "";
}
leaf link-id {
type leafref {
path
"/layer-one-topology/topology[topology-id="+
"current ()/../topology-id]/link/link-id";
}
mandatory true;
description "";
}
leaf admin-status {
type leafref {
path
"/layer-one-topology/topology/link[link-id =" +
"current()/../link-id]/attributes/admin-status";
}
description "";
}
leaf oper-status {
type leafref {
path
"/layer-one-topology/topology/" +
"link[link-id = current()/../link-id]"
+ "/attributes/oper-status";
}
mandatory true;
description "";
}
description
"link failure information";
} //notification
notification node-failure {
leaf topology-id {
type leafref {
path "/layer-one-topology/topology/topology-id";
}
mandatory true;
description "";
}
leaf link-id {
type leafref {
path
"/layer-one-topology/topology[topology-id= "
+ "current ()/../topology-id]/node/node-id";
}
mandatory true;
description "";
}
description
"node failure information";
} //notification
}//module
<CODE ENDS>
5. Security Considerations 5. Security Considerations
The YANG data model defined in this draft itself does not introduce Since the data model defined in this draft is manipulated vis the
additional security concerns besides those mentioned in [draft-ietf- I2RS interface. The security concerns mentioned in [draft-ietf-i2rs-
i2rs-architecture]. architecture] also applies to this draft.
The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the
secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242]. The NETCONF access control model
[RFC6536] provides the means to restrict access for particular
NETCONF users to a pre-configured subset of all available NETCONF
protocol operations and content.
There are a number of data nodes defined in the YANG module which
are writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or ulnerable
in some network environments. Write operations (e.g., <edit-config>)
to these data nodes without proper protection can have a negative
effect on network operations.
[Editor's note: to List specific subtrees and data nodes and their
sensitivity/vulnerability.]
6. Manageability Considerations 6. Manageability Considerations
TBD. TBD.
7. IANA Considerations 7. IANA Considerations
TBD. TBD.
8. Acknowledgements 8. Acknowledgements
The initial YANG model specified in this draft is based on draft- The initial YANG model specified in this draft is based on draft-
clemm-i2rs-yang-network-topo but it is modified according to the clemm-i2rs-yang-network-topo but it is modified according to the
features of the layer one networks. features of the layer one networks.
[Editor's note: Further modification of this data model will be We would like to thank the authors of the above mentioned draft for
seeking ways to get aligned by augmenting.] their helpful discussion during the creation of this draft.
We would like to thank the authors of the above mentioned draft,
especially Xufeng Liu, for his helpful discussion during the
creation of this draft.
9. References 9. References
9.1. Normative References 9.1. Normative References
[RFC2119] S. Bradner, "Key words for use in RFCs to indicate [RFC2119] S. Bradner, "Key words for use in RFCs to indicate
requirements levels", RFC 2119, March 1997. requirements levels", 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.
[ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors and
Reviewers of YANG Data Model Documents", draft-ietf-
netmod-rfc6087bis-01, work in progress, October 2014.
9.2. Informative References 9.2. Informative References
[draft-ietf-i2rs-architecture] Atlas, A., Halpern, J., Hares, S., [draft-ietf-i2rs-architecture] Atlas, A., Halpern, J., Hares, S.,
Ward, D., Nadeau T., "An Architecture for the Interface to Ward, D., Nadeau T., "An Architecture for the Interface to
the Routing System", draft-ietf-i2rs-architecture-08, work the Routing System", draft-ietf-i2rs-architecture-08, work
in progress, January 2015; in progress, January 2015;
[draft-clemm-i2rs-yang-network-topo] Clemm A., Medved J., Tkacik T., [draft-clemm-i2rs-yang-network-topo] Clemm A., Medved J., Tkacik T.,
Varga R., et al, "A YANG Data Model for Network Topologies", draft- Varga R., et al, "A YANG Data Model for Network
clemm-i2rs-yang-network-topo-01, work in progress, October 2014; Topologies", draft-clemm-i2rs-yang-network-topo-01, work
in progress, October 2014;
[ietf-netmod-rfc6087bis] Bierman, A., "Guidelines for Authors and
Reviewers of YANG Data Model Documents", draft-ietf-
netmod-rfc6087bis-01, work in progress, October 2014.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
Bierman, "Network Configuration Protocol (NETCONF)",
RFC6241, June 2011.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, June 2011.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, March
2012.
10. Contributors' Addresses 10. Contributors' Addresses
TBD.
11. Authors' Addresses 11. Authors' Addresses
Xian Zhang Xian Zhang
Huawei Technologies Huawei Technologies
Email: zhang.xian@huawei.com Email: zhang.xian@huawei.com
Baoquan Rao Baoquan Rao
Huawei Technologies Huawei Technologies
raobaoquan@huawei.com raobaoquan@huawei.com
Xufeng Liu
Ericsson
xufeng.liu@ericsson.com
 End of changes. 84 change blocks. 
623 lines changed or deleted 793 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/