[tor-bugs] #33223 [Core Tor/Tor]: Prop 311: 4.3.1. Don't Publish Descriptor if IPv6 ORPort is Unreachable

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Apr 28 13:01:54 UTC 2020


#33223: Prop 311: 4.3.1. Don't Publish Descriptor if IPv6 ORPort is Unreachable
---------------------------+------------------------------------
 Reporter:  teor           |          Owner:  teor
     Type:  enhancement    |         Status:  assigned
 Priority:  Medium         |      Milestone:  Tor: 0.4.4.x-final
Component:  Core Tor/Tor   |        Version:
 Severity:  Normal         |     Resolution:
 Keywords:  ipv6, prop311  |  Actual Points:
Parent ID:  #33221         |         Points:  3
 Reviewer:                 |        Sponsor:  Sponsor55-must
---------------------------+------------------------------------
Description changed by teor:

Old description:

> This ticket depends on the protocol version ticket #33226.
>
> If IPv6 reachability checks fail, relays (and bridges) should refuse to
> publish their descriptors, if:
>   * enough existing relays support IPv6 extends, and
>   * the IPv6 address was explicitly configured by the operator
>     (rather than guessed using [Proposal 312: Relay Auto IPv6 Address]).
>
> Directory authorities may perform reachability checks, and warn if those
> checks fail. But they always publish their descriptors.
>
> We set a threshold of consensus relays for reliable IPv6 ORPort checks:
>   * at least 30 relays, and
>   * at least 1% of the total consensus weight,
> must support IPv6 extends.
>
> We chose these parameters so that the number of relays is triple the
> number of directory authorities, and the consensus weight is high enough
> to support occasional reachability circuits.
>
> In small networks with:
>   * less than 2000 relays, or
>   * a total consensus weight of zero,
> the threshold should be the minimum tor network size to test
> reachability:
>   * at least 2 relays, excluding this relay.
> (Note: we may increase this threshold to 3 or 4 relays if we discover a
> higher minimum during testing.)
>
> If the current consensus satisfies this threshold, testing relays (and
> bridges, but not directory authorities) that fail IPv6 ORPort
> reachability
> checks should refuse to publish their descriptors.
>
> To ensure an accurate threshold, testing relays should exclude:
>   * the testing relay itself, and
>   * relays that they will not use in testing circuits,
> from the:
>   * relay count, and
>   * the numerator of the threshold percentage.
>
> Typically, relays will be excluded if they are in the testing relay's:
>   * family,
>   * IPv4 address /16 network,
>   * IPv6 address /32 network (a requirement as of Tor 0.4.0.1-alpha),
> unless EnforceDistinctSubnets is 0.
>
> As a useful side-effect, these different thresholds for each relay family
> will reduce the likelihood of the network flapping around the threshold.
>
> If flapping has an impact on the network health, directory authorities
> should set the AssumeIPv6Reachable consensus parameter. (See the next
> section.)
>
> See proposal 311, section 4.3.1:
> https://gitweb.torproject.org/torspec.git/tree/proposals/311-relay-
> ipv6-reachability.txt#n351

New description:

 This ticket depends on the protocol version ticket #33226.

 Since it stops relays publishing their descriptors, it needs to be
 tested on the public tor network, see #33229 and #33230.

 If IPv6 reachability checks fail, relays (and bridges) should refuse to
 publish their descriptors, if:
   * enough existing relays support IPv6 extends, and
   * the IPv6 address was explicitly configured by the operator
     (rather than guessed using [Proposal 312: Relay Auto IPv6 Address]).

 Directory authorities may perform reachability checks, and warn if those
 checks fail. But they always publish their descriptors.

 We set a threshold of consensus relays for reliable IPv6 ORPort checks:
   * at least 30 relays, and
   * at least 1% of the total consensus weight,
 must support IPv6 extends.

 We chose these parameters so that the number of relays is triple the
 number of directory authorities, and the consensus weight is high enough
 to support occasional reachability circuits.

 In small networks with:
   * less than 2000 relays, or
   * a total consensus weight of zero,
 the threshold should be the minimum tor network size to test reachability:
   * at least 2 relays, excluding this relay.
 (Note: we may increase this threshold to 3 or 4 relays if we discover a
 higher minimum during testing.)

 If the current consensus satisfies this threshold, testing relays (and
 bridges, but not directory authorities) that fail IPv6 ORPort reachability
 checks should refuse to publish their descriptors.

 To ensure an accurate threshold, testing relays should exclude:
   * the testing relay itself, and
   * relays that they will not use in testing circuits,
 from the:
   * relay count, and
   * the numerator of the threshold percentage.

 Typically, relays will be excluded if they are in the testing relay's:
   * family,
   * IPv4 address /16 network,
   * IPv6 address /32 network (a requirement as of Tor 0.4.0.1-alpha),
 unless EnforceDistinctSubnets is 0.

 As a useful side-effect, these different thresholds for each relay family
 will reduce the likelihood of the network flapping around the threshold.

 If flapping has an impact on the network health, directory authorities
 should set the AssumeIPv6Reachable consensus parameter. (See the next
 section.)

 See proposal 311, section 4.3.1:
 https://gitweb.torproject.org/torspec.git/tree/proposals/311-relay-
 ipv6-reachability.txt#n351

--

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/33223#comment:3>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list