FQ_CoDel-あなたのためにすべてを行うパッケージプランナー

トレントを高速でダウンロードして配布しますが、このためにオンラインゲームでpingがジャンプし、プレイできなくなりますか? ルームメイトがSkypeビデオ通話を行いますが、あなたは彼を悩ませたくないですか? チャネル全体を占めるファイルストレージと、遅延を構成するQoSを保持しますか? 携帯電話からYouTubeに動画をアップロードします。速度を制限できませんか?



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スクリプト、またはluadebloatのより派手な類似物を使用することをお勧めします。

ArchLinuxにはAURのパッケージがあります



さらに、最新のOpenWRTファームウェアを搭載したルーターを使用している場合、すべての設定はすでに行われています!



おわりに



実際、それがすべてです。 インターネットを高速化しましょう!



All Articles