(57)【特許請求の範囲】
【請求項１】
トンネルヘッダが付加されたＩＰパケットの一部であるヘッダサンプルを含んだフロー情報を受信する受信部と、
前記フロー情報の前記ヘッダサンプルが、トンネリングプロトコルに基づくテンプレートのいずれかに合致するか否かを判定し、前記テンプレートのいずれかに合致すると判定した場合、当該合致したテンプレートに基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第１の解析部と、
前記第１の解析部によって、前記フロー情報の前記ヘッダサンプルが前記テンプレートのいずれにも合致しないと判定された場合、前記トンネルヘッダの特定のフィールドに設定される値と、前記ＩＰパケットの特定のフィールドに設定される値と、を組み合わせた検索データに合致するバイト列を前記ヘッダサンプルから検索し、当該検索の結果に基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第２の解析部と、
を有することを特徴とするフロー情報解析装置。
【請求項２】
前記第２の解析部による検索の結果、前記検索データに合致するバイト列が得られた場合、当該バイト列の前記ヘッダサンプル内の位置に基づいて、テンプレートを生成する生成部をさらに有し、
前記第１の解析部は、前記生成部によって生成されたテンプレートを用いて判定を行うことを特徴とする請求項１に記載のフロー情報解析装置。
【請求項３】
前記第２の解析部による検索の結果、前記検索データに合致するバイト列が得られなかった場合、前記ＩＰパケットの特定のフィールドに設定される値の組み合わせである検索データに合致するバイト列を前記ヘッダサンプルから検索し、当該検索の結果に基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第３の解析部をさらに有することを特徴とする請求項１又は２に記載のフロー情報解析装置。
【請求項４】
前記第２の解析部は、前記トンネルヘッダの末尾のフィールドに設定される値と、前記ＩＰパケットの先頭のフィールドに設定される値と、を組み合わせた検索データに合致するバイト列を前記ヘッダサンプルから検索することを特徴とする請求項１から３のいずれか１項に記載のフロー情報解析装置。
【請求項５】
フロー情報解析装置によって実行されるフロー情報解析方法であって、
トンネルヘッダが付加されたＩＰパケットの一部であるヘッダサンプルを含んだフロー情報を受信する受信工程と、
前記フロー情報の前記ヘッダサンプルが、トンネリングプロトコルに基づくテンプレートのいずれかに合致するか否かを判定し、前記テンプレートのいずれかに合致すると判定した場合、当該合致したテンプレートに基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第１の解析工程と、
前記第１の解析工程によって、前記フロー情報の前記ヘッダサンプルが前記テンプレートのいずれにも合致しないと判定された場合、前記トンネルヘッダの特定のフィールドに設定される値と、前記ＩＰパケットの特定のフィールドに設定される値と、を組み合わせた検索データに合致するバイト列を前記ヘッダサンプルから検索し、当該検索の結果に基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第２の解析工程と、
を含んだことを特徴とするフロー情報解析方法。
【請求項６】
コンピュータを、請求項１から４のいずれか１項に記載のフロー情報解析装置として機能させるためのフロー情報解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フロー情報解析装置、フロー情報解析方法及びフロー情報解析プログラムに関する。
【背景技術】
【０００２】
ＩＰネットワークにおいて、ＤＤｏＳ（Distributed  Denial  of  Service）攻撃に代表されるネットワークへの攻撃が増大しており、トラフィックの監視及び解析の重要性が増している。トラフィック解析技術としては、ＮｅｔＦｌｏｗ、ｓＦｌｏｗ、ＩＰＦＩＸ（Internet  Protocol  Flow  Information  Export）等のネットワーク機器が出力するフロー情報を利用した方法が知られている（例えば、非特許文献１を参照）。このようなフロー情報を利用したトラフィック解析技術によれば、送受信ＩＰアドレス、プロトコル、ポート番号等の情報ごとにトラフィック量を解析することができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】B.  Claise,  Cisco  Systems  NetFlow  Services  Export  Version  9.  RFC  3954,  October  2004.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のフロー情報を利用したトラフィック解析技術には、ネットワークにおいてトンネリングプロトコルが用いられている場合、トンネル内のユーザパケットの詳細な情報を解析できない場合があるという問題があった。【０００５】
例えば、ＮｅｔＦｌｏｗ  ｖ９を用いた解析では、Ｌ２ＴＰ（Layer  2  Tunneling  Protocol）やＧＲＥ（Generic  Routing  Encapsulation）等のトンネリングプロトコルが想定されておらず、取得可能な情報は、トンネルヘッダに関するものに限られる。そのため、ＮｅｔＦｌｏｗ  ｖ９を用いた解析では、トンネル内のユーザパケットの送受信ＩＰアドレス、プロトコル、ポート番号といった詳細な情報を解析できない場合があった。
【課題を解決するための手段】
【０００６】
本発明のフロー情報解析装置は、トンネルヘッダが付加されたＩＰパケットの一部であるヘッダサンプルを含んだフロー情報を受信する受信部と、前記フロー情報の前記ヘッダサンプルが、トンネリングプロトコルに基づくテンプレートのいずれかに合致するか否かを判定し、前記テンプレートのいずれかに合致すると判定した場合、当該合致したテンプレートに基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第１の解析部と、前記第１の解析部によって、前記フロー情報の前記ヘッダサンプルが前記テンプレートのいずれにも合致しないと判定された場合、前記トンネルヘッダの特定のフィールドに設定される値と、前記ＩＰパケットの特定のフィールドに設定される値と、を組み合わせた検索データに合致するバイト列を前記ヘッダサンプルから検索し、当該検索の結果に基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第２の解析部と、を有することを特徴とする。【０００７】
本発明のフロー情報解析方法は、フロー情報解析装置によって実行されるフロー情報解析方法であって、トンネルヘッダが付加されたＩＰパケットの一部であるヘッダサンプルを含んだフロー情報を受信する受信工程と、前記フロー情報の前記ヘッダサンプルが、トンネリングプロトコルに基づくテンプレートのいずれかに合致するか否かを判定し、前記テンプレートのいずれかに合致すると判定した場合、当該合致したテンプレートに基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第１の解析工程と、前記第１の解析工程によって、前記フロー情報の前記ヘッダサンプルが前記テンプレートのいずれにも合致しないと判定された場合、前記トンネルヘッダの特定のフィールドに設定される値と、前記ＩＰパケットの特定のフィールドに設定される値と、を組み合わせた検索データに合致するバイト列を前記ヘッダサンプルから検索し、当該検索の結果に基づいて、前記ヘッダサンプルから前記ＩＰパケットのヘッダに関する情報を抽出する第２の解析工程と、を含んだことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ネットワークにおいてトンネリングプロトコルが用いられている場合であっても、トンネル内のユーザパケットの詳細な情報を解析することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係るＩＰネットワークの構成の一例を示す図である。
【図２】図２は、第１の実施形態に係るフロー情報解析装置の構成の一例を示す図である。
【図３】図３は、第１の実施形態に係るフロー情報について説明するための図である。
【図４】図４は、第１の実施形態に係るテンプレートの一例を示す図である。
【図５】図５は、第１の実施形態に係るフロー情報解析装置の処理の流れを示すフローチャートである。
【図６】図６は、プログラムが実行されることによりフロー情報解析装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係るフロー情報解析装置、フロー情報解析方法及びフロー情報解析プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１１】
［第１の実施形態の構成］
まず、図１を用いて、第１の実施形態に係るフロー情報解析装置を有するＩＰネットワークの構成について説明する。図１は、第１の実施形態に係るＩＰネットワークの構成の一例を示す図である。図１に示すように、ＩＰネットワーク１は、フロー情報解析装置１０、ユーザ端末２０及び２１、宅内ネットワーク装置３０、ネットワーク装置４０、５０及び６０を有する。各ユーザ端末は、例えば、通信機能を備えたパーソナルコンピュータやスマートフォン等の端末である。また、各ネットワーク装置は、例えばルータ等である。
【００１２】
図１に示すように、ユーザ端末２０は、宅内ネットワーク装置３０と接続している。また、ユーザ端末２１は、ネットワーク装置４０と接続している。また、宅内ネットワーク装置３０は、ユーザ端末２０及びネットワーク装置４０と接続している。また、宅内ネットワーク装置３０は、ネットワーク装置４０との間に、ＰＰＰｏＥ等のトンネリングプロトコルを用いてトンネル３１を設置する。
【００１３】
ネットワーク装置４０は、ユーザ端末２１、宅内ネットワーク装置３０及びネットワーク装置５０と接続する。また、ネットワーク装置４０は、ネットワーク装置６０との間に、Ｌ２ＴＰ及びＩＰ−ＩＰ（ＩＰｖ４  ｏｖｅｒ  ＩＰｖ６）等のトンネリングプロトコルを用いてトンネル４１を設置する。ネットワーク装置５０は、ネットワーク装置４０、ネットワーク装置６０及びフロー情報解析装置１０と接続する。
【００１４】
なお、以降の説明で、トンネルパケットとは、トンネリングプロトコルに基づいてカプセル化されたパケットを示すこととする。また、ユーザパケットとは、ユーザ端末から送出されたカプセル化される前のパケット、又はトンネルパケットのカプセル化を解除すること、すなわちトンネルパケットからトンネルヘッダを取り除くことで得られるトンネル内のパケットを示すこととする。特に、トンネル内におけるカプセル化された状態のユーザパケットを、内部ユーザパケットとよぶ。また、ユーザパケットはＩＰパケットであることとする。ＩＰパケットには、ＩＰｖ４パケットやＩＰｖ６パケット等が含まれる。
【００１５】
ユーザ端末２０は、ユーザパケットであるＩＰパケット７０を送信する。そして、宅内ネットワーク装置３０は、ユーザ端末２０から送出されたＩＰパケット７０に対して、ＰＰＰｏＥ等のトンネリングプロトコルを用いてトンネルヘッダを付加し、カプセル化する。そして、宅内ネットワーク装置３０は、ＩＰパケット７０をカプセル化したパケットであるトンネルパケット７１を、ネットワーク装置４０に送信する。
【００１６】
ネットワーク装置４０は、宅内ネットワーク装置３０から受信したトンネルパケット７１に対して、ＰＰＰｏＥ等のトンネリングプロトコルを終端し、カプセル化を解除する。ネットワーク装置４０は、カプセル化を解除したＩＰパケット７０に対して、Ｌ２ＴＰ等のトンネリングプロトコルを用いてパケットにヘッダを付加しカプセル化する。そして、ネットワーク装置４０は、ＩＰパケット７０をカプセル化したパケットであるトンネルパケット７２を、ネットワーク装置５０に送信する。
【００１７】
ネットワーク装置５０は、ネットワーク装置４０とネットワーク装置６０との間で、カプセル化されたパケットを送受信する。また、ネットワーク装置５０は、送受信したトンネルパケット７２をサンプリングし、ｓＦｌｏｗ、ＩＰＦＩＸ、Ｆｌｅｘｉｂｌｅ  ＮｅｔＦｌｏｗ等のフロー情報８０を作成する。そして、ネットワーク装置５０は、作成したフロー情報８０をフロー情報解析装置１０に送信する。フロー情報解析装置１０は、ネットワーク装置５０によって送信されたフロー情報８０を受信し、解析する。フロー情報解析装置１０の詳細な構成については後述する。
【００１８】
また、ネットワーク装置５０は、ネットワーク装置４０から受信したトンネルパケット７２を、ネットワーク装置６０に転送する。そして、ネットワーク装置６０は、Ｌ２ＴＰ等でカプセル化されたトンネルパケット７２のカプセル化を解除する。
【００１９】
ユーザ端末２１は、ユーザパケットであるＩＰパケット７３を送信する。そして、ネットワーク装置４０は、ユーザ端末２１から受信したＩＰパケット７３に対して、Ｌ２ＴＰ等のトンネリングプロトコルを用いてパケットにヘッダを付加しカプセル化する。そして、ネットワーク装置４０は、ＩＰパケット７３をカプセル化したパケットであるトンネルパケット７４を、ネットワーク装置５０に送信する。
【００２０】
ネットワーク装置５０は、トンネルパケット７２の場合と同様に、トンネルパケット７４をサンプリングし、ｓＦｌｏｗ、ＩＰＦＩＸ、Ｆｌｅｘｉｂｌｅ  ＮｅｔＦｌｏｗ等のフロー情報８０を作成する。そして、ネットワーク装置５０は、作成したフロー情報８０をフロー情報解析装置１０に送信する。
【００２１】
また、例えば、ネットワーク装置５０は、ネットワーク装置４０から受信したトンネルパケット７４を、ネットワーク装置６０に転送する。そして、ネットワーク装置６０は、Ｌ２ＴＰ等でカプセル化されたトンネルパケット７４のカプセル化を解除する。
【００２２】
なお、ＩＰネットワーク１においては、トンネルパケット以外のパケットが発生していてもよい。また、ネットワーク装置４０とネットワーク装置６０間では、暗号化されていないトンネルを確立するトンネリングプロトコルであって、ユーザパケットにヘッダを付加しカプセル化するトンネリングプロトコルによってトンネルが確立される。このようなトンネリングプロトコルの例として、例えば、ＩＰ−ＩＰ、Ｌ２ＴＰ、ＧＲＥ等がある。
【００２３】
ここで、図２を用いてフロー情報解析装置１０の構成について説明する。図２は、第１の実施形態に係るフロー情報解析装置の構成の一例を示す図である。図２に示すように、フロー情報解析装置１０は、受信部１１、第１の解析部１２、第２の解析部１３、第３の解析部１４、生成部１５、記録部１６、集計部１７及び表示部１８を有する。
【００２４】
受信部１１は、トンネルヘッダが付加されたＩＰパケットの一部であるヘッダサンプルを含んだフロー情報８０を受信する。ここで、図３を用いて、ネットワーク装置４０で用いられるトンネリングプロトコルがＬ２ＴＰである場合の、フロー情報８０の構成について説明する。図３は、第１の実施形態に係るフロー情報について説明するための図である。図３に示すように、フロー情報８０は、Ｅｔｈｅｒヘッダ、ＩＰヘッダ、ＵＤＰヘッダ及びｓＦｌｏｗデータグラムを有する。
【００２５】
図３に示すように、ｓＦｌｏｗデータグラム８０ａには、ｓＦｌｏｗヘッダ、カウンタサンプル、ヘッダサンプル及びフローサンプルが含まれる。カウンタサンプルは、例えば、サンプリングされたパケットのバイト数やパケット数である。また、ヘッダサンプルは、例えば、サンプリングされたパケットの先頭１２８ｂｙｔｅｓである。また、フローサンプルは、例えば、サンプリングされたパケットの生成元ＡＳ情報やＵＲＬといった拡張情報である。
【００２６】
さらに、図３に示すように、ヘッダサンプル８０ｂは、Ｅｔｈｅｒヘッダ、ＩＰヘッダ、ＵＤＰヘッダ、Ｌ２ＴＰヘッダ、ＰＰＰヘッダ及びトンネルパケットのペイロードを有する。ここで、ヘッダサンプル８０ｂがサンプリングされたパケットの先頭１２８ｂｙｔｅｓである場合において、サンプリングされたパケットの長さが１２８ｂｙｔｅｓより大きい場合、ヘッダサンプル８０ｂは、サンプリングされたパケットの一部となる。また、図３に示すように、トンネルパケットのペイロード８０ｃは、内部ユーザパケットのＩＰヘッダ、ＴＣＰヘッダ及びペイロードの一部を有する。
【００２７】
このように、フロー情報８０には、ユーザパケットのヘッダに関する情報が含まれている。このため、フロー情報８０内のユーザパケットのヘッダの位置を特定し、当該ヘッダを抽出することができれば、既存のＩＰパケット解析方法を適用して解析を行うことができる。
【００２８】
（テンプレートを用いた解析）
第１の解析部１２は、テンプレートを用いて、フロー情報８０内のユーザパケット、すなわちＩＰパケットのヘッダの位置を特定する。第１の解析部１２は、フロー情報８０のヘッダサンプル８０ｂが、トンネリングプロトコルに基づくテンプレートのいずれかに合致するか否かを判定し、テンプレートのいずれかに合致すると判定した場合、当該合致したテンプレートに基づいて、ヘッダサンプル８０ｂからＩＰパケットのヘッダに関する情報を抽出する。
【００２９】
まず、第１の解析部１２は、フロー情報８０のカウンタサンプル及びフローサンプルを抽出し、記録部１６に記録する。記録部１６は、例えば、ハードディスク又は半導体メモリ素子等の記憶デバイスである。
【００３０】
第１の解析部１２は、フロー情報８０のヘッダサンプル８０ｂに対して、あらかじめ用意されたトンネリングプロトコルのテンプレートが適用できるか否かを確認する。ここで、図４に、トンネリングプロトコルが、ＩＰ−ＩＰである場合のテンプレートの一例を示す。図４は、第１の実施形態に係るテンプレートの一例を示す図である。
【００３１】
図４のテンプレートは、トンネルパケットの先頭１２８ｂｙｔｅｓにおける、各フィールドの位置を、横６４ｂｉｔｓ（８ｂｙｔｅｓ）×縦１６行の表で表したものである。例えば、図４より、トンネルパケットの先頭６ｂｙｔｅｓ（１行目の目盛り０〜４７）の領域には、フィールド「宛先ＭＡＣアドレス」の値が設定される。また、例えば、図４より、トンネルパケットの６７ｂｙｔｅｓ目から７０ｂｙｔｅｓ目までの４ｂｙｔｅｓの領域（９行目の目盛り１６〜４７）には、フィールド「送信元ＩＰｖ４アドレス」の値が設定される。
【００３２】
また、トンネリングプロトコルがＩＰ−ＩＰである場合、ユーザパケットはＩＰｖ４パケットである。このとき、図４に示すように、テンプレートには、Ｅｔｈｅｒヘッダ１０１、ＩＰｖ６ヘッダ１０２、ＩＰｖ４ヘッダ１０３、ＴＣＰヘッダ１０４及びペイロード１０５が含まれる。第１の解析部１２は、例えばＩＰｖ４ヘッダ１０３の位置を特定する。
【００３３】
また、テンプレートの特定のフィールドには、値が設定されている。例えば、図４に示すように、テンプレートのＥｔｈｅｒヘッダ１０１のＴｙｐｅ（１３ｂｙｔｅｓ目〜１４ｂｙｔｅｓ目、２行目の目盛り３２〜４７）には、ＩＰｖ６であることを示す値「０ｘ８６ｄｄ」が設定されている。また、テンプレートのＩＰｖ６ヘッダ１０２のＮｅｘｔ  ｈｅａｄｅｒ（２１ｂｙｔｅｓ目、３行目の目盛り３２〜３９）には、ＩＰ−ＩＰであることを示す値「０ｘ０４」が設定されている。また、テンプレートのＩＰｖ４ヘッダ１０３のＶｅｒｓｉｏｎ（５５ｂｙｔｅｓ目の前半部、７行目の目盛り４８〜５１）には、ＩＰｖ４であることを示す値「０１００」が設定されている。なお、以降の説明において特に説明がない場合、「０ｘ」を付していない値は２進数を表すこととする。
【００３４】
このとき、第１の解析部１２は、ヘッダサンプルの１３ｂｙｔｅｓ目〜１４ｂｙｔｅｓ目が「０ｘ８６ｄｄ」、かつ、２１ｂｙｔｅｓ目が「０ｘ０４」、かつ、５５ｂｙｔｅｓ目の前半部が「０１００」である場合、当該ヘッダサンプルがテンプレートに合致すると判定する。
【００３５】
ヘッダサンプルがテンプレートに合致した場合、テンプレートを用いて当該ヘッダサンプルの各フィールドの位置を特定し、ＩＰｖ６ヘッダの送受信ＩＰｖ６アドレス等のトンネルヘッダに関する情報や、ＩＰｖ４パケットの送受信ＩＰｖ４アドレス、プロトコル、ＴＣＰ又はＵＤＰポート番号等の内部ユーザパケットのヘッダに関する情報を抽出して記録部１６に送信する。
【００３６】
また、第１の解析部１２は、ヘッダサンプルが図４のテンプレートに合致しなかった場合、ＩＰ−ＩＰ以外のトンネリングプロトコル、例えばＬ２ＴＰ、ＧＲＥ、ＰＰＰｏＥ等に対応したテンプレートについても同様の判定を行う。また、ヘッダサンプルが、あらかじめ用意されたテンプレートのいずれにも合致しなかった場合、第１の解析部１２は、当該ヘッダサンプルを第２の解析部１３に送信する。
【００３７】
（可変長オプションに対応した解析）
第２の解析部１３は、第１の解析部１２によって送信されたヘッダサンプルの解析を行う。ここで、第１の解析部１２において、いずれのテンプレートとも合致しなかったヘッダサンプルには、トンネルヘッダにＯｐｔｉｏｎ（可変長オプション）が追加されていることが考えられる。第２の解析部１３は、トンネルヘッダにＯｐｔｉｏｎが追加されていることを想定した解析を行う。
【００３８】
トンネルパケットのトンネルヘッダにＯｐｔｉｏｎが追加されている場合、ヘッダ内のＨｅａｄｅｒ  ｌｅｎｇｔｈが省略されること等により、Ｏｐｔｉｏｎが追加されていない場合とはトンネルヘッダ長が異なる場合があり、さらに、トンネルヘッダ長が明示されていない場合等がある。
【００３９】
第２の解析部１３は、第１の解析部１２によって、フロー情報のヘッダサンプルがテンプレートのいずれにも合致しないと判定された場合、トンネルヘッダの特定のフィールドに設定される値と、ＩＰパケットの特定のフィールドに設定される値と、を組み合わせた検索データに合致するバイト列をヘッダサンプルから検索し、当該検索の結果に基づいて、ヘッダサンプルからＩＰパケットのヘッダに関する情報を抽出する。
【００４０】
ここで、トンネリングプロトコルがＬ２ＴＰである場合、図３に示すように、トンネルパケットは、Ｅｔｈｅｒヘッダ、ＩＰヘッダ、ＵＤＰヘッダ、Ｌ２ＴＰヘッダ、ＰＰＰヘッダ、及びペイロードから構成される。そして、ペイロードには、ユーザ通信パケット、すなわちＩＰパケットのヘッダに関する情報が含まれている。このとき、トンネルヘッダ長が可変長でトンネルヘッダ長が示されていない場合であっても、ＩＰパケットの先頭位置さえ特定できれば、ペイロードからＩＰパケットを抽出することができる。
【００４１】
そこで、第２の解析部１３は、ＰＰＰヘッダ内のＰｒｏｔｏｃｏｌフィールドに設定される値と、ＩＰパケットのＶｅｒｓｉｏｎフィールドに設定される値とを組み合わせて検索データを作成し、当該検索データに合致するバイト列をヘッダサンプルから検索する。
【００４２】
ここで、ＰＰＰヘッダ内のＰｒｏｔｏｃｏｌフィールドには、内部ユーザパケットがＩＰｖ４である場合は「０ｘ００２１」が設定され、ＩＰｖ６である場合は「０ｘ００５７」が設定される。また、ＩＰヘッダ内のＶｅｒｓｉｏｎフィールドには、ＩＰｖ４である場合は「０１００」、ＩＰｖ６である場合は「０１１０」が設定される。
【００４３】
トンネルヘッダの末尾のフィールド、すなわちＰＰＰヘッダのＰｒｏｔｏｃｏｌフィールドと、ＩＰパケットの先頭のフィールド、すなわちＩＰヘッダのＶｅｒｓｉｏｎフィールドが連続する場合、ヘッダサンプルには、内部ユーザパケットがＩＰｖ４である場合は「００  ２１  ４ｘ」（１６進数表記、ｘは０〜９の整数又はａ〜ｆの値）、ＩＰｖ６である場合は「００  ５７  ６ｘ」（１６進数表記、ｘは０〜９の整数又はａ〜ｆの値）というバイト列が現れることが考えられる。
【００４４】
このため、第２の解析部１３は、「００  ２１  ４ｘ」又は「００  ５７  ６ｘ」を検索データとしてヘッダサンプルを検索する。そして、第２の解析部１３は、検索データに合致するバイト列が見つかった場合、「４ｘ」以降をＩＰｖ４パケット、「６ｘ」以降をＩＰｖ６パケットとして、内部ユーザパケットのヘッダに関する情報を抽出し、記録部１６に送信する。
【００４５】
トンネリングプロトコルがＰＰＰｏＥである場合も同様に、第２の解析部１３は、ＰＰＰヘッダ内のＰｒｏｔｏｃｏｌフィールドの値と、それに続くＩＰヘッダ内のＶｅｒｓｉｏｎフィールドの値とを組み合わせて作成した検索データでヘッダサンプルを検索し、内部ユーザパケットのヘッダに関する情報を抽出する。
【００４６】
トンネリングプロトコルがＧＲＥである場合、第２の解析部１３は、内部ユーザパケットを解析するためにＧＲＥヘッダ内のＰｒｏｔｏｃｏｌ  ｔｙｐｅフィールドの値と、それに続くＩＰヘッダ内のＶｅｒｓｉｏｎフィールドの値とを組み合わせて作成した検索データでヘッダサンプルを検索し、内部ユーザパケットのヘッダに関する情報を抽出する。
【００４７】
ここで、ＧＲＥヘッダ内のＰｒｏｔｏｃｏｌ  ｔｙｐｅフィールドには、内部ユーザパケットがＩＰｖ４である場合は「０ｘ０８００」が設定され、ＩＰｖ６である場合は「０ｘ８６ｄｄ」が設定される。また、ＩＰヘッダ内のＶｅｒｓｉｏｎフィールドには、ＩＰｖ４である場合は「０１００」、ＩＰｖ６である場合は「０１１０」が設定される。
【００４８】
トンネルヘッダの末尾のフィールド、すなわちＧＲＥヘッダのＰｒｏｔｏｃｏｌ  ｔｙｐｅフィールドと、ＩＰパケットの先頭のフィールド、すなわちＩＰヘッダのＶｅｒｓｉｏｎフィールドが連続する場合、ヘッダサンプルには、内部ユーザパケットがＩＰｖ４である場合は「０８  ００  ４ｘ」（１６進数表記、ｘは０〜９の整数又はａ〜ｆの値）、ＩＰｖ６である場合は「８６  ｄｄ  ６ｘ」（１６進数表記、ｘは０〜９の整数又はａ〜ｆの値）というバイト列が現れることが考えられる。
【００４９】
このため、第２の解析部１３は、「０８  ００  ４ｘ」又は「８６  ｄｄ  ６ｘ」を検索データとしてヘッダサンプルを検索する。そして、第２の解析部１３は、検索データに合致するバイト列が見つかった場合、「４ｘ」以降をＩＰｖ４パケット、「６ｘ」以降をＩＰｖ６パケットとして、内部ユーザパケットのヘッダに関する情報を抽出し、記録部１６に送信する。
【００５０】
このように、第２の解析部１３は、あらかじめトンネリングプロトコルを想定した上でプロトコル内部ユーザパケットを特定するためのバイト列を用意して検索することにより、内部ユーザパケットを特定し、ヘッダに関する情報を抽出することができる。
【００５１】
さらに、生成部１５は、第２の解析部１３による検索の結果、検索データに合致するバイト列が得られた場合、当該バイト列のヘッダサンプル内の位置に基づいて、テンプレートを生成する。この場合、第２の解析部１３は、フォーマット情報として、例えば、トンネリングプロトコルのフィールド位置や内部ユーザパケット位置情報及びバイト列を新しいテンプレート情報として生成部１５へ送信する。そして、生成部１５は、第２の解析部１３によって送信された情報を基に新しいテンプレートを生成し、第１の解析部１２で利用できるように設定する。そして、第１の解析部１２は、生成部１５によって生成されたテンプレートを用いて判定を行う。これにより、第１の解析部１２は、内部ユーザパケットを含めたトンネルパケットの解析が可能になる。また、第２の解析部１３は、検索データに合致するバイト列が見つからなかったヘッダサンプルを、第３の解析部１４に送信する。
【００５２】
（任意のトンネリングプロトコルに対応した解析）
第３の解析部１４は、第２の解析部１３によって送信されたヘッダサンプルの解析を行う。ここで、第２の解析部１３において、検索データに合致するバイト列が見つからなかったヘッダサンプルのトンネルパケットには、検索データが用意されていないトンネリングプロトコルが使用されていることや、トンネルヘッダが多重に付加されていることが考えられる。
【００５３】
そこで、第３の解析部１４は、第２の解析部１３による検索の結果、検索データに合致するバイト列が得られなかった場合、ＩＰパケットの特定のフィールドに設定される値の組み合わせである検索データに合致するバイト列をヘッダサンプルから検索し、当該検索の結果に基づいて、ヘッダサンプルからＩＰパケットのヘッダに関する情報を抽出する。
【００５４】
例えば、内部ユーザパケットがＩＰｖ４、かつ、ヘッダ長が２０ｂｙｔｅｓである場合、ＩＰｖ４ヘッダのＶｅｒｓｉｏｎフィールドには「０１００」が設定され、Ｖｅｒｓｉｏｎフィールドに続くＨｅａｄｅｒ  ｌｅｎｇｔｈフィールドには「０１０１」が設定される。このため、ＩＰヘッダの先頭１ｂｙｔｅは「０ｘ４５」となる。
【００５５】
また、ＩＰｖ４ヘッダの先頭から６ｂｙｔｅｓ後方には、ＩＰｖ４  ＦｌａｇｓとＦｒａｇｍｅｎｔ  Ｏｆｆｓｅｔフィールドがあり、当該フィールドには、フラグメントされていない場合は「０ｘ００００」、フラグメント禁止の場合は「０ｘ４０００」が設定される。
【００５６】
これらより、第３の解析部１４は、「４５  ｘｘ  ｘｘ  ｘｘ  ｘｘ  ｘｘ  ００  ００」又は「４５  ｘｘ  ｘｘ  ｘｘ  ｘｘ  ｘｘ  ４０  ００」（いずれも１６進数表記、ｘは０〜９の整数又はａ〜ｆの値）を検索データとしてヘッダサンプルを検索する。そして、第３の解析部１４は、検索データに合致するバイト列が見つかった場合、「４５」以降の２０ｂｙｔｅｓをＩＰｖ４ヘッダとして、記録部１６に送信する。
【００５７】
ここで、カプセル化されていないＩＰパケットにおいては、Ｅｔｈｅｒフレーム先頭から１５ｂｙｔｅｓの位置にＩＰヘッダのＶｅｒｓｉｏｎフィールドの値が格納される。このため、第３の解析部１４は、カプセル化されていないＩＰパケットや、トンネルヘッダにＩＰｖ４ヘッダが存在するパケットに対して上記の方法で検索を行った場合、Ｅｔｈｅｒフレームの先頭から１５ｂｙｔｅｓの位置を内部ユーザパケットのＩＰｖ４ヘッダとして抽出することになる。そのため、第３の解析部１４は、Ｅｔｈｅｒフレーム先頭から１６ｂｙｔｅｓ以降を検索対象とし、さらに、複数のバイト列が検索結果として見つかった場合、第３の解析部１４は、当該バイト列のうち最後尾にあるものを内部ユーザパケットの開始位置とすることで、トンネル内のユーザパケットを正確に検索することができる。
【００５８】
さらに、生成部１５は、第２の解析部１３の場合と同様に、第３の解析部１４による検索の結果に基づいてテンプレートを生成し、第１の解析部１２で利用できるように設定する。そして、第１の解析部１２は、生成部１５によって生成されたテンプレートを用いて判定を行う。
【００５９】
なお、パケットの種類によっては、Ｈｅａｄｅｒ  ｌｅｎｇｔｈフィールドの値が「０１１０」、すなわちヘッダ長が２４ｂｙｔｅｓである場合がある（ルーティングプロトコルパケット等）。この場合、第３の解析部１４は、「４６  ｘｘ  ｘｘ  ｘｘ  ｘｘ  ｘｘ  ００  ００」又は「４６  ｘｘ  ｘｘ  ｘｘ  ｘｘ  ｘｘ  ４０  ００」（いずれも１６進数表記、ｘは０〜９の整数又はａ〜ｆの値）を検索データとしてヘッダサンプルを検索する。このとき、第３の解析部１４は、Ｅｔｈｅｒフレーム先頭から１６ｂｙｔｅｓ以降を検索対象としてもよい。そして、第３の解析部１４は、検索データに合致するバイト列が見つかった場合、「４６」以降の２４ｂｙｔｅｓをＩＰｖ４ヘッダとして、記録部１６に送信する。
【００６０】
また、ＩＰｖ６パケットの場合、ＩＰｖ６ヘッダのＶｅｒｓｉｏｎフィールドには「０１１０」が設定され、Ｖｅｒｓｉｏｎフィールドに続く８ｂｉｔの領域はＴｒａｆｆｉｃ  ｃｌａｓｓフィールド、次の２０ｂｉｔはＦｌｏｗ  ｌａｂｅｌフィールドである。ここで、第３の解析部１４は、Ｔｒａｆｆｉｃ  ｃｌａｓｓフィールド及びＦｌｏｗ  ｌａｂｅｌフィールドに設定された値を全て０と仮定して、ヘッダサンプルに対して、検索データを「６０  ００  ００  ００」（１６進数表記）として、Ｅｔｈｅｒフレーム先頭から１６ｂｙｔｅｓ以降に対して検索を行う。
【００６１】
そして、第３の解析部１４は、検索データに合致するバイト列が見つかった場合、「６０」以降をＩＰｖ６ヘッダとして、記録部１６に送信する。第３の解析部１４は、ＩＰｖ４パケットの場合と同様に、複数のバイト列が検索結果として見つかった場合、当該バイト列のうち最後尾にあるものを内部ユーザパケットの開始位置とすることができる。
【００６２】
また、Ｔｒａｆｆｉｃ  ｃｌａｓｓフィールドやＦｌｏｗ  ｌａｂｅｌフィールドに複数の値が設定されている場合、あらかじめパケットを調査して、使用されている値を用いて検索条件を設定してもよい。
【００６３】
また、集計部１７は、記録部１６に記録された情報の集計を行う。集計部１７は、例えば、内部ユーザパケットのヘッダに関する情報を基に、所定の宛先アドレスが設定されたパケットの数を集計してもよい。また、表示部１８は、解析結果を所定の端末等に表示する。表示部１８は、記録部１６に記録された内部パケットのヘッダに関する情報をそのまま表示してもよいし、集計部１７による集計結果を表やグラフを用いて表示してもよい。
【００６４】
［第１の実施形態の処理］
図５を用いて、フロー情報解析装置１０の処理の流れについて説明する。図５は、第１の実施形態に係るフロー情報解析装置の処理の流れを示すフローチャートである。図５に示すように、まず、フロー情報解析装置１０の受信部１１は、ＩＰネットワーク１のネットワーク装置５０から、フロー情報を受信する（ステップＳ１０１）。
【００６５】
次に、第１の解析部１２は、受信したフロー情報に含まれるヘッダサンプルに対し、あらかじめ用意されたテンプレートを適用し（ステップＳ１０２）、ヘッダサンプルがテンプレートに合致するか否かを判定する（ステップＳ１０３）。ここで、ヘッダサンプルがいずれかのテンプレートに合致した場合（ステップＳ１０３、Ｙｅｓ）、第１の解析部１２は、ヘッダサンプルからユーザパケット情報を抽出し、記録部１６に記録する（ステップＳ１０４）。そして、フロー情報解析装置１０は処理を終了する。
【００６６】
ヘッダサンプルがいずれのテンプレートにも合致しなかった場合（ステップＳ１０３、Ｎｏ）、第２の解析部１３は、トンネルヘッダの特定のフィールドに設定される値と、ＩＰパケットの特定のフィールドに設定される値と、を組み合わせた検索データを用いて、可変長オプションに対応した検索を行う（ステップＳ１０５）。例えば、第２の解析部１３は、ＰＰＰヘッダのＰｒｏｔｏｃｏｌフィールドと、ＩＰヘッダのＶｅｒｓｉｏｎフィールドを組み合わせた検索データで検索を行う。
【００６７】
第２の解析部１３による検索でヒットした場合（ステップＳ１０６、Ｙｅｓ）、生成部１５は、ヒットしたバイト列のヘッダサンプル内の位置を基に新たなテンプレートを生成する（ステップＳ１０７）。生成部１５によって生成されたテンプレートは、第１の解析部１２で用いられる。また、第２の解析部１３は、ヘッダサンプルからユーザパケットのヘッダに関する情報を抽出し、記録部１６に記録する（ステップＳ１０４）。そして、フロー情報解析装置１０は処理を終了する。
【００６８】
第２の解析部１３による検索でヒットしなかった場合（ステップＳ１０６、Ｎｏ）、第３の解析部１４は、ＩＰパケットの特定のフィールドに設定される値の組み合わせである検索データを用いて、任意のトンネリングに対応した検索を行う（ステップＳ１０８）。例えば、第３の解析部１４は、ＩＰヘッダのＶｅｒｓｉｏｎフィールド、Ｔｒａｆｆｉｃ  ｃｌａｓｓフィールド、及びＦｌｏｗ  ｌａｂｅｌフィールドを組み合わせた検索データで検索を行う。
【００６９】
第３の解析部１４による検索でヒットした場合（ステップＳ１０９、Ｙｅｓ）、生成部１５は、ヒットしたバイト列のヘッダサンプル内の位置を基に新たなテンプレートを生成する（ステップＳ１０７）。生成部１５によって生成されたテンプレートは、第１の解析部１２で用いられる。また、第３の解析部１４は、ヘッダサンプルからユーザパケットのヘッダに関する情報を抽出し、記録部１６に記録する（ステップＳ１０４）。第３の解析部１４による検索でヒットしなかった場合（ステップＳ１０９、Ｎｏ）、フロー情報解析装置１０は処理を終了する。
【００７０】
［第１の実施形態の効果］
受信部１１は、トンネルヘッダが付加されたＩＰパケットの一部であるヘッダサンプルを含んだフロー情報を受信する。また、第１の解析部１２は、フロー情報のヘッダサンプルが、トンネリングプロトコルに基づくテンプレートのいずれかに合致するか否かを判定し、テンプレートのいずれかに合致すると判定した場合、当該合致したテンプレートに基づいて、ヘッダサンプルからＩＰパケットのヘッダに関する情報を抽出する。
【００７１】
また、第２の解析部１３は、第１の解析部１２によって、フロー情報のヘッダサンプルがテンプレートのいずれにも合致しないと判定された場合、トンネルヘッダの特定のフィールドに設定される値と、ＩＰパケットの特定のフィールドに設定される値と、を組み合わせた検索データに合致するバイト列をヘッダサンプルから検索し、当該検索の結果に基づいて、ヘッダサンプルからＩＰパケットのヘッダに関する情報を抽出する。
【００７２】
これにより、トンネリングプロトコルが用いられている場合であっても、トンネル内のＩＰパケットのヘッダに関する情報を抽出できるようになり、トンネル内のユーザパケットの詳細な情報を解析することができるようになる。
【００７３】
生成部１５は、第２の解析部１３による検索の結果、検索データに合致するバイト列が得られた場合、当該バイト列のヘッダサンプル内の位置に基づいて、テンプレートを生成する。このとき、第１の解析部１２は、生成部１５によって生成されたテンプレートを用いて判定を行ってもよい。
【００７４】
これにより、トンネルヘッダに可変長オプションが付加されていること等により、トンネルパケットがテンプレートに合致しない場合であっても、トンネル内のＩＰパケットのヘッダに関する情報を抽出することができるようになる。
【００７５】
第３の解析部１４は、第２の解析部１３による検索の結果、検索データに合致するバイト列が得られなかった場合、ＩＰパケットの特定のフィールドに設定される値の組み合わせである検索データに合致するバイト列をヘッダサンプルから検索し、当該検索の結果に基づいて、ヘッダサンプルからＩＰパケットのヘッダに関する情報を抽出してもよい。
【００７６】
これにより、検索データが用意されていないトンネリングプロトコルが使用されていることや、トンネルヘッダが多重に付加されている場合であっても、トンネル内のＩＰパケットのヘッダに関する情報を抽出することができるようになる。
【００７７】
また、第２の解析部１３は、トンネルヘッダの末尾のフィールドに設定される値と、ＩＰパケットの先頭のフィールドに設定される値と、を組み合わせた検索データに合致するバイト列をヘッダサンプルから検索してもよい。
【００７８】
これにより、トンネルヘッダとＩＰパケットとの境界部分をより確実に特定することができるため、トンネル内のＩＰパケットのヘッダに関する情報を精度よく抽出することができるようになる。
【００７９】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８０】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８１】
［プログラム］
一実施形態として、フロー情報解析装置１０は、パッケージソフトウェアやオンラインソフトウェアとして上記のフロー情報解析を実行するフロー情報解析プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記のフロー情報解析プログラムを情報処理装置に実行させることにより、情報処理装置をフロー情報解析装置１０として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等のスレート端末等がその範疇に含まれる。
【００８２】
また、フロー情報解析装置１０は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記のフロー情報解析に関するサービスを提供するフロー情報解析サーバ装置として実装することもできる。例えば、フロー情報解析サーバ装置は、ユーザの第１のソースコードへの入力内容を入力とし、第２のソースコードを出力とするフロー情報解析サービスを提供するサーバ装置として実装される。この場合、フロー情報解析サーバ装置は、Ｗｅｂサーバとして実装することとしてもよいし、アウトソーシングによって上記のフロー情報解析に関するサービスを提供するクラウドとして実装することとしてもかまわない。
【００８３】
図６は、プログラムが実行されることによりフロー情報解析装置が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００８４】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００８５】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、フロー情報解析装置１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、フロー情報解析装置１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【００８６】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００８７】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００８８】
１  ＩＰネットワーク
１０  フロー情報解析装置
１１  受信部
１２  第１の解析部
１３  第２の解析部
１４  第３の解析部
１５  生成部
１６  記録部
１７  集計部
１８  表示部
２０、２１  ユーザ端末
３０  宅内ネットワーク装置
４０、５０、６０  ネットワーク装置
３１、４１  トンネル
７０、７３  ＩＰパケット
７１、７２、７４  トンネルパケット
８０  フロー情報
８０ａ  ｓＦｌｏｗデータグラム
８０ｂ  ヘッダサンプル
８０ｃ  ペイロード
１０１  Ｅｔｈｅｒヘッダ
１０２  ＩＰｖ６ヘッダ
１０３  ＩＰｖ４ヘッダ
１０４  ＴＣＰヘッダ
１０５  ペイロード
【図１】
0006571883.tif 000002
【図２】
0006571883.tif 000003
【図３】
0006571883.tif 000004
【図４】
0006571883.tif 000005
【図５】
0006571883.tif 000006
【図６】
0006571883.tif 000007