HomeFreeBSD

tcp idle reduce does not work for a server.

Description

tcp idle reduce does not work for a server.

TCP has an idle-reduce feature that allows a connection to reduce its
cwnd after it has been idle more than an RTT. This feature only works
for a sending side connection. It does this by at output checking the
idle time (t_rcvtime vs ticks) to see if its more than the RTO timeout.

The problem comes if you are a web server. You get a request and
then send out all the data.. then go idle. The next time you would
send is in response to a request from the peer asking for more data.
But the thing is you updated t_rcvtime when the request came in so
you never reduce.

The fix is to do the idle reduce check also on inbound.

Reviewed by: tuexen, rscheff
Sponsored by: Netflix Inc
Differential Revision: https://reviews.freebsd.org/D36721

Details

Provenance
rrsAuthored on Oct 4 2022, 11:09 AM
Reviewer
tuexen
Differential Revision
D36721: tcp idle reduce does not work for a server.
Parents
rG77198a945ae5: tcp_timers: provide tcp_timer_drop() and tcp_timer_close()
Branches
Unknown
Tags
Unknown