(57)【要約】【課題】テンプレート定義方式を用いたフロー判定において、フロー判定に必要な処理を簡略化することが可能なフロー判定方法、通信装置及びプログラムを提供する。【解決手段】フロー判定方法は、既存フロー内の所定複数の指定フィールドの各々のデータを蓄積部に蓄積し、観測済パケットのヘッダ内のデータに基づき指定フィールド毎に順位を設定し保持部に保持し、蓄積部内のデータと新規パケットのヘッダ内のデータを指定フィールド毎に該順位に従って比較し、比較中に比較結果が不一致を示すと、新規パケットはその既存フローに属さずと判定し、新規パケットとその既存フローとの比較を中止し、その時点で新規パケットと未比較の既存フローのデータが蓄積部にあると新規パケットの比較対象をその未比較の既存フローのデータに変更し比較を継続し、複数の指定フィールドでの全ての比較結果が一致を示すと、新規パケットが既存フローに属すと判定する。【選択図】図１
2010041644.tif 000002
【特許請求の範囲】
【請求項１】
新規に観測された新規パケットが既存のフローに属するかを判定する通信装置でのフロー判定方法であって、
前記既存のフローを規定するために任意に指定された、当該既存のフロー内の複数の指定フィールドのそれぞれに登録されたデータを、蓄積手段に蓄積する蓄積ステップと、
既に観測済みの観測済みパケットのヘッダ情報内のデータに基づいて、前記指定フィールドごとに順位を設定し、当該指定フィールドごとの順位を、保持手段に保持する設定ステップと、
前記蓄積手段内のデータと、前記新規パケットのヘッダ情報内のデータとを、前記指定フィールドごとに、前記保持手段内の順位に従って比較する比較ステップと、
前記順位に従って比較を行っている際に当該比較の結果が不一致を示すと、前記新規パケットが前記既存のフローに属さないと判定して、前記新規パケットと前記既存のフローに関するそれ以降の比較を中止し、その時点で前記新規パケットと未比較の既存のフローのデータが前記蓄積手段に存在する場合は前記新規パケットの比較対象を前記未比較の既存のフローのデータに変更して比較を継続し、前記複数の指定フィールドでの全ての比較の結果が一致を示すと、前記新規パケットが前記既存のフローに属すると判定する判定ステップと、を含むフロー判定方法。
【請求項２】
前記設定ステップでは、さらに、前記蓄積手段内の全データを外部の装置に送信した時点以降のある期間に観測されたパケットのヘッダ情報内のデータに基づいて、前記指定フィールドごとに順位を新たに設定し、前記保持手段内の順位を、前記新たに設定された順位に更新する、請求項１に記載のフロー判定方法。
【請求項３】
前記設定ステップでは、前記保持手段内の順位を設定または更新するために用いた観測済みパケットのヘッダ情報内のデータに基づいて、前記指定フィールドごとに、当該指定フィールドに異なる値が出現する数を示す異なり数を計測し、前記複数の指定フィールドのうち前記異なり数が大きい指定フィールドほど前記順位が高くなるように、前記順位を設定し、
前記比較ステップでは、前記蓄積手段内のデータと、前記新規パケットのヘッダ情報内のデータとを、前記指定フィールドごとに、前記保持手段内の順位が高い順に比較する、請求項２に記載のフロー判定方法。
【請求項４】
前記設定ステップでは、前記蓄積手段内のデータを更新する時点において前記保持手段内の順位の更新を行い、
前記比較ステップでは、前記蓄積手段内の更新後のデータと、前記新規パケットのヘッダ情報内のデータとを、前記指定フィールドごとに、前記保持手段内の更新後の順位が高い順に比較する、請求項２または３に記載のフロー判定方法。
【請求項５】
前記新規パケットに関するトラフィックの変化が所定の条件を満たすかを判定する変化検知ステップをさらに含み、
前記設定ステップでは、前記新規パケットに関するトラフィックの変化が、前記所定の条件を満たす場合に、前記順位を新たに設定して、前記保持手段内の順位を、前記新たに設定された順位に更新する、請求項２から４のいずれか１項に記載のフロー判定方法。
【請求項６】
前記判定ステップでは、前記新規パケットが前記既存のフローに属さないと判定すると、当該新規パケットは新規フローに属すると判定し、前記既存のフローの数と前記新規フローの数の和を、フロー認識数として認識し、
前記所定の条件は、所定期間における前記フロー認識数の変化量または変化率が、予め定められた閾値を超えていることである、請求項５に記載のフロー判定方法。
【請求項７】
新規に観測された新規パケットが既存のフローに属するかを判定する通信装置であって、
前記既存のフローを規定するために任意に指定された、当該既存のフロー内の複数の指定フィールドのそれぞれに登録されたデータを蓄積する蓄積手段と、
既に観測済みの観測済みパケットのヘッダ情報内のデータに基づいて前記指定フィールドごとに設定された順位を保持する保持手段と、
前記蓄積手段内のデータと、前記新規パケットのヘッダ情報内のデータとを、前記指定フィールドごとに、前記保持手段内の順位に従って比較し、前記順位に従って比較を行っている際に当該比較の結果が不一致を示すと、前記新規パケットが前記既存のフローに属さないと判定して、前記新規パケットと前記既存のフローに関するそれ以降の比較を中止し、その時点で前記新規パケットと未比較の既存のフローのデータが前記蓄積手段に存在する場合は前記新規パケットの比較対象を前記未比較の既存のフローのデータに変更して比較を継続し、前記複数の指定フィールドでの全ての比較の結果が一致を示すと、前記新規パケットが前記既存のフローに属すると判定する比較手段と、を含む通信装置。
【請求項８】
前記比較手段は、前記観測済みのパケットのヘッダ情報内のデータに基づいて、前記指定フィールドごとに前記順位を設定し、当該指定フィールドごとの順位を前記保持手段に保持し、前記蓄積手段内の全データを外部の装置に送信した時点以降のある期間に観測されたパケットのヘッダ情報内のデータに基づいて、前記指定フィールドごとに順位を新たに設定し、前記保持手段内の順位を、前記新たに設定された順位に更新する、請求項７に記載の通信装置。
【請求項９】
前記比較手段は、前記保持手段内の順位を設定または更新するために用いた観測済みパケットのヘッダ情報内のデータに基づいて、前記指定フィールドごとに、当該指定フィールドに異なる値が出現する数を示す異なり数を計測し、前記複数の指定フィールドのうち前記異なり数が大きい指定フィールドほど前記順位が高くなるように、前記順位を設定し、前記蓄積手段内のデータと、前記新規パケットのヘッダ情報内のデータとを、前記指定フィールドごとに、前記保持手段内の順位が高い順に比較する、請求項８に記載の通信装置。
【請求項１０】
前記比較手段は、前記蓄積手段内のデータを更新する時点において前記保持手段内の順位の更新を行い、前記蓄積手段内の更新後のデータと、前記新規パケットのヘッダ情報内のデータとを、前記指定フィールドごとに、前記保持手段内の更新後の順位が高い順に比較する、請求項８または９に記載の通信装置。
【請求項１１】
前記新規パケットに関するトラフィックの変化が所定の条件を満たすかを判定する変化検知手段をさらに含み、
前記比較手段は、前記新規パケットに関するトラフィックの変化が、前記所定の条件を満たす場合に、前記順位を新たに設定して、前記保持手段内の順位を、前記新たに設定された順位に更新する、請求項８から１０のいずれか１項に記載の通信装置。
【請求項１２】
前記比較手段は、前記新規パケットが前記既存のフローに属さないと判定すると、当該新規パケットは新規フローに属すると判定し、前記既存のフローの数と前記新規フローの数の和を、フロー認識数として認識し、
前記所定の条件は、所定期間における前記フロー認識数の変化量または変化率が、予め定められた閾値を超えていることである、請求項１１に記載の通信装置。
【請求項１３】
請求項７から１２のいずれか１項に記載の通信装置をコンピュータで実現するためのプログラムであって、
前記コンピュータを、
前記通信装置が有する全手段として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネット、IPネットワークなどの複数の端末を相互に接続するネットワーク上における複数の拠点間の複数の通信を計測する方法に関し、特には、新規に発生したトラフィックが、既に発生したフローに属するか否かを判定するフロー判定方法、通信装置及びプログラムに関する。
【背景技術】
【０００２】
インターネットで使われるIPには、プロトコル、ソースIPアドレス、宛先IPアドレスの情報が含まれ、また、トランスポートプロトコルには、ソースポート、宛先ポートの情報が含まれる。
【０００３】
トラフィック計測技術の中で、これらのパケットが持つ情報を元に通信の種別を分類する方法がフロー計測（フロー判定）である。
【０００４】
フロー計測では、同一のプロトコル、同一のソースIPアドレス、同一の宛先IPアドレス、同一のソースポート、同一の宛先ポートなどの情報を持つパケットを、同一の通信に属するパケットと見なす。同一の通信に属するパケットの集合をフローと呼ぶ。フローのデータ量やパケット量を計測することで、複数の地点間で複数の通信サービスを監視することができる。
【０００５】
インターネット通信では、ルータにより経路制御が行われる。送信元から送出されたパケットは、複数のルータを経由することで送信先に到達する。ルータは、パケットのIPヘッダや場合によってはトランスポートレイヤーのヘッダを参照するため、上述のフローの分類をする機器としては適している。
【０００６】
ルータを通過したパケットのフロー情報を他の機器に通知する方法として、NetFlow（非特許文献１参照）やIPFIX（IP Flow Information Export）（非特許文献２参照）が知られている。
【０００７】
これらの方法では、フロー情報の送信装置の一つとして、ルータが想定されている。送信装置から送信されたフロー情報は、送信装置とネットワーク接続性がある受信装置にて受信される。
【０００８】
フロー情報には、例えば、送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポート、プロトコル、フロー開始時間、フロー終了時間、バイトカウンタ、などの情報が含まれる。これらの各情報の項目は、NetFlowではフィールドタイプ、IPFIXではInformation Elenentと呼ばれる。以下では、NetFlowにおけるフィールドタイプと、IPFIXにおけるInformation Elementを、要素情報と総称する。
【０００９】
フロー情報をパケット化する方式としては、固定フォーマット方式とテンプレート定義方式の２方式がある。固定フォーマット方式では、フロー情報内に常に同一の要素情報が固定された並び方で並ぶ。
【００１０】
テンプレート定義方式では、フロー情報の定義情報とフロー情報のデータ情報が分離しており、定義情報内に含まれる要素情報の番号とそのサイズの情報からフロー情報のデータ情報のフィールドが決定される。定義情報内には要素情報の番号とそのサイズの情報の組み合わせが１つ以上連続して列挙してあり、それによってデータ情報の複数のフィールドが決定される。定義情報内の要素情報の列挙順に基づいてデータ情報内のフィールドの順序が決定し、フォーマットが決められる。
【００１１】
既存のプロトコルでテンプレート定義方式を採用しているのは、NetFlow version 9、IPFIXである。一方、NetFlow version 1,5,8は、固定フォーマット方式を採用している。
【００１２】
テンプレート定義方式では、先ず、テンプレートと呼ばれる要素情報の番号及びその要素情報のサイズを列挙した情報を、送信装置が受信装置に送信する。
【００１３】
テンプレートが受信側で受信された後、送信装置は、テンプレートで定義された要素情報の順序でフローのデータをパケット化し、受信装置に送信する。
【００１４】
テンプレート定義方式では、テンプレートの定義によってフロー情報に含める要素情報を変更できるため、個々のネットワーク構成やフロー情報の収集の個々の目的に適したフロー情報を送受信できる。
【００１５】
フローの送信装置では、フローを判定する機能部と判定されたフロー情報をパケット化して送信する機能部は分離できるため、パケット化にテンプレート定義方式を採用しているプロトコルを用いた場合でも、ユーザからの入力によるテンプレートの変更の柔軟性を有さず、フロー判定を行う機能部は常にある特定のフィールドのみに関して判定を行い、プロトコル規約に従ってデータ情報以外に定義情報を送信するものの、送出されるパケットも実質的には固定されたフォーマットを用いている実装も存在し得る。一方で、テンプレートの決定にユーザからの入力等を受け付ける場合、その入力によってフローに含まれる要素情報、またフローを構成する条件となる要素情報が決定される。
【００１６】
フローを構成する条件となる要素情報に基づいて、観測されたパケットの該当するフィールドから情報（データ）が抜き出される。抜き出された情報は、その新規観測パケットが、新規フローか、既存フローかを判定するために、既存のフローの該当するフィールド内の情報と比較される。
【００１７】
テンプレートの柔軟性を有す実装とする場合、テンプレートはユーザからの入力等によって自由に定義できるため、比較しなければならないフィールドは、それら入力によって変更される。
【非特許文献１】[平成２０年５月３０日検索]、インターネット<http://www.ietf.org/rfc/rfc3954.txt>
【非特許文献２】[平成２０年５月３０日検索]、インターネット<http://www.ietf.org/rfc/rfc5101.txt>
【発明の開示】
【発明が解決しようとする課題】
【００１８】
テンプレート定義方式は、固定フォーマット方式と比較して、情報の柔軟性を有すことが可能になる。その一方で、必要とする処理が増大し、処理効率面、計算機資源量利用効率面において劣る場合が発生する。
【００１９】
フロー情報の送信装置は、観測したパケットからフロー情報を作成し内部に保持する機能と、その内部のフロー情報をプロトコルに準じて送信する機能を有す。
【００２０】
フロー情報を作成し保持する機能において、固定フォーマット方式では、比較するパケットヘッダのフィールドが予め決まっているため、一意の比較処理で複数の要素情報を比較できる。また、テンプレート定義方式を採用したプロトコルを用いつつ、固定したフィールドのみを比較し実質的に固定化されたフォーマットにパケット化してフロー情報を送信する場合も同様である。
【００２１】
一方でテンプレート定義方式を採用したプロトコルにおいてフローを構成するための条件となる要素情報を自由に変更（指定）可能とする場合、固定フィールドの比較では実現できず、各要素情報に対応したパケットヘッダのフィールドに対して比較を行う必要がある。誤判定の可能性がない方式としてはフィールドごと個々に比較を行う方式が挙げられる。
【００２２】
フィールドごとに比較する方式は、固定フォーマットの比較処理に比べ、または、テンプレート定義方式であるが比較処理を行うフィールドを固定化している実装での比較処理に比べて、処理回数が増大する。
【００２３】
本発明の目的は、テンプレート定義方式を用いたフロー判定において、フロー判定に必要な検索回数を低減することのできるフロー判定方法、通信装置およびプログラムを提供することである。
【課題を解決するための手段】
【００２４】
本発明のフロー判定方法は、新規に観測された新規パケットが既存のフローに属するかを判定する通信装置でのフロー判定方法であって、前記既存のフローを規定するために任意に指定された、当該既存のフロー内の複数の指定フィールドのそれぞれに登録されたデータを、蓄積手段に蓄積する蓄積ステップと、既に観測済みの観測済みパケットのヘッダ情報内のデータに基づいて、前記指定フィールドごとに順位を設定し、当該指定フィールドごとの順位を、保持手段に保持する設定ステップと、前記蓄積手段内のデータと、前記新規パケットのヘッダ情報内のデータとを、前記指定フィールドごとに、前記保持手段内の順位に従って比較する比較ステップと、前記順位に従って比較を行っている際に当該比較の結果が不一致を示すと、前記新規パケットが前記既存のフローに属さないと判定して、前記新規パケットと前記既存のフローに関するそれ以降の比較を中止し、その時点で前記新規パケットと未比較の既存のフローのデータが前記蓄積手段に存在する場合は前記新規パケットの比較対象を前記未比較の既存のフローのデータに変更して比較を継続し、前記複数の指定フィールドでの全ての比較の結果が一致を示すと、前記新規パケットが前記既存のフローに属すると判定する判定ステップと、を含む。
【００２５】
本発明の通信装置は、新規に観測された新規パケットが既存のフローに属するかを判定する通信装置であって、前記既存のフローを規定するために任意に指定された、当該既存のフロー内の複数の指定フィールドのそれぞれに登録されたデータを蓄積する蓄積手段と、既に観測済みの観測済みパケットのヘッダ情報内のデータに基づいて前記指定フィールドごとに設定された順位を保持する保持手段と、前記蓄積手段内のデータと、前記新規パケットのヘッダ情報内のデータとを、前記指定フィールドごとに、前記保持手段内の順位に従って比較し、前記順位に従って比較を行っている際に当該比較の結果が不一致を示すと、前記新規パケットが前記既存のフローに属さないと判定して、前記新規パケットと前記既存のフローに関するそれ以降の比較を中止し、その時点で前記新規パケットと未比較の既存のフローのデータが前記蓄積手段に存在する場合は前記新規パケットの比較対象を前記未比較の既存のフローのデータに変更して比較を継続し、前記複数の指定フィールドでの全ての比較の結果が一致を示すと、前記新規パケットが前記既存のフローに属すると判定する比較手段と、を含む。
【発明の効果】
【００２６】
本発明によれば、蓄積手段内データと、新規パケットのヘッダ情報内のデータとを、既存のフローを規定するために任意に指定された複数の指定フィールドごとに比較する際に、既に観測済みのパケットのヘッダ情報内のデータに基づいて設定された順位に従って、データが比較される。
【００２７】
このため、既に観測済みのパケットのヘッダ情報内のデータに適した順番で、指定フィールドのデータを比較することが可能となり、データの比較およびデータの検索回数を低減することが可能になる。
【００２８】
例えば、複数の指定フィールドのうち、指定フィールドの異なり数の大きい指定フィールドから順番に比較していけば、データの比較およびデータの検索回数を低減できる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施例を、図面を参照して説明する。
【００３０】
図１は、本発明の一実施例である、ネットワークトラヒックをフローごとに分類して計測を行い、計測されたフロー情報の送信を行う通信装置を示したブロック図である。なお、図１では、パケット処理に関する部分の構成が示されている。
【００３１】
図１において、送信装置１００は、ネットワーク等から観測されたパケットと、蓄積されたフローとを、テンプレート定義方式にしたがって比較し、その比較結果に基づいて、観測パケットが、新規フローか、蓄積されている既存フローかを判断する。
【００３２】
送信装置１００は、ネットワークインタフェース（以下「ＮＩＣ」と称する。）１と、パケット観測部（以下「観測部」と称する。）２と、フロー情報作成部（以下「作成部」と称する。）３と、フロー情報送出部（以下「送出部」と称する。）４とを含む。作成部３は、フロー情報蓄積部（以下「蓄積部」と称する。）３ａと、新規観測パケット・既存フロー比較部（以下「パケット・フロー比較部」と称する。）３ｂとを含む。パケット・フロー比較部３ｂは、異なり数保持部（以下「保持部」と称する）３ｂ１と、比較部３ｂ２と、変化検知部（以下「検知部」と称する。）３ｂ３とを含む。
【００３３】
ＮＩＣ（受付手段）１は、インターネット等のネットワークからパケットを受け付け、観測部２に提供する。
【００３４】
観測部（観測手段）２は、ＮＩＣ１からのパケット、または、何らかの処理を経て出力される予定のパケットを受け付ける。観測部２は、受け付けられたパケットに対して、必要に応じてパケットサンプリングやフィルタリングを行い、新規に観測されたパケット（以下「新規パケット」と称する。）を抽出する。観測部２は、新規パケットを作成部３に提供する。
【００３５】
作成部（作成手段）３は、新規パケットに基づいて、フロー情報を作成する。
【００３６】
蓄積部（蓄積手段）３ａは、フロー情報を蓄積する。例えば、蓄積部３ａは、少なくとも、既存のフローを規定するために任意に指定された、その既存のフロー内の複数の指定フィールドのそれぞれに登録されたデータを、フロー情報として蓄積する。
【００３７】
フロー情報の作成処理は、比較部（比較手段）３ｂ２によって行われる。
【００３８】
保持部（保持手段）３ｂ１は、既に観測済みの観測済みパケットのヘッダ情報内のデータに基づいて指定フィールドごとに設定された順位を保持する。
【００３９】
比較部３ｂ２は、蓄積部３ａ内の既に観測された既存のフローのデータと、観測部２から伝達された新規パケットのヘッダ情報内のデータとを、指定フィールドごとに、保持部３ｂ１内の順位に従って比較して、新規パケットが、新規フローか、既存フローかを判定する。
【００４０】
比較部３ｂ２は、保持部３ｂ１内の順位に従って比較を行っている際に、その比較の結果が不一致を示すと、新規パケットが、その既存のフローに属さないと判定して、新規パケットとその既存のフローに関するそれ以降の比較を中止し、その時点でその新規パケットと未比較の既存のフローが蓄積部３ａ内にまだ存在する場合は、新規パケットの比較対象をその未比較の既存のフローに変更して比較を継続する。また、比較部３ｂ２は、複数の指定フィールドでの全ての比較の結果が一致を示すと、新規パケットがその既存のフローに属すると判定する。
【００４１】
また、比較部３ｂ２は、既に観測済みのパケットのヘッダ情報内のデータに基づいて、指定フィールドごとに順位を設定し、その指定フィールドごとの順位を、保持部３ｂ１に保持する。
【００４２】
また、比較部３ｂ２は、保持部３ｂ１内の順位を設定するために用いた観測済みパケットと異なる観測済みパケットのヘッダ情報内のデータに基づいて、指定フィールドごとに順位を新たに設定し、保持部３ｂ１内の順位を、新たに設定された順位に更新する。
【００４３】
本実施例では、比較部３ｂ２は、以下のように順位を設定したり更新したりする。
【００４４】
まず、比較部３ｂ２は、保持部３ｂ１内の順位を設定または更新するために用いた観測済みパケットのヘッダ情報内のデータに基づいて、指定フィールドごとに、異なり数を計測して求める。
【００４５】
なお、指定フィールドの異なり数は、その指定フィールドに異なる値が出現する数を示す。このため、異なり数が大きいほど、その異なり数に対応する指定フィールド内のデータが、フローごとに異なる可能性が高くなる。
【００４６】
続いて、比較部３ｂ２は、複数の指定フィールドのうち異なり数が大きい指定フィールドほど順位が高くなるように、順位を設定する。
【００４７】
また、比較部３ｂ２は、蓄積部３ａ内のデータと、新規パケットのヘッダ情報内のデータとを、指定フィールドごとに、保持部３ｂ１内の順位が高い順に比較する。
【００４８】
また、比較部３ｂ２は、蓄積部３ａ内のデータを更新する時点において保持部３ｂ１内の順位の更新を行う。
【００４９】
例えば、比較部３ｂ２は、以下のように保持部３ｂ１内の順位を更新する。
【００５０】
比較部３ｂ２は、あるタイミングで、蓄積部３ａ内のフロー情報（データ）を送出部４から外部の装置に送信させ、蓄積部３ａ内のフロー情報を削除する。なお、比較部３ｂ２は、蓄積部３ａにフロー情報が蓄積されていない場合は、新規パケットを必ず新規フローと判定し、新規パケットに基づいて、新規フローのフロー情報を作成して、蓄積部３ａに蓄積する。比較部３ｂ２は、蓄積部３ａ内の全データを外部の装置に送信した時点以降のある期間に観測されたパケットのヘッダ情報内のデータに基づいて、指定フィールドごとに順位を新たに設定し、保持部３ｂ１内の順位を、その新たに設定された順位に更新する。
【００５１】
比較部３ｂ２は、蓄積部３ａ内の更新後のデータと、新規パケットのヘッダ情報内のデータとを、指定フィールドごとに、保持部３ｂ１内の更新後の順位が高い順に比較する。
【００５２】
また、比較部３ｂ２は、新規パケットが既存のフローに属さないと判定すると、その新規パケットは新規フローに属すると判定し、既存のフローの数と新規フローの数の和を、フロー認識数として認識する。
【００５３】
検知部（変化検知手段）３ｂ３は、新規パケットに関するトラフィックの変化が所定の条件を満たすかを判定する。
【００５４】
所定の条件としては、例えば、所定期間におけるフロー認識数の変化量または変化率が、予め定められた閾値を超えているという条件が用いられる。
【００５５】
また、比較部３ｂ２は、新規パケットに関するトラフィックの変化が、所定の条件を満たすと検知部３ｂ３が判定した場合に、順位を新たに設定して、保持部３ｂ１内の順位を、その新たに設定された順位に更新する。
【００５６】
新規パケットが新規フローに振り分けられた場合、比較部３ｂ２は、蓄積部３ａに新たに新規フロー情報を登録する。
【００５７】
一方、新規パケットが既存フローに振り分けられた場合、比較部３ｂ２は、蓄積部３ａ内の、その既存フローの時間情報（フロー開始・終了時刻）やデータ量情報（バイト量・パケット量）等を更新する。
【００５８】
作成部３は、蓄積部３ａ内のフロー情報を、一定時間間隔で、または、ユーザの何らかの指示にしたがって、もしくは、蓄積部３ａを構成する蓄積バッファの残余量が、予め定められた値よりも少なくなるなどの機能内部上の事由から、自律的に、送出部４に提供する。
【００５９】
送出部４は、フロー情報を、プロトコルに準じたフォーマットで適切にパケット化して送信する。
【００６０】
図１には図示していないが、パケット処理に間接的に関連する機能部として、テンプレート設定、及び、フロー構成条件の要素情報の設定などに用いるパラメータ等を、ユーザから受け付け、必要な情報を、図１に図示した各部に伝達する機能部（例えば、入力部）が存在する。
【００６１】
なお、図１に示した送信装置１００は、ＣＤ−ＲＯＭ、ハードディスクまたはメモリに記録されたプログラムに従って動作するコンピュータによって実現されてもよい。ＣＤ−ＲＯＭ、ハードディスクまたはメモリは、一般的に、コンピュータにて読み取り可能な記録媒体と呼ぶことができる。この場合、ＮＩＣ１を搭載したコンピュータは、そのプログラムを記録媒体から読み取り実行することによって、観測部２、作成部３、及び、送出部４として機能し、送信装置１００が実現できる。
【００６２】
ここで、送信装置１００の動作の概要を説明する。
【００６３】
送信装置１００は、テンプレート定義方式を採用する。また、フローを規定する指定フィールドは一定ではなく、送信装置１００は、外部からの入力などによって指定フィールドを自由に変更する機能を有する。
【００６４】
比較部３ｂ２は、観測部２にて観測された新規パケットが、既に蓄積部３ａに蓄積されている既存フローか、新規に登録すべき新規フローかを判定する。
【００６５】
具体的には、比較部３ｂ２は、新規パケット内の各指定フィールドのデータが、蓄積部３ａに蓄積されている既存フローの各々の各指定フィールドのデータと、それぞれ同一かを比較する。
【００６６】
新規パケット内のフィールドのデータが、既存フローのフィールドのデータと、１フィールドでも異なれば、比較部３ｂ２は、新規パケットが、その既存フローとは違うフローであると判断し、蓄積部３ａに蓄積されている次の既存フローと比較を行う。繰り返し処理が行われて、新規パケットが全ての既存フローと異なることがわかった場合は、比較部３ｂ２は、新規パケットが新規フローであると判断する。
【００６７】
指定フィールドのデータを個々に比較する場合に、より少ないフィールドの比較によって、新規フローか否かが判明すれば、既存フローか新規フローかを判定するためのフロー判定における、既存フローの検索とそれに伴った各フィールドのデータの比較の回数を減少させることができる。
【００６８】
蓄積部３ａでは、その処理系が利用可能なメモリ量に応じて、フローの蓄積可能数Ｎが決定される。
【００６９】
本実施例では、加えて、パケット・フロー比較部３ｂが、フローの構成要素となる指定フィールドごとに異なり数を保持するメモリ空間、すなわち、保持部３ｂ１を有する。
【００７０】
この空間は、異なり数を計算するアルゴリズムによって異なる。
【００７１】
異なり数を計算するアルゴリズムとしては、Liner CountingやLogLog Counting、それらを組み合わせたACC（Adaptive Cardinality Counting）等が有名であるが、どういったアルゴリズムを使っても構わない。
【００７２】
本実施例では、どのアルゴリズムを利用する場合でも、それらのアルゴリズムの保持できる異なり数を求めるために必要なメモリ空間（Liner Countingの場合はビット列）の最大数は、フロー蓄積可能数と同じにする。
【００７３】
比較部３ｂ２は、算出・推定した異なり数が大きい指定フィールドほど、比較の順番を早くする。具体的には、比較部３ｂ２は、最初に比較が行われる指定フィールドを、算出・推定した異なり数が最も大きい指定フィールドとし、最後に比較が行われる指定フィールドを、異なり数が最も小さい指定フィールドとする。
【００７４】
各指定フィールドの比較回数は、全てパケット数と同値なため、異なり数が大きい指定フィールドが比較順序の上位にくることで、１つ目の比較が行われる指定フィールドでそのパケットが異なるフローであることを判定できる確率が高まる。
【００７５】
フロー情報の作成開始時に、観測部２において観測されたＭパケット分に関して、比較部３ｂ２は、フィールドごとに異なり数を求める。
【００７６】
例えば、ソースアドレス、宛先アドレス、プロトコル、ソースポート、宛先ポートをフローの作成条件とする指定フィールドとした場合、比較部３ｂ２は、保持部３ｂ１において、図２に例示するように、５つの指定フィールドに関して、異なり数を保持するメモリ空間をそれぞれ割り当て、観測されたＭパケット分に関して、それぞれのフィールドごとの異なり数を数える。
【００７７】
次に、比較部３ｂ２は、５つの指定フィールドを、異なり数が大きい順に並べ、その順番に従って順位を設定し、その順位を指定フィールドの比較順序とする。
【００７８】
例えば、５つの指定フィールドを異なり数が大きい順に並べた場合に、宛先アドレス、ソースアドレス、宛先ポート、ソースポート、プロトコルの順序になった場合、比較部３ｂ２は、宛先アドレス、ソースアドレス、宛先ポート、ソースポート、プロトコルの順で検索（比較）する。
【００７９】
新規に決定された順序が、それまでに利用していた順序と異なる場合には、新規に決定された順序と異なる順序を用いて蓄積した既存フローと比較条件（順序）が異なるため、既に蓄積されている既存のフロー情報に対して更新後の順序では比較ができなくなる。
【００８０】
比較を継続するために、比較部３ｂ２は、蓄積部３ａに蓄積されていたフロー情報を全て送信部４に提供し、蓄積済みの全てのフロー情報を蓄積部３ａから削除する。
【００８１】
その後、比較部３ｂ２は、更新された順序を用いて、その後観測されたパケットからフロー情報を蓄積部３ａに新たに蓄積していけばよい。
【００８２】
蓄積部３ａから送出部４にフロー情報を提供するタイミングは、送出部４が不図示の受信装置へフロー情報を送信するタイミングと同等であると考えられることから、一定間隔ごと、もしくは、送信装置が資源枯渇となった場合、または、何らかの強制時ということになり、これらのタイミングが、保持部３ｂ１内の順序を更新後の順序に切り替えるタイミングとなる。
【００８３】
一般的に、これら送出タイミングのうちいくつかでは、蓄積部３ａに蓄積された全てのフロー情報が送出されるとは限らない。例えば、定期送信間隔に基づいた送出では、終了したと判断されないフローの情報は、蓄積部３ａに残る。
【００８４】
比較部３ｂ２は、フローが予め定められた時間（アクティブタイムアウト時間）を超過した場合と、観測していたフローのパケットの間隔が予め定められた時間（アイドルタイムアウト時間）を超えた場合と、ＴＣＰ等における明示的なフロー終了があった場合とのそれぞれで、そのフローが終了したと判断する。
【００８５】
本実施例では、比較部３ｂ２は、順序を更新する際に、フロー終了条件に当たらないフロー情報も、フローの強制的終了を事由として、蓄積部３ａから送出部４に提供し蓄積部３ａから削除して、蓄積部３ａを何も蓄積されていない初期状態にする。
【００８６】
送信装置１００の資源枯渇時によってフロー情報を受信装置に送出する場合も、比較部３ｂ２は、同様に、蓄積部３ａに蓄積されたフロー情報全てを送出部４に提供し蓄積部３ａから削除して、蓄積部３ａを何も蓄積されていない初期状態にする。
【００８７】
比較部３ｂ２は、蓄積部３ａが初期状態になった状態で保持部３ａ１に保持されている順序を新しい順序に更新する。
【００８８】
なお、IPFIXでは、フローの終了の理由を示すInformation Element（136番：flowEndReason）が存在し、これによって、送信装置１００から不図示の受信装置へフローの終了を伝達することが可能である。
【００８９】
ここで、定期的な送信間隔時にフロー情報を送信した場合、既にフローが、アクティブタイムアウト（0ｘ01：activetimeout）、アイドルタイムアウト（0ｘ02：idletimeout）、TCP等に明示的なフロー終了（0ｘ03：end of Flow detected）となっている場合は、それらの理由を用い、そうでないならば、強制的終了（0ｘ04：forced end）を理由として用いる。また、フロー情報の送信の原因が資源枯渇となる場合、資源枯渇（0ｘ05：lack of resources）が用いられればよい。
【００９０】
以上によって、異なり数が大きい指定フィールドから検索されるため、新規パケットと既存フローが異なる場合に、少ないフィールドの比較によって判断ができ、総検索回数を小さくすることができる。
【００９１】
この実施例において、トラフィックの傾向が大きく変化しない間は、上記方法によって求めた順序を使い続ければよい。トラフィックの傾向が変化した場合は、異なり数の観測と順序の再計算を行う必要がある。
【００９２】
トラフィックの変化の検知手法は、特に問わない。一例として、検知部３ｂ３が、一定時間内（定期送信間隔内）に作られ送信される総フロー数に関して、前回送信した一定時間当たりフロー数と今回送信する一定時間当たりフロー数を保持し、その差が一定もしくは指定された変化量以上、または、その商が一定もしくは指定された変化率以上である場合に変化したと検知する閾値判定を行えばよい。
【００９３】
図３は、送信装置１００の動作の一例を説明するためのフローチャートである。
【００９４】
以下、図３を参照して、送信装置１００の動作の一例を説明する。
【００９５】
ステップ３０１では、比較部３ｂ２は、蓄積部３ａ内の既存のフローのデータと、観測部２からの新規パケットのヘッダ情報内のデータとを、指定フィールドごとに、保持部３ｂ１内の順位に従って比較し、比較を行っている際に、その比較の結果が不一致を示すと、新規パケットがその既存のフローに属さないと判定して、新規パケットとその既存のフローに関するそれ以降の比較を中止し、その時点でその新規パケットと未比較の既存のフローのデータが蓄積部３ａに存在する場合は新規パケットの比較対象をその未比較の既存のフローのデータに変更して比較を継続し、複数の指定フィールドでの全ての比較の結果が一致を示すと、新規パケットが既存のフローに属すると判定する。
【００９６】
なお、ステップ３０１の処理は、検知部３ｂ３が、新規パケットに関するトラフィックの変化が所定の条件を満たさないと判定すると実行され、フロー情報の定期送信間隔が経過するまで、または、蓄積部３ａの資源枯渇直前状態になるまで行われる。
【００９７】
ステップ３０１の処理が終了すると、ステップ３０２が実行される。
【００９８】
ステップ３０２では、比較部３ｂ２は、送出部４に終了フロー情報を提供し、送出部４は、その終了フロー情報を送信する。なお、ステップ３０２の処理は、通常処理である。
【００９９】
続いて、ステップ３０３では、比較部３ｂ２は、蓄積部３ａ内のフロー情報に基づいて、時間当たりの総送信フロー数を計算し、その計算結果を、検知部３ｂ３に記録する。検知部３ｂ３は、今回の総送信フロー数と前回の送信フロー数とを比較して、トラフィックの変化の有無を判定する。
【０１００】
続いて、ステップ３０４で、検知部３ｂ３が、トラフィックの変化を検知しないと（トラフィックの変化が無の場合）、比較部３ｂ２は、ステップ３０１を実行する。
【０１０１】
ステップ３０４で、検知部３ｂ３が、トラフィックの変化を検知すると（トラフィックの変化が有の場合）、比較部３ｂ２は、ステップ３０５を実行する。
【０１０２】
ステップ３０５では、比較部３ｂ２は、ステップ３０１と同様の動作を実行する。
【０１０３】
続いて、ステップ３０６では、比較部３ｂ２は、観測部２において観測されたＭパケット分に関して、フィールドごとに異なり数を計測する。
【０１０４】
なお、ステップ３０５および３０６の処理は、検知部３ｂ３が、新規パケットに関するトラフィックの変化が所定の条件を満たさないと判定すると実行され、フロー情報の定期送信間隔が経過するまで、または、蓄積部３ａの資源枯渇直前状態になるまで行われる。
【０１０５】
ステップ３０５および３０６の処理が終了すると、ステップ３０７が実行される。
【０１０６】
ステップ３０７では、比較部３ｂ２は、異なり数が計測された各指定フィールドを、異なり数が大きい順に並べ、その順番に従って順位を新たに設定し、保持部３ｂ１内の順位を、その新たに設定された順位に更新する。
【０１０７】
続いて、ステップ３０８で、蓄積部３ａの資源枯渇状態であると、比較部３ｂ２は、ステップ３０９を実行する。
【０１０８】
ステップ３０９では、比較部３ｂ２は、資源枯渇状態として、蓄積部３ａ内の全フロー情報を、送出部４に送信させ、蓄積部３ａ内のフロー情報を削除する。その後、ステップ３０３が実行される。
【０１０９】
一方、ステップ３０８で、定期送信間隔が経過した状態であると、比較部３ｂ２は、蓄積部３ａ内の未送信フロー情報を、送出部４に強制送信させ、蓄積部３ａ内のフロー情報を削除する。その後、ステップ３０２が実行される。
【０１１０】
本実施例によれば、保持部３ｂ１は、既に観測済みのパケットのヘッダ情報内のデータに基づいて指定フィールドごとに設定された順位を保持する。
【０１１１】
比較部３ｂ２は、蓄積部３ａ内の既存のフローのデータと、観測部２からの新規パケットのヘッダ情報内のデータとを、指定フィールドごとに、保持部３ｂ１内の順位に従って比較していき、比較を行っている際に、その比較の結果が不一致を示すと、新規パケットがその既存のフローに属さないと判定して、新規パケットとその既存のフローに関するそれ以降の比較を中止し、その時点でその新規パケットと未比較の既存のフローのデータが蓄積部３ａ内にまだ存在する場合は、新規パケットの比較対象をその未比較の既存のフローに変更して比較を継続する。また、比較部３ｂ２は、複数の指定フィールドでの全ての比較の結果が一致を示すと、新規パケットが既存のフローに属すると判定する。
【０１１２】
このため、観測済みのパケットのヘッダ情報内のデータに適した順番で、指定フィールドのデータを比較することが可能となり、既存フローか新規フローかを判定するためのフロー判定における、既存フローの検索とそれに伴った各フィールドのデータの比較の回数を減少することが可能になる。
【０１１３】
本実施例では、比較部３ｂ２は、観測済みのパケットのヘッダ情報内のデータに基づいて、指定フィールドごとに順位を設定し、その指定フィールドごとの順位を保持部３ｂ１に保持する。また、比較部３ｂ２は、蓄積部３ａ内の全データを外部の装置に送信した時点以降のある期間に観測されたパケットのヘッダ情報内のデータに基づいて、指定フィールドごとに順位を新たに設定し、保持部３ｂ１内の順位を、新たに設定された順位に更新する。
【０１１４】
この場合、観測済みのパケットのヘッダ情報内のデータに基づいて、順位を更新することが可能になる。このため、順位を適切に更新することが可能になる。
【０１１５】
本実施例では、比較部３ｂ２は、保持部３ｂ１内の順位を設定または更新するために用いた観測済みパケットのヘッダ情報内のデータに基づいて、指定フィールドごとに、異なり数を計測し、複数の指定フィールドのうち異なり数が大きい指定フィールドほど順位が高くなるように、順位を設定する。
【０１１６】
そして、比較部３ｂ２は、蓄積部３ａ内のデータと、新規パケットのヘッダ情報内のデータとを、指定フィールドごとに、保持部３ｂ１内の順位が高い順に比較する。
【０１１７】
この場合、データの比較およびデータの検索回数を低減することが可能になる。
【０１１８】
本実施例では、比較部３ｂ２は、蓄積部３ａ内のデータを更新する時点において保持部３ｂ１内の順位の更新を行い、蓄積部３ａ内の更新後のデータと、新規パケットのヘッダ情報内のデータとを、指定フィールドごとに、保持部３ｂ１内の更新後の順位が高い順に比較する。
【０１１９】
この場合、蓄積部３ａ内のデータを更新する時点において保持部３ｂ１内の順位の更新を行うので、例えば、蓄積部３ａ内のデータ構造を、データの比較が容易に行える構造に変更することが可能になる。よって、比較用の順位の更新に応じて、データの比較が困難になることを防止することが可能になる。
【０１２０】
本実施例では、検知部３ｂ３が、新規パケットに関するトラフィックの変化が所定の条件を満たすことを検出すると、比較部３ｂ２は、比較用の順位を新たに設定して、保持部３ｂ１内の順位を、その新たに設定された順位に更新する。
【０１２１】
この場合、トラフィックの変化に応じて、比較用の順位を適切に更新することが可能となる。
【０１２２】
なお、新規パケットが既存のフローに属さない場合、比較部３ｂ２が、新規パケットは新規フローに属すると判定し、既存のフローの数と新規フローの数の和を、フロー認識数として認識する場合、所定の条件として、所定期間におけるフロー認識数の変化量または変化率が、予め定められた閾値を超えているという条件を用いることが可能になる。
【０１２３】
この場合、フロー認識数の変化に応じて、比較用の順位を適切に更新することが可能となる。
【０１２４】
以上説明した実施例において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
【図面の簡単な説明】
【０１２５】
【図１】本発明の一実施例である通信装置を示したブロック図である。
【図２】保持部３ｂ１に保持される情報の一例を示した説明図である。
【図３】本実施例の動作を説明するためのフローチャートである。
【符号の説明】
【０１２６】
１      ＮＩＣ
２      パケット観測部
３      フロー情報作成部
３ａ    フロー情報蓄積部
３ｂ    新規観測パケット・既存フロー比較部
３ｂ１  異なり数保持部
３ｂ２  比較部
３ｂ３  変化検知部
４      フロー情報送出部
１００      送信装置
【図１】
2010041644.tif 000003
【図２】
2010041644.tif 000004
【図３】
2010041644.tif 000005