This YANG module defines the RPC operations for connectionless OAM to be used within the IETF in a protocol-independent manner. ...
Version: 2019-04-16
module ietf-connectionless-oam-methods { yang-version 1; namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; prefix cloam-methods; import ietf-interfaces { prefix if; } import ietf-connectionless-oam { prefix cl-oam; } organization "IETF LIME Working Group"; contact "WG Web: <https://datatracker.ietf.org/wg/lime> WG List: <mailto:lmap@ietf.org> Deepak Kumar <dekumar@cisco.com> Qin Wu <bill.wu@huawei.com> Srihari Raghavan <rihari@cisco.com> Michael Wang <wangzitao@huawei.com> Reshad Rahman <rrahman@cisco.com>"; description "This YANG module defines the RPC operations for connectionless OAM to be used within the IETF in a protocol-independent manner. It is assumed that each protocol maps corresponding abstracts to its native format. Each protocol may extend the YANG data model defined here to include protocol-specific extensions. 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 8533; see the RFC itself for full legal notices."; revision "2019-04-16" { description "Initial revision."; reference "RFC 8533: Retrieval Methods YANG Data Model for the Management of Operations, Administration, and Maintenance (OAM) Protocols That Use Connectionless Communications"; } identity protocol-id { description "This is the base identity for a generic protocol ID. The protocol registry can be found at https://www.iana.org/protocols."; } identity protocol-id-internet { base protocol-id; description "Identity for Internet Protocols."; } identity protocol-id-proprietary { base protocol-id; description "Identity for proprietary protocols (e.g., IP SLA)."; } identity protocol-id-sfc { base protocol-id; description "Identity for Service Function Chaining."; } identity protocol-id-mpls { base protocol-id; description "The MPLS protocol."; } identity protocol-id-mpls-tp { base protocol-id; description "The MPLS-TP protocol."; } identity protocol-id-twamp { base protocol-id; description "The Two-Way Active Measurement Protocol (TWAMP) protocol."; } identity protocol-id-bier { base protocol-id; description "The Bit Index Explicit Replication (BIER) protocol."; } identity status-code { description "This is base identity for a status code."; } identity success-reach { base status-code; description "Indicates that the destination being verified is reachable (see RFC 7276)."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; } identity fail-reach { base status-code; description "Indicates that the destination being verified is not reachable (see RFC 7276)."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; } identity success-path-verification { base status-code; description "Indicates that the path verification is performed successfully (see RFC 7276)."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; } identity fail-path-verification { base status-code; description "Indicates that the path verification fails (see RFC 7276)."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; } identity status-sub-code { description "IdentityBase status-sub-code."; } identity invalid-cc { base status-sub-code; description "Indicates that the Continuity Check message is invalid (see RFC 7276)."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; } identity invalid-pd { base status-sub-code; description "Indicates that the path discovery message is invalid (see RFC 7276)."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; } identity protocol-id-meta-data { description "This is the base identity for metadata that corresponds to the protocol ID."; } identity protocol-internet-number { base protocol-id-meta-data; description "Internet Protocol number for standard Internet Protocols (IANA-assigned Internet Protocol numbers) to help in protocol processing. The Protocol Numbers registry can be found at https://www.iana.org/assignments/protocol-numbers."; } rpc continuity-check { if-feature cl-oam:continuity-check; description "Continuity Check RPC operation as per RFC 7276."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; input { container destination-tp { description "Destination test point."; leaf tp-location-type { type identityref { base tp-address-technology-type; } mandatory true; description "Test point address type."; } container mac-address { when "derived-from-or-self(../tp-location-type,'cl-oam:mac-address-type')" { description "MAC address type."; } description "MAC address based TP addressing."; leaf mac-address { type yang:mac-address; mandatory true; description "MAC address."; } } // container mac-address container ipv4-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv4-address-type')" { description "IPv4 address type."; } description "IP address based TP addressing."; leaf ipv4-address { type inet:ipv4-address; mandatory true; description "IPv4 address."; } } // container ipv4-address container ipv6-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv6-address-type')" { description "IPv6 address type."; } description "IPv6 address based TP addressing."; leaf ipv6-address { type inet:ipv6-address; mandatory true; description "IPv6 address."; } } // container ipv6-address container tp-attribute { when "derived-from-or-self(../tp-location-type,'cl-oam:tp-attribute-type')" { description "Test point attribute type."; } description "Test Point Attribute Container."; leaf tp-attribute-type { type address-attribute-type; description "Test point type."; } choice tp-attribute-value { description "Test point value."; 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 bgp { type inet:ip-prefix; 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"; } leaf tunnel-interface { type uint32; description "Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3 and 3.2.4 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures."; } case pw { leaf remote-pe-address { type inet:ip-address; description "Remote PE address. See Section 3.2.8 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } leaf pw-id { type uint32; 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 pw case vpls { leaf route-distinguisher { type rt:route-distinguisher; description "Route Distinguisher is an 8-octet identifier used to distinguish information about various L2VPNs advertised by a node."; reference "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 vpls choice root-address { description "Root address choice."; case ip-address { leaf source-address { type inet:ip-address; description "IP address."; } leaf group-ip-address { type inet:ip-address; description "Group IP address."; } } // case ip-address leaf as-number { type inet:as-number; description "The AS number that identifies an Autonomous System."; } leaf lsp-id { type string; description "LSP ID is an identifier of a LSP within a MPLS network."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } } // choice root-address } // choice tp-attribute-value } // container tp-attribute container system-info { when "derived-from-or-self(../tp-location-type,'cl-oam:router-id-address-type')" { description "System ID address type."; } description "Router ID container."; leaf router-id { type rt:router-id; description "Router ID assigned to this node."; } } // container system-info } // container destination-tp leaf source-interface { type if:interface-ref; mandatory true; description "Source interface."; } leaf outbound-interface { type if:interface-ref; mandatory true; description "Outbound interface."; } leaf vrf { type cl-oam:routing-instance-ref; description "Virtual Routing and Forwarding (VRF) instance."; } leaf session-type { type enumeration { enum "proactive" { value 0; description "The current session is a proactive session."; } enum "on-demand" { value 1; description "The current session is an on-demand session."; } } default "on-demand"; description "Indicate which kind of activation will be used by the current session."; } leaf count { type uint32 { range "0..4294967295"; } default "5"; description "Specifies the number of packets that will be sent. By default, the packet number is set to 5."; } leaf ttl { type uint8; default "255"; description "Time to live (TTL) used to limit the lifetime of data packets transmitted in the network to prevent looping. The TTL value is decremented for every hop that the packet traverses. If the TTL is zero, the data packet will be discarded."; } leaf packet-size { type uint32 { range "64..10000"; } default "64"; description "Packet size of the Continuity Check message, in octets. By default, the packet size is set to 64 octets."; } } output { container response-info { description "Status code and status-sub-code for Continuity Check RPC operation."; leaf protocol-id { type identityref { base protocol-id; } mandatory true; description "Protocol used in the Continuity Check message. This could be a standard protocol (e.g., TCP/IP protocols, MPLS, etc.) or a proprietary protocol as identified by this field."; } leaf protocol-id-meta-data { type identityref { base protocol-id-meta-data; } description "An optional metadata related to the protocol ID. For example, this could be the Internet Protocol number for standard Internet Protocols used for help with protocol processing."; } leaf status-code { type identityref { base status-code; } mandatory true; description "Status code for Continuity Check RPC operation. This could be a basic status code (e.g., destination is reachable or destination is not reachable; see RFC 7276) or some customized status code as identified by this field."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; } leaf status-sub-code { type identityref { base status-sub-code; } mandatory true; description "An optional status-sub-code for Continuity Check RPC operation. If the basic status code is destination reachable, this status-sub-code doesn't need to be specified. If the basic status code is destination unreachable, the status-sub-code can be used to specify the detailed reasons. This could be a basic sub-status-code (such as an invalid Continuity Check) or other error codes specific to the protocol under use for the Continuity Checks. For example, if ICMP is the protocol under use, the error codes defined in RFC 4443 can be used to specify the reasons specific to ICMP. This technology-specific status-sub-code can be defined in technology-specific models."; reference "RFC 4443: The IETF Administrative Oversight Committee (IAOC) Member Selection Guidelines and Process."; } } // container response-info container src-test-point { description "Source test point."; leaf ni { type routing-instance-ref; description "The ni is used to describe virtual resource partitioning that may be present on a network device. An example of a common industry term for virtual resource partitioning is 'VRF instance'."; } leaf tp-location-type { type identityref { base tp-address-technology-type; } mandatory true; description "Test point address type."; } container mac-address { when "derived-from-or-self(../tp-location-type,'cl-oam:mac-address-type')" { description "MAC address type."; } description "MAC address based TP addressing."; leaf mac-address { type yang:mac-address; mandatory true; description "MAC address."; } } // container mac-address container ipv4-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv4-address-type')" { description "IPv4 address type."; } description "IP address based TP addressing."; leaf ipv4-address { type inet:ipv4-address; mandatory true; description "IPv4 address."; } } // container ipv4-address container ipv6-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv6-address-type')" { description "IPv6 address type."; } description "IPv6 address based TP addressing."; leaf ipv6-address { type inet:ipv6-address; mandatory true; description "IPv6 address."; } } // container ipv6-address container tp-attribute { when "derived-from-or-self(../tp-location-type,'cl-oam:tp-attribute-type')" { description "Test point attribute type."; } description "Test Point Attribute Container."; leaf tp-attribute-type { type address-attribute-type; description "Test point type."; } choice tp-attribute-value { description "Test point value."; 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 bgp { type inet:ip-prefix; 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"; } leaf tunnel-interface { type uint32; description "Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3 and 3.2.4 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures."; } case pw { leaf remote-pe-address { type inet:ip-address; description "Remote PE address. See Section 3.2.8 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } leaf pw-id { type uint32; 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 pw case vpls { leaf route-distinguisher { type rt:route-distinguisher; description "Route Distinguisher is an 8-octet identifier used to distinguish information about various L2VPNs advertised by a node."; reference "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 vpls choice root-address { description "Root address choice."; case ip-address { leaf source-address { type inet:ip-address; description "IP address."; } leaf group-ip-address { type inet:ip-address; description "Group IP address."; } } // case ip-address leaf as-number { type inet:as-number; description "The AS number that identifies an Autonomous System."; } leaf lsp-id { type string; description "LSP ID is an identifier of a LSP within a MPLS network."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } } // choice root-address } // choice tp-attribute-value } // container tp-attribute container system-info { when "derived-from-or-self(../tp-location-type,'cl-oam:router-id-address-type')" { description "System ID address type."; } description "Router ID container."; leaf router-id { type rt:router-id; description "Router ID assigned to this node."; } } // container system-info leaf egress-intf-name { type if:interface-ref; description "Egress interface name."; } } // container src-test-point container dest-test-point { description "Destination test point."; leaf ni { type routing-instance-ref; description "The ni is used to describe virtual resource partitioning that may be present on a network device. An example of a common industry term for virtual resource partitioning is 'VRF instance'."; } leaf tp-location-type { type identityref { base tp-address-technology-type; } mandatory true; description "Test point address type."; } container mac-address { when "derived-from-or-self(../tp-location-type,'cl-oam:mac-address-type')" { description "MAC address type."; } description "MAC address based TP addressing."; leaf mac-address { type yang:mac-address; mandatory true; description "MAC address."; } } // container mac-address container ipv4-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv4-address-type')" { description "IPv4 address type."; } description "IP address based TP addressing."; leaf ipv4-address { type inet:ipv4-address; mandatory true; description "IPv4 address."; } } // container ipv4-address container ipv6-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv6-address-type')" { description "IPv6 address type."; } description "IPv6 address based TP addressing."; leaf ipv6-address { type inet:ipv6-address; mandatory true; description "IPv6 address."; } } // container ipv6-address container tp-attribute { when "derived-from-or-self(../tp-location-type,'cl-oam:tp-attribute-type')" { description "Test point attribute type."; } description "Test Point Attribute Container."; leaf tp-attribute-type { type address-attribute-type; description "Test point type."; } choice tp-attribute-value { description "Test point value."; 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 bgp { type inet:ip-prefix; 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"; } leaf tunnel-interface { type uint32; description "Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3 and 3.2.4 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures."; } case pw { leaf remote-pe-address { type inet:ip-address; description "Remote PE address. See Section 3.2.8 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } leaf pw-id { type uint32; 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 pw case vpls { leaf route-distinguisher { type rt:route-distinguisher; description "Route Distinguisher is an 8-octet identifier used to distinguish information about various L2VPNs advertised by a node."; reference "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 vpls choice root-address { description "Root address choice."; case ip-address { leaf source-address { type inet:ip-address; description "IP address."; } leaf group-ip-address { type inet:ip-address; description "Group IP address."; } } // case ip-address leaf as-number { type inet:as-number; description "The AS number that identifies an Autonomous System."; } leaf lsp-id { type string; description "LSP ID is an identifier of a LSP within a MPLS network."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } } // choice root-address } // choice tp-attribute-value } // container tp-attribute container system-info { when "derived-from-or-self(../tp-location-type,'cl-oam:router-id-address-type')" { description "System ID address type."; } description "Router ID container."; leaf router-id { type rt:router-id; description "Router ID assigned to this node."; } } // container system-info leaf ingress-intf-name { type if:interface-ref; description "Ingress interface name."; } } // container dest-test-point leaf sequence-number { type uint64; default "0"; description "Sequence number in data packets. A value of zero indicates that no sequence number is sent."; } leaf hop-cnt { type uint8; default "0"; description "Hop count. A value of zero indicates that no hop count is sent."; } container session-packet-statistics { description "Statistics per session packet."; leaf rx-packet-count { type uint32 { range "0..4294967295"; } default "0"; description "Total count of received OAM packets. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf tx-packet-count { type uint32 { range "0..4294967295"; } default "0"; description "Total count of transmitted OAM packets. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf rx-bad-packet { type uint32 { range "0..4294967295"; } default "0"; description "Total number of received bad OAM packets. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf tx-packet-failed { type uint32 { range "0..4294967295"; } default "0"; description "Total number of OAM packets that failed when sent. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } } // container session-packet-statistics container session-error-statistics { description "Per-session error statistics."; leaf packet-loss-count { type uint32 { range "0..4294967295"; } default "0"; description "Total count of received packet drops. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf loss-ratio { type percentage; description "Loss ratio of the packets. Expressed as percentage of packets lost with respect to packets sent."; } leaf packet-reorder-count { type uint32 { range "0..4294967295"; } default "0"; description "Total count of received packets that were reordered. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf packets-out-of-seq-count { type uint32 { range "0..4294967295"; } description "Total count of packets received out of sequence. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf packets-dup-count { type uint32 { range "0..4294967295"; } description "Total count of received packet duplicates. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } } // container session-error-statistics container session-delay-statistics { description "Session delay summarized information. By default, a one-way measurement protocol (e.g., OWAMP) is used to measure delay. When a two-way measurement protocol (e.g., TWAMP) is used instead, it can be indicated using the protocol-id defined in RPC operation of retrieval methods for connectionless OAM (RFC 8533), i.e., set protocol-id as OWAMP. Note that only one measurement protocol for delay is specified for interoperability reasons."; leaf time-unit-value { type identityref { base lime:time-unit-type; } default "lime:milliseconds"; description "Time units, where the options are s, ms, ns, etc."; } leaf min-delay-value { type uint32; description "Minimum delay value observed."; } leaf max-delay-value { type uint32; description "Maximum delay value observed."; } leaf average-delay-value { type uint32; description "Average delay value observed."; } } // container session-delay-statistics container session-jitter-statistics { description "Summarized information about session jitter. By default, jitter is measured using IP Packet Delay Variation (IPDV) as defined in RFC 3393. When the other measurement method is used instead (e.g., Packet Delay Variation used in ITU-T Recommendation Y.1540, it can be indicated using protocol-id-meta-data defined in RPC operation of retrieval methods for connectionless OAM (RFC 8533). Note that only one measurement method for jitter is specified for interoperability reasons."; leaf unit-value { type identityref { base lime:time-unit-type; } default "lime:milliseconds"; description "Time units, where the options are s, ms, ns, etc."; } leaf min-jitter-value { type uint32; description "Minimum jitter value observed."; } leaf max-jitter-value { type uint32; description "Maximum jitter value observed."; } leaf average-jitter-value { type uint32; description "Average jitter value observed."; } } // container session-jitter-statistics } } // rpc continuity-check rpc path-discovery { if-feature cl-oam:path-discovery; description "Path discovery RPC operation as per RFC 7276."; reference "RFC 7276: An Overview of Operations, Administration, and Maintenance (OAM) Tools"; input { container destination-tp { description "Destination test point."; leaf tp-location-type { type identityref { base tp-address-technology-type; } mandatory true; description "Test point address type."; } container mac-address { when "derived-from-or-self(../tp-location-type,'cl-oam:mac-address-type')" { description "MAC address type."; } description "MAC address based TP addressing."; leaf mac-address { type yang:mac-address; mandatory true; description "MAC address."; } } // container mac-address container ipv4-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv4-address-type')" { description "IPv4 address type."; } description "IP address based TP addressing."; leaf ipv4-address { type inet:ipv4-address; mandatory true; description "IPv4 address."; } } // container ipv4-address container ipv6-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv6-address-type')" { description "IPv6 address type."; } description "IPv6 address based TP addressing."; leaf ipv6-address { type inet:ipv6-address; mandatory true; description "IPv6 address."; } } // container ipv6-address container tp-attribute { when "derived-from-or-self(../tp-location-type,'cl-oam:tp-attribute-type')" { description "Test point attribute type."; } description "Test Point Attribute Container."; leaf tp-attribute-type { type address-attribute-type; description "Test point type."; } choice tp-attribute-value { description "Test point value."; 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 bgp { type inet:ip-prefix; 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"; } leaf tunnel-interface { type uint32; description "Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3 and 3.2.4 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures."; } case pw { leaf remote-pe-address { type inet:ip-address; description "Remote PE address. See Section 3.2.8 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } leaf pw-id { type uint32; 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 pw case vpls { leaf route-distinguisher { type rt:route-distinguisher; description "Route Distinguisher is an 8-octet identifier used to distinguish information about various L2VPNs advertised by a node."; reference "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 vpls choice root-address { description "Root address choice."; case ip-address { leaf source-address { type inet:ip-address; description "IP address."; } leaf group-ip-address { type inet:ip-address; description "Group IP address."; } } // case ip-address leaf as-number { type inet:as-number; description "The AS number that identifies an Autonomous System."; } leaf lsp-id { type string; description "LSP ID is an identifier of a LSP within a MPLS network."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } } // choice root-address } // choice tp-attribute-value } // container tp-attribute container system-info { when "derived-from-or-self(../tp-location-type,'cl-oam:router-id-address-type')" { description "System ID address type."; } description "Router ID container."; leaf router-id { type rt:router-id; description "Router ID assigned to this node."; } } // container system-info } // container destination-tp leaf source-interface { type if:interface-ref; mandatory true; description "Source interface."; } leaf outbound-interface { type if:interface-ref; mandatory true; description "Outbound interface."; } leaf vrf { type cl-oam:routing-instance-ref; description "Virtual Routing and Forwarding (VRF) instance."; } leaf session-type { type enumeration { enum "proactive" { value 0; description "The current session is a proactive session."; } enum "on-demand" { value 1; description "The current session is an on-demand session."; } } default "on-demand"; description "Indicate which kind of activation will be used by the current session."; } leaf max-ttl { type uint8; default "255"; description "Maximum TTL indicates the maximum number of hops that a packet is permitted to travel before being discarded by a router. By default, the maximum TTL is set to 255."; } } output { list response-list { key "response-index"; description "Path discovery response list."; leaf response-index { type uint32; mandatory true; description "Response index."; } leaf protocol-id { type identityref { base protocol-id; } mandatory true; description "Protocol used in path discovery. This could be a standard protocol (e.g., TCP/IP protocols, MPLS, etc.) or a proprietary protocol as identified by this field."; } leaf protocol-id-meta-data { type identityref { base protocol-id-meta-data; } description "An optional metadata related to the protocol ID. For example, this could be the Internet Protocol number for standard Internet Protocols used for help with protocol processing."; } leaf status-code { type identityref { base status-code; } mandatory true; description "Status code for Continuity Check RPC operation. This could be a basic status code (e.g., destination is reachable or destination is not reachable) or some customized status code as identified by this field."; } leaf status-sub-code { type identityref { base status-sub-code; } mandatory true; description "An optional status-sub-code for Continuity Check RPC operation. If the basic status code is destination reachable, this status-sub-code doesn't need to be specified. If the basic status code is destination unreachable, the status-sub-code can be used to specify the detailed reasons. This could be a basic sub-status-code (such as an invalid Continuity Check) or other error codes specific to the protocol under use for Continuity Checks. For example, if ICMP is the protocol under use, the error codes defined in RFC 4443 can be used to specify the reasons specific to ICMP. This technology-specific status-sub-code can be defined in technology-specific models."; reference "RFC 4443: The IETF Administrative Oversight Committee (IAOC) Member Selection Guidelines and Process."; } } // list response-list container src-test-point { description "Source test point."; leaf ni { type routing-instance-ref; description "The ni is used to describe virtual resource partitioning that may be present on a network device. An example of a common industry term for virtual resource partitioning is 'VRF instance'."; } leaf tp-location-type { type identityref { base tp-address-technology-type; } mandatory true; description "Test point address type."; } container mac-address { when "derived-from-or-self(../tp-location-type,'cl-oam:mac-address-type')" { description "MAC address type."; } description "MAC address based TP addressing."; leaf mac-address { type yang:mac-address; mandatory true; description "MAC address."; } } // container mac-address container ipv4-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv4-address-type')" { description "IPv4 address type."; } description "IP address based TP addressing."; leaf ipv4-address { type inet:ipv4-address; mandatory true; description "IPv4 address."; } } // container ipv4-address container ipv6-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv6-address-type')" { description "IPv6 address type."; } description "IPv6 address based TP addressing."; leaf ipv6-address { type inet:ipv6-address; mandatory true; description "IPv6 address."; } } // container ipv6-address container tp-attribute { when "derived-from-or-self(../tp-location-type,'cl-oam:tp-attribute-type')" { description "Test point attribute type."; } description "Test Point Attribute Container."; leaf tp-attribute-type { type address-attribute-type; description "Test point type."; } choice tp-attribute-value { description "Test point value."; 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 bgp { type inet:ip-prefix; 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"; } leaf tunnel-interface { type uint32; description "Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3 and 3.2.4 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures."; } case pw { leaf remote-pe-address { type inet:ip-address; description "Remote PE address. See Section 3.2.8 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } leaf pw-id { type uint32; 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 pw case vpls { leaf route-distinguisher { type rt:route-distinguisher; description "Route Distinguisher is an 8-octet identifier used to distinguish information about various L2VPNs advertised by a node."; reference "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 vpls choice root-address { description "Root address choice."; case ip-address { leaf source-address { type inet:ip-address; description "IP address."; } leaf group-ip-address { type inet:ip-address; description "Group IP address."; } } // case ip-address leaf as-number { type inet:as-number; description "The AS number that identifies an Autonomous System."; } leaf lsp-id { type string; description "LSP ID is an identifier of a LSP within a MPLS network."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } } // choice root-address } // choice tp-attribute-value } // container tp-attribute container system-info { when "derived-from-or-self(../tp-location-type,'cl-oam:router-id-address-type')" { description "System ID address type."; } description "Router ID container."; leaf router-id { type rt:router-id; description "Router ID assigned to this node."; } } // container system-info } // container src-test-point container dest-test-point { description "Destination test point."; leaf ni { type routing-instance-ref; description "The ni is used to describe virtual resource partitioning that may be present on a network device. An example of a common industry term for virtual resource partitioning is 'VRF instance'."; } leaf tp-location-type { type identityref { base tp-address-technology-type; } mandatory true; description "Test point address type."; } container mac-address { when "derived-from-or-self(../tp-location-type,'cl-oam:mac-address-type')" { description "MAC address type."; } description "MAC address based TP addressing."; leaf mac-address { type yang:mac-address; mandatory true; description "MAC address."; } } // container mac-address container ipv4-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv4-address-type')" { description "IPv4 address type."; } description "IP address based TP addressing."; leaf ipv4-address { type inet:ipv4-address; mandatory true; description "IPv4 address."; } } // container ipv4-address container ipv6-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv6-address-type')" { description "IPv6 address type."; } description "IPv6 address based TP addressing."; leaf ipv6-address { type inet:ipv6-address; mandatory true; description "IPv6 address."; } } // container ipv6-address container tp-attribute { when "derived-from-or-self(../tp-location-type,'cl-oam:tp-attribute-type')" { description "Test point attribute type."; } description "Test Point Attribute Container."; leaf tp-attribute-type { type address-attribute-type; description "Test point type."; } choice tp-attribute-value { description "Test point value."; 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 bgp { type inet:ip-prefix; 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"; } leaf tunnel-interface { type uint32; description "Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3 and 3.2.4 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures."; } case pw { leaf remote-pe-address { type inet:ip-address; description "Remote PE address. See Section 3.2.8 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } leaf pw-id { type uint32; 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 pw case vpls { leaf route-distinguisher { type rt:route-distinguisher; description "Route Distinguisher is an 8-octet identifier used to distinguish information about various L2VPNs advertised by a node."; reference "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 vpls choice root-address { description "Root address choice."; case ip-address { leaf source-address { type inet:ip-address; description "IP address."; } leaf group-ip-address { type inet:ip-address; description "Group IP address."; } } // case ip-address leaf as-number { type inet:as-number; description "The AS number that identifies an Autonomous System."; } leaf lsp-id { type string; description "LSP ID is an identifier of a LSP within a MPLS network."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } } // choice root-address } // choice tp-attribute-value } // container tp-attribute container system-info { when "derived-from-or-self(../tp-location-type,'cl-oam:router-id-address-type')" { description "System ID address type."; } description "Router ID container."; leaf router-id { type rt:router-id; description "Router ID assigned to this node."; } } // container system-info } // container dest-test-point leaf sequence-number { type uint64; default "0"; description "Sequence number in data packets. A value of zero indicates that no sequence number is sent."; } leaf hop-cnt { type uint8; default "0"; description "Hop count. A value of zero indicates that no hop count is sent."; } container session-packet-statistics { description "Statistics per session packet."; leaf rx-packet-count { type uint32 { range "0..4294967295"; } default "0"; description "Total count of received OAM packets. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf tx-packet-count { type uint32 { range "0..4294967295"; } default "0"; description "Total count of transmitted OAM packets. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf rx-bad-packet { type uint32 { range "0..4294967295"; } default "0"; description "Total number of received bad OAM packets. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf tx-packet-failed { type uint32 { range "0..4294967295"; } default "0"; description "Total number of OAM packets that failed when sent. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } } // container session-packet-statistics container session-error-statistics { description "Per-session error statistics."; leaf packet-loss-count { type uint32 { range "0..4294967295"; } default "0"; description "Total count of received packet drops. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf loss-ratio { type percentage; description "Loss ratio of the packets. Expressed as percentage of packets lost with respect to packets sent."; } leaf packet-reorder-count { type uint32 { range "0..4294967295"; } default "0"; description "Total count of received packets that were reordered. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf packets-out-of-seq-count { type uint32 { range "0..4294967295"; } description "Total count of packets received out of sequence. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf packets-dup-count { type uint32 { range "0..4294967295"; } description "Total count of received packet duplicates. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } } // container session-error-statistics container session-delay-statistics { description "Session delay summarized information. By default, a one-way measurement protocol (e.g., OWAMP) is used to measure delay. When a two-way measurement protocol (e.g., TWAMP) is used instead, it can be indicated using the protocol-id defined in RPC operation of retrieval methods for connectionless OAM (RFC 8533), i.e., set protocol-id as OWAMP. Note that only one measurement protocol for delay is specified for interoperability reasons."; leaf time-unit-value { type identityref { base lime:time-unit-type; } default "lime:milliseconds"; description "Time units, where the options are s, ms, ns, etc."; } leaf min-delay-value { type uint32; description "Minimum delay value observed."; } leaf max-delay-value { type uint32; description "Maximum delay value observed."; } leaf average-delay-value { type uint32; description "Average delay value observed."; } } // container session-delay-statistics container session-jitter-statistics { description "Summarized information about session jitter. By default, jitter is measured using IP Packet Delay Variation (IPDV) as defined in RFC 3393. When the other measurement method is used instead (e.g., Packet Delay Variation used in ITU-T Recommendation Y.1540, it can be indicated using protocol-id-meta-data defined in RPC operation of retrieval methods for connectionless OAM (RFC 8533). Note that only one measurement method for jitter is specified for interoperability reasons."; leaf unit-value { type identityref { base lime:time-unit-type; } default "lime:milliseconds"; description "Time units, where the options are s, ms, ns, etc."; } leaf min-jitter-value { type uint32; description "Minimum jitter value observed."; } leaf max-jitter-value { type uint32; description "Maximum jitter value observed."; } leaf average-jitter-value { type uint32; description "Average jitter value observed."; } } // container session-jitter-statistics container path-verification { description "Optional information related to path verification."; leaf flow-info { type string; description "Information that refers to the flow."; } container session-path-verification-statistics { description "OAM path verification statistics per session."; leaf verified-count { type uint32 { range "0..4294967295"; } description "Total number of OAM packets that went through a path as intended. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } leaf failed-count { type uint32 { range "0..4294967295"; } description "Total number of OAM packets that went through an unintended path. The value of count will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero."; } } // container session-path-verification-statistics } // container path-verification container path-trace-info { description "Optional per-hop path trace information about test points. The path trace information list typically has a single element for per-hop cases such as path-discovery RPC operation but allows a list of hop-related information for other types of data retrieval methods."; list path-trace-info-list { key "index"; description "Path trace information list."; leaf index { type uint32; description "Trace information index."; } leaf ni { type routing-instance-ref; description "The ni is used to describe virtual resource partitioning that may be present on a network device. An example of a common industry term for virtual resource partitioning is 'VRF instance'."; } leaf tp-location-type { type identityref { base tp-address-technology-type; } mandatory true; description "Test point address type."; } container mac-address { when "derived-from-or-self(../tp-location-type,'cl-oam:mac-address-type')" { description "MAC address type."; } description "MAC address based TP addressing."; leaf mac-address { type yang:mac-address; mandatory true; description "MAC address."; } } // container mac-address container ipv4-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv4-address-type')" { description "IPv4 address type."; } description "IP address based TP addressing."; leaf ipv4-address { type inet:ipv4-address; mandatory true; description "IPv4 address."; } } // container ipv4-address container ipv6-address { when "derived-from-or-self(../tp-location-type,'cl-oam:ipv6-address-type')" { description "IPv6 address type."; } description "IPv6 address based TP addressing."; leaf ipv6-address { type inet:ipv6-address; mandatory true; description "IPv6 address."; } } // container ipv6-address container tp-attribute { when "derived-from-or-self(../tp-location-type,'cl-oam:tp-attribute-type')" { description "Test point attribute type."; } description "Test Point Attribute Container."; leaf tp-attribute-type { type address-attribute-type; description "Test point type."; } choice tp-attribute-value { description "Test point value."; 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 bgp { type inet:ip-prefix; 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"; } leaf tunnel-interface { type uint32; description "Basic IPv4/IPv6 Tunnel ID. See Sections 3.2.3 and 3.2.4 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures."; } case pw { leaf remote-pe-address { type inet:ip-address; description "Remote PE address. See Section 3.2.8 of RFC 8029 for details."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } leaf pw-id { type uint32; 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 pw case vpls { leaf route-distinguisher { type rt:route-distinguisher; description "Route Distinguisher is an 8-octet identifier used to distinguish information about various L2VPNs advertised by a node."; reference "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 vpls choice root-address { description "Root address choice."; case ip-address { leaf source-address { type inet:ip-address; description "IP address."; } leaf group-ip-address { type inet:ip-address; description "Group IP address."; } } // case ip-address leaf as-number { type inet:as-number; description "The AS number that identifies an Autonomous System."; } leaf lsp-id { type string; description "LSP ID is an identifier of a LSP within a MPLS network."; reference "RFC 8029: Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures"; } } // choice root-address } // choice tp-attribute-value } // container tp-attribute container system-info { when "derived-from-or-self(../tp-location-type,'cl-oam:router-id-address-type')" { description "System ID address type."; } description "Router ID container."; leaf router-id { type rt:router-id; description "Router ID assigned to this node."; } } // container system-info leaf timestamp-type { type identityref { base lime:timestamp-type; } description "Type of timestamp, such as Truncated PTP or NTP."; } container timestamp-64bit { when "derived-from-or-self(../timestamp-type,'lime:truncated-ptp')or derived-from-or-self(../timestamp-type,'lime:ntp64')" { description "Only applies when PTP truncated or 64-bit NTP timestamp."; } description "Container for 64-bit timestamp. The Network Time Protocol (NTP) 64-bit timestamp format is defined in RFC 5905. The PTP truncated timestamp format is defined in IEEE 1588v1."; reference "RFC 5905: Network Time Protocol Version 4: Protocol and Algorithms Specification IEEE 1588v1: IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems Version 1"; leaf timestamp-sec { type uint32; description "Absolute timestamp in seconds as per IEEE 1588v2 or seconds part in 64-bit NTP timestamp."; } leaf timestamp-nanosec { type uint32; description "Fractional part in nanoseconds as per IEEE 1588v2 or fractional part in 64-bit NTP timestamp."; } } // container timestamp-64bit container timestamp-80bit { when "derived-from-or-self(../timestamp-type, 'lime:ptp80')" { description "Only applies when 80-bit PTP timestamp."; } if-feature ptp-long-format; description "Container for 80-bit timestamp."; leaf timestamp-sec { type uint64 { range "0..281474976710655"; } description "48-bit timestamp in seconds as per IEEE 1588v2."; } leaf timestamp-nanosec { type uint32; description "Fractional part in nanoseconds as per IEEE 1588v2."; } } // container timestamp-80bit container ntp-timestamp-32bit { when "derived-from-or-self(../timestamp-type,'lime:truncated-ntp')" { description "Only applies when 32-bit NTP short-format timestamp."; } if-feature ntp-short-format; description "Container for 32-bit timestamp RFC5905."; reference "RFC 5905: Network Time Protocol Version 4: Protocol and Algorithms Specification."; leaf timestamp-sec { type uint16; description "Timestamp in seconds as per short-format NTP."; } leaf timestamp-nanosec { type uint16; description "Truncated fractional part in 16-bit NTP timestamp."; } } // container ntp-timestamp-32bit container icmp-timestamp-32bit { when "derived-from-or-self(../timestamp-type, 'lime:icmp')" { description "Only applies when ICMP timestamp."; } if-feature icmp-timestamp; description "Container for 32-bit timestamp. See RFC 792 for ICMP timestamp format."; leaf timestamp-millisec { type uint32; description "Timestamp in milliseconds for ICMP timestamp."; } } // container icmp-timestamp-32bit leaf ingress-intf-name { type if:interface-ref; description "Ingress interface name."; } leaf egress-intf-name { type if:interface-ref; description "Egress interface name."; } leaf queue-depth { type uint32; description "Length of the queue of the interface from where the packet is forwarded out. The queue depth could be the current number of memory buffers used by the queue, and a packet can consume one or more memory buffers, thus constituting device-level information."; } leaf transit-delay { type uint32; description "Time in nanoseconds that the packet spent transiting a node."; } leaf app-meta-data { type uint64; description "Application-specific data added by node."; } } // list path-trace-info-list } // container path-trace-info } } // rpc path-discovery } // module ietf-connectionless-oam-methods
© 2023 YumaWorks, Inc. All rights reserved.