< draft-ietf-lime-yang-connectionless-oam-03.txt   draft-ietf-lime-yang-connectionless-oam-04.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: June 26, 2017 Q. Wu Expires: August 27, 2017 Q. Wu
Huawei Huawei
R. Rahman R. Rahman
S. Raghavan S. Raghavan
Cisco Cisco
December 23, 2016 February 23, 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-03 draft-ietf-lime-yang-connectionless-oam-04
Abstract Abstract
This document presents a base YANG Data model for connectionless OAM This document presents a base YANG Data model for connectionless
protocols. It provides a technology-independent abstraction of key Operations Administration, and Maintenance(OAM) protocols. It
OAM constructs for connectionless protocols. The Based model provides a technology-independent abstraction of key OAM constructs
presented here can be extended to include technology specific for connectionless protocols. The base model presented here can be
details. This is leading to uniformity between OAM protocols and extended to include technology specific details. This is leading to
support nested OAM workflows (i.e., performing OAM functions at uniformity between OAM protocols and support both nested OAM
different or same levels through a unified interface). workflows (i.e., performing OAM functions at different or 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 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 June 26, 2017. This Internet-Draft will expire on August 27, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 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
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
skipping to change at page 2, line 31 skipping to change at page 2, line 31
3. Overview of the Connectionless OAM Model . . . . . . . . . . 5 3. Overview of the Connectionless OAM Model . . . . . . . . . . 5
3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6 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 . . . . . . . . . . . . . . . . . . 8 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8
3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 8 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 8
4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 17 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 17
5. CL model applicability . . . . . . . . . . . . . . . . . . . 46 5. Connectionless model applicability . . . . . . . . . . . . . 47
5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 47 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 47
5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 47 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 47
5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 49 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 50
5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 51 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 52
5.2.1. technology type extension . . . . . . . . . . . . . . 51 5.2.1. Technology type extension . . . . . . . . . . . . . . 52
5.2.2. test point attributes extension . . . . . . . . . . . 52 5.2.2. Test point attributes extension . . . . . . . . . . . 53
6. Security Considerations . . . . . . . . . . . . . . . . . . . 52 6. Security Considerations . . . . . . . . . . . . . . . . . . . 53
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55
8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 53 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 55
9. Normative References . . . . . . . . . . . . . . . . . . . . 53 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 55
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 54 9.1. Normative References . . . . . . . . . . . . . . . . . . 55
9.2. Informative References . . . . . . . . . . . . . . . . . 57
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 58
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).
3. Monitor Performance 3. Monitor Performance
An overview of OAM tools is presented at [RFC7276]. An overview of OAM tools is presented at [RFC7276].
Ping and Traceroute [RFC792], [RFC4443] are well-known fault Ping and Traceroute [RFC792], [RFC4443] are well-known fault
verification and isolation tools, respectively, for IP networks. verification and isolation tools, respectively, for IP networks.
Over the years, different technologies have developed similar tools Over the years, different technologies have developed similar tools
for similar purposes. for similar purposes.
The different OAM tools may support connection-oriented technologies
or connectionless technologies. In connection-oriented technologies,
a connection is established prior to the transmission of data. In
connectionless technologies, data is typically sent between end
points without prior arrangement [RFC7276]. Note that the
Connection-Oriented OAM YANG DATA model is defined in
[I-D.ietf-lime-yang-oam-model].
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[lime It can be used in conjunction with data retrieval method model
retrieval methods], which focuses on data retrival procedures like [I-D.ietf-lime-yang-connectionless-oam-methods], which focuses on
RPC. However it also can be used independently of data retrieval data retrieval procedures like RPC. However it also can be used
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", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. 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:
skipping to change at page 3, line 43 skipping to change at page 4, line 4
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
verify that a destination is reachable and therefore also referred to
as reachability verification
2.2. Tree Diagrams 2.2. Tree Diagrams
A simplified graphical representation of the data model is used in A simplified graphical representation of the data model is used in
this document. The meaning of the symbols in these diagrams is as this document. The meaning of the symbols in these diagrams is as
follows: follows:
Each node is printed as: Each node is printed as:
<status> <flags> <name> <opts> <type> <status> <flags> <name> <opts> <type>
<status> is one of: <status> is one of:
+ for current + for current
x for deprecated
o for obsolete
<flags> is one of: <flags> is one of:
rw for configuration data rw for configuration data
ro for non-configuration data ro for non-configuration data
-x for rpcs -x for rpcs
-n for notifications -n for notifications
<name> is the name of the node <name> is the name of the node
skipping to change at page 5, line 7 skipping to change at page 5, line 16
? for an optional leaf or choice ? for an optional leaf or choice
! for a presence container ! for a presence container
* for a leaf-list or list * for a leaf-list or list
[<keys>] for a list's keys [<keys>] for a list's keys
<type> is the name of the type for leafs and leaf-lists <type> is the name of the type for leafs and leaf-lists
3. Overview of the Connectionless OAM Model 3. Overview of the Connectionless OAM Model
At the top of the Model, there is an oper container for session At the top of the model, there is an 'cc-oper-data' container for
statistics. Grouping is also defined for common session statistics session statistics. Grouping is also defined for common session
and these are applicable for proactive OAM sessions. Multiple test- statistics and these are applicable for proactive OAM sessions.
point-locations keyed using technology specific keys (eg., IPv4 Multiple 'test-point-locations' keyed using technology specific keys
address for IPv4 locations) are possible by augmented network nodes (eg., IPv4 address for IPv4 locations) are possible by augmented
which are defined in [I-D.draft-ietf-i2rs-yang-network-topo] to network nodes which are defined in [I-D.ietf-i2rs-yang-network-topo]
describe the network hierarchies and the inventory of nodes contained to describe the network hierarchies and the inventory of nodes
in a network. Each test-point-location is chosen based on location- contained in a network. Each 'test-point-location' is chosen based
type which when chosen, leads to a container that includes a list of on 'location-type' which when chosen, leads to a container that
test-point-locations keyed by technology specific keys. Each test includes a list of 'test-point-locations' keyed by technology
point location includes a test-point-location-info. The test-point- specific keys. Each test point location includes a 'test-point-
location-info includes tp-technology, tp-tools, and connectionless- location-info'. The 'test-point-location-info' includes 'tp-
oam-layers. The groupings of tp-address and tp-address-vrf are kept technology', 'tp-tools', and 'connectionless-oam-layers'. The
out of test-point-location-info to make it addressing agnostic and groupings of 'tp-address' and 'tp-address-vrf' are kept out of 'test-
allow varied composition. Depending upon the choice of the location- point-location-info' to make it addressing agnostic and allow varied
type (determined by the tp-address-vrf), the containers differ in its composition. Depending upon the choice of the 'location-type'
composition of test-point-locations while the test-point-location- (determined by the 'tp-address-vrf'), the containers differ in its
info, is a common aspect of every test-point-location. The vrf is composition of 'test-point-locations' while the 'test-point-location-
used to describe the corresponding network instance. The tp- info', is a common aspect of every 'test-point-location'. The vrf is
technology indicate oam technology details. The tp-tools describe used to describe the corresponding network instance. The 'tp-
the oam tools supported. The connectionless-oam- layers is used to technology' indicate OAM technology details. The 'tp-tools' describe
the OAM tools supported. The 'connectionless-oam-layers' is used to
describe the relationship of one test point with other test points. describe the relationship of one test point with other test points.
The level in oam-layers indicate whether related oam test point is The level in 'oam-layers' indicate whether related OAM test point is
client layer, server layer or same layer. The Model is augmented to The level in oam-layers indicate whether related oam test point is in
/nd:networks/nd:network/nd:node using Test Point Locations defined client layer(lower layer described in section 3.3), server layer
below. (upper layer described in section 3.3) or the same layer as the
current test point under Test point Locations. The model is
augmented to "/nd:networks/nd:network/nd:node" using 'test-point-
locations' defined below.
3.1. TP Address 3.1. TP Address
In connectionless OAM, the tp address is defined with the following In connectionless OAM, the tp address is defined with the following
type: type:
o MAC address o MAC address [RFC6136]
o IPv4 or IPv6 address o IPv4 or IPv6 address
o a pair of source, destination addresses, and interface (Useful for o TP-attribute
BFD)
o FEC o System-id to represent the device or
node.[I-D.ietf-spring-sr-yang]
o System-id to represent the device or node. To define a forwarding treatment of a test packet, the 'tp-address'
needs to be associated with additional parameters, e.g. DSCP for IP
or TC for MPLS. In generic connectionless OAM YANG model, these
parameters are not explicit configured. The model user can add
corresponding 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
activation: proactive and on-demand. The proactive OAM refers to OAM
actions which are carried out continuously to permit proactive
reporting of fault. The on-demand OAM refers to OAM actions which
are initiated via manual intervention for a limited time to carry out
diagnostics [RFC7276] [G.8013]. In connectionless OAM, 'session-
type' is defined to indicate which kind of activation will be used by
the current session.
In connectionless OAM, the tools attribute is used to describe a In connectionless OAM, the tools attribute is used to describe a
toolset for fault detection and isolation, and for performance toolset for fault detection and isolation. And it can serve as a
measurement. And it can serve as a constraint condition when the constraint condition when the base model be extended to specific OAM
base model be extended to specific OAM technology. For example, to technology. For example, to fulfill the ICMP PING configuration, the
fulfill the icmp ping configuration, the "../coam:continuity-check" "../coam:continuity-check" should be set to "true", and then the lime
should be set to "true", and then the lime base model should be base model should be augmented with ICMP PING specific details.
augmented with icmp ping specific details.
3.3. OAM-layers 3.3. OAM-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 has its protocols similarly take a multi-layer structure; each layer may has
own OAM protocols [RFC7276] and is corresponding to specific network its own OAM protocol [RFC7276] and is corresponding to specific
portion or path and has associated test points. OAM-layers is network portion or path and has associated test points. OAM-layers
referred to a list of upper layer, lower layer that are related to is referred to a list of upper layer, lower layer that are related to
current test point. This allow users to easily navigate up and down current test point. This allows users to easily navigate up and down
to efficiently troubleshoot a connectivity issue at different layer. to efficiently troubleshoot a "loss of continuity defect" at
In this model, we have kept level default as 0, when all test points different layer. In this model, we have kept level default as 0,
are located at the same layer. Level is provided for scenarios where when all test points are located at the same layer. 'Level' defines
it might be possible to define layering relationship as it can be the relative technology level in a sequence of network portions, and
used to stitching fault at related OAM layers. For example, there is is provided to allow correlation of faults in related OAM domains.
a network in which data traffic between two customer edges is For example, there is a network in which data traffic between two
transported over three consecutive network portions, the current test customer edges is transported over three consecutive network
point is located in the second network portion. If there is a defect portions, the current test point is located in the second network
in the first network portion is located at the upstream of the second portion. If there is a defect in the first network portion is
network portion, the level of the first network portion is set to located at the upstream of the second network portion, the level of
"-1". If the third network portion is located at the downstream of the first network portion is set to "-1". If the third network
the second network portion and the level is set to "1". In another portion is located at the downstream of the second network portion
case, if the first network portion and the third network portion is and the level is set to "1". In another case, if the first network
in the same level of thesecond network portion, the level is set to portion and the third network portion is in the same level of the
"0". The snippet below depicts an example of OAM layers. second network portion, the level is set to "0". The snippet below
depicts an example of OAM layers.
list oam-layers { list oam-layers {
key "index"; key "index";
leaf index { leaf index {
type uint16 { type uint16 {
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 user; ordered-by user;
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.
3.5. Test Point Locations 3.5. Test Point Locations
This is a generic grouping for Test Point Locations. Choice This is a generic grouping for Test Point Locations. Choice
statement is used to define locations types, for example ipv4- statement is used to define locations types, for example 'ipv4-
location-type, ipv6-location-type, etc. Container is defined under location-type', 'ipv6-location-type', etc. Container is defined
each location type containing list keyed to test point address, Test under each location type containing list keyed to test point address,
Point Location Information defined in section above, and routing Test Point Location Information defined in section above, and routing
instance vrf name if required. instance VRF name if required.
3.6. Path Discovery Data 3.6. Path Discovery Data
This is a generic grouping for path discovery data model that can be This is a generic grouping for path discovery data model that can be
retrieved by any data retrieval methods including RPCs. Path retrieved by any data retrieval methods including RPCs. Path
discovery data output from methods, includes src-test-point, dst- discovery data output from methods, includes 'src-test-point', 'dst-
test-point, sequence-number, hop-cnt, session statistics of various test-point', 'sequence-number', 'hop-cnt', session statistics of
kinds,path verification and path trace related information. Path various kinds, path verification and path trace related information.
discovery includes data to be retrieved on a per-hop basis via a list Path discovery includes data to be retrieved on a 'per-hop' basis via
of path-trace-info-list which includes information like timestamps, a list of 'path-trace-info-list' which includes information like
ingress-interface, egress-interface and app-meta-data. The path 'timestamps', 'ingress-interface', 'egress-interface' and 'app-meta-
discovery data model is made generic enough to allow active, passive data'. The path discovery data model is made generic enough to allow
and hybrid OAMs to do the retrieval. None of the fields are made different methods of data retrieval. None of the fields are made
mandatory for that reason. Noted that the retrieval methods are mandatory for that reason. Noted that the retrieval methods are
defined in [lime retrieval methods]. defined in [I-D.ietf-lime-yang-connectionless-oam-methods].
3.7. Continuity Check Data 3.7. Continuity Check Data
This is a generic grouping for continuity check data model that can This is a generic grouping for continuity check data model that can
be retrieved by any data retrieval methods including RPCs. be retrieved by any data retrieval methods including RPCs.
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 of 'dst-test-point', 'sequence-number', 'hop-cnt' and session statistics
various kinds. The continuity check data model is made generic of various kinds. The continuity check data model is made generic
enough to allow active, passive and hybrid OAMs to do the retrieval. enough to allow different methods of data retrieval. None of the
None of the fields are made mandatory for that reason. Noted that fields are made mandatory for that reason. Noted that the retrieval
the retrieval methods are defined in [lime retrieval methods]. methods are defined in
[I-D.ietf-lime-yang-connectionless-oam-methods].
3.8. OAM data hierarchy 3.8. OAM data hierarchy
The complete data hierarchy related to the OAM YANG model is The complete data hierarchy related to the OAM YANG model is
presented below. presented below.
module: ietf-connectionless-oam module: ietf-connectionless-oam
+--ro oper {continuity-check}? +--ro cc-oper-data {continuity-check}?
+--ro cc-ipv4-sessions-statistics +--ro cc-ipv4-sessions-statistics
| +--ro cc-session-statistics | +--ro cc-session-statistics
| +--ro session-count? uint32 | +--ro session-count? uint32
| +--ro session-up-count? uint32 | +--ro session-up-count? uint32
| +--ro session-down-count? uint32 | +--ro session-down-count? uint32
| +--ro session-admin-down-count? uint32 | +--ro session-admin-down-count? uint32
+--ro cc-ipv6-sessions-statistics +--ro cc-ipv6-sessions-statistics
+--ro cc-session-statistics +--ro cc-session-statistics
+--ro session-count? uint32 +--ro session-count? uint32
+--ro session-up-count? uint32 +--ro session-up-count? uint32
+--ro session-down-count? uint32 +--ro session-down-count? uint32
+--ro session-admin-down-count? uint32 +--ro session-admin-down-count? uint32
augment /nd:networks/nd:network/nd:node: augment /nd:networks/nd:network/nd:node:
+--rw tp-address-type-value? identityref +--rw tp-location-type-value? identityref
+--rw (location-type)? +--rw (location-type)?
+--:(ipv4-location-type) +--:(ipv4-location-type)
| +--rw test-point-ipv4-location-list | +--rw test-point-ipv4-location-list
| +--rw test-point-locations* [ipv4-location] | +--rw test-point-locations* [ipv4-location]
| +--rw ipv4-location inet:ipv4-address | +--rw ipv4-location inet:ipv4-address
| +--rw vrf? routing-instance-ref | +--rw vrf? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | | +--rw tech-null? empty | | | +--rw tech-null? empty
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location? inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location? uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location? inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(ipv6-location-type) +--:(ipv6-location-type)
| +--rw test-point-ipv6-location-list | +--rw test-point-ipv6-location-list
| +--rw test-point-locations* [ipv6-location] | +--rw test-point-locations* [ipv6-location]
| +--rw ipv6-location inet:ipv6-address | +--rw ipv6-location inet:ipv6-address
| +--rw vrf? routing-instance-ref | +--rw vrf? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | | +--rw tech-null? empty | | | +--rw tech-null? empty
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location? inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address? inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location? uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location? inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(mac-location-type) +--:(mac-location-type)
| +--rw test-point-mac-address-location-list | +--rw test-point-mac-address-location-list
| +--rw test-point-locations* [mac-address-location] | +--rw test-point-locations* [mac-address-location]
| +--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
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location? inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address? inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location? uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(tunnel-location-type) +--:(tunnel-location-type)
| +--rw test-point-tunnel-address-location-list | +--rw test-point-tunnel-location-list
| +--rw test-point-locations* [tunnel-location] | +--rw test-point-locations* [tunnel-location]
| +--rw tunnel-location uint32 | +--rw tunnel-location uint32
| +--rw vrf? routing-instance-ref | +--rw vrf? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | | +--rw tech-null? empty | | | +--rw tech-null? empty
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location? inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address? inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location? uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(ip-prefix-location-type) +--:(ip-prefix-location-type)
| +--rw test-point-ip-prefix-location-list | +--rw test-point-ip-prefix-location-list
| +--rw test-point-locations* [ip-prefix-location] | +--rw test-point-locations* [ip-prefix-location]
| +--rw ip-prefix-location inet:ip-prefix | +--rw ip-prefix-location inet:ip-prefix
| +--rw vrf? routing-instance-ref | +--rw vrf? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | | +--rw tech-null? empty | | | +--rw tech-null? empty
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address? inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location? uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location? inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(route-distinguisher-location-type) +--:(route-distinguisher-location-type)
| +--rw test-point-route-dist-location-list | +--rw test-point-route-dist-location-list
| +--rw test-point-locations* [route-dist-location] | +--rw test-point-locations* [route-dist-location]
| +--rw route-dist-location uint32 | +--rw route-dist-location uint32
| +--rw vrf? routing-instance-ref | +--rw vrf? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | | +--rw tech-null? empty | | | +--rw tech-null? empty
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location? uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location? inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(group-ip-address-location-type) +--:(group-ip-address-location-type)
| +--rw test-point-group-ip-address-location-list | +--rw test-point-group-ip-address-location-list
| +--rw test-point-locations* [group-ip-address-location] | +--rw test-point-locations* [group-ip-address-location]
| +--rw group-ip-address-location IP-Multicast-Group-Address | +--rw group-ip-address-location IP-Multicast
-Group-Address
| +--rw vrf? routing-instance-ref | +--rw vrf? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | | +--rw tech-null? empty | | | +--rw tech-null? empty
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location? inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address? inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location? uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location? inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(group-as-number-location-type) +--:(group-as-number-location-type)
| +--rw test-point-as-number-location-list | +--rw test-point-as-number-location-list
| +--rw test-point-locations* [as-number-location] | +--rw test-point-locations* [as-number-location]
| +--rw as-number-location inet:as-number | +--rw as-number-location inet:as-number
| +--rw vrf? routing-instance-ref | +--rw vrf? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | | +--rw tech-null? empty | | | +--rw tech-null? empty
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location? inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address? inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location? inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(group-lsp-id-location-type) +--:(group-lsp-id-location-type)
| +--rw test-point-lsp-id-location-list | +--rw test-point-lsp-id-location-list
| +--rw test-point-locations* [lsp-id-location] | +--rw test-point-locations* [lsp-id-location]
| +--rw lsp-id-location string | +--rw lsp-id-location string
| +--rw vrf? routing-instance-ref | +--rw vrf? routing-instance-ref
| +--rw (technology)? | +--rw (technology)?
| | +--:(technology-null) | | +--:(technology-null)
| | | +--rw tech-null? empty | | | +--rw tech-null? empty
| | +--:(technology-string) | | +--:(technology-string)
| | +--rw ipv4-icmp? string | | +--rw ipv4-icmp? string
| +--rw tp-tools | +--rw tp-tools
| | +--rw connectivity-verification? boolean | | +--rw connectivity-verification? boolean
| | +--rw continuity-check? boolean | | +--rw continuity-check? boolean
| | +--rw path-discovery? boolean | | +--rw path-discovery? boolean
| +--rw root? | +--rw root?
| +--rw oam-layers* [index] | +--rw oam-layers* [index]
| +--rw index uint16 | +--rw index uint16
| +--rw level? int32 | +--rw level? int32
| +--rw (tp-address)? | +--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-location? inet:ipv4-address | | +--rw ipv4-location inet:ipv4-address
| +--:(ipv6-location) | +--:(ipv6-location)
| | +--rw ipv6-address? inet:ipv6-address | | +--rw ipv6-address? inet:ipv6-address
| +--:(tunnel-location) | +--:(tunnel-location)
| | +--rw tunnel-location? uint32 | | +--rw tunnel-location? uint32
| +--:(ip-prefix-location) | +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix | | +--rw ip-prefix-location? inet:ip-prefix
| +--:(route-dist-location) | +--:(route-dist-location)
| | +--rw route-dist-location? uint32 | | +--rw route-dist-location? uint32
| +--:(group-ip-address-location) | +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address | | +--rw group-ip-address-location? IP-Multicast
-Group-Address
| +--:(as-number-location) | +--:(as-number-location)
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location) | +--:(lsp-id-location)
| | +--rw lsp-id-location? string | | +--rw lsp-id-location? string
| +--:(system-id-location) | +--:(system-id-location)
| | +--rw system-id-location? inet:uri | +--rw system-id-location? router-id
| +--:(connection-oriented-location)
| +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
+--:(group-system-id-location-type) +--:(group-system-id-location-type)
+--rw test-point-system-info-location-list +--rw test-point-system-info-location-list
+--rw test-point-locations* [system-id-location] +--rw test-point-locations* [system-id-location]
+--rw system-id-location inet:uri +--rw system-id-location inet:uri
+--rw vrf? routing-instance-ref +--rw vrf? routing-instance-ref
+--rw (technology)? +--rw (technology)?
| +--:(technology-null) | +--:(technology-null)
| | +--rw tech-null? empty | | +--rw tech-null? empty
| +--:(technology-string) | +--:(technology-string)
| +--rw ipv4-icmp? string | +--rw ipv4-icmp? string
+--rw tp-tools +--rw tp-tools
| +--rw connectivity-verification? boolean | +--rw connectivity-verification? boolean
| +--rw continuity-check? boolean | +--rw continuity-check? boolean
| +--rw path-discovery? boolean | +--rw path-discovery? boolean
+--rw root? +--rw root?
+--rw oam-layers* [index] +--rw oam-layers* [index]
+--rw index uint16 +--rw index uint16
+--rw level? int32 +--rw level? int32
+--rw (tp-address)? +--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-location? inet:ipv4-address | +--rw ipv4-location? inet:ipv4-address
+--:(ipv6-location) +--:(ipv6-location)
| +--rw ipv6-address? inet:ipv6-address | +--rw ipv6-address? inet:ipv6-address
+--:(tunnel-location) +--:(tunnel-location)
| +--rw tunnel-location? uint32 | +--rw tunnel-location? uint32
+--:(ip-prefix-location) +--:(ip-prefix-location)
| +--rw ip-prefix-location? inet:ip-prefix | +--rw ip-prefix-location inet:ip-prefix
+--:(route-dist-location) +--:(route-dist-location)
| +--rw route-dist-location? uint32 | +--rw route-dist-location? uint32
+--:(group-ip-address-location) +--:(group-ip-address-location)
| +--rw group-ip-address-location? IP-Multicast-Group-Address | +--rw group-ip-address-location? IP-Multicast
-Group-Address
+--:(as-number-location) +--:(as-number-location)
| +--rw as-number-location? inet:as-number | +--rw as-number-location? inet:as-number
+--:(lsp-id-location) +--:(lsp-id-location)
| +--rw lsp-id-location? string | +--rw lsp-id-location? string
+--:(system-id-location) +--:(system-id-location)
| +--rw system-id-location? inet:uri +--rw system-id-location? router-id
+--:(connection-oriented-location)
+--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
+--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
+--rw maintenance-association-end-point? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA[goam:MA-name-string = current()/../maintenance-association]/MEP/mep-name
data hierarchy of OAM data hierarchy of OAM
4. OAM YANG Module 4. OAM YANG Module
<CODE BEGINS> file "ietf-connectionless-oam.yang" <CODE BEGINS> file "ietf-connectionless-oam.yang"
module ietf-connectionless-oam { module ietf-connectionless-oam {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam";
skipping to change at page 18, line 18 skipping to change at page 17, line 47
} }
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
} }
import ietf-network-instance { import ietf-network-instance {
prefix "ni"; prefix "ni";
} }
import ietf-conn-oam{
prefix "goam";
}
organization "IETF LIME Working Group"; organization "IETF LIME Working Group";
contact contact
"Deepak Kumar dekumar@cisco.com "Deepak Kumar dekumar@cisco.com
Qin Wu bill.wu@huawei.com Qin Wu bill.wu@huawei.com
S Raghavan srihari@cisco.com S Raghavan srihari@cisco.com
Zitao Wang wangzitao@huawei.com Zitao Wang wangzitao@huawei.com
R Rahman rrahman@cisco.com"; R Rahman rrahman@cisco.com";
description description
"This YANG module defines the generic configuration, "This YANG module defines the generic configuration,
data model, statistics for connectionless OAM to be data model, statistics for connectionless OAM to be
used within IETF in a protocol indpendent manner. used within IETF in a protocol indpendent manner.
Functional level abstraction is indendent with Functional level abstraction is indendent with
YANG modeling. It is assumed that each protocol maps YANG modeling. It is assumed that each protocol maps
corresponding abstracts to its native format. corresponding abstracts to its native format.
Each protocol may extend the YANG model defined Each protocol may extend the YANG model defined
here to include protocol specific extensions"; here to include protocol specific extensions";
revision 2016-12-16 { revision 2017-02-08 {
description description
"Initial revision. - 08 version"; "Initial revision. - 10 version";
reference ""; reference "";
} }
/* features */ /* features */
feature connection-less { feature connection-less {
description description
"this feature indicates that OAM solution is connection less."; "This feature indicates that OAM solution is connection less.";
} }
feature continuity-check { feature continuity-check {
description description
"This feature indicates that the server supports "This feature indicates that the server supports
executing continuity check OAM command and executing continuity check OAM command and
returning a response. Servers that do not advertise returning a response. Servers that do not advertise
this feature will not support executing this feature will not support executing
continuity check command or rpc model for continuity check command or rpc model for
continuity check command."; continuity check command.";
} }
skipping to change at page 19, line 23 skipping to change at page 18, line 50
"This feature indicates that the server supports "This feature indicates that the server supports
executing path discovery OAM command and executing path discovery OAM command and
returning a response. Servers that do not advertise returning a response. Servers that do not advertise
this feature will not support executing this feature will not support executing
path discovery command or rpc model for path discovery command or rpc model for
path discovery command."; path discovery command.";
} }
/* Identities */ /* Identities */
/* typedefs */ /* typedefs */
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 { typedef routing-instance-ref {
type leafref { type leafref {
path "/ni:network-instances/ni:network-instance/ni:name"; path "/ni:network-instances/ni:network-instance/ni:name";
} }
description description
"This type is used for leafs that reference a routing instance "This type is used for leafs that reference a routing instance
configuration."; configuration.";
} }
typedef IPv4-Multicast-Group-Address { typedef IPv4-Multicast-Group-Address {
type string { type string {
pattern '(2((2[4-9])|(3[0-9]))\.)' pattern '(2((2[4-9])|(3[0-9]))\.)'
+'(([0-9]|[1-9][0-9]|1[0-9][0-9]|' +'(([0-9]|[1-9][0-9]|1[0-9][0-9]|'
+'2[0-4][0-9]|25[0-5])\.){2}' +'2[0-4][0-9]|25[0-5])\.){2}'
+'([0-9]|[1-9][0-9]|1[0-9][0-9]' +'([0-9]|[1-9][0-9]|1[0-9][0-9]'
+'|2[0-4][0-9]|25[0-5])'; +'|2[0-4][0-9]|25[0-5])';
} }
description description
"The IPv4-Multicast-Group-Address type "The IPv4-Multicast-Group-Address type
represents an IPv4 multicast address represents an IPv4 multicast address
in dotted-quad notation."; in dotted-quad notation.";
reference "RFC4607"; reference "RFC4607";
} // typedef IPv4-Multicast-Group-Address } // typedef IPv4-Multicast-Group-Address
typedef IPv6-Multicast-Group-Address { typedef IPv6-Multicast-Group-Address {
type string { type string {
pattern pattern
'(((FF|ff)[0-9a-fA-F]{2}):)([0-9a-fA-F]' '(((FF|ff)[0-9a-fA-F]{2}):)([0-9a-fA-F]'
+'{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?' +'{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?'
+'(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[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]|' +'[0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|'
+'2[0-4][0-9]|[01]?[0-9]?[0-9])))'; +'2[0-4][0-9]|[01]?[0-9]?[0-9])))';
pattern pattern
'(([^:]+:){6}(([^:]+:[^:]+)|' '(([^:]+:){6}(([^:]+:[^:]+)|'
+'(.*\..*)))|((([^:]+:)*[^:]+)' +'(.*\..*)))|((([^:]+:)*[^:]+)'
+'?::(([^:]+:)*[^:]+)?)'; +'?::(([^:]+:)*[^:]+)?)';
} }
description description
"The IPv6-Multicast-Group-Address "The IPv6-Multicast-Group-Address
type represents an IPv6 address in full, type represents an IPv6 address in full,
mixed, shortened, and shortened-mixed mixed, shortened, and shortened-mixed
notation."; notation.";
reference "RFC4291 2.7. reference "RFC4291 2.7.
ietf-inet-types:ipv6-address"; ietf-inet-types:ipv6-address";
} }
typedef IP-Multicast-Group-Address { typedef IP-Multicast-Group-Address {
type union { type union {
type IPv4-Multicast-Group-Address; type IPv4-Multicast-Group-Address;
type IPv6-Multicast-Group-Address; type IPv6-Multicast-Group-Address;
} }
description description
"The IP-Multicast-Group-Address type "The IP-Multicast-Group-Address type
represents an IP multicast address and represents an IP multicast address and
is IP version neutral. The format of the is IP version neutral. The format of the
textual representations implies the IP version."; textual representations implies the IP version.";
} // typedef IP-Multicast-Group-Address }
identity fec-types { identity address-attribute-types {
description description
"This is base identity of fec types which are ip-prefix, "This is base identity of address
bgp, tunnel, pwe3, vpls, etc."; attribute types which are ip-prefix,
bgp, tunnel, pwe3, vpls, etc.";
} }
typedef fec-type { typedef address-attribute-type {
type identityref { type identityref {
base fec-types; base address-attribute-types;
} }
description "Target FEC type."; description
"Target address attribute type.";
} }
typedef oam-counter32 { typedef opaque-tlv-type {
type yang:zero-based-counter32; type identityref {
base opaque-tlv-type-id;
}
description description
"defines 32 bit counter for OAM"; "Opaque TLV type definition.";
} }
identity time-resolution{ identity time-resolution{
description description
"Time interval resolution"; "Time interval resolution";
} //base identity }
identity hours { identity hours {
base time-resolution; base time-resolution;
description description
"Hours"; "Hours";
} }
identity minutes { identity minutes {
base time-resolution; base time-resolution;
description description
skipping to change at page 21, line 46 skipping to change at page 21, line 38
base time-resolution; base time-resolution;
description description
"Microseconds"; "Microseconds";
} }
identity nanoseconds { identity nanoseconds {
base time-resolution; base time-resolution;
description description
"Nanoseconds"; "Nanoseconds";
} }
identity opaque-tlv-type-id {
description
"Base identity for opaque tlv types.";
}
identity default-tlv-type-id {
base opaque-tlv-type-id;
description
"Default or unknown TLV type id.";
}
/* groupings */ /* groupings */
grouping cc-session-statsitics { grouping cc-session-statsitics {
description "Grouping for session statistics."; description "Grouping for session statistics.";
container cc-session-statistics { container cc-session-statistics {
description "cc session counters"; description "cc session counters";
leaf session-count { leaf session-count {
type uint32; type uint32;
description "Number of cc sessions."; description
"Number of cc sessions.";
} }
leaf session-up-count { leaf session-up-count {
type uint32; type uint32;
description "Number of sessions which are up."; description
"Number of sessions which are up.";
} }
leaf session-down-count { leaf session-down-count {
type uint32; type uint32;
description "Number of sessions which are down."; description
"Number of sessions which are down.";
} }
leaf session-admin-down-count { leaf session-admin-down-count {
type uint32; type uint32;
description "Number of sessions which are admin-down."; description
"Number of sessions which are admin-down.";
} }
} }
} }
grouping session-packet-statistics { grouping session-packet-statistics {
description "Grouping for per session packet statistics"; description "Grouping for per session packet statistics";
container session-packet-statistics { container session-packet-statistics {
description "Per session packet statistics."; description "Per session packet statistics.";
leaf rx-packet-count { leaf rx-packet-count {
type uint32; type uint32;
description "Total received packet count."; description
"Total number of received OAM packet count.";
} }
leaf tx-packet-count { leaf tx-packet-count {
type uint32; type uint32;
description "Total transmitted packet count."; description
"Total number of transmitted OAM packet count.";
} }
leaf rx-bad-packet { leaf rx-bad-packet {
type uint32; type uint32;
description "Total received bad packet."; description
"Total number of received bad OAM packet.";
} }
leaf tx-packet-failed { leaf tx-packet-failed {
type uint32; type uint32;
description "Total send packet failed."; description
"Total number of send OAM packet failed.";
} }
} }
} }
grouping cc-per-session-statistics { grouping cc-per-session-statistics {
description "Grouping for per session statistics"; description "Grouping for per session statistics";
container cc-per-session-statistics { container cc-per-session-statistics {
description "per session statistics."; description "per session statistics.";
leaf create-time { leaf create-time {
type yang:date-and-time; type yang:date-and-time;
description "Time and date when session is created."; description
"Time and date when session is created.";
} }
leaf last-down-time { leaf last-down-time {
type yang:date-and-time; type yang:date-and-time;
description "Time and date last time session is down."; description
"Time and date last time session is down.";
} }
leaf last-up-time { leaf last-up-time {
type yang:date-and-time; type yang:date-and-time;
description "Time and date last time session is up."; description
"Time and date last time session is up.";
} }
leaf down-count { leaf down-count {
type uint32; type uint32;
description "Total down count."; description
"Total down count.";
} }
leaf admin-down-count { leaf admin-down-count {
type uint32; type uint32;
description "Total down count."; description
"Total down count.";
} }
uses session-packet-statistics; uses session-packet-statistics;
} }
} }
grouping session-error-statistics { grouping session-error-statistics {
description "Grouping for per session error statistics"; description
"Grouping for per session error statistics";
container session-error-statistics { container session-error-statistics {
description "Per session error statistics."; description "Per session error statistics.";
leaf packet-drops-count { leaf packet-drops-count {
type uint32; type uint32;
description "Total received packet drops count."; description
"Total received packet drops count.";
} }
leaf packet-reorder-count { leaf packet-reorder-count {
type uint32; type uint32;
description "Total received packet reordered count."; description
"Total received packet reordered count.";
} }
leaf packets-out-of-seq-count { leaf packets-out-of-seq-count {
type uint32; type uint32;
description "Total received out of sequence count."; description
"Total received out of sequence count.";
} }
leaf packets-dup-count { leaf packets-dup-count {
type uint32; type uint32;
description "Total received packet duplicates count."; description
"Total received packet duplicates count.";
} }
} }
} }
grouping session-delay-statistics { grouping session-delay-statistics {
description "Grouping for per session delay statistics"; description
"Grouping for per session delay statistics";
container session-delay-statistics { container session-delay-statistics {
description "Session delay summarised information."; description
"Session delay summarised information.";
leaf time-resolution-value { leaf time-resolution-value {
type identityref { type identityref {
base time-resolution; base time-resolution;
} }
description "Time units among choice of s,ms,ns etc."; description
"Time units among choice of s,ms,ns etc.";
} }
leaf min-delay-value { leaf min-delay-value {
type uint32; type uint32;
description "Minimum delay value observed."; description
"Minimum delay value observed.";
} }
leaf max-delay-value { leaf max-delay-value {
type uint32; type uint32;
description "Maximum delay value observed."; description
"Maximum delay value observed.";
} }
leaf average-delay-value { leaf average-delay-value {
type uint32; type uint32;
description "Average delay value observed."; description
"Average delay value observed.";
} }
} }
} }
grouping session-jitter-statistics { grouping session-jitter-statistics {
description "Grouping for per session jitter statistics"; description
"Grouping for per session jitter statistics";
container session-jitter-statistics { container session-jitter-statistics {
description "Session jitter summarised information."; description
"Session jitter summarised information.";
leaf time-resolution-value { leaf time-resolution-value {
type identityref { type identityref {
base time-resolution; base time-resolution;
} }
description "Time units among choice of s,ms,ns etc."; description
"Time units among choice of s,ms,ns etc.";
} }
leaf min-jitter-value { leaf min-jitter-value {
type uint32; type uint32;
description "Minimum jitter value observed."; description
"Minimum jitter value observed.";
} }
leaf max-jitter-value { leaf max-jitter-value {
type uint32; type uint32;
description "Maximum jitter value observed."; description
"Maximum jitter value observed.";
} }
leaf average-jitter-value { leaf average-jitter-value {
type uint32; type uint32;
description "Average jitter value observed."; description
"Average jitter value observed.";
} }
} }
} }
grouping session-path-verification-statistics { grouping session-path-verification-statistics {
description "Grouping for per session path verification statistics"; description
"Grouping for per session path verification statistics";
container session-path-verification-statistics{ container session-path-verification-statistics{
description "OAM per session path verification statistics."; description
"OAM per session path verification statistics.";
leaf verified-count { leaf verified-count {
type uint32; type uint32;
description "Total number of packets that went through a path as intended."; description
"Total number of OAM packets that
went through a path as intended.";
} }
leaf failed-count { leaf failed-count {
type uint32; type uint32;
description "Total number of packets that went through an unintended path."; description
"Total number of OAM packets that
went through an unintended path.";
} }
} }
} }
grouping session-type { grouping session-type {
description description
"This object indicates the current session "This object indicates the current session
definition."; definition.";
leaf session-type-enum { leaf session-type-enum {
type enumeration { type enumeration {
enum proactive { enum proactive {
description description
"The current session is proactive"; "The current session is proactive";
} }
enum on-demand { enum on-demand {
description description
"The current session is on-demand."; "The current session is on-demand.";
} }
} }
default "on-demand"; default "on-demand";
description description
"Session type enum";
"session type enum"; }
}
grouping opaque-info-tlv {
description
"Opaque information as a TLV.";
leaf type {
type opaque-tlv-type;
description "TLV type.";
}
leaf length {
type uint16;
description "TLV length.";
}
leaf value {
type yang:hex-string;
description "TLV value.";
} }
} }
grouping opaque-tlvs {
description
"Opaque TLVs.";
container opaque-tlvs {
description
"Opaque TLVs container.";
list opaque-tlvs-list {
description
"Opaque TLVs list.";
uses opaque-info-tlv;
}
}
}
identity tp-address-type { identity tp-address-type {
description description
"Test point address type"; "Test point address type";
} //base identity }
identity mac-address-type { identity mac-address-type {
base tp-address-type; base tp-address-type;
description description
"MAC address type"; "MAC address type";
} }
identity ipv4-address-type { identity ipv4-address-type {
base tp-address-type; base tp-address-type;
description description
"IPv4 address type"; "IPv4 address type";
} }
identity ipv6-address-type { identity ipv6-address-type {
base tp-address-type; base tp-address-type;
description description
"IPv6 address type"; "IPv6 address type";
} }
identity src-dst-address-type { identity tp-attribute-type {
base tp-address-type;
description
"Source/Dest address type";
}
identity fec-address-type {
base tp-address-type;
description
"FEC address type";
}
identity tlv-address-type {
base tp-address-type; base tp-address-type;
description description
"TLV address type"; "Test point attribute type";
} }
identity system-id-address-type { identity system-id-address-type {
base tp-address-type; base tp-address-type;
description description
"System id address type"; "System id address type";
} }
identity lsp-id-address-type { identity lsp-id-address-type {
base tp-address-type; base tp-address-type;
description description
"LSP ID address type"; "LSP ID address type";
} }
identity as-number-address-type { identity as-number-address-type {
base tp-address-type; base tp-address-type;
description description
"AS number address type"; "AS number address type";
} }
identity group-ip-address-type { identity group-ip-address-type {
base tp-address-type; base tp-address-type;
skipping to change at page 27, line 38 skipping to change at page 28, line 38
"IP prefix address type"; "IP prefix address type";
} }
identity tunnel-address-type { identity tunnel-address-type {
base tp-address-type; base tp-address-type;
description description
"Tunnel address type"; "Tunnel address type";
} }
grouping tp-address { grouping tp-address {
leaf tp-address-type-value { leaf tp-location-type-value {
type identityref { type identityref {
base tp-address-type; base tp-address-type;
} }
description "Test point address type."; description "Test point address type.";
} }
choice tp-address { choice tp-address {
case mac-address { case mac-address {
when "'tp-address-type-value' = 'mac-address-type'" { when "'tp-location-type-value' = 'mac-address-type'" {
description "MAC address type"; description "MAC address type";
} }
leaf mac-address { 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 {
when "'tp-address-type-value' = 'ipv4-address-type'" { when "'tp-location-type-value' = 'ipv4-address-type'" {
description "IPv4 address type"; description "IPv4 address type";
} }
leaf ipv4-address { 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-address { case ipv6-address {
when "'tp-address-type-value' = 'ipv6-address-type'" { when "'tp-location-type-value' = 'ipv6-address-type'" {
description "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 src-dst-address {
when "'tp-address-type-value' = 'src-dst-address-type'" {
description "Src dest address type for BFD";
}
leaf src-ip-address {
type inet:ip-address;
description
"source ip address.";
}
leaf dst-ip-address {
type inet:ip-address;
description
"destination ip address."; case tp-attribute {
} when "'tp-location-type-value' = 'tp-attribute-type'" {
leaf Interface { description "Test point attribute type";
type if:interface-ref;
description
"interface.";
}
}
case fec {
when "'tp-address-type-value' = 'fec-address-type'" {
description "FEC address type";
} }
leaf fec-type { leaf tp-attribute-type {
type fec-type; type address-attribute-type;
description description
"fec type."; "Test point type.";
} }
choice fec-value { choice tp-attribute-value {
description description
"fec value."; "Test point value.";
case ip-prefix { case ip-prefix {
leaf ip-prefix { leaf ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description description
"ip prefix."; "IP prefix.";
} }
} }
case bgp { case bgp {
leaf bgp { leaf bgp {
type inet:ip-prefix; type inet:ip-prefix;
description description
"BGP Labeled Prefix ";
"BGP Labeled Prefix ";
} }
} }
case tunnel { case tunnel {
leaf tunnel-interface { leaf tunnel-interface {
type uint32; type uint32;
description description
"VPN Prefix "; "VPN Prefix ";
} }
} }
case pw { case pw {
leaf remote-pe-address{ leaf remote-pe-address{
type inet:ip-address; type inet:ip-address;
description description
"remote pe address."; "Remote pe address.";
} }
leaf pw-id { leaf pw-id {
type uint32; type uint32;
description description
"Pseudowire id."; "Pseudowire id.";
} }
} }
case vpls { case vpls {
leaf route-distinguisher { leaf route-distinguisher {
type uint32; type uint32;
description description
"Route Distinguisher(8 octets)."; "Route Distinguisher(8 octets).";
} }
leaf sender-ve-id{ leaf sender-ve-id{
type uint32; type uint32;
description description
"Sender's VE ID."; "Sender's VE ID.";
} }
leaf receiver-ve-id{ leaf receiver-ve-id{
type uint32; type uint32;
description description
"Receiver's VE ID."; "Receiver's VE ID.";
} }
} }
case mpls-mldp{ case mpls-mldp{
choice root-address{ choice root-address{
description description
"root address choice."; "Root address choice.";
case ip-address{ case ip-address{
leaf source-address{ leaf source-address{
type inet:ip-address; type inet:ip-address;
description description
"IP address.";
"ip address.";
} }
leaf group-ip-address{ leaf group-ip-address{
type IP-Multicast-Group-Address; type IP-Multicast-Group-Address;
description description
"group ip address."; "Group ip address.";
} }
} }
case vpn{ case vpn{
leaf as-number{ leaf as-number{
type inet:as-number; type inet:as-number;
description
description "AS number.";
"AS number.";
} }
} }
case global-id{ case global-id{
leaf lsp-id{ leaf lsp-id{
type string; type string;
description description
"lsp id."; "LSP id.";
} }
} }
} }
} }
} }
} }
case tlv-address {
when "'tp-address-type-value' = 'tlv-address-type'" {
description "TLV address type";
}
leaf tlv-type {
type int16;
description
"Type of MEP-ID";
}
leaf tlv-len {
type int16;
description
"Length of MEP-ID value";
}
leaf tlv-value {
type binary {
length "12..255";
}
description
"Value please refer RFC6428 (Figure 4,5,6).";
}
description
"MEP-ID";
}
case system-info { case system-info {
when "'tp-address-type-value' = 'system-id-address-type'" { when "'tp-location-type-value' = 'system-id-address-type'" {
description "System id address type"; description "System id address type";
} }
leaf system-id { leaf system-id {
type inet:uri; type router-id;
description description
"System ID assigned to this node."; "System ID assigned to this node.";
} }
} }
description description
"TP Addressing."; "TP Addressing.";
} }
description description
"TP Address"; "TP Address";
} }
grouping tp-address-vrf { grouping tp-address-vrf {
description description
"Test point address with VRF."; "Test point address with VRF.";
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance"; corresponding network instance";
} }
uses tp-address; uses tp-address;
} }
grouping connectionless-oam-layers { grouping connectionless-oam-layers {
list oam-layers { list oam-layers {
key "index"; key "index";
leaf index { leaf index {
type uint16 { type uint16 {
range "0..65535"; range "0..65535";
} }
description description
"Index"; "Index";
} }
leaf level { leaf level {
type int32 { type int32 {
range "-1..1"; range "-1..1";
} }
default 0;
default 0; description
description "Level 0 indicates default level,
"Level 0 indicates default level, -1 means server -1 means server and +1 means client layer.
and +1 means client layer. In relationship 0 means same layer.";
In relationship 0 means same layer.";
} }
choice tp-address { choice tp-location {
case mac-address { case mac-address {
leaf mac-address-location { leaf mac-address-location {
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 { leaf ipv4-location {
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-location {
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 tunnel-location{ case tunnel-location{
leaf tunnel-location{ leaf tunnel-location{
type uint32; type uint32;
description description
"VPN Prefix"; "VPN Prefix";
} }
description description
"tunnel location"; "Tunnel location";
} }
case ip-prefix-location{ case ip-prefix-location{
leaf ip-prefix-location{ leaf ip-prefix-location{
type inet:ip-prefix; type inet:ip-prefix;
description description
"Ip prefix location"; "IP prefix location";
} }
description description
"IP prefix location"; "IP prefix location";
} }
case route-dist-location{ case route-dist-location{
leaf route-dist-location{ leaf route-dist-location{
type uint32; type uint32;
description description
"Route Distinguisher (8 octets)"; "Route Distinguisher (8 octets)";
skipping to change at page 34, line 39 skipping to change at page 34, line 39
type string; type string;
description description
"LSP id"; "LSP id";
} }
description description
"LSP ID"; "LSP ID";
} }
case system-id-location{ case system-id-location{
leaf system-id-location{ leaf system-id-location{
type inet:uri; type router-id;
description description
"system id location"; "System id location";
} }
description description
"System ID"; "System ID";
} }
case connection-oriented-location{
uses goam:maintenance-association-end-point-reference;
description
"connection oriented location";
}
description description
"TP location."; "TP location.";
} }
ordered-by user; ordered-by user;
description description
"list of related oam layers. "List of related oam layers.
0 means they are in same level, especially 0 means they are in same level, especially
interworking scenarios of stiching multiple interworking scenarios of stiching multiple
technology at same layer. technology at same layer. -1 means server layer,
-1 means server layer, for eg:- in case of for eg:- in case of Overlay and Underlay,
Underlay is server layer for Overlay Test Point.
Overlay and Underlay, Underlay is server layer for +1 means client layer, for eg:- in case of
Overlay Test Point. Service OAM and Transport OAM, Service OAM is client
+1 means client layer, for eg:- in case of layer to Transport OAM.";
Service OAM and Transport OAM, Service OAM is client
layer to Transport OAM.";
} }
description description
"connectionless related OAM layer"; "Connectionless related OAM layer";
} }
grouping tp-technology { grouping tp-technology {
choice technology { choice technology {
default technology-null; default technology-null;
case technology-null { case technology-null {
description description
"this is a placeholder when no technology is needed."; "This is a placeholder when no technology is needed.";
leaf tech-null { leaf tech-null {
type empty; type empty;
description description
"there is no technology define"; "There is no technology define";
} }
} }
description description
"technology choice null"; "Technology choice null";
case technology-string { case technology-string {
description description
"oam technology string"; "OAM technology string";
leaf ipv4-icmp { leaf ipv4-icmp {
type string; type string;
description description
"name to identify oam technology"; "Name to identify oam technology";
} }
} }
} }
description description
"OAM Technology"; "OAM Technology";
} }
grouping tp-tools { grouping tp-tools {
description description
"Test Point OAM Toolset."; "Test Point OAM Toolset.";
container tp-tools{ container tp-tools{
leaf connectivity-verification{ leaf connectivity-verification{
type boolean; type boolean;
description description
"A flag indicating whether or not the "A flag indicating whether or not the
connectivity-verification function is supported."; connectivity-verification function is supported.";
reference reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6) RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification. for the Internet Protocol Version 6 (IPv6) Specification.
RFC 5085: Pseudowire Virtual Circuit Connectivity Verification.
RFC 5880: Bidirectional Forwarding Detection. RFC 5880: Bidirectional Forwarding Detection.
RFC 5881: BFD for IPv4 and IPv6. RFC 5881: BFD for IPv4 and IPv6.
RFC 5883: BFD for Multihop Paths. RFC 5883: BFD for Multihop Paths.
RFC 5884: BFD for MPLS Label Switched Paths. RFC 5884: BFD for MPLS Label Switched Paths.
RFC 5885: BFD for PW VCCV. RFC 5885: BFD for PW VCCV.
RFC 4379: LSP-PING."; RFC 4379: LSP-PING.";
} }
leaf continuity-check{ leaf continuity-check{
type boolean; type boolean;
description description
"A flag indicating whether or not the "A flag indicating whether or not the
continuity check function is supported."; continuity check function is supported.";
reference reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6) RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification. for the Internet Protocol Version 6 (IPv6) Specification.
RFC 5880: Bidirectional Forwarding Detection. RFC 5880: Bidirectional Forwarding Detection.
RFC 5881: BFD for IPv4 and IPv6. RFC 5881: BFD for IPv4 and IPv6.
RFC 5883: BFD for Multihop Paths. RFC 5883: BFD for Multihop Paths.
RFC 5884: BFD for MPLS Label Switched Paths. RFC 5884: BFD for MPLS Label Switched Paths.
RFC 5885: BFD for PW VCCV."; RFC 5885: BFD for PW VCCV.
RFC 6450: Multicast Ping Protocol.";
} }
leaf path-discovery{ leaf path-discovery{
type boolean; type boolean;
description description
"A flag indicating whether or not the "A flag indicating whether or not the
path discovery function is supported."; path discovery function is supported.";
reference reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6) RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification. for the Internet Protocol Version 6 (IPv6) Specification.
RFC 4884: Extended ICMP to Support Multi-part Message. RFC 4884: Extended ICMP to Support Multi-part Message.
RFC 5837:Extending ICMP for Interface and Next-Hop Identification. RFC 5837:Extending ICMP for Interface
and Next-Hop Identification.
RFC 4379: LSP-PING."; RFC 4379: LSP-PING.";
} }
description description
"Container for test point OAM tools set."; "Container for test point OAM tools set.";
} }
} }
grouping test-point-location-info { grouping test-point-location-info {
uses tp-technology; uses tp-technology;
uses tp-tools; uses tp-tools;
anydata root { anydata root {
yangmnt:mount-point root; yangmnt:mount-point root;
description description
"Root for models supported per "Root for models supported per
test point"; test point";
} }
uses connectionless-oam-layers; uses connectionless-oam-layers;
description description
"Test point Location"; "Test point Location";
} }
grouping test-point-locations { grouping test-point-locations {
description "Group of test point locations."; description "Group of test point locations.";
leaf tp-address-type-value { leaf tp-location-type-value {
type identityref { type identityref {
base tp-address-type; base tp-address-type;
} }
description "Test point address type."; description "Test point location type.";
} }
choice location-type { choice location-type {
case ipv4-location-type { case ipv4-location-type {
when "'tp-address-type-value' = 'ipv4-address-type'" { when "'tp-location-type-value' = 'ipv4-address-type'" {
description description
"when test point address is equal to ipv4 address."; "When test point location type is equal to ipv4 address.";
} }
container test-point-ipv4-location-list { container test-point-ipv4-location-list {
list test-point-locations { list test-point-locations {
key "ipv4-location"; key "ipv4-location";
leaf ipv4-location { leaf ipv4-location {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Ipv4 Address."; "IPv4 Address.";
} }
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance"; corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container
for test point location list.";
} }
} }
case ipv6-location-type { case ipv6-location-type {
when "'tp-address-type-value' = 'ipv6-address-type'" { when "'tp-location-type-value' = 'ipv6-address-type'" {
description description
"when test point address is equal to ipv6 address"; "when test point location is equal to ipv6 address";
} }
container test-point-ipv6-location-list { container test-point-ipv6-location-list {
list test-point-locations { list test-point-locations {
key "ipv6-location"; key "ipv6-location";
leaf ipv6-location { leaf ipv6-location {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Ipv6 Address."; "IPv6 Address.";
} }
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance";
corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container
for test point location list.";
} }
} }
case mac-location-type { case mac-location-type {
when "'tp-address-type-value' = 'mac-address-type'" { when "'tp-location-type-value' = 'mac-address-type'" {
description description
"when test point address is equal to mac address."; "when test point location type is equal to mac address.";
} }
container test-point-mac-address-location-list { container test-point-mac-address-location-list {
list test-point-locations { list test-point-locations {
key "mac-address-location"; key "mac-address-location";
leaf mac-address-location { leaf mac-address-location {
type yang:mac-address; type yang:mac-address;
description description
"MAC Address"; "MAC Address";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container
for test point location list.";
} }
} }
case tunnel-location-type { case tunnel-location-type {
when "'tp-address-type-value' = 'tunnel-address-type'" { when "'tp-location-type-value' ="
description +" 'tunnel-address-type'" {
"when test point address is equal to tunnel type."; description
} "When test point location type
container test-point-tunnel-address-location-list { is equal to tunnel type.";
}
container test-point-tunnel-location-list {
list test-point-locations { list test-point-locations {
key "tunnel-location"; key "tunnel-location";
leaf tunnel-location { leaf tunnel-location {
type uint32; type uint32;
description description
"VPN Prefix"; "VPN Prefix";
} }
leaf vrf { leaf vrf {
type routing-instance-ref;
type routing-instance-ref; description
description "The vrf is used to describe the
"The vrf is used to describe the corresponding network instance";
corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container
for test point location list.";
} }
} }
case ip-prefix-location-type { case ip-prefix-location-type {
when "'tp-address-type-value' = 'ip-prefix-address-type'" { when "'tp-location-type-value' = "
description +"'ip-prefix-address-type'" {
"when test point address is equal to ip prefix."; description
"When test point location
type is equal to ip prefix.";
} }
container test-point-ip-prefix-location-list { container test-point-ip-prefix-location-list {
list test-point-locations { list test-point-locations {
key "ip-prefix-location"; key "ip-prefix-location";
leaf ip-prefix-location { leaf ip-prefix-location {
type inet:ip-prefix; type inet:ip-prefix;
description description
"IP Prefix"; "IP Prefix";
} }
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance"; corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container
for test point location list.";
} }
} }
case route-distinguisher-location-type { case route-distinguisher-location-type {
when "'tp-address-type-value' = 'route-distinguisher-address-type'" { when "'tp-location-type-value' = "
description "when test point address is equal to +"'route-distinguisher-address-type'" {
description
"When test point
location type is equal to
route distinguiher."; route distinguiher.";
} }
container test-point-route-dist-location-list { container test-point-route-dist-location-list {
list test-point-locations { list test-point-locations {
key "route-dist-location"; key "route-dist-location";
leaf route-dist-location { leaf route-dist-location {
type uint32; type uint32;
description description
"Route Distinguisher(8 octets)."; "Route Distinguisher(8 octets).";
} }
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance"; corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container
for test point location list.";
} }
} }
case group-ip-address-location-type { case group-ip-address-location-type {
when "'tp-address-type-value' = 'group-ip-address-type'" { when "'tp-location-type-value' = "
description "when test point address is equal to +"'group-ip-address-type'" {
group ip address."; description
"When test point location type is equal to
group ip address.";
} }
container test-point-group-ip-address-location-list { container test-point-group-ip-address-location-list {
list test-point-locations { list test-point-locations {
key "group-ip-address-location"; key "group-ip-address-location";
leaf group-ip-address-location { leaf group-ip-address-location {
type IP-Multicast-Group-Address; type IP-Multicast-Group-Address;
description description
"Group IP address."; "Group IP address.";
} }
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance"; corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container for
test point location list.";
} }
} }
case group-as-number-location-type { case group-as-number-location-type {
when "'tp-address-type-value' = 'as-number-address-type'" { when "'tp-location-type-value' = "
description "when test point address is equal to +"'as-number-address-type'" {
as-number."; description
"When test point location type is equal to
as-number.";
} }
container test-point-as-number-location-list { container test-point-as-number-location-list {
list test-point-locations { list test-point-locations {
key "as-number-location"; key "as-number-location";
leaf as-number-location { leaf as-number-location {
type inet:as-number; type inet:as-number;
description description
"AS number."; "AS number.";
} }
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance"; corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container
for test point location list.";
} }
} }
case group-lsp-id-location-type { case group-lsp-id-location-type {
when "'tp-address-type-value' = 'lsp-id-address-type'" { when "'tp-location-type-value' = "
description "when test point address is equal to lspid."; +"'lsp-id-address-type'" {
description
"When test point location
type is equal to lspid.";
} }
container test-point-lsp-id-location-list { container test-point-lsp-id-location-list {
list test-point-locations { list test-point-locations {
key "lsp-id-location"; key "lsp-id-location";
leaf lsp-id-location { leaf lsp-id-location {
type string; type string;
description description
"LSP Id."; "LSP Id.";
} }
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance";
corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container for
test point location list.";
} }
} }
case group-system-id-location-type { case group-system-id-location-type {
when "'tp-address-type-value' = 'system-id-address-type'" { when "'tp-location-type-value' = "
description "when test point address is equal to +"'system-id-address-type'" {
system info."; description
"When test point location is equal to
system info.";
} }
container test-point-system-info-location-list { container test-point-system-info-location-list {
list test-point-locations { list test-point-locations {
key "system-id-location"; key "system-id-location";
leaf system-id-location { leaf system-id-location {
type inet:uri; type inet:uri;
description description
"System Id."; "System Id.";
} }
leaf vrf { leaf vrf {
type routing-instance-ref; type routing-instance-ref;
description description
"The vrf is used to describe the "The vrf is used to describe the
corresponding network instance"; corresponding network instance";
} }
uses test-point-location-info; uses test-point-location-info;
ordered-by user; ordered-by user;
description description
"list of test point locations."; "List of test point locations.";
} }
description description
"Serves as top-level container for test point location list."; "Serves as top-level container for
test point location list.";
} }
} }
description description
"Choice of address types."; "Choice of address types.";
} }
} }
augment "/nd:networks/nd:network/nd:node"{ augment "/nd:networks/nd:network/nd:node"{
description description
"Augment test points of connectionless oam."; "Augment test points of connectionless oam.";
uses test-point-locations; uses test-point-locations;
} }
grouping path-discovery-data { grouping path-discovery-data {
description "Path discovery related data output from nodes."; description
"Path discovery related data output from nodes.";
container src-test-point { container src-test-point {
description "Source test point."; description "Source test point.";
uses tp-address-vrf; uses tp-address-vrf;
} }
container dest-test-point { container dest-test-point {
description "Destination test point."; description "Destination test point.";
uses tp-address-vrf; uses tp-address-vrf;
} }
leaf sequence-number { leaf sequence-number {
type uint64; type uint64;
description "Sequence number in data packets."; description "Sequence number in data packets.";
} }
leaf hop-cnt { leaf hop-cnt {
type uint8; type uint8;
description "hop count."; description "Hop count.";
} }
uses session-packet-statistics; uses session-packet-statistics;
uses session-error-statistics; uses session-error-statistics;
uses session-delay-statistics; uses session-delay-statistics;
uses session-jitter-statistics; uses session-jitter-statistics;
container path-verification { container path-verification {
description "Optional path verification related information."; description
"Optional path verification related information.";
leaf flow-info { leaf flow-info {
type string; type string;
description description
"ACL name that refers to the flow, if any."; "Informations that refers to the flow.";
} }
uses session-path-verification-statistics; uses session-path-verification-statistics;
} }
container path-trace-info { container path-trace-info {
description "Optional path trace per-hop test point information. description
The list has typically a single element for per-hop "Optional path trace per-hop test point information.
cases like path-discovery RPC but allows a list of The list has typically a single element for per-hop
hop related information for other types of cases like path-discovery RPC but allows a list of
data retrieval methods."; hop related information for other types of
data retrieval methods.";
list path-trace-info-list { list path-trace-info-list {
key "index"; key "index";
description description
"Path trace information list."; "Path trace information list.";
leaf index { leaf index {
type uint32; type uint32;
description
description "Trace information index."; "Trace information index.";
} }
uses tp-address-vrf; uses tp-address-vrf;
leaf timestamp-val { leaf timestamp-sec {
type yang:date-and-time; type uint64;
description "Timestamp value"; description
"Absolute timestamp in
seconds as per IEEE1588v2.";
}
leaf timestamp-nanosec {
type uint32;
description
"Fractional part in
nanoseconds as per IEEE1588v2.";
} }
leaf ingress-intf-name { leaf ingress-intf-name {
type if:interface-ref; type if:interface-ref;
description description
"Ingress interface name"; "Ingress interface name";
} }
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 app-meta-data { leaf queue-depth {
type uint32; type uint32;
description description
"Application specific data added by node."; "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.";
}
uses opaque-tlvs;
} }
} }
} }
grouping continuity-check-data { grouping continuity-check-data {
description "Continuity check data output from nodes."; description
"Continuity check data output from nodes.";
container src-test-point { container src-test-point {
description "Source test point."; description "Source test point.";
uses tp-address-vrf; 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";
} }
} }
container dest-test-point { container dest-test-point {
description "Destination test point."; description
"Destination test point.";
uses tp-address-vrf; uses tp-address-vrf;
leaf ingress-intf-name { leaf ingress-intf-name {
type if:interface-ref; type if:interface-ref;
description description
"Ingress interface name"; "Ingress interface name";
} }
} }
leaf sequence-number { leaf sequence-number {
type uint64; type uint64;
description "Sequence number."; description "Sequence number.";
} }
leaf hop-cnt { leaf hop-cnt {
type uint8; type uint8;
description "hop count."; description "Hop count.";
} }
uses session-packet-statistics; uses session-packet-statistics;
uses session-error-statistics; uses session-error-statistics;
uses session-delay-statistics; uses session-delay-statistics;
uses session-jitter-statistics; uses session-jitter-statistics;
} }
container oper { container cc-oper-data {
if-feature continuity-check; if-feature continuity-check;
config "false"; config "false";
description "cc operational information."; description "CC operational information.";
container cc-ipv4-sessions-statistics { container cc-ipv4-sessions-statistics {
description "cc ipv4 sessions"; description "CC ipv4 sessions";
uses cc-session-statsitics; uses cc-session-statsitics;
} }
container cc-ipv6-sessions-statistics { container cc-ipv6-sessions-statistics {
description "cc ipv6 sessions"; description "CC ipv6 sessions";
uses cc-session-statsitics; uses cc-session-statsitics;
} }
} }
} }
YANG module of OAM
<CODE ENDS> <CODE ENDS>
5. CL 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
points of the base model, so as to develop a technology-specific points of the base model, so as to develop a technology-specific
connectionless OAM model. connectionless OAM model.
This section demonstrates the usability of the connectionless YANG This section demonstrates the usability of the connectionless YANG
OAM data model to various connectionless OAM technologies, e.g., BFD, OAM data model to various connectionless OAM technologies, e.g., BFD,
LSP ping. Note that, in this section, we only present several LSP ping. Note that, in this section, we only present several
skipping to change at page 47, line 20 skipping to change at page 48, line 11
can be extended to cover BFD technology. For this purpose, a set of can be extended to cover BFD technology. For this purpose, a set of
extension are introduced such as technology-type extension and test- extension are introduced such as technology-type extension and test-
point attributes extension. point attributes extension.
Note that in BFD WG, there is a BFD yang data model Note that in BFD WG, there is a BFD yang data model
[I-D.ietf-bfd-yang] to be produced. Users can choose to use "ietf- [I-D.ietf-bfd-yang] to be produced. Users can choose to use "ietf-
connectioless-oam" as basis and augment the "ietf-connectionless-oam" connectioless-oam" as basis and augment the "ietf-connectionless-oam"
model with bfd specific details. The bfd specific details can be the model with bfd specific details. The bfd specific details can be the
grouping defined in the BFD model. grouping defined in the BFD model.
5.1.1.1. technology type extension 5.1.1.1. Technology type extension
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
extended and add bfd specific parameters under "test-point-location" extended and add bfd specific parameters under "test-point-location"
list and/or add new location type such as "bfd over MPLS-TE" under list and/or add new location type such as "bfd over MPLS-TE" under
"location-type". "location-type".
5.1.1.2.1. Define and insert new nodes into corresponding test-point- 5.1.1.2.1. Define and insert new nodes into corresponding test-point-
location location
In the "ietf-connectionless-oam" model, multiple "test-point- In the "ietf-connectionless-oam" model, multiple "test-point-
skipping to change at page 49, line 31 skipping to change at page 50, line 28
} }
} }
} }
Similar augmentations can be defined to support other BFD Similar augmentations can be defined to support other BFD
technologies such as BFD over LAG, etc. technologies such as BFD over LAG, etc.
5.1.2. Schema Mount 5.1.2. Schema Mount
And anohter alternative method is using schema mount mechanism And anohter alternative method is using schema mount mechanism
[draft-ietf-netmod-schema-mount] in the "ietf-connectionless-oam". [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam".
Within the "test-point-location" list, a "root" attribute is defined Within the "test-point-location" list, a "root" attribute is defined
to provide a mounted point for models mounted per "test-point- to provide a mounted point for models mounted per "test-point-
location". Therefore, the "ietf-connectionless-oam" model can location". Therefore, the "ietf-connectionless-oam" model can
provide a place in the node hierarchy where other OAM YANG data provide a place in the node hierarchy where other OAM YANG data
models can be attached, without any special extension in the "ietf- models can be attached, without any special extension in the "ietf-
connectionless-oam" YANG data models [draft-ietf-netmod-schema- connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount].
mount]. Note that the limitation of the Schema Mount method is it is Note that the limitation of the Schema Mount method is it is not
not allowed to specify certain modules that are required to be allowed to specify certain modules that are required to be mounted
mounted under a mount point. under a mount point.
The snippet below depicts the definition of "root" attribute. The snippet below depicts the definition of "root" attribute.
anydata root { anydata root {
yangmnt:mount-point root; yangmnt:mount-point root;
description description
"Root for models supported per "Root for models supported per
test point"; test point";
} }
skipping to change at page 51, line 5 skipping to change at page 52, line 5
<namespace> <namespace>
urn:ietf:params:xml:ns:yang: ietf-bfd-ip-mh urn:ietf:params:xml:ns:yang: ietf-bfd-ip-mh
</namespace> </namespace>
<conformance-type>implement</conformance-type> <conformance-type>implement</conformance-type>
</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 uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"> <ietf-connectionless-oam
...... uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam">
<test-point-locations> ......
<ipv4-location> 1.1.1.1</ipv4-location> <test-point-locations>
...... <ipv4-location> 1.1.1.1</ipv4-location>
<root> ......
<ietf-bfd-ip-sh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"> <root>
<ip-sh> <ietf-bfd-ip-sh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh">
foo <ip-sh>
...... foo
</ip-sh> ......
</ietf-bfd-ip-sh> </ip-sh>
<ietf-bfd-ip-mh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"> </ietf-bfd-ip-sh>
<ip-mh> <ietf-bfd-ip-mh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh">
foo <ip-mh>
...... foo
</ip-mh> ......
</ietf-bfd-ip-mh> </ip-mh>
</root> </ietf-bfd-ip-mh>
</test-point-locations> </root>
</ietf-connectionless-oam> </test-point-locations>
</ietf-connectionless-oam>
5.2. LSP ping extension 5.2. LSP ping extension
The following sections shows how the "ietf-connectionless-oam" model The following sections shows how the "ietf-connectionless-oam" model
can be extended to support LSP ping technology. For this purpose, a can be extended to support LSP ping technology. For this purpose, a
set of extension are introduced such as technology-type extension and set of extension are introduced such as technology-type extension and
test-point attributes extension. test-point attributes extension.
Note that in MPLS WG, there is a LSP Ping yang data model Note that in MPLS WG, there is a LSP Ping yang data model
[I-D.draft-zheng-mpls-lsp-ping-yang-cfg] to be produced. Users can [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] to be produced. Users can
choose to use "ietf-connectioless-oam" as basis and augment the choose to use "ietf-connectioless-oam" as basis and augment the
"ietf-connectionless-oam" model with LSP Ping specific details in the "ietf-connectionless-oam" model with LSP Ping specific details in the
model extension. The LSP Ping specific details can be the grouping model extension. The LSP Ping specific details can be the grouping
defined in the LSP ping model. defined in the LSP ping model.
5.2.1. technology type extension 5.2.1. Technology type extension
No lsp-ping technology type has been defined in the "ietf- No lsp-ping technology type has been defined in the "ietf-
connectionless-oam" model. Therefore a technology type extension is connectionless-oam" model. Therefore a technology type extension is
required in the model extension. required in the model extension.
The snippet below depicts an example of augmenting the "ietf- The snippet below depicts an example of augmenting the "ietf-
connectionless-oam" with "lsp-ping" type: connectionless-oam" with "lsp-ping" type:
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 lsp-ping{ leaf lsp-ping{
type string; type string;
} }
} }
5.2.2. test point attributes extension 5.2.2. Test point attributes extension
To support lsp-ping, the "ietf-connectionless-oam" model can be To support lsp-ping, the "ietf-connectionless-oam" model can be
extended and add lsp-ping specific parameters can be defined and extended and add lsp-ping specific parameters can be defined and
under "test-point-location" list. under "test-point-location" list.
User can reuse the attributes or groupings which are defined in User can reuse the attributes or groupings which are defined in
[I-D.draft-zheng-mpls-lsp-ping-yang-cfg] as follows: [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] as follows:
The snippet below depicts an example of augmenting the "test-point- The snippet below depicts an example of augmenting the "test-point-
locations" list with lsp ping attributes: locations" list with lsp ping attributes:
skipping to change at page 52, line 46 skipping to change at page 53, line 46
type string { type string {
length "1..31"; length "1..31";
} }
mandatory "true"; mandatory "true";
description "LSP Ping test name."; description "LSP Ping test name.";
...... ......
} }
6. Security Considerations 6. Security Considerations
TBD. The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the
secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242]. The NETCONF access control model
[RFC6536] provides the means to restrict access for particular
NETCONF users to a pre-configured subset of all available NETCONF
protocol operations and content.
There are a number of data nodes defined in the YANG module which are
writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g. <edit-config>)
to these data nodes without proper protection can have a negative
effect on network operations.
The vulnerable "config true" subtrees and data nodes are the
following:
/nd:networks/nd:network/nd:node/coam:location-type/coam:ipv4-
location-type/coam:test-point-ipv4-location-list/coam:test-point-
locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:ipv6-
location-type/coam:test-point-ipv6-location-list/coam:test-point-
locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:mac-location-
type/coam:test-point-mac-address-location-list/coam:test-point-
locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:tunnel-
location-type/coam:test-point-tunnel-address-location-list/coam:test-
point-locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:ip-prefix-
location-type/coam:test-point-ip-prefix-location-list/coam:test-
point-locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:route-
distinguisher-location-type/coam:test-point-route-dist-location-list/
coam:test-point-locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:group-ip-
address-location-type/coam:test-point-group-ip-address-location-list/
coam:test-point-locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:group-as-
number-location-type/coam:test-point-as-number-location-list/
coam:test-point-locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:group-lsp-id-
location-type/coam:test-point-lsp-id-location-list/coam:test-point-
locations/
/nd:networks/nd:network/nd:node/coam:location-type/coam:group-system-
id-location-type/coam:test-point-system-info-location-list/coam:test-
point-locations/
Unauthorized access to any of these lists can adversely affect OAM
management system handling of end-to-end OAM and coordination of OAM
within underlying network layers. This may lead to inconsistent
configuration, reporting, and presentation for the OAM mechanisms
used to manage the network.
7. IANA Considerations 7. IANA Considerations
This document registers a URI in the IETF XML registry [RFC3688] This document registers a URI in the IETF XML registry [RFC3688].
[RFC3688]. Following the format in RFC 3688, the following Following the format in [RFC3688] the following registration is
registration is requested to be made: requested to be made:
URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam
Registrant Contact: The IESG. Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
This document registers a YANG module in the YANG Module Names This document registers a YANG module in the YANG Module Names
registry [RFC6020]. registry [RFC6020].
name: ietf-connectionless-oam namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam name: ietf-connectionless-oam
prefix: goam reference: RFC XXXX
namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam
prefix: coam
reference: RFC XXXX
8. Acknowlegements 8. Acknowlegements
The authors of this document would like to thank Greg Mirskey 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 stablize document. improve and stabilize document.
9. Normative References 9. References
[I-D.draft-ietf-i2rs-yang-network-topo] 9.1. Normative References
Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N.,
Ananthakrishnan, H., and X. Liu, "A YANG Data Model for
Network Topologies", I-D draft-ietf-i2rs-yang-network-
topo-05, July 2016.
[I-D.draft-zheng-mpls-lsp-ping-yang-cfg] [I-D.draft-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", I-D draft-zheng- Rahman, "Yang Data Model for LSP-PING", I-D draft-zheng-
mpls-lsp-ping-yang-cfg-03, March 2016. mpls-lsp-ping-yang-cfg, March 2016.
[I-D.ietf-bfd-yang] [I-D.ietf-bfd-yang]
Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and
G. Mirsky, "Yang Data Model for Bidirectional Forwarding G. Mirsky, "Yang Data Model for Bidirectional Forwarding
Detection (BFD)", draft-ietf-bfd-yang-03 (work in Detection (BFD)", draft-ietf-bfd-yang-04 (work in
progress), July 2016. progress), January 2017.
[I-D.ietf-i2rs-yang-network-topo]
Clemm, A., Medved, J., Varga, R., Bahadur, N.,
Ananthakrishnan, H., and X. Liu, "A Data Model for Network
Topologies", draft-ietf-i2rs-yang-network-topo-11 (work in
progress), February 2017.
[I-D.ietf-lime-yang-connectionless-oam-methods]
Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan,
"Retrieval Methods YANG Data Model for Connectionless
Operations, Administration, and Maintenance(OAM)
protocols", draft-ietf-lime-yang-connectionless-oam-
methods-00 (work in progress), October 2016.
[I-D.ietf-lime-yang-oam-model]
Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model
for Connection Oriented Operations, Administration, and
Maintenance(OAM) protocols", draft-ietf-lime-yang-oam-
model-08 (work in progress), December 2016.
[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-03 (work in progress), October ietf-netmod-schema-mount-03 (work in progress), October
2016. 2016.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<http://www.rfc-editor.org/info/rfc3688>.
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet
Control Message Protocol (ICMPv6) for the Internet
Protocol Version 6 (IPv6) Specification", RFC 4443,
DOI 10.17487/RFC4443, March 2006,
<http://www.rfc-editor.org/info/rfc4443>.
[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, DOI 10.17487/RFC6020, October 2010,
<http://www.rfc-editor.org/info/rfc6020>. <http://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,
<http://www.rfc-editor.org/info/rfc6241>. <http://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,
<http://www.rfc-editor.org/info/rfc6242>. <http://www.rfc-editor.org/info/rfc6242>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536,
DOI 10.17487/RFC6536, March 2012,
<http://www.rfc-editor.org/info/rfc6536>.
[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
[G.8013] "OAM functions and mechanisms for Ethernet based
networks", ITU-T Recommendation G.8013/Y.1731, 2013.
[I-D.ietf-spring-sr-yang]
Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG
Data Model for Segment Routing", draft-ietf-spring-sr-
yang-05 (work in progress), October 2016.
[RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual
Private Network (L2VPN) Operations, Administration, and
Maintenance (OAM) Requirements and Framework", RFC 6136,
DOI 10.17487/RFC6136, March 2011,
<http://www.rfc-editor.org/info/rfc6136>.
[RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y.
Weingarten, "An Overview of Operations, Administration,
and Maintenance (OAM) Tools", RFC 7276,
DOI 10.17487/RFC7276, June 2014,
<http://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. 368 change blocks. 
704 lines changed or deleted 884 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/