

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
qdisc・とは?ネットワークの待ち行列を整理する仕組み
私たちがオンラインで動画を見たりゲームをしたりする時、情報は小さなデータの塊として送られます。データをどの順番で送るかを決めるのが qdisc です。qdisc は queueing discipline の略で、Linux の tc というネットワーク制御ツールの中にある待ち行列のルールのことを指します。
qdisc はデータを運ぶ箱のような役割を持ちます。箱には順番待ちのデータが入り、どういう順番で出口へ出すかを決めるのがこの箱のルールです。これにより、ネットワークの混雑時にも遅延を抑え、データの送信を安定させることができます。
なぜ qdisc が大切か
インターネットを使っていると、動画が途中で止まったり、ゲームでラグが出たりします。これは待ち行列が長くなってしまうせいです。ここで qdisc が働くと、混雑をコントロールして重要なデータを優先したり、待ち時間を平準化したりします。
代表的な qdisc のタイプ
以下はよく使われるタイプの一部です。用途に合わせて選ぶと体感の遅延を減らせます。
pfifo_fast:デフォルトで最もシンプルな箱。順番を守って送るだけの仕組みです。小さな家庭用ルータにもよく使われますが、混雑時には遅延が増えることがあります。
fq_codel:公平性と遅延の抑制を目指す箱です。データの流れを均一にして、バースト時の遅延を減らすのが得意です。
cake:現代の家庭用・小規模事業向けに設計された使いやすく強力なタイプ。複数機能をまとめて実装しており、遅延の削減と公平性のバランスが取りやすいです。
tbf(Token Bucket Filter)やその他のタイプもあります。初心者はまず fq_codel か cake から試してみると良いでしょう。
実務での使い方のイメージ
実務では tc コマンドを使って qdisc を設定します。以下は基本的な流れの例です。なお実際の環境に合わせてデバイス名やタイプ名を調整してください。
1) ネットワークデバイスを特定する例: eth0 を使います。この部分は環境に合わせて変更します。
2) 現在の qdisc を確認: tc qdisc show dev eth0
3) 新しい qdisc を追加: tc qdisc add dev eth0 root fq_codel
4) 状態を確認: <code>tc qdisc show dev eth0
5) もし設定を元に戻したい場合は削除: tc qdisc del dev eth0 root
受信側の制御には ingress qdisc を追加します。tc qdisc add dev eth0 ingress とします。
実務での注意点とコツ
・root か ingress か、対象のデバイスと方向を正しく選ぶことが大切です。間違えると意図した効果が出ません。
・複数の qdisc を組み合わせる場合は、上位の階層と下位の階層の関係を把握しましょう。今ある設定をそのまま置き換えず、段階的にテストするのがコツです。
代表的な比較表
| タイプ | 用途・特徴 | 長所 | 短所 |
|---|---|---|---|
| pfifo_fast | デフォルトの簡易キュー | 速い、シンプル | 混雑時の遅延が増えることがある |
| fq_codel | 公平性と遅延削減 | 遅延の平滑化、ラグ低減 | 設定次第でCPU負荷が増える場合がある |
| cake | 現代的な複雑さと公平性 | 使いやすく遅延減 | 設定がやや難しい場合がある |
まとめ
qdisc はネットワークの待ち行列のルールを決め、遅延を抑え公平性を保つための重要な仕組みです。初心者は fq_codel や cake から始め、実機で試しながら tc コマンドの使い方を覚えると良いでしょう。適切な qdisc の選択と設定は、日常のネット利用の安定性に大きく影響します。
qdiscの同意語
- Queueing Discipline
- Linuxの tc(トラフィックコントロール)で使われる、パケットの待ち行列と送出の挙動を決定するルールの集合。
- キューイングディシプリン
- tcの機能群で、パケットをどの順序で待機させ、どのように送出するかを決定するルールのこと。
- Qdisc
- Queueing Discipline の略称。公式ドキュメントや実装で頻繁に使われる名称。
- キュー規律
- Queueing Discipline の日本語訳の一つ。待ち行列の管理ルールを指す表現です。
- 待ち行列制御
- パケットの待ち行列(キュー)をどう扱うかを定める制御の総称。qdisc の概念と深く関係します。
- パケット待機ルール
- パケットが待機する際の挙動を定めるルール。qdisc が決定する一部の仕様を指す説明表現。
- 送出スケジューリングルール
- パケットをいつ、どの順序で送出するかを決定するルール。qdisc の重要な機能の一つです。
qdiscの対義語・反対語
- noqueue(待機列なし)
- tcのqdiscの一つで、キューを作らず、パケットを待機させずにその場で送出する動作・設計を指す。qdiscの対義語的存在として使われる実装例。
- 待機列なし(No queue)
- パケットを待機させるキューを一切持たず、即時送出を意味する概念。
- キューなし(No queuing)
- 待機列を使わないことを示す一般的な表現。qdiscの反対概念として用いられることがある。
- 直接送出(Direct transmission)
- キューを経由せず、パケットを直接送出する送信方式を指す表現。対義語的な考え方として使われることがある。
qdiscの共起語
- tc
- Linuxのトラフィック制御(traffic control)の総称。qdiscやclass、filterを組み合わせて帯域や遅延を制御する仕組みです。
- qdisc
- Queueing Disciplineの略。パケットのキュー管理と処理の基本単位です。
- dev
- 制御対象のネットワークデバイス名(例: eth0、ens33)。
- root
- 階層の最上位に置くqdiscの指定。全体の入口となる設定です。
- clsact
- クラス分類のアクションだけを提供する特殊なqdisc。分類と連携して動作します。
- handle
- 識別子。1: のように数値とコロンでqdiscやクラスを区別します。
- parent
- 親のqdiscまたはクラスを指す識別子。階層構造の関係を示します。
- classid
- クラスの識別子。帯域割り当て先を定義します。
- class
- 帯域を細かく分ける区分。HTBやHFSCなどで利用されます。
- rate
- 割り当てる帯域の上限。例: rate 1mbit。
- ceil
- 上限の上乗せ最大値。HTBなどで rate とセットで使われます。
- burst
- 一時的な帯域ピークを許容するバースト容量。
- limit
- キューに蓄えられる最大パケット数(またはバイト)。
- netem
- 遅延・欠落・ジッターなどを再現するテスト用のqdisc。
- delay
- 遅延時間の設定(例: delay 100ms)。
- loss
- パケット損失率の設定(例: loss 1%)。
- jitter
- 遅延のばらつき。実ネットワークの揺れを模擬します。
- latency
- 遅延の総称。ネットワークの反応時間を示します。
- pfifo_fast
- デフォルトの3バンド式の高速キュー。小さくて軽量な実装です。
- pfifo
- 単純なFIFOキューの一種。
- fq_codel
- 公平性と遅延削減を両立するキュー。CoDelと公平性を組み合わせたqdisc。
- fq
- Fair Queuing。複数のフローを公平に処理します。
- red
- Random Early Detection。混雑が始まる前にパケットを確率的に捨てて混雑を緩和します。
- codel
- CoDelの原理に基づく遅延削減アルゴリズム。
- cake
- CAKE。使いやすさと公平性を両立する総合的なqdisc。
- htb
- Hierarchical Token Bucket。階層的な帯域制御の代表的qdisc。
- hfsc
- Hierarchical Fair Service Curve。階層的公正サービス曲線に基づくスケジューリング。
- tbf
- Token Bucket Filter。帯域制御の古典的手法。
- police
- policeアクション。超過帯域を検出するとパケットを落とす、または形状を制限します。
- filters
- パケットを分類してどのクラスへ渡すかを決める仕組み。
- netlink
- カーネルとユーザー空間を結ぶAPI。tc操作にも使われます。
- iptables
- Iptablesなどのルールと連携して分類を行う場合の手段。
- prio
- PRIOキュー。優先度の高いパケットを先に処理します。
- drop_tail
- Tail Drop。キューがいっぱいになると末尾のパケットを捨てます。
- bandwidth
- 帯域幅。全体の容量のことです。
- ecn
- Explicit Congestion Notification。混雑を知らせる仕組み。
qdiscの関連用語
- qdisc
- キューイング・ディシプリンの略。Linuxのトラフィック制御の基本機能で、ネットワークインターフェースから出ていくパケットの順序と送信レートを決定する仕組み。
- tc
- Traffic Control の略。Linux 上の qdisc/クラス/フィルタを設定・管理するコマンド群。
- netem
- ネットワークの遅延・ジッタ・損失・順序変更を模擬する qdisc。テスト用のエミュレーションに使う。
- pfifo_fast
- 3つの優先度バンドを持つデフォルト寄りの qdisc。高・中・低の3つの帯域を使い分け、遅延と公平性のバランスを狙う。
- pfifo
- 単純な FIFO だけの qdisc。順序どおりにパケットを出力する基本形。
- SFQ
- Stochastic Fairness Queueing の略。流れ間の公平性を保つためにパケットを公平に分配するアルゴリズム。
- fq
- Fair Queuing の略。フロー間の公平性を意識してキューを処理する基盤となる機構。
- fq_codel
- FQ(公平キュー)と CoDel の組み合わせ。公平性を保ちつつ遅延を抑える設計の qdisc。
- CoDel
- Controlled Delay の略。キューの遅延を自動的に抑制する AQM アルゴリズム。
- FQ_CODEL
- FQ と CoDel を組み合わせた総称。 fq_codel と同じアイデアの別表記。
- HTB
- Hierarchical Token Bucket の略。階層的な帯域配分とシャーピングを実現する qdisc。
- TBF
- Token Bucket Filter の略。トークン・バケットを使って一定レートで送信を制限するシンプルな形状。
- CBQ
- Class Based Queueing の略。クラスごとに帯域を割り当てる古典的な設計。
- HFSC
- Hierarchical Fair Service Curve の略。階層的なサービス曲線で遅延と公平性を両立する高度なスケジューラ。
- CAKE
- Common Applications Kept Advanced の略。家庭用ネット向けに設計された統合 qdisc。公平性と遅延抑制をひとつにまとめる。
- ingress
- 受信方向のトラフィックに対して適用する qdisc。通常は policing やフィルタで制御する形になる。
- clsact
- Classless Action の略。インターフェースの ingress および egress の両方へフィルタを適用できる特殊な qdisc。
- filter
- パケットをどのクラスや qdisc に振り分けるかを決める条件(マッチ)を定義する設定。tc filter でよく使う。
- class
- qdisc 内の階層的な配分単位。各クラスに帯域や優先度を割り当てる。
- root qdisc
- インターフェースに対して最上位に取り付く qdisc。ここにクラスやフィルタがぶら下がる。
- police
- パケットの速度を制限するアクション。上限を超えたトラフィックを捨てたりリマップしたりする。
- bufferbloat
- キューの過剰蓄積により遅延が膨らむ現象。AQM や CODEL/CAKE で低減を狙う。
- AQM
- Active Queue Management の略。キュー遅延を抑制するための動的管理手法の総称。
- ECN
- Explicit Congestion Notification の略。経路上の混雑をパケットに通知する仕組み。
- Latency
- 遅延。パケットが送信元から到着するまでの時間の指標。
- Jitter
- 遅延のばらつき。リアルタイム性に影響を与える要因。
- Bandwidth shaping
- 帯域を意図的に制御・配分すること。



















