< draft-ietf-lime-yang-connectionless-oam-09.txt   draft-ietf-lime-yang-connectionless-oam-10.txt >
Network Working Group D. Kumar Network Working Group D. Kumar
Internet-Draft Cisco Internet-Draft Cisco
Intended status: Standards Track M. Wang Intended status: Standards Track M. Wang
Expires: March 4, 2018 Q. Wu Expires: March 19, 2018 Q. Wu
Huawei Huawei
R. Rahman R. Rahman
S. Raghavan S. Raghavan
Cisco Cisco
August 31, 2017 September 15, 2017
Generic YANG Data Model for Connectionless Operations, Administration, Generic YANG Data Model for Connectionless Operations, Administration,
and Maintenance(OAM) protocols and Maintenance(OAM) protocols
draft-ietf-lime-yang-connectionless-oam-09 draft-ietf-lime-yang-connectionless-oam-10
Abstract Abstract
This document presents a base YANG Data model for connectionless This document presents a base YANG Data model for connectionless
Operations Administration, and Maintenance(OAM) protocols. It Operations Administration, and Maintenance(OAM) protocols. It
provides a technology-independent abstraction of key OAM constructs provides a technology-independent abstraction of key OAM constructs
for connectionless protocols. The base model presented here can be for connectionless protocols. The base model presented here can be
extended to include technology specific details. This is leading to extended to include technology specific details. This is leading to
uniformity between OAM protocols and support both nested OAM uniformity between OAM protocols and support both nested OAM
workflows (i.e., performing OAM functions at different or same levels workflows (i.e., performing OAM functions at different or same levels
through a unified interface). through a unified interface) and interacting OAM workflows ( i.e.,
performing OAM functions at same levels through a unified interface).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
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 https://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 March 4, 2018. This Internet-Draft will expire on March 19, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (https://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 . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Conventions used in this document . . . . . . . . . . . . . . 3 2. Conventions used in this document . . . . . . . . . . . . . . 3
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
3. Overview of the Connectionless OAM Model . . . . . . . . . . 4 3. Overview of the Connectionless OAM Model . . . . . . . . . . 4
3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3. OAM neighboring layers . . . . . . . . . . . . . . . . . 6 3.3. OAM neighboring layers . . . . . . . . . . . . . . . . . 6
3.4. Test Point Locations Information . . . . . . . . . . . . 7 3.4. Test Point Locations Information . . . . . . . . . . . . 7
3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7
3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 8 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 8
3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8
skipping to change at page 4, line 25 skipping to change at page 4, line 34
RPC - A Remote Procedure Call RPC - A Remote Procedure Call
RPC operation - A specific Remote Procedure Call. RPC operation - A specific Remote Procedure Call.
CC - Continuity Check [RFC7276] , Continuity Checks are used to CC - Continuity Check [RFC7276] , Continuity Checks are used to
verify that a destination is reachable and therefore also referred to verify that a destination is reachable and therefore also referred to
as reachability verification as reachability verification
3. Overview of the Connectionless OAM Model 3. Overview of the Connectionless OAM Model
The model is augmented to "/nd:networks/nd:network/nd:node" using The model is augmented to "/nd:networks/nd:network/nd:node"
'test-point-locations' defined below. 'tp-tools' grouping defined in [I-D.ietf-i2rs-yang-network-topo] using 'test-point-locations'
this model supports both proactive and on-demand activation. defined in Section 3.5. The tool attribute 'tp-tools' grouping
defined in this model is corresponding to technology-independent
retrieval procedures (RPC operations) defined in
[I-D.ietf-lime-yang-connectionless-oam-methods] and supports one of
two basic types of activation: proactive and on-demand (determined by
'session-type' grouping defined in this model, see section 3.2).
At the top of the model, there is an 'cc-oper-data' container for At the top of the model, there is an 'cc-oper-data' container for
session statistics. Grouping is also defined for common session session statistics. Grouping is also defined for common session
statistics and these are only applicable for proactive OAM sessions. statistics and these are only applicable for proactive OAM sessions.
Multiple 'test-point-locations' keyed using technology specific keys Multiple 'test-point-locations' keyed using technology specific keys
(eg., IPv4 address for IPv4 locations) are augmented into network (eg., IPv4 address for IPv4 locations) are augmented into network
nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] to nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] to
describe the network hierarchies and the inventory of nodes contained describe the network hierarchies and the inventory of nodes contained
in a network. Each test point location under 'test-point-locations in a network. Each test point location under 'test-point-locations
skipping to change at page 5, line 28 skipping to change at page 5, line 42
o IPv4 or IPv6 address o IPv4 or IPv6 address
o TP-attribute o TP-attribute
o System-id to represent the device or o System-id to represent the device or
node.[I-D.ietf-spring-sr-yang] node.[I-D.ietf-spring-sr-yang]
To define a forwarding treatment of a test packet, the 'tp- To define a forwarding treatment of a test packet, the 'tp-
address'grouping needs to be associated with additional parameters, address'grouping needs to be associated with additional parameters,
e.g. DSCP for IP or EXP for MPLS. In generic connectionless OAM e.g. DSCP for IP or EXP (renamed to Traffic Classic in RFC5462) for
YANG model, these parameters are not explicit configured. The model MPLS. In generic connectionless OAM YANG model, these parameters are
user can add corresponding parameters according to their not explicit configured. The model user can add corresponding
requirements. parameters according to their requirements.
3.2. Tools 3.2. Tools
The different OAM tools may be used in one of two basic types of The different OAM tools may be used in one of two basic types of
activation: proactive and on-demand. The proactive OAM refers to OAM activation: proactive and on-demand. The proactive OAM refers to OAM
actions which are carried out continuously to permit proactive actions which are carried out continuously to permit proactive
reporting of fault. The proactive OAM method requires persistent reporting of fault. The proactive OAM method requires persistent
configuration. The on-demand OAM refers to OAM actions which are configuration. The on-demand OAM refers to OAM actions which are
initiated via manual intervention for a limited time to carry out initiated via manual intervention for a limited time to carry out
diagnostics. The on-demand OAM method requires only transient diagnostics. The on-demand OAM method requires only transient
skipping to change at page 6, line 15 skipping to change at page 6, line 29
3.3. OAM neighboring layers 3.3. OAM neighboring layers
As typical networks have a multi-layer architecture, the set of OAM As typical networks have a multi-layer architecture, the set of OAM
protocols similarly take a multi-layer structure; each layer may has protocols similarly take a multi-layer structure; each layer may has
its own OAM protocol [RFC7276] and is corresponding to specific its own OAM protocol [RFC7276] and is corresponding to specific
administrative domain and has associated test points. OAM- administrative domain and has associated test points. OAM-
neighboring-layers is referred to a list of neighboring test points neighboring-layers is referred to a list of neighboring test points
in the upstream layer and/or downstream layer and the same layer that in the upstream layer and/or downstream layer and the same layer that
are related to current test point. This allows users to easily are related to current test point. This allows users to easily
navigate between related neighboring layer to efficiently navigate between related neighboring layer to efficiently
troubleshoot a defect. In this model, we have kept level default as troubleshoot a defect. In this model, we have kept technology-level
0, when a list of neighboring test points under 'oam-neighboring- default as 0, when a list of neighboring test points under 'oam-
layers' list are located at the same layer as the current test point. neighboring-layers' list are located at the same layer as the current
'Technology-Level'leaf defines the relative technology level of test point. 'Technology-Level'leaf defines the relative technology
neighboring test point corresponding to the current test point in level of neighboring test point corresponding to the current test
multi-layer and multi-technology networks , and is provided to allow point in multi-layer and multi-technology networks , and is provided
correlation of faults at different administrative and technology to allow correlation of faults at different administrative and
layers . If there is one neighboring test point at higher layer of technology layers . If there is one neighboring test point at higher
the current test point, 'Technology-level'leaf is set to 1. If there layer of the current test point, 'Technology-level'leaf is set to 1.
is one neighboring test point at lower layer of the current test If there is one neighboring test point at lower layer of the current
point, 'Technology-level'leaf is set to -1. test point, 'Technology-level'leaf is set to -1.
list oam-neighboring-layers { list oam-neighboring-layers {
key "index"; key "index";
leaf index { leaf index {
type uint8 { type uint8 {
range "0..128"; range "0..128";
} }
description description
"Index of a list of neighboring test points "Index of a list of neighboring test points
in the upstream layer and/or downstream layer in the upstream layer and/or downstream layer
skipping to change at page 9, line 21 skipping to change at page 9, line 21
| +--rw ni routing-instance-ref | +--rw ni routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | +--rw tech-null? empty | | +--rw tech-null? empty
| +--rw tp-tools | +--rw tp-tools
| | +--rw continuity-check boolean | | +--rw continuity-check boolean
| | +--rw path-discovery boolean | | +--rw path-discovery boolean
| +--rw root? | +--rw root?
| +--rw oam-neighboring-layers* [index] | +--rw oam-neighboring-layers* [index]
| +--rw index uint8 | +--rw index uint8
| +--rw level? int8 | +--rw technology-level? int8
| +--rw (tp-location)? | +--rw (tp-location)?
| +--:(mac-address) | +--:(mac-address)
| | +--rw mac-address-location? yang:mac-address | | +--rw mac-address-location? yang:mac-address
| +--:(ipv4-address) | +--:(ipv4-address)
| | +--rw ipv4-address-location? inet:ipv4-address | | +--rw ipv4-address-location? inet:ipv4-address
| +--:(ipv6-address) | +--:(ipv6-address)
| | +--rw ipv6-address-location? inet:ipv6-address | | +--rw ipv6-address-location? inet:ipv6-address
| +--:(as-number) | +--:(as-number)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(system-id) | +--:(system-id)
skipping to change at page 9, line 47 skipping to change at page 9, line 47
| +--rw ni routing-instance-ref | +--rw ni routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | +--rw tech-null? empty | | +--rw tech-null? empty
| +--rw tp-tools | +--rw tp-tools
| | +--rw continuity-check boolean | | +--rw continuity-check boolean
| | +--rw path-discovery boolean | | +--rw path-discovery boolean
| +--rw root? | +--rw root?
| +--rw oam-neighboring-layers* [index] | +--rw oam-neighboring-layers* [index]
| +--rw index uint8 | +--rw index uint8
| +--rw level? int8 | +--rw technology-level? int8
| +--rw (tp-location)? | +--rw (tp-location)?
| +--:(mac-address) | +--:(mac-address)
| | +--rw mac-address-location? yang:mac-address | | +--rw mac-address-location? yang:mac-address
| +--:(ipv4-address) | +--:(ipv4-address)
| | +--rw ipv4-address-location? inet:ipv4-address | | +--rw ipv4-address-location? inet:ipv4-address
| +--:(ipv6-address) | +--:(ipv6-address)
| | +--rw ipv6-address-location? inet:ipv6-address | | +--rw ipv6-address-location? inet:ipv6-address
| +--:(as-number) | +--:(as-number)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(system-id) | +--:(system-id)
skipping to change at page 10, line 23 skipping to change at page 10, line 23
| +--rw mac-address-location yang:mac-address | +--rw mac-address-location yang:mac-address
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | +--rw tech-null? empty | | +--rw tech-null? empty
| +--rw tp-tools | +--rw tp-tools
| | +--rw continuity-check boolean | | +--rw continuity-check boolean
| | +--rw path-discovery boolean | | +--rw path-discovery boolean
| +--rw root? | +--rw root?
| +--rw oam-neighboring-layers* [index] | +--rw oam-neighboring-layers* [index]
| +--rw index uint8 | +--rw index uint8
| +--rw level? int8 | +--rw technology-level? int8
| +--rw (tp-location)? | +--rw (tp-location)?
| +--:(mac-address) | +--:(mac-address)
| | +--rw mac-address-location? yang:mac-address | | +--rw mac-address-location? yang:mac-address
| +--:(ipv4-address) | +--:(ipv4-address)
| | +--rw ipv4-address-location? inet:ipv4-address | | +--rw ipv4-address-location? inet:ipv4-address
| +--:(ipv6-address) | +--:(ipv6-address)
| | +--rw ipv6-address-location? inet:ipv6-address | | +--rw ipv6-address-location? inet:ipv6-address
| +--:(as-number) | +--:(as-number)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(system-id) | +--:(system-id)
skipping to change at page 10, line 49 skipping to change at page 10, line 49
| +--rw ni? routing-instance-ref | +--rw ni? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | +--rw tech-null? empty | | +--rw tech-null? empty
| +--rw tp-tools | +--rw tp-tools
| | +--rw continuity-check boolean | | +--rw continuity-check boolean
| | +--rw path-discovery boolean | | +--rw path-discovery boolean
| +--rw root? | +--rw root?
| +--rw oam-neighboring-layers* [index] | +--rw oam-neighboring-layers* [index]
| +--rw index uint8 | +--rw index uint8
| +--rw level? int8 | +--rw technology-level? int8
| +--rw (tp-location)? | +--rw (tp-location)?
| +--:(mac-address) | +--:(mac-address)
| | +--rw mac-address-location? yang:mac-address | | +--rw mac-address-location? yang:mac-address
| +--:(ipv4-address) | +--:(ipv4-address)
| | +--rw ipv4-address-location? inet:ipv4-address | | +--rw ipv4-address-location? inet:ipv4-address
| +--:(ipv6-address) | +--:(ipv6-address)
| | +--rw ipv6-address-location? inet:ipv6-address | | +--rw ipv6-address-location? inet:ipv6-address
| +--:(as-number) | +--:(as-number)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(system-id) | +--:(system-id)
skipping to change at page 11, line 27 skipping to change at page 11, line 27
+--rw ni? routing-instance-ref +--rw ni? routing-instance-ref
+--rw (technology)? +--rw (technology)?
| +--:(technology-null) | +--:(technology-null)
| +--rw tech-null? empty | +--rw tech-null? empty
+--rw tp-tools +--rw tp-tools
| +--rw continuity-check boolean | +--rw continuity-check boolean
| +--rw path-discovery boolean | +--rw path-discovery boolean
+--rw root? +--rw root?
+--rw oam-neighboring-layers* [index] +--rw oam-neighboring-layers* [index]
+--rw index uint8 +--rw index uint8
+--rw level? int8 +--rw technology-level? int8
+--rw (tp-location)? +--rw (tp-location)?
+--:(mac-address) +--:(mac-address)
| +--rw mac-address-location? yang:mac-address | +--rw mac-address-location? yang:mac-address
+--:(ipv4-address) +--:(ipv4-address)
| +--rw ipv4-address-location? inet:ipv4-address | +--rw ipv4-address-location? inet:ipv4-address
+--:(ipv6-address) +--:(ipv6-address)
| +--rw ipv6-address-location? inet:ipv6-address | +--rw ipv6-address-location? inet:ipv6-address
+--:(as-number) +--:(as-number)
| +--rw as-number-location? inet:as-number | +--rw as-number-location? inet:as-number
+--:(system-id) +--:(system-id)
+--rw system-id-location? router-id +--rw system-id-location? router-id
4. OAM YANG Module 4. OAM YANG Module
<CODE BEGINS> file "ietf-connectionless-oam@2017-08-30.yang" <CODE BEGINS> file "ietf-connectionless-oam@2017-09-06.yang"
module ietf-connectionless-oam {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam";
prefix coam;
import ietf-yang-schema-mount {
prefix yangmnt;
}
import ietf-network {
prefix nd;
}
import ietf-yang-types {
prefix yang;
}
import ietf-interfaces {
prefix if;
}
import ietf-inet-types {
prefix inet;
}
import ietf-network-instance {
prefix ni;
}
organization module ietf-connectionless-oam {
"IETF LIME Working Group"; yang-version 1.1;
contact namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam";
"Deepak Kumar dekumar@cisco.com prefix coam;
Qin Wu bill.wu@huawei.com import ietf-yang-schema-mount {
S Raghavan srihari@cisco.com prefix yangmnt;
Zitao Wang wangzitao@huawei.com }
R Rahman rrahman@cisco.com"; import ietf-network {
prefix nd;
}
import ietf-yang-types {
prefix yang;
}
import ietf-interfaces {
prefix if;
}
import ietf-inet-types {
prefix inet;
}
import ietf-network-instance {
prefix ni;
}
import ietf-routing-types {
prefix rt;
}
organization
"IETF LIME Working Group";
contact
"Deepak Kumar dekumar@cisco.com
Qin Wu bill.wu@huawei.com
S Raghavan srihari@cisco.com
Zitao Wang wangzitao@huawei.com
R Rahman rrahman@cisco.com";
description
"This YANG module defines the generic configuration,
data model, statistics for connectionless OAM to be
used within IETF in a protocol independent manner.
It is assumed that each protocol maps corresponding
abstracts to its native format. Each protocol may
extend the YANG model defined here to include protocol
specific extensions";
revision 2017-09-06 {
description description
"This YANG module defines the generic configuration, " Base model for Connectionless
data model, statistics for connectionless OAM to be Operations, Administration,
used within IETF in a protocol independent manner. and Maintenance(OAM) ";
It is assumed that each protocol maps corresponding reference
abstracts to its native format.Each protocol may " RFC XXXX: Connectionless
extend the YANG model defined here to include protocol Operations, Administration, and
specific extensions"; Maintenance(OAM)YANG Data Model";
}
revision 2017-08-30 { feature connection-less {
description description
" Base model for Connectionless "This feature indicates that OAM solution is connection less.";
Operations, Administration, }
and Maintenance(OAM) "; feature continuity-check {
reference description
" RFC XXXX: Connectionless "This feature indicates that the server supports
Operations, Administration, and executing continuity check OAM command and
Maintenance(OAM)YANG Data Model"; returning a response. Servers that do not advertise
} this feature will not support executing
continuity check command or rpc operation model for
feature connection-less { continuity check command.";
description }
"This feature indicates that OAM solution is connection less."; feature path-discovery {
} description
feature continuity-check { "This feature indicates that the server supports
description executing path discovery OAM command and
"This feature indicates that the server supports returning a response. Servers that do not advertise
executing continuity check OAM command and this feature will not support executing
returning a response. Servers that do not advertise path discovery command or rpc operation model for
this feature will not support executing path discovery command.";
continuity check command or rpc operation model for }
continuity check command."; typedef router-id {
type yang:dotted-quad;
description
"A 32-bit number in the dotted quad format assigned to each
router. This number uniquely identifies the router within an
Autonomous System.";
}
typedef routing-instance-ref {
type leafref {
path "/ni:network-instances/ni:network-instance/ni:name";
} }
description
feature path-discovery { "This type is used for leafs that reference a routing instance
description configuration.";
"This feature indicates that the server supports }
executing path discovery OAM command and identity address-attribute-types {
returning a response. Servers that do not advertise description
this feature will not support executing "This is base identity of address
path discovery command or rpc operation model for attribute types which are ip-prefix,
path discovery command."; bgp, tunnel, pwe3, vpls, etc.";
}
typedef address-attribute-type {
type identityref {
base address-attribute-types;
} }
description
"Target address attribute type.";
}
identity time-resolution {
description
"Time interval resolution";
typedef router-id { }
type yang:dotted-quad; identity hours {
base time-resolution;
description
"Time resolution in Hours";
}
identity minutes {
base time-resolution;
description
"Time resolution in Minutes";
}
identity seconds {
base time-resolution;
description
"Time resolution in Seconds";
}
identity milliseconds {
base time-resolution;
description
"Time resolution in Milliseconds";
}
identity microseconds {
base time-resolution;
description
"Time resolution in Microseconds";
}
identity nanoseconds {
base time-resolution;
description
"Time resolution in Nanoseconds";
}
grouping cc-session-statistics {
description
"Grouping for session statistics.";
container cc-session-statistics {
description description
"A 32-bit number in the dotted quad format assigned to each "cc session counters";
router. This number uniquely identifies the router within an leaf session-count {
Autonomous System."; type uint32;
} default "0";
description
typedef routing-instance-ref { "Number of Continuity Check sessions.
type leafref { A value of zero indicates that no session
path "/ni:network-instances/ni:network-instance/ni:name"; count is sent.";
} }
description leaf session-up-count {
"This type is used for leafs that reference a routing instance type uint32;
configuration."; default "0";
} description
"Number of sessions which are up.
identity address-attribute-types { A value of zero indicates that no up
description session count is sent.";
"This is base identity of address }
attribute types which are ip-prefix, leaf session-down-count {
bgp, tunnel, pwe3, vpls, etc."; type uint32;
} default "0";
description
typedef address-attribute-type { "Number of sessions which are down.
type identityref { A value of zero indicates that no down
base address-attribute-types; session count is sent.";
}
leaf session-admin-down-count {
type uint32;
default "0";
description
"Number of sessions which are admin-down.
A value of zero indicates that no admin
down session count is sent.";
} }
description
"Target address attribute type.";
}
identity time-resolution {
description
"Time interval resolution";
}
identity hours {
base time-resolution;
description
"Time resolution in Hours";
}
identity minutes {
base time-resolution;
description
"Time resolution in Minutes";
}
identity seconds {
base time-resolution;
description
"Time resolution in Seconds";
}
identity milliseconds {
base time-resolution;
description
"Time resolution in Milliseconds";
} }
}
identity microseconds { grouping session-packet-statistics {
base time-resolution; description
"Grouping for per session packet statistics";
container session-packet-statistics {
description description
"Time resolution in Microseconds"; "Per session packet statistics.";
leaf rx-packet-count {
type uint32;
default "0";
description
"Total number of received OAM packet count.
A value of zero indicates that no received
OAM packet count number is sent.";
}
leaf tx-packet-count {
type uint32;
default "0";
description
"Total number of transmitted OAM packet count.
A value of zero indicates that no transmitted
OAM packet count number is sent.";
}
leaf rx-bad-packet {
type uint32;
default "0";
description
"Total number of received bad OAM packet.
A value of zero indicates that no received bad
OAM packet count number is sent.";
}
leaf tx-packet-failed {
type uint32;
default "0";
description
"Total number of failed sending OAM packet.
A value of zero indicates that no failed
sending OAM packet count number is sent.";
}
} }
}
identity nanoseconds { grouping cc-per-session-statistics {
base time-resolution; description
"Grouping for per session statistics";
container cc-per-session-statistics {
description description
"Time resolution in Nanoseconds"; "per session statistics.";
leaf create-time {
type yang:date-and-time;
description
"Time and date when session is created.";
}
leaf last-down-time {
type yang:date-and-time;
description
"Time and date last time session is down.";
}
leaf last-up-time {
type yang:date-and-time;
description
"Time and date last time session is up.";
}
leaf down-count {
type uint32;
default "0";
description
"Total Continuity Check sessions down count.
A value of zero indicates that no
down count per session is sent.";
}
leaf admin-down-count {
type uint32;
default "0";
description
"Total Continuity Check sessions admin down count.
A value of zero indicates that no
admin down count per session is sent.";
}
uses session-packet-statistics;
} }
}
grouping cc-session-statistics { grouping session-error-statistics {
description
"Grouping for per session error statistics";
container session-error-statistics {
description description
"Grouping for session statistics."; "Per session error statistics.";
leaf packet-drops-count {
container cc-session-statistics { type uint32;
default "0";
description description
"cc session counters"; "Total received packet drops count.
leaf session-count { A value of zero indicates that no
type uint32; packet drops count is sent.";
description }
"Number of Continuity Check sessions."; leaf packet-reorder-count {
} type uint32;
leaf session-up-count { default "0";
type uint32; description
description "Total received packet reordered count.
"Number of sessions which are up."; A value of zero indicates that no packet
} reorder count is sent.";
leaf session-down-count { }
type uint32; leaf packets-out-of-seq-count {
description type uint32;
"Number of sessions which are down."; description
} "Total received out of sequence count.
leaf session-admin-down-count { A value of zero indicates that no packet
type uint32; out of sequence count is sent.";
description }
"Number of sessions which are admin-down."; leaf packets-dup-count {
} type uint32;
description
"Total received packet duplicates count.
A value of zero indicates that no packet
duplicates count is sent.";
} }
} }
}
grouping session-delay-statistics {
description
"Grouping for per session delay statistics";
grouping session-packet-statistics { container session-delay-statistics {
description description
"Grouping for per session packet statistics"; "Session delay summarised information.";
container session-packet-statistics { leaf time-resolution-value {
description type identityref {
"Per session packet statistics."; base time-resolution;
leaf rx-packet-count {
type uint32;
description
"Total number of received OAM packet count.";
}
leaf tx-packet-count {
type uint32;
description
"Total number of transmitted OAM packet count.";
}
leaf rx-bad-packet {
type uint32;
description
"Total number of received bad OAM packet.";
}
leaf tx-packet-failed {
type uint32;
description
"Total number of send OAM packet failed.";
} }
default "milliseconds";
description
"Time units among choice of s,ms,ns etc.";
}
leaf min-delay-value {
type uint32;
description
"Minimum delay value observed.";
}
leaf max-delay-value {
type uint32;
description
"Maximum delay value observed.";
}
leaf average-delay-value {
type uint32;
description
"Average delay value observed.";
} }
} }
}
grouping cc-per-session-statistics { grouping session-jitter-statistics {
description
"Grouping for per session jitter statistics";
container session-jitter-statistics {
description description
"Grouping for per session statistics"; "Session jitter summarised information.";
container cc-per-session-statistics { leaf time-resolution-value {
description type identityref {
"per session statistics."; base time-resolution;
leaf create-time {
type yang:date-and-time;
description
"Time and date when session is created.";
}
leaf last-down-time {
type yang:date-and-time;
description
"Time and date last time session is down.";
}
leaf last-up-time {
type yang:date-and-time;
description
"Time and date last time session is up.";
}
leaf down-count {
type uint32;
description
"Total Continuity Check sessions down count.";
}
leaf admin-down-count {
type uint32;
description
"Total Continuity Check sessions admin down count.";
} }
uses session-packet-statistics; default "milliseconds";
description
"Time units among choice of s,ms,ns etc.";
}
leaf min-jitter-value {
type uint32;
description
"Minimum jitter value observed.";
}
leaf max-jitter-value {
type uint32;
description
"Maximum jitter value observed.";
}
leaf average-jitter-value {
type uint32;
description
"Average jitter value observed.";
} }
} }
}
grouping session-error-statistics { grouping session-path-verification-statistics {
description
"Grouping for per session path verification statistics";
container session-path-verification-statistics {
description description
"Grouping for per session error statistics"; "OAM per session path verification statistics.";
container session-error-statistics { leaf verified-count {
type uint32;
description description
"Per session error statistics."; "Total number of OAM packets that
went through a path as intended.
leaf packet-drops-count { A value of zero indicates that no
type uint32; verified count is sent.";
description }
"Total received packet drops count."; leaf failed-count {
} type uint32;
leaf packet-reorder-count { description
type uint32; "Total number of OAM packets that
description went through an unintended path.
"Total received packet reordered count."; A value of zero indicates that no
} failed count is sent.";
leaf packets-out-of-seq-count { }
type uint32; }
}
grouping session-type {
description
"This object indicates which kind
of activation will be used by the current
session.";
leaf session-type {
type enumeration {
enum "proactive" {
description description
"Total received out of sequence count."; "The current session is proactive session.";
} }
leaf packets-dup-count { enum "on-demand" {
type uint32;
description description
"Total received packet duplicates count."; "The current session is on-demand session.";
} }
} }
default "on-demand";
description
"Indicate which kind of activation will be used
by the current session";
} }
}
grouping session-delay-statistics { identity tp-address-technology-type {
description
"Test point address type";
}
identity mac-address-type {
base tp-address-technology-type;
description
"MAC address type";
}
identity ipv4-address-type {
base tp-address-technology-type;
description
"IPv4 address type";
}
identity ipv6-address-type {
base tp-address-technology-type;
description
"IPv6 address type";
}
identity tp-attribute-type {
base tp-address-technology-type;
description
"Test point attribute type";
}
identity system-id-address-type {
base tp-address-technology-type;
description
"System id address type";
}
identity as-number-address-type {
base tp-address-technology-type;
description
"AS number address type";
}
identity route-distinguisher-address-type {
base tp-address-technology-type;
description
"Route Distinguisher address type";
}
grouping tp-address {
leaf tp-location-types {
type identityref {
base tp-address-technology-type;
}
mandatory true;
description description
"Grouping for per session delay statistics"; "Test point address type.";
container session-delay-statistics { }
description container mac-address {
"Session delay summarised information."; when "derived-from-or-self(../tp-location-type, 'coam:mac-address-type')" {
leaf time-resolution-value {
type identityref {
base time-resolution;
}
description description
"Time units among choice of s,ms,ns etc."; "MAC address type";
} }
leaf min-delay-value { leaf mac-address {
type uint32; type yang:mac-address;
mandatory true;
description description
"Minimum delay value observed."; "MAC Address";
} }
leaf max-delay-value { description
type uint32; "MAC Address based MP Addressing.";
}
container ipv4-address {
when "derived-from-or-self(../tp-location-type, 'coam:ipv4-address-type')" {
description description
"Maximum delay value observed."; "IPv4 address type";
} }
leaf average-delay-value { leaf ipv4-address {
type uint32; type inet:ipv4-address;
mandatory true;
description description
"Average delay value observed."; "IPv4 Address";
} }
}
}
grouping session-jitter-statistics {
description
"Grouping for per session jitter statistics";
container session-jitter-statistics {
description description
"Session jitter summarised information."; "IP Address based MP Addressing.";
leaf time-resolution-value { }
type identityref { container ipv6-address {
base time-resolution; when "derived-from-or-self(../tp-location-type, 'coam:ipv6-address-type')" {
}
description description
"Time units among choice of s,ms,ns etc."; "IPv6 address type";
} }
leaf min-jitter-value { leaf ipv6-address {
type uint32; type inet:ipv6-address;
mandatory true;
description description
"Minimum jitter value observed."; "IPv6 Address";
} }
leaf max-jitter-value { description
type uint32; "ipv6 Address based MP Addressing.";
}
container tp-attribute {
when "derived-from-or-self(../tp-location-type, 'coam:tp-attribute-type')" {
description description
"Maximum jitter value observed."; "Test point attribute type";
} }
leaf average-jitter-value { leaf tp-attribute-type {
type uint32; type address-attribute-type;
description description
"Average jitter value observed."; "Test point type.";
} }
} choice tp-attribute-value {
}
grouping session-path-verification-statistics {
description
"Grouping for per session path verification statistics";
container session-path-verification-statistics {
description
"OAM per session path verification statistics.";
leaf verified-count {
type uint32;
description description
"Total number of OAM packets that "Test point value.";
went through a path as intended."; case ip-prefix {
leaf ip-prefix {
type inet:ip-prefix;
description
"IP prefix.";
}
}
case bgp {
leaf bgp {
type inet:ip-prefix;
description
"BGP Labeled Prefix ";
}
}
case tunnel {
leaf tunnel-interface {
type uint32;
description
"VPN Prefix ";
}
}
case pw {
leaf remote-pe-address {
type inet:ip-address;
description
"Remote pe address.";
}
leaf pw-id {
type uint32;
description
"Pseudowire ID is a non-zero 32-bit ID.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
}
case vpls {
leaf route-distinguisher {
type rt:route-distinguisher;
description
"Route Distinguisher is an 8 octets identifier
used to distinguish information about various
L2VPN advertised by a node.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
leaf sender-ve-id {
type uint16;
description
"Sender's VE ID. The VE ID (VPLS Edge Identifier)
is a 2-octet identifier.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
leaf receiver-ve-id {
type uint16;
description
"Receiver's VE ID.The VE ID (VPLS Edge Identifier)
is a 2-octet identifier.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
}
case mpls-mldp {
choice root-address {
description
"Root address choice.";
case ip-address {
leaf source-address {
type inet:ip-address;
description
"IP address.";
}
leaf group-ip-address {
type inet:ip-address;
description
"Group ip address.";
}
}
case vpn {
leaf as-number {
type inet:as-number;
description
"The AS number represents autonomous system
numbers which identify an Autonomous System.";
}
}
case global-id {
leaf lsp-id {
type string;
description
"LSP ID is an identifier of a LSP
within a MPLS network.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
}
}
}
} }
leaf failed-count { description
type uint32; "Test Point Attribute Container";
}
container system-info {
when "derived-from-or-self(../tp-location-type, 'coam:system-id-address-type')" {
description description
"Total number of OAM packets that "System id address type";
went through an unintended path.";
} }
} leaf system-id {
} type rt:router-id;
description
grouping session-type { "System ID assigned to this node.";
description
"This object indicatesindicate which kind
of activation will be used by the current
session.";
leaf session-type {
type enumeration {
enum "proactive" {
description
"The current session is proactive session.";
}
enum "on-demand" {
description
"The current session is on-demand session.";
}
} }
default "on-demand";
description description
"Indicate which kind of activation will be used "system ID container.";
by the current session";
} }
} description
"TP Address";
identity tp-address-technology-type { }
description grouping tp-address-ni {
"Test point address type"; description
} "Test point address with VRF.";
leaf ni {
identity mac-address-type { type routing-instance-ref;
base tp-address-technology-type;
description
"MAC address type";
}
identity ipv4-address-type {
base tp-address-technology-type;
description
"IPv4 address type";
}
identity ipv6-address-type {
base tp-address-technology-type;
description
"IPv6 address type";
}
identity tp-attribute-type {
base tp-address-technology-type;
description
"Test point attribute type";
}
identity system-id-address-type {
base tp-address-technology-type;
description
"System id address type";
}
identity as-number-address-type {
base tp-address-technology-type;
description
"AS number address type";
}
identity route-distinguisher-address-type {
base tp-address-technology-type;
description description
"Route Distinguisher address type"; "The ni is used to describe virtual resource partitioning
that may be present on a network device.Example of common
industry terms for virtual resource partitioning is VRF
instance.";
} }
uses tp-address;
grouping tp-address { }
leaf tp-location-type { grouping connectionless-oam-layers {
type identityref { list oam-neighboring-layers {
base tp-address-technology-type; key "index";
leaf index {
type uint8{
range "0..128";}
description
"Index of a list of neighboring test points
in the upstream layer and/or downstream layer
and/or same layer";
}
leaf technology-level {
type int8 {
range "-1..1";
} }
default "0";
description description
"Test point address type."; "The relative technology level
of neighboring test point
corresponding to the current
test point.Level 0 indicates default level,
-1 means downstream layer related to current layer and +1
means upstream layer related to current layer.
In relationship 0 means same layer.";
} }
container tp-address { choice tp-location {
container mac-address { case mac-address {
when "derived-from-or-self('../tp-location-type', 'mac-address-type')" { leaf mac-address-location {
description
"MAC address type";
}
leaf mac-address {
type yang:mac-address; type yang:mac-address;
description description
"MAC Address"; "MAC Address";
} }
description description
"MAC Address based MP Addressing."; "MAC Address based MP Addressing.";
} }
container ipv4-address { case ipv4-address {
when "derived-from-or-self('../tp-location-type', 'ipv4-address-type')" { leaf ipv4-address-location {
description
"IPv4 address type";
}
leaf ipv4-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 Address"; "Ipv4 Address";
} }
description description
"IP Address based MP Addressing."; "IP Address based MP Addressing.";
} }
container ipv6-address { case ipv6-address {
when "derived-from-or-self('../tp-location-type', 'ipv6-address-type')" { leaf ipv6-address-location {
description
"IPv6 address type";
}
leaf ipv6-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 Address"; "IPv6 Address";
} }
description description
"ipv6 Address based MP Addressing."; "IPv6 Address based MP Addressing.";
} }
container tp-attribute { case as-number {
when "derived-from-or-self('../tp-location-type', 'tp-attribute-type')" { leaf as-number-location {
description type inet:as-number;
"Test point attribute type";
}
leaf tp-attribute-type {
type address-attribute-type;
description
"Test point type.";
}
choice tp-attribute-value {
description description
"Test point value."; "AS number location";
case ip-prefix {
leaf ip-prefix {
type inet:ip-prefix;
description
"IP prefix.";
}
}
case bgp {
leaf bgp {
type inet:ip-prefix;
description
"BGP Labeled Prefix ";
}
}
case tunnel {
leaf tunnel-interface {
type uint32;
description
"VPN Prefix ";
}
}
case pw {
leaf remote-pe-address {
type inet:ip-address;
description
"Remote pe address.";
}
leaf pw-id {
type uint32;
description
"Pseudowire ID is a non-zero 32-bit ID.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
}
case vpls {
leaf route-distinguisher {
type uint64;
description
"Route Distinguisher is an 8 octets identifier
used to distinguish information about various
L2VPN advertised by a node.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
leaf sender-ve-id {
type uint16;
description
"Sender's VE ID. The VE ID (VPLS Edge Identifier)
is a 2-octet identifier.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
leaf receiver-ve-id {
type uint16;
description
"Receiver's VE ID.The VE ID (VPLS Edge Identifier)
is a 2-octet identifier.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
}
case mpls-mldp {
choice root-address {
description
"Root address choice.";
case ip-address {
leaf source-address {
type inet:ip-address;
description
"IP address.";
}
leaf group-ip-address {
type inet:ip-address;
description
"Group ip address.";
}
}
case vpn {
leaf as-number {
type inet:as-number;
description
"The AS number represents autonomous system
numbers which identify an Autonomous System.";
}
}
case global-id {
leaf lsp-id {
type string;
description
"LSP ID is an identifier of a LSP
within a MPLS network.";
reference
"RFC 4379 :Detecting Multi-Protocol Label
Switched (MPLS) Data Plane Failures";
}
}
}
}
} }
description description
"Test Point Attribute Container"; "AS number for point to multipoint OAM";
} }
container system-info { case system-id {
when "derived-from-or-self('../tp-location-type', 'system-id-address-type')" { leaf system-id-location {
description
"System id address type";
}
leaf system-id {
type router-id; type router-id;
description description
"System ID assigned to this node."; "System id location";
} }
description description
"system ID container."; "System ID";
} }
description description
"TP Addressing."; "TP location.";
} }
description description
"TP Address"; "List of neighboring test points in the upstream layer and/or
downstream layer or same layer that are related to current test
point. If neighboring test-point in the upstream layer exist, the
technology-level is specified as +1. If neighboring test-point
in the downstream layer exist, the technology-level is specified
as -1, if neighboring test-points are located at the same layer
as the current test-point, the technology-level is specified as
0.";
} }
description
grouping tp-address-ni { "Connectionless related OAM neighboring layer";
description }
"Test point address with VRF."; grouping tp-technology {
leaf ni { choice technology {
type routing-instance-ref; default "technology-null";
case technology-null {
description description
"The ni is used to describe virtual resource partitioning "This is a placeholder when no technology is needed.";
that may be present on a network device.Example of common leaf tech-null {
industry terms for virtual resource partitioning is VRF type empty;
instance."; description
"There is no technology define";
}
} }
uses tp-address; description
"Technology choice.";
} }
description
"OAM Technology";
}
grouping tp-tools {
description
"Test Point OAM Toolset.";
container tp-tools {
leaf continuity-check {
type boolean;
mandatory true;
description
"A flag indicating whether or not the
continuity check function is supported.";
reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification.
RFC 5880: Bidirectional Forwarding Detection.
RFC 5881: BFD for IPv4 and IPv6.
RFC 5883: BFD for Multihop Paths.
RFC 5884: BFD for MPLS Label Switched Paths.
RFC 5885: BFD for PW VCCV.
RFC 6450: Multicast Ping Protocol.";
}
leaf path-discovery {
type boolean;
mandatory true;
description
"A flag indicating whether or not the
path discovery function is supported.";
reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification.
grouping connectionless-oam-layers { RFC 4884: Extended ICMP to Support Multi-part Message.
list oam-neighboring-layers { RFC 5837:Extending ICMP for Interface
key "index"; and Next-Hop Identification.
leaf index { RFC 4379: LSP-PING.";
type uint8{ }
range "0..128";} description
description "Container for test point OAM tools set.";
"Index of a list of neighboring test points }
in the upstream layer and/or downstream layer }
and/or same layer"; grouping test-point-location-info {
} uses tp-technology;
leaf technology-level { uses tp-tools;
type int8 { anydata root {
range "-1..1"; yangmnt:mount-point "root";
} description
default "0"; "Root for models supported per
test point";
}
uses connectionless-oam-layers;
description
"Test point Location";
}
grouping test-point-locations {
description
"Group of test point locations.";
leaf tp-location-type {
type identityref {
base tp-address-technology-type;
}
description
"Test point location type.";
}
container ipv4-location-type {
when "derived-from-or-self(../tp-location-type, 'coam:ipv4-address-type')" {
description description
"The relative technology level "When test point location type is equal to ipv4 address.";
of neighboring test point
corresponding to the current
test point.Level 0 indicates default level,
-1 means downstream layer related to current layer and +1
means upstream layer related to current layer.
In relationship 0 means same layer.";
} }
choice tp-location { container test-point-ipv4-location-list {
case mac-address { list test-point-locations {
leaf mac-address-location { key "ipv4-location ni";
type yang:mac-address; leaf ipv4-location {
description
"MAC Address";
}
description
"MAC Address based MP Addressing.";
}
case ipv4-address {
leaf ipv4-address-location {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Ipv4 Address"; "IPv4 Address.";
} }
description leaf ni {
"IP Address based MP Addressing."; type routing-instance-ref;
}
case ipv6-address {
leaf ipv6-address-location {
type inet:ipv6-address;
description description
"IPv6 Address"; "The ni is used to describe the
corresponding network instance";
} }
uses test-point-location-info;
description description
"IPv6 Address based MP Addressing."; "List of test point locations.";
} }
case as-number { description
leaf as-number-location { "Serves as top-level container
type inet:as-number; for test point location list.";
}
description
"ipv4 location type container.";
}
container ipv6-location-type {
when "derived-from-or-self(../tp-location-type, 'coam:ipv6-address-type')" {
description
"when test point location is equal to ipv6 address";
}
container test-point-ipv6-location-list {
list test-point-locations {
key "ipv6-location ni";
leaf ipv6-location {
type inet:ipv6-address;
description description
"AS number location"; "IPv6 Address.";
} }
description leaf ni {
"AS number for point to multipoint OAM"; type routing-instance-ref;
}
case system-id {
leaf system-id-location {
type router-id;
description description
"System id location"; "The ni is used to describe the
corresponding network instance";
} }
uses test-point-location-info;
description description
"System ID"; "List of test point locations.";
} }
description description
"TP location."; "Serves as top-level container
for test point location list.";
} }
description description
"List of neighboring test points in the upstream layer and/or "ipv6 location type container.";
downstream layer or same layer that are related to current test
point. If neighboring test-point in the upstream layer exist, the
technology-level is specified as +1. If neighboring test-point
in the downstream layer exist, the technology-level is specified
as -1, if neighboring test-points are located at the same layer
as the current test-point, the technology-level is specified as
0.";
} }
description container mac-location-type {
"Connectionless related OAM neighboring layer"; when "derived-from-or-self(../tp-location-type, 'coam:mac-address-type')" {
}
grouping tp-technology {
choice technology {
default "technology-null";
case technology-null {
description description
"This is a placeholder when no technology is needed."; "when test point location type is equal to mac address.";
leaf tech-null {
type empty;
description
"There is no technology define";
}
}
description
"Technology choice.";
}
description
"OAM Technology";
}
grouping tp-tools {
description
"Test Point OAM Toolset.";
container tp-tools {
leaf continuity-check {
type boolean;
mandatory true;
description
"A flag indicating whether or not the
continuity check function is supported.";
reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification.
RFC 5880: Bidirectional Forwarding Detection.
RFC 5881: BFD for IPv4 and IPv6.
RFC 5883: BFD for Multihop Paths.
RFC 5884: BFD for MPLS Label Switched Paths.
RFC 5885: BFD for PW VCCV.
RFC 6450: Multicast Ping Protocol.";
} }
leaf path-discovery { container test-point-mac-address-location-list {
type boolean; list test-point-locations {
mandatory true; key "mac-address-location";
leaf mac-address-location {
type yang:mac-address;
description
"MAC Address";
}
uses test-point-location-info;
description
"List of test point locations.";
}
description description
"A flag indicating whether or not the "Serves as top-level container
path discovery function is supported."; for test point location list.";
reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification.
RFC 4884: Extended ICMP to Support Multi-part Message.
RFC 5837:Extending ICMP for Interface
and Next-Hop Identification.
RFC 4379: LSP-PING.";
} }
description description
"Container for test point OAM tools set."; "mac address location type container.";
}
}
grouping test-point-location-info {
uses tp-technology;
uses tp-tools;
anydata root {
yangmnt:mount-point "root";
description
"Root for models supported per
test point";
} }
uses connectionless-oam-layers; container group-as-number-location-type {
description when "derived-from-or-self(../tp-location-type, 'coam:as-number-address-type')" {
"Test point Location"; description
} "when test point location type is equal to as-number.";
grouping test-point-locations {
description
"Group of test point locations.";
leaf tp-location-type {
type identityref {
base tp-address-technology-type;
} }
description container test-point-as-number-location-list {
"Test point location type."; list test-point-locations {
} key "as-number-location";
container location-type { leaf as-number-location {
container ipv4-location-type { type inet:as-number;
when "derived-from-or-self('../tp-location-type', 'ipv4-address-type')" {
description
"When test point location type is equal to ipv4 address.";
}
container test-point-ipv4-location-list {
list test-point-locations {
key "ipv4-location ni";
leaf ipv4-location {
type inet:ipv4-address;
description
"IPv4 Address.";
}
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"List of test point locations."; "AS number for point to multi point OAM.";
} }
description leaf ni {
"Serves as top-level container type routing-instance-ref;
for test point location list.";
}
description
"ipv4 location type container.";
}
container ipv6-location-type {
when "derived-from-or-self('../tp-location-type', 'ipv6-address-type')" {
description
"when test point location is equal to ipv6 address";
}
container test-point-ipv6-location-list {
list test-point-locations {
key "ipv6-location ni";
leaf ipv6-location {
type inet:ipv6-address;
description
"IPv6 Address.";
}
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"List of test point locations."; "The ni is used to describe the
corresponding network instance";
} }
uses test-point-location-info;
description description
"Serves as top-level container "List of test point locations.";
for test point location list.";
} }
description description
"ipv6 location type container."; "Serves as top-level container
for test point location list.";
} }
container mac-location-type { description
when "derived-from-or-self('../tp-location-type', 'mac-address-type')" { "as number location type container.";
description }
"when test point location type is equal to mac address."; container group-system-id-location-type {
} when "derived-from-or-self(../tp-location-type, 'coam:system-id-address-type')" {
container test-point-mac-address-location-list {
list test-point-locations {
key "mac-address-location";
leaf mac-address-location {
type yang:mac-address;
description
"MAC Address";
}
uses test-point-location-info;
description
"List of test point locations.";
}
description
"Serves as top-level container
for test point location list.";
}
description description
"mac address location type container."; "when test point location type is equal to system-info.";
} }
container group-as-number-location-type { container test-point-system-info-location-list {
when "'tp-location-type' = 'as-number-address-type'" { list test-point-locations {
description key "system-id-location";
"When test point location type is equal to leaf system-id-location {
as-number."; type inet:uri;
}
container test-point-as-number-location-list {
list test-point-locations {
key "as-number-location";
leaf as-number-location {
type inet:as-number;
description
"AS number for point to multi point OAM.";
}
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"List of test point locations."; "System Id.";
} }
description leaf ni {
"Serves as top-level container type routing-instance-ref;
for test point location list.";
}
description
"as number location type container.";
}
container group-system-id-location-type {
when "'tp-location-type' = 'system-id-address-type'" {
description
"When test point location is equal to
system info.";
}
container test-point-system-info-location-list {
list test-point-locations {
key "system-id-location";
leaf system-id-location {
type inet:uri;
description
"System Id.";
}
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"List of test point locations."; "The ni is used to describe the
corresponding network instance";
} }
uses test-point-location-info;
description description
"Serves as top-level container for "List of test point locations.";
test point location list.";
} }
description description
"system ID location type container."; "Serves as top-level container for
test point location list.";
} }
description description
"Choice of address types."; "system ID location type container.";
} }
}
augment "/nd:networks/nd:network/nd:node" {
description
"Augment test points of connectionless oam.";
uses test-point-locations;
}
grouping uint64-timestamp {
description
"Grouping for timestamp.";
leaf timestamp-sec {
type uint32;
description
"Absolute timestamp in seconds as per IEEE1588v2
or seconds part in 64-bit NTP timestamp.";
} }
leaf timestamp-nanosec {
augment "/nd:networks/nd:network/nd:node" { type uint32;
description description
"Augment test points of connectionless oam."; "Fractional part in nanoseconds as per IEEE1588v2
uses test-point-locations; or Fractional part in 64-bit NTP timestamp.";
} }
}
grouping uint64-timestamp { grouping timestamp {
description
"Grouping for timestamp.";
leaf timestamp-type {
type uint32;
description description
"Grouping for timestamp."; "Truncated PTP = 0, NTP = 1";
leaf timestamp-sec {
type uint32;
description
"Absolute timestamp in seconds as per IEEE1588v2
or seconds part in 64-bit NTP timestamp.";
}
leaf timestamp-nanosec {
type uint32;
description
"Fractional part in nanoseconds as per IEEE1588v2
or Fractional part in 64-bit NTP timestamp.";
}
} }
uses uint64-timestamp;
grouping timestamp { }
grouping path-discovery-data {
description
"Path discovery related data output from nodes.";
container src-test-point {
description description
"Grouping for timestamp."; "Source test point.";
leaf timestamp-type { uses tp-address-ni;
type uint32;
description
"Truncated PTP = 0, NTP = 1";
}
uses uint64-timestamp;
} }
container dest-test-point {
grouping path-discovery-data {
description description
"Path discovery related data output from nodes."; "Destination test point.";
container src-test-point { uses tp-address-ni;
description }
"Source test point."; leaf sequence-number {
uses tp-address-ni; type uint64;
} default "0";
container dest-test-point { description
description "Sequence number in data packets.A value of
"Destination test point."; zero indicates that no sequence number is sent.";
uses tp-address-ni; }
} leaf hop-cnt {
leaf sequence-number { type uint8;
type uint64; default "0";
description description
"Sequence number in data packets."; "Hop count.A value of zero indicates
} that no hop count is sent";
leaf hop-cnt { }
type uint8; uses session-packet-statistics;
uses session-error-statistics;
uses session-delay-statistics;
uses session-jitter-statistics;
container path-verification {
description
"Optional path verification related information.";
leaf flow-info {
type string;
description description
"Hop count."; "Informations that refers to the flow.";
} }
uses session-packet-statistics; uses session-path-verification-statistics;
uses session-error-statistics; }
uses session-delay-statistics; container path-trace-info {
uses session-jitter-statistics; description
container path-verification { "Optional path trace per-hop test point information.
The path trace information list has typically a single
element for per-hop cases like path-discovery RPC operation
but allows a list of hop related information for other types of
data retrieval methods.";
list path-trace-info-list {
key "index";
description description
"Optional path verification related information."; "Path trace information list.";
leaf flow-info { leaf index {
type string; type uint32;
description description
"Informations that refers to the flow."; "Trace information index.";
} }
uses session-path-verification-statistics; uses tp-address-ni;
} uses timestamp;
container path-trace-info { leaf ingress-intf-name {
description type if:interface-ref;
"Optional path trace per-hop test point information.
The list has typically a single element for per-hop
cases like path-discovery RPC operation but allows
a list of hop related information for other types of
data retrieval methods.";
list path-trace-info-list {
key "index";
description description
"Path trace information list."; "Ingress interface name";
leaf index {
type uint32;
description
"Trace information index.";
}
uses tp-address-ni;
uses timestamp;
leaf ingress-intf-name {
type if:interface-ref;
description
"Ingress interface name";
}
leaf egress-intf-name {
type if:interface-ref;
description
"Egress interface name";
}
leaf queue-depth {
type uint32;
description
"Length of the queue of the interface from where
the packet is forwarded out. The queue depth could
be the current number of memory buffers used by the
queue and a packet can consume one or more memory buffers
thus constituting device-level information.";
}
leaf transit-delay {
type uint32;
description
"Time in nano seconds
packet spent transiting a node.";
}
leaf app-meta-data {
type uint64;
description
"Application specific
data added by node.";
}
} }
}
}
grouping continuity-check-data {
description
"Continuity check data output from nodes.";
container src-test-point {
description
"Source test point.";
uses tp-address-ni;
leaf egress-intf-name { leaf egress-intf-name {
type if:interface-ref; type if:interface-ref;
description description
"Egress interface name"; "Egress interface name";
} }
} leaf queue-depth {
container dest-test-point { type uint32;
description
"Destination test point.";
uses tp-address-ni;
leaf ingress-intf-name {
type if:interface-ref;
description description
"Ingress interface name"; "Length of the queue of the interface from where
the packet is forwarded out. The queue depth could
be the current number of memory buffers used by the
queue and a packet can consume one or more memory buffers
thus constituting device-level information.";
}
leaf transit-delay {
type uint32;
description
"Time in nano seconds
packet spent transiting a node.";
}
leaf app-meta-data {
type uint64;
description
"Application specific
data added by node.";
} }
} }
leaf sequence-number {
type uint64;
description
"Sequence number.";
}
leaf hop-cnt {
type uint8;
description
"Hop count.";
}
uses session-packet-statistics;
uses session-error-statistics;
uses session-delay-statistics;
uses session-jitter-statistics;
} }
}
container cc-session-statistics-data { grouping continuity-check-data {
if-feature "continuity-check"; description
config false; "Continuity check data output from nodes.";
container src-test-point {
description description
"CC operational information."; "Source test point.";
container cc-ipv4-sessions-statistics { uses tp-address-ni;
leaf egress-intf-name {
type if:interface-ref;
description description
"CC ipv4 sessions"; "Egress interface name.";
uses cc-session-statistics;
} }
container cc-ipv6-sessions-statistics { }
container dest-test-point {
description
"Destination test point.";
uses tp-address-ni;
leaf ingress-intf-name {
type if:interface-ref;
description description
"CC ipv6 sessions"; "Ingress interface name.";
uses cc-session-statistics;
} }
} }
leaf sequence-number {
type uint64;
default "0";
description
"Sequence number in data packets.A value of
zero indicates that no sequence number is sent.";
}
leaf hop-cnt {
type uint8;
default "0";
description
"Hop count.A value of zero indicates
that no hop count is sent";
}
uses session-packet-statistics;
uses session-error-statistics;
uses session-delay-statistics;
uses session-jitter-statistics;
}
container cc-session-statistics-data {
if-feature "continuity-check";
config false;
description
"CC operational information.";
container cc-ipv4-sessions-statistics {
description
"CC ipv4 sessions";
uses cc-session-statistics;
}
container cc-ipv6-sessions-statistics {
description
"CC ipv6 sessions";
uses cc-session-statistics;
}
} }
}
<CODE ENDS> <CODE ENDS>
5. Connectionless model applicability 5. Connectionless model applicability
"ietf-connectionless-oam" model defined in this document provides "ietf-connectionless-oam" model defined in this document provides
technology-independent abstraction of key OAM constructs for technology-independent abstraction of key OAM constructs for
connectionless protocols. This model can be further extended to connectionless protocols. This model can be further extended to
include technology specific details, e.g., adding new data nodes with include technology specific details, e.g., adding new data nodes with
technology specific functions and parameters into proper anchor technology specific functions and parameters into proper anchor
skipping to change at page 45, line 39 skipping to change at page 45, line 39
The authors of this document would like to thank Greg Mirsky and The authors of this document would like to thank Greg Mirsky and
others for their sustainable review and comments, proposals to others for their sustainable review and comments, proposals to
improve and stabilize document. improve and stabilize document.
9. References 9. References
9.1. Normative References 9.1. Normative References
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, <https://www.rfc- DOI 10.17487/RFC3688, January 2004,
editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet
Control Message Protocol (ICMPv6) for the Internet Control Message Protocol (ICMPv6) for the Internet
Protocol Version 6 (IPv6) Specification", STD 89, Protocol Version 6 (IPv6) Specification", STD 89,
RFC 4443, DOI 10.17487/RFC4443, March 2006, RFC 4443, DOI 10.17487/RFC4443, March 2006,
<https://www.rfc-editor.org/info/rfc4443>. <https://www.rfc-editor.org/info/rfc4443>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246, (TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008, <https://www.rfc- DOI 10.17487/RFC5246, August 2008,
editor.org/info/rfc5246>. <https://www.rfc-editor.org/info/rfc5246>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, <https://www.rfc- DOI 10.17487/RFC6020, October 2010,
editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<https://www.rfc-editor.org/info/rfc6242>. <https://www.rfc-editor.org/info/rfc6242>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, Protocol (NETCONF) Access Control Model", RFC 6536,
DOI 10.17487/RFC6536, March 2012, <https://www.rfc- DOI 10.17487/RFC6536, March 2012,
editor.org/info/rfc6536>. <https://www.rfc-editor.org/info/rfc6536>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface [RFC7223] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, Management", RFC 7223, DOI 10.17487/RFC7223, May 2014,
<https://www.rfc-editor.org/info/rfc7223>. <https://www.rfc-editor.org/info/rfc7223>.
[RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792,
skipping to change at page 47, line 8 skipping to change at page 47, line 8
[I-D.ietf-bfd-yang] [I-D.ietf-bfd-yang]
Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and
G. Mirsky, "YANG Data Model for Bidirectional Forwarding G. Mirsky, "YANG Data Model for Bidirectional Forwarding
Detection (BFD)", draft-ietf-bfd-yang-06 (work in Detection (BFD)", draft-ietf-bfd-yang-06 (work in
progress), June 2017. progress), June 2017.
[I-D.ietf-i2rs-yang-network-topo] [I-D.ietf-i2rs-yang-network-topo]
Clemm, A., Medved, J., Varga, R., Bahadur, N., Clemm, A., Medved, J., Varga, R., Bahadur, N.,
Ananthakrishnan, H., and X. Liu, "A Data Model for Network Ananthakrishnan, H., and X. Liu, "A Data Model for Network
Topologies", draft-ietf-i2rs-yang-network-topo-14 (work in Topologies", draft-ietf-i2rs-yang-network-topo-15 (work in
progress), June 2017. progress), September 2017.
[I-D.ietf-lime-yang-connection-oriented-oam-model] [I-D.ietf-lime-yang-connection-oriented-oam-model]
Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model
for Connection Oriented Operations, Administration, and for Connection Oriented Operations, Administration, and
Maintenance(OAM) protocols", draft-ietf-lime-yang- Maintenance(OAM) protocols", draft-ietf-lime-yang-
connection-oriented-oam-model-00 (work in progress), June connection-oriented-oam-model-00 (work in progress), June
2017. 2017.
[I-D.ietf-lime-yang-connectionless-oam-methods] [I-D.ietf-lime-yang-connectionless-oam-methods]
Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan,
"Retrieval Methods YANG Data Model for Connectionless "Retrieval Methods YANG Data Model for Connectionless
Operations, Administration, and Maintenance(OAM) Operations, Administration, and Maintenance(OAM)
protocols", draft-ietf-lime-yang-connectionless-oam- protocols", draft-ietf-lime-yang-connectionless-oam-
methods-05 (work in progress), June 2017. methods-06 (work in progress), August 2017.
[I-D.ietf-netmod-schema-mount] [I-D.ietf-netmod-schema-mount]
Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft-
ietf-netmod-schema-mount-06 (work in progress), July 2017. ietf-netmod-schema-mount-06 (work in progress), July 2017.
[I-D.ietf-spring-sr-yang] [I-D.ietf-spring-sr-yang]
Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG
Data Model for Segment Routing", draft-ietf-spring-sr- Data Model for Segment Routing", draft-ietf-spring-sr-
yang-07 (work in progress), July 2017. yang-07 (work in progress), July 2017.
[I-D.zheng-mpls-lsp-ping-yang-cfg] [I-D.zheng-mpls-lsp-ping-yang-cfg]
Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R.
Rahman, "Yang Data Model for LSP-PING", draft-zheng-mpls- Rahman, "Yang Data Model for LSP-PING", draft-zheng-mpls-
lsp-ping-yang-cfg-05 (work in progress), June 2017. lsp-ping-yang-cfg-05 (work in progress), June 2017.
[RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching
(MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic
Class" Field", RFC 5462, DOI 10.17487/RFC5462, February
2009, <https://www.rfc-editor.org/info/rfc5462>.
[RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual [RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual
Private Network (L2VPN) Operations, Administration, and Private Network (L2VPN) Operations, Administration, and
Maintenance (OAM) Requirements and Framework", RFC 6136, Maintenance (OAM) Requirements and Framework", RFC 6136,
DOI 10.17487/RFC6136, March 2011, <https://www.rfc- DOI 10.17487/RFC6136, March 2011,
editor.org/info/rfc6136>. <https://www.rfc-editor.org/info/rfc6136>.
[RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y.
Weingarten, "An Overview of Operations, Administration, Weingarten, "An Overview of Operations, Administration,
and Maintenance (OAM) Tools", RFC 7276, and Maintenance (OAM) Tools", RFC 7276,
DOI 10.17487/RFC7276, June 2014, <https://www.rfc- DOI 10.17487/RFC7276, June 2014,
editor.org/info/rfc7276>. <https://www.rfc-editor.org/info/rfc7276>.
Authors' Addresses Authors' Addresses
Deepak Kumar Deepak Kumar
CISCO Systems CISCO Systems
510 McCarthy Blvd 510 McCarthy Blvd
Milpitas, CA 95035 Milpitas, CA 95035
USA USA
Email: dekumar@cisco.com Email: dekumar@cisco.com
 End of changes. 170 change blocks. 
1009 lines changed or deleted 1022 lines changed or added

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