https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292294
Bug ID: 292294
Summary: Accurate ECN on the loopback interface causes an
infinite ACK loop.
Product: Base System
Version: 15.0-RELEASE
Hardware: amd64
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: kern
Assignee: [email protected]
Reporter: [email protected]
When I enable Accurate ECN using net.inet.tcp.ecn.enable=3, connection
involving the loopback interface (lo0) sometimes cause an infinite ACK loop in
the kernel, consuming 100% CPU of a single core doing interrupts (netisr:x).
The only way to stop the loop is using tcpdrop on both sides of the connection.
I have seen this happen when both src and dst addresses are 127.0.0.1, but also
when src or dst is 127.0.01 and the other side is the IP-address of a nic in
the server.
The problem started after upgrading from FreeBSD 14.3 to FreeBSD 15.0.
Here is a short tcpdump of lo0, when the ACK loop occurs:
13:42:22.955718 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack
2107191172
, win 159, options [nop,nop,TS val 948053530 ecr 2180641192], length 0
13:42:22.955721 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159
, options [nop,nop,TS val 2185300844 ecr 943393879], length 0
13:42:22.955722 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159
, options [nop,nop,TS val 948053531 ecr 2180641192], length 0
13:42:22.955724 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159
, options [nop,nop,TS val 2185300844 ecr 943393879], length 0
13:42:22.955726 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159
, options [nop,nop,TS val 948053531 ecr 2180641192], length 0
13:42:22.955727 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159
, options [nop,nop,TS val 2185300844 ecr 943393879], length 0
13:42:22.955729 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159
, options [nop,nop,TS val 948053531 ecr 2180641192], length 0
13:42:22.955730 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159
, options [nop,nop,TS val 2185300844 ecr 943393879], length 0
13:42:22.955732 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159
, options [nop,nop,TS val 948053531 ecr 2180641192], length 0
13:42:22.955733 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159
, options [nop,nop,TS val 2185300844 ecr 943393879], length 0
13:42:22.955734 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159
, options [nop,nop,TS val 948053531 ecr 2180641192], length 0
13:42:22.955736 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159
, options [nop,nop,TS val 2185300844 ecr 943393879], length 0
13:42:22.955738 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159, options [nop,nop,TS val 948053531 ecr 2180641192], length 0
13:42:22.955739 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159, options [nop,nop,TS val 2185300844 ecr 943393879], length 0
13:42:22.955741 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159, options [nop,nop,TS val 948053531 ecr 2180641192], length 0
13:42:22.955742 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159, options [nop,nop,TS val 2185300844 ecr 943393879], length 0
13:42:22.955746 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159, options [nop,nop,TS val 948053531 ecr 2180641192], length 0
13:42:22.955748 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159, options [nop,nop,TS val 2185300845 ecr 943393879], length 0
13:42:22.955750 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159, options [nop,nop,TS val 948053532 ecr 2180641192], length 0
13:42:22.955752 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159, options [nop,nop,TS val 2185300845 ecr 943393879], length 0
13:42:22.955753 IP 127.0.0.1.43778 > 127.0.0.1.11553: Flags [.E], ack 1, win
159, options [nop,nop,TS val 948053532 ecr 2180641192], length 0
13:42:22.955755 IP 127.0.0.1.11553 > 127.0.0.1.43778: Flags [.E], ack 0, win
159, options [nop,nop,TS val 2185300845 ecr 943393879], length 0
--
You are receiving this mail because:
You are the assignee for the bug.