(57)【特許請求の範囲】
【請求項１】
構造化ピアツーピア・ネットワークで用いられる要求ノード（1）であって、
検索タームを取得するデバイス（12）と、
ブルーム・フィルタを生成するために前記検索タームを使用するプロセッサ（13）と、
前記ブルーム・フィルタを検索ノードに送信する第１の送信機（14）と、
前記ピアツーピア・ネットワーク内の他のノードの識別子を、前記検索ノードから受信する第１の受信機（15）であって、前記他のノードが、前記ブルーム・フィルタに対応する他のブルーム・フィルタによって特定されるデータへのアクセスを有する、前記第１の受信機（15）と、
前記データの要求を前記他のノードに送信する第２の送信機（16）と
を備えることを特徴とする要求ノード。
【請求項２】
前記検索タームを取得する前記デバイスは、ユーザによる検索タームの入力を可能にするユーザ入力デバイスと、前記検索タームを生成するプロセッサとのうちの１つから選択されることを特徴とする請求項１に記載の要求ノード。
【請求項３】
前記第１の送信機は、前記ブルーム・フィルタを、ＲＥＬＯＡＤ要求メッセージで前記検索ノードに送信することを特徴とする請求項１または２に記載の要求ノード。
【請求項４】
構造化ピアツーピア・ネットワークで用いられる検索ノード（2）であって、
検索タームから生成されたブルーム・フィルタを含むメッセージを、要求ノード（1）から受信する受信機（19）と、
前記ピアツーピア・ネットワーク内の他のノードと関連付けられた少なくとも１つの他のブルーム・フィルタを含むデータベース（21）に問い合わせを行うデータベースアクセス機能（20）と、
前記受信されたブルーム・フィルタと前記他のブルーム・フィルタとがマッチするか否かを判定するプロセッサ（22）と、
前記ブルーム・フィルタと前記他のブルーム・フィルタとがマッチすると、前記他のノードの識別子を前記要求ノードに向けて送信する送信機（23）と
を備えることを特徴とする検索ノード。
【請求項５】
前記他のノードからブルーム・フィルタを受信する第２の受信機（27）を更に備え、
前記プロセッサ（22）は、前記ブルーム・フィルタの送信元である前記他のノードの識別子に関連付けられた前記ブルーム・フィルタを前記データベース（21）に追加する
ことを特徴とする請求項４に記載の検索ノード。
【請求項６】
前記送信機（23）は、前記ブルーム・フィルタを、他の検索ノードに向けて送信することを特徴とする請求項４または５に記載の検索ノード。
【請求項７】
前記ブルーム・フィルタは、前記要求ノードから、ＲＥＬＯＡＤ要求メッセージで受信されることを特徴とする請求項４乃至６のいずれか１項に記載の検索ノード。
【請求項８】
構造化ピアツーピア・ネットワークで用いられるピアノード（26）であって、
データを格納するメモリ（27）と、
前記格納されたデータの少なくとも一部を使用してブルーム・フィルタを生成するプロセッサ（28）と、
前記ブルーム・フィルタと前記ノードの識別子とを検索ノードがデータの検索に使用するために、前記ブルーム・フィルタと前記ノードの識別子とを前記検索ノードに送信する送信機（29）と
を備えることを特徴とするピアノード。
【請求項９】
構造化ピアツーピア・ネットワークを検索する方法であって、
要求ノード（1）において、検索タームを取得するステップ（S6）と、
前記要求ノードにおいて、前記検索タームを使用してブルーム・フィルタを生成するステップ（S7）と、
前記ブルーム・フィルタを検索ノード（2）に送信するステップ（S9）と、
前記検索ノード（2）において、受信された前記ブルーム・フィルタと、前記検索ノードがアクセス可能なデータベースに格納されている少なくとも１つの他のブルーム・フィルタとを比較するステップ（S10）であって、前記他のブルーム・フィルタが、前記ピアツーピア・ネットワーク内の他のノードに関連付けられている、前記ステップと、
前記ブルーム・フィルタと前記他のブルーム・フィルタとがマッチすると、前記他のノードの識別子を、前記要求ノード（1）に向けて送信するステップ（S11）と
を含むことを特徴とする方法。
【請求項１０】
前記他のノードがアクセス可能なデータを使用して生成された他のブルーム・フィルタを、前記他のノードから受信するステップと、
前記他のノードから受信された前記他のブルーム・フィルタと、前記他のノードについての関連した識別子とを、前記データベースに格納するステップと
を更に含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記検索ノードにおいて、受信された前記ブルーム・フィルタと、前記データベースに格納されている前記少なくとも１つの他のブルーム・フィルタとの比較の後に、要求を他の検索ノードに送信するステップを更に含むことを特徴とする請求項９または１０に記載の方法。
【請求項１２】
前記比較の結果は、前記他の検索ノードに前記要求を送信する前に前記要求に付加されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記ブルーム・フィルタは、ＲＥＬＯＡＤ要求メッセージで前記検索ノードに送信されることを特徴とする請求項８乃至１２のいずれか１項に記載の方法。
【請求項１４】
コンピュータで実行された際に、請求項１乃至３のいずれか１項に記載の要求ノード（1）としてコンピュータを機能させるためのコンピュータ・プログラム（18）。
【請求項１５】
コンピュータで実行された際に、請求項４乃至７のいずれか１項に記載の検索ノード（2）としてコンピュータを機能させるためのコンピュータ・プログラム（25）。
【請求項１６】
コンピュータで実行された際に、請求項８に記載のピアノード（28）としてコンピュータを機能させるためのコンピュータ・プログラム（33）。
【請求項１７】
請求項１４乃至１６のいずれか１項に記載のコンピュータ・プログラム（18;25;28）を格納したコンピュータ読み取り可能な記憶媒体（17;25;29）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピアツーピア・ネットワークにおけるデータの検索の分野に関するものである。
【背景技術】
【０００２】
ピアツーピア（Ｐ２Ｐ）ネットワークは、ファイル共有及びＶｏＩＰ電話を含む、幅広いタイプのサービスを促進するための処理能力及び通信帯域幅を有する参加ノードのプールされたリソースを使用する。集中型サーバが存在しない場合、特定のＰ２Ｐサービスは、リソース位置を最適化ために、「オーバレイ・ネットワーク」を使用する。オーバレイ・ネットワークは、下位のネットワーク（例：インターネット）における、場合によっては多数の物理リンクにわたって広がっているパスを表す仮想リンクによって接続された、複数のノードを含む。オーバレイ・ネットワーク内の各ノードは、当該オーバレイ・ネットワーク内の特定の他の複数のノードへのリンクの集合を含むルーティングテーブルを保持している。リソース要求は、そのリソースに責任を負っているノードに到達するまで、ノード間で渡される。
【０００３】
Ｐ２Ｐネットワークは、多数の異なるシナリオにおいて実装可能である。そのようなシナリオの例には、ファイル共有、ボイス・オーバＩＰ等がある。Ｐ２Ｐネットワークは、構造化されていてもよいし、構造化されていなくてもよい。非構造化Ｐ２Ｐネットワークは、組織内に特定のパターンを有さず、その代わりに、Ｐ２Ｐネットワーク内の異なるピアノード間のコネクションが、ある程度ランダムに設定される。一方、構造化Ｐ２Ｐネットワークは、特定のアルゴリズムを用いて決定される、ピアノード間のコネクションを有し、その結果として、Ｐ２Ｐネットワークは、より構造化されたパターンを有する。最も一般的なタイプの構造化Ｐ２Ｐネットワークは、Ｃｈｏｒｄ（非特許文献１を参照。）のような、ＤＨＴ（分散ハッシュテーブル）ベースのネットワークである。
【０００４】
分散ハッシュテーブル（ＤＨＴ）は、リソース名（「キー」）を、オーバレイ・ネットワーク内での位置にマッピングするための効率的な手段を提供する。ＤＨＴは、キー（例えば、曲名、ＳＩＰ ＵＲＩ等）を、有限の値空間（例えば、１２８ビット）にマッピングするために、ハッシング・アルゴリズムを使用する。ハッシング・アルゴリズムは、値空間にわたる、ハッシュ値の相対的に一様な広がりを確保するように選択される。このため、例えば、１００個の曲名のハッシングは、値空間にわたって相対的に均一に配置された１００個のハッシュ値をもたらすであろう。当該ハッシュ値は、いくつかの値のペア（キー、値）で、ハッシュテーブルに格納される。オーバレイ・ネットワーク内のノードは、ユーザ名によって特定され、当該ユーザ名は、それ自体、個別のハッシュ値にハッシングされる。そのため、各ノードは、値空間の範囲内にある、自らの値に隣接する複数のハッシュ値の集合に対して責任を負う。実際には、ノードは、当該ノードが「保有する」リソース名にマッチ（合致）するリソースを取得可能な位置（例えば、ＩＰアドレス）を保存する。オーバレイ・ネットワーク内のノードがリソース要求を受信すると、当該ノードは、それに対応するハッシュ値を保有しているか否かを判定する。保有している場合、ノードは、リソースの位置を、（オーバレイ・ネットワークを介して）要求者に対して返す。当該ハッシュ値を保有していない場合、ノードは、ルーティングテーブルを検査することで、要求に含まれるハッシュ値に最も近いハッシュ値を有する、テーブル内にあるノードを特定し、そのノードに当該要求を転送する。受信ノードは、当該要求に対応するハッシュ値を確かに保有しており、かつ、それ故にリソース位置を知っているノードに、当該要求が到達するまでの間、その手順を繰り返す。
【０００５】
現在、Ｐ２ＰＳＩＰが開発中である。Ｐ２ＰＳＩＰは、ＳＩＰ（セッション開始プロトコル（Session Initiation Protocol）、非特許文献２を参照。）とＰ２Ｐネットワークとの組み合わせである。Ｐ２ＰＳＩＰの主な特性は、ＩＰマルチメディア・サブシステム（ＩＭＳ）で使用されているような集中型サーバを設ける必要がないことであり、それ故に、Ｐ２ＰＳＩＰは、標準のＩＭＳネットワークよりも、ロバストで、かつ、変更に対して柔軟性がある。
【０００６】
リソース位置特定及び発見（ＲＥＬＯＡＤ：Resource location and discovery、非特許文献３を参照。）は、ＣｈｏｒｄをＤＨＴアルゴリズムとして使用する、Ｐ２ＰＳＩＰの実装である。ＲＥＬＯＡＤネットワークは、構造化Ｐ２Ｐネットワークである。ピアノードが別のピアノードからリソースを取得したい場合、リソースに対応するキーと、他のピアノードに格納されているキーとを比較することによって、検索が実行される。キーがコンテンツと厳密にマッチすると、そのコンテンツを取り出すことが可能である。
【０００７】
上述のようなリソースの検索に関連する問題は、リソースキーが未知である場合に検索を組み立てることができないことである。ピアノードは、別のピアノードに格納されているリソースに対応するキーと厳密にマッチしないキーを使用して、リソースを探すことはできない。このため、例えば、ピアノードが「ジョン・スミス（John Smith）」の電子メールアドレス（リソース）を調べたい場合に、当該ピアノードは、そのデータを取得するためには、ジョン・スミスの電子メールアドレスを既に知っている必要がある。ピアノードは、例えば、ターム「ジョン」または「スミス」を使用して、検索を組み立てることはできない。これらのタームに対応するキーが、他のピアノードに格納されているリソースのいずれともマッチしないためである。これは、探しているコンテンツに関して検索ピアノードが有している情報が不十分または不正確であるシナリオにおいて、重大な問題となる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】R. Stoica et al., “Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications,” Proceedings of the ACM SIGCOMM ’01 Conference, San Diego, California, Aug. 2001, pp. 149
【非特許文献２】J. Rosenberg et al, “SIP: Session Initiation Protocol,” RFC 3261, Internet Engineering Task Force, June 2002
【非特許文献３】C. Jennings et al., “Resource location and discovery (RELOAD) base protocol", Draft, Internet Engineering Task Force, November 2009
【発明の概要】
【０００９】
検索されているデータに関する十分な情報が利用可能ではない場合であっても、ピアノードが構造化ピアツーピア・ネットワークの検索を組み立てることをできるようにする方法及び装置を提供する。
【００１０】
第１の態様によれば、構造化ピアツーピア（Ｐ２Ｐ）ネットワークで用いられる要求ノードが提供される。要求ノードは、検索タームを取得するデバイスを備える。また、ブルーム・フィルタを生成するために前記検索タームを使用するプロセッサが設けられる。ブルーム・フィルタを検索ノードに送信するために、第１の送信機が使用され、当該ブルーム・フィルタは、検索ノードが検索を実行するために使用可能である。Ｐ２Ｐネットワーク内の他のノードの識別子を、検索ノードから受信する第１の受信機が設けられる。他のノードは、ブルーム・フィルタに対応する他のブルーム・フィルタによって特定されるデータへのアクセスを有する。また、要求ノードが要求データを取得できるよう、データの要求を他のノードに送信する第２の送信機が設けられる。データの検索のためにブルーム・フィルタを使用することによって、はるかに柔軟性のある検索を組み立てることが可能になる。
【００１１】
要求ノードが検索タームを取得できる多くの方法と、使用可能な多くの異なるタイプのデバイスとが存在する。デバイスについてのオプションの例には、ユーザによる検索タームの入力を可能にするユーザ入力デバイスと、検索タームを生成するプロセッサとが含まれる。
【００１２】
オプションとして、第１の送信機は、ブルーム・フィルタを、ＲＥＬＯＡＤ要求メッセージで検索ノードに送信する。
【００１３】
第２の態様によれば、構造化Ｐ２Ｐネットワークで用いられる検索ノードが提供される。検索ノードは、検索タームから生成されたブルーム・フィルタを含むメッセージを、要求ノードから受信する受信機を備える。また、データベースに問い合わせを行うために使用されるデータベースアクセス機能が設けられる。当該データベースは、Ｐ２Ｐネットワーク内の他のノードと関連付けられた少なくとも１つの他のブルーム・フィルタを格納している。受信されたブルーム・フィルタと他のブルーム・フィルタとがマッチ（合致）するか否かを判定するプロセッサが設けられる。ブルーム・フィルタと他のブルーム・フィルタとがマッチすると、送信機が、他のノードの識別子を要求ノードに向けて送信し、それにより、要求ノードは、要求データについて当該他のノードに問い合わせることができる。
【００１４】
オプションとして、検索ノードは、他のノードからブルーム・フィルタを受信する第２の受信機を更に備え、プロセッサは、ブルーム・フィルタの送信元である他のノードの識別子に関連付けられたブルーム・フィルタを、データベースに追加する。
【００１５】
送信機は、オプションとして、ブルーム・フィルタを、他の検索ノードに向けて送信する。これにより、より多くの検索ノードが要求ノードに代わってデータを探すことが可能になるとともに、要求データを提供可能な他のピアノードの識別子を要求ノードが取得できる可能性を増加させることが可能である。
【００１６】
オプションの実施形態では、ブルーム・フィルタは、要求ノードから、ＲＥＬＯＡＤ要求メッセージで受信される。
【００１７】
第３の態様によれば、構造化Ｐ２Ｐネットワークで用いられるピアノードが提供される。ピアノードは、メモリの形式で、コンピュータ読み取り可能な記憶媒体を備え、当該メモリは、データを格納するために使用される。格納されたデータの少なくとも一部を使用してブルーム・フィルタを生成するプロセッサが設けられる。ブルーム・フィルタとノードの識別子とを検索ノードがデータの検索に使用するために、ブルーム・フィルタとノードの識別子とを検索ノードに送信する送信機が設けられる。
【００１８】
第４の態様によれば、構造化Ｐ２Ｐネットワークを検索する方法が提供される。要求ノードは、検索タームを取得し、当該検索タームを使用してブルーム・フィルタを生成する。当該ブルーム・フィルタは、検索ノードに送信され、検索ノードは、受信したブルーム・フィルタと、検索ノードがアクセス可能なデータベースに格納されている少なくとも１つの他のブルーム・フィルタとを比較する。当該他のブルーム・フィルタは、Ｐ２Ｐネットワーク内の他のノードに関連付けられている。ブルーム・フィルタと他のブルーム・フィルタとがマッチすると、検索ノードは、他のノードの識別子を、要求ノードに向けて送信する。
【００１９】
オプションとして、本方法は、検索ノードにおいて、要求ノードからブルーム・フィルタを受信する前に、他のノードがアクセス可能なデータを使用して生成された他のブルーム・フィルタを、当該他のノードから受信するステップを更に含む。他のノードから受信された他のブルーム・フィルタと、当該他のノードについての関連した識別子とが、データベースに格納される。
【００２０】
本方法は、オプションとして、検索が成功する可能性を高めるために、検索ノードが、受信されたブルーム・フィルタと、データベースに格納されている少なくとも１つの他のブルーム・フィルタとの比較の後に、要求を他の検索ノードに送信するステップを含む。
【００２１】
この場合、その比較の結果は、他の検索ノードに要求を送信する前に当該要求に付加され、それにより、応答が最終的に要求ノードに返送される際に、当該応答に、全ての検索ノードによって行われた比較の結果が含まれることになる。
【００２２】
ブルーム・フィルタは、オプションとして、ＲＥＬＯＡＤ要求メッセージで検索ノードに送信される。
【００２３】
第５の態様によれば、要求ノードで実行された際に、第１の態様で上述したように当該要求ノードを機能させる、コンピュータ読み取り可能なコード手段を含むコンピュータ・プログラムが提供される。
【００２４】
第６の態様によれば、検索ノードで実行された際に、第２の態様で上述したように当該検索ノードを機能させる、コンピュータ読み取り可能なコード手段を含むコンピュータ・プログラムが提供される。
【００２５】
第７の態様によれば、ピアノードで実行された際に、第３の態様で上述したように当該ピアノードを機能させる、コンピュータ読み取り可能なコード手段を含むコンピュータ・プログラムが提供される。
【００２６】
第８の態様によれば、第５、第６または第７の態様のいずれかで上述したコンピュータ・プログラムを格納した、コンピュータ読み取り可能な記憶媒体が提供される。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施形態に係るピアツーピア・ネットワーク及びシグナリングをブロック図で概略的に示す図。
【図２】本発明の実施形態に係るメッセージ構成をブロック図で概略的に示す図。
【図３】本発明の実施形態に係る検索に必要となるシグナリングを示すシグナリング図。
【図４】本発明の実施形態に係るピアノードをブロック図で概略的に示す図。
【図５】本発明の実施形態に係る検索ファシリテータ・ノードをブロック図で概略的に示す図。
【図６】ピアツーピア・ネットワークで使用される、本発明の実施形態に係るノードをブロック図で概略的に示す図。
【発明を実施するための形態】
【００２８】
上述のように、ＤＨＴを使用したＰ２Ｐネットワークの検索は、ピアノードが検索しているリソース（または、リソースの識別子）についての正確な知識を必要とする。発明者は、ブルーム・フィルタ（Bloom filter）を使用して、より柔軟性があり、かつ、より制限の少ない検索を実行できることに気が付いた。
【００２９】
ブルーム・フィルタは、要素が集合（セット）のメンバーであるかをテストするために使用される、空間効率の良い確率的データ構造である。偽陽性（false positives）は可能性があるが、偽陰性（false negatives）はない。偽陽性を有する可能性は、要素の数とともに増加する。空のブルーム・フィルタは、全てが０の値を有するように設定された、複数のビットから成る配列である。ブルーム・フィルタに要素を追加するために、ハッシュ関数が適用される。例えば、リソースに関連するデータが追加される場合、ハッシュ関数が当該データに適用され、その計算結果は、ブルーム・フィルタにおける配列位置と解釈される。その結果、ブルーム・フィルタ内のそれらの配列位置は、１の値に設定される。より多くの要素を追加可能であり、これにより、２個以上の要素について、１に設定されている値に衝突が発生する可能性がある。したがって、ブルーム・フィルタは、複数の要素が配列内で同一の１の値を生じさせる場合、偽陽性となりうるとともに、より多くの要素がブルーム・フィルタに追加されると、ブルーム・フィルタに問い合わせを行った際に偽陽性が返される可能性がより高くなる。しかし、要素がブルーム・フィルタに入れられた場合、配列内のビットが１に設定されるのみであるため、偽陰性を返しえないことは明らかである。
【００３０】
図１を参照すると、ネットワークは、（円で示される）複数のピアノードを含む。本例では、ピアノード１は、リソースについてネットワークを検索しようとしている。ネットワークは、検索ノードに指定されている１つ以上のピアノードを更に含み、これらのピアノードは、本明細書では検索ファシリテータ（ＳＦ：search facilitator）２，３，４，５として参照される。
【００３１】
ピアノード１が、ジョン・スミス（John Smith）の連絡先情報を見つけようとしている例について検討する。ピアノード１が、ＤＨＴのエントリに完全にマッチ（合致）する要求を組み立てない限り、ピアノード１は、ジョン・スミスの連絡先情報を見つけることはできない。
【００３２】
ＳＦ２は、他のピアノードに格納されているデータから得られるブルーム・フィルタを格納するために使用される。この場合、１つ以上のＳＦは、ジョン・スミスの連絡先の詳細に関連する１つ以上のブルーム・フィルタを格納している。
【００３３】
ピアノード１は、ＳＦ２に問い合わせるために、タグをベースとした検索を使用する。この場合、ジョン・スミスに関連するデータは、［SIP URI：john.smith@work.com; 名前: スミス, ジョン; アドレス:; 電話番号: +331234567; Email: john.smith@yahoo.fi; タイプ:人, 会社：ファーム,...］に従った、特定のパラメータまたはタグを有しているものとする。
【００３４】
連絡先情報を格納しているピアノードは、上記で示したパラメータを用いてブルーム・フィルタを作成する。あるいは、ＳＦがブルーム・フィルタを作成する。これにより、ブルーム・フィルタはＳＦに格納される。なお、ブルーム・フィルタは、手動でまたは自動で作成可能である。ＳＦにブルーム・フィルタを格納することは、全てのデータのレコードをＳＦに格納するよりも、はるかに空間効率が良く、それにより、記憶空間の節約となる。ＳＦに格納されるブルーム・フィルタは、ピアノードがＤＨＴ検索を実行するために必要となる全ての情報を有することなくデータの検索を実行しようとする際に、使用される。
【００３５】
本例では、ピアノード１は、ジョン・スミスに関連する部分的な情報のみを有している。この場合、ピアノード１が有している情報は、ジョン・スミスという名前と、連絡先のタイプ（人）のみである。したがって、ピアノード１は、既知の情報についてブルーム・フィルタを計算し、当該ブルーム・フィルタの送信先のＳＦを決定する。これにより、ステップＳ１で、要求メッセージがＳＦ２に送信され、当該要求メッセージには、ブルーム・フィルタが含まれる。ＳＦ２は、受信したブルーム・フィルタと、ＳＦ２のメモリに格納されているブルーム・フィルタとを比較するとともに、ＳＦ２に格納されているブルーム・フィルタとの陽性のマッチ（positive match）が見つかった場合、ＳＦは、格納されているブルーム・フィルタに関連付けられたノードの識別子を用いて応答する（reply）。これにより、ピアノード１は、要求した情報を有しているピアノードから情報を取得することが可能になる。
【００３６】
ＳＦ２は、ブルーム・フィルタに対する適切なマッチのリストをすぐに返すことができる一方、より良好なマッチが見つかる可能性があるため、他のＳＦに要求が転送されてもよい。図１に示す例では、ＳＦ２は、ステップＳ２で、要求を第２のＳＦ３に転送する。この処理は、ステップＳ３及びＳ４において繰り返され、ＳＦ４及び５に要求が転送される。最終的に、Ｓ５で、ＳＦ５からピアノード１へ、応答が送信される。当該応答には、最も可能性の高い全てのマッチが含まれ、その結果、要求されている情報を取得するために、特定されたピアノードに問い合わせを行うことが可能である。
【００３７】
なお、本実施形態では、送信されている要求が、各ＳＦに順に送信される場合を説明しているが、代替的な実施形態では、ピアノード１は、要求を各ノードに送信してもよい。これは、全ての要求がほぼ同時に送信されるように行われてもよいし、あるいは、ピアノード１は、他のＳＦから応答を受信した後にのみ要求をＳＦに送信することで、各ＳＦに順に要求を送信してもよい。いずれの場合にも、ピアノードは、各ＳＦから応答を受信する。
【００３８】
本発明の一実施形態では、ＳＦ１は、ＲＥＬＯＡＤオーバレイ・ネットワークにおけるノードである。この場合、問い合わせメッセージは、要求（リクエスト）の形式で送信され、図２に示すメッセージ構成を有する。メッセージ６は、ヘッダ７と、検索フィルタ９を含むメッセージ・コンテンツ８とを有している。セキュリティ・ブロック１１も存在する。応答メッセージは、要求メッセージと同じ構成を有し、更に、ノードＩＤリスト９を含む。
【００３９】
検索ファシリテータ（ＳＦ）２は、要求メッセージを受信すると、ペイロードのブルーム・フィルタと、ＳＦ２が格納しているブルーム・フィルタとを比較する。格納されているブルーム・フィルタの上位集合（superset）（即ち、高い割合のビットのマッチ）である、異なるフィルタが存在する場合、検索ファシリテータ２は、フィルタにマッチするピアのノードＩＤを用いて応答する。
【００４０】
図１は、オーバレイ・ネットワークにおけるルーティングが再帰的であり、また、メッセージが２つ以上のＳＦに送信されることを示しているが、他の代替案も実現可能である。例えば、ＳＦ２は、他のノードに要求メッセージを送信するのではなく応答で、ピアノード１に直接応答してもよい。
【００４１】
図３を参照すると、上述の実施形態に係るシグナリングが示されている。以下のナンバリングは、図３に対応している。
【００４２】
Ｓ６．ピアノード１は、検索タームを取得する。これは、例えば、自動化された検索用に生成されてもよいし、または、ユーザによって入力されてもよい。
【００４３】
Ｓ７．ピアノード１は、ジョン・スミスの連絡先情報を検索しようとしており、そのため、ターム「ジョン」、「スミス」及び「人（person）」を使用してブルーム・フィルタを生成する。
【００４４】
Ｓ８．ピアノード１は、ＲＥＬＯＡＤメッセージにおけるブルーム・フィルタの送信先とするＳＦを決定し、ＲＥＬＯＡＤ要求をＳＦ２に送信すべきと決定する。この決定は、サービス発見機構（service discover mechanism）を使用して行われ、その例はＲｅＤｉＲである。
【００４５】
Ｓ９．生成されたブルーム・フィルタを含むＲＥＬＯＡＤ要求がＳＦ２に送信される。
【００４６】
Ｓ１０．ＳＦ２は、要求に含まれるブルーム・フィルタと、格納されているブルーム・フィルタとを比較して、格納されているブルーム・フィルタに従った情報を有するノードＩＤのリストを決定する。なお、この情報は、いくつかの偽陽性の結果を含んでいてもよいが、偽陰性の結果は含み得ない。
【００４７】
Ｓ１１．ＳＦ２は、ジョン・スミスについての連絡先情報を有しているノードのノードＩＤを含む、ＲＥＬＯＡＤ応答を、ピアノード１に送信する。あるいは、オーバレイ・ネットワーク内の別のＳＦに要求が転送されてもよい。
【００４８】
上記の例では、ＲＥＬＯＡＤプロトコルが使用されることを想定しているが、Ｐ２ＰＰまたはプロプライエタリ・プロトコルのような他のプロトコルを使用するメッセージによって、同様のシグナリングを搬送できることが理解されよう。
【００４９】
ＳＦ２が効率的に機能するためには、Ｐ２Ｐネットワーク内の他のピアノードが保持するデータに関連するブルーム・フィルタを、ＳＦ２が取得しなければならない。他のピアノードは、当該ピアノードがアクセスを有するデータを表すブルーム・フィルタを格納しており、これらのブルーム・フィルタは、少なくとも１つのＳＦに送信される。
【００５０】
次に、図４を見ると、ピアノード１が示されている。ピアノード１は、検索タームを取得するデバイスを備えている。これは、例えば、キーボード、マウス、タッチスクリーン等の、データ入力デバイスであってもよい。これにより、ピアノード１のユーザが、検索タームを入力可能になる。あるいは、デバイス１２は、自動化された検索の一部として、検索タームを自動的に生成するプロセッサであってもよい。プロセッサ１３は、検索タームを使用してブルーム・フィルタを生成するために、設けられている。第１の送信機１４は、ブルーム・フィルタをＳＦ２に送信する。第１の受信機１５は、検索タームに対応するデータであって、ブルーム・フィルタに対応する他のブルーム・フィルタによって特定されるデータへのアクセスを有する、Ｐ２Ｐネットワーク内の他のノードの識別子を、ＳＦまたは他のＳＦから受信する。第２の送信機１６は、他のノードにデータの要求を送信するために、更に設けられている。
【００５１】
他の実施形態では、ピアノード１は、メモリ１７の形式の、コンピュータ読み取り可能な記憶媒体を備えている。コンピュータ・プログラム１８は、メモリ１７に格納されていてもよい。当該コンピュータ・プログラムがプロセッサによって実行されると、当該プログラムは、ピアノード１を上述のように動作させる。
【００５２】
図５は、ＳＦ２を示している。ＳＦ２は、ピアノード１からメッセージを受信するための受信機１９を備えており、当該メッセージは、検索タームから生成されたブルーム・フィルタを含んでいる。データベースアクセス機能２０は、データベース２１に問い合わせを行うために設けられている。なお、データベース２１は、ＳＦに局所的に設置されてもよいし、または、別の場所に離れて設置されてもよい。図４に示す例では、データベース２１はＳＦ２に設置されている。データベースには、他のピアノードから取得されたブルーム・フィルタが追加され、各ブルーム・フィルタは、当該ブルーム・フィルタの取得元のピアノードの識別子に関連付けられている。
【００５３】
プロセッサ２２は、ピアノード１から受信されたブルーム・フィルタが、データベース２１に格納されているいずれかのブルーム・フィルタとマッチするかを判定するために、設けられている。マッチする場合、送信機２３は、他のノードの識別子をピアノード１に送信する。
【００５４】
他の実施形態において、ＳＦ２は、メモリ２４の形式の、コンピュータ読み取り可能な記憶媒体を備えている。コンピュータ・プログラム２５は、メモリ２４に格納されていてもよい。当該コンピュータ・プログラムがプロセッサによって実行されると、当該プログラムは、ＳＦ２を上述のように動作させる。
【００５５】
ＳＦ２が、他のＰ２Ｐノードからデータベース２１に追加するためのブルーム・フィルタを取得する場合、ＳＦ２は、少なくとも１つのブルーム・フィルタを含むメッセージを他のピアノードから受信するための、第２の受信機２７を備える。これにより、プロセッサ２２は、ブルーム・フィルタと、当該ブルーム・フィルタの送信元の関連ノードとを、データベース２１に追加するために、受信した情報を使用することが可能である。
【００５６】
ＳＦ２は、単独のノードとして実装されてもよいし、例えば、ＤＨＴピア上のサーバ・コンポーネントとして実装されてもよい。
【００５７】
データベース２１に追加するためには、各ＳＦは、Ｐ２Ｐネットワーク内の他のノードからブルーム・フィルタを受信しなければならない。図６は、そのようなノード２８を示している。ノード２８は、データを格納するためのメモリ２９の形式の、コンピュータ読み取り可能な記憶媒体を備えている。プロセッサ３０は、格納されているデータの少なくとも一部を使用してブルーム・フィルタを生成するとともに、当該ブルーム・フィルタとノードの識別子とをＳＦ２に送信するために、送信機３１を使用する。これにより、ＳＦが、データの検索において、ブルーム・フィルタとノードの識別子とを使用可能になる。
ＳＦ２からブルーム・フィルタの要求を受信するために、受信機３２が更に設けられてもよい。
【００５８】
他の実施形態において、コンピュータ・プログラム３３がメモリ２９または異なるメモリに格納される。コンピュータ・プログラム３３がプロセッサによって実行されると、当該プログラムは、ノード２６を上述のように動作させる。
【００５９】
本発明によれば、コンテンツが検索タームに完全にマッチしない場合であっても、任意のタイプのデータでありうるコンテンツを、ピアノード１が検索することが可能になる。複数のノードと当該ノードが要求されたデータを有している可能性とのリストを提供するＳＦを使用することによって、本発明は、更に、要求ピアノードがデータを取得する方法を提供する。上述の説明では、ＲＥＬＯＡＤプロトコルを例示的なプロトコルとして使用しているが、任意の適切なプロトコルが使用されうることが理解されよう。
【００６０】
例として、ユーザがＰ２Ｐネットワークにおいて特定の映画を検索している場合、先行技術の方法を使用すると、ユーザは、例えば、映画の名称等の厳密なデータを知っている必要があるであろう。本発明を使用すると、ユーザは、より緩い検索タームを組み立てることができ、それでも映画を見つけることが可能である。この場合、当該映画に関連し、かつ、ＳＦ２に格納されているブルーム・フィルタは、値［タイトル: オリンピック 2010, ビットレート: 162bps, 長さ: 200分, サイズ: 700MB, フォーマット: avi, タイプ: 映画, ジャンル: スポーツ, 年: 2010,...］をハッシングすることによって作成されうる。当該映画を探しているが、厳密なタイトルを知らないピアノード１は、検索ターム「映画 スポーツ 2010」を使用することができる。ブルーム・フィルタは、これらのタームをハッシングすることによって作成されるとともに、ＳＦ２に格納されているブルーム・フィルタと陽性のマッチを有することになる。ＳＦ２は、格納されているブルーム・フィルタに関連付けられたノードの識別子を用いて応答し、ピアノード１は、当該ノードに直接、映画を要求することが可能である。
【００６１】
代替的な実施形態では、ＳＦは、データを格納しているノードに直接、要求を転送してもよく、これにより、ピアノード１が個別の要求を行うことを必要とすることなく、当該ノードが、要求ピアノード１にデータを直接提供することが可能になる。
【００６２】
添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、上述の実施形態に対する種々の変形が可能であることが、当業者には理解されよう。
【００６３】
以下の略語が本明細書において使用されている。
ＲＥＬＯＡＤ：Resource LOcation And Discovery（リソース位置特定及び発見）
ＤＨＴ      ：Distributed Hash Table（分散ハッシュテーブル）
Ｐ２Ｐ      ：Peer-to-peer（ピアツーピア）
Ｐ２ＰＰ    ：Peer-to-peer protocol（ピアツーピア・プロトコル）
Ｐ２ＰＳＩＰ：Peer-to-peer Session Initiation Protocol
（ピアツーピア・セッション開始プロトコル）
ＳＦ        ：Search Facilitator（検索ファシリテータ）
【図１】
0005666719.tif 000002
【図２】
0005666719.tif 000003
【図３】
0005666719.tif 000004
【図４】
0005666719.tif 000005
【図５】
0005666719.tif 000006
【図６】
0005666719.tif 000007