<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://blog.torproject.org" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>performance</title>
 <link>http://blog.torproject.org/category/tags/performance</link>
 <description>The taxonomy view with a depth of 0.</description>
 <language>en</language>
<item>
 <title>Investigating http proxy performance with Tor</title>
 <link>http://blog.torproject.org/blog/investigating-http-proxy-performance-tor</link>
 <description>&lt;p&gt;A while ago there was a thread on &lt;a href=&quot;http://archives.seul.org/or/talk/&quot; rel=&quot;nofollow&quot;&gt;OR-TALK&lt;/a&gt; that devolved into&lt;br /&gt;
&lt;blockquote&gt;&quot;why does Tor still ship ancient privoxy?&quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt; and&lt;br /&gt;
&lt;blockquote&gt;&quot;why are you shipping polipo with the Tor Browser Bundle instead of current privoxy?&quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;For those interested, the thread is here, &lt;a href=&quot;http://archives.seul.org/or/talk/Jul-2009/msg00063.html&quot; title=&quot;http://archives.seul.org/or/talk/Jul-2009/msg00063.html&quot; rel=&quot;nofollow&quot;&gt;http://archives.seul.org/or/talk/Jul-2009/msg00063.html&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Scott had a good argument for why we should update the bundles to the latest privoxy, and I agree, we should.  But then I started thinking about why we needed a proxy at all.  Almost all browsers support socks5 direct, isn&#039;t that faster than a middleman proxy?&lt;/p&gt;
&lt;p&gt;This got me thinking about why polipo is in the TBB, but not the other packages.  The TBB &quot;feels faster&quot; when using Tor than using the installed Tor, Vidalia, and Privoxy.  However, I couldn&#039;t find any actual testing of performance of polipo vs. privoxy vs. socks5 direct.  &lt;/p&gt;
&lt;p&gt;So I did it myself, in a loose manner.  I wanted to quantify &quot;feels faster&quot;.&lt;/p&gt;
&lt;p&gt;The raw data from all the testing is :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tamper Data as xml,&lt;/li&gt;
&lt;li&gt;proxy config files, &lt;/li&gt;
&lt;li&gt;and results in a spreadsheet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is all contained in &lt;a href=&quot;http://freehaven.net/~phobos/polipo-v-privoxy.tar.gz&quot; title=&quot;http://freehaven.net/~phobos/polipo-v-privoxy.tar.gz&quot; rel=&quot;nofollow&quot;&gt;http://freehaven.net/~phobos/polipo-v-privoxy.tar.gz&lt;/a&gt; {.asc).  There is a README as well.  And yes, the ruby script is a quick and dirty hack.&lt;/p&gt;
&lt;p&gt;I tested a few scenarios:&lt;/p&gt;
&lt;p&gt;1) native &lt;a href=&quot;http://www.pps.jussieu.fr/~jch/software/polipo/&quot; rel=&quot;nofollow&quot;&gt;polipo&lt;/a&gt; and &lt;a href=&quot;http://www.privoxy.org/&quot; rel=&quot;nofollow&quot;&gt;privoxy&lt;/a&gt; without using Tor.&lt;br /&gt;
2) polipo and privoxy forwarding to Tor localhost:9050.&lt;br /&gt;
3) firefox socks5 direct to Tor via localhost:9050.&lt;/p&gt;
&lt;p&gt;The summary of results:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Native polipo is 54.5% faster on average than native privoxy.  This could be due to polipo&#039;s caching, http 1.1 pipelining, and it can serve bits as fast as they come in from the network.  Privoxy needs to load the whole page, scan it, and then send it to the client.  Even if privoxy filtering is disabled, it still works the same way.&lt;/li&gt;
&lt;li&gt;Polipo caching shines with Tor usage.  Performance is still about 40% faster with polipo than privoxy.  Common images are cached, and served from the memory cache in single-digit millisecond ranges.  Privoxy needs to wait for Tor to wholly deliver the bits.  Caching is faster, this we know already.  However, from a user perspective, it&#039;s just faster to load pages.&lt;/li&gt;
&lt;li&gt;socks5 in Firefox 3.5.2 did better than I expected.  It was about twice as slow as polipo, but still twice as fast as privoxy.  I chalk this up to the tor circuit variability more than anything else.&lt;/li&gt;
&lt;li&gt;I tried testing a click to a second page to see how much polipo caching helps people reading different pages on the same site.  It helps, but not as much as I expected.  Polipo ranged from slower than privoxy to 40-100% faster. Too much variability to make a real determination.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caveats:  Testing under tor is highly variable.  I used the same circuits for both the polipo and privoxy tests to minimize variability.  However, I can&#039;t control node load and congestion.&lt;/p&gt;
&lt;p&gt;Out of 23 get requests for the Torproject.org/index.html.en, 17 are for the country flags.   Perhaps we should load these last at the bottom of the page, or do something else to speed up the torproject page load.&lt;/p&gt;
&lt;p&gt;As I was doing this, I kept thinking of other ways to do it better;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;time requests and bits between tor, the http proxy, and the browser.  How long does each request take to get from the browser, to the proxy, to tor and back across each layer?  how much latency does each piece of software add to the request and delivery?&lt;/li&gt;
&lt;li&gt;automate testing and let it run on a normal tor client over weeks. This will average out tor network variability and show &quot;typical&quot; user experience.&lt;/li&gt;
&lt;li&gt;Pick a sampling of the top 100 websites by visits worldwide and measure their performance with the three methods, fully instrumented as in #1.&lt;/li&gt;
&lt;li&gt;Do user experience measurements.  Pay/ask/bribe people to sit in front of a computer, video record their browsing and feedback, and ask for a rating of each configuration (socks5, polipo, privoxy, and a placebo).&lt;/li&gt;
&lt;li&gt;re-run #2 and run gcov to watch the code paths used in each piece of software, and figure out what can be optimized for performance.&lt;/li&gt;
&lt;li&gt;test various &quot;private browsing modes&quot; through tor to see which browser is faster; firefox, safari, chromium, torfox, or torora.&lt;/li&gt;
&lt;li&gt;how can we better tune polipo caching dynamically based on system ram config?  Does having 1GB of cache provide significant benefits over the default?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&#039;m sure there are lots of things wrong with my measurements, minimal analysis, and results.&lt;/p&gt;
&lt;p&gt;Constructive criticism is welcome.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/investigating-http-proxy-performance-tor#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/caching">caching</category>
 <category domain="http://blog.torproject.org/category/tags/faster-firefox">faster firefox</category>
 <category domain="http://blog.torproject.org/category/tags/faster-tor">faster tor</category>
 <category domain="http://blog.torproject.org/category/tags/open-research">open research</category>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <category domain="http://blog.torproject.org/category/tags/polipo">polipo</category>
 <category domain="http://blog.torproject.org/category/tags/privoxy">privoxy</category>
 <category domain="http://blog.torproject.org/category/tags/socks5">socks5</category>
 <category domain="http://blog.torproject.org/category/tags/tor-browser-bundle">tor browser bundle</category>
 <category domain="http://blog.torproject.org/category/tags/vidalia-bundle">vidalia bundle</category>
 <pubDate>Wed, 19 Aug 2009 14:57:17 -0700</pubDate>
 <dc:creator>phobos</dc:creator>
 <guid isPermaLink="false">171 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Roger&#039;s HAR2009 talk on Tor performance</title>
 <link>http://blog.torproject.org/har2009-video-tor-performance</link>
 <description>&lt;p&gt;Jake, Mike, Karsten, Sebastian, and I attended &lt;a href=&quot;https://har2009.org/&quot; rel=&quot;nofollow&quot;&gt;Hacking at Random&lt;/a&gt; last week in The Netherlands. I did a &lt;a href=&quot;https://har2009.org/program/events/33.en.html&quot; rel=&quot;nofollow&quot;&gt;talk&lt;/a&gt; on Tor performance challenges &amp;mdash; basically walking through the key pieces of the &lt;a href=&quot;https://blog.torproject.org/blog/why-tor-is-slow&quot; rel=&quot;nofollow&quot;&gt;&quot;Why Tor is Slow&quot;&lt;/a&gt; document that we wrote in March.&lt;/p&gt;
&lt;p&gt;As usual with European hacking cons, they produced a really well-done video just days after my talk. So if you want to get the highlights on what we&#039;re doing to speed up Tor and what roadblocks remain, &lt;a href=&quot;http://freehaven.net/~arma/har2009_Why_Tor_is_slow.mp4&quot; rel=&quot;nofollow&quot;&gt;take a look at the video&lt;/a&gt; and also the &lt;a href=&quot;http://freehaven.net/~arma/slides-har2009.pdf&quot; rel=&quot;nofollow&quot;&gt;slides that come with it&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/har2009-video-tor-performance#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <category domain="http://blog.torproject.org/category/tags/talks">talks</category>
 <category domain="http://blog.torproject.org/category/tags/videos">videos</category>
 <pubDate>Wed, 19 Aug 2009 13:30:38 -0700</pubDate>
 <dc:creator>arma</dc:creator>
 <guid isPermaLink="false">170 at http://blog.torproject.org</guid>
</item>
<item>
 <title>On the Recent Growth of the Tor Network</title>
 <link>http://blog.torproject.org/blog/recent-growth-tor-network</link>
 <description>&lt;p&gt;In the past few days the Tor network is seeing a lot of new users &lt;a href=&quot;https://blog.torproject.org/blog/measuring-tor-and-iran&quot;&gt;coming from Iran&lt;/a&gt;. At the same time we have heard from many people who want to support the Tor network by setting up more relays and &lt;a href=&quot;https://www.torproject.org/bridges&quot;&gt;bridges&lt;/a&gt;. Now we wanted to know, are these just promises, or did the network really grow? Here are the results:&lt;/p&gt;
&lt;p&gt;&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;The number of relays has grown by 359 or 24% to now 1827 relays within only one week to the highest &lt;a href=&quot;https://git.torproject.org/checkout/metrics/master/report/dirarch/dirarch-2009-06-22.pdf&quot;&gt;number of relays&lt;/a&gt; the network has ever seen. Likewise, the &lt;a href=&quot;https://git.torproject.org/checkout/metrics/master/report/bridges/bridges-2009-06-22.pdf&quot;&gt;number of bridges&lt;/a&gt; has increased by an incredible 69 % from 255 to 432 within one week. Awesome!&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;img height=&quot;350&quot; width=&quot;500&quot; src=&quot;https://blog.torproject.org/files/relays-2009-06-21.png&quot;&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;img height=&quot;350&quot; width=&quot;500&quot; src=&quot;https://blog.torproject.org/files/bridges-2009-06-21.png&quot;&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;So, does this mean everything is taken care of and no more relays or bridges are needed? Not at all! As you may know, Tor has some &lt;a href=&quot;https://blog.torproject.org/blog/why-tor-is-slow&quot;&gt;performance issues&lt;/a&gt; that are, among other things, the result of too few bandwidth capacity for too many clients. If you can, go &lt;a href=&quot;https://www.torproject.org/docs/tor-doc-relay&quot;&gt;setup more relays and/or bridges&lt;/a&gt; and keep them running even when the conflicts in the world do not hit the headlines. Be sure that your support is much appreciated!&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/recent-growth-tor-network#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/bridges">bridges</category>
 <category domain="http://blog.torproject.org/category/tags/metrics">metrics</category>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <enclosure url="http://blog.torproject.org/files/relays-2009-06-21.png" length="15649" type="image/png" />
 <pubDate>Mon, 22 Jun 2009 18:07:03 -0700</pubDate>
 <dc:creator>karsten</dc:creator>
 <guid isPermaLink="false">143 at http://blog.torproject.org</guid>
</item>
<item>
 <title>TorFlow Node Capacity, Integrity and Reliability Measurements at HotPETS</title>
 <link>http://blog.torproject.org/blog/torflow-node-capacity-integrity-and-reliability-measurements-hotpets</link>
 <description>&lt;p&gt;&lt;a href=&quot;https://blog.torproject.org/blog/measuring-tor-network-public-directory-information&quot; rel=&quot;nofollow&quot;&gt;Like Karsten&lt;/a&gt;, I too am presenting at &lt;a href=&quot;http://petsymposium.org/2009/hotpets.php&quot; rel=&quot;nofollow&quot;&gt;HotPETS&lt;/a&gt; in Seattle in August. My presentation will cover my work with my &lt;a href=&quot;https://svn.torproject.org/svn/torflow/trunk/&quot; rel=&quot;nofollow&quot;&gt;TorFlow suite&lt;/a&gt; - a python library and utility set to assist measuring and adjusting performance on the Tor network, and to scan the network for malfunctioning and misbehaving exits.&lt;/p&gt;
&lt;p&gt;One of the highlights is a system for &lt;a href=&quot;https://git.torproject.org/checkout/tor/master/doc/spec/proposals/160-bandwidth-offset.txt&quot; rel=&quot;nofollow&quot;&gt;performance feedback&lt;/a&gt;: a set of &lt;a href=&quot;https://git.torproject.org/checkout/tor/master/doc/spec/proposals/161-computing-bandwidth-adjustments.txt&quot; rel=&quot;nofollow&quot;&gt;training wheels of sorts&lt;/a&gt; for Tor&#039;s load balancing algorithms that once deployed, should greatly improve the performance of the network for 0.2.1 clients. I am very much excited about this and am looking forward to throwing the switch on it in the coming weeks.&lt;/p&gt;
&lt;p&gt;Also of note is the discovery that nodes that use Tor&#039;s built in rate-limiting are far less likely to fail circuits than those that do not, especially for Windows nodes. So if you are a Windows node operator, please rate limit your node slightly below your connection&#039;s capacity using either the Vidalia GUI or the BandwidthRate torrc config option.. I will be emailing the contact info addresses of nodes that are most affected by this soon.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://fscked.org/talks/TorFlow-HotPETS-final.pdf&quot; rel=&quot;nofollow&quot;&gt;paper for the presentation&lt;/a&gt; describes the library, utilities, and their results in much further detail.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/torflow-node-capacity-integrity-and-reliability-measurements-hotpets#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <category domain="http://blog.torproject.org/category/tags/research">research</category>
 <pubDate>Sun, 21 Jun 2009 02:32:49 -0700</pubDate>
 <dc:creator>mikeperry</dc:creator>
 <guid isPermaLink="false">140 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Measuring the Tor Network from Public Directory Information</title>
 <link>http://blog.torproject.org/blog/measuring-tor-network-public-directory-information</link>
 <description>&lt;p&gt;On this year&#039;s &lt;a href=&quot;http://petsymposium.org/2009/hotpets.php&quot; rel=&quot;nofollow&quot;&gt;HotPETs workshop&lt;/a&gt; (August 5-7 in Seattle, WA, USA) I&#039;m going to present some results on &lt;a href=&quot;http://freehaven.net/~karsten/metrics/measuring-tor-public-dir-info-final.pdf&quot; rel=&quot;nofollow&quot;&gt;Measuring the Tor Network from Public Directory Information&lt;/a&gt;. The main idea is to observe trends in the Tor network without having to measure any data other than &lt;a href=&quot;https://git.torproject.org/checkout/tor/master/doc/spec/dir-spec.txt&quot; rel=&quot;nofollow&quot;&gt;public directory information&lt;/a&gt;. These data are there anyway as they are required for clients to make good path selection decisions and build circuits. The results of this paper reveal problems in the current Tor network that need to be addressed, e.g., by &lt;a href=&quot;https://git.torproject.org/checkout/metrics/master/report/dirarch/flagrequirements-2009-04-11.pdf&quot; rel=&quot;nofollow&quot;&gt;lowering requirements for assigning certain flags&lt;/a&gt;, facilitating the upgrade process, improving support for dynamic IP addresses, possibly calculating bandwidth capacity more reliably, and clarifying legal issues for running relays in view of data retention laws. The next step in understanding the problems of the Tor network requires an &lt;a href=&quot;https://blog.torproject.org/blog/performance-measurements-and-blockingresistance-analysis-tor-network&quot; rel=&quot;nofollow&quot;&gt;extension of network measurements&lt;/a&gt; to improve &lt;a href=&quot;https://blog.torproject.org/blog/why-tor-is-slow&quot; rel=&quot;nofollow&quot;&gt;performance&lt;/a&gt; and blocking-resistance of Tor.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/measuring-tor-network-public-directory-information#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/censorship-circumvention">censorship circumvention</category>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <category domain="http://blog.torproject.org/category/tags/research">research</category>
 <pubDate>Tue, 16 Jun 2009 11:25:31 -0700</pubDate>
 <dc:creator>karsten</dc:creator>
 <guid isPermaLink="false">137 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Performance measurements and blocking-resistance analysis in the Tor network</title>
 <link>http://blog.torproject.org/blog/performance-measurements-and-blockingresistance-analysis-tor-network</link>
 <description>&lt;p&gt;The Tor network has grown to more than one thousand relays and millions of casual users over the past few years. We are proud of our network&#039;s popularity, but with growth has come increasing &lt;a href=&quot;https://blog.torproject.org/blog/why-tor-is-slow&quot; rel=&quot;nofollow&quot;&gt;performance problems&lt;/a&gt; and attempts by some countries to block access to the Tor network. In order to address these problems, we need to learn more about the Tor network. In this post, I describe the current state of network measurements in Tor and some proposed additions to help us understand the network better.&lt;/p&gt;
&lt;p&gt;Right now, relays, &lt;a href=&quot;https://www.torproject.org/bridges&quot; rel=&quot;nofollow&quot;&gt;bridges&lt;/a&gt;, and directories gather the following data for statistical purposes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Relays and bridges count the number of bytes that they have pushed in 15-minute intervals over the past 24 hours. They include these data in extra-info documents that they send to the directory authorities whenever they publish their server descriptor. See Figure 3 in the &lt;a href=&quot;http://git.torproject.org/checkout/metrics/master/report/dirarch/dirarch-2009-03-31.pdf&quot; rel=&quot;nofollow&quot;&gt;analysis of directory archives&lt;/a&gt; that shows that roughly half of the available bandwidth capacity is utilized.&lt;/li&gt;
&lt;li&gt;Bridges further include a rough number of clients per country that they have seen in the past 48 hours in their extra-info documents. We &lt;a href=&quot;http://git.torproject.org/checkout/tor/master/doc/spec/proposals/126-geoip-reporting.txt&quot; rel=&quot;nofollow&quot;&gt;added this feature&lt;/a&gt; in &lt;a href=&quot;http://git.torproject.org/checkout/tor/master/ChangeLog&quot; rel=&quot;nofollow&quot;&gt;version 0.2.0.13-alpha&lt;/a&gt; to help us learn when a given country is trying to block connections to bridges. It also lets us understand bridge adoption better: see for an example an analysis of &lt;a href=&quot;http://git.torproject.org/checkout/metrics/master/report/bridges/bridges-2009-04-04.pdf&quot; rel=&quot;nofollow&quot;&gt;bridge users by countries&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Directories since version &lt;a href=&quot;http://git.torproject.org/checkout/tor/master/ChangeLog&quot; rel=&quot;nofollow&quot;&gt;0.2.1.1-alpha&lt;/a&gt; can be configured to count the number of clients they see per country in the past 24 hours and to write them to a local file. We have used these data in the past to &lt;a href=&quot;http://git.torproject.org/checkout/tor/master/doc/spec/proposals/ideas/xxx-geoip-survey-plan.txt&quot; rel=&quot;nofollow&quot;&gt;estimate&lt;/a&gt; total &lt;a href=&quot;http://git.torproject.org/checkout/metrics/master/report/dirreq/directory-requests-2009-04-23.2.pdf&quot; rel=&quot;nofollow&quot;&gt;numbers&lt;/a&gt; and &lt;a href=&quot;http://git.torproject.org/checkout/metrics/master/report/dirreq/dirreq-report-2009-04-30.pdf&quot; rel=&quot;nofollow&quot;&gt;origins of clients&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It turns out that we need to learn more about the Tor network to make it more useful for everyone. In particular, we are trying to identify performance bottlenecks and want to be ready to notice if any countries start blocking access to the Tor network. Therefore, I am planning to extend network measurements by the following kinds of data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entry guards should count the number of clients per country seen in the past 24 hours and include these numbers in their extra-info documents. These data are similar to what bridges already gather about their clients as well as directories if configured accordingly. (Remember, because Tor paths are more than one hop, the entry guard knows you are using Tor but does not know anything about your destinations.) We need country counts from entry guards to learn how many clients are connected to a single entry guard and if there are or start to be any restrictions for clients connecting from specific countries.&lt;/li&gt;
&lt;li&gt;Relays should determine statistics about the number of bytes and cells waiting in their local queues and report them to the directory authorities in their extra-info documents. We need to &lt;a href=&quot;http://archives.seul.org/or/dev/Apr-2009/msg00007.html&quot; rel=&quot;nofollow&quot;&gt;learn more&lt;/a&gt; about buffer sizes of relays at various loads to identify current and future performance problems and fix them.&lt;/li&gt;
&lt;li&gt;Exit nodes should include the number of bytes and streams they pushed over the past 24 hours broken down by exiting port in their extra-info documents. These data are important for us to identify load-balancing problems with respect to &lt;a href=&quot;https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#RunARelayBut&quot; rel=&quot;nofollow&quot;&gt;exit policies&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These approaches have been designed so that none of the network data can be used to deanonymize our users. All network data are aggregated before being uploaded to the directory authorities: client addresses are resolved to countries, added up over at least 24 hours, and rounded up to the next multiple of a fixed number (currently 8). All network data should be made available via the directories just as the current statistical data can be obtained from downloading extra-info documents. The details of the network measurements as outlined here will be specified in &lt;a href=&quot;http://git.torproject.org/checkout/tor/master/doc/spec/proposals/001-process.txt&quot; rel=&quot;nofollow&quot;&gt;proposals&lt;/a&gt; and discussed on the &lt;a href=&quot;http://archives.seul.org/or/dev/&quot; rel=&quot;nofollow&quot;&gt;developer mailing list&lt;/a&gt;. You can check out our results on the &lt;a href=&quot;https://www.torproject.org/projects/metrics&quot; rel=&quot;nofollow&quot;&gt;metrics project page&lt;/a&gt; as we make progress.&lt;/p&gt;
&lt;p&gt;We are excited to finally start tackling the performance problems and to prepare ourselves to notice when countries start blocking access to the Tor network. We would love to have help from the rest of the research community in discussing safe ways to measure the described network data and to analyze them later on.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/performance-measurements-and-blockingresistance-analysis-tor-network#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/censorship-circumvention">censorship circumvention</category>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <category domain="http://blog.torproject.org/category/tags/research">research</category>
 <pubDate>Thu, 21 May 2009 13:19:22 -0700</pubDate>
 <dc:creator>karsten</dc:creator>
 <guid isPermaLink="false">129 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Why Tor is slow and what we&#039;re going to do about it</title>
 <link>http://blog.torproject.org/blog/why-tor-is-slow</link>
 <description>&lt;p&gt;I&#039;ve just finished writing up an explanation of all the various reasons why the Tor network is slow, and what we can do about each. Part of it comes down to design flaws; some of it is that a handful of users are overloading the network; and there&#039;s also simply not enough capacity to go around.&lt;/p&gt;
&lt;p&gt;Specifically, we&#039;ve identified six categories of problems to address, and laid out some steps to resolve each of them.&lt;/p&gt;
&lt;p&gt;You can read the pdf here:&lt;br /&gt;
&lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/roadmaps/2009-03-11-performance.pdf&quot; rel=&quot;nofollow&quot;&gt;https://svn.torproject.org/svn/tor/trunk/doc/roadmaps/2009-03-11-performance.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Andrew has also put together a real live &lt;a href=&quot;https://www.torproject.org/press/2009-03-12-performance-roadmap-press-release&quot; rel=&quot;nofollow&quot;&gt;press release&lt;/a&gt; to go with it.&lt;/p&gt;
&lt;p&gt;Now all that remains is to do everything. So if you want to help, or especially if you know any organizations that can help with funding, please help us make this happen!&lt;/p&gt;
&lt;p&gt;[Edit, 19 August 2009: you can &lt;a href=&quot;https://blog.torproject.org/har2009-video-tor-performance&quot; rel=&quot;nofollow&quot;&gt;watch the HAR2009 video explaining our key performance plans&lt;/a&gt;, if you aren&#039;t a fan of 25-page pdfs.]&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/why-tor-is-slow#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/development-roadmap">development roadmap</category>
 <category domain="http://blog.torproject.org/category/tags/funding">funding</category>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <pubDate>Fri, 13 Mar 2009 03:33:01 -0700</pubDate>
 <dc:creator>arma</dc:creator>
 <guid isPermaLink="false">116 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Overhead from directory info: past, present, future</title>
 <link>http://blog.torproject.org/blog/overhead-directory-info%3A-past%2C-present%2C-future</link>
 <description>&lt;p&gt;A growing number of people want to use Tor in low-bandwidth contexts (e.g. modems or shared Internet cafes in the Middle East) and mobile contexts (start up a Tor client, use it for a short time, and then stop it again). Currently Tor is nearly unusable in these situations, because it spends too many bytes fetching directory info. This post summarizes the steps we&#039;ve taken so far to reduce directory overhead, and explains the steps that are coming next.&lt;/p&gt;
&lt;p&gt;First, what do I mean by &quot;directory info&quot;? Part of the Tor design is the _discovery_ component: how clients learn about the available Tor relays, along with their keys, locations, exit policies, and so on. Tor&#039;s solution so far uses a few trusted directory authorities that sign and distribute official lists of the relays that make up the Tor network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;History of v1, v2, v3 dir protocols&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Over the years we&#039;ve had several different &quot;directory protocols&quot;, each more bandwidth-friendly than the last, and often providing stronger security properties as well. In Tor&#039;s &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/dir-spec-v1.txt&quot; rel=&quot;nofollow&quot;&gt;first directory design&lt;/a&gt; (Sept 2002), each authority created its own list of every relay descriptor, as one flat text file. A short summary of relay status at the top of the file told clients which relays were reachable. Every Tor client fetched a copy from an authority every 10 minutes.&lt;/p&gt;
&lt;p&gt;Tor 0.0.8 (Aug 2004) introduced &quot;directory caches&quot;, where normal relays would fetch a copy of the directory and serve it to others, to take some burden off the authorities. Tor 0.0.9 (Dec 2004) let clients download &quot;running routers&quot; status summaries separately from the main directory, so they could keep more up-to-date on reachability without needing to refetch all the descriptors. It also added zlib-style compression during transfer. At this point everybody fetched the whole directory every hour and the running-routers document every 15 minutes.&lt;/p&gt;
&lt;p&gt;There were two big flaws with the v1 directory scheme: a security problem and an overhead problem. The security problem was that even though there were three authorities, you just went with the most recent opinion you could find, so a single evil authority could screw everybody. The overhead problem was that clients were fetching a new directory even when very little of it had changed. In Dec 2004 there were 57 relays and the uncompressed directory was 172KB; but by May 2006 we were up to 749 relays and the full directory was almost 1MB compressed. Even though we&#039;d lowered the period for fetching new copies to 2 hours (20 minutes for caches), this was not good.&lt;/p&gt;
&lt;p&gt;We introduced the &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/dir-spec-v2.txt&quot; rel=&quot;nofollow&quot;&gt;v2 directory design&lt;/a&gt; in Tor 0.1.1.20 in May 2006. Each authority now produced its own &quot;network status&quot; document, which listed brief summaries of each relay along with a hash of the current relay descriptor. Clients fetched all the status documents (there were 5 authorities by now) and ignored relays listed by less than half of them. Clients only fetched the relay descriptors they were missing. Once bootstrapped, clients fetched one new status document (round robin) per hour. Peter Palfrader produced a &lt;a href=&quot;http://asteria.noreply.org/~weasel/Tor/tor-client-download-stats-longterm-dl.jpg&quot; rel=&quot;nofollow&quot;&gt;graph of bandwidth needed to bootstrap and then keep up-to-date over a day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All of the improvements so far were oriented toward saving bandwidth at the server side: we figured that clients had plenty of bandwidth, and we wanted to avoid overloading the authorities and caches. But if we wanted to add more directory authorities (a majority of 5 is still an uncomfortably small number), bootstrapping clients would have to fetch one more network status for every new authority. By early 2008, each status document listed 2500 relay summaries and came in around 175KB compressed, meaning you needed 875KB of status docs when starting up, and then another megabyte of descriptors after that. And we couldn&#039;t add more authorities without making the problem even worse.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/dir-spec.txt&quot; rel=&quot;nofollow&quot;&gt;v3 directory design&lt;/a&gt; in Tor 0.2.0.30 (Jul 2008) solved this last problem by having the authorities coordinate and produce an hourly &quot;consensus&quot; network status document, signed by a majority of the six v3 authorities. Now clients only have to fetch one status document.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Next fixes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Based in part on sponsorship by &lt;a href=&quot;http://www.nlnet.nl/&quot; rel=&quot;nofollow&quot;&gt;NLnet&lt;/a&gt; to &lt;a href=&quot;https://www.torproject.org/projects/lowbandwidth&quot; rel=&quot;nofollow&quot;&gt;reduce Tor&#039;s directory overhead&lt;/a&gt;, there are two directions we&#039;re exploring now: reducing relay download overhead and reducing consensus networkstatus download overhead.&lt;/p&gt;
&lt;p&gt;We&#039;ve cut relay descriptor size by 60% by &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/104-short-descriptors.txt&quot; rel=&quot;nofollow&quot;&gt;moving some of the descriptor info to separate &quot;extra-info&quot; descriptors that clients don&#039;t need to fetch&lt;/a&gt;, and we&#039;ve cut the consensus size by 40% by &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/138-remove-down-routers-from-consensus.txt&quot; rel=&quot;nofollow&quot;&gt;leaving out non-Running relays&lt;/a&gt; (since clients won&#039;t fetch descriptors for them anyway).&lt;/p&gt;
&lt;p&gt;We spent the second half of 2008 working on a &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/141-jit-sd-downloads.txt&quot; rel=&quot;nofollow&quot;&gt;much more radical design change&lt;/a&gt; where we move all the descriptor components that are used for path selection into the consensus, and then clients would download each relay descriptor &quot;just in time&quot; as part of circuit extension. This design would have two huge benefits: a) clients download zero descriptors at startup, greatly speeding bootstrapping, and b) the total number of relay descriptor downloads would be based on the number of circuits built, regardless of how many relays are in the network.&lt;/p&gt;
&lt;p&gt;Alas, we have backed off on this proposal: Karsten Loesing&#039;s work on &lt;a href=&quot;https://www.torproject.org/projects/hidserv&quot; rel=&quot;nofollow&quot;&gt;hidden service performance&lt;/a&gt; concluded that the circuit extension is the main performance killer, and our &quot;just in time&quot; download proposal would add more round-trips and complexity into exactly that step. So we have a new plan: we&#039;re still going to move all the path-selection information into the consensus, but then we&#039;re going to put the remaining pieces into a new &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/158-microdescriptors.txt&quot; rel=&quot;nofollow&quot;&gt;microdescriptor&lt;/a&gt; that will hopefully change at most weekly. That means the initial bootstrap costs will still be there (though the microdescriptor is maybe a third the size of the normal descriptor), but so long as you can keep a disk cache, descriptor maintenance will be reduced to roughly zero. We&#039;re aiming to roll this change out in Tor 0.2.2.x, in mid 2009.&lt;/p&gt;
&lt;p&gt;We also have plans to further reduce the consensus download overhead. Since the consensus doesn&#039;t actually change that much from one hour to the next, clients should fetch &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/140-consensus-diffs.txt&quot; rel=&quot;nofollow&quot;&gt;consensus diffs&lt;/a&gt; rather than fetching a whole new consensus. We could expect another 80% reduction in size here. We hope to roll this step out in mid to late 2009. Alas, this goal is stymied by the fact that &lt;a href=&quot;http://archives.seul.org/or/dev/Jun-2008/msg00031.html&quot; rel=&quot;nofollow&quot;&gt;we haven&#039;t found any small portable BSD-licensed C diff libraries&lt;/a&gt;. Anybody know one?&lt;/p&gt;
&lt;p&gt;So these two changes together mean an initial bootstrap cost of maybe 100KB+300KB, and then a maintenance cost of maybe 20KB/hour. But actually, once we&#039;ve gotten the maintenance level so low, we should think about updating the consensus more often than once an hour. The goal would be to get relays that change IP addresses back into action as soon as possible -- currently it takes 2 to 4 hours before a new relay (or a relay with a new location) gets noticed by clients. Since &lt;a href=&quot;http://freehaven.net/~karsten/metrics/dirarch-2009-02-11.pdf&quot; rel=&quot;nofollow&quot;&gt;one-third of Tor relays run on dynamic IP addresses&lt;/a&gt;, bringing that level down to 30 to 60 minutes could mean a lot more network capacity.&lt;/p&gt;
&lt;p&gt;Down the road, there are even more radical design changes to consider. One day there will be too many relays for every client to know about all of them, so we will want to partition the network (see Section 4.4 of &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/roadmaps/2008-12-19-roadmap-full.pdf&quot; rel=&quot;nofollow&quot;&gt;Tor&#039;s development roadmap&lt;/a&gt;). When we do that, we can bound the amount of directory info that each client has to maintain. Another promising idea is to figure out ways to let clients build paths through the network while requiring less information about each relay. There&#039;s definitely a tradeoff here between centralized coordination (which is easier to design, and can more easily provide good anonymity properties) and scaling to many tens of thousands of relays. But that, as they say, is a story for another time.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/overhead-directory-info%3A-past%2C-present%2C-future#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/directory">directory</category>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <category domain="http://blog.torproject.org/category/tags/research">research</category>
 <pubDate>Sun, 15 Feb 2009 23:05:16 -0800</pubDate>
 <dc:creator>arma</dc:creator>
 <guid isPermaLink="false">101 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Two incentive designs for Tor</title>
 <link>http://blog.torproject.org/blog/two-incentive-designs-tor</link>
 <description>&lt;p&gt;One big challenge to making Tor fast is providing incentives for users to act as relays. So far we&#039;ve been getting more relays by 1) building community through interacting more with relay operators, listing the fast ones prominently in the &lt;a href=&quot;http://torstatus.kgprog.com/index.php?SR=Bandwidth&amp;amp;SO=Desc&quot; rel=&quot;nofollow&quot;&gt;Tor status pages&lt;/a&gt;, and generally making it clear that you will make the Tor network better if you do, and 2) making it really easy to configure and run a relay by adding a simple GUI interface in Vidalia and adding UPnP support. But we should also consider more direct incentive approaches, for example where Tor is faster for you if you&#039;re a relay.&lt;/p&gt;
&lt;p&gt;There are two papers that came out in 2008 that everybody pondering incentives in Tor should read. The first is &lt;a href=&quot;http://freehaven.net/~arma/incentives-tr08.pdf&quot; rel=&quot;nofollow&quot;&gt;&quot;Building Incentives into Tor&quot;&lt;/a&gt;, a tech report I coauthored with Johnny Ngan and Dan Wallach from Rice University. The second is &lt;a href=&quot;http://freehaven.net/anonbib/#raykova-pet2008&quot; rel=&quot;nofollow&quot;&gt;&quot;Payment for Anonymous Routing&quot;&lt;/a&gt;, published at &lt;a href=&quot;http://petsymposium.org/2008/program.php&quot; rel=&quot;nofollow&quot;&gt;PETS 2008&lt;/a&gt; by Androulaki et al from Columbia University.&lt;/p&gt;
&lt;p&gt;The first paper proposes that Tor&#039;s directory authorities should spot check relays to make sure they&#039;re behaving well, and assign &quot;gold star&quot; flags to the good ones in the networkstatus consensus. Then relays give priority service to connections from people who have gold stars. We ran simulations of the idea for various combinations of users and strategies (selfish, cooperative, adaptive, etc), and showed that in general the performance for gold-star users stays good even with many other users and a heavy traffic load on the network. The other main goal of the design uses an economic argument: not only does it provide the (explicit) incentive to run a relay, but it also aims to grow the overall capacity of the network, so even non-relays will benefit.&lt;/p&gt;
&lt;p&gt;However, this incentive design has a serious flaw: the set of gold-star users is public. Over time an attacker can narrow down which relays are always the ones online when a certain activity (e.g. posting to a blog) happens. One fix might be to make the gold star status persist for a few weeks after the relay stops offering service, to dampen out fluctuations in the anonymity sets. But I fear that this narrowing-down attack (also known in research papers as the &quot;intersection attack&quot;) is still going to work really well against users who only relay traffic around the times they want good performance.&lt;/p&gt;
&lt;p&gt;It would seem that any incentives scheme that treats currently running relays specially will fall prey to this attack. We need to find some way to greatly increase the set of people who might be getting priority service. That&#039;s where the Columbia paper comes in: they propose that Tor clients use e-cash (digital coins) to pay for high-priority circuits.  The bulk of the paper is in working out how to both a) make sure users can&#039;t cheat too often, and b) make sure relays can&#039;t use the payments to trace users. They use a hybrid digital cash design, where clients don&#039;t mind identifying themselves to the first hop, but then use anonymous digital cash when paying the later hops in the circuit. Most anonymous credential schemes involve way too much computational overhead, so having one that&#039;s more practical is a great step.&lt;/p&gt;
&lt;p&gt;Because anybody can buy the digital coins, it&#039;s not so easy to build a set of suspects when you see somebody use a high-priority circuit.  Of course, once real money gets involved, things get more complex. One big problem is the bank. Actually building a centralized place where people turn dollars into bits and back is a daunting exercise, and other projects have learned the lesson that it&#039;s hard to get right. Plus there are still unsolved anonymity questions -- if we see Alice use a credit card to buy some anonymous coins, and then a few minutes later some anonymous person spends some anonymous coins, what did we learn?&lt;/p&gt;
&lt;p&gt;On top of that are the social implications of adding money into the system. Nick keeps reminding me of sociological studies saying that rewarding volunteers with t-shirts makes them feel good about their contribution, whereas rewarding them with a small amount of cash makes them subconsciously start to value their contribution based on the cash you give them. So they&#039;re more likely to stop volunteering, as they don&#039;t feel their effort is properly appreciated. More details &lt;a href=&quot;http://www.congo-education.net/wealth-of-networks/ch-04.htm&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;, &lt;a href=&quot;http://fiveandone.wikispaces.com/file/view/Why+Incentive+Plans+Cannot+Work.pdf&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;, and &lt;a href=&quot;http://www.google.com/search?q=Effects+of+externally+mediated+rewards+on+intrinsic+motivation&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;. It&#039;s hard to say how right this research is, but it seems a rough set of variables to add in if we can avoid it.&lt;/p&gt;
&lt;p&gt;Beyond that, paying relays introduces other problems. For one, relays now have new incentives to cheat, or to minimize their traffic costs compared to the payments. How do we achieve a good decentralized network if everybody gravitates to the same cheapest hosting provider? Money can even &lt;a href=&quot;http://archives.seul.org/or/talk/Dec-2008/msg00061.html&quot; rel=&quot;nofollow&quot;&gt;change the legal status of relays&lt;/a&gt; in some cases.&lt;/p&gt;
&lt;p&gt;So how to proceed? My current idea is a combination of the two designs. The directory authorities give out digital coins in exchange for being a good relay, and the coins can be used to build high-priority circuits. The relays track the coins just enough to prevent too much double-spending (using a coin more than once), and then discard them. Now there is no bank, and no real money involved. It&#039;s just a resource management approach.&lt;/p&gt;
&lt;p&gt;Will a secondary market appear, where people sell their coins on eBay? Perhaps. Fine with me if so. I think that&#039;s a different situation than having the protocol itself designed to transfer dollars from users to relays.&lt;/p&gt;
&lt;p&gt;The single-use coins make me uncomfortable, because there&#039;s a lot of crypto infrastructure and performance questions in getting all those coins right. Worse, if we&#039;re really spending coins for every circuit, we will want to rethink our current &quot;feel free to build a bunch of circuits and just use a few&quot; approach that we&#039;re getting even more attached to with &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/151-path-selection-improvements.txt&quot; rel=&quot;nofollow&quot;&gt;proposal 151&lt;/a&gt;. In my ideal world we could give out coins (credentials) that could be used as much as you like in a given time period, so we don&#039;t need the whole anonymous cash infrastructure. But if somebody posts their credential to Slashdot, I want some way either to revoke it and/or to notice and not give that guy any more credentials in the future, and that seems hard. So it looks like it&#039;ll be single-use coins or bust.&lt;/p&gt;
&lt;p&gt;Of course, lest I appear too optimistic, there are a few more barriers to getting this right. We need to make sure Tor&#039;s network design can scale to make use of many more relays. We&#039;ve been making some progress lately at &lt;a href=&quot;https://www.torproject.org/projects/lowbandwidth&quot; rel=&quot;nofollow&quot;&gt;decreasing the bandwidth required for directory downloads&lt;/a&gt;, but &lt;a href=&quot;https://www.torproject.org/faq#EverybodyARelay&quot; rel=&quot;nofollow&quot;&gt;many other aspects of this problem still need to be solved&lt;/a&gt;. We also need a better way to actually implement priority circuits: our &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/111-local-traffic-priority.txt&quot; rel=&quot;nofollow&quot;&gt;current approach&lt;/a&gt; sometimes accidentally gives high priority to other circuits too. Lastly, we might find that per-circuit accounting is not sufficient to handle the load that some users want to put on the network. If so, somebody will need to start doing design and research on per-byte accounting.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/two-incentive-designs-tor#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/incentives">incentives</category>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <category domain="http://blog.torproject.org/category/tags/research">research</category>
 <pubDate>Sat, 17 Jan 2009 12:42:56 -0800</pubDate>
 <dc:creator>arma</dc:creator>
 <guid isPermaLink="false">92 at http://blog.torproject.org</guid>
</item>
<item>
 <title>Improvements on Hidden Service Performance -- or not?</title>
 <link>http://blog.torproject.org/blog/improvements-hidden-service-performance-or-not%3F</link>
 <description>&lt;p&gt;During the past eight months we have been trying pretty hard to improve hidden service performance. This work was part of the project to &lt;a href=&quot;https://www.torproject.org/projects/hidserv.html&quot; rel=&quot;nofollow&quot;&gt;Speed Up Tor Hidden Services&lt;/a&gt;, generously funded by the NLnet Foundation. As of today, we know that we have succeeded in our attempts -- well, or not?&lt;/p&gt;
&lt;p&gt;We started in June 2008 by measuring how long it takes until hidden services are registered in the network, how long it takes for clients to connect to them, and similar metrics. An &lt;a href=&quot;http://freehaven.net/~karsten/hidserv/perfanalysis-2008-06-15.pdf&quot; rel=&quot;nofollow&quot;&gt;analysis&lt;/a&gt; of these data revealed what problems could be responsible for the experienced delays: First of all, we found in total 10 bugs, some of them delaying hidden services significantly. These bugs are now fixed in the 0.2.1.x series (and the major bugs also in the 0.2.0.x series). Second, we identified certain substeps as the bottlenecks of the hidden service protocol, all of them related to building circuits on demand. We proposed a few design changes to overcome these bottlenecks by reducing circuit-build timeouts or by building circuits in parallel. These design changes have been &lt;a href=&quot;http://freehaven.net/~karsten/hidserv/discussion-2008-07-15.pdf&quot; rel=&quot;nofollow&quot;&gt;discussed&lt;/a&gt;, &lt;a href=&quot;http://freehaven.net/~karsten/hidserv/design-2008-08-15.pdf&quot; rel=&quot;nofollow&quot;&gt;evaluated&lt;/a&gt;, &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/155-four-hidden-service-improvements.txt&quot; rel=&quot;nofollow&quot;&gt;specified&lt;/a&gt;, and finally implemented in the 0.2.1.x series.&lt;/p&gt;
&lt;p&gt;As of today, we know that we were successful in our attempts -- well, at least in parts. In December 2008, we performed a second set of measurements with a Tor version that had all bugfixes and design changes. Today we finished the analysis of these new data by &lt;a href=&quot;http://freehaven.net/~karsten/hidserv/comparison-2009-01-15.pdf&quot; rel=&quot;nofollow&quot;&gt;comparing&lt;/a&gt; them with the June data. We found that the time until hidden services are advertised in the network halved from 2:12 minutes to 58 seconds in the mean. This improvement is by far better than we had expected. With this improvement we might even think about reducing an internal descriptor stabilization time from 30 seconds to a lower value, which would further reduce service publication time. However, we also found that the time that clients need to wait while connecting to hidden services remained unchanged at 56 seconds in the mean. Even though our design changes were effective, the &lt;a href=&quot;https://svn.torproject.org/svn/tor/trunk/doc/spec/proposals/114-distributed-storage.txt&quot; rel=&quot;nofollow&quot;&gt;distributed storage&lt;/a&gt; for hidden service descriptors has counter-balanced all gains achieved here. This deteriorating effect was not expected when we started. In the future, we should therefore focus on speeding up downloads from the distributed hidden service directory, for example by parallelizing requests.&lt;/p&gt;
&lt;p&gt;All in all, these improvements are an important step in making hidden services faster. Now we know pretty well what the main problem of hidden services is: on-demand circuit building. Of course, this problem is not specific to hidden services, but a general problem of Tor. Fortunately, hidden services would benefit from all improvements that are made to circuit building in Tor. In the future we are focusing on improvements to circuit building in general.&lt;/p&gt;
</description>
 <comments>http://blog.torproject.org/blog/improvements-hidden-service-performance-or-not%3F#comments</comments>
 <category domain="http://blog.torproject.org/category/tags/hidden-services">hidden services</category>
 <category domain="http://blog.torproject.org/category/tags/performance">performance</category>
 <pubDate>Thu, 15 Jan 2009 12:32:56 -0800</pubDate>
 <dc:creator>karsten</dc:creator>
 <guid isPermaLink="false">90 at http://blog.torproject.org</guid>
</item>
</channel>
</rss>
