説明

端末検出方法、および端末検出装置

【課題】適切にP2P端末を検出する端末検出方法、および端末検出装置を提供する。
【解決手段】通信ネットワークに接続する対象情報処理装置がP2P(Peer To Peer)通信を行うP2P端末であることを検出する端末検出方法であって、第1の情報処理装置から対象情報処理装置送信された第1のパケットと、第2の情報処理装置に対象情報処理装置から送信された第2のパケットとを取得し、取得した第1及び第2のパケットが、所望のデータを検索するための要求であるクエリを構成するパケットであり、第1の情報処理装置から第2の情報処理装置に対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定し、この判定結果に基づいて、クエリルーティングの対象となる第1及び第2のパケットの組の件数が、対象情報処理装置がP2P通信を行わないと仮定した場合の、第1及び第2のパケットの組の件数の期待値より所定数以上の場合に、対象情報処理装置がP2P端末であると判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信端末を検出する技術に関し、特に、ネットワーク上のトラヒックの中からP2P(Peer to Peer)通信を行っている通信端末を検出する技術に関する。
【背景技術】
【0002】
インターネット上で行われる通信の一形態として、P2P通信と呼ばれる通信の形態がある。これは不特定多数のコンピュータが相互に接続され、ルータなどを介してファイルなどの情報を送受信するインターネットの利用形態である。
【0003】
一般に、P2P通信を行っている端末はP2P端末と呼ばれるが、P2P通信は、ファイルの共有などの大きな恩恵を利用者にもたらす一方で、著作権を侵害するファイルの流通に利用されたり、P2P通信のトラヒックの増加により通信ネットワークに大きな負荷がかかる等の問題を発生させている。また、P2P通信を行うP2Pソフトウェア(以下、P2Pソフト)を悪用したウイルスによる情報漏洩事故が多発し、社会的な問題となっている。
【0004】
これらの動きを受け、ネットワーク上のP2P端末を検出し、そのトラヒックを制御しようとする試みがなされている。例えば、非特許文献1には、端末が他の端末に対して開いたTCP(Transmission Control Protocol)コネクションの接続数と他の端末から受けたTCPコネクションの接続数の比を求めることによりP2P端末を検出する技術が開示されている。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】“Inherent Behaviors for On-line Detection of Peer-to-Peer File Sharing”, In Proceedings of the 10th IEEE Global Internet Symposium, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、上述したP2P通信は、様々な種類のプロトコルによる通信手順によって実現されている。したがって、ある一部の種類のプロトコルにのみ着目してP2P端末を検出しても、P2P端末のすべてを検出することができるわけではないため、プロトコルに依存しない方法でP2P端末を検出する必要がある。また、今日ではP2P端末上でも様々なネットワークサービスが動作しているため、P2P通信以外のネットワークサービスを誤検出しないことも必要となる。
【0007】
しかしながら、非特許文献1に開示された技術では、端末のTCPコネクションの接続数と非接続数との比率を計算し、この値が一定範囲内である場合、その端末はP2P端末であると判定している。このため、例えば、Webサーバが他の端末にTCP接続でアクセスしようとした場合、他の端末に対してWebサービスを提供するサーバとして機能しているにもかかわらず、誤ってP2P端末であると判定されてしまう可能性があるという問題がある。また、TCP接続の以外のプロトコル(例えば、UDP(User Datagram Protocol))を用いて通信を行う端末を検出できないという問題がある。
【課題を解決するための手段】
【0008】
開示する端末検出方法及び端末検出装置は、次のような構成を有する。通信ネットワークに接続された対象情報処理装置がP2P(Peer To Peer)通信を行うP2P端末であることを検出する検出装置、及びその端末検出方法であって、通信ネットワークに接続する第1の情報処理装置から対象情報処理装置に送信された第1のパケット(対象情報処理装置の受信パケット)と、通信ネットワークに接続する第2の情報処理装置に対象情報処理装置から送信された第2のパケット(対象情報処理装置の送信パケット)とを通信ネットワークから取得し、取得した第1及び第2のパケットが、所望のデータを検索するための要求であるクエリを構成するパケットであり、第1の情報処理装置から第2の情報処理装置に対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定し、この判定結果に基づいて、クエリルーティングの対象となる第1及び第2のパケットの組の件数が、対象情報処理装置がP2P通信を行わないと仮定した場合の、第1及び第2のパケットの組の件数の期待値より所定数以上の場合に、対象情報処理装置がP2P通信を行うP2P端末であると判定する。
【0009】
さらに望ましい他の態様は、検出装置は、取得時刻が所定の時間間隔以内の第1のパケットの集合である内向きチャンクごとに第1のパケットを分類し、取得時刻が所定の時間間隔以内の第2のパケットの集合である外向きチャンクごとに第2のパケットを分類し、内向きチャンクごとに含まれる末尾の第1のパケットの取得時刻と外向きチャンクごとに含まれる先頭の第2のパケットの取得時刻との差が所定の時間以内であるチャンクペアを検出し、クエリルーティングの対象となる第1及び第2のパケットの組の件数を、チャンクペアの件数とする。
【発明の効果】
【0010】
本発明によれば、適切にP2P端末を検出することができる。
【図面の簡単な説明】
【0011】
【図1】本実施形態にかかる端末検出システムの構成を示す図である。
【図2】クエリ、フロー、パケットチャンク、送信ノード、受信ノード、および対象ノードの関係を示す図である。
【図3】パケットとパケットチャンクの関係の例を示す図である。
【図4】検出装置の主要な物理的な構成を示す図である。
【図5】検出装置の機能的な構成、および物理的な各装置との関係を示す図である。
【図6】外向きフローテーブルの例を示す図である。
【図7】外向きチャンクテーブルの例を示す図である。
【図8】内向きフローテーブルの例を示す図である。
【図9】内向きチャンクテーブルの例を示す図である。
【図10】内向きチャンク分布テーブルの例を示す図である。
【図11】外向きチャンク分布テーブルの例を示す図である。
【図12】チャンクペア分布テーブルの例を示す図である。
【図13】パケット取得部における処理のフローチャートである。
【図14】送信パケット保存部における処理のフローチャートである。
【図15】受信パケット保存部における処理のフローチャートである。
【図16】ルーティングスコア算出部の処理のフローチャートである。
【図17】ペアリング部によるクエリルーティング判定処理のフローチャートである。
【図18】チャンク分布算出部の処理のフローチャートである。
【図19】チャンクペア期待値算出部の処理のフローチャートである。
【発明を実施するための形態】
【0012】
本実施形態として開示する端末検出方法及び端末検出装置は、P2P(Peer To Peer)通信を行うP2P端末が、所望のデータを検索するための要求であるクエリを転送するクエリルーティングを実行するという性質を用い、次のような構成を有する。通信ネットワークに接続された対象情報処理装置がP2P端末であることを検出する検出装置、及びその端末検出方法であって、通信ネットワークに接続する第1の情報処理装置から対象情報処理装置に送信された第1のパケット(対象情報処理装置の受信パケット)と、通信ネットワークに接続する第2の情報処理装置に対象情報処理装置から送信された第2のパケット(対象情報処理装置の送信パケット)とを通信ネットワークから取得し、取得した第1及び第2のパケットがクエリを構成するパケットであり、第1の情報処理装置から第2の情報処理装置に対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定し、この判定結果に基づいて、クエリルーティングの対象となる第1及び第2のパケットの組の件数が、対象情報処理装置がP2P通信を行わないと仮定した場合の、第1及び第2のパケットの組の件数の期待値(対象情報処理装置がP2P端末でない場合に、偶然に生起し得る値)より所定数以上の場合に、対象情報処理装置がP2P端末であると判定する。
【0013】
以下に添付図面を参照して、実施形態を詳細に説明する。説明では、情報処理装置、ホスト、端末を同義の用語として用いる。
【0014】
図1は、本実施形態にかかる端末検出システム10の構成を示す図である。図1に示すように、端末検出システム10は、送信ホスト100、送信ホスト110、受信ホスト200、対象ホスト300、及び、検出装置400の情報処理装置(端末)と、通信ネットワーク500とを含んで構成されている。なお、通信ネットワーク500は、WAN(Wide Area Network)やLAN(Local Area Network)等の通信回線網である。
【0015】
なお、対象ホスト300は、P2P通信を実行している端末か否かを検出装置400が検出する対象であり、通信ネットワーク500に接続する端末から選択され、そのIP(Internet Protocol)アドレスで特定される。すなわち、あるIPアドレスで特定できる端末を対象ホスト300とする。
【0016】
送信ホスト100および送信ホスト110は、TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)等の種々のプロトコルに従って、対象ホスト300との間で様々なデータの送受信を行う端末等である。以下の説明では、送信ホスト100および送信ホスト110は、対象ホスト300に対して所望のデータを検索するための要求を行うものとする。このように、送信ホスト100や送信ホスト110が、対象ホスト300に対して行う要求のことをクエリと呼ぶこととする。
【0017】
また、クエリは、検索を行うための複数の検索情報(例えば、検索する対象となる文字列や、その文字列を検索するコマンド、あるいは検索対象となるWebサーバのページ等の情報)を含んで構成される。送信ホスト100や送信ホスト110は、クエリをクエリと同じ、またはクエリよりも小さいデータ(以下、パケットと呼ぶ。)に分割して対象ホスト300に送信する。
【0018】
より具体的には、送信ホスト100や送信ホスト110は、クエリをパケットに分割する際に、送信ホスト100や送信ホスト110の送信IPアドレス、対象ホスト300の受信IPアドレス、送信ポート番号、受信ポート番号、プロトコルの種類等の各種の情報をヘッダ情報(IPヘッダ)としてパケットに付加し、ヘッダ情報が付加されたパケットを対象ホスト300に送信している。以下では、ヘッダ情報に含まれる各種の情報のうち、特に、送信IPアドレス、受信IPアドレス、送信ポート番号、受信ポート番号、及びプロトコルの種類、の5つの情報を5タプルと呼ぶ。5タプルの具体的な内容については、検出装置400を説明する際に合わせて説明する。
【0019】
さらに、5タプルの各情報が同一であるパケットまたはパケットチャンク(後述)の集合を、特に、フローと呼ぶ。また、フローのうち、各パケットを送信または受信した間隔が、あらかじめ定められた所定の時間の間隔(例えば、100ミリ秒)以内であるパケットやその集合を、特に、パケットチャンクと呼ぶ。パケットチャンクは、少なくとも1つ以上のパケットを含んで構成されているが、フローおよびパケットチャンクの具体的な内容については、5タプルと同様に後述する。
【0020】
なお、送信ホスト100および送信ホスト110についての具体的な構成については、その記載を省略するが、クエリを送信できるものであれば、どのような構成でも構わない。また、以下では、クエリを送信する送信ホスト100や送信ホスト110を、単に送信ノードと呼ぶこともある。
【0021】
受信ホスト200は、送信ノードの各ホストと同様に、種々のプロトコルに従って、対象ホスト300との間で様々なデータの送受信を行う端末等である。以下の説明では、受信ホスト200は、送信ノードから要求されたクエリについてのパケットを含む種々のデータを対象ホスト300から受信するものとして説明している。
【0022】
なお、受信ホスト200についての具体的な構成については、送信ノードの各ホストと同様にその記載を省略するが、クエリを受信できるものであれば、どのような構成でも構わない。また、以下では、クエリを受信する受信ホスト200のことを、単に受信ノードと呼ぶこともある。
【0023】
対象ホスト300は、送信ノードや受信ノードの各ホストと同様に、種々のプロトコルに従って、これらの各ホストとの間で様々なデータの送受信を行う端末等である。以下の説明では、対象ホスト300は、送信ノードの各ホストからクエリについてのパケットを受信すると、受信ノードまでのルート(経路)を示す経路情報を受信したパケットに付加し、経路情報を付加したパケットを、送信ノード以外のホストである受信ノードに転送する場合について説明している。
【0024】
なお、以下では、このように、あるクエリについてのパケットを受信した場合に、上述した経路情報をパケットに付加し、ホストに転送することをクエリルーティングと呼ぶこととする。このように、ホストがクエリルーティングを行うことによって、送信ノードの各ホストからのクエリが実行され、送信ノードから要求された各種のデータを検索することができる。また、以下では、対象ホスト300のことを、対象ノードと呼ぶこともある。
【0025】
図2および図3は、上述したクエリ、フロー、パケットチャンク、送信ノード、受信ノード、および対象ノードの関係を示す図である。図2は、送信ホスト100が、1つのクエリ(クエリA)としてパケットチャンクPaとPcとを対象ホスト300に送信し、送信ホスト110が、1つのクエリ(クエリB)としてパケットチャンクPbとPdとを対象ホスト300に送信した場合の例を示している。
【0026】
なお、図2に示した例では、クエリAとして送信したパケットチャンクPc、およびクエリBとして送信したパケットチャンクPdは、対象ホスト300が、既に各パケットチャンクに含まれるパケットに経路情報を付加して受信ホスト200に送信した状態であり、パケットチャンクPaが含まれるフローをフロー1、パケットチャンクPcおよびパケットチャンクPdが含まれるフローをフロー2、パケットチャンクPbが含まれるフローをフロー3としてあらわしている。
【0027】
図2に示すように、対象ホスト300は、送信ホスト100からパケットチャンクPaとパケットチャンクPcとを受信すると、順次、受信したパケットチャンクに含まれるパケットに経路情報を付加して受信ホスト200に転送する。これと同様に、対象ホスト300は、送信ホスト110からパケットチャンクPbとパケットチャンクPdとを受信すると、順次、受信したパケットチャンクに含まれるパケットに経路情報を付加して受信ホスト200に転送する。
【0028】
上述したように、パケットチャンクPaとパケットチャンクPbについては、送信ホスト100と対象ホスト300との間で通信されている状態である。したがって、パケットチャンクPaの5タプルの各情報には、送信IPアドレスとして送信ホスト100のIPアドレス、受信IPアドレスとして対象ホスト300のIPアドレス、送信ポート番号として送信ホスト100の送信ポート番号、受信ポート番号として対象ホスト300の受信ポート番号、プロトコルの種類として、例えばTCPが記されている。
【0029】
また、パケットチャンクPbについては、送信IPアドレスとして送信ホスト110のIPアドレス、受信IPアドレスとして対象ホスト300のIPアドレス、送信ポート番号として送信ホスト110の送信ポート番号、受信ポート番号として対象ホスト300の受信ポート番号、プロトコルの種類として、例えばTCPが、パケットチャンクPaと同様に記されている。
【0030】
一方、パケットチャンクPcとパケットチャンクPdについては、上述したように、すでに対象ホスト300が受信し、対象ホスト300と受信ホスト200との間で通信された状態である。したがって、パケットチャンクPcの5タプルの各情報には、送信IPアドレスとして対象ホスト300のIPアドレス、受信IPアドレスとして受信ホスト200のIPアドレス、送信ポート番号として対象ホスト300の送信ポート番号、受信ポート番号として受信ホスト200の受信ポート番号、プロトコルの種類として、例えばTCPが記されている。パケットチャンクPbについても、パケットチャンクPaと同様の5タプルの各情報が記されている。
【0031】
このように、送信ノードからクエリとしてパケットが送信され、送信されたパケットがクエリルーティングされると、そのパケットチャンクの5タプルの各情報は、対象端末300によって転送される前と後とでは異なっている。このため、後述する検出端末400では、パケットチャンクの5タプルの各情報が同一であるか否か、さらには転送されるパケットチャンクの時間の間隔に着目することによって、対象端末300がP2P通信を行っているか否かを判定している。すなわち、クエリルーティングした可能性のあるクエリに含まれるパケットチャンクの組(ペア)について、上述した判定を行うことによって、P2P通信を行っている端末を特定している。なお、判定の具体的な内容については後述する。
【0032】
図3は、パケットとパケットチャンクの関係の例を示す図である。図3では、図2に示したフロー2に含まれるパケットチャンクPcおよびパケットチャンクPdを例に、横軸を時間(t)として、パケットチャンクPcにはパケット1およびパケット2が含まれ、パケットチャンクPdにはパケット3およびパケット4が含まれる場合を示している。図面を見易くするために、パケットの送信時間tpをパケット間(パケットの末尾と後続するパケットの先頭)の時間(≦Δl)やパケットチャンク間(パケットチャンクの末尾と後続するパケットチャンクの先頭)の時間(>Δl)より長く示しているが、実際はtp<<Δlであり、時間Δlの観測に際しては、tp≒0として扱える。すなわちパケット間の間隔は、パケットの先頭と後続するパケットの先頭との間隔と見なしてもよい。
【0033】
図3に示すように、パケットチャンクPcに含まれるパケット1およびパケット2は、所定の時間の間隔(Δl)以下で送信されているため、1つのパケットチャンク(パケットチャンクPc)であると判定する。これと同様に、パケットチャンクPdについても、パケット3およびパケット4が所定の時間の間隔(Δl)以下で送信されているため、1つのパケットチャンク(パケットチャンク2)であると判定する。一方、パケットチャンクPcに含まれるパケット2とパケットチャンクPdに含まれるパケット3との時間の間隔は、所定の時間の間隔(Δl)よりも長いため、パケット2とパケット3とは1つのパケットチャンクではないと判定される。
【0034】
なお、以下の説明では、対象ホスト300におけるパケットの送受信に着目し、対象ホスト300が送信ノードからパケットを受信する場合のクエリ、フロー、パケットチャンク、パケットのことを、それぞれ受信クエリ、受信フロー、受信パケットチャンク、受信パケット等と呼ぶ場合もある。また、これと同様に、対象ホスト300が受信ノードに対してパケットを送信する場合のクエリ、フロー、パケットチャンク、パケットのことを、それぞれ送信クエリ、送信フロー、送信パケットチャンク、送信パケット等と呼ぶ場合もある。
【0035】
図1に戻り、検出装置400について説明する。検出装置400は、送信ホスト100や送信ホスト110、受信ホスト200、対象ホスト300の各ホストとの間で送受信されるデータのトラヒックを監視する端末等である。ここで、トラヒックとは、上述したクエリ、フロー、パケットチャンク、パケットの各情報をいうものとする。
【0036】
図4は、検出装置400の主要な物理的な構成を示す図である。図4に示すように、検出装置400は、物理的には、入出力装置405と本体装置410とを含んで構成されている。入出力装置405は、ディスプレイ等の表示装置とキーボード等の入力装置を含んで構成され、検出装置400の利用者からの指示(例えば、検出装置400の起動指示)の入力を受け付けたり、あるいは後述する本体装置410のCPU(Central Processing Unit)450が処理を行った結果等を表示する。
【0037】
なお、入出力装置405の入力装置と出力装置とは、実際には別個の場合もあるが、これらの各装置が行う処理は主要な部分ではないため、これらをまとめて入出力装置405として示している。また、以下の説明では、CPU450が処理を行った結果等を入出力装置405に表示する前提で説明しているが、例えば、送信ノードの各ホストや受信ノード等、通信ネットワーク500によって接続された他の装置等に表示させることとしてもよい。
【0038】
本体装置410は、インタフェース420と記憶装置430とメモリ440とCPU450とバス460とを含んで構成されている。
【0039】
インタフェース420は、NIC(Network Interface Card)等から構成され、通信ネットワーク500と検出装置400との間の通信を媒介する。
【0040】
記憶装置430は、HDD(Hard Disk Drive)等から構成され、外向きフローDB(Data Base)431と内向きフローDB432と外向きパケットチャンク分布DB433と内向きパケットチャンク分布DB434とチャンクペアDB4354とを記憶する。これらのDBの具体的な内容については後述する。
【0041】
メモリ440は、RAM(Random Access Memory)およびROM(Read Only Memory)等の記憶媒体から構成されている。ROMには、対象ホスト300を検出するP2P端末検出プログラム441があらかじめ記憶されている。そして、このプログラム441がCPU450によって実行されることによって、対象ホスト300におけるトラヒックを検出している。CPU450が実行する具体的な機能については後述する。なお、以下では、P2P端末検出プログラム441は、あらかじめROMに記憶されている前提で説明するが、例えば、通信ネットワーク500を介して、他のホスト等から必要に応じてRAMにインストールしてもよい。
【0042】
CPU450は、プロセッサ等の演算装置から構成され、P2P端末検出プログラム441の実行や、検出装置400に含まれる各装置の動作を制御する。なお、CPU450は、時刻を計時するクロックを内部に備えている。
【0043】
バス460は、検出装置400に含まれる各装置を接続し、これらの装置間における種々のデータの受け渡しを行う。
【0044】
図5は、図4に示した検出装置400の機能的な構成、および物理的な各装置との関係を示す図である。図5に示すように、CPU450は、パケット取得部451と送信パケット保存部452と受信パケット保存部453とルーティングスコア算出部454とペアリング部455とチャンク分布算出部456とチャンクペア期待値算出部457とを含んで構成されている。これらの各部の機能は、CPU450によるP2P端末検出プログラム441の実行によって具現化される。
【0045】
パケット取得部451は、対象ホスト300を含む通信ネットワーク500におけるトラヒックを監視するものである。具体的には、パケット取得部451は、インタフェース420を介して通信ネットワーク500に接続し、対象ホスト300が対象ホスト300以外の他のホストに送信しているパケット、または対象ホスト300以外の他のホストから受信しているパケットを取得し、取得したパケットを、送信パケット保存部452または受信パケット保存部453に出力する。
【0046】
より具体的には、パケット取得部451は、通信ネットワーク500からパケットを取得すると、取得したパケットのヘッダ情報に記載された送信IPアドレスおよび受信IPアドレスを読み取る。そして、パケット取得部451は、読み取った送信IPアドレスおよび受信IPアドレスに、対象ホスト300のIPアドレスが含まれているか否かを判定し、含まれているならば、取得したパケットは対象ホスト300が送受信するものと判定する。
【0047】
そして、パケット取得部451は、読み取った送信IPアドレスおよび受信IPアドレスに、対象ホスト300のIPアドレスが含まれている場合、さらにそのIPアドレスが送信IPアドレスまたは受信IPアドレスのいずれに含まれているか否かを判定する。
【0048】
パケット取得部451は、対象ホスト300のIPアドレスが送信IPアドレスに含まれている場合、取得したパケットは、対象ホスト300が対象ホスト300以外の他のホストに送信するパケット、すなわち送信フローに含まれるパケット(送信パケット)であると判定し、取得した送信パケットを送信パケット保存部452に出力する。
【0049】
これと同様に、パケット取得部451は、対象ホスト300のIPアドレスが受信IPアドレスに含まれている場合、取得したパケットは、対象ホスト300が対象ホスト300以外の他のホストから受信したパケットであると判定する。すなわち、パケット取得部451は、取得したパケットは受信フローに含まれるパケット(受信パケット)であると判定し、取得した受信パケットを受信パケット保存部453に出力する。
【0050】
送信パケット保存部452は、パケット取得部451から出力された送信パケットを受け取ると、その送信パケットをフロー形式のデータ(以下、外向きフローレコードと呼ぶ。)とパケットチャンク形式のデータ(以下、外向きチャンクレコードと呼ぶ。)に変換し、変換した各データを外向きフローDB431に記憶する。すなわち、送信パケット保存部452は、送信パケットをフローレコードまたはチャンクレコード単位に分類する。
【0051】
図6は、外向きフローレコードが外向きフローDB431に記憶された例を示す図である。なお、図6に示すように外向きフローDB431に記憶された外向きフローレコードの全体を外向きフローテーブル600と呼ぶ。
【0052】
送信パケット保存部452は、まず、パケット取得部451から送信パケットを受け取ると、受け取ったパケットがフローの中で最初に取得した送信パケットであるか否かを判定する。そして、送信パケット保存部452は、受け取った送信パケットがフローの中で最初に取得した送信パケットである場合、外向きフローテーブル600に新たに外向きフローレコードを生成する。
【0053】
そして、送信パケット保存部452は、外向きフローレコードを一意に特定するためのID(Identification。以下、外向きフローIDと呼ぶ。)601を付与するとともに、取得したパケットのサイズ情報602、一つのフローの中の最初のパケットを取得した時刻である開始時刻603、最後のパケット(あるフローに3パケット含まれる場合、2番目のパケットを取得した時点では、その2番目のパケットが最後のパケットである。)を取得した時刻である終了時刻604、5タプル605の値、ルーティングスコア606の6つの値を含む外向きフローレコードを新たに生成する。
【0054】
例えば、外向きフローID601には0、1、2等の数値、サイズ情報602には、送信パケットのヘッダ情報を除いたパケットペイロードのサイズを示す値、開始時刻603および終了時刻604にはパケット取得部451から送信パケットを受け取った時刻、5タプル605の値には取得した送信パケットのヘッダ情報に含まれているそれぞれの値が外向きフローレコードに記憶される。なお、ルーティングスコア606とは、外向きフローに含まれるパケットチャンクのうち、クエリの転送に用いられたと考えられるものの数であり、後述するルーティングスコア算出部454は、このルーティングスコアが高いほど、クエリルーティングされたと判定する。また、ルーティングスコアには、後述するルーティングスコア算出部454によって初期値としてゼロが記憶されるが、ルーティングスコアについての具体的な内容については後述する。
【0055】
なお、パケット取得部451が取得した送信パケットがフローの中で最初に取得した送信パケットであるか否かの判定は、取得した送信パケットと、過去に取得した送信パケットの5タプルの値が同じである外向きフローレコードが、外向きフローテーブルに記憶されているか否かによって判定する。記憶されていないとき、最初に取得したとする。
【0056】
一方、送信パケット保存部452は、受け取った送信パケットがフローの中で最初に取得した送信パケットではない場合、取得した送信パケットの5タプルの値と、すでに外向きフローテーブル600に記憶されている外向きフローレコードの5タプル605の値とが同じ外向きフローレコードを特定する。そして、送信パケット保存部452は、特定した外向きフローレコードのサイズ情報602に、取得した送信パケットのパケットペイロードの値を追加し、さらに、終了時刻604にパケット取得部451から送信パケットを受け取った時刻を上書きする。
【0057】
図6に示す例では、外向きフローID601が「0」〜「2」までの外向きフローレコードが外向きフローテーブル600に記憶されている場合の例を示している。外向きフローID601が「0」であるフローレコードは、サイズ情報602が「3.0KB」、開始時刻603が「08/12/08 12:00:00.000」、終了時刻604が「08/12/08 12:00:00.300」、5タプル605の値が「10.0.0.1:200 10.0.0.2:80 TCP」、ルーティングスコア606が「1」であることを示している。
【0058】
これと同様に、外向きフローID601が「1」であるフローレコードは、サイズ情報602が「0.6KB」、開始時刻603が「08/12/08 12:00:10.000」、終了時刻604が「08/12/08 12:00:10.400」、5タプル605の値が「10.0.0.1:400 10.0.0.3:162 UDP」、ルーティングスコア606が「2」であり、フローID601が「2」であるフローレコードは、サイズ情報602が「1.0KB」、開始時刻603が「08/12/08 13:00:00.000」、終了時刻604が「08/12/08 13:00:00.000」、5タプル605の値が「10.0.0.1:500 10.0.0.4:137 TCP」、ルーティングスコア606が「1」となっていることを示している。このように、外向きフローレコードが、順次、外向きフローテーブル600に記憶されるが、記憶されたこれらの外向きフローレコードの5タプル605の値のうち、送信IPアドレスについては、同じ送信IPアドレス(10.0.0.1)、すなわち対象ホスト300のIPアドレスが記憶される。
【0059】
なお、上述した例では、外向きフローID600が「3」の外向きフローレコードの開始時刻603と終了時刻604が同じ時刻となっているが、送信パケット保存部452が受け取った送信パケットが、フローの中で最初に取得した送信パケットであるためである。
【0060】
図7は、上述した外向きチャンクレコードが外向きフローDB431に記憶された例を示す図である。なお、図7に示すように外向きフローDB431に記憶された外向きチャンクレコードの全体を外向きチャンクテーブル700と呼ぶ。
【0061】
送信パケット保存部452は、受け取った送信パケットの5タプルの値と、過去に取得した送信パケットの5タプルの値が同じである外向きチャンクレコードが外向きチャンクテーブル700に存在し、かつ取得した送信パケットの時刻と外向きチャンクテーブル600の末尾パケット検出時刻704との間の間隔が、あらかじめ定められた所定の時間の間隔(例えば、100ミリ秒)以内であるか否かを判定する。
【0062】
そして、送信パケット保存部452は、過去に取得した送信パケットの5タプルの値が同じである外向きチャンクレコードが外向きチャンクテーブル700に存在しない、または取得した送信パケットの時刻と外向きチャンクテーブル700の末尾パケット検出時刻704との間の間隔が、所定の時間の間隔よりも大きいと判定した場合、外向きチャンクテーブル700に新たに外向きチャンクレコードを生成する。末尾パケット検出時刻704の末尾パケットとは、5タプルの値が同じである送信パケットの中で、取得した送信パケットの直前に取得した送信パケットである。したがって、末尾パケット検出時刻704は、その直前に取得した送信パケットの取得時刻である
そして、送信パケット保存部452は、外向きフローレコードの場合と同様に、外向きチャンクレコードを一意に特定するためのID(以下、外向きチャンクIDと呼ぶ。)701を付与するとともに、取得した送信パケットのサイズ情報702、送信パケットを最初に取得した時刻である先頭パケット検出時刻703、送信パケットを最後に取得した時刻である末尾パケット検出時刻704、5タプル705の値、5タプルの値が同じであると判定した外向きチャンクレコードのチャンクID701の6つの値を含むチャンクレコードを新たに生成する。
【0063】
一方、送信パケット保存部452は、受け取った送信パケットの5タプルの値と、過去に取得した送信パケットの5タプルの値が同じである外向きチャンクレコードが外向きチャンクテーブル700に存在し、かつ取得した送信パケットの時刻と外向きチャンクテーブルの末尾パケット検出時刻704との間の間隔が、所定の時間の間隔以内であると判定した場合、パケット取得部451から送信パケットを受け取った時刻を、末尾パケット検出時刻704に上書きするとともに、サイズ情報702に、受け取った送信パケットのパケットペイロードの値を追加する。
【0064】
図7では、外向きチャンクIDが「0」〜「7」までの外向きチャンクレコードが外向きチャンクテーブル701に記憶されている例を示している。ID701が「0」である外向きチャンクレコードは、サイズ情報702が「1.0KB」、先頭パケット検出時刻703が「08/12/08 12:00:00.000」、末尾パケット検出時刻704が「08/12/08 12:00:00.050」、5タプル705の値が「10.0.0.1:200 10.0.0.2:80 TCP」、外向きフローID706が「0」となっている。このように、図7に示す外向きチャンクID701が「0」の外向きチャンクレコードは、図6に示した外向きフローID601が「0」の外向きフローレコードに対応付けて記憶される。
【0065】
これと同様に、外向きチャンクID701が「1」である外向きチャンクレコードは、サイズ情報702が「0.5KB」、先頭パケット検出時刻703が「08/12/08 12:00:10.200」、末尾パケット検出時刻704が「08/12/08 12:00:10.200」、5タプル705の値および外向きフローID706が、外向きチャンクID701が「0」の外向きチャンクレコードと同じであり、外向きチャンクID701が「2」である外向きチャンクレコードは、サイズ情報702が「1.0KB」、先頭パケット検出時刻703が「08/12/08 12:00:10.350」、末尾パケット検出時刻704が「08/12/08 12:00:10.400」、5タプル705の値および外向きフローID706が、外向きチャンクID701が「0」の外向きチャンクレコードと同じであることを示している。
【0066】
さらに、外向きチャンクID701が「3」である外向きチャンクレコードは、サイズ情報702が「0.5KB」、先頭パケット検出時刻703が「08/12/08 12:00:10.600」、末尾パケット検出時刻704が「08/12/08 12:00:10.600」、5タプル705の値および外向きフローID706が、外向きチャンクID701が「0」の外向きチャンクレコードと同じであることを示している。このように、外向きチャンクレコードが、順次外向きチャンクテーブル700に記憶されるが、記憶されたこれらの外向きフローレコードの5タプル705の値のうち、送信IPアドレスについては、外向きフローレコードと同様に、同じ送信IPアドレス(10.0.0.1)、すなわち対象ホスト300のIPアドレスが記憶される。
【0067】
すなわち、図6に示した外向きフローID601が「0」の外向きフローレコードは、図7に示した外向きチャンクID701が「0」〜「2」の3つの外向きチャンクレコードから構成されていることを示している。これと同様に、例えば、図6に示した外向きフローID601が「1」である外向きフローレコードは、図7に示す外向きチャンクID701が「4」〜「6」の3つの外向きチャンクレコードから構成されていることを示している。このように、1つの外向きフローレコードは、少なくとも1つの外向きチャンクレコードから構成され、互いに対応付けて記憶されている。
【0068】
図5の受信パケット保存部453は、送信パケット保存部452と同様に、パケット取得部451から出力された受信パケットを受け取ると、その受信パケットをフロー形式のデータ(以下、内向きフローレコードと呼ぶ。)とパケットチャンク形式のデータ(以下、内向きチャンクレコードと呼ぶ。)に変換し、変換した各データを内向きフローDB432に記憶する。すなわち、受信パケット保存部453は、送信パケット保存部452と同様に、受信パケットをフローレコードまたはチャンクレコード単位に分類する。
【0069】
受信パケット保存部453は、まず、パケット取得部451からパケットを受け取ると、受け取った受信パケットがフローの中で最初に取得した受信パケットであるか否かを判定する。そして、送信パケット保存部452は、受け取った受信パケットがフローの中で最初に取得した受信パケットであると判定した場合、内向きフローDB432の内向きフローテーブル800(図8)に新たに内向きフローレコードを生成する。
【0070】
そして、受信パケット保存部453は、内向きフローレコードを一意に特定するための内向きフローID801を付与するとともに、外向きフローレコードの場合と同様に、取得した受信パケットのサイズ情報802、受信パケットを最初に取得した時刻である開始時刻803、受信パケットを最後に取得した時刻である終了時刻804、5タプル805の値、ルーティングスコア806の6つの値を含む内向きフローレコードを新たに生成する。内向きフローレコードがどのように生成されるかについては、外向きフローレコードの場合と同様であるため、ここではその説明を省略する。
【0071】
図8は、内向きフローID801が「0」〜「3」までの内向きフローレコードが内向きフローテーブル800に記憶されている例を示している。内向きフローID801が「0」である内向きフローレコードは、サイズ情報802が「1.0KB」、開始時刻803が「08/12/08 11:59:59.900」、終了時刻804が「08/12/08 11:59:59.950」、5タプル805の値が「10.0.0.5:200 10.0.0.1:80 TCP」、ルーティングスコア806が「0」であることを示している。
【0072】
これと同様に、内向きフローID801が「1」である内向きフローレコードは、サイズ情報802が「0.5KB」、開始時刻803が「08/12/08 11:59:59.895」、終了時刻804が「08/12/08 12:00:09.895」、5タプル805の値が「10.0.0.6:300 10.0.0.1:162 UDP」、ルーティングスコア806が「0」であり、内向きフローID801が「2」である内向きフローレコードは、サイズ情報802が「0.6KB」、開始時刻803が「08/12/08 12:00:09.900」、終了時刻804が「08/12/08 12:00:09.950」、5タプル805の値が「10.0.0.7:400 10.0.0.1:139 TCP」、ルーティングスコア806が「0」であり、内向きフローID801が「3」である内向きフローレコードは、サイズ情報802が「1.0KB」、開始時刻803が「08/12/08 12:59:59.950」、終了時刻804が「08/12/08 12:59:59.950」、5タプル805の値が「10.0.0.8:200 10.0.0.1:137 TCP」、ルーティングスコア806が「0」であることを示している。続いて、内向きチャンクレコードについて説明する。
【0073】
図9は、内向きチャンクレコードが内向きフローDB432に記憶された例を示す図である。なお、図9に示すように内向きフローDB432に記憶された内向きチャンクレコードの全体のことを、外向きチャンクテーブル700の場合と同様に、内向きチャンクテーブル900と呼ぶこととする。なお、内向きチャンクレコードがどのように生成されるかについては、外向きチャンクレコードの場合と同様であるため、ここではその説明を省略する。
【0074】
図9に示す例では、内向きチャンクID901が「0」〜「3」までの内向きチャンクレコードが内向きチャンクテーブル900に記憶されている例を示している。これらの内向きチャンクレコードは、図8に示した内向きフローレコードと同様の内容となっているが、各フローレコードには、1つのチャンクレコードのみが含まれている状態であるためである。このように、内向きチャンクレコードが、順次内向きチャンクテーブル900に記憶されるが、記憶されたこれらの内向きフローレコードの5タプル905の値のうち、受信IPアドレスについては、内向きフローレコードと同様に、同じ受信IPアドレス(10.0.0.1)、すなわち対象ホスト300のIPアドレスが記憶される。
【0075】
すなわち、図8に示した内向きフローID801が「0」の内向きフローレコードは、図9に示した内向きチャンクID901が「0」の内向きチャンクレコードから構成され、内向きフローID801が「1」である内向きフローレコードは、内向きチャンクID901が「1」の内向きチャンクレコードから構成されていることを示している。このように、1つの内向きフローレコードは、外向きフローレコードの場合と同様に、少なくとも1つの内向きチャンクレコードから構成され、互いに対応付けて記憶されている。
【0076】
図5に戻り、ルーティングスコア算出部454について説明する。なお、ルーティングスコア算出部454およびペアリング部455を単に判定部と呼ぶこともある。ルーティングスコア算出部454は、上述した外向きフローDB431および内向きフローDB432からそれぞれのフローレコードおよびチャンクレコードを読み取り、読み取ったフローレコードおよびチャンクレコードについての送信フローのルーティングスコアをカウントし、カウントしたルーティングスコアの値が、あらかじめ定められた一定の閾値(例えば、7)を超えた場合に、対象ホスト300がP2P通信を行っているノードである旨等の結果を入出力装置405に出力するものである。すなわち、ルーティングスコア算出部454は、クエリルーティングした可能性のあるパケットの組(ペア)を判定するものである。
【0077】
ルーティングスコア算出部454は、外向きフローDB431に記憶されている外向きフローレコードのうち、終了時刻604およびサイズ情報602が更新された外向きフローレコードを特定し、特定した外向きフローレコードのルーティングスコア606に初期値として「0」を設定する。
【0078】
なお、終了時刻604およびサイズ情報602が更新されたレコードであるか否かについては、終了時刻604については、例えば、開始時刻603と終了時刻604が異なっている場合には終了時刻が更新されたと判定する。また、サイズ情報602については、例えば、外向きフローテーブル600に外向きフローレコードを記憶した際のサイズ情報602をメモリ440に記憶しておき、終了時刻604が更新されたと判定した場合におけるサイズ情報602を読み取り、読み取ったサイズ情報602がメモリ440に記憶したサイズ情報と異なっている場合にはサイズ情報602が更新されたレコードであると判定する。
【0079】
その後、ルーティングスコア算出部454は、内向きフローDB432に含まれる内向きフローレコードの中から、終了時刻604およびサイズ情報602が更新された外向きフローレコードの5タプル605に含まれる送信IPアドレス以外の送信IPアドレスを含む内向きフローレコードを特定する。そして、ルーティングスコア算出部454は、特定した内向きフローレコードと終了時刻604およびサイズ情報602が更新された外向きフローレコードとを後述するペアリング部455に出力する。
【0080】
さらに、ルーティングスコア算出部454は、後述するペアリング部455が、特定した内向きフローレコードと、終了時刻604およびサイズ情報602が更新された外向きフローレコードのうち、クエリルーティングされたチャンクレコードが存在すると判定した場合、終了時刻604およびサイズ情報602が更新された外向きフローレコードのルーティングスコア606を更新する。
【0081】
そして、ルーティングスコア算出部454は、更新したルーティングスコア606の値が、あらかじめ定められた閾値以上であるか否かを判定し、更新したルーティングスコア606の値が、あらかじめ定められた閾値以上であると判定した場合、対象ホスト300は、P2P通信を行っている可能性があると判定し、より詳細な分析を行うために、チャンク分布算出部456を呼び出す。
【0082】
一方、ルーティングスコア算出部454は、更新したルーティングスコア606の値が、あらかじめ定められた閾値未満であると判定した場合、内向きフローDB432の中に、終了時刻604およびサイズ情報602が更新された外向きフローレコードの5タプル605に含まれる送信IPアドレス以外の送信IPアドレスを含む内向きフローレコードが他にあるか否かを判定する。
【0083】
そして、ルーティングスコア算出部454は、内向きフローDB432の中に、終了時刻604およびサイズ情報602が更新された外向きフローレコードの5タプル605に含まれる宛先アドレス(図6に示した外向きフローID601が「0」の外向きフローレコードでは、「10.0.0.2」)以外のアドレスを送信元アドレスとして含む内向きフローレコードが他にあると判定した場合には、その内向きフローレコードについて、上述した各処理を行う。このように、ルーティングスコア算出部454は、1つの外向きフローレコードをキーにして、すべての内向きフローレコードについて、上述した各処理を繰り前し行う。
【0084】
その後、ルーティングスコア算出部454は、内向きフローDB432の中に、終了時刻604およびサイズ情報602が更新された外向きフローレコードの5タプル605に含まれる送信IPアドレス以外の送信IPアドレスを含む内向きフローレコードが他にない、すなわち、その外向きフローレコードをキーにしてすべての内向きフローレコードについて上述した判定を終了した場合、対象ホスト300がP2P通信を行っていないと判定し、対象ホスト300のIPアドレス、ルーティングスコア606の値、P2P通信を行っていない旨を入出力装置405に出力する。
【0085】
例えば、図6に示した外向きフローレコードの中で、外向きフローID601が「0」である外向きフローレコードの終了時刻604は開始時刻603とは異なる時刻であり、サイズ情報602は図7に示した外向きチャンクテーブル700の中の外向きチャンクID701が「0」〜「3」である4つの外向きチャンクレコードのサイズ情報702の合計となっている(すなわち、サイズ情報602が更新されている)ため、ルーティングスコア算出部454は、まず、外向きフローID601が「0」の外向きフローレコードを特定する。
【0086】
そして、ルーティングスコア算出部454は、外向きフローID601が「0」の外向きフローレコードに含まれる5タプル605の値のうち、宛先IPアドレス「10.0.0.2」以外のアドレスを送信元IPアドレスとして含む内向きフローレコードを特定する。図8に示した内向きフローテーブル800に含まれる内向きフローレコードの例では、内向きフローID801が「0」〜「3」のレコードが、送信IPアドレスが「10.0.0.5」、「10.0.0.6」、「10.0.0.7」、「10.0.0.8」となっており、外向きフローレコードの送信IPアドレス「10.0.0.2」とは異なっているため、これらのすべてのレコードをペアリング部455に出力する。
【0087】
その後、ペアリング部455によって、外向きフローレコードと内向きフローレコードの組(ペア)に含まれる外向きチャンクレコードと内向きチャンクレコードの組(ペア)がクエリルーティングした旨の通知を受けた場合、例えば、図6に示した外向きフローID601が「0」の外向きフローレコードのルーティングスコア606(図6に示した例では「1」)を更新する。このように、外向きフローテーブル600に記憶されている外向きフローレコードと内向きフローテーブル800に記憶されている内向きフローレコードのすべてのレコードについて、クエリルーティングした可能性のあるパケットの組(ペア)を判定し、ルーティングスコア606をカウントアップする。
【0088】
図5に戻り、ペアリング部455について説明する。ペアリング部455は、対象ホスト300がクエリをクエリルーティングした場合において、外向きフローレコードに含まれるチャンクレコードと内向きフローレコードに含まれるチャンクレコードのうち、同じクエリのルーティングに用いられたものが存在するか否かを判定するものである。
【0089】
具体的には、ペアリング部455は、まず、ルーティングスコア算出部454から受け取った外向きフローレコードと内向きフローレコードのうち、外向きフローレコードの外向きフローID601を含む外向きチャンクレコード、および内向きフローレコードの内向きフローID801を含む内向きチャンクレコード、すなわち判定対象となるフローレコードをそれぞれ特定する。
【0090】
そして、ペアリング部455は、特定した内向きチャンクレコードの末尾パケット検出時刻904が、外向きチャンクレコードの先頭パケット検出時刻703よりも過去の時刻であって、かつ、内向きチャンクレコードの末尾パケット検出時刻904と外向きチャンクレコードの先頭パケット検出時刻703との差(間隔)が所定の閾値(例えば、10ミリ秒)以内であるか否かを判定する。
【0091】
そして、ペアリング部455は、内向きチャンクレコードの末尾パケット検出時刻904と外向きチャンクレコードの先頭パケット検出時刻703との差が所定の閾値以内であると判定した場合、さらに、内向きチャンクレコードのサイズ情報902と外向きチャンクレコードのサイズ情報702とを比較し、内向きチャンクレコードのサイズ情報902と外向きチャンクレコードのサイズ情報702との差が所定の閾値(例えば、100バイト)以下であるか否かを判定する。
【0092】
その後、ペアリング部455は、内向きチャンクレコードのサイズ情報902と外向きチャンクレコードのサイズ情報702との差が所定の閾値以下であると判定した場合、特定した内向きチャンクレコードと外向きチャンクレコードは、同じクエリのクエリルーティングに用いられたと判定し、その旨をルーティングスコア算出部454に通知する。
【0093】
例えば、ペアリング部455は、図6に示した外向きフローID601が「0」の外向きフローレコードと、図8に示した内向きフローID801が「0」〜「3」の内向きフローレコードをルーティングスコア算出部454から受け取ると、受け取った外向きフローレコードの外向きフローID601の「0」を読み取り、その外向きフローID「0」を外向きフローID706として含む外向きチャンクレコードを、図7に示した外向きチャンクテーブル700の中から特定する。図7に示した例では、ペアリング部455は、外向きフローID706が「0」である外向きチャンクID701が「0」〜「3」の外向きチャンクレコードを特定する。
【0094】
続いて、ペアリング部455は、内向きフローID801が「0」〜「3」の内向きフローレコードのうち、まず、内向きフローID801が「0」である内向きフローレコードを選択し、選択した内向きフローレコードの内向きフローID「0」を内向きフローID906として含む内向きチャンクレコードである内向きチャンクID901が「0」の内向きチャンクレコードを、図9に示した内向きチャンクテーブル900の中から特定する。
【0095】
その後、ペアリング部455は、特定した内向きチャンクID901が「0」の内向きチャンクレコードの末尾パケット検出時刻904「08/12/08 11:59:59.950」が、図7に示した外向きチャンクID701が「0」の外向きチャンクレコードの先頭パケット検出時刻703「08/12/08 12:00:00.000」よりも過去の時刻であり、さらに両者の時間の間隔(差)が「.050」(秒)であり、所定の閾値Δt(例えば、100ミリ秒)以内であるため、さらに、外向きチャンクID701が「0」の外向きチャンクレコードと内向きチャンクID901が「0」の内向きチャンクレコードのそれぞれに含まれているサイズ情報702、902の値を比較する。
【0096】
そして、ペアリング部455は、その外向きチャンクレコードのサイズ情報702「1.0KB」と、その内向きチャンクレコードのサイズ情報902「0.9KB」を比較し、両者の差(容量)「0.1KB」が所定の閾値(例えば、100KB)以下であると判定し、図7に示した外向きチャンクID701が「0」である外向きチャンクレコードと、図9に示した内向きチャンクID901が「0」である内向きチャンクレコードの組(ペア)は、クエリルーティングされたと判定し、その旨をルーティングスコア算出部454に通知する。
【0097】
また、ペアリング部455は、ルーティングスコア算出部454への通知後に、外向きチャンクレコードと内向きチャンクレコードの組から構成されるレコード(チャンクペアレコード)をチャンクペア分布DB435に記憶する。説明の都合上、チャンクペア分布DB435の詳細については、チャンク分布算出部456の後に説明する。
【0098】
その後、ペアリング部455は、図7に示した外向きチャンクID701が「0」の外向きチャンクレコードと、図9に示した内向きチャンクID901が「1」〜「3」の内向きチャンクレコードの組(ペア)について上述した内容と同様の処理を行い、すべての組(ペア)のチャンクレコードについて処理が終了するまで繰り返し行う。
【0099】
このように、ペアリング部455は、ルーティングスコア算出部454から受け取った内向きフローレコードと外向きフローレコードを受け取ると、これらの各フローレコードに含まれるチャンクレコードを特定し、特定したチャンクレコード(チャンクレコードが複数存在する場合には、それぞれのチャンクレコード)について、上述した2つの条件を満たしているか否かを判定することによって、クエリルーティングが行われたか否かを判定している。
【0100】
図5に戻り、チャンク分布算出部456について説明する。チャンク分布算出部456は、内向きチャンクテーブル900に記憶されている内向きチャンクレコードの件数を、サイズ情報902ごとに算出する。ここで、内向きチャンクレコードを、サイズ情報902に基づいて各内向きチャンククラスに分類する。内向きチャンククラスは、サイズ情報902が所定範囲内の内向きチャンクレコードを含む集合である。そして、チャンク分布算出部456は、各内向きチャンククラスに含まれる内向きチャンクレコードの件数を算出する。内向きチャンククラスとその件数情報の組(内向きチャンク分布レコード)は、内向きチャンク分布DB434に記憶される。
【0101】
図10は、各内向きチャンククラス1001ごとの内向きチャンクレコード件数情報1002が、内向きパケットチャンク分布DB433に記憶された場合を示す図である。なお、図10に示すように内向きパケットチャンク分布DB433に記憶された内向きチャンク分布レコードの全体のことを、内向きチャンク分布テーブル1000と呼ぶこととする。
【0102】
図10に示す例では、内向きチャンクレコードのサイズ情報902を10バイトごとに分類している。内向きチャンククラスR0にはサイズ情報が0バイトから9バイトまでの内向きチャンクレコードが含まれる。同様に、内向きチャンククラスR1にはサイズ情報が10バイトから19バイトまでの内向きチャンクレコードが含まれる。そして、各内向きチャンククラス1001に含まれる内向きチャンクレコード件数情報1002が内向きチャンク分布DB434に記憶される。図11の例では、内向きチャンククラスR0の件数情報は5件、内向きチャンククラスR1の件数情報は20件となる。
【0103】
また、チャンク分布算出部456は、外向きチャンクテーブル700に記憶されている外向きチャンクレコードの件数を、サイズ情報702ごとに算出する。ここで、外向きチャンクレコードを、サイズ情報702に基づいて各外向きチャンククラスに分類する。外向きチャンククラスは、サイズ情報702が所定範囲内の外向きチャンクレコードを含む集合である。そして、チャンク分布算出部456は、各外向きチャンククラスに含まれる外向きチャンクレコード件数を算出する。外向きチャンククラスとその件数情報の組(外向きチャンク分布レコード)は、外向きパケットチャンク分布DB433に記憶される。
【0104】
図11は、各外向きチャンククラス1101ごとの外向きチャンクレコード件数情報1102が、外向きパケットチャンク分布DB433に記憶された場合を示す図である。なお、図11に示すように外向きパケットチャンク分布DB433に記憶された外向きチャンク分布レコードの全体のことを、外向きチャンク分布テーブル1100と呼ぶこととする。
【0105】
図11に示す例では、外向きチャンクレコードのサイズ情報702を10バイトごとに分類している。外向きチャンククラスS0にはサイズ情報が0バイトから9バイトまでの外向きチャンクレコードが含まれる。同様に、外向きチャンククラスS1にはサイズ情報が10バイトから19バイトまでの外向きチャンクレコードが含まれる。そして、外内向きチャンククラス1101に含まれる外向きチャンクレコード数1102が記憶される。図11の例では、外向きチャンククラスS0の件数情報は20件、外向きチャンククラスS1の件数情報は11となる。以上の処理の終了後、チャンク分布算出部456はチャンクペア期待値算出部457を呼び出す。
【0106】
図5に戻り、ペアリング部455について説明する。前述の通り、ペアリング部455は、チャンクペアレコードをチャンクペア分布DB435に記憶する。この際、チャンクペアレコードを直接記憶するのではなく、チャンクペアレコードの内向きチャンクペアクラスと外向きチャンクペアクラス、およびその件数の組(チャンクペア分布レコード)として記憶する。図12は、チャンクペア分布レコード件数1203がチャンクペア分布DB435に記憶された場合を示す図である。なお、図12に示すようにチャンクペア分布DB435に記憶されたチャンクペア分布レコードの全体のことをチャンクペア分布テーブル1200と呼ぶこととする。
【0107】
チャンクペア分布テーブル1200には,チャンクペア分布レコードに含まれる内向きチャンククラス1201と外向きチャンククラス1202の組ごとの件数1203が記憶される。図12の例では,内向きチャンククラスがR2,外向きチャンククラスがS2のチャンクペアレコードが5件あることが示されている。
【0108】
新しいチャンクペアレコードをチャンクペア分布DB435に記憶するとき、既に内向きチャンククラス1201と外向きチャンククラス1202が同値であるチャンクペア分布レコードが存在する場合は、そのレコードの件数1203が+1される。一方、内向きチャンククラスと外向きチャンククラスが同値であるチャンクペア分布レコードが存在しない場合は、新しいレコードが追加される。追加されたチャンクペア分布レコードの件数は1となる。
【0109】
図5に戻り、チャンクペア期待値算出部457について説明する。チャンクペア期待値算出部457は、内向きチャンク分布DB434に記憶されている内向きチャンク分布レコードと、外向きチャンク分布DB433に記憶されている外向きチャンク分布レコードから、対象ホスト300がクエリルーティングを実際には行っていないと仮定した場合に、チャンクペアと判定される内向きチャンクと外向きチャンクのペアの件数の期待値を求める。そして、実際にチャンクペアと判定された件数と期待値との差が所定の閾値以上である場合、対象ホスト300はP2P通信を行っていると判定する。
【0110】
具体的には、チャンクペア期待値算出部457はまず、チャンクペア分布DB435からチャンクペア分布レコードを取得する。次に、チャンクペア分布レコードの内向きチャンクペアクラスと同じ値を持つ内向きチャンクペア分布レコードを内向きチャンクペア分布DB434から取得する。同様に、チャンクペア分布レコードの外向きチャンクペアクラスと同じ値を持つ外向きチャンクペア分布レコードを外向きチャンクペア分布DB433から取得する。
【0111】
次に、取得した外向きチャンクペア分布レコードの件数(Nout),内向きチャンクペア分布レコードの件数(Nin),対象ホスト300の観測期間(T),Δt(チャンクペアとなる内向きチャンクレコードと外向きチャンクレコードの発生時刻差の閾値)から,対象ホスト300がクエリルーティングを行っていない(対象ホスト300はP2P端末ではない),すなわち内向きチャンクと外向きチャンクとの発生時刻に相関性が一切無いと仮定した場合に発生するチャンクペアの件数の期待値を求める。実際に発生したチャンクペアの件数がこの期待値より所定数以上多い場合、対象ホスト300はP2P通信を行っていると判定される。
【0112】
ここで、具体的なチャンクペア件数の期待値の算出方法の一例を示す。期間T内に外向きチャンク・内向きチャンクが一様に発生すると仮定した場合、期待値はNout×Nin×Δt/Tで与えられる。
【0113】
次に、チャンクペア分布レコードの件数情報から期待値を引いた値をチャンクペアスコアに加算する。実際に発生したチャンクペアレコード件数が期待値より多ければ、チャンクペアスコアは正の数となる。
【0114】
上記の処理をチャンクペア分布DB435内に存在する全てのチャンクペア分布レコードについて行う。最後に、チャンクペアスコアが所定の閾値以上となる場合、対象ホスト300はP2P通信を行っていると判定する。チャンクペアスコアが閾値未満である場合、対象ホスト300はP2P通信を行っていないと判定する。
【0115】
内向きチャンクと外向きチャンクとの発生時刻が一様分布であり、それらの間に相関性が無いと仮定した場合に発生するチャンクペアの件数の期待値を求めることを説明したが、内向きチャンクと外向きチャンクとの発生時刻が一様分布でなく、他の分布に従うことが予め分かっている場合は、その分布に対応した期待値を求めればよい。また、チャンクペア分布レコードの件数と、期待値に予め設定した所定の閾値を加えた値との比較に基づいて、対象ホスト300がP2P通信を行っているP2P端末であるか否かを判定するように説明したが、チャンクペア分布レコードの件数と期待値に1を超える所定の比率(例えば、1.2)を乗じた値と比較してもよい。所定の加算値及び所定の比率(又は所定の比率を乗じた値と期待値との差を加算値とする。)のいずれを用いるか、及びそれらの値は、判定の過誤の割合が小さくなるように実験的に決められる。
【0116】
端末検出システム10で行われる処理について説明する。図13〜図19は、端末検出システム10が上述した各種の処理を行う場合の処理手順を示すフローチャートである。以下の説明では、検出装置400は、対象ホスト300のパケットを所定の時間の間隔で検出している状態にあるものとする。
【0117】
図13は、パケット取得部451における処理のフローチャートである。パケット取得部451は、対象ホスト300からパケットを取得し(ステップS1301)、取得したパケットの送信IPアドレスおよび受信IPアドレスを読み取る(ステップS1302)。
【0118】
パケット取得部451は、読み取った送信IPアドレスおよび受信IPアドレスが、対象ホスト300のIPアドレスに一致するか否かを判定し(ステップS1303)、読み取った送信IPアドレスおよび受信IPアドレスが、対象ホスト300のIPアドレスに一致すると判定した場合(ステップS1303;Yes)、さらに、そのIPアドレスが送信IPアドレスであるか受信IPアドレスであるか否かを判定し、取得したパケットが送信パケットであるか受信パケットであるか否かを判定する(ステップS1
04)。
【0119】
パケット取得部451は、取得したパケットが送信パケットであると判定した場合(ステップS1304;Yes)、取得したパケットを送信パケット保存部452に出力する(ステップS1305)。
【0120】
一方、パケット取得部451は、取得したパケットが送信パケットではない、すなわち取得したパケットは受信パケットであると判定した場合(ステップS1304;No)、取得したパケットを受信パケット保存部453に出力する(ステップS1306)。このステップS1305またはステップS1306の処理が終了すると、パケット取得部451における処理が終了し、図14に示す処理、または図15に示す処理に進む。
【0121】
図14は、送信パケット保存部452における処理のフローチャートである。送信パケット保存部452は、パケット取得部451から受け取った送信パケットをフロー形式(外向きフローレコード)に変換し(ステップS1401)、さらに、パケット取得部451から受け取った送信パケットをチャンク形式(外向きチャンクレコード)に変換し(ステップS1402)、変換した外向きフローレコードおよび外向きチャンクレコードを外向きフローDB431に記憶する(ステップS1403)。このステップS1403の処理が終了すると、送信パケット保存部452における処理が終了し、図16に示す処理に進む。
【0122】
図15は、受信パケット保存部453における処理のフローチャートである。受信パケット保存部453は、パケット取得部451から受け取った受信パケットをフロー形式(内向きフローレコード)に変換し(ステップS1501)、さらに、パケット取得部451から受け取った受信パケットをチャンク形式(内向きチャンクレコード)に変換し(ステップS1502)、変換した内向きフローレコードおよび内向きチャンクレコードを内向きフローDB432に記憶する(ステップS1503)。このステップS1503の処理が終了すると、受信パケット保存部453における処理が終了し、図16に示す処理に進む。
【0123】
図16は、ルーティングスコア算出部454の処理のフローチャートである。ルーティングスコア算出部454は、外向きフローテーブル600に含まれる外向きフローレコードのうち、終了時刻604およびサイズ情報602が更新された外向きフローレコードを特定し(ステップS1601)、内向きフローレコードの中から、特定した外向きフローレコードの宛先IPアドレス以外のアドレスを、送信元アドレスとして含む内向きフローレコードを特定し、特定した内向きフローレコードと終了時刻604およびサイズ情報602が更新された外向きフローレコードとをペアリング部455に出力する(ステップS1602)。このステップS1602の処理が終了すると、クエリルーティング判定処理に進む(ステップS1603)。
【0124】
図17は、ペアリング部455によるクエリルーティング判定処理のフローチャートである。図17に示すように、ペアリング部455は、ルーティングスコア算出部454から外向きフローレコードと内向きフローレコードを受け取ると(ステップS1701)、受け取った外向きフローレコードの外向きフローID601を外向きフローID706として含む外向きチャンクレコード、および内向きフローレコードの内向きフローID801を内向きフローID906として含む内向きチャンクレコードをそれぞれ特定する(ステップS1702)。
【0125】
ペアリング部455は、内向きチャンクレコードが外向きチャンクレコードよりも過去に検出され、かつ両者を検出した間隔が所定の閾値以内であるか否かを判定し(ステップS1703)、内向きチャンクレコードが外向きチャンクレコードよりも過去に検出され、かつ両者を検出した間隔が所定の閾値以内であると判定した場合(ステップS1703;Yes)、さらに、内向きチャンクレコードのサイズ情報902と外向きチャンクレコードのサイズ情報702との差が所定の閾値以下であるか否かを判定する(ステップS1704)。
【0126】
ペアリング部455は、内向きチャンクレコードのサイズ情報902と外向きチャンクレコードのサイズ情報702との差が所定の閾値以下であると判定した場合(ステップS1704;Yes)、その旨をルーティングスコア算出部454に通知し、ルーティングスコア算出部454は、外向きフローレコードのルーティングスコアをカウントアップする(ステップS1705)。また、これらの外向きチャンクレコードと内向きチャンクレコードとのチャンクペアをチャンク分布DB435に記憶する(ステップS1707)。
【0127】
一方、ペアリング部455は、内向きチャンクレコードが外向きチャンクレコードよりも過去に検出され、かつ両者を検出した間隔が所定の閾値以内でないと判定した場合(ステップS1703;No)、または、内向きチャンクレコードが外向きチャンクレコードよりも過去に検出され、かつ両者を検出した間隔が所定の閾値以内であると判定したものの、内向きチャンクレコードのサイズ情報902と外向きチャンクレコードのサイズ情報702との差が所定の閾値以下でないと判定した場合(ステップS1704;No)、すべての組についてステップS1703およびステップS1704の判定を行ったか否かを判定する(ステップS1706)。
【0128】
ペアリング部455は、すべての組についてステップS1703およびステップS1704の判定を行ったと判定した場合(ステップS1706;Yes)、クエリルーティング判定処理を終了し、図16に示すステップS1604の処理に進む。一方、すべての組についてステップS1703およびステップS1704の判定を行っていないと判定した場合(ステップS1706;No)、ステップS1702に戻り、ステップS1703以降の処理を繰り返す。
【0129】
図16において、ルーティングスコア算出部454は、外向きフローレコードのルーティングスコアの値が、あらかじめ定めた閾値以上であるか否かを判定し(ステップS1604)、ルーティングスコアの値が、あらかじめ定めた閾値以上であると判定した場合(ステップS1604;Yes)、対象ホスト300がP2P通信を行っている可能性があると判定し、より詳細な分析を行うためにチャンク分布算出部456を呼び出す(ステップS1607)。
【0130】
一方、ルーティングスコア算出部454は、ルーティングスコアの値が、あらかじめ定めた閾値以上でないと判定した場合(ステップS1604;No)、内向きフローDB432の中に、終了時刻604およびサイズ情報602が更新された外向きフローレコードの5タプル605に含まれる送信IPアドレス以外の送信IPアドレスを含む内向きフローレコードが他にあるか否か、すなわちすべての内向きフローレコードについてステップS1604の判定を行ったか否かを判定する(ステップS1605)。
【0131】
ルーティングスコア算出部454は、すべての内向きフローレコードについてステップS1604の判定を行っていないと判定した場合(ステップS1605;No)、ステップS1602に戻り、ステップS1603以降の各処理を繰り返し行う。
【0132】
一方、ルーティングスコア算出部454は、すべての内向きフローレコードについてステップS1604の判定を行ったと判定した場合(ステップS1605;Yes)、対象ホスト300がP2P通信を行っていないと判定し、送信IPアドレスあるいは受信IPアドレス、ルーティングスコアの値、P2P通信を行っていない旨を入出力装置405に出力する(ステップS1606)。
【0133】
図18は、チャンク分布算出部456の処理のフローチャートである。チャンク分布算出部456は、内向きフローDB432から内向きチャンクレコードを取得し(ステップS1801)、内向きチャンククラス1001ごとの件数1002を算出する(ステップS1802)。そして、各内向きチャンククラス1001とその件数1002の組(内向きチャンク分布レコード)を,内向きチャンク分布DB434に記憶する(ステップS1803)。
【0134】
同様に,チャンク分布算出部456は,外向きフローDB431から外向きチャンクレコードを取得し(ステップS1804),外向きチャンククラス1101ごとの件数1102を算出する(ステップS1805)。そして,外向きチャンククラス1101とその件数1102の組を外向きチャンク分布レコードとして,外向きチャンク分布DB433に記憶する(ステップS1806)。チャンク分布算出部456は最後に、チャンクペア期待値算出部457を呼び出し(ステップS1807)、処理を終了する。
【0135】
図19は、チャンクペア期待値算出部457の処理のフローチャートである。チャンクペア期待値算出部457は、チャンクペア分布DB435から、チャンクペア分布レコードを取得する(ステップS1901)。次に、チャンクペア分布レコードと同一の内向きチャンククラスを持つ内向きチャンク分布レコードを内向きチャンク分布DB434から取得し(ステップS1902)、チャンクペア分布レコードと同一の外向きチャンククラスを持つ外向きチャンク分布レコードを外向きチャンク分布DB433から取得する(ステップS1903)。
【0136】
チャンクペア期待値算出部457は、外向きチャンク分布レコードの件数と、内向きチャンク分布レコードの件数と、対象ホスト300の観測期間T、外向きチャンクと内向きチャンクがチャンクペアとなるための発生時刻の最大差Δt(発生時刻差の閾値)から、対象ホスト300がクエリルーティングを行っていない場合に発生するチャンクペア件数の期待値を算出する(ステップS1904)。
【0137】
次に、チャンクペア期待値算出部457は、チャンクペア分布レコードの件数から算出した期待値を減じた値をチャンクペアスコアに加算する(ステップS1905)。
【0138】
チャンクペア期待値算出部457は、ステップS1902〜ステップS1905の処理を全てのチャンクペア分布レコードを対象に行った場合(ステップS1906:YES)、チャンクペアスコアが所定の閾値以上であるかどうかを判定する(ステップS1907)。そして、チャンクペアスコアが所定の閾値以上である場合(ステップS1907:YES)、対象ホスト300はP2P通信を行っていると判定して、その旨を入出力装置405に出力する(ステップS1908)。一方、チャンクペアスコアが所定の閾値未満である場合(ステップS1907:NO)、対象ホスト300はP2P通信を行っていないと判定して、その旨を入出力装置405に出力する(ステップS1909)。
【0139】
チャンクペア期待値算出部457は、ステップS1902〜ステップ1905の処理を全てのチャンクペア分布レコードに対して行っていないと判定した場合(ステップS1906:NO)、ステップS1901に戻り、ステップS1902以降の処理を繰り返す。
【0140】
このように、パケット取得部451が、対象ホスト300に接続する送信ホスト100または送信ホスト110から送信された、所望のデータを検索するための要求であるクエリを構成する1または複数のパケットを取得し、判定部(ルーティングスコア算出部454、ペアリング部455)が、取得したパケットのうち、対象ホスト300に接続する送信ホスト100または送信ホスト110以外の受信ホスト200に送信する処理であるクエリルーティングが行われる対象となるパケットが存在するか否かを判定し、取得されたパケットのうち、クエリルーティングが行われる対象となるパケットの検出数が、対象ホスト300がP2P通信を行わないと仮定した場合の期待値より所定数以上多い場合に、対象ホスト300がP2P通信を行うホストであると判定するので、適切にP2P端末を検出することができる。
【符号の説明】
【0141】
10…端末検出システム、100、110…送信ホスト、200…受信ホスト、300…対象ホスト、400…検出装置、500…通信ネットワーク、405…入出力装置、410…本体装置、420…インタフェース、430…記憶装置、440…メモリ、450…CPU、460…バス、451…パケット取得部と、452…送信パケット保存部、453…受信パケット保存部、454…ルーティングスコア算出部、455…ペアリング部、456…チャンク分布算出部、457…チャンクペア期待値算出部。

【特許請求の範囲】
【請求項1】
通信ネットワークに接続された対象情報処理装置がP2P(Peer To Peer)通信を行うP2P端末であることを検出する検出装置における端末検出方法であって、前記検出装置は、前記通信ネットワークに接続し、
前記通信ネットワークに接続する第1の情報処理装置から前記対象情報処理装置に送信された第1のパケットを前記通信ネットワークから取得し、
前記通信ネットワークに接続する第2の情報処理装置に前記対象情報処理装置から送信された第2のパケットを前記通信ネットワークから取得し、
取得した前記第1及び第2のパケットが、所望のデータを検索するための要求であるクエリを構成するパケットであり、前記第1の情報処理装置から前記第2の情報処理装置に前記対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定し、
前記判定結果に基づいて、前記クエリルーティングの対象となる前記第1及び第2のパケットの組の件数が、前記対象情報処理装置がP2P通信を行わないと仮定した場合の、前記第1及び第2のパケットの組の件数の期待値より所定数以上の場合に,前記対象情報処理装置がP2P通信を行うP2P端末であると判定することを特徴とする端末検出方法。
【請求項2】
前記検出装置は、さらに取得時刻が所定の時間間隔以内の前記第1のパケットの集合である内向きチャンクごとに前記第1のパケットを分類し、取得時刻が所定の時間間隔以内の前記第2のパケットの集合である外向きチャンクごとに前記第2のパケットを分類し、
前記内向きチャンクごとに含まれる末尾の前記第1のパケットの取得時刻と前記外向きチャンクごとに含まれる先頭の前記第2のパケットの取得時刻との差が所定の時間以内であるチャンクペアを検出し、
前記クエリルーティングの対象となる前記第1及び第2のパケットの組の件数を、前記チャンクペアの件数とすることを特徴とする請求項1記載の端末検出方法。
【請求項3】
前記期待値は、前記内向きチャンクと前記外向きチャンクとの取得時刻が一様分布し、前記内向きチャンクと前記外向きチャンクとの間に相関性が無いと仮定した場合に発生するチャンクペアの件数の期待値であることを特徴とする請求項2記載の端末検出方法。
【請求項4】
通信ネットワークに接続し、
前記通信ネットワークに接続する第1の情報処理装置から前記対象情報処理装置に送信された第1のパケットを前記通信ネットワークから取得し、前記通信ネットワークに接続する第2の情報処理装置に前記対象情報処理装置から送信された第2のパケットを前記通信ネットワークから取得するパケット取得部、
取得した前記第1及び第2のパケットが、所望のデータを検索するための要求であるクエリを構成するパケットであり、前記第1の情報処理装置から前記第2の情報処理装置に前記対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定するペアリング部、及び、
前記判定結果に基づいて、前記クエリルーティングの対象となる前記第1及び第2のパケットの組の件数が、前記対象情報処理装置がP2P通信を行わないと仮定した場合の、前記第1及び第2のパケットの組の件数の期待値より所定数以上の場合に,前記対象情報処理装置がP2P通信を行うP2P端末であると判定するペア期待値算出部を有することを特徴とする端末検出装置。
【請求項5】
さらに、取得時刻が所定の時間間隔以内の前記第1のパケットの集合である内向きチャンクごとに前記第1のパケットを分類する受信パケット保存部、及び、取得時刻が所定の時間間隔以内の前記第2のパケットの集合である外向きチャンクごとに前記第2のパケットを分類する受信パケット保存部を有し、
前記ペア期待値算出部は、前記内向きチャンクごとに含まれる末尾の前記第1のパケットの取得時刻と前記外向きチャンクごとに含まれる先頭の前記第2のパケットの取得時刻との差が所定の時間以内であるチャンクペアを検出し、前記クエリルーティングの対象となる前記第1及び第2のパケットの組の件数を、前記チャンクペアの件数とすることを特徴とする請求項4記載の端末検出装置。
【請求項6】
前記期待値は、前記内向きチャンクと前記外向きチャンクとの取得時刻が一様分布し、前記内向きチャンクと前記外向きチャンクとの間に相関性が無いと仮定した場合に発生するチャンクペアの件数の期待値であることを特徴とする請求項5記載の端末検出装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2011−123647(P2011−123647A)
【公開日】平成23年6月23日(2011.6.23)
【国際特許分類】
【出願番号】特願2009−280502(P2009−280502)
【出願日】平成21年12月10日(2009.12.10)
【国等の委託研究の成果に係る記載事項】(出願人による申告)国等の委託研究の成果に係る特許出願(平成21年度 総務省「情報漏えい対策技術の研究開発(ネットワークを通じた情報流出の検知及び漏出情報の自動流通停止のための技術開発)」委託研究、産業技術力強化法第19条の適用を受ける特許出願)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】