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