Opened 4 months ago

Last modified 7 weeks ago

#33220 assigned enhancement

Prop 311: 3. Allow Relay IPv6 Extends

Reported by: teor Owned by: teor
Priority: Medium Milestone: Tor: 0.4.4.x-final
Component: Core Tor/Tor Version:
Severity: Normal Keywords: ipv6, prop311, network-team-roadmap-2020Q2
Cc: Actual Points:
Parent ID: #33048 Points: 3
Reviewer: Sponsor: Sponsor55-must


Relays may make a new connection over IPv6 when:

  • they have an IPv6 ORPort,
  • there is no existing authenticated connection to the requested relay, and
  • the extend cell contains an IPv6 ORPort.

If these conditions are satisfied, and the extend cell also contains an
IPv4 ORPort, we propose that the relay choose between an IPv4 and an IPv6
connection at random.

If the extend cell does not contain an IPv4 ORPort, we propose that the
relay connects over IPv6. (Relays should support IPv6-only extend cells,
even though they are not used to test relay reachability in this proposal.)

A successful IPv6 connection also requires that:

  • the requested relay has an IPv6 ORPort.

But extending relays must not check the consensus for other relays' IPv6
information. Consensuses may be out of date, particularly when relays are
doing reachability checks for new IPv6 ORPorts.

From proposal 311, section 3:

Child Tickets

#33816tasknewFill in missing IPv6 addresses in extend cells
#33819tasknewMake clients and bridges send IPv6 extends by default in Tor 0.4.5

Change History (3)

comment:1 Changed 8 weeks ago by teor

To make these changes, we will need to modify:

  • Most functions in circuitbuild_relay.c (a new file introduced by #33633)
  • check_extend_cell() in onion.c

We should also modify the legacy EXTEND cell code:

  • extend_cell_from_extend2_cell_body() in onion.c

Even though all relays that support IPv6 extends should be using extend2 cells.

comment:2 Changed 7 weeks ago by gaba

Keywords: network-team-roadmap-2020Q2 added

comment:3 Changed 7 weeks ago by gaba

Add s55 tickets to the 2020 Q2 roadmap for the network team.

Note: See TracTickets for help on using tickets.