| Internet-Draft | Fixed IOAM Option | July 2026 |
| Mizrahi, et al. | Expires 22 January 2027 | [Page] |
- Workgroup:
- IPPM
- Internet-Draft:
- draft-mbci-ippm-ioam-template-option-03
- Published:
- Intended Status:
- Standards Track
- Expires:
In Situ Operations, Administration, and Maintenance (IOAM) Template Option
Abstract
In situ measurement is performed by incorporating performance related information into in-flight data packets. This document specifies a new IOAM Option-Type that has a fixed length and can be updated by transit nodes along the path. It enables lightweight monitoring while maintaining a constant length that is not changed in-flight and is not affected by the number of hops in the network.¶
Status of This Memo
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 22 January 2027.¶
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
1. Introduction
In Situ Operations, Administration, and Maintenance (IOAM) [RFC9197] is used for measuring and monitoring a network by incorporating measurement and operational data into some or all of the data packets. [RFC9197] has defined several Option-Types, intended for different purposes.¶
This document introduces a new IOAM Option-Type that can be incorporated into data packets and updated by transit nodes along the path. Compared to existing IOAM Trace Option-Types, the new Option-Type provides performance information using data fields that have a constant length.¶
There are several in-progress proposals that use a fixed-size telemetry header, including [I-D.cxx-ippm-ioamaggr], [I-D.mzbc-ippm-transit-measurement-option], [I-D.xiao-ippm-ioam-trace-extensions], [I-D.filsfils-ippm-path-tracing], [I-D.ravi-ippm-csig], and [I-D.shi-ippm-congestion-measurement-data]. These proposals can potentially benefit from the IOAM Option-Type that is presented in this document.¶
2. Conventions
2.1. Requirement Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
2.2. Terminology
Abbreviations used in this document:¶
- IOAM:
- In-situ Operations, Administration, and Maintenance¶
- OAM:
- Operations, Administration, and Maintenance¶
The terms Option-Type, encapsulating node, decapsulating node, and transit node are defined in [RFC9197].¶
3. Use Cases
There is a set of use cases that the current IOAM Option-Types do not support. This section lists a set of use cases for the IOAM Template Option-Type.¶
-
Aggregated information: aggregated information across several nodes, e.g., [I-D.cxx-ippm-ioamaggr]. Many applications interested in telemetry data across a path are not focused on individual node's telemetry, but on an aggregated metric that can provide a more holistic picture. Aggregating IOAM data along a network path meets this requirement. IOAM nodes do not only retrieve information, but also perform functions such as sum, average, minimum, or maximum of a given data parameter and carry the result to the next IOAM node in an IOAM data field.¶
-
Congestion information: information relating to the congestion status can be collected from nodes along the path, e.g., [I-D.ravi-ippm-csig] providing a finer level of granularity than conventional ECN while limiting the congestion status to a fixed size.¶
-
Combined information: a combination of aggregated information and congestion-related information can be collected along the path, e.g., [I-D.mzbc-ippm-transit-measurement-option], while using a fixed size.¶
4. Requirements for the IOAM Template Option-Type
This section lists requirements for the IOAM Template Option-Type:¶
-
Templates supported MUST have a fixed length and fixed structure. Fixed length and structure are to simplify parsing of the Option-Type.¶
-
Each templates is a composition of one or more data fields.¶
-
Data fields within a template can have different sizes (e.g., 8 bits, 16 bits, 32 bits).¶
-
Templates MUST align to 4 octet boundaries. If necessary, padding fields are used to guarantee 4-octet alignment.¶
-
Data fields within a Template can be read-only for IOAM nodes or read-write for IOAM nodes, depending on their use.¶
-
The IOAM Template Option-Type SHOULD support IETF defined (IANA registry) Templates for use-cases which are defined by the IETF as well as custom/deployment specific templates, that are defined by the operator and are specific to a deployment.¶
5. In situ Template Option-Type
This document defines a new IOAM Option-Type, the Template Option-Type. The length of the Template Option-Type MUST NOT be modified by IOAM transit nodes. However, IOAM transit nodes MAY modify the option data in the Template Option-Type. Figure 1 presents the format of this Option-Type.¶
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | Template-ID | Template-Aux |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Template-Data depending on the Template-ID value ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
An IOAM node that complies to this draft MUST support the following fields, as depicted in Figure 1:¶
- Namespace-ID:
- A 16-bit namespace identifier, as defined in [RFC9197].¶
- Template-ID:
- An 8-bit identifier that specifies the template that follows. A new registry is defined for this field, as specified in Section 7. The value 0 has been assigned, indicating "No Option Data". Assignments of values 1 to 127 are controlled by IANA. Values 128 to 255 are can be defined by an operator for a specific deployment.¶
- Template-Aux:
- An 8-bit length field for template-dependent usage. If a template does not make use of the data field, the field SHOULD be populated with the length of the template data in multiples of 4 octets. (Please note that since the template format is fixed and defined per the template ID, and the IOAM option header includes a field that designates the overal option data length, the length of the template data is in fact already implied.)¶
- Template-Data:
- The data that follows the Template-ID has a constant length. The semantics and length of the data are determined by the Template-ID. The option data might consist of more than one sub-field.¶
The specification of the Template-ID values and the corresponding option data formats is outside the scope of this document.¶
As in [RFC9197], the Template Option-Type can be incorporated into all or a subset of the traffic that is forwarded by the encapsulating node. Notably, this option adds a fixed and low overhead to data packets, which remains constant along the path.¶
6. Examples
The section lists examples of how the template option can be used.¶
6.1. IOAM Data Aggregation Along The Path
[I-D.cxx-ippm-ioamaggr] describes use cases to aggregate IOAM data along a network path. Rather than just collecting data at IOAM nodes, data is collected and processed by the IOAM nodes - using functions like sum, average, minimum, or maximum of a given data parameter - and the result stored in a data field called "Aggregate" (see below). The Template Option can be used to support this use-case with the following example template:¶
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | TmplID: Agg | FEP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IOAM Data Param | AggrF | Flags|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Aggregate |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Auxil-data Node-Id | Hop Count |
+---------------------------------------------------------------+
The fields of the template correspond to their counterparts that are defined in [I-D.cxx-ippm-ioamaggr], along with a more detailed discussion. For their readers convenience, the most important aspects of the definition are included here.¶
- FEP (Future Extension Point
- : This field is reserved for future extensions. It is similar to a reserved field with the difference that implementations may choose to customize it for their purpose. It can be used, for example, to define operator-specific or proprietary sub-templates for specific categories of aggregation. The FEP value SHOULD be set to 0 if there is no specific use. IOAM transit nodes MUST NOT change it. (Note, it is an item for discussion whether to set the FEP value to 12 instead of 0, i.e. to the length of the template data.)¶
- IOAM Data Param:
- This field identifies the data parameter that is to be aggregated across the nodes. It MUST be set by the IOAM encapsulating node. IOAM transit nodes MUST NOT change it. Identification of data parameters is dependent on the administrative domain and assigned by the network administrator, maintained in an IOAM data parameter registry. Note, it is conceivable to subject IOAM data parameters to standardization and/or introduce a separate IANA registry at some point in the future. Furthermore, it is conceivable that the IOAM data parameter ID space will be divided to allow coexistence for both standardized as well as proprietary IOAM data parameters.¶
- AggrF (Aggregation Function):
- This 4-bit field identifies the aggregation function that is to be applied. Its value MUST be set by the IOAM encapsulating node. IOAM transit nodes MUST not change it. The following aggregation functions are defined: Sum (0), Min (1), Max (2), Average (3). (Please note that other aggregation functions are possible, e.g. count, but their inclusion is subject for further discussion.)¶
- Flags:
-
This 4-bit field allows to indicate errors that were encountered when attempting to perform the requested aggregation along the path. An intermediate node that encounters an error during processing of the IOAM Aggregation that prevents it from updating the aggregate as requested MUST set the corresponding flag to 1. In order to facilitate troubleshooting, it also MUST set the value of the Auxil-data Node-ID field in the template to its own Node-ID. The encapsulating node MUST set the value of Flags to zero upon transmission. When an intermediate node encounters receives a packet in which any of the Flags are non-zero, the node MUST NOT perform further IOAM operations on that packet; instead, the IOAM data MUST be forwarded as-is unchanged. The following flags are defined:¶
- Aggregate:
- This 32-bit field contains the aggregated value. Its value is initialized by the encapsulating node,in general by simply recording the value of its data parameter that is to be aggregated. The field is updated by each subsequent node pre the requested aggregation, including IOAM transit nodes as well as the IOAM decapsulating node (prior to performing decapsulation).¶
- Auxil-data Node ID
- : For aggregation functions min and max, this field is used to identify the node at which the the min or max was encountered. In case of errors that are encountered along the path, this field is used to indicate the node at which the error occurred, as indicated when a corresponding error flag has been set.¶
- Hop Count
- : Records the number of nodes along the path that successfully processed the IOAM aggregation request. It is set to 1 by the encapsulating node and is incremented by each subsequent node. One use for this concerns facilitating the computation of an average (by dividing a sum by the number of nodes).¶
Please note that the template for IOAM data aggregation is included here only to illustrate possible use cases for the IOAM template option. For a more detailed discussion of IOAM data aggregation, of the data parameter fields involved, as well as of associated design decisions, please refer to [I-D.cxx-ippm-ioamaggr].¶
6.2. Transit Measurement Template
The use case that is presented in [I-D.mzbc-ippm-transit-measurement-option] provides aggregated transit delay information, as well as congestion status of transit nodes, as shown in the following template:¶
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | TBD_2 | Length=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Accumulated Delay |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hop Count | Status Bitmap |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Accumulated Delay:
- represents the sum of the transit delay values in nanoseconds along the path of the packet, including the current node.¶
- Hop Count/Status Bitmap:
- indicates the devices along the path that have experienced congestion. Hop Count is a one-octet field that indicates the number of hops since the encapsulating node, and is updated by each transit node. Status Bitmap is a three octet field that represents the congestion status of each transit node along the path. The value '1' indicates that the current packet was enqueued in a queue that is congested.¶
7. IANA Considerations
To be added to a future version of this document.¶
8. Implementation Status
A Proof-of-Concept of the template option along with the aggregation trace template has been implemented at OST. It can be accessed at https://github.com/INSRapperswil/green-path-optimizer.¶
9. Security Considerations
The security considerations of IOAM in general are discussed in [RFC9197]. The Template Option-Type may be used for reconnaissance, which in turn can facilitate other types of attacks. As in other types of IOAM data fields, a malicious attacker can manipulate the field values in order to create a false illusion of nonexistent network issues or prevent the detection of actual ones.¶
10. References
10.1. Normative References
- [RFC2119]
- Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
- [RFC7942]
- Sheffer, Y. and A. Farrel, "Improving Awareness of Running Code: The Implementation Status Section", BCP 205, RFC 7942, DOI 10.17487/RFC7942, , <https://www.rfc-editor.org/info/rfc7942>.
- [RFC8174]
- Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
- [RFC9197]
- Brockners, F., Ed., Bhandari, S., Ed., and T. Mizrahi, Ed., "Data Fields for In Situ Operations, Administration, and Maintenance (IOAM)", RFC 9197, DOI 10.17487/RFC9197, , <https://www.rfc-editor.org/info/rfc9197>.
10.2. Informative References
- [I-D.cxx-ippm-ioamaggr]
- Clemm, A., Metzger, L., Bister, R., and S. Dellsperger, "Aggregation Trace Option for In-situ Operations, Administration, and Maintenance (IOAM)", Work in Progress, Internet-Draft, draft-cxx-ippm-ioamaggr-06, , <https://datatracker.ietf.org/doc/html/draft-cxx-ippm-ioamaggr-06>.
- [I-D.filsfils-ippm-path-tracing]
- Filsfils, C., Abdelsalam, A., Camarillo, P., Yufit, M., Su, Y., Matsushima, S., Valentine, M., and Dhamija, "Path Tracing in SRv6 networks", Work in Progress, Internet-Draft, draft-filsfils-ippm-path-tracing-06, , <https://datatracker.ietf.org/doc/html/draft-filsfils-ippm-path-tracing-06>.
- [I-D.mzbc-ippm-transit-measurement-option]
- Mizrahi, T., Zhou, T., Belkar, S., and R. Cohen, "The Transit Measurement Option", Work in Progress, Internet-Draft, draft-mzbc-ippm-transit-measurement-option-08, , <https://datatracker.ietf.org/doc/html/draft-mzbc-ippm-transit-measurement-option-08>.
- [I-D.ravi-ippm-csig]
- Ravi, A., Dukkipati, N., Mehta, N., and J. Kumar, "Congestion Signaling (CSIG)", Work in Progress, Internet-Draft, draft-ravi-ippm-csig-01, , <https://datatracker.ietf.org/doc/html/draft-ravi-ippm-csig-01>.
- [I-D.shi-ippm-congestion-measurement-data]
- Fioccola, G., Zhou, T., Zhao, G., and Z. Li, "Data Fields for Congestion Measurement", Work in Progress, Internet-Draft, draft-shi-ippm-congestion-measurement-data-06, , <https://datatracker.ietf.org/doc/html/draft-shi-ippm-congestion-measurement-data-06>.
- [I-D.xiao-ippm-ioam-trace-extensions]
- Min, X., Liu, Y., and C. Lin, "Extensions to IOAM Trace Option for Carrying Fixed-Size Data", Work in Progress, Internet-Draft, draft-xiao-ippm-ioam-trace-extensions-03, , <https://datatracker.ietf.org/doc/html/draft-xiao-ippm-ioam-trace-extensions-03>.