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/ |