[gnutls-devel] TCP Fast Open

Tim Ruehsen tim.ruehsen at gmx.de
Mon Jul 25 16:38:28 CEST 2016


On Monday, July 25, 2016 3:25:02 PM CEST Nikos Mavrogiannopoulos wrote:
> On Wed, Jul 20, 2016 at 1:06 PM, Tim Ruehsen <tim.ruehsen at gmx.de> wrote:
> > On Wednesday, July 13, 2016 9:28:28 AM CEST Nikos Mavrogiannopoulos wrote:
> >> On Tue, Jul 12, 2016 at 5:33 PM, Tim Ruehsen <tim.ruehsen at gmx.de> wrote:
> >> > Hi,
> >> > I just wanted to mention that I recently added TFO in Wget2 using
> >> > GnuTLS
> >> > (tested on Linux, speedup ~ 1xRTT).
> >> 
> >> Hi Tim,
> >> 
> >>  That sounds great. Did you combine that with other optimizations such
> >> 
> >> as session resumption and false start?
> > 
> > I just did combine TFO with False Start in wget2 - and yes, it is another
> > 1xRTT speedup !

> 
> What do you think about this separation of the fast open code?
> https://gitlab.com/gnutls/gnutls/commit/448af51f6a745fc1b9a2f68bce09adc3d28d
> 3edc
> 
> When the fastopen() function is used, all the push and pull callbacks
> are overridden with the ones that can cope with the TCP fast open.
> This separates the two code bases.

This is a good thing, cleaner design.

A few little things:

# Comma missing after 'undesirable':
  * If this is undesirable TCP Fast Open must be implemented on the user

# Unneeded 'return' statement in gnutls_transport_set_fastopen()

# In _system_writev_tfo(), what about

if (likely(!p->connect_addrlen))
	return sendmsg(fd, &hdr, flags);

That would reduce one level of indentation for most of the code.

> What I found hard with TCP fast open, is error recovery. That has to
> be implemented by checking errors of the gnutls_handshake() function.

Could you give an example what exactly you mean ?
Maybe I have a brain slug... EAGAIN/EINPROGRESS/ENOTCONN/EOPNOTSUPP are 
handled. Most other errors are fatal and are returned by gnutls_handshake() as 
error. What am I missing ?

Regards, Tim
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: </pipermail/attachments/20160725/e878d63a/attachment.sig>


More information about the Gnutls-devel mailing list