(57)【特許請求の範囲】
【請求項１】
新規に観測されたパケットが既存のフローに属するかを判定する通信装置でのフロー判定方法であって、
前記既存のフロー内の、当該既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを、蓄積手段に蓄積する蓄積ステップと、
前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに比較すると共に、少なくとも２つの前記指定フィールドでの比較を同時に行う比較ステップと、
前記比較の結果に基づいて、前記新規に観測したパケットが前記既存のフローに属するかを判定する判定ステップと、を含み、
前記比較ステップでは、前記複数の指定フィールドのそれぞれに登録されたデータを抽出するためのマスク用ビットマップと、前記新規に観測したパケットと、の論理積演算を行って、前記新規に観測したパケットから前記複数の指定フィールドのそれぞれに登録されたデータを抽出し、その抽出結果と、前記蓄積手段に蓄積された前記複数の指定フィールドのそれぞれのデータとを、前記指定フィールドごとに比較すると共に、少なくとも２つの前記指定フィールドでの比較を同時に行い、
前記マスク用ビットマップは、前記複数の指定フィールドに対応するビットが全て１であり、他のビットが全て０であり
前記比較ステップでは、前記新規に観測したパケットを複数の分割データに分割し、各分割データのうち、前記マスク用ビットマップ中の対応箇所が全て０である分割データについては、前記論理積演算と前記比較を省略する、フロー判定方法。
【請求項２】
前記比較ステップでは、
前記複数の指定フィールドの数が、前記複数の分割データのうち前記指定フィールドを含む分割データの数である比較回数よりも大きい場合には、前記論理積演算を行って、前記新規に観測したパケットから前記複数の指定フィールドのそれぞれに登録されたデータを抽出し、その抽出結果と、前記蓄積手段に蓄積された前記複数の指定フィールドのそれぞれのデータとを、前記指定フィールドごとに比較すると共に、少なくとも２つの前記指定フィールドでの比較を同時に行い、
前記複数の指定フィールドの数が、前記比較回数以下である場合には、前記論理積演算を行うことなく、前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに個別に比較する、請求項１に記載のフロー判定方法。
【請求項３】
新規に観測されたパケットが既存のフローに属するかを判定する通信装置であって、
前記既存のフロー内の、当該既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを蓄積する蓄積手段と、
前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに比較すると共に、少なくとも２つの前記指定フィールドでの比較を同時に行い、前記比較の結果に基づいて、前記新規に観測したパケットが前記既存のフローに属するかを判定する比較手段と、を含み、
前記比較手段は、前記複数の指定フィールドのそれぞれに登録されたデータを抽出するためのマスク用ビットマップと、前記新規に観測したパケットと、の論理積演算を行って、前記新規に観測したパケットから前記複数の指定フィールドのそれぞれに登録されたデータを抽出し、その抽出結果と、前記蓄積手段に蓄積された前記複数の指定フィールドのそれぞれのデータとを、前記指定フィールドごとに比較すると共に、少なくとも２つの前記指定フィールドでの比較を同時に行い、
前記マスク用ビットマップは、前記複数の指定フィールドに対応するビットが全て１であり、他のビットが全て０であり、
前記比較手段は、前記新規に観測したパケットを複数の分割データに分割し、各分割データのうち、前記マスク用ビットマップ中の対応箇所が全て０である分割データについては、前記論理積演算と前記比較を省略する、通信装置。
【請求項４】
前記比較手段は、
前記複数の指定フィールドの数が、前記複数の分割データのうち前記指定フィールドを含む分割データの数である比較回数よりも大きい場合には、前記論理積演算を行って、前記新規に観測したパケットから前記複数の指定フィールドのそれぞれに登録されたデータを抽出し、その抽出結果と、前記蓄積手段に蓄積された前記複数の指定フィールドのそれぞれのデータとを、前記指定フィールドごとに比較すると共に、少なくとも２つの前記指定フィールドでの比較を同時に行い、
前記複数の指定フィールドの数が、前記比較回数以下である場合には、前記論理積演算を行うことなく、前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに個別に比較する、請求項３に記載の通信装置。
【請求項５】
請求項３または４に記載の通信装置をコンピュータで実現するためのプログラムであって、
前記コンピュータを、
前記通信装置が有する全手段として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネット、ＩＰネットワークなどの複数の端末を相互に接続するネットワーク上における複数の拠点間の複数の通信を計測する方法に関し、特には、新規に発生したトラフィックが、既に発生したフローに属するか否かを判定するフロー判定方法、通信装置及びプログラムに関する。
【背景技術】
【０００２】
インターネットで使われるＩＰには、プロトコル、ソースＩＰアドレス、宛先ＩＰアドレスの情報が含まれ、また、一部のトランスポートプロトコルには、ソースポート、宛先ポートの情報が含まれる。
【０００３】
トラフィック計測技術の中で、これらのパケットが持つ情報を元に通信の種別を分類する方法がフロー計測（フロー判定）である。
【０００４】
フロー計測では、同一のプロトコル、同一のソースＩＰアドレス、同一の宛先ＩＰアドレス、同一のソースポート、同一の宛先ポートなどの情報を持つパケットを、同一の通信に属するパケットと見なす。同一の通信に属するパケットの集合をフローと呼ぶ。フローのデータ量やパケット量を計測することで、複数の地点間で複数の通信サービスを監視することができる。
【０００５】
インターネット通信では、ルータにより経路制御が行われる。送信元から送出されたパケットは、複数のルータを経由することで送信先に到達する。ルータは、パケットのＩＰヘッダや場合によってはトランスポートレイヤーのヘッダを参照するため、上述のフローの分類をする機器としては適している。
【０００６】
ルータを通過したパケットのフロー情報を他の機器に通知する方法として、ＮｅｔＦｌｏｗ（非特許文献１参照）やＩＰＦＩＸ（ＩＰ  Ｆｌｏｗ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｅｘｐｏｒｔ）（非特許文献２参照）が知られている。
【０００７】
これらの方法では、フロー情報の送信装置の一つとして、ルータが想定されている。送信装置から送信されたフロー情報は、送信装置とネットワーク接続性がある受信装置にて受信される。
【０００８】
フロー情報には、例えば、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポート、プロトコル、フロー開始時間、フロー終了時間、バイトカウンタ、などの情報が含まれる。これらの各情報の項目は、ＮｅｔＦｌｏｗではフィールド、ＩＰＦＩＸではＩｎｆｏｒｍａｔｉｏｎ  Ｅｌｅｍｅｎｔと呼ばれる。以下では、ＮｅｔＦｌｏｗにおけるフィールドと、ＩＰＦＩＸにおけるＩｎｆｏｒｍａｔｉｏｎ  Ｅｌｅｍｅｎｔを、要素情報と総称する。
【０００９】
フロー情報をパケット化する方式としては、固定フォーマット方式とテンプレート定義方式の２方式がある。固定フォーマット方式では、フロー情報内に常に同一の要素情報が固定された並び方で並ぶ。テンプレート定義方式では、フロー情報に含める要素情報の番号を列挙してフォーマットが決められる。
【００１０】
既存のプロトコルでテンプレート定義方式を採用しているのは、ＮｅｔＦｌｏｗ  Ｖｅｒｓｉｏｎ  ９、ＩＰＦＩＸである。一方、ＮｅｔＦｌｏｗ  Ｖｅｒｓｉｏｎ  １，５，８は、固定フォーマット方式を採用している。
【００１１】
テンプレート定義方式では、先ず、テンプレートと呼ばれる要素情報の番号及びその要素情報のサイズを列挙した情報を、送信装置が受信装置に送信する。テンプレートが受信側で受信された後、送信装置は、テンプレートで定義された要素情報の順序でフローのデータをパケット化し、受信装置に送信する。
【００１２】
テンプレート定義方式では、テンプレートの定義によってフロー情報に含める要素情報を変更できるため、個々のネットワーク構成やフロー情報の収集の個々の目的に適したフロー情報を送受信できる。
【００１３】
フローの送信装置では、テンプレートを決定するユーザからの入力によって、フローに含まれる要素情報、またフローを構成する条件となる要素情報が決定される。
【００１４】
フローを構成する条件となる要素情報に基づいて、観測されたパケットの該当するフィールドから情報（データ）が抜き出される。抜き出された情報は、その新規観測パケットが、新規フローか、既存フローかを判定するために、既存のフローの該当するフィールド内の情報と比較される。
【００１５】
一方で、テンプレートは自由に定義できるため、比較しなければならないフィールドは変更される。そのため、各フィールドは個別に比較される必要があった。
【非特許文献１】[平成１９年１０月７日検索]、インターネット<http://www.ietf.org/rfc/rfc3954.txt>
【非特許文献２】[平成１９年１０月７日検索]、インターネット<http://www.ietf.org/internet-drafts/draft-ietf-ipfix-protocol-26.txt>
【発明の開示】
【発明が解決しようとする課題】
【００１６】
テンプレート定義方式は、固定フォーマット方式と比較して、情報の柔軟性を有す。その一方で、必要とする処理が増大し、処理効率面、計算機資源量利用効率面において劣る場合が発生する。
【００１７】
フロー情報の送信装置は、観測したパケットからフロー情報を作成し内部に保持する機能と、その内部のフロー情報をプロトコルに準じて送信する機能を有す。
【００１８】
フロー情報を作成し保持する機能において、固定フォーマット方式では、比較するパケットヘッダのフィールドが予め決まっているため、一意の比較処理で複数の要素情報を比較できる。
【００１９】
一方でテンプレート定義方式を採用した技術では、フローを構成するための条件となる要素情報を自由に変更（指定）できる。
【００２０】
この場合、各要素情報に対応したパケットヘッダのフィールド個々に関して比較を行う必要がある。そのため、固定フォーマットの比較処理に比べて処理回数が増大する。
【００２１】
本発明の目的は、テンプレート定義方式を用いたフロー判定において、フロー判定に必要な処理を簡略化することが可能なフロー判定方法、通信装置およびプログラムを提供することである。
【課題を解決するための手段】
【００２２】
本発明のフロー判定方法は、新規に観測されたパケットが既存のフローに属するかを判定する通信装置でのフロー判定方法であって、前記既存のフロー内の、当該既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを、蓄積手段に蓄積する蓄積ステップと、前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに比較すると共に、少なくとも２つの前記指定フィールドでの比較を同時に行う比較ステップと、前記比較の結果に基づいて、前記新規に観測したパケットが前記既存のフローに属するかを判定する判定ステップと、を含む。
【００２３】
本発明の通信装置は、新規に観測されたパケットが既存のフローに属するかを判定する通信装置であって、前記既存のフロー内の、当該既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを蓄積する蓄積手段と、前記蓄積手段に蓄積されたデータと、前記新規に観測されたパケットのヘッダ情報に含まれるデータとを、前記指定フィールドごとに比較すると共に、少なくとも２つの前記指定フィールドでの比較を同時に行い、前記比較の結果に基づいて、前記新規に観測したパケットが前記既存のフローに属するかを判定する比較手段と、を含む。
【発明の効果】
【００２４】
本発明によれば、蓄積手段に蓄積されたデータと、新規に観測されたパケットのヘッダ情報に含まれるデータと、を比較する際に、既存のフローを規定するために任意に指定された複数の指定フィールドのうち、少なくとも２つの指定フィールドでのデータの比較を同時に行うため、フローの判定に必要な処理を簡略化することが可能になる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施例を、図面を参照して説明する。
【００２６】
図１は、本発明の一実施例である、ネットワークトラヒックをフロー毎に分類して計測を行い、計測されたフロー情報の送信を行う通信装置を示したブロック図である。なお、図１では、パケット処理に関する部分の構成が示されている。
【００２７】
図１において、送信装置１００は、ネットワークから観測されたパケットと、蓄積されたフローとを、テンプレート定義方式にしたがって比較し、その比較結果に基づいて、観測パケットが、新規フローか、蓄積されている既存フローかを判断する。
【００２８】
送信装置１００は、ネットワークインタフェース（以下「ＮＩＣ」と称する。）１と、パケット観測部（以下「観測部」と称する。）２と、フロー情報作成部（以下「作成部」と称する。）３と、フロー情報送出部（以下「送出部」と称する。）４とを含む。作成部３は、フロー情報蓄積部（以下「蓄積部」と称する。）３ａと、新規観測パケット・既存フロー比較部（以下「比較部」と称する。）３ｂとを含む。
【００２９】
ＮＩＣ（受付手段）１は、インターネット等のネットワークからパケットを受け付け、観測部２に提供する。
【００３０】
観測部（観測手段）２は、ＮＩＣ１からのパケット、または、何らかの処理を経て出力される予定のパケットを受け付ける。観測部２は、受け付けられたパケットに対して、必要に応じてパケットサンプリングやフィルタリングを行い、新規に観測されたパケット（以下「新規観測パケット」と称する。）を抽出する。観測部２は、新規観測パケットを作成部３に提供する。
【００３１】
作成部（作成手段）３は、新規観測パケットに基づいて、フロー情報を作成する。
【００３２】
蓄積部（蓄積手段）３ａは、フロー情報を蓄積する。例えば、蓄積部３ａは、少なくとも、既存のフロー内の、その既存のフローを規定するために任意に指定された複数の指定フィールドのそれぞれに登録されたデータを、フロー情報として蓄積する。
【００３３】
フロー情報の作成処理は、比較部（比較手段）３ｂによって行われる。
【００３４】
比較部３ｂは、蓄積部３ａ内の既に観測された既存のフローと、観測部２から伝達された新規観測パケットとを、比較して、新規観測パケットが、新規フローか、既存フローかを判定する。
【００３５】
具体的には、既存のフローと新規観測パケットとの比較の結果が一致を示す場合、比較部３ｂは、新規観測パケットが既存フローであると判定する。また、既存のフローと新規観測パケットとの比較の結果が一致を示さない場合、比較部３ｂは、新規観測パケットが新規フローであると判定する。
【００３６】
比較部３ｂは、蓄積部３ａに蓄積されたデータと、新規観測パケットのヘッダ情報に含まれるデータとを、既存のフローを規定するために任意に指定された指定フィールド（以下、単に「指定フィールド」と称する。）ごとに比較すると共に、少なくとも２つの指定フィールドでの比較を同時に行う。
【００３７】
また、比較部３ｂは、その比較の結果に基づいて、新規観測したパケットが既存のフローに属するかを判定する。
【００３８】
なお、蓄積部３ａにフロー情報が蓄積されていない場合は、比較部３ｂは、新規観測パケットを必ず新規フローと判定する。
【００３９】
一方、蓄積部３ａにフロー情報が蓄積されている場合、比較部３ｂは、比較結果に基づいて、新規観測パケットを、新規フローか、既存フローかに振り分ける。
【００４０】
新規観測パケットが新規フローに振り分けられた場合、比較部３ｂは、蓄積部３ａに新たに新規フロー情報を登録する。
【００４１】
一方、新規観測パケットが既存フローに振り分けられた場合、比較部３ｂは、その既存フローの時間情報（フロー開始・終了時刻）やデータ量情報（バイト量・パケット量）等を更新する。
【００４２】
作成部３は、蓄積部３ａ内のフロー情報を、一定時間間隔で、または、ユーザの何らかの指示にしたがって、送出部４に提供する。
【００４３】
送出部４は、フロー情報を、プロトコルに準じたフォーマットで適切にパケット化して送信する。
【００４４】
図１には図示していないが、パケット処理に間接的に関連する機能部として、テンプレート設定、及びフロー構成条件の要素情報の設定などに用いるパラメータ等をユーザから受け付け、必要な情報を、図１に図示した各部に伝達する機能部（例えば、入力部）が存在する。
【００４５】
なお、図１に示した送信装置１００は、ＣＤ−ＲＯＭ、ハードディスクまたはメモリに記録されたプログラムに従って動作するコンピュータによって実現されてもよい。ＣＤ−ＲＯＭ、ハードディスクまたはメモリは、一般的に、コンピュータにて読み取り可能な記録媒体と呼ぶことができる。この場合、ＮＩＣ１を搭載したコンピュータは、そのプログラムを記録媒体から読み取り実行することによって、観測部２、作成部３、及び、送出部４として機能し、送信装置１００が実現できる。
【００４６】
ここで、送信装置１００の動作の概要を説明する。
【００４７】
送信装置１００は、テンプレート定義方式を採用する。
【００４８】
ユーザから送信装置１００への設定入力などによってフローの構成条件となる要素情報が決定された段階で、比較部３ｂは、要素情報に対応した、パケットヘッダのフィールドのビットマスク用のビットマップ（以下「マスク用ビットマップ」と称する。）を作成する。
【００４９】
例えば、比較部３ｂは、フローを構成するための条件となる要素情報に対応したパケットヘッダのフィールドの部分が有値（１）、それ以外の部分が無値（０）であるマスク用ビットマップを作成する。
【００５０】
また、比較部３ｂは、フローを構成するための条件を構成する複数の要素情報のそれぞれに対応する複数のパケットヘッダのフィールドの中で、先頭のヘッダフィールドの開始位置と、末尾のヘッダフィールドの終了位置を抽出し、その２つから比較対象の範囲を抽出する。
【００５１】
比較部３ｂは、比較対象の範囲において、新規観測パケットとマスク用ビットマップとの論理積演算を行い、その結果を、蓄積部３ａに蓄積されている、既に観測されたパケットから作成された既存フローと比較する。
【００５２】
比較部３ｂは、その比較の結果に基づいて、新規観測したパケットが既存のフローに属するかを判定する。
【００５３】
図２は、ＩＰＦＩＸを例としてフロー情報のデータ構造を示した説明図である。
【００５４】
フロー情報の送信装置１００は、不図示の受信装置に対して、フロー情報のデータよりも先にテンプレート情報を送信する。テンプレート情報は、フロー情報のデータ構造を示すために用いられる。
【００５５】
図２に示すように、テンプレートには、要素情報（Ｉｎｆｏｒｍａｔｉｏｎ  Ｅｌｅｍｅｎｔ）ＩＤと、要素情報の長さが列挙される。
【００５６】
要素情報ＩＤの各番号は、予め設定された意味を持つ。例えば、ＩＤ＝８番は、ｓｏｕｒｃｅＩＰｖ４Ａｄｄｒｅｓｓとなり、送信元ＩＰｖ４アドレスを意味する。
【００５７】
このＩＤは、テンプレートの定義では２バイトで表現され、続く２バイトにそのＩＤに対応するデータ長の情報が表現される。
【００５８】
図２で示した例では、例えば、ＩＤ＝８：ｓｏｕｒｃｅＩＰｖ４Ａｄｄｒｅｓｓに対応するデータの長さは４バイトであり、ＩＤ＝２：ｐａｃｋｅｔＤｅｌｔａＣｏｕｎｔ（パケット増分量）に対応するデータの長さは８バイトであることを示している。
【００５９】
要素情報の列挙順序は、フロー情報を送る際のデータの順序に相当する。即ち、フロー情報は、ｓｏｕｒｃｅＩＰｖ４Ａｄｄｒｅｓｓに対応するデータ、ｄｅｓｔｉｎａｔｉｏｎＩＰｖ４Ａｄｄｒｅｓｓに対応するデータから始まり、ｆｌｏｗＳｔａｒｔＳｙｓＵｐＴｉｍｅに対応するデータ、ｆｌｏｗＥｎｄＳｙｓＵｐＴｉｍｅに対応するデータで終わることを示している。
【００６０】
フロー情報のデータは、作成部３にて作成され、その後、送出部４にて、テンプレートの情報に基づいてパケット化されて送信される。
【００６１】
フローの構成条件となる要素情報の明示化は、付加的な情報（オプションテンプレートとオプションデータ）の付与によって可能となる。オプションテンプレートとオプションデータの関係は、通常のテンプレートとデータの関係に相当する。
【００６２】
図２の例では、ｆｌｏｗＫｅｙＩｎｄｉｃａｔｏｒという要素情報を用いて、フローの構成条件となる要素情報を示している。
【００６３】
図２のオプションデータでは、ｆｌｏｗＫｅｙＩｎｄｉｃａｔｏｒに対応するデータは１，２，３，４，８ｂｉｔ目が１（有値）になっているため、１，２，３，４，８番目の要素情報が、フローを構成する要素情報であることを示している。
【００６４】
即ち、この例では、先頭から１，２，３，４，８番目のｓｏｕｒｃｅＩＰｖ４Ａｄｄｒｅｓｓ，ｄｅｓｔｉｎａｔｉｏｎＩＰｖ４Ａｄｄｒｅｓｓ，ｓｏｕｒｃｅＴｒａｎｓｐｏｒｔＰｏｒｔ，ｄｅｓｔｉｎａｔｉｏｎＴｒａｎｓｐｏｒｔＰｏｒｔ，ｐｒｏｔｏｃｏｌＩｄｅｎｔｉｆｉｅｒが、フローを構成する要素情報であり、比較部３ｂは、これらの情報が同一のパケットを同一フローとしてみなす。
【００６５】
なお、フロー構成条件となる要素情報は、ＩＰＦＩＸの定義によるとＦｌｏｗ  Ｋｅｙと呼ばれる。
【００６６】
上述の通り、フロー構成条件となる要素情報をフロー毎に定義することが可能である。フロー構成条件となる要素情報は、比較部３ｂにおける比較対象の要素情報となり、フロー構成条件とならない要素情報は、その情報が収集されるだけとなる。
【００６７】
比較部３ｂは、観測されたパケットが新規フローか既存フローかを判定する場合に、観測されたパケットと蓄積部３ａ内のフロー情報について、フロー構成条件となる要素情報を全て比較していく必要がある。
【００６８】
従来は、この要素情報を、個別に順番に比較していた。
【００６９】
これに対して、本実施例では、比較部３ｂは、予め、新規観測パケットから、比較する部分（データ）を抽出するためのマスク用ビットマップを作成しておく。
【００７０】
比較部３ｂは、新規観測パケットにマスク用ビットマップをかけて、比較する複数の部分を抽出し、その抽出された複数の部分からなるデータを作成する。
【００７１】
比較部３ｂは、その作成されたデータと、蓄積部３ａ内のフロー情報と、を比較することにより、複数の要素情報のデータ（少なくとも、２つの要素情報のデータ）を同時に比較する。
【００７２】
本実施例の方式を適用する例を図３に示す。
【００７３】
なお、図３（ａ）、図３（ｂ）及び図４の左側は、テンプレートに含まれる要素情報の列挙を示す。太線で囲まれた部分が、フロー構成条件となる要素情報である。右側は対応するパケットのフィールドを示す。太線で囲まれた部分が、フロー構成条件となる要素情報に対応するパケットフィールドとなる。以降の説明では、ＩＰヘッダの先頭位置を０バイトと表記する。実際には、データリンク層プロトコルなどを監視の対象とする場合、この限りではない。
【００７４】
本実施例では、説明のためにＩＰヘッダのみを用いているが、実際にはＩＰヘッダより低位のレイヤ、高位のレイヤが含まれる。
【００７５】
また本方式では、比較部３ｂは、蓄積部３ａにフロー情報として各要素情報内のデータを保持する場合に、パケットのヘッダフィールドの値をデータとしてそのまま用いる要素情報であれば、その要素情報のデータをヘッダのフォーマットに準じて保持する。一方、パケットヘッダに含まれない情報（時間・データ量等）を表す要素情報のデータの保持方法に関しては規定しない。
【００７６】
この領域は、フローデータ毎に確保される。
【００７７】
マスク用ビットマップも蓄積部３ａに蓄積される。つまり、蓄積部３ａには、マスク用ビットマップを保持するために必要な領域として、１フローを格納するために必要な領域と同等の領域が確保される。マスク用ビットマップは、比較部３ｂで利用され、テンプレート毎に必要となる。
【００７８】
フロー構成条件とならない要素情報は比較対象とならないため、比較部３ｂは、ヘッダフォーマットの構造のままフィールドを保持する場合に、フロー構成条件とならない要素情報に対応するフィールドを０（無値）とする。
【００７９】
但し、フロー構成条件とならない要素情報でも、収集対象となるパケットのヘッダに含まれるフィールドに対応する要素情報が存在する。これは、テンプレートの定義によって、あるテンプレート情報に含まれるが、構成条件として指定されなかった、パケットのヘッダに含まれるフィールドに対応する要素情報が該当する。
【００８０】
この場合、ＩＰＦＩＸ定義によると、最初に観測されたパケットの該当フィールドの値を利用することが定義されている。そのため、その場合には、蓄積部３ａは、別途フロー保持領域を確保し、最初に観測されたパケットのみ別途保持する。
【００８１】
本実施例の方式は先ず、比較部３ｂが、マスク用のビットマップを作成する。
【００８２】
マスク用のビットマップでは、フロー構成条件となる要素情報に対応するフィールドのビットに全て１が立てられる。
【００８３】
図３（ａ）の場合、構成条件として指定された要素情報は、ＩＰヘッダの先頭から４バイト目までにのみ含まれている。このため、比較部３ｂは、マスク用のビットマップのうち、ＩＰヘッダの先頭の４バイト目までに対応する部分を、０ｘｆ０ｆｆｆｆｆｆとする。また、その開始オフセットは０バイト、終了オフセットは４バイトとなる。
【００８４】
ユーザからの入力において、テンプレート及び、フロー構成条件となる要素情報が決定された時点で、比較部３ｂは、マスク用ビットマップを作成する。
【００８５】
比較部３ｂは、新規観測パケットとマスク用ビットマップとの論理積を取る。比較部３ｂは、この論理積演算を行うことによって、新規観測パケットから、フロー構成条件となる要素情報のデータを抽出する。マスク用ビットマップ範囲外は比較対象にならない。従って、図３（ａ）の場合、比較対象となるのは、０バイトから４バイトになる。
【００８６】
例として、ｖｅｒｓｉｏｎが４（０ｘ４）、ＩＨＬが５（０ｘ５）、ＴｏＳフィールドが０（０ｘ００）、Ｔｏｔａｌ  Ｌｅｎｇｔｈが２０（０ｘ００１４）だった場合、０ｘ４５００００１４と０ｘｆ０ｆｆｆｆｆｆの論理積により、０ｘ４０００００１４が算出される。
【００８７】
比較部３ｂは、この算出された値を、ヘッダフォーマットのまま蓄積されているフロー情報において、新規観測パケットの比較対象部分と同じ位置にあるフィールド（本例では０バイトから４バイト）と比較する。
【００８８】
既に蓄積されているフローは、ヘッダフォーマットを保持しており、かつ比較対象となっているフィールドのみ有値であり、それ以外は無値になっているため、比較部３ｂは、複数のフィールドのデータを、１回の比較において比較することができる。
【００８９】
１回の論理積演算及び比較に用いる範囲は、各アーキテクチャによって異なるが、そのアーキテクチャにおける最大のレジスタ幅に準じるのが効率が良い。
【００９０】
一般的には、３２ｂｉｔのＣＰＵならば、３２ｂｉｔレジスタ、６４ｂｉｔのＣＰＵならば、６４ｂｉｔレジスタとなる。
【００９１】
但し、ＳＩＭＤ演算用にレジスタが拡張されている場合（例：ｘｍｍレジスタ）などを含め、よりレジスタ幅の広いレジスタを持つ場合は、その限りでなく、演算可能な最大長のレジスタを用いるべきである。
【００９２】
但し、本方式を高級言語において、任意の範囲を比較することのできるデータ列比較関数等を利用して実装した場合は、関数呼び出しにかかるオーバーヘッドがあるため、必ずしも１回の比較範囲をレジスタ長に限定するわけではない。この場合は、複数回の呼び出しに対して１回の呼び出しに集約した方が効率が良い可能性が高い。
【００９３】
本実施例では、３２ｂｉｔのＣＰＵアーキテクチャを前提とし、４バイトを１回の論理積演算及び比較に用いる範囲として説明する。また以降、１回の論理積演算及び比較に用いる範囲を１比較単位と表記する。
【００９４】
このため、本実施例では、比較部３ｂは、新規観測パケットを４バイト（１比較単位）ごとに分割して複数の分割データを生成し、分割データごとに、論理積演算及び比較を行う。
【００９５】
なお、マスク用ビットマップ作成及びその領域（オフセット値）の算出を行う際に、上記の開始オフセット及び終了オフセットが１比較単位で割り切れない場合、処理系の仕様によっては、開始オフセットは小数点以下切り捨て、終了オフセットは小数点以下切り上げてデータ演算の境界を調整する場合もある。
【００９６】
例えば、開始オフセットが３バイト目、終了オフセットが５バイト目ならば、１比較単位が４バイトで、新規観測パケットのデータ、既存フローのデータ、マスク用ビットマップがそれぞれデータ境界に合わせて開始しているとすると、比較部３ｂは、開始オフセットを０バイト、終了オフセットを８バイトのように変更する。
【００９７】
図３（ｂ）の場合、比較対象開始位置が０バイト、終了位置が２０バイトとなる。
【００９８】
この場合、比較部３ｂは、マスク用ビットマップを、４バイト（１比較単位）ごとに、０ｘｆ０ｆｆ００００，０ｘ００００００００，０ｘ００００００００，０ｘ００００００００，０ｘｆｆｆｆｆｆｆｆとする。
【００９９】
この場合、比較対象が存在しない４〜１６バイトの部分は、比較を行う必要がなく、比較部３ｂは、マスク用ビットマップを作成した時に無値（０）となる部分に対応する新規観測パケットの分割データついては、論理積演算と比較の処理を行わない。これによって本方式の処理回数の軽減ができる。
【０１００】
図４に示す例の場合、１回の比較可能範囲において１つの要素情報しか存在しない。
【０１０１】
この場合、従来の１つずつ要素情報を比較する方式と比べて比較の処理回数の軽減ができない。逆に、本方式は比較前に論理積演算を行うため、論理積演算を行う処理が増加する。従って図４の場合は、従来の方式を利用した方が効率が良い。
【０１０２】
本発明比較方式と、従来の個別に比較する比較方式との、利用すべき方式の判断は、テンプレートが設定された時点で判断可能である。
【０１０３】
テンプレートが設定された時点で、フロー構成条件となる要素情報の数が決定し、マスク用ビットマップを作成でき、何回比較を行うかが算出できる。
【０１０４】
要素情報数が、比較回数を超えた場合は、本発明の比較方式を利用し、そうでない場合は従来の比較方式を利用すればよい。
【０１０５】
図５は、本比較方式を説明するためのフローチャートである。
【０１０６】
このフローチャートは、新規観測パケットと１フローとの比較処理を示しており、新規観測パケットが、新規フローか、既存フローかを判定するためには、個々の既存フローとの比較を繰り返す必要がある。この繰り返し回数は、既存フローの保持方法に依存する。例えばバランスの取れた平衡２分木で保持されている場合は、最大で木の深さと同等になるためｌｏｇ２Ｎ（Ｎは既存フロー蓄積数）となる。繰り返しの最中で新規観測パケットが既存フローに属することが判定できた場合は、その時点で繰り返しは中断される。
【０１０７】
以下、図５を参照して、本比較方式の動作例を説明する。
【０１０８】
なお、蓄積部３ａには、マスク用ビットマップを用いた論理積の演算結果にて示されたフロー情報が蓄積されているものとする。
【０１０９】
ステップ５０１では、比較部３ｂは、ユーザからの入力に基づいて、テンプレート、及びフロー構成条件となる要素情報を決定する（例えば、図３及び図４参照）。
【０１１０】
続いて、ステップ５０２では、比較部３ｂは、要素情報の数を算出する。なお、図３（ａ）の場合、要素情報の数は「３」である。図３（ｂ）の場合、要素情報の数は「３」である。図４の場合、要素情報の数は「３」である。
【０１１１】
続いて、ステップ５０３では、比較部３ｂは、テンプレート及び要素情報に基づいて、マスク用ビットマップを作成し、開始オフセット及び終了オフセットを算出する。なお、図３（ａ）の場合、開始オフセットは０バイト、終了オフセットは４バイトとなる。図３（ｂ）の場合、開始オフセットは０バイト、終了オフセットは２０バイトとなる。図４の場合、開始オフセットは０バイト、終了オフセットは２０バイトとなる。
【０１１２】
続いて、ステップ５０４では、比較部３ｂは、マスク用ビットマップおよび１比較単位（４バイト）に基づいて、比較回数を算出する。なお、図３（ａ）の場合、比較回数は「１」である。図３（ｂ）の場合、比較回数は「２」である。図４の場合、比較回数は「３」である。
【０１１３】
続いて、ステップ５０５では、比較部３ｂは、要素情報数が比較回数よりも大きいか判断する。要素情報数が比較回数以下である場合、比較部３ｂは、ステップ５０６を実行し、一方、要素情報数が比較回数よりも大きい場合、比較部３ｂは、ステップ５０７を実行する。
【０１１４】
よって、図３（ａ）及び図３（ｂ）の場合、比較部３ｂは、ステップ５０７を実行し、一方、図４の場合、比較部３ｂは、ステップ５０６を実行する。
【０１１５】
ステップ５０６では、比較部３ｂは、従来の個別比較方式を実行する。なお、従来の個別比較方式についての詳細な説明は省略する。
【０１１６】
ステップ５０７では、比較部３ｂは、オフセットに、開始オフセットを代入する。
【０１１７】
続いて、ステップ５０８では、比較部３ｂは、オフセットが終了オフセットよりも小さいかを判断する。オフセットが終了オフセット以上である場合、比較部３ｂは、ステップ５０９を実行し、一方、オフセットが終了オフセットよりも小さい場合、比較部３ｂは、ステップ５１０を実行する。
【０１１８】
ステップ５０９では、比較部３ｂは、新規観測パケットと既存の１フローとの比較を終了する。
【０１１９】
ステップ５１０では、比較部３ｂは、新規観測パケットの比較位置を、新規観測パケットの先頭からオフセット分ずらした位置に設定する。
【０１２０】
続いて、ステップ５１１では、比較部３ｂは、既存フローの比較位置を、既存フローの先頭からオフセット分ずらした位置に設定する。
【０１２１】
続いて、ステップ５１２では、比較部３ｂは、マスク用ビットマップの論路積演算位置を、マスク用ビットマップの先頭からオフセット分ずらした位置に設定する。
【０１２２】
続いて、ステップ５１３では、比較部３ｂは、マスク用ビットマップの比較位置から１比較単位分の部分（演算位置）が全て０でないか判断する。マスク用ビットマップの演算位置が全て０である場合、比較部３ｂは、ステップ５１４を実行し、一方、マスク用ビットマップの演算位置が全て０でない場合、比較部３ｂは、ステップ５１５を実行する。
【０１２３】
ステップ５１４では、比較部３ｂは、オフセット値を１比較単位分増加する。比較部３ｂは、ステップ５１４を終了すると、処理をステップ５０８に戻す。
【０１２４】
ステップ５１５では、比較部３ｂは、新規観測パケットのうち比較位置から１比較単位までの部分と、マスク用ビットマップのうち比較位置から１比較単位までの部分と、の論理積を実行し、その実行結果を、新規観測パケットのうち比較位置から１比較単位までの部分に代入する。この処理によって、新規観測パケットの１比較単位から、フローを構成する条件に相当する構成要素のデータが抽出される。
【０１２５】
続いて、ステップ５１６では、比較部３ｂは、観測パケットと既存フローを比較する。この場合、１比較単位での比較となる。観測パケットと既存フローが一致すると、比較部３ｂは、ステップ５１４を実行し、一方、観測パケットと既存フローが一致しないと、比較部３ｂは、ステップ５０９を実行する。
【０１２６】
図５に示した比較方式においてステップ５１６の判定の最終状態が「一致する」であった場合、新規観測パケットは、比較した既存フローに属することが判定できる。「一致しない」であった場合は、比較した既存フローに属さないため前記の通り本比較処理が繰り返される。
【０１２７】
本実施例によれば、新規にパケットが観測されたときの動作として、論理積演算が増加するが、複数の要素情報の比較処理を１回の比較処理に集約することが可能になる。
【０１２８】
これによって、低級（低水準）言語利用時には、同一レジスタで保持できるデータ内に複数の比較すべきヘッダフィールドが含まれる場合に、命令数が従来の個別比較方式と同値か少なくなる。
【０１２９】
Ｃ言語等の高級言語において任意の範囲を比較することのできるデータ列比較関数等を利用した場合は、複数回の呼び出しが１回の呼び出しに減少する。
【０１３０】
上述の論理積演算で利用するマスク用ビット列の作成とその比較対象範囲は、テンプレートによって決定されるため、テンプレートが変更または追加された場合のみ作成される。
【０１３１】
従って、フロー情報の作成回数よりも非常に少なく、本実施例によって追加される初期動作（マスク用ビット列の作成と比較対象範囲の決定）にかかる時間は相対的に、無視できるほどに小さくなる。特にフロー量が多いネットワークほどその傾向にある。
【０１３２】
以上からフローの構成条件となる要素情報が複数存在する場合に、フロー情報の作成に関わる処理回数が低減化され、処理が高速化可能となる。
【０１３３】
本実施例によれば、比較部３ｂは、既存フローと新規観測パケットとのデータの比較において、既存のフローを規定するために任意に指定された複数の指定フィールドのうち、少なくとも２つの指定フィールドでのデータの比較を同時に行う。
【０１３４】
このため、指定フィールドごとに、順番にデータを比較する場合よりも、フローの判定に必要な処理を簡略化することが可能になる。
【０１３５】
また、本実施例では、比較部３ｂは、マスク用ビットマップと新規観測パケットとの論理積演算を行って、新規観測パケットから複数の指定フィールドのそれぞれのデータを抽出する。比較部３ｂは、その抽出結果と、蓄積部３ａに蓄積された複数の指定フィールドのそれぞれのデータとを、指定フィールドごとに比較すると共に、少なくとも２つの指定フィールドでの比較を同時に行う。
【０１３６】
この場合、マスク用ビットマップを用いることによって、新規観測パケットから複数の指定フィールドのそれぞれのデータを容易に抽出することが可能になる。
【０１３７】
また、本実施例では、蓄積部３ａは、既存のフローに含まれる複数の指定フィールドのそれぞれのデータのみを、パケット内でのフォーマットに準じて蓄積する。
【０１３８】
この場合、蓄積部３ａ内のデータのフォーマットを、新規観測パケット内のデータのフォーマットと同じにできる。このため、データの比較を容易にすることが可能になる。
【０１３９】
また、本実施例では、マスク用ビットマップは、複数の指定フィールドに対応するビットが全て１であり、他のビットが全て０である。
【０１４０】
この場合、論理積演算が実行されることによって、新規観測パケットから複数の指定フィールドのデータのみを容易に抽出することが可能になる。
【０１４１】
また、本実施例では、比較部３ｂは、新規観測パケットを１比較単位ごとに複数の分割データに分割し、各分割データのうち、マスク用ビットマップ中の対応箇所が全て０である分割データについては、論理積演算と比較を省略する。
【０１４２】
この場合、新規観測パケットのうち、比較する必要のない部分について、不要な論理積演算と比較を省略することが可能になる。
【０１４３】
以上説明した実施例において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
【図面の簡単な説明】
【０１４４】
【図１】本発明の一実施例であるフロー情報の送信を行う通信装置を示したブロック図である。
【図２】ＩＰＦＩＸを例としてフロー情報のデータ構造を示した説明図である。
【図３】本実施例の方式を適用するテンプレート例を示した説明図である。
【図４】他のテンプレート例を示した説明図である。
【図５】本実施例の動作を説明するためのフローチャートである。
【符号の説明】
【０１４５】
１      ＮＩＣ
２      パケット観測部
３      フロー情報作成部
３ａ    フロー情報蓄積部
３ｂ    新規観測パケット・既存フロー比較部
４      フロー情報送出部
１００      送信装置
【図１】
0004814203.tif 000002
【図２】
0004814203.tif 000003
【図３】
0004814203.tif 000004
【図４】
0004814203.tif 000005
【図５】
0004814203.tif 000006