rfc8532v2.txt   rfc8532.txt 
skipping to change at page 2, line 37 skipping to change at page 2, line 37
3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 6 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 6
3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3. OAM Neighboring Test Points . . . . . . . . . . . . . . . 7 3.3. OAM Neighboring Test Points . . . . . . . . . . . . . . . 7
3.4. Test Point Location Information . . . . . . . . . . . . . 8 3.4. Test Point Location Information . . . . . . . . . . . . . 8
3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 8 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 8
3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 9 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 9
3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 9 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 9
3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 9 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 9
4. LIME Time Types YANG Module . . . . . . . . . . . . . . . . . 12 4. LIME Time Types YANG Module . . . . . . . . . . . . . . . . . 12
5. Connectionless OAM YANG Module . . . . . . . . . . . . . . . 15 5. Connectionless OAM YANG Module . . . . . . . . . . . . . . . 15
6. Connectionless Model Applicability . . . . . . . . . . . . . 43 6. Connectionless Model Applicability . . . . . . . . . . . . . 45
6.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 44 6.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 45
6.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 44 6.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 45
6.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 46 6.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 48
6.2. LSP Ping Extension . . . . . . . . . . . . . . . . . . . 48 6.2. LSP Ping Extension . . . . . . . . . . . . . . . . . . . 50
6.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 48 6.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 50
6.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 49 6.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 51
7. Security Considerations . . . . . . . . . . . . . . . . . . . 51 7. Security Considerations . . . . . . . . . . . . . . . . . . . 53
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 53 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 55
9.1. Normative References . . . . . . . . . . . . . . . . . . 53 9.1. Normative References . . . . . . . . . . . . . . . . . . 55
9.2. Informative References . . . . . . . . . . . . . . . . . 55 9.2. Informative References . . . . . . . . . . . . . . . . . 57
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 57 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 59
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59
1. Introduction 1. Introduction
Operations, Administration, and Maintenance (OAM) are important Operations, Administration, and Maintenance (OAM) are important
networking functions that allow operators to: networking functions that allow operators to:
1. monitor network communications (i.e., reachability verification 1. monitor network communications (i.e., reachability verification
and Continuity Check) and Continuity Check)
2. troubleshoot failures (i.e., fault verification and localization) 2. troubleshoot failures (i.e., fault verification and localization)
skipping to change at page 12, line 43 skipping to change at page 12, line 43
| +--rw ipv4-address-location? inet:ipv4-address | +--rw ipv4-address-location? inet:ipv4-address
+--:(ipv6-address) +--:(ipv6-address)
| +--rw ipv6-address-location? inet:ipv6-address | +--rw ipv6-address-location? inet:ipv6-address
+--:(as-number) +--:(as-number)
| +--rw as-number-location? inet:as-number | +--rw as-number-location? inet:as-number
+--:(router-id) +--:(router-id)
+--rw router-id-location? rt:router-id +--rw router-id-location? rt:router-id
4. LIME Time Types YANG Module 4. LIME Time Types YANG Module
<CODE BEGINS> file "ietf-lime-time-types@2019-02-04.yang" <CODE BEGINS> file "ietf-lime-time-types@2019-03-11.yang"
module ietf-lime-time-types { module ietf-lime-time-types {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lime-time-types"; namespace "urn:ietf:params:xml:ns:yang:ietf-lime-time-types";
prefix "lime"; prefix lime;
organization organization
"IETF LIME Working Group"; "IETF LIME Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/lime> "WG Web: <https://datatracker.ietf.org/wg/lime>
WG List: <mailto:lmap@ietf.org> WG List: <mailto:lmap@ietf.org>
Editor: Qin Wu Editor: Qin Wu
<bill.wu@huawei.com>"; <bill.wu@huawei.com>";
description
"This module provides time-related definitions used by the data
models written for Layer Independent OAM Management in the
Multi-Layer Environment (LIME). This module defines
identities but no schema tree elements.
Copyright (c) 2019 IETF Trust and the persons identified as
authors of the code. All rights reserved.
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).
This version of this YANG module is part of RFC 8532; see
the RFC itself for full legal notices.";
revision 2019-03-11 {
description description
"This module provides time-related definitions used by the data "Initial version.";
models written for Layer Independent OAM Management in the reference
Multi-Layer Environment (LIME). This module defines "RFC 8532: Generic YANG Data Model for the Management of
identities but no schema tree elements. Operations, Administration, and Maintenance (OAM) Protocols
That Use Connectionless Communications";
}
Copyright (c) 2019 IETF Trust and the persons identified as /*** Collection of common types related to time ***/
authors of the code. All rights reserved. /*** Time unit identity ***/
Redistribution and use in source and binary forms, with or identity time-unit-type {
without modification, is permitted pursuant to, and subject description
to the license terms contained in, the Simplified BSD License "Time unit type.";
set forth in Section 4.c of the IETF Trust's Legal Provisions }
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8532; see identity hours {
the RFC itself for full legal notices."; base time-unit-type;
description
"Time unit in hours.";
}
identity minutes {
base time-unit-type;
description
"Time unit in minutes.";
}
revision "2019-02-04" { identity seconds {
description base time-unit-type;
"Initial version."; description
reference "Time unit in seconds.";
"RFC 8532: Generic YANG Data Model for the Management of }
Operations, Administration, and Maintenance (OAM) Protocols
That Use Connectionless Communications"; identity milliseconds {
} base time-unit-type;
description
"Time unit in milliseconds.";
}
identity microseconds {
base time-unit-type;
description
"Time unit in microseconds.";
}
identity nanoseconds {
base time-unit-type;
description
"Time unit in nanoseconds.";
}
/*** Collection of common types related to time ***/
/*** Time unit identity ***/
identity time-unit-type {
description
"Time unit type.";
}
identity hours {
base time-unit-type;
description
"Time unit in hours.";
}
identity minutes {
base time-unit-type;
description
"Time unit in minutes.";
}
identity seconds {
base time-unit-type;
description
"Time unit in seconds.";
}
identity milliseconds {
base time-unit-type;
description
"Time unit in milliseconds.";
}
identity microseconds {
base time-unit-type;
description
"Time unit in microseconds.";
}
identity nanoseconds {
base time-unit-type;
description
"Time unit in nanoseconds.";
}
/*** Timestamp format Identity ***/ /*** Timestamp format Identity ***/
identity timestamp-type {
description identity timestamp-type {
"Base identity for Timestamp Type."; description
} "Base identity for Timestamp Type.";
identity truncated-ptp { }
base timestamp-type;
description identity truncated-ptp {
"Identity for 64-bit short-format PTP timestamp."; base timestamp-type;
} description
identity truncated-ntp { "Identity for 64-bit short-format PTP timestamp.";
base timestamp-type; }
description
"Identity for 32-bit short-format NTP timestamp."; identity truncated-ntp {
} base timestamp-type;
identity ntp64 { description
base timestamp-type; "Identity for 32-bit short-format NTP timestamp.";
description }
"Identity for 64-bit NTP timestamp."; identity ntp64 {
} base timestamp-type;
identity icmp { description
base timestamp-type; "Identity for 64-bit NTP timestamp.";
description }
"Identity for 32-bit ICMP timestamp.";
identity icmp {
base timestamp-type;
description
"Identity for 32-bit ICMP timestamp.";
}
identity ptp80 {
base timestamp-type;
description
"Identity for 80-bit PTP timestamp.";
}
} }
identity ptp80 {
base timestamp-type;
description
"Identity for 80-bit PTP timestamp.";
} }
}
<CODE ENDS> <CODE ENDS>
5. Connectionless OAM YANG Module 5. Connectionless OAM YANG Module
This module imports the Core YANG Derived Types definition ("ietf- This module imports the Core YANG Derived Types definition ("ietf-
yang-types" module) and Internet-Specific Derived Types definitions yang-types" module) and Internet-Specific Derived Types definitions
("ietf-inet-types" module) from [RFC6991], the "ietf-routing-types" ("ietf-inet-types" module) from [RFC6991], the "ietf-routing-types"
module from [RFC8294], the "ietf-interfaces" module from [RFC8343], module from [RFC8294], the "ietf-interfaces" module from [RFC8343],
the "ietf-network" module from [RFC8345], the "ietf-network-instance" the "ietf-network" module from [RFC8345], the "ietf-network-instance"
module from [RFC8529], and the "ietf-lime-time-types" module in module from [RFC8529], and the "ietf-lime-time-types" module in
Section 4. This module references [IEEE.1588v1], [IEEE.1588v2], Section 4. This module references [IEEE.1588v1], [IEEE.1588v2],
[RFC8029], and additional RFCs cited elsewhere in this document. [RFC8029], and additional RFCs cited elsewhere in this document.
<CODE BEGINS> file "ietf-connectionless-oam@2019-02-04.yang" <CODE BEGINS> file "ietf-connectionless-oam@2019-03-11.yang"
module ietf-connectionless-oam { module ietf-connectionless-oam {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam";
prefix cl-oam; prefix cl-oam;
import ietf-yang-schema-mount { import ietf-yang-schema-mount {
prefix yangmnt; prefix yangmnt;
} }
import ietf-network { import ietf-network {
prefix nd; prefix nd;
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
} }
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
} }
import ietf-network-instance { import ietf-network-instance {
prefix ni; prefix ni;
} }
skipping to change at page 15, line 49 skipping to change at page 16, line 16
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
} }
import ietf-network-instance { import ietf-network-instance {
prefix ni; prefix ni;
} }
import ietf-routing-types { import ietf-routing-types {
prefix rt; prefix rt;
} }
import ietf-lime-time-types { import ietf-lime-time-types {
prefix lime; prefix lime;
} }
organization organization
"IETF LIME Working Group"; "IETF LIME Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/lime> "WG Web: <https://datatracker.ietf.org/wg/lime>
WG List: <mailto:lmap@ietf.org> WG List: <mailto:lmap@ietf.org>
Deepak Kumar <dekumar@cisco.com> Deepak Kumar <dekumar@cisco.com>
Qin Wu <bill.wu@huawei.com> Qin Wu <bill.wu@huawei.com>
Srihari Raghavan <srihari@cisco.com> Srihari Raghavan <srihari@cisco.com>
Michael Wang <wangzitao@huawei.com> Michael Wang <wangzitao@huawei.com>
skipping to change at page 16, line 39 skipping to change at page 17, line 6
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8532; see This version of this YANG module is part of RFC 8532; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2019-02-04 { revision 2019-03-11 {
description description
"Base model for Connectionless Operations, Administration, "Base model for Connectionless Operations, Administration,
and Maintenance (OAM)."; and Maintenance (OAM).";
reference reference
"RFC 8532: Generic YANG Data Model for the Management of "RFC 8532: Generic YANG Data Model for the Management of
Operations, Administration, and Maintenance (OAM) Protocols Operations, Administration, and Maintenance (OAM) Protocols
That Use Connectionless Communications"; That Use Connectionless Communications";
} }
feature connectionless { feature connectionless {
description description
"This feature indicates that the OAM solution is connectionless."; "This feature indicates that the OAM solution is connectionless.";
} }
feature continuity-check { feature continuity-check {
description description
"This feature indicates that the server supports "This feature indicates that the server supports
executing a Continuity Check OAM command and executing a Continuity Check OAM command and
returning a response. Servers that do not advertise returning a response. Servers that do not advertise
this feature will not support executing this feature will not support executing
Continuity Check commands or the RPC operation model for Continuity Check commands or the RPC operation model for
Continuity Check commands."; Continuity Check commands.";
} }
feature path-discovery { feature path-discovery {
description description
"This feature indicates that the server supports "This feature indicates that the server supports
executing a path discovery OAM command and executing a path discovery OAM command and
returning a response. Servers that do not advertise returning a response. Servers that do not advertise
this feature will not support executing this feature will not support executing
path discovery commands or the RPC operation model for path discovery commands or the RPC operation model for
path discovery commands."; path discovery commands.";
} }
feature ptp-long-format { feature ptp-long-format {
description description
"This feature indicates that the timestamp is PTP long format."; "This feature indicates that the timestamp is PTP long format.";
} }
feature ntp-short-format { feature ntp-short-format {
description description
"This feature indicates that the timestamp is NTP short format."; "This feature indicates that the timestamp is NTP short format.";
} }
feature icmp-timestamp { feature icmp-timestamp {
description description
"This feature indicates that the timestamp is ICMP timestamp."; "This feature indicates that the timestamp is ICMP timestamp.";
} }
identity traffic-type { identity traffic-type {
description description
"This is the base identity of the traffic type, "This is the base identity of the traffic type,
which includes IPv4, IPv6, etc."; which includes IPv4, IPv6, etc.";
} }
identity ipv4 { identity ipv4 {
base traffic-type; base traffic-type;
description description
"identity for IPv4 traffic type."; "identity for IPv4 traffic type.";
} }
identity ipv6 { identity ipv6 {
base traffic-type; base traffic-type;
description description
"identity for IPv6 traffic type."; "identity for IPv6 traffic type.";
} }
identity address-attribute-types { identity address-attribute-types {
description description
"This is the base identity of the address attribute types, which "This is the base identity of the address attribute types, which
are Generic IPv4/IPv6 Prefix, BGP Labeled IPv4/IPv6 Prefix, are Generic IPv4/IPv6 Prefix, BGP Labeled IPv4/IPv6 Prefix,
Tunnel ID, PW ID, VPLS VE ID, etc. (See RFC 8029 for details.)"; Tunnel ID, PW ID, VPLS VE ID, etc. (See RFC 8029 for details.)";
} }
typedef address-attribute-type { typedef address-attribute-type {
type identityref { type identityref {
base address-attribute-types; base address-attribute-types;
} }
description description
"Target address attribute type."; "Target address attribute type.";
} }
typedef percentage { typedef percentage {
type decimal64 { type decimal64 {
fraction-digits 5; fraction-digits 5;
range "0..100"; range "0..100";
} }
description "Percentage."; description
} "Percentage.";
}
typedef routing-instance-ref { typedef routing-instance-ref {
type leafref { type leafref {
path "/ni:network-instances/ni:network-instance/ni:name"; path "/ni:network-instances/ni:network-instance/ni:name";
} }
description description
"This type is used for leafs that reference a routing instance "This type is used for leafs that reference a routing instance
configuration."; configuration.";
} }
grouping cc-session-statistics { grouping cc-session-statistics {
description description
"Grouping for session statistics."; "Grouping for session statistics.";
container cc-session-statistics { container cc-session-statistics {
description description
"CC session counters."; "CC session counters.";
leaf session-count { leaf session-count {
type uint32; type uint32;
default "0"; default "0";
description description
skipping to change at page 19, line 13 skipping to change at page 19, line 43
leaf session-down-count { leaf session-down-count {
type uint32; type uint32;
default "0"; default "0";
description description
"Number of sessions that are down. "Number of sessions that are down.
A value of zero indicates that no down A value of zero indicates that no down
session count is sent."; session count is sent.";
} }
leaf session-admin-down-count { leaf session-admin-down-count {
type uint32; type uint32;
default "0"; default "0";
description description
"Number of sessions that are admin-down. "Number of sessions that are admin-down.
A value of zero indicates that no admin- A value of zero indicates that no admin-
down session count is sent."; down session count is sent.";
} }
} }
} }
grouping session-packet-statistics { grouping session-packet-statistics {
description description
"Grouping for statistics per session packet."; "Grouping for statistics per session packet.";
container session-packet-statistics { container session-packet-statistics {
description description
"Statistics per session packet."; "Statistics per session packet.";
leaf rx-packet-count { leaf rx-packet-count {
type uint32{ type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
default "0"; default "0";
description description
"Total count of received OAM packets. "Total count of received OAM packets.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
leaf tx-packet-count { leaf tx-packet-count {
type uint32{ type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
default "0"; default "0";
description description
"Total count of transmitted OAM packets. "Total count of transmitted OAM packets.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
leaf rx-bad-packet { leaf rx-bad-packet {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
default "0"; default "0";
description description
"Total number of received bad OAM packets. "Total number of received bad OAM packets.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
leaf tx-packet-failed { leaf tx-packet-failed {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
default "0"; default "0";
description description
"Total number of OAM packets that failed when sent. "Total number of OAM packets that failed when sent.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
skipping to change at page 21, line 10 skipping to change at page 21, line 41
description description
"Time and date of the last time session was down."; "Time and date of the last time session was down.";
} }
leaf last-up-time { leaf last-up-time {
type yang:date-and-time; type yang:date-and-time;
description description
"Time and date of the last time session was up."; "Time and date of the last time session was up.";
} }
leaf down-count { leaf down-count {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
default "0"; default "0";
description description
"Total count of Continuity Check sessions down. "Total count of Continuity Check sessions down.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
leaf admin-down-count { leaf admin-down-count {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
default "0"; default "0";
description description
"Total count of Continuity Check sessions admin down. "Total count of Continuity Check sessions admin down.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
skipping to change at page 21, line 37 skipping to change at page 22, line 19
"Total count of Continuity Check sessions admin down. "Total count of Continuity Check sessions admin down.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
uses session-packet-statistics; uses session-packet-statistics;
} }
} }
grouping session-error-statistics { grouping session-error-statistics {
description description
"Grouping for per-session error statistics."; "Grouping for per-session error statistics.";
container session-error-statistics { container session-error-statistics {
description description
"Per-session error statistics."; "Per-session error statistics.";
leaf packet-loss-count { leaf packet-loss-count {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
default "0"; default "0";
description description
"Total count of received packet drops. "Total count of received packet drops.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
leaf loss-ratio{ leaf loss-ratio {
type percentage; type percentage;
description description
"Loss ratio of the packets. Expressed as percentage "Loss ratio of the packets. Expressed as percentage
of packets lost with respect to packets sent."; of packets lost with respect to packets sent.";
} }
leaf packet-reorder-count { leaf packet-reorder-count {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
default "0"; default "0";
description description
"Total count of received packets that were reordered. "Total count of received packets that were reordered.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
leaf packets-out-of-seq-count { leaf packets-out-of-seq-count {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
description description
"Total count of packets received out of sequence. "Total count of packets received out of sequence.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
leaf packets-dup-count { leaf packets-dup-count {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
description description
"Total count of received packet duplicates. "Total count of received packet duplicates.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
} }
skipping to change at page 23, line 24 skipping to change at page 24, line 7
(e.g., TWAMP) is used instead, it can be indicated (e.g., TWAMP) is used instead, it can be indicated
using the protocol-id defined in RPC operation of using the protocol-id defined in RPC operation of
retrieval methods for connectionless OAM (RFC 8533), retrieval methods for connectionless OAM (RFC 8533),
i.e., set protocol-id as OWAMP. Note that only one i.e., set protocol-id as OWAMP. Note that only one
measurement protocol for delay is specified for measurement protocol for delay is specified for
interoperability reasons."; interoperability reasons.";
leaf time-unit-value { leaf time-unit-value {
type identityref { type identityref {
base lime:time-unit-type; base lime:time-unit-type;
} }
default lime:milliseconds; default "lime:milliseconds";
description description
"Time units, where the options are s, ms, ns, etc."; "Time units, where the options are s, ms, ns, etc.";
} }
leaf min-delay-value { leaf min-delay-value {
type uint32; type uint32;
description description
"Minimum delay value observed."; "Minimum delay value observed.";
} }
leaf max-delay-value { leaf max-delay-value {
type uint32; type uint32;
skipping to change at page 24, line 14 skipping to change at page 24, line 47
method is used instead (e.g., Packet Delay Variation used method is used instead (e.g., Packet Delay Variation used
in ITU-T Recommendation Y.1540, it can be indicated using in ITU-T Recommendation Y.1540, it can be indicated using
protocol-id-meta-data defined in RPC operation of protocol-id-meta-data defined in RPC operation of
retrieval methods for connectionless OAM (RFC 8533). retrieval methods for connectionless OAM (RFC 8533).
Note that only one measurement method for jitter is Note that only one measurement method for jitter is
specified for interoperability reasons."; specified for interoperability reasons.";
leaf unit-value { leaf unit-value {
type identityref { type identityref {
base lime:time-unit-type; base lime:time-unit-type;
} }
default lime:milliseconds; default "lime:milliseconds";
description description
"Time units, where the options are s, ms, ns, etc."; "Time units, where the options are s, ms, ns, etc.";
} }
leaf min-jitter-value { leaf min-jitter-value {
type uint32; type uint32;
description description
"Minimum jitter value observed."; "Minimum jitter value observed.";
} }
leaf max-jitter-value { leaf max-jitter-value {
type uint32; type uint32;
skipping to change at page 24, line 35 skipping to change at page 25, line 20
description description
"Maximum jitter value observed."; "Maximum jitter value observed.";
} }
leaf average-jitter-value { leaf average-jitter-value {
type uint32; type uint32;
description description
"Average jitter value observed."; "Average jitter value observed.";
} }
} }
} }
grouping session-path-verification-statistics { grouping session-path-verification-statistics {
description description
"Grouping for path verification statistics per session."; "Grouping for path verification statistics per session.";
container session-path-verification-statistics { container session-path-verification-statistics {
description description
"OAM path verification statistics per session."; "OAM path verification statistics per session.";
leaf verified-count { leaf verified-count {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
description description
"Total number of OAM packets that "Total number of OAM packets that
went through a path as intended. went through a path as intended.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
leaf failed-count { leaf failed-count {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
description description
"Total number of OAM packets that "Total number of OAM packets that
went through an unintended path. went through an unintended path.
The value of count will be set to zero (0) The value of count will be set to zero (0)
on creation and will thereafter increase on creation and will thereafter increase
monotonically until it reaches a maximum value monotonically until it reaches a maximum value
of 2^32-1 (4294967295 decimal), when it wraps of 2^32-1 (4294967295 decimal), when it wraps
around and starts increasing again from zero."; around and starts increasing again from zero.";
} }
} }
} }
grouping session-type { grouping session-type {
description description
"This object indicates which kind of activation will "This object indicates which kind of activation will
be used by the current session."; be used by the current session.";
leaf session-type { leaf session-type {
type enumeration { type enumeration {
enum "proactive" { enum proactive {
description description
"The current session is a proactive session."; "The current session is a proactive session.";
} }
enum "on-demand" { enum on-demand {
description description
"The current session is an on-demand session."; "The current session is an on-demand session.";
} }
} }
default "on-demand"; default "on-demand";
description description
"Indicate which kind of activation will be used "Indicate which kind of activation will be used
by the current session."; by the current session.";
} }
} }
skipping to change at page 26, line 18 skipping to change at page 27, line 9
identity ipv6-address-type { identity ipv6-address-type {
base tp-address-technology-type; base tp-address-technology-type;
description description
"IPv6 address type."; "IPv6 address type.";
} }
identity tp-attribute-type { identity tp-attribute-type {
base tp-address-technology-type; base tp-address-technology-type;
description description
"Test point attribute type."; "Test point attribute type.";
} }
identity router-id-address-type { identity router-id-address-type {
base tp-address-technology-type; base tp-address-technology-type;
description description
"System ID address type."; "System ID address type.";
} }
identity as-number-address-type { identity as-number-address-type {
base tp-address-technology-type; base tp-address-technology-type;
description description
"AS number address type."; "AS number address type.";
} }
identity route-distinguisher-address-type { identity route-distinguisher-address-type {
base tp-address-technology-type; base tp-address-technology-type;
description description
"Route Distinguisher address type."; "Route Distinguisher address type.";
} }
grouping tp-address { grouping tp-address {
leaf tp-location-type { leaf tp-location-type {
type identityref { type identityref {
base tp-address-technology-type; base tp-address-technology-type;
} }
mandatory true; mandatory true;
description description
"Test point address type."; "Test point address type.";
} }
container mac-address { container mac-address {
when "derived-from-or-self(../tp-location-type,"+ when "derived-from-or-self(../tp-location-type,"
"'cl-oam:mac-address-type')" { + "'cl-oam:mac-address-type')" {
description
"MAC address type.";
}
leaf mac-address {
type yang:mac-address;
mandatory true;
description
"MAC address.";
}
description description
"MAC address based TP addressing."; "MAC address type.";
} }
container ipv4-address { leaf mac-address {
when "derived-from-or-self(../tp-location-type,"+ type yang:mac-address;
"'cl-oam:ipv4-address-type')" { mandatory true;
description
"IPv4 address type.";
}
leaf ipv4-address {
type inet:ipv4-address;
mandatory true;
description
"IPv4 address.";
}
description description
"IP address based TP addressing."; "MAC address.";
} }
container ipv6-address { description
when "derived-from-or-self(../tp-location-type,"+ "MAC address based TP addressing.";
"'cl-oam:ipv6-address-type')" { }
description container ipv4-address {
"IPv6 address type."; when "derived-from-or-self(../tp-location-type,"
} + "'cl-oam:ipv4-address-type')" {
leaf ipv6-address {
type inet:ipv6-address;
mandatory true;
description
"IPv6 address.";
}
description description
"IPv6 address based TP addressing."; "IPv4 address type.";
} }
container tp-attribute { leaf ipv4-address {
when "derived-from-or-self(../tp-location-type,"+ type inet:ipv4-address;
"'cl-oam:tp-attribute-type')" { mandatory true;
description description
"Test point attribute type."; "IPv4 address.";
}
description
"IP address based TP addressing.";
}
container ipv6-address {
when "derived-from-or-self(../tp-location-type,"
+ "'cl-oam:ipv6-address-type')" {
description
"IPv6 address type.";
}
leaf ipv6-address {
type inet:ipv6-address;
mandatory true;
description
"IPv6 address.";
}
description
"IPv6 address based TP addressing.";
}
container tp-attribute {
when "derived-from-or-self(../tp-location-type,"
+ "'cl-oam:tp-attribute-type')" {
description
"Test point attribute type.";
}
leaf tp-attribute-type {
type address-attribute-type;
description
"Test point type.";
}
choice tp-attribute-value {
description
"Test point value.";
case ip-prefix {
leaf ip-prefix {
type inet:ip-prefix;
description
"Generic IPv4/IPv6 prefix. See Sections 3.2.13 and
3.2.14 of RFC 8029.";
reference
"RFC 8029: Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures";
}
} }
leaf tp-attribute-type { case bgp {
type address-attribute-type; leaf bgp {
description type inet:ip-prefix;
"Test point type."; description
"BGP Labeled IPv4/IPv6 Prefix. See Sections
3.2.11 and 3.2.12 of RFC 8029 for details.";
reference
"RFC 8029: Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures";
}
} }
choice tp-attribute-value { case tunnel {
description leaf tunnel-interface {
"Test point value."; type uint32;
case ip-prefix { description
leaf ip-prefix { "Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3
type inet:ip-prefix; and 3.2.4 of RFC 8029 for details.";
description reference
"Generic IPv4/IPv6 prefix. See Sections 3.2.13 and "RFC 8029: Detecting Multiprotocol Label
3.2.14 of RFC 8029."; Switched (MPLS) Data-Plane Failures.";
reference
"RFC 8029: Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures";
}
} }
case bgp { }
leaf bgp { case pw {
type inet:ip-prefix; leaf remote-pe-address {
description type inet:ip-address;
"BGP Labeled IPv4/IPv6 Prefix. See Sections description
3.2.11 and 3.2.12 of RFC 8029 for details."; "Remote PE address. See Section 3.2.8
reference of RFC 8029 for details.";
"RFC 8029: Detecting Multiprotocol Label reference
Switched (MPLS) Data-Plane Failures"; "RFC 8029: Detecting Multiprotocol Label
} Switched (MPLS) Data-Plane Failures";
} }
case tunnel { leaf pw-id {
leaf tunnel-interface { type uint32;
type uint32; description
description "Pseudowire ID is a non-zero 32-bit ID. See Sections
"Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3 3.2.8 and 3.2.9 of RFC 8029 for details.";
and 3.2.4 of RFC 8029 for details."; reference
reference "RFC 8029: Detecting Multiprotocol Label
"RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures";
Switched (MPLS) Data-Plane Failures.";
}
} }
case pw {
leaf remote-pe-address { }
type inet:ip-address; case vpls {
description leaf route-distinguisher {
"Remote PE address. See Section 3.2.8 type rt:route-distinguisher;
of RFC 8029 for details."; description
reference "Route Distinguisher is an 8-octet identifier
"RFC 8029: Detecting Multiprotocol Label used to distinguish information about various
Switched (MPLS) Data-Plane Failures"; L2VPNs advertised by a node.";
} reference
leaf pw-id { "RFC 8029: Detecting Multiprotocol Label
type uint32; Switched (MPLS) Data-Plane Failures";
description
"Pseudowire ID is a non-zero 32-bit ID. See Sections
3.2.8 and 3.2.9 of RFC 8029 for details.";
reference
"RFC 8029: Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures";
}
} }
case vpls { leaf sender-ve-id {
leaf route-distinguisher { type uint16;
type rt:route-distinguisher; description
description "Sender's VE ID. The VE ID (VPLS Edge Identifier)
"Route Distinguisher is an 8-octet identifier is a 2-octet identifier.";
used to distinguish information about various reference
L2VPNs advertised by a node."; "RFC 8029: Detecting Multiprotocol Label
reference Switched (MPLS) Data-Plane Failures";
"RFC 8029: Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures";
}
leaf sender-ve-id {
type uint16;
description
"Sender's VE ID. The VE ID (VPLS Edge Identifier)
is a 2-octet identifier.";
reference
"RFC 8029: Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures";
}
leaf receiver-ve-id {
type uint16;
description
"Receiver's VE ID. The VE ID (VPLS Edge Identifier)
is a 2-octet identifier.";
reference
"RFC 8029: Detecting Multiprotocol Label
Switched (MPLS) Data-Plane Failures";
}
} }
case mpls-mldp { leaf receiver-ve-id {
choice root-address { type uint16;
description description
"Root address choice."; "Receiver's VE ID. The VE ID (VPLS Edge Identifier)
case ip-address { is a 2-octet identifier.";
leaf source-address { reference
type inet:ip-address; "RFC 8029: Detecting Multiprotocol Label
description Switched (MPLS) Data-Plane Failures";
"IP address."; }
} }
leaf group-ip-address { case mpls-mldp {
type inet:ip-address; choice root-address {
description description
"Group IP address."; "Root address choice.";
} case ip-address {
leaf source-address {
type inet:ip-address;
description
"IP address.";
} }
case vpn { leaf group-ip-address {
leaf as-number { type inet:ip-address;
type inet:as-number; description
description "Group IP address.";
}
}
case vpn {
leaf as-number {
type inet:as-number;
description
"The AS number that identifies an Autonomous "The AS number that identifies an Autonomous
System."; System.";
}
} }
case global-id { }
leaf lsp-id { case global-id {
type string; leaf lsp-id {
description type string;
"LSP ID is an identifier of a LSP description
within a MPLS network."; "LSP ID is an identifier of a LSP
reference within a MPLS network.";
"RFC 8029: Detecting Multiprotocol Label reference
Switched (MPLS) Data-Plane Failures"; "RFC 8029: Detecting Multiprotocol Label
} Switched (MPLS) Data-Plane Failures";
} }
} }
} }
} }
}
description
"Test Point Attribute Container.";
}
container system-info {
when "derived-from-or-self(../tp-location-type,"
+ "'cl-oam:router-id-address-type')" {
description description
"Test Point Attribute Container."; "System ID address type.";
} }
container system-info { leaf router-id {
when "derived-from-or-self(../tp-location-type,"+ type rt:router-id;
"'cl-oam:router-id-address-type')" {
description
"System ID address type.";
}
leaf router-id {
type rt:router-id;
description
"Router ID assigned to this node.";
}
description description
"Router ID container."; "Router ID assigned to this node.";
} }
description
"Router ID container.";
}
description description
"TP Address."; "TP Address.";
} }
grouping tp-address-ni { grouping tp-address-ni {
description description
"Test point address with VRF."; "Test point address with VRF.";
leaf ni { leaf ni {
type routing-instance-ref; type routing-instance-ref;
description description
"The ni is used to describe virtual resource partitioning "The ni is used to describe virtual resource partitioning
that may be present on a network device. An example of a that may be present on a network device. An example of a
common industry term for virtual resource partitioning is common industry term for virtual resource partitioning is
'VRF instance'."; 'VRF instance'.";
skipping to change at page 31, line 16 skipping to change at page 32, line 11
leaf ni { leaf ni {
type routing-instance-ref; type routing-instance-ref;
description description
"The ni is used to describe virtual resource partitioning "The ni is used to describe virtual resource partitioning
that may be present on a network device. An example of a that may be present on a network device. An example of a
common industry term for virtual resource partitioning is common industry term for virtual resource partitioning is
'VRF instance'."; 'VRF instance'.";
} }
uses tp-address; uses tp-address;
} }
grouping connectionless-oam-tps { grouping connectionless-oam-tps {
list oam-neighboring-tps { list oam-neighboring-tps {
key "index"; key "index";
leaf index { leaf index {
type uint16{ type uint16 {
range "0..65535"; range "0..65535";
} }
description description
"Index of a list of neighboring test points "Index of a list of neighboring test points
in layers up and down the stack for in layers up and down the stack for
the same interface that are related to the the same interface that are related to the
current test point."; current test point.";
} }
leaf position { leaf position {
type int8 { type int8 {
range "-1..1"; range "-1..1";
} }
skipping to change at page 34, line 34 skipping to change at page 35, line 33
uses tp-tools; uses tp-tools;
anydata root { anydata root {
yangmnt:mount-point "root"; yangmnt:mount-point "root";
description description
"Root for models supported per test point."; "Root for models supported per test point.";
} }
uses connectionless-oam-tps; uses connectionless-oam-tps;
description description
"Test point location."; "Test point location.";
} }
grouping test-point-locations { grouping test-point-locations {
description description
"Group of test point locations."; "Group of test point locations.";
leaf tp-location-type { leaf tp-location-type {
type identityref { type identityref {
base tp-address-technology-type; base tp-address-technology-type;
} }
description description
"Test point location type."; "Test point location type.";
} }
container ipv4-location-type { container ipv4-location-type {
when "derived-from-or-self(../tp-location-type,"+ when "derived-from-or-self(../tp-location-type,"
"'cl-oam:ipv4-address-type')" { + "'cl-oam:ipv4-address-type')" {
description description
"When test point location type is equal to IPv4 address."; "When test point location type is equal to IPv4 address.";
} }
container test-point-ipv4-location-list { container test-point-ipv4-location-list {
list test-point-locations { list test-point-locations {
key "ipv4-location ni"; key "ipv4-location ni";
leaf ipv4-location { leaf ipv4-location {
type inet:ipv4-address; type inet:ipv4-address;
description
"IPv4 address.";
}
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"List of test point locations."; "IPv4 address.";
} }
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance";
}
uses test-point-location-info;
description description
"Serves as top-level container "List of test point locations.";
for test point location list.";
} }
description description
"Container for IPv4 location types."; "Serves as top-level container
for test point location list.";
} }
container ipv6-location-type { description
when "derived-from-or-self(../tp-location-type,"+ "Container for IPv4 location types.";
"'cl-oam:ipv6-address-type')" { }
description container ipv6-location-type {
"When test point location is equal to IPv6 address."; when "derived-from-or-self(../tp-location-type,"
} + "'cl-oam:ipv6-address-type')" {
container test-point-ipv6-location-list { description
list test-point-locations { "When test point location is equal to IPv6 address.";
key "ipv6-location ni"; }
leaf ipv6-location { container test-point-ipv6-location-list {
type inet:ipv6-address; list test-point-locations {
description key "ipv6-location ni";
"IPv6 address."; leaf ipv6-location {
} type inet:ipv6-address;
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance.";
}
uses test-point-location-info;
description description
"List of test point locations."; "IPv6 address.";
} }
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance.";
}
uses test-point-location-info;
description description
"Serves as top-level container "List of test point locations.";
for test point location list.";
} }
description description
"ipv6 location type container."; "Serves as top-level container
for test point location list.";
}
description
"ipv6 location type container.";
}
container mac-location-type {
when "derived-from-or-self(../tp-location-type,"
+ "'cl-oam:mac-address-type')" {
description
"When test point location type is equal to MAC address.";
} }
container mac-location-type {
when "derived-from-or-self(../tp-location-type,"+
"'cl-oam:mac-address-type')" {
description
"When test point location type is equal to MAC address.";
}
container test-point-mac-address-location-list { container test-point-mac-address-location-list {
list test-point-locations { list test-point-locations {
key "mac-address-location"; key "mac-address-location";
leaf mac-address-location { leaf mac-address-location {
type yang:mac-address; type yang:mac-address;
description
"MAC address.";
}
uses test-point-location-info;
description description
"List of test point locations."; "MAC address.";
} }
uses test-point-location-info;
description description
"Serves as top-level container "List of test point locations.";
for test point location list.";
} }
description description
"Container for MAC address location types."; "Serves as top-level container
for test point location list.";
} }
container group-as-number-location-type { description
when "derived-from-or-self(../tp-location-type,"+ "Container for MAC address location types.";
"'cl-oam:as-number-address-type')" { }
description container group-as-number-location-type {
"When test point location type is equal to AS number."; when "derived-from-or-self(../tp-location-type,"
} + "'cl-oam:as-number-address-type')" {
container test-point-as-number-location-list { description
list test-point-locations { "When test point location type is equal to AS number.";
key "as-number-location"; }
leaf as-number-location { container test-point-as-number-location-list {
type inet:as-number; list test-point-locations {
description key "as-number-location";
leaf as-number-location {
type inet:as-number;
description
"AS number for point-to-multipoint OAM."; "AS number for point-to-multipoint OAM.";
} }
leaf ni { leaf ni {
type routing-instance-ref; type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance.";
}
uses test-point-location-info;
description description
"List of test point locations."; "The ni is used to describe the
corresponding network instance.";
} }
uses test-point-location-info;
description description
"Serves as top-level container "List of test point locations.";
for test point location list.";
} }
description description
"Container for AS number location types."; "Serves as top-level container
for test point location list.";
} }
container group-router-id-location-type { description
when "derived-from-or-self(../tp-location-type,"+ "Container for AS number location types.";
"'cl-oam:router-id-address-type')" { }
description container group-router-id-location-type {
"When test point location type is equal to system-info."; when "derived-from-or-self(../tp-location-type,"
} + "'cl-oam:router-id-address-type')" {
container test-point-system-info-location-list { description
list test-point-locations { "When test point location type is equal to system-info.";
key "router-id-location"; }
leaf router-id-location { container test-point-system-info-location-list {
type rt:router-id; list test-point-locations {
description key "router-id-location";
"System ID."; leaf router-id-location {
} type rt:router-id;
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance.";
}
uses test-point-location-info;
description description
"List of test point locations."; "System ID.";
}
leaf ni {
type routing-instance-ref;
description
"The ni is used to describe the
corresponding network instance.";
} }
uses test-point-location-info;
description description
"Serves as top-level container for "List of test point locations.";
test point location list.";
} }
description description
"Container for system ID location types."; "Serves as top-level container for
test point location list.";
} }
description
"Container for system ID location types.";
}
} }
augment "/nd:networks/nd:network/nd:node" { augment "/nd:networks/nd:network/nd:node" {
description description
"Augments the /networks/network/node path defined in the "Augments the /networks/network/node path defined in the
ietf-network module (RFC 8345) with test-point-locations ietf-network module (RFC 8345) with test-point-locations
grouping."; grouping.";
uses test-point-locations; uses test-point-locations;
} }
grouping timestamp { grouping timestamp {
description description
"Grouping for timestamp."; "Grouping for timestamp.";
leaf timestamp-type { leaf timestamp-type {
type identityref { type identityref {
base lime:timestamp-type; base lime:timestamp-type;
} }
description description
"Type of timestamp, such as Truncated PTP or NTP."; "Type of timestamp, such as Truncated PTP or NTP.";
} }
container timestamp-64bit { container timestamp-64bit {
when when "derived-from-or-self(../timestamp-type,"
"derived-from-or-self(../timestamp-type, 'lime:truncated-ptp')" + "'lime:truncated-ptp')"
+ "or derived-from-or-self(../timestamp-type, 'lime:ntp64')" { + "or derived-from-or-self(../timestamp-type,"
description + "'lime:ntp64')" {
"Only applies when PTP truncated or 64-bit NTP timestamp."; description
} "Only applies when PTP truncated or 64-bit NTP timestamp.";
}
leaf timestamp-sec { leaf timestamp-sec {
type uint32; type uint32;
description description
"Absolute timestamp in seconds as per IEEE 1588v2 "Absolute timestamp in seconds as per IEEE 1588v2
or seconds part in 64-bit NTP timestamp."; or seconds part in 64-bit NTP timestamp.";
} }
leaf timestamp-nanosec { leaf timestamp-nanosec {
type uint32; type uint32;
description description
"Fractional part in nanoseconds as per IEEE 1588v2 "Fractional part in nanoseconds as per IEEE 1588v2
or fractional part in 64-bit NTP timestamp."; or fractional part in 64-bit NTP timestamp.";
} }
description description
"Container for 64-bit timestamp. The Network Time Protocol "Container for 64-bit timestamp. The Network Time Protocol
(NTP) 64-bit timestamp format is defined in RFC 5905. The (NTP) 64-bit timestamp format is defined in RFC 5905. The
PTP truncated timestamp format is defined in IEEE 1588v1."; PTP truncated timestamp format is defined in IEEE 1588v1.";
reference reference
"RFC 5905: Network Time Protocol Version 4: Protocol and "RFC 5905: Network Time Protocol Version 4: Protocol and
Algorithms Specification Algorithms Specification
IEEE 1588v1: IEEE Standard for a Precision Clock IEEE 1588v1: IEEE Standard for a Precision Clock
Synchronization Protocol for Networked Measurement and Synchronization Protocol for Networked Measurement and
Control Systems Version 1"; Control Systems Version 1";
} }
container timestamp-80bit { container timestamp-80bit {
when "derived-from-or-self(../timestamp-type, 'lime:ptp80')"{ when "derived-from-or-self(../timestamp-type, 'lime:ptp80')" {
description description
"Only applies when 80-bit PTP timestamp."; "Only applies when 80-bit PTP timestamp.";
} }
if-feature ptp-long-format; if-feature "ptp-long-format";
leaf timestamp-sec { leaf timestamp-sec {
type uint64 { type uint64 {
range "0..281474976710655"; range "0..281474976710655";
}
description
"48-bit timestamp in seconds as per IEEE 1588v2.";
} }
description
"48-bit timestamp in seconds as per IEEE 1588v2.";
}
leaf timestamp-nanosec { leaf timestamp-nanosec {
type uint32; type uint32;
description description
"Fractional part in nanoseconds as per IEEE 1588v2."; "Fractional part in nanoseconds as per IEEE 1588v2.";
} }
description description
"Container for 80-bit timestamp."; "Container for 80-bit timestamp.";
} }
container ntp-timestamp-32bit { container ntp-timestamp-32bit {
when "derived-from-or-self(../timestamp-type, 'lime:truncated-ntp')"{ when "derived-from-or-self(../timestamp-type,"
description + "'lime:truncated-ntp')" {
"Only applies when 32-bit NTP short-format timestamp."; description
} "Only applies when 32-bit NTP short-format timestamp.";
if-feature ntp-short-format; }
if-feature "ntp-short-format";
leaf timestamp-sec { leaf timestamp-sec {
type uint16; type uint16;
description description
"Timestamp in seconds as per short-format NTP."; "Timestamp in seconds as per short-format NTP.";
} }
leaf timestamp-nanosec { leaf timestamp-nanosec {
type uint16; type uint16;
description description
"Truncated fractional part in 16-bit NTP timestamp."; "Truncated fractional part in 16-bit NTP timestamp.";
} }
description description
"Container for 32-bit timestamp RFC5905."; "Container for 32-bit timestamp RFC5905.";
reference reference
"RFC 5905: Network Time Protocol Version 4: Protocol and "RFC 5905: Network Time Protocol Version 4: Protocol and
Algorithms Specification."; Algorithms Specification.";
} }
container icmp-timestamp-32bit { container icmp-timestamp-32bit {
when "derived-from-or-self(../timestamp-type, 'lime:icmp')"{ when "derived-from-or-self(../timestamp-type, 'lime:icmp')" {
description description
"Only applies when ICMP timestamp."; "Only applies when ICMP timestamp.";
}
if-feature icmp-timestamp; }
if-feature "icmp-timestamp";
leaf timestamp-millisec { leaf timestamp-millisec {
type uint32; type uint32;
description description
"Timestamp in milliseconds for ICMP timestamp."; "Timestamp in milliseconds for ICMP timestamp.";
} }
description description
"Container for 32-bit timestamp. See RFC 792 for ICMP "Container for 32-bit timestamp. See RFC 792 for ICMP
timestamp format."; timestamp format.";
} }
} }
grouping path-discovery-data { grouping path-discovery-data {
description description
"Data output from nodes related to path discovery."; "Data output from nodes related to path discovery.";
container src-test-point { container src-test-point {
description description
"Source test point."; "Source test point.";
uses tp-address-ni; uses tp-address-ni;
} }
container dest-test-point { container dest-test-point {
description description
skipping to change at page 40, line 30 skipping to change at page 41, line 36
container dest-test-point { container dest-test-point {
description description
"Destination test point."; "Destination test point.";
uses tp-address-ni; uses tp-address-ni;
} }
leaf sequence-number { leaf sequence-number {
type uint64; type uint64;
default "0"; default "0";
description description
"Sequence number in data packets. A value of "Sequence number in data packets. A value of
zero indicates that no sequence number is sent."; zero indicates that no sequence number is sent.";
} }
leaf hop-cnt { leaf hop-cnt {
type uint8; type uint8;
default "0"; default "0";
description description
"Hop count. A value of zero indicates "Hop count. A value of zero indicates
that no hop count is sent."; that no hop count is sent.";
} }
uses session-packet-statistics; uses session-packet-statistics;
uses session-error-statistics; uses session-error-statistics;
uses session-delay-statistics; uses session-delay-statistics;
uses session-jitter-statistics; uses session-jitter-statistics;
container path-verification { container path-verification {
description description
"Optional information related to path verification."; "Optional information related to path verification.";
leaf flow-info { leaf flow-info {
type string; type string;
skipping to change at page 42, line 51 skipping to change at page 44, line 8
default "0"; default "0";
description description
"Hop count. A value of zero indicates "Hop count. A value of zero indicates
that no hop count is sent."; that no hop count is sent.";
} }
uses session-packet-statistics; uses session-packet-statistics;
uses session-error-statistics; uses session-error-statistics;
uses session-delay-statistics; uses session-delay-statistics;
uses session-jitter-statistics; uses session-jitter-statistics;
} }
container cc-session-statistics-data { container cc-session-statistics-data {
if-feature "continuity-check"; if-feature "continuity-check";
config false; config false;
list cc-session-statistics { list cc-session-statistics {
key type; key "type";
leaf type { leaf type {
type identityref { type identityref {
base traffic-type; base traffic-type;
} }
description description
"Type of traffic."; "Type of traffic.";
} }
container cc-ipv4-sessions-statistics { container cc-ipv4-sessions-statistics {
when "../type = 'ipv4'" { when "../type = 'ipv4'" {
description description
"Only applies when traffic type is IPv4."; "Only applies when traffic type is IPv4.";
} }
description description
"CC ipv4 sessions."; "CC ipv4 sessions.";
uses cc-session-statistics; uses cc-session-statistics;
} }
container cc-ipv6-sessions-statistics { container cc-ipv6-sessions-statistics {
when "../type = 'ipv6'" { when "../type = 'ipv6'" {
description description
"Only applies when traffic type is IPv6."; "Only applies when traffic type is IPv6.";
} }
description description
"CC IPv6 sessions."; "CC IPv6 sessions.";
uses cc-session-statistics; uses cc-session-statistics;
}
description
"List of CC session statistics data.";
} }
description
"List of CC session statistics data.";
}
description description
"CC operational information."; "CC operational information.";
} }
} }
}
<CODE ENDS> <CODE ENDS>
6. Connectionless Model Applicability 6. Connectionless Model Applicability
The "ietf-connectionless-oam" module defined in this document The "ietf-connectionless-oam" module defined in this document
provides a technology-independent abstraction of key OAM constructs provides a technology-independent abstraction of key OAM constructs
for OAM protocols that use connectionless communication. This module for OAM protocols that use connectionless communication. This module
can be further extended to include technology-specific details, e.g., can be further extended to include technology-specific details, e.g.,
adding new data nodes with technology-specific functions and adding new data nodes with technology-specific functions and
 End of changes. 157 change blocks. 
538 lines changed or deleted 588 lines changed or added

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