Internet Engineering Task Force (IETF)                          D. Kumar
Request for Comments: 8533                                         Cisco
Category: Standards Track                                        M. Wang
ISSN: 2070-1721                                               Q. Wu, Ed.
                                                                  Huawei
                                                               R. Rahman
                                                             S. Raghavan
                                                                   Cisco
                                                              April 2019
        
Internet Engineering Task Force (IETF)                          D. Kumar
Request for Comments: 8533                                         Cisco
Category: Standards Track                                        M. Wang
ISSN: 2070-1721                                               Q. Wu, Ed.
                                                                  Huawei
                                                               R. Rahman
                                                             S. Raghavan
                                                                   Cisco
                                                              April 2019
        

A YANG Data Model for Retrieval Methods for the Management of Operations, Administration, and Maintenance (OAM) Protocols That Use Connectionless Communications

用于管理使用无连接通信的操作、管理和维护(OAM)协议的检索方法的数据模型

Abstract

摘要

This document presents a retrieval method YANG data model for connectionless Operations, Administration, and Maintenance (OAM) protocols. It provides technology-independent RPC operations for OAM protocols that use connectionless communication. The retrieval methods model herein presented can be extended to include technology-specific details. There are two key benefits of this approach: First, it leads to uniformity between OAM protocols. Second, it supports both nested OAM workflows (i.e., performing OAM functions at different or the same levels through a unified interface) as well as interactive OAM workflows (i.e., performing OAM functions at the same levels through a unified interface).

本文介绍了一种用于无连接操作、管理和维护(OAM)协议的数据模型的检索方法。它为使用无连接通信的OAM协议提供独立于技术的RPC操作。本文提出的检索方法模型可以扩展到包括特定于技术的细节。这种方法有两个关键好处:第一,它导致OAM协议之间的一致性。其次,它支持嵌套的OAM工作流(即通过统一接口在不同或相同级别执行OAM功能)和交互式OAM工作流(即通过统一接口在相同级别执行OAM功能)。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 7841第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8533.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问https://www.rfc-editor.org/info/rfc8533.

Copyright Notice

版权公告

Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.

版权(c)2019 IETF信托基金和被确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(https://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Conventions Used in This document . . . . . . . . . . . . . .   3
     2.1.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   4
     2.2.  Tree Diagrams . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Overview of the Connectionless OAM Retrieval Methods Model  .   4
     3.1.  RPC Operation Definitions . . . . . . . . . . . . . . . .   4
     3.2.  OAM Retrieval Methods Hierarchy . . . . . . . . . . . . .   7
   4.  OAM Retrieval Methods YANG Module . . . . . . . . . . . . . .  16
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .  26
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  26
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  27
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  27
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  28
   Appendix A.  Extending Connectionless OAM Method Module Example .  29
     A.1.  Example of New Retrieval Procedures Model . . . . . . . .  29
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  40
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  41
        
   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Conventions Used in This document . . . . . . . . . . . . . .   3
     2.1.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   4
     2.2.  Tree Diagrams . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Overview of the Connectionless OAM Retrieval Methods Model  .   4
     3.1.  RPC Operation Definitions . . . . . . . . . . . . . . . .   4
     3.2.  OAM Retrieval Methods Hierarchy . . . . . . . . . . . . .   7
   4.  OAM Retrieval Methods YANG Module . . . . . . . . . . . . . .  16
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .  26
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  26
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  27
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  27
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  28
   Appendix A.  Extending Connectionless OAM Method Module Example .  29
     A.1.  Example of New Retrieval Procedures Model . . . . . . . .  29
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  40
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  41
        
1. Introduction
1. 介绍

Operations, Administration, and Maintenance (OAM) are important networking functions that allow operators to:

运营、管理和维护(OAM)是重要的网络功能,允许运营商:

1. monitor network communications (i.e., reachability verification and Continuity Check)

1. 监控网络通信(即可达性验证和连续性检查)

2. troubleshoot failures (i.e., fault verification and localization)

2. 故障排除(即故障验证和定位)

3. monitor service-level agreements and performance (i.e., performance management)

3. 监控服务级别协议和性能(即性能管理)

An overview of OAM tools is presented in [RFC7276].

[RFC7276]中介绍了OAM工具的概述。

Ping and Traceroute [RFC4443], as well as Bidirectional Forwarding Detection (BFD) [RFC5880], are well-known fault verification and isolation tools, respectively, for IP networks [RFC792]. Over the years, different technologies have developed similar toolsets for equivalent purposes.

Ping和Traceroute[RFC4443]以及双向转发检测(BFD)[RFC5880]分别是IP网络[RFC792]的著名故障验证和隔离工具。多年来,不同的技术已经开发出类似的工具集,用于相同的目的。

This document presents an on-demand retrieval method YANG data model for OAM protocols that use connectionless communication. This model provides technology-independent RPC operations for OAM protocols that use connectionless communication (i.e., connectionless OAM). It is separated from the generic YANG data model for connectionless OAM [RFC8532] and can avoid mixing the models for the retrieved data from the retrieval procedures. It is expected that retrieval procedures will evolve faster than the data model [RFC8532] and will allow new procedures to be defined for retrieval of the same data defined by the generic YANG data model for connectionless OAM.

本文针对使用无连接通信的OAM协议,提出了一种基于数据模型的按需检索方法。该模型为使用无连接通信(即无连接OAM)的OAM协议提供与技术无关的RPC操作。它与无连接OAM的通用数据模型[RFC8532]分离,可以避免混合检索过程中检索到的数据的模型。预计检索过程将比数据模型[RFC8532]发展得更快,并将允许定义新的过程来检索由通用数据模型为无连接OAM定义的相同数据。

2. Conventions Used in This document
2. 本文件中使用的公约

The following terms are defined in [RFC6241] and are used in this document:

[RFC6241]中定义了以下术语,并在本文件中使用:

o client

o 客户

o configuration data

o 配置数据

o server

o 服务器

o state data

o 状态数据

The following terms are defined in [RFC6020] and are used in this document:

[RFC6020]中定义了以下术语,并在本文件中使用:

o augment

o 加强

o data model

o 数据模型

o data node

o 数据节点

The terminology for describing YANG data models is found in [RFC6020].

描述YANG数据模型的术语见[RFC6020]。

2.1. Terminology
2.1. 术语

TP - Test Point

测试点

MAC - Media Access Control

媒体访问控制

RPC - Remote Procedure Call

远程过程调用

RPC Operation - A specific Remote Procedure Call

RPC操作-特定的远程过程调用

2.2. Tree Diagrams
2.2. 树形图

Tree diagrams used in this document follow the notation defined in [RFC8340].

本文档中使用的树形图遵循[RFC8340]中定义的符号。

3. Overview of the Connectionless OAM Retrieval Methods Model
3. 无连接OAM检索方法模型概述

This document describes an on-demand retrieval method YANG data model for OAM protocols that use connectionless communication. This model provides technology-independent retrieval procedures (RPC operations) for connectionless OAM protocols. It provides a flexible way to retrieve the data that is defined by the "ietf-connectionless-oam.yang" module [RFC8532].

本文描述了一种用于使用无连接通信的OAM协议的数据模型的按需检索方法。该模型为无连接OAM协议提供了独立于技术的检索过程(RPC操作)。它提供了一种灵活的方式来检索由“ietf无连接oam.yang”模块[RFC8532]定义的数据。

3.1. RPC Operation Definitions
3.1. RPC操作定义

The RPC model facilitates issuing commands to a Network Configuration Protocol (NETCONF) server (in this case to the device that needs to execute the OAM command) and obtaining a response.

RPC模型有助于向网络配置协议(NETCONF)服务器(在本例中是向需要执行OAM命令的设备)发出命令并获得响应。

Under the "connectionless-oam-methods" module, we summarize common OAM functions and define two generic RPC operations: 'continuity-check' and 'path-discovery'. In practice, these RPC operations are activated on demand and are supported by corresponding technology-specific OAM tools [RFC7276]. For example, for the IP OAM model, the Continuity Check RPC corresponds to the IP Ping [RFC792] [RFC4443],

在“无连接oam方法”模块下,我们总结了常见的oam函数,并定义了两个通用RPC操作:“连续性检查”和“路径发现”。实际上,这些RPC操作是按需激活的,并由相应的特定于技术的OAM工具支持[RFC7276]。例如,对于IP OAM模型,连续性检查RPC对应于IP Ping[RFC792][RFC4443],

while the path discovery RPC operation corresponds to IP Traceroute [RFC792] [RFC4443].

而路径发现RPC操作对应于IP跟踪路由[RFC792][RFC4443]。

Note that the RPC operation presented in this document is the base building block, which is used to derive a model for a technology-specific OAM (i.e., ICMP Ping [RFC792] [RFC4443] and Label Switched Path (LSP) Ping [RFC8029]). This base building block should be extended with corresponding technology-specific parameters. To facilitate this for future enhancements to data retrieval methods, the RPCs are captured under a separate module.

请注意,本文档中介绍的RPC操作是基本构建块,用于为特定于技术的OAM(即ICMP Ping[RFC792][RFC4443]和标签交换路径(LSP)Ping[RFC8029])导出模型。应使用相应的技术特定参数扩展此基本构建块。为了便于将来增强数据检索方法,可以在单独的模块下捕获RPC。

The generic 'tp-address' grouping is used as data input from different RPCs described in this document. The generic 'path-discovery-data' and 'continuity-check-data' groupings defined by the "ietf-connectionless-oam.yang" module [RFC8532] are used as data outputs from different RPCs described in this document. Similar methods, including other RPCs, can retrieve the data using the same data model (i.e., the "ietf-connectionless-oam.yang" module).

通用“tp地址”分组用作本文档中描述的不同RPC的数据输入。“ietf无连接oam.yang”模块[RFC8532]定义的通用“路径发现数据”和“连续性检查数据”分组用作本文档中描述的不同RPC的数据输出。类似的方法,包括其他RPC,可以使用相同的数据模型(即“ietf无连接oam.yang”模块)检索数据。

        rpc continuity-check {
         if-feature cl-oam:continuity-check;
         description
           "Continuity Check RPC operation as per RFC 7276.";
         reference
           "RFC 7276: An Overview of Operations, Administration, and
            Maintenance (OAM) Tools";
         input {
         uses rpc-input-parameters;
         ....
         }
       output {
         container response-info {
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used in the Continuity Check. ";
           }
           leaf protocol-id-meta-data {
              type identityref {
               base protocol-id-meta-data;
               }
                description
                "An optional metadata related to the protocol ID.";
           }
           leaf status-code {
        
        rpc continuity-check {
         if-feature cl-oam:continuity-check;
         description
           "Continuity Check RPC operation as per RFC 7276.";
         reference
           "RFC 7276: An Overview of Operations, Administration, and
            Maintenance (OAM) Tools";
         input {
         uses rpc-input-parameters;
         ....
         }
       output {
         container response-info {
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used in the Continuity Check. ";
           }
           leaf protocol-id-meta-data {
              type identityref {
               base protocol-id-meta-data;
               }
                description
                "An optional metadata related to the protocol ID.";
           }
           leaf status-code {
        
             type identityref{
            base status-code;
          }
             mandatory true;
             description
               "Status code for Continuity Check RPC operation.";
           }
           leaf status-sub-code {
             type identityref{
             base status-sub-code;
          }
             mandatory true;
             description
               "Status-sub-code for Continuity Check RPC operation.";
           }
           description
             "Status code and status-sub-code for Continuity Check RPC
              operation.";
         }
         uses cl-oam:continuity-check-data;
       }
     }
        
             type identityref{
            base status-code;
          }
             mandatory true;
             description
               "Status code for Continuity Check RPC operation.";
           }
           leaf status-sub-code {
             type identityref{
             base status-sub-code;
          }
             mandatory true;
             description
               "Status-sub-code for Continuity Check RPC operation.";
           }
           description
             "Status code and status-sub-code for Continuity Check RPC
              operation.";
         }
         uses cl-oam:continuity-check-data;
       }
     }
        
       rpc path-discovery {
         description
           "Path discovery RPC operation as per RFC 7276.";
         reference
           "RFC 7276: An Overview of Operations, Administration, and
            Maintenance (OAM) Tools";
         input {
         uses rpc-input-parameters;
         .....
         }
       output {
         list response-list {
           key "response-index";
           description
             "Path discovery response list.";
           leaf response-index {
             type uint32;
             mandatory true;
             description
               "Response index.";
           }
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
        
       rpc path-discovery {
         description
           "Path discovery RPC operation as per RFC 7276.";
         reference
           "RFC 7276: An Overview of Operations, Administration, and
            Maintenance (OAM) Tools";
         input {
         uses rpc-input-parameters;
         .....
         }
       output {
         list response-list {
           key "response-index";
           description
             "Path discovery response list.";
           leaf response-index {
             type uint32;
             mandatory true;
             description
               "Response index.";
           }
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
        
             mandatory true;
             description
               "Protocol used in path discovery. ";
           }
           leaf protocol-id-meta-data {
              type identityref {
               base protocol-id-meta-data;
               }
                description
                "An optional metadata related to the protocol ID.";
           }
           leaf status-code {
             type identityref{
             base status-code;
           }
             mandatory true;
             description
               "Status code for path discovery RPC operation. ";
           }
           leaf status-sub-code {
             type identityref{
             base status-sub-code;
          }
             mandatory true;
             description
               "Status-sub-code for path discovery RPC operation. ";
           }
         }
         uses cl-oam:path-discovery-data;
       }
     }
        
             mandatory true;
             description
               "Protocol used in path discovery. ";
           }
           leaf protocol-id-meta-data {
              type identityref {
               base protocol-id-meta-data;
               }
                description
                "An optional metadata related to the protocol ID.";
           }
           leaf status-code {
             type identityref{
             base status-code;
           }
             mandatory true;
             description
               "Status code for path discovery RPC operation. ";
           }
           leaf status-sub-code {
             type identityref{
             base status-sub-code;
          }
             mandatory true;
             description
               "Status-sub-code for path discovery RPC operation. ";
           }
         }
         uses cl-oam:path-discovery-data;
       }
     }
        

Snippet of Data Hierarchy Related to RPC Operations

与RPC操作相关的数据层次结构片段

3.2. OAM Retrieval Methods Hierarchy
3.2. OAM检索方法层次结构

The complete data hierarchy related to the Connectionless OAM Retrieval Methods YANG data model is presented below.

下面给出了与数据模型中的无连接OAM检索方法相关的完整数据层次结构。

module: ietf-connectionless-oam-methods

模块:ietf无连接oam方法

     rpcs:
       +---x continuity-check {cl-oam:continuity-check}?
       |  +---w input
       |  |  +---w destination-tp
       |  |  |  +---w tp-location-type    identityref
       |  |  |  +---w mac-address
       |  |  |  |  +---w mac-address    yang:mac-address
        
     rpcs:
       +---x continuity-check {cl-oam:continuity-check}?
       |  +---w input
       |  |  +---w destination-tp
       |  |  |  +---w tp-location-type    identityref
       |  |  |  +---w mac-address
       |  |  |  |  +---w mac-address    yang:mac-address
        
       |  |  |  +---w ipv4-address
       |  |  |  |  +---w ipv4-address    inet:ipv4-address
       |  |  |  +---w ipv6-address
       |  |  |  |  +---w ipv6-address    inet:ipv6-address
       |  |  |  +---w tp-attribute
       |  |  |  |  +---w tp-attribute-type?
       |  |  |  |  |       address-attribute-type
       |  |  |  |  +---w (tp-attribute-value)?
       |  |  |  |     +--:(ip-prefix)
       |  |  |  |     |  +---w ip-prefix?
       |  |  |  |     |          inet:ip-prefix
       |  |  |  |     +--:(bgp)
       |  |  |  |     |  +---w bgp?
       |  |  |  |     |          inet:ip-prefix
       |  |  |  |     +--:(tunnel)
       |  |  |  |     |  +---w tunnel-interface?         uint32
       |  |  |  |     +--:(pw)
       |  |  |  |     |  +---w remote-pe-address?
       |  |  |  |     |  |       inet:ip-address
       |  |  |  |     |  +---w pw-id?                    uint32
       |  |  |  |     +--:(vpls)
       |  |  |  |     |  +---w route-distinguisher?
       |  |  |  |     |  |       rt:route-distinguisher
       |  |  |  |     |  +---w sender-ve-id?             uint16
       |  |  |  |     |  +---w receiver-ve-id?           uint16
       |  |  |  |     +--:(mpls-mldp)
       |  |  |  |        +---w (root-address)?
       |  |  |  |           +--:(ip-address)
       |  |  |  |           |  +---w source-address?
       |  |  |  |           |  |       inet:ip-address
       |  |  |  |           |  +---w group-ip-address?
       |  |  |  |           |          inet:ip-address
       |  |  |  |           +--:(vpn)
       |  |  |  |           |  +---w as-number?
       |  |  |  |           |          inet:as-number
       |  |  |  |           +--:(global-id)
       |  |  |  |              +---w lsp-id?             string
       |  |  |  +---w system-info
       |  |  |     +---w router-id?   rt:router-id
       |  |  +---w source-interface      if:interface-ref
       |  |  +---w outbound-interface    if:interface-ref
       |  |  +---w vrf?
       |  |  |       cl-oam:routing-instance-ref
       |  |  +---w session-type?         enumeration
       |  |  +---w count?                uint32
       |  |  +---w ttl?                  uint8
       |  |  +---w packet-size?          uint32
       |  +--ro output
        
       |  |  |  +---w ipv4-address
       |  |  |  |  +---w ipv4-address    inet:ipv4-address
       |  |  |  +---w ipv6-address
       |  |  |  |  +---w ipv6-address    inet:ipv6-address
       |  |  |  +---w tp-attribute
       |  |  |  |  +---w tp-attribute-type?
       |  |  |  |  |       address-attribute-type
       |  |  |  |  +---w (tp-attribute-value)?
       |  |  |  |     +--:(ip-prefix)
       |  |  |  |     |  +---w ip-prefix?
       |  |  |  |     |          inet:ip-prefix
       |  |  |  |     +--:(bgp)
       |  |  |  |     |  +---w bgp?
       |  |  |  |     |          inet:ip-prefix
       |  |  |  |     +--:(tunnel)
       |  |  |  |     |  +---w tunnel-interface?         uint32
       |  |  |  |     +--:(pw)
       |  |  |  |     |  +---w remote-pe-address?
       |  |  |  |     |  |       inet:ip-address
       |  |  |  |     |  +---w pw-id?                    uint32
       |  |  |  |     +--:(vpls)
       |  |  |  |     |  +---w route-distinguisher?
       |  |  |  |     |  |       rt:route-distinguisher
       |  |  |  |     |  +---w sender-ve-id?             uint16
       |  |  |  |     |  +---w receiver-ve-id?           uint16
       |  |  |  |     +--:(mpls-mldp)
       |  |  |  |        +---w (root-address)?
       |  |  |  |           +--:(ip-address)
       |  |  |  |           |  +---w source-address?
       |  |  |  |           |  |       inet:ip-address
       |  |  |  |           |  +---w group-ip-address?
       |  |  |  |           |          inet:ip-address
       |  |  |  |           +--:(vpn)
       |  |  |  |           |  +---w as-number?
       |  |  |  |           |          inet:as-number
       |  |  |  |           +--:(global-id)
       |  |  |  |              +---w lsp-id?             string
       |  |  |  +---w system-info
       |  |  |     +---w router-id?   rt:router-id
       |  |  +---w source-interface      if:interface-ref
       |  |  +---w outbound-interface    if:interface-ref
       |  |  +---w vrf?
       |  |  |       cl-oam:routing-instance-ref
       |  |  +---w session-type?         enumeration
       |  |  +---w count?                uint32
       |  |  +---w ttl?                  uint8
       |  |  +---w packet-size?          uint32
       |  +--ro output
        
       |     +--ro response-info
       |     |  +--ro protocol-id              identityref
       |     |  +--ro protocol-id-meta-data?   identityref
       |     |  +--ro status-code              identityref
       |     |  +--ro status-sub-code          identityref
       |     +--ro src-test-point
       |     |  +--ro ni?                 routing-instance-ref
       |     |  +--ro tp-location-type    identityref
       |     |  +--ro mac-address
       |     |  |  +--ro mac-address    yang:mac-address
       |     |  +--ro ipv4-address
       |     |  |  +--ro ipv4-address    inet:ipv4-address
       |     |  +--ro ipv6-address
       |     |  |  +--ro ipv6-address    inet:ipv6-address
       |     |  +--ro tp-attribute
       |     |  |  +--ro tp-attribute-type?
       |     |  |  |       address-attribute-type
       |     |  |  +--ro (tp-attribute-value)?
       |     |  |     +--:(ip-prefix)
       |     |  |     |  +--ro ip-prefix?
       |     |  |     |          inet:ip-prefix
       |     |  |     +--:(bgp)
       |     |  |     |  +--ro bgp?
       |     |  |     |          inet:ip-prefix
       |     |  |     +--:(tunnel)
       |     |  |     |  +--ro tunnel-interface?         uint32
       |     |  |     +--:(pw)
       |     |  |     |  +--ro remote-pe-address?
       |     |  |     |  |       inet:ip-address
       |     |  |     |  +--ro pw-id?                    uint32
       |     |  |     +--:(vpls)
       |     |  |     |  +--ro route-distinguisher?
       |     |  |     |  |       rt:route-distinguisher
       |     |  |     |  +--ro sender-ve-id?             uint16
       |     |  |     |  +--ro receiver-ve-id?           uint16
       |     |  |     +--:(mpls-mldp)
       |     |  |        +--ro (root-address)?
       |     |  |           +--:(ip-address)
       |     |  |           |  +--ro source-address?
       |     |  |           |  |       inet:ip-address
       |     |  |           |  +--ro group-ip-address?
       |     |  |           |          inet:ip-address
       |     |  |           +--:(vpn)
       |     |  |           |  +--ro as-number?
       |     |  |           |          inet:as-number
       |     |  |           +--:(global-id)
       |     |  |              +--ro lsp-id?             string
       |     |  +--ro system-info
        
       |     +--ro response-info
       |     |  +--ro protocol-id              identityref
       |     |  +--ro protocol-id-meta-data?   identityref
       |     |  +--ro status-code              identityref
       |     |  +--ro status-sub-code          identityref
       |     +--ro src-test-point
       |     |  +--ro ni?                 routing-instance-ref
       |     |  +--ro tp-location-type    identityref
       |     |  +--ro mac-address
       |     |  |  +--ro mac-address    yang:mac-address
       |     |  +--ro ipv4-address
       |     |  |  +--ro ipv4-address    inet:ipv4-address
       |     |  +--ro ipv6-address
       |     |  |  +--ro ipv6-address    inet:ipv6-address
       |     |  +--ro tp-attribute
       |     |  |  +--ro tp-attribute-type?
       |     |  |  |       address-attribute-type
       |     |  |  +--ro (tp-attribute-value)?
       |     |  |     +--:(ip-prefix)
       |     |  |     |  +--ro ip-prefix?
       |     |  |     |          inet:ip-prefix
       |     |  |     +--:(bgp)
       |     |  |     |  +--ro bgp?
       |     |  |     |          inet:ip-prefix
       |     |  |     +--:(tunnel)
       |     |  |     |  +--ro tunnel-interface?         uint32
       |     |  |     +--:(pw)
       |     |  |     |  +--ro remote-pe-address?
       |     |  |     |  |       inet:ip-address
       |     |  |     |  +--ro pw-id?                    uint32
       |     |  |     +--:(vpls)
       |     |  |     |  +--ro route-distinguisher?
       |     |  |     |  |       rt:route-distinguisher
       |     |  |     |  +--ro sender-ve-id?             uint16
       |     |  |     |  +--ro receiver-ve-id?           uint16
       |     |  |     +--:(mpls-mldp)
       |     |  |        +--ro (root-address)?
       |     |  |           +--:(ip-address)
       |     |  |           |  +--ro source-address?
       |     |  |           |  |       inet:ip-address
       |     |  |           |  +--ro group-ip-address?
       |     |  |           |          inet:ip-address
       |     |  |           +--:(vpn)
       |     |  |           |  +--ro as-number?
       |     |  |           |          inet:as-number
       |     |  |           +--:(global-id)
       |     |  |              +--ro lsp-id?             string
       |     |  +--ro system-info
        
       |     |  |  +--ro router-id?   rt:router-id
       |     |  +--ro egress-intf-name?   if:interface-ref
       |     +--ro dest-test-point
       |     |  +--ro ni?                  routing-instance-ref
       |     |  +--ro tp-location-type     identityref
       |     |  +--ro mac-address
       |     |  |  +--ro mac-address    yang:mac-address
       |     |  +--ro ipv4-address
       |     |  |  +--ro ipv4-address    inet:ipv4-address
       |     |  +--ro ipv6-address
       |     |  |  +--ro ipv6-address    inet:ipv6-address
       |     |  +--ro tp-attribute
       |     |  |  +--ro tp-attribute-type?
       |     |  |  |       address-attribute-type
       |     |  |  +--ro (tp-attribute-value)?
       |     |  |     +--:(ip-prefix)
       |     |  |     |  +--ro ip-prefix?
       |     |  |     |          inet:ip-prefix
       |     |  |     +--:(bgp)
       |     |  |     |  +--ro bgp?
       |     |  |     |          inet:ip-prefix
       |     |  |     +--:(tunnel)
       |     |  |     |  +--ro tunnel-interface?         uint32
       |     |  |     +--:(pw)
       |     |  |     |  +--ro remote-pe-address?
       |     |  |     |  |       inet:ip-address
       |     |  |     |  +--ro pw-id?                    uint32
       |     |  |     +--:(vpls)
       |     |  |     |  +--ro route-distinguisher?
       |     |  |     |  |       rt:route-distinguisher
       |     |  |     |  +--ro sender-ve-id?             uint16
       |     |  |     |  +--ro receiver-ve-id?           uint16
       |     |  |     +--:(mpls-mldp)
       |     |  |        +--ro (root-address)?
       |     |  |           +--:(ip-address)
       |     |  |           |  +--ro source-address?
       |     |  |           |  |       inet:ip-address
       |     |  |           |  +--ro group-ip-address?
       |     |  |           |          inet:ip-address
       |     |  |           +--:(vpn)
       |     |  |           |  +--ro as-number?
       |     |  |           |          inet:as-number
       |     |  |           +--:(global-id)
       |     |  |              +--ro lsp-id?             string
       |     |  +--ro system-info
       |     |  |  +--ro router-id?   rt:router-id
       |     |  +--ro ingress-intf-name?   if:interface-ref
       |     +--ro sequence-number?             uint64
        
       |     |  |  +--ro router-id?   rt:router-id
       |     |  +--ro egress-intf-name?   if:interface-ref
       |     +--ro dest-test-point
       |     |  +--ro ni?                  routing-instance-ref
       |     |  +--ro tp-location-type     identityref
       |     |  +--ro mac-address
       |     |  |  +--ro mac-address    yang:mac-address
       |     |  +--ro ipv4-address
       |     |  |  +--ro ipv4-address    inet:ipv4-address
       |     |  +--ro ipv6-address
       |     |  |  +--ro ipv6-address    inet:ipv6-address
       |     |  +--ro tp-attribute
       |     |  |  +--ro tp-attribute-type?
       |     |  |  |       address-attribute-type
       |     |  |  +--ro (tp-attribute-value)?
       |     |  |     +--:(ip-prefix)
       |     |  |     |  +--ro ip-prefix?
       |     |  |     |          inet:ip-prefix
       |     |  |     +--:(bgp)
       |     |  |     |  +--ro bgp?
       |     |  |     |          inet:ip-prefix
       |     |  |     +--:(tunnel)
       |     |  |     |  +--ro tunnel-interface?         uint32
       |     |  |     +--:(pw)
       |     |  |     |  +--ro remote-pe-address?
       |     |  |     |  |       inet:ip-address
       |     |  |     |  +--ro pw-id?                    uint32
       |     |  |     +--:(vpls)
       |     |  |     |  +--ro route-distinguisher?
       |     |  |     |  |       rt:route-distinguisher
       |     |  |     |  +--ro sender-ve-id?             uint16
       |     |  |     |  +--ro receiver-ve-id?           uint16
       |     |  |     +--:(mpls-mldp)
       |     |  |        +--ro (root-address)?
       |     |  |           +--:(ip-address)
       |     |  |           |  +--ro source-address?
       |     |  |           |  |       inet:ip-address
       |     |  |           |  +--ro group-ip-address?
       |     |  |           |          inet:ip-address
       |     |  |           +--:(vpn)
       |     |  |           |  +--ro as-number?
       |     |  |           |          inet:as-number
       |     |  |           +--:(global-id)
       |     |  |              +--ro lsp-id?             string
       |     |  +--ro system-info
       |     |  |  +--ro router-id?   rt:router-id
       |     |  +--ro ingress-intf-name?   if:interface-ref
       |     +--ro sequence-number?             uint64
        
       |     +--ro hop-cnt?                     uint8
       |     +--ro session-packet-statistics
       |     |  +--ro rx-packet-count?    uint32
       |     |  +--ro tx-packet-count?    uint32
       |     |  +--ro rx-bad-packet?      uint32
       |     |  +--ro tx-packet-failed?   uint32
       |     +--ro session-error-statistics
       |     |  +--ro packet-loss-count?          uint32
       |     |  +--ro loss-ratio?                 percentage
       |     |  +--ro packet-reorder-count?       uint32
       |     |  +--ro packets-out-of-seq-count?   uint32
       |     |  +--ro packets-dup-count?          uint32
       |     +--ro session-delay-statistics
       |     |  +--ro time-unit-value?       identityref
       |     |  +--ro min-delay-value?       uint32
       |     |  +--ro max-delay-value?       uint32
       |     |  +--ro average-delay-value?   uint32
       |     +--ro session-jitter-statistics
       |        +--ro unit-value?             identityref
       |        +--ro min-jitter-value?       uint32
       |        +--ro max-jitter-value?       uint32
       |        +--ro average-jitter-value?   uint32
       +---x path-discovery {cl-oam:path-discovery}?
          +---w input
          |  +---w destination-tp
          |  |  +---w tp-location-type    identityref
          |  |  +---w mac-address
          |  |  |  +---w mac-address    yang:mac-address
          |  |  +---w ipv4-address
          |  |  |  +---w ipv4-address    inet:ipv4-address
          |  |  +---w ipv6-address
          |  |  |  +---w ipv6-address    inet:ipv6-address
          |  |  +---w tp-attribute
          |  |  |  +---w tp-attribute-type?
          |  |  |  |       address-attribute-type
          |  |  |  +---w (tp-attribute-value)?
          |  |  |     +--:(ip-prefix)
          |  |  |     |  +---w ip-prefix?
          |  |  |     |          inet:ip-prefix
          |  |  |     +--:(bgp)
          |  |  |     |  +---w bgp?
          |  |  |     |          inet:ip-prefix
          |  |  |     +--:(tunnel)
          |  |  |     |  +---w tunnel-interface?         uint32
          |  |  |     +--:(pw)
          |  |  |     |  +---w remote-pe-address?
          |  |  |     |  |       inet:ip-address
          |  |  |     |  +---w pw-id?                    uint32
        
       |     +--ro hop-cnt?                     uint8
       |     +--ro session-packet-statistics
       |     |  +--ro rx-packet-count?    uint32
       |     |  +--ro tx-packet-count?    uint32
       |     |  +--ro rx-bad-packet?      uint32
       |     |  +--ro tx-packet-failed?   uint32
       |     +--ro session-error-statistics
       |     |  +--ro packet-loss-count?          uint32
       |     |  +--ro loss-ratio?                 percentage
       |     |  +--ro packet-reorder-count?       uint32
       |     |  +--ro packets-out-of-seq-count?   uint32
       |     |  +--ro packets-dup-count?          uint32
       |     +--ro session-delay-statistics
       |     |  +--ro time-unit-value?       identityref
       |     |  +--ro min-delay-value?       uint32
       |     |  +--ro max-delay-value?       uint32
       |     |  +--ro average-delay-value?   uint32
       |     +--ro session-jitter-statistics
       |        +--ro unit-value?             identityref
       |        +--ro min-jitter-value?       uint32
       |        +--ro max-jitter-value?       uint32
       |        +--ro average-jitter-value?   uint32
       +---x path-discovery {cl-oam:path-discovery}?
          +---w input
          |  +---w destination-tp
          |  |  +---w tp-location-type    identityref
          |  |  +---w mac-address
          |  |  |  +---w mac-address    yang:mac-address
          |  |  +---w ipv4-address
          |  |  |  +---w ipv4-address    inet:ipv4-address
          |  |  +---w ipv6-address
          |  |  |  +---w ipv6-address    inet:ipv6-address
          |  |  +---w tp-attribute
          |  |  |  +---w tp-attribute-type?
          |  |  |  |       address-attribute-type
          |  |  |  +---w (tp-attribute-value)?
          |  |  |     +--:(ip-prefix)
          |  |  |     |  +---w ip-prefix?
          |  |  |     |          inet:ip-prefix
          |  |  |     +--:(bgp)
          |  |  |     |  +---w bgp?
          |  |  |     |          inet:ip-prefix
          |  |  |     +--:(tunnel)
          |  |  |     |  +---w tunnel-interface?         uint32
          |  |  |     +--:(pw)
          |  |  |     |  +---w remote-pe-address?
          |  |  |     |  |       inet:ip-address
          |  |  |     |  +---w pw-id?                    uint32
        
          |  |  |     +--:(vpls)
          |  |  |     |  +---w route-distinguisher?
          |  |  |     |  |       rt:route-distinguisher
          |  |  |     |  +---w sender-ve-id?             uint16
          |  |  |     |  +---w receiver-ve-id?           uint16
          |  |  |     +--:(mpls-mldp)
          |  |  |        +---w (root-address)?
          |  |  |           +--:(ip-address)
          |  |  |           |  +---w source-address?
          |  |  |           |  |       inet:ip-address
          |  |  |           |  +---w group-ip-address?
          |  |  |           |          inet:ip-address
          |  |  |           +--:(vpn)
          |  |  |           |  +---w as-number?
          |  |  |           |          inet:as-number
          |  |  |           +--:(global-id)
          |  |  |              +---w lsp-id?             string
          |  |  +---w system-info
          |  |     +---w router-id?   rt:router-id
          |  +---w source-interface      if:interface-ref
          |  +---w outbound-interface    if:interface-ref
          |  +---w vrf?
          |  |       cl-oam:routing-instance-ref
          |  +---w session-type?         enumeration
          |  +---w max-ttl?              uint8
          +--ro output
             +--ro response-list* [response-index]
             |  +--ro response-index           uint32
             |  +--ro protocol-id              identityref
             |  +--ro protocol-id-meta-data?   identityref
             |  +--ro status-code              identityref
             |  +--ro status-sub-code          identityref
             +--ro src-test-point
             |  +--ro ni?                 routing-instance-ref
             |  +--ro tp-location-type    identityref
             |  +--ro mac-address
             |  |  +--ro mac-address    yang:mac-address
             |  +--ro ipv4-address
             |  |  +--ro ipv4-address    inet:ipv4-address
             |  +--ro ipv6-address
             |  |  +--ro ipv6-address    inet:ipv6-address
             |  +--ro tp-attribute
             |  |  +--ro tp-attribute-type?
             |  |  |       address-attribute-type
             |  |  +--ro (tp-attribute-value)?
             |  |     +--:(ip-prefix)
             |  |     |  +--ro ip-prefix?
             |  |     |          inet:ip-prefix
        
          |  |  |     +--:(vpls)
          |  |  |     |  +---w route-distinguisher?
          |  |  |     |  |       rt:route-distinguisher
          |  |  |     |  +---w sender-ve-id?             uint16
          |  |  |     |  +---w receiver-ve-id?           uint16
          |  |  |     +--:(mpls-mldp)
          |  |  |        +---w (root-address)?
          |  |  |           +--:(ip-address)
          |  |  |           |  +---w source-address?
          |  |  |           |  |       inet:ip-address
          |  |  |           |  +---w group-ip-address?
          |  |  |           |          inet:ip-address
          |  |  |           +--:(vpn)
          |  |  |           |  +---w as-number?
          |  |  |           |          inet:as-number
          |  |  |           +--:(global-id)
          |  |  |              +---w lsp-id?             string
          |  |  +---w system-info
          |  |     +---w router-id?   rt:router-id
          |  +---w source-interface      if:interface-ref
          |  +---w outbound-interface    if:interface-ref
          |  +---w vrf?
          |  |       cl-oam:routing-instance-ref
          |  +---w session-type?         enumeration
          |  +---w max-ttl?              uint8
          +--ro output
             +--ro response-list* [response-index]
             |  +--ro response-index           uint32
             |  +--ro protocol-id              identityref
             |  +--ro protocol-id-meta-data?   identityref
             |  +--ro status-code              identityref
             |  +--ro status-sub-code          identityref
             +--ro src-test-point
             |  +--ro ni?                 routing-instance-ref
             |  +--ro tp-location-type    identityref
             |  +--ro mac-address
             |  |  +--ro mac-address    yang:mac-address
             |  +--ro ipv4-address
             |  |  +--ro ipv4-address    inet:ipv4-address
             |  +--ro ipv6-address
             |  |  +--ro ipv6-address    inet:ipv6-address
             |  +--ro tp-attribute
             |  |  +--ro tp-attribute-type?
             |  |  |       address-attribute-type
             |  |  +--ro (tp-attribute-value)?
             |  |     +--:(ip-prefix)
             |  |     |  +--ro ip-prefix?
             |  |     |          inet:ip-prefix
        
             |  |     +--:(bgp)
             |  |     |  +--ro bgp?
             |  |     |          inet:ip-prefix
             |  |     +--:(tunnel)
             |  |     |  +--ro tunnel-interface?         uint32
             |  |     +--:(pw)
             |  |     |  +--ro remote-pe-address?
             |  |     |  |       inet:ip-address
             |  |     |  +--ro pw-id?                    uint32
             |  |     +--:(vpls)
             |  |     |  +--ro route-distinguisher?
             |  |     |  |       rt:route-distinguisher
             |  |     |  +--ro sender-ve-id?             uint16
             |  |     |  +--ro receiver-ve-id?           uint16
             |  |     +--:(mpls-mldp)
             |  |        +--ro (root-address)?
             |  |           +--:(ip-address)
             |  |           |  +--ro source-address?
             |  |           |  |       inet:ip-address
             |  |           |  +--ro group-ip-address?
             |  |           |          inet:ip-address
             |  |           +--:(vpn)
             |  |           |  +--ro as-number?
             |  |           |          inet:as-number
             |  |           +--:(global-id)
             |  |              +--ro lsp-id?             string
             |  +--ro system-info
             |     +--ro router-id?   rt:router-id
             +--ro dest-test-point
             |  +--ro ni?                 routing-instance-ref
             |  +--ro tp-location-type    identityref
             |  +--ro mac-address
             |  |  +--ro mac-address    yang:mac-address
             |  +--ro ipv4-address
             |  |  +--ro ipv4-address    inet:ipv4-address
             |  +--ro ipv6-address
             |  |  +--ro ipv6-address    inet:ipv6-address
             |  +--ro tp-attribute
             |  |  +--ro tp-attribute-type?
             |  |  |       address-attribute-type
             |  |  +--ro (tp-attribute-value)?
             |  |     +--:(ip-prefix)
             |  |     |  +--ro ip-prefix?
             |  |     |          inet:ip-prefix
             |  |     +--:(bgp)
             |  |     |  +--ro bgp?
             |  |     |          inet:ip-prefix
             |  |     +--:(tunnel)
        
             |  |     +--:(bgp)
             |  |     |  +--ro bgp?
             |  |     |          inet:ip-prefix
             |  |     +--:(tunnel)
             |  |     |  +--ro tunnel-interface?         uint32
             |  |     +--:(pw)
             |  |     |  +--ro remote-pe-address?
             |  |     |  |       inet:ip-address
             |  |     |  +--ro pw-id?                    uint32
             |  |     +--:(vpls)
             |  |     |  +--ro route-distinguisher?
             |  |     |  |       rt:route-distinguisher
             |  |     |  +--ro sender-ve-id?             uint16
             |  |     |  +--ro receiver-ve-id?           uint16
             |  |     +--:(mpls-mldp)
             |  |        +--ro (root-address)?
             |  |           +--:(ip-address)
             |  |           |  +--ro source-address?
             |  |           |  |       inet:ip-address
             |  |           |  +--ro group-ip-address?
             |  |           |          inet:ip-address
             |  |           +--:(vpn)
             |  |           |  +--ro as-number?
             |  |           |          inet:as-number
             |  |           +--:(global-id)
             |  |              +--ro lsp-id?             string
             |  +--ro system-info
             |     +--ro router-id?   rt:router-id
             +--ro dest-test-point
             |  +--ro ni?                 routing-instance-ref
             |  +--ro tp-location-type    identityref
             |  +--ro mac-address
             |  |  +--ro mac-address    yang:mac-address
             |  +--ro ipv4-address
             |  |  +--ro ipv4-address    inet:ipv4-address
             |  +--ro ipv6-address
             |  |  +--ro ipv6-address    inet:ipv6-address
             |  +--ro tp-attribute
             |  |  +--ro tp-attribute-type?
             |  |  |       address-attribute-type
             |  |  +--ro (tp-attribute-value)?
             |  |     +--:(ip-prefix)
             |  |     |  +--ro ip-prefix?
             |  |     |          inet:ip-prefix
             |  |     +--:(bgp)
             |  |     |  +--ro bgp?
             |  |     |          inet:ip-prefix
             |  |     +--:(tunnel)
        
             |  |     |  +--ro tunnel-interface?         uint32
             |  |     +--:(pw)
             |  |     |  +--ro remote-pe-address?
             |  |     |  |       inet:ip-address
             |  |     |  +--ro pw-id?                    uint32
             |  |     +--:(vpls)
             |  |     |  +--ro route-distinguisher?
             |  |     |  |       rt:route-distinguisher
             |  |     |  +--ro sender-ve-id?             uint16
             |  |     |  +--ro receiver-ve-id?           uint16
             |  |     +--:(mpls-mldp)
             |  |        +--ro (root-address)?
             |  |           +--:(ip-address)
             |  |           |  +--ro source-address?
             |  |           |  |       inet:ip-address
             |  |           |  +--ro group-ip-address?
             |  |           |          inet:ip-address
             |  |           +--:(vpn)
             |  |           |  +--ro as-number?
             |  |           |          inet:as-number
             |  |           +--:(global-id)
             |  |              +--ro lsp-id?             string
             |  +--ro system-info
             |     +--ro router-id?   rt:router-id
             +--ro sequence-number?             uint64
             +--ro hop-cnt?                     uint8
             +--ro session-packet-statistics
             |  +--ro rx-packet-count?    uint32
             |  +--ro tx-packet-count?    uint32
             |  +--ro rx-bad-packet?      uint32
             |  +--ro tx-packet-failed?   uint32
             +--ro session-error-statistics
             |  +--ro packet-loss-count?          uint32
             |  +--ro loss-ratio?                 percentage
             |  +--ro packet-reorder-count?       uint32
             |  +--ro packets-out-of-seq-count?   uint32
             |  +--ro packets-dup-count?          uint32
             +--ro session-delay-statistics
             |  +--ro time-unit-value?       identityref
             |  +--ro min-delay-value?       uint32
             |  +--ro max-delay-value?       uint32
             |  +--ro average-delay-value?   uint32
             +--ro session-jitter-statistics
             |  +--ro unit-value?             identityref
             |  +--ro min-jitter-value?       uint32
             |  +--ro max-jitter-value?       uint32
             |  +--ro average-jitter-value?   uint32
             +--ro path-verification
        
             |  |     |  +--ro tunnel-interface?         uint32
             |  |     +--:(pw)
             |  |     |  +--ro remote-pe-address?
             |  |     |  |       inet:ip-address
             |  |     |  +--ro pw-id?                    uint32
             |  |     +--:(vpls)
             |  |     |  +--ro route-distinguisher?
             |  |     |  |       rt:route-distinguisher
             |  |     |  +--ro sender-ve-id?             uint16
             |  |     |  +--ro receiver-ve-id?           uint16
             |  |     +--:(mpls-mldp)
             |  |        +--ro (root-address)?
             |  |           +--:(ip-address)
             |  |           |  +--ro source-address?
             |  |           |  |       inet:ip-address
             |  |           |  +--ro group-ip-address?
             |  |           |          inet:ip-address
             |  |           +--:(vpn)
             |  |           |  +--ro as-number?
             |  |           |          inet:as-number
             |  |           +--:(global-id)
             |  |              +--ro lsp-id?             string
             |  +--ro system-info
             |     +--ro router-id?   rt:router-id
             +--ro sequence-number?             uint64
             +--ro hop-cnt?                     uint8
             +--ro session-packet-statistics
             |  +--ro rx-packet-count?    uint32
             |  +--ro tx-packet-count?    uint32
             |  +--ro rx-bad-packet?      uint32
             |  +--ro tx-packet-failed?   uint32
             +--ro session-error-statistics
             |  +--ro packet-loss-count?          uint32
             |  +--ro loss-ratio?                 percentage
             |  +--ro packet-reorder-count?       uint32
             |  +--ro packets-out-of-seq-count?   uint32
             |  +--ro packets-dup-count?          uint32
             +--ro session-delay-statistics
             |  +--ro time-unit-value?       identityref
             |  +--ro min-delay-value?       uint32
             |  +--ro max-delay-value?       uint32
             |  +--ro average-delay-value?   uint32
             +--ro session-jitter-statistics
             |  +--ro unit-value?             identityref
             |  +--ro min-jitter-value?       uint32
             |  +--ro max-jitter-value?       uint32
             |  +--ro average-jitter-value?   uint32
             +--ro path-verification
        
             |  +--ro flow-info?
             |  |       string
             |  +--ro session-path-verification-statistics
             |     +--ro verified-count?   uint32
             |     +--ro failed-count?     uint32
             +--ro path-trace-info
                +--ro path-trace-info-list* [index]
                   +--ro index                   uint32
                   +--ro ni?
                   |       routing-instance-ref
                   +--ro tp-location-type        identityref
                   +--ro mac-address
                   |  +--ro mac-address    yang:mac-address
                   +--ro ipv4-address
                   |  +--ro ipv4-address    inet:ipv4-address
                   +--ro ipv6-address
                   |  +--ro ipv6-address    inet:ipv6-address
                   +--ro tp-attribute
                   |  +--ro tp-attribute-type?
                   |  |       address-attribute-type
                   |  +--ro (tp-attribute-value)?
                   |     +--:(ip-prefix)
                   |     |  +--ro ip-prefix?
                   |     |          inet:ip-prefix
                   |     +--:(bgp)
                   |     |  +--ro bgp?
                   |     |          inet:ip-prefix
                   |     +--:(tunnel)
                   |     |  +--ro tunnel-interface?
                   |     |          uint32
                   |     +--:(pw)
                   |     |  +--ro remote-pe-address?
                   |     |  |       inet:ip-address
                   |     |  +--ro pw-id?
                   |     |          uint32
                   |     +--:(vpls)
                   |     |  +--ro route-distinguisher?
                   |     |  |       rt:route-distinguisher
                   |     |  +--ro sender-ve-id?
                   |     |  |       uint16
                   |     |  +--ro receiver-ve-id?
                   |     |          uint16
                   |     +--:(mpls-mldp)
                   |        +--ro (root-address)?
                   |           +--:(ip-address)
                   |           |  +--ro source-address?
                   |           |  |       inet:ip-address
                   |           |  +--ro group-ip-address?
        
             |  +--ro flow-info?
             |  |       string
             |  +--ro session-path-verification-statistics
             |     +--ro verified-count?   uint32
             |     +--ro failed-count?     uint32
             +--ro path-trace-info
                +--ro path-trace-info-list* [index]
                   +--ro index                   uint32
                   +--ro ni?
                   |       routing-instance-ref
                   +--ro tp-location-type        identityref
                   +--ro mac-address
                   |  +--ro mac-address    yang:mac-address
                   +--ro ipv4-address
                   |  +--ro ipv4-address    inet:ipv4-address
                   +--ro ipv6-address
                   |  +--ro ipv6-address    inet:ipv6-address
                   +--ro tp-attribute
                   |  +--ro tp-attribute-type?
                   |  |       address-attribute-type
                   |  +--ro (tp-attribute-value)?
                   |     +--:(ip-prefix)
                   |     |  +--ro ip-prefix?
                   |     |          inet:ip-prefix
                   |     +--:(bgp)
                   |     |  +--ro bgp?
                   |     |          inet:ip-prefix
                   |     +--:(tunnel)
                   |     |  +--ro tunnel-interface?
                   |     |          uint32
                   |     +--:(pw)
                   |     |  +--ro remote-pe-address?
                   |     |  |       inet:ip-address
                   |     |  +--ro pw-id?
                   |     |          uint32
                   |     +--:(vpls)
                   |     |  +--ro route-distinguisher?
                   |     |  |       rt:route-distinguisher
                   |     |  +--ro sender-ve-id?
                   |     |  |       uint16
                   |     |  +--ro receiver-ve-id?
                   |     |          uint16
                   |     +--:(mpls-mldp)
                   |        +--ro (root-address)?
                   |           +--:(ip-address)
                   |           |  +--ro source-address?
                   |           |  |       inet:ip-address
                   |           |  +--ro group-ip-address?
        
                   |           |          inet:ip-address
                   |           +--:(vpn)
                   |           |  +--ro as-number?
                   |           |          inet:as-number
                   |           +--:(global-id)
                   |              +--ro lsp-id?
                   |                      string
                   +--ro system-info
                   |  +--ro router-id?   rt:router-id
                   +--ro timestamp-type?         identityref
                   +--ro timestamp-64bit
                   |  +--ro timestamp-sec?       uint32
                   |  +--ro timestamp-nanosec?   uint32
                   +--ro timestamp-80bit {ptp-long-format}?
                   |  +--ro timestamp-sec?       uint64
                   |  +--ro timestamp-nanosec?   uint32
                   +--ro ntp-timestamp-32bit
                   |       {ntp-short-format}?
                   |  +--ro timestamp-sec?       uint16
                   |  +--ro timestamp-nanosec?   uint16
                   +--ro icmp-timestamp-32bit {icmp-timestamp}?
                   |  +--ro timestamp-millisec?   uint32
                   +--ro ingress-intf-name?
                   |       if:interface-ref
                   +--ro egress-intf-name?
                   |       if:interface-ref
                   +--ro queue-depth?            uint32
                   +--ro transit-delay?          uint32
                   +--ro app-meta-data?          uint64
        
                   |           |          inet:ip-address
                   |           +--:(vpn)
                   |           |  +--ro as-number?
                   |           |          inet:as-number
                   |           +--:(global-id)
                   |              +--ro lsp-id?
                   |                      string
                   +--ro system-info
                   |  +--ro router-id?   rt:router-id
                   +--ro timestamp-type?         identityref
                   +--ro timestamp-64bit
                   |  +--ro timestamp-sec?       uint32
                   |  +--ro timestamp-nanosec?   uint32
                   +--ro timestamp-80bit {ptp-long-format}?
                   |  +--ro timestamp-sec?       uint64
                   |  +--ro timestamp-nanosec?   uint32
                   +--ro ntp-timestamp-32bit
                   |       {ntp-short-format}?
                   |  +--ro timestamp-sec?       uint16
                   |  +--ro timestamp-nanosec?   uint16
                   +--ro icmp-timestamp-32bit {icmp-timestamp}?
                   |  +--ro timestamp-millisec?   uint32
                   +--ro ingress-intf-name?
                   |       if:interface-ref
                   +--ro egress-intf-name?
                   |       if:interface-ref
                   +--ro queue-depth?            uint32
                   +--ro transit-delay?          uint32
                   +--ro app-meta-data?          uint64
        

Data Hierarchy of OAM Retrieval Methods

OAM检索方法的数据层次结构

4. OAM Retrieval Methods YANG Module
4. OAM检索方法模块

<CODE BEGINS> file "ietf-connectionless-oam-methods@2019-04-16.yang"

<CODE start>文件“ietf无连接oam-methods@2019-04-16.杨”

module ietf-connectionless-oam-methods {
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods";
  prefix cloam-methods;
        
module ietf-connectionless-oam-methods {
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods";
  prefix cloam-methods;
        
  import ietf-interfaces {
    prefix if;
  }
  import ietf-connectionless-oam {
    prefix cl-oam;
  }
        
  import ietf-interfaces {
    prefix if;
  }
  import ietf-connectionless-oam {
    prefix cl-oam;
  }
        
  organization
    "IETF LIME Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lime>
     WG List:  <mailto:lmap@ietf.org>
        
  organization
    "IETF LIME Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lime>
     WG List:  <mailto:lmap@ietf.org>
        

Deepak Kumar <dekumar@cisco.com> Qin Wu <bill.wu@huawei.com> Srihari Raghavan <rihari@cisco.com> Michael Wang <wangzitao@huawei.com> Reshad Rahman <rrahman@cisco.com>"; description "This YANG module defines the RPC operations for connectionless OAM to be used within the IETF in a protocol-independent manner. It is assumed that each protocol maps corresponding abstracts to its native format. Each protocol may extend the YANG data model defined here to include protocol-specific extensions.

迪帕克库马尔<dekumar@cisco.com>秦武<比尔。wu@huawei.com>斯利哈里·拉哈万<rihari@cisco.com>迈克尔·王<wangzitao@huawei.com>雷沙德·拉赫曼<rrahman@cisco.com>“说明”该模块定义了在IETF中以独立于协议的方式使用的无连接OAM的RPC操作。假设每个协议都将相应的摘要映射到其本机格式。每个协议都可以扩展此处定义的YANG数据模型,以包括特定于协议的扩展。

Copyright (c) 2019 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权(c)2019 IETF信托基金和被认定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info).

根据IETF信托有关IETF文件的法律规定第4.c节规定的简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改(http://trustee.ietf.org/license-info).

This version of this YANG module is part of RFC 8533; see the RFC itself for full legal notices.";

该模块的此版本是RFC 8533的一部分;有关完整的法律通知,请参见RFC本身。“;

  revision 2019-04-16 {
    description
      "Initial revision.";
    reference
      "RFC 8533: Retrieval Methods YANG Data Model for the Management
       of Operations, Administration, and Maintenance (OAM)
       Protocols That Use Connectionless Communications";
  }
        
  revision 2019-04-16 {
    description
      "Initial revision.";
    reference
      "RFC 8533: Retrieval Methods YANG Data Model for the Management
       of Operations, Administration, and Maintenance (OAM)
       Protocols That Use Connectionless Communications";
  }
        
  identity protocol-id {
    description
      "This is the base identity for a generic protocol
       ID.  The protocol registry can be found at
       https://www.iana.org/protocols.";
  }
        
  identity protocol-id {
    description
      "This is the base identity for a generic protocol
       ID.  The protocol registry can be found at
       https://www.iana.org/protocols.";
  }
        
  identity protocol-id-internet {
    base protocol-id;
    description
      "Identity for Internet Protocols.";
  }
        
  identity protocol-id-internet {
    base protocol-id;
    description
      "Identity for Internet Protocols.";
  }
        
  identity protocol-id-proprietary {
    base protocol-id;
    description
      "Identity for proprietary protocols (e.g.,
       IP SLA).";
  }
        
  identity protocol-id-proprietary {
    base protocol-id;
    description
      "Identity for proprietary protocols (e.g.,
       IP SLA).";
  }
        
  identity protocol-id-sfc {
    base protocol-id;
    description
      "Identity for Service Function Chaining.";
  }
        
  identity protocol-id-sfc {
    base protocol-id;
    description
      "Identity for Service Function Chaining.";
  }
        
  identity protocol-id-mpls {
    base protocol-id;
    description
      "The MPLS protocol.";
  }
        
  identity protocol-id-mpls {
    base protocol-id;
    description
      "The MPLS protocol.";
  }
        
  identity protocol-id-mpls-tp {
    base protocol-id;
    description
      "The MPLS-TP protocol.";
  }
        
  identity protocol-id-mpls-tp {
    base protocol-id;
    description
      "The MPLS-TP protocol.";
  }
        
  identity protocol-id-twamp {
    base protocol-id;
    description
      "The Two-Way Active Measurement Protocol (TWAMP)
       protocol.";
  }
        
  identity protocol-id-twamp {
    base protocol-id;
    description
      "The Two-Way Active Measurement Protocol (TWAMP)
       protocol.";
  }
        
  identity protocol-id-bier {
    base protocol-id;
    description
      "The Bit Index Explicit Replication (BIER)
       protocol.";
  }
        
  identity protocol-id-bier {
    base protocol-id;
    description
      "The Bit Index Explicit Replication (BIER)
       protocol.";
  }
        
  identity status-code {
    description
      "This is base identity for a status code.";
        
  identity status-code {
    description
      "This is base identity for a status code.";
        

}

}

  identity success-reach {
    base status-code;
    description
      "Indicates that the destination being verified
       is reachable (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity success-reach {
    base status-code;
    description
      "Indicates that the destination being verified
       is reachable (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity fail-reach {
    base status-code;
    description
      "Indicates that the destination being verified
       is not reachable (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity fail-reach {
    base status-code;
    description
      "Indicates that the destination being verified
       is not reachable (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity success-path-verification {
    base status-code;
    description
      "Indicates that the path verification is performed
       successfully (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity success-path-verification {
    base status-code;
    description
      "Indicates that the path verification is performed
       successfully (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity fail-path-verification {
    base status-code;
    description
      "Indicates that the path verification fails
       (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity fail-path-verification {
    base status-code;
    description
      "Indicates that the path verification fails
       (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity status-sub-code {
    description
      "IdentityBase status-sub-code.";
  }
        
  identity status-sub-code {
    description
      "IdentityBase status-sub-code.";
  }
        

identity invalid-cc {

身份无效cc{

    base status-sub-code;
    description
      "Indicates that the Continuity Check message is invalid
       (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
    base status-sub-code;
    description
      "Indicates that the Continuity Check message is invalid
       (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity invalid-pd {
    base status-sub-code;
    description
      "Indicates that the path discovery message is invalid
       (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity invalid-pd {
    base status-sub-code;
    description
      "Indicates that the path discovery message is invalid
       (see RFC 7276).";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
  }
        
  identity protocol-id-meta-data {
    description
      "This is the base identity for metadata that corresponds
       to the protocol ID.";
  }
        
  identity protocol-id-meta-data {
    description
      "This is the base identity for metadata that corresponds
       to the protocol ID.";
  }
        
  identity protocol-internet-number {
    base protocol-id-meta-data;
    description
      "Internet Protocol number for standard
       Internet Protocols (IANA-assigned Internet
       Protocol numbers) to help in protocol processing.
       The Protocol Numbers registry can be found at
       https://www.iana.org/assignments/protocol-numbers.";
  }
        
  identity protocol-internet-number {
    base protocol-id-meta-data;
    description
      "Internet Protocol number for standard
       Internet Protocols (IANA-assigned Internet
       Protocol numbers) to help in protocol processing.
       The Protocol Numbers registry can be found at
       https://www.iana.org/assignments/protocol-numbers.";
  }
        
  grouping rpc-input-parameters {
    container destination-tp {
      uses cl-oam:tp-address;
      description
        "Destination test point.";
    }
    leaf source-interface {
      type if:interface-ref;
      mandatory true;
      description
        "Source interface.";
    }
    leaf outbound-interface {
        
  grouping rpc-input-parameters {
    container destination-tp {
      uses cl-oam:tp-address;
      description
        "Destination test point.";
    }
    leaf source-interface {
      type if:interface-ref;
      mandatory true;
      description
        "Source interface.";
    }
    leaf outbound-interface {
        
      type if:interface-ref;
      mandatory true;
      description
        "Outbound interface.";
    }
    leaf vrf {
      type cl-oam:routing-instance-ref;
      description
        "Virtual Routing and Forwarding (VRF) instance.";
    }
    description
      "Grouping for RPC input parameters";
  }
        
      type if:interface-ref;
      mandatory true;
      description
        "Outbound interface.";
    }
    leaf vrf {
      type cl-oam:routing-instance-ref;
      description
        "Virtual Routing and Forwarding (VRF) instance.";
    }
    description
      "Grouping for RPC input parameters";
  }
        
  rpc continuity-check {
    if-feature "cl-oam:continuity-check";
    description
      "Continuity Check RPC operation as per RFC 7276.";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
    input {
      uses rpc-input-parameters;
      uses cl-oam:session-type {
        description
          "If session-type is specified, then session-type
              must be set to on demand";
      }
      leaf count {
        type uint32 {
          range "0..4294967295" {
            description
              "The overall number of packets to be transmitted
               by the sender.  The value of the count will be set
               to zero (0) on creation and will thereafter
               increase monotonically until it reaches a maximum
               value of 2^32-1 (4294967295 decimal), when it wraps
               around and starts increasing again from zero.";
          }
        }
        default "5";
        description
          "Specifies the number of
           packets that will be sent.  By
           default, the packet number is
           set to 5.";
      }
      leaf ttl {
        
  rpc continuity-check {
    if-feature "cl-oam:continuity-check";
    description
      "Continuity Check RPC operation as per RFC 7276.";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
    input {
      uses rpc-input-parameters;
      uses cl-oam:session-type {
        description
          "If session-type is specified, then session-type
              must be set to on demand";
      }
      leaf count {
        type uint32 {
          range "0..4294967295" {
            description
              "The overall number of packets to be transmitted
               by the sender.  The value of the count will be set
               to zero (0) on creation and will thereafter
               increase monotonically until it reaches a maximum
               value of 2^32-1 (4294967295 decimal), when it wraps
               around and starts increasing again from zero.";
          }
        }
        default "5";
        description
          "Specifies the number of
           packets that will be sent.  By
           default, the packet number is
           set to 5.";
      }
      leaf ttl {
        
        type uint8;
        default "255";
        description
          "Time to live (TTL) used to limit the lifetime
           of data packets transmitted in the network
           to prevent looping.  The TTL value is decremented
           for every hop that the packet traverses.  If the
           TTL is zero, the data packet will be discarded.";
      }
      leaf packet-size {
        type uint32 {
          range "64..10000";
        }
        default "64";
        description
          "Packet size of the Continuity Check message, in octets.
           By default, the packet size is set to 64 octets.";
      }
    }
    output {
      container response-info {
        leaf protocol-id {
          type identityref {
            base protocol-id;
          }
          mandatory true;
          description
            "Protocol used in the Continuity Check message.
             This could be a standard protocol (e.g.,
             TCP/IP protocols, MPLS, etc.) or a proprietary
             protocol as identified by this field.";
        }
        leaf protocol-id-meta-data {
          type identityref {
            base protocol-id-meta-data;
          }
          description
            "An optional metadata related to the protocol ID.
             For example, this could be the Internet Protocol
             number for standard Internet Protocols used for
             help with protocol processing.";
        }
        leaf status-code {
          type identityref {
            base status-code;
          }
          mandatory true;
          description
        
        type uint8;
        default "255";
        description
          "Time to live (TTL) used to limit the lifetime
           of data packets transmitted in the network
           to prevent looping.  The TTL value is decremented
           for every hop that the packet traverses.  If the
           TTL is zero, the data packet will be discarded.";
      }
      leaf packet-size {
        type uint32 {
          range "64..10000";
        }
        default "64";
        description
          "Packet size of the Continuity Check message, in octets.
           By default, the packet size is set to 64 octets.";
      }
    }
    output {
      container response-info {
        leaf protocol-id {
          type identityref {
            base protocol-id;
          }
          mandatory true;
          description
            "Protocol used in the Continuity Check message.
             This could be a standard protocol (e.g.,
             TCP/IP protocols, MPLS, etc.) or a proprietary
             protocol as identified by this field.";
        }
        leaf protocol-id-meta-data {
          type identityref {
            base protocol-id-meta-data;
          }
          description
            "An optional metadata related to the protocol ID.
             For example, this could be the Internet Protocol
             number for standard Internet Protocols used for
             help with protocol processing.";
        }
        leaf status-code {
          type identityref {
            base status-code;
          }
          mandatory true;
          description
        
            "Status code for Continuity Check RPC operation.
             This could be a basic status code (e.g., destination
             is reachable or destination is not reachable; see RFC 7276)
             or some customized status code as identified by this
             field.";
          reference
            "RFC 7276: An Overview of Operations, Administration, and
             Maintenance (OAM) Tools";
        }
        leaf status-sub-code {
          type identityref {
            base status-sub-code;
          }
          mandatory true;
          description
            "An optional status-sub-code for Continuity Check
             RPC operation.  If the basic status code is destination
             reachable, this status-sub-code doesn't need to be
             specified.  If the basic status code is destination
             unreachable, the status-sub-code can be used to specify
             the detailed reasons.  This could be a basic
             sub-status-code (such as an invalid Continuity Check) or
             other error codes specific to the protocol under use for
             the Continuity Checks.  For example, if ICMP is the
             protocol under use, the error codes defined in RFC 4443
             can be used to specify the reasons specific to ICMP.
             This technology-specific status-sub-code can be
             defined in technology-specific models.";
          reference
            "RFC 4443: The IETF Administrative Oversight Committee
             (IAOC) Member Selection Guidelines and Process.";
        }
        description
          "Status code and status-sub-code for Continuity Check RPC
           operation.";
      }
      uses cl-oam:continuity-check-data;
    }
  }
        
            "Status code for Continuity Check RPC operation.
             This could be a basic status code (e.g., destination
             is reachable or destination is not reachable; see RFC 7276)
             or some customized status code as identified by this
             field.";
          reference
            "RFC 7276: An Overview of Operations, Administration, and
             Maintenance (OAM) Tools";
        }
        leaf status-sub-code {
          type identityref {
            base status-sub-code;
          }
          mandatory true;
          description
            "An optional status-sub-code for Continuity Check
             RPC operation.  If the basic status code is destination
             reachable, this status-sub-code doesn't need to be
             specified.  If the basic status code is destination
             unreachable, the status-sub-code can be used to specify
             the detailed reasons.  This could be a basic
             sub-status-code (such as an invalid Continuity Check) or
             other error codes specific to the protocol under use for
             the Continuity Checks.  For example, if ICMP is the
             protocol under use, the error codes defined in RFC 4443
             can be used to specify the reasons specific to ICMP.
             This technology-specific status-sub-code can be
             defined in technology-specific models.";
          reference
            "RFC 4443: The IETF Administrative Oversight Committee
             (IAOC) Member Selection Guidelines and Process.";
        }
        description
          "Status code and status-sub-code for Continuity Check RPC
           operation.";
      }
      uses cl-oam:continuity-check-data;
    }
  }
        
  rpc path-discovery {
    if-feature "cl-oam:path-discovery";
    description
      "Path discovery RPC operation as per RFC 7276.";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
    input {
        
  rpc path-discovery {
    if-feature "cl-oam:path-discovery";
    description
      "Path discovery RPC operation as per RFC 7276.";
    reference
      "RFC 7276: An Overview of Operations, Administration, and
       Maintenance (OAM) Tools";
    input {
        
      uses rpc-input-parameters;
      uses cl-oam:session-type {
        description
          "If session-type is specified, then session-type
            must be set to on demand";
      }
      leaf max-ttl {
        type uint8;
        default "255";
        description
          "Maximum TTL indicates the maximum number of hops that
           a packet is permitted to travel before being discarded
           by a router.  By default, the maximum TTL is set to
           255.";
      }
    }
    output {
      list response-list {
        key "response-index";
        description
          "Path discovery response list.";
        leaf response-index {
          type uint32;
          mandatory true;
          description
            "Response index.";
        }
        leaf protocol-id {
          type identityref {
            base protocol-id;
          }
          mandatory true;
          description
            "Protocol used in path discovery.  This could be a
             standard protocol (e.g., TCP/IP protocols, MPLS, etc.)
             or a proprietary protocol as identified by
             this field.";
        }
        leaf protocol-id-meta-data {
          type identityref {
            base protocol-id-meta-data;
          }
          description
            "An optional metadata related to the protocol ID.
             For example, this could be the Internet Protocol
             number for standard Internet Protocols used for
             help with protocol processing.";
        }
        
      uses rpc-input-parameters;
      uses cl-oam:session-type {
        description
          "If session-type is specified, then session-type
            must be set to on demand";
      }
      leaf max-ttl {
        type uint8;
        default "255";
        description
          "Maximum TTL indicates the maximum number of hops that
           a packet is permitted to travel before being discarded
           by a router.  By default, the maximum TTL is set to
           255.";
      }
    }
    output {
      list response-list {
        key "response-index";
        description
          "Path discovery response list.";
        leaf response-index {
          type uint32;
          mandatory true;
          description
            "Response index.";
        }
        leaf protocol-id {
          type identityref {
            base protocol-id;
          }
          mandatory true;
          description
            "Protocol used in path discovery.  This could be a
             standard protocol (e.g., TCP/IP protocols, MPLS, etc.)
             or a proprietary protocol as identified by
             this field.";
        }
        leaf protocol-id-meta-data {
          type identityref {
            base protocol-id-meta-data;
          }
          description
            "An optional metadata related to the protocol ID.
             For example, this could be the Internet Protocol
             number for standard Internet Protocols used for
             help with protocol processing.";
        }
        
        leaf status-code {
          type identityref {
            base status-code;
          }
          mandatory true;
          description
            "Status code for Continuity Check RPC operation.
             This could be a basic status code (e.g., destination
             is reachable or destination is not reachable) or some
             customized status code as identified by this field.";
        }
        leaf status-sub-code {
          type identityref {
            base status-sub-code;
          }
          mandatory true;
          description
            "An optional status-sub-code for Continuity Check
             RPC operation.  If the basic status code is destination
             reachable, this status-sub-code doesn't need to be
             specified.  If the basic status code is destination
             unreachable, the status-sub-code can be used to specify
             the detailed reasons.  This could be a basic
             sub-status-code (such as an invalid Continuity Check) or
             other error codes specific to the protocol under use for
             Continuity Checks.  For example, if ICMP is the protocol
             under use, the error codes defined in RFC 4443
             can be used to specify the reasons specific to ICMP.
             This technology-specific status-sub-code can be defined
             in technology-specific models.";
          reference
            "RFC 4443: The IETF Administrative Oversight Committee
             (IAOC) Member Selection Guidelines and Process.";
        }
      }
      uses cl-oam:path-discovery-data;
    }
  }
}
        
        leaf status-code {
          type identityref {
            base status-code;
          }
          mandatory true;
          description
            "Status code for Continuity Check RPC operation.
             This could be a basic status code (e.g., destination
             is reachable or destination is not reachable) or some
             customized status code as identified by this field.";
        }
        leaf status-sub-code {
          type identityref {
            base status-sub-code;
          }
          mandatory true;
          description
            "An optional status-sub-code for Continuity Check
             RPC operation.  If the basic status code is destination
             reachable, this status-sub-code doesn't need to be
             specified.  If the basic status code is destination
             unreachable, the status-sub-code can be used to specify
             the detailed reasons.  This could be a basic
             sub-status-code (such as an invalid Continuity Check) or
             other error codes specific to the protocol under use for
             Continuity Checks.  For example, if ICMP is the protocol
             under use, the error codes defined in RFC 4443
             can be used to specify the reasons specific to ICMP.
             This technology-specific status-sub-code can be defined
             in technology-specific models.";
          reference
            "RFC 4443: The IETF Administrative Oversight Committee
             (IAOC) Member Selection Guidelines and Process.";
        }
      }
      uses cl-oam:path-discovery-data;
    }
  }
}
        

<CODE ENDS>

<代码结束>

5. Security Considerations
5. 安全考虑

The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].

本文档中指定的模块为数据定义了一个模式,该模式旨在通过网络管理协议(如NETCONF[RFC6241]或restcconf[RFC8040])进行访问。最低的NETCONF层是安全传输层,实现安全传输的强制要求是安全Shell(SSH)[RFC6242]。最低的RESTCONF层是HTTPS,实现安全传输的强制层是TLS[RFC8446]。

The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

网络配置访问控制模型(NACM)[RFC8341]提供了将特定NETCONF或RESTCONF用户的访问限制为所有可用NETCONF或RESTCONF协议操作和内容的预配置子集的方法。

Some of the RPC operations in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control access to these operations. These are the operations and their sensitivity/vulnerability:

在某些网络环境中,此模块中的某些RPC操作可能被视为敏感或易受攻击。因此,控制对这些操作的访问非常重要。这些是操作及其敏感性/脆弱性:

o continuity-check: Generates Continuity Check.

o 连续性检查:生成连续性检查。

o path-discovery: Generates path discovery.

o 路径发现:生成路径发现。

These operations are used to retrieve the data from the device that needs to execute the OAM command. Unauthorized source access to some sensitive information in the above data may be used for network reconnaissance or lead to denial-of-service attacks on both the local device and the network.

这些操作用于从需要执行OAM命令的设备检索数据。对上述数据中某些敏感信息的未经授权的源访问可能被用于网络侦察或导致本地设备和网络上的拒绝服务攻击。

6. IANA Considerations
6. IANA考虑

This document registers a URI in the "IETF XML Registry" [RFC3688]. The following registration has been made:

本文档在“IETF XML注册表”[RFC3688]中注册URI。已进行以下登记:

URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods Registrant Contact: The IESG. XML: N/A, the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:ietf无连接oam方法注册人联系人:IESG。XML:N/A,请求的URI是一个XML名称空间。

This document registers a YANG module in the "YANG Module Names" registry [RFC6020].

本文件在“阳模块名称”注册表[RFC6020]中注册阳模块。

   name: ietf-connectionless-oam-methods
   namespace:
      urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods
   prefix: cloam-methods
   reference: RFC 8533
        
   name: ietf-connectionless-oam-methods
   namespace:
      urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods
   prefix: cloam-methods
   reference: RFC 8533
        
7. References
7. 工具书类
7.1. Normative References
7.1. 规范性引用文件

[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>.

[RFC3688]Mealling,M.,“IETF XML注册表”,BCP 81,RFC 3688,DOI 10.17487/RFC3688,2004年1月<https://www.rfc-editor.org/info/rfc3688>.

[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>.

[RFC6020]Bjorklund,M.,Ed.“YANG-网络配置协议的数据建模语言(NETCONF)”,RFC 6020,DOI 10.17487/RFC6020,2010年10月<https://www.rfc-editor.org/info/rfc6020>.

[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, <https://www.rfc-editor.org/info/rfc6241>.

[RFC6241]Enns,R.,Ed.,Bjorklund,M.,Ed.,Schoenwaeld,J.,Ed.,和A.Bierman,Ed.,“网络配置协议(NETCONF)”,RFC 6241,DOI 10.17487/RFC6241,2011年6月<https://www.rfc-editor.org/info/rfc6241>.

[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, <https://www.rfc-editor.org/info/rfc6242>.

[RFC6242]Wasserman,M.“在安全外壳上使用NETCONF协议(SSH)”,RFC 6242,DOI 10.17487/RFC6242,2011年6月<https://www.rfc-editor.org/info/rfc6242>.

[RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, "Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of Flow Information", STD 77, RFC 7011, DOI 10.17487/RFC7011, September 2013, <https://www.rfc-editor.org/info/rfc7011>.

[RFC7011]Claise,B.,Ed.,Trammell,B.,Ed.,和P.Aitken,“流量信息交换的IP流量信息导出(IPFIX)协议规范”,STD 77,RFC 7011,DOI 10.17487/RFC7011,2013年9月<https://www.rfc-editor.org/info/rfc7011>.

[RFC792] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792, DOI 10.17487/RFC0792, September 1981.

[RFC792]Postel,J.,“互联网控制消息协议”,STD 5,RFC 792,DOI 10.17487/RFC0792,1981年9月。

[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, <https://www.rfc-editor.org/info/rfc8040>.

[RFC8040]Bierman,A.,Bjorklund,M.,和K.Watsen,“RESTCONF协议”,RFC 8040,DOI 10.17487/RFC8040,2017年1月<https://www.rfc-editor.org/info/rfc8040>.

[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, <https://www.rfc-editor.org/info/rfc8341>.

[RFC8341]Bierman,A.和M.Bjorklund,“网络配置访问控制模型”,STD 91,RFC 8341,DOI 10.17487/RFC8341,2018年3月<https://www.rfc-editor.org/info/rfc8341>.

[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>.

[RFC8446]Rescorla,E.“传输层安全(TLS)协议版本1.3”,RFC 8446,DOI 10.17487/RFC8446,2018年8月<https://www.rfc-editor.org/info/rfc8446>.

[RFC8532] Kumar, D., Wang, M., Wu, Q., Ed., Rahman, R., and S. Raghavan, "Generic YANG Data Model for the Management of Operations, Administration, and Maintenance (OAM) Protocols That Use Connectionless Communications", RFC 8532, DOI 10.17487/RFC8532, April 2019, <https://www.rfc-editor.org/info/rfc8532>.

[RFC8532]Kumar,D.,Wang,M.,Wu,Q.,Ed.,Rahman,R.,和S.Raghavan,“使用无连接通信的操作、管理和维护(OAM)协议管理的通用数据模型”,RFC 8532,DOI 10.17487/RFC8532,2019年4月<https://www.rfc-editor.org/info/rfc8532>.

7.2. Informative References
7.2. 资料性引用

[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification", STD 89, RFC 4443, DOI 10.17487/RFC4443, March 2006, <https://www.rfc-editor.org/info/rfc4443>.

[RFC4443]Conta,A.,Deering,S.和M.Gupta,Ed.“互联网协议版本6(IPv6)规范的互联网控制消息协议(ICMPv6)”,STD 89,RFC 4443,DOI 10.17487/RFC4443,2006年3月<https://www.rfc-editor.org/info/rfc4443>.

[RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, <https://www.rfc-editor.org/info/rfc5880>.

[RFC5880]Katz,D.和D.Ward,“双向转发检测(BFD)”,RFC 5880,DOI 10.17487/RFC5880,2010年6月<https://www.rfc-editor.org/info/rfc5880>.

[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, <https://www.rfc-editor.org/info/rfc7276>.

[RFC7276]Mizrahi,T.,Sprecher,N.,Bellagamba,E.,和Y.Weingarten,“运营、管理和维护(OAM)工具概述”,RFC 7276,DOI 10.17487/RFC72762014年6月<https://www.rfc-editor.org/info/rfc7276>.

[RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., Aldrin, S., and M. Chen, "Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures", RFC 8029, DOI 10.17487/RFC8029, March 2017, <https://www.rfc-editor.org/info/rfc8029>.

[RFC8029]Kompella,K.,Swallow,G.,Pignataro,C.,Ed.,Kumar,N.,Aldrin,S.,和M.Chen,“检测多协议标签交换(MPLS)数据平面故障”,RFC 8029,DOI 10.17487/RFC8029,2017年3月<https://www.rfc-editor.org/info/rfc8029>.

[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>.

[RFC8340]Bjorklund,M.和L.Berger,编辑,“杨树图”,BCP 215,RFC 8340,DOI 10.17487/RFC8340,2018年3月<https://www.rfc-editor.org/info/rfc8340>.

[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of Documents Containing YANG Data Models", BCP 216, RFC 8407, DOI 10.17487/RFC8407, October 2018, <https://www.rfc-editor.org/info/rfc8407>.

[RFC8407]Bierman,A.,“包含YANG数据模型的文件的作者和审查者指南”,BCP 216,RFC 8407,DOI 10.17487/RFC8407,2018年10月<https://www.rfc-editor.org/info/rfc8407>.

[YANG-Push] Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen-Nygaard, E., Bierman, A., and B. Lengyel, "Subscription to YANG Datastores", Work in Progress, draft-ietf-netconf-yang-push-22, February 2019.

[YANG Push]Clemm,A.,Voit,E.,Prieto,A.,Tripathy,A.,Nilsen Nygaard,E.,Bierman,A.,和B.Lengyel,“YANG数据存储订阅”,正在进行的工作,草案-ietf-netconf-YANG-Push-22,2019年2月。

Appendix A. Extending Connectionless OAM Method Module Example
附录A.扩展无连接OAM方法模块示例

The following is an example of extensions possible to the "ietf-connectionless-oam-methods" YANG data model defined in this document.

以下是本文档中定义的“ietf无连接oam方法”数据模型的扩展示例。

The snippet below depicts an example of augmenting the "ietf-connectionless-oam-methods" YANG data model with ICMP ping attributes:

下面的代码片段描述了使用ICMP ping属性扩充“ietf无连接oam方法”数据模型的示例:

   augment "/cloam-methods:continuity-check"
   +"/cloam-methods:output"{
     container session-rtt-statistics{
      leaf min-rtt{
       type uint32;
    description
    "This minimum ping round-trip-time (RTT) received.";
      }
      leaf max-rtt{
       type uint32;
    description
    "This maximum ping RTT received.";
      }
      leaf avg-rtt{
       type uint32;
    description
     "The current average ping RTT.";
      }
      description
      "This container presents the ping RTT statistics.";
     }
   }
        
   augment "/cloam-methods:continuity-check"
   +"/cloam-methods:output"{
     container session-rtt-statistics{
      leaf min-rtt{
       type uint32;
    description
    "This minimum ping round-trip-time (RTT) received.";
      }
      leaf max-rtt{
       type uint32;
    description
    "This maximum ping RTT received.";
      }
      leaf avg-rtt{
       type uint32;
    description
     "The current average ping RTT.";
      }
      description
      "This container presents the ping RTT statistics.";
     }
   }
        
A.1. Example of New Retrieval Procedures Model
A.1. 新检索过程模型示例

As discussed in the Introduction section of this document, the new retrieval procedures can be defined for retrieval of the same data defined by the base YANG data model for connectionless OAM protocols. This appendix demonstrates how the base connectionless OAM data model can be extended to support persistent data retrieval besides on-demand retrieval procedures defined in Section 3, i.e., first retrieve a persistent-id based on the destination test point location information, and then retrieve the export details based on persistent-id. Internet Protocol Flow Information Export (IPFIX) [RFC7011] or YANG-Push [YANG-Push] are currently outlined here as data export options. Additional export options can be added in the future.

如本文引言部分所述,可以定义新的检索过程,用于检索由无连接OAM协议的基本数据模型定义的相同数据。本附录演示了如何扩展基本无连接OAM数据模型,以支持除第3节中定义的按需检索过程外的持久数据检索,即首先根据目标测试点位置信息检索持久id,然后根据persistent-id检索导出详细信息。Internet协议流信息导出(IPFIX)[RFC7011]或YANG Push[YANG Push]目前概述为数据导出选项。以后可以添加其他导出选项。

The YANG module "example-cl-oam-persistent-methods" shown below is intended as an illustration rather than a real definition of an RPC operation model for persistent data retrieval. For the sake of brevity, this module does not obey all the guidelines specified in [RFC8407].

下面显示的模块“示例cl oam持久方法”旨在作为持久数据检索的RPC操作模型的说明,而不是实际定义。为简洁起见,本模块不遵守[RFC8407]中规定的所有准则。

   module example-cl-oam-persistent-methods {
     namespace "http://example.com/cl-oam-persistent-methods";
     prefix pcloam-methods;
        
   module example-cl-oam-persistent-methods {
     namespace "http://example.com/cl-oam-persistent-methods";
     prefix pcloam-methods;
        
     import ietf-interfaces {
       prefix if;
     }
     import ietf-connectionless-oam {
       prefix cl-oam;
     }
     import ietf-yang-types {
       prefix yang;
     }
        
     import ietf-interfaces {
       prefix if;
     }
     import ietf-connectionless-oam {
       prefix cl-oam;
     }
     import ietf-yang-types {
       prefix yang;
     }
        
     identity export-method {
       description
         "Base identity to represent a conceptual
          export-method.";
     }
        
     identity export-method {
       description
         "Base identity to represent a conceptual
          export-method.";
     }
        
     identity ipfix-export {
       base export-method;
       description
         "IPFIX-based export.  Configuration provided
          separately.";
     }
        
     identity ipfix-export {
       base export-method;
       description
         "IPFIX-based export.  Configuration provided
          separately.";
     }
        
     identity yang-push-export {
       base export-method;
       description
         "YANG-Push from draft-ietf-netconf-yang-push.";
     }
        
     identity yang-push-export {
       base export-method;
       description
         "YANG-Push from draft-ietf-netconf-yang-push.";
     }
        
     identity protocol-id {
       description
         "A generic protocol identifier.";
     }
        
     identity protocol-id {
       description
         "A generic protocol identifier.";
     }
        
     identity status-code {
       description
         "Base status code.";
     }
        
     identity status-code {
       description
         "Base status code.";
     }
        
     identity success-reach {
       base status-code;
       description
         "Indicates that the destination being verified
          is reachable.";
     }
        
     identity success-reach {
       base status-code;
       description
         "Indicates that the destination being verified
          is reachable.";
     }
        
     identity fail-reach {
       base status-code;
       description
         "Indicates that the destination being verified
          is not reachable";
     }
        
     identity fail-reach {
       base status-code;
       description
         "Indicates that the destination being verified
          is not reachable";
     }
        
     identity success-path-verification {
       base status-code;
       description
         "Indicates that the path verification is performed
          successfully.";
     }
        
     identity success-path-verification {
       base status-code;
       description
         "Indicates that the path verification is performed
          successfully.";
     }
        
     identity fail-path-verification {
       base status-code;
       description
         "Indicates that the path verification fails.";
     }
        
     identity fail-path-verification {
       base status-code;
       description
         "Indicates that the path verification fails.";
     }
        
     identity status-sub-code {
       description
         "Base status-sub-code.";
     }
        
     identity status-sub-code {
       description
         "Base status-sub-code.";
     }
        
     identity invalid-cc {
       base status-sub-code;
       description
         "Indicates that the Continuity Check message is
          invalid.";
     }
        
     identity invalid-cc {
       base status-sub-code;
       description
         "Indicates that the Continuity Check message is
          invalid.";
     }
        
     identity invalid-pd {
       base status-sub-code;
       description
         "Indicates that the path discovery message is invalid.";
     }
        
     identity invalid-pd {
       base status-sub-code;
       description
         "Indicates that the path discovery message is invalid.";
     }
        
     typedef export-method {
       type identityref {
         base export-method;
        
     typedef export-method {
       type identityref {
         base export-method;
        
       }
       description
         "Export method type.";
     }
        
       }
       description
         "Export method type.";
     }
        
     typedef change-type {
       type enumeration {
         enum create {
           description
             "Change due to a create.";
         }
         enum delete {
           description
             "Change due to a delete.";
         }
         enum modify {
           description
             "Change due to an update.";
         }
       }
       description
         "Different types of changes that may occur.";
     }
        
     typedef change-type {
       type enumeration {
         enum create {
           description
             "Change due to a create.";
         }
         enum delete {
           description
             "Change due to a delete.";
         }
         enum modify {
           description
             "Change due to an update.";
         }
       }
       description
         "Different types of changes that may occur.";
     }
        
     rpc cc-get-persistent-id {
       if-feature "cl-oam:continuity-check";
       description
         "Obtains Continuity Check persistent identification
          given mapping parameters as input.";
       input {
         container destination-tp {
           uses cl-oam:tp-address;
           description
             "Destination test point.";
         }
         uses cl-oam:session-type;
         leaf source-interface {
           type if:interface-ref;
           description
             "Source interface.";
         }
         leaf outbound-interface {
           type if:interface-ref;
           description
             "Outbound interface.";
         }
         leaf vrf {
           type cl-oam:routing-instance-ref;
        
     rpc cc-get-persistent-id {
       if-feature "cl-oam:continuity-check";
       description
         "Obtains Continuity Check persistent identification
          given mapping parameters as input.";
       input {
         container destination-tp {
           uses cl-oam:tp-address;
           description
             "Destination test point.";
         }
         uses cl-oam:session-type;
         leaf source-interface {
           type if:interface-ref;
           description
             "Source interface.";
         }
         leaf outbound-interface {
           type if:interface-ref;
           description
             "Outbound interface.";
         }
         leaf vrf {
           type cl-oam:routing-instance-ref;
        
           description
             "VRF instance.";
         }
       }
       output {
         container error-code {
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used.  This could be a standard
                protocol (e.g., TCP/IP protocols, MPLS, etc.)
                or a proprietary protocol as identified by
                this field.";
           }
           leaf protocol-id-meta-data {
             type uint64;
             description
               "An optional metadata related to the protocol ID.
                For example, this could be the Internet Protocol
                number for standard Internet Protocols used for
                help with protocol processing.";
           }
           leaf status-code {
             type identityref {
               base status-code;
             }
             mandatory true;
             description
               "Status code.";
           }
           leaf status-sub-code {
             type identityref {
               base status-sub-code;
             }
             mandatory true;
             description
               "Sub code for the Continuity Check.";
           }
           description
             "Status code and sub code.";
         }
         leaf cc-persistent-id {
           type string;
           description
             "Id to act as a cookie.";
        
           description
             "VRF instance.";
         }
       }
       output {
         container error-code {
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used.  This could be a standard
                protocol (e.g., TCP/IP protocols, MPLS, etc.)
                or a proprietary protocol as identified by
                this field.";
           }
           leaf protocol-id-meta-data {
             type uint64;
             description
               "An optional metadata related to the protocol ID.
                For example, this could be the Internet Protocol
                number for standard Internet Protocols used for
                help with protocol processing.";
           }
           leaf status-code {
             type identityref {
               base status-code;
             }
             mandatory true;
             description
               "Status code.";
           }
           leaf status-sub-code {
             type identityref {
               base status-sub-code;
             }
             mandatory true;
             description
               "Sub code for the Continuity Check.";
           }
           description
             "Status code and sub code.";
         }
         leaf cc-persistent-id {
           type string;
           description
             "Id to act as a cookie.";
        
         }
       }
     }
        
         }
       }
     }
        
     rpc cc-persistent-get-export-details {
       if-feature "cl-oam:continuity-check";
       description
         "Given the persistent ID, gets the configuration
          options and details related to the configured data
          export.";
       input {
         leaf cc-persistent-id {
           type string;
           description
             "Persistent ID for use as a key in search.";
         }
       }
       output {
         container error-code {
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used.  This could be a standard
                protocol (e.g., TCP/IP protocols, MPLS, etc.)
                or a proprietary protocol as identified by
                this field.";
           }
           leaf protocol-id-meta-data {
             type uint64;
             description
               "An optional metadata related to the protocol ID.
                For example, this could be the Internet Protocol
                number for standard Internet Protocols used for
                help with protocol processing.";
           }
           leaf status-code {
             type identityref {
               base status-code;
             }
             mandatory true;
             description
               "Status code.";
           }
           leaf status-sub-code {
             type identityref {
        
     rpc cc-persistent-get-export-details {
       if-feature "cl-oam:continuity-check";
       description
         "Given the persistent ID, gets the configuration
          options and details related to the configured data
          export.";
       input {
         leaf cc-persistent-id {
           type string;
           description
             "Persistent ID for use as a key in search.";
         }
       }
       output {
         container error-code {
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used.  This could be a standard
                protocol (e.g., TCP/IP protocols, MPLS, etc.)
                or a proprietary protocol as identified by
                this field.";
           }
           leaf protocol-id-meta-data {
             type uint64;
             description
               "An optional metadata related to the protocol ID.
                For example, this could be the Internet Protocol
                number for standard Internet Protocols used for
                help with protocol processing.";
           }
           leaf status-code {
             type identityref {
               base status-code;
             }
             mandatory true;
             description
               "Status code.";
           }
           leaf status-sub-code {
             type identityref {
        
               base status-sub-code;
             }
             mandatory true;
             description
               "Sub code for the Continuity Check.";
           }
           description
             "Status code and sub code.";
         }
         leaf data-export-method {
           type export-method;
           description
             "Type of export in use.";
         }
         choice cc-trigger {
           description
             "Necessary conditions for
              periodic or on-change trigger.";
           case periodic {
             description
               "Periodic reports.";
             leaf period {
               type yang:timeticks;
               description
                 "Time interval between reports.";
             }
             leaf start-time {
               type yang:date-and-time;
               description
                 "Timestamp from which reports were started.";
             }
           }
           case on-change {
             description
               "On-change trigger and not periodic.";
             leaf all-data-on-start {
               type boolean;
               description
                 "Full update done on start or not.";
             }
             leaf-list excluded-change {
               type change-type;
               description
                 "Changes that will not trigger an update.";
             }
           }
         }
       }
        
               base status-sub-code;
             }
             mandatory true;
             description
               "Sub code for the Continuity Check.";
           }
           description
             "Status code and sub code.";
         }
         leaf data-export-method {
           type export-method;
           description
             "Type of export in use.";
         }
         choice cc-trigger {
           description
             "Necessary conditions for
              periodic or on-change trigger.";
           case periodic {
             description
               "Periodic reports.";
             leaf period {
               type yang:timeticks;
               description
                 "Time interval between reports.";
             }
             leaf start-time {
               type yang:date-and-time;
               description
                 "Timestamp from which reports were started.";
             }
           }
           case on-change {
             description
               "On-change trigger and not periodic.";
             leaf all-data-on-start {
               type boolean;
               description
                 "Full update done on start or not.";
             }
             leaf-list excluded-change {
               type change-type;
               description
                 "Changes that will not trigger an update.";
             }
           }
         }
       }
        

}

}

     rpc pd-get-persistent-id {
       if-feature "cl-oam:path-discovery";
       description
         "Obtains persistent path discovery identification.";
       input {
         container destination-tp {
           uses cl-oam:tp-address;
           description
             "Destination test point.";
         }
         uses cl-oam:session-type;
         leaf source-interface {
           type if:interface-ref;
           description
             "Source interface.";
         }
         leaf outbound-interface {
           type if:interface-ref;
           description
             "Outbound interface.";
         }
         leaf vrf {
           type cl-oam:routing-instance-ref;
           description
             "VRF";
         }
       }
       output {
         list response-list {
           key "response-index";
           description
             "Path discovery response list.";
           leaf response-index {
             type uint32;
             mandatory true;
             description
               "Response index.";
           }
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used.  This could be a standard
                protocol (e.g., TCP/IP protocols, MPLS, etc.)
        
     rpc pd-get-persistent-id {
       if-feature "cl-oam:path-discovery";
       description
         "Obtains persistent path discovery identification.";
       input {
         container destination-tp {
           uses cl-oam:tp-address;
           description
             "Destination test point.";
         }
         uses cl-oam:session-type;
         leaf source-interface {
           type if:interface-ref;
           description
             "Source interface.";
         }
         leaf outbound-interface {
           type if:interface-ref;
           description
             "Outbound interface.";
         }
         leaf vrf {
           type cl-oam:routing-instance-ref;
           description
             "VRF";
         }
       }
       output {
         list response-list {
           key "response-index";
           description
             "Path discovery response list.";
           leaf response-index {
             type uint32;
             mandatory true;
             description
               "Response index.";
           }
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used.  This could be a standard
                protocol (e.g., TCP/IP protocols, MPLS, etc.)
        
                or a proprietary protocol as identified by
                this field.";
           }
           leaf protocol-id-meta-data {
             type uint64;
             description
               "An optional metadata related to the protocol ID.
                For example, this could be the Internet Protocol
                number for standard Internet Protocols used for
                help with protocol processing.";
           }
           leaf status-code {
             type identityref {
               base status-code;
             }
             mandatory true;
             description
               "Status code for persistent path discovery
                information.";
           }
           leaf status-sub-code {
             type identityref {
               base status-sub-code;
             }
             mandatory true;
             description
               "Sub code for persistent path discovery
                information.";
           }
           leaf pd-persistent-id {
             type string;
             description
               "Id to act as a cookie.";
           }
         }
       }
     }
        
                or a proprietary protocol as identified by
                this field.";
           }
           leaf protocol-id-meta-data {
             type uint64;
             description
               "An optional metadata related to the protocol ID.
                For example, this could be the Internet Protocol
                number for standard Internet Protocols used for
                help with protocol processing.";
           }
           leaf status-code {
             type identityref {
               base status-code;
             }
             mandatory true;
             description
               "Status code for persistent path discovery
                information.";
           }
           leaf status-sub-code {
             type identityref {
               base status-sub-code;
             }
             mandatory true;
             description
               "Sub code for persistent path discovery
                information.";
           }
           leaf pd-persistent-id {
             type string;
             description
               "Id to act as a cookie.";
           }
         }
       }
     }
        
     rpc pd-persistent-get-export-details {
       if-feature "cl-oam:path-discovery";
       description
         "Given the persistent ID, gets the configuration
          options and details related to the configured data
          export.";
       input {
         leaf cc-persistent-id {
           type string;
           description
        
     rpc pd-persistent-get-export-details {
       if-feature "cl-oam:path-discovery";
       description
         "Given the persistent ID, gets the configuration
          options and details related to the configured data
          export.";
       input {
         leaf cc-persistent-id {
           type string;
           description
        
             "Persistent ID for use as a key in search.";
         }
       }
       output {
         list response-list {
           key "response-index";
           description
             "Path discovery response list.";
           leaf response-index {
             type uint32;
             mandatory true;
             description
               "Response index.";
           }
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used.  This could be a standard
                protocol (e.g., TCP/IP protocols, MPLS, etc.)
                or a proprietary protocol as identified by
                this field.";
           }
           leaf protocol-id-meta-data {
             type uint64;
             description
               "An optional metadata related to the protocol ID.
                For example, this could be the Internet Protocol
                number for standard Internet Protocols used for
                help with protocol processing.";
           }
           leaf status-code {
             type identityref {
               base status-code;
             }
             mandatory true;
             description
               "Status code for persistent path discovery
                creation.";
           }
           leaf status-sub-code {
             type identityref {
               base status-sub-code;
             }
             mandatory true;
             description
        
             "Persistent ID for use as a key in search.";
         }
       }
       output {
         list response-list {
           key "response-index";
           description
             "Path discovery response list.";
           leaf response-index {
             type uint32;
             mandatory true;
             description
               "Response index.";
           }
           leaf protocol-id {
             type identityref {
               base protocol-id;
             }
             mandatory true;
             description
               "Protocol used.  This could be a standard
                protocol (e.g., TCP/IP protocols, MPLS, etc.)
                or a proprietary protocol as identified by
                this field.";
           }
           leaf protocol-id-meta-data {
             type uint64;
             description
               "An optional metadata related to the protocol ID.
                For example, this could be the Internet Protocol
                number for standard Internet Protocols used for
                help with protocol processing.";
           }
           leaf status-code {
             type identityref {
               base status-code;
             }
             mandatory true;
             description
               "Status code for persistent path discovery
                creation.";
           }
           leaf status-sub-code {
             type identityref {
               base status-sub-code;
             }
             mandatory true;
             description
        
               "Sub code for persistent path discovery
                creation.";
           }
           leaf data-export-method {
             type export-method;
             description
               "Type of export.";
           }
           choice pd-trigger {
             description
               "Necessary conditions
                for periodic or on-change
                trigger.";
             case periodic {
               description
                 "Periodic reports.";
               leaf period {
                 type yang:timeticks;
                 description
                   "Time interval between reports.";
               }
               leaf start-time {
                 type yang:date-and-time;
                 description
                   "Timestamp from which reports are started.";
               }
             }
             case on-change {
               description
                 "On-change trigger and not periodic.";
               leaf all-data-on-start {
                 type boolean;
                 description
                   "Full update done on start or not.";
               }
               leaf-list excluded-change {
                 type change-type;
                 description
                   "Changes that will not trigger an update.";
               }
             }
           }
         }
       }
     }
   }
        
               "Sub code for persistent path discovery
                creation.";
           }
           leaf data-export-method {
             type export-method;
             description
               "Type of export.";
           }
           choice pd-trigger {
             description
               "Necessary conditions
                for periodic or on-change
                trigger.";
             case periodic {
               description
                 "Periodic reports.";
               leaf period {
                 type yang:timeticks;
                 description
                   "Time interval between reports.";
               }
               leaf start-time {
                 type yang:date-and-time;
                 description
                   "Timestamp from which reports are started.";
               }
             }
             case on-change {
               description
                 "On-change trigger and not periodic.";
               leaf all-data-on-start {
                 type boolean;
                 description
                   "Full update done on start or not.";
               }
               leaf-list excluded-change {
                 type change-type;
                 description
                   "Changes that will not trigger an update.";
               }
             }
           }
         }
       }
     }
   }
        

Acknowledgements

致谢

The authors of this document would like to thank Elwyn Davies, Alia Atlas, Brian E. Carpenter, Greg Mirsky, Adam Roach, Alissa Cooper, Eric Rescorla, Ben Campbell, Benoit Claise, Kathleen Moriarty, Carlos Pignataro, Benjamin Kaduk, and others for their substantive review, comments, and proposals to improve the document.

本文件的作者要感谢Elwyn Davies、Alia Atlas、Brian E.Carpenter、Greg Mirsky、Adam Roach、Alissa Cooper、Eric Rescorla、Ben Campbell、Benoit Claise、Kathleen Moriarty、Carlos Pignataro、Benjamin Kaduk和其他人对本文件的实质性审查、评论和改进建议。

Authors' Addresses

作者地址

Deepak Kumar CISCO Systems 510 McCarthy Blvd. Milpitas, CA 95035 United States of America

迪帕克·库马尔思科系统公司,麦卡锡大道510号。美国加利福尼亚州米尔皮塔斯95035

   Email: dekumar@cisco.com
        
   Email: dekumar@cisco.com
        

Michael Wang Huawei Technologies, Co., Ltd 101 Software Avenue, Yuhua District Nanjing 210012 China

中国南京雨花区软件大道101号麦可王华为技术有限公司210012

   Email: wangzitao@huawei.com
        
   Email: wangzitao@huawei.com
        

Qin Wu (editor) Huawei 101 Software Avenue, Yuhua District Nanjing, Jiangsu 210012 China

秦武(编辑)中国江苏省南京市雨花区华为软件大道101号210012

   Email: bill.wu@huawei.com
        
   Email: bill.wu@huawei.com
        

Reshad Rahman CISCO Systems 2000 Innovation Drive Kanata, Ontario K2K 3E8 Canada

Reshad Rahman CISCO Systems 2000加拿大安大略省卡纳塔创新大道K2K 3E8

   Email: rrahman@cisco.com
        
   Email: rrahman@cisco.com
        

Srihari Raghavan CISCO Systems Tril Infopark Sez, Ramanujan IT City Neville Block, 2nd floor, Old Mahabalipuram Road Chennai, Tamil Nadu 600113 India

印度泰米尔纳德邦钦奈旧马哈巴利普兰路纳威街区2楼拉曼努扬IT城内维尔区思科系统Tril Infopark经济特区斯利哈里·拉哈万600113

   Email: srihari@cisco.com
        
   Email: srihari@cisco.com