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:

  • Führe einen Test mit Tor durch, um zu sehen, welche Geschwindigkeit Tor mit deinem/r Netzwerk/CPU erreichen kann

    Dazu musst du einen Tor-Client so konfigurieren, dass er deinen Relay als Eingang verwendet. Wenn dein Relay nur die Guard-Markierung hat, setze EntryNodes mit deinem Relay Fingerprint in torrc. Wenn dein Relay keine Guard-Markierung hat oder Guard- und Exit-Markierungen hat, kannst du dein Relay nicht als Einstiegsknoten setzen (siehe https://gitlab.torproject.org/tpo/core/tor/-/issues/22204), aber du kannst es als deine Brücke setzen, auch wenn es keine Brücke ist. Um dein Relay als Bridge einzurichten, füge zu deiner torrc hinzu:

    Bridge <ip>:<port>
    UseBridge 1
    

    Lade dann eine große Datei herunter, indem du deinen SocksPort als Socks-Proxy benutzt. Hierfür kannst du curl verwenden, z.B.:

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

    Die Verwendung unterschiedlicher Benutzer/Passwörter garantiert unterschiedliche Kanäle. Du kannst $RANDOM verwenden.

    Das gibt dir eine Vorstellung davon, wie viel Verkehr dein Relay verkraften kann.

    Alternativ kannst du relay_bw ausführen, um dein Relay mit 2 Hops-Schaltungen zu testen, ähnlich wie es sbws tut.

  • Führe einen Test mit Tor und Chutney durch, um herauszufinden, wie schnell Tor mit deiner CPU werden kann. Erhöhe das Datenvolumen so lange, bis die Bandbreite nicht mehr zunimmt.