Feature request: TCP Fast Open
Feature request: TCP Fast Open. Just something to think about. I don't know go but I could try and implement it
I don't think this TCP Fast Open is supported by Go, and reading https://github.com/golang/go/issues/4842 it may never be.
I don't think this TCP Fast Open is supported by Go, and reading golang/go#4842 it may never be.
I very much so could be wrong very. But according to the last comment the Golang devs might have implemented it. Otherwise I believe this project implements it. I don't know Go tho so I couldn't tell you
This one points out DNS as case: https://squeeze.isobar.com/2019/04/11/the-sad-story-of-tcp-fast-open/
(besides that the tendency of the article is that we are moving to an UDP world anyway)
This one points out DNS as case: https://squeeze.isobar.com/2019/04/11/the-sad-story-of-tcp-fast-open/
(besides that the tendency of the article is that we are moving to a UDP world anyway)
I could be wrong but doesn't TCP work better in Mobile Networks? Specifically when traveling "faster than horse and buggy" (e.g. Over 30 miles an hour) because of the packet loss concept
The application I have it in mind for is my Android phone which supports TFO and uses DoT instead of DTLS I use my Android phone for tethering on long road trips and thus traveling at speeds of over 60 MPH. Which TCP is perfect for.
Sources
My point what not what works better. The motivation for TCP Fast-Open becomes less and less as most (web-based) applications, which is a big chunk of all internet-traffic, is either moving or already moved to UDP (QUIC and HTTP/3). And DNS-Over-Whatever will be part of that too (DoQ for example).
Speed wise, because of it connectionless/stateless, UDP is actually faster, but depends and relies on stable connections of course.
If you need stable-connections, it is common to setup a TCP based VPN (over your mobile network) and route everything through that tunnel so all traffic, including ICMP and UDP will rely on that stable, TCP based, connection.
This is all debatable of course ;-).
My point what not what works better. The motivation for TCP Fast-Open becomes less and less as most (web-based) applications, which is a big chunk of all internet-traffic, is either moving or already moved to UDP (QUIC and HTTP/3). And DNS-Over-Whatever will be part of that too (DoQ for example).
Speed wise, because of it connectionless/stateless, UDP is actually faster, but depends and relies on stable connections of course.
If you need stable-connections, it is common to setup a TCP based VPN (over your mobile network) and route everything through that tunnel so all traffic, including ICMP and UDP will rely on that stable, TCP based, connection.
This is all debatable of course ;-).
I get that as well. But I'm saying I don't have a UDP connection thru my Android phone because Android OS uses DoT and not DTLS. Because DoT uses TCP I would like TFO in order to increase TCP speeds. Starting with Android 9 (Pie) you can change your DNS provider to a private DoT-based DNS Provider of your choice. This DoT connection uses TCP and not UDP and thus I would like TFO to make the connection faster. What you're describing is the use of UDP which I cannot use with the OS based DNS system.
I can UDP by running a background DNS app which I generally don't like because those apps tend to use more battery and use quite a bit of RAM (I've tested out a couple and on avg they use ~150MB of RAM).
I run my own private DNS using this software and it's fantastic btw! I would like to see TFO in it because I have a specific use for it.
One last thing I don't know how you'll read the above paragraph but I would like to be clear to everyone in this chat thank you for your time and patience I know it isn't easy developing and maintaining software.
Gotcha. Missed the limitation of DoT on Android which is a good point. You might consider running a DNS client like AdGuard to have more choices (like DoQ), but again, another layer of complexity :-).