この章では、IPQoS 構成ファイルの作成方法について説明します。この章では、次の内容について説明します。
この章の説明は、完全な QoS ポリシーを定義していること、このポリシーを IPQoS 構成ファイルのベースとしてすぐに使用できることを前提としています。QoS ポリシーを計画するには、「サービス品質ポリシーの計画」を参照してください。
この作業マップでは、IPQoS 構成ファイルを作成するための一般的な作業の一覧と、各作業の実行手順を説明した節へのリンクを示します。
作業 |
説明 |
説明 |
---|---|---|
1. IPQoS 対応のネットワーク構成を計画する |
ローカルネットワーク上でどのシステムを IPQoS 対応にするかを決定する | |
2. ネットワーク上の IPQoS システム用 QoS ポリシーを計画する |
トラフィックフローを区別できるサービスクラスとして識別する。次に、トラフィック管理が必要なフローを決定する | |
3. IPQoS 構成ファイルを作成し、その最初のアクションを定義する |
IPQoS ファイルを作成し、IP クラシファイアを呼び出し、処理を実行させるクラスを定義する | |
4. クラス用のフィルタを作成する |
トラフィックの選択とクラス分けとを規定するフィルタを追加する | |
5. IPQoS 構成ファイルにクラスおよびフィルタをさらに追加する |
IP クラシファイアに処理させるクラスおよびフィルタをさらに作成する | |
6. メータリングモジュールを構成するパラメータを含む action 文を追加する |
QoS ポリシーがフロー制御を必要とする場合、フロー制御速度および適合レベルをメーターに割り当てる | |
7. マーカーを構成するパラメータを含む action 文を追加する |
QoS ポリシーが差別化転送動作を必要とする場合、トラフィッククラスの転送方法を定義する | |
8. フローアカウンティングモジュールを構成するパラメータを含む action 文を追加する |
QoS ポリシーがトラフィックフローに関する統計の取得を必要とする場合、これらのアカウンティング統計の収集方法を定義する | |
9. IPQoS 構成ファイルを適用する |
作成した IPQoS 構成ファイルの内容を、適切なカーネルモジュールに追加する | |
10. 転送動作をルーターファイル内で構成する |
ネットワーク上のいずれかの IPQoS 構成ファイルで転送動作が定義されている場合、結果として得られる DSCP を、ルーターの適切なスケジューリングファイルに追加する |
ネットワーク用の QoS ポリシーは、IPQoS 構成ファイル内に格納します。テキストエディタでこの構成ファイルを作成します。次に、作成したファイルを IPQoS 構成ユーティリティー ipqosconf の引数とします。ipqosconf に対し、構成ファイル内で定義されたポリシーの適用を指示すると、ポリシーがカーネル IPQoS システムに書き込まれます。ipqosconf コマンドの詳細については、ipqosconf(1M) のマニュアルページを参照してください。ipqosconf の使用方法については、「新規構成を IPQoS カーネルモジュールへ適用する方法」を参照してください。
IPQoS 構成ファイルは、Planning the Quality-of-Service Policyで定義した QoS ポリシーを実行する 「サービス品質ポリシーの計画」 文のツリーで構成されています。IPQoS 構成ファイルは、IPQoS モジュールの構成を行います。各アクション文には、アクション文の中で呼び出されるモジュールが処理する「クラス」、「フィルタ」、または「パラメータ」のセットが含まれます。
IPQoS 構成ファイルの完全な構文については、例 37–3 および ipqosconf(1M) のマニュアルページを参照してください。
この章では、3 つの IPQoS 対応システム用の IPQoS 構成ファイルを作成する方法を示します。これらのシステムは、図 33–4 で紹介した BigISP 社のネットワークトポロジの一部です。
Goldweb – プレミアムレベル SLA を購入した顧客用 Web サイトのホストとして機能する Web サーバー
Userweb – ベストエフォート SLA を購入したホームユーザー向けの個人用 Web サイトのホストとして機能する、やや能力の劣る Web サーバー
BigAPPS – ゴールドレベルとベストエフォートの両方の顧客に、メール、ネットワークニュース、および FTP を提供するアプリケーションサーバー
3 つの構成ファイルを通して、最も一般的な IPQoS 構成を示します。IPQoS を実装するために、次の節のサンプルファイルをテンプレートとして使用することもできます。
この節では、まず、プレミアム Web サーバー用の構成を通して、IPQoS 構成ファイルを紹介します。次に、個人用 Web サイトのホストとして機能するサーバー用の構成ファイルで、まったく異なるサービスレベルを構成する方法を示します。両方のサーバーは、図 33–4 のネットワーク例の一部です。
次の構成ファイルは、Goldweb サーバーの IPQoS アクティビティーを定義します。このサーバーは、プレミアム SLA を購入した Goldco 社の Web サイトのホストです。
fmt_version 1.0 action { module ipgpc name ipgpc.classify params { global_stats TRUE } class { name goldweb next_action markAF11 enable_stats FALSE } class { name video next_action markEF enable_stats FALSE } filter { name webout sport 80 direction LOCAL_OUT class goldweb } filter { name videoout sport videosrv direction LOCAL_OUT class video } } action { module dscpmk name markAF11 params { global_stats FALSE dscp_map{0-63:10} next_action continue } } action { module dscpmk name markEF params { global_stats TRUE dscp_map{0-63:46} next_action acct } } action { module flowacct name acct params { enable_stats TRUE timer 10000 timeout 10000 max_limit 2048 } }
次の構成ファイルは、Userweb の IPQoS アクティビティーを定義します。このサーバーは、低価格または「ベストエフォート型」の SLA を購入した個人の Web サイトのホストです。このサービスレベルでは、IPQoS システムがより高額の SLA を利用する顧客からのトラフィックを処理したあとに、できるかぎり最良のサービスをベストエフォートの顧客に保証します。
fmt_version 1.0 action { module ipgpc name ipgpc.classify params { global_stats TRUE } class { name Userweb next_action markAF12 enable_stats FALSE } filter { name webout sport 80 direction LOCAL_OUT class Userweb } } action { module dscpmk name markAF12 params { global_stats FALSE dscp_map{0-63:12} next_action continue } }
最初の IPQoS 構成ファイルは、メンテナンスしやすい任意のディレクトリに作成できます。この章では、IPQoS 構成ファイルの位置としてディレクトリ /var/ipqos を使用します。次の手順では、例 34–1 の IPQoS 構成ファイルの最初のセグメントを構築します。
IPQoS 構成ファイルを作成する際、各 action 文および句を必ず中括弧 ({ }) で囲んでください。中括弧の使用例については、例 34–1 を参照してください。
プレミアム Web サーバーにログインし、新規 IPQoS 構成ファイルを拡張子 .qos を付けて作成します。
すべての IPQoS 構成ファイルで、最初の非コメント行にバージョン番号 fmt_version 1.0 を記述する必要があります。
冒頭のパラメータに続き、初期 action 文を記述して汎用の IP クラシファイア ipgpc を構成します。
IPQoS 構成ファイルを成す action 文のツリーは、この初期アクションから始まります。たとえば、/var/ipqos/Goldweb.qos ファイルは、 ipgpc クラシファイアを呼び出す初期 action 文で始まります。
fmt_version 1.0 action { module ipgpc name ipgpc.classify |
IPQoS 構成ファイルを開始する
action 文を開始する
構成ファイル内の最初のアクションとして ipgpc クラシファイアを構成する
クラシファイアの action 文の名前を定義する。名前は常に ipgpc.classify でなければならない
action 文の詳しい構文については、「action 文」および ipqosconf(1M) のマニュアルページを参照してください。
統計パラメータ global_stats を含む params 句を追加します。
params { global_stats TRUE } |
ipgpc.classify 文のパラメータ global_stats TRUE は、そのアクションに関する統計の収集を可能にします。また、global_stats TRUE を使用し、かつクラス句定義に enable_stats TRUE を指定すれば、そのクラスの統計の収集が可能になります。
統計の取得を有効にすると、パフォーマンスが影響を受けます。新規 IPQoS 構成ファイルを作成したときには、IPQoS が適正に動作するか検証するために、統計収集を有効にしてもかまいません。あとで global_stats の引数を FALSE に変更すれば、統計取得を無効にできます。
グローバル統計は、params 句で定義可能なパラメータの 1 種類に過ぎません。params 句の構文などについては、「params 句」および ipqosconf(1M) のマニュアルページを参照してください。
プレミアムサーバーに向かうトラフィックを特定するクラスを定義します。
class { name goldweb next_action markAF11 enable_stats FALSE } |
この文は、「class 句」と呼ばれます。class 句には次の内容が含まれます。
goldweb クラスを作成して、Goldweb サーバーに向かうトラフィックを特定する
ipgpc モジュールに対し、goldweb クラスのパケットをアクション文 markAF11 に渡すよう指示する。アクション文 markAF11 は、 dscpmk マーカーを呼び出す
goldweb クラスの統計取得を可能にする。ただし、enable_stats の値が FALSE であるため、このクラスの統計取得は有効にはならない
class 句の構文の詳細については、「class 句」と ipqosconf(1M) のマニュアルページを参照してください。
もっとも高い優先順位の転送を必要とするアプリケーションを特定するクラスを定義します。
class { name video next_action markEF enable_stats FALSE } |
video クラスを作成して、Goldweb サーバーから発信されるストリーミングビデオのトラフィックを特定する
ipgpc モジュールに対し、ipgpc による処理が完了した video クラスのパケットを、markEF 文に渡すよう指示する。markEF 文は、dscpmk マーカーを呼び出す
video クラスの統計収集を可能にする。ただし、enable_stats の値が FALSE であるため、このクラスの統計収集は有効にはならない
作成したばかりのクラスにフィルタを定義するには、「IPQoS 構成ファイル内でフィルタを定義する方法」を参照してください。
構成ファイルに対して別の class 句を作成するには、「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」を参照してください。
次の手順では、IPQoS 構成ファイル内でクラスのフィルタを定義します。
次の手順の前に、構成ファイルの作成を開始しており、クラスを定義してあるものとします。この手順は、「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」で作成された /var/ipqos/Goldweb.qos ファイルを引き続き構築します。
IPQoS 構成ファイルを作成する際、各 class 句および filter 句を必ず中括弧 ({ }) で囲んでください。中括弧の使用例については、例 34–1 を参照してください。
IPQoS 構成ファイルを開き、最後に定義したクラスの末尾を探します。
たとえば、IPQoS 対応サーバー Goldweb 用の構成ファイル /var/ipqos/Goldweb.qos では、次の class 句のあとから作業を始めます。
class { name video next_action markEF enable_stats FALSE } |
filter 句を定義し、IPQoS システムからの出力トラフィックを選択します。
filter { name webout sport 80 direction LOCAL_OUT class goldweb } |
フィルタに webout という名前を付ける
ソースポート 80 のトラフィックを選択する。これは、既知の HTTP (Web) トラフィック用ポート
ローカルシステムから発信されるトラフィックを選択する
フィルタが所属するクラス (このインスタンスでは goldweb クラス) を特定する
IPQoS 構成ファイル内の filter 句の構文などについては、「filter 句」を参照してください。
IPQoS システムのストリーミングビデオトラフィックを選択する filter 句を定義します。
filter { name videoout sport videosrv direction LOCAL_OUT class video } |
フィルタに videoout という名前を付ける
ソースポート videosrv のトラフィックを選択する。これは、以前にこのシステムのストリーミングビデオアプリケーション用に定義したポート
ローカルシステムから発信されるトラフィックを選択する
フィルタが所属するクラス (このインスタンスでは video クラス) を特定する
マーカーモジュールの転送動作を定義するには、「IPQoS 構成ファイル内でトラフィック転送を定義する方法」を参照してください。
メータリングモジュールのフロー制御パラメータを定義するには、「IPQoS 構成ファイル内でフロー制御を構成する方法」を参照してください。
IPQoS 構成ファイルをアクティブにするには、「新規構成を IPQoS カーネルモジュールへ適用する方法」を参照してください。
さらにフィルタを定義するには、「IPQoS 構成ファイル内でフィルタを定義する方法」を参照してください。
アプリケーションからのトラフィックフロー向けのクラスを作成するには、「アプリケーションサーバー用 IPQoS 構成ファイルを作成する方法」を参照してください。
次の手順では、IPQoS 構成ファイルにクラスのホップ単位の動作を追加して、トラフィック転送を定義します。
次の手順の前に、既存の IPQoS 構成ファイルにクラスおよびフィルタを定義してあるものとします。この手順では、Example 34–1 の 例 34–1 ファイルを引き続き構築します。
次の手順では、dscpmk マーカーモジュールを使用してトラフィック転送を構成する方法を示します。dlclosmk マーカーを使用した VLAN システムのトラフィック転送については、「VLAN デバイスでの dlcosmk マーカーの使用」を参照してください。
IPQoS 構成ファイルを開き、最後に定義したフィルタの末尾を探します。
たとえば、IPQoS 対応サーバー Goldweb 用の構成ファイル /var/ipqos/Goldweb.qos では、次の filter 句のあとから作業を始めます。
filter { name videoout sport videosrv direction LOCAL_OUT class video } } |
この filter 句は、ipgpc クラシファイアの action 文の最後に位置します。このため、フィルタを終了させる閉じ括弧のあとに、action 文を終了させる閉じ括弧が必要です。
action { module dscpmk name markAF11 |
dscpmk マーカーモジュールを呼び出す
action 文に markAF11 という名前を付ける
以前に定義した goldweb クラスには next_action markAF11 という文が含まれています。この文は、クラシファイアによる処理が完了したトラフィックフローを、アクション文 markAF11 に送信します。
トラックフローに対してマーカーが取るアクションを定義します。
params { global_stats FALSE dscp_map{0-63:10} next_action continue } } |
マーカー action 文 markAF11 の統計収集を可能にする。ただし、global_stats の値が FALSE であるため、統計は収集されない
DSCP 10 を、マーカーにより処理中の goldweb クラスのパケットヘッダーに割り当てる
userweb クラスのパケットに対しこれ以上処理を行う必要がないこと、およびこれらのパケットをネットワークストリームに戻してもよいことを示す
DSCP 10 は、マーカーに対し、dscp マップ内のすべてのエントリを 10 進数値の 10 (バイナリ値 001010) に設定するよう指示します 。このコードポイントは、goldweb トラフィッククラスのパケットが AF11 ホップ単位動作 (PHB) に従うことを示します。AF11 は、DSCP 10 を持つすべてのパケットが、低ドロップ、および高い優先順位のサービスを受けることを保証します。このため、Goldweb 上のプレミアム顧客用の発信トラフィックには、AF (相対的優先転送) PHB で指定可能なもっとも高い優先順位が与えられます。AF に設定可能な DSCP の表については、表 37–2 を参照してください。
別のマーカー action 文を開始します。
action { module dscpmk name markEF |
dscpmk マーカーモジュールを呼び出す
action 文に markEF という名前を付ける
トラフィックフローに対してマーカーが取るアクションを定義します。
params { global_stats TRUE dscp_map{0-63:46} next_action acct } } |
video クラスの統計収集を有効にする。このクラスはストリーミングビデオのパケットを選択する
DSCP 46 を、マーカーにより処理中の video クラスのパケットヘッダーに割り当てる
dscpmk モジュールに対し、dscpmk による処理が完了した video クラスのパケットを、acct 文 action に渡すよう指示する。 action 文 acct は flowacct モジュールを呼び出す
DSCP 46 は、dscpmk モジュールに対し、dscp マップのすべてのエントリを DS フィールドの 10 進数の 46 (バイナリ 101110) に設定するよう指示します。このコードポイントは、video トラフィッククラスのパケットが完全優先転送ホップ単位動作 (PHB) に従うことを示します。
EF のコードポイントは 46 (バイナリ値 101110) にすることをお勧めします。その他の DSCP は、AF PHB をパケットに割り当てるときに使用します。
EF PHB は、DSCP 46 を持つパケットが IPQoS および Diffserv 対応システムによりもっとも高い優先度を与えられることを保証します。ストリーミングアプリケーションは、もっとも高い優先順位のサービスを必要とします。これが、QoS ポリシーでこれらのアプリケーションに EF PHB を割り当てる理由です。PHB の完全優先転送の詳細については、「完全優先転送 (Expedited Forwarding、EF) PHB」を参照してください。
作成したばかりの DSCP を Diffserv ルーターの適切なファイルに追加します。
詳細については、「IPQoS 対応ネットワーク上でルーターを構成する方法」を参照してください。
トラフィックフローのフローアカウンティング統計の収集を開始するには、「IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法」を参照してください。
マーカーモジュールの転送動作を定義するには、「IPQoS 構成ファイル内でトラフィック転送を定義する方法」を参照してください。
メータリングモジュールのフロー制御パラメータを定義するには、「IPQoS 構成ファイル内でフロー制御を構成する方法」を参照してください。
IPQoS 構成ファイルをアクティブにするには、「新規構成を IPQoS カーネルモジュールへ適用する方法」を参照してください。
さらにフィルタを定義するには、「IPQoS 構成ファイル内でフィルタを定義する方法」を参照してください。
アプリケーションからのトラフィックフロー向けのクラスを作成するには、「アプリケーションサーバー用 IPQoS 構成ファイルを作成する方法」を参照してください。
次の手順では、IPQoS 構成ファイル内でトラフィッククラスのアカウンティングを有効にします。この手順では、How to Create the IPQoS Configuration File and Define Traffic Classesで紹介した 「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」 クラスのフローアカウンティングを定義します。このクラスは、プレミアム SLA の一部として課金されるストリーミングビデオのトラフィックを選択します。
次の手順の前に、既存の IPQoS 構成ファイルにクラス、フィルタ、メーターのアクション (必要な場合だけ)、およびマーカーのアクション (必要な場合だけ) を定義してあるものとします。この手順では、Example 34–1 の 例 34–1 ファイルを引き続き構築します。
IPQoS 構成ファイルを開き、最後に定義した action 文の末尾を探します。
たとえば、IPQoS 対応サーバー Goldweb 用の構成ファイル /var/ipqos/Goldweb.qos. では、次の action 文 markEF のあとから作業を始めます。
action { module dscpmk name markEF params { global_stats TRUE dscp_map{0-63:46} next_action acct } } |
フローアカウンティングを呼び出す action 文を開始します。
action { module flowacct name acct |
flowacct フローアカウンティングモジュールを呼び出す
action 文に acct という名前を付ける
トラフィッククラスに関するアカウンティングを制御する params 句を定義します。
params { global_stats TRUE timer 10000 timeout 10000 max_limit 2048 next_action continue } } |
video クラスの統計収集を有効にする。このクラスはストリーミングビデオのパケットを選択する
フローテーブル内で、タイムアウトしたフローが走査される間隔を、ミリ秒単位で指定する。このパラメータでは、間隔は 10000 ミリ秒
最小の間隔タイムアウト値を指定する。フローのパケットがタイムアウト値で指定された時間検出されないと、フローは「タイムアウト」する。このパラメータでは、パケットは 10000 ミリ秒後にタイムアウトする
このアクションインスタンスのフローテーブル内でアクティブなフローレコードの最大数を設定する
video クラスのパケットに対しこれ以上処理を行う必要がないこと、およびこれらのパケットをネットワークストリームに戻してもよいことを示す
flowacct モジュールは、指定されたタイムアウト値に達するまで、特定のクラスのパケットフローに関する統計情報を収集します。
ルーターでホップ単位の動作を設定するには、「IPQoS 対応ネットワーク上でルーターを構成する方法」を参照してください。
IPQoS 構成ファイルをアクティブにするには、「新規構成を IPQoS カーネルモジュールへ適用する方法」を参照してください。
アプリケーションからのトラフィックフロー向けのクラスを作成するには、「アプリケーションサーバー用 IPQoS 構成ファイルを作成する方法」を参照してください。
ベストエフォート Web サーバー用の IPQoS 構成ファイルは、プレミアム Web サーバー用の IPQoS 構成ファイルとは少し違います。この手順では、例として 例 34–2 の構成ファイルを使用します。
ベストエフォート Web サーバーにログインします。
新規 IPQoS 構成ファイルを拡張子 .qos を付けて作成します。
fmt_vesion 1.0 action { module ipgpc name ipgpc.classify params { global_stats TRUE } |
/var/ipqos/userweb.qos ファイルは、ipgpc クラシファイアを呼び出す部分 action 文から始める必要があります。この action 文には、統計収集を有効にする params 句も含めています。この action 文については、「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」を参照してください。
ベストエフォート Web サーバーに向かうトラフィックを特定するクラスを定義します。
class { name userweb next_action markAF12 enable_stats FALSE } |
userweb クラスを作成して、ユーザーから Userweb サーバーに向かうトラフィックを特定する
ipgpc モジュールに対し、ipgpc による処理が完了した userweb クラスのパケットを、action 文 markAF12 に渡すよう指示する。action 文 markAF12 は、dscpmk マーカーを呼び出す
userweb クラスの統計収集を可能にする。ただし、enable_stats の値が FALSE であるため、このクラスの統計は収集されない
class 句の処理については、「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」を参照してください。
userweb クラスのトラフィックフローを選択する filter 句を定義します。
filter { name webout sport 80 direction LOCAL_OUT class userweb } } |
フィルタに webout という名前を付ける
ソースポート 80 のトラフィックを選択する。これは、既知の HTTP (Web) トラフィック用ポート
ローカルシステムから発信されるトラフィックを選択する
フィルタが所属するクラス (このインスタンスでは userweb クラス) を特定する
filter 句の処理については、「IPQoS 構成ファイル内でフィルタを定義する方法」を参照してください。
dscpmk マーカーを呼び出す action 文を開始します。
action { module dscpmk name markAF12 |
dscpmk マーカーモジュールを呼び出す
action 文に markAF12 という名前を付ける
以前に定義した userweb クラスには next_action markAF12 という文が含まれています。この文は、クラシファイアによる処理が完了したトラフィックフローを、 action 文 markAF12 に送信します。
トラフィックフローの処理に使用する、マーカーのパラメータを定義します。
params { global_stats FALSE dscp_map{0-63:12} next_action continue } } |
マーカー action 文 markAF12 の統計収集を可能にする。ただし、enable_stats の値が FALSE であるため、統計は収集されない
DSCP 12 を、マーカーにより処理中の userweb クラスのパケットヘッダーに割り当てる
userweb クラスのパケットに対しこれ以上処理を行う必要がないこと、およびこれらのパケットをネットワークストリームに戻してもよいことを示す
DSCP 12 は、マーカーに対し、dscp マップ内のすべてのエントリを 10 進数値の 12 (バイナリ値 001100) に設定するよう指示します。このコードポイントは、userweb トラフィッククラスのパケットが AF12 ホップ単位動作 (PHB) に従うことを示します。AF12 は、DS フィールド内に DSCP 12 を持つすべてのパケットが、中程度のドロップ、および高い優先順位のサービスを受けることを保証します。
IPQoS 構成ファイルを完成したら、構成を適用します。
アプリケーションからのトラフィックフローに対して、クラスやほかの構成を追加するには、「アプリケーションサーバー用 IPQoS 構成ファイルを作成する方法」を参照してください。
ルーターでホップ単位の動作を設定するには、「IPQoS 対応ネットワーク上でルーターを構成する方法」を参照してください。
IPQoS 構成ファイルをアクティブにするには、「新規構成を IPQoS カーネルモジュールへ適用する方法」を参照してください。
この節では、顧客に主要アプリケーションを提供するアプリケーションサーバー用の、構成ファイルを作成する方法について説明します。この手順では、例として図 33–4 の BigAPPS サーバーを使用します。
次の構成ファイルは、BigAPPS サーバーの IPQoS アクティビティーを定義します。このサーバーは、顧客向けの FTP、電子メール (SMTP)、およびネットワークニュース (NNTP) のホストです。
fmt_version 1.0 action { module ipgpc name ipgpc.classify params { global_stats TRUE } class { name smtp enable_stats FALSE next_action markAF13 } class { name news next_action markAF21 } class { name ftp next_action meterftp } filter { name smtpout sport smtp class smtp } filter { name newsout sport nntp class news } filter { name ftpout sport ftp class ftp } filter { name ftpdata sport ftp-data class ftp } } action { module dscpmk name markAF13 params { global_stats FALSE dscp_map{0-63:14} next_action continue } } action { module dscpmk name markAF21 params { global_stats FALSE dscp_map{0-63:18} next_action continue } } action { module tokenmt name meterftp params { committed_rate 50000000 committed_burst 50000000 red_action_name AF31 green_action_name markAF22 global_stats TRUE } } action { module dscpmk name markAF31 params { global_stats TRUE dscp_map{0-63:26} next_action continue } } action { module dscpmk name markAF22 params { global_stats TRUE dscp_map{0-63:20} next_action continue } }
IPQoS 対応アプリケーションサーバーにログインし、新規 IPQoS 構成ファイルを拡張子 .qos を付けて作成します。
たとえば、アプリケーションサーバー用に /var/ipqos/BigAPPS.qos ファイルを作成します。action 文の最初に、ipgpc クラシファイアを呼び出す次の記述を配置します。これらは必ず記述する必要があります。
fmt_version 1.0 action { module ipgpc name ipgpc.classify params { global_stats TRUE } |
冒頭の action 文については、「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」を参照してください。
BigAPPS サーバー上の 3 つのアプリケーションからのトラフィックをそれぞれ選択するクラスを作成します。
冒頭の action 文のあとに、クラス定義を追加します。
class { name smtp enable_stats FALSE next_action markAF13 } class { name news next_action markAF21 } class { name ftp enable_stats TRUE next_action meterftp } |
smtp という名前のクラスを作成する。 このクラスには、SMTP アプリケーションが扱う電子メールのトラフィックフローが含まれる
smtp クラスの統計収集を可能にする。ただし、enable_stats の値が FALSE であるため、このクラスの統計は取得されない
ipgpc モジュールに対し、ipgpc による処理が完了した smtp クラスのパケットを、action 文 markAF13 に渡すよう指示する
news という名前のクラスを作成する。 このクラスには、NNTP アプリケーションが扱うネットワークニュースのトラフィックフローが含まれる
ipgpc モジュールに対し、ipgpc による処理が完了した news クラスのパケットを、アクション文 markAF21 に渡すよう指示する
ftp という名前のクラスを作成する。 このクラスには、FTP アプリケーションが扱う発信トラフィックが含まれる
ftp クラスの統計収集を可能にする
ipgpc モジュールに対し、ipgpc による処理が完了した ftp クラスのパケットを、action 文 meterftp に渡すよう指示する
クラスの定義の詳細については、「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」を参照してください。
手順 2 で定義したクラスのトラフィックを選択する filter 句を定義します。
filter { name smtpout sport smtp class smtp } filter { name newsout sport nntp class news } filter { name ftpout sport ftp class ftp } filter { name ftpdata sport ftp-data class ftp } } |
フィルタに smtpout という名前を付ける
ソースポート 25 のトラフィックを選択する。これは、既知の sendmail (SMTP) アプリケーション用ポート
フィルタが所属するクラス (このインスタンスでは smtp クラス) を特定する
フィルタに newsout という名前を付ける
ソースポート名 nntp のトラフィックを選択する。これは、既知のネットワークニュース (NNTP) アプリケーション用ポート
フィルタが所属するクラス (このインスタンスでは news クラス) を特定する
フィルタに ftpout という名前を付ける
ソースポート 21 の制御データを選択する。これは、既知の FTP トラフィック用ポート番号
フィルタに ftpdata という名前を付ける
ソースポート 20 のトラフィックを選択する。これは、既知の FTP データトラフィック用ポート番号
ftpout および ftpdata フィルタが所属するクラス (このインスタンスでは ftp) を特定する
フィルタを定義するには、「IPQoS 構成ファイル内でフィルタを定義する方法」を参照してください。
アプリケーショントラフィックの転送動作を定義するには、「IPQoS 構成ファイル内でアプリケーショントラフィックの転送を構成する方法」を参照してください。
メータリングモジュールを使用してフロー制御を設定するには、「IPQoS 構成ファイル内でフロー制御を構成する方法」を参照してください。
フローアカウンティングを設定するには、「IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法」を参照してください。
次の手順では、アプリケーショントラフィックの転送を設定します。次の手順では、アプリケーショントラフィッククラスのホップ単位動作を定義します。これらのクラスは、ネットワーク上のほかのトラフィックよりも優先度を低くする場合があります。この手順では、例 34–3 の /var/ipqos/BigAPPS.qos ファイルを引き続き構築します。
この手順では、マークしたアプリケーションに対してクラスとフィルタをすでに定義した既存の IPQoS 構成ファイルがあることを前提にしています。
アプリケーションサーバー用に作成した IPQoS 構成ファイルを開き、最後の filter 句の末尾を検索します。
/var/ipqos/BigAPPS.qos ファイルでは、最後のフィルタは次のとおりです。
filter { name ftpdata sport ftp-data class ftp } } |
action { module dscpmk name markAF13 |
dscpmk マーカーモジュールを呼び出す
action 文に markAF13 という名前を付ける
電子メールのトラフィックフローにマークされるホップ単位動作を定義します。
params { global_stats FALSE dscp_map{0-63:14} next_action continue } } |
マーカー action 文 markAF13 の統計収集を可能にする。ただし、global_stats の値が FALSE であるため、統計は収集されない
DSCP 14 を、マーカーにより処理中の smtp クラスのパケットヘッダーに割り当てる
smtp クラスのパケットに対しこれ以上処理を行う必要がないことを示す。よって、これらのパケットはネットワークストリームに戻すことができる
DSCP 14 は、マーカーに対し、dscp マップ内のすべてのエントリを 10 進数値の 14 (バイナリ値 001110) に設定するよう指示します。DSCP 14 は、AF13 のホップ単位の動作を設定します。マーカーは、DS フィールドの DSCP 14 で smtp トラフィッククラスのパケットをマークします。
AF13 は、DSCP 14 を持つすべてのパケットに高いドロップ優先度を割り当てますが、それと同時に Class 1 の優先順位も保証するため、ルーターは電子メールの発信トラフィックに対し、キューの中で高い優先順位を与えます。設定可能な AF コードポイントの表については、表 37–2 を参照してください。
マーカー action 文を追加して、ネットワークニュースのトラフィック用のホップ単位動作を定義します。
action { module dscpmk name markAF21 params { global_stats FALSE dscp_map{0-63:18} next_action continue } } |
action 文に markAF21 という名前を付ける
DSCP 18 を、マーカーにより処理中の nntp クラスのパケットヘッダーに割り当てる
DSCP 18 は、マーカーに対し、dscp マップ内のすべてのエントリを 10 進数値の 18 (バイナリ値 010010) に設定するよう指示します。DSCP 18 は、AF21 のホップ単位の動作を設定します。マーカーは、DS フィールドの DSCP 18 で news トラフィッククラスのパケットをマークします。
AF21 は DSCP 18 を持つすべてのパケットに低いドロップ優先度を保証しますが、優先順位は Class 2 にとどまります。よって、ネットワークニューストラフィックが振り落とされる可能性は低くなります。
Web サーバーの構成情報を追加するには、「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」を参照してください。
メータリングモジュールを使用してフロー制御を設定するには、「IPQoS 構成ファイル内でフロー制御を構成する方法」を参照してください。
フローアカウンティングを設定するには、「IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法」を参照してください。
ルーターで転送動作を設定するには、「IPQoS 対応ネットワーク上でルーターを構成する方法」を参照してください。
IPQoS 構成ファイルをアクティブにするには、「新規構成を IPQoS カーネルモジュールへ適用する方法」を参照してください。
ネットワークに送出される特定のトラフィックフローの速度を制御するには、メーターのパラメータを定義しなければなりません。IPQoS 構成ファイル内で、2 つのメーター tokenmt と tswtclmt とのどちらかを使用できます。
次の手順では、例 34–3 のアプリケーションサーバーの IPQoS 構成ファイルを引き続き構築します。次の手順では、メーターを構成するだけではなく、メーター action 文の内部で呼び出される 2 つの マーカーアクションも構成します。
この手順の前に、フローを制御するアプリケーション用のクラスおよびフィルタを定義してあるものとします。
アプリケーションサーバー用に作成した IPQoS 構成ファイルを開きます。
/var/ipqos/BigAPPS.qos ファイルで、次のマーカーアクションのあとから作業を開始します。
action { module dscpmk name markAF21 params { global_stats FALSE dscp_map{0-63:18} next_action continue } } |
ftp クラスのトラフィックをフロー制御するメーター action 文を作成します。
action { module tokenmt name meterftp |
tokenmt メーターを呼び出す
action 文に meterftp という名前を付ける
params { committed_rate 50000000 committed_burst 50000000 |
ftp クラスのトラフィックに 50,000,000 bps の転送速度を割り当てる
ftp クラスのトラフィックに 50,000,000 ビットのバーストサイズを割り当てる
tokenmt パラメータについては、「tokenmt をツーレートメーターとして構成する」を参照してください。
次のようにパラメータを追加して、トラフィック適合優先順位を設定します。
red_action markAF31 green_action_name markAF22 global_stats TRUE } } |
ftp クラスのトラフィックフローが認定速度を超過した場合、パケットは、markAF31 マーカー action 文に送信されることを示す
ftp クラスのトラフィックフローが認定速度に適合する場合、パケットがアクション文 markAF22 に送られることを示す
ftp クラスのメータリング統計取得を有効にする
トラフィックの適合性については、「メーターモジュール」を参照してください。
ホップ単位動作を ftp クラスの不適合トラフィックフローに割り当てるマーカー action 文を追加します。
action { module dscpmk name markAF31 params { global_stats TRUE dscp_map{0-63:26} next_action continue } } |
dscpmk マーカーモジュールを呼び出す
action 文に markAF31 という名前を付ける
ftp クラスの統計取得を有効にする
ftp クラスのトラフィックが認定速度を超過した場合は常に、DSCP 26 を ftp クラスのパケットヘッダーに割り当てる
ftp クラスのパケットに対しこれ以上処理を行う必要がないことを示す。よって、これらのパケットはネットワークストリームに戻すことができる
DSCP 26 は、マーカーに対し、dscp マップ内のすべてのエントリを 10 進数値の 26 (バイナリ値 011010) に設定するよう指示します。DSCP 26 は、AF31 のホップ単位の動作を設定します。マーカーは、DS フィールドの DSCP 26 で ftp トラフィッククラスのパケットをマークします。
AF31 は DSCP 26 を持つすべてのパケットに低いドロップ優先度を保証しますが、優先順位は Class 2 にとどまります。このため、速度不適合の FTP トラフィックがドロップされる可能性は低くなりますが、設定可能な AF コードポイントの表については、表 37–2 を参照してください。
認定速度に適合する ftp トラフィックフローにホップ単位動作を割り当てるマーカー action 文を追加します。
action { module dscpmk name markAF22 params { global_stats TRUE dscp_map{0-63:20} next_action continue } } |
marker アクションに markAF22 という名前を付ける
ftp クラスのトラフィックが認定速度に適合する場合は常に、DSCP 20 をパケットヘッダーに割り当てる
DSCP 20 は、マーカーに対し、dscp マップ内のすべてのエントリを 10 進数値の 20 (バイナリ値 010100) に設定するよう指示します。DSCP 20 は、AF22 のホップ単位の動作を設定します。マーカーは、DS フィールドの DSCP 20 で ftp トラフィッククラスのパケットをマークします。
AF22 は、DSCP 20 を持つすべてのパケットに中程度のドロップ優先度と Class 2 の優先順位を保証します。このため、速度適合の FTP トラフィックは、IPQoS システムから同時に送出されるフロー内で中程度のドロップ優先度を保証されます。ただし、ルーターは、Class 1 で中程度のドロップ優先度以上を持つトラフィッククラスの転送を優先します。設定可能な AF コードポイントの表については、表 37–2 を参照してください。
アプリケーションサーバー用に作成した DSCP を、Diffserv ルーターの適切なファイルに追加します。
IPQoS 構成ファイルをアクティブにするには、「新規構成を IPQoS カーネルモジュールへ適用する方法」を参照してください。
Web サーバーの構成情報を追加するには、「IPQoS 構成ファイルを作成し、トラフィッククラスを定義する方法」を参照してください。
フローアカウンティングを設定するには、「IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法」を参照してください。
ルーターで転送動作を設定するには、「IPQoS 対応ネットワーク上でルーターを構成する方法」を参照してください。
差別化サービスを提供するには、「diffserv ネットワークのハードウェア計画」の説明に従って、ネットワークトポロジに Diffserv 対応ルーターを含める必要があります。ルーター上で Diffserv を構成し、ルーターのファイルを更新する実際の手順は、このマニュアルの扱う範囲ではありません。
この節では、ネットワーク上のさまざまな IPQoS 対応システムおよび Diffserv ルーター間で、転送情報を調整する一般的な手順を説明します。
次の手順では、例として図 33–4 のトポロジを使用します。
次の手順の前に、この章のこれまでの作業を実行することにより、ネットワーク上で IPQoS システムを構成してあるものとします。
ネットワーク上のすべての IPQoS 対応システムの構成ファイルを確認します。
さまざまな QoS ポリシーで使用される各コードポイントを特定します。
コードポイント、およびコードポイントを適用するシステムとクラスの表を作成します。次の表から、同じコードポイントを使用した領域を知ることができます。同じコードポイントを使用したままでもかまいませんが、同じマークが付けられたクラス間の優先度を決めるには、IPQoS 構成ファイル内に precedence セレクタなどほかの条件を指定する必要があります。
たとえば、この章の手順で使用するネットワーク例の場合、次のコードポイント表を作成できます。
システム |
クラス |
PHB |
DS コードポイント |
---|---|---|---|
Goldweb |
video |
EF |
46 (101110) |
Goldweb |
goldweb |
AF11 |
10 (001010) |
Userweb |
webout |
AF12 |
12 ( 001100) |
BigAPPS |
smtp |
AF13 |
14 ( 001110) |
BigAPPS |
news |
AF18 |
18 ( 010010) |
BigAPPS |
ftp 適合トラフィック |
AF22 |
20 ( 010100) |
BigAPPS |
ftp 不適合トラフィック |
AF31 |
26 ( 011010) |
ネットワークの IPQoS 構成ファイルから得たコードポイントを、Diffserv ルーターの適切なファイルに追加します。
これらのコードポイントは、ルーターの Diffserv スケジューリング機構の設定に役立ちます。詳しくは、ルーターの製造元の文書および Web サイトを参照してください。