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
Browsing and any interactively use should feel way more responsive.
This would save roundtrips and enhances TTFB (Time to first byte) so the initial connection time latency, significantly improve usability on high latency connections on mobile internet connection and tors multihops itself.
Example of resolving and connection user wants to Visit http://rethinkdns.com, and we assume the user connects through OrBot and sets non-leaking DNS to OrBot DNSPort
current standard connection setup:
Browser ask rethinkdns.com
A Query for rethinkdns.com gets forwarded to OrBot DNSPort
Orbot uses a 3-hop circuit and asks the exit server for the IP of rethinkdns.com
The exit server reply with 104.21.13.53 all the way back.
Orbot forwards the resolving reply through rethinkdns to the browser
Browser start connection to 104.21.13.53 which rethinkdns forward to orbot over socks5
Orbot uses a 3-hop circuit and asks the exit server to connect to the IP of 104.21.13.53
Orbot waits the exit TCP connection success reply and once received sends back a SOCKS5 Established status message.
The browser starts sending GET request for rethinkdns.com
Orbot forwards the GET request down the whole 3 hops to exit node which forwards it to the destination
With support for OptimisticData it may instead look shorter like:
Browser ask rethinkdns.com
A Query for rethinkdns.com gets forwarded to OrBot DNSPort
Orbot uses a 3-hop circuit and asks the exit server for the IP of rethinkdns.com
The exit server reply with 104.21.13.53 all the way back.
Orbot forwards the resolving reply through rethinkdns to the browser
Browser start connection to 104.21.13.53 which rethinkdns forward to orbot over socks5
Orbot immediately sends back a SOCKS5 Established status message and uses a 3-hop circuit and asks the exit server to connect to the IP of 104.21.13.53
The browser starts sending GET request for rethinkdns.com just before the connection in reality is set up, and it gets already forwarded to exit node and buffered there waiting for TCP connection from exit ⇒ destination finished. Once finished, the GET request is immediate from exit node to destination
Combined with celzero/rethink-app#339 this can reduce the RTT to effectively -1 hops compared to traditional Socks5 Proxies or VPN. Because the App can start sending Data towards the proxy to the destination on socks connection before the connection to the destination even finished, and before target hostname was resolved.
Combined that would reduce the sample steps above from 10 to only to 3:
Browser start connection to rethinkdns.com over socks5 via hostname
Orbot immediately sends back a SOCKS5 Established status message uses a 3-hop circuit and asks the exit server to connect to the rethinkdns.com Hostname
The Tor Browser starts sending GET request for rethinkdns.com forwarded to exit node through Orbot and buffered there until rethinkdns.com resolved and TCP connection from exit ⇒ destination finished. Once finished, the GET request is immediately send from exit node to destination
The text was updated successfully, but these errors were encountered:
The OptimisticData features works great in combination with rethink forwarding, the other way around. But it is not officially yet supported on its side for this way of usage. I could provide the experiment for debugging if necessary.
A note on this, one forwarding proxy that actually implemented it is the noncaching forward proxy privoxy with the so called socks5t forwarding.
supported SOCKS extension is optimistic data which can reduce the latency for the first request made on a newly created connection.
Please implement support for Tor
OptimisticData
feature.Requires to lie to the application that the SOCKS Handshake has succeeded immediately, allowing the application to begin sending data optimistically.
For Reference, see linked Proposal.
Performance benefits:
Example of resolving and connection user wants to Visit http://rethinkdns.com, and we assume the user connects through OrBot and sets non-leaking DNS to OrBot DNSPort
current standard connection setup:
With support for
OptimisticData
it may instead look shorter like:TCP Connection delay includes circuit creation times seen: https://metrics.torproject.org/onionperf-buildtimes.html
Once the circuit finished, the Round-trip latencies apply. Average can be found here on: https://metrics.torproject.org/onionperf-latencies.html
According to that, today's, the average is still high enough to noticeable benefit from supporting
OptimisticData
.Combined with celzero/rethink-app#339 this can reduce the RTT to effectively -1 hops compared to traditional Socks5 Proxies or VPN. Because the App can start sending Data towards the proxy to the destination on socks connection before the connection to the destination even finished, and before target hostname was resolved.
Combined that would reduce the sample steps above from 10 to only to 3:
The text was updated successfully, but these errors were encountered: