IPQoS の flowacct モジュールは、トラフィックフローに関する情報を記録します。このプロセスは、「フローアカウンティング」と呼ばれます。フローアカウンティングは、顧客への課金や特定クラスへのトラフィック量の評価に使用できるデータを作成します。
フローアカウンティングは、オプションです。通常、flowacct は、メーターまたはマーカーに処理されたトラフィックフローが、ネットワークストリームへ送出される前に通る、最後のモジュールです。Diffserv モデルでの flowacct の位置の図については、図 32–1 を参照してください。flowacct の詳細な技術情報については、flowacct(7ipp) のマニュアルページを参照してください。
フローアカウンティングを有効にするには、flowacct に加えて、Oracle Solaris の exacct アカウンティング機能および acctadm コマンドを使用する必要があります。フローアカウンティングの設定の全手順については、「フローアカウンティングの設定 (作業マップ)」を参照してください。
flowacct モジュールは、「フローレコード」で構成された「フローテーブル」内に、フローに関する情報を収集します。テーブル内の各エントリには、1 つのフローレコードが含まれます。フローテーブルは、表示できません。
フローレコードを測定してフローテーブルへ書き込むには、IPQoS 構成ファイル内で次の flowacct パラメータを定義します。
timer – タイムアウトしたフローをフローテーブルから削除し、acctadm により作成されたファイルに書き込む間隔を、ミリ秒単位で定義する
timeout – パケットフローがタイムアウトするまでの非アクティブな時間を、ミリ秒単位で定義する
timer と timeout には異なる値を指定できます。
max_limit – フローテーブルに格納可能なフローレコードの数に上限を設定する
flowacct パラメータの IPQoS 構成ファイルでの使用例については、「IPQoS 構成ファイル内でフロー制御を構成する方法」を参照してください。
flowacct モジュールは、flowacct インスタンスが認識するすべてのパケットフローを記録するフローテーブルを管理します。フローは、次のパラメータによって特定されます。これらを、flowacct の 8 タプルと呼びます。
発信元アドレス
着信先アドレス
発信元ポート
着信先ポート
DSCP
ユーザー ID
プロジェクト ID
プロトコル番号
フローの 8 タプルのパラメータが変化しないかぎり、フローテーブルには 1 つのエントリだけが含まれます。max_limit パラメータにより、フローテーブルに含めることのできるエントリ数が決定されます。
フローテーブルは、IPQoS 構成ファイル内の timer パラメータに指定された間隔でスキャンされます。デフォルトは 15 秒です。IPQoS 構成ファイル内の timeout 間隔に指定された時間以上、IPQoS システムがパケットを認識しない場合、フローは「タイムアウト」します。デフォルトのタイムアウト間隔は 60 秒です。タイムアウトしたエントリは、acctadm コマンドを使用して作成されたアカウンティングファイルに書き込まれます。
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) のみ |
acctadm コマンドを使用して、flowacct により生成されるさまざまなフローレコードを格納するファイルを作成します。acctadm は、拡張アカウンティング機能と連動して動作します。acctadm の技術的情報については、acctadm(1M) のマニュアルページを参照してください。
flowacct モジュールは、フローを観察し、フローレコードにフローテーブルを入力します。次に flowacct は、timer に指定された間隔でパラメータと属性を評価します。last_seen 値に timeout 値を加えた時間以上パケットが検出されない場合、パケットはタイムアウトします。タイムアウトしたエントリはすべて、フローテーブルから削除されます。削除されたタイムアウトエントリは、timer パラメータに指定された時間が経過するたびに、アカウンティングファイルに書き込まれます。
acctadm を呼び出して flowacct モジュールで使用するには、次の構文を使用します。
acctadm -e file-type -f filename flow
acctadm を -e オプションを指定して呼び出します。-e は、直後にタイプを指定することを示します。
収集するタイプを指定します。file-type は、basic または extended に置き換える必要があります。各ファイルタイプの属性の一覧については、表 37–4 を参照してください。
フローレコードを格納するファイル file-name を作成します。
acctadm を IPQoS 上で実行することを示します。