< draft-ietf-lime-yang-connectionless-oam-02.txt   draft-ietf-lime-yang-connectionless-oam-03.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: May 4, 2017 Q. Wu Expires: June 26, 2017 Q. Wu
Huawei Huawei
R. Rahman R. Rahman
S. Raghavan S. Raghavan
Cisco Cisco
October 31, 2016 December 23, 2016
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-02 draft-ietf-lime-yang-connectionless-oam-03
Abstract Abstract
This document presents a base YANG Data model for connectionless OAM This document presents a base YANG Data model for connectionless OAM
protocols. It provides a technology-independent abstraction of key protocols. It provides a technology-independent abstraction of key
OAM constructs for connectionless protocols. The Based model OAM constructs for connectionless protocols. The Based model
presented here can be extended to include technology specific presented here can be extended to include technology specific
details. This is leading to uniformity between OAM protocols and details. This is leading to uniformity between OAM protocols and
support nested OAM workflows (i.e., performing OAM functions at support nested OAM workflows (i.e., performing OAM functions at
different or same levels through a unified interface). different or same levels through a unified interface).
skipping to change at page 1, line 42 skipping to change at page 1, line 42
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 May 4, 2017. This Internet-Draft will expire on June 26, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 30 skipping to change at page 2, line 30
2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4
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 . . . . . . . . . . . . . . . . . . . . . . . 16 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 17
5. CL model applicability . . . . . . . . . . . . . . . . . . . 43 5. CL model applicability . . . . . . . . . . . . . . . . . . . 46
5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 44 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 47
5.1.1. technology type extension . . . . . . . . . . . . . . 44 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 47
5.1.2. test point attributes extension . . . . . . . . . . . 44 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 49
5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 46 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 51
5.2.1. technology type extension . . . . . . . . . . . . . . 47 5.2.1. technology type extension . . . . . . . . . . . . . . 51
5.2.2. test point attributes extension . . . . . . . . . . . 47 5.2.2. test point attributes extension . . . . . . . . . . . 52
6. Security Considerations . . . . . . . . . . . . . . . . . . . 48 6. Security Considerations . . . . . . . . . . . . . . . . . . . 52
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52
8. Normative References . . . . . . . . . . . . . . . . . . . . 49 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 53
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 9. Normative References . . . . . . . . . . . . . . . . . . . . 53
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 54
1. Introduction 1. Introduction
Operations, Administration, and Maintenance (OAM) are important Operations, Administration, and Maintenance (OAM) are important
networking functions that allow operators to: networking functions that allow operators to:
1. Monitor networks connections (Reachability Verification, 1. Monitor networks connections (Reachability Verification,
Continuity Check). Continuity Check).
2. Troubleshoot failures (Fault verification and localization). 2. Troubleshoot failures (Fault verification and localization).
skipping to change at page 6, line 11 skipping to change at page 6, line 11
o FEC o FEC
o System-id to represent the device or node. o System-id to represent the device or node.
3.2. Tools 3.2. Tools
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 for performance
measurement. And it can serve as a constraint condition when the measurement. And it can serve as a constraint condition when the
base model be extended to specific OAM technology. For example, to base model be extended to specific OAM technology. For example, to
fulfill the icmp ping configuration, the "../coam:tools-ip/ fulfill the icmp ping configuration, the "../coam:continuity-check"
coam:rfc792" should be set to "true", and then the lime base model should be set to "true", and then the lime base model should be
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 has its
own OAM protocols [RFC7276] and is corresponding to specific network own OAM protocols [RFC7276] and is corresponding to specific network
portion or pathand has associated test points. OAM-layers is portion or path and has associated test points. OAM-layers is
referred to a list of upper layer, lower layer that are related to 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 allow users to easily navigate up and down
to efficiently troubleshoot a connectivity issue at different layer. to efficiently troubleshoot a connectivity issue at different layer.
In this model, we have kept level default as 0, when all test points In this model, we have kept level default as 0, when all test points
are located at the same layer. Level is provided for scenarios where are located at the same layer. Level is provided for scenarios where
it might be possible to define layering relationship as it can be it might be possible to define layering relationship as it can be
used to stitching fault at related oam layers. For example, there is used to stitching fault at related OAM layers. For example, there is
a network in which data traffic between two customer edges is a network in which data traffic between two customer edges is
transported over three consecutive network portions, the current test transported over three consecutive network portions, the current test
point is located in the second network portion. If there is a defect point is located in the second network portion. If there is a defect
in the first network portion is located at the upstream of the second in the first network portion is located at the upstream of the second
network portion, the level of the first network portion is set to network portion, the level of the first network portion is set to
"-1". If the third network portion is located at the downstream of "-1". If the third network portion is located at the downstream of
the second network portion and the level is set to "1". In another the second network portion and the level is set to "1". In another
case, if the first network portion and the third network portion is case, if the first network portion and the third network portion is
in the same level of thesecond network portion, the level is set to in the same level of thesecond network portion, the level is set to
"0". The snippet below depicts an example of OAM layers. "0". The snippet below depicts an example of OAM layers.
skipping to change at page 8, line 22 skipping to change at page 8, line 22
enough to allow active, passive and hybrid OAMs to do the retrieval. enough to allow active, passive and hybrid OAMs to do the retrieval.
None of the fields are made mandatory for that reason. Noted that None of the fields are made mandatory for that reason. Noted that
the retrieval methods are defined in [lime retrieval methods]. the retrieval methods are defined in [lime retrieval 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 oper {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-address-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
| +--ro (tools)? | +--rw tp-tools
| | +--:(tools-empty) | | +--rw connectivity-verification? boolean
| | | +--ro tools-null? empty | | +--rw continuity-check? boolean
| | +--:(tools-ip) | | +--rw path-discovery? boolean
| | | +--ro rfc792? boolean | +--rw root?
| | | +--ro rfc4443? boolean | +--rw oam-layers* [index]
| | | +--ro rfc4884? boolean | +--rw index uint16
| | | +--ro rfc5837? boolean | +--rw level? int32
| | +--:(tools-bfd) | +--rw (tp-address)?
| | | +--ro rfc5881? boolean | +--:(mac-address)
| | | +--ro rfc5883? boolean | | +--rw mac-address-location? yang:mac-address
| | | +--ro rfc5884? boolean | +--:(ipv4-address)
| | | +--ro rfc5885? boolean | | +--rw ipv4-location? inet:ipv4-address
| | +--:(tools-mpls) | +--:(ipv6-location)
| | | +--ro rfc4379? boolean | | +--rw ipv6-address? inet:ipv6-address
| | | +--ro rfc4687? boolean | +--:(tunnel-location)
| | | +--ro rfc4950? boolean | | +--rw tunnel-location? uint32
| | | +--ro mpls-rfc5884? boolean | +--:(ip-prefix-location)
| | +--:(tools-pw) | | +--rw ip-prefix-location? inet:ip-prefix
| | +--ro rfc5085? boolean | +--:(route-dist-location)
| | +--ro pw_rfc5885? boolean | | +--rw route-dist-location? uint32
| | +--ro rfc6423? boolean | +--:(group-ip-address-location)
| | +--ro rfc6310? boolean | | +--rw group-ip-address-location? IP-Multicast-Group-Address
| | +--ro rfc7023? boolean | +--:(as-number-location)
| +--rw oam-layers* [index] | | +--rw as-number-location? inet:as-number
| +--rw index uint16 | +--:(lsp-id-location)
| +--rw level? int32 | | +--rw lsp-id-location? string
+--:(ipv6-location-type) | +--:(system-id-location)
| +--rw test-point-ipv6-location-list | | +--rw system-id-location? inet:uri
| +--rw test-point-locations* [ipv6-location] | +--:(connection-oriented-location)
| +--rw ipv6-location inet:ipv6-address | +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw vrf? routing-instance-ref | +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw (technology)? | +--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
| | +--:(technology-null) +--:(ipv6-location-type)
| | | +--rw tech-null? empty | +--rw test-point-ipv6-location-list
| | +--:(technology-string) | +--rw test-point-locations* [ipv6-location]
| | +--rw ipv4-icmp? string | +--rw ipv6-location inet:ipv6-address
| +--ro (tools)? | +--rw vrf? routing-instance-ref
| | +--:(tools-empty) | +--rw (technology)?
| | | +--ro tools-null? empty | | +--:(technology-null)
| | +--:(tools-ip) | | | +--rw tech-null? empty
| | | +--ro rfc792? boolean | | +--:(technology-string)
| | | +--ro rfc4443? boolean | | +--rw ipv4-icmp? string
| | | +--ro rfc4884? boolean | +--rw tp-tools
| | | +--ro rfc5837? boolean | | +--rw connectivity-verification? boolean
| | +--:(tools-bfd) | | +--rw continuity-check? boolean
| | | +--ro rfc5881? boolean | | +--rw path-discovery? boolean
| | | +--ro rfc5883? boolean | +--rw root?
| | | +--ro rfc5884? boolean | +--rw oam-layers* [index]
| | | +--ro rfc5885? boolean | +--rw index uint16
| | +--:(tools-mpls) | +--rw level? int32
| | | +--ro rfc4379? boolean | +--rw (tp-address)?
| | | +--ro rfc4687? boolean | +--:(mac-address)
| | | +--ro rfc4950? boolean | | +--rw mac-address-location? yang:mac-address
| | | +--ro mpls-rfc5884? boolean | +--:(ipv4-address)
| | +--:(tools-pw) | | +--rw ipv4-location? inet:ipv4-address
| | +--ro rfc5085? boolean | +--:(ipv6-location)
| | +--ro pw_rfc5885? boolean | | +--rw ipv6-address? inet:ipv6-address
| | +--ro rfc6423? boolean | +--:(tunnel-location)
| | +--ro rfc6310? boolean | | +--rw tunnel-location? uint32
| | +--ro rfc7023? boolean | +--:(ip-prefix-location)
| +--rw oam-layers* [index] | | +--rw ip-prefix-location? inet:ip-prefix
| +--rw index uint16 | +--:(route-dist-location)
| +--rw level? int32 | | +--rw route-dist-location? uint32
+--:(mac-location-type) | +--:(group-ip-address-location)
| +--rw test-point-mac-address-location-list | | +--rw group-ip-address-location? IP-Multicast-Group-Address
| +--rw test-point-locations* [mac-address-location] | +--:(as-number-location)
| +--rw mac-address-location yang:mac-address | | +--rw as-number-location? inet:as-number
| +--rw (technology)? | +--:(lsp-id-location)
| | +--:(technology-null) | | +--rw lsp-id-location? string
| | | +--rw tech-null? empty | +--:(system-id-location)
| | +--:(technology-string) | | +--rw system-id-location? inet:uri
| | +--rw ipv4-icmp? string | +--:(connection-oriented-location)
| +--ro (tools)? | +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| | +--:(tools-empty) | +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| | | +--ro tools-null? empty | +--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
| | +--:(tools-ip) +--:(mac-location-type)
| | | +--ro rfc792? boolean | +--rw test-point-mac-address-location-list
| | | +--ro rfc4443? boolean | +--rw test-point-locations* [mac-address-location]
| | | +--ro rfc4884? boolean | +--rw mac-address-location yang:mac-address
| | | +--ro rfc5837? boolean | +--rw (technology)?
| | +--:(tools-bfd) | | +--:(technology-null)
| | | +--ro rfc5881? boolean | | | +--rw tech-null? empty
| | | +--ro rfc5883? boolean | | +--:(technology-string)
| | | +--ro rfc5884? boolean | | +--rw ipv4-icmp? string
| | | +--ro rfc5885? boolean | +--rw tp-tools
| | +--:(tools-mpls) | | +--rw connectivity-verification? boolean
| | | +--ro rfc4379? boolean | | +--rw continuity-check? boolean
| | | +--ro rfc4687? boolean | | +--rw path-discovery? boolean
| | | +--ro rfc4950? boolean | +--rw root?
| | | +--ro mpls-rfc5884? boolean | +--rw oam-layers* [index]
| | +--:(tools-pw) | +--rw index uint16
| | +--ro rfc5085? boolean | +--rw level? int32
| | +--ro pw_rfc5885? boolean | +--rw (tp-address)?
| | +--ro rfc6423? boolean | +--:(mac-address)
| | +--ro rfc6310? boolean | | +--rw mac-address-location? yang:mac-address
| | +--ro rfc7023? boolean | +--:(ipv4-address)
| +--rw oam-layers* [index] | | +--rw ipv4-location? inet:ipv4-address
| +--rw index uint16 | +--:(ipv6-location)
| +--rw level? int32 | | +--rw ipv6-address? inet:ipv6-address
+--:(tunnel-location-type) | +--:(tunnel-location)
| +--rw test-point-tunnel-address-location-list | | +--rw tunnel-location? uint32
| +--rw test-point-locations* [tunnel-location] | +--:(ip-prefix-location)
| +--rw tunnel-location uint32 | | +--rw ip-prefix-location? inet:ip-prefix
| +--rw vrf? routing-instance-ref | +--:(route-dist-location)
| +--rw (technology)? | | +--rw route-dist-location? uint32
| | +--:(technology-null) | +--:(group-ip-address-location)
| | | +--rw tech-null? empty | | +--rw group-ip-address-location? IP-Multicast-Group-Address
| | +--:(technology-string) | +--:(as-number-location)
| | +--rw ipv4-icmp? string | | +--rw as-number-location? inet:as-number
| +--ro (tools)? | +--:(lsp-id-location)
| | +--:(tools-empty) | | +--rw lsp-id-location? string
| | | +--ro tools-null? empty | +--:(system-id-location)
| | +--:(tools-ip) | | +--rw system-id-location? inet:uri
| | | +--ro rfc792? boolean | +--:(connection-oriented-location)
| | | +--ro rfc4443? boolean | +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| | | +--ro rfc4884? boolean | +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| | | +--ro rfc5837? boolean | +--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
| | +--:(tools-bfd) +--:(tunnel-location-type)
| | | +--ro rfc5881? boolean | +--rw test-point-tunnel-address-location-list
| | | +--ro rfc5883? boolean | +--rw test-point-locations* [tunnel-location]
| | | +--ro rfc5884? boolean | +--rw tunnel-location uint32
| | | +--ro rfc5885? boolean | +--rw vrf? routing-instance-ref
| | +--:(tools-mpls) | +--rw (technology)?
| | | +--ro rfc4379? boolean | | +--:(technology-null)
| | | +--ro rfc4687? boolean | | | +--rw tech-null? empty
| | | +--ro rfc4950? boolean | | +--:(technology-string)
| | | +--ro mpls-rfc5884? boolean | | +--rw ipv4-icmp? string
| | +--:(tools-pw) | +--rw tp-tools
| | +--ro rfc5085? boolean | | +--rw connectivity-verification? boolean
| | +--ro pw_rfc5885? boolean | | +--rw continuity-check? boolean
| | +--ro rfc6423? boolean | | +--rw path-discovery? boolean
| | +--ro rfc6310? boolean | +--rw root?
| | +--ro rfc7023? boolean | +--rw oam-layers* [index]
| +--rw oam-layers* [index] | +--rw index uint16
| +--rw index uint16 | +--rw level? int32
| +--rw level? int32 | +--rw (tp-address)?
+--:(ip-prefix-location-type) | +--:(mac-address)
| +--rw test-point-ip-prefix-location-list | | +--rw mac-address-location? yang:mac-address
| +--rw test-point-locations* [ip-prefix-location] | +--:(ipv4-address)
| +--rw ip-prefix-location inet:ip-prefix | | +--rw ipv4-location? inet:ipv4-address
| +--rw vrf? routing-instance-ref | +--:(ipv6-location)
| +--rw (technology)? | | +--rw ipv6-address? inet:ipv6-address
| | +--:(technology-null) | +--:(tunnel-location)
| | | +--rw tech-null? empty | | +--rw tunnel-location? uint32
| | +--:(technology-string) | +--:(ip-prefix-location)
| | +--rw ipv4-icmp? string | | +--rw ip-prefix-location? inet:ip-prefix
| +--ro (tools)? | +--:(route-dist-location)
| | +--:(tools-empty) | | +--rw route-dist-location? uint32
| | | +--ro tools-null? empty | +--:(group-ip-address-location)
| | +--:(tools-ip) | | +--rw group-ip-address-location? IP-Multicast-Group-Address
| | | +--ro rfc792? boolean | +--:(as-number-location)
| | | +--ro rfc4443? boolean | | +--rw as-number-location? inet:as-number
| | | +--ro rfc4884? boolean | +--:(lsp-id-location)
| | | +--ro rfc5837? boolean | | +--rw lsp-id-location? string
| | +--:(tools-bfd) | +--:(system-id-location)
| | | +--ro rfc5881? boolean | | +--rw system-id-location? inet:uri
| | | +--ro rfc5883? boolean | +--:(connection-oriented-location)
| | | +--ro rfc5884? boolean | +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| | | +--ro rfc5885? boolean | +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| | +--:(tools-mpls) | +--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
| | | +--ro rfc4379? boolean +--:(ip-prefix-location-type)
| | | +--ro rfc4687? boolean | +--rw test-point-ip-prefix-location-list
| | | +--ro rfc4950? boolean | +--rw test-point-locations* [ip-prefix-location]
| | | +--ro mpls-rfc5884? boolean | +--rw ip-prefix-location inet:ip-prefix
| | +--:(tools-pw) | +--rw vrf? routing-instance-ref
| | +--ro rfc5085? boolean | +--rw (technology)?
| | +--ro pw_rfc5885? boolean | | +--:(technology-null)
| | +--ro rfc6423? boolean | | | +--rw tech-null? empty
| | +--ro rfc6310? boolean | | +--:(technology-string)
| | +--ro rfc7023? boolean | | +--rw ipv4-icmp? string
| +--rw oam-layers* [index] | +--rw tp-tools
| +--rw index uint16 | | +--rw connectivity-verification? boolean
| +--rw level? int32 | | +--rw continuity-check? boolean
+--:(route-distinguisher-location-type) | | +--rw path-discovery? boolean
| +--rw test-point-route-dist-location-list | +--rw root?
| +--rw test-point-locations* [route-dist-location] | +--rw oam-layers* [index]
| +--rw route-dist-location uint32 | +--rw index uint16
| +--rw vrf? routing-instance-ref | +--rw level? int32
| +--rw (technology)? | +--rw (tp-address)?
| | +--:(technology-null) | +--:(mac-address)
| | | +--rw tech-null? empty | | +--rw mac-address-location? yang:mac-address
| | +--:(technology-string) | +--:(ipv4-address)
| | +--rw ipv4-icmp? string | | +--rw ipv4-location? inet:ipv4-address
| +--ro (tools)? | +--:(ipv6-location)
| | +--:(tools-empty) | | +--rw ipv6-address? inet:ipv6-address
| | | +--ro tools-null? empty | +--:(tunnel-location)
| | +--:(tools-ip) | | +--rw tunnel-location? uint32
| | | +--ro rfc792? boolean | +--:(ip-prefix-location)
| | | +--ro rfc4443? boolean | | +--rw ip-prefix-location? inet:ip-prefix
| | | +--ro rfc4884? boolean | +--:(route-dist-location)
| | | +--ro rfc5837? boolean | | +--rw route-dist-location? uint32
| | +--:(tools-bfd) | +--:(group-ip-address-location)
| | | +--ro rfc5881? boolean | | +--rw group-ip-address-location? IP-Multicast-Group-Address
| | | +--ro rfc5883? boolean | +--:(as-number-location)
| | | +--ro rfc5884? boolean | | +--rw as-number-location? inet:as-number
| | | +--ro rfc5885? boolean | +--:(lsp-id-location)
| | +--:(tools-mpls) | | +--rw lsp-id-location? string
| | | +--ro rfc4379? boolean | +--:(system-id-location)
| | | +--ro rfc4687? boolean | | +--rw system-id-location? inet:uri
| | | +--ro rfc4950? boolean | +--:(connection-oriented-location)
| | | +--ro mpls-rfc5884? boolean | +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| | +--:(tools-pw) | +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| | +--ro rfc5085? boolean | +--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
| | +--ro pw_rfc5885? boolean +--:(route-distinguisher-location-type)
| | +--ro rfc6423? boolean | +--rw test-point-route-dist-location-list
| | +--ro rfc6310? boolean | +--rw test-point-locations* [route-dist-location]
| | +--ro rfc7023? boolean | +--rw route-dist-location uint32
| +--rw oam-layers* [index] | +--rw vrf? routing-instance-ref
| +--rw index uint16 | +--rw (technology)?
| +--rw level? int32 | | +--:(technology-null)
+--:(group-ip-address-location-type) | | | +--rw tech-null? empty
| +--rw test-point-group-ip-address-location-list | | +--:(technology-string)
| +--rw test-point-locations* [group-ip-address-location] | | +--rw ipv4-icmp? string
| +--rw group-ip-address-location IP-Multicast-Group-Address | +--rw tp-tools
| +--rw vrf? routing-instance-ref | | +--rw connectivity-verification? boolean
| +--rw (technology)? | | +--rw continuity-check? boolean
| | +--:(technology-null) | | +--rw path-discovery? boolean
| | | +--rw tech-null? empty | +--rw root?
| | +--:(technology-string) | +--rw oam-layers* [index]
| | +--rw ipv4-icmp? string | +--rw index uint16
| +--ro (tools)? | +--rw level? int32
| | +--:(tools-empty) | +--rw (tp-address)?
| | | +--ro tools-null? empty | +--:(mac-address)
| | +--:(tools-ip) | | +--rw mac-address-location? yang:mac-address
| | | +--ro rfc792? boolean | +--:(ipv4-address)
| | | +--ro rfc4443? boolean | | +--rw ipv4-location? inet:ipv4-address
| | | +--ro rfc4884? boolean | +--:(ipv6-location)
| | | +--ro rfc5837? boolean | | +--rw ipv6-address? inet:ipv6-address
| | +--:(tools-bfd) | +--:(tunnel-location)
| | | +--ro rfc5881? boolean | | +--rw tunnel-location? uint32
| | | +--ro rfc5883? boolean | +--:(ip-prefix-location)
| | | +--ro rfc5884? boolean | | +--rw ip-prefix-location? inet:ip-prefix
| | | +--ro rfc5885? boolean | +--:(route-dist-location)
| | +--:(tools-mpls) | | +--rw route-dist-location? uint32
| | | +--ro rfc4379? boolean | +--:(group-ip-address-location)
| | | +--ro rfc4687? boolean | | +--rw group-ip-address-location? IP-Multicast-Group-Address
| | | +--ro rfc4950? boolean | +--:(as-number-location)
| | | +--ro mpls-rfc5884? boolean | | +--rw as-number-location? inet:as-number
| | +--:(tools-pw) | +--:(lsp-id-location)
| | +--ro rfc5085? boolean | | +--rw lsp-id-location? string
| | +--ro pw_rfc5885? boolean | +--:(system-id-location)
| | +--ro rfc6423? boolean | | +--rw system-id-location? inet:uri
| | +--ro rfc6310? boolean | +--:(connection-oriented-location)
| | +--ro rfc7023? boolean | +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw oam-layers* [index] | +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw index uint16 | +--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
| +--rw level? int32 +--:(group-ip-address-location-type)
+--:(group-as-number-location-type) | +--rw test-point-group-ip-address-location-list
| +--rw test-point-as-number-location-list | +--rw test-point-locations* [group-ip-address-location]
| +--rw test-point-locations* [as-number-location] | +--rw group-ip-address-location IP-Multicast-Group-Address
| +--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
| +--ro (tools)? | | +--rw connectivity-verification? boolean
| | +--:(tools-empty) | | +--rw continuity-check? boolean
| | | +--ro tools-null? empty | | +--rw path-discovery? boolean
| | +--:(tools-ip) | +--rw root?
| | | +--ro rfc792? boolean | +--rw oam-layers* [index]
| | | +--ro rfc4443? boolean | +--rw index uint16
| | | +--ro rfc4884? boolean | +--rw level? int32
| | | +--ro rfc5837? boolean | +--rw (tp-address)?
| | +--:(tools-bfd) | +--:(mac-address)
| | | +--ro rfc5881? boolean | | +--rw mac-address-location? yang:mac-address
| | | +--ro rfc5883? boolean | +--:(ipv4-address)
| | | +--ro rfc5884? boolean | | +--rw ipv4-location? inet:ipv4-address
| | | +--ro rfc5885? boolean | +--:(ipv6-location)
| | +--:(tools-mpls) | | +--rw ipv6-address? inet:ipv6-address
| | | +--ro rfc4379? boolean | +--:(tunnel-location)
| | | +--ro rfc4687? boolean | | +--rw tunnel-location? uint32
| | | +--ro rfc4950? boolean | +--:(ip-prefix-location)
| | | +--ro mpls-rfc5884? boolean | | +--rw ip-prefix-location? inet:ip-prefix
| | +--:(tools-pw) | +--:(route-dist-location)
| | +--ro rfc5085? boolean | | +--rw route-dist-location? uint32
| | +--ro pw_rfc5885? boolean | +--:(group-ip-address-location)
| | +--ro rfc6423? boolean | | +--rw group-ip-address-location? IP-Multicast-Group-Address
| | +--ro rfc6310? boolean | +--:(as-number-location)
| | +--ro rfc7023? boolean | | +--rw as-number-location? inet:as-number
| +--rw oam-layers* [index] | +--:(lsp-id-location)
| +--rw index uint16 | | +--rw lsp-id-location? string
| +--rw level? int32 | +--:(system-id-location)
+--:(group-lsp-id-location-type) | | +--rw system-id-location? inet:uri
| +--rw test-point-lsp-id-location-list | +--:(connection-oriented-location)
| +--rw test-point-locations* [lsp-id-location] | +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw lsp-id-location string | +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
| +--rw vrf? routing-instance-ref | +--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
| +--rw (technology)? +--:(group-as-number-location-type)
| | +--:(technology-null) | +--rw test-point-as-number-location-list
| | | +--rw tech-null? empty | +--rw test-point-locations* [as-number-location]
| | +--:(technology-string) | +--rw as-number-location inet:as-number
| | +--rw ipv4-icmp? string | +--rw vrf? routing-instance-ref
| +--ro (tools)? | +--rw (technology)?
| | +--:(tools-empty) | | +--:(technology-null)
| | | +--ro tools-null? empty | | | +--rw tech-null? empty
| | +--:(tools-ip) | | +--:(technology-string)
| | | +--ro rfc792? boolean | | +--rw ipv4-icmp? string
| | | +--ro rfc4443? boolean | +--rw tp-tools
| | | +--ro rfc4884? boolean | | +--rw connectivity-verification? boolean
| | | +--ro rfc5837? boolean | | +--rw continuity-check? boolean
| | +--:(tools-bfd) | | +--rw path-discovery? boolean
| | | +--ro rfc5881? boolean | +--rw root?
| | | +--ro rfc5883? boolean | +--rw oam-layers* [index]
| | | +--ro rfc5884? boolean | +--rw index uint16
| | | +--ro rfc5885? boolean | +--rw level? int32
| | +--:(tools-mpls) | +--rw (tp-address)?
| | | +--ro rfc4379? boolean | +--:(mac-address)
| | | +--ro rfc4687? boolean | | +--rw mac-address-location? yang:mac-address
| | | +--ro rfc4950? boolean | +--:(ipv4-address)
| | | +--ro mpls-rfc5884? boolean | | +--rw ipv4-location? inet:ipv4-address
| | +--:(tools-pw) | +--:(ipv6-location)
| | +--ro rfc5085? boolean | | +--rw ipv6-address? inet:ipv6-address
| | +--ro pw_rfc5885? boolean | +--:(tunnel-location)
| | +--ro rfc6423? boolean | | +--rw tunnel-location? uint32
| | +--ro rfc6310? boolean | +--:(ip-prefix-location)
| | +--ro rfc7023? boolean | | +--rw ip-prefix-location? inet:ip-prefix
| +--rw oam-layers* [index] | +--:(route-dist-location)
| +--rw index uint16 | | +--rw route-dist-location? uint32
| +--rw level? int32 | +--:(group-ip-address-location)
+--:(group-system-id-location-type) | | +--rw group-ip-address-location? IP-Multicast-Group-Address
+--rw test-point-system-info-location-list | +--:(as-number-location)
+--rw test-point-locations* [system-id-location] | | +--rw as-number-location? inet:as-number
+--rw system-id-location inet:uri | +--:(lsp-id-location)
+--rw vrf? routing-instance-ref | | +--rw lsp-id-location? string
+--rw (technology)? | +--:(system-id-location)
| +--:(technology-null) | | +--rw system-id-location? inet:uri
| | +--rw tech-null? empty | +--:(connection-oriented-location)
| +--:(technology-string) | +--rw maintenance-domain? -> /goam:domains/domain/MD-name-string
| +--rw ipv4-icmp? string | +--rw maintenance-association? -> /goam:domains/domain[goam:MD-name-string = current()/../maintenance-domain]/MAs/MA/MA-name-string
+--ro (tools)? | +--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
| +--:(tools-empty) +--:(group-lsp-id-location-type)
| | +--ro tools-null? empty | +--rw test-point-lsp-id-location-list
| +--:(tools-ip) | +--rw test-point-locations* [lsp-id-location]
| | +--ro rfc792? boolean | +--rw lsp-id-location string
| | +--ro rfc4443? boolean | +--rw vrf? routing-instance-ref
| | +--ro rfc4884? boolean | +--rw (technology)?
| | +--ro rfc5837? boolean | | +--:(technology-null)
| +--:(tools-bfd) | | | +--rw tech-null? empty
| | +--ro rfc5881? boolean | | +--:(technology-string)
| | +--ro rfc5883? boolean | | +--rw ipv4-icmp? string
| | +--ro rfc5884? boolean | +--rw tp-tools
| | +--ro rfc5885? boolean | | +--rw connectivity-verification? boolean
| +--:(tools-mpls) | | +--rw continuity-check? boolean
| | +--ro rfc4379? boolean | | +--rw path-discovery? boolean
| | +--ro rfc4687? boolean | +--rw root?
| | +--ro rfc4950? boolean | +--rw oam-layers* [index]
| | +--ro mpls-rfc5884? boolean | +--rw index uint16
| +--:(tools-pw) | +--rw level? int32
| +--ro rfc5085? boolean | +--rw (tp-address)?
| +--ro pw_rfc5885? boolean | +--:(mac-address)
| +--ro rfc6423? boolean | | +--rw mac-address-location? yang:mac-address
| +--ro rfc6310? boolean | +--:(ipv4-address)
| +--ro rfc7023? boolean | | +--rw ipv4-location? inet:ipv4-address
+--rw oam-layers* [index] | +--:(ipv6-location)
+--rw index uint16 | | +--rw ipv6-address? inet:ipv6-address
+--rw level? int32 | +--:(tunnel-location)
| | +--rw tunnel-location? uint32
| +--:(ip-prefix-location)
| | +--rw ip-prefix-location? inet:ip-prefix
| +--:(route-dist-location)
| | +--rw route-dist-location? uint32
| +--:(group-ip-address-location)
| | +--rw group-ip-address-location? IP-Multicast-Group-Address
| +--:(as-number-location)
| | +--rw as-number-location? inet:as-number
| +--:(lsp-id-location)
| | +--rw lsp-id-location? string
| +--:(system-id-location)
| | +--rw system-id-location? inet:uri
| +--:(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)
+--rw test-point-system-info-location-list
+--rw test-point-locations* [system-id-location]
+--rw system-id-location inet:uri
+--rw vrf? routing-instance-ref
+--rw (technology)?
| +--:(technology-null)
| | +--rw tech-null? empty
| +--:(technology-string)
| +--rw ipv4-icmp? string
+--rw tp-tools
| +--rw connectivity-verification? boolean
| +--rw continuity-check? boolean
| +--rw path-discovery? boolean
+--rw root?
+--rw oam-layers* [index]
+--rw index uint16
+--rw level? int32
+--rw (tp-address)?
+--:(mac-address)
| +--rw mac-address-location? yang:mac-address
+--:(ipv4-address)
| +--rw ipv4-location? inet:ipv4-address
+--:(ipv6-location)
| +--rw ipv6-address? inet:ipv6-address
+--:(tunnel-location)
| +--rw tunnel-location? uint32
+--:(ip-prefix-location)
| +--rw ip-prefix-location? inet:ip-prefix
+--:(route-dist-location)
| +--rw route-dist-location? uint32
+--:(group-ip-address-location)
| +--rw group-ip-address-location? IP-Multicast-Group-Address
+--:(as-number-location)
| +--rw as-number-location? inet:as-number
+--:(lsp-id-location)
| +--rw lsp-id-location? string
+--:(system-id-location)
| +--rw system-id-location? inet:uri
+--:(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 {
namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam";
prefix coam; prefix coam;
import ietf-yang-schema-mount {
prefix yangmnt;
}
import ietf-network{ import ietf-network{
prefix nd; prefix nd;
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
} }
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-10-31 { revision 2016-12-16 {
description description
"Initial revision. - 07 version"; "Initial revision. - 08 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
skipping to change at page 31, line 4 skipping to change at page 32, line 34
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, -1 means server "Level 0 indicates default level, -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 {
case mac-address {
leaf mac-address-location {
type yang:mac-address;
description
"MAC Address";
}
description
"MAC Address based MP Addressing.";
}
case ipv4-address {
leaf ipv4-location {
type inet:ipv4-address;
description
"Ipv4 Address";
}
description
"Ip Address based MP Addressing.";
}
case ipv6-location {
leaf ipv6-address {
type inet:ipv6-address;
description
"Ipv6 Address";
}
description
"ipv6 Address based MP Addressing.";
}
case tunnel-location{
leaf tunnel-location{
type uint32;
description
"VPN Prefix";
}
description
"tunnel location";
}
case ip-prefix-location{
leaf ip-prefix-location{
type inet:ip-prefix;
description
"Ip prefix location";
}
description
"IP prefix location";
}
case route-dist-location{
leaf route-dist-location{
type uint32;
description
"Route Distinguisher (8 octets)";
}
description
"Route distinguisher location";
}
case group-ip-address-location{
leaf group-ip-address-location{
type IP-Multicast-Group-Address;
description
"Group IP address location";
}
description
"Group IP address";
}
case as-number-location{
leaf as-number-location{
type inet:as-number;
description
"AS number location";
}
description
"AS number";
}
case lsp-id-location{
leaf lsp-id-location{
type string;
description
"LSP id";
}
description
"LSP ID";
}
case system-id-location{
leaf system-id-location{
type inet:uri;
description
"system id location";
}
description
"System ID";
}
case connection-oriented-location{
uses goam:maintenance-association-end-point-reference;
description
"connection oriented location";
}
description
"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, for eg:- in case of -1 means server layer, for eg:- in case of
Overlay and Underlay, Underlay is server layer for Overlay and Underlay, Underlay is server layer for
Overlay Test Point. Overlay Test Point.
skipping to change at page 32, line 4 skipping to change at page 35, line 49
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.";
choice tools { container tp-tools{
default tools-empty; leaf connectivity-verification{
config false;
description
"choice of test point tools.
Empty tools means based on Test Point it's implicit
all OAM tools are present and no further configuration
is supported.";
case tools-empty {
description
"this is a placeholder when oam toolset is not needed.";
leaf tools-null {
type empty;
description
"there is no oam toolset defined.";
}
}
case tools-ip{
description
"Oam Toolset for Ip";
leaf rfc792 {
type boolean;
description
"rfc792 (icmpv4) supported.";
}
leaf rfc4443 {
type boolean; type boolean;
description description
"rfc4443 supported."; "A flag indicating whether or not the
} connectivity-verification function is supported.";
leaf rfc4884 { reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification.
RFC 5880: Bidirectional Forwarding Detection.
RFC 5881: BFD for IPv4 and IPv6.
RFC 5883: BFD for Multihop Paths.
RFC 5884: BFD for MPLS Label Switched Paths.
RFC 5885: BFD for PW VCCV.
RFC 4379: LSP-PING.";
}
leaf continuity-check{
type boolean; type boolean;
description description
"rfc4884 supported."; "A flag indicating whether or not the
} continuity check function is supported.";
leaf rfc5837 { reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification.
RFC 5880: Bidirectional Forwarding Detection.
RFC 5881: BFD for IPv4 and IPv6.
RFC 5883: BFD for Multihop Paths.
RFC 5884: BFD for MPLS Label Switched Paths.
RFC 5885: BFD for PW VCCV.";
}
leaf path-discovery{
type boolean; type boolean;
description description
"rfc5837 supported."; "A flag indicating whether or not the
} path discovery function is supported.";
reference
"RFC 792: INTERNET CONTROL MESSAGE PROTOCOL.
RFC 4443: Internet Control Message Protocol (ICMPv6)
for the Internet Protocol Version 6 (IPv6) Specification.
RFC 4884: Extended ICMP to Support Multi-part Message.
RFC 5837:Extending ICMP for Interface and Next-Hop Identification.
} RFC 4379: LSP-PING.";
case tools-bfd { }
leaf rfc5881 { description
type boolean; "Container for test point OAM tools set.";
description
"rfc5881 supported.";
}
leaf rfc5883 {
type boolean;
description
"rfc5883 supported.";
} }
leaf rfc5884 {
type boolean;
description
"rfc5884 supported.";
}
leaf rfc5885 {
type boolean;
description
"rfc5885 supported.";
}
}
case tools-mpls {
description
"Oam Toolset for mpls";
leaf rfc4379 {
type boolean;
description
"rfc4379 supported.";
}
leaf rfc4687 {
type boolean;
description
"rfc4687 supported.";
}
leaf rfc4950 {
type boolean;
description
"rfc4950 supported.";
}
leaf mpls-rfc5884 {
type boolean;
description
"rfc5884 supported.";
}
}
case tools-pw {
description
"Oam Toolset for pw oam.";
leaf rfc5085 {
type boolean;
description
"rfc5085 supported.";
}
leaf pw_rfc5885 {
type boolean;
description
"rfc5885 supported.";
}
leaf rfc6423 {
type boolean;
description
"rfc6423 supported.";
}
leaf rfc6310 {
type boolean;
description
"rfc6310 supported.";
}
leaf rfc7023 {
type boolean;
description
"rfc7023 supported.";
}
}
}
} }
grouping test-point-location-info { grouping test-point-location-info {
uses tp-technology; uses tp-technology;
uses tp-tools; uses tp-tools;
anydata root {
yangmnt:mount-point root;
description
"Root for models supported per
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-address-type-value {
type identityref { type identityref {
skipping to change at page 44, line 14 skipping to change at page 47, line 7
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
snippets of technology-specific model extensions for illustrative snippets of technology-specific model extensions for illustrative
purposes. The complete model extensions should be worked on in purposes. The complete model extensions should be worked on in
respective protocol working groups. respective protocol working groups.
5.1. BFD Extension 5.1. BFD Extension
5.1.1. Augment Method
The following sections shows how the "ietf-connectionless-oam" model The following sections shows how the "ietf-connectionless-oam" model
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 both BFD [I-D.ietf-bfd-yang] to be produced. Users can choose to use "ietf-
model and "ietf-connectioless-oam" as basis and augment the "ietf- connectioless-oam" as basis and augment the "ietf-connectionless-oam"
connectionless-oam" model with bfd specific details. The bfd model with bfd specific details. The bfd specific details can be the
specific details can be the grouping defined in the BFD model. grouping defined in the BFD model.
5.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
LIME BFD model. 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.2. test point attributes extension 5.1.1.2. test point attributes extension
To derive a model for bfd technology, the "ietf-connectionless-oam" To support bfd technology, the "ietf-connectionless-oam" model can be
model can be extended. Some data nodes for bfd specific parameters extended and add bfd specific parameters under "test-point-location"
can be defined and inserted into the proper "test-point-location" list and/or add new location type such as "bfd over MPLS-TE" under
list. Or some new "location-type" cases can be added to support the "location-type".
some bfd technologies such as "bfd over MPLS-TE", etc.
5.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-
location" lists are defined under the "location-type" choice node. location" lists are defined under the "location-type" choice node.
Therefore, to derive model for some bfd technologies( such as ip Therefore, to derive a model for some bfd technologies ( such as ip
single-hop, ip multi-hops, etc), data nodes for bfd specific details single-hop, ip multi-hops, etc), data nodes for bfd specific details
can be defined and inserted into corresponding "test-point-locations" need to be added into corresponding "test-point-locations" list. In
list. In this section, we reuse some groupings which are defined in this section, we reuse some groupings which are defined in
[I-D.ietf-bfd-yang] to derive following example. [I-D.ietf-bfd-yang] as following:
The snippet below shows how the "ietf-connectionless-oam" model can The snippet below shows how the "ietf-connectionless-oam" model can
be extended to "BFD IP single-hop": be extended to support "BFD IP single-hop":
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:test-point-locations"
{ {
container session-cfg { container session-cfg {
description "BFD IP single-hop session configuration"; description "BFD IP single-hop session configuration";
list sessions { list sessions {
key "interface dest-addr"; key "interface dest-addr";
description "List of IP single-hop sessions"; description "List of IP single-hop sessions";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"Interface on which the BFD session is running."; "Interface on which the BFD session is running.";
} }
skipping to change at page 45, line 40 skipping to change at page 48, line 31
description "List of IP single-hop sessions"; description "List of IP single-hop sessions";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"Interface on which the BFD session is running."; "Interface on which the BFD session is running.";
} }
leaf dest-addr { leaf dest-addr {
type inet:ip-address; type inet:ip-address;
description "IP address of the peer"; description "IP address of the peer";
} }
uses bfd:bfd-grouping-common-cfg-parms; uses bfd:bfd-grouping-common-cfg-parms;
uses bfd:bfd-grouping-echo-cfg-parms; uses bfd:bfd-grouping-echo-cfg-parms;
} }
} }
} }
Edit note: To prevent new attribute to be defined in the CL extension
model,[I-D.ietf-bfd-yang] should define the attributes that are used
by CL model as grouping, then CL extension model can reuse these
grouping. We will make accordingly change when these grouping are
available in the BFD model.
Similar augmentations can be defined to support other BFD Similar augmentations can be defined to support other BFD
technologies such as BFD IP multi-hop, BFD over MPLS, etc. technologies such as BFD IP multi-hop, BFD over MPLS, etc.
5.1.2.2. Add new location-type cases 5.1.1.2.2. Add new location-type cases
In the "ietf-connectionless-oam" model, If no a proper "test-point- In the "ietf-connectionless-oam" model, If there is no appropriate
locations" can be extended, new "location-type" cases can be defined "location type" case that can be extended, a new "location-type" case
and inserted into the "location-type" choice node. can be defined and inserted into the "location-type" choice node.
Therefore, the model user can flexible add "location-type" to support Therefore, the model user can flexibly add "location-type" to support
other kinds of test point which are not defined in the "ietf- other type of test point which are not defined in the "ietf-
connectionless-oam" model. In this section, we add a new "location- connectionless-oam" model. In this section, we add a new "location-
type" case and reuse some groupings which are defined in type" case and reuse some groupings which are defined in
[I-D.ietf-bfd-yang] to derive the following example. [I-D.ietf-bfd-yang] as follows:
The snippet below shows how the "ietf-connectionless-oam" model can The snippet below shows how the "ietf-connectionless-oam" model can
be extended to "BFD over MPLS-TE": be extended to support "BFD over MPLS-TE":
augment "/nd:networks/nd:network/nd:node/coam:location-type"{ augment "/nd:networks/nd:network/nd:node/coam:location-type"{
case te-location{ case te-location{
list test-point-location-list{ list test-point-location-list{
key "tunnel-name"; key "tunnel-name";
leaf tunnel-name{ leaf tunnel-name{
type leafref{ type leafref{
path "/te:te/te:tunnels/te:tunnel/te:name"; path "/te:te/te:tunnels/te:tunnel/te:name";
} }
description description
"point to a te instance."; "point to a te instance.";
} }
uses bfd:bfd-grouping-common-cfg-parms; uses bfd:bfd-grouping-common-cfg-parms;
uses bfd-mpls:bfd-encap-cfg; uses bfd-mpls:bfd-encap-cfg;
} }
} }
} }
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
And anohter alternative method is using schema mount mechanism
[draft-ietf-netmod-schema-mount] in the "ietf-connectionless-oam".
Within the "test-point-location" list, a "root" attribute is defined
to provide a mounted point for models mounted per "test-point-
location". Therefore, the "ietf-connectionless-oam" model can
provide a place in the node hierarchy where other OAM YANG data
models can be attached, without any special extension in the "ietf-
connectionless-oam" YANG data models [draft-ietf-netmod-schema-
mount]. Note that the limitation of the Schema Mount method is it is
not allowed to specify certain modules that are required to be
mounted under a mount point.
The snippet below depicts the definition of "root" attribute.
anydata root {
yangmnt:mount-point root;
description
"Root for models supported per
test point";
}
The following section shows how the "ietf-connectionless-oam" model
can use schema mount to support BFD technology.
5.1.2.1. BFD Modules be populated in schema-mount
To support BFD technology, "ietf-bfd-ip-sh" and "ietf-bfd-ip-mh" YANG
modules might be populated in the "schema-mounts" container:
<schema-mounts
xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount">
<mount-point>
<module> ietf-connectionless-oam </module>
<name>root</name>
<use-schema>
<name>root</name>
</use-schema>
</mount-point>
<schema>
<name>root</name>
<module>
<name>ietf-bfd-ip-sh </name>
<revision>2016-07-04</revision>
<namespace>
urn:ietf:params:xml:ns:yang: ietf-bfd-ip-sh
</namespace>
<conformance-type>implement</conformance-type>
</module>
<module>
<name>ietf-bfd-ip-mh </name>
<revision> 2016-07-04</revision>
<namespace>
urn:ietf:params:xml:ns:yang: ietf-bfd-ip-mh
</namespace>
<conformance-type>implement</conformance-type>
</module>
</schema>
</schema-mounts>
and the " ietf-connectionless-oam " module might have:
<ietf-connectionless-oam uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam">
......
<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">
<ip-sh>
foo
......
</ip-sh>
</ietf-bfd-ip-sh>
<ietf-bfd-ip-mh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh">
<ip-mh>
foo
......
</ip-mh>
</ietf-bfd-ip-mh>
</root>
</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 cover 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 both LSP Ping model and "ietf-connectioless-oam" as choose to use "ietf-connectioless-oam" as basis and augment the
basis and augment the "ietf-connectionless-oam" model with LSP Ping "ietf-connectionless-oam" model with LSP Ping specific details in the
specific details. 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 LIME LSP ping model. required in the model extension.
The snippet below depicts an example of augmenting "lsp-ping" type The snippet below depicts an example of augmenting the "ietf-
into the "ietf-connectionless-oam": 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
In order to derive a model for lsp-ping, the "ietf-connectionless- To support lsp-ping, the "ietf-connectionless-oam" model can be
oam" model can be extended. Some data nodes for lsp-ping specific extended and add lsp-ping specific parameters can be defined and
parameters can be defined and inserted into the proper "test-point- under "test-point-location" list.
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] to derive the "lime lsp [I-D.draft-zheng-mpls-lsp-ping-yang-cfg] as follows:
ping" model.
The snippet below depicts an example of augmenting lsp ping The snippet below depicts an example of augmenting the "test-point-
attributes into the "test-point-locations" list: locations" list with lsp ping attributes:
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:test-point-locations"
{ {
list lsp-ping { list lsp-ping {
key "lsp-ping-name"; key "lsp-ping-name";
leaf lsp-ping-name { leaf lsp-ping-name {
type string { type string {
length "1..31"; length "1..31";
} }
mandatory "true"; mandatory "true";
description "LSP Ping test name."; description "LSP Ping test name.";
...... ......
} }
Edit note: To prevent new attribute to be defined in the CL extension
model,[I-D.draft-zheng-mpls-lsp-ping-yang-cfg] should define the
attributes that are used by CL model as grouping, then CL extension
model can reuse these grouping. We will make accordingly change when
these grouping are available in the LSP ping model.
6. Security Considerations 6. Security Considerations
TBD. TBD.
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 [RFC3688]. Following the format in RFC 3688, the following
registration is requested to be made: registration is requested to be made:
skipping to change at page 49, line 5 skipping to change at page 53, line 17
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 namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam
prefix: goam reference: RFC XXXX prefix: goam reference: RFC XXXX
8. Normative References 8. Acknowlegements
The authors of this document would like to thank Greg Mirskey and
others for their sustainable review and comments, proposals to
improve and stablize document.
9. Normative References
[I-D.draft-ietf-i2rs-yang-network-topo] [I-D.draft-ietf-i2rs-yang-network-topo]
Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N.,
Ananthakrishnan, H., and X. Liu, "A YANG Data Model for Ananthakrishnan, H., and X. Liu, "A YANG Data Model for
Network Topologies", I-D draft-ietf-i2rs-yang-network- Network Topologies", I-D draft-ietf-i2rs-yang-network-
topo-05, July 2016. 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-03, 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-03 (work in
progress), July 2016. progress), July 2016.
[I-D.ietf-netmod-schema-mount]
Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft-
ietf-netmod-schema-mount-03 (work in progress), October
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>.
[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>.
 End of changes. 64 change blocks. 
623 lines changed or deleted 825 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/