TCP Fast Open Linux behaviour

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

On Wed, Jan 17, 2018 at 4:55 PM, Michael Tuexen <tuexen at> 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.

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:

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.


More information about the freebsd-transport mailing list