[tor-bugs] #25886 [Core Tor/Tor]: Have frac_nodes_with_descriptors() take and use for_direct_connect

Tor Bug Tracker & Wiki blackhole at torproject.org
Sun May 20 21:59:33 UTC 2018


#25886: Have frac_nodes_with_descriptors() take and use for_direct_connect
-------------------------------------------------+-------------------------
 Reporter:  nickm                                |          Owner:  neel
     Type:  defect                               |         Status:
                                                 |  assigned
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  0.3.5.x-final
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  tor-bridge-client, tor-guard,        |  Actual Points:
  bootstrap                                      |
Parent ID:                                       |         Points:
 Reviewer:                                       |        Sponsor:
-------------------------------------------------+-------------------------
Changes (by teor):

 * keywords:   => tor-bridge-client, tor-guard, bootstrap
 * milestone:  Tor: unspecified => Tor: 0.3.5.x-final


Old description:

> On their review for #25691, teor notes (about for_direct_connect):
>
> >We should pass for_direct_conn into this function, and use
> node_has_preferred_descriptor().
>
> >For the mid and exit case:
> >We won't bootstrap unless we have enough actual mid and exit bandwidth,
> even if we have mids or exits listed as our bridges.
> >
> >For the guard case:
> >The guard case is unchanged for non-bridge clients.
> >
> >The bridge client case could be tricky, because:
> >
> >   1. compute_frac_paths_available() only checks guard-flagged nodes,
> not bridges
> >   2. even if it did check bridges, they don't have bandwidths
> >   3. even if we used a weight of 1 for each bridge, we don't require
> 65% of bridges to be up to bootstrap
> >
> >To workaround this issue, I suggest we make f_guard = 1.0 in
> compute_frac_paths_available() if we are using bridges, and have at least
> one bridge with ~~the preferred~~ a full descriptor.
>
> Edit: bridge clients always use full descriptors for bridges

New description:

 On their review for #25691, teor notes (about for_direct_connect):

 >We should pass for_direct_conn into this function, and use
 node_has_preferred_descriptor().

 >For the mid and exit case:
 >We won't bootstrap unless we have enough actual mid and exit bandwidth,
 even if we have mids or exits listed as our bridges.
 >
 >For the guard case:
 >The guard case is unchanged for non-bridge clients.
 >
 >The bridge client case could be tricky, because:
 >
 >   1. compute_frac_paths_available() only checks guard-flagged nodes, not
 bridges
 >   2. even if it did check bridges, they ~~don't have bandwidths~~ only
 have self-measured bandwidths
 >   3. even if we used a weight of 1 for each bridge, we don't require 65%
 of bridges to be up to bootstrap
 >
 >To workaround this issue, I suggest we make f_guard = 1.0 in
 compute_frac_paths_available() if we are using bridges, and have at least
 one bridge with ~~the preferred~~ a full descriptor.

 Edit: bridge clients always use full descriptors for bridges
 Edit: bridges have self-measured bandwidths

--

Comment:

 You also need to rewrite the guard weights when the client is using
 bridges:

 Replying to [ticket:25886 nickm]:
 > >For the guard case:
 > >The guard case is unchanged for non-bridge clients.
 > >
 > >The bridge client case could be tricky, because:
 > >
 > >   1. compute_frac_paths_available() only checks guard-flagged nodes,
 not bridges
 > >   2. even if it did check bridges, they ~~don't have bandwidths~~ only
 have self-measured bandwidths
 > >   3. even if we used a weight of 1 for each bridge, we don't require
 65% of bridges to be up to bootstrap
 > >
 > >To workaround this issue, I suggest we make f_guard = 1.0 in
 compute_frac_paths_available() if we are using bridges, and have at least
 one bridge with ~~the preferred~~ a full descriptor.
 >
 > Edit: bridge clients always use full descriptors for bridges
 > Edit: bridges have self-measured bandwidths

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


More information about the tor-bugs mailing list