draft-ietf-i2rs-yang-l2-network-topology-00.txt   draft-ietf-i2rs-yang-l2-network-topology-01.txt 
Network Working Group J. Dong Network Working Group J. Dong
Internet-Draft X. Wei Internet-Draft X. Wei
Intended status: Standards Track Huawei Technologies Intended status: Standards Track Huawei Technologies
Expires: October 24, 2015 April 22, 2015 Expires: January 7, 2016 July 6, 2015
A YANG Data Model for Layer-2 Network Topologies A YANG Data Model for Layer-2 Network Topologies
draft-ietf-i2rs-yang-l2-network-topology-00 draft-ietf-i2rs-yang-l2-network-topology-01
Abstract Abstract
This document defines a YANG data model for layer-2 network This document defines a YANG data model for Layer 2 network
topologies. topologies.
Requirements Language Requirements Language
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].
Status of This Memo Status of This Memo
skipping to change at page 1, line 37 skipping to change at page 1, line 37
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 October 24, 2015. This Internet-Draft will expire on January 7, 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
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
2. Layer-2 Topology Model . . . . . . . . . . . . . . . . . . . 2 2. Layer-2 Topology Model . . . . . . . . . . . . . . . . . . . 2
3. Layer-2 Topology Yang Module . . . . . . . . . . . . . . . . 5 3. Layer-2 Topology Yang Module . . . . . . . . . . . . . . . . 6
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17
5. Security Considerations . . . . . . . . . . . . . . . . . . . 13 5. Security Considerations . . . . . . . . . . . . . . . . . . . 18
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18
6.1. Normative References . . . . . . . . . . . . . . . . . . 13 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.2. Informative References . . . . . . . . . . . . . . . . . 13 7.1. Normative References . . . . . . . . . . . . . . . . . . 18
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 7.2. Informative References . . . . . . . . . . . . . . . . . 18
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19
1. Introduction 1. Introduction
[I-D.medved-i2rs-topology-im] specifies the generic network topology [I-D.ietf-i2rs-yang-network-topo] defines the Yang [RFC6020]
information model, and approaches to extend the generic network [RFC6021] data models of the abstract (generic) network and network
topology information model to specific type of network topologies. topology. Such models can be augmented with technology-specific
It also provides the extensions made for Layer-3 unicast IGP, IS-IS details to build more specific topology models.
and OSPF topologies. [I-D.ietf-i2rs-yang-network-topo] defines the
Yang [RFC6020] [RFC6021] data models for generic network topology, L3
unicast IGP, IS-IS, OSPF and TED which are derived from the
information model defined in [I-D.medved-i2rs-topology-im].
Besides the information collected through "live" layer-3 IGP,
[I-D.amante-i2rs-topology-use-cases] also specifies the collection of
network information which is not visible within the Layer 3 IGP's
LSDB. Such information can be links, nodes, or properties of those
links or nodes in lower layers of the network. The requirements on
the topology data model in [I-D.medved-i2rs-topology-requirements]
also include the physical properties associated with the ports/
interfaces, and information associated with the network element's
immediately adjacent neighbors.
This document defines the Yang data model for layer-2 network This document defines the Yang data model for Layer 2 network
topologies by extending the generic network topology data model topologies by augmenting the generic network and network topology
defined in [I-D.ietf-i2rs-yang-network-topo]. data models with L2 specific topology attributes.
2. Layer-2 Topology Model 2. Layer-2 Topology Model
In order to represent a layer-2 network topology, the generic network The Layer 2 network topology model is designed to be generic and
topology model needs to be extended to contain layer-2 specific applicable to Layer 2 networks built with different L2 technologies.
information. Module "l2-topology" applies the generic network
topology model to layer-2 network topologies, and augments the
generic network topology with information specific to layer-2
networks.
The relationship between the l2-topology model and the generic The Layer 2 topology model applies the generic network and network
network topology model is shown in the figure below: topology models to Layer 2 network topologies, and augments the
generic models with information specific in Layer 2 networks. The
relationship between the Layer 2 topology model and the generic
network and network topology model is shown in the figure below:
+---------------------+ +---------------------+
| network-topology | | ietf-network |
+----------+----------+ +----------^----------+
^ |
| |
| +---------------------+
+----------^----------+ |ietf-network-topology|
| l2-topology | +----------^----------+
+---------------------+ |
Figure 1. L2-topology and generic network-topology |
+----------^----------+
| ietf-l2-topology |
+---------------------+
Figure 1. L2-topology model structure
For layer-2 network topology, there are some layer-2 specific In order to represent a Layer 2 network topology, the generic network
parameters and capabilities to be added to the generic network and topology models are augmented with Layer-2 specific information,
topology model, such as properties of layer-2 links or nodes, such as the identifiers, descriptions, attributes and states of the
descriptions, layer-2 addresses, encapsulations, etc. Part of the Layer-2 networks, nodes, links and termination points. Some of the
Information collected through LLDP could be included in the layer-2 information may be collected via Link Layer Discovery Protocl (LLDP)
network topology. or other Layer-2 protocols, and some of them may be locally
configured.
The structure of "L2-topology" data model is depicted in the The structure of "ietf-l2-topology" data model is depicted in the
following diagram. Brackets enclose list keys, "rw" means following diagram. Brackets enclose list keys, "rw" means
configuration data, "ro" means operational state data, "?" designates configuration data, "ro" means operational state data, "?" designates
optional nodes, "*" designates nodes that can have multiple optional nodes, "*" designates nodes that can have multiple
instances. instances.
module: ietf-l2-topology module: ietf-l2-topology
augment /nt:network/nt:network-types: augment /nw:network/nw:network-types:
+--rw l2-network! +--rw l2-network!
augment /nt:network: augment /nw:network:
+--rw l2-network-attributes +--rw l2-network-attributes
+--rw name? string +--rw name? string
+--rw flag* flag-type +--rw flag* flag-type
augment /nt:network/nt:node: augment /nw:network/nw:node:
+--rw l2-node-attributes +--rw l2-node-attributes
+--rw name? string +--rw name? string
+--rw description? string +--rw description? string
+--rw chassis-id? yang:mac-address +--rw management-address* inet:ip-address
+--rw management-address* inet:ip-prefix +--rw management-vid? vlan {VLAN}?
+--rw management-vid? vlan +--rw nick-name* trill-nickname {TRILL}?
+--rw nick-name? nickname {TRILL}?
+--rw flag* flag-type +--rw flag* flag-type
augment /nt:network/ntopo:link: augment /nw:network/nt:link:
+--rw l2-link-attributes +--rw l2-link-attributes
+--rw name? string +--rw name? string
+--rw rate? decimal64 +--rw flag* flag-type
+--rw flag* flag-type +--rw rate? decimal64
augment /nt:network/nt:node/ntopo:termination-point: +--rw delay? uint32
+--rw srlg* uint32
augment /nw:network/nw:node/nt:termination-point:
+--rw l2-termination-point-attributes +--rw l2-termination-point-attributes
+--rw description? string +--rw description? string
+--rw mac-address? yang:mac-address
+--rw port-vlan-id? vlan
+--rw ppvid
| +--rw ppvid? vlan
| +--rw ppvid-flags? bits
+--rw vlan-name* [vlan-id]
| +--rw vlan-id vlan
| +--rw vlan-name? string
+--rw encapsulation? identityref
+--rw maximum-frame-size? uint32 +--rw maximum-frame-size? uint32
+--rw link-aggregation +--rw (l2-termination-point-type)?
| +--rw aggregation-status? bits | +--:(ethernet)
| +--rw aggregated-port-id? string | | +--rw mac-address? yang:mac-address
| | +--rw eth-encapsulation? identityref
| | +--rw port-vlan-id? vlan {VLAN}?
| | +--rw vlan-id-name* [vlan-id] {VLAN}?
| | +--rw vlan-id vlan
| | +--rw vlan-name? string
| +--:(legacy)
| +--rw encapsulation? identityref
+--ro tp-state? enumeration +--ro tp-state? enumeration
notifications:
+---n l2-node-event
| +--ro event-type? l2-network-event-type
| +--ro network-ref? leafref
| +--ro node-ref? leafref
| +--ro l2-network!
| +--ro l2-node-attributes
| +--ro name? string
| +--ro description? string
| +--ro management-address* inet:ip-prefix
| +--ro management-vid? vlan {VLAN}?
| +--ro nick-name* trill-nickname {TRILL}?
| +--ro flag* flag-type
+---n l2-link-event
| +--ro event-type? l2-network-event-type
| +--ro network-ref? leafref
| +--ro link-ref? leafref
| +--ro l2-network!
| +--ro l2-link-attributes
| +--ro name? string
| +--ro flag* flag-type
| +--ro rate? decimal64
| +--ro delay? uint32
| +--ro srlg* uint32
+---n l2-termination-point-event
+--ro event-type? l2-network-event-type
+--ro network-ref? leafref
+--ro node-ref? leafref
+--ro tp-ref? leafref
+--ro l2-network!
+--ro l2-termination-point-attributes
+--ro description? string
+--ro maximum-frame-size? uint32
+--ro (termination-point-type)?
| +--:(ethernet)
| | +--ro mac-address? yang:mac-address
| | +--ro eth-encapsulation? identityref
| | +--ro port-vlan-id? vlan {VLAN}?
| | +--ro vlan-id-name* [vlan-id] {VLAN}?
| | +--ro vlan-id vlan
| | +--ro vlan-name? string
| +--:(legacy)
| +--ro encapsulation? identityref
+--ro tp-state? enumeration
The L2-topology module augments the generic network-topology module The L2-topology module augments the generic ietf-network and ietf-
as follows: network-topology modules as follows:
o A new network type "l2-network-type" is introduced. This is o A new network type "l2-network-type" is introduced. This is
represented by a container object, and is inserted under the represented by a container object, and is inserted under the
"network-types" container of the generic network module in "network-types" container of the generic ietf-network module in
[I-D.ietf-i2rs-yang-network-topo]. [I-D.ietf-i2rs-yang-network-topo].
o Additional network attributes are introduced in a grouping "l2- o Additional network attributes are introduced in a grouping "l2-
network-attributes", which augments the "network" list of the network-attributes", which augments the "network" list of the
network module in [I-D.ietf-i2rs-yang-network-topo]. The ietf-network module. The attributes include Layer-2 network name
attributes include an Layer-2 network name and a set of flags. and a set of flags. Each type of flag is represented by a
Each type of flag is represented by a separate identity. separate identity.
o Additional data objects for nodes are introduced by augmenting the o Additional data objects for Layer-2 nodes are introduced by
"node" list of the generic network module. New objects include a augmenting the "node" list of the generic ietf-network module.
series of layer-2 node parameters, as well as a set of flags. New objects include Layer-2 node identifier, description,
management address, and a set of flags.
o Additional data objects for termination points are introduced by o Additional data objects for Layer-2 termination points are
augmenting the "termination-point" list of the generic network- introduced by augmenting the "termination-point" list of the ietf-
topology module. New objects include a series of port properties network-topology module defined in
and parameters. [I-D.ietf-i2rs-yang-network-topo]. New objects include Layer-2
termination point descriptions, Layer-2 termination point type
specific attributes and Layer-2 termination point states.
o Links are augmented as well with a set of parameters, allowing to o Links in the ietf-network-topology module are augmented as well
associate a link with an L2 name, the link rate and another set of with a set of Layer-2 parameters, allowing to associate a link
flags. with a name, a set of Layer-2 link attributes and flags.
o The optional L2 technology specific attributes are introduced in
this module as Layer-2 features.
3. Layer-2 Topology Yang Module 3. Layer-2 Topology Yang Module
<CODE BEGINS> <CODE BEGINS>
file "ietf-l2-topology@2015-04-22.yang" file "ietf-l2-topology@2015-06-23.yang"
module ietf-l2-topology { module ietf-l2-topology {
yang-version 1; yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology"; namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology";
prefix "l2t"; prefix "l2t";
import network { import ietf-network {
prefix "nt"; prefix "nw";
} }
import network-topology { import ietf-network-topology {
prefix "ntopo"; prefix "nt";
} }
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} }
organization "TBD"; organization "TBD";
contact "I-D Editor: jie.dong@huawei.com"; contact "I-D Editor: jie.dong@huawei.com";
description description
"This module defines a model for the layer-2 topology of a network"; "This module defines a basic model for
the layer-2 topology of a network";
revision "2015-04-22" { revision "2015-06-23" {
description "Initial revision"; description "Initial revision";
reference "draft-ietf-i2rs-yang-l2-network-topology-00"; reference "draft-ietf-i2rs-l2-network-topology-01";
} }
/* /*
* Typedefs * Typedefs
*/ */
typedef vlan { typedef vlan {
description "VLAN ID"; type uint16 {
type uint16 { range "0..4095";
range "0..4095"; }
} description "VLAN ID";
} }
typedef trill-nickname {
type uint16;
description "TRILL Nickname";
}
typedef nickname { typedef flag-type {
description "TRILL Nickname"; type identityref {
type uint16; base "flag-identity";
} }
description "Base type for flags";
}
typedef flag-type { typedef l2-network-event-type {
type identityref { type enumeration {
base "flag-identity"; enum "add" {
} value 0;
} description "An L2 node or link or termination-point
has been added";
}
enum "remove" {
value 1;
description "An L2 node or link or termination-point
has been removed";
}
enum "update" {
value 2;
description "An L2 node or link or termination-point
has been updated";
}
}
description "l2 network event type for notifications";
} // l2-topology-event-type
/* /*
* Features * Features
*/ */
feature QinQ { feature VLAN {
description description
"Indicates that the system supports the qinq functions"; "Indicates that the system supports the
} vlan functions";
}
feature PBB { feature QinQ {
description description
"Indicates that the device supports the "Indicates that the system supports the
provider-backbone-bridging functions"; qinq functions";
} }
feature VPLS { feature PBB {
description description
"Indicates that the device supports the VPLS functions"; "Indicates that the device supports the
provider-backbone-bridging functions";
}
reference "RFC 4761, RFC 4762"; feature VPLS {
} description
"Indicates that the device supports the
VPLS functions";
reference "RFC 4761, RFC 4762";
}
feature TRILL { feature TRILL {
description description
"Indicates that the device supports the TRILL functions"; "Indicates that the device supports the
reference "RFC 6325"; TRILL functions";
} reference "RFC 6325";
}
feature VXLAN { feature VXLAN {
description description
"Indicates that the device supports the VXLAN functions"; "Indicates that the device supports the
reference "RFC 7348"; VXLAN functions";
} reference "RFC 7348";
}
/* /*
* Identities * Identities
*/ */
identity flag-identity { identity flag-identity {
description "Base type for flags"; description "Base type for flags";
} }
identity encapsulation-type { identity encapsulation-type {
description description
"Base identity from which specific encapsulation types are "Base identity from which specific encapsulation
derived."; types are derived.";
} }
identity ethernet { identity eth-encapsulation-type {
base encapsulation-type; base encapsulation-type;
description description
"native ethernet encapsulation"; "Base identity from which specific ethernet
} encapsulation types are derived.";
identity vlan { }
base encapsulation-type;
description
"vlan encapsulation";
}
identity qinq { identity ethernet {
base encapsulation-type; base eth-encapsulation-type;
description description
"qinq encapsulation"; "native ethernet encapsulation";
} }
identity pbb {
base encapsulation-type;
description
"pbb encapsulation";
}
identity trill { identity vlan {
base encapsulation-type; base eth-encapsulation-type;
description description
"trill encapsulation"; "vlan encapsulation";
} }
identity vpls { identity qinq {
base encapsulation-type; base eth-encapsulation-type;
description description
"vpls encapsulation"; "qinq encapsulation";
} }
identity vxlan { identity pbb {
base encapsulation-type; base eth-encapsulation-type;
description description
"vxlan encapsulation"; "pbb encapsulation";
} }
/* identity trill {
* Groupings base eth-encapsulation-type;
*/ description
"trill encapsulation";
}
grouping l2-network-type { identity vpls {
container l2-network { base eth-encapsulation-type;
presence "indicates L2 Network"; description
} "vpls encapsulation";
} }
grouping l2-network-attributes { identity vxlan {
container l2-network-attributes { base eth-encapsulation-type;
leaf name { description
description "Name of the network"; "vxlan encapsulation";
type string; }
}
leaf-list flag { identity frame-relay {
description "L2 network flags"; base encapsulation-type;
type flag-type; description
} "Frame Relay encapsulation";
} }
} identity ppp {
base encapsulation-type;
description
"PPP encapsulation";
}
grouping l2-node-attributes { identity hdlc {
container l2-node-attributes { base encapsulation-type;
leaf name { description
description "Node name"; "HDLC encapsulation";
type string; }
}
leaf description {
description "Node description";
type string;
}
leaf chassis-id {
description "System MAC address";
type yang:mac-address;
}
leaf-list management-address {
description "System management address";
type inet:ip-prefix;
}
leaf management-vid { identity atm {
description "System management VID"; base encapsulation-type;
type vlan; description
} "Base identity from which specific ATM
encapsulation types are derived.";
leaf nick-name { }
if-feature TRILL;
description "Nickname of RBridge";
type nickname;
}
leaf-list flag { identity pwe3 {
description "Node operational flags"; base encapsulation-type;
type flag-type; description
} "Base identity from which specific pw
} encapsulation types are derived.";
} // grouping l2-node-attributes }
grouping l2-link-attributes { /*
container l2-link-attributes { * Groupings
leaf name { */
description "Link name";
type string;
}
leaf rate {
description "Link rate";
type decimal64 {
fraction-digits 2;
}
}
leaf-list flag {
description "Link flags";
type flag-type;
}
} grouping l2-network-type {
} // grouping l2-link-attributes description "Identify the topology type to be L2.";
container l2-network {
presence "indicates L2 Network";
description
"The presence of the container node indicates
L2 Topology";
}
}
grouping l2-network-attributes {
description "L2 Topology scope attributes";
container l2-network-attributes {
description "Containing L2 network attributes";
leaf name {
type string;
description "Name of the L2 network";
}
grouping l2-termination-point-attributes { leaf-list flag {
container l2-termination-point-attributes { type flag-type;
leaf description { description "L2 network flags";
description "Port description"; }
type string; }
}
grouping l2-node-attributes {
description "L2 node attributes";
container l2-node-attributes {
description "Containing L2 node attributes";
leaf name {
type string;
description "Node name";
}
leaf description {
type string;
description "Node description";
}
leaf-list management-address {
type inet:ip-address;
description "System management address";
}
leaf management-vid {
if-feature VLAN;
type vlan;
description "System management VID";
}
leaf-list nick-name {
if-feature TRILL;
type trill-nickname;
description "Nickname of the RBridge";
}
leaf-list flag {
type flag-type;
description "Node operational flags";
}
}
} // grouping l2-node-attributes
grouping l2-link-attributes {
description "L2 link attributes";
container l2-link-attributes {
description "Containing L2 link attributes";
leaf name {
type string;
description "Link name";
}
leaf-list flag {
type flag-type;
description "Link flags";
}
leaf rate {
type decimal64 {
fraction-digits 2;
} }
leaf mac-address { description "Link rate";
description "Interface MAC address";
}
leaf delay {
type uint32;
description "Link delay in microseconds";
}
leaf-list srlg {
type uint32;
description
"List of Shared Risk Link Groups
this link belongs to.";
}
}
} // grouping l2-link-attributes
grouping l2-termination-point-attributes {
description "L2 termination point attributes";
container l2-termination-point-attributes {
description "Containing L2 TP attributes";
leaf description {
type string;
description "Port description";
}
leaf maximum-frame-size {
type uint32;
description "Maximum frame size";
}
choice l2-termination-point-type {
description
"Indicates termination-point type
specific attributes";
case ethernet {
leaf mac-address {
type yang:mac-address; type yang:mac-address;
} description "Interface MAC address";
leaf port-vlan-id { }
description "Port VLAN ID";
type vlan;
}
container ppvid { leaf eth-encapsulation {
description "Port and protocol VLAN ID"; type identityref {
leaf ppvid { base eth-encapsulation-type;
type vlan;
}
leaf ppvid-flags {
type bits {
bit port-protocol-vlan-supported {
position 1;
}
bit port-protocol-vlan-enabled {
position 2;
}
}
} }
} description
"Encapsulation type of this
ternimation point.";
}
list vlan-name { leaf port-vlan-id {
if-feature VLAN;
type vlan;
description "Port VLAN ID";
}
list vlan-id-name {
if-feature VLAN;
key "vlan-id"; key "vlan-id";
description "Interface configured VLANs"; description "Interface configured VLANs";
leaf vlan-id { leaf vlan-id {
type vlan; type vlan;
description "VLAN ID";
} }
leaf vlan-name { leaf vlan-name {
type string; type string;
description "VLAN Name";
} }
} }
} //case ethernet
leaf encapsulation { case legacy {
description "encapsulation type of this termination point."; leaf encapsulation {
type identityref { type identityref {
base encapsulation-type; base encapsulation-type;
} }
} description
"Encapsulation type of this termination point.";
}
} //case legacy
leaf maximum-frame-size { } //choice termination-point-type
description "interface maximum frame size";
type uint32;
}
container link-aggregation { leaf tp-state {
leaf aggregation-status { type enumeration {
description "Link aggregation capabilities and status"; enum in-use {
type bits { value 0;
bit aggregation-capability { description
position 0; "the termination point is in forwarding state";
} }
bit aggregation-status { enum blocking {
position 1; value 1;
} description
} "the termination point is in blocking state";
} }
leaf aggregated-port-id { enum down {
type string; value 2;
} description
"the termination point is in down state";
}
enum others {
value 3;
description
"the termination point is in other state";
}
} }
config false;
description "State of the termination point";
}
}
} // grouping l2-termination-point-attributes
leaf tp-state { /*** grouping of network/node/link/tp leaf-refs ***/
config false;
type enumeration {
enum "forwarding" {
value 0;
description
"the termination point is in forwarding state";
}
enum "blocking" {
value 1;
description
"the termination point is in blocking state";
}
enum "others" {
value 2;
description
"the termination point is in other state";
}
}
}
}
} // grouping l2-termination-point-attributes
/* grouping network-ref {
* Data nodes description
*/ "Grouping for an absolute reference to a network topology
instance.";
leaf network-ref {
type leafref {
path "/nw:network/nw:network-id";
}
description
"An absolute reference to a network topology instance.";
}
}
augment "/nt:network/nt:network-types" { grouping link-ref {
uses l2-network-type; description
} "Grouping for an absolute reference to a link instance.";
uses network-ref;
leaf link-ref {
type leafref {
path "/nw:network"
+"[nw:network-id = current()/../network-ref]"
+"/nt:link/nt:link-id";
}
description
"An absolute reference to a link instance.";
}
}
augment "/nt:network" { grouping node-ref {
when "nt:network-types/l2-network"; description
uses l2-network-attributes; "Grouping for an absolute reference to a node instance.";
} uses network-ref;
leaf node-ref {
type leafref {
path "/nw:network"
+"[nw:network-id = current()/../network-ref]"
+"/nw:node/nw:node-id";
}
description
"An absolute reference to a node instance.";
}
}
augment "/nt:network/nt:node" { grouping tp-ref {
when "../nt:network-types/l2-network"; description
uses l2-node-attributes; "Grouping for an absolute reference to a termination point.";
} uses node-ref;
leaf tp-ref {
type leafref {
path "/nw:network"
+"[nw:network-id = current()/../network-ref]"
+"/nw:node[nw:node-id = current()/../node-ref]"
+"/nt:termination-point/nt:tp-id";
}
description
"Grouping for an absolute reference to a TP.";
}
}
augment "/nt:network/ntopo:link" { /*
when "/nt:network/nt:network-types/l2-network"; * Data nodes
uses l2-link-attributes; */
} augment "/nw:network/nw:network-types" {
description
"Introduce new network type for L2 topology";
uses l2-network-type;
}
augment "/nt:network/nt:node/ntopo:termination-point" { augment "/nw:network" {
when "/nt:network/nt:network-types/l2-network"; when "nw:network-types/l2-network" {
uses l2-termination-point-attributes; description
} "Augmentation parameters apply only for networks
with L2 topology";
}
description
"Configuration parameters for the L2 network
as a whole";
uses l2-network-attributes;
}
/* augment "/nw:network/nw:node" {
* Notifications: to be added when "../nw:network-types/l2-network" {
*/ description
"Augmentation parameters apply only for networks
with L2 topology";
}
description
"Configuration parameters for L2 at the node
level";
uses l2-node-attributes;
}
} // module l2-topology augment "/nw:network/nt:link" {
when "/nw:network/nw:network-types/l2-network" {
description
"Augmentation parameters apply only for networks
with L2 topology";
}
description "Augment L2 topology link information";
uses l2-link-attributes;
}
<CODE ENDS> augment "/nw:network/nw:node/nt:termination-point" {
4. IANA Considerations when "/nw:network/nw:network-types/l2-network" {
description
"Augmentation parameters apply only for networks
with L2 topology";
}
description
"Augment L2 topology termination point configuration";
This document makes no request of IANA. uses l2-termination-point-attributes;
}
Note to RFC Editor: this section may be removed on publication as an /*
RFC. * Notifications
*/
notification l2-node-event {
description "Notification event for L2 node";
leaf event-type {
type l2-network-event-type;
description "Event type";
}
uses node-ref;
uses l2-network-type;
uses l2-node-attributes;
}
notification l2-link-event {
description "Notification event for L2 link";
leaf event-type {
type l2-network-event-type;
description "Event type";
}
uses link-ref;
uses l2-network-type;
uses l2-link-attributes;
}
notification l2-termination-point-event {
description "Notification event for L2 termination point";
leaf event-type {
type l2-network-event-type;
description "Event type";
}
uses tp-ref;
uses l2-network-type;
uses l2-termination-point-attributes;
}
} // module l2-topology
<CODE ENDS>
4. IANA Considerations
TBD
5. Security Considerations 5. Security Considerations
The transport protocol used for sending the topology data MUST The transport protocol used for sending the topology data MUST
support authentication and SHOULD support encryption. The data-model support authentication and SHOULD support encryption. The data-model
by itself does not create any security implications. by itself does not create any security implications.
6. References 6. Acknowledgements
6.1. Normative References The authors would like to acknowledge the comments and suggestions
received from Susan Hares, Alia Atlas, Juergen Schoenwaelder, Mach
Chen, Alexander Clemm and Sriganesh Kini.
7. References
7.1. Normative References
[I-D.ietf-i2rs-yang-network-topo] [I-D.ietf-i2rs-yang-network-topo]
Clemm, A., Medved, J., Varga, R., Tkacik, T., Bahadur, N., Clemm, A., Medved, J., Varga, R., Tkacik, T., Bahadur, N.,
and H. Ananthakrishnan, "A Data Model for Network and H. Ananthakrishnan, "A Data Model for Network
Topologies", draft-ietf-i2rs-yang-network-topo-00 (work in Topologies", draft-ietf-i2rs-yang-network-topo-01 (work in
progress), April 2015. progress), June 2015.
[I-D.medved-i2rs-topology-im]
Medved, J., Bahadur, N., Clemm, A., and H.
Ananthakrishnan, "An Information Model for Network
Topologies", draft-medved-i2rs-topology-im-01 (work in
progress), October 2013.
[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.
[RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021,
October 2010. October 2010.
6.2. Informative References 7.2. Informative References
[I-D.amante-i2rs-topology-use-cases] [I-D.amante-i2rs-topology-use-cases]
Medved, J., Previdi, S., Lopez, V., and S. Amante, Medved, J., Previdi, S., Lopez, V., and S. Amante,
"Topology API Use Cases", draft-amante-i2rs-topology-use- "Topology API Use Cases", draft-amante-i2rs-topology-use-
cases-01 (work in progress), October 2013. cases-01 (work in progress), October 2013.
[I-D.medved-i2rs-topology-requirements] [I-D.medved-i2rs-topology-requirements]
Medved, J., Previdi, S., Gredler, H., Nadeau, T., and S. Medved, J., Previdi, S., Gredler, H., Nadeau, T., and S.
Amante, "Topology API Requirements", draft-medved-i2rs- Amante, "Topology API Requirements", draft-medved-i2rs-
topology-requirements-00 (work in progress), February topology-requirements-00 (work in progress), February
 End of changes. 97 change blocks. 
404 lines changed or deleted 645 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/