[Bug 243590] TCP ECN not adhering extremely strictly to RFC3168 can cause massive TCP perf issues
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sat Jan 25 16:19:03 UTC 2020
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=243590
Bug ID: 243590
Summary: TCP ECN not adhering extremely strictly to RFC3168 can
cause massive TCP perf issues
Product: Base System
Version: 11.2-STABLE
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: kern
Assignee: bugs at FreeBSD.org
Reporter: rscheff at gmx.at
The TCP/IP ECN signaling loop looks like this
-CE-> (latches ECE)
<---- ACK, ECE
ACK, CWR ----> (unlatches ECE)
However, RFC3168 has a SHOULD for sending the CWR with a *new* data packet.
New data packets usually are also marked as ECN-capable transport (ECT), while
control packets, pure ACKs and retransmissions are sent without IP ECT
codepoint.
Some overly restrictive clients (Linux) explicitly only accept and process
CWR, if they are received on (new) data segments, but ignore them completely
when set in other packets. While such an overly restrictive behavior is also
problematic, BSD *should* adhere to the guidance of RFC3168 and sent out
CWR flags only when (new) data packets are sent out (sec 6.1.2) rather than
simply the very next segment (sec. 6.1):
RFC3168, section 6.1:
* The sender sets the CWR flag in the TCP header of the next
packet sent to the receiver to acknowledge its receipt of and
reaction to the ECN-Echo flag.
RFC3168, section 6.1.2:
When an ECN-Capable TCP sender reduces its congestion window for any
reason (because of a retransmit timeout, a Fast Retransmit, or in
response to an ECN Notification), the TCP sender sets the CWR flag in
the TCP header of the first new data packet sent after the window
reduction.
The interaction can lead to a race to the bottom, where cwnd is continually
decreased and kept at a very small value. This results in extremely poor
performance for ECN-enabled TCP sessions.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list