IPQoS の管理

第 3 章 IPQoS 構成ファイルの作成 (手順)

この章では、IPQoS 構成ファイルの作成方法および ipqosconf ユーティリティの使用方法を示します。

この章では、以下の内容について説明します。

この章の説明は、完全な QoS ポリシーを保持していること、このポリシーを IPQoS 構成ファイルのベースとしてすぐに使用できることを前提としています。QoS ポリシーの計画方法については、サービス品質ポリシーの計画を参照してください。

IPQoS 構成ファイル内での QoS ポリシーの定義 (作業マップ)

次の表に、IPQoS 構成ファイルを作成するための一般的な作業を示します。

表 3–1 IPQoS 構成ファイルの作成 (作業マップ)

作業 

説明 

参照先 

1. IPQoS 対応のネットワーク構成を計画する 

ローカルネットワーク上でどのシステムを IPQoS 対応にするかを決定する 

IPQoS 用のネットワークを準備する方法

2. ネットワーク上の IPQoS システム用 QoS ポリシーを計画する 

トラフィックフローを明確なサービスクラスとして識別し、トラフィックの管理を必要とするフローを決定する 

サービス品質ポリシーの計画

3. IPQoS 構成ファイル作成を開始し、その最初のアクションを定義する 

IPQoS ファイルを作成し、IP クラシファイアを呼び出し、処理を実行させるクラスを定義する 

IPQoS 構成ファイルの開始方法およびトラフィッククラスの定義方法

4. クラス用のフィルタを作成する 

トラフィックの選択とクラス分けとを規定するフィルタを追加する 

IPQoS 構成ファイル内でフィルタを定義する方法

5. IPQoS 構成ファイルにクラスおよびフィルタをさらに追加する 

IP クラシファイアに処理させるクラスおよびフィルタをさらに作成する 

ベストエフォート Web サーバー用の IPQoS 構成ファイルを作成する方法

6. メータリングモジュールを構成するパラメータを含むアクション文を追加する 

QoS ポリシーがフロー制御を必要とする場合、フロー制御速度および適合レベルをメーターに割り当てる 

IPQoS 構成ファイル内でフロー制御を構成する方法

7. マーカーを構成するパラメータを含むアクション文を追加する 

QoS ポリシーが差別化転送動作を必要とする場合、トラフィッククラスの転送方法を定義する 

IPQoS 構成ファイル内でトラフィック転送を定義する方法

8. フローアカウンティングモジュールを構成するパラメータを含むアクション文を追加する 

QoS ポリシーがトラフィックフローに関する統計の取得を必要とする場合、これらのアカウンティング統計の収集方法を定義する 

IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法

9. IPQoS 構成ファイルを適用する 

作成した IPQoS 構成ファイルの内容を、適切なカーネルモジュールに追加する 

新規構成の IPQoS カーネルモジュールへの適用方法

10. 転送動作をルーターファイル内で構成する 

ネットワーク上のいずれかの IPQoS 構成ファイルで転送動作が定義されている場合、結果として得られる DSCP を、ルーターの適切なスケジューリングファイルに追加する 

IPQoS 対応ネットワーク上でルーターを構成する方法

QoS ポリシー作成用のツール

ネットワーク用の QoS ポリシーは、IPQoS 構成ファイル内に格納します。テキストエディタでこの構成ファイルを作成し、このファイルを IPQoS 構成ユーティリティ ipqosconf の引数として指定します。ipqosconf に対し、構成ファイル内で定義されたポリシーの適用を指示すると、ポリシーがカーネル IPQoS システムに書き込まれます。ipqosconf コマンドの詳細については、ipqosconf(1M) のマニュアルページを参照してください。ipqosconf の使用方法については、新規構成の IPQoS カーネルモジュールへの適用方法を参照してください。

IPQoS 構成ファイル

IPQoS 構成ファイルは、いくつかの「アクション文」から成るツリー構造をとります。これらのアクション文は、サービス品質ポリシーの計画で定義した QoS ポリシーを実装します。IPQoS 構成ファイルは、IPQoS モジュールの構成を行います。各アクション文には、アクション文の中で呼び出されるモジュールが処理する「クラス」、「フィルタ」、または「パラメータ」のセットが含まれます。

IPQoS 構成ファイルの完全な構文については、例 6–3および ipqosconf(1M) のマニュアルページを参照してください。

IPQoS トポロジ例の構成

この章では、3 つの IPQoS 対応システム用の IPQoS 構成ファイルを作成する方法を示します。これらのシステムは、図 2–4で紹介した BigISP 社のネットワークトポロジの一部です。

3 つの構成ファイルを通して、最も一般的な IPQoS 構成を示します。これらをテンプレートとして使用して、独自の IPQoS 実装を作成することもできます。

Web サーバー用 IPQoS 構成ファイルの作成

この節では、まず、プレミアム Web サーバー用の構成ファイルの作成を通して、IPQoS 構成ファイルの作成方法を示します。次に、個人用 Web サイトのホストとして機能するサーバー用の構成ファイルで、まったく異なるサービスレベルを構成する方法を示します。どちらのサーバーも、図 2–4 に示したネットワーク例の一部です。

次の構成ファイルは、プレミアム SLA を購入した Goldco 社の Web サイトのホストとして機能する、Goldweb サーバーの IPQoS アクティビティを定義します。


例 3–1 プレミアム Web サーバー用 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 を利用する顧客からのトラフィックを処理したあとに、できるかぎり最良のサービスをベストエフォートの顧客に保証します。


例 3–2 ベストエフォート Web サーバー用の構成例

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 構成ファイルは、保守および使用しやすい任意のディレクトリに作成できます。この章では、IPQoS 構成ファイルの位置としてディレクトリ /var/ipqos を使用します。次の手順では、例 3–1 に示した IPQoS 構成ファイルの初期セグメントを構築します。


注 –

IPQoS 構成ファイルを作成する際、各アクション文および句を必ず中括弧 ({ }) で囲んでください。括弧の使用例については、例 3–1 を参照してください。


  1. プレミアム Web サーバーにログインし、新規 IPQoS 構成ファイルを拡張子 .qos を付けて作成します。

    すべての IPQoS 構成ファイルで、最初の非コメント行にバージョン番号 fmt_version 1.0 を記述する必要があります。

  2. 冒頭のパラメータに続き、初期アクション文を記述して汎用の 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) のマニュアルページを参照してください。

  3. 統計パラメータ 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) のマニュアルページを参照してください。

  4. プレミアムサーバーに向かうトラフィックを特定するクラスを定義します。


    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) のマニュアルページを参照してください。

  5. もっとも高い優先順位の転送を必要とするアプリケーションを特定するクラスを定義します。


     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 構成ファイルの開始方法およびトラフィッククラスの定義方法

IPQoS 構成ファイル内でフィルタを定義する方法

次の手順では、IPQoS 構成ファイル内でクラス用のフィルタを定義する方法を示します。次の手順の前に、構成ファイルを開始しており、クラスを定義してあるものとします。ここでは、IPQoS 構成ファイルの開始方法およびトラフィッククラスの定義方法で紹介した /var/ipqos/Goldweb.qos ファイルの構築を続けます。


注 –

IPQoS 構成ファイルを作成する際、各クラス句およびフィルタ句を必ず中括弧 ({ }) で囲んでください。 括弧の使用例については、例 3–1 を参照してください。


  1. IPQoS 構成ファイルを開き、最後に定義したクラスの末尾を探します。

    たとえば、IPQoS 対応サーバー Goldweb 用の構成ファイル /var/ipqos/Goldweb.qos では、次のクラス句のあとから作業を始めます。


    class {
            name video
            next_action markEF
            enable_stats FALSE
        }
  2. 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 構成ファイル内のフィルタ句の構文および詳細情報については、フィルタ句を参照してください。

  3. 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 構成ファイルを有効にする 

新規構成の IPQoS カーネルモジュールへの適用方法

追加のフィルタを定義する 

IPQoS 構成ファイル内でフィルタを定義する方法

アプリケーションからのトラフィックフロー用のクラスを作成する 

アプリケーションサーバー用 IPQoS 構成ファイルの作成方法

IPQoS 構成ファイル内でトラフィック転送を定義する方法

次の手順では、クラスのホップ単位動作を IPQoS 構成ファイルに追加して、トラフィック転送を定義する方法を示します。次の手順の前に、既存の IPQoS 構成ファイルにクラスおよびフィルタを定義してあるものとします。ここでは、例 3–1 に示した /var/ipqos/Goldweb.qos ファイルの構築を続けます。


注 –

次の手順では、dscpmk マーカーモジュールを使用してトラフィック転送を構成する方法を示します。dlcosmk マーカーを使用した VLAN システムでのトラフィック転送については、VLAN デバイスでの dlcosmk マーカーの使用を参照してください。


  1. IPQoS 構成ファイルを開き、最後に定義したフィルタの末尾を探します。

    たとえば、IPQoS 対応サーバー Goldweb 用の構成ファイル /var/ipqos/Goldweb.qos では、次のフィルタ句のあとから作業を始めます。


    filter {
            name videoout
            sport videosrv
            direction LOCAL_OUT
            class video
        }
    }

    このフィルタは、ipgpc クラシファイアのアクション文の最後に位置します。このため、フィルタを終了させる閉じ括弧のあとに、アクション文を終了させる閉じ括弧が必要です。

  2. 次のアクション文を使用してマーカーを呼び出します。


    action {
        module dscpmk
        name markAF11
    

    エントリ 

    説明 

    module dscpmk

    dscpmk マーカーモジュールを呼び出す

    name markAF11

    アクション文に markAF11 という名前を付ける

    以前に定義した goldweb クラスには next_action markAF11 という文が含まれています。この文は、クラシファイアによる処理が完了したトラフィックフローを、アクション文 markAF11 に送信します。

  3. トラックフローに対してマーカーが取るアクションを定義します。


        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 を参照してください。

  4. 別のマーカーアクション文を開始します。


    action {
        module dscpmk
        name markEF    
    

    エントリ 

    説明 

    module dscpmk

    dscpmk マーカーモジュールを呼び出す

    name markEF

    アクション文に markEF という名前を付ける

  5. トラフィックフローに対してマーカーが取るアクションを定義します。


        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 に渡すよう指示する。アクション文 acctflowacct モジュールを呼び出す

    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を参照してください。

  6. 作成したばかりの DS コードポイントを diffserv ルーターの適切なファイルに追加します。詳細については、IPQoS 対応ネットワーク上でルーターを構成する方法を参照してください。

次に進む手順

作業 

参照先  

トラフィックフローに関するフローアカウンティング統計の収集を開始する 

IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法

マーカーモジュールの転送動作を定義する 

IPQoS 構成ファイル内でトラフィック転送を定義する方法

メータリングモジュールのフロー制御パラメータを定義する 

IPQoS 構成ファイル内でフロー制御を構成する方法

IPQoS 構成ファイルを有効にする 

新規構成の IPQoS カーネルモジュールへの適用方法

追加のフィルタを定義する 

IPQoS 構成ファイル内でフィルタを定義する方法

アプリケーションからのトラフィックフロー用のクラスを作成する 

アプリケーションサーバー用 IPQoS 構成ファイルの作成方法

IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法

次の手順では、IPQoS 構成ファイル内でトラフィッククラスのアカウンティングを有効にする方法を示します。次の手順の前に、既存の IPQoS 構成ファイルにクラス、フィルタ、メーターのアクション (必要な場合だけ)、およびマーカーのアクション (必要な場合だけ) を定義してあるものとします。ここでは、例 3–1 に示した /var/ipqos/Goldweb.qos ファイルの構築を続けます。

次の手順では、IPQoS 構成ファイルの開始方法およびトラフィッククラスの定義方法で示した video クラス用のフローアカウンティングを定義する方法を示します。このクラスは、プレミアム SLA の一部として課金されるストリーミングビデオのトラフィックを選択します。

  1. 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
        }
    }
  2. フローアカウンティングを呼び出すアクション文を開始します。


    action {
        module flowacct
        name acct
    

    エントリ 

    説明 

    module flowacct

    flowacct フローアカウンティングモジュールを呼び出す

    name acct

    アクション文に acct という名前を付ける

  3. トラフィッククラスに関するアカウンティングを制御する 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 対応ネットワーク上でルーターを構成する方法

IPQoS 構成ファイルを有効にする 

新規構成の IPQoS カーネルモジュールへの適用方法

アプリケーションからのトラフィックフロー用のクラスを作成する 

アプリケーションサーバー用 IPQoS 構成ファイルの作成方法

ベストエフォート Web サーバー用の IPQoS 構成ファイルを作成する方法

ベストエフォート Web サーバー用の IPQoS 構成ファイルは、プレミアム Web サーバー用の IPQoS 構成ファイルとは若干異なります。次の手順を通して、異なるレベルの Web サービス用の構成ファイル間に見られる、類似点および相違点を知ることができます。次の手順では、例 3–2 に示した構成ファイルを使用します。

  1. ベストエフォート Web サーバーにログインします。

  2. 新規 IPQoS 構成ファイルを拡張子 .qos を付けて作成します。


    fmt_version 1.0
    
    action {
        module ipgpc
        name ipgpc.classify
        params {
            global_stats TRUE
       }
    

    /var/ipqos/userweb.qos ファイルは、ipgpc クラシファイアを呼び出す部分アクション文から始める必要があります。このアクション文には、統計取得を有効にする params 句も含めています。このアクション文については、IPQoS 構成ファイルの開始方法およびトラフィッククラスの定義方法を参照してください。

  3. ベストエフォート 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 構成ファイルの開始方法およびトラフィッククラスの定義方法を参照してください。

  4. 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 構成ファイル内でフィルタを定義する方法を参照してください。

  5. dscpmk マーカーを呼び出すアクション文を開始します。


    action {
        module dscpmk
        name markAF12
    

    エントリ 

    説明 

    module dscpmk

    dscpmk マーカーモジュールを呼び出す

    name markAF12

    アクション文に markAF12 という名前を付ける

    以前に定義した userweb クラスには next_action markAF12 という文が含まれています。この文は、クラシファイアによる処理が完了したトラフィックフローを、アクション文 markAF12 に送信します。

  6. トラフィックフローの処理に使用する、マーカーのパラメータを定義します。


        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 構成ファイルの作成方法

ルーターのホップ単位動作を構成する 

IPQoS 対応ネットワーク上でルーターを構成する方法

IPQoS 構成ファイルを有効にする 

新規構成の IPQoS カーネルモジュールへの適用方法

アプリケーションサーバー用 IPQoS 構成ファイルの作成

この節では、組織内外の顧客に多数の主要アプリケーションを提供するアプリケーションサーバー用の、構成ファイルを作成する方法について説明します。次の手順では、図 2–4 に示した BigAPPS サーバーを例として使用します。

次の構成ファイルは、顧客の FTP、電子メール (SMTP)、およびネットワークニュース (NNTP) のホストとして機能する BigAPPS サーバーの、IPQoS アクティビティを定義します。


例 3–3 アプリケーションサーバー用の構成例

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 構成ファイルの作成方法

  1. IPQoS 対応アプリケーションサーバーにログインし、新規 IPQoS 構成ファイルを拡張子 .qos を付けて作成します。

    たとえば、アプリケーションサーバー用に /var/ipqos/BigAPPS.qos ファイルを作成します。アクション文の最初に、ipgpc クラシファイアを呼び出す以下の記述を配置します。これらは必ず記述する必要があります。


    fmt_version 1.0
    
    action {
        module ipgpc
        name ipgpc.classify
        params {
            global_stats TRUE
        }     
    

    冒頭のアクション文については、IPQoS 構成ファイルの開始方法およびトラフィッククラスの定義方法を参照してください。

  2. 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 構成ファイルの開始方法およびトラフィッククラスの定義方法を参照してください。

  3. 定義済みのクラスのトラフィックを選択するフィルタ句を定義します。


        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 構成ファイル内でフィルタを定義する方法

アプリケーショントラフィックの転送動作を定義する 

IPQoS 構成ファイル内でアプリケーショントラフィックの転送を構成する方法

メータリングモジュールを使用してフロー制御を設定する 

IPQoS 構成ファイル内でフロー制御を構成する方法

フローアカウンティングを構成する 

IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法

IPQoS 構成ファイル内でアプリケーショントラフィックの転送を構成する方法

次の手順では、アプリケーショントラフィックの転送を構成する方法を示します。次の手順では、アプリケーショントラフィッククラスのホップ単位動作を定義します。これらのクラスは、ネットワーク上の他のトラフィックよりも優先度を低くする場合があります。次の手順の前に、既存の IPQoS 構成ファイルに、マークを付けるアプリケーション用のクラスおよびフィルタを定義してあるものとします。ここでは、例 3–3 に示した /var/ipqos/BigAPPS.qos ファイルの構築を続けます。

  1. アプリケーションサーバー用に作成した IPQoS 構成ファイルを開きます。

    最後のフィルタ句の末尾を探します。/var/ipqos/BigAPPS.qos ファイルでは、最後のフィルタは次のとおりです。


     filter {
            name ftpdata
            sport ftp-data
            class ftp
        }
    }
  2. 次の方法でマーカーを呼び出します。


    action {
        module dscpmk
        name markAF13
        
    

    エントリ 

    説明 

    module dscpmk

    dscpmk マーカーモジュールを呼び出す

    name markAF13

    アクション文に markAF13 という名前を付ける

  3. 電子メールのトラフィックフローにマークされるホップ単位動作を定義します。


        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 を参照してください。

  4. マーカーアクション文を追加して、ネットワークニュースのトラフィック用のホップ単位動作を定義します。


    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 構成ファイル内でフロー制御を構成する方法

フローアカウンティングを構成する 

IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法

ルーターの転送動作を構成する 

IPQoS 対応ネットワーク上でルーターを構成する方法

IPQoS 構成ファイルを有効にする 

新規構成の IPQoS カーネルモジュールへの適用方法

IPQoS 構成ファイル内でフロー制御を構成する方法

特定のトラフィックフローがネットワークに送出される速度を制御するには、メーターのパラメータを定義する必要があります。IPQoS 構成ファイル内で、2 つのメータリングモジュール tokenmttswtclmt とのどちらかを使用できます。

ここでは、例 3–3 に示したアプリケーションサーバー用 IPQoS 構成ファイルの構築を続けます。次の手順では、メーターを構成するだけではなく、メーターアクション文の内部で呼び出される 2 つのマーカーアクションも構成します。

  1. アプリケーションサーバー用に作成した IPQoS 構成ファイルを開きます。

    残りの手順の前に、フローを制御するアプリケーション用のクラスおよびフィルタを定義してあるものとします。/var/ipqos/BigAPPS.qos ファイルで、次のマーカーアクションのあとから作業を開始します。


    action {
        module dscpmk
        name markAF21
        params {
            global_stats FALSE
            dscp_map{0-63:18}
            next_action continue
        }
    }
  2. ftp クラスのトラフィックをフロー制御するメーターアクション文を作成します。


    action {
        module tokenmt
        name meterftp
                
    

    エントリ 

    定義 

    module tokenmt

    tokenmt メーターを呼び出す

    name meterftp

    アクション文に meterftp という名前を付ける

  3. メーターの速度を設定するパラメータを追加します。


    params {
           committed_rate 50000000
           committed_burst 50000000
      
    

    エントリ 

    説明 

    committed_rate 50000000

    ftp クラスのトラフィックに 50,000,000 bps の転送速度を割り当てる

    committed_burst 50000000

    ftp クラスのトラフィックに 50,000,000 ビットのバーストサイズを割り当てる

    tokenmt パラメータの詳細については、tokenmt をツーレートメーターとして構成するを参照してください。

  4. トラフィック適合度ごとの優先度を設定するパラメータを追加します。


        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 クラスのメータリング統計取得を有効にする

    トラフィック適合の詳細については、メーターモジュールを参照してください。

  5. ホップ単位動作を 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 コードポイント 26ftp クラスのパケットヘッダーに割り当てる

    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 を参照してください。

  6. 認定速度に適合する 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 を参照してください。

  7. アプリケーションサーバー用に作成した DS コードポイントを、diffserv ルーターの適切なファイルに追加します。詳細については、IPQoS 対応ネットワーク上でルーターを構成する方法を参照してください。

次に進む手順

作業 

参照先  

IPQoS 構成ファイルを有効にする 

新規構成の IPQoS カーネルモジュールへの適用方法

Web サーバーの構成情報を追加する 

IPQoS 構成ファイルの開始方法およびトラフィッククラスの定義方法

フローアカウンティングを構成する 

IPQoS 構成ファイル内でクラスのアカウンティングを有効にする方法

ルーターの転送動作を構成する 

IPQoS 対応ネットワーク上でルーターを構成する方法

ルーター上での差別化サービスの提供

厳密な意味で差別化サービスを提供するには、diffserv ネットワークのハードウェア計画の記述に従って、ネットワークトポロジに diffserv 対応のルーターを含める必要があります。ルーター上で diffserv を構成し、ルーターのファイルを更新する実際の手順は、このマニュアルの扱う範囲ではありません。

この節では、ネットワーク上のさまざまな IPQoS 対応システムおよび diffserv ルーター間で、転送情報を調整する一般的な手順を説明します。次の手順の前に、この章のこれまでの作業を実行することにより、ネットワーク上で IPQoS システムを構成してあるものとします。

IPQoS 対応ネットワーク上でルーターを構成する方法

次の手順では、図 2–4 に示したトポロジを例として使用します。

  1. ネットワーク上のすべての IPQoS 対応システムの構成ファイルを確認します。

  2. さまざまなポリシーで使用される各コードポイントを特定します。

    コードポイント、およびコードポイントを適用するシステムとクラスの表を作成します。作成した表から、同じコードポイントを使用した領域を知ることができます。同じコードポイントを使用したままでもかまいませんが、同じマークが付けられたクラス間の優先度を決めるには、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) 

  3. ネットワークの IPQoS 構成ファイルから得たコードポイントを、diffserv ルーターの適切なファイルに追加します。

    これらのコードポイントは、ルーターの diffserv スケジューリング機構の設定に役立ちます。具体的な方法については、ルーター製造元のマニュアルおよび Web サイトを参照してください。