(Desperate) Plea for multi-person code review
Mike Perry
mikeperry at fscked.org
Sun Feb 14 04:53:02 UTC 2010
My past few posts to this list have been about developing new formulas
for load balancing Tor requests. I've since implemented these formulas
in my git branch mikeperry/consensus-bw-weights3. You can get it with:
git clone git://git.torproject.org/git/tor.git tor.git
cd tor.git
git remote add mikeperry git://git.torproject.org/mikeperry/tor
git fetch mikeperry
git branch --track mp-consensus-bw-weights3 mikeperry/consensus-bw-weights3
git checkout mp-consensus-bw-weights3
X11 users can see the change sets easily with 'gitk'.
The consensus weight calculation changes exist in
networkstatus_compute_bw_weights_v9() in dirvote.c, but what really
needs lots of eyeballs is smartlist_choose_by_bandwidth_weights() and
all the codepaths that lead to it in routerlist.c (and also those
elsewhere that don't, but should!). Basically anywhere we choose to
use a node somehow, we need to ensure we are properly weighting node
probability selection for it.
The reason why it is more important to review the client code than the
formulas right now is because every time we make an error client-side,
we need to wait almost an entire year after the fix before enough
clients upgrade and we begin to see the results of the fix on network
load. (Yes. It takes up to a year for everyone to upgrade.. We really
need an autoupdater.)
Weight calculation updates and bugfixes now will at least take place
as soon as 4 out of 7 directory authorities do a 'git pull', but
client errors with using weights can mean years of further bad Tor
performance.
Our track record with these codepaths hasn't exactly been great
either: So far we've made at least 3-4 critical errors in the
implementation of node selection, leading to uniform guard selection
in two separate instances, due to two different bugs! One of them is
ruining Tor performance as we speak, and things won't improve until
most of the clients upgrade to the not-yet-released 0.2.1.23.
I'm going to try to budget some time for statistical verification of
these codepaths later on, but that won't be foolproof either. If you
can read C code and have a few moments to spare, please do have a look
at my git branch and check it for logic, branching, arithmetic, and
transcription errors in at least the client node selection, if not
also the weight calculations themselves.
--
Mike Perry
Mad Computer Scientist
fscked.org evil labs
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20100213/90aa0de9/attachment.pgp>
More information about the tor-dev
mailing list