For echo requests, the IOAM Capabilities Query uses a container that has the following format:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IOAM Capabilities Query Container Header .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. List of IOAM Namespace-IDs .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When this container is present in the echo request sent by an IOAM encapsulating node, the IOAM encapsulating node requests that the receiving node reply with its enabled IOAM capabilities. If there is no IOAM capability to be reported by the receiving node, then this container
MUST be ignored by the receiving node. This means the receiving node
MUST send an echo reply without IOAM capabilities or no echo reply, in the light of whether the echo request includes containers other than the IOAM Capabilities Query Container. A list of IOAM Namespace-IDs (one or more Namespace-IDs)
MUST be included in this container in the echo request; if present, the Default-Namespace-ID 0x0000
MUST be placed at the beginning of the list of IOAM Namespace-IDs. The IOAM encapsulating node requests only the enabled IOAM capabilities that match one of the Namespace-IDs. Inclusion of the Default-Namespace-ID 0x0000 elicits replies only for capabilities that are configured with the Default-Namespace-ID 0x0000. The Namespace-ID has the same definition as what's specified in
Section 4.3 of
RFC 9197.
The IOAM Capabilities Query Container has a container header that is used to identify the type and, optionally, the length of the container payload. The container payload (List of IOAM Namespace-IDs) is zero-padded to align with a 4-octet boundary. Since the Default-Namespace-ID 0x0000 is mandated to appear first in the list, any other occurrences of 0x0000
MUST be disregarded.
The length, structure, and definition of the IOAM Capabilities Query Container Header depend on the specific deployment environment.
For echo replies, the IOAM Capabilities Response uses a container that has the following format:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IOAM Capabilities Response Container Header .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. List of IOAM Capabilities Objects .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When this container is present in the echo reply sent by an IOAM transit node or IOAM decapsulating node, the IOAM function is enabled at this node, and this container contains the enabled IOAM capabilities of the sender. A list of IOAM capabilities objects (one or more objects) that contains the enabled IOAM capabilities
MUST be included in this container of the echo reply unless the sender encounters an error (e.g., no matched Namespace-ID).
The IOAM Capabilities Response Container has a container header that is used to identify the type and, optionally, the length of the container payload. The container header
MUST be defined such that it falls on a 4-octet boundary.
The length, structure, and definition of the IOAM Capabilities Response Container Header depends on the specific deployment environment.
Based on the IOAM data fields defined in [
RFC 9197] and [
RFC 9326], six types of objects are defined in this document. The same type of object
MAY be present in the IOAM Capabilities Response Container more than once, only if listed with a different Namespace-ID.
Similar to the container, each object has an object header that is used to identify the type and length of the object payload. The object payload
MUST be defined such that it falls on a 4-octet boundary.
The length, structure, and definition of the object header depends on the specific deployment environment.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IOAM Pre-allocated Tracing Capabilities Object Header .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IOAM-Trace-Type | Reserved |W|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | Ingress_MTU |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ingress_if_id (short or wide format) ...... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When the IOAM Pre-allocated Tracing Capabilities Object is present in the IOAM Capabilities Response Container, the sending node is an IOAM transit node, and the IOAM pre-allocated tracing function is enabled at this IOAM transit node.
The IOAM-Trace-Type field has the same definition as what's specified in
Section 4.4 of
RFC 9197.
The Reserved field
MUST be zeroed on transmission and ignored on receipt.
The W flag indicates whether Ingress_if_id is in short or wide format. The W-bit is set if the Ingress_if_id is in wide format. The W-bit is clear if the Ingress_if_id is in short format.
The Namespace-ID field has the same definition as what's specified in
Section 4.3 of
RFC 9197. It
MUST be one of the Namespace-IDs listed in the IOAM Capabilities Query Object of the echo request.
The Ingress_MTU field has 16 bits and specifies the MTU (in octets) of the ingress interface from which the sending node received the echo request.
The Ingress_if_id field has 16 bits (in short format) or 32 bits (in wide format) and specifies the identifier of the ingress interface from which the sending node received the echo request. If the W-bit is cleared, the Ingress_if_id field has 16 bits; then the 16 bits following the Ingress_if_id field are reserved for future use,
MUST be set to zero, and
MUST be ignored when non-zero.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IOAM Incremental Tracing Capabilities Object Header .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IOAM-Trace-Type | Reserved |W|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | Ingress_MTU |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ingress_if_id (short or wide format) ...... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When the IOAM Incremental Tracing Capabilities Object is present in the IOAM Capabilities Response Container, the sending node is an IOAM transit node, and the IOAM incremental tracing function is enabled at this IOAM transit node.
The IOAM-Trace-Type field has the same definition as what's specified in
Section 4.4 of
RFC 9197.
The Reserved field
MUST be zeroed on transmission and ignored on receipt.
The W flag indicates whether Ingress_if_id is in short or wide format. The W-bit is set if the Ingress_if_id is in wide format. The W-bit is clear if the Ingress_if_id is in short format.
The Namespace-ID field has the same definition as what's specified in
Section 4.3 of
RFC 9197. It
MUST be one of the Namespace-IDs listed in the IOAM Capabilities Query Object of the echo request.
The Ingress_MTU field has 16 bits and specifies the MTU (in octets) of the ingress interface from which the sending node received the echo request.
The Ingress_if_id field has 16 bits (in short format) or 32 bits (in wide format) and specifies the identifier of the ingress interface from which the sending node received the echo request. If the W-bit is cleared, the Ingress_if_id field has 16 bits; then the 16 bits following the Ingress_if_id field are reserved for future use,
MUST be set to zero, and
MUST be ignored when non-zero.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IOAM Proof of Transit Capabilities Object Header .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | IOAM-POT-Type |SoP| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When the IOAM Proof of Transit Capabilities Object is present in the IOAM Capabilities Response Container, the sending node is an IOAM transit node and the IOAM Proof of Transit function is enabled at this IOAM transit node.
The Namespace-ID field has the same definition as what's specified in
Section 4.3 of
RFC 9197. It
MUST be one of the Namespace-IDs listed in the IOAM Capabilities Query Object of the echo request.
The IOAM-POT-Type field has the same definition as what's specified in
Section 4.5 of
RFC 9197.
The SoP (Size of POT) field has two bits that indicate the size of "PktID" and "Cumulative" data, which are specified in
Section 4.5 of
RFC 9197. This document defines SoP as follows:
-
0b00:
-
64-bit "PktID" and 64-bit "Cumulative" data
-
0b01~0b11:
-
reserved for future standardization
The Reserved field
MUST be zeroed on transmission and ignored on receipt.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IOAM Edge-to-Edge Capabilities Object Header .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | IOAM-E2E-Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|TSF| Reserved | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When the IOAM Edge-to-Edge Capabilities Object is present in the IOAM Capabilities Response Container, the sending node is an IOAM decapsulating node and IOAM edge-to-edge function is enabled at this IOAM decapsulating node.
The Namespace-ID field has the same definition as what's specified in
Section 4.3 of
RFC 9197. It
MUST be one of the Namespace-IDs listed in the IOAM Capabilities Query Object of the echo request.
The IOAM-E2E-Type field has the same definition as what's specified in
Section 4.6 of
RFC 9197.
The TSF field specifies the timestamp format used by the sending node. Aligned with three possible timestamp formats specified in
Section 5 of
RFC 9197, this document defines TSF as follows:
-
0b00:
-
PTP truncated timestamp format
-
0b01:
-
NTP 64-bit timestamp format
-
0b10:
-
POSIX-based timestamp format
-
0b11:
-
Reserved for future standardization
The Reserved field
MUST be zeroed on transmission and ignored on receipt.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IOAM DEX Capabilities Object Header .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IOAM-Trace-Type | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When the IOAM DEX Capabilities Object is present in the IOAM Capabilities Response Container, the sending node is an IOAM transit node and the IOAM direct exporting function is enabled at this IOAM transit node.
The IOAM-Trace-Type field has the same definition as what's specified in
Section 3.2 of
RFC 9326.
The Namespace-ID field has the same definition as what's specified in
Section 4.3 of
RFC 9197. It
MUST be one of the Namespace-IDs listed in the IOAM Capabilities Query Object of the echo request.
The Reserved field
MUST be zeroed on transmission and ignored on receipt.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IOAM End-of-Domain Object Header .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace-ID | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When the IOAM End-of-Domain Object is present in the IOAM Capabilities Response Container, the sending node is an IOAM decapsulating node. Unless the IOAM Edge-to-Edge Capabilities Object is present, which also indicates that the sending node is an IOAM decapsulating node, the IOAM End-of-Domain Object
MUST be present in the IOAM Capabilities Response Container sent by an IOAM decapsulating node. When the IOAM edge-to-edge function is enabled at the IOAM decapsulating node, including only the IOAM Edge-to-Edge Capabilities Object, not the IOAM End-of-Domain Object, is
RECOMMENDED.
The Namespace-ID field has the same definition as what's specified in
Section 4.3 of
RFC 9197. It
MUST be one of the Namespace-IDs listed in the IOAM Capabilities Query Container.
Reserved field
MUST be zeroed on transmission and ignored on receipt.