Why your Tor relay might be slow and how to improve its performance
If your Tor relay seems slow or under-utilized, there are several possible causes - from system limits to network peering to Tor's own bandwidth measurements - and practical steps you can take to diagnose and improve its speed.
Why relay load varies
Tor управляет пропускной способностью по всей сети. Это обеспечивает умеренную работу для большинства узлов. Но цели Tor отличаются от таких протоколов, как BitTorrent. Tor нужны веб-страницы с низкой задержкой, что требует быстрых соединений с запасом прочности. BitTorrent нужны массовые загрузки, что требует использования всей пропускной способности.
Мы работаем над новым сканером пропускной способности, который легче понять и поддерживать. Он будет обеспечивать диагностику для узлов, которые не измеряются, и узлов, которые имеют низкие показатели.
Why does Tor need bandwidth scanners?
Большинство провайдеров сообщают вам максимальную скорость вашего локального соединения. Но у Tor есть пользователи по всему миру, и они подключаются к одному или двум узлам Guard случайным образом. Поэтому нам нужно знать, насколько хорошо каждый узел может соединиться со всем миром.
Таким образом, даже если все операторы ретрансляции установят заявленную пропускную способность на уровне скорости локального соединения, нам все равно потребуются полномочия по пропускной способности, чтобы сбалансировать нагрузку между различными частями Интернета.
What is a normal relay load?
Для большинства узлов нормальная загрузка составляет 30%-80% от их мощности. Это хорошо для клиентов: перегруженный узел имеет высокую задержку. (Мы хотим, чтобы узлов было достаточно для загрузки каждого узла на 10%. Тогда Tor будет почти таким же быстрым, как и более широкий Интернет).
Иногда узел работает медленно, потому что его процессор медленный или его соединения ограничены. В других случаях это медленная сеть: узел имеет плохой пиринг с большинством других узлов tor, или слишком большое расстояние до узла.
Finding Out what is Limiting a Relay
У замедления узла может быть много причин. Вот как их определить.
System Limits
- Check RAM, CPU, and socket/file descriptor usage on your relay
Tor регистрирует некоторые из них при запуске. Другие можно просмотреть с помощью популярных или аналогичных инструментов.
Provider Limits
- Check the Internet peering (bandwidth, latency) from your relay's provider to other relays. Узлы, проходящие через Comcast, временами были медленными. Узлы за пределами Северной Америки и Западной Европы обычно медленнее.
Tor Network Limits
Пропускная способность узла может быть ограничена собственной пропускной способностью узла или измеренной управляющими серверами пропускной способностью. Вот как можно узнать, какое измерение ограничивает ваш узел:
- Check each of the votes for your relay on consensus-health (large page), and check the median. Если ваш узел не помечен как Running некоторыми управляющими серверами:
- Does it have the wrong IPv4 or IPv6 address?
- Is its IPv4 or IPv6 address unreachable from some networks?
- Are there more than 2 relays on its IPv4 address?
В противном случае проверьте наблюдаемую пропускную способность узла и предельную скорость передачи данных. Найдите свой узел в Метриках. Затем наведите курсор мыши на заголовок полосы пропускания, чтобы увидеть наблюдаемую полосу пропускания и скорость передачи данных.
Вот еще несколько деталей и примеров: Снижение веса консенсуса и Скорость нарастания выходного узла.
How to fix it
Наименьшая из этих цифр ограничивает полосу пропускания, выделяемую для узла.
- If it's the bandwidth rate, increase the BandwidthRate/Burst or RelayBandwidthRate/Burst in your torrc.
- If it's the observed bandwidth, your relay won't ask for more bandwidth until it sees itself getting faster. Вам нужно выяснить, почему он медленный.
- If it's the median measured bandwidth, your relay looks slow from a majority of bandwidth authorities. Вам нужно выяснить, почему измеренные ими значения низкие.
Doing Your Own Relay Measurements
Если ваш узел считает, что он медленный, или управляющие серверы думают, что он медленный, вы можете проверить пропускную способность самостоятельно:
- Run a test using tor to see how fast tor can get on your network
Для этого вам нужно настроить клиент tor на использование вашего ретранслятора в качестве входа. Если у вашего реле есть только флаг Guard, установите EntryNodes с fingerprint вашего реле в torrc. Если у вашего реле нет флага Guard или у него есть флаги Guard и Exit, вы не можете установить свое реле в качестве узла входа (см. https://gitlab.torproject.org/tpo/core/tor/-/issues/22204), но вы можете установить его в качестве своего моста, даже если это не мост. Чтобы настроить ваш ретранслятор в качестве моста, добавьте в свой torrc:
Bridge <ip>:<port>
UseBridge 1
Затем загрузите большой файл, используя свой Sock sPort в качестве socks-прокси. Для этого вы можете использовать curl, например:
curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
Использование разных user/password гарантирует разные схемы. Вы можете использовать $RANDOM.
Это даст вам некоторое представление о том, какой объем трафика может выдержать ваш ретранслятор.
В качестве альтернативы вы можете запустить relay_bw, чтобы протестировать ваш ретранслятор, используя 2 схемы перехода, аналогично тому, как это делает sbws.
- Run a test using tor and chutney to find out how fast tor can get on your CPU. Продолжайте увеличивать объем данных до тех пор, пока пропускная способность не перестанет увеличиваться.