mirror of
https://github.com/torproject/torspec.git
synced 2024-11-30 13:20:37 +00:00
r8826@totoro: nickm | 2006-10-01 17:58:45 -0400
Disprefer exit nodes for entry, middle positions (fixes bug 200). Also, switch to using a uint64_t to hold "total bandwidth for all nodes" under consideration; crypt_rand_int would have died at 2GB/s network capacity. svn:r8571
This commit is contained in:
parent
5353ddd05e
commit
992a3b271b
@ -157,15 +157,24 @@ of their choices.
|
|||||||
below)
|
below)
|
||||||
- XXXX Choosing the length
|
- XXXX Choosing the length
|
||||||
|
|
||||||
For circuits that are not "fast", when choosing among multiple
|
For circuits that do not need to be not "fast", when choosing among
|
||||||
candidates for a path element, we choose randomly. For "fast" circuits,
|
multiple candidates for a path element, we choose randomly.
|
||||||
we choose
|
|
||||||
a given router with probability proportional to its advertised bandwidth
|
|
||||||
[the smaller of the 'rate' and 'observed' arguments to the "bandwidth"
|
|
||||||
element in its descriptor]. If a router's advertised bandwidth is greater
|
|
||||||
than MAX_BELIEVEABLE_BANDWIDTH (1.5 MB/sec), we clip to that value.
|
|
||||||
|
|
||||||
(XXXX We should do something to shift traffic away from exit nodes.)
|
For "fast" circuits, we a given router as an exit with probability
|
||||||
|
proportional to its advertised bandwidth [the smaller of the 'rate' and
|
||||||
|
'observed' arguments to the "bandwidth" element in its descriptor]. If a
|
||||||
|
router's advertised bandwidth is greater than MAX_BELIEVEABLE_BANDWIDTH
|
||||||
|
(1.5 MB/sec), we clip to that value.
|
||||||
|
|
||||||
|
For non-exit positions on "fast" circuits, we pick routers as above, but
|
||||||
|
we weight the clipped advertised bandwidth of Exit-flagged nodes depending
|
||||||
|
on the fraction of bandwidth available from non-Exit nodes. Call the
|
||||||
|
total clipped advertised bandwidth for Exit nodes under consideration E,
|
||||||
|
and the total clipped advertised bandwidth for non-Exit nodes under
|
||||||
|
consideration N. If E<N/2, we do not consider Exit-flagged nodes.
|
||||||
|
Otherwise, we weight their bandwidth with the factor (E-N/2)/(N+E-N/2) ==
|
||||||
|
(2E - N)/(2E + N). This ensures that bandwidth is evenly distributed over
|
||||||
|
nodes in 3-hop paths.
|
||||||
|
|
||||||
Additionally, we may be building circuits with one or more requests in
|
Additionally, we may be building circuits with one or more requests in
|
||||||
mind. Each kind of request puts certain constraints on paths:
|
mind. Each kind of request puts certain constraints on paths:
|
||||||
|
Loading…
Reference in New Issue
Block a user