When the RACK stack wants to send a FIN, but still has outstanding or unsent data, it sends a challenge ack. Don't do this when the TCP endpoint is still in the front states.
Details
Details
- Reviewers
rrs rscheff peter.lei_ieee.org lstewart - Group Reviewers
transport - Commits
- rG2f923a0cedb8: tcp rack: improve handling of front states
Use the following packetdrill script:
0.000 `sysctl -w net.inet.tcp.rfc1323=1` +0.000 `sysctl -w net.inet.tcp.sack.enable=1` +0.000 `sysctl -w net.inet.tcp.ecn.enable=2` +0.000 `sysctl -w kern.ipc.maxsockbuf=2097152` +0.000 `sysctl -w net.inet.tcp.recvspace=65536` +0.000 `sysctl -w net.inet.tcp.sendspace=32768` // Reset the TCP fast open connection cache. +0.000 `sysctl -w net.inet.tcp.fastopen.client_enable=0` +0.000 `sysctl -w net.inet.tcp.fastopen.client_enable=1` +0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3 +0.000 setsockopt(3, IPPROTO_TCP, TCP_LOG, [TCP_LOG_STATE_CONTINUAL], 4) = 0 +0.000 setsockopt(3, IPPROTO_TCP, TCP_FASTOPEN, [1], 4) = 0 +0.000 sendto(3, ..., 1, 0, ..., ...) = 1 +0.000 > S 0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 1000 ecr 0,FO,eol,eol> +0.000 close(3) = 0 +1.000 > S 0:0(0) win 65535 <mss 1460,nop,wscale 6,sackOK,TS val 2000 ecr 0>
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable