[tor-dev] New Proposal: Preferring IPv4 or IPv6 based on IP Version Failure Count

teor teor at riseup.net
Sun Jan 27 09:35:07 UTC 2019

On January 27, 2019 6:23:15 AM UTC, grarpamp <grarpamp at gmail.com> wrote:
>> https://github.com/torproject/torspec/pull/53
>> https://trac.torproject.org/projects/tor/ticket/27491
>> https://github.com/torproject/tor/pull/566
>> https://github.com/torproject/torspec/tree/master/proposals
>The subject would make use of the folllowing RFC...
>Happy Eyeballs Version 2: Better Connectivity Using Concurrency
>You probably want to reference it in
>any relavant proposal, ticket, pull.

I agree that "happy eyeballs" provides a really good user experience.

But before we implement rfc8305 in Tor, we would need to refactor Tor's address handling code.

At the moment, Tor:
1. Chooses a set of guards using their consensus weights (or has a configured set of bridges),
2. Chooses a guard with a reachable address,
3. Chooses an address for that guard,
4. Connects to that address (or uses an existing connection)

If we wanted to implement rfc8305, Tor would need to:
1. Choose a set of guards that includes at least some IPv4 and IPv6 guards
2. Choose a guard with a reachable address, and, if that guard is not dual-stack, choose another guard that has a reachable address from the missing address family
3. Connect to both the IPv4 and IPv6 addresses

We would also need to think about the load-balancing and privacy implications of this change.

Trying to keep a connection to two guards sounds like proposal 291:

We should think about how these proposals interact.

But that's a big job, and we won't have time for it for at least 6 months.

In the meantime, let's try to make some quick changes that make Tor work better with IPv6. Even if they are not ideal.

Then we can replace them with something better, when we have the time.

>Below is of minor import...
>Default Address Selection for Internet Protocol Version 6 (IPv6)

Tor doesn't use getaddrinfo() or DNS to discover relay addresses. If we did re-implement rfc6724 in Tor, it wouldn't make much difference. Most relays are IPv4-only, so there is no address choice. For dual-stack relays, it would choose between one IPv4 and one IPv6 address.

So I am not sure how rfc6724 applies to Tor.


More information about the tor-dev mailing list