<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 27 Mar 2016, at 05:42, s7r <<a href="mailto:s7r@sky-ip.org" class="">s7r@sky-ip.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hello,<br class=""><br class="">teor, asn, see comments inline.<br class=""><br class="">On 3/24/2016 5:00 PM, Tim Wilson-Brown - teor wrote:<br class="">[snip]<br class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><blockquote type="cite" class="">The number of directory guards will increase when 0.2.8-stable is<br class="">released and relays and clients upgrade.<br class="">In 0.2.8, relays accept tunnelled directory connections even if they<br class="">do not have an open DirPort.<br class=""><br class=""></blockquote><br class="">Indeed, soon enough all guards will be directory guards.<br class=""></blockquote><br class="">Almost all guards will be directory guards. AccountingMax can disable<br class="">tunnelled directory fetches, as can DirCache 0.<br class=""></blockquote><br class="">I guess the guards that won't be accepting tunneled BEGIN_DIR<br class="">connections because of AccountingMax or DirCache 0 will also advertise<br class="">this in their descriptors, so these relays will not get a `V2Dir` flag.<br class="">Can you confirm if this is actually true? I assume the code has to do<br class="">this, otherwise how can a client know if he can initiate a tunneled<br class="">BEGIN_DIR connection with a relay or not.<br class=""></div></div></blockquote><div><br class=""></div><div>Yes, it adds a line to its descriptor saying it supports tunnelled connections.</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class="">[snip]<br class="">Client Bootstrap<br class=""><br class="">The proposal ignores client bootstrap.<br class=""><br class="">There are a limited number of hard-coded authorities and fallback<br class="">directories available during client bootstrap.<br class="">The client doesn't select guards until it has bootstrapped from one of<br class="">the 9 authorities or 20-200 fallback directories.<br class=""><br class=""></blockquote><br class="">I think this step is before prop#259 does its magic, since prop#259<br class="">first needs a consensus before it can work. Let's call this initial<br class="">(genesis) bootstrap Step 0 - only after a client has bootstrapped<br class="">(either from an authority or from a fallback directory) he will initiate<br class="">prop#259 to pick a guard.<br class=""></div></div></blockquote><div><br class=""></div><div>So do we throw away the information about reachable ports we gained during bootstrap?</div><div>It's simpler, but slower. Perhaps too slow for a good user experience.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class="">Bootstrap / Launch Time<br class=""><br class="">The proposal calculates bootstrap and launch time incorrectly.<br class=""><br class="">The proposal assumes that Tor attempts to connect to each guard, waits<br class="">for failure before trying another. But this isn't how Tor actually works<br class="">- it sometimes tries multiple connections simultaneously. So summing the<br class="">times for individual connection attempts to each guard doesn't provide<br class="">an accurate picture of the actual connection time.<br class=""><br class="">When bootstrapping in 0.2.7 and earlier, tor will try an authority, wait<br class="">up to 10 seconds for it to fail, then try another.<br class="">Then there's a 60 second wait before the third authority, but at that<br class="">point the user has likely lost interest. <br class=""><br class="">In 0.2.8, tor connects to authorities and fallbacks concurrently. It<br class="">will try 3 fallbacks and 1 authority in the first 10 seconds, and<br class="">download from whichever one connects first So 0.2.8 is far more likely<br class="">to connect within a few seconds.<br class=""><br class="">In all current versions, tor then downloads the consensus (~1.5MB, could<br class="">take 10 seconds or more), and chooses directory guards.<br class="">Then it simultaneously connects to 3 directory guards to download<br class="">certificates and descriptors.<br class="">The time it takes tor to work out if a connection to a directory guard<br class="">has succeeded happens simultaneously with other directory guard timeouts.<br class=""><br class=""></blockquote><br class="">Hmm. This requires some thinking. So Tor connects to the directory<br class="">guards immediately after it gets a consensus, to get the certificates<br class="">and descriptors. Plausible. I assume it does this via HTTP fetch on the<br class="">DirPort, since it has _no_ certificates and descriptors for routers.<br class="">Doesn't Tor need these certificates and descriptors to initiate tunneled<br class="">BEGIN_DIR requests with certain relays?<br class=""></div></div></blockquote><div><br class=""></div><div>It has identity key fingerprints hard-coded.</div><div>I'd have to look into the tor code to see if client bootstrap connections are HTTP or HTTPS - or run a tcpdump session.</div><br class=""><blockquote type="cite" class=""><div class=""><div class="">How will this work once DirPort is deprecated entirely? Or removing<br class="">DirPort from relays is not part of the plan?<br class=""></div></div></blockquote><div><br class=""></div><div>Deprecating the DirPort is not part of any plan I'm aware of.</div><div>Relays still use DirPorts, as do some obscure client configurations.</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class=""><br class="">Other Considerations<br class=""><br class="">We're considering increasing the 10 second stream attach timeout to<br class="">support users on slow and unreliable network connections (#16844). We<br class="">should think about the impact of that on this proposal - I'd hate to<br class="">double the time it takes tor to exhaust its UTOPIC guardlist.<br class=""><br class=""></blockquote>This is correct.<br class=""><br class="">Also, FascistFirewall torrc option: prop#259 sounds like it will take<br class="">care of users behind FascistFirewalls by default, should we eliminate it<br class="">entirely for simplicity? Or should we make it that FascistFirewall 1<br class="">will tell prop#259 to populate SAMPLED_GUARDS list only with dystopic<br class="">guards OR use only a SAMPLED_DYSTOPIC_GUARDS list if we choose to keep<br class="">the two lists disjoint?<br class=""></div></div></blockquote><br class=""></div><div>It depends how quickly we can auto-discover whether we're firewalled or not.</div><div>If it's going to take more than 30 seconds (typical user attention span), I'd use FascistFirewall as a hint to populate the UTOPIC lists.</div><div>This will happen automatically if we only populate the UTOPIC list with reachable addresses.</div><div>(Tor handles FascistFirewall, ReachableAddresses, and ClientUseIPv4/6 using the same set of functions.)</div><div><br class=""></div><div>Tim</div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Tim Wilson-Brown (teor)</div><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">teor2345 at gmail dot com<br class="">PGP 968F094B<br class=""><br class="">teor at blah dot im<br class="">OTR CAD08081 9755866D 89E2A06F E3558B7F B5A9D14F</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
<br class=""></body></html>