第32章 Linux トラフィックの制御
Linux は、パケットの送信を管理および操作するためのツールを提供します。Linux Traffic Control (TC) サブシステムは、ネットワークトラフィックの規制、分類、成熟、およびスケジューリングに役立ちます。また、TC はフィルターとアクションを使用して分類中にパケットコンテンツをマスリングします。TC サブシステムは、TC アーキテクチャーの基本要素であるキューイング規則 (qdisc
) を使用してこれを実現します。
スケジューリングメカニズムは、異なるキューに入るか、終了する前にパケットを設定または再編成します。最も一般的なスケジューラーは First-In-First-Out (FIFO) スケジューラーです。qdiscs
操作は、tc
ユーティリティーを使用して一時的に、NetworkManager を使用して永続的に実行できます。
Red Hat Enterprise Linux では、デフォルトのキューの規則をさまざまな方法で設定して、ネットワークインターフェイスのトラフィックを管理できます。
32.1. キュー規則の概要
グルーピング規則 (qdiscs
) は、ネットワークインターフェイスによるトラフィックのスケジューリング、後でキューに役に立ちます。qdisc
には 2 つの操作があります。
- パケットを後送信用にキューに入れるできるようにするキュー要求。
- キューに置かれたパケットのいずれかを即時に送信できるように要求を解除します。
各 qdisc
には、ハンドル
と呼ばれる 16 ビットの 16 進数の識別番号があり、1:
や abcd:
などのコロンが付けられています。この番号は qdisc
メジャー番号と呼ばれます。qdisc
にクラスがある場合、識別子はマイナー番号 (<major>:<minor>
) の前にメジャー番号を持つ 2 つの数字のペア (abcd:1
) として形成されます。マイナー番号の番号設定スキームは、qdisc
タイプによって異なります。1 つ目のクラスには ID <major>:1
、2 つ目の <major>:2
などが含まれる場合があります。一部の qdiscs
では、クラスの作成時にクラスマイナー番号を任意に設定することができます。
- 分類的な
qdiscs
ネットワークインターフェイスへのパケット転送には、さまざまな
qdiscs
があり、そのタイプの qdiscs が存在します。root、親、または子クラスを使用してqdiscs
を設定できます。子を割り当て可能なポイントはクラスと呼ばれます。qdisc
のクラスは柔軟性があり、常に複数の子クラス、または 1 つの子qdisc
を含めることができます。これは、クラスフルなqdisc
自体を含むクラスに対して禁止がないため、複雑なトラフィック制御シナリオが容易になります。分類的な
qdiscs
はパケットを格納しません。代わりに、qdisc
固有の基準に従って、子のいずれかに対してキューをキューに入れ、デキューします。最終的にこの再帰パケットが渡される場所は、パケットが格納される場所 (またはデキューの場合はから取得) となります。- クラスレス
qdiscs
-
一部の
qdiscs
には子クラスがなく、クラスレスqdiscs
と呼ばれます。クラスレスqdiscs
は、クラスフルqdiscs
と比較してカスタマイズが少なくなります。通常、インターフェイスに割り当てるだけで十分です。
関連情報
-
システム上の
tc(8)
およびtc-actions(8)
man ページ