rfc9740v1.txt   rfc9740.txt 
Internet Engineering Task Force (IETF) M. Boucadair Internet Engineering Task Force (IETF) M. Boucadair
Request for Comments: 9740 Orange Request for Comments: 9740 Orange
Category: Standards Track B. Claise Category: Standards Track B. Claise
ISSN: 2070-1721 Huawei ISSN: 2070-1721 Huawei
February 2025 February 2025
Extended TCP Options and IPv6 Extension Headers IPFIX Information New IPFIX Information Elements for TCP Options and IPv6 Extensions
Elements Headers
Abstract Abstract
This document specifies new IP Flow Information Export (IPFIX) This document specifies new IP Flow Information Export (IPFIX)
Information Elements (IEs) to solve issues with existing Information Elements (IEs) to solve issues with existing
ipv6ExtensionHeaders and tcpOptions IPFIX IEs, especially the ability ipv6ExtensionHeaders and tcpOptions IPFIX IEs, especially the ability
to export any observed IPv6 extension headers or TCP options. to export any observed IPv6 extension headers or TCP options.
Status of This Memo Status of This Memo
skipping to change at line 129 skipping to change at line 129
headers can be exported using the ipv6ExtensionHeaders IE. For headers can be exported using the ipv6ExtensionHeaders IE. For
example, the ipv6ExtensionHeaders IE can't report some IPv6 EHs, example, the ipv6ExtensionHeaders IE can't report some IPv6 EHs,
specifically EHs for the Host Identity Protocol (139), Shim6 specifically EHs for the Host Identity Protocol (139), Shim6
Protocol (140), or extension headers for experimentation and Protocol (140), or extension headers for experimentation and
testing. testing.
* Specify whether the exported values match the full enclosed values * Specify whether the exported values match the full enclosed values
or only up to a limit imposed by hardware or software (e.g., or only up to a limit imposed by hardware or software (e.g.,
Section 1.1 of [RFC8883]). Note that some implementations may not Section 1.1 of [RFC8883]). Note that some implementations may not
be able to export all observed extension headers in a Flow because be able to export all observed extension headers in a Flow because
of a hardware or software limit (see, e.g., [EH-LIMITS]). The of a hardware or software limit (see, e.g., [EH-LIMITS]).
specification of the ipv6ExtensionHeaders IE does not discuss
whether it covers all enclosed extension headers or only up to a * Discuss whether it covers all enclosed extension headers or only
limit. up to a limit.
* Specify how to report the length of IPv6 extension headers. * Specify how to report the length of IPv6 extension headers.
* Optimize the encoding. * Optimize the encoding.
* Explain the reasoning for reporting values that do not correspond * Explain the reasoning for reporting values that do not correspond
to extension headers (e.g., "Unknown Layer 4 header" or "Payload to extension headers (e.g., "Unknown Layer 4 header" or "Payload
compression header"). compression header").
* Specify how to report extension header chains or aggregate * Specify how to report extension header chains or aggregate lengths
extension headers length. of extension headers.
Section 3 addresses these issues. Section 3 addresses these issues.
This specification deprecates the ipv6ExtensionHeaders IPFIX IE in This specification deprecates the ipv6ExtensionHeaders IPFIX IE in
favor of the new IEs defined in this document. favor of the new IEs defined in this document.
1.2. Issues with tcpOptions Information Element 1.2. Issues with tcpOptions Information Element
The specification of the tcpOptions IPFIX IE (209) does not: The specification of the tcpOptions IPFIX IE (209) does not:
skipping to change at line 194 skipping to change at line 194
In addition, the document makes use of the following terms: In addition, the document makes use of the following terms:
Extension header chain: Refers to the chain of extension headers Extension header chain: Refers to the chain of extension headers
that are present in an IPv6 packet. that are present in an IPv6 packet.
This term should not be confused with the IPv6 header chain, which This term should not be confused with the IPv6 header chain, which
includes the IPv6 header, zero or more IPv6 extension headers, and includes the IPv6 header, zero or more IPv6 extension headers, and
zero or a single Upper-Layer Header. zero or a single Upper-Layer Header.
Flow with varying extension header chain: Refers to a Flow where Flow with varying extension header chains: Refers to a Flow where
distinct extension header chains are observed. Concretely, distinct extension header chains are observed. Concretely,
different packets in such a Flow will have a different sequence of different packets in such a Flow will have a different sequence of
extension header type codes. extension header type codes.
3. Information Elements for IPv6 Extension Headers 3. Information Elements for IPv6 Extension Headers
3.1. ipv6ExtensionHeaderType Information Element 3.1. ipv6ExtensionHeaderType Information Element
Name: ipv6ExtensionHeaderType Name: ipv6ExtensionHeaderType
skipping to change at line 277 skipping to change at line 277
so, few octets will be needed to encode common IPv6 extension so, few octets will be needed to encode common IPv6 extension
headers when observed in a Flow. headers when observed in a Flow.
The "No Next Header" (bit 2) value (Section 4.7 of [RFC8200]) is The "No Next Header" (bit 2) value (Section 4.7 of [RFC8200]) is
used if there is no upper-layer header in an IPv6 packet. Even if used if there is no upper-layer header in an IPv6 packet. Even if
the value is not considered as an extension header as such, the the value is not considered as an extension header as such, the
corresponding bit is set in the ipv6ExtensionHeadersFull IE corresponding bit is set in the ipv6ExtensionHeadersFull IE
whenever that value is encountered in the Flow. whenever that value is encountered in the Flow.
Extension headers observed in a Flow with varying extension header Extension headers observed in a Flow with varying extension header
chain MUST NOT be grouped in the ipv6ExtensionHeadersFull IE if chains MUST NOT be grouped in the ipv6ExtensionHeadersFull IE if
the ipv6ExtensionHeaderChainLengthList IE is also present. the ipv6ExtensionHeaderChainLengthList IE is also present.
If the ipv6ExtensionHeaderChainLengthList IE is not present, then If the ipv6ExtensionHeaderChainLengthList IE is not present, then
extension headers observed in a Flow with varying extension header extension headers observed in a Flow with varying extension header
chain MAY be grouped in one single ipv6ExtensionHeadersFull IE or chains MAY be grouped in one single ipv6ExtensionHeadersFull IE or
be exported in separate ipv6ExtensionHeadersFull IEs, one for each be exported in separate ipv6ExtensionHeadersFull IEs, one for each
extension header chain. extension header chain.
The ipv6ExtensionHeadersFull IE MUST NOT be exported if The ipv6ExtensionHeadersFull IE MUST NOT be exported if
ipv6ExtensionHeaderTypeCountList IE is also present because of the ipv6ExtensionHeaderTypeCountList IE is also present because of the
overlapping scopes of these two IEs. overlapping scopes of these two IEs.
The value of ipv6ExtensionHeadersFull IE may be encoded in fewer The value of ipv6ExtensionHeadersFull IE may be encoded in fewer
octets per the guidelines in Section 6.2 of [RFC7011]. octets per the guidelines in Section 6.2 of [RFC7011].
skipping to change at line 329 skipping to change at line 329
Description: As per Section 4.1 of [RFC8200], IPv6 nodes must accept Description: As per Section 4.1 of [RFC8200], IPv6 nodes must accept
and attempt to process extension headers occurring any number of and attempt to process extension headers occurring any number of
times in the same packet. This IE echoes the order of extension times in the same packet. This IE echoes the order of extension
headers and number of consecutive occurrences of the same headers and number of consecutive occurrences of the same
extension header type in a Flow. extension header type in a Flow.
This IE is a subTemplateList of ipv6ExtensionHeaderType and This IE is a subTemplateList of ipv6ExtensionHeaderType and
ipv6ExtensionHeaderCount IEs. ipv6ExtensionHeaderCount IEs.
Each header chain in a Flow with varying extension header chain Each header chain in a Flow with varying extension header chains
MUST be exported in a separate IE. MUST be exported in a separate IE.
The same extension header type may appear several times in an The same extension header type may appear several times in an
ipv6ExtensionHeaderTypeCountList IE. For example, if an IPv6 ipv6ExtensionHeaderTypeCountList IE. For example, if an IPv6
packet of a Flow includes a Hop-by-Hop Options header, a packet of a Flow includes a Hop-by-Hop Options header, a
Destination Options header, a Fragment header, and Destination Destination Options header, a Fragment header, and Destination
Options header, the ipv6ExtensionHeaderTypeCountList IE will Options header, the ipv6ExtensionHeaderTypeCountList IE will
report: report:
* the count of Hop-by-Hop Options headers, * the count of Hop-by-Hop Options headers,
skipping to change at line 424 skipping to change at line 424
or deferred to a slow path. or deferred to a slow path.
The ipv6ExtensionHeadersChainLength IE is used to report, in The ipv6ExtensionHeadersChainLength IE is used to report, in
octets, the length of an extension header chain observed in a octets, the length of an extension header chain observed in a
Flow. The length is the sum of the lengths of all extension Flow. The length is the sum of the lengths of all extension
headers of the chain. Exporting such information might help headers of the chain. Exporting such information might help
identifying root causes of performance degradation, including identifying root causes of performance degradation, including
packet drops. packet drops.
Each header chain length of a Flow with varying extension header Each header chain length of a Flow with varying extension header
chain MUST be exported in a separate chains MUST be exported in a separate
ipv6ExtensionHeadersChainLength IE. ipv6ExtensionHeadersChainLength IE.
Abstract Data Type: unsigned32 Abstract Data Type: unsigned32
Data Type Semantics: identifier Data Type Semantics: identifier
Units: octets Units: octets
Additional Information: See Section 4 of [RFC8200] for the general Additional Information: See Section 4 of [RFC8200] for the general
definition of IPv6 extension headers. definition of IPv6 extension headers.
skipping to change at line 448 skipping to change at line 448
Reference: RFC 9740 Reference: RFC 9740
3.7. ipv6ExtensionHeaderChainLengthList Information Element 3.7. ipv6ExtensionHeaderChainLengthList Information Element
Name: ipv6ExtensionHeaderChainLengthList Name: ipv6ExtensionHeaderChainLengthList
ElementID: 519 ElementID: 519
Description: This IE is used to report the chains and their lengths Description: This IE is used to report the chains and their lengths
as observed in a Flow with varying extension header chain. as observed in a Flow with varying extension header chains.
This IE is a subTemplateList of ipv6ExtensionHeadersFull and This IE is a subTemplateList of ipv6ExtensionHeadersFull and
ipv6ExtensionHeadersChainLength IEs. ipv6ExtensionHeadersChainLength IEs.
If several extension header chains are observed in a Flow, each If several extension header chains are observed in a Flow, each
header chain MUST be exported in a separate header chain MUST be exported in a separate
ipv6ExtensionHeaderChainLengthList IE. ipv6ExtensionHeaderChainLengthList IE.
Abstract Data Type: subTemplateList Abstract Data Type: subTemplateList
skipping to change at line 659 skipping to change at line 659
Destination Options (0) header is observed. The bits are set Destination Options (0) header is observed. The bits are set
following the table provided in Section 8.4.1. following the table provided in Section 8.4.1.
MSB LSB MSB LSB
1 25 1 25
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ... 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ... 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|1| |0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+
Figure 1: A First Example of EH/Bit Mappings in the Figure 1: Example of EH/Bit Mappings in the
ipv6ExtensionHeadersFull IE ipv6ExtensionHeadersFull IE
The leading zeros are dropped per the reduced-size encoding guidance. The leading zeros are dropped per the reduced-size encoding guidance.
One octet is thus sufficient to send these observed options on the One octet is thus sufficient to send these observed options on the
wire. Concretely, the ipv6ExtensionHeadersFull IE will be set to wire. Concretely, the ipv6ExtensionHeadersFull IE will be set to
0x01 (Figure 2). 0x01 (Figure 2).
MSB LSB MSB LSB
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|1| |0|0|0|0|0|0|0|1|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Figure 2: A First Example of ipv6ExtensionHeadersFull IE with Figure 2: Example A of ipv6ExtensionHeadersFull IE with Reduced-
Reduced-Size Encoding Size Encoding
Figure 3 provides another example of reported values in an Figure 3 provides another example of reported values in an
ipv6ExtensionHeadersFull IE for an IPv6 Flow in which the Destination ipv6ExtensionHeadersFull IE for an IPv6 Flow in which the Destination
Options (0), IPv6 Hop-by-Hop Options (1), and Routing (5) headers are Options (0), IPv6 Hop-by-Hop Options (1), and Routing (5) headers are
observed. One octet is sufficient to report these observed options. observed. One octet is sufficient to report these observed options.
Concretely, the ipv6ExtensionHeadersFull IE will be set to 0x23. Concretely, the ipv6ExtensionHeadersFull IE will be set to 0x23.
MSB LSB MSB LSB
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|0|0|1|0|0|0|1|1| |0|0|1|0|0|0|1|1|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Figure 3: A Second Example of ipv6ExtensionHeadersFull IE with Figure 3: Example B of ipv6ExtensionHeadersFull IE with Reduced-
Reduced-Size Encoding Size Encoding
Let us now consider an IPv6 Flow in which the following EH chain is Let us now consider an IPv6 Flow in which the following EH chain is
observed: Routing (5), Mobility (7), and Authentication (9) header. observed: Routing (5), Mobility (7), and Authentication (9) header.
Figure 4 shows the ipv6ExtensionHeadersFull IE (0x02A0) to report Figure 4 shows the ipv6ExtensionHeadersFull IE (0x02A0) to report
this individual chain. this individual chain.
MSB LSB MSB LSB
1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|1|0|1|0|1|0|0|0|0|0| |0|0|0|0|0|0|1|0|1|0|1|0|0|0|0|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: An Example of ipv6ExtensionHeadersFull IE Reported for Figure 4: Example of ipv6ExtensionHeadersFull IE Reported for an
an Extension Header Chain Extension Header Chain
6.2. TCP Options 6.2. TCP Options
6.2.1. Reduced-Size Encoding 6.2.1. Reduced-Size Encoding
Given TCP Kind allocation practices and the option mapping defined in Given TCP Kind allocation practices and the option mapping defined in
Section 4.1, fewer octets are likely to be used for Flows with common Section 4.1, fewer octets are likely to be used for Flows with common
TCP options. TCP options.
Figure 5 shows an example of Kind/bit mappings in a tcpOptionsFull IE Figure 5 shows an example of Kind/bit mappings in a tcpOptionsFull IE
for a TCP Flow in which End of Option List (0), Maximum Segment Size for a TCP Flow in which End of Option List (0), Maximum Segment Size
(2), and Window Scale (3) options are observed. (2), and Window Scale (3) options are observed.
MSB LSB MSB LSB
1 25 1 25
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ... 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ... 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0| |0|0|0|0|1|1|0|1| |0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0| |0|0|0|0|1|1|0|1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+
Figure 5: An Example of TCP Options / Bit Mappings in a Figure 5: Example of TCP Options / Bit Mappings in a
tcpOptionsFull IE tcpOptionsFull IE
One octet is sufficient to report these observed options. One octet is sufficient to report these observed options.
Concretely, the tcpOptionsFull IE will be set to 0x0D (Figure 6). Concretely, the tcpOptionsFull IE will be set to 0x0D (Figure 6).
MSB LSB MSB LSB
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|0|0|0|0|1|1|0|1| |0|0|0|0|1|1|0|1|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Figure 6: An Example of tcpOptionsFull IE with Reduced-Size Encoding Figure 6: Example of tcpOptionsFull IE with Reduced-Size Encoding
6.2.2. Shared Options 6.2.2. Shared Options
Let us consider a TCP Flow in which shared options with ExIDs 0x0348 Let us consider a TCP Flow in which shared options with ExIDs 0x0348
(HOST_ID) [RFC7974], 0x454E (TCP-ENO) [RFC8547], and 0xE2D4C3D9 (HOST_ID) [RFC7974], 0x454E (TCP-ENO) [RFC8547], and 0xE2D4C3D9
(Shared Memory Communications over RDMA protocol) [RFC7609] are (Shared Memory Communications over RDMA protocol) [RFC7609] are
observed. Figure 7 shows an excerpt of the Data Set encoding with a observed. Figure 7 shows an excerpt of the Data Set encoding with a
focus on the tcpSharedOptionExID16 and tcpSharedOptionExID32 IEs. focus on the tcpSharedOptionExID16 and tcpSharedOptionExID32 IEs.
The meaning of the fields is defined in [RFC6313]. The meaning of the fields is defined in [RFC6313].
 End of changes. 15 change blocks. 
23 lines changed or deleted 23 lines changed or added

This html diff was produced by rfcdiff 1.48.