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.