rfc-9452

Network Service Header (NSH) Encapsulation for In Situ OAM (IOAM) Data

F. Brockners (Editor), S. Bhandari (Editor)
date2023-08 streamIETF areartg wgsfc statusPROPOSED STANDARD pages9 canonicalhttps://www.rfc-editor.org/rfc/rfc9452 doi10.17487/RFC9452
In situ Operations, Administration, and Maintenance (IOAM) is used for recording and collecting operational and telemetry information while the packet traverses a path between two points in the network. This document outlines how IOAM-Data-Fields are encapsulated with the Network Service Header (NSH).

Extracted elements (20)

design-rationale §A

A single NSH Next Protocol code point (0x06) was chosen for all IOAM types, with a sub-type (IOAM-Type) field distinguishing option categories. This avoids the additional TLV nesting that NSH MD Type 2 would require and removes the 256-octet maximum size constraint that MD Type 2's 6-bit length field imposes.

measurement

design-rationale §A

Flat serial TLV structures are preferred over nested TLV structures to be hardware-friendly: nested lookups consume additional gates and processing time in hardware forwarders, making flat structures more efficient.

measurement

design-rationale §A

The encapsulation must support large deployments: using the IOAM Trace Option-Type capturing six data fields per hop over a 15-hop path can add up to 300 octets of IOAM data, exceeding the 256-octet limit of NSH MD Type 2 and motivating the use of a Next Protocol-based approach with no hard size cap.

measurement

interoperability-note §3

The applicability of IOAM Active and Loopback flags (RFC 9322) to this NSH encapsulation is outside the scope of this document and may be specified in a future document.

measurement

interoperability-note §3

When the IOAM Incremental Trace Option-Type is used, an SFC-aware node acting as an IOAM transit node must adjust the IOAM HDR Len field accordingly, as specified in RFC 9197 Section 4.4.

measurement

normative-requirement §3 MUST

IOAM-Data-Fields carried in NSH MUST follow the definitions corresponding to IOAM Option-Types as defined in RFC 9197 and RFC 9326.

measurement, security

normative-requirement §3 MUST

IOAM transit nodes (e.g., a Service Function Forwarder) MUST process all IOAM headers that are relevant based on their configuration.

measurement

normative-requirement §3 MAY

Multiple IOAM Option-Types MAY be included within a single NSH encapsulation, chained via the Next Protocol field.

measurement

normative-requirement §3 SHOULD

Per RFC 8300 Section 2.2, packets with unsupported Next Protocol values SHOULD be silently dropped by default; thus, an NSH forwarding node that does not support the IOAM header SHOULD drop such packets.

measurement, security

normative-requirement §3 MUST

Reserved bits in the IOAM header MUST be set to 0x0 upon transmission and ignored upon receipt.

measurement

normative-requirement §3 MUST

The O bit in the NSH header MUST be handled following the rules in RFC 9451.

measurement, security

normative-requirement §3 MUST

The operator MUST ensure that SFC-aware nodes along the Service Function Path support IOAM; otherwise, packets might be dropped.

measurement

protocol-element §3

IOAM HDR Len is an 8-bit field containing the length of the IOAM header in multiples of 4 octets, including the IOAM-Type and IOAM HDR Len fields themselves.

measurement

protocol-element §3

IOAM Option and Optional Data Space carries IOAM-Data-Fields as specified by the IOAM-Type field; these fields are always aligned to 4 octets, so no padding field is needed.

measurement

protocol-element §3

IOAM-Type is an 8-bit field defining the IOAM Option-Type, as defined in the 'IOAM Option-Type' registry in RFC 9197.

measurement

protocol-element §3

The Next Protocol field in the IOAM header is an 8-bit unsigned integer that determines the type of header following IOAM, with semantics identical to the Next Protocol field in RFC 8300. When multiple IOAM Option-Types are chained, the first uses NP=0x06 to point to the second.

measurement

protocol-element §3

The NSH Next Protocol (NP) value 0x06 is allocated for IOAM, indicating that an IOAM header follows the NSH headers.

measurement, registry

registry §4

IANA allocated code point 0x06 in the 'NSH Next Protocol' registry for IOAM, described as 'IOAM (Next Protocol is an IOAM header)', referencing RFC 9452.

registry, measurement

security-consideration §5

IOAM is a per-domain feature; the operator must properly secure the IOAM domain to avoid malicious configuration and use, including injection of malicious IOAM packets. Additional IOAM security considerations are in RFC 9197 Section 9; additional OAM- and NSH-related security considerations are in RFC 9451 Section 5.

security, measurement

wire-format §3

The IOAM header encapsulated in NSH consists of: IOAM-Type (8 bits), IOAM HDR Len (8 bits), Reserved (8 bits, set to 0x0), Next Protocol (8 bits), followed by variable-length IOAM Option and Optional Data Space, all 4-octet aligned. The NSH NP field is set to 0x06 to indicate IOAM follows.

measurement