| rfc9600xml2.original.xml | rfc9600.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| <!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!DOCTYPE rfc [ | |||
| C.2119.xml"> | <!ENTITY nbsp " "> | |||
| <!ENTITY RFC3168 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY zwsp "​"> | |||
| C.3168.xml"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY RFC4774 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY wj "⁠"> | |||
| C.4774.xml"> | ||||
| <!ENTITY RFC6325 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6325.xml"> | ||||
| <!ENTITY RFC7179 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7179.xml"> | ||||
| <!ENTITY RFC7567 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7567.xml"> | ||||
| <!ENTITY RFC7780 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7780.xml"> | ||||
| <!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8174.xml"> | ||||
| <!ENTITY RFC8311 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8311.xml"> | ||||
| <!ENTITY I-D.ietf-tsvwg-ecn-encap-guidelines SYSTEM "https://xml2rfc.ietf.org/pu | ||||
| blic/rfc/bibxml3/reference.I-D.ietf-tsvwg-ecn-encap-guidelines.xml"> | ||||
| <!ENTITY I-D.ietf-tsvwg-ecn-encap-guidelines SYSTEM "https://xml2rfc.ietf.org/pu | ||||
| blic/rfc/bibxml3/reference.I-D.ietf-tsvwg-ecn-encap-guidelines.xml"> | ||||
| <!ENTITY I-D.ietf-tsvwg-ecn-l4s-id SYSTEM "https://xml2rfc.ietf.org/public/rfc/b | ||||
| ibxml3/reference.I-D.ietf-tsvwg-ecn-l4s-id.xml"> | ||||
| <!ENTITY I-D.ietf-tsvwg-ecn-l4s-id SYSTEM "https://xml2rfc.ietf.org/public/rfc/b | ||||
| ibxml3/reference.I-D.ietf-tsvwg-ecn-l4s-id.xml"> | ||||
| <!ENTITY RFC6040 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6040.xml"> | ||||
| <!ENTITY RFC6660 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6660.xml"> | ||||
| ]> | ]> | |||
| <rfc submissionType="IETF" docName="draft-ietf-trill-ecn-support-07" category="s | ||||
| td" ipr="trust200902"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" | |||
| <!-- Generated by id2xml 1.5.0 on 2020-06-08T19:55:39Z --> | category="std" consensus="true" docName="draft-ietf-trill-ecn-support-07" | |||
| <?rfc strict="yes"?> | number="9600" ipr="trust200902" obsoletes="" updates="" xml:lang="en" | |||
| <?rfc compact="yes"?> | symRefs="true" sortRefs="true" tocInclude="true" version="3"> | |||
| <?rfc subcompact="no"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc text-list-symbols="o+*-"?> | ||||
| <?rfc toc="yes"?> | ||||
| <front> | <front> | |||
| <title abbrev="TRILL ECN Support">TRILL (TRansparent Interconnection of L | <title abbrev="TRILL ECN Support">TRansparent Interconnection of Lots of Lin | |||
| ots of Links): ECN (Explicit Congestion Notification) Support</title> | ks (TRILL): Explicit Congestion Notification (ECN) Support</title> | |||
| <author initials="D." surname="Eastlake" fullname="Donald E. Eastlake, 3r | <seriesInfo name="RFC" value="9600"/> | |||
| d"> | <author initials="D." surname="Eastlake 3rd" fullname="Donald E. Eastlake, 3 | |||
| <organization abbrev="Huawei">Huawei Technologies</organization> | rd"> | |||
| <address><postal><street>155 Beaver Street</street> | <organization>Independent</organization> | |||
| <city>Milford</city><region>MA</region><code>01757</code><country>USA</co | <address> | |||
| untry> | <postal> | |||
| </postal> | <street>2386 Panoramic Circle</street> | |||
| <phone>+1-508-333-2270</phone> | <city>Apopka</city> | |||
| <email>d3e3e3@gmail.com</email> | <region>FL</region> | |||
| </address> | <code>32703</code> | |||
| </author> | <country>United States of America</country> | |||
| </postal> | ||||
| <phone>+1-508-333-2270</phone> | ||||
| <email>d3e3e3@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="B." surname="Briscoe" fullname="Bob Briscoe"> | ||||
| <organization>Independent</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <country>United Kingdom</country> | ||||
| </postal> | ||||
| <email>ietf@bobbriscoe.net</email> | ||||
| <uri>http://bobbriscoe.net/</uri> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2024" month="August"/> | ||||
| <area>RTG</area> | ||||
| <workgroup>TRILL</workgroup> | ||||
| <author initials="B." surname="Briscoe" fullname="Bob Briscoe"> | <keyword>example</keyword> | |||
| <organization>CableLabs</organization> | ||||
| <address><postal> | ||||
| <street></street><city></city> <region></region><code></code> | ||||
| <country>UK</country> | ||||
| </postal> | ||||
| <email>ietf@bobbriscoe.net</email> | ||||
| <uri>http://bobbriscoe.net/</uri> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2020" month="June"/> | <abstract> | |||
| <workgroup>TRILL Working Group</workgroup> | <t> | |||
| <abstract><t> | 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 Links) switches, including integration with IP ECN, and | Lots of 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).</t> | (RFC 7179).</t> | |||
| </abstract> | ||||
| </abstract> | </front> | |||
| </front> | <middle> | |||
| <section anchor="sect-1" numbered="true" toc="default"> | ||||
| <middle> | <name>Introduction</name> | |||
| <section title="Introduction" anchor="sect-1"><t> | <t> | |||
| Explicit congestion notification (ECN <xref target="RFC3168"/> <xref | Explicit Congestion Notification (ECN) <xref target="RFC3168" | |||
| target="RFC8311"/>) allows a forwarding element (such as a router) to | format="default"/> <xref target="RFC8311" format="default"/> allows a | |||
| forwarding element (such as a router) 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. The | efficiency through better congestion control without packet drops. The | |||
| forwarding element can explicitly mark a proportion of packets in an ECN | forwarding element can explicitly mark a proportion of packets in an ECN | |||
| field instead of dropping the packet. For example, a two-bit field is | field instead of dropping packets. For example, a 2-bit field is | |||
| available for ECN marking in IP headers.</t> | available for ECN marking in IP headers.</t> | |||
| <figure anchor="fig-1"> | ||||
| <figure title="Example Path Forwarding Nodes" anchor="fig-1"> | <name>Example Path-Forwarding Nodes</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <artwork><![CDATA[ | ||||
| ............................. | ............................. | |||
| . . | . . | |||
| +---------+ . | +---------+ . | |||
| +------+ | 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 . | |||
| ............................. | ............................. | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | <t> | |||
| In <xref target="RFC3168"/>, it was recognized that tunnels and lower layer | In <xref target="RFC3168" format="default"/>, 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. | |||
| <xref target="I-D.ietf-tsvwg-ecn-encap-guidelines"/> gives guidelines on the | <xref target="RFC9599" format="default"/> gives guidelines on the addition of | |||
| addition of ECN to protocols | ECN to protocols | |||
| like TRILL (TRansparent Interconnection of Lots of Links) that often | like TRILL that often | |||
| encapsulate IP packets, including propagation of ECN from and to IP.</t> | encapsulate IP packets, including propagation of ECN from and to IP.</t> | |||
| <t> | ||||
| <t> | In <xref target="fig-1"/>, assuming IP traffic, RB1 is an encapsulator and | |||
| In the figure above, assuming IP traffic, RB1 is an encapsulator and | RB9 is a decapsulator. Traffic from Source to RB1 might or might not get | |||
| RB9 a 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 <xref target="RFC6325"/>.</t> | is encapsulated with a TRILL header <xref target="RFC6325" format="default"/> | |||
| .</t> | ||||
| <t> | <t> | |||
| 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 <xref target="RFC7179"/>.</t> | extension flags word <xref target="RFC7179" format="default"/>.</t> | |||
| <t> | ||||
| <t> | ||||
| 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.</t> | point in the path from the Source.</t> | |||
| <t> | ||||
| <t> | 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 <xref target="RFC9599" format="default"/> concerns safe propagation | |||
| protocols <xref target="I-D.ietf-tsvwg-ecn-encap-guidelines"/> concerns safe | of congestion | |||
| 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.</t> | itself indicate congestion to end stations.</t> | |||
| <section anchor="sect-1.1" numbered="true" toc="default"> | ||||
| <section title="Conventions used in this document" anchor="sect-1.1"><t> | <name>Conventions Used in This Document</name> | |||
| The terminology and acronyms defined in <xref target="RFC6325"/> are used her | <t> | |||
| ein | The terminology and acronyms defined in <xref target="RFC6325" | |||
| with the same meaning.</t> | format="default"/> are used herein with the same meaning.</t> | |||
| <t> | ||||
| <t> | ||||
| In this documents, "IP" refers to both IPv4 and IPv6.</t> | In this documents, "IP" refers to both IPv4 and IPv6.</t> | |||
| <t> | <t> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| document are to be interpreted as described in <xref target="RFC2119"/> <xref | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
| target="RFC8174"/> | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| when, and only when, they appear in all capitals, as shown here.</t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
| be interpreted as | ||||
| <t>Acronyms: | described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | |||
| <list> | when, and only when, they appear in all capitals, as shown here. | |||
| <t>AQM - Active Queue Management</t> | </t> | |||
| <t>CCE - Critical Congestion Experienced</t> | ||||
| <t>CE - Congestion Experienced</t> | ||||
| <t>CItE - Critical Ingress-to-Egress</t> | ||||
| <t>ECN - Explicit Congestion Notification</t> | ||||
| <t>ECT - ECN Capable Transport</t> | ||||
| <t>L4S - Low Latency, Low Loss, Scalable throughput</t> | ||||
| <t>NCHbH - Non-Critical Hop-by-Hop</t> | ||||
| <t>NCCE - Non-Critical Congestion Experienced</t> | ||||
| <t>Not-ECT - Not ECN-Capable Transport</t> | ||||
| <t>PCN - Pre-Congestion Notification</t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section title="The ECN Specific Extended Header Flags" anchor="sect-2">< | ||||
| t> | ||||
| The extension header fields for explicit congestion notification | ||||
| (ECN) in TRILL are defined as a two-bit TRILL-ECN field and a one-bit | ||||
| Critical Congestion Experienced (CCE) field in the 32-bit TRILL | ||||
| Header Extension Flags Word <xref target="RFC7780"/>.</t> | ||||
| <t> | ||||
| 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 | ||||
| non-critical hop-by-hop (NCHbH) bits. The CCE field consists of bit 26, | ||||
| which is in the range reserved for Critical Ingress-to-Egress (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 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 Extension Flags Word. The other bits and fields shown in | ||||
| Figure 2 are not relevant to ECN. See <xref target="RFC7780"/>, <xref | ||||
| target="RFC7179"/>, and <xref target="IANAthFlags"/> for the meaning of | ||||
| these other bits and fields.</t> | ||||
| <figure title="The TRILL-ECN and CCE TRILL Header Extension Flags Word Fi | ||||
| elds" | ||||
| anchor="fig-2"> | ||||
| <artwork><![CDATA[ | ||||
| 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |Crit.| CHbH | NCHbH |CRSV | NCRSV | CItE | NCItE | | ||||
| |.....|.........|...........|.....|.......|...........|.........| | ||||
| |C|C|C| |C|N| | | | | | | | | | ||||
| |R|R|R| |R|C| |ECN| Ext | | |C|Ext| | | ||||
| |H|I|R| |C|C| | | Hop | | |C|Clr| | | ||||
| |b|t|s| |A|A| | | Cnt | | |E| | | | ||||
| |H|E|v| |F|F| | | | | | | | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| <t>Abbreviations:</t> | ||||
| <dl> | ||||
| <dt>AQM:</dt><dd>Active Queue Management</dd> | ||||
| <dt>CCE:</dt><dd>Critical Congestion Experienced</dd> | ||||
| <dt>CE:</dt><dd>Congestion Experienced</dd> | ||||
| <dt>CItE:</dt><dd>Critical Ingress-to-Egress</dd> | ||||
| <dt>ECN:</dt><dd>Explicit Congestion Notification</dd> | ||||
| <dt>ECT:</dt><dd>ECN-Capable Transport</dd> | ||||
| <dt>L4S:</dt><dd>Low Latency, Low Loss, and Scalable throughput</dd> | ||||
| <dt>NCHbH:</dt><dd>Non-Critical Hop-by-Hop</dd> | ||||
| <dt>NCCE:</dt><dd>Non-Critical Congestion Experienced</dd> | ||||
| <dt>Not-ECT:</dt><dd>Not ECN-Capable Transport</dd> | ||||
| <dt>PCN:</dt><dd>Pre-Congestion Notification</dd> | ||||
| </dl> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="sect-2" numbered="true" toc="default"> | ||||
| <name>The ECN-Specific Extended Header Flags</name> | ||||
| <t> | ||||
| 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 extension flags word <xref target="RFC7780" format="default"/>.</t> | ||||
| <t> | ||||
| These fields are shown in <xref target="fig-2"/> as "ECN" and "CCE". The | ||||
| TRILL-ECN 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 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 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 extension | ||||
| flags word. The other bits and fields shown in <xref target="fig-2"/> are | ||||
| not relevant to ECN. See <xref target="RFC7780" format="default"/>, <xref | ||||
| target="RFC7179" format="default"/>, and <xref target="IANAthFlags" | ||||
| format="default"/> for the meaning of these other bits and fields.</t> | ||||
| <figure anchor="fig-2"> | ||||
| <name>The TRILL-ECN and CCE TRILL Header Extension Flags Word Fields</na | ||||
| me> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |Crit.| CHbH | NCHbH |CRSV | NCRSV | CItE | NCItE | | ||||
| |.....|.........|...........|.....|.......|...........|.........| | ||||
| |C|C|C| |C|N| | | | | | | | | | ||||
| |R|R|R| |R|C| |ECN| Ext | | |C|Ext| | | ||||
| |H|I|R| |C|C| | | Hop | | |C|Clr| | | ||||
| |b|t|s| |A|A| | | Cnt | | |E| | | | ||||
| |H|E|v| |F|F| | | | | | | | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | ||||
| <t> | <xref target="codepoints"/> shows the meaning of the codepoints in the | |||
| Table 1 shows the meaning of the codepoints in the TRILL-ECN field. | TRILL-ECN field. The first three have the same meaning as the | |||
| The first three have the same meaning as the corresponding ECN field | corresponding ECN field codepoints in the IP header, as defined in <xref | |||
| codepoints in the IP header as defined in [RFC3168]. However, | target="RFC3168"/>. However, codepoint 0b11 is called NCEE to distinguish | |||
| codepoint 0b11 is called Non-Critical Congestion Experienced (NCCE) | it from CE in IP.</t> | |||
| to distinguish it from Congestion Experienced in IP.</t> | ||||
| <!-- [rfced] Please review the figure below. It is a table in the original draft | ||||
| --> | ||||
| <figure title="TRILL-ECN Field Codepoints" anchor="fig-3"> | <table anchor="codepoints"> | |||
| <name>TRILL-ECN Field Codepoints</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th>Binary</th> | ||||
| <th>Name</th> | ||||
| <th>Meaning</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="center">00</td> | ||||
| <td>Not-ECT</td> | ||||
| <td>Not ECN-Capable Transport </td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">01</td> | ||||
| <td>ECT(1)</td> | ||||
| <td>ECN-Capable Transport (1)</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">10</td> | ||||
| <td>ECT(0)</td> | ||||
| <td>ECN-Capable Transport (0)</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">11</td> | ||||
| <td>NCCE</td> | ||||
| <td>Non-Critical Congestion Experienced</td> | ||||
| </tr> | ||||
| <artwork><![CDATA[ | </tbody> | |||
| Binary Name Meaning | </table> | |||
| ------ ------- ----------------------------------- | ||||
| 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 | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | ||||
| <section title="ECN Support" anchor="sect-3"><t> | </section> | |||
| <section anchor="sect-3" numbered="true" toc="default"> | ||||
| <name>ECN Support</name> | ||||
| <t> | ||||
| This section specifies interworking between TRILL and the original | This section specifies interworking between TRILL and the original | |||
| standardized form of ECN in IP <xref target="RFC3168"/>.</t> | standardized form of ECN in IP <xref target="RFC3168" format="default"/>.</t> | |||
| <t> | ||||
| <t> | ||||
| 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 as | |||
| a native frame is encapsulated with a TRILL Header to produce a TRILL | 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 egress | Data packets are queued, usually at the output port (including the output por t of the TRILL ingress). The egress | |||
| behavior occurs where a TRILL Data packet is decapsulated and output | behavior occurs where a TRILL Data packet is decapsulated and output | |||
| as a native frame through an RBridge port.</t> | as a native frame through an RBridge port.</t> | |||
| <t> | ||||
| <t> | An RBridge that supports ECN <bcp14>MUST</bcp14> behave as described in the r | |||
| An RBridge that supports ECN MUST behave as described in the relevant | elevant | |||
| subsections below, which correspond to the recommended provisions in | subsections below, which correspond to the recommended provisions in | |||
| <xref target="sect-3"/> and Sections 5.1-5.4 of <xref target="I-D.ietf-tsvwg- | <xref target="sect-3" format="default"/> of this document and Sections <xref | |||
| ecn-encap-guidelines"/>. Nonetheless, the | target="RFC9599" sectionFormat="bare" | |||
| section="4.2"/> through <xref target="RFC9599" | ||||
| sectionFormat="bare" section="4.4"/> of <xref | ||||
| target="RFC9599"/>. Nonetheless, the | ||||
| scheme is designed to safely propagate some form of congestion | scheme is designed to safely propagate some form of congestion | |||
| notification even if some RBridges in the path followed by a TRILL | notification even if some RBridges in the path followed by a TRILL | |||
| Data packet support ECN and others do not.</t> | Data packet support ECN and others do not.</t> | |||
| <section anchor="sect-3.1" numbered="true" toc="default"> | ||||
| <section title="Ingress ECN Support" anchor="sect-3.1"><t> | <name>Ingress ECN Support</name> | |||
| <t> | ||||
| The behavior at an ingress RBridge is as follows:</t> | The behavior at an ingress RBridge is as follows:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>When encapsulating an IP frame, the ingress R | <li> | |||
| Bridge MUST:<list style="symbols"><?rfc subcompact="yes"?> | <t>When encapsulating an IP frame, the ingress RBridge <bcp14>MUST</ | |||
| <t>set the F flag in the main TRILL header <xref target="RFC7780"/>;</t> | bcp14>:</t> | |||
| <ul spacing="normal"> | ||||
| <t>create a Flags Word as part of the TRILL Header;</t> | <li>set the F flag in the main TRILL header <xref target="RFC7780" | |||
| format="default"/>;</li> | ||||
| <t>copy the two ECN bits from the IP header into the TRILL-ECN | <li>create a flags word as part of the TRILL header;</li> | |||
| field (Flags Word bits 12 and 13)</t> | <li>copy the two ECN bits from the IP header into the TRILL-ECN | |||
| field (flags word bits 12 and 13); and</li> | ||||
| <t>ensure the CCE flag is set to zero (Flags Word bit 26).</t> | <li>ensure the CCE flag is set to zero (flags word bit 26).</li> | |||
| </ul> | ||||
| <?rfc subcompact="no"?> | </li> | |||
| </list> | <li>When encapsulating a frame for a non-IP protocol (where that | |||
| </t> | protocol has a means of indicating that ECN is understood by the | |||
| ingress RBridge), the ingress RBridge <bcp14>MUST</bcp14> follow the g | ||||
| <t>When encapsulating a frame for a non-IP protocol, where that | uidelines in | |||
| protocol has a means of indicating ECN that is understood by the | <xref target="RFC9599" sectionFormat="of" section="4.3"/> to add a | |||
| ingress RBridge, it MUST follow the guidelines in Section 5.3 of | flags word to the TRILL header. For a non-IP protocol with an ECN | |||
| <xref target="I-D.ietf-tsvwg-ecn-encap-guidelines"/> to add a Flags Word t | field similar to IP, this would be achieved by copying into the | |||
| o the TRILL Header. For a | TRILL-ECN field from the encapsulated native frame.</li> | |||
| non-IP protocol with a similar ECN field to IP, this would be | </ul> | |||
| achieved by copying into the TRILL-ECN field from the encapsulated | </section> | |||
| native frame.</t> | <section anchor="sect-3.2" numbered="true" toc="default"> | |||
| <name>Transit ECN Support</name> | ||||
| </list> | <t> | |||
| </t> | ||||
| </section> | ||||
| <section title="Transit ECN Support" anchor="sect-3.2"><t> | ||||
| 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.</t> | TRILL Data packets are queued, usually at the output port.</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>An RBridge that supports ECN MUST implement s | <li>An RBridge that supports ECN <bcp14>MUST</bcp14> implement some fo | |||
| ome form of active | rm of AQM according to the guidelines of <xref target="RFC7567" format="default" | |||
| queue management (AQM) according to the guidelines of <xref target="RFC756 | />. | |||
| 7"/>. | ||||
| The RBridge detects congestion either by monitoring its own queue | The RBridge detects congestion either by monitoring its own queue | |||
| depth or by participating in a link-specific protocol.</t> | depth or by participating in a link-specific protocol.</li> | |||
| <li>If the TRILL header flags word is present, whenever the AQM | ||||
| <t>If the TRILL Header Flags Word is present, whenever the AQM | algorithm decides to indicate critical congestion on a TRILL Data packet, | |||
| algorithm decides to indicate congestion on a TRILL Data packet it | it | |||
| MUST set the CCE flag (Flags Word bit 26).</t> | <bcp14>MUST</bcp14> set the CCE flag (flags word bit 26). Note that Classi | |||
| c ECN marking <xref target="RFC3168"/> only uses critical congestion indications | ||||
| <t>If the TRILL header Flags Word is not present, to indicate | , but the two variants in <xref target="sect-4.1"/> use a combination of critica | |||
| congestion the RBridge will either drop the packet or it MAY do | l and non-critical congestion indications.</li> | |||
| all of the following instead:<list style="symbols"><t>set the F flag in th | <li> | |||
| e main TRILL header;</t> | <t>If the TRILL header flags word is not present, the RBridge will | |||
| either drop the packet or it <bcp14>MAY</bcp14> do all of the | ||||
| <t>add a Flags Word to the TRILL Header;</t> | following instead to indicate congestion:</t> | |||
| <ul spacing="normal"> | ||||
| <t>set the TRILL-ECN field to Not-ECT (00);</t> | <li>set the F flag in the main TRILL header;</li> | |||
| <li>add a flags word to the TRILL header;</li> | ||||
| <t>and set the CCE flag and the Ingress-to-Egress critical summary | <li>set the TRILL-ECN field to Not-ECT (00); and</li> | |||
| bit (CRIbE).</t> | <li>set the CCE flag and the critical Ingress-to-Egress summary bi | |||
| t (CRItE).</li> | ||||
| </list> | </ul> | |||
| </t> | </li> | |||
| </ul> | ||||
| </list> | <t> | |||
| </t> | ||||
| <t> | ||||
| 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 | |||
| ECN-capable. The egress/decapsulation behavior (described next) | capable. The egress/decapsulation behavior ensures that a CCE indication is | |||
| ensures that a CCE indication is converted to a drop if the transport | converted to a drop if the transport is not ECN capable.</t> | |||
| is not ECN-capable.</t> | </section> | |||
| <section anchor="sect-3.3" numbered="true" toc="default"> | ||||
| </section> | <name>Egress ECN Support</name> | |||
| <section anchor="sect-3.3.1" numbered="true" toc="default"> | ||||
| <section title="Egress ECN Support" anchor="sect-3.3"><section title="Non | <name>Non-ECN Egress RBridges</name> | |||
| -ECN Egress RBridges" anchor="sect-3.3.1"><t> | <t> | |||
| 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 when it | |||
| Ingress-to-Egress flag when it has no specific logic to understand | has no specific logic to understand | |||
| it. Drop is the intended behavior for such a packet, as required by | it. | |||
| Section 5.4 of <xref target="I-D.ietf-tsvwg-ecn-encap-guidelines"/>.</t> | Drop is the intended behavior for such a packet, as required by | |||
| <xref target="RFC9599" | ||||
| </section> | sectionFormat="of" section="4.4"/>.</t> | |||
| </section> | ||||
| <section title="ECN Egress RBridges" anchor="sect-3.3.2"><t> | <section anchor="sect-3.3.2" numbered="true" toc="default"> | |||
| <name>ECN Egress RBridges</name> | ||||
| <t> | ||||
| 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: | |||
| <list style="hanging" hangIndent="3"> | </t> | |||
| <t hangText="Decapsulating an inner IP packet:"> The RBridge sets the | <dl newline="false" spacing="normal" indent="3"> | |||
| ECN field of the outgoing native IP packet using Table 3. It MUST set | <dt>Decapsulating an inner IP packet:</dt> | |||
| <dd><t>The RBridge sets the | ||||
| ECN field of the outgoing native IP packet using <xref | ||||
| target="egress-ecn"/>. It <bcp14>MUST</bcp14> set | ||||
| the ECN field of the outgoing IP packet to the codepoint at the | the ECN field of the outgoing IP packet to the codepoint at the | |||
| intersection of the row for the arriving encapsulated IP packet and the | intersection of the row for the arriving encapsulated IP packet and the | |||
| column for 3-bit ECN codepoint in the arriving outer TRILL Data packet | column for 3-bit ECN codepoint in the arriving outer TRILL Data packet | |||
| TRILL Header. If no TRILL Header Extension Flags Word is present, the | TRILL header. If no TRILL header extension flags word is present, the | |||
| 3-bit ECN codepoint is assumed to be all zero bits.</t> | 3-bit ECN codepoint is assumed to be all zero bits.</t> | |||
| <t>The name of the TRILL 3-bit ECN codepoint used in <xref target="e | ||||
| <t>The name of the TRILL 3-bit ECN codepoint is defined using the | gress-ecn"/> is defined using the | |||
| combination of the TRILL-ECN and CCE fields in Table 2. Specifically, | combination of the TRILL-ECN and CCE fields in <xref target="mapping"/>. | |||
| Specifically, | ||||
| the TRILL 3-bit ECN codepoint is called CE if either NCCE or CCE is set | 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 | in the TRILL header extension flags word. Otherwise, it has the same name | |||
| as the 2-bit TRILL-ECN codepoint.</t> | as the 2-bit TRILL-ECN codepoint.</t> | |||
| <t> | ||||
| <t>In the case where the TRILL 3-bit ECN codepoint indicates congestion | In the case where the TRILL 3-bit ECN codepoint indicates CE but | |||
| experienced (CE) but the encapsulated native IP frame indicates a not | the encapsulated native IP frame indicates a Not-ECT, it can be | |||
| ECN-capable transport (Not-ECT), it can be seen that the RBridge MUST | seen that the RBridge <bcp14>MUST</bcp14> drop the packet. Such | |||
| drop the packet. Such packet dropping is necessary because a transport | packet dropping is necessary because a transport above the IP | |||
| above the IP layer that is not ECN-capable will have no ECN logic, so it | layer that is not ECN capable will have no ECN logic, so it will | |||
| will only understand dropped packets as an indication of congestion.</t> | only understand dropped packets as an indication of | |||
| congestion.</t></dd> | ||||
| </list> | </dl> | |||
| <dl newline="false" spacing="normal" indent="3"> | ||||
| <list style="hanging" hangIndent="3"> | <dt>Decapsulating a non-IP protocol frame:</dt> | |||
| <t hangText="Decapsulating a non-IP protocol frame:"> If the frame has | <dd>If the frame has | |||
| a means of indicating ECN that is understood by the RBridge, it MUST | a means of indicating ECN that is understood by the RBridge, it <bcp14>MU | |||
| follow the guidelines in Section 5.4 of <xref | ST</bcp14> | |||
| target="I-D.ietf-tsvwg-ecn-encap-guidelines"/> when setting the ECN | follow the guidelines in <xref | |||
| target="RFC9599" sectionFormat="of" section="4.4"/> when | ||||
| setting the ECN | ||||
| information in the decapsulated native frame. For a non-IP protocol | information in the decapsulated native frame. For a non-IP protocol | |||
| with a similar ECN field to IP, this would be achieved by combining | with an ECN field similar to IP, this would be achieved by combining | |||
| the information in the TRILL Header Flags Word with the encapsulated | the information in the TRILL header flags word with the encapsulated | |||
| non-IP native frame, as specified in Table 3.</t> | non-IP native frame, as specified in <xref target="egress-ecn"/>.</dd> | |||
| </dl> | ||||
| </list> | <table anchor="mapping" align="center"> | |||
| </t> | <name>Mapping of TRILL-ECN and CCE Fields to the TRILL 3-Bit ECN Cod | |||
| epoint Name</name> | ||||
| <texttable anchor="tab-2" title="Mapping of TRILL-ECN and CCE Fields to t | <thead> | |||
| he TRILL 3-bit ECN Codepoint Name" style="full"> | <tr> | |||
| <ttcol> TRILL-ECN </ttcol> | <th rowspan ="1" colspan="2">TRILL-ECN</th> | |||
| <ttcol> CCE </ttcol> | <th rowspan="2">CCE</th> | |||
| <ttcol> Arriving TRILL 3-bit ECN codepoint name</ttcol> | <th rowspan="2">Arriving TRILL 3-Bit ECN Codepoint Name</th> | |||
| <c>Not-ECT 00</c> | </tr> | |||
| <c>0</c> | <tr> | |||
| <c>Not-ECT</c> | <th>Name</th> | |||
| <c>ECT(1) 01</c> | <th>Bits</th> | |||
| <c>0</c> | </tr> | |||
| <c>ECT(1)</c> | </thead> | |||
| <c>ECT(0) 10</c> | <tbody> | |||
| <c>0</c> | <tr> | |||
| <c>ECT(0)</c> | <td>Not-ECT</td> | |||
| <c>NCCE 11</c> | <td align="center">00</td> | |||
| <c>0</c> | <td align="center">0</td> | |||
| <c>CE</c> | <td>Not-ECT</td> | |||
| <c>Not-ECT 00</c> | </tr> | |||
| <c>1</c> | <tr> | |||
| <c>CE</c> | <td>ECT(1)</td> | |||
| <c>ECT(1) 01</c> | <td align="center">01</td> | |||
| <c>1</c> | <td align="center">0</td> | |||
| <c>CE</c> | <td>ECT(1)</td> | |||
| <c>ECT(0) 10</c> | </tr> | |||
| <c>1</c> | <tr> | |||
| <c>CE</c> | <td>ECT(0)</td> | |||
| <c>NCCE 11</c> | <td align="center">10</td> | |||
| <c>1</c> | <td align="center">0</td> | |||
| <c>CE</c> | <td>ECT(0)</td> | |||
| </texttable> | </tr> | |||
| <tr> | ||||
| <!-- [rfced] Please review the figure below. It is a table in the original draft | <td>NCCE</td> | |||
| --> | <td align="center">11</td> | |||
| <td align="center">0</td> | ||||
| <td>CE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>Not-ECT</td> | ||||
| <td align="center">00</td> | ||||
| <td align="center">1</td> | ||||
| <td>CE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>ECT(1)</td> | ||||
| <td align="center">01</td> | ||||
| <td align="center">1</td> | ||||
| <td>CE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>ECT(0)</td> | ||||
| <td align="center">10</td> | ||||
| <td align="center">1</td> | ||||
| <td>CE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>NCCE</td> | ||||
| <td align="center"> 11</td> | ||||
| <td align="center">1</td> | ||||
| <td>CE</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <figure title="Egress ECN Behavior" anchor="fig-4"> | <table anchor="egress-ecn"> | |||
| <artwork><![CDATA[ | <name>Egress ECN Behavior</name> | |||
| +---------+----------------------------------------------+ | <thead> | |||
| | Inner | Arriving TRILL 3-bit ECN Codepoint Name | | <tr> | |||
| | Native +---------+------------+------------+----------+ | <th rowspan="2" align="center">Inner Native Header</th> | |||
| | Header | Not-ECT | ECT(0) | ECT(1) | CE | | <th colspan="4" align="center">Arriving TRILL 3-Bit ECN Codepoint Name</th | |||
| +---------+---------+------------+------------+----------+ | > | |||
| | Not-ECT | Not-ECT | Not-ECT(*) | Not-ECT(*) | <drop> | | </tr> | |||
| | ECT(0) | ECT(0) | ECT(0) | ECT(1) | CE | | <tr> | |||
| | ECT(1) | ECT(1) | ECT(1)(*) | ECT(1) | CE | | <th align="center">Not-ECT</th> | |||
| | CE | CE | CE | CE(*) | CE | | <th align="center">ECT(0)</th> | |||
| +---------+---------+------------+------------+----------+ | <th align="center">ECT(1)</th> | |||
| ]]></artwork> | <th align="center">CE</th> | |||
| </figure> | </tr> | |||
| <t> | </thead> | |||
| An asterisk in the above table indicates a combination that is | <tbody> | |||
| currently unused in all variants of ECN marking (see <xref target="sect-4"/>) | <tr> | |||
| and | <td align="center">Not-ECT</td> | |||
| therefore SHOULD be logged.</t> | <td align="center">Not-ECT</td> | |||
| <td align="center">Not-ECT(*)</td> | ||||
| <td align="center">Not-ECT(*)</td> | ||||
| <td align="center"><drop></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">ECT(0)</td> | ||||
| <td align="center">ECT(0)</td> | ||||
| <td align="center">ECT(0)</td> | ||||
| <td align="center">ECT(1)</td> | ||||
| <td align="center">CE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">ECT(1)</td> | ||||
| <td align="center">ECT(1)</td> | ||||
| <td align="center">ECT(1)(*)</td> | ||||
| <td align="center">ECT(1)</td> | ||||
| <td align="center">CE</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">CE</td> | ||||
| <td align="center">CE</td> | ||||
| <td align="center">CE</td> | ||||
| <td align="center">CE(*)</td> | ||||
| <td align="center">CE</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t> | <t> | |||
| With one exception, the mappings in Table 3 are consistent with those for | An asterisk in <xref target="egress-ecn"/> indicates a combination that is | |||
| IP-in-IP tunnels <xref target="RFC6040"/>, which ensures backward | currently unused in all variants of ECN marking (see <xref target="sect-4" fo | |||
| compatibility with all current and past variants of ECN marking (see <xref | rmat="default"/>) and | |||
| target="sect-4"/>). It also ensures forward compatibility with any future | therefore <bcp14>SHOULD</bcp14> be logged.</t> | |||
| form of ECN marking that complies with the guidelines in <xref | <t> | |||
| target="I-D.ietf-tsvwg-ecn-encap-guidelines"/>, including cases where | With one exception, the mappings in <xref target="egress-ecn"/> are consisten | |||
| t with those for | ||||
| IP-in-IP tunnels <xref target="RFC6040" format="default"/>, which ensures bac | ||||
| kward | ||||
| compatibility with all current and past variants of ECN marking (see <xref ta | ||||
| rget="sect-4" format="default"/>). It also ensures forward compatibility with an | ||||
| y future | ||||
| form of ECN marking that complies with the guidelines in <xref target="RFC959 | ||||
| 9" format="default"/>, including cases where | ||||
| ECT(1) represents a second level of marking severity below CE.</t> | ECT(1) represents a second level of marking severity below CE.</t> | |||
| <t> | ||||
| <t> | The one exception is that the drop condition in <xref target="egress-ecn"/> n | |||
| The one exception is that the drop condition in Table 3 need not be | eed 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.</t> | of events.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section anchor="sect-4" numbered="true" toc="default"> | |||
| <name>TRILL Support for ECN Variants</name> | ||||
| </section> | <t> | |||
| <section title="TRILL Support for ECN Variants" anchor="sect-4"><t> | ||||
| 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 | |||
| <xref target="RFC3168"/>. See also <xref target="RFC8311"/>.</t> | <xref target="RFC3168" format="default"/>. See also <xref target="RFC8311" fo | |||
| rmat="default"/>.</t> | ||||
| <t> | <t> | |||
| The ECN wire protocol for TRILL (<xref target="sect-2"/>) and the ingress (<x | The ECN wire protocol for TRILL (<xref target="sect-2" format="default"/>) | |||
| ref target="sect-3.1"/>) and egress (<xref target="sect-3.3"/>) ECN behaviors ha | and the ingress (<xref target="sect-3.1" format="default"/>) and egress | |||
| ve been designed to | (<xref target="sect-3.3" format="default"/>) 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 below. New | ||||
| variants of ECN will have to comply with the guidelines for defining | variants of ECN will have to comply with the guidelines for defining | |||
| alternative ECN semantics <xref target="RFC4774"/>. It is expected that the T RILL | alternative ECN semantics <xref target="RFC4774" format="default"/>. It is ex pected that the TRILL | |||
| ECN wire protocol is generic enough to support such potential future | ECN wire protocol is generic enough to support such potential future | |||
| variants.</t> | variants.</t> | |||
| <section anchor="sect-4.1" numbered="true" toc="default"> | ||||
| <section title="Pre-Congestion Notification (PCN)" anchor="sect-4.1"><t> | <name>Pre-Congestion Notification (PCN)</name> | |||
| The PCN wire protocol <xref target="RFC6660"/> is recognized by the use of a | <t> | |||
| PCN-compatible Diffserv codepoint in the IP header and a non-zero IP-ECN | The PCN wire protocol <xref target="RFC6660" format="default"/> is | |||
| field. For TRILL or any lower layer protocol, equivalent traffic | recognized by the use of a | |||
| classification codepoints would have to be defined, but that is outside the | PCN-compatible Diffserv codepoint in the IP header and a nonzero IP-ECN | |||
| scope of the current document.</t> | field. For TRILL or any lower-layer protocol, equivalent | |||
| traffic-classification codepoints would have to be defined, but that is | ||||
| <t> | outside the | |||
| scope of this document.</t> | ||||
| <t> | ||||
| 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:</t> | congestion with two levels of severity. It uses:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>11 (CE) as the most severe, termed the Excess | <li>11 (CE) as the most severe, termed the Excess-Traffic-Marked (ETM) | |||
| -traffic-marked (ETM) | codepoint</li> | |||
| codepoint</t> | <li>01 ECT(1) as a lesser severity level, termed the Threshold-Marked | |||
| (ThM) codepoint. This difference between ECT(1) and ECT(0) only | ||||
| <t>01 ECT(1) as a lesser severity level, termed the Threshold-Marked | ||||
| (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 <xref target="sect-4"/>.)</t> | in this document before <xref target="sect-4" format="default"/>.</li> | |||
| </ul> | ||||
| </list> | <t> | |||
| </t> | ||||
| <t> | ||||
| 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:</t> | specification. In brief:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>the TRILL Critical Congestion Experienced (CC | <li>the TRILL CCE flag would be used | |||
| E) flag would be used | for the Excess-Traffic-Marked (ETM) codepoint;</li> | |||
| for the Excess-Traffic-Marked (ETM) codepoint;</t> | <li>ECT(1) in the TRILL-ECN field would be used for the Threshold-Mark | |||
| ed | ||||
| <t>ECT(1) in the TRILL-ECN field would be used for the Threshold-Marked | codepoint.</li> | |||
| codepoint.</t> | </ul> | |||
| <t> | ||||
| </list> | Then, the ingress and egress behaviors defined in <xref target="sect-3" forma | |||
| </t> | t="default"/> would not | |||
| <t> | ||||
| Then the ingress and egress behaviors defined in <xref target="sect-3"/> woul | ||||
| d not | ||||
| need to be altered to ensure support for PCN as well as ECN.</t> | need to be altered to ensure support for PCN as well as ECN.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-4.2" numbered="true" toc="default"> | |||
| <name>Low Latency, Low Loss, and Scalable Throughput (L4S)</name> | ||||
| <section title="Low Latency, Low Loss, Scalable Throughput (L4S)" anchor= | <t> | |||
| "sect-4.2"><t> | ||||
| 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 <xref target="I-D.ietf-tsvwg-ecn-l4 | a transit TRILL RBridge would support L4S <xref target="RFC9331" format="defa | |||
| s-id"/> is given in | ult"/> is given in | |||
| Appendix A.</t> | <xref target="sect-a"/>.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="sect-5" numbered="true" toc="default"> | ||||
| </section> | <name>IANA Considerations</name> | |||
| <t> | ||||
| <section title="IANA Considerations" anchor="sect-5"><t> | IANA has updated the "TRILL Extended Header Flags" registry | |||
| IANA is requested to update the TRILL Extended Header Flags registry | by replacing the lines for bits 9-13 and 21-26 with the | |||
| by replacing the lines for bits 9-13 and for bits 21-26 with the | ||||
| following:</t> | following:</t> | |||
| <figure><artwork><![CDATA[ | <table anchor="iana"> | |||
| Bits Purpose Reference | <name>Updated "TRILL Extended Header Flags" Registry</name> | |||
| ----- ------- --------- | <thead> | |||
| 9-11 available non-critical hop-by-hop flags | <tr> | |||
| 12-13 TRILL-ECN (Explicit Congestion Notification) [this doc] | <th>Bits</th> | |||
| <th>Purpose</th> | ||||
| 21-25 available critical ingress-to-egress flags | <th>Reference</th> | |||
| 26 Critical Congestion Experienced (CCE) [this doc] | </tr> | |||
| ]]></artwork> | </thead> | |||
| </figure> | <tbody> | |||
| <tr> | ||||
| </section> | <td>9-11</td> | |||
| <td>available non-critical hop-by-hop flags</td> | ||||
| <td><xref target="RFC7179"/></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>12-13</td> | ||||
| <td>TRILL-ECN (Explicit Congestion Notification)</td> | ||||
| <td>RFC 9600</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>21-25</td> | ||||
| <td>available critical ingress-to-egress flags</td> | ||||
| <td><xref target="RFC7179"/></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>26</td> | ||||
| <td>Critical Congestion Experienced (CCE)</td> | ||||
| <td>RFC 9600</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section title="Security Considerations" anchor="sect-6"><t> | <section anchor="sect-6" numbered="true" toc="default"> | |||
| <name>Security Considerations</name> | ||||
| <t> | ||||
| 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.</t> | considerations.</t> | |||
| <t> | ||||
| For general security considerations regarding adding ECN to lower layer protocol | ||||
| s, see <xref target="RFC9599"/> and <xref target="RFC6040"/>.</t> | ||||
| <t> | ||||
| For general TRILL protocol security considerations, see <xref target="RFC6325"/> | ||||
| .</t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <t> | <references> | |||
| For ECN tunneling security considerations, see <xref target="RFC6040"/>.</t> | <name>References</name> | |||
| <references> | ||||
| <t> | <name>Normative References</name> | |||
| For general TRILL protocol security considerations, see <xref target="RFC6325 | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| "/>.</t> | FC.2119.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| </section> | FC.3168.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <section title="Acknowledgements" anchor="sect-7"><t> | FC.4774.xml"/> | |||
| The helpful comments of Loa Andersson and Adam Roach are hereby | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| acknowledged.</t> | FC.6325.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <t> | FC.7179.xml"/> | |||
| This document was prepared with basic NROFF. All macros used were | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| defined in the source file.</t> | FC.7567.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| </section> | FC.7780.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| </middle> | FC.8174.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8311.xml"/> | ||||
| <back> | <reference anchor="RFC9599" target="https://www.rfc-editor.org/info/rfc9599"> | |||
| <references title="Normative References"> | <front> | |||
| &RFC2119; | <title>Guidelines for Adding Congestion Notification to Protocols that | |||
| &RFC3168; | Encapsulate IP</title> | |||
| &RFC4774; | <author initials='B.' surname='Briscoe' fullname='Bob Briscoe'> | |||
| &RFC6325; | <organization>Independent</organization> | |||
| &RFC7179; | </author> | |||
| &RFC7567; | <author initials='J.' surname='Kaippallimalil' fullname='John Kaippallimalil'> | |||
| &RFC7780; | <organization>Futurewei</organization> | |||
| &RFC8174; | </author> | |||
| &RFC8311; | <date month='August' year='2024'/> | |||
| &I-D.ietf-tsvwg-ecn-encap-guidelines; | </front> | |||
| </references> | <seriesInfo name="RFC" value="9599"/> | |||
| <references title="Informative References"> | <seriesInfo name="DOI" value="10.17487/RFC9599"/> | |||
| &I-D.ietf-tsvwg-ecn-l4s-id; | </reference> | |||
| <reference anchor="IANAthFlags" target="http://www.iana.org/assignments/t | ||||
| rill-parameters/trill-parameters.xhtml#extended-header-flags"><front> | ||||
| <title>TRILL Extended Header word flags</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | </references> | |||
| </front> | <references> | |||
| <name>Informative References</name> | ||||
| </reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9331. | |||
| &RFC6040; | xml"/> | |||
| &RFC6660; | ||||
| </references> | ||||
| <section title="TRILL Transit RBridge Behavior to Support L4S" anchor="se | ||||
| ct-a"><t> | ||||
| The specification of the Low Latency, Low Loss, Scalable throughput | ||||
| (L4S) wire protocol for IP is given in <xref target="I-D.ietf-tsvwg-ecn-l4s-i | ||||
| d"/>. L4S is one example | ||||
| of the ways TRILL ECN handling may evolve <xref target="RFC8311"/>. It is sim | ||||
| ilar to | ||||
| the original ECN wire protocol for IP <xref target="RFC3168"/>, except:</t> | ||||
| <t><list style="symbols"><t>An AQM that supports L4S classifies packets w | <reference anchor="IANAthFlags" target="http://www.iana.org/assignments/ | |||
| ith ECT(1) or CE in | trill-parameters/"> | |||
| the IP header into an L4S queue and a "Classic" queue otherwise.</t> | <front> | |||
| <title>TRILL Extended Header Flags</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <t>The meaning of CE markings applied by an L4S queue is not the same | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.6040.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6660.xml"/> | ||||
| </references> | ||||
| </references> | ||||
| <section anchor="sect-a" numbered="true" toc="default"> | ||||
| <name>TRILL Transit RBridge Behavior to Support L4S</name> | ||||
| <t> | ||||
| The specification of the Low Latency, Low Loss, and Scalable throughput (L4S) | ||||
| wire protocol for IP is given in <xref target="RFC9331" format="default"/>. L4S | ||||
| is one example | ||||
| of the ways TRILL ECN handling may evolve <xref target="RFC8311" format="defa | ||||
| ult"/>. It is similar to | ||||
| the original ECN wire protocol for IP <xref target="RFC3168" format="default" | ||||
| />, except:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>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.</li> | ||||
| <li>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 <xref target="RFC3168"/>). Instead, the likeli hood | original requirement for ECN <xref target="RFC3168" format="default"/>). In stead, 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 there | |||
| is a drop probability of 0.0009 (0.09%) the L4S marking | is a drop probability of 0.0009 (0.09%), the L4S marking | |||
| probability will be 0.03 (3%)).</t> | probability will be 0.03 (3%).</li> | |||
| </ul> | ||||
| </list> | <t> | |||
| </t> | ||||
| <t> | ||||
| This seems to present a problem for the way that a transit TRILL RBridge | This seems to present a problem for the way that a transit TRILL RBridge | |||
| defers the choice between marking and dropping to the egress. Nonetheless, | defers the choice between marking and dropping to the egress. Nonetheless, | |||
| the following pseudocode outlines how a transit TRILL RBridge can implement | the following pseudocode outlines how a transit TRILL RBridge can implement | |||
| L4S marking in such a way that the egress behavior already described in | L4S marking in such a way that the egress behavior already described in | |||
| <xref target="sect-3.3"/> for Classic ECN <xref target="RFC3168"/> will | <xref target="sect-3.3" format="default"/> for Classic ECN <xref target="RFC3 168" format="default"/> will | |||
| produce the desired outcome.</t> | produce the desired outcome.</t> | |||
| <sourcecode type="pseudocode"> | ||||
| <figure><artwork><![CDATA[ | ||||
| /* 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. | |||
| * bit13 is the least significant bit of the TRILL-ECN field | * bit13 is the least significant bit of the TRILL-ECN field | |||
| */ | */ | |||
| % On TRILL transit | % On TRILL transit | |||
| if (bit13 == 0 ) { | if (bit13 == 0 ) { | |||
| % Classic Queue | % Classic Queue | |||
| if (p > max(random(), random()) ) | if (p > max(random(), random()) ) | |||
| mark(CCE) % likelihood: p^2 | mark(CCE) % likelihood: p^2 | |||
| } 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 | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t> | |||
| <t> | With the above transit behavior, an egress that supports ECN (<xref target="s | |||
| With the above transit behavior, an egress that supports ECN (<xref | ect-3.3" format="default"/>) will drop packets or propagate their ECN markings | |||
| target="sect-3.3"/>) will drop packets or propagate their ECN markings | depending on whether the arriving inner header is from an ECN-capable or not | |||
| depending on whether the arriving inner header is from a non-ECN-capable or | ECN-capable transport.</t> | |||
| ECN-capable transport.</t> | <t> | |||
| <t> | ||||
| 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:</t> | did support ECN, for the following reasons:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>Egress with ECN support:<list style="symbols" | <li> | |||
| ><t>L4S: propagates both the Critical and Non-Critical CE marks | <t>Egress with ECN support:</t> | |||
| (CCE & NCCE) as a CE mark.<vspace blankLines="1"/> | <ul spacing="normal"> | |||
| Likelihood: p^2 + p - p^2 = p | <li> | |||
| </t> | <t>L4S: Propagates both the Critical and Non-Critical CE marks | |||
| (CCE and NCCE) as a CE mark.</t> | ||||
| <t>Classic: Propagates CCE marks as CE or drop, depending on | <t> | |||
| inner.<vspace blankLines="1"/> | Likelihood: p<sup>2</sup> + p - p<sup>2</sup> = p | |||
| Likelihood: p^2 | </t> | |||
| </t> | </li> | |||
| <li> | ||||
| </list> | <t>Classic: Propagates CCE marks as CE or drop, depending on | |||
| </t> | the inner header.</t> | |||
| <t> | ||||
| <t>Egress without ECN support:<list style="symbols"><t>L4S: does not prop | Likelihood: p<sup>2</sup> | |||
| agate NCCE as a CE mark, but drops CCE marks.<vspace blankLines="1"/> | </t> | |||
| Likelihood: p^2 | </li> | |||
| </t> | </ul> | |||
| </li> | ||||
| <t>Classic: drops CCE marks.<vspace blankLines="1"/> | <li> | |||
| Likelihood: p^2 | <t>Egress without ECN support:</t> | |||
| </t> | <ul spacing="normal"> | |||
| <li> | ||||
| </list> | <t>L4S: Does not propagate NCCE as a CE mark, but drops CCE marks. | |||
| </t> | </t> | |||
| <t> | ||||
| </list> | Likelihood: p<sup>2</sup> | |||
| </t> | </t> | |||
| </li> | ||||
| </section> | <li> | |||
| <t>Classic: Drops CCE marks.</t> | ||||
| </back> | <t> | |||
| Likelihood: p<sup>2</sup> | ||||
| </rfc> | </t> | |||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="sect-7" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t> | ||||
| The helpful comments of <contact fullname="Loa Andersson"/> and <contact full | ||||
| name="Adam Roach"/> are hereby | ||||
| acknowledged.</t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | ||||
| End of changes. 70 change blocks. | ||||
| 551 lines changed or deleted | 637 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||