ietf-corpus

rfc-3168

The Addition of Explicit Congestion Notification (ECN) to IP

K. Ramakrishnan, S. Floyd, D. Black
date2001-09 streamIETF areawit wgtsvwg statusPROPOSED STANDARD pages63 canonicalhttps://www.rfc-editor.org/rfc/rfc3168 doi10.17487/RFC3168 errataview
This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header. [STANDARDS-TRACK]

obsoletes

updated by

updates

Extracted elements (31)

design-rationale §6.1.5

Retransmitted data packets are not marked ECT because (1) if an unnecessary retransmission is later dropped, the CE indication would never reach the end nodes, and (2) marking retransmits would enable spoofed out-of-window CE packets to force a denial-of-service congestion-window reduction.

ecn, tcp, security

design-rationale §5

The CE codepoint response MUST equal the packet-drop response to ensure fairness during incremental deployment: if CE triggered a weaker reaction than a drop, flows routed through ECN-capable routers would be advantaged over those routed through drop-only routers.

ecn, congestion

design-rationale §6.1.1.2

The ECN-setup SYN sets both ECE and CWR, while the SYN-ACK sets only ECE, to handle a class of faulty TCP implementations that blindly echo the Reserved field of the incoming SYN back in the SYN-ACK. The asymmetry lets the initiator distinguish a genuine ECN-capable response from a reflection.

ecn, tcp

design-rationale §21

Two bits are used in the IP header rather than one so that the sender can distinguish ECT from CE and routers can unambiguously signal congestion (CE) without ambiguity with the not-ECT codepoint, while still fitting within the two bits left unused by the Differentiated Services field.

ecn, ip, diffserv

design-rationale §11.2

Two ECT codepoints (ECT(0) and ECT(1)) are defined rather than one to support an ECN nonce: routers necessarily erase the nonce when setting CE, making repeated erasure of CE detectable by endpoints. This also helps detect misbehaving receivers that lie about having received CE-marked packets.

ecn, security

interoperability-note §5.1

CE codepoint should not be set based on instantaneous queue size; it SHOULD be based on average queue size (e.g., RED). ATM/Frame Relay congestion bits are too noisy a signal and SHOULD NOT be directly mapped to CE without an average-queue-based filter.

ecn, congestion, qos

interoperability-note §6.1.1.1

Some firewalls, load balancers, and intrusion detection systems drop ECN-setup SYN packets or respond with RST. A host MAY fall back to retransmitting a non-ECN-setup SYN (CWR and ECE cleared) if it receives a RST in response to an ECN-setup SYN, or if no reply arrives within the normal SYN retransmission timeout.

ecn, tcp

interoperability-note §9.1

The limited-functionality IP tunnel option (not-ECT in outer header) provides backward compatibility with simple tunnels that discard the outer header; without one of the two ECN options, congestion marked by routers inside the tunnel is silently lost at egress.

ecn, ip, ipsec

normative-requirement §6.1.1 MUST NOT

A host MUST NOT set ECT on data packets unless both sides have exchanged ECN-setup SYN/SYN-ACK packets. A host MUST NOT set ECT on SYN or SYN-ACK packets.

ecn, tcp

normative-requirement §5 MUST NOT

A router MUST NOT set CE instead of dropping a packet when the drop is caused by reasons other than congestion (e.g., a diffserv edge node configured to unconditionally drop certain traffic classes).

ecn, diffserv, congestion

normative-requirement §9.1.1 MUST

All IP tunnels MUST implement the limited-functionality ECN option (setting not-ECT in the outer header regardless of inner header) and SHOULD support the full-functionality option (copying ECN codepoints and propagating CE from outer to inner header at egress).

ecn, ip, vpn

normative-requirement §5.2 MUST NOT

An ECT codepoint MUST NOT be set in a packet unless the loss of that packet would be detected by the end nodes and interpreted as an indication of congestion. Specifically, 'pure' ACK packets MUST NOT indicate ECN-Capability.

ecn, tcp

normative-requirement §6.1.5 MUST NOT

ECN-capable TCP implementations MUST NOT set either ECT codepoint on retransmitted data packets; the TCP receiver SHOULD ignore the ECN field on arriving data packets that are outside the receiver's current window.

ecn, tcp, security

normative-requirement §9.2 MUST

IPsec tunnels in tunnel mode MUST support the limited-functionality ECN option and SHOULD support the full-functionality option; ECN usage in the outer header is controlled by a configurable SAD field.

ecn, ipsec, security

normative-requirement §6.1.4 MUST

Pure ACK packets MUST be sent with the not-ECT codepoint; window probe packets MUST NOT carry an ECT codepoint or the CWR bit, because losses of these packets are not detected by the receiver.

ecn, tcp

normative-requirement §5.3 MUST

Reassembly of a fragmented IP packet MUST NOT lose congestion indications: if any fragment carries the CE codepoint, the reassembled packet MUST have CE set (unless another fragment carries Not-ECT, in which case the packet MUST be dropped instead of reassembled).

ecn, ip

normative-requirement §6.1.2 MUST

The TCP sender MUST reset the retransmit timer on receiving an ECN-Echo ACK when the congestion window is one MSS, in order to further reduce the sending rate below one packet per RTT.

ecn, tcp, congestion

normative-requirement §5 MUST

Upon receipt of a CE packet, an ECN-Capable transport MUST invoke a congestion control response essentially equivalent to its response to a single dropped packet (e.g., TCP halves its congestion window).

ecn, congestion, tcp

protocol-element §6.1.1

An ECN-setup SYN packet has both ECE and CWR flags set and indicates the sender is willing to participate in ECN as both sender and receiver. An ECN-setup SYN-ACK has only ECE set (not CWR).

ecn, tcp

protocol-element §5

ECT(0) and ECT(1) are the two ECN-Capable Transport codepoints set by the data sender in IP packet headers to signal that both endpoints support ECN. Routers treat ECT(0) and ECT(1) as equivalent; senders that need only one codepoint SHOULD use ECT(0).

ecn, ip

protocol-element §6.1.2

The CWR (Congestion Window Reduced) flag is set by the TCP sender in the first new data packet sent after reducing the congestion window, to signal to the receiver that the congestion window has been reduced and ECE echoing can stop.

ecn, tcp

protocol-element §6.1.3

The ECN-Echo (ECE) flag in a TCP ACK informs the sender that a CE packet was received. The receiver continues setting ECE on all subsequent ACKs until it receives a packet with the CWR flag set from the sender.

ecn, tcp

registry §23.3

A new optional IPsec Security Association Attribute is defined for negotiating ECN tunnel mode: 'ECN Tunnel' with values allowed/forbidden, stored in the SAD and negotiable via IKE, indicating whether ECN congestion notifications may propagate through the outer IP header of an IPsec tunnel.

ecn, ipsec, registry

registry §23.1

IANA is requested to designate bits 6 and 7 of the IPv4 TOS octet and the IPv6 Traffic Class octet as the ECN field, superseding their 'Currently Unused' designation in RFC 2474, with codepoints Not-ECT (00), ECT(1) (01), ECT(0) (10), and CE (11).

ecn, ip, registry

registry §23.2

IANA is requested to designate TCP header bits 8 (CWR) and 9 (ECE) from the previously 6-bit Reserved field as the Congestion Window Reduced and ECN-Echo flags respectively, reducing the Reserved field to 4 bits.

ecn, tcp, registry

security-consideration §16

A rogue or broken router that erases CE codepoints prevents congestion signals from reaching receivers, disabling congestion control for the affected flow and potentially increasing congestion and packet loss for all flows at the bottleneck.

ecn, security, congestion

security-consideration §6.1.5

An attacker that can spoof IP source addresses can inject out-of-window data packets with CE set, forcing the TCP receiver to send ECN-Echo ACKs and causing the sender to unnecessarily halve its congestion window. This denial-of-service attack is mitigated by the rule that retransmitted packets MUST NOT carry ECT and receivers SHOULD ignore CE on out-of-window packets.

ecn, security, tcp

security-consideration §9.2

The ECN field is not covered by IPsec cryptographic integrity checks; modifying the ECN field in an IPsec-tunneled packet does not cause any integrity verification failure and may constitute a covert channel. Running the tunnel in limited-functionality mode eliminates this channel.

ecn, ipsec, security

state-machine §6.1.3

TCP ECN receiver state: on receiving any CE data packet, enter 'echoing' state and set ECE on every ACK; remain in 'echoing' state until a CWR packet is received from the sender; then return to 'idle' state (ECE cleared) for subsequent non-CE packets.

ecn, tcp

wire-format §5

The ECN field occupies bits 6 and 7 of the IPv4 TOS octet (identical to the IPv6 Traffic Class octet), yielding four 2-bit codepoints: 00 (Not-ECT), 01 (ECT(1)), 10 (ECT(0)), and 11 (CE — Congestion Experienced).

ecn, ip, diffserv

wire-format §6.1

Two new flags are added to the TCP header: CWR (Congestion Window Reduced) at bit 8 and ECN-Echo (ECE) at bit 9 of the previously 6-bit Reserved field, reducing the Reserved field to 4 bits (bits 4–7).

ecn, tcp