rfc9870v1.txt | rfc9870.txt | |||
---|---|---|---|---|
skipping to change at line 13 ¶ | skipping to change at line 13 ¶ | |||
Request for Comments: 9870 Orange | Request for Comments: 9870 Orange | |||
Category: Standards Track T. Reddy.K | Category: Standards Track T. Reddy.K | |||
ISSN: 2070-1721 Nokia | ISSN: 2070-1721 Nokia | |||
September 2025 | September 2025 | |||
Export of UDP Options Information in IP Flow Information Export (IPFIX) | Export of UDP Options Information in IP Flow Information Export (IPFIX) | |||
Abstract | Abstract | |||
This document specifies new IP Flow Information Export (IPFIX) | This document specifies new IP Flow Information Export (IPFIX) | |||
Information Elements for UDP options. | Information Elements for UDP Options. | |||
Status of This Memo | Status of This Memo | |||
This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
(IETF). It represents the consensus of the IETF community. It has | (IETF). It represents the consensus of the IETF community. It has | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | Internet Standards is available in Section 2 of RFC 7841. | |||
skipping to change at line 79 ¶ | skipping to change at line 79 ¶ | |||
IP Flow Information Export (IPFIX) [RFC7011] is a protocol that is | IP Flow Information Export (IPFIX) [RFC7011] is a protocol that is | |||
widely deployed in networks for traffic management purposes | widely deployed in networks for traffic management purposes | |||
(Section 2 of [RFC6632]). The protocol specifies the encoding of a | (Section 2 of [RFC6632]). The protocol specifies the encoding of a | |||
set of basic data types and how the various Information Elements | set of basic data types and how the various Information Elements | |||
(IEs) are transmitted. In order to support the export of new Flow- | (IEs) are transmitted. In order to support the export of new Flow- | |||
related measurement data, new IEs can be defined and registered in a | related measurement data, new IEs can be defined and registered in a | |||
dedicated IANA registry [IANA-IPFIX] for interoperability. | dedicated IANA registry [IANA-IPFIX] for interoperability. | |||
This document specifies new IPFIX Information Elements for UDP | This document specifies new IPFIX Information Elements for UDP | |||
options (Section 4). A brief overview of UDP options is provided in | Options (Section 4). A brief overview of UDP Options is provided in | |||
Section 3. | Section 3. | |||
The IE specified in Section 4.1 uses the new abstract data type | The IE specified in Section 4.1 uses the new abstract data type | |||
("unsigned256") defined in [RFC9740]. | ("unsigned256") defined in [RFC9740]. | |||
Transport (including MTU) considerations are discussed in Section 10 | Transport (including MTU) considerations are discussed in Section 10 | |||
of [RFC7011]. | of [RFC7011]. | |||
Examples to illustrate the use of the new IPFIX Information Elements | Examples to illustrate the use of the new IPFIX Information Elements | |||
are provided in Section 5. | are provided in Section 5. | |||
skipping to change at line 120 ¶ | skipping to change at line 120 ¶ | |||
3. UDP Options at a Glance | 3. UDP Options at a Glance | |||
UDP [RFC0768] does not support an extension mechanism similar to the | UDP [RFC0768] does not support an extension mechanism similar to the | |||
options supported by other transport protocols, such as TCP | options supported by other transport protocols, such as TCP | |||
[RFC9293], Stream Control Transmission Protocol (SCTP) [RFC9260], or | [RFC9293], Stream Control Transmission Protocol (SCTP) [RFC9260], or | |||
Datagram Congestion Control Protocol (DCCP) [RFC4340]. Such a | Datagram Congestion Control Protocol (DCCP) [RFC4340]. Such a | |||
mechanism can be useful for various applications, e.g., to discover a | mechanism can be useful for various applications, e.g., to discover a | |||
path MTU or share timestamps. To fill that void, [RFC9868] extends | path MTU or share timestamps. To fill that void, [RFC9868] extends | |||
UDP with a mechanism to insert extensions in datagrams. To do so, | UDP with a mechanism to insert extensions in datagrams. To do so, | |||
and unlike the conventional approach that relies upon transport | and unlike the conventional approach that relies upon transport | |||
headers, [RFC9868] uses trailers. Concretely, UDP options are placed | headers, [RFC9868] uses trailers. Concretely, UDP Options are placed | |||
in the surplus area (that is, the area of an IP payload that follows | in the surplus area (that is, the area of an IP payload that follows | |||
a UDP packet). See Figure 1. An example of the use of UDP options | a UDP packet). See Figure 1. An example of the use of UDP Options | |||
for Datagram Packetization Layer Path MTU Discovery (DPLPMTUD) is | for Datagram Packetization Layer Path MTU Discovery (DPLPMTUD) is | |||
described in [RFC9869]. | described in [RFC9869]. | |||
IP transport payload | IP transport payload | |||
<-------------------------------------------------> | <-------------------------------------------------> | |||
+--------+---------+----------------------+------------------+ | +--------+---------+----------------------+------------------+ | |||
| IP Hdr | UDP Hdr | UDP user data | surplus area | | | IP Hdr | UDP Hdr | UDP user data | surplus area | | |||
+--------+---------+----------------------+------------------+ | +--------+---------+----------------------+------------------+ | |||
<------------------------------> | <------------------------------> | |||
UDP Length | UDP Length | |||
Figure 1: Surplus Area | Figure 1: Surplus Area | |||
Sections 4.1 and 4.2 introduce new IEs to export the observed UDP | Sections 4.1 and 4.2 introduce new IEs to export the observed UDP | |||
options. | Options. | |||
UDP options are unambiguously identified by means of a 1-byte field, | UDP Options are unambiguously identified by means of a 1-byte field, | |||
called "Kind". | called "Kind". | |||
Options indicated by Kind values in the range 0-191 are called SAFE | Options indicated by Kind values in the range 0-191 are called SAFE | |||
options. Such options can be silently ignored by legacy receivers | options. Such options can be silently ignored by legacy receivers | |||
because they do not alter the UDP user data (Section 11 of | because they do not alter the UDP user data (Section 11 of | |||
[RFC9868]). SAFE options are exported using the IE defined in | [RFC9868]). SAFE options are exported using the IE defined in | |||
Section 4.1. | Section 4.1. | |||
Options indicated by Kind values in the range 192-255 are called | Options indicated by Kind values in the range 192-255 are called | |||
UNSAFE options. Such options are not safe for legacy receivers to | UNSAFE options. Such options are not safe for legacy receivers to | |||
ignore because they alter the UDP user data (Section 12 of | ignore because they alter the UDP user data (Section 12 of | |||
[RFC9868]). UNSAFE options are exported using the IE defined in | [RFC9868]). UNSAFE options are exported using the IE defined in | |||
Section 4.2. | Section 4.2. | |||
UDP options occur per-packet within a Flow and can be inserted at any | UDP Options occur per-packet within a Flow and can be inserted at any | |||
time in the Flow. | time in the Flow. | |||
[RFC9868] reserves two options for experiments: the Experimental | [RFC9868] reserves two options for experiments: the Experimental | |||
(EXP, Kind=127) option for SAFE options and the UNSAFE Experimental | (EXP, Kind=127) option for SAFE options and the UNSAFE Experimental | |||
option (UEXP, Kind=254). For both options, Experiment Identifiers | option (UEXP, Kind=254). For both options, Experiment Identifiers | |||
(ExIDs) are used to differentiate concurrent use of these options. | (ExIDs) are used to differentiate concurrent use of these options. | |||
Known ExIDs are expected to be registered within IANA. Section 4.4 | Known ExIDs are expected to be registered within IANA. Section 4.4 | |||
specifies a new IPFIX IE to export observed ExIDs in the EXP options. | specifies a new IPFIX IE to export observed ExIDs in the EXP options. | |||
Also, Section 4.5 specifies a new IPFIX IE to export observed ExIDs | Also, Section 4.5 specifies a new IPFIX IE to export observed ExIDs | |||
in the UEXP options. Only 16-bit ExIDs are supported in [RFC9868]. | in the UEXP options. Only 16-bit ExIDs are supported in [RFC9868]. | |||
This document does not intend to elaborate operational guidance/ | This document does not intend to elaborate operational guidance/ | |||
implications of UDP options. The document focuses exclusively on | implications of UDP Options. The document focuses exclusively on | |||
exporting observed UDP options in datagrams. | exporting observed UDP Options in datagrams. | |||
4. New UDP IPFIX Information Elements | 4. New UDP IPFIX Information Elements | |||
Given the Kind structure of SAFE and UNSAFE UDP options, using one | Given the Kind structure of SAFE and UNSAFE UDP Options, using one | |||
single IE that would multiplex both types of options will limit the | single IE that would multiplex both types of options will limit the | |||
benefits of reduced-size encoding in the presence of UNSAFE options. | benefits of reduced-size encoding in the presence of UNSAFE options. | |||
For example, at least 24 octets would be needed to report mandatory | For example, at least 24 octets would be needed to report mandatory | |||
SAFE options that are observed in a Flow. In order to use less bits | SAFE options that are observed in a Flow. In order to use less bits | |||
to report observed UDP options, distinct IEs are thus defined to | to report observed UDP Options, distinct IEs are thus defined to | |||
report SAFE (Section 4.1) and UNSAFE (Section 4.2) UDP options. As | report SAFE (Section 4.1) and UNSAFE (Section 4.2) UDP Options. As | |||
further detailed in Section 5.1, only one octet is needed to report | further detailed in Section 5.1, only one octet is needed to report | |||
mandatory SAFE options. | mandatory SAFE options. | |||
4.1. udpSafeOptions | 4.1. udpSafeOptions | |||
Name: udpSafeOptions | Name: udpSafeOptions | |||
ElementID: 525 | ElementID: 525 | |||
Description: Observed SAFE UDP options in a Flow. The information | Description: Observed SAFE UDP Options in a Flow. The information | |||
is encoded in a set of bit fields. | is encoded in a set of bit fields. | |||
Options are mapped to bits according to their option numbers. UDP | Options are mapped to bits according to their option numbers. UDP | |||
option Kind 0 corresponds to the least significant bit in the | Option Kind 0 corresponds to the least significant bit in the | |||
udpSafeOptions IE, while Kind 191 corresponds to the 65th most | udpSafeOptions IE, while Kind 191 corresponds to the 65th most | |||
significant bit of the IE. The bit is set to 1 if the | significant bit of the IE. The bit is set to 1 if the | |||
corresponding SAFE UDP option is observed at least once in the | corresponding SAFE UDP Option is observed at least once in the | |||
Flow. The bit is set to 0 if the option is never observed in the | Flow. The bit is set to 0 if the option is never observed in the | |||
Flow. The 64 most significant bits MUST be set to 0. | Flow. The 64 most significant bits MUST be set to 0. | |||
The reduced-size encoding per Section 6.2 of [RFC7011] is followed | The reduced-size encoding per Section 6.2 of [RFC7011] is followed | |||
whenever fewer octets are needed to report observed SAFE UDP | whenever fewer octets are needed to report observed SAFE UDP | |||
options. For example, if only option Kinds <= 31 are observed, | Options. For example, if only option Kinds <= 31 are observed, | |||
then the value of the udpSafeOptions IE can be encoded as | then the value of the udpSafeOptions IE can be encoded as | |||
unsigned32, or if only option Kinds <= 63 are observed, then the | unsigned32, or if only option Kinds <= 63 are observed, then the | |||
value of the udpSafeOptions IE can be encoded as unsigned64. | value of the udpSafeOptions IE can be encoded as unsigned64. | |||
The presence of udpSafeExIDList is an indication that the SAFE | The presence of udpSafeExIDList is an indication that the SAFE | |||
Experimental option is observed in a Flow. The presence of | Experimental option is observed in a Flow. The presence of | |||
udpSafeExIDList takes precedence over setting the corresponding | udpSafeExIDList takes precedence over setting the corresponding | |||
bit in the udpSafeOptions IE for the same Flow. In order to | bit in the udpSafeOptions IE for the same Flow. In order to | |||
optimize the use of the reduced-size encoding in the presence of | optimize the use of the reduced-size encoding in the presence of | |||
udpSafeExIDList IE, the Exporter MUST NOT set the EXP flag of the | udpSafeExIDList IE, the Exporter MUST NOT set the EXP flag of the | |||
udpSafeOptions IE that is reported for the same Flow to 1. | udpSafeOptions IE that is reported for the same Flow to 1. | |||
Abstract Data Type: unsigned256 | Abstract Data Type: unsigned256 | |||
Data Type Semantics: flags | Data Type Semantics: flags | |||
Additional Information: See the "UDP Option Kind Numbers" registry | Additional Information: See the "UDP Option Kind Numbers" registry | |||
at [UDP_OPTIONS]. | at [UDP_OPTIONS]. | |||
See [RFC9868] for more details about UDP options. | See [RFC9868] for more details about UDP Options. | |||
Reference: RFC 9870 | Reference: RFC 9870 | |||
4.2. udpUnsafeOptions | 4.2. udpUnsafeOptions | |||
Name: udpUnsafeOptions | Name: udpUnsafeOptions | |||
ElementID: 526 | ElementID: 526 | |||
Description: Observed UNSAFE UDP options in a Flow. The information | Description: Observed UNSAFE UDP Options in a Flow. The information | |||
is encoded in a set of bit fields. | is encoded in a set of bit fields. | |||
Options are mapped to bits according to their option numbers. UDP | Options are mapped to bits according to their option numbers. UDP | |||
option Kind 192 corresponds to the least significant bit in the | Option Kind 192 corresponds to the least significant bit in the | |||
udpUnsafeOptions IE, while Kind 255 corresponds to the most | udpUnsafeOptions IE, while Kind 255 corresponds to the most | |||
significant bit of the IE. The bit is set to 1 if the | significant bit of the IE. The bit is set to 1 if the | |||
corresponding UNSAFE UDP option is observed at least once in the | corresponding UNSAFE UDP Option is observed at least once in the | |||
Flow. The bit is set to 0 if the option is never observed in the | Flow. The bit is set to 0 if the option is never observed in the | |||
Flow. | Flow. | |||
The reduced-size encoding per Section 6.2 of [RFC7011] is followed | The reduced-size encoding per Section 6.2 of [RFC7011] is followed | |||
whenever fewer octets are needed to report observed UNSAFE UDP | whenever fewer octets are needed to report observed UNSAFE UDP | |||
options. | Options. | |||
The presence of udpUnsafeExIDList is an indication that the UNSAFE | The presence of udpUnsafeExIDList is an indication that the UNSAFE | |||
Experimental option is observed in a Flow. The presence of | Experimental option is observed in a Flow. The presence of | |||
udpUnsafeExIDList takes precedence over setting the corresponding | udpUnsafeExIDList takes precedence over setting the corresponding | |||
bit in the udpUnsafeOptions IE for the same Flow. In order to | bit in the udpUnsafeOptions IE for the same Flow. In order to | |||
optimize the use of the reduced-size encoding in the presence of | optimize the use of the reduced-size encoding in the presence of | |||
udpUnsafeExIDList IE, the Exporter MUST NOT set the UEXP flag of | udpUnsafeExIDList IE, the Exporter MUST NOT set the UEXP flag of | |||
the udpUnsafeOptions IE that is reported for the same Flow to 1. | the udpUnsafeOptions IE that is reported for the same Flow to 1. | |||
Abstract Data Type: unsigned64 | Abstract Data Type: unsigned64 | |||
Data Type Semantics: flags | Data Type Semantics: flags | |||
Additional Information: See the "UDP Option Kind Numbers" registry | Additional Information: See the "UDP Option Kind Numbers" registry | |||
at [UDP_OPTIONS]. | at [UDP_OPTIONS]. | |||
See [RFC9868] for more details about UDP options. | See [RFC9868] for more details about UDP Options. | |||
Reference: RFC 9870 | Reference: RFC 9870 | |||
4.3. udpExID | 4.3. udpExID | |||
Name: udpExID | Name: udpExID | |||
ElementID: 527 | ElementID: 527 | |||
Description: Observed ExID in an Experimental (EXP, Kind=127) option | Description: Observed ExID in an Experimental (EXP, Kind=127) option | |||
skipping to change at line 340 ¶ | skipping to change at line 340 ¶ | |||
See [RFC9868] for more details about ExIDs. | See [RFC9868] for more details about ExIDs. | |||
Reference: RFC 9870 | Reference: RFC 9870 | |||
5. Examples | 5. Examples | |||
5.1. Reduced-Size Encoding | 5.1. Reduced-Size Encoding | |||
Given the UDP Kind allocation in Section 10 of [RFC9868] and the | Given the UDP Kind allocation in Section 10 of [RFC9868] and the | |||
option mapping defined in Section 4.1 of this document, fewer octets | option mapping defined in Section 4.1 of this document, fewer octets | |||
are likely to be used for Flows with mandatory UDP options. | are likely to be used for Flows with mandatory UDP Options. | |||
Figure 2 shows an example of the Kind/bit mappings in the | Figure 2 shows an example of the Kind/bit mappings in the | |||
udpSafeOptions IE for a Flow in which End of Options List (EOL, | udpSafeOptions IE for a Flow in which End of Options List (EOL, | |||
Kind=0) and Additional Payload Checksum (APC, Kind=2) options are | Kind=0) and Additional Payload Checksum (APC, Kind=2) options are | |||
observed. Only the bits that corresponds to EOL and APC options are | observed. Only the bits that corresponds to EOL and APC options are | |||
set to 1. | set to 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 | |||
skipping to change at line 376 ¶ | skipping to change at line 376 ¶ | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
Figure 3: An Example of the Wire udpSafeOptions IE Value with EOL | Figure 3: An Example of the Wire udpSafeOptions IE Value with EOL | |||
and APC Options | and APC Options | |||
5.2. SAFE Experimental Option | 5.2. SAFE Experimental Option | |||
Let us now consider a UDP Flow in which SAFE Experimental options are | Let us now consider a UDP Flow in which SAFE Experimental options are | |||
observed. If a udpSafeOptions IE is exported for this Flow, then | observed. If a udpSafeOptions IE is exported for this Flow, then | |||
that IE will have the EXP bit set to 1 (Figure 4). This example does | that IE will have the EXP bit set to 1 (Figure 4). This example does | |||
not make any assumption about the presence of other UDP options ("X" | not make any assumption about the presence of other UDP Options ("X" | |||
can be set to 0 or 1). | can be set to 0 or 1). | |||
MSB LSB | MSB LSB | |||
12 25 | 12 25 | |||
0 1 2 3 ... 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 ... 7 8 9 0 1 2 3 4 5 6 7 8 9 ... 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+...+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+ | +-+-+-+-+...+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+ | |||
|X|X|X|X| |X|X|X|X|X|X|X|X|X|X|X|1|X|X| |X|X|X|X|X|X|X| | |X|X|X|X| |X|X|X|X|X|X|X|X|X|X|X|1|X|X| |X|X|X|X|X|X|X| | |||
+-+-+-+-+...+-+-+-+-+-+-+-+-++-++-+-+-+-+...+-+-+-+-+-+-+-+ | +-+-+-+-+...+-+-+-+-+-+-+-+-++-++-+-+-+-+...+-+-+-+-+-+-+-+ | |||
Figure 4: An Example of udpSafeOptions with EXP Option | Figure 4: An Example of udpSafeOptions with EXP Option | |||
skipping to change at line 428 ¶ | skipping to change at line 428 ¶ | |||
Following the guidance in Section 4.1, the reported udpSafeOptions IE | Following the guidance in Section 4.1, the reported udpSafeOptions IE | |||
will be set to 0x05 even in the presence of EXP options. | will be set to 0x05 even in the presence of EXP options. | |||
6. Security Considerations | 6. Security Considerations | |||
This document does not introduce new security considerations other | This document does not introduce new security considerations other | |||
than those already discussed in Section 11 of [RFC7011] and Section 8 | than those already discussed in Section 11 of [RFC7011] and Section 8 | |||
of [RFC7012]. | of [RFC7012]. | |||
The reader may refer to Section 24 of [RFC9868] for the security | The reader may refer to Section 24 of [RFC9868] for the security | |||
considerations related to UDP options. | considerations related to UDP Options. | |||
7. IANA Considerations | 7. IANA Considerations | |||
7.1. IPFIX Information Elements | 7.1. IPFIX Information Elements | |||
IANA has added the following new IEs to the "IPFIX Information | IANA has added the following new IEs to the "IPFIX Information | |||
Elements" registry under the "IP Flow Information Export (IPFIX) | Elements" registry under the "IP Flow Information Export (IPFIX) | |||
Entities" registry group [IANA-IPFIX]: | Entities" registry group [IANA-IPFIX]: | |||
+===========+===================+=========================+ | +===========+===================+=========================+ | |||
End of changes. 23 change blocks. | ||||
25 lines changed or deleted | 25 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |