TRansparent Interconnection of Lots of Links (TRILL): Explicit Congestion Notification (ECN) Support
Extracted elements (22)
NCCE (codepoint 11) is named differently from IP's CE to reflect that it is placed in the non-critical (NCHbH) flags range, meaning an ECN-ignorant transit RBridge will not be forced to drop the packet, while an ECN-aware egress can still propagate it as CE.
The scheme is designed so that even if an egress RBridge is ECN-ignorant, it will drop CCE-marked packets (via default CItE drop behavior), ensuring that congestion is at minimum signaled by packet loss rather than being silently ignored.
For L4S (RFC 9331), a transit TRILL RBridge classifies packets with TRILL-ECN bit13=1 into the L4S queue and others into the Classic queue, using CCE for critical and NCCE for non-critical marking; an L4S-unaware egress will still drop CCE at p² probability, matching the Classic drop likelihood.
For Pre-Congestion Notification (PCN, RFC 6660), the CCE flag maps to the Excess-Traffic-Marked (ETM) codepoint and ECT(1) in TRILL-ECN maps to the Threshold-Marked (ThM) codepoint; no changes to ingress or egress behavior are required to support PCN alongside classic ECN.
The egress ECN mappings in Table 3 are consistent with those for IP-in-IP tunnels defined in RFC 6040, ensuring backward compatibility with all current and past ECN variants and forward compatibility with future forms complying with RFC 9599 guidelines.
A transit RBridge does not examine the TRILL-ECN field before signaling CCE; it signals CCE regardless of whether the packet indicates an ECN-capable transport. The egress is responsible for converting CCE to a drop if the transport is not ECN-capable.
An ECN-capable egress RBridge MUST set the ECN field of the outgoing native IP packet to the codepoint at the intersection of the inner IP ECN row and the arriving TRILL 3-bit ECN codepoint column in Table 3. If no flags word is present, the 3-bit codepoint is assumed to be all zeros.
An RBridge supporting ECN MUST implement some form of Active Queue Management (AQM) according to RFC 7567 guidelines, detecting congestion by monitoring queue depth or participating in a link-specific protocol.
At the egress, when the arriving TRILL 3-bit ECN codepoint is CE but the encapsulated inner IP header is Not-ECT, the egress RBridge MUST drop the packet, because a non-ECN-capable transport above IP will only understand dropped packets as congestion signals.
At transit, if a flags word is present and the AQM decides to signal critical congestion on a TRILL Data packet, the transit RBridge MUST set the CCE flag (bit 26). Classic ECN only uses critical congestion indications; PCN and L4S variants also use non-critical indications.
Combinations marked with an asterisk in Table 3 (currently unused in all ECN variants) SHOULD be logged by the egress RBridge as anomalous.
If no TRILL header flags word is present on a congested packet, the transit RBridge MAY add a flags word, set TRILL-ECN to Not-ECT (00), and set CCE along with the CRItE summary bit instead of dropping the packet.
When decapsulating a non-IP inner frame with an ECN indication understood by the RBridge, the egress MUST follow RFC 9599 Section 4.4 guidelines to set ECN information in the decapsulated native frame, combining the TRILL flags word with the inner frame per Table 3.
When encapsulating a non-IP frame whose protocol has an ECN capability indication, the ingress RBridge MUST follow the guidelines in RFC 9599 Section 4.3 to add a flags word to the TRILL header, copying from the native frame's ECN field into TRILL-ECN.
When encapsulating an IP frame, an ingress RBridge MUST set the F flag in the main TRILL header, create a flags word, copy the two ECN bits from the IP header into TRILL-ECN (bits 12–13), and ensure the CCE flag (bit 26) is set to zero.
Non-ECN egress RBridges ignore TRILL-ECN bits 12–13 but, because drop is the default decapsulation behavior for an unknown CItE flag, they will drop any packet where a transit RBridge set CCE (bit 26), providing implicit congestion notification.
Table 3 defines the full egress ECN behavior as a 4×4 lookup of inner native header ECN (Not-ECT, ECT(0), ECT(1), CE) against the arriving TRILL 3-bit ECN codepoint (Not-ECT, ECT(0), ECT(1), CE), producing the outgoing ECN value or a drop action.
The 3-bit TRILL ECN codepoint used at egress is derived by combining the 2-bit TRILL-ECN field and the 1-bit CCE field per Table 2: if either NCCE or CCE is set, the 3-bit codepoint is CE; otherwise it matches the TRILL-ECN value.
The TRILL-ECN field encodes four codepoints: Not-ECT (00), ECT(1) (01), ECT(0) (10), and NCCE (Non-Critical Congestion Experienced, 11). The first three match the IP ECN field codepoints; NCCE is named distinctly from CE to reflect its non-critical (ingress-to-egress) semantics.
IANA updated the 'TRILL Extended Header Flags' registry: bits 12–13 are now assigned to TRILL-ECN (Explicit Congestion Notification) and bit 26 to CCE (Critical Congestion Experienced), both referencing RFC 9600.
TRILL ECN support introduces no significant new security considerations beyond those already specified for ECN in lower-layer protocols (RFC 9599, RFC 6040) and for the TRILL protocol itself (RFC 6325).
ECN marking uses two fields in the 32-bit TRILL header extension flags word: a 2-bit TRILL-ECN field at bits 12–13 (in the NCHbH range) and a 1-bit CCE (Critical Congestion Experienced) field at bit 26 (in the CItE range). The F flag in the main TRILL header must be set whenever the flags word is present.