| rfc9600.original | rfc9600.txt | |||
|---|---|---|---|---|
| TRILL Working Group Donald Eastlake | Internet Engineering Task Force (IETF) D. Eastlake 3rd | |||
| INTERNET-DRAFT Huawei | Request for Comments: 9600 B. Briscoe | |||
| Intended status: Proposed Standard Bob Briscoe | Category: Standards Track Independent | |||
| CableLabs | ISSN: 2070-1721 August 2024 | |||
| Expires: August 24, 2018 February 25, 2018 | ||||
| TRILL (TRansparent Interconnection of Lots of Links): | TRansparent Interconnection of Lots of Links (TRILL): Explicit | |||
| ECN (Explicit Congestion Notification) Support | Congestion Notification (ECN) Support | |||
| <draft-ietf-trill-ecn-support-07.txt> | ||||
| Abstract | Abstract | |||
| Explicit congestion notification (ECN) allows a forwarding element to | Explicit Congestion Notification (ECN) allows a forwarding element to | |||
| notify downstream devices, including the destination, of the onset of | notify downstream devices, including the destination, of the onset of | |||
| congestion without having to drop packets. This can improve network | congestion without having to drop packets. This can improve network | |||
| efficiency through better congestion control without packet drops. | efficiency through better congestion control without packet drops. | |||
| This document extends ECN to TRILL (TRansparent Interconnection of | This document extends ECN to TRansparent Interconnection of Lots of | |||
| Lots of Links) switches, including integration with IP ECN, and | Links (TRILL) switches, including integration with IP ECN, and | |||
| provides for ECN marking in the TRILL Header Extension Flags Word | provides for ECN marking in the TRILL header extension flags word | |||
| (see RFC 7179). | (RFC 7179). | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted to IETF in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Distribution of this document is unlimited. Comments should be sent | This document is a product of the Internet Engineering Task Force | |||
| to the TRILL working group mailing list <trill@ietf.org>. | (IETF). It represents the consensus of the IETF community. It has | |||
| received public review and has been approved for publication by the | ||||
| Internet Engineering Steering Group (IESG). Further information on | ||||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| Internet-Drafts are working documents of the Internet Engineering | Information about the current status of this document, any errata, | |||
| Task Force (IETF), its areas, and its working groups. Note that | and how to provide feedback on it may be obtained at | |||
| other groups may also distribute working documents as Internet- | https://www.rfc-editor.org/info/rfc9600. | |||
| Drafts. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | Copyright Notice | |||
| and may be updated, replaced, or obsoleted by other documents at any | ||||
| time. It is inappropriate to use Internet-Drafts as reference | ||||
| material or to cite them other than as "work in progress." | ||||
| The list of current Internet-Drafts can be accessed at | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
| http://www.ietf.org/1id-abstracts.html. The list of Internet-Draft | document authors. All rights reserved. | |||
| Shadow Directories can be accessed at | ||||
| http://www.ietf.org/shadow.html. | ||||
| INTERNET-DRAFT TRILL ECN Support | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | ||||
| (https://trustee.ietf.org/license-info) in effect on the date of | ||||
| publication of this document. Please review these documents | ||||
| carefully, as they describe your rights and restrictions with respect | ||||
| to this document. Code Components extracted from this document must | ||||
| include Revised BSD License text as described in Section 4.e of the | ||||
| Trust Legal Provisions and are provided without warranty as described | ||||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction............................................3 | 1. Introduction | |||
| 1.1 Conventions used in this document......................4 | 1.1. Conventions Used in This Document | |||
| 2. The ECN-Specific Extended Header Flags | ||||
| 2. The ECN Specific Extended Header Flags..................6 | 3. ECN Support | |||
| 3.1. Ingress ECN Support | ||||
| 3. ECN Support.............................................7 | 3.2. Transit ECN Support | |||
| 3.1 Ingress ECN Support....................................7 | 3.3. Egress ECN Support | |||
| 3.2 Transit ECN Support....................................7 | 3.3.1. Non-ECN Egress RBridges | |||
| 3.3 Egress ECN Support.....................................8 | 3.3.2. ECN Egress RBridges | |||
| 3.3.1 Non-ECN Egress RBridges..............................8 | 4. TRILL Support for ECN Variants | |||
| 3.3.2 ECN Egress RBridges..................................8 | 4.1. Pre-Congestion Notification (PCN) | |||
| 4.2. Low Latency, Low Loss, and Scalable Throughput (L4S) | ||||
| 4. TRILL Support for ECN Variants.........................11 | 5. IANA Considerations | |||
| 4.1 Pre-Congestion Notification (PCN).....................11 | 6. Security Considerations | |||
| 4.2 Low Latency, Low Loss, Scalable Throughput (L4S)......12 | 7. References | |||
| 7.1. Normative References | ||||
| 5. IANA Considerations....................................13 | 7.2. Informative References | |||
| 6. Security Considerations................................14 | Appendix A. TRILL Transit RBridge Behavior to Support L4S | |||
| Acknowledgements | ||||
| 7. Acknowledgements.......................................14 | Authors' Addresses | |||
| Normative References......................................15 | ||||
| Informative References....................................16 | ||||
| Appendix A. TRILL Transit RBridge Behavior to Support L4S.17 | ||||
| Authors' Addresses........................................19 | ||||
| INTERNET-DRAFT TRILL ECN Support | ||||
| 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 two-bit field is available for | dropping packets. For example, a 2-bit field is available for ECN | |||
| 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 | | |||
| +-------+--+ . +---->| RBridges | . +--------+-+ | +-------+--+ . +---->| RBridges | . +--------+-+ | |||
| |Forwarding| . | RBn | . ^ | | |Forwarding| . | RBn | . ^ | | |||
| | Element | . +-------+--+ +---------+ | v | | Element | . +-------+--+ +---------+ | v | |||
| | X | . | | Egress | | +-----------+ | | X | . | | Egress | | +-----------+ | |||
| +----------+ . +---->| RBridge +-+ |Destination| | +----------+ . +---->| RBridge +-+ |Destination| | |||
| . | RB9 | +-----------+ | . | RB9 | +-----------+ | |||
| . TRILL +---------+ | . TRILL +---------+ | |||
| . campus . | . campus . | |||
| ............................. | ............................. | |||
| Figure 1. Example Path Forwarding Nodes | Figure 1: Example Path-Forwarding Nodes | |||
| In [RFC3168], it was recognized that tunnels and lower layer | In [RFC3168], it was recognized that tunnels and lower-layer | |||
| protocols would need to support ECN, and ECN markings would need to | protocols would need to support ECN, and ECN markings would need to | |||
| be propagated, as headers were encapsulated and decapsulated. | be propagated, as headers were encapsulated and decapsulated. | |||
| [ECNencapGuide] gives guidelines on the addition of ECN to protocols | [RFC9599] gives guidelines on the addition of ECN to protocols like | |||
| like TRILL (TRansparent Interconnection of Lots of Links) that often | TRILL that often encapsulate IP packets, including propagation of ECN | |||
| encapsulate IP packets, including propagation of ECN from and to IP. | from and to IP. | |||
| In the figure above, assuming IP traffic, RB1 is an encapsulator and | In Figure 1, assuming IP traffic, RB1 is an encapsulator and RB9 is a | |||
| RB9 a decapsulator. Traffic from Source to RB1 might or might not get | decapsulator. Traffic from Source to RB1 might or might not get | |||
| marked as having experienced congestion in forwarding elements, such | marked as having experienced congestion in forwarding elements, such | |||
| as X, before being encapsulated at ingress RB1. Any such ECN marking | as X, before being encapsulated at ingress RB1. Any such ECN marking | |||
| is encapsulated with a TRILL Header [RFC6325]. | is encapsulated with a TRILL header [RFC6325]. | |||
| 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]. | |||
| INTERNET-DRAFT TRILL ECN Support | ||||
| 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 [ECNencapGuide] 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. | |||
| 1.1 Conventions used in this document | 1.1. Conventions Used in This Document | |||
| The terminology and acronyms defined in [RFC6325] are used herein | The terminology and acronyms defined in [RFC6325] are used herein | |||
| with the same meaning. | with the same meaning. | |||
| In this documents, "IP" refers to both IPv4 and IPv6. | In this documents, "IP" refers to both IPv4 and IPv6. | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| document are to be interpreted as described in [RFC2119] [RFC8174] | "OPTIONAL" in this document are to be interpreted as described in | |||
| when, and only when, they appear in all capitals, as shown here. | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | ||||
| Acronyms: | ||||
| AQM - Active Queue Management | ||||
| CCE - Critical Congestion Experienced | Abbreviations: | |||
| CE - Congestion Experienced | AQM: Active Queue Management | |||
| CItE - Critical Ingress-to-Egress | CCE: Critical Congestion Experienced | |||
| ECN - Explicit Congestion Notification | CE: Congestion Experienced | |||
| ECT - ECN Capable Transport | CItE: Critical Ingress-to-Egress | |||
| L4S - Low Latency, Low Loss, Scalable throughput | ECN: Explicit Congestion Notification | |||
| NCHbH - Non-Critical Hop-by-Hop | ECT: ECN-Capable Transport | |||
| NCCE - Non-Critical Congestion Experienced | L4S: Low Latency, Low Loss, and Scalable throughput | |||
| INTERNET-DRAFT TRILL ECN Support | NCHbH: Non-Critical Hop-by-Hop | |||
| Not-ECT - Not ECN-Capable Transport | NCCE: Non-Critical Congestion Experienced | |||
| PCN - Pre-Congestion Notification | Not-ECT: Not ECN-Capable Transport | |||
| INTERNET-DRAFT TRILL ECN Support | PCN: Pre-Congestion Notification | |||
| 2. The ECN Specific Extended Header Flags | 2. The ECN-Specific Extended Header Flags | |||
| The extension header fields for explicit congestion notification | The extension header fields for ECN in TRILL are defined as a 2-bit | |||
| (ECN) in TRILL are defined as a two-bit TRILL-ECN field and a one-bit | TRILL-ECN field and a one-bit CCE field in the 32-bit TRILL header | |||
| Critical Congestion Experienced (CCE) field in the 32-bit TRILL | extension flags word [RFC7780]. | |||
| Header 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 | |||
| non-critical hop-by-hop (NCHbH) bits. The CCE field consists of bit | NCHbH bits. The CCE field consists of bit 26, which is in the range | |||
| 26, which is in the range reserved for Critical Ingress-to-Egress | reserved for CItE bits. The CRItE bit is the critical Ingress-to- | |||
| (CItE) bits. The CRItE bit is the critical Ingress-to-Egress summary | Egress summary bit and will be one if, and only if, any of the bits | |||
| bit and will be one if and only if any of the bits in the CItE range | in the CItE range (21-26) are one or there is a critical feature | |||
| (21-26) are one or there is a critical feature invoked in some | invoked in some further extension of the TRILL header after the | |||
| further extension of the TRILL Header after the Extension Flags Word. | extension flags word. The other bits and fields shown in Figure 2 | |||
| The other bits and fields shown in Figure 2 are not relevant to ECN. | are not relevant to ECN. See [RFC7780], [RFC7179], and [IANAthFlags] | |||
| See [RFC7780], [RFC7179], and [IANAthFlags] for the meaning of these | for the meaning of these other bits and fields. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |Crit.| CHbH | NCHbH |CRSV | NCRSV | CItE | NCItE | | |Crit.| CHbH | NCHbH |CRSV | NCRSV | CItE | NCItE | | |||
| |.....|.........|...........|.....|.......|...........|.........| | |.....|.........|...........|.....|.......|...........|.........| | |||
| |C|C|C| |C|N| | | | | | | | | | |C|C|C| |C|N| | | | | | | | | | |||
| |R|R|R| |R|C| |ECN| Ext | | |C|Ext| | | |R|R|R| |R|C| |ECN| Ext | | |C|Ext| | | |||
| |H|I|R| |C|C| | | Hop | | |C|Clr| | | |H|I|R| |C|C| | | Hop | | |C|Clr| | | |||
| |b|t|s| |A|A| | | Cnt | | |E| | | | |b|t|s| |A|A| | | Cnt | | |E| | | | |||
| |H|E|v| |F|F| | | | | | | | | | |H|E|v| |F|F| | | | | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2. The TRILL-ECN and CCE | Figure 2: The TRILL-ECN and CCE TRILL Header Extension Flags Word | |||
| TRILL Header Extension Flags Word Fields | Fields | |||
| Table 1 shows the meaning of the codepoints in the TRILL-ECN field. | Table 1 shows the meaning of the codepoints in the TRILL-ECN field. | |||
| The first three have the same meaning as the corresponding ECN field | The first three have the same meaning as the corresponding ECN field | |||
| codepoints in the IP header as defined in [RFC3168]. However, | codepoints in the IP header, as defined in [RFC3168]. However, | |||
| codepoint 0b11 is called Non-Critical Congestion Experienced (NCCE) | codepoint 0b11 is called NCEE to distinguish it from CE in IP. | |||
| to distinguish it from Congestion Experienced in IP. | ||||
| Binary Name Meaning | ||||
| ------ ------- ----------------------------------- | ||||
| 00 Not-ECT Not ECN-Capable Transport | ||||
| 01 ECT(1) ECN-Capable Transport (1) | ||||
| 10 ECT(0) ECN-Capable Transport (0) | ||||
| 11 NCCE Non-Critical Congestion Experienced | ||||
| Table 1. TRILL-ECN Field Codepoints | +========+=========+=====================================+ | |||
| | Binary | Name | Meaning | | ||||
| +========+=========+=====================================+ | ||||
| | 00 | Not-ECT | Not ECN-Capable Transport | | ||||
| +--------+---------+-------------------------------------+ | ||||
| | 01 | ECT(1) | ECN-Capable Transport (1) | | ||||
| +--------+---------+-------------------------------------+ | ||||
| | 10 | ECT(0) | ECN-Capable Transport (0) | | ||||
| +--------+---------+-------------------------------------+ | ||||
| | 11 | NCCE | Non-Critical Congestion Experienced | | ||||
| +--------+---------+-------------------------------------+ | ||||
| INTERNET-DRAFT TRILL ECN Support | Table 1: TRILL-ECN Field Codepoints | |||
| 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 as | at TRILL ingress, transit, and egress. The ingress behavior occurs | |||
| a native frame is encapsulated with a TRILL Header to produce a TRILL | as a native frame is encapsulated with a TRILL header to produce a | |||
| Data packet. The transit behavior occurs in all RBridges where TRILL | TRILL Data packet. The transit behavior occurs in all RBridges where | |||
| Data packets are queued, usually at the output port. The egress | TRILL Data packets are queued, usually at the output port (including | |||
| behavior occurs where a TRILL Data packet is decapsulated and output | the output port of the TRILL ingress). The egress behavior occurs | |||
| 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 and Sections 5.1-5.4 of [ECNencapGuide]. Nonetheless, the | Section 3 of this document and Sections 4.2 through 4.4 of [RFC9599]. | |||
| scheme is designed to safely propagate some form of congestion | Nonetheless, the scheme is designed to safely propagate some form of | |||
| notification even if some RBridges in the path followed by a TRILL | congestion notification even if some RBridges in the path followed by | |||
| 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: | |||
| o When encapsulating an IP frame, the ingress RBridge MUST: | * When encapsulating an IP frame, the ingress RBridge MUST: | |||
| + set the F flag in the main TRILL header [RFC7780]; | - set the F flag in the main TRILL header [RFC7780]; | |||
| + create a Flags Word as part of the TRILL Header; | ||||
| + copy the two ECN bits from the IP header into the TRILL-ECN | ||||
| field (Flags Word bits 12 and 13) | ||||
| + ensure the CCE flag is set to zero (Flags Word bit 26). | ||||
| o When encapsulating a frame for a non-IP protocol, where that | - create a flags word as part of the TRILL header; | |||
| protocol has a means of indicating ECN that is understood by the | ||||
| ingress RBridge, it MUST follow the guidelines in Section 5.3 of | ||||
| [ECNencapGuide] to add a Flags Word to the TRILL Header. For a | ||||
| non-IP protocol with a similar ECN field to IP, this would be | ||||
| achieved by copying into the TRILL-ECN field from the encapsulated | ||||
| native frame. | ||||
| 3.2 Transit ECN Support | - copy the two ECN bits from the IP header into the TRILL-ECN | |||
| field (flags word bits 12 and 13); and | ||||
| - ensure the CCE flag is set to zero (flags word bit 26). | ||||
| * When encapsulating a frame for a non-IP protocol (where that | ||||
| protocol has a means of indicating that ECN is understood by the | ||||
| ingress RBridge), the ingress RBridge MUST follow the guidelines | ||||
| in Section 4.3 of [RFC9599] to add a flags word to the TRILL | ||||
| header. For a non-IP protocol with an ECN field similar to IP, | ||||
| this would be achieved by copying into the TRILL-ECN field from | ||||
| the encapsulated native frame. | ||||
| 3.2. Transit ECN Support | ||||
| 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. | |||
| o An RBridge that supports ECN MUST implement some form of active | * An RBridge that supports ECN MUST implement some form of AQM | |||
| according to the guidelines of [RFC7567]. The RBridge detects | ||||
| congestion either by monitoring its own queue depth or by | ||||
| participating in a link-specific protocol. | ||||
| INTERNET-DRAFT TRILL ECN Support | * If the TRILL header flags word is present, whenever the AQM | |||
| algorithm decides to indicate critical congestion on a TRILL Data | ||||
| 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. | ||||
| queue management (AQM) according to the guidelines of [RFC7567]. | * If the TRILL header flags word is not present, the RBridge will | |||
| The RBridge detects congestion either by monitoring its own queue | either drop the packet or it MAY do all of the following instead | |||
| depth or by participating in a link-specific protocol. | to indicate congestion: | |||
| o If the TRILL Header Flags Word is present, whenever the AQM | - set the F flag in the main TRILL header; | |||
| algorithm decides to indicate congestion on a TRILL Data packet it | ||||
| MUST set the CCE flag (Flags Word bit 26). | ||||
| o If the TRILL header Flags Word is not present, to indicate | - add a flags word to the TRILL header; | |||
| congestion the RBridge will either drop the packet or it MAY do | ||||
| all of the following instead: | ||||
| + set the F flag in the main TRILL header; | - set the TRILL-ECN field to Not-ECT (00); and | |||
| + add a Flags Word to the TRILL Header; | ||||
| + set the TRILL-ECN field to Not-ECT (00); | - set the CCE flag and the critical Ingress-to-Egress summary bit | |||
| + and set the CCE flag and the Ingress-to-Egress critical summary | (CRItE). | |||
| bit (CRIbE). | ||||
| 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 (described next) | ECN capable. The egress/decapsulation behavior ensures that a CCE | |||
| ensures that a CCE indication is converted to a drop if the transport | indication is converted to a drop if the transport is not ECN | |||
| 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 Critical | drop is the default behavior for an RBridge decapsulating a CItE flag | |||
| Ingress-to-Egress flag when it has no specific logic to understand | when it has no specific logic to understand it. Drop is the intended | |||
| it. Drop is the intended behavior for such a packet, as required by | behavior for such a packet, as required by Section 4.4 of [RFC9599]. | |||
| Section 5.4 of [ECNencapGuide]. | ||||
| 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 | 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 | ||||
| INTERNET-DRAFT TRILL ECN Support | field of the outgoing IP packet to the codepoint at the | |||
| intersection of the row for the arriving encapsulated IP packet | ||||
| of the outgoing native IP packet using Table 3. It MUST set the | and the column for 3-bit ECN codepoint in the arriving outer TRILL | |||
| ECN field of the outgoing IP packet to the codepoint at the | Data packet TRILL header. If no TRILL header extension flags word | |||
| intersection of the row for the arriving encapsulated IP packet | is present, the 3-bit ECN codepoint is assumed to be all zero | |||
| and the column for 3-bit ECN codepoint in the arriving outer | bits. | |||
| TRILL Data packet TRILL Header. If no TRILL Header Extension | ||||
| Flags Word is present, the 3-bit ECN codepoint is assumed to be | ||||
| all zero bits. | ||||
| The name of the TRILL 3-bit ECN codepoint is defined using the | ||||
| combination of the TRILL-ECN and CCE fields in Table 2. | ||||
| Specifically, the TRILL 3-bit ECN codepoint is called CE if | ||||
| either NCCE or CCE is set in the TRILL Header Extension Flags | ||||
| 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 | The name of the TRILL 3-bit ECN codepoint used in Table 3 is | |||
| congestion experienced (CE) but the encapsulated native IP | defined using the combination of the TRILL-ECN and CCE fields in | |||
| frame indicates a not ECN-capable transport (Not-ECT), it can | Table 2. Specifically, the TRILL 3-bit ECN codepoint is called CE | |||
| be seen that the RBridge MUST drop the packet. Such packet | if either NCCE or CCE is set in the TRILL header extension flags | |||
| dropping is necessary because a transport above the IP layer | word. Otherwise, it has the same name as the 2-bit TRILL-ECN | |||
| that is not ECN-capable will have no ECN logic, so it will only | codepoint. | |||
| understand dropped packets as an indication of congestion. | ||||
| Decapsulating a non-IP protocol frame: If the frame has a means of | In the case where the TRILL 3-bit ECN codepoint indicates CE but | |||
| indicating ECN that is understood by the RBridge, it MUST | the encapsulated native IP frame indicates a Not-ECT, it can be | |||
| follow the guidelines in Section 5.4 of [ECNencapGuide] when | seen that the RBridge MUST drop the packet. Such packet dropping | |||
| setting the ECN information in the decapsulated native frame. | is necessary because a transport above the IP layer that is not | |||
| For a non-IP protocol with a similar ECN field to IP, this | ECN capable will have no ECN logic, so it will only understand | |||
| would be achieved by combining the information in the TRILL | dropped packets as an indication of congestion. | |||
| Header Flags Word with the encapsulated non-IP native frame, as | ||||
| specified in Table 3. | ||||
| +------------+-----+---------------------+ | Decapsulating a non-IP protocol frame: If the frame has a means of | |||
| | TRILL-ECN | CCE | Arriving TRILL 3-bit| | indicating ECN that is understood by the RBridge, it MUST follow | |||
| | | | ECN codepoint name | | the guidelines in Section 4.4 of [RFC9599] when setting the ECN | |||
| +------------+-----+---------------------+ | information in the decapsulated native frame. For a non-IP | |||
| | Not-ECT 00 | 0 | Not-ECT | | protocol with an ECN field similar to IP, this would be achieved | |||
| | ECT(1) 01 | 0 | ECT(1) | | by combining the information in the TRILL header flags word with | |||
| | ECT(0) 10 | 0 | ECT(0) | | the encapsulated non-IP native frame, as specified in Table 3. | |||
| | NCCE 11 | 0 | CE | | ||||
| | Not-ECT 00 | 1 | CE | | ||||
| | ECT(1) 01 | 1 | CE | | ||||
| | ECT(0) 10 | 1 | CE | | ||||
| | NCCE 11 | 1 | CE | | ||||
| +------------+-----+---------------------+ | ||||
| Table 2. Mapping of TRILL-ECN and CCE Fields to | +================+=====+=========================================+ | |||
| the TRILL 3-bit ECN Codepoint Name | | TRILL-ECN | CCE | Arriving TRILL 3-Bit ECN Codepoint Name | | |||
| +=========+======+ | | | ||||
| | Name | Bits | | | | ||||
| +=========+======+=====+=========================================+ | ||||
| | Not-ECT | 00 | 0 | Not-ECT | | ||||
| +---------+------+-----+-----------------------------------------+ | ||||
| | ECT(1) | 01 | 0 | ECT(1) | | ||||
| +---------+------+-----+-----------------------------------------+ | ||||
| | ECT(0) | 10 | 0 | ECT(0) | | ||||
| +---------+------+-----+-----------------------------------------+ | ||||
| | NCCE | 11 | 0 | CE | | ||||
| +---------+------+-----+-----------------------------------------+ | ||||
| | Not-ECT | 00 | 1 | CE | | ||||
| +---------+------+-----+-----------------------------------------+ | ||||
| | ECT(1) | 01 | 1 | CE | | ||||
| +---------+------+-----+-----------------------------------------+ | ||||
| | ECT(0) | 10 | 1 | CE | | ||||
| +---------+------+-----+-----------------------------------------+ | ||||
| | NCCE | 11 | 1 | CE | | ||||
| +---------+------+-----+-----------------------------------------+ | ||||
| INTERNET-DRAFT TRILL ECN Support | Table 2: Mapping of TRILL-ECN and CCE Fields to the TRILL | |||
| 3-Bit ECN Codepoint Name | ||||
| +---------+----------------------------------------------+ | +=====================+============================================+ | |||
| | Inner | Arriving TRILL 3-bit ECN Codepoint Name | | | Inner Native Header | Arriving TRILL 3-Bit ECN Codepoint Name | | |||
| | Native +---------+------------+------------+----------+ | | +=========+============+============+========+ | |||
| | Header | 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(1) | ECT(1) | ECT(1)(*) | ECT(1) | CE | | | ECT(0) | ECT(0) | ECT(0) | ECT(1) | CE | | |||
| | CE | CE | CE | CE(*) | CE | | +---------------------+---------+------------+------------+--------+ | |||
| +---------+---------+------------+------------+----------+ | | ECT(1) | ECT(1) | ECT(1)(*) | ECT(1) | CE | | |||
| +---------------------+---------+------------+------------+--------+ | ||||
| | CE | CE | CE | CE(*) | CE | | ||||
| +---------------------+---------+------------+------------+--------+ | ||||
| Table 3. Egress ECN Behavior | Table 3: Egress ECN Behavior | |||
| An asterisk in the above table indicates a combination that is | An asterisk in Table 3 indicates a combination that is currently | |||
| currently unused in all variants of ECN marking (see Section 4) and | unused in all variants of ECN marking (see Section 4) and therefore | |||
| therefore SHOULD be logged. | SHOULD be logged. | |||
| With one exception, the mappings in Table 3 are consistent with those | With one exception, the mappings in Table 3 are consistent with those | |||
| for IP-in-IP tunnels [RFC6040], which ensures backward compatibility | for IP-in-IP tunnels [RFC6040], which ensures backward compatibility | |||
| with all current and past variants of ECN marking (see Section 4). It | with all current and past variants of ECN marking (see Section 4). | |||
| also ensures forward compatibility with any future form of ECN | It also ensures forward compatibility with any future form of ECN | |||
| marking that complies with the guidelines in [ECNencapGuide], | marking that complies with the guidelines in [RFC9599], including | |||
| including cases where ECT(1) represents a second level of marking | cases where ECT(1) represents a second level of marking severity | |||
| severity below CE. | below CE. | |||
| The one exception is that the drop condition in Table 3 need not be | The one exception is that the drop condition in Table 3 need not be | |||
| logged because, with TRILL, it is the result of a valid combination | logged because, with TRILL, it is the result of a valid combination | |||
| of events. | of events. | |||
| INTERNET-DRAFT TRILL ECN Support | 4. TRILL Support for ECN Variants | |||
| 4. TRILL Support for ECN Variants | ||||
| This section is informative, not normative; it discusses interworking | This section is informative, not normative; it discusses interworking | |||
| between TRILL and variants of the standardized form of ECN in IP | between TRILL and variants of the standardized form of ECN in IP | |||
| [RFC3168]. See also [RFC8311]. | [RFC3168]. See also [RFC8311]. | |||
| The ECN wire protocol for TRILL (Section 2) and the ingress (Section | The ECN wire protocol for TRILL (Section 2) and the ingress | |||
| 3.1) and egress (Section 3.3) ECN behaviors have been designed to | (Section 3.1) and egress (Section 3.3) ECN behaviors have been | |||
| support the other known variants of ECN, as detailed below. New | designed to support the other known variants of ECN as detailed | |||
| variants of ECN will have to comply with the guidelines for defining | below. New variants of ECN will have to comply with the guidelines | |||
| alternative ECN semantics [RFC4774]. It is expected that the TRILL | for defining alternative ECN semantics [RFC4774]. It is expected | |||
| ECN wire protocol is generic enough to support such potential future | that the TRILL ECN wire protocol is generic enough to support such | |||
| variants. | potential future variants. | |||
| 4.1 Pre-Congestion Notification (PCN) | 4.1. Pre-Congestion Notification (PCN) | |||
| The PCN wire protocol [RFC6660] is recognized by the use of a PCN- | The PCN wire protocol [RFC6660] is recognized by the use of a PCN- | |||
| compatible Diffserv codepoint in the IP header and a non-zero IP-ECN | compatible Diffserv codepoint in the IP header and a nonzero IP-ECN | |||
| field. For TRILL or any lower layer protocol, equivalent traffic | field. For TRILL or any lower-layer protocol, equivalent traffic- | |||
| classification codepoints would have to be defined, but that is | classification codepoints would have to be defined, but that is | |||
| outside the scope of the current document. | outside the scope of this document. | |||
| The PCN wire protocol is similar to ECN, except it indicates | The PCN wire protocol is similar to ECN, except it indicates | |||
| congestion with two levels of severity. It uses: | congestion with two levels of severity. It uses: | |||
| o 11 (CE) as the most severe, termed the Excess-traffic-marked (ETM) | * 11 (CE) as the most severe, termed the Excess-Traffic-Marked (ETM) | |||
| codepoint | codepoint | |||
| o 01 ECT(1) as a lesser severity level, termed the Threshold-Marked | * 01 ECT(1) as a lesser severity level, termed the Threshold-Marked | |||
| (ThM) codepoint. (This difference between ECT(1) and ECT(0) only | (ThM) codepoint. This difference between ECT(1) and ECT(0) only | |||
| applies to PCN, not to the classic ECN support specified for TRILL | applies to PCN, not to the classic ECN support specified for TRILL | |||
| in this document before Section 4.) | in this document before Section 4. | |||
| To implement PCN on a transit RBridge would require a detailed | To implement PCN on a transit RBridge would require a detailed | |||
| specification. But in brief: | specification. In brief: | |||
| o the TRILL Critical Congestion Experienced (CCE) flag would be used | * the TRILL CCE flag would be used for the Excess-Traffic-Marked | |||
| for the Excess-Traffic-Marked (ETM) codepoint; | (ETM) codepoint; | |||
| o ECT(1) in the TRILL-ECN field would be used for the Threshold- | * ECT(1) in the TRILL-ECN field would be used for the Threshold- | |||
| Marked codepoint. | Marked codepoint. | |||
| Then the ingress and egress behaviors defined in Section 3 would not | Then, the ingress and egress behaviors defined in Section 3 would not | |||
| need to be altered to ensure support for PCN as well as ECN. | need to be altered to ensure support for PCN as well as ECN. | |||
| INTERNET-DRAFT TRILL ECN Support | 4.2. Low Latency, Low Loss, and Scalable Throughput (L4S) | |||
| 4.2 Low Latency, Low Loss, Scalable Throughput (L4S) | ||||
| L4S is currently on the IETF's experimental track. An outline of how | L4S is currently on the IETF's experimental track. An outline of how | |||
| a transit TRILL RBridge would support L4S [ECNL4S] is given in | a transit TRILL RBridge would support L4S [RFC9331] is given in | |||
| Appendix A. | Appendix A. | |||
| INTERNET-DRAFT TRILL ECN Support | 5. IANA Considerations | |||
| 5. IANA Considerations | ||||
| IANA is requested to update the TRILL Extended Header Flags registry | ||||
| by replacing the lines for bits 9-13 and for bits 21-26 with the | ||||
| following: | ||||
| Bits Purpose Reference | IANA has updated the "TRILL Extended Header Flags" registry by | |||
| ----- ------- --------- | replacing the lines for bits 9-13 and 21-26 with the following: | |||
| 9-11 available non-critical hop-by-hop flags | ||||
| 12-13 TRILL-ECN (Explicit Congestion Notification) [this doc] | ||||
| 21-25 available critical ingress-to-egress flags | +=======+==============================================+===========+ | |||
| 26 Critical Congestion Experienced (CCE) [this doc] | | Bits | Purpose | Reference | | |||
| +=======+==============================================+===========+ | ||||
| | 9-11 | available non-critical hop-by-hop flags | [RFC7179] | | ||||
| +-------+----------------------------------------------+-----------+ | ||||
| | 12-13 | TRILL-ECN (Explicit Congestion Notification) | RFC 9600 | | ||||
| +-------+----------------------------------------------+-----------+ | ||||
| | 21-25 | available critical ingress-to-egress flags | [RFC7179] | | ||||
| +-------+----------------------------------------------+-----------+ | ||||
| | 26 | Critical Congestion Experienced (CCE) | RFC 9600 | | ||||
| +-------+----------------------------------------------+-----------+ | ||||
| INTERNET-DRAFT TRILL ECN Support | 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. Acknowledgements | 7. References | |||
| The helpful comments of Loa Andersson and Adam Roach are hereby | ||||
| acknowledged. | ||||
| This document was prepared with basic NROFF. All macros used were | ||||
| defined in the source file. | ||||
| INTERNET-DRAFT TRILL ECN Support | ||||
| Normative References | ||||
| [RFC2119] - Bradner, S., "Key words for use in RFCs to Indicate | ||||
| Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, | ||||
| March 1997, <http://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC3168] - Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | 7.1. Normative References | |||
| of Explicit Congestion Notification (ECN) to IP", RFC 3168, DOI | ||||
| 10.17487/RFC3168, September 2001, <http://www.rfc- | ||||
| editor.org/info/rfc3168>. | ||||
| [RFC4774] - Floyd, S., "Specifying Alternate Semantics for the | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Explicit Congestion Notification (ECN) Field", BCP 124, RFC | Requirement Levels", BCP 14, RFC 2119, | |||
| 4774, DOI 10.17487/RFC4774, November 2006, <http://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
| editor.org/info/rfc4774>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC6325] - Perlman, R., Eastlake 3rd, D., Dutt, D., Gai, S., and A. | [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | |||
| Ghanwani, "Routing Bridges (RBridges): Base Protocol | of Explicit Congestion Notification (ECN) to IP", | |||
| Specification", RFC 6325, DOI 10.17487/RFC6325, July 2011, | RFC 3168, DOI 10.17487/RFC3168, September 2001, | |||
| <http://www.rfc-editor.org/info/rfc6325>. | <https://www.rfc-editor.org/info/rfc3168>. | |||
| [RFC7179] - Eastlake 3rd, D., Ghanwani, A., Manral, V., Li, Y., and | [RFC4774] Floyd, S., "Specifying Alternate Semantics for the | |||
| C. Bestler, "Transparent Interconnection of Lots of Links | Explicit Congestion Notification (ECN) Field", BCP 124, | |||
| (TRILL): Header Extension", RFC 7179, DOI 10.17487/RFC7179, May | RFC 4774, DOI 10.17487/RFC4774, November 2006, | |||
| 2014, <http://www.rfc-editor.org/info/rfc7179>. | <https://www.rfc-editor.org/info/rfc4774>. | |||
| [RFC7567] - Baker, F., Ed., and G. Fairhurst, Ed., "IETF | [RFC6325] Perlman, R., Eastlake 3rd, D., Dutt, D., Gai, S., and A. | |||
| Recommendations Regarding Active Queue Management", BCP 197, | Ghanwani, "Routing Bridges (RBridges): Base Protocol | |||
| RFC 7567, DOI 10.17487/RFC7567, July 2015, <http://www.rfc- | Specification", RFC 6325, DOI 10.17487/RFC6325, July 2011, | |||
| editor.org/info/rfc7567>. | <https://www.rfc-editor.org/info/rfc6325>. | |||
| [RFC7780] - Eastlake 3rd, D., Zhang, M., Perlman, R., Banerjee, A., | [RFC7179] Eastlake 3rd, D., Ghanwani, A., Manral, V., Li, Y., and C. | |||
| Ghanwani, A., and S. Gupta, "Transparent Interconnection of | Bestler, "Transparent Interconnection of Lots of Links | |||
| Lots of Links (TRILL): Clarifications, Corrections, and | (TRILL): Header Extension", RFC 7179, | |||
| Updates", RFC 7780, DOI 10.17487/RFC7780, February 2016, | DOI 10.17487/RFC7179, May 2014, | |||
| <http://www.rfc-editor.org/info/rfc7780>. | <https://www.rfc-editor.org/info/rfc7179>. | |||
| [RFC8174] - Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC7567] Baker, F., Ed. and G. Fairhurst, Ed., "IETF | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May | Recommendations Regarding Active Queue Management", | |||
| 2017, <http://www.rfc-editor.org/info/rfc8174> | BCP 197, RFC 7567, DOI 10.17487/RFC7567, July 2015, | |||
| <https://www.rfc-editor.org/info/rfc7567>. | ||||
| [RFC8311] - Black, D., "Relaxing Restrictions on Explicit Congestion | [RFC7780] Eastlake 3rd, D., Zhang, M., Perlman, R., Banerjee, A., | |||
| Notification (ECN) Experimentation", RFC 8311, DOI | Ghanwani, A., and S. Gupta, "Transparent Interconnection | |||
| 10.17487/RFC8311, January 2018, <https://www.rfc- | of Lots of Links (TRILL): Clarifications, Corrections, and | |||
| editor.org/info/rfc8311>. | Updates", RFC 7780, DOI 10.17487/RFC7780, February 2016, | |||
| <https://www.rfc-editor.org/info/rfc7780>. | ||||
| [ECNencapGuide] - B. Briscoe, J. Kaippallimalil, P. Thaler, | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| "Guidelines for Adding Congestion Notification to Protocols | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| that Encapsulate IP", draft-ietf-tsvwg-ecn-encap-guidelines, | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| work in progress. | ||||
| INTERNET-DRAFT TRILL ECN Support | [RFC8311] Black, D., "Relaxing Restrictions on Explicit Congestion | |||
| Notification (ECN) Experimentation", RFC 8311, | ||||
| DOI 10.17487/RFC8311, January 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8311>. | ||||
| Informative References | [RFC9599] Briscoe, B. and J. Kaippallimalil, "Guidelines for Adding | |||
| Congestion Notification to Protocols that Encapsulate IP", | ||||
| RFC 9599, DOI 10.17487/RFC9599, August 2024, | ||||
| <https://www.rfc-editor.org/info/rfc9599>. | ||||
| [ECNL4S] - K. De Schepper, B. Briscoe, "Identifying Modified Explicit | 7.2. Informative References | |||
| Congestion Notification (ECN) Semantics for Ultra-Low Queueing | ||||
| Delay", draft-ietf-tsvwg-ecn-l4s-id, work in progress. | ||||
| [IANAthFlags] - IANA TRILL Extended Header word flags: | [IANAthFlags] | |||
| http://www.iana.org/assignments/trill-parameters/trill- | IANA, "TRILL Extended Header Flags", | |||
| parameters.xhtml#extended-header-flags | <http://www.iana.org/assignments/trill-parameters/>. | |||
| [RFC6040] - Briscoe, B., "Tunnelling of Explicit Congestion | [RFC6040] Briscoe, B., "Tunnelling of Explicit Congestion | |||
| Notification", RFC 6040, DOI 10.17487/RFC6040, November 2010, | Notification", RFC 6040, DOI 10.17487/RFC6040, November | |||
| <http://www.rfc-editor.org/info/rfc6040>. | 2010, <https://www.rfc-editor.org/info/rfc6040>. | |||
| [RFC6660] - Briscoe, B., Moncaster, T., and M. Menth, "Encoding Three | [RFC6660] Briscoe, B., Moncaster, T., and M. Menth, "Encoding Three | |||
| Pre-Congestion Notification (PCN) States in the IP Header Using | Pre-Congestion Notification (PCN) States in the IP Header | |||
| a Single Diffserv Codepoint (DSCP)", RFC 6660, DOI | Using a Single Diffserv Codepoint (DSCP)", RFC 6660, | |||
| 10.17487/RFC6660, July 2012, <http://www.rfc- | DOI 10.17487/RFC6660, July 2012, | |||
| editor.org/info/rfc6660>. | <https://www.rfc-editor.org/info/rfc6660>. | |||
| INTERNET-DRAFT TRILL ECN Support | [RFC9331] De Schepper, K. and B. Briscoe, Ed., "The Explicit | |||
| Congestion Notification (ECN) Protocol for Low Latency, | ||||
| Low Loss, and Scalable Throughput (L4S)", RFC 9331, | ||||
| DOI 10.17487/RFC9331, January 2023, | ||||
| <https://www.rfc-editor.org/info/rfc9331>. | ||||
| Appendix A. TRILL Transit RBridge Behavior to Support L4S | Appendix A. TRILL Transit RBridge Behavior to Support L4S | |||
| The specification of the Low Latency, Low Loss, Scalable throughput | The specification of the Low Latency, Low Loss, and Scalable | |||
| (L4S) wire protocol for IP is given in [ECNL4S]. L4S is one example | throughput (L4S) wire protocol for IP is given in [RFC9331]. L4S is | |||
| of the ways TRILL ECN handling may evolve [RFC8311]. It is similar to | one example of the ways TRILL ECN handling may evolve [RFC8311]. It | |||
| the original ECN wire protocol for IP [RFC3168], except: | is similar to the original ECN wire protocol for IP [RFC3168], | |||
| except: | ||||
| o An AQM that supports L4S classifies packets with ECT(1) or CE in | * An AQM that supports L4S classifies packets with ECT(1) or CE in | |||
| the IP header into an L4S queue and a "Classic" queue otherwise. | the IP header into an L4S queue and a "Classic" queue otherwise. | |||
| o The meaning of CE markings applied by an L4S queue is not the same | * The meaning of CE markings applied by an L4S queue is not the same | |||
| as the meaning of a drop by a "Classic" queue (contrary to the | as the meaning of a drop by a "Classic" queue (contrary to the | |||
| original requirement for ECN [RFC3168]). Instead, the likelihood | original requirement for ECN [RFC3168]). Instead, the likelihood | |||
| that the Classic queue drops packets is defined as the square of | that the Classic queue drops packets is defined as the square of | |||
| the likelihood that the L4S queue marks packets (e.g., when there | the likelihood that the L4S queue marks packets -- e.g., when | |||
| is a drop probability of 0.0009 (0.09%) the L4S marking | there is a drop probability of 0.0009 (0.09%), the L4S marking | |||
| probability will be 0.03 (3%)). | probability will be 0.03 (3%). | |||
| This seems to present a problem for the way that a transit TRILL | This seems to present a problem for the way that a transit TRILL | |||
| RBridge defers the choice between marking and dropping to the egress. | RBridge defers the choice between marking and dropping to the egress. | |||
| Nonetheless, the following pseudocode outlines how a transit TRILL | Nonetheless, the following pseudocode outlines how a transit TRILL | |||
| RBridge can implement L4S marking in such a way that the egress | RBridge can implement L4S marking in such a way that the egress | |||
| behavior already described in Section 3.3 for Classic ECN [RFC3168] | behavior already described in Section 3.3 for Classic ECN [RFC3168] | |||
| will produce the desired outcome. | will produce the desired outcome. | |||
| /* p is an internal variable calculated by any L4S AQM | /* p is an internal variable calculated by any L4S AQM | |||
| * dependent on the delay being experienced in the Classic queue. | * dependent on the delay being experienced in the Classic queue. | |||
| skipping to change at page 17, line 53 ¶ | skipping to change at line 618 ¶ | |||
| } else { | } else { | |||
| % L4S Queue | % L4S Queue | |||
| if (p > random() ) { | if (p > random() ) { | |||
| if (p > random() ) | if (p > random() ) | |||
| mark(CCE) % likelihood: p^2 | mark(CCE) % likelihood: p^2 | |||
| else | else | |||
| mark(NCCE) % likelihood: p - p^2 | mark(NCCE) % likelihood: p - p^2 | |||
| } | } | |||
| } | } | |||
| With the above transit behavior, an egress that supports ECN (Section | With the above transit behavior, an egress that supports ECN | |||
| 3.3) will drop packets or propagate their ECN markings depending on | (Section 3.3) will drop packets or propagate their ECN markings | |||
| whether the arriving inner header is from a non-ECN-capable or ECN- | depending on whether the arriving inner header is from an ECN-capable | |||
| capable transport. | or not ECN-capable transport. | |||
| INTERNET-DRAFT TRILL ECN Support | ||||
| Even if an egress has no L4S-specific logic of its own, it will drop | Even if an egress has no L4S-specific logic of its own, it will drop | |||
| packets with the square of the probability that an egress would if it | packets with the square of the probability that an egress would if it | |||
| did support ECN, for the following reasons: | did support ECN, for the following reasons: | |||
| o Egress with ECN support: | * Egress with ECN support: | |||
| + L4S: propagates both the Critical and Non-Critical CE marks | ||||
| (CCE & NCCE) as a CE mark. | ||||
| Likelihood: p^2 + p - p^2 = p | ||||
| + Classic: Propagates CCE marks as CE or drop, depending on | ||||
| inner. | ||||
| Likelihood: p^2 | ||||
| o Egress without ECN support: | ||||
| + L4S: does not propagate NCCE as a CE mark, but drops CCE marks. | - L4S: Propagates both the Critical and Non-Critical CE marks | |||
| (CCE and NCCE) as a CE mark. | ||||
| Likelihood: p^2 | Likelihood: p^2 + p - p^2 = p | |||
| + Classic: drops CCE marks. | - Classic: Propagates CCE marks as CE or drop, depending on the | |||
| inner header. | ||||
| Likelihood: p^2 | Likelihood: p^2 | |||
| INTERNET-DRAFT TRILL ECN Support | * Egress without ECN support: | |||
| Authors' Addresses | - L4S: Does not propagate NCCE as a CE mark, but drops CCE marks. | |||
| Donald E. Eastlake, 3rd | Likelihood: p^2 | |||
| Huawei Technologies | ||||
| 155 Beaver Street | ||||
| Milford, MA 01757 USA | ||||
| Tel: +1-508-333-2270 | - Classic: Drops CCE marks. | |||
| Email: d3e3e3@gmail.com | ||||
| Bob Briscoe | Likelihood: p^2 | |||
| CableLabs | ||||
| UK | ||||
| Email: ietf@bobbriscoe.net | Acknowledgements | |||
| URI: http://bobbriscoe.net/ | ||||
| INTERNET-DRAFT TRILL ECN Support | The helpful comments of Loa Andersson and Adam Roach are hereby | |||
| acknowledged. | ||||
| Copyright and IPR Provisions | Authors' Addresses | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Donald E. Eastlake, 3rd | |||
| document authors. All rights reserved. | Independent | |||
| 2386 Panoramic Circle | ||||
| Apopka, FL 32703 | ||||
| United States of America | ||||
| Phone: +1-508-333-2270 | ||||
| Email: d3e3e3@gmail.com | ||||
| This document is subject to BCP 78 and the IETF Trust's Legal | Bob Briscoe | |||
| Provisions Relating to IETF Documents | Independent | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | United Kingdom | |||
| publication of this document. Please review these documents | Email: ietf@bobbriscoe.net | |||
| carefully, as they describe your rights and restrictions with respect | URI: http://bobbriscoe.net/ | |||
| to this document. Code Components extracted from this document must | ||||
| include Simplified BSD License text as described in Section 4.e of | ||||
| the Trust Legal Provisions and are provided without warranty as | ||||
| described in the Simplified BSD License. The definitive version of | ||||
| an IETF Document is that published by, or under the auspices of, the | ||||
| IETF. Versions of IETF Documents that are published by third parties, | ||||
| including those that are translated into other languages, should not | ||||
| be considered to be definitive versions of IETF Documents. The | ||||
| definitive version of these Legal Provisions is that published by, or | ||||
| under the auspices of, the IETF. Versions of these Legal Provisions | ||||
| that are published by third parties, including those that are | ||||
| translated into other languages, should not be considered to be | ||||
| definitive versions of these Legal Provisions. For the avoidance of | ||||
| doubt, each Contributor to the IETF Standards Process licenses each | ||||
| Contribution that he or she makes as part of the IETF Standards | ||||
| Process to the IETF Trust pursuant to the provisions of RFC 5378. No | ||||
| language to the contrary, or terms, conditions or rights that differ | ||||
| from or are inconsistent with the rights and licenses granted under | ||||
| RFC 5378, shall have any effect and shall be null and void, whether | ||||
| published or posted by such Contributor, or included with or in such | ||||
| Contribution. | ||||
| End of changes. 141 change blocks. | ||||
| 437 lines changed or deleted | 413 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||