web-dev-qa-db-ja.com

パケット損失を発生させずにbufferbloatを修正するにはどうすればよいですか?

率直に言って、恐ろしいbufferbloatを修正するために、Linksys E4200(V2)にSQMQoSをインストールしました。これで問題は解決したようですが、以前にはなかった悪いパケット損失が発生しました。

追伸-ネットワーキングの初心者が簡単に返信できるようにします。私は基本的なことしか知りません:)

2
Climatee

パケット損失は、輻輳したリンクでは正常であり、最も広く認識されている輻輳の信号として機能します。 SQMは、スマートな早期パケット損失を慎重に採用して、TCPストリームが輻輳を検出し、輻輳制御アルゴリズムを開始できるようにします。Bufferbloatは、ネットワークハードウェアの設計者によって引き起こされました(間違って)すべてのパケット損失が悪いと考え、すべてのコストでパケット損失を回避しようとしました。

今日、明示的輻輳通知(ECN)と呼ばれるTCP/IPプロトコルの拡張機能があります。これにより、ネットワークハードウェアは、輻輳が発生していることを通知するためにパケットをドロップする昔ながらの方法に頼ることなく、リンクが輻輳していることをデバイスに明示的に通知できます。最新のOSはすべてECNをサポートしていますが、デフォルトですべての接続に対してECNが有効になっているわけではありません。すべてのデバイスのTCP/IPスタック(およびインターネット上で通信する他のすべてのサーバー/ピア/ホストのTCP/IPスタック)でECNを有効にすると、SQM対応のネットワーク機器でECNを使用できるようになります。輻輳を通知するためにパケットをドロップするという古い実証済みの方法に頼るのではなく、これらの接続にフラグを立てます。

ECNを有効にする方法はOSによって異なりますが、UnixライクなOSの場合、通常はsysctlを使用する必要があります。

https://www.bufferbloat.net/projects/cerowrt/wiki/Enable_ECN/ を参照してください

1
Spiff