Skip to content

tcp: Introduce a TFO key-pool for clean cookie-rotation

Christoph Paasch netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest5 patches 17 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/5tcp: Create list of TFO-contextsinclude/net/tcp.h net/ipv4/tcp_fastopen.c+50 -47 replies
2/5tcp: TFO: search for correct cookie and accept datainclude/uapi/linux/snmp.h net/ipv4/proc.c net/ipv4/tcp_fastopen.c+101 -62 replies
3/5tcp: Print list of TFO-keys from procnet/ipv4/sysctl_net_ipv4.c+30 -114 replies
4/5tcp: Allow getsockopt of listener's keypoolnet/ipv4/tcp.c+9 -60 replies
5/5tcp: TFO - cleanup code duplicationnet/ipv4/tcp_fastopen.c+11 -402 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH net-next 0/5] tcp: Introduce a TFO key-pool for clean cookie-rotation

Currently, TFO only allows a single TFO-secret. This means that whenever the secret gets changed for key-rotation purposes, all the previously issued TFO-cookies become invalid. This means that clients will fallback to "regular" TCP, incurring a cost of one additional round-trip.

This patchset introduces a TFO key-pool that allows to more gracefully change the key. The size of the pool is 2 (this could be changed in the future through a sysctl if needed). When a client connects with an "old" TFO cookie, the server will now accept the data in the SYN and at the same time announce a new TFO-cookie to the client.

We have seen a significant reduction of LINUX_MIB_TCPFASTOPENPASSIVEFAIL thanks to these patches. Invalid cookies are now solely observed when clients behind a NAT are getting a new public IP.

Christoph Paasch (5):
tcp: Create list of TFO-contexts
tcp: TFO: search for correct cookie and accept data
tcp: Print list of TFO-keys from proc
tcp: Allow getsockopt of listener's keypool
tcp: TFO - cleanup code duplication

 include/net/tcp.h          |   2 +
 include/uapi/linux/snmp.h  |   1 +
 net/ipv4/proc.c            |   1 +
 net/ipv4/sysctl_net_ipv4.c |  41 +++++++---
 net/ipv4/tcp.c             |  15 ++--
 net/ipv4/tcp_fastopen.c    | 192 +++++++++++++++++++++++++++++++++++----------
 6 files changed, 193 insertions(+), 59 deletions(-)
Signature · 1 line
2.16.2