この節では、まず、プレミアム 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 カーネルモジュールへ適用する方法」を参照してください。