Почему ваш узел Tor может работать медленно и как улучшить его производительность
Если ваш узел Tor работает медленно или недогружен, возможны несколько причин: от ограничений системы и особенностей сетевого пира до внутренних измерений пропускной способности Tor. Вы можете воспользоваться инструкцией для диагностирования проблемы и повышения скорости работы узла.
Почему нагрузка узлов различается
Tor управляет пропускной способностью по всей сети. Это обеспечивает умеренную работу для большинства узлов. Но цели Tor отличаются от таких протоколов, как BitTorrent. Tor нужны веб-страницы с низкой задержкой, что требует быстрых соединений с запасом прочности. BitTorrent нужны массовые загрузки, что требует использования всей пропускной способности.
Мы работаем над новым сканером пропускной способности, который легче понять и поддерживать. Он будет обеспечивать диагностику для узлов, которые не измеряются, и узлов, которые имеют низкие показатели.
Зачем Tor нужны сканеры пропускной способности?
Большинство провайдеров сообщают вам максимальную скорость вашего локального соединения. Но у Tor есть пользователи по всему миру, и они подключаются к одному или двум узлам Guard случайным образом. Поэтому нам нужно знать, насколько хорошо каждый узел может соединиться со всем миром.
Таким образом, даже если все операторы ретрансляции установят заявленную пропускную способность на уровне скорости локального соединения, нам все равно потребуются полномочия по пропускной способности, чтобы сбалансировать нагрузку между различными частями Интернета.
Какова нормальная нагрузка на узел?
Для большинства узлов нормальная загрузка составляет 30%-80% от их мощности. Это хорошо для клиентов: перегруженный узел имеет высокую задержку. (Мы хотим, чтобы узлов было достаточно для загрузки каждого узла на 10%. Тогда Tor будет почти таким же быстрым, как и более широкий Интернет).
Иногда узел работает медленно, потому что его процессор медленный или его соединения ограничены. В других случаях это медленная сеть: узел имеет плохой пиринг с большинством других узлов tor, или слишком большое расстояние до узла.
Выяснеяем, что ограничивает узел
У замедления узла может быть много причин. Вот как их определить.
Системные Ограничения
- Проверьте использование ОЗУ, процессора и сокетов/дескрипторов файлов на вашем узле
Tor регистрирует некоторые из них при запуске. Другие можно просмотреть с помощью популярных или аналогичных инструментов.
Ограничения Провайдера
- Проверьте интернет‑пиринги (пропускная способность, задержка) от провайдера вашего узла к другим узлам. Узлы, проходящие через Comcast, временами были медленными. Узлы за пределами Северной Америки и Западной Европы обычно медленнее.
Ограничения Сети Tor
Пропускная способность узла может быть ограничена либо наблюдаемой самим узлом пропускной способностью, либо пропускной способностью, измеренной управляющими списками. Вот как можно узнать, какое измерение ограничивает ваш узел:
- Проверьте каждое из голосов за ваш релей на странице consensus-health (большая страница) и посмотрите медиану. Если ваш узел не помечен как Running некоторыми управляющими списками:
- У него неправильный IPv4 или IPv6 адрес?
- Могут ли его IPv4 или IPv6 адреса быть недоступными из некоторых сетей?
- На одном IPv4-адресе находится более двух узлов?
В противном случае проверьте наблюдаемую пропускную способность узла и предельную скорость передачи данных. Найдите свой узел в Метриках. Затем наведите курсор мыши на заголовок полосы пропускания, чтобы увидеть наблюдаемую полосу пропускания и скорость передачи данных.
Вот еще несколько деталей и примеров: Снижение веса консенсуса и Скорость нарастания выходного узла.
Как это исправить
Наименьшая из этих цифр ограничивает полосу пропускания, выделяемую для узла.
- Если это пропускная способность, увеличьте BandwidthRate/Burst или RelayBandwidthRate/Burst в вашем torrc.
- Если дело в наблюдаемой пропускной способности, узел не станет запрашивать больше полосы, пока сам не зафиксирует, что начал работать быстрее. Вам нужно выяснить, почему он медленный.
- Если это медианная измеренная пропускная способность, ваш узел выглядит медленным для большинства управляющих списками. Вам нужно выяснить, почему измеренные ими значения низкие.
Проведение собственных измерений узла
Если ваш узел считает, что он медленный, или управляющие серверы думают, что он медленный, вы можете проверить пропускную способность самостоятельно:
- Запустите тест с помощью tor, чтобы понять, какую максимальную скорость tor может показать в вашей сети
Для этого вам нужно настроить клиент tor на использование вашего узла в качестве входа. Если у вашего узла есть только флаг Guard, установите EntryNodes с fingerprint вашего узла в torrc. Если у вашего узла нет флага Guard или у него есть флаги Guard и Exit, вы не можете установить свой узел в качестве входного узла (см. https://gitlab.torproject.org/tpo/core/tor/-/issues/22204), но вы можете установить его в качестве своего моста, даже если это не мост. Чтобы настроить ваш узел в качестве моста, добавьте в свой torrc:
Мост <ip>:<port>
UseBridge 1
Затем загрузите большой файл, используя свой Sock sPort в качестве socks-прокси. Для этого вы можете использовать curl, например:
curl https://target/path --proxy socks5h://<пользователь>:<пароль>@127.0.0.1:<порт-socks>
Использование разных user/password гарантирует разные схемы. Вы можете использовать $RANDOM.
Это даст вам некоторое представление о том, какой объем трафика может выдержать ваш узел.
В качестве альтернативы вы можете запустить relay_bw, чтобы протестировать ваш узел, используя 2 схемы перехода, аналогично тому, как это делает sbws.
- Запустите тест с помощью tor и chutney, чтобы выяснить, насколько быстро tor может работать на вашем CPU. Продолжайте увеличивать объем данных до тех пор, пока пропускная способность не перестанет увеличиваться.