Därför kan Tor-reläet vara långsamt och så förbättrar du prestandan
Om Tor-reläet verkar långsamt eller underutnyttjat kan orsaken vara allt från systemgränser och nätverkspeering till Tors egna bandbreddsmätningar. Det finns flera praktiska sätt att diagnostisera och förbättra hastigheten.
Därför varierar reläbelastningen
Tor hanterar bandbredden i hela nätverket och gör ett rimligt bra jobb för de flesta reläer. Tors mål skiljer sig från protokoll som BitTorrent. Tor är avsett för webbsidor med låg latens, vilket kräver snabba anslutningar med ledig kapacitet. BitTorrent är utformat för stora hämtningar och kräver därför att all bandbredd används.
Vi arbetar på en ny bandbreddsskanner som är enklare att förstå och underhålla. Där visas diagnostik för reläer som inte mäts och reläer med låga mätvärden.
Varför behöver Tor bandbreddsskannrar?
De flesta leverantörer anger den högsta hastigheten för den lokala anslutningen. Tor har däremot användare över hela världen, och användarna ansluter slumpmässigt till ett eller två vaktreläer. Vi måste därför veta hur väl varje relä kan ansluta till hela världen.
Även om alla reläoperatörer angav den lokala anslutningshastigheten som annonserad bandbredd skulle bandbreddsauktoriteter fortfarande behövas för att balansera belastningen mellan olika delar av internet.
Vad är en normal reläbelastning?
Det är normalt att de flesta reläer belastas till 30–80 procent av sin kapacitet. Det är bra för klienterna: ett överbelastat relä har hög latens. (Vi vill ha tillräckligt många reläer för att varje relä bara ska belastas till 10 procent. Då skulle Tor vara nästan lika snabbt som internet i övrigt.)
Ibland är reläet långsamt för att processorn är långsam eller anslutningarna är begränsade. I andra fall är nätverket långsamt: reläet har dålig peering med de flesta andra Tor-reläer eller ligger långt bort.
Ta reda på vad som begränsar reläet
Många saker kan göra ett relä långsammare. Så här hittar du orsaken.
Systemgränser
- Kontrollera reläets användning av RAM-minne, processor, socketar och filbeskrivare
Tor loggar vissa av dessa värden när det startar. Andra kan visas med top eller liknande verktyg.
Leverantörsgränser
- Kontrollera internetpeeringen, både bandbredd och latens, mellan reläets leverantör och andra reläer. Reläer vars trafik passerar Comcast har periodvis varit långsamma. Reläer utanför Nordamerika och Västeuropa är vanligtvis långsammare.
Gränser i Tor-nätverket
Reläets bandbredd kan begränsas av dess egen observerade bandbredd eller av den bandbredd som katalogauktoriteterna mäter. Så tar du reda på vilken mätning som begränsar reläet:
- Kontrollera varje katalogauktoritets röst för reläet på consensus-health (stor sida) och kontrollera medianen. Om vissa katalogauktoriteter inte markerar reläet som Running:
- Har reläet fel IPv4- eller IPv6-adress?
- Går reläets IPv4- eller IPv6-adress inte att nå från vissa nätverk?
- Finns det fler än två reläer på samma IPv4-adress?
Kontrollera annars reläets observerade bandbredd och bandbreddshastighet, det vill säga gränsen. Slå upp reläet i Metrics. Håll sedan muspekaren över rubriken för bandbredd för att visa observerad bandbredd och reläets bandbreddshastighet.
Fler detaljer och exempel finns i Drop in consensus weight och Rampup speed of Exit relay.
Så åtgärdar du det
Det lägsta av dessa värden begränsar den bandbredd som tilldelas reläet.
- Om bandbreddshastigheten begränsar höjer du BandwidthRate/Burst eller RelayBandwidthRate/Burst i torrc.
- Om den observerade bandbredden begränsar begär reläet inte mer bandbredd förrän det själv ser att det blivit snabbare. Du måste ta reda på varför reläet är långsamt.
- Om den uppmätta medianbandbredden begränsar ser reläet långsamt ut för en majoritet av bandbreddsauktoriteterna. Du måste ta reda på varför de mäter det som långsamt.
Göra egna relämätningar
Om reläet självt eller bandbreddsauktoriteterna bedömer att det är långsamt kan du testa bandbredden själv:
- Kör ett test med Tor för att se hur snabbt Tor kan köras i nätverket
För detta måste en Tor-klient konfigureras så att reläet används som ingång. Om reläet endast har flaggan Guard anger du EntryNodes med reläets fingeravtryck i torrc. Om reläet saknar flaggan Guard eller har både Guard och Exit kan det inte anges som ingångsnod (se https://gitlab.torproject.org/tpo/core/tor/-/work_items/22204), men det kan anges som bro även om det inte är en bro. Lägg till följande i torrc för att ange reläet som en bro:
Bridge <ip>:<port>
UseBridge 1
Hämta sedan en stor fil genom att använda din SocksPort som SOCKS-proxy. Du kan använda curl, exempelvis:
curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
Olika user/password garanterar olika kretsar. Du kan använda $RANDOM.
Det ger en uppfattning om hur mycket trafik reläet klarar.
Du kan också köra relay_bw för att testa reläet med kretsar på två hopp, på ungefär samma sätt som sbws.
- Kör ett test med Tor och chutney för att ta reda på hur snabbt Tor kan köras på processorn. Öka datamängden tills bandbredden slutar öka.