routedns icon indicating copy to clipboard operation
routedns copied to clipboard

Feature request: TCP Fast Open

Open charlieporth1 opened this issue 4 years ago • 7 comments

Feature request: TCP Fast Open. Just something to think about. I don't know go but I could try and implement it

charlieporth1 avatar Jun 09 '21 15:06 charlieporth1

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.

folbricht avatar Jun 12 '21 15:06 folbricht

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

charlieporth1 avatar Jun 14 '21 15:06 charlieporth1

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)

cbuijs avatar Jun 14 '21 15:06 cbuijs

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

TCP vs UDP

Does android uses DoT Android having TCP fast open

charlieporth1 avatar Jun 14 '21 19:06 charlieporth1

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 ;-).

cbuijs avatar Jun 16 '21 13:06 cbuijs

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.

charlieporth1 avatar Jun 16 '21 19:06 charlieporth1

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 :-).

cbuijs avatar Jun 17 '21 12:06 cbuijs