[tor-bugs] #9379 [Tor]: Tor descriptor fetching is unreliable
Tor Bug Tracker & Wiki
blackhole at torproject.org
Fri Aug 2 17:55:44 UTC 2013
#9379: Tor descriptor fetching is unreliable
--------------------+-------------------------------------------------------
Reporter: atagar | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: Tor | Version:
Keywords: | Parent:
Points: | Actualpoints:
--------------------+-------------------------------------------------------
Hi all. This last weekend I wrote a [https://gitweb.torproject.org/atagar
/tor-utils.git/blob/HEAD:/descriptor_checker.py little script] to validate
tor's descriptors every hour and ensure that all of the directory
authorities are reachable. All the script does is...
* Download and validate the server descriptors from a random authority.
* Download and validate the extrainfo descriptors from a random
authority.
* Download and validate the present consensus from each authority.
This is all well and good, but I've found that downloading from Tor's
directory authorities is surprisingly flaky. The most troubled authority
looks to be maatuska, though all of them manifest issues (especially for
server/extrainfo descriptors, which is by far the larger requests)...
{{{
atagar at odin:~/Desktop/tor/tor-utils$ grep "Unable to download descriptors"
logs/descriptor_checker.stem_debug | cut -f 9 -d ' ' | sort | uniq -c |
sort -rn
58 'http://171.25.193.9:443/tor/status-vote/current/consensus.z'
29 'http://171.25.193.9:443/tor/status-vote/current/consensus.z':
15 'http://76.73.17.194:9030/tor/server/all.z'
15 'http://208.83.223.34:443/tor/server/all.z'
12 'http://76.73.17.194:9030/tor/extra/all.z'
10 'http://171.25.193.9:443/tor/server/all.z'
10 'http://128.31.0.39:9131/tor/extra/all.z'
9 'http://171.25.193.9:443/tor/extra/all.z'
8 'http://208.83.223.34:443/tor/extra/all.z'
8 'http://154.35.32.5:80/tor/server/all.z'
8 'http://128.31.0.39:9131/tor/server/all.z'
6 'http://208.83.223.34:443/tor/status-vote/current/consensus.z'
6 'http://193.23.244.244:80/tor/server/all.z'
5 'http://193.23.244.244:80/tor/extra/all.z'
5 'http://154.35.32.5:80/tor/extra/all.z'
4 'http://212.112.245.170:80/tor/extra/all.z'
4 'http://208.83.223.34:443/tor/server/all.z':
3 'http://76.73.17.194:9030/tor/server/all.z':
3 'http://208.83.223.34:443/tor/status-vote/current/consensus.z':
3 'http://208.83.223.34:443/tor/extra/all.z':
3 'http://193.23.244.244:80/tor/server/all.z':
3 'http://154.35.32.5:80/tor/extra/all.z':
2 'http://76.73.17.194:9030/tor/status-vote/current/consensus.z'
2 'http://76.73.17.194:9030/tor/extra/all.z':
2 'http://171.25.193.9:443/tor/server/all.z':
2 'http://171.25.193.9:443/tor/extra/all.z':
2 'http://128.31.0.39:9131/tor/server/all.z':
1 'http://76.73.17.194:9030/tor/status-vote/current/consensus.z':
1 'http://212.112.245.170:80/tor/server/all.z'
1 'http://212.112.245.170:80/tor/extra/all.z':
1 'http://154.35.32.5:80/tor/server/all.z':
1 'http://128.31.0.39:9131/tor/extra/all.z':
}}}
Stem attempts three requests before giving up, and very frequently hits
that limit. Some errors are connection resets and timeouts, but the most
frequent is a 'successful' connection where the compressed content is
simply truncated (and hence corrupt). Karsten, Kostas, and I ran into this
earlier too [https://lists.torproject.org/pipermail/tor-
dev/2013-June/004967.html on tor-dev@]...
{{{
atagar at odin:~/Desktop/tor/tor-utils$ grep "Unable to download descriptors"
logs/descriptor_checker.stem_debug | cut -f 10- -d ' ' | sort | uniq -c |
sort -nr
56 (2 retries remaining): Error -5 while decompressing data:
incomplete or truncated stream
44 (2 retries remaining): <urlopen error [Errno 111] Connection
refused>
36 (1 retries remaining): Error -5 while decompressing data:
incomplete or truncated stream
33 <urlopen error [Errno 111] Connection refused>
33 (1 retries remaining): <urlopen error [Errno 111] Connection
refused>
22 Error -5 while decompressing data: incomplete or truncated stream
6 (2 retries remaining): [Errno 104] Connection reset by peer
4 [Errno 104] Connection reset by peer
4 (1 retries remaining): [Errno 104] Connection reset by peer
1 <urlopen error timed out>
1 (2 retries remaining): <urlopen error timed out>
1 (2 retries remaining): timed out
1 (1 retries remaining): <urlopen error timed out>
}}}
I could simply up the retry count to something ridiculously high (say,
ten?) to address these issues but it would be better if we figured out the
root cause.
Any thoughts on how best to approach this?
Thanks! -Damian
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/9379>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list