ネットワークスケジューラ

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
FIFO(先入れ先出し)データ構造でキューイングするパケット。

ネットワークスケジューラは、パケットスケジューラキューイングディシプリンqdisc)、またはキューイングアルゴリズムとも呼ばれ、パケット交換通信ネットワークのノードアービターです。これは、プロトコルスタックネットワークインターフェイスコントローラーの送信キューと受信キューのネットワークパケットのシーケンスを管理しますさまざまなオペレーティングシステムで使用できるネットワークスケジューラがいくつかあり、既存のネットワークスケジューリングアルゴリズムの多くを実装しています。

ネットワークスケジューラロジックは、次に転送するネットワークパケットを決定します。ネットワークスケジューラはキューイングシステムに関連付けられており、ネットワークパケットが送信されるまで一時的に保存されます。システムには単一または複数のキューがあり、その場合、それぞれが1つのフロー分類、または優先度のパケットを保持できます。

場合によっては、システムの制約内ですべての送信をスケジュールできない場合があります。このような場合、ネットワークスケジューラは、転送するトラフィックとドロップされるトラフィックを決定する責任があります。

用語と責任

ネットワークスケジューラは、特定のネットワークトラフィック制御イニシアチブの実装に責任を持つ場合があります。ネットワークトラフィック制御は、ネットワークの輻輳、遅延、およびパケット損失を削減することを目的としたすべての対策の総称です。具体的には、アクティブキュー管理(AQM)は、キューに入れられたネットワークパケットを選択的にドロップして、過度のネットワーク輻輳を防ぐという大きな目標を達成することです。スケジューラは、ドロップするパケットを選択する必要があります。トラフィックシェーピングは、送信パケットがバーストでキューに入れられるときに送信パケットを遅延させることにより、トラフィックフローの帯域幅要件をスムーズにします。スケジューラは、送信されるパケットのタイミングを決定します。サービスの質(QoS)は、サービスクラス(差別化サービス)または予約済み接続(統合サービス)に基づくトラフィックの優先順位付けです

アルゴリズム

時間の経過とともに、多くのネットワークキューイング分野が開発されてきました。これらはそれぞれ、さまざまな送信または受信バッファ内のネットワークパケットの特定の並べ替えまたはドロップを提供します。[1]キューイングの分野は、特定のクラスのネットワークパケットの遅延を 減らすなど、さまざまなネットワーク条件を補正する試みとして一般的に使用され、通常はQoS測定の一部として使用されます。[2] [3] [4]

ネットワークトラフィックの管理に適したアルゴリズムの例は次のとおりです。

上記のいくつかはLinuxカーネルモジュール[17]として実装されており、無料で入手できます

Bufferbloat

Bufferbloatは、パケット交換ネットワークで発生する現象であり、パケットの過剰なバッファリングにより、高い遅延パケット遅延の変動が発生します。Bufferbloatは、不必要に高いバッファリングバックログを回避するためにパケットを戦略的に破棄するネットワークスケジューラによって対処できます。例としては、CoDelFQ-CoDelランダム早期検出などがあります。

実装

Linuxカーネル

Linuxカーネルのパケットスケジューラは、 netfilternftables、およびBerkeleyPacketFilterとともにネットワークスタックの一部です

Linuxカーネルパケットスケジューラは、Linuxカーネルのネットワークスタックの不可欠な部分であり、たとえば、 OSIモデルのレイヤー2で作業し、イーサネットフレームを処理することにより、すべてのNICの送信および受信リングバッファーを管理します。

パケットスケジューラは、tc(「トラフィック制御」の略)と呼ばれるユーティリティを使用して構成されます。デフォルトのキューイング規律として、パケットスケジューラはpfifo_fastと呼ばれるFIFO実装を使用します[18]、バージョン217以降のsystemdfq_codelはデフォルトのキューイング規律をに変更します。[19]

ifconfigおよびipユーティリティを使用すると、システム管理者は、サイズに関係なく、イーサネットフレームの数に関して、バッファサイズとデバイスごとに個別に設定できtxqueuelenますrxqueuelenLinuxカーネルのネットワークスタックには、ネットワークスケジューラによって管理されていない他のいくつかのバッファが含まれています。[a]

Berkeley Packet Filterフィルターは、パケットスケジューラの分類子に接続できます。2015年にLinuxカーネルのバージョン4.1によってもたらされたeBPF機能は、従来のBPFプログラマブル分類子をeBPFに拡張します。[20] これらは、LLVM eBPFバックエンドを使用してコンパイルし、tcユーティリティを使用して実行中のカーネルにロードできます。[21]

BSDおよびOpenBSD

ALTQは、 BSD用のネットワークスケジューラの実装ですOpenBSDバージョン5.5以降、ALTQはHFSCスケジューラーに置き換えられました。

も参照してください

メモ

  1. ^ すべてのバッファーの全体的なサイズは、主にOpenWrtでテストされたCoDelで部分的なソリューションを提供したBufferbloatプロジェクトによる批判のポイントでした。

参照

  1. ^ 「交通管制HOWTO:クラスレス待ち行列分野(qdiscs)」tldp.org 2013年11月24日取得
  2. ^ 「トラフィック制御HOWTO:Linuxトラフィック制御のコンポーネント」tldp.org 2013年11月24日取得
  3. ^ 「交通管制HOWTO:交通管制の伝統的な要素」tldp.org 2013年11月24日取得
  4. ^ 「待ち行列の分野:パケットの送信とドロップの順序」(PDF)tau.ac.il。 _ 2006年10月25日2014年3月18日取得
  5. ^ 「要約」2002.CiteSeerX10.1.1.108.4477 _ _  {{cite journal}}引用ジャーナルには|journal=ヘルプ)が必要です
  6. ^ 「彼らにCAKEを実行させてください」LWN.net
  7. ^ 「DRRLinuxカーネルネットワークスケジューラモジュール」kernel.org 2013年9月7日取得
  8. ^ 「FavorQueue:TCPトラフィックパフォーマンスを改善するためのパラメータレスアクティブキュー管理」(PDF)
  9. ^ 「ヘビーヒッターフィルターqdisc」kernel.org
  10. ^ 「HTBLinuxカーネルネットワークスケジューラモジュール」kernel.org 2013年9月7日取得
  11. ^ 「QFQLinuxカーネルネットワークスケジューラモジュール」kernel.org 2013年9月7日取得
  12. ^ 「Linuxカーネル3.12にコミットされたFairQueueパケットスケジューラ」
  13. ^ 「ネットワークエミュレータLinuxカーネルネットワークスケジューラモジュール」kernel.org 2013年9月7日取得
  14. ^ 「比例積分コントローラー拡張(PIE)」kernel.org
  15. ^ 「SFQLinuxカーネルネットワークスケジューラモジュール」kernel.org 2013年9月7日取得
  16. ^ 「TBFLinuxカーネルネットワークスケジューラモジュール」kernel.org 2013年9月7日取得
  17. ^ 「Linuxカーネルネットワークスケジューラ」kernel.org2012-12-26 2013年9月7日取得
  18. ^ 「LinuxAdvancedRoutingand Traffic Control HOWTO、セクション9.2.1。pfifo_fast」lartc.org2012-05-19 2014年9月19日取得
  19. ^ 「systemdSystemandService Manager:NEWSファイル」freedesktop.org2015-05-22 2015年6月9日取得
  20. ^ 「Linuxカーネル4.1、セクション11.ネットワーキング」kernelnewbies.org2015-06-21。
  21. ^ 「BPFおよびXDPリファレンスガイド」繊毛ドキュメントのWebサイト