TCP Fast Open Linux behaviour

Patrick Kelsey kelsey at ieee.org
Fri Jan 19 19:16:20 UTC 2018


On Wed, Jan 17, 2018 at 4:55 PM, Michael Tuexen <tuexen at freebsd.org> wrote:

> Dear all,
>
> at the last Telco the following question was raised:
>
> When Linux is acting as TCP client using TCP fast open,
> does it accept user data sent with the SYN-ACK.
>
> I tested it with the Linux kernel 4.9.77, which is the current
> LTS release and figured out that the data sent with the SYN-ACK
> is accepted. See the attached .pcapng file.
>
> The current Ubuntu 17.10 using the kernel 4.13.0 shows the
> same behaviour.
>
>
>
Michael,

Thank you for performing this test with recent Linux kernels and finding
that the issue where the Linux TFO client-side implementation would not ACK
data in a SYN-ACK has been resolved.

The issue did exist at one time, going back to at least the 4.4 kernel, as
highlighted during testing of my TFO server-side implementation by multiple
parties.  One person involved in that testing elicited an explanation from
Yuchung Cheng as to why the flaw in the Linux TFO client-side
implementation existed:
https://www.ietf.org/mail-archive/web/tcpm/current/msg10175.html

I will still need to add a knob to the FreeBSD TFO server-side
implementation to enable a workaround mode that doesn't send data in TFO
SYN-ACKs when data is available, but instead immediately chases the SYN-ACK
with a data segment, so that service providers that want to provide good
TFO performance for fielded broken Linux clients can do so.

-Patrick


More information about the freebsd-transport mailing list