TCP Fast Open not supported with IPv6
Reported by
bja...@gmail.com,
Sep 7 2016
|
||
Issue descriptionUserAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0 Example URL: https://irclog.samba.org Steps to reproduce the problem: 0. you need IPv6 connectivity to reproduce the problem 1. enable chrome://flags/#enable-tcp-fast-open 2. run wireshark and use the display filter tcp.options.tfo ; also strace chrome while opening a IPv4 only TFO enabled site (like https://etc.samba.org/) and then a IPv6 and TFO enabled site (https://irclog.samba.org) What is the expected behavior? TCP fast open should work with IPV4 and IPv6. What went wrong? For IPv4-only sites you can see that TFO is used. In the strace you see sendto() call used with the MSG_FASTOPEN flag. For IPv6-enabled sites wireshark shows no TFO enabled packet requests. In the strace output we see that connect() is being used to establish the connection which is not TFO capable. The IPv6 network code of Chrome needs to be modified to use sendto() like for IPv4 to make TCP fast open work. Did this work before? N/A Chrome version: 53.0.2785.92 Channel: stable OS Version: 4.4.0 Flash Version: Shockwave Flash 20.0 r0
,
Sep 7 2016
This is expected behavior, since Chrome currently disables TFO when v4+v6 connectivity is available, so that Happy Eyeballs can happen. This can be fixed, but given that (i) the Linux TFO API is likely to change (WIP), and (ii) TFO experiments run by Apple and Facebook are giving us more reasons to not turn on TFO by default, I'm not prioritizing this at the moment.
,
Sep 7 2016
Kind of weird that dual stacked hosts get an intentional performance penalty over legacy IPv4-only hosts with Chrome. One more reason why Happy Eyeballs is actually counter productive for IPv6. Would be nice to be able to disable Happy Eyeballs in Chrome. I was searching for those points you mentioned but didn't find anything on it. Do you have any pointer to the planned Linux TFO API changes and to the Apple/FB experiments?
,
Sep 27 2016
Sorry -- I seem to have missed this. The proposed API for Linux isn't in any public doc, but is quite close to the MacOS API. I can't seem to find a pointer to it, but it's the MacOS API for connectx. On middlebox issues with TFO, Christoph Paasch presented some of this at IETF 94 (https://www.ietf.org/proceedings/94/slides/slides-94-tcpm-13.pdf). |
||
►
Sign in to add a comment |
||
Comment 1 by davidben@chromium.org
, Sep 7 2016