Tor リレーが遅い理由とパフォーマンスを改善する方法
Tor リレーの速度が遅い、あるいは利用率が低い場合、システムの制限からネットワークピアリング、Tor 自身の帯域幅測定に至るまで複数の原因が考えられます。速度を診断し改善するための実践的な手順をご説明します。
リレーの負荷が変動する理由
Tor は、ネットワーク全体の帯域幅を管理します。これはほとんどのリレーで適切に機能します。 しかし、Tor の目標は BitTorrent のようなプロトコルとは異なります。 Tor は低遅延のウェブページを追求しており、そのためには余裕のある高速接続が必要です。 BitTorrent は大量ダウンロードを追求しており、そのためには全帯域幅の使用を必要とします。
現在、理解とメンテナンスが容易な新しい帯域幅スキャナーを開発中です。 これは、測定されないリレーや測定値が低いリレーの診断機能を備えています。
なぜ Tor に帯域幅スキャナーが必要なのですか?
ほとんどのプロバイダーは、ローカル接続の最大速度を表示します。 しかし、Tor には世界中にユーザーがおり、ユーザーはランダムに 1 つか 2 つのガードリレーに接続します。 そのため、各リレーが世界全体にどの程度接続できるかを知る必要があります。
そのため、すべてのリレーオペレーターが宣伝している帯域幅をローカル接続速度に設定したとしても、インターネットの異なる部分間で負荷を分散させるために帯域幅管理機関が必要になります。
通常のリレー負荷とは何ですか?
ほとんどのリレーは通常、容量の 30% から 80% の負荷がかかります。 これはクライアントにとって良いことです。過負荷のリレーは遅延が大きくなります。 (各リレーに 10% の負荷がかかるように十分なリレーが必要です。そうすれば、Tor は一般的なインターネットとほぼ同じ速度になります) 。
リレーは、プロセッサーが低速であるか、接続が制限されているために低速になることがあります。 また、リレーが他のほとんどの Tor リレーと正しくピアリングしていないか、距離が遠く離れていることでネットワークが遅い場合もあります。
リレーを制限している原因の特定
リレーを遅くする原因は多数あります。ここでは、それらを突き止める方法をご紹介します。
システムの制限
- リレーの RAM、CPU、およびソケット/ファイル記述子の使用状況をご確認ください。
Tor は起動時にこれらのログの一部を記録します。その他は、top または同様のツールを使用して表示できます。
プロバイダーの制限
- リレーのプロバイダーから他のリレーへのインターネットピアリング (帯域幅、遅延) を確認してください。 Comcast (米国の ISP) 経由のリレーは、たまに時間がかかることがあります。 また、通常北米や西ヨーロッパ以外のリレーは低速です。
Tor ネットワークの制限
リレーの帯域幅は、リレー自身の観測帯域幅、またはディレクトリー管理機関が測定した帯域幅によって制限される場合があります。 リレーを制限している測定値を調べる方法は以下の通りです。
- コンセンサス状態で自身のリレーの各投票や中央値を確認します。 リレーが一部のディレクトリー管理機関で「Running」とマークされていない場合:
- IPv4 または IPv6 アドレスが間違っていませんか?
- その IPv4 または IPv6 アドレスは、一部のネットワークから到達不能になっていませんか?
- IPv4 アドレスに 2 つ以上のリレーがありませんか?
それ以外の場合は、リレーの観測帯域幅と帯域幅レート (制限) を確認します。 メトリクスでリレーを検索します。 次に、帯域幅の見出しにマウスを合わせると、観測帯域幅とリレー帯域幅レートが表示されます。
詳細および具体例: コンセンサスウェイトの低下、出口リレーの上昇速度
解決する方法
これらの数値の最小値は、リレーに割り当てられる帯域幅を制限します。
- 帯域幅レートが原因の場合、torrc の BandwidthRate/Burst または RelayBandwidthRate/Burst を増やしてください。
- 観測帯域幅が原因の場合、リレーは自身の速度が向上するまで追加の帯域幅を要求しません。 遅い原因を特定する必要があります。
- 測定帯域幅の中央値が原因の場合、大半の帯域幅管理機関からはリレーが低速と認識されています。 低速と測定される原因を特定する必要があります。
独自のリレー測定の実施
ご自身のリレーが遅いと感じる場合、または帯域幅管理機関が遅いと判断した場合、帯域幅を自分でテストできます:
- tor を使用してテストを実行し、ネットワーク上で tor がどの程度の速さになるか確認します。
このためには、リレーをエントリーとして使用するように Tor クライアントを設定する必要があります。 リレーに Guard フラグしかない場合は、torrc で EntryNodes にリレーフィンガープリントを設定してください。 リレーに Guard フラグがないか、Guard フラグと Exit フラグの両方がある場合、リレーを入口ノードとして設定することはできません (参照: https://gitlab.torproject.org/tpo/core/tor/-/issues/22204) が、ブリッジでなくてもブリッジとして設定することはできます。 リレーをブリッジとして設定するには、torrc に以下の内容を追加します:
Bridge <ip>:<port>
UseBridge 1
次に socks プロキシとして SocksPort を使用して、大きなファイルをダウンロードします。 これには、例えば curl を利用できます:
curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
異なる user/password を使用すると、異なる回線が保証されます。また $RANDOM を利用できます。
これにより、リレーが処理可能なトラフィック量の見当がつきます。
あるいは、sbws と同じように、relay_bw を実行して、2 ホップの回線を使ってリレーをテストすることもできます。
- tor と chutney を使ってテストを行い、tor が CPU 上でどれくらいの速度が出るかを調べます。 帯域幅の増加が止まるまでデータ量を増加させ続けます。