Chapter 12. 高度なフィルタによるパケットのクラス(再)選別

Table of Contents
12.1. u32 クラス選別器
12.1.1. U32 セレクタ
12.1.2. 汎用セレクタ (general selector)
12.1.3. 固有セレクタ (specific selector)
12.2. route クラス選別器
12.3. 監視制限 (policing) フィルタ
12.3.1. 監視制限のやり方
12.3.2. 制限を越えたときの動作
12.3.3.
12.4. ハッシュフィルタ: 超高速大量フィルタリング
12.5. IPv6 トラフィックのフィルタリング
12.5.1. なぜ IPv6 では tc フィルタが動かないのか
12.5.2. IPv6 パケットに ip6tables で印を付ける
12.5.3. u32 選別器を使って IPv6 パケットにマッチさせる

クラスフルなキューイング規則の節で説明したように、 パケットを選別してサブキューに送る際にはフィルタが必要です。 これらのフィルタはクラスフルな qdisc の内部から呼ばれます。

不完全ではありますが、利用できるクラス選別器のリストです。

fw

ファイアウォールがパケットをどのように印付けしたかに基づいて決定を行います。 tc フィルタの文法を勉強したくない人には、安易な解決法です。 詳細はキューイングの章を見てください。

u32

パケット内部のフィールド (発信元 IP アドレスなど) に基づいて決定を行います。

route

パケットが通ることになる経路に基づいて決定を行います。

rsvp, rsvp6

RSVP に基づいてパケットをルーティングします。 これが有用なのは管理下にあるネットワークだけです。 インターネットは RSVP をちゃんと見ません。

tcindex

DSMARK qdisc で用いられます。関連する節を見てください。

パケットのクラス選別を行う方法は一般には何種類か存在し、 そのどれを用いるかは、通常は好みの問題に帰着します。

クラス選別器はたいてい、いくつかの共通な引き数を取ります。 参考のためにここにリストしておきます。

protocol

このクラス選別器が受け付けるプロトコル。 通常は IP トラフィックだけを受け付けることになるでしょう。必須です。

parent

このクラス選別器が属しているハンドル。 このハンドルは、すでに存在しているクラスでなければなりません。必須です。

prio

クラス選別器の優先度。小さい数値が先にテストされます。

handle

フィルタを一意に識別するためのものです。

以降の節では、HostA に向かうトラフィックを絞ることを考えます。 ルートクラスは 1: と設定されていて、 選別されたトラフィックの送り先となるクラスは 1:1 であるとします。