fq_codel-すべての問題を解決するアクティブなキュー管理を備えたパケットスケジューラ(qdisc)!
まだ信じられない? ビデオをご覧ください!
ビデオは、左のコンピューターがcerowrtファームウェア(OpenWRTによって変更された)を備えた通常のホームルーターを介して接続され、同じルーターを備えた標準のファームウェアを備えた右のコンピューターよりもはるかに速くサイトを開くことを示しています
この記事を読む前に、 TCP輻輳制御または速度ジャンプの理由を読むことをお勧めします (すぐに少し追加されます:TCP-YeAHは3.9+カーネルで正常に動作し、使用する価値があります)。
パッケージスケジューラ。 これは何ですか
パケットスケジューラ(ネットワークスケジューラ、パケットスケジューラ) -ネットワークパケットのキューを制御するコード。 バッファがいっぱいの場合、パケットを破棄できます。パケットをネットワークに送信する順序を変更します。 現時点では、Linuxカーネルはデフォルトでpfifo_fastを使用します。これは、ToSパケットを考慮した先入れ先出しタイプのキュー管理アルゴリズムです。
ドロップテールスケジューラ(pfifo_fast)は単純に動作します-バッファがいっぱいでない場合、パケットをキューに入れます。そうでない場合は破棄しますが、 アクティブフロー制御 (アクティブキュー管理、fq_codelのいずれか)を備えたスケジューラはよりインテリジェントです:キューがいっぱいになる前のパケット、したがってチャネル使用率に適応します。
Bufferbloat
Bufferbloatは、チャネルの負荷が高いときに表示されるものです。 言葉で言えば、それがどのように減速するかを説明することができます! ブラウザでページをロードするのに非常に時間がかかりますが、トレントはチャンネルの幅全体に分散します。 なぜこれが起こっているのですか?
すべてが比較的簡単です: トレントクライアントは絶えず配信し、パケットキューはほぼ常に満杯です。サイトをダウンロードする(名前からIPアドレスを取得し、このアドレスに接続する)パケットは、ほぼ毎回キューの最後の1つです。 これは、アクティブフロー制御を使用するネットワークパケットスケジューラアルゴリズムでは発生しません。これは、最初にパケットキューを可能な限り小さくしようとするため、2番目にそれらを混合できるため、戻り値が少し(非常に近い)自宅で目立たないように)減少しますが、サイトはデフォルトで使用される固定キューサイズとfifoのアルゴリズムよりもはるかに速く開きます。
fq_codelは、AQMを使用した最も効率的かつ最新のアルゴリズムの1つです。
pfifo_fastを使用すると、詰まったチャネルでのpingは8ミリ秒に増加します。

そのとき、fq_codelを使用すると、最大2ミリ秒になります。

いいね! どうやって試すの?
fq_codelは、バージョン3.5以降、Linuxカーネルに含まれています。 ドライバーがBQLをサポートするカード(多くの一般的なカード)が必要ですが、fq_codelはBQLなしでも機能しますが、手動でシェーパーを作成する必要があります。 最も単純なケースでは、特定のネットワークインターフェイスのfq_codelにルートqdiscを設定するだけで十分です。
sudo tc qdisc add dev eth0 root fq_codel
ただし、 debloat.shスクリプト、またはluaのdebloatのより派手な類似物を使用することをお勧めします。
ArchLinuxにはAURのパッケージがあります
さらに、最新のOpenWRTファームウェアを搭載したルーターを使用している場合、すべての設定はすでに行われています!
おわりに
実際、それがすべてです。 インターネットを高速化しましょう!