rfc9600v2.txt | rfc9600.txt | |||
---|---|---|---|---|
skipping to change at line 81 ¶ | skipping to change at line 81 ¶ | |||
Authors' Addresses | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
Explicit Congestion Notification (ECN) [RFC3168] [RFC8311] allows a | Explicit Congestion Notification (ECN) [RFC3168] [RFC8311] allows a | |||
forwarding element (such as a router) to notify downstream devices, | forwarding element (such as a router) to notify downstream devices, | |||
including the destination, of the onset of congestion without having | including the destination, of the onset of congestion without having | |||
to drop packets. This can improve network efficiency through better | to drop packets. This can improve network efficiency through better | |||
congestion control without packet drops. The forwarding element can | congestion control without packet drops. The forwarding element can | |||
explicitly mark a proportion of packets in an ECN field instead of | explicitly mark a proportion of packets in an ECN field instead of | |||
dropping the packet. For example, a 2-bit field is available for ECN | dropping packets. For example, a 2-bit field is available for ECN | |||
marking in IP headers. | marking in IP headers. | |||
............................. | ............................. | |||
. . | . . | |||
+---------+ . | +---------+ . | |||
+------+ | Ingress | . | +------+ | Ingress | . | |||
|Source| +->| RBridge | . +----------+ | |Source| +->| RBridge | . +----------+ | |||
+---+--+ | | RB1 | . |Forwarding| | +---+--+ | | RB1 | . |Forwarding| | |||
| | +------+--+ +----------+ . | Element | | | | +------+--+ +----------+ . | Element | | |||
v | . | | Transit | . | Y | | v | . | | Transit | . | Y | | |||
skipping to change at line 127 ¶ | skipping to change at line 127 ¶ | |||
This document specifies how ECN marking in traffic at the ingress is | This document specifies how ECN marking in traffic at the ingress is | |||
copied into the TRILL extension header flags word and requires such | copied into the TRILL extension header flags word and requires such | |||
copying for IP traffic. It also enables congestion marking by a | copying for IP traffic. It also enables congestion marking by a | |||
congested RBridge (such as RBn or RB1 above) in the TRILL header | congested RBridge (such as RBn or RB1 above) in the TRILL header | |||
extension flags word [RFC7179]. | extension flags word [RFC7179]. | |||
At RB9, the TRILL egress, it specifies how any ECN markings in the | At RB9, the TRILL egress, it specifies how any ECN markings in the | |||
TRILL header flags word and in the encapsulated traffic are combined | TRILL header flags word and in the encapsulated traffic are combined | |||
so that subsequent forwarding elements, such as Y and the | so that subsequent forwarding elements, such as Y and the | |||
Destination, can see if congestion was experienced at any previous | Destination, can see if congestion was experienced at any previous | |||
point in the path from Source. | point in the path from the Source. | |||
A large part of the guidelines for adding ECN to lower-layer | A large part of the guidelines for adding ECN to lower-layer | |||
protocols [RFC9599] concerns safe propagation of congestion | protocols [RFC9599] concerns safe propagation of congestion | |||
notifications in scenarios where some of the nodes do not support or | notifications in scenarios where some of the nodes do not support or | |||
understand ECN. Such ECN ignorance is not a major problem with | understand ECN. Such ECN ignorance is not a major problem with | |||
RBridges using this specification, because the method specified | RBridges using this specification, because the method specified | |||
assures that, if an egress RBridge is ECN ignorant (so it cannot | assures that, if an egress RBridge is ECN ignorant (so it cannot | |||
further propagate ECN) and congestion has been encountered, the | further propagate ECN) and congestion has been encountered, the | |||
egress RBridge will at least drop the packet, and this drop will | egress RBridge will at least drop the packet, and this drop will | |||
itself indicate congestion to end stations. | itself indicate congestion to end stations. | |||
skipping to change at line 185 ¶ | skipping to change at line 185 ¶ | |||
2. The ECN-Specific Extended Header Flags | 2. The ECN-Specific Extended Header Flags | |||
The extension header fields for ECN in TRILL are defined as a 2-bit | The extension header fields for ECN in TRILL are defined as a 2-bit | |||
TRILL-ECN field and a one-bit CCE field in the 32-bit TRILL header | TRILL-ECN field and a one-bit CCE field in the 32-bit TRILL header | |||
extension flags word [RFC7780]. | extension flags word [RFC7780]. | |||
These fields are shown in Figure 2 as "ECN" and "CCE". The TRILL-ECN | These fields are shown in Figure 2 as "ECN" and "CCE". The TRILL-ECN | |||
field consists of bits 12 and 13, which are in the range reserved for | field consists of bits 12 and 13, which are in the range reserved for | |||
NCHbH bits. The CCE field consists of bit 26, which is in the range | NCHbH bits. The CCE field consists of bit 26, which is in the range | |||
reserved for CItE bits. The CItE bit is the critical Ingress-to- | reserved for CItE bits. The CRItE bit is the critical Ingress-to- | |||
Egress summary bit and will be one if, and only if, any of the bits | Egress summary bit and will be one if, and only if, any of the bits | |||
in the CItE range (21-26) are one or there is a critical feature | in the CItE range (21-26) are one or there is a critical feature | |||
invoked in some further extension of the TRILL header after the | invoked in some further extension of the TRILL header after the | |||
extension flags word. The other bits and fields shown in Figure 2 | extension flags word. The other bits and fields shown in Figure 2 | |||
are not relevant to ECN. See [RFC7780], [RFC7179], and [IANAthFlags] | are not relevant to ECN. See [RFC7780], [RFC7179], and [IANAthFlags] | |||
for the meaning of these other bits and fields. | for the meaning of these other bits and fields. | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at line 236 ¶ | skipping to change at line 236 ¶ | |||
3. ECN Support | 3. ECN Support | |||
This section specifies interworking between TRILL and the original | This section specifies interworking between TRILL and the original | |||
standardized form of ECN in IP [RFC3168]. | standardized form of ECN in IP [RFC3168]. | |||
The subsections below describe the required behavior to support ECN | The subsections below describe the required behavior to support ECN | |||
at TRILL ingress, transit, and egress. The ingress behavior occurs | at TRILL ingress, transit, and egress. The ingress behavior occurs | |||
as a native frame is encapsulated with a TRILL header to produce a | as a native frame is encapsulated with a TRILL header to produce a | |||
TRILL Data packet. The transit behavior occurs in all RBridges where | TRILL Data packet. The transit behavior occurs in all RBridges where | |||
TRILL Data packets are queued, usually at the output port. The | TRILL Data packets are queued, usually at the output port (including | |||
egress behavior occurs where a TRILL Data packet is decapsulated and | the output port of the TRILL ingress). The egress behavior occurs | |||
output as a native frame through an RBridge port. | where a TRILL Data packet is decapsulated and output as a native | |||
frame through an RBridge port. | ||||
An RBridge that supports ECN MUST behave as described in the relevant | An RBridge that supports ECN MUST behave as described in the relevant | |||
subsections below, which correspond to the recommended provisions in | subsections below, which correspond to the recommended provisions in | |||
Section 3 of this document and Sections 4.1 through 4.4 of [RFC9599]. | Section 3 of this document and Sections 4.2 through 4.4 of [RFC9599]. | |||
Nonetheless, the scheme is designed to safely propagate some form of | Nonetheless, the scheme is designed to safely propagate some form of | |||
congestion notification even if some RBridges in the path followed by | congestion notification even if some RBridges in the path followed by | |||
a TRILL Data packet support ECN and others do not. | a TRILL Data packet support ECN and others do not. | |||
3.1. Ingress ECN Support | 3.1. Ingress ECN Support | |||
The behavior at an ingress RBridge is as follows: | The behavior at an ingress RBridge is as follows: | |||
* When encapsulating an IP frame, the ingress RBridge MUST: | * When encapsulating an IP frame, the ingress RBridge MUST: | |||
skipping to change at line 281 ¶ | skipping to change at line 282 ¶ | |||
The transit behavior, shown below, is required at all RBridges where | The transit behavior, shown below, is required at all RBridges where | |||
TRILL Data packets are queued, usually at the output port. | TRILL Data packets are queued, usually at the output port. | |||
* An RBridge that supports ECN MUST implement some form of AQM | * An RBridge that supports ECN MUST implement some form of AQM | |||
according to the guidelines of [RFC7567]. The RBridge detects | according to the guidelines of [RFC7567]. The RBridge detects | |||
congestion either by monitoring its own queue depth or by | congestion either by monitoring its own queue depth or by | |||
participating in a link-specific protocol. | participating in a link-specific protocol. | |||
* If the TRILL header flags word is present, whenever the AQM | * If the TRILL header flags word is present, whenever the AQM | |||
algorithm decides to indicate congestion on a TRILL Data packet, | algorithm decides to indicate critical congestion on a TRILL Data | |||
it MUST set the CCE flag (flags word bit 26). | packet, it MUST set the CCE flag (flags word bit 26). Note that | |||
Classic ECN marking [RFC3168] only uses critical congestion | ||||
indications, but the two variants in Section 4.1 use a combination | ||||
of critical and non-critical congestion indications. | ||||
* If the TRILL header flags word is not present, the RBridge will | * If the TRILL header flags word is not present, the RBridge will | |||
either drop the packet or it MAY do all of the following instead | either drop the packet or it MAY do all of the following instead | |||
to indicate congestion: | to indicate congestion: | |||
- set the F flag in the main TRILL header; | - set the F flag in the main TRILL header; | |||
- add a flags word to the TRILL header; | - add a flags word to the TRILL header; | |||
- set the TRILL-ECN field to Not-ECT (00); and | - set the TRILL-ECN field to Not-ECT (00); and | |||
- set the CCE flag and the Ingress-to-Egress critical summary bit | - set the CCE flag and the critical Ingress-to-Egress summary bit | |||
(CRIbE). | (CRItE). | |||
Note that a transit RBridge that supports ECN does not refer to the | Note that a transit RBridge that supports ECN does not refer to the | |||
TRILL-ECN field before signaling CCE in a packet. It signals CCE | TRILL-ECN field before signaling CCE in a packet. It signals CCE | |||
irrespective of whether the packet indicates that the transport is | irrespective of whether the packet indicates that the transport is | |||
ECN capable. The egress/decapsulation behavior ensures that a CCE | ECN capable. The egress/decapsulation behavior ensures that a CCE | |||
indication is converted to a drop if the transport is not ECN | indication is converted to a drop if the transport is not ECN | |||
capable. | capable. | |||
3.3. Egress ECN Support | 3.3. Egress ECN Support | |||
3.3.1. Non-ECN Egress RBridges | 3.3.1. Non-ECN Egress RBridges | |||
If the egress RBridge does not support ECN, that RBridge will ignore | If the egress RBridge does not support ECN, that RBridge will ignore | |||
bits 12 and 13 of any flags word that is present because it does not | bits 12 and 13 of any flags word that is present because it does not | |||
contain any special ECN logic. Nonetheless, if a transit RBridge has | contain any special ECN logic. Nonetheless, if a transit RBridge has | |||
set the CCE flag, the egress will drop the packet. This is because | set the CCE flag, the egress will drop the packet. This is because | |||
drop is the default behavior for an RBridge decapsulating a CIte flag | drop is the default behavior for an RBridge decapsulating a CItE flag | |||
when it has no specific logic to understand it. Drop is the intended | when it has no specific logic to understand it. Drop is the intended | |||
behavior for such a packet, as required by Section 4.4 of [RFC9599]. | behavior for such a packet, as required by Section 4.4 of [RFC9599]. | |||
3.3.2. ECN Egress RBridges | 3.3.2. ECN Egress RBridges | |||
If an RBridge supports ECN, for the two cases of an IP and a non-IP | If an RBridge supports ECN, for the two cases of an IP and a non-IP | |||
inner packet, the egress behavior is as follows: | inner packet, the egress behavior is as follows: | |||
Decapsulating an inner IP packet: The RBridge sets the ECN field of | Decapsulating an inner IP packet: The RBridge sets the ECN field of | |||
the outgoing native IP packet using Table 3. It MUST set the ECN | the outgoing native IP packet using Table 3. It MUST set the ECN | |||
field of the outgoing IP packet to the codepoint at the | field of the outgoing IP packet to the codepoint at the | |||
intersection of the row for the arriving encapsulated IP packet | intersection of the row for the arriving encapsulated IP packet | |||
and the column for 3-bit ECN codepoint in the arriving outer TRILL | and the column for 3-bit ECN codepoint in the arriving outer TRILL | |||
Data packet TRILL header. If no TRILL header extension flags word | Data packet TRILL header. If no TRILL header extension flags word | |||
is present, the 3-bit ECN codepoint is assumed to be all zero | is present, the 3-bit ECN codepoint is assumed to be all zero | |||
bits. | bits. | |||
The name of the TRILL 3-bit ECN codepoint is defined using the | The name of the TRILL 3-bit ECN codepoint used in Table 3 is | |||
combination of the TRILL-ECN and CCE fields in Table 2. | defined using the combination of the TRILL-ECN and CCE fields in | |||
Specifically, the TRILL 3-bit ECN codepoint is called CE if either | Table 2. Specifically, the TRILL 3-bit ECN codepoint is called CE | |||
NCCE or CCE is set in the TRILL header extension flags word. | if either NCCE or CCE is set in the TRILL header extension flags | |||
Otherwise, it has the same name as the 2-bit TRILL-ECN codepoint. | word. Otherwise, it has the same name as the 2-bit TRILL-ECN | |||
codepoint. | ||||
In the case where the TRILL 3-bit ECN codepoint indicates CE but | In the case where the TRILL 3-bit ECN codepoint indicates CE but | |||
the encapsulated native IP frame indicates a Not-ECT, it can be | the encapsulated native IP frame indicates a Not-ECT, it can be | |||
seen that the RBridge MUST drop the packet. Such packet dropping | seen that the RBridge MUST drop the packet. Such packet dropping | |||
is necessary because a transport above the IP layer that is not | is necessary because a transport above the IP layer that is not | |||
ECN capable will have no ECN logic, so it will only understand | ECN capable will have no ECN logic, so it will only understand | |||
dropped packets as an indication of congestion. | dropped packets as an indication of congestion. | |||
Decapsulating a non-IP protocol frame: If the frame has a means of | Decapsulating a non-IP protocol frame: If the frame has a means of | |||
indicating ECN that is understood by the RBridge, it MUST follow | indicating ECN that is understood by the RBridge, it MUST follow | |||
the guidelines in Section 4.4 of [RFC9599] when setting the ECN | the guidelines in Section 4.4 of [RFC9599] when setting the ECN | |||
information in the decapsulated native frame. For a non-IP | information in the decapsulated native frame. For a non-IP | |||
protocol with an ECN field similar to IP, this would be achieved | protocol with an ECN field similar to IP, this would be achieved | |||
by combining the information in the TRILL header flags word with | by combining the information in the TRILL header flags word with | |||
the encapsulated non-IP native frame, as specified in Table 3. | the encapsulated non-IP native frame, as specified in Table 3. | |||
+============+=====+=========================================+ | +================+=====+=========================================+ | |||
| TRILL-ECN | CCE | Arriving TRILL 3-Bit ECN Codepoint Name | | | TRILL-ECN | CCE | Arriving TRILL 3-Bit ECN Codepoint Name | | |||
+============+=====+=========================================+ | +=========+======+ | | | |||
| Not-ECT 00 | 0 | Not-ECT | | | Name | Bits | | | | |||
+------------+-----+-----------------------------------------+ | +=========+======+=====+=========================================+ | |||
| ECT(1) 01 | 0 | ECT(1) | | | Not-ECT | 00 | 0 | Not-ECT | | |||
+------------+-----+-----------------------------------------+ | +---------+------+-----+-----------------------------------------+ | |||
| ECT(0) 10 | 0 | ECT(0) | | | ECT(1) | 01 | 0 | ECT(1) | | |||
+------------+-----+-----------------------------------------+ | +---------+------+-----+-----------------------------------------+ | |||
| NCCE 11 | 0 | CE | | | ECT(0) | 10 | 0 | ECT(0) | | |||
+------------+-----+-----------------------------------------+ | +---------+------+-----+-----------------------------------------+ | |||
| Not-ECT 00 | 1 | CE | | | NCCE | 11 | 0 | CE | | |||
+------------+-----+-----------------------------------------+ | +---------+------+-----+-----------------------------------------+ | |||
| ECT(1) 01 | 1 | CE | | | Not-ECT | 00 | 1 | CE | | |||
+------------+-----+-----------------------------------------+ | +---------+------+-----+-----------------------------------------+ | |||
| ECT(0) 10 | 1 | CE | | | ECT(1) | 01 | 1 | CE | | |||
+------------+-----+-----------------------------------------+ | +---------+------+-----+-----------------------------------------+ | |||
| NCCE 11 | 1 | CE | | | ECT(0) | 10 | 1 | CE | | |||
+------------+-----+-----------------------------------------+ | +---------+------+-----+-----------------------------------------+ | |||
| NCCE | 11 | 1 | CE | | ||||
+---------+------+-----+-----------------------------------------+ | ||||
Table 2: OPT A: Mapping of TRILL-ECN and CCE Fields to the | Table 2: Mapping of TRILL-ECN and CCE Fields to the TRILL | |||
TRILL 3-Bit ECN Codepoint Name | 3-Bit ECN Codepoint Name | |||
+=====================+============================================+ | +=====================+============================================+ | |||
| Inner Native Header | Arriving TRILL 3-Bit ECN Codepoint Name | | | Inner Native Header | Arriving TRILL 3-Bit ECN Codepoint Name | | |||
| +=========+============+============+========+ | | +=========+============+============+========+ | |||
| | Not-ECT | ECT(0) | ECT(1) | CE | | | | Not-ECT | ECT(0) | ECT(1) | CE | | |||
+=====================+=========+============+============+========+ | +=====================+=========+============+============+========+ | |||
| Not-ECT | Not-ECT | Not-ECT(*) | Not-ECT(*) | <drop> | | | Not-ECT | Not-ECT | Not-ECT(*) | Not-ECT(*) | <drop> | | |||
+---------------------+---------+------------+------------+--------+ | +---------------------+---------+------------+------------+--------+ | |||
| ECT(0) | ECT(0) | ECT(0) | ECT(1) | CE | | | ECT(0) | ECT(0) | ECT(0) | ECT(1) | CE | | |||
+---------------------+---------+------------+------------+--------+ | +---------------------+---------+------------+------------+--------+ | |||
skipping to change at line 482 ¶ | skipping to change at line 489 ¶ | |||
+-------+----------------------------------------------+-----------+ | +-------+----------------------------------------------+-----------+ | |||
Table 4: Updated "TRILL Extended Header Flags" Registry | Table 4: Updated "TRILL Extended Header Flags" Registry | |||
6. Security Considerations | 6. Security Considerations | |||
TRILL support of ECN is a straightforward combination of previously | TRILL support of ECN is a straightforward combination of previously | |||
specified ECN and TRILL with no significant new security | specified ECN and TRILL with no significant new security | |||
considerations. | considerations. | |||
For ECN tunneling security considerations, see [RFC6040]. | For general security considerations regarding adding ECN to lower | |||
layer protocols, see [RFC9599] and [RFC6040]. | ||||
For general TRILL protocol security considerations, see [RFC6325]. | For general TRILL protocol security considerations, see [RFC6325]. | |||
7. References | 7. References | |||
7.1. Normative References | 7.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
End of changes. 12 change blocks. | ||||
39 lines changed or deleted | 47 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |