< draft-ietf-lime-yang-connectionless-oam-methods-09.txt   draft-ietf-lime-yang-connectionless-oam-methods-10.txt >
Network Working Group D. Kumar Network Working Group D. Kumar
Internet-Draft Cisco Internet-Draft Cisco
Intended status: Standards Track M. Wang Intended status: Standards Track M. Wang
Expires: April 14, 2018 Q. Wu Expires: April 26, 2018 Q. Wu
Huawei Huawei
R. Rahman R. Rahman
S. Raghavan S. Raghavan
Cisco Cisco
October 11, 2017 October 23, 2017
Retrieval Methods YANG Data Model for Connectionless Operations, Retrieval Methods YANG Data Model for Connectionless Operations,
Administration, and Maintenance(OAM) protocols Administration, and Maintenance(OAM) protocols
draft-ietf-lime-yang-connectionless-oam-methods-09 draft-ietf-lime-yang-connectionless-oam-methods-10
Abstract Abstract
This document presents a retrieval method YANG Data model for This document presents a retrieval method YANG Data model for
connectionless OAM protocols. It provides technology-independent RPC connectionless OAM protocols. It provides technology-independent RPC
operations for connectionless OAM protocols. The retrieval methods operations for connectionless OAM protocols. The retrieval methods
model presented here can be extended to include technology specific model presented here can be extended to include technology specific
details. This is leading to uniformity between OAM protocols and details. This is leading to uniformity between OAM protocols and
support both nested OAM workflows (i.e., performing OAM functions at support both nested OAM workflows (i.e., performing OAM functions at
different levels through a unified interface) and interacting OAM different levels through a unified interface) and interacting OAM
skipping to change at page 1, line 44 skipping to change at page 1, line 44
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 14, 2018. This Internet-Draft will expire on April 26, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 32 skipping to change at page 2, line 32
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions used in this document . . . . . . . . . . . . . . 3 2. Conventions used in this document . . . . . . . . . . . . . . 3
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4
3. Overview of the Connectionless OAM retrieval methods Model . 4 3. Overview of the Connectionless OAM retrieval methods Model . 4
3.1. RPC operation definitions . . . . . . . . . . . . . . . . 5 3.1. RPC operation definitions . . . . . . . . . . . . . . . . 5
3.2. OAM Retrieval Methods Hierarchy . . . . . . . . . . . . . 8 3.2. OAM Retrieval Methods Hierarchy . . . . . . . . . . . . . 8
4. OAM Retrieval Methods YANG Module . . . . . . . . . . . . . . 15 4. OAM Retrieval Methods YANG Module . . . . . . . . . . . . . . 15
5. Security Considerations . . . . . . . . . . . . . . . . . . . 21 5. Security Considerations . . . . . . . . . . . . . . . . . . . 21
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.1. Normative References . . . . . . . . . . . . . . . . . . 22 7.1. Normative References . . . . . . . . . . . . . . . . . . 23
7.2. Informative References . . . . . . . . . . . . . . . . . 23 7.2. Informative References . . . . . . . . . . . . . . . . . 24
Appendix A. Appdendix A.1 Extending Connectionless OAM Method Appendix A. Appdendix A.1 Extending Connectionless OAM Method
Module Example . . . . . . . . . . . . . . . . . . . 24 Module Example . . . . . . . . . . . . . . . . . . . 24
Appendix B. Appendix A.2 Example of new retrieval procedures Appendix B. Appendix A.2 Example of new retrieval procedures
Model . . . . . . . . . . . . . . . . . . . . . . . 25 Model . . . . . . . . . . . . . . . . . . . . . . . 25
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35
1. Introduction 1. Introduction
Operations, Administration, and Maintenance (OAM) are important Operations, Administration, and Maintenance (OAM) are important
networking functions that allow operators to: networking functions that allow operators to:
skipping to change at page 5, line 34 skipping to change at page 5, line 34
corresponding technology specific parameters. To facilitate this for corresponding technology specific parameters. To facilitate this for
future enhancements to data retrieval methods, the RPCs are captured future enhancements to data retrieval methods, the RPCs are captured
under a separate module. under a separate module.
The generic 'path-discovery-data' and 'continuity-check-data' The generic 'path-discovery-data' and 'continuity-check-data'
groupings are used as data outputs from different RPCs described in groupings are used as data outputs from different RPCs described in
this document. Similar methods including other RPCs can retrieve the this document. Similar methods including other RPCs can retrieve the
data using the same data model. data using the same data model.
rpc continuity-check { rpc continuity-check {
if-feature coam:continuity-check; if-feature cl-oam:continuity-check;
description description
"Continuity-check RPC operation as per RFC7276."; "Continuity-check RPC operation as per RFC7276.";
input { input {
uses rpc-input-parameters; uses rpc-input-parameters;
.... ....
} }
output { output {
container error-code { container error-code {
leaf protocol-id { leaf protocol-id {
type identityref { type identityref {
base protocol-id; base protocol-id;
} }
mandatory true; mandatory true;
description description
"Protocol used in CC. This could be a standard "Protocol used in CC. This could be a standard
protocol (eg., TCP/IP protocols, MPLS etc.,) protocol (e.g., TCP/IP protocols, MPLS etc.,)
or a proprietary protocol as identified by or a proprietary protocol as identified by
this field."; this field.";
} }
leaf protocol-id-meta-data { leaf protocol-id-meta-data {
type uint64; type uint64;
description description
"An optional meta-data related to the protocol ID. "An optional meta-data related to the protocol ID.
For eg., this could be the Internet Protocol number For e.g., this could be the Internet Protocol number
for standard Internet Protocols for help in protocol for standard Internet Protocols for help in protocol
processing."; processing.";
} }
leaf status-code { leaf status-code {
type identityref{ type identityref{
base status-code; base status-code;
} }
mandatory true; mandatory true;
description description
"Error code for CC."; "Error code for CC.";
skipping to change at page 6, line 33 skipping to change at page 6, line 33
type identityref{ type identityref{
base status-sub-code; base status-sub-code;
} }
mandatory true; mandatory true;
description description
"Sub code for CC."; "Sub code for CC.";
} }
description description
"Error code and Sub Code for CC."; "Error code and Sub Code for CC.";
} }
uses coam:continuity-check-data; uses cl-oam:continuity-check-data;
} }
} }
rpc path-discovery { rpc path-discovery {
description description
"path discovery RPC operation as per RFC7276."; "path discovery RPC operation as per RFC7276.";
input { input {
uses rpc-input-parameters; uses rpc-input-parameters;
..... .....
} }
skipping to change at page 7, line 13 skipping to change at page 7, line 13
description description
"Response index."; "Response index.";
} }
leaf protocol-id { leaf protocol-id {
type identityref { type identityref {
base protocol-id; base protocol-id;
} }
mandatory true; mandatory true;
description description
"Protocol used in PD. This could be a standard "Protocol used in PD. This could be a standard
protocol (eg., TCP/IP protocols, MPLS etc.,) protocol (e.g., TCP/IP protocols, MPLS etc.,)
or a proprietary protocol as identified by or a proprietary protocol as identified by
this field."; this field.";
} }
leaf protocol-id-meta-data { leaf protocol-id-meta-data {
type uint64; type uint64;
description description
"An optional meta-data related to the protocol ID. "An optional meta-data related to the protocol ID.
For eg., this could be the Internet Protocol number For e.g., this could be the Internet Protocol number
for standard Internet Protocols for help in protocol for standard Internet Protocols for help in protocol
processing."; processing.";
} }
leaf status-code { leaf status-code {
type identityref{ type identityref{
base status-code; base status-code;
} }
mandatory true; mandatory true;
description description
"Error code for Path Discovery. "; "Error code for Path Discovery. ";
} }
leaf status-sub-code { leaf status-sub-code {
type identityref{ type identityref{
base status-sub-code; base status-sub-code;
} }
mandatory true; mandatory true;
description description
"Sub code for Path Discovery. "; "Sub code for Path Discovery. ";
} }
} }
uses coam:path-discovery-data; uses cl-oam:path-discovery-data;
} }
} }
Snippet of data hierarchy related to RPC operations Snippet of data hierarchy related to RPC operations
3.2. OAM Retrieval Methods Hierarchy 3.2. OAM Retrieval Methods Hierarchy
The complete data hierarchy related to the Connectionless OAM The complete data hierarchy related to the Connectionless OAM
Retrieval Methods YANG model is presented below. Retrieval Methods YANG model is presented below.
module: ietf-connectionless-oam-methods module: ietf-connectionless-oam-methods
rpcs: rpcs:
+---x continuity-check {coam:continuity-check}? +---x continuity-check {cl-oam:continuity-check}?
| +---w input | +---w input
| | +---w destination-tp | | +---w destination-tp
| | | +---w tp-location-type identityref | | | +---w tp-location-type identityref
| | | +---w mac-address | | | +---w mac-address
| | | | +---w mac-address yang:mac-address | | | | +---w mac-address yang:mac-address
| | | +---w ipv4-address | | | +---w ipv4-address
| | | | +---w ipv4-address inet:ipv4-address | | | | +---w ipv4-address inet:ipv4-address
| | | +---w ipv6-address | | | +---w ipv6-address
| | | | +---w ipv6-address inet:ipv6-address | | | | +---w ipv6-address inet:ipv6-address
| | | +---w tp-attribute | | | +---w tp-attribute
skipping to change at page 8, line 51 skipping to change at page 8, line 51
| | | | | +---w source-address? inet:ip-address | | | | | +---w source-address? inet:ip-address
| | | | | +---w group-ip-address? inet:ip-address | | | | | +---w group-ip-address? inet:ip-address
| | | | +--:(vpn) | | | | +--:(vpn)
| | | | | +---w as-number? inet:as-number | | | | | +---w as-number? inet:as-number
| | | | +--:(global-id) | | | | +--:(global-id)
| | | | +---w lsp-id? string | | | | +---w lsp-id? string
| | | +---w system-info | | | +---w system-info
| | | +---w system-id? rt:router-id | | | +---w system-id? rt:router-id
| | +---w source-interface if:interface-ref | | +---w source-interface if:interface-ref
| | +---w outbound-interface if:interface-ref | | +---w outbound-interface if:interface-ref
| | +---w vrf? coam:routing-instance-ref | | +---w vrf? cl-oam:routing-instance-ref
| | +---w session-type? enumeration | | +---w session-type? enumeration
| | +---w count? uint32 | | +---w count? uint32
| | +---w ttl? uint8 | | +---w ttl? uint8
| | +---w packet-size? uint32 | | +---w packet-size? uint32
| +--ro output | +--ro output
| +--ro error-code | +--ro error-code
| | +--ro protocol-id identityref | | +--ro protocol-id identityref
| | +--ro protocol-id-meta-data uint64 | | +--ro protocol-id-meta-data? uint64
| | +--ro status-code identityref | | +--ro status-code identityref
| | +--ro status-sub-code identityref | | +--ro status-sub-code identityref
| +--ro src-test-point | +--ro src-test-point
| | +--ro ni? routing-instance-ref | | +--ro ni? routing-instance-ref
| | +--ro tp-location-type identityref | | +--ro tp-location-type identityref
| | +--ro mac-address | | +--ro mac-address
| | | +--ro mac-address yang:mac-address | | | +--ro mac-address yang:mac-address
| | +--ro ipv4-address | | +--ro ipv4-address
| | | +--ro ipv4-address inet:ipv4-address | | | +--ro ipv4-address inet:ipv4-address
| | +--ro ipv6-address | | +--ro ipv6-address
| | | +--ro ipv6-address inet:ipv6-address | | | +--ro ipv6-address inet:ipv6-address
| | +--ro tp-attribute | | +--ro tp-attribute
skipping to change at page 10, line 47 skipping to change at page 10, line 47
| | | +--ro system-id? rt:router-id | | | +--ro system-id? rt:router-id
| | +--ro ingress-intf-name? if:interface-ref | | +--ro ingress-intf-name? if:interface-ref
| +--ro sequence-number? uint64 | +--ro sequence-number? uint64
| +--ro hop-cnt? uint8 | +--ro hop-cnt? uint8
| +--ro session-packet-statistics | +--ro session-packet-statistics
| | +--ro rx-packet-count? uint32 | | +--ro rx-packet-count? uint32
| | +--ro tx-packet-count? uint32 | | +--ro tx-packet-count? uint32
| | +--ro rx-bad-packet? uint32 | | +--ro rx-bad-packet? uint32
| | +--ro tx-packet-failed? uint32 | | +--ro tx-packet-failed? uint32
| +--ro session-error-statistics | +--ro session-error-statistics
| | +--ro packet-drops-count? uint32 | | +--ro packet-loss-count? uint32
| | +--ro loss-ratio? uint8
| | +--ro packet-reorder-count? uint32 | | +--ro packet-reorder-count? uint32
| | +--ro packets-out-of-seq-count? uint32 | | +--ro packets-out-of-seq-count? uint32
| | +--ro packets-dup-count? uint32 | | +--ro packets-dup-count? uint32
| +--ro session-delay-statistics | +--ro session-delay-statistics
| | +--ro time-resolution-value? identityref | | +--ro time-interval-value? identityref
| | +--ro min-delay-value? uint32 | | +--ro min-delay-value? uint32
| | +--ro max-delay-value? uint32 | | +--ro max-delay-value? uint32
| | +--ro average-delay-value? uint32 | | +--ro average-delay-value? uint32
| +--ro session-jitter-statistics | +--ro session-jitter-statistics
| +--ro time-resolution-value? identityref | +--ro interval-value? identityref
| +--ro min-jitter-value? uint32 | +--ro min-jitter-value? uint32
| +--ro max-jitter-value? uint32 | +--ro max-jitter-value? uint32
| +--ro average-jitter-value? uint32 | +--ro average-jitter-value? uint32
+---x path-discovery {coam:path-discovery}? +---x path-discovery {cl-oam:path-discovery}?
+---w input +---w input
| +---w destination-tp | +---w destination-tp
| | +---w tp-location-type identityref | | +---w tp-location-type identityref
| | +---w mac-address | | +---w mac-address
| | | +---w mac-address yang:mac-address | | | +---w mac-address yang:mac-address
| | +---w ipv4-address | | +---w ipv4-address
| | | +---w ipv4-address inet:ipv4-address | | | +---w ipv4-address inet:ipv4-address
| | +---w ipv6-address | | +---w ipv6-address
| | | +---w ipv6-address inet:ipv6-address | | | +---w ipv6-address inet:ipv6-address
| | +---w tp-attribute | | +---w tp-attribute
skipping to change at page 12, line 4 skipping to change at page 12, line 5
| | | | +---w source-address? inet:ip-address | | | | +---w source-address? inet:ip-address
| | | | +---w group-ip-address? inet:ip-address | | | | +---w group-ip-address? inet:ip-address
| | | +--:(vpn) | | | +--:(vpn)
| | | | +---w as-number? inet:as-number | | | | +---w as-number? inet:as-number
| | | +--:(global-id) | | | +--:(global-id)
| | | +---w lsp-id? string | | | +---w lsp-id? string
| | +---w system-info | | +---w system-info
| | +---w system-id? rt:router-id | | +---w system-id? rt:router-id
| +---w source-interface if:interface-ref | +---w source-interface if:interface-ref
| +---w outbound-interface if:interface-ref | +---w outbound-interface if:interface-ref
| +---w vrf? coam:routing-instance-ref | +---w vrf? cl-oam:routing-instance-ref
| +---w session-type? enumeration | +---w session-type? enumeration
| +---w max-ttl? uint8 | +---w max-ttl? uint8
+--ro output +--ro output
+--ro response-list* [response-index] +--ro response-list* [response-index]
| +--ro response-index uint32 | +--ro response-index uint32
| +--ro protocol-id identityref | +--ro protocol-id identityref
| +--ro protocol-id-meta-data uint64 | +--ro protocol-id-meta-data? uint64
| +--ro status-code identityref | +--ro status-code identityref
| +--ro status-sub-code identityref | +--ro status-sub-code identityref
+--ro src-test-point +--ro src-test-point
| +--ro ni? routing-instance-ref | +--ro ni? routing-instance-ref
| +--ro tp-location-type identityref | +--ro tp-location-type identityref
| +--ro mac-address | +--ro mac-address
| | +--ro mac-address yang:mac-address | | +--ro mac-address yang:mac-address
| +--ro ipv4-address | +--ro ipv4-address
| | +--ro ipv4-address inet:ipv4-address | | +--ro ipv4-address inet:ipv4-address
| +--ro ipv6-address | +--ro ipv6-address
| | +--ro ipv6-address inet:ipv6-address | | +--ro ipv6-address inet:ipv6-address
| +--ro tp-attribute | +--ro tp-attribute
skipping to change at page 13, line 46 skipping to change at page 13, line 47
| +--ro system-info | +--ro system-info
| +--ro system-id? rt:router-id | +--ro system-id? rt:router-id
+--ro sequence-number? uint64 +--ro sequence-number? uint64
+--ro hop-cnt? uint8 +--ro hop-cnt? uint8
+--ro session-packet-statistics +--ro session-packet-statistics
| +--ro rx-packet-count? uint32 | +--ro rx-packet-count? uint32
| +--ro tx-packet-count? uint32 | +--ro tx-packet-count? uint32
| +--ro rx-bad-packet? uint32 | +--ro rx-bad-packet? uint32
| +--ro tx-packet-failed? uint32 | +--ro tx-packet-failed? uint32
+--ro session-error-statistics +--ro session-error-statistics
| +--ro packet-drops-count? uint32 | +--ro packet-loss-count? uint32
| +--ro loss-ratio? uint8
| +--ro packet-reorder-count? uint32 | +--ro packet-reorder-count? uint32
| +--ro packets-out-of-seq-count? uint32 | +--ro packets-out-of-seq-count? uint32
| +--ro packets-dup-count? uint32 | +--ro packets-dup-count? uint32
+--ro session-delay-statistics +--ro session-delay-statistics
| +--ro time-resolution-value? identityref | +--ro time-interval-value? identityref
| +--ro min-delay-value? uint32 | +--ro min-delay-value? uint32
| +--ro max-delay-value? uint32 | +--ro max-delay-value? uint32
| +--ro average-delay-value? uint32 | +--ro average-delay-value? uint32
+--ro session-jitter-statistics +--ro session-jitter-statistics
| +--ro time-resolution-value? identityref | +--ro interval-value? identityref
| +--ro min-jitter-value? uint32 | +--ro min-jitter-value? uint32
| +--ro max-jitter-value? uint32 | +--ro max-jitter-value? uint32
| +--ro average-jitter-value? uint32 | +--ro average-jitter-value? uint32
+--ro path-verification +--ro path-verification
| +--ro flow-info? string | +--ro flow-info? string
| +--ro session-path-verification-statistics | +--ro session-path-verification-statistics
| +--ro verified-count? uint32 | +--ro verified-count? uint32
| +--ro failed-count? uint32 | +--ro failed-count? uint32
+--ro path-trace-info +--ro path-trace-info
+--ro path-trace-info-list* [index] +--ro path-trace-info-list* [index]
+--ro index uint32 +--ro index uint32
+--ro ni? routing-instance-ref +--ro ni? routing-instance-ref
+--ro tp-location-type identityref +--ro tp-location-type identityref
+--ro mac-address +--ro mac-address
| +--ro mac-address yang:mac-address | +--ro mac-address yang:mac-address
+--ro ipv4-address +--ro ipv4-address
| +--ro ipv4-address inet:ipv4-address | +--ro ipv4-address inet:ipv4-address
+--ro ipv6-address +--ro ipv6-address
| +--ro ipv6-address inet:ipv6-address | +--ro ipv6-address inet:ipv6-address
+--ro tp-attribute +--ro tp-attribute
| +--ro tp-attribute-type? address-attribute-type | +--ro tp-attribute-type? address-attribute-type
| +--ro (tp-attribute-value)? | +--ro (tp-attribute-value)?
| +--:(ip-prefix) | +--:(ip-prefix)
skipping to change at page 15, line 7 skipping to change at page 15, line 9
| +--ro (root-address)? | +--ro (root-address)?
| +--:(ip-address) | +--:(ip-address)
| | +--ro source-address? inet:ip-address | | +--ro source-address? inet:ip-address
| | +--ro group-ip-address? inet:ip-address | | +--ro group-ip-address? inet:ip-address
| +--:(vpn) | +--:(vpn)
| | +--ro as-number? inet:as-number | | +--ro as-number? inet:as-number
| +--:(global-id) | +--:(global-id)
| +--ro lsp-id? string | +--ro lsp-id? string
+--ro system-info +--ro system-info
| +--ro system-id? rt:router-id | +--ro system-id? rt:router-id
+--ro timestamp-type? uint32 +--ro timestamp-type? identityref
+--ro timestamp-sec? uint32 +--ro timestamp-64bit
+--ro timestamp-nanosec? uint32 | +--ro timestamp-sec? uint32
+--ro ingress-intf-name? if:interface-ref | +--ro timestamp-nanosec? uint32
+--ro egress-intf-name? if:interface-ref +--ro timestamp-80bit {ptp-long-format}?
+--ro queue-depth? uint32 | +--ro timestamp-sec? uint64
+--ro transit-delay? uint32 | +--ro timestamp-nanosec? uint32
+--ro app-meta-data? uint64 +--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 data hierarchy of OAM Retrieval Methods
4. OAM Retrieval Methods YANG Module 4. OAM Retrieval Methods YANG Module
<CODE BEGINS> file "ietf-connectionless-oam-methods@2017-09-06.yang" <CODE BEGINS> file "ietf-connectionless-oam-methods@2017-09-06.yang"
module ietf-connectionless-oam-methods { module ietf-connectionless-oam-methods {
namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods";
prefix coam-methods; prefix cloam-methods;
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
import ietf-connectionless-oam { import ietf-connectionless-oam {
prefix coam; prefix cl-oam;
} }
organization organization
"IETF LIME Working Group"; "IETF LIME Working Group";
contact contact
"Deepak Kumar dekumar@cisco.com "Deepak Kumar dekumar@cisco.com
Qin Wu bill.wu@huawei.com Qin Wu bill.wu@huawei.com
S Raghavan srihari@cisco.com S Raghavan srihari@cisco.com
Zitao Wang wangzitao@huawei.com Zitao Wang wangzitao@huawei.com
R Rahman rrahman@cisco.com"; R Rahman rrahman@cisco.com";
description description
skipping to change at page 16, line 4 skipping to change at page 16, line 15
in a protocol Independent manner. in a protocol Independent manner.
It is assumed that each protocol maps It is assumed that each protocol maps
corresponding abstracts to its native format. corresponding abstracts to its native format.
Each protocol may extend the YANG model defined Each protocol may extend the YANG model defined
here to include protocol specific extensions"; here to include protocol specific extensions";
revision 2017-09-06{ revision 2017-09-06{
description description
"08 version"; "08 version";
reference "draft-ietf-lime-yang-connectionless-oam-methods"; reference "draft-ietf-lime-yang-connectionless-oam-methods";
} }
identity protocol-id { identity protocol-id {
description description
"A generic protocol identifier."; "A generic protocol identifier.";
} }
identity protocol-id-internet { identity protocol-id-internet {
base protocol-id; base protocol-id;
description description
"Internet Protocols."; "Internet Protocols.";
} }
identity protocol-id-propreitary { identity protocol-id-propreitary {
base protocol-id; base protocol-id;
description description
"Propreitary protocol (eg.,IP SLA)."; "Propreitary protocol (e.g.,IP SLA).";
} }
identity protocol-id-sfc { identity protocol-id-sfc {
base protocol-id; base protocol-id;
description description
"Service Function Chaining."; "Service Function Chaining.";
} }
identity protocol-id-mpls { identity protocol-id-mpls {
base protocol-id; base protocol-id;
skipping to change at page 17, line 28 skipping to change at page 17, line 40
"Indicates that the path discovery message is invalid"; "Indicates that the path discovery message is invalid";
} }
identity status-sub-code { identity status-sub-code {
description description
"Base status sub code"; "Base status sub code";
} }
grouping rpc-input-parameters { grouping rpc-input-parameters {
container destination-tp { container destination-tp {
uses coam:tp-address; uses cl-oam:tp-address;
description description
"Destination test point."; "Destination test point.";
} }
leaf source-interface { leaf source-interface {
type if:interface-ref; type if:interface-ref;
mandatory true; mandatory true;
description description
"Source interface."; "Source interface.";
} }
leaf outbound-interface { leaf outbound-interface {
type if:interface-ref; type if:interface-ref;
mandatory true; mandatory true;
description description
"Outbound interface."; "Outbound interface.";
} }
leaf vrf { leaf vrf {
type coam:routing-instance-ref; type cl-oam:routing-instance-ref;
description description
"VRF instance."; "VRF instance.";
} }
description description
"Grouping for RPC input parameters"; "Grouping for RPC input parameters";
} }
rpc continuity-check { rpc continuity-check {
if-feature "coam:continuity-check"; if-feature "cl-oam:continuity-check";
description description
"Continuity-check RPC operation as per RFC7276."; "Continuity-check RPC operation as per RFC7276.";
input { input {
uses rpc-input-parameters; uses rpc-input-parameters;
uses coam:session-type { uses cl-oam:session-type {
description "If session-type is specified, then session-type description "If session-type is specified, then session-type
must be set to on-demand"; must be set to on-demand";
} }
leaf count { leaf count {
type uint32 { type uint32 {
range 1..4294967295 { range 0..4294967295 {
description description
"The overall number of packet to be transmitted "The overall number of packet to be transmitted
by the sender. If the count is set to 4294967295, by the sender. If the count is set to 4294967295,
it indicates that the session will be run forever"; it indicates that the session will be run forever";
} }
} }
default "5"; default "5";
description description
"Specifies the number of "Specifies the number of
packets that will be sent. By packets that will be sent. By
skipping to change at page 19, line 11 skipping to change at page 19, line 23
} }
output { output {
container error-code { container error-code {
leaf protocol-id { leaf protocol-id {
type identityref { type identityref {
base protocol-id; base protocol-id;
} }
mandatory true; mandatory true;
description description
"Protocol used in CC. This could be a standard "Protocol used in CC. This could be a standard
protocol (eg., TCP/IP protocols, MPLS etc.,) protocol (e.g., TCP/IP protocols, MPLS etc.,)
or a proprietary protocol as identified by or a proprietary protocol as identified by
this field."; this field.";
} }
leaf protocol-id-meta-data { leaf protocol-id-meta-data {
type uint64; type uint64;
description description
"An optional meta-data related to the protocol ID. "An optional meta-data related to the protocol ID.
For eg., this could be the Internet Protocol number For e.g., this could be the Internet Protocol number
for standard Internet Protocols for help in protocol for standard Internet Protocols for help in protocol
processing."; processing.";
} }
leaf status-code { leaf status-code {
type identityref{ type identityref{
base status-code; base status-code;
} }
mandatory true; mandatory true;
description description
"Error code for continuity-check message, that is "Error code for continuity-check message, that is
skipping to change at page 19, line 47 skipping to change at page 20, line 11
} }
mandatory true; mandatory true;
description description
"Error sub code for continuity-check message, that is "Error sub code for continuity-check message, that is
relevant to the error-code reported of the protocol relevant to the error-code reported of the protocol
that is used for CC."; that is used for CC.";
} }
description description
"Error code and Sub Code for continuity-check message."; "Error code and Sub Code for continuity-check message.";
} }
uses coam:continuity-check-data; uses cl-oam:continuity-check-data;
} }
} }
rpc path-discovery { rpc path-discovery {
if-feature "coam:path-discovery"; if-feature "cl-oam:path-discovery";
description description
"Path discovery RPC operation as per RFC7276."; "Path discovery RPC operation as per RFC7276.";
input { input {
uses rpc-input-parameters; uses rpc-input-parameters;
uses coam:session-type { uses cl-oam:session-type {
description "If session-type is specified, then session-type description "If session-type is specified, then session-type
must be set to on-demand"; must be set to on-demand";
} }
leaf max-ttl { leaf max-ttl {
type uint8; type uint8;
default "255"; default "255";
description description
"Maximum TTL indicates the maixmum number of hops that "Maximum TTL indicates the maixmum number of hops that
a packet is permitted to travel before being discarded a packet is permitted to travel before being discarded
by a router. By default, the maximimum TTL is set to 255."; by a router. By default, the maximimum TTL is set to 255.";
skipping to change at page 20, line 40 skipping to change at page 21, line 4
description description
"Response index."; "Response index.";
} }
leaf protocol-id { leaf protocol-id {
type identityref { type identityref {
base protocol-id; base protocol-id;
} }
mandatory true; mandatory true;
description description
"Protocol used in PD. This could be a standard "Protocol used in PD. This could be a standard
protocol (eg., TCP/IP protocols, MPLS etc.,) protocol (e.g., TCP/IP protocols, MPLS etc.,)
or a proprietary protocol as identified by or a proprietary protocol as identified by
this field."; this field.";
} }
leaf protocol-id-meta-data { leaf protocol-id-meta-data {
type uint64; type uint64;
description description
"An optional meta-data related to the protocol ID. "An optional meta-data related to the protocol ID.
For eg., this could be the Internet Protocol number For e.g., this could be the Internet Protocol number
for standard Internet Protocols for help in protocol for standard Internet Protocols for help in protocol
processing."; processing.";
} }
leaf status-code { leaf status-code {
type identityref{ type identityref{
base status-code; base status-code;
} }
mandatory true; mandatory true;
description description
"Error code for path-discovery response message, that is "Error code for path-discovery response message, that is
skipping to change at page 21, line 26 skipping to change at page 21, line 38
type identityref{ type identityref{
base status-sub-code; base status-sub-code;
} }
mandatory true; mandatory true;
description description
"Error sub code for path-discovery message, that is "Error sub code for path-discovery message, that is
relevant to the error-code reported of the protocol relevant to the error-code reported of the protocol
that is used for PD."; that is used for PD.";
} }
} }
uses coam:path-discovery-data; uses cl-oam:path-discovery-data;
} }
} }
} }
<CODE ENDS> <CODE ENDS>
5. Security Considerations 5. Security Considerations
The YANG module defined in this document is designed to be accessed The YANG module defined in this document is designed to be accessed
via network management protocols such as NETCONF [RFC6241] or via network management protocols such as NETCONF [RFC6241] or
skipping to change at page 22, line 33 skipping to change at page 22, line 45
XML: N/A, the requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
This document registers a YANG module in the YANG Module Names This document registers a YANG module in the YANG Module Names
registry [RFC6020]. registry [RFC6020].
name: ietf-connectionless-oam-methods name: ietf-connectionless-oam-methods
namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam- namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-
methods methods
prefix: coam-methods prefix: cloam-methods
reference: RFC XXXX reference: RFC XXXX
7. References 7. References
7.1. Normative References 7.1. Normative References
[I-D.ietf-lime-yang-connectionless-oam] [I-D.ietf-lime-yang-connectionless-oam]
Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan,
"Generic YANG Data Model for Connectionless Operations, "Generic YANG Data Model for Connectionless Operations,
skipping to change at page 25, line 5 skipping to change at page 25, line 5
Appendix A. Appdendix A.1 Extending Connectionless OAM Method Module Appendix A. Appdendix A.1 Extending Connectionless OAM Method Module
Example Example
The following is an example of extensions possible to "ietf- The following is an example of extensions possible to "ietf-
connectionless-oam-methods" YANG model defined in this document. connectionless-oam-methods" YANG model defined in this document.
The snippet below depicts an example of augmenting the "ietf- The snippet below depicts an example of augmenting the "ietf-
connectionless-oam-methods" YANG model with ICMP ping attributes: connectionless-oam-methods" YANG model with ICMP ping attributes:
augment "/coam-methods:continutiy-check" augment "/cloam-methods:continutiy-check"
+"/coam-methods:output"{ +"/cloam-methods:output"{
container session-rtt-statistics{ container session-rtt-statistics{
leaf min-rtt{ leaf min-rtt{
type uint32; type uint32;
description description
"This minimum ping round-trip-time(RTT) received."; "This minimum ping round-trip-time(RTT) received.";
} }
leaf max-rtt{ leaf max-rtt{
type uint32; type uint32;
description description
"This maximum ping round-trip-time(RTT) received."; "This maximum ping round-trip-time(RTT) received.";
skipping to change at page 25, line 50 skipping to change at page 25, line 50
export options and more can be added in future. export options and more can be added in future.
The YANG module "example-cl-oam-persistent-methods" shown below is The YANG module "example-cl-oam-persistent-methods" shown below is
intended as an illustration rather than a real definition of a RPC intended as an illustration rather than a real definition of a RPC
operation model for persistent data retrieval. For the sake of operation model for persistent data retrieval. For the sake of
brevity, this module does not obey all the guidelines specified in brevity, this module does not obey all the guidelines specified in
[RFC6087]. [RFC6087].
module example-cl-oam-persistent-methods { module example-cl-oam-persistent-methods {
namespace "http://example.com/cl-oam-persistent-methods"; namespace "http://example.com/cl-oam-persistent-methods";
prefix pcoam-methods; prefix pcloam-methods;
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
import ietf-connectionless-oam { import ietf-connectionless-oam {
prefix coam; prefix cl-oam;
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
} }
identity export-method { identity export-method {
description description
"Base identity to represent a conceptual export-method."; "Base identity to represent a conceptual export-method.";
} }
identity ipfix-export { identity ipfix-export {
base export-method; base export-method;
skipping to change at page 27, line 29 skipping to change at page 27, line 29
enum "modify" { enum "modify" {
description description
"Change due to an update."; "Change due to an update.";
} }
} }
description description
"Different types of changes that may occur."; "Different types of changes that may occur.";
} }
rpc cc-get-persistent-id { rpc cc-get-persistent-id {
if-feature "coam:continuity-check"; if-feature "cl-oam:continuity-check";
description description
"Obtains continuity-check persistent identification given mapping "Obtains continuity-check persistent identification given mapping
parameters as input."; parameters as input.";
input { input {
container destination-tp { container destination-tp {
uses coam:tp-address; uses cl-oam:tp-address;
description description
"Destination test point."; "Destination test point.";
} }
uses coam:session-type; uses cl-oam:session-type;
leaf source-interface { leaf source-interface {
type if:interface-ref; type if:interface-ref;
description description
"Source interface."; "Source interface.";
} }
leaf outbound-interface { leaf outbound-interface {
type if:interface-ref; type if:interface-ref;
description description
"Outbound interface."; "Outbound interface.";
} }
leaf vrf { leaf vrf {
type coam:routing-instance-ref; type cl-oam:routing-instance-ref;
description description
"VRF instance."; "VRF instance.";
} }
} }
output { output {
container error-code { container error-code {
leaf protocol-id { leaf protocol-id {
type identityref { type identityref {
base protocol-id; base protocol-id;
} }
mandatory true; mandatory true;
description description
"Protocol used. This could be a standard "Protocol used. This could be a standard
protocol (eg., TCP/IP protocols, MPLS etc.,) protocol (e.g., TCP/IP protocols, MPLS etc.,)
or a proprietary protocol as identified by or a proprietary protocol as identified by
this field."; this field.";
} }
leaf protocol-id-meta-data { leaf protocol-id-meta-data {
type uint64; type uint64;
description description
"An optional meta-data related to the protocol ID. "An optional meta-data related to the protocol ID.
For eg., this could be the Internet Protocol number For e.g., this could be the Internet Protocol number
for standard Internet Protocols for help in protocol for standard Internet Protocols for help in protocol
processing."; processing.";
} }
leaf status-code { leaf status-code {
type identityref{ type identityref{
base status-code; base status-code;
} }
mandatory true; mandatory true;
description description
"Error code."; "Error code.";
skipping to change at page 29, line 10 skipping to change at page 29, line 10
leaf cc-persistent-id { leaf cc-persistent-id {
type string; type string;
description description
"Id to act as a cookie."; "Id to act as a cookie.";
} }
} }
} }
rpc cc-persistent-get-export-details { rpc cc-persistent-get-export-details {
if-feature "coam:continuity-check"; if-feature "cl-oam:continuity-check";
description description
"Given the persistent id, gets the configuration "Given the persistent id, gets the configuration
options, details related to the configured data options, details related to the configured data
export."; export.";
input { input {
leaf cc-persistent-id { leaf cc-persistent-id {
type string; type string;
description description
"Persistent Id for use as a key in search."; "Persistent Id for use as a key in search.";
} }
} }
output { output {
container error-code { container error-code {
leaf protocol-id { leaf protocol-id {
type identityref { type identityref {
base protocol-id; base protocol-id;
} }
mandatory true; mandatory true;
description description
"Protocol used. This could be a standard "Protocol used. This could be a standard
protocol (eg., TCP/IP protocols, MPLS etc.,) protocol (e.g., TCP/IP protocols, MPLS etc.,)
or a proprietary protocol as identified by or a proprietary protocol as identified by
this field."; this field.";
} }
leaf protocol-id-meta-data { leaf protocol-id-meta-data {
type uint64; type uint64;
description description
"An optional meta-data related to the protocol ID. "An optional meta-data related to the protocol ID.
For eg., this could be the Internet Protocol number For e.g., this could be the Internet Protocol number
for standard Internet Protocols for help in protocol for standard Internet Protocols for help in protocol
processing."; processing.";
} }
leaf status-code { leaf status-code {
type identityref{ type identityref{
base status-code; base status-code;
} }
mandatory true; mandatory true;
description description
"Error code."; "Error code.";
skipping to change at page 31, line 11 skipping to change at page 31, line 11
description description
"Changes that will not trigger an update."; "Changes that will not trigger an update.";
} }
} }
} }
} }
} }
rpc pd-get-persistent-id { rpc pd-get-persistent-id {
if-feature "coam:path-discovery"; if-feature "cl-oam:path-discovery";
description description
"Obtains persistent path discovery identification."; "Obtains persistent path discovery identification.";
input { input {
container destination-tp { container destination-tp {
uses coam:tp-address; uses cl-oam:tp-address;
description description
"Destination test point."; "Destination test point.";
} }
uses coam:session-type; uses cl-oam:session-type;
leaf source-interface { leaf source-interface {
type if:interface-ref; type if:interface-ref;
description description
"Source interface."; "Source interface.";
} }
leaf outbound-interface { leaf outbound-interface {
type if:interface-ref; type if:interface-ref;
description description
"Outbound interface."; "Outbound interface.";
} }
leaf vrf { leaf vrf {
type coam:routing-instance-ref; type cl-oam:routing-instance-ref;
description description
"VRF"; "VRF";
} }
} }
output { output {
list response-list { list response-list {
key "response-index"; key "response-index";
description description
"Path discovery response list."; "Path discovery response list.";
leaf response-index { leaf response-index {
skipping to change at page 32, line 7 skipping to change at page 32, line 7
description description
"Response index."; "Response index.";
} }
leaf protocol-id { leaf protocol-id {
type identityref { type identityref {
base protocol-id; base protocol-id;
} }
mandatory true; mandatory true;
description description
"Protocol used. This could be a standard "Protocol used. This could be a standard
protocol (eg., TCP/IP protocols, MPLS etc.,) protocol (e.g., TCP/IP protocols, MPLS etc.,)
or a proprietary protocol as identified by or a proprietary protocol as identified by
this field."; this field.";
} }
leaf protocol-id-meta-data { leaf protocol-id-meta-data {
type uint64; type uint64;
description description
"An optional meta-data related to the protocol ID. "An optional meta-data related to the protocol ID.
For eg., this could be the Internet Protocol number For e.g., this could be the Internet Protocol number
for standard Internet Protocols for help in protocol for standard Internet Protocols for help in protocol
processing."; processing.";
} }
leaf status-code { leaf status-code {
type identityref { type identityref {
base status-code; base status-code;
} }
mandatory true; mandatory true;
description description
"Error code for Persistent Path Discovery Information. "; "Error code for Persistent Path Discovery Information. ";
skipping to change at page 32, line 45 skipping to change at page 32, line 45
leaf pd-persistent-id { leaf pd-persistent-id {
type string; type string;
description description
"Id to act as a cookie."; "Id to act as a cookie.";
} }
} }
} }
} }
rpc pd-persistent-get-export-details { rpc pd-persistent-get-export-details {
if-feature "coam:path-discovery"; if-feature "cl-oam:path-discovery";
description description
"Given the persistent id, gets the configuration "Given the persistent id, gets the configuration
options, details related to the configured data options, details related to the configured data
export."; export.";
input { input {
leaf cc-persistent-id { leaf cc-persistent-id {
type string; type string;
description description
"Persistent Id for use as a key in search."; "Persistent Id for use as a key in search.";
} }
skipping to change at page 33, line 28 skipping to change at page 33, line 28
description description
"Response index."; "Response index.";
} }
leaf protocol-id { leaf protocol-id {
type identityref { type identityref {
base protocol-id; base protocol-id;
} }
mandatory true; mandatory true;
description description
"Protocol used. This could be a standard "Protocol used. This could be a standard
protocol (eg., TCP/IP protocols, MPLS etc.,) protocol (e.g., TCP/IP protocols, MPLS etc.,)
or a proprietary protocol as identified by or a proprietary protocol as identified by
this field."; this field.";
} }
leaf protocol-id-meta-data { leaf protocol-id-meta-data {
type uint64; type uint64;
description description
"An optional meta-data related to the protocol ID. "An optional meta-data related to the protocol ID.
For eg., this could be the Internet Protocol number For e.g., this could be the Internet Protocol number
for standard Internet Protocols for help in protocol for standard Internet Protocols for help in protocol
processing."; processing.";
} }
leaf status-code { leaf status-code {
type identityref{ type identityref{
base status-code; base status-code;
} }
mandatory true; mandatory true;
description description
"Error code for Persistent Path Discovery Creation. "; "Error code for Persistent Path Discovery Creation. ";
 End of changes. 64 change blocks. 
96 lines changed or deleted 106 lines changed or added

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