Solaris のシステム管理 (IP サービス)

第 37 章 IPQoS の詳細 (リファレンス)

この章は、IPQoS の詳細を説明するリファレンスです。この章では、次の内容について説明します。

概要は、第 32 章IPQoS の紹介 (概要)を参照してください。計画については、第 33 章IPQoS 対応ネットワークの計画 (手順)を参照してください。IPQoS の構成手順については、第 34 章IPQoS 構成ファイルの作成 (手順)を参照してください。

IPQoS アーキテクチャーと Diffserv モデル

この節では、IPQoS アーキテクチャーとこのアーキテクチャーが RFC 2475, An Architecture for Differentiated Services で定義された差別化サービス (Diffserv) モデルを実装する方法について説明します。次に示す Diffserv モデルの要素が、IPQoS に含まれます。

さらに、IPQoS には、仮想ローカルエリアネットワーク (VLAN) デバイスで使用されるフローアカウンティングモジュールと dlcosmk マーカーが含まれています。

クラシファイアモジュール

Diffserv モデルでは、「クラシファイア」は、トラフィックフローを選択して、それぞれに異なるサービスレベルを適用するためのグループに分類する作業を担当します。RFC 2475 で定義されたクラシファイアは、当初、境界ルーター用に設計されました。それとは対照的に、IPQoS クラシファイア ipgpc は、内部ホストからローカルネットワークへのトラフィックフローを処理するために設計されています。このため、IPQoS システムと Diffserv ルーターの両方を備えたネットワークは、より広範囲な差別化サービスを提供できます。ipgpc の技術情報については、ipgpc(7ipp) のマニュアルページを参照してください。

ipgpc クラシファイアは、次の機能を実行します。

  1. IPQoS 対応システムの IPQoS 構成ファイルに指定された条件を満たすトラフィックフローを選択します。

    QoS ポリシーは、パケットヘッダーに存在する必要のあるさまざまな条件を定義します。これらの条件は、「セレクタ」と呼ばれます。 ipgpc クラシファイアは、これらのセレクタを、IPQoS システムから受信したパケットのヘッダーと比較して、一致するパケットをすべて選択します。

  2. パケットフローを、IPQoS 構成ファイルの定義に従い、同じ特性を持つネットワークトラフィックである 「クラス」に分類します。

  3. パケットの差別化サービス (DS) フィールドの値を調べ、差別化サービスコードポイント (DSCP) の存在を確認します

    DSCP は、受信したトラフィックに送信側によって転送動作のマークが付けられているかどうかを示します。

  4. 特定クラスのパケットに関して、IPQoS 構成ファイル内で次に指定されているアクションを調べます。

  5. パケットを、IPQoS 構成ファイルで指定された次の IPQoS モジュールに渡すか、あるいはネットワークストリームに戻します。

クラシファイアの概要は、「クラシファイア (ipgpc) の概要」を参照してください。IPQoS 構成ファイルでクラシファイアを呼び出すには、「IPQoS 構成ファイル」を参照してください。

IPQoS セレクタ

ipgpc クラシファイアは、IPQoS 構成ファイルの filter 句で使用可能なさまざまなセレクタをサポートします。フィルタを定義するときには、特定クラスのトラフィック取得に必要な最小限のセレクタを使用してください。定義するフィルタの数が、IPQoS のパフォーマンスに影響を与える可能性があります。

次の表に、 ipgpc で使用できるセレクタを示します。

表 37–1 IPQoS クラシファイアで利用可能なフィルタセレクタ

セレクタ 

引数 

選択される情報 

saddr

IP アドレス番号 

発信元アドレス 

daddr

IP アドレス番号 

着信先アドレス 

sport

ポート番号またはサービス名。/etc/services の定義に従う

トラフィッククラスの発信元ポート 

dport

ポート番号またはサービス名。/etc/services の定義に従う

トラフィッククラスの着信先ポート 

プロトコル

プロトコル番号またはプロトコル名。/etc/protocols の定義に従う

このトラフィッククラスが使用するプロトコル 

dsfield

0 - 63 の値を持つ DS コードポイント (DSCP) 

DSCP。パケットに適用される転送動作を定義する。このパラメータを指定した場合は、dsfield_mask パラメータも指定すること

dsfield_mask

0 - 255 の値を持つビットマスク 

dsfield セレクタと組み合わせて使用。dsfield_mask は、dsfield セレクタに適用して、ビットのどれが一致するかを決定する

if_name

インタフェース名 

特定クラスの着信トラフィックまたは発信トラフィックで使用されるインタフェース 

user

選択する UNIX ユーザー ID の番号またはユーザー名。パケットにユーザー ID またはユーザー名が存在しない場合、デフォルトの –1 が使用される 

アプリケーションに指定されるユーザー ID 

projid

選択するプロジェクト ID の番号 

アプリケーションに付加されるプロジェクト ID 

priority

優先順位の番号。もっとも低い優先順位は 0 

このクラスのパケットに与えられる優先順位。優先順位は、同じクラスに複数存在するフィルタの重要度の順位付けに使用される 

direction

次の引数のいずれかを指定できる。 

IPQoS マシン上のパケットフローの方向  

 

LOCAL_IN

ローカルシステムから IPQoS システムへの入力トラフィック 

 

LOCAL_OUT

ローカルシステムから IPQoS システムへの出力トラフィック 

 

FWD_IN

転送される入力トラフィック 

 

FWD_OUT

転送される出力トラフィック 

precedence

優先度の値。もっとも高い優先度は 0 

優先度は、同一優先順位のフィルタの順序付けに使用される 

ip_version

V4 または V6

パケットにより使用されるアドレス指定スキーマ (IPv4 または IPv6) 

メーターモジュール

meter」は、パケット単位でフローの転送速度を追跡します。このメーターは、設定されているパラメータにパケットが一致するかどうかを決定します。メーターモジュールは、パケットサイズ、設定されたパラメータ、およびフロー速度に基づき、パケットの次のアクションをアクションセットの中から決定します。

メーターには 2 つのメータリングモジュール、すなわち tokenmt および tswtclmt があります。モジュールの構成は、IPQoS 構成ファイルで行います。モジュールのどちらか一方または両方をクラスに設定できます。

メータリングモジュールを構成する際、速度に関する 2 つのパラメータを定義できます。

パケットに対するメータリングアクションの結果 (outcome) は、次の 3 つのどれかになります。

IPQoS 構成ファイル内で、結果ごとに異なるアクションを構成できます。認定速度および最大速度については、次に説明します。

tokenmt メータリングモジュール

tokenmt モジュールは、「トークンバケット」を使用してフローの転送速度を測定します。tokenmt は、シングルレートメーターまたはツーレートメーターとして機能するように構成できます。tokenmt アクションインスタンスは、2 つのトークンバケットを管理します。これらのトークンバケットは、トラフィックフローが設定されたパラメータに適合するかどうかを調べます。

tokenmt(7ipp) のマニュアルページでは、IPQoS がどのようにトークンメーターパラダイムを実装するかが説明されています。トークンバケットに関する一般的な情報は、Kalevi Kilkki 著『Differentiated Services for the Internet』および多数の Web サイトで入手できます。

tokenmt の構成パラメータを次に示します。

tokenmt をシングルレートメーターとして構成する

tokenmt をシングルレートメーターとして構成するには、IPQoS 構成ファイル内で tokenmtpeak_rate パラメータを指定しないでください。赤、緑、または黄の結果 (outcome) を識別するようにシングルレートの tokenmt インスタンスを構成するには、peak_burst パラメータを指定する必要があります。peak_burst パラメータを使用しないことによって、tokenmt が赤または緑の結果だけを識別するように構成することもできます。2 つの出力を持つシングルレート tokenmt の例については、例 34–3 を参照してください。

tokenmt がシングルレートメーターとして機能する場合、 peak_burst パラメータは実質的にバーストサイズを超過します。committed_burstpeak_burst のどちらかと committed_rate は、ゼロ以外の正の整数にする必要があります。

tokenmt をツーレートメーターとして構成する

tokenmt をツーレートメーターとして構成するには、IPQoS 構成ファイル内で tokenmt アクション用の peak_rate パラメータを指定します。ツーレートの tokenmt は、必ず赤、黄、および緑の 3 つの結果 (outcome) を識別します。committed_ratecommitted_burst、および peak_burst パラメータは、ゼロ以外の正の整数にする必要があります。

tokenmt をカラーアウェアとして構成する

ツーレートの tokenmt をカラーアウェアとして構成するには、「カラーアウェアネス」を特に追加するパラメータを追加します。tokenmt をカラーアウェアとして構成する action 文の例を次に示します。


例 37–1 IPQoS 構成ファイル用のカラーアウェア tokenmt アクション

action {
    module tokenmt
    name meter1
    params {
	      committed_rate 4000000
	      peak_rate 8000000
	      committed_burst 4000000
	      peak_burst 8000000
	      global_stats true
	      red_action_name continue
	      yellow_action_name continue
	      green_action_name continue
	      color_aware true
	      color_map {0-20,22:GREEN;21,23-42:RED;43-63:YELLOW}
    }
}

color_aware パラメータを true に設定することによって、カラーアウェアを有効にできます。カラーアウェアにした tokenmt メーターは、以前の tokenmt アクションによってパケットが赤、黄、または緑にマーキング済みであるものと見なします。カラーアウェアの tokenmt は、ツーレートメーター用のパラメータに加え、パケットヘッダー内の DSCP も使用してパケットを評価します。

color_map パラメータは、パケットヘッダーの DSCP がマッピングされる配列を含みます。次の color_map 配列について説明します。

color_map {0-20,22:GREEN;21,23-42:RED;43-63:YELLOW}

DSCP が 0~20 および 22 のパケットは緑にマッピングされます。DSCP が 21 および 23~42 のパケットは赤にマッピングされます。DSCP が 43~63 のパケットは黄にマッピングされます。tokenmt は、デフォルトのカラーマップを格納します。ただし、このデフォルトは必要に応じて color_map パラメータを使用して変更できます。

color_action_name パラメータでは、continue を指定するとパケットの処理を完了できます。また、たとえば yellow_action_name mark22 のように、引数を指定してパケットをマーカーアクションに送信することもできます。

tswtclmt メータリングモジュール

tswtclmt メータリングモジュールは、時間ベースの「速度エスティメータ」を使用して、トラフィッククラスの平均帯域幅を見積もります。tswtclmt は必ず 3 つの結果 (outcome) を識別するメーターとして機能します。速度エスティメータは、フローの到着速度の見積もりを提供します。この速度は、一定期間すなわち「時間ウィンドウ」内の、トラフィックストリームの実行帯域幅の平均を見積もります。速度概算アルゴリズムは、RFC 2859 (A Time Sliding Window Three Colour Marker) に基づいています。

tswtclmt を構成するには、次のパラメータを使用します。

tswtclmt の技術的な詳細については、tswtclmt(7ipp) のマニュアルページを参照してください。tswtclmt に似た速度シェーパの一般的な情報については、 RFC 2963, A Rate Adaptive Shaper for Differentiated Services を参照してください。

マーカーモジュール

IPQoS には 2 つのマーカーモジュール、すなわち dscpmk および dlcosmk が含まれます。ここでは、両方のマーカーの使用方法を説明します。dlcosmk は VLAN デバイスを使用する IPQoS システムでだけ利用可能であるため、通常は dscpmk を使用する必要があります。

dscpmk の技術情報については、dscpmk(7ipp) のマニュアルページを参照してください。dlcosmk の技術情報については、dlcosmk(7ipp) のマニュアルページを参照してください。

パケット転送での dscpmk マーカーの使用

マーカーは、クラシファイアモジュールまたはメータリングモジュールによって処理されたあとのトラフィックフローを受け取ります。マーカーは、転送動作をトラフィックにマークします。転送動作とは、フローが IPQoS システムから送出されたあと、フローに対して行われるアクションです。トラフィッククラスに対して実行される転送動作は、「ホップ単位動作 (PHB)」に定義されます。PHB はトラフィッククラスに優先順位を割り当てます。これは、そのクラスのフローに割り当てられる、ほかのトラフィッククラスに対する相対的な優先度です。PHB は、IPQoS システムの隣接するネットワーク上での転送動作だけを制御します。PHB の詳細については、「ホップ単位動作」を参照してください。

パケット転送」とは、特定クラスのトラフィックを、ネットワーク上の次の宛先へ送信するプロセスを指します。IPQoS システムなどのホストの場合、パケットはホストからローカルネットワークストリームへ転送されます。Diffserv ルーターの場合、パケットはローカルネットワークからルーターの次のホップへ転送されます。

マーカーは、パケットヘッダー内の DS フィールドに、IPQoS 構成ファイル内で定義された既知の転送動作のマークを付けます。以後、IPQoS システムおよびあとに続く Diffserv 対応システムは、マークが変更されないかぎり、DS フィールド内の指示に従ってトラフィックを転送します。PHB を割り当てるため、IPQoS システムは、パケットヘッダーの DS フィールドの値をマークします。この値は、DSCP (Differentiated Services Codepoint) と呼ばれます。Diffserv アーキテクチャーは、2 種類の転送動作、すなわち EF および AF を定義しており、各転送動作はそれぞれ異なる DSCP を使用します。DSCP の概要については、「DS コードポイント」を参照してください。

IPQoS システムは、トラフィックフローの DSCP を読み取り、ほかの送信トラフィックフローに対する相対的な優先度を評価します。次に IPQoS システムは、並行するトラフィックフローすべての優先順位を定め、各フローを優先順位に従ってネットワーク上に送出します。

Diffserv ルーターは、送信トラフィックフローを受け取り、パケットヘッダー内の DS フィールドを読み取ります。DSCP を使用すると、ルーターで現在のトラフィックフローに優先順位を付け、スケジュールを設定できます。ルーターは、PHB で指示された優先順位に従って各フローを転送します。あとに続くホップ上の Diffserv 対応システムも同じ PHB を認識する場合を除いて、ネットワークの境界ルーターを越えて PHB を適用することはできません。

完全優先転送 (Expedited Forwarding、EF) PHB

完全優先転送」(EF) は、推奨される EF コードポイント 46 (101110) の付いたパケットが、ネットワークに送出される時に、可能なかぎり最良の扱いを受けることを保証します。完全優先転送は、しばしば専用回線に例えられます。コードポイント 46 (101110) を持つパケットには、宛先に向かう途中、すべての Diffserv ルーターによる優先待遇が保証されます。EF の技術情報については、RFC 2598 (An Expedited Forwarding PHB) を参照してください。

相対的優先転送 (Assured Forwarding、AF) PHB

相対的優先転送」(AF) では、4 つの異なるクラスの転送動作をマーカーに指定できます。次の表に、クラス、各クラスに指定できる 3 つのドロップ優先度、および各優先度に対応する推奨 DSCP を示します。各 DSCP は、AF 値 (10 進数値およびバイナリ値) で表されます。

表 37–2 相対的優先転送のコードポイント

 

クラス 1 

クラス 2 

クラス 3 

クラス 4 

低ドロップ優先度

AF11 = 

10 (001010) 

AF21 = 

18 (010010) 

AF31 = 

26 (011010) 

AF41 = 

34 (100010) 

Medium-Drop Precedence

AF12 = 

12 (001100) 

AF22 = 

20 (010100) 

AF32 = 

28 (011100) 

AF42 =  

36 (100100) 

高ドロップ優先度

AF13 = 

14 (001110) 

AF23 = 

22 (010110) 

AF33 = 

30 (011110) 

AF43 = 

38 (100110) 

AF コードポイントは、各トラフィッククラスに差別化転送動作を提供する際のガイドとして、すべての Diffserv 対応システム上で使用できます。

これらのパケットが Diffserv ルーターに達すると、ルーターはパケットのコードポイントを、キュー内のほかのトラフィックの DSCP とともに評価します。次にルーターは、利用可能な帯域幅、およびパケットの DSCP により割り当てられた優先順位に応じて、パケットを転送またはドロップします。EF PHB の付いたパケットは、どの AF PHB の付いたパケットよりも広い帯域幅の使用が保証されます。

ネットワーク上の IPQoS システムと Diffserv ルーターとの間でパケットのマーキングを合致させて、パケットが意図したとおりに転送されるようにしてください。たとえば、ネットワーク上の IPQoS システムがパケットにコードポイント AF21 (010010)、AF13 (001110)、AF43 (100110)、および EF (101110) を付けるとします。この場合、AF21、AF13、AF43、および EF DSCP を、Diffserv ルーターの適切なファイルに追加する必要があります。

AF コードポイント表の技術的な説明については、RFC 2597 を参照してください。ルーターの製造元である Cisco Systems とJuniperNetworks は、Web サイトに AF PHB の設定に関する詳細な情報を載せています。この情報を使用して、IPQoS システムおよびルーター用の AF PHB を定義できます。また、ルーター製造元のマニュアルには、自社製品での DS コードポイントの設定方法が含まれています。

マーカーへの DSCP の設定

DSCP の長さは 6 ビットです。DS フィールドの長さは 1 バイトです。DSCP を定義すると、マーカーは、DS コードポイントでパケットヘッダーの最初の 6 つの重みビットをマークします。残りの 2 ビットは、使用されません。

DSCP を定義するには、マーカーアクション文の中で次のパラメータを使用します。


 dscp_map{0-63:DS_codepoint}

dscp_map パラメータは、(DSCP) 値を使用して生成する 64 要素の配列です。dscp_map は、dscpmk マーカーによって着信 DSCP を発信 DSCP にマップするために使用されます。

DSCP 値は、10 進表記で dscp_map に指定する必要があります。たとえば、EF コードポイント 101110 は 10 進数値 46 に変換する必要があり、その結果 dscp_map{0-63:46} になります。AF コードポイントの場合は、表 37–2 のさまざまなコードポイントを 10 進数表記に変換して、dscp_map で使用できるようにしてください。

VLAN デバイスでの dlcosmk マーカーの使用

dlcosmk マーカーモジュールは、データグラムの MAC ヘッダー内に転送動作をマークします。VLAN インタフェースを持つ IPQoS システムでだけ、dlcosmk を使用できます。

dlcosmk は、「VLAN タグ」と呼ばれる 4 バイトを MAC ヘッダーに追加します。VLAN タグには、IEEE 801.D 標準に定義されている 3 ビットのユーザー優先順位値が含まれます。VLAN を認識する Diffserv 対応スイッチは、データグラム内のユーザー優先順位フィールドを読み取ることができます。801.D ユーザー優先順位値は、サービスクラス (CoS) マークを実装します。CoS マークは、商用スイッチで一般的に使われています。

次の表のサービスマークのクラスを定義することによって、dlcosmk マーカーアクションのユーザー優先値を使用できます。

表 37–3 801.D ユーザー優先順位値

サービスクラス 

定義 

ベストエフォート 

背景 

予備 

エクセレントエフォート 

制御された負荷 

応答時間 100ms 未満のビデオ 

応答時間 10ms 未満のビデオ 

ネットワーク制御 

dlcosmk の詳細は、dlcosmk(7ipp) のマニュアルページを参照してください。

VLAN デバイスを持つシステムでの IPQoS 構成

ここでは、VLAN デバイスを持つシステムでの IPQoS の実装方法を示す、単純なネットワークのシナリオを紹介します。このシナリオには、スイッチで接続された 2 つの IPQoS システム、すなわち machine1 および machine2 が含まれます。machine1 上の VLAN デバイスの IP アドレスは 10.10.8.1machine2 上の VLAN デバイスの IP アドレスは 10.10.8.3 です。

machine1 向けの次の IPQoS 構成ファイルは、machine2 への切り替えによる、トラフィックのマーキングの簡単な解決策を示しています。


例 37–2 VLAN デバイスを持つシステムの IPQoS 構成ファイル

fmt_version 1.0
action {
        module ipgpc
	      name ipgpc.classify

        filter {
                name myfilter2
                daddr 10.10.8.3
                class myclass
        }

        class {
                name myclass
                next_action mark4
        }
}

action {
        name mark4
        module dlcosmk
        params {
                cos 4
                next_action continue
		global_stats true
        }
}

この構成では、machine2 上の VLAN デバイスを着信先とする machine1 からのすべてのトラフィックが、dlcosmk マーカーに渡されます。mark4 マーカーアクションは、CoS が 4 でクラスが myclass のデータグラムに VLAN マークを追加するように dlcosmk に指示します。ユーザー優先値 4 は、2 台のマシン間の切り替えによって、machine1 からの myclass トラフィックフローへの制御された負荷転送を指定しなければならないことを示します。

flowacct モジュール

IPQoS の flowacct モジュールは、トラフィックフローに関する情報を記録します。このプロセスは、「フローアカウンティング」と呼ばれます。フローアカウンティングは、顧客への課金や特定クラスへのトラフィック量の評価に使用できるデータを作成します。

フローアカウンティングは、オプションです。通常、flowacct は、メーターまたはマーカーに処理されたトラフィックフローが、ネットワークストリームへ送出される前に通る、最後のモジュールです。Diffserv モデルでの flowacct の位置の図については、図 32–1 を参照してください。flowacct の詳細な技術情報については、flowacct(7ipp) のマニュアルページを参照してください。

フローアカウンティングを有効にするには、flowacct に加えて、Oracle Solaris の exacct アカウンティング機能および acctadm コマンドを使用する必要があります。フローアカウンティングの設定の全手順については、「フローアカウンティングの設定 (作業マップ)」を参照してください。

flowacct パラメータ

flowacct モジュールは、「フローレコード」で構成された「フローテーブル」内に、フローに関する情報を収集します。テーブル内の各エントリには、1 つのフローレコードが含まれます。フローテーブルは、表示できません。

フローレコードを測定してフローテーブルへ書き込むには、IPQoS 構成ファイル内で次の flowacct パラメータを定義します。

flowacct パラメータの IPQoS 構成ファイルでの使用例については、「IPQoS 構成ファイル内でフロー制御を構成する方法」を参照してください。

フローテーブル

flowacct モジュールは、flowacct インスタンスが認識するすべてのパケットフローを記録するフローテーブルを管理します。フローは、次のパラメータによって特定されます。これらを、flowacct の 8 タプルと呼びます。

フローの 8 タプルのパラメータが変化しないかぎり、フローテーブルには 1 つのエントリだけが含まれます。max_limit パラメータにより、フローテーブルに含めることのできるエントリ数が決定されます。

フローテーブルは、IPQoS 構成ファイル内の timer パラメータに指定された間隔でスキャンされます。デフォルトは 15 秒です。IPQoS 構成ファイル内の timeout 間隔に指定された時間以上、IPQoS システムがパケットを認識しない場合、フローは「タイムアウト」します。デフォルトのタイムアウト間隔は 60 秒です。タイムアウトしたエントリは、acctadm コマンドを使用して作成されたアカウンティングファイルに書き込まれます。

flowacct レコード

flowacct レコードには、次の表に示される属性が含まれています。

表 37–4 flowacct レコードの属性

属性名 

属性の内容 

種類 

src-addr-address-type

オリジネータの発信元アドレス。address-type は、IPQoS 構成ファイルの指定に従い、v4 (IPv4 の場合) または v6 (IPv6 の場合) になる

基本  

dest-addr-address-type

パケットの着信先アドレス。address-type は、IPQoS 構成ファイルの指定に従い、v4 (IPv4 の場合) または v6 (IPv6 の場合) になる

基本 

src-port

フローの起点となる発信元ポート  

基本 

dest-port

ブローの宛先となる着信先ポート番号  

基本 

プロトコル

フローのプロトコル番号  

基本 

total-packets

フロー内のパケット数 

基本 

total-bytes

フロー内のバイト数 

基本  

action-name

このフローを記録した flowacct アクションの名前

基本 

creation-time

flowacct がそのフローのパケットを最初に認識した時間

拡張 (Extended) のみ 

last-seen

そのフローのパケットを最後に認識した時間 

拡張 (Extended) のみ 

diffserv-field

フローの発信パケットヘッダー内の DSCP  

拡張 (Extended) のみ 

user

アプリケーションから取得される UNIX ユーザー ID またはユーザー名 

拡張 (Extended) のみ 

projid

アプリケーションから取得されるプロジェクト ID 

拡張 (Extended) のみ 

flowacct モジュールでの acctadm の使用

acctadm コマンドを使用して、flowacct により生成されるさまざまなフローレコードを格納するファイルを作成します。acctadm は、拡張アカウンティング機能と連動して動作します。acctadm の技術的情報については、acctadm(1M) のマニュアルページを参照してください。

flowacct モジュールは、フローを観察し、フローレコードにフローテーブルを入力します。次に flowacct は、timer に指定された間隔でパラメータと属性を評価します。last_seen 値に timeout 値を加えた時間以上パケットが検出されない場合、パケットはタイムアウトします。タイムアウトしたエントリはすべて、フローテーブルから削除されます。削除されたタイムアウトエントリは、timer パラメータに指定された時間が経過するたびに、アカウンティングファイルに書き込まれます。

acctadm を呼び出して flowacct モジュールで使用するには、次の構文を使用します。

acctadm -e file-type -f filename flow
acctadm -e

acctadm-e オプションを指定して呼び出します。-e は、直後にタイプを指定することを示します。

file-type

収集するタイプを指定します。file-type は、basic または extended に置き換える必要があります。各ファイルタイプの属性の一覧については、表 37–4 を参照してください。

-ffile-name

フローレコードを格納するファイル file-name を作成します。

flow

acctadm を IPQoS 上で実行することを示します。

IPQoS 構成ファイル

この節では、IPQoS 構成ファイル各部の詳細を説明します。IPQoS のブート時にアクティブになるポリシーは、/etc/inet/ipqosinit.conf ファイルに格納されています。このファイルは編集可能ですが、新しい IPQoS システムの場合、別の名前で構成ファイルを作成するのが最善の方法です。IPQoS 構成の適用とデバッグについては、第 34 章IPQoS 構成ファイルの作成 (手順)で説明されています。

IPQoS 構成ファイルの構文については、例 37–3 を参照してください。この例では、次の表記上の規則に従います。


例 37–3 IPQoS 構成ファイルの構文

file_format_version ::= fmt_version version

action_clause ::= action {
     name action-name
     module module-name
     params-clause |  ""
     cf-clauses
}
action_name ::= string
module_name ::= ipgpc | dlcosmk | dscpmk | tswtclmt | tokenmt | flowacct 

params_clause ::= params { 
     parameters
     params-stats |   ""
     }
parameters ::=    prm-name-value parameters |  ""
prm_name_value ::= param-name param-value

params_stats ::= global-stats boolean

cf_clauses ::= class-clause cf-clauses |
               filter-clause cf-clauses | ""

class_clause ::= class {
     name class-name
     next_action next-action-name
     class-stats | ""
                 }
class_name  ::= string
next_action_name  ::= string
class_stats ::= enable_stats boolean
boolean ::= TRUE | FALSE

filter_clause ::= filter {
                name filter-name
                class class–name
                parameters
                }
filter_name ::= string

次では、IPQoS 構成ファイルの各主要部分について説明します。

action

action 文を使用して、「IPQoS アーキテクチャーと Diffserv モデル」で説明されているさまざまな IPQoS モジュールを呼び出します。

IPQoS 構成ファイルを新規作成する場合、必ずバージョン番号から始める必要があります。ついで、次の action 文を追加して、クラシファイアを呼び出す必要があります。


fmt_version 1.0

action {
    module ipgpc
    name ipgpc.classify
}

クラシファイア action 文の次に、params 句または class 句を記述します。

ほかのすべての action 文には次の構文を使用します。

action {
name action-name
module module-name
params-clause | ""
cf-clauses
}
name action_name

アクションに名前を付ける

module module_name

呼び出し予定の IPQoS モジュールを識別します。表 37–5 のモジュールの 1 つでなければなりません。

params_clause

クラシファイアが処理するパラメータ (グローバル統計、次に処理するアクションなど) を指定する

cf_clauses

class 句または filter 句のゼロ以上のセット

モジュール定義

モジュールの定義によって、action 文のパラメータを処理するモジュールが示されます。IPQoS 構成ファイルには、次のモジュールを含めることができます。

表 37–5 IPQoS モジュール

モジュール名 

定義 

ipgpc

IP クラシファイア 

dscpmk

IP パケット内で DSCP 作成に使用するマーカー 

dlcosmk

VLAN デバイスで使用するマーカー 

tokenmt

トークンバケットメーター 

tswtclmt

タイムスライディングウィンドウメーター 

flowacct

フローアカウンティングモジュール 

class

トラフィックのクラスごとに「class 句」を定義します。

IPQoS 構成内の残りのクラスを定義するには、次の構文を使用します。


class {
     
      name class-name
      next_action next-action-name
}      

特定のクラスに関する統計情報収集を有効にするには、最初に ipgpc.classify アクション文でグローバル統計を有効にする必要があります。詳細は、action 文」を参照してください。

クラスに関する統計を収集したいときは、enable_stats TRUE 文を使用します。クラスの統計を収集する必要がない場合は、enable_stats FALSE を指定します。あるいは、 enable_stats 文を削除してもかまいません。

IPQoS 対応ネットワーク上のトラフィックは、特に定義しなければ「デフォルトクラス」になります。

filter

フィルタ」は、トラフィックフローをクラスに分類するセレクタで構成されます。これらのセレクタは、クラス句で作成されたクラスのトラフィックへ適用する条件を、明確に定義します。パケットがもっとも高い優先順位のフィルタのセレクタすべてに一致する場合、パケットはそのフィルタのクラスのメンバーと見なされます。ipgpc クラシファイアと使用できるセレクタの完全なリストについては、表 37–1 を参照してください。

次の構文を持つ「filter 句」を使用して IPQoS 構成ファイル内にフィルタを定義します。

filter { 
       name filter-name
       class class-name 
       parameters (selectors)
       }

params

params 句には、アクション文で定義されたモジュールの処理方法が含まれます。params 句の構文を次に示します。


params {
           parameters
           params-stats | ""
       }

params 句では、モジュールに適用するパラメータを使用します。

params 句の params-stats 値は、global_stats TRUE または global_stats FALSE になります。global_stats TRUE 命令は、グローバル統計を呼び出した action 文に関する UNIX スタイルの統計を有効にします。kstat コマンドを使用して、統計情報を表示できます。クラス単位の統計を有効にする前に、action 文の統計を有効にする必要があります。

ipqosconf 構成ユーティリティー

IPQoS 構成ファイルを読んだり、UNIX カーネル内の IPQoS モジュールを構成したりするには、ipqosconf ユーティリティーを使用します。ipqosconf は、次のアクションを実行します。

技術的な情報は、ipqosconf(1M) のマニュアルページを参照してください。