You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a feature request for supporting TCP Fast Open.
I know TCP Fast Open was currently not proved to have the exprected effects that it was designed for, but some of its goals are very suitable for shadowsocks' application senario:
TFO would have benefits for unstable networks, such as mobile networks. Connections between shadowsocks' local server and remote server should be considered as unstable too.
TFO would have significate benefit for connections which have long RTTs.
As expected, TFO improves the PLT when the RTT is high for all the sites we tested. When the RTT is small and the network delay is only a small fraction of PLT, the resource processing time would exceed network time, so the gains from TFO are expected to be small. But even for pages heavy on content and with short emulated RTT (i.e. 20ms), TFO accelerates PLT by 4–5%. Conversely, for simpler pages such as wikipedia, the browser spends most of its time waiting for network transfers rather than processing the retrieved content, and thus TFO offers significant improvements of 16% and 41% with 100ms and 200ms RTTs respectively. The 200ms RTT figures roughly correspond to the expected performance on mobile devices since mobile RTTs are typically on the order of 100–200ms
There are concerns with TFO, namely middleboxes which don't support it and tracking concerns with the TFO cookie. HTTP/2 gets some of the gains back with multiplexing and HTTP/3 largely implements the good parts of TFO. See for example https://squeeze.isobar.com/2019/04/11/the-sad-story-of-tcp-fast-open/
The Outline server is implemented in Go -- you can see more discussion about supporting TFO in Go in this Issue. All said I'd expect that this is a pretty low-priority feature for us.
@bemasc and @alalamav have more insight into the networking code than I do, so they may have more information or differing opinions from me.
Well, since Go can easily interoperate with C, it is quite easy to implement TFO without any official support from the standard library (net). For example, here are some code snippets from the v2ray project.
This is a feature request for supporting TCP Fast Open.
I know TCP Fast Open was currently not proved to have the exprected effects that it was designed for, but some of its goals are very suitable for shadowsocks' application senario:
https://research.google.com/pubs/archive/37517.pdf
The text was updated successfully, but these errors were encountered: