[tor-relays] Measuring the Accuracy of Tor Relays' Advertised Bandwidths

teor teor at riseup.net
Thu Aug 1 22:36:09 UTC 2019


Hi again,

> On 2 Aug 2019, at 08:18, Rob Jansen <rob.g.jansen at nrl.navy.mil> wrote:
> 
>> On Jul 31, 2019, at 7:34 PM, teor <teor at riseup.net> wrote:
>> 
>> Can you define "goodput"?
> 
> Application-level throughput, i.e., bytes transferred in packet payloads but not counting packet headers or retransmissions. In our case I mean the number of bytes that Tor reports in the BW controller event.
> 
>> How is it different to the bandwidth reported by a standard speed test?
> 
> I believe that iperf also reports goodput as defined above.
> 
>> How is it different to the bandwidth measured by sbws?
> 
> I am not an expert on sbws, but I believe it also measures goodput.
> 
>> Where is your server?
> 
> West coast US.
> 
>> How do you expect the location of your server to affect your results?
> 
> I expect that the packet loss that occurs between my measurement machine and the target may limit the goodput I am able to achieve, and packet loss tends to occur more frequently on links with higher latency.

Tor's stream window also limits the goodput of a single stream. The in-flight bandwidth is limited to 500 cells * 498 RELAY_DATA cell goodput bytes = 243 kBytes

> I plan to use multiple sockets (as standard speed testing tools like iperf do) and multiple circuits to try to mitigate the effects.

Good. sbws only uses one stream at a time, and its streams are open for 5-10 seconds.

> Note that this is meant to be a fairly simple experiment, not a complete measurement system. Of course I won't be able to measure more than the bandwidth capacity of my measurement machine, but many relays already carry significant load so I'll just be giving them a boost.

Sounds like a useful experiment.

If using multiple circuits for 20 seconds makes a significant difference to some relays, we should consider changing sbws to:
* use multiple circuits,
* use 2 streams per circuit (to fill each circuit window), and
* run each test for 20 seconds.

Or we could modify the relay bandwidth self-test to:
* use significantly more bandwidth, and try to find the bandwidth limit for each relay, and
* run each test for 20 seconds.
(The relay bandwidth self-test uses DROP cells on multiple circuits, so stream windows don't apply.)

T


More information about the tor-relays mailing list