Tor 0.2.1.1-alpha is out
Roger Dingledine
arma at mit.edu
Wed Jun 18 04:25:37 UTC 2008
Tor 0.2.1.1-alpha fixes a lot of memory fragmentation problems that
were making the Tor process bloat especially on Linux; makes our TLS
handshake blend in better; sends "bootstrap phase" status events to the
controller, so it can keep the user informed of progress (and problems)
fetching directory information and establishing circuits; and adds a
variety of smaller features.
The big Tor relays on Linux who are having memory problems should try
this one out and let us know how it goes for you.
(Yes, the 0.2.0.x tree hasn't quite gone stable yet. But we wanted to
keep making progress while it finishes stabilizing.)
https://www.torproject.org/download.html.en
Changes in version 0.2.1.1-alpha - 2008-06-13
o Major features:
- More work on making our TLS handshake blend in: modify the list
of ciphers advertised by OpenSSL in client mode to even more
closely resemble a common web browser. We cheat a little so that
we can advertise ciphers that the locally installed OpenSSL doesn't
know about.
- Start sending "bootstrap phase" status events to the controller,
so it can keep the user informed of progress fetching directory
information and establishing circuits. Also inform the controller
if we think we're stuck at a particular bootstrap phase. Implements
proposal 137.
- Resume using OpenSSL's RAND_poll() for better (and more portable)
cross-platform entropy collection again. We used to use it, then
stopped using it because of a bug that could crash systems that
called RAND_poll when they had a lot of fds open. It looks like the
bug got fixed in late 2006. Our new behavior is to call RAND_poll()
at startup, and to call RAND_poll() when we reseed later only if
we have a non-buggy OpenSSL version.
o Major bugfixes:
- When we choose to abandon a new entry guard because we think our
older ones might be better, close any circuits pending on that
new entry guard connection. This fix should make us recover much
faster when our network is down and then comes back. Bugfix on
0.1.2.8-beta; found by lodger.
o Memory fixes and improvements:
- Add a malloc_good_size implementation to OpenBSD_malloc_linux.c,
to avoid unused RAM in buffer chunks and memory pools.
- Speed up parsing and cut down on memory fragmentation by using
stack-style allocations for parsing directory objects. Previously,
this accounted for over 40% of allocations from within Tor's code
on a typical directory cache.
- Use a Bloom filter rather than a digest-based set to track which
descriptors we need to keep around when we're cleaning out old
router descriptors. This speeds up the computation significantly,
and may reduce fragmentation.
- Reduce the default smartlist size from 32 to 16; it turns out that
most smartlists hold around 8-12 elements tops.
- Make dumpstats() log the fullness and size of openssl-internal
buffers.
- If the user has applied the experimental SSL_MODE_RELEASE_BUFFERS
patch to their OpenSSL, turn it on to save memory on servers. This
patch will (with any luck) get included in a mainline distribution
before too long.
- Never use OpenSSL compression: it wastes RAM and CPU trying to
compress cells, which are basically all encrypted, compressed,
or both.
o Minor bugfixes:
- Stop reloading the router list from disk for no reason when we
run out of reachable directory mirrors. Once upon a time reloading
it would set the 'is_running' flag back to 1 for them. It hasn't
done that for a long time.
- In very rare situations new hidden service descriptors were
published earlier than 30 seconds after the last change to the
service. (We currently think that a hidden service descriptor
that's been stable for 30 seconds is worth publishing.)
o Minor features:
- Allow separate log levels to be configured for different logging
domains. For example, this allows one to log all notices, warnings,
or errors, plus all memory management messages of level debug or
higher, with: Log [MM] debug-err [*] notice-err file /var/log/tor.
- Add a couple of extra warnings to --enable-gcc-warnings for GCC 4.3,
and stop using a warning that had become unfixably verbose under
GCC 4.3.
- New --hush command-line option similar to --quiet. While --quiet
disables all logging to the console on startup, --hush limits the
output to messages of warning and error severity.
- Servers support a new URL scheme for consensus downloads that
allows the client to specify which authorities are trusted.
The server then only sends the consensus if the client will trust
it. Otherwise a 404 error is sent back. Clients use this
new scheme when the server supports it (meaning it's running
0.2.1.1-alpha or later). Implements proposal 134.
- New configure/torrc options (--enable-geoip-stats,
DirRecordUsageByCountry) to record how many IPs we've served
directory info to in each country code, how many status documents
total we've sent to each country code, and what share of the total
directory requests we should expect to see.
- Use the TLS1 hostname extension to more closely resemble browser
behavior.
- Lots of new unit tests.
- Add a macro to implement the common pattern of iterating through
two parallel lists in lockstep.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.torproject.org/pipermail/tor-talk/attachments/20080618/17b3483b/attachment.pgp>
More information about the tor-talk
mailing list