<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></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 13 Jan 2016, at 00:53, Mike Perry <<a href="mailto:mikeperry@torproject.org" class="">mikeperry@torproject.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">This proposal aims to allow us to load balance properly between Guard,<br class="">Middle, and Exit nodes with the addition of padding traffic to the<br class="">network.<br class="">...<br class="">1. Overview<br class=""><br class="">For padding overhead due to Proposals 251 and 254, and changes to hidden<br class="">service path selection in Proposal 247, it will be useful to be able to<br class="">specify a pair of parameters that represents the additional traffic<br class="">present on Guard and Middle nodes due to these changes.<br class=""></div></div></blockquote><div><br class=""></div><div>I don't know if it's worth noting that proposals 252 and 260 (the Single Onion</div><div>Services variants) will reduce traffic to guard and middle nodes, as they</div><div>remove the nodes between the hidden service and client-controlled endpoint</div><div>(rendezvous point in Rendezvous Single Onion Services, extend point in</div><div>Single Onion Services).</div><div><br class=""></div><div>I think these will just be part of the overhead parameters?</div><br class=""><blockquote type="cite" class=""><div class=""><div class="">...<br class="">2. Simplified Load Balancing Equations<br class=""><br class="">Recall that the point of the load balancing equations in section 3.8.3<br class="">of dir-spec.txt is to ensure that an equal amount of client traffic is<br class="">distributed between Guards, Middles, Exits, and Guard+Exits, where each<br class="">flag type can occupy one or more positions in a path. This allocation is<br class="">accomplished by solving a system of equations for weights for flag<br class="">position selection to ensure equal allocation of client traffic for each<br class="">position in a circuit.<br class=""><br class="">If we ignore overhead for the moment and treat Guard+Exit nodes as Exit<br class="">nodes, then this allows the simplified system of equations to become:<br class=""><br class="">  Wgg*G == M + Wme*E + Wmg*G    # Guard position == middle position<br class="">  Wgg*G == Wee*E                # Guard position == equals exit position<br class="">  Wmg*G + Wgg*G == G            # Guard allocation weights sum to 1<br class="">  Wme*E + Wee*E == E            # Exit allocation weights sum to 1<br class=""><br class="">This system has four equations and four unknowns, and by transitivity we<br class="">ensure that allocated capacity for guard, middle, and exit positions are<br class="">all equal. Unlike the equations in 3.8.3 of dir-spec.txt, there are no<br class="">special cases to the solutions of these equations because there is no<br class="">shortage of constraints and no decision points for allocation based on<br class="">scarcity. Thus, there is only one solution. Using SymPy's symbolic<br class="">equation solver (see attached script) we obtain:<br class=""><br class="">       E + G + M       E + G + M       2*E - G - M       2*G - E - M<br class="">  Wee: ---------, Wgg: ---------, Wme: -----------, Wmg: ------------<br class="">          3*E             3*G              3*E               3*G<br class=""><br class="">For the rest of the flags weights, we will do the following:<br class=""><br class="">  Dual-flagged (Guard+Exit) nodes should be treated as Exits:<br class="">     Wgd = 0, Wmd = Wme, Wed = Wee<br class=""><br class="">  Directory requests use middle weights:<br class="">     Wbd=Wmd, Wbg=Wmg, Wbe=Wme, Wbm=Wmm<br class=""><br class="">  Handle bridges and strange exit policies:<br class="">     Wgm=Wgg, Wem=Wee, Weg=Wed<br class=""></div></div></blockquote><div><br class=""></div><div>I think this analysis assumes that all paths in the Tor network are 3-hop paths.</div><div><br class=""></div><div>What about the 4-hop paths created by circuit cannibalisation?</div><div>(We don't actually know what proportion of the Tor network has 3-hop vs 4-hop paths.)</div><div><br class=""></div><div>Depending on whether an exit or internal circuit is cannibalised, they can look like:</div><div>G M E E</div><div>G M M E</div><div><br class=""></div><div>And what about hidden service paths (paths that include two middle nodes?)</div><div>G M M</div><div><br class=""></div><div>Or, if cannibalised from an exit or internal circuit:</div><div>G M E M</div><div>G M M M</div><div><br class=""></div><div>Again, I think these will just be part of the overhead parameters?</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div class=""><font color="#000000" class="">…</font></div></div></blockquote><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>