< draft-ietf-ippm-ioam-yang-01.txt   draft-ietf-ippm-ioam-yang-02.txt >
IPPM T. Zhou, Ed. IPPM T. Zhou, Ed.
Internet-Draft Huawei Internet-Draft Huawei
Intended status: Standards Track J. Guichard Intended status: Standards Track J. Guichard
Expires: January 13, 2022 Futurewei Expires: 18 July 2022 Futurewei
F. Brockners F. Brockners
S. Raghavan S. Raghavan
Cisco Systems Cisco Systems
July 12, 2021 14 January 2022
A YANG Data Model for In-Situ OAM A YANG Data Model for In-Situ OAM
draft-ietf-ippm-ioam-yang-01 draft-ietf-ippm-ioam-yang-02
Abstract Abstract
In-situ Operations, Administration, and Maintenance (IOAM) records In-situ Operations, Administration, and Maintenance (IOAM) records
operational and telemetry information in user packets while the operational and telemetry information in user packets while the
packets traverse a path between two points in the network. This packets traverse a path between two points in the network. This
document defines a YANG module for the IOAM function. document defines a YANG module for the IOAM function.
Status of This Memo Status of This Memo
skipping to change at page 1, line 37 skipping to change at page 1, line 37
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 13, 2022. This Internet-Draft will expire on 18 July 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2022 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents (https://trustee.ietf.org/
(https://trustee.ietf.org/license-info) in effect on the date of license-info) in effect on the date of publication of this document.
publication of this document. Please review these documents Please review these documents carefully, as they describe your rights
carefully, as they describe your rights and restrictions with respect and restrictions with respect to this document. Code Components
to this document. Code Components extracted from this document must extracted from this document must include Revised BSD License text as
include Simplified BSD License text as described in Section 4.e of described in Section 4.e of the Trust Legal Provisions and are
the Trust Legal Provisions and are provided without warranty as provided without warranty as described in the Revised BSD License.
described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions used in this document . . . . . . . . . . . . . . 2 2. Conventions used in this document . . . . . . . . . . . . . . 3
2.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3
3. Design of the IOAM YANG Data Model . . . . . . . . . . . . . 3 3. Design of the IOAM YANG Data Model . . . . . . . . . . . . . 3
3.1. Profiles . . . . . . . . . . . . . . . . . . . . . . . . 3 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Preallocated Tracing Profile . . . . . . . . . . . . . . 5 3.2. Preallocated Tracing Profile . . . . . . . . . . . . . . 5
3.3. Incremental Tracing Profile . . . . . . . . . . . . . . . 5 3.3. Incremental Tracing Profile . . . . . . . . . . . . . . . 6
3.4. Direct Export Profile . . . . . . . . . . . . . . . . . . 6 3.4. Direct Export Profile . . . . . . . . . . . . . . . . . . 6
3.5. Proof of Transit Profile . . . . . . . . . . . . . . . . 6 3.5. Proof of Transit Profile . . . . . . . . . . . . . . . . 6
3.6. Edge to Edge Profile . . . . . . . . . . . . . . . . . . 7 3.6. Edge to Edge Profile . . . . . . . . . . . . . . . . . . 7
4. IOAM YANG Module . . . . . . . . . . . . . . . . . . . . . . 7 4. IOAM YANG Module . . . . . . . . . . . . . . . . . . . . . . 7
5. Security Considerations . . . . . . . . . . . . . . . . . . . 21 5. Security Considerations . . . . . . . . . . . . . . . . . . . 22
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 23 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 23
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.1. Normative References . . . . . . . . . . . . . . . . . . 23 8.1. Normative References . . . . . . . . . . . . . . . . . . 23
8.2. Informative References . . . . . . . . . . . . . . . . . 24 8.2. Informative References . . . . . . . . . . . . . . . . . 24
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 24 Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 25
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25
1. Introduction 1. Introduction
In-situ Operations, Administration, and Maintenance (IOAM) In-situ Operations, Administration, and Maintenance (IOAM)
[I-D.ietf-ippm-ioam-data] records OAM information within user packets [I-D.ietf-ippm-ioam-data] records OAM information within user packets
while the packets traverse a network. The data types and data while the packets traverse a network. The data types and data
formats for IOAM data records have been defined in formats for IOAM data records have been defined in
[I-D.ietf-ippm-ioam-data]. The IOAM data can be embedded in many [I-D.ietf-ippm-ioam-data]. The IOAM data can be embedded in many
protocol encapsulations such as Network Services Header (NSH) and protocol encapsulations such as Network Services Header (NSH) and
IPv6. IPv6.
This document defines a data model for IOAM capabilities using the This document defines a data model for IOAM capabilities using the
YANG data modeling language [RFC7950]. This YANG model supports all YANG data modeling language [RFC7950]. This YANG model supports five
the five IOAM options, which are Incremental Tracing Option, Pre- IOAM options, which are Incremental Tracing Option, Pre-allocated
allocated Tracing Option, Direct Export Tracing Option, Direct Export
Option[I-D.ietf-ippm-ioam-direct-export], Proof of Transit(PoT) Option[I-D.ietf-ippm-ioam-direct-export], Proof of Transit (PoT)
Option, and Edge-to-Edge Option. Option, and Edge-to-Edge Option.
2. Conventions used in this document 2. Conventions used in this document
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP14, [RFC2119], [RFC8174] when, and only when, they appear in all BCP14, [RFC2119], [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
The following terms are defined in [RFC7950] and are used in this The following terms are defined in [RFC7950] and are used in this
specification: specification:
o augment * augment
o data model * data model
o data node * data node
The terminology for describing YANG data models is found in The terminology for describing YANG data models is found in
[RFC7950]. [RFC7950].
2.1. Tree Diagrams 2.1. Tree Diagrams
Tree diagrams used in this document follow the notation defined in Tree diagrams used in this document follow the notation defined in
[RFC8340]. [RFC8340].
3. Design of the IOAM YANG Data Model 3. Design of the IOAM YANG Data Model
3.1. Profiles 3.1. Overview
The IOAM model is organized as list of profiles as shown in the The IOAM model is organized as list of profiles as shown in the
following figure. Each profile associates with one flow and the following figure. Each profile associates with one flow and the
corresponding IOAM information. corresponding IOAM information.
The "ioam-info" is a container for all the read only assistant The "ioam-info" is a container for all the read only assistant
information such as units or timestamp format. So that monitoring information, so that monitoring systems can interpret the IOAM data.
systems can interpret the IOAM data.
module: ietf-ioam module: ietf-ioam
+--rw ioam +--rw ioam
+--ro ioam-info +--ro ioam-info
| +--ro timestamp-type? identityref
| +--ro available-interface* [if-name]
| +--ro if-name -> if:interfaces/interface/name
+--rw ioam-profiles +--rw ioam-profiles
+--rw admin-config +--rw admin-config
| +--rw enabled? boolean | +--rw enabled? boolean
+--rw ioam-profile* [profile-name] +--rw ioam-profile* [profile-name]
+--rw profile-name string +--rw profile-name string
+--rw filter +--rw filter
| +--rw filter-type? ioam-filter-type | +--rw filter-type? ioam-filter-type
| +--rw ace-name? -> /acl:acls/acl/aces/ace/name | +--rw ace-name? -> /acl:acls/acl/aces/ace/name
+--rw protocol-type? ioam-protocol-type +--rw protocol-type? ioam-protocol-type
+--rw incremental-tracing-profile {incremental-trace}? +--rw incremental-tracing-profile {incremental-trace}?
| ... | ...
+--rw preallocated-tracing-profile {preallocated-trace}? +--rw preallocated-tracing-profile {preallocated-trace}?
| ... | ...
+--rw direct-export-profile {direct-export}? +--rw direct-export-profile {direct-export}?
| ... | ...
+--rw pot-profile {proof-of-transit}? +--rw pot-profile {proof-of-transit}?
| ... | ...
+--rw e2e-profile {edge-to-edge}? +--rw e2e-profile {edge-to-edge}?
... ...
The "enabled" is an administrative configuration. When it is set to In the "ioam-profiles", the "enabled" is an administrative
true, IOAM configuration is enabled for the system. Meanwhile, the configuration. When it is set to true, IOAM configuration is enabled
IOAM data-plane functionality is enabled. for the system. Meanwhile, the IOAM data-plane functionality is
enabled.
The "filter" is used to identify a flow, where the IOAM profile can The "filter" is used to identify a flow, where the IOAM profile can
apply. There may be multiple filter types. ACL [RFC8519] is a apply. There may be multiple filter types. ACL [RFC8519] is a
common way to specify a flow. Each IOAM profile can associate with common way to specify a flow. Each IOAM profile can associate with
an ACE(Access Control Entry). IOAM actions MUST be driven by the an ACE(Access Control Entry). IOAM actions MUST be driven by the
accepted packets, when the matched ACE "forwarding" action is accepted packets, when the matched ACE "forwarding" action is
"accept". "accept".
The IOAM data can be encapsulated into multiple protocols, e.g., IPv6 The IOAM data can be encapsulated into multiple protocols, e.g., IPv6
[I-D.ietf-ippm-ioam-ipv6-options] and NSH [I-D.ietf-sfc-ioam-nsh]. [I-D.ietf-ippm-ioam-ipv6-options] and NSH [I-D.ietf-sfc-ioam-nsh].
skipping to change at page 5, line 17 skipping to change at page 5, line 21
3.2. Preallocated Tracing Profile 3.2. Preallocated Tracing Profile
The IOAM tracing data is expected to be collected at every node that The IOAM tracing data is expected to be collected at every node that
a packet traverses to ensure visibility into the entire path a packet a packet traverses to ensure visibility into the entire path a packet
takes within an IOAM domain. The preallocated tracing option will takes within an IOAM domain. The preallocated tracing option will
create pre-allocated space for each node to populate its information create pre-allocated space for each node to populate its information
. The "preallocated-tracing-profile" contains the detailed . The "preallocated-tracing-profile" contains the detailed
information for the preallocated tracing data. The information information for the preallocated tracing data. The information
includes: includes:
o enabled: indicates whether the preallocated tracing profile is * enabled: indicates whether the preallocated tracing profile is
enabled. enabled.
o node-action: indicates the operation (e.g., encapsulate IOAM * node-action: indicates the operation (e.g., encapsulate IOAM
header, transit the IOAM data, or decapsulate IOAM header) applied header, transit the IOAM data, or decapsulate IOAM header) applied
to the dedicated flow. to the dedicated flow.
o use-namespace: indicate the namespace used for the trace types. * use-namespace: indicate the namespace used for the trace types.
o trace-type: indicates the per-hop data to be captured by the IOAM * trace-type: indicates the per-hop data to be captured by the IOAM
enabled nodes and included in the node data list. enabled nodes and included in the node data list.
o Loopback mode is used to send a copy of a packet back towards the * Loopback mode is used to send a copy of a packet back towards the
source. source.
o Active mode indicates that a packet is used for active * Active mode indicates that a packet is used for active
measurement. measurement.
+--rw preallocated-tracing-profile {preallocated-trace}? +--rw preallocated-tracing-profile {preallocated-trace}?
+--rw enabled? boolean +--rw enabled? boolean
+--rw node-action? ioam-node-action +--rw node-action? ioam-node-action
+--rw trace-types +--rw trace-types
| +--rw use-namespace? ioam-namespace | +--rw use-namespace? ioam-namespace
| +--rw trace-type* ioam-trace-type | +--rw trace-type* ioam-trace-type
+--rw enable-loopback-mode? boolean +--rw enable-loopback-mode? boolean
+--rw enable-active-mode? boolean +--rw enable-active-mode? boolean
skipping to change at page 6, line 41 skipping to change at page 6, line 49
| +--rw use-namespace? ioam-namespace | +--rw use-namespace? ioam-namespace
| +--rw trace-type* ioam-trace-type | +--rw trace-type* ioam-trace-type
+--rw enable-loopback-mode? boolean +--rw enable-loopback-mode? boolean
+--rw enable-active-mode? boolean +--rw enable-active-mode? boolean
+--rw flow-id? uint32 +--rw flow-id? uint32
3.5. Proof of Transit Profile 3.5. Proof of Transit Profile
The IOAM Proof of Transit data is to support the path or service The IOAM Proof of Transit data is to support the path or service
function chain verification use cases. The "pot-profile" contains function chain verification use cases. The "pot-profile" contains
the detailed information for the prove of transit data. The detailed the detailed information for the proof of transit data. "pot-type"
information are described in [I-D.ietf-sfc-proof-of-transit]. indicates a particular POT variant that specifies the POT data that
is included. There may be several POT types, which have different
configuration data. To align with [I-D.ietf-ippm-ioam-data], this
document only defines IOAM POT type 0. User need to augment this
module for the configuration of a specifc POT type.
+--rw pot-profile {proof-of-transit}? +--rw pot-profile {proof-of-transit}?
+--rw enabled? boolean +--rw enabled? boolean
+--rw active-profile-index? pot:profile-index-range +--rw pot-type? ioam-pot-type
+--rw pot-profile-list* [pot-profile-index]
+--rw pot-profile-index profile-index-range
+--rw prime-number uint64
+--rw secret-share uint64
+--rw public-polynomial uint64
+--rw lpc uint64
+--rw validator? boolean
+--rw validator-key? uint64
+--rw bitmask? uint64
+--rw opot-masks
+--rw downstream-mask* uint64
+--rw upstream-mask* uint64
3.6. Edge to Edge Profile 3.6. Edge to Edge Profile
The IOAM edge to edge option is to carry data that is added by the The IOAM edge to edge option is to carry data that is added by the
IOAM encapsulating node and interpreted by IOAM decapsulating node. IOAM encapsulating node and interpreted by IOAM decapsulating node.
The "e2e-profile" contains the detailed information for the edge to The "e2e-profile" contains the detailed information for the edge to
edge data. The detailed information includes: edge data. The detailed information includes:
o enabled: indicates whether the edge to edge profile is enabled. * enabled: indicates whether the edge to edge profile is enabled.
o node-action is the same semantic as in Section 2.2. * node-action is the same semantic as in Section 2.2.
o use-namespace: indicate the namespace used for the edge to edge * use-namespace: indicate the namespace used for the edge to edge
types. types.
o e2e-type indicates data to be carried from the ingress IOAM node * e2e-type indicates data to be carried from the ingress IOAM node
to the egress IOAM node. to the egress IOAM node.
+--rw e2e-profile {edge-to-edge}? +--rw e2e-profile {edge-to-edge}?
+--rw enabled? boolean +--rw enabled? boolean
+--rw node-action? ioam-node-action +--rw node-action? ioam-node-action
+--rw e2e-types +--rw e2e-types
+--rw use-namespace? ioam-namespace +--rw use-namespace? ioam-namespace
+--rw e2e-type* ioam-e2e-type +--rw e2e-type* ioam-e2e-type
4. IOAM YANG Module 4. IOAM YANG Module
<CODE BEGINS> file "ietf-ioam@2021-01-12.yang" <CODE BEGINS> file "ietf-ioam@2021-01-12.yang"
module ietf-ioam { module ietf-ioam {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-ioam"; namespace "urn:ietf:params:xml:ns:yang:ietf-ioam";
prefix "ioam"; prefix "ioam";
import ietf-pot-profile {
prefix "pot";
reference "draft-ietf-sfc-proof-of-transit";
}
import ietf-access-control-list {
prefix "acl";
reference
"RFC 8519: YANG Data Model for Network Access Control
Lists (ACLs)";
}
organization
"IETF IPPM (IP Performance Metrics) Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/ippm>
WG List: <ippm@ietf.org>
Editor: zhoutianran@huawei.com
Editor: james.n.guichard@futurewei.com
Editor: fbrockne@cisco.com
Editor: srihari@cisco.com";
description
"This YANG module specifies a vendor-independent data
model for the In Situ OAM (IOAM).
Copyright (c) 2020 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 XXXX; see the import ietf-access-control-list {
RFC itself for full legal notices."; prefix "acl";
reference
"RFC 8519: YANG Data Model for Network Access Control
Lists (ACLs)";
}
revision 2021-01-12 { import ietf-interfaces {
description "Initial revision."; prefix "if";
reference "draft-ietf-ippm-ioam-yang"; reference
} "RFC 8343: A YANG Data Model for Interface Management";
}
/* import ietf-lime-time-types {
* FEATURES prefix "lime";
*/ reference
feature incremental-trace "RFC RFC 8532: Generic YANG Data Model for the Management of
{ Operations, Administration, and Maintenance (OAM) Protocols
description That Use Connectionless Communications";
"This feature indicated that the incremental tracing option is }
supported";
reference "draft-ietf-ippm-ioam-data";
}
feature preallocated-trace organization
{ "IETF IPPM (IP Performance Metrics) Working Group";
description
"This feature indicated that the preallocated tracing option is
supported";
reference "draft-ietf-ippm-ioam-data";
}
feature direct-export contact
{ "WG Web: <http://tools.ietf.org/wg/ippm>
description WG List: <ippm@ietf.org>
"This feature indicated that the direct export option is Editor: zhoutianran@huawei.com
supported"; Editor: james.n.guichard@futurewei.com
reference "ietf-ippm-ioam-direct-export"; Editor: fbrockne@cisco.com
} Editor: srihari@cisco.com";
feature proof-of-transit
{
description description
"This feature indicated that the proof of transit option is "This YANG module specifies a vendor-independent data
supported"; model for the In Situ OAM (IOAM).
reference "draft-ietf-ippm-ioam-data";
}
feature edge-to-edge Copyright (c) 2021 IETF Trust and the persons identified as
{ authors of the code. All rights reserved.
description
"This feature indicated that the edge to edge option is
supported";
reference "draft-ietf-ippm-ioam-data";
}
/* Redistribution and use in source and binary forms, with or
* IDENTITIES without modification, is permitted pursuant to, and subject
*/ to the license terms contained in, the Simplified BSD License
identity base-filter { set forth in Section 4.c of the IETF Trust's Legal Provisions
description Relating to IETF Documents
"Base identity to represent a filter. A filter is used to (http://trustee.ietf.org/license-info).
specify the flow to apply the IOAM profile. ";
}
identity acl-filter {
base base-filter;
description
"Apply ACL rules to specify the flow.";
}
identity base-protocol { This version of this YANG module is part of RFC XXXX; see the
description RFC itself for full legal notices.";
"Base identity to represent the carrier protocol. It's used to
indicate what layer and protocol the IOAM data is embedded.";
}
identity ipv6-protocol { revision 2022-01-12 {
base base-protocol; description "Firstd revision.";
description reference "draft-ietf-ippm-ioam-yang";
"The described IOAM data is embedded in IPv6 protocol."; }
reference "ietf-ippm-ioam-ipv6-options";
}
identity nsh-protocol { /*
base base-protocol; * FEATURES
description */
"The described IOAM data is embedded in NSH.";
reference "ietf-sfc-ioam-nsh";
}
identity base-node-action { feature incremental-trace
description {
"Base identity to represent the node actions. It's used to description
indicate what action the node will take."; "This feature indicated that the incremental tracing option is
} supported";
reference "draft-ietf-ippm-ioam-data";
}
identity action-encapsulate { feature preallocated-trace
base base-node-action; {
description description
"indicate the node is to encapsulate the IOAM packet"; "This feature indicated that the preallocated tracing option is
} supported";
reference "draft-ietf-ippm-ioam-data";
}
identity action-decapsulate { feature direct-export
base base-node-action; {
description description
"indicate the node is to decapsulate the IOAM packet"; "This feature indicated that the direct export option is
} supported";
reference "ietf-ippm-ioam-direct-export";
}
identity base-trace-type { feature proof-of-transit
description {
"Base identity to represent trace types"; description
} "This feature indicated that the proof of transit option is
identity trace-hop-lim-node-id { supported";
base base-trace-type; reference "draft-ietf-ippm-ioam-data";
description }
"indicates presence of Hop_Lim and node_id in the
node data.";
}
identity trace-if-id { feature edge-to-edge
base base-trace-type; {
description description
"indicates presence of ingress_if_id and egress_if_id in the "This feature indicated that the edge to edge option is
node data."; supported";
} reference "draft-ietf-ippm-ioam-data";
}
identity trace-timestamp-seconds { /*
base base-trace-type; * IDENTITIES
description */
"indicates presence of time stamp seconds in the node data."; identity base-filter {
} description
"Base identity to represent a filter. A filter is used to
specify the flow to apply the IOAM profile. ";
}
identity trace-timestamp-nanoseconds { identity acl-filter {
base base-trace-type; base base-filter;
description description
"indicates presence of time stamp nanoseconds in the node data."; "Apply ACL rules to specify the flow.";
} }
identity trace-transit-delay { identity base-protocol {
base base-trace-type; description
description "Base identity to represent the carrier protocol. It's used to
"indicates presence of transit delay in the node data."; indicate what layer and protocol the IOAM data is embedded.";
} }
identity trace-namespace-data { identity ipv6-protocol {
base base-trace-type; base base-protocol;
description description
"indicates presence of namespace specific data (short format) "The described IOAM data is embedded in IPv6 protocol.";
in the node data."; reference "ietf-ippm-ioam-ipv6-options";
} }
identity trace-queue-depth { identity nsh-protocol {
base base-trace-type; base base-protocol;
description description
"indicates presence of queue depth in the node data."; "The described IOAM data is embedded in NSH.";
} reference "ietf-sfc-ioam-nsh";
}
identity trace-opaque-state-snapshot { identity base-node-action {
base base-trace-type; description
description "Base identity to represent the node actions. It's used to
"indicates presence of variable length Opaque State Snapshot indicate what action the node will take.";
field."; }
}
identity trace-hop-lim-node-id-wide { identity action-encapsulate {
base base-trace-type; base base-node-action;
description description
"indicates presence of Hop_Lim and node_id wide in the "indicate the node is to encapsulate the IOAM packet";
node data."; }
}
identity trace-if-id-wide { identity action-decapsulate {
base base-trace-type; base base-node-action;
description description
"indicates presence of ingress_if_id and egress_if_id wide in "indicate the node is to decapsulate the IOAM packet";
the node data."; }
}
identity trace-namespace-data-wide { identity base-trace-type {
base base-trace-type; description
description "Base identity to represent trace types";
"indicates presence of namespace specific data in wide format }
in the node data.";
}
identity trace-buffer-occupancy { identity trace-hop-lim-node-id {
base base-trace-type; base base-trace-type;
description description
"indicates presence of buffer occupancy in the node data."; "indicates presence of Hop_Lim and node_id in the
} node data.";
}
identity trace-checksum-complement { identity trace-if-id {
base base-trace-type; base base-trace-type;
description description
"indicates presence of the Checksum Complement node data."; "indicates presence of ingress_if_id and egress_if_id in the
} node data.";
}
identity base-pot-type { identity trace-timestamp-seconds {
description base base-trace-type;
"Base identity to represent Proof of Transit(PoT) types"; description
} "indicates presence of time stamp seconds in the node data.";
}
identity pot-bytes-16 { identity trace-timestamp-nanoseconds {
base base-pot-type; base base-trace-type;
description description
"POT data is a 16 Octet field."; "indicates presence of time stamp nanoseconds in the node data.";
} }
identity base-e2e-type {
description
"Base identity to represent e2e types";
}
identity e2e-seq-num-64 { identity trace-transit-delay {
base base-e2e-type; base base-trace-type;
description description
"indicates presence of a 64-bit sequence number"; "indicates presence of transit delay in the node data.";
} }
identity e2e-seq-num-32 { identity trace-namespace-data {
base base-e2e-type; base base-trace-type;
description description
"indicates presence of a 32-bit sequence number"; "indicates presence of namespace specific data (short format)
} in the node data.";
}
identity e2e-timestamp-seconds { identity trace-queue-depth {
base base-e2e-type; base base-trace-type;
description description
"indicates presence of timestamp seconds for the "indicates presence of queue depth in the node data.";
transmission of the frame"; }
} identity trace-opaque-state-snapshot {
base base-trace-type;
description
"indicates presence of variable length Opaque State Snapshot
field.";
}
identity e2e-timestamp-subseconds { identity trace-hop-lim-node-id-wide {
base base-e2e-type; base base-trace-type;
description description
"indicates presence of timestamp subseconds for the "indicates presence of Hop_Lim and node_id wide in the
transmission of the frame"; node data.";
} }
identity base-namespace { identity trace-if-id-wide {
description base base-trace-type;
"Base identity to represent the namespace"; description
} "indicates presence of ingress_if_id and egress_if_id wide in
the node data.";
}
identity namespace-ietf { identity trace-namespace-data-wide {
base base-namespace; base base-trace-type;
description description
"namespace that specified in IETF."; "indicates presence of namespace specific data in wide format
} in the node data.";
}
/* identity trace-buffer-occupancy {
* TYPE DEFINITIONS base base-trace-type;
*/ description
"indicates presence of buffer occupancy in the node data.";
}
typedef ioam-filter-type { identity trace-checksum-complement {
type identityref { base base-trace-type;
base base-filter; description
"indicates presence of the Checksum Complement node data.";
} }
description
"Specifies a known type of filter.";
}
typedef ioam-protocol-type { identity base-pot-type {
type identityref { description
base base-protocol; "Base identity to represent Proof of Transit(PoT) types";
} }
description
"Specifies a known type of carrier protocol for the IOAM data.";
}
typedef ioam-node-action { identity pot-type-0 {
type identityref { base base-pot-type;
base base-node-action; description
"POT data is a 16 Octet field to carry data associated to
POT procedures.";
} }
description
"Specifies a known type of node action.";
}
typedef ioam-trace-type { identity base-e2e-type {
type identityref { description
base base-trace-type; "Base identity to represent e2e types";
} }
description
"Specifies a known trace type.";
}
typedef ioam-pot-type { identity e2e-seq-num-64 {
type identityref { base base-e2e-type;
base base-pot-type; description
"indicates presence of a 64-bit sequence number";
} }
description
"Specifies a known pot type.";
}
typedef ioam-e2e-type { identity e2e-seq-num-32 {
type identityref {
base base-e2e-type; base base-e2e-type;
description
"indicates presence of a 32-bit sequence number";
} }
description
"Specifies a known e2e type.";
}
typedef ioam-namespace { identity e2e-timestamp-seconds {
type identityref { base base-e2e-type;
base base-namespace; description
"indicates presence of timestamp seconds for the
transmission of the frame";
} }
description
"Specifies the supported namespace.";
}
/* identity e2e-timestamp-subseconds {
* GROUP DEFINITIONS base base-e2e-type;
*/ description
"indicates presence of timestamp subseconds for the
transmission of the frame";
}
grouping ioam-filter { identity base-namespace {
description "A grouping for IOAM filter definition"; description
"Base identity to represent the namespace";
}
leaf filter-type { identity namespace-ietf {
type ioam-filter-type; base base-namespace;
description "filter type"; description
"namespace that specified in IETF.";
} }
leaf ace-name { /*
when "../filter-type = 'ioam:acl-filter'"; * TYPE DEFINITIONS
type leafref { */
path "/acl:acls/acl:acl/acl:aces/acl:ace/acl:name"; typedef ioam-filter-type {
type identityref {
base base-filter;
} }
description "Access Control Entry name."; description
"Specifies a known type of filter.";
} }
}
grouping encap-tracing { typedef ioam-protocol-type {
description type identityref {
"A grouping for the generic configuration for base base-protocol;
tracing profile."; }
container trace-types {
description description
"the list of trace types for encapsulate"; "Specifies a known type of carrier protocol for the IOAM data.";
}
leaf use-namespace { typedef ioam-node-action {
type ioam-namespace; type identityref {
description base base-node-action;
"the namespace used for the encapsulation";
} }
description
"Specifies a known type of node action.";
}
leaf-list trace-type { typedef ioam-trace-type {
type ioam-trace-type; type identityref {
description base base-trace-type;
"The trace type is only defined at the encapsulation node.";
} }
description
"Specifies a known trace type.";
} }
leaf enable-loopback-mode {
type boolean; typedef ioam-pot-type {
default false; type identityref {
base base-pot-type;
}
description description
"Loopback mode is used to send a copy of a packet back towards "Specifies a known pot type.";
the source. The loopback mode is only defined at the
encapsulation node.";
} }
leaf enable-active-mode { typedef ioam-e2e-type {
type boolean; type identityref {
default false; base base-e2e-type;
}
description description
"Active mode indicates that a packet is used for active "Specifies a known e2e type.";
measurement. An IOAM decapsulating node that receives a }
packet with the Active flag set in one of its Trace options typedef ioam-namespace {
must terminate the packet."; type identityref {
base base-namespace;
}
description
"Specifies the supported namespace.";
} }
}
grouping ioam-incremental-tracing-profile { /*
description * GROUP DEFINITIONS
"A grouping for incremental tracing profile."; */
leaf node-action { grouping ioam-filter {
type ioam-node-action; description "A grouping for IOAM filter definition";
description "node action";
}
uses encap-tracing { leaf filter-type {
when "node-action = 'ioam:action-encapsulate'"; type ioam-filter-type;
description "filter type";
}
leaf ace-name {
when "../filter-type = 'ioam:acl-filter'";
type leafref {
path "/acl:acls/acl:acl/acl:aces/acl:ace/acl:name";
}
description "Access Control Entry name.";
}
} }
leaf max-length { grouping encap-tracing {
when "../node-action = 'ioam:action-encapsulate'";
type uint32;
units bytes;
description description
"This field specifies the maximum length of the node data list "A grouping for the generic configuration for
in octets. The max-length is only defined at the tracing profile.";
encapsulation node. And it's only used for the incremental
tracing mode.";
}
}
grouping ioam-preallocated-tracing-profile { container trace-types {
description description
"A grouping for incremental tracing profile."; "the list of trace types for encapsulate";
leaf node-action { leaf use-namespace {
type ioam-node-action; type ioam-namespace;
description "node action"; description
} "the namespace used for the encapsulation";
}
uses encap-tracing { leaf-list trace-type {
when "node-action = 'ioam:action-encapsulate'"; type ioam-trace-type;
} description
} "The trace type is only defined at the encapsulation node.";
grouping ioam-direct-export-profile { }
description }
"A grouping for direct export profile.";
leaf node-action { leaf enable-loopback-mode {
type ioam-node-action; type boolean;
description "node action"; default false;
} description
"Loopback mode is used to send a copy of a packet back towards
the source. The loopback mode is only defined at the
encapsulation node.";
}
uses encap-tracing { leaf enable-active-mode {
when "node-action = 'ioam:action-encapsulate'"; type boolean;
default false;
description
"Active mode indicates that a packet is used for active
measurement. An IOAM decapsulating node that receives a
packet with the Active flag set in one of its Trace options
must terminate the packet.";
}
} }
leaf flow-id { grouping ioam-incremental-tracing-profile {
when "../node-action = 'ioam:action-encapsulate'";
type uint32;
description description
"A 32-bit flow identifier. The field is set at the "A grouping for incremental tracing profile.";
encapsulating node. The Flow ID can be uniformly assigned
by a central controller or algorithmically generated by the
encapsulating node. The latter approach cannot guarantee
the uniqueness of Flow ID, yet the conflict probability is
small due to the large Flow ID space.flow-id is used to
correlate the exported data of the same flow from multiple
nodes and from multiple packets.";
}
}
grouping ioam-e2e-profile { leaf node-action {
description type ioam-node-action;
"A grouping for end to end profile."; description "node action";
}
leaf node-action { uses encap-tracing {
type ioam-node-action; when "node-action = 'ioam:action-encapsulate'";
}
leaf max-length {
when "../node-action = 'ioam:action-encapsulate'";
type uint32;
units bytes;
description
"This field specifies the maximum length of the node data list
in octets. The max-length is only defined at the
encapsulation node. And it's only used for the incremental
tracing mode.";
}
}
grouping ioam-preallocated-tracing-profile {
description description
"indicate how the node act for this profile"; "A grouping for incremental tracing profile.";
leaf node-action {
type ioam-node-action;
description "node action";
}
uses encap-tracing {
when "node-action = 'ioam:action-encapsulate'";
}
} }
container e2e-types {
when "../node-action = 'ioam:action-encapsulate'"; grouping ioam-direct-export-profile {
description description
"the list of e2e types for encapsulate"; "A grouping for direct export profile.";
leaf use-namespace { leaf node-action {
type ioam-namespace; type ioam-node-action;
description description "node action";
"the namespace used for the encapsulation";
} }
leaf-list e2e-type { uses encap-tracing {
type ioam-e2e-type; when "node-action = 'ioam:action-encapsulate'";
}
leaf flow-id {
when "../node-action = 'ioam:action-encapsulate'";
type uint32;
description description
"The e2e type is only defined at the encapsulation node."; "A 32-bit flow identifier. The field is set at the
encapsulating node. The Flow ID can be uniformly assigned
by a central controller or algorithmically generated by the
encapsulating node. The latter approach cannot guarantee
the uniqueness of Flow ID, yet the conflict probability is
small due to the large Flow ID space.flow-id is used to
correlate the exported data of the same flow from multiple
nodes and from multiple packets.";
} }
} }
}
grouping ioam-admin-config { grouping ioam-e2e-profile {
description
"IOAM top-level administrative configuration.";
leaf enabled {
type boolean;
default false;
description description
"When true, IOAM configuration is enabled for the system. "A grouping for end to end profile.";
Meanwhile, the IOAM data-plane functionality is enabled.";
}
}
/* leaf node-action {
* DATA NODES type ioam-node-action;
*/ description
"indicate how the node act for this profile";
}
container ioam { container e2e-types {
description "IOAM top level container"; when "../node-action = 'ioam:action-encapsulate'";
description
"the list of e2e types for encapsulate";
container ioam-info { leaf use-namespace {
config false; type ioam-namespace;
description description
"Describes assistant information such as units or timestamp "the namespace used for the encapsulation";
format. So that monitoring systems can interpret the IOAM }
data.";
leaf-list e2e-type {
type ioam-e2e-type;
description
"The e2e type is only defined at the encapsulation node.";
}
}
} }
container ioam-profiles {
grouping ioam-admin-config {
description description
"Contains a list of IOAM profiles."; "IOAM top-level administrative configuration.";
container admin-config { leaf enabled {
type boolean;
default false;
description description
"Contains all the administrative configurations related to "When true, IOAM configuration is enabled for the system.
the IOAM functionalities and all the IOAM profiles."; Meanwhile, the IOAM data-plane functionality is enabled.";
uses ioam-admin-config;
} }
}
list ioam-profile { /*
key "profile-name"; * DATA NODES
ordered-by user; */
container ioam {
description "IOAM top level container";
container ioam-info {
config false;
description description
"A list of IOAM profiles that configured on the node."; "Describes assistant information such as units or timestamp
format. So that monitoring systems can interpret the IOAM
data.";
leaf profile-name { leaf timestamp-type {
type string; type identityref {
mandatory true; base lime:timestamp-type;
}
description description
"Unique identifier for each IOAM profile"; "Type of timestamp, such as Truncated PTP or NTP.";
} }
container filter { list available-interface {
uses ioam-filter; key "if-name";
ordered-by user;
description description
"The filter which is used to indicate the flow to apply "A list of available interfaces that support IOAM.";
IOAM."; leaf if-name {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description "Interface name.";
}
} }
}
leaf protocol-type { container ioam-profiles {
type ioam-protocol-type; description
"Contains a list of IOAM profiles.";
container admin-config {
description description
"This item is used to indicate the carrier protocol where "Contains all the administrative configurations related to
the IOAM is applied."; the IOAM functionalities and all the IOAM profiles.";
uses ioam-admin-config;
} }
container incremental-tracing-profile { list ioam-profile {
if-feature incremental-trace; key "profile-name";
ordered-by user;
description description
"describe the profile for incremental tracing option"; "A list of IOAM profiles that configured on the node.";
leaf enabled { leaf profile-name {
type boolean; type string;
default false; mandatory true;
description description
"When true, apply incremental tracing option to the "Unique identifier for each IOAM profile";
specified flow identified by the filter.";
}
uses ioam-incremental-tracing-profile; }
}
container preallocated-tracing-profile { container filter {
if-feature preallocated-trace; uses ioam-filter;
description description
"describe the profile for preallocated tracing option"; "The filter which is used to indicate the flow to apply
IOAM.";
}
leaf enabled { leaf protocol-type {
type boolean; type ioam-protocol-type;
default false;
description description
"When true, apply preallocated tracing option to the "This item is used to indicate the carrier protocol where
specified flow identified by the following filter."; the IOAM is applied.";
} }
uses ioam-preallocated-tracing-profile; container incremental-tracing-profile {
} if-feature incremental-trace;
description
"describe the profile for incremental tracing option";
container direct-export-profile { leaf enabled {
if-feature direct-export; type boolean;
description default false;
"describe the profile for direct-export option"; description
"When true, apply incremental tracing option to the
specified flow identified by the filter.";
}
leaf enabled { uses ioam-incremental-tracing-profile;
type boolean;
default false;
description
"When true, apply direct-export option to the
specified flow identified by the following filter.";
} }
uses ioam-direct-export-profile; container preallocated-tracing-profile {
} if-feature preallocated-trace;
description
"describe the profile for preallocated tracing option";
container pot-profile { leaf enabled {
if-feature proof-of-transit; type boolean;
description default false;
"describe the profile for PoT option"; description
"When true, apply preallocated tracing option to the
specified flow identified by the following filter.";
}
leaf enabled { uses ioam-preallocated-tracing-profile;
type boolean; }
default false; container direct-export-profile {
if-feature direct-export;
description description
"When true, apply Proof of Transit option to the "describe the profile for direct-export option";
specified flow identified by the following filter.";
leaf enabled {
type boolean;
default false;
description
"When true, apply direct-export option to the
specified flow identified by the following filter.";
}
uses ioam-direct-export-profile;
} }
leaf active-profile-index { container pot-profile {
type pot:profile-index-range; if-feature proof-of-transit;
description description
"Proof of transit profile index that is currently "describe the profile for PoT option";
active. Will be set in the first hop of the path
or chain. Other nodes will not use this field.";
}
uses pot:pot-profile; leaf enabled {
} type boolean;
default false;
description
"When true, apply Proof of Transit option to the
specified flow identified by the following filter.";
}
container e2e-profile { leaf pot-type {
if-feature edge-to-edge; type ioam-pot-type;
description description
"describe the profile for e2e option"; "The type of a particular POT variant that specifies
the POT data that is included..";
}
}
leaf enabled { container e2e-profile {
type boolean; if-feature edge-to-edge;
default false;
description description
"When true, apply End to end option to the "describe the profile for e2e option";
specified flow identified by the following filter.";
}
uses ioam-e2e-profile; leaf enabled {
type boolean;
default false;
description
"When true, apply End to end option to the
specified flow identified by the following filter.";
}
uses ioam-e2e-profile;
}
} }
} }
} }
} }
} <CODE ENDS>
<CODE ENDS>
5. Security Considerations 5. Security Considerations
The YANG module specified in this document defines a schema for data The YANG module specified in this document defines a schema for data
that is designed to be accessed via network management protocols such that is designed to be accessed via network management protocols such
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
is the secure transport layer, and the mandatory-to-implement secure is the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
is HTTPS, and the mandatory-to-implement secure transport is TLS is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC5246]. [RFC5246].
skipping to change at page 22, line 15 skipping to change at page 22, line 38
operations and content. operations and content.
There are a number of data nodes defined in this YANG module that are There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., config true, which is the writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g., edit-config) in some network environments. Write operations (e.g., edit-config)
to these data nodes without proper protection can have a negative to these data nodes without proper protection can have a negative
effect on network operations. These are the subtrees and data nodes effect on network operations. These are the subtrees and data nodes
and their sensitivity/vulnerability: and their sensitivity/vulnerability:
o /ioam/ioam-profiles/admin-config * /ioam/ioam-profiles/admin-config
The items in the container above include the top level administrative The items in the container above include the top level administrative
configurations related to the IOAM functionalities and all the IOAM configurations related to the IOAM functionalities and all the IOAM
profiles. Unexpected changes to these items could lead to the IOAM profiles. Unexpected changes to these items could lead to the IOAM
function disruption and/ or misbehavior of all the IOAM profiles. function disruption and/ or misbehavior of all the IOAM profiles.
o /ioam/ioam-profiles/ioam-profile * /ioam/ioam-profiles/ioam-profile
The entries in the list above include the whole IOAM profile The entries in the list above include the whole IOAM profile
configurations which indirectly create or modify the device configurations which indirectly create or modify the device
configurations. Unexpected changes to these entries could lead to configurations. Unexpected changes to these entries could lead to
the mistake of the IOAM behavior for the corresponding flows. the mistake of the IOAM behavior for the corresponding flows.
6. IANA Considerations 6. IANA Considerations
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number (and remove this note). actual RFC number (and remove this note).
skipping to change at page 23, line 8 skipping to change at page 23, line 28
Names registry [RFC7950] with the following suggestion: Names registry [RFC7950] with the following suggestion:
name: ietf-ioam name: ietf-ioam
namespace: urn:ietf:params:xml:ns:yang:ietf-ioam namespace: urn:ietf:params:xml:ns:yang:ietf-ioam
prefix: ioam prefix: ioam
reference: RFC XXXX reference: RFC XXXX
7. Acknowledgements 7. Acknowledgements
For their valuable comments, discussions, and feedback, we wish to For their valuable comments, discussions, and feedback, we wish to
acknowledge Greg Mirsky, Reshad Rahman and Tom Petch. acknowledge Greg Mirsky, Reshad Rahman, Tom Petch and Mickey Spiegel.
8. References 8. References
8.1. Normative References 8.1. Normative References
[I-D.ietf-ippm-ioam-data] [I-D.ietf-ippm-ioam-data]
Brockners, F., Bhandari, S., and T. Mizrahi, "Data Fields Brockners, F., Bhandari, S., and T. Mizrahi, "Data Fields
for In-situ OAM", draft-ietf-ippm-ioam-data-12 (work in for In-situ OAM", Work in Progress, Internet-Draft, draft-
progress), February 2021. ietf-ippm-ioam-data-17, 13 December 2021,
<https://www.ietf.org/archive/id/draft-ietf-ippm-ioam-
data-17.txt>.
[I-D.ietf-ippm-ioam-direct-export] [I-D.ietf-ippm-ioam-direct-export]
Song, H., Gafni, B., Zhou, T., Li, Z., Brockners, F., Song, H., Gafni, B., Zhou, T., Li, Z., Brockners, F.,
Bhandari, S., Sivakolundu, R., and T. Mizrahi, "In-situ Bhandari, S., Sivakolundu, R., and T. Mizrahi, "In-situ
OAM Direct Exporting", draft-ietf-ippm-ioam-direct- OAM Direct Exporting", Work in Progress, Internet-Draft,
export-03 (work in progress), February 2021. draft-ietf-ippm-ioam-direct-export-07, 13 October 2021,
<https://www.ietf.org/archive/id/draft-ietf-ippm-ioam-
[I-D.ietf-sfc-proof-of-transit] direct-export-07.txt>.
Brockners, F., Bhandari, S., Mizrahi, T., Dara, S., and S.
Youell, "Proof of Transit", draft-ietf-sfc-proof-of-
transit-08 (work in progress), November 2020.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
skipping to change at page 24, line 34 skipping to change at page 25, line 6
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
[RFC8519] Jethanandani, M., Agarwal, S., Huang, L., and D. Blair, [RFC8519] Jethanandani, M., Agarwal, S., Huang, L., and D. Blair,
"YANG Data Model for Network Access Control Lists (ACLs)", "YANG Data Model for Network Access Control Lists (ACLs)",
RFC 8519, DOI 10.17487/RFC8519, March 2019, RFC 8519, DOI 10.17487/RFC8519, March 2019,
<https://www.rfc-editor.org/info/rfc8519>. <https://www.rfc-editor.org/info/rfc8519>.
8.2. Informative References 8.2. Informative References
[I-D.ietf-ippm-ioam-ipv6-options] [I-D.ietf-ippm-ioam-ipv6-options]
Bhandari, S., Brockners, F., Pignataro, C., Gredler, H., Bhandari, S. and F. Brockners, "In-situ OAM IPv6 Options",
Leddy, J., Youell, S., Mizrahi, T., Kfir, A., Gafni, B., Work in Progress, Internet-Draft, draft-ietf-ippm-ioam-
Lapukhov, P., Spiegel, M., Krishnan, S., Asati, R., and M. ipv6-options-06, 31 July 2021,
Smith, "In-situ OAM IPv6 Options", draft-ietf-ippm-ioam- <https://www.ietf.org/archive/id/draft-ietf-ippm-ioam-
ipv6-options-05 (work in progress), February 2021. ipv6-options-06.txt>.
[I-D.ietf-sfc-ioam-nsh] [I-D.ietf-sfc-ioam-nsh]
Brockners, F. and S. Bhandari, "Network Service Header Brockners, F. and S. Bhandari, "Network Service Header
(NSH) Encapsulation for In-situ OAM (IOAM) Data", draft- (NSH) Encapsulation for In-situ OAM (IOAM) Data", Work in
ietf-sfc-ioam-nsh-05 (work in progress), December 2020. Progress, Internet-Draft, draft-ietf-sfc-ioam-nsh-06, 31
July 2021, <https://www.ietf.org/archive/id/draft-ietf-
sfc-ioam-nsh-06.txt>.
Appendix A. Examples Appendix A. Examples
This appendix is non-normative. This appendix is non-normative.
tbd tbd
Authors' Addresses Authors' Addresses
Tianran Zhou Tianran Zhou
Huawei Huawei
156 Beiqing Rd. 156 Beiqing Rd.
Beijing 100095 Beijing
100095
China China
Email: zhoutianran@huawei.com Email: zhoutianran@huawei.com
Jim Guichard Jim Guichard
Futurewei Futurewei
United States of America United States of America
Email: james.n.guichard@futurewei.com Email: james.n.guichard@futurewei.com
Frank Brockners Frank Brockners
Cisco Systems Cisco Systems
Hansaallee 249, 3rd Floor Hansaallee 249, 3rd Floor
Duesseldorf, Nordrhein-Westfalen 40549 40549 Duesseldorf
Germany Germany
Email: fbrockne@cisco.com Email: fbrockne@cisco.com
Srihari Raghavan Srihari Raghavan
Cisco Systems Cisco Systems
Tril Infopark Sez, Ramanujan IT City Tril Infopark Sez, Ramanujan IT City
Neville Block, 2nd floor, Old Mahabalipuram Road Neville Block, 2nd floor, Old Mahabalipuram Road
Chennai, Tamil Nadu 600113 Chennai 600113
Tamil Nadu
India India
Email: srihari@cisco.com Email: srihari@cisco.com
 End of changes. 177 change blocks. 
595 lines changed or deleted 624 lines changed or added

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