Почему изменяется нагрузка на узел

Tor управляет пропускной способностью по всей сети. Это обеспечивает умеренную работу для большинства узлов. Но цели Tor отличаются от таких протоколов, как BitTorrent. Tor нужны веб-страницы с низкой задержкой, что требует быстрых соединений с запасом прочности. BitTorrent нужны массовые загрузки, что требует использования всей пропускной способности.

Мы работаем над новым сканером пропускной способности, который легче понять и поддерживать. Он будет обеспечивать диагностику для узлов, которые не измеряются, и узлов, которые имеют низкие показатели.

Зачем Tor нужны сканеры пропускной способности?

Большинство провайдеров сообщают вам максимальную скорость вашего локального соединения. Но у Tor есть пользователи по всему миру, и они подключаются к одному или двум узлам Guard случайным образом. Поэтому нам нужно знать, насколько хорошо каждый узел может соединиться со всем миром.

Таким образом, даже если все операторы ретрансляции установят заявленную пропускную способность на уровне скорости локального соединения, нам все равно потребуются полномочия по пропускной способности, чтобы сбалансировать нагрузку между различными частями Интернета.

Что такое нормальная нагрузка на узел?

Для большинства узлов нормальная загрузка составляет 30%-80% от их мощности. Это хорошо для клиентов: перегруженный узел имеет высокую задержку. (Мы хотим, чтобы узлов было достаточно для загрузки каждого узла на 10%. Тогда Tor будет почти таким же быстрым, как и более широкий Интернет).

Иногда узел работает медленно, потому что его процессор медленный или его соединения ограничены. В других случаях это медленная сеть: узел имеет плохой пиринг с большинством других узлов tor, или слишком большое расстояние до узла.

Определение причины ограничения узла

У замедления узла может быть много причин. Вот как их определить.

Системные ограничения

  • Проверьте использование RAM, процессора и дескриптора порта/файла на вашем узле

Tor регистрирует некоторые из них при запуске. Другие можно просмотреть с помощью популярных или аналогичных инструментов.

Ограничения провайдера

  • Проверьте пиринг в Интернете (пропускная способность, задержка) от вашего поставщика узла к другим узлам. Узлы, проходящие через Comcast, временами были медленными. Узлы за пределами Северной Америки и Западной Европы обычно медленнее.

Ограничения сети Tor

Пропускная способность узла может быть ограничена собственной пропускной способностью узла или измеренной управляющими серверами пропускной способностью. Вот как можно узнать, какое измерение ограничивает ваш узел:

  • Проверьте каждый из голосов за ваш узел на consensus-health (страница с большим объемом данных) и проверьте медиану. Если ваш узел не помечен как Running некоторыми управляющими серверами:
    • Проверьте правильность адреса IPv4 или IPv6?
    • Возможно его IPv4 или IPv6 адрес недоступен из некоторых сетей?
    • Возможно на его IPv4-адресе более 2 узлов?

В противном случае проверьте наблюдаемую пропускную способность узла и предельную скорость передачи данных. Найдите свой узел в Метриках. Затем наведите курсор мыши на заголовок полосы пропускания, чтобы увидеть наблюдаемую полосу пропускания и скорость передачи данных.

Вот еще несколько деталей и примеров: Снижение веса консенсуса и Скорость нарастания выходного узла.

Как это исправить

Наименьшая из этих цифр ограничивает полосу пропускания, выделяемую для узла.

  • Если это скорость полосы пропускания, увеличьте BandwidthRate/Burst или RelayBandwidthRate/Burst в вашем torrc.
  • Если это наблюдаемая полоса пропускания, ваш узел не будет запрашивать дополнительную полосу пропускания, пока не увидит, что он становится быстрее. Вам нужно выяснить, почему он медленный.
  • Если это медиана измеренной пропускной способности, ваш узел выглядит медленным для большинства управляющих серверов. Вам нужно выяснить, почему измеренные ими значения низкие.

Cобственные измерения параметров работы узла

Если ваш узел считает, что он медленный, или управляющие серверы думают, что он медленный, вы можете проверить пропускную способность самостоятельно:

  • 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.