<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Hi all,<div><br></div><div>Here's a summary of the current state of fallback directory mirrors.</div><div><br></div><div>Overall Design</div><div><br></div><div>This repository contains a list of potential fallback directory mirrors</div><div>(a fallback "offer list"), and a script that checks each mirror for speed</div><div>and reliability:</div><div><a href="https://gitweb.torproject.org/fallback-scripts.git/">https://gitweb.torproject.org/fallback-scripts.git/</a></div><div><br></div><div>There is a "Fallback Scripts" component for tickets:</div><div><a href="https://trac.torproject.org/projects/tor/query?status=!closed&component=Core+Tor%2FFallback+Scripts">https://trac.torproject.org/projects/tor/query?status=!closed&component=Core+Tor%2FFallback+Scripts</a><br><div><div><br></div><div>The fallback system is designed to gracefully degrade as fallback</div><div>directory mirrors fail. Failures shift load to directory authorities,</div><div>and cause brief delays during client bootstrap.</div><div><br></div><div>We expect the system to operate well, even if all the fallbacks have</div><div>failed. But we try to keep the fallback failure rate below 20-30%.</div><div>When the failure rate gets too high, we rebuild the fallback list.</div><div><br></div><div>Regular Tasks</div><div><br></div><div>This ticket is the parent ticket for the next fallback rebuild:</div><div><a href="https://trac.torproject.org/projects/tor/ticket/30971">https://trac.torproject.org/projects/tor/ticket/30971</a></div><div><br></div><div>This ticket contains the "offer list" changes that relay operators have</div><div>requested. I usually commit them all at once, but you should feel free</div><div>to do them incrementally:</div><div><a href="https://trac.torproject.org/projects/tor/ticket/30972">https://trac.torproject.org/projects/tor/ticket/30972</a></div><div><br></div><div>Sometimes, we don't have enough relays on the offer list, and we have</div><div>to ask relay operators to opt-in to the list. Ideally, we want at least 100</div><div>fallbacks, we usually have between 120-160.</div><div><br></div><div>Future Work</div><div><br></div><div>It's hard to verify changes to the offer list. Changes are usually sent by</div><div>email or through trac tickets. There's no reliable trust path from the</div><div>relay key to the email or ticket.</div><div><br></div><div>The opt-in process is also a manual process. It can be time-consuming.</div><div><br></div><div>To resolve these issues, I had planned to add a signed fallback offer line</div><div>to relay descriptors:</div><div><a href="https://trac.torproject.org/projects/tor/ticket/24839">https://trac.torproject.org/projects/tor/ticket/24839</a></div><div><br></div><div>Instead of checking the list in the fallback-scripts repository, the script</div><div>can check relay descriptors instead. (Or check both, during the transition</div><div>period.)</div><div><br></div><div>Unresolved Issues</div><div><br></div><div><div>Fallbacks eventually see the entire set of clients. Clients that are active </div><div>all the time may only ever contact one fallback. (Clients re-use the same</div><div>fallback for authority keys, and then switch to the consensus as soon as</div><div>possible.) But clients whose consensuses have expired will choose new</div><div>fallbacks at random.</div><div><br></div><div>Ideally, clients should select fallback (and maybe authority) guards.</div><div>That is, they should retry previously-selected fallbacks. There are some</div><div>tradeoffs here: a bad fallback guard can continue to manipulate its</div><div>client's view of the network. We can avoid this issue by selecting multiple</div><div>fallback guards.</div><div><br></div><div>Clients will need persistent state to remember their guards, so transient</div><div>systems like TAILS won't benefit from this change.</div></div><div><br><div dir="ltr"><span style="background-color: rgba(255, 255, 255, 0);">T</span><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">-- </span></div><div><span style="background-color: rgba(255, 255, 255, 0);">teor</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">----------------------------------------------------------------------</span></div><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div></div></div></div></div></body></html>