< draft-ietf-lime-yang-connectionless-oam-05.txt   draft-ietf-lime-yang-connectionless-oam-06.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: November 16, 2017 Q. Wu Expires: December 11, 2017 Q. Wu
Huawei Huawei
R. Rahman R. Rahman
S. Raghavan S. Raghavan
Cisco Cisco
May 15, 2017 June 9, 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-05 draft-ietf-lime-yang-connectionless-oam-06
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
skipping to change at page 1, line 43 skipping to change at page 1, line 43
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 November 16, 2017. This Internet-Draft will expire on December 11, 2017.
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 (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 20 skipping to change at page 2, line 20
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. Conventions used in this document . . . . . . . . . . . . . . 3 2. Conventions used in this document . . . . . . . . . . . . . . 3
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3. OAM-layers . . . . . . . . . . . . . . . . . . . . . . . 6 3.3. OAM-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 . . . . . . . . . . . . . . . . . . . 7 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 7
3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 7 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8
4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 7 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 8
5. Connectionless model applicability . . . . . . . . . . . . . 32 5. Connectionless model applicability . . . . . . . . . . . . . 33
5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 33 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 34
5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 33 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 34
5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 35 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 36
5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 37 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 38
5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 37 5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 38
5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 38 5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 39
6. Security Considerations . . . . . . . . . . . . . . . . . . . 40 6. Security Considerations . . . . . . . . . . . . . . . . . . . 41
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42
8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 42 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 43
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 43
9.1. Normative References . . . . . . . . . . . . . . . . . . 42 9.1. Normative References . . . . . . . . . . . . . . . . . . 43
9.2. Informative References . . . . . . . . . . . . . . . . . 44 9.2. Informative References . . . . . . . . . . . . . . . . . 45
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 44 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45
1. Introduction 1. Introduction
Operations, Administration, and Maintenance (OAM) are important Operations, Administration, and Maintenance (OAM) are important
networking functions that allow operators to: networking functions that allow operators to:
1. Monitor networks connections (Reachability Verification, 1. Monitor networks connections (Reachability Verification,
Continuity Check). Continuity Check).
2. Troubleshoot failures (Fault verification and localization). 2. Troubleshoot failures (Fault verification and localization).
skipping to change at page 3, line 32 skipping to change at page 3, line 34
In this document, we presents a base YANG Data model for In this document, we presents a base YANG Data model for
connectionless OAM protocols. The generic YANG model for connectionless OAM protocols. The generic YANG model for
connectionless OAM only includes configuration data and state data. connectionless OAM only includes configuration data and state data.
It can be used in conjunction with data retrieval method model It can be used in conjunction with data retrieval method model
[I-D.ietf-lime-yang-connectionless-oam-methods], which focuses on [I-D.ietf-lime-yang-connectionless-oam-methods], which focuses on
data retrieval procedures like RPC. However it also can be used data retrieval procedures like RPC. However it also can be used
independently of data retrieval method model. independently of data retrieval method model.
2. Conventions used in this document 2. Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
The following terms are defined in [RFC6241] and are not redefined The following terms are defined in [RFC6241] and are not redefined
here: here:
o client o client
o configuration data o configuration data
o server o server
o state data o state data
The following terms are defined in [RFC6020] and are not redefined The following terms are defined in [RFC6020] and are not redefined
here: here:
o augment o augment
o data model o data model
o data node
o data node
The terminology for describing YANG data models is found in The terminology for describing YANG data models is found in
[RFC6020]. [RFC6020].
2.1. Terminology 2.1. Terminology
TP - Test Point TP - Test Point
MAC - Media Access Control MAC - Media Access Control
BFD - Bidirectional Forwarding Detection BFD - Bidirectional Forwarding Detection
RPC - A Remote Procedure Call, as used within the NETCONF protocol RPC - A Remote Procedure Call, as used within the NETCONF protocol
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
2.2. Prefixes in Data Node Names
In this document, names of data nodes, actions and other data model
objects are often used without a prefix, as long as it is clear from
the context in which YANG module each name is defined. Otherwise,
names are prefixed using the standard prefix associated with the
corresponding YANG module, as shown in Table 1.
+--------+-----------------------+----------------------------------+
| Prefix | YANG module | Reference |
+--------+-----------------------+----------------------------------+
| if | ietf-interfaces | [RFC7223] |
| | | |
| inet | ietf-inet-types | [RFC6991] |
| | | |
| yangmn | ietf-yang-schema- | [I-D.ietf-netmod-schema-mount] |
| t | mount | |
| | | |
| nd | ietf-network | [I-D.ietf-i2rs-yang-network-topo |
| | | ] |
| | | |
| ni | ietf-network-instance | [I-D.ietf-rtgwg-ni-model] |
+--------+-----------------------+----------------------------------+
Table 1: Prefixes and corresponding YANG modules
3. Overview of the Connectionless OAM Model 3. Overview of the Connectionless OAM Model
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 applicable for proactive OAM sessions. statistics and these are 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 possible by augmented (eg., IPv4 address for IPv4 locations) are possible by augmented
network nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] network nodes which are defined in [I-D.ietf-i2rs-yang-network-topo]
to describe the network hierarchies and the inventory of nodes to describe the network hierarchies and the inventory of nodes
contained in a network. Each 'test-point-location' is chosen based contained in a network. Each 'test-point-location' is chosen based
on 'location-type' which when chosen, leads to a container that on 'location-type' which when chosen, leads to a container that
includes a list of 'test-point-locations' keyed by technology includes a list of 'test-point-locations' keyed by technology
specific keys. Each test point location includes a 'test-point- specific keys. Each test point location includes a 'test-point-
location-info'. The 'test-point-location-info' includes 'tp- location-info'. The 'test-point-location-info' includes 'tp-
technology', 'tp-tools', and 'connectionless-oam-layers'. The technology', 'tp-tools', and 'connectionless-oam-layers'. The
skipping to change at page 6, line 45 skipping to change at page 7, line 19
range "0..65535"; range "0..65535";
} }
} }
leaf level { leaf level {
type int32 { type int32 {
range "-1..1"; range "-1..1";
} }
description description
"Level"; "Level";
} }
ordered-by system;
description description
"List of related oam layers."; "List of related oam layers.";
} }
3.4. Test Point Locations Information 3.4. Test Point Locations Information
This is a generic grouping for Test Point Locations Information. It This is a generic grouping for Test Point Locations Information. It
Provide details of Test Point Location using Tools, 'OAM-Layers' Provide details of Test Point Location using Tools, 'OAM-Layers'
grouping defined above. grouping defined above.
skipping to change at page 7, line 49 skipping to change at page 8, line 19
Continuity check data output from methods, includes 'src-test-point', Continuity check data output from methods, includes 'src-test-point',
'dst-test-point', 'sequence-number', 'hop-cnt' and session statistics 'dst-test-point', 'sequence-number', 'hop-cnt' and session statistics
of various kinds. The continuity check data model is made generic of various kinds. The continuity check data model is made generic
enough to allow different methods of data retrieval. None of the enough to allow different methods of data retrieval. None of the
fields are made mandatory for that reason. Noted that the retrieval fields are made mandatory for that reason. Noted that the retrieval
methods are defined in methods are defined in
[I-D.ietf-lime-yang-connectionless-oam-methods]. [I-D.ietf-lime-yang-connectionless-oam-methods].
4. OAM YANG Module 4. OAM YANG Module
<CODE BEGINS> file "ietf-connectionless-oam@2017-04-25.yang" <CODE BEGINS> file "ietf-connectionless-oam@2017-06-09.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
"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 indpendent manner.
Functional level abstraction is indendent with
YANG modeling. 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-04-25 {
description
" Base model for Connectionless
Operations, Administration,
and Maintenance(OAM) ";
reference
" RFC XXXX: Connectionless
Operations, Administration, and
Maintenance(OAM)YANG Data Model";
}
feature connection-less { module ietf-connectionless-oam {
description yang-version 1.1;
"This feature indicates that OAM solution is connection less."; namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam";
} prefix coam;
feature continuity-check { import ietf-yang-schema-mount {
description prefix yangmnt;
"This feature indicates that the server supports }
executing continuity check OAM command and import ietf-network {
returning a response. Servers that do not advertise prefix nd;
this feature will not support executing }
continuity check command or rpc model for import ietf-yang-types {
continuity check command."; prefix yang;
} }
import ietf-interfaces {
prefix if;
}
import ietf-inet-types {
prefix inet;
}
import ietf-network-instance {
prefix ni;
}
feature path-discovery { organization
description "IETF LIME Working Group";
"This feature indicates that the server supports contact
executing path discovery OAM command and "Deepak Kumar dekumar@cisco.com
returning a response. Servers that do not advertise Qin Wu bill.wu@huawei.com
this feature will not support executing S Raghavan srihari@cisco.com
path discovery command or rpc model for Zitao Wang wangzitao@huawei.com
path discovery command."; R Rahman rrahman@cisco.com";
}
typedef router-id {
type yang:dotted-quad;
description description
"A 32-bit number in the dotted quad format assigned to each "This YANG module defines the generic configuration,
router. This number uniquely identifies the router within an data model, statistics for connectionless OAM to be
Autonomous System."; used within IETF in a protocol indpendent manner.
} Functional level abstraction is indendent with
YANG modeling. 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";
typedef routing-instance-ref { revision 2017-06-09 {
type leafref { description
path "/ni:network-instances/ni:network-instance/ni:name"; " Base model for Connectionless
Operations, Administration,
and Maintenance(OAM) ";
reference
" RFC XXXX: Connectionless
Operations, Administration, and
Maintenance(OAM)YANG Data Model";
} }
description
"This type is used for leafs that reference a routing instance
configuration.";
}
typedef ipv4-multicast-group-address { feature connection-less {
type string { description
pattern "(2((2[4-9])|(3[0-9]))\\.)(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; "This feature indicates that OAM solution is connection less.";
}
feature continuity-check {
description
"This feature indicates that the server supports
executing continuity check OAM command and
returning a response. Servers that do not advertise
this feature will not support executing
continuity check command or rpc model for
continuity check command.";
} }
description
"The ipv4-multicast-group-address type
represents an IPv4 multicast address
in dotted-quad notation.";
reference "RFC4607";
}
typedef ipv6-multicast-group-address { feature path-discovery {
type string { description
pattern "(((FF|ff)[0-9a-fA-F]{2}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))"; "This feature indicates that the server supports
pattern "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)"; executing path discovery OAM command and
returning a response. Servers that do not advertise
this feature will not support executing
path discovery command or rpc model for
path discovery command.";
} }
description
"The ipv6-multicast-group-address
type represents an IPv6 address in full,
mixed, shortened, and shortened-mixed
notation.";
reference
"RFC4291 2.7.
ietf-inet-types:ipv6-address";
}
typedef ip-multicast-group-address { typedef router-id {
type union { type yang:dotted-quad;
type ipv4-multicast-group-address; description
type ipv6-multicast-group-address; "A 32-bit number in the dotted quad format assigned to each
router. This number uniquely identifies the router within an
Autonomous System.";
} }
description
"The ip-multicast-group-address type
represents an IP multicast address and
is IP version neutral. The format of the
textual representations implies the IP version.";
}
identity address-attribute-types { typedef routing-instance-ref {
description type leafref {
"This is base identity of address path "/ni:network-instances/ni:network-instance/ni:name";
attribute types which are ip-prefix, }
bgp, tunnel, pwe3, vpls, etc."; description
} "This type is used for leafs that reference a routing instance
configuration.";
}
typedef address-attribute-type { typedef ipv4-multicast-group-address {
type identityref { type string {
base address-attribute-types; pattern "(2((2[4-9])|(3[0-9]))\\.)"+"
(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.)"
+"{2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])";
}
description
"The ipv4-multicast-group-address type
represents an IPv4 multicast address
in dotted-quad notation.";
reference "RFC4607";
} }
description
"Target address attribute type.";
} typedef ipv6-multicast-group-address {
type string {
pattern "(((FF|ff)[0-9a-fA-F]{2}):)"
+"([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)"
+"?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|"
+"[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|"
+"[01]?[0-9]?[0-9])))";
pattern "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|"
+"((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)";
}
description
"The ipv6-multicast-group-address
type represents an IPv6 address in full,
mixed, shortened, and shortened-mixed
notation.";
reference
"RFC4291 2.7.
ietf-inet-types:ipv6-address";
}
typedef ip-multicast-group-address {
type union {
type ipv4-multicast-group-address;
type ipv6-multicast-group-address;
}
description
"The ip-multicast-group-address type
represents an IP multicast address and
is IP version neutral. The format of the
textual representations implies the IP version.";
}
identity time-resolution { identity address-attribute-types {
description description
"Time interval resolution"; "This is base identity of address
} attribute types which are ip-prefix,
bgp, tunnel, pwe3, vpls, etc.";
}
identity hours { typedef address-attribute-type {
base time-resolution; type identityref {
description base address-attribute-types;
"Time resolution in Hours"; }
} description
"Target address attribute type.";
}
identity minutes { identity time-resolution {
base time-resolution; description
description "Time interval resolution";
"Time resolution in Minutes"; }
}
identity seconds { identity hours {
base time-resolution; base time-resolution;
description description
"Time resolution in Seconds"; "Time resolution in Hours";
} }
identity milliseconds { identity minutes {
base time-resolution; base time-resolution;
description description
"Time resolution in Milliseconds"; "Time resolution in Minutes";
} }
identity microseconds { identity seconds {
base time-resolution; base time-resolution;
description description
"Time resolution in Microseconds"; "Time resolution in Seconds";
}
identity nanoseconds { }
base time-resolution;
description
"Time resolution in Nanoseconds";
}
grouping cc-session-statistics { identity milliseconds {
description base time-resolution;
"Grouping for session statistics.";
container cc-session-statistics {
description description
"cc session counters"; "Time resolution in Milliseconds";
leaf session-count {
type uint32;
description
"Number of Continuity Check sessions.";
}
leaf session-up-count {
type uint32;
description
"Number of sessions which are up.";
}
leaf session-down-count {
type uint32;
description
"Number of sessions which are down.";
}
leaf session-admin-down-count {
type uint32;
description
"Number of sessions which are admin-down.";
}
} }
}
grouping session-packet-statistics { identity microseconds {
description base time-resolution;
"Grouping for per session packet statistics";
container session-packet-statistics {
description description
"Per session packet statistics."; "Time resolution in Microseconds";
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.";
}
} }
}
grouping cc-per-session-statistics { identity nanoseconds {
description base time-resolution;
"Grouping for per session statistics";
container cc-per-session-statistics {
description description
"per session statistics."; "Time resolution in Nanoseconds";
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;
} }
}
grouping session-error-statistics { grouping cc-session-statistics {
description
"Grouping for per session error statistics";
container session-error-statistics {
description description
"Per session error statistics."; "Grouping for session statistics.";
leaf packet-drops-count { container cc-session-statistics {
type uint32;
description
"Total received packet drops count.";
}
leaf packet-reorder-count {
type uint32;
description
"Total received packet reordered count.";
}
leaf packets-out-of-seq-count {
type uint32;
description
"Total received out of sequence count.";
}
leaf packets-dup-count {
type uint32;
description description
"Total received packet duplicates count."; "cc session counters";
leaf session-count {
type uint32;
description
"Number of Continuity Check sessions.";
}
leaf session-up-count {
type uint32;
description
"Number of sessions which are up.";
}
leaf session-down-count {
type uint32;
description
"Number of sessions which are down.";
}
leaf session-admin-down-count {
type uint32;
description
"Number of sessions which are admin-down.";
}
} }
} }
} grouping session-packet-statistics {
grouping session-delay-statistics {
description
"Grouping for per session delay statistics";
container session-delay-statistics {
description description
"Session delay summarised information."; "Grouping for per session packet statistics";
leaf time-resolution-value { container session-packet-statistics {
type identityref {
base time-resolution;
}
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 description
"Average delay value observed."; "Per session packet statistics.";
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.";
}
} }
} }
}
grouping session-jitter-statistics { grouping cc-per-session-statistics {
description
"Grouping for per session jitter statistics";
container session-jitter-statistics {
description description
"Session jitter summarised information."; "Grouping for per session statistics";
leaf time-resolution-value { container cc-per-session-statistics {
type identityref {
base time-resolution;
}
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 description
"Average jitter value observed."; "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;
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;
} }
} }
}
grouping session-path-verification-statistics { grouping session-error-statistics {
description
"Grouping for per session path verification statistics";
container session-path-verification-statistics {
description description
"OAM per session path verification statistics."; "Grouping for per session error statistics";
leaf verified-count { container session-error-statistics {
type uint32;
description
"Total number of OAM packets that
went through a path as intended.";
}
leaf failed-count {
type uint32;
description description
"Total number of OAM packets that "Per session error statistics.";
went through an unintended path."; leaf packet-drops-count {
} type uint32;
}
}
grouping session-type {
description
"This object indicates the current session
definition.";
leaf session-type-enum {
type enumeration {
enum "proactive" {
description description
"The current session is proactive"; "Total received packet drops count.";
} }
enum "on-demand" { leaf packet-reorder-count {
type uint32;
description description
"The current session is on-demand."; "Total received packet reordered count.";
}
leaf packets-out-of-seq-count {
type uint32;
description
"Total received out of sequence count.";
}
leaf packets-dup-count {
type uint32;
description
"Total received packet duplicates count.";
} }
} }
default "on-demand";
description
"Session type enum";
} }
}
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 { grouping session-delay-statistics {
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 group-ip-address-type {
base tp-address-technology-type;
description
"Group IP address type";
}
identity route-distinguisher-address-type {
base tp-address-technology-type;
description
"Route Distinguisher address type";
}
identity ip-prefix-address-type {
base tp-address-technology-type;
description
"IP prefix address type";
}
identity tunnel-address-type {
base tp-address-technology-type;
description
"Tunnel address type";
}
grouping tp-address {
leaf tp-location-type-value {
type identityref {
base tp-address-technology-type;
}
description description
"Test point address type."; "Grouping for per session delay statistics";
}
choice tp-address { container session-delay-statistics {
case mac-address { description
when "'tp-location-type-value' = 'mac-address-type'" { "Session delay summarised information.";
leaf time-resolution-value {
type identityref {
base time-resolution;
}
description description
"MAC address type"; "Time units among choice of s,ms,ns etc.";
} }
leaf mac-address { leaf min-delay-value {
type yang:mac-address; type uint32;
description description
"MAC Address"; "Minimum delay value observed.";
} }
description leaf max-delay-value {
"MAC Address based MP Addressing."; type uint32;
}
case ipv4-address {
when "'tp-location-type-value' = 'ipv4-address-type'" {
description description
"IPv4 address type"; "Maximum delay value observed.";
} }
leaf ipv4-address { leaf average-delay-value {
type inet:ipv4-address; type uint32;
description description
"IPv4 Address"; "Average delay value observed.";
} }
description
"IP Address based MP Addressing.";
} }
case ipv6-address { }
when "'tp-location-type-value' = 'ipv6-address-type'" {
description grouping session-jitter-statistics {
"IPv6 address type"; description
} "Grouping for per session jitter statistics";
leaf ipv6-address { container session-jitter-statistics {
type inet:ipv6-address; description
"Session jitter summarised information.";
leaf time-resolution-value {
type identityref {
base time-resolution;
}
description description
"IPv6 Address"; "Time units among choice of s,ms,ns etc.";
} }
description leaf min-jitter-value {
"ipv6 Address based MP Addressing."; type uint32;
}
case tp-attribute {
when "'tp-location-type-value' = 'tp-attribute-type'" {
description description
"Test point attribute type"; "Minimum jitter value observed.";
} }
leaf tp-attribute-type { leaf max-jitter-value {
type address-attribute-type; type uint32;
description description
"Test point type."; "Maximum jitter value observed.";
} }
choice tp-attribute-value { leaf average-jitter-value {
type uint32;
description description
"Test point value."; "Average jitter value observed.";
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.";
}
}
case vpls {
leaf route-distinguisher {
type uint32;
description
"Route Distinguisher(8 octets).";
}
leaf sender-ve-id {
type uint32;
description
"Sender's VE ID.";
}
leaf receiver-ve-id {
type uint32;
description
"Receiver's VE ID.";
}
}
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 ip-multicast-group-address;
description
"Group ip address.";
}
}
case vpn {
leaf as-number {
type inet:as-number;
description
"AS number.";
}
}
case global-id {
leaf lsp-id {
type string;
description
"LSP id.";
}
}
}
}
} }
} }
case system-info { }
when "'tp-location-type-value' = 'system-id-address-type'" {
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
"System id address type"; "Total number of OAM packets that
went through a path as intended.";
} }
leaf system-id { leaf failed-count {
type router-id; type uint32;
description description
"System ID assigned to this node."; "Total number of OAM packets that
went through an unintended path.";
} }
} }
description
"TP Addressing.";
} }
description
"TP Address";
}
grouping tp-address-vrf { grouping session-type {
description
"Test point address with VRF.";
leaf vrf {
type routing-instance-ref;
description description
"The vrf is used to describe the "This object indicates the current session
corresponding network instance"; definition.";
} leaf session-type-enum {
uses tp-address; type enumeration {
} enum "proactive" {
description
grouping connectionless-oam-layers { "The current session is proactive";
list oam-layers { }
key "index"; enum "on-demand" {
leaf index { description
type uint16 { "The current session is on-demand.";
range "0..65535"; }
} }
default "on-demand";
description description
"Index"; "Session type enum";
} }
leaf level { }
type int32 {
range "-1..1"; 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 group-ip-address-type {
base tp-address-technology-type;
description
"Group IP address type";
}
identity route-distinguisher-address-type {
base tp-address-technology-type;
description
"Route Distinguisher address type";
}
identity ip-prefix-address-type {
base tp-address-technology-type;
description
"IP prefix address type";
}
identity tunnel-address-type {
base tp-address-technology-type;
description
"Tunnel address type";
}
grouping tp-address {
leaf tp-location-type-value {
type identityref {
base tp-address-technology-type;
} }
default "0";
description
"Level 0 indicates default level,
-1 means server and +1 means client layer.
In relationship 0 means same layer.";
description
"Test point address type.";
} }
choice tp-location { choice tp-address {
case mac-address { case mac-address {
leaf mac-address-location { when "'tp-location-type-value' = 'mac-address-type'" {
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.";
} }
case ipv4-address { case ipv4-address {
leaf ipv4-location { when "'tp-location-type-value' = 'ipv4-address-type'" {
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.";
} }
case ipv6-location { case ipv6-address {
when "'tp-location-type-value' = 'ipv6-address-type'" {
description
"IPv6 address type";
}
leaf ipv6-address { 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.";
} }
case group-ip-address-location { case tp-attribute {
leaf group-ip-address-location { when "'tp-location-type-value' = 'tp-attribute-type'" {
type ip-multicast-group-address;
description description
"Group IP address location"; "Test point attribute type";
} }
description leaf tp-attribute-type {
"Group IP address"; type address-attribute-type;
}
case as-number-location {
leaf as-number-location {
type inet:as-number;
description description
"AS number location"; "Test point type.";
}
choice tp-attribute-value {
description
"Test point value.";
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 uint32;
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 uint32;
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 uint32;
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 ip-multicast-group-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
"AS number for point to multipoint OAM";
} }
case system-id-location { case system-info {
leaf system-id-location { when "'tp-location-type-value' = 'system-id-address-type'" {
description
"System id address type";
}
leaf system-id {
type router-id; type router-id;
description description
"System id location"; "System ID assigned to this node.";
} }
description
"System ID";
} }
description description
"TP location."; "TP Addressing.";
} }
ordered-by system;
description description
"List of related oam layers. "TP Address";
0 means they are in same level, especially
interworking scenarios of stitching multiple
technology at same layer. -1 means server layer,
for eg:- in case of Overlay and Underlay,
Underlay is server layer for Overlay Test Point.
+1 means client layer, for example in case of
Service OAM and Transport OAM, Service OAM is client
layer to Transport OAM.";
} }
description
"Connectionless related OAM layer";
}
grouping tp-technology { grouping tp-address-vrf {
choice technology {
default "technology-null";
case technology-null {
description
"This is a placeholder when no technology is needed.";
leaf tech-null {
type empty;
description
"There is no technology define";
}
}
description description
"Technology choice."; "Test point address with VRF.";
} leaf vrf {
description type routing-instance-ref;
"OAM Technology";
}
grouping tp-tools {
description
"Test Point OAM Toolset.";
container tp-tools {
leaf continuity-check {
type boolean;
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;
description description
"A flag indicating whether or not the "The vrf is used to describe the
path discovery function is supported."; corresponding network instance";
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 uses tp-address;
"Container for test point OAM tools set.";
}
}
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;
description
"Test point Location";
}
grouping test-point-locations { grouping connectionless-oam-layers {
description list oam-layers {
"Group of test point locations."; key "index";
leaf tp-location-type-value { leaf index {
type identityref { type uint16 {
base tp-address-technology-type; range "0..65535";
} }
description
"Test point location type.";
}
choice location-type {
case ipv4-location-type {
when "'tp-location-type-value' = 'ipv4-address-type'" {
description description
"When test point location type is equal to ipv4 address."; "Index";
} }
container test-point-ipv4-location-list { leaf level {
list test-point-locations { type int32 {
key "ipv4-location"; range "-1..1";
}
default "0";
description
"Level 0 indicates default level,
-1 means server and +1 means client layer.
In relationship 0 means same layer.";
}
choice tp-location {
case mac-address {
leaf mac-address-location {
type yang:mac-address;
description
"MAC Address";
}
description
"MAC Address based MP Addressing.";
}
case ipv4-address {
leaf ipv4-location { leaf ipv4-location {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 Address."; "Ipv4 Address";
} }
leaf vrf { description
type routing-instance-ref; "IP Address based MP Addressing.";
}
case ipv6-location {
leaf ipv6-address {
type inet:ipv6-address;
description description
"The vrf is used to describe the "IPv6 Address";
corresponding network instance";
} }
uses test-point-location-info;
ordered-by system;
description description
"List of test point locations."; "IPv6 Address based MP Addressing.";
} }
description case group-ip-address-location {
"Serves as top-level container leaf group-ip-address-location {
for test point location list."; type ip-multicast-group-address;
}
}
case ipv6-location-type {
when "'tp-location-type-value' = '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";
leaf ipv6-location {
type inet:ipv6-address;
description description
"IPv6 Address."; "Group IP address location";
} }
leaf vrf { description
type routing-instance-ref; "Group IP address";
}
case as-number-location {
leaf as-number-location {
type inet:as-number;
description description
"The vrf is used to describe the "AS number location";
corresponding network instance";
} }
uses test-point-location-info;
ordered-by system;
description description
"List of test point locations."; "AS number for point to multipoint OAM";
}
case system-id-location {
leaf system-id-location {
type router-id;
description
"System id location";
}
description
"System ID";
} }
description description
"Serves as top-level container "TP location.";
for test point location list.";
} }
description
"List of related oam layers.
0 means they are in same level, especially
interworking scenarios of stitching multiple
technology at same layer. -1 means server layer,
for eg:- in case of Overlay and Underlay,
Underlay is server layer for Overlay Test Point.
+1 means client layer, for example in case of
Service OAM and Transport OAM, Service OAM is client
layer to Transport OAM.";
} }
case mac-location-type { description
when "'tp-location-type-value' = 'mac-address-type'" { "Connectionless related OAM layer";
}
grouping tp-technology {
choice technology {
default "technology-null";
case technology-null {
description description
"when test point location type is equal to mac address."; "This is a placeholder when no technology is needed.";
} leaf tech-null {
container test-point-mac-address-location-list { type empty;
list test-point-locations {
key "mac-address-location";
leaf mac-address-location {
type yang:mac-address;
description
"MAC Address";
}
uses test-point-location-info;
ordered-by system;
description description
"List of test point locations."; "There is no technology define";
} }
description
"Serves as top-level container
for test point location list.";
} }
description
"Technology choice.";
} }
case group-ip-address-location-type { description
when "'tp-location-type-value' = 'group-ip-address-type'" { "OAM Technology";
}
grouping tp-tools {
description
"Test Point OAM Toolset.";
container tp-tools {
leaf continuity-check {
type boolean;
mandatory true;
description description
"When test point location type is equal to "A flag indicating whether or not the
group ip address."; 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.";
} }
container test-point-group-ip-address-location-list { leaf path-discovery {
list test-point-locations { type boolean;
key "group-ip-address-location"; mandatory true;
leaf group-ip-address-location { description
type ip-multicast-group-address; "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.
RFC 4884: Extended ICMP to Support Multi-part Message.
RFC 5837:Extending ICMP for Interface
and Next-Hop Identification.
RFC 4379: LSP-PING.";
}
description
"Container for test point OAM tools set.";
}
}
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;
description
"Test point Location";
}
grouping test-point-locations {
description
"Group of test point locations.";
leaf tp-location-type-value {
type identityref {
base tp-address-technology-type;
}
description
"Test point location type.";
}
choice location-type {
case ipv4-location-type {
when "'tp-location-type-value' = '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";
leaf ipv4-location {
type inet:ipv4-address;
description
"IPv4 Address.";
}
leaf vrf {
type routing-instance-ref;
description
"The vrf is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"Group IP address."; "List of test point locations.";
} }
leaf vrf { description
type routing-instance-ref; "Serves as top-level container
for test point location list.";
}
}
case ipv6-location-type {
when "'tp-location-type-value' = '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";
leaf ipv6-location {
type inet:ipv6-address;
description
"IPv6 Address.";
}
leaf vrf {
type routing-instance-ref;
description
"The vrf is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"The vrf is used to describe the "List of test point locations.";
corresponding network instance";
} }
uses test-point-location-info;
ordered-by system;
description description
"List of test point locations."; "Serves as top-level container
for test point location list.";
} }
description
"Serves as top-level container for
test point location list.";
}
}
case group-as-number-location-type {
when "'tp-location-type-value' = 'as-number-address-type'" {
description
"When test point location type is equal to
as-number.";
} }
container test-point-as-number-location-list { case mac-location-type {
list test-point-locations { when "'tp-location-type-value' = 'mac-address-type'" {
key "as-number-location"; description
leaf as-number-location { "when test point location type is equal to mac address.";
type inet:as-number; }
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 description
"AS number for point to multi point OAM."; "List of test point locations.";
} }
leaf vrf { description
type routing-instance-ref; "Serves as top-level container
description for test point location list.";
"The vrf is used to describe the }
corresponding network instance"; }
case group-ip-address-location-type {
when "'tp-location-type-value' = 'group-ip-address-type'" {
description
"When test point location type is equal to
group ip address.";
}
container test-point-group-ip-address-location-list {
list test-point-locations {
key "group-ip-address-location";
leaf group-ip-address-location {
type ip-multicast-group-address;
description
"Group IP address.";
}
leaf vrf {
type routing-instance-ref;
description
"The vrf is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description
"List of test point locations.";
} }
uses test-point-location-info;
ordered-by system;
description description
"List of test point locations."; "Serves as top-level container for
test point location list.";
} }
description
"Serves as top-level container
for test point location list.";
} }
} case group-as-number-location-type {
case group-system-id-location-type { when "'tp-location-type-value' = 'as-number-address-type'" {
when "'tp-location-type-value' = 'system-id-address-type'" { description
description "When test point location type is equal to
"When test point location is equal to as-number.";
system info."; }
} container test-point-as-number-location-list {
container test-point-system-info-location-list { list test-point-locations {
list test-point-locations { key "as-number-location";
key "system-id-location"; leaf as-number-location {
leaf system-id-location { type inet:as-number;
type inet:uri; description
"AS number for point to multi point OAM.";
}
leaf vrf {
type routing-instance-ref;
description
"The vrf is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"System Id."; "List of test point locations.";
} }
leaf vrf { description
type routing-instance-ref; "Serves as top-level container
for test point location list.";
}
}
case group-system-id-location-type {
when "'tp-location-type-value' = '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 vrf {
type routing-instance-ref;
description
"The vrf is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"The vrf is used to describe the "List of test point locations.";
corresponding network instance";
} }
uses test-point-location-info;
ordered-by system;
description description
"List of test point locations."; "Serves as top-level container for
test point location list.";
} }
description
"Serves as top-level container for
test point location list.";
} }
description
"Choice of address types.";
} }
description
"Choice of address types.";
} }
}
augment "/nd:networks/nd:network/nd:node" { 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 {
type uint32;
description description
"Fractional part in nanoseconds as per IEEE1588v2 "Augment test points of connectionless oam.";
or Fractional part in 64-bit NTP timestamp."; uses test-point-locations;
} }
}
grouping timestamp { grouping uint64-timestamp {
description
"Grouping for timestamp.";
leaf timestamp-type {
type uint32;
description description
"Truncated PTP = 0, NTP = 1"; "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 {
type uint32;
description
"Fractional part in nanoseconds as per IEEE1588v2
or Fractional part in 64-bit NTP timestamp.";
}
} }
uses uint64-timestamp;
}
grouping path-discovery-data { grouping timestamp {
description
"Path discovery related data output from nodes.";
container src-test-point {
description
"Source test point.";
uses tp-address-vrf;
}
container dest-test-point {
description
"Destination test point.";
uses tp-address-vrf;
}
leaf sequence-number {
type uint64;
description
"Sequence number in data packets.";
}
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 path-verification {
description description
"Optional path verification related information."; "Grouping for timestamp.";
leaf flow-info { leaf timestamp-type {
type string; type uint32;
description description
"Informations that refers to the flow."; "Truncated PTP = 0, NTP = 1";
} }
uses session-path-verification-statistics; uses uint64-timestamp;
} }
container path-trace-info {
grouping path-discovery-data {
description description
"Optional path trace per-hop test point information. "Path discovery related data output from nodes.";
The list has typically a single element for per-hop container src-test-point {
cases like path-discovery RPC 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."; "Source test point.";
leaf index { uses tp-address-vrf;
type uint32; }
container dest-test-point {
description
"Destination test point.";
uses tp-address-vrf;
}
leaf sequence-number {
type uint64;
description
"Sequence number in data packets.";
}
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 path-verification {
description
"Optional path verification related information.";
leaf flow-info {
type string;
description description
"Trace information index."; "Informations that refers to the flow.";
} }
uses tp-address-vrf; uses session-path-verification-statistics;
uses timestamp; }
leaf ingress-intf-name { container path-trace-info {
type if:interface-ref; description
"Optional path trace per-hop test point information.
The list has typically a single element for per-hop
cases like path-discovery RPC but allows a list of
hop related information for other types of
data retrieval methods.";
list path-trace-info-list {
key "index";
description description
"Ingress interface name"; "Path trace information list.";
leaf index {
type uint32;
description
"Trace information index.";
}
uses tp-address-vrf;
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 egress interface
queue of the interface.";
}
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-vrf;
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 {
type uint32;
description
"Length of the egress interface
queue of the interface.";
} }
leaf transit-delay { }
type uint32; container dest-test-point {
description description
"Time in nano seconds "Destination test point.";
packet spent transiting a node."; uses tp-address-vrf;
} leaf ingress-intf-name {
leaf app-meta-data { type if:interface-ref;
type uint64;
description description
"Application specific "Ingress interface name";
data added by node.";
} }
} }
} leaf sequence-number {
} type uint64;
grouping continuity-check-data {
description
"Continuity check data output from nodes.";
container src-test-point {
description
"Source test point.";
uses tp-address-vrf;
leaf egress-intf-name {
type if:interface-ref;
description description
"Egress interface name"; "Sequence number.";
} }
} leaf hop-cnt {
container dest-test-point { type uint8;
description
"Destination test point.";
uses tp-address-vrf;
leaf ingress-intf-name {
type if:interface-ref;
description description
"Ingress interface name"; "Hop count.";
} }
uses session-packet-statistics;
uses session-error-statistics;
uses session-delay-statistics;
uses session-jitter-statistics;
} }
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 { container cc-session-statistics-data {
if-feature "continuity-check"; if-feature "continuity-check";
config false; 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 description
"CC ipv6 sessions"; "CC operational information.";
uses cc-session-statistics; 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 33, line 34 skipping to change at page 34, line 34
No BFD technology type has been defined in the "ietf-connectionless- No BFD technology type has been defined in the "ietf-connectionless-
oam" model. Therefore a technology type extension is required in the oam" model. Therefore a technology type extension is required in the
model Extension. model Extension.
The snippet below depicts an example of augmenting "bfd" type into The snippet below depicts an example of augmenting "bfd" type into
the ietf-connectionless-oam": the ietf-connectionless-oam":
augment "/nd:networks/nd:network/nd:node/" augment "/nd:networks/nd:network/nd:node/"
+"coam:location-type/coam:ipv4-location-type" +"coam:location-type/coam:ipv4-location-type"
+"/coam:test-point-ipv4-location-list/" +"/coam:test-point-ipv4-location-list/"
+"coam:test-point-locations/coam:technology" +"coam:test-point-locations/coam:technology"
+"/coam:technology-string" +"/coam:technology-string"
{ {
leaf bfd{ leaf bfd{
type string; type string;
} }
} }
5.1.1.2. Test point attributes extension 5.1.1.2. Test point attributes extension
To support bfd technology, the "ietf-connectionless-oam" model can be To support bfd technology, the "ietf-connectionless-oam" model can be
skipping to change at page 37, line 9 skipping to change at page 38, line 9
</module> </module>
</schema> </schema>
</schema-mounts> </schema-mounts>
and the " ietf-connectionless-oam " module might have: and the " ietf-connectionless-oam " module might have:
<ietf-connectionless-oam <ietf-connectionless-oam
uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"> uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam">
...... ......
<test-point-locations> <test-point-locations>
<ipv4-location> 1.1.1.1</ipv4-location> <ipv4-location>192.0.2.1</ipv4-location>
...... ......
<root> <root>
<ietf-bfd-ip-sh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"> <ietf-bfd-ip-sh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh">
<ip-sh> <ip-sh>
foo foo
...... ......
</ip-sh> </ip-sh>
</ietf-bfd-ip-sh> </ietf-bfd-ip-sh>
<ietf-bfd-ip-mh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"> <ietf-bfd-ip-mh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh">
<ip-mh> <ip-mh>
skipping to change at page 40, line 9 skipping to change at page 41, line 9
</module> </module>
</schema> </schema>
</schema-mounts> </schema-mounts>
and the " ietf-connectionless-oam " module might have: and the " ietf-connectionless-oam " module might have:
<ietf-connectionless-oam <ietf-connectionless-oam
uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"> uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam">
...... ......
<test-point-locations> <test-point-locations>
<ipv4-location> 1.1.1.1</ipv4-location> <ipv4-location> 192.0.2.1</ipv4-location>
...... ......
<root> <root>
<ietf-lspping uri="urn:ietf:params:xml:ns:yang:ietf-lspping"> <ietf-lspping uri="urn:ietf:params:xml:ns:yang:ietf-lspping">
<lsp-pings> <lsp-pings>
foo foo
...... ......
</lsp-pings> </lsp-pings>
</ietf-lspping> </ietf-lspping>
</root> </root>
</test-point-locations> </test-point-locations>
skipping to change at page 42, line 40 skipping to change at page 43, line 40
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-12 (work in Topologies", draft-ietf-i2rs-yang-network-topo-12 (work in
progress), March 2017. progress), March 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-01 (work in progress), February 2017. methods-04 (work in progress), June 2017.
[I-D.ietf-lime-yang-oam-model] [I-D.ietf-lime-yang-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-oam- Maintenance(OAM) protocols", draft-ietf-lime-yang-oam-
model-10 (work in progress), April 2017. model-10 (work in progress), April 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-04 (work in progress), March ietf-netmod-schema-mount-05 (work in progress), May 2017.
2017.
[I-D.ietf-rtgwg-ni-model] [I-D.ietf-rtgwg-ni-model]
Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic,
"YANG Network Instances", draft-ietf-rtgwg-ni-model-02 "YANG Network Instances", draft-ietf-rtgwg-ni-model-02
(work in progress), March 2017. (work in progress), March 2017.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[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, DOI 10.17487/RFC3688, January 2004,
<http://www.rfc-editor.org/info/rfc3688>. <http://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", RFC 4443, Protocol Version 6 (IPv6) Specification", RFC 4443,
DOI 10.17487/RFC4443, March 2006, DOI 10.17487/RFC4443, March 2006,
<http://www.rfc-editor.org/info/rfc4443>. <http://www.rfc-editor.org/info/rfc4443>.
skipping to change at page 44, line 5 skipping to change at page 44, line 47
<http://www.rfc-editor.org/info/rfc6536>. <http://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,
<http://www.rfc-editor.org/info/rfc6991>. <http://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,
<http://www.rfc-editor.org/info/rfc7223>. <http://www.rfc-editor.org/info/rfc7223>.
[RFC7224] Bjorklund, M., "IANA Interface Type YANG Module",
RFC 7224, DOI 10.17487/RFC7224, May 2014,
<http://www.rfc-editor.org/info/rfc7224>.
[RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792,
September 1981. September 1981.
9.2. Informative References 9.2. Informative References
[G.8013] "OAM functions and mechanisms for Ethernet based [G.8013] "OAM functions and mechanisms for Ethernet based
networks", ITU-T Recommendation G.8013/Y.1731, 2013. networks", ITU-T Recommendation G.8013/Y.1731, 2013.
[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
 End of changes. 204 change blocks. 
1020 lines changed or deleted 1063 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/