web-dev-qa-db-ja.com

ホームネットワークのbufferbloatを修正する

私たちのホームネットワークでは、継続的なネットワークでIO発生するレイテンシーはばかげています。負荷が軽い場合は問題ありませんが、たとえば、多数の小さなファイルを同期していると、すぐに使用できなくなります。--other転送は基本的に停止します。pingはほとんど通過しません。

シンプルなトポロジ-ブロードバンドモデム/ WIFIルーターを1つのボックスに収め、一部のワイヤレスクライアントと一部の有線クライアントを備えています。

すべてのクライアントでifconfig wlan0/eth0 txqueuelen 1を設定してみましたが、これは少しは役立つようですが、それほどではありません。

ヒントを歓迎します:遅延の問題を診断して排除するにはどうすればよいですか?クライアントに設定できる構成設定は他にもありますか、それともより優れたWIFIルーターが役立つ可能性がありますか?

9
cuu508

必要なのは、サービス品質と調整可能なキューイングアルゴリズムです。 Linux/FreeBSDの内部で遊んで満足していて、いくらかの予備の現金がある場合は、このようなセットアップをお勧めします。

+------+     +--------+      +------+<----> Wireless Access Point
|Router|<--->|Firewall|<---->|Switch|
+------+     +--------+      +------+<----> Wired computers

Firewallは、LinuxまたはFreeBSD、あるいは2つのネットワークカードを備えた同様のマシンであり、トラフィックに高度なキューイングとサービス品質のルールを課すことができます。

低速のインターネット接続で大量のデータ転送を行うときに、DNSルックアップのタイムアウトを停止するのと同様のことをしなければなりませんでした。

もう1つのオプションは、より優れたルーターを入手することです。dd-wrtまたはopen-wrtをインストールできるルーターです。これらの2つのファームウェアは、標準のホームルーターよりもQoSなどの点で多くの機能を提供すると思います。

3
Majenko

すべてのクライアントでifconfig wlan0/eth0 txqueuelen 1を設定してみました...

このコマンドは、そのマシンのバッファサイズを1パケットに減らします。このコマンドを実行するための重要なマシンは、ネットワークのボトルネックです。つまり、一方の側にギガビット接続があり、もう一方の側にインターネットへの接続がはるかに遅いマシンです。したがって、そのコマンドを実行するのはルーターです。notクライアントです!
コマンドを正しいインターフェイスで実行していることを確認してください(アウトバウンドLANインターフェイスのみ)

もちろん、これはルーターがLinuxを実行している場合にのみ機能し、コマンドを実行できます。幸い、ホームルーター(DD-WRT、OpenWRT、Tomato)のほとんどのカスタムファームウェアはそうです。


このようにバッファサイズを小さくするとQoSが台無しになる可能性があるため、ルーターでQoSを使用している場合は、バッファサイズをそのままにして、QoSを使用してアップロード/ダウンロード速度を制限する方がよい場合があることに注意してください。すべてのクライアントの接続の最大アップロード/ダウンロードを大幅に下回っています...ただし、これには、1人だけが接続されている場合に未使用の帯域幅があるという明らかな欠点があります。

QoSまたはサービス品質は、ルーターによって処理されるパケットの優先順位と設定の一種です...これは、このような問題が発生した場合に正確に注意する必要があることです...ルーターの構成パネルで検索してQoSを有効にしてみてください...ケースでは手動設定を使用することをお勧めしますが、最初から最後まで処理するパケットの優先順位を知っておく必要があります。

1
morTie

Linuxの代わりにWindowsとMacを使用していますが、解決策は、ISPボックスのすぐ下流にあるNetgearルーターからEdgeルーターに切り替えて、インテリジェントルーティング(Linuxから取得)を設定することでした。

0
George Marengo