Opened 2 years ago

Last modified 14 months ago

#24046 new enhancement

Building circuits through Fast (actually) relays

Reported by: IgorMitrofanov Owned by:
Priority: Medium Milestone: Tor: unspecified
Component: Core Tor/Tor Version:
Severity: Normal Keywords:
Cc: nikita@… Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

As a Tor user, I would like to have an option to build my circuits through relays that can deliver a typical modern web page within a few seconds. I do understand that it depends on many factors outside the nominal capacity of relays, and that it may not always be possible.

I run a few relays, and the "Fast" flag caught my attention mainly due to its name. The "Fast" flag may not be the right knob to protect the user experience; this ticket is just to make sure it does not stand in the way.

A relay is only required to provide 100 KB/s of *maximum* bandwidth to be considered "Fast" and for users to build general-purpose circuits through it. I suspect that 100 KB/s, even with no other traffic competing for that bandwidth, is insufficient for a good browsing experience.

In addition to the threshold being low, it does not seem to be consistently applied. Sorting the list of all relays on blutmagie.de shows that some relays with bandwidth as low as 1 KB/s still have the "Fast" flag set.

I don't have a proposal - I suspect "making Tor faster" is a big and complex challenge. With this ticket, I would like to make sure that 1) the 100 KB/s threshold is not just a magic number but is derived from some concrete (Sybil-related and/or user experience-related) rule that allows it to auto-scale, and 2) it is applied consistently.

Child Tickets

Change History (8)

comment:1 in reply to:  description Changed 2 years ago by arma

Replying to IgorMitrofanov:

In addition to the threshold being low, it does not seem to be consistently applied. Sorting the list of all relays on blutmagie.de shows that some relays with bandwidth as low as 1 KB/s still have the "Fast" flag set.

Can you point to the Atlas links for some of these relays?

There are many things that can be described as a relay's "bandwidth", and I suspect that Blutmagie might be referring to something different here.

comment:2 Changed 2 years ago by arma

For posterity, here's a snapshot from the vote this round:

$ grep flag-thresholds v3-status-votes
flag-thresholds stable-uptime=1134437 stable-mtbf=2116106 fast-speed=102000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=5261000 guard-bw-exc-exits=4838000 enough-mtbf=1 ignoring-advertised-bws=0
flag-thresholds stable-uptime=1154511 stable-mtbf=2100499 fast-speed=54000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=7550000 guard-bw-exc-exits=6600000 enough-mtbf=1 ignoring-advertised-bws=1
flag-thresholds stable-uptime=1138069 stable-mtbf=1592656 fast-speed=102000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=5261000 guard-bw-exc-exits=4845000 enough-mtbf=1 ignoring-advertised-bws=0
flag-thresholds stable-uptime=1134543 stable-mtbf=2032332 fast-speed=102000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=5361000 guard-bw-exc-exits=4917000 enough-mtbf=1 ignoring-advertised-bws=0
flag-thresholds stable-uptime=1134437 stable-mtbf=2139903 fast-speed=102000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=5420000 guard-bw-exc-exits=4976000 enough-mtbf=1 ignoring-advertised-bws=0
flag-thresholds stable-uptime=1221337 stable-mtbf=1721768 fast-speed=82000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=6740000 guard-bw-exc-exits=6000000 enough-mtbf=1 ignoring-advertised-bws=1
flag-thresholds stable-uptime=1146962 stable-mtbf=2149171 fast-speed=102000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=5453000 guard-bw-exc-exits=5034000 enough-mtbf=1 ignoring-advertised-bws=0
flag-thresholds stable-uptime=1150537 stable-mtbf=1068904 fast-speed=46000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=6350000 guard-bw-exc-exits=5590000 enough-mtbf=1 ignoring-advertised-bws=1
flag-thresholds stable-uptime=1149579 stable-mtbf=1752326 fast-speed=61000 guard-wfu=98.000% guard-tk=691200 guard-bw-inc-exits=7520000 guard-bw-exc-exits=6710000 enough-mtbf=1 ignoring-advertised-bws=1

Five of the nine votes have a Fast threshold of 100KBytes, because five of the nine votes don't have their own bwauth attached to them. The ticket for getting the non-measurers to just believe the measurers is #11327.

comment:3 Changed 2 years ago by IgorMitrofanov

I clicked on several sub-100 KB/s relays on blutmagie.de with the "Fast" flag set.
Atlas showed 100+ KB/s observed bandwidth for them.

For example:
https://atlas.torproject.org/#details/0E357D8757DF21AC11B21B90870D957A03F0D048
http://blutmagie.de/router_detail.php?FP=0e357d8757df21ac11b21b90870d957a03f0d048

1 KB/s on blutmagie, 134.55 KB/s observed on Atlas (single spike a few days ago). The chart on blutmagie says "Bytes/Sec Average", so perhaps its a different number indeed.

Last edited 2 years ago by IgorMitrofanov (previous) (diff)

comment:4 Changed 2 years ago by nikita

Cc: nikita@… added

So based on the votes, increasing the 100 KB/s threshold won't have much effect b/c the measured threshold (which I'm assuming is the 12.5th percentile of consensus weight?) is actually below 100 KB/s.

A probably impractical suggestion: could something like TorPerf be used to decide this threshold? The median *circuit* BW is around 300 KB/s (https://metrics.torproject.org/torperf.html?start=2017-08-01&end=2017-10-30&source=all&server=public&filesize=5mb), so having a relay with a lower bandwidth than that will make it very likely this relay will be a bottleneck for you.

comment:5 in reply to:  3 Changed 2 years ago by arma

Replying to IgorMitrofanov:

1 KB/s on blutmagie, 134.55 KB/s observed on Atlas (single spike a few days ago). The chart on blutmagie says "Bytes/Sec Average", so perhaps its a different number indeed.

Ah ha -- yes, I think the 1KB/s is actually reported average traffic handled. Not capacity.

comment:6 in reply to:  4 Changed 2 years ago by arma

Replying to nikita:

So based on the votes, increasing the 100 KB/s threshold won't have much effect b/c the measured threshold (which I'm assuming is the 12.5th percentile of consensus weight?) is actually below 100 KB/s.

Yes, correct.

Though, remember that the measurements are unitless weights. They just mean that somebody with a weight of 40 should get less attention than somebody with a weight of 60. They *don't* mean that they think the relay with a weight of 60 should be able to do 60KBytes/s.

A probably impractical suggestion: could something like TorPerf be used to decide this threshold? The median *circuit* BW is around 300 KB/s (https://metrics.torproject.org/torperf.html?start=2017-08-01&end=2017-10-30&source=all&server=public&filesize=5mb), so having a relay with a lower bandwidth than that will make it very likely this relay will be a bottleneck for you.

In a world where all of the relays are weighted appropriately, raising the threshold too much (i.e. discarding too many slower relays) could counterintuitively *lower* the median circuit bandwidth, because it would shift more load onto the relays that used to be fast, making them less fast.

I think our main problem now is that we are not close enough to this world where all of the relays are weighted appropriately.

comment:7 Changed 14 months ago by nickm

Component: Core TorCore Tor/Tor

comment:8 Changed 14 months ago by nickm

Milestone: Tor: unspecified
Note: See TracTickets for help on using tickets.