Warum die Relay-Last variiert

Tor verwaltet die Bandbreite im gesamten Netzwerk. Für die meisten Relays macht es einen vernünftigen Job. Aber die Ziele von Tor sind anders als bei Protokollen wie BitTorrent. Tor will Webseiten mit niedriger Latenz, was schnelle Verbindungen mit Reserven erfordert. BitTorrent will Massendownloads, was die Nutzung der gesamten Bandbreite erfordert.

Wir arbeiten an einem neuen Bandbreitenscanner, der einfacher zu verstehen und zu warten ist. Es verfügt über Diagnosen für Relays, die nicht gemessen werden, und Relays, die niedrige Messwerte aufweisen.

Warum braucht Tor Bandbreitenscanner?

Die meisten Anbieter geben dir die maximale Geschwindigkeit deines lokalen Anschlusses an. Aber Tor hat Benutzer auf der ganzen Welt, und unsere Benutzer verbinden sich zufällig mit einem oder zwei Schutz-Relays. Wir müssen also wissen, wie gut jedes Relay mit der ganzen Welt verbunden werden kann.

Selbst wenn also alle Relay-Betreiber ihre beworbene Bandbreite auf ihre lokale Verbindungsgeschwindigkeit einstellen würden, bräuchten wir immer noch Bandbreiteninstanzen, um die Last zwischen verschiedenen Teilen des Internets auszugleichen.

Was ist eine normale Relay-Last?

Es ist normal, dass die meisten Relays mit 30%-80% ihrer Kapazität belastet werden. Dies ist gut für die Clients: ein überlastetes Relay hat eine hohe Latenz. (Wir wollen genug Relays, so dass jedes Relay zu 10% ausgelastet ist. Dann wäre Tor fast so schnell wie das breitere Internet).

Manchmal ist ein Relay langsam, weil sein Prozessor langsam ist oder seine Verbindungen begrenzt sind. In anderen Fällen ist es das Netzwerk, das langsam ist: das Relay hat ein schlechtes Peering zu den meisten anderen Tor-Relays oder ist sehr weit entfernt.

Herausfinden, was ein Relay einschränkt

Viele Dinge können ein Relay ausbremsen. Hier erfährst du, wie du sie aufspüren kannst.

System-Grenzwerte

  • Überprüfe die RAM-, CPU- und Socket-/Dateideskriptor-Auslastung auf deinem Relay

Tor protokolliert einiges davon, wenn es startet. Andere können mit top oder ähnlichen Tools eingesehen werden.

Provider-Grenzwerte

  • Prüfe das Internet-Peering (Bandbreite, Latenz) vom Provider deines Relays zu anderen Relays. Die Relays, die über Comcast übertragen werden, waren zeitweise langsam. Relays außerhalb Nordamerikas und Westeuropas sind in der Regel langsamer.

Tor-Netzwerk-Grenzwerte

Die Relay-Bandbreite kann durch die vom Relay selbst beobachtete Bandbreite oder durch die gemessene Bandbreite der Verzeichnisbehörden begrenzt werden. So findest du heraus, welche Messung dein Relay einschränkt:

  • Prüfe jede der Stimmen für dein Relay auf consensus-health (große Seite), und prüfe den Mittelwert. Wenn dein Relay von einigen Verzeichnisbehörden nicht als "Running" gekennzeichnet ist:
    • Hat es die falsche IPv4- oder IPv6-Adresse?
    • Ist seine IPv4- oder IPv6-Adresse von einigen Netzwerken aus unerreichbar?
    • Sind da mehr als 2 Relays auf seiner IPv4-Adresse?

Andernfalls überprüfe die von deinem Relay beobachtete Bandbreite und Bandbreitenrate (Limit). Schau dein Relay auf Metrics nach. Fahre dann mit der Maus über die Überschrift "Bandbreite", um die beobachtete Bandbreite und die Relay-Bandbreitenrate zu sehen.

Hier findest du weitere Details und einige Beispiele: Drop in consensus weight und Rampup speed of Exit relay.

Wie man es behebt

Die kleinste dieser Zahlen ist die Begrenzung der dem Relay zugewiesenen Bandbreite.

  • Wenn es an der Bandbreitenrate liegt, erhöhe die BandwidthRate/Burst oder RelayBandwidthRate/Burst in deiner torrc.
  • Wenn es sich um die beobachtete Bandbreite handelt, wird dein Relay nicht nach mehr Bandbreite fragen, bis es sieht, dass es selbst schneller wird. Du musst herausfinden, warum es langsam ist.
  • Wenn es sich um den Mittelwert der gemessenen Bandbreite handelt, sieht dein Relay aus Sicht der Mehrheit der Bandbreitenbehörden langsam aus. Du musst herausfinden, warum sie es langsam messen.

Eigene Relaymessungen durchführen

Wenn dein Relay meint, es sei langsam, oder die Bandbreitenbehörden meinen, es sei langsam, kannst du die Bandbreite selbst testen:

  • Run a test using tor to see how fast tor can get on your network

    For this, you need to configure a tor client to use use your relay as entry. If your relay has only Guard flag, set EntryNodes with your relay fingerprint in torrc. If your relay doesn't have Guard flag or it has Guard and Exit flags, you can't set your relay as an entry node (see https://gitlab.torproject.org/tpo/core/tor/-/issues/22204), but you can set it as your bridge, even if it is not a bridge. To set your relay as a bridge, add to your torrc:

    Bridge <ip>:<port>
    UseBridge 1
    

    Then download a large file using your SocksPort as a socks proxy. For this, you can use curl, eg:

    curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
    

    Using different user/password guarantees different circuits. You can use $RANDOM.

    That will give you some idea of how much traffic your relay can sustain.

    Alternatively, you can run relay_bw to test your relay using 2 hops circuits, in a similar way as sbws does.

  • Run a test using tor and chutney to find out how fast tor can get on your CPU. Keep increasing the data volume until the bandwidth stops increasing.