Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Jan 2018 14:16:18 -0500
From:      Patrick Kelsey <kelsey@ieee.org>
To:        freebsd-transport@freebsd.org
Subject:   Re: TCP Fast Open Linux behaviour
Message-ID:  <CAD44qMWB-pkWAVqwFtPZGhFXSLSCpcrJpQObMEyZeJRO5n4TKg@mail.gmail.com>
In-Reply-To: <2AE83CF2-FF6D-4849-AEB9-7FCCA43613A9@freebsd.org>
References:  <2AE83CF2-FF6D-4849-AEB9-7FCCA43613A9@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 17, 2018 at 4:55 PM, Michael Tuexen <tuexen@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAD44qMWB-pkWAVqwFtPZGhFXSLSCpcrJpQObMEyZeJRO5n4TKg>