rfc9870v2.txt | rfc9870.txt | |||
---|---|---|---|---|
skipping to change at line 143 ¶ | skipping to change at line 143 ¶ | |||
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 | (UEXP, Kind=254) Option. 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. | |||
skipping to change at line 207 ¶ | skipping to change at line 207 ¶ | |||
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 | |||
skipping to change at line 247 ¶ | skipping to change at line 247 ¶ | |||
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 | |||
skipping to change at line 271 ¶ | skipping to change at line 271 ¶ | |||
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 | |||
or an UNSAFE Experimental (UEXP, Kind=254) option. | or an UNSAFE Experimental (UEXP, Kind=254) Option. | |||
A basicList of udpExID is used to report udpSafeExIDList and | A basicList of udpExID is used to report udpSafeExIDList and | |||
udpUnsafeExIDList values. | udpUnsafeExIDList values. | |||
Abstract Data Type: unsigned16 | Abstract Data Type: unsigned16 | |||
Data Type Semantics: identifier | Data Type Semantics: identifier | |||
Additional Information: See the "TCP/UDP Experimental Option | Additional Information: See the "TCP/UDP Experimental Option | |||
Experiment Identifiers (TCP/UDP ExIDs)" registry at [UDP_ExIDs]. | Experiment Identifiers (TCP/UDP ExIDs)" registry at [UDP_ExIDs]. | |||
skipping to change at line 295 ¶ | skipping to change at line 295 ¶ | |||
Reference: RFC 9870 | Reference: RFC 9870 | |||
4.4. udpSafeExIDList | 4.4. udpSafeExIDList | |||
Name: udpSafeExIDList | Name: udpSafeExIDList | |||
ElementID: 528 | ElementID: 528 | |||
Description: Observed ExIDs in the Experimental (EXP, Kind=127) | Description: Observed ExIDs in the Experimental (EXP, Kind=127) | |||
option. | Option. | |||
A basicList of udpExID Information Elements in which each udpExID | A basicList of udpExID Information Elements in which each udpExID | |||
Information Element carries the ExID observed in an EXP option. | Information Element carries the ExID observed in an EXP Option. | |||
Abstract Data Type: basicList | Abstract Data Type: basicList | |||
Data Type Semantics: list | Data Type Semantics: list | |||
Additional Information: See the "TCP/UDP Experimental Option | Additional Information: See the "TCP/UDP Experimental Option | |||
Experiment Identifiers (TCP/UDP ExIDs)" registry at [UDP_ExIDs]. | Experiment Identifiers (TCP/UDP ExIDs)" registry at [UDP_ExIDs]. | |||
See [RFC9868] for more details about ExIDs. | See [RFC9868] for more details about ExIDs. | |||
Reference: RFC 9870 | Reference: RFC 9870 | |||
4.5. udpUnsafeExIDList | 4.5. udpUnsafeExIDList | |||
Name: udpUnsafeExIDList | Name: udpUnsafeExIDList | |||
ElementID: 529 | ElementID: 529 | |||
Description: Observed ExIDs in the UNSAFE Experimental (UEXP, | Description: Observed ExIDs in the UNSAFE Experimental (UEXP, | |||
Kind=254) option. | Kind=254) Option. | |||
A basicList of udpExID Information Elements in which each udpExID | A basicList of udpExID Information Elements in which each udpExID | |||
Information Element carries the ExID observed in an UEXP option. | Information Element carries the ExID observed in an UEXP Option. | |||
Abstract Data Type: basicList | Abstract Data Type: basicList | |||
Data Type Semantics: list | Data Type Semantics: list | |||
Additional Information: See the "TCP/UDP Experimental Option | Additional Information: See the "TCP/UDP Experimental Option | |||
Experiment Identifiers (TCP/UDP ExIDs)" registry at [UDP_ExIDs]. | Experiment Identifiers (TCP/UDP ExIDs)" registry at [UDP_ExIDs]. | |||
See [RFC9868] for more details about ExIDs. | See [RFC9868] for more details about ExIDs. | |||
skipping to change at line 344 ¶ | skipping to change at line 344 ¶ | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+-+-+-+-+ | |||
|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|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|1|0|1| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++-+-+-+-+...+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++-+-+-+-+...+-+-+-+-+-+-+-+-+ | |||
Figure 2: An Example of udpSafeOptions IE with EOL and APC Options | Figure 2: An Example of udpSafeOptions IE with EOL and APC Options | |||
skipping to change at line 373 ¶ | skipping to change at line 373 ¶ | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|0|0|0|0|0|1|0|1| | |0|0|0|0|0|1|0|1| | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
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 | |||
5.3. ExIDs and Reduced-Size Encoding | 5.3. ExIDs and Reduced-Size Encoding | |||
Now assume that EOL, APC, EXP, and UEXP options are observed in a | Now assume that EOL, APC, EXP, and UEXP Options are observed in a | |||
Flow. Let us also consider that the observed SAFE Experimental | Flow. Let us also consider that the observed SAFE Experimental | |||
options have ExIDs set to 0x9858 and 0xE2D4 and UNSAFE Experimental | Options have ExIDs set to 0x9858 and 0xE2D4 and UNSAFE Experimental | |||
options have ExIDs set to 0xC3D9 and 0x1234. Figure 5 shows an | Options have ExIDs set to 0xC3D9 and 0x1234. Figure 5 shows an | |||
excerpt of the Data Set encoding with a focus on SAFE Experimental | excerpt of the Data Set encoding with a focus on SAFE Experimental | |||
options that have ExIDs. The fields are defined in [RFC6313]. | Options that have ExIDs. The fields are defined in [RFC6313]. | |||
MSB LSB | MSB LSB | |||
0 1 2 3 | 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 | 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 | |||
: ... : | : ... : | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 255 | List Length = 9 |semantic=allof | | | 255 | List Length = 9 |semantic=allof | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| udpExID = 527 | Field Length = 2 | | | udpExID = 527 | Field Length = 2 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at line 419 ¶ | skipping to change at line 419 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| udpExID = 527 | Field Length = 2 | | | udpExID = 527 | Field Length = 2 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| UNSAFE ExID = 0xC3D9 | UNSAFE ExID = 0x1234 | | | UNSAFE ExID = 0xC3D9 | UNSAFE ExID = 0x1234 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
: ... : | : ... : | |||
Figure 5: Example of UDP Experimental Option ExID IEs | Figure 5: Example of UDP Experimental Option ExID IEs | |||
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. | |||
End of changes. 23 change blocks. | ||||
27 lines changed or deleted | 27 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |