Thanks for running the tests. Which exit nodes led to poor performance? I would like to try to reproduce any performance problems.
I did not record the nodes (they were in Europe). A simple test you could run on your server is fetching directory info from nodes that have directory functionality enabled.
wget http://<relay IP>:<dir port>/tor/server/all
e.g.: wget http://176.126.252.11:443/tor/server/all
You can get a bandwidth-sorted list of nodes at: https://torstatus.blutmagie.de/
There is a column that has the directory port.
How would you measure performance between my node and a given exit without being influenced by the properties of the middle relay? You can only set me as an entrynode, and you can't pick a specific middle,
You are wrong. :-)
You can build arbitrary circuits by hand. There are libraries like Stem, Txtorcon, TorCtl and there is a text based, SMTP-like protocol that you can use directly:
https://gitweb.torproject.org/torspec.git/tree/control-spec.txt
so how would you know that the low performance was my node and not the random middle relay?
Your node would be a non-random middle relay.
The bandwidth auths probably downrate the measurement results of your server severely because of those slow connections.
Probably? How can we investigate further?
AFAIK, the raw bandwidth auth measurements are not published, only the total result.
A simple test you could run on your server is fetching directory info from nodes that have directory functionality enabled.
Thanks for the idea. blutmagie offers a CSV list of its current result set, so this ended up being quite easy to automate.
I fetched a copy of the CSV to the server:
wget https://torstatus.blutmagie.de/query_export.php/Tor_query_EXPORT.csv
Then I picked out the columns I cared about, included only Exits with a Dirport, then sorted by the bandwidth column, and grabbed the fastest 50:
awk -F , '{if ($10 == "1" && $8 != "None") print $3, $5, $8}' Tor_query_EXPORT.csv | sort -nr | head -50 > top-50-exits-with-dirport.txt
That file now looks like:
34994 37.130.227.133 80 33134 176.126.252.11 443 30736 176.126.252.12 21 30720 77.247.181.164 80 26958 77.247.181.166 80 <snip>
So we now have the bandwidth, IP, and dirport of the fastest exits. With this list in hand, I just needed to form a proper URL, wget each one, and grep out the transfer speed:
for URL in $(awk '{print "http://" $2 ":" $3 "/tor/server/all"}' top-50-exits-with-dirport.txt); do printf "$URL " && wget $URL -O /dev/null 2>&1 | grep -o "[0-9.]+ [KM]*B/s"; done
The output ends up looking like this (only displaying the first 10 for brevity):
http://37.130.227.133:80/tor/server/all 1.17 MB/s http://176.126.252.11:443/tor/server/all 4.54 MB/s http://176.126.252.12:21/tor/server/all 666 KB/s http://77.247.181.164:80/tor/server/all 111 KB/s http://77.247.181.166:80/tor/server/all 330 KB/s http://195.154.56.44:80/tor/server/all 3.65 MB/s http://77.109.141.138:80/tor/server/all 2.20 MB/s http://96.44.189.100:80/tor/server/all 13.4 MB/s http://197.231.221.211:1080/tor/server/all 347 KB/s http://89.234.157.254:80/tor/server/all 295 KB/s
I'm not seeing anything immediately, although I need to run it on a larger set. There's no smoking gun so far though. Some of the speeds are a bit slow, but nothing low enough to explain the extremely low measured bandwidth these relays are getting. I think I'll clean this up a bit, put it into an actual script, and try running it on another server on a different AS for comparison.
On Sun, Aug 09, 2015 at 12:52:21PM -0700, Green Dream wrote:
Some of the speeds are a bit slow, but nothing low enough to explain the extremely low measured bandwidth these relays are getting.
Note that the bandwidth weights in the consensus are unitless: they are simply weights, and they only matter relative to the other weights. Thinking of them as an attempt at an estimate of the bandwidth of your relay will lead to confusion and unhappiness. :)
I think I'll clean this up a bit, put it into an actual script
Great!
--Roger
Hi Roger,
On 10.08.2015, at 00:24, Roger Dingledine arma@mit.edu wrote: Note that the bandwidth weights in the consensus are unitless: [...]
So Atlas is misleading, when you hover your mouse over the Consensus Weight, it says
Weight assigned to this relay by the directory authorities that clients use in their path selection algorithm. The unit is arbitrary; currently it's kilobytes per second, but that might change in the future.
Cheers, Jannis
tor-relays@lists.torproject.org