[tor-bugs] #22453 [Core Tor/Tor]: Relays should regularly do a larger bandwidth self-test

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri Jun 15 09:07:58 UTC 2018


#22453: Relays should regularly do a larger bandwidth self-test
-------------------------------------------------+-------------------------
 Reporter:  arma                                 |          Owner:  juga
     Type:  enhancement                          |         Status:
                                                 |  assigned
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  unspecified
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  034-triage-20180328,                 |  Actual Points:
  034-removed-20180328, tor-bwauth               |
Parent ID:  #25925                               |         Points:
 Reviewer:                                       |        Sponsor:
-------------------------------------------------+-------------------------

Comment (by teor):

 Replying to [comment:16 juga]:
 > Diving into the code i found that the function where the relay bandwidth
 is compared with `options->AuthDirGuardBWGuarantee` is in
 `set_routerstatus_from_routerinfo` [0].

 You should make the default value of AuthDirGuardBWGuarantee into a
 #define, and use it when you work out how much data to send during a relay
 self-test.

 > To obtain the relay bandwidth, that function calls
 `dirserv_get_credible_bandwidth_kb` [1] which seems to be using either the
 measured bandwidth (by bwauths) or the self advertised bandwidth, but not
 any self measured bandwidth.

 You should not change the directory authority code, because this ticket is
 about relay self-tests.

 > If i understand it correctly, the self measured bandwidth
 (`bandwidthcapacity`) is obtained by `rep_hist_bandwidth_assess` [2].
 >
 > The function that is making use of the circuits to test the bandwidth is
 `router_perform_bandwidth_test` [3] but i don't see how it is storing the
 results or how is related with the previous.
 >
 > So, should `dirserv_get_credible_bandwidth_kb` make use of the bandwidth
 calculated by self tests?, which are the self tests here to be used?

 When a relay performs a bandwidth self-test, the bandwidth usage from the
 self-test is recorded in the bandwidth history. Then every 24 hours, the
 relay puts the highest bandwidth from its history in its descriptor as the
 observed bandwidth. Then torflow reads the descriptor, and uses the
 observed bandwidth to calculate the consensus weight.

 > Where in the code should go the `times out after 30-60`?

 When you start the test, schedule a timer for 30-60 seconds that cancels
 the test of it is still going.

 > and the `12-24 hours, at random`?

 When the relay completes a bandwidth self-test, you should create a timer
 that changes the bandwidth self-test flag from "completed" to "do a self-
 test" in 12-24 hours. If the self-test times out, you should schedule the
 next test in 1-2 hours.

 > [0] https://gitweb.torproject.org/tor.git/tree/src/or/dirserv.c#n2058
 > [1] https://gitweb.torproject.org/tor.git/tree/src/or/dirserv.c#n1780
 > [2] https://gitweb.torproject.org/tor.git/tree/src/or/rephist.c#n1207
 > [3] https://gitweb.torproject.org/tor.git/tree/src/or/router.c#n1626

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


More information about the tor-bugs mailing list