【文献】
Frank Dabek,Vivaldi: a decentralized network coordinate system,SIGCOMM '04 Proceedings of the 2004 conference on Applications, technologies, architectures, and protocols for computer communications ,2004年10月,15-26頁,URL,http://dl.acm.org/citation.cfm?id=1015471
【文献】
藤樫 淳平,P2Pシステムにおける実ネットワークトポロジを考慮したオーバレイネットワークトポロジ構築に関する一考察,マルチメディア,分散,協調とモバイル(DICOMO2008)シンポジウム論文集 情報処理学会シンポジウムシリーズ,日本,社団法人情報処理学会,2008年 7月 2日,第2008巻 第1号,925-931頁
(58)【調査した分野】(Int.Cl.,DB名)
前記ノード情報提供手段が、前記位置情報記憶手段から、前記第1のデータアイテムを保有する各データノードの座標と第1のデータノードの座標を検索し、検索した座標に基づいて、第1のデータアイテムを保有する各データノードと前記第1のデータノードとの間の距離を計算し、計算した距離の昇順に基づいて第1のデータアイテムを保有するデータノードの中から1つ以上のデータノードを選択するノード選択手段を含むことを特徴とする請求項1に記載のサーバ。
各データアイテムについて、前記P2Pネットワークにおいてデータアイテムを保有するデータノードを示すノード情報を格納するノード情報記憶手段を、さらに備えることを特徴とする請求項1に記載のサーバ。
第1のデータノードが第2のデータアイテムを保有することを示す情報を受信すると、前記ノード情報記憶手段に格納されたノード情報に、受信した情報を追加するノード情報更新手段を、さらに備えることを特徴とする請求項3に記載のサーバ。
第1のデータノードと他のデータノードとの間のデータアイテム交換の状態を示す第1のデータノードからフィードバックされた性能情報を受信すると、受信した性能情報に基づいて前記位置情報記憶手段に格納された座標情報を更新する位置情報更新手段を、さらに備えることを特徴とする請求項1に記載のサーバ。
第1のデータノードが第2のデータアイテムを保有することを示す情報を受信すると、各データアイテムを保有するデータノードを示すノード情報に、受信した情報を追加するステップをさらに含むことを特徴とする請求項9に記載の方法。
各データアイテムを保有するデータノードを示すノード情報において、各データアイテムを保有するデータノードは、座標系におけるデータノードの座標によって配置され、
前記1つ以上のデータノードを選択するステップが、
座標情報に基づいて第1のデータノードを検索するステップと、
前記第1のデータノードの座標を開始点として、前記ノード情報において配置された第1のデータアイテムを保有するデータノードから1つ以上のデータノードを連続して選択するステップとを含むことを特徴とする請求項9に記載の方法。
各データアイテムを保有するデータノードを示すノード情報において、各データアイテムを保有するデータノードは、座標系におけるデータノードの座標によって配置され、
前記ノード情報に受信した情報を追加するステップが、
前記座標情報に基づいて、第1のデータノードの座標を検索するステップと、
第2のデータアイテムを保有するデータノードの中で、第1のデータノードが第1のデータノードの座標に基づいて配置されるように、検索した座標に従って、受信した情報を前記ノード情報に追加するステップとを含むことを特徴とする請求項11に記載の方法。
第1のデータノードと他のデータノードとの間のデータアイテム交換の状態を示す第1のデータノードからフィードバックされた性能情報を受信すると、受信した性能情報に基づいて前記座標情報を更新するステップをさらに含むことを特徴とする請求項9に記載の方法。
前記ノード情報提供手段が、前記位置情報記憶手段から、前記第1のデータアイテムを保有する各データノードの座標と第1のデータノードの座標を検索し、検索した座標に基づいて、第1のデータアイテムを保有する各データノードと前記第1のデータノードとの間の距離を計算し、計算した距離の昇順に基づいて第1のデータアイテムを保有するデータノードの中から1つ以上のデータノードを選択するノード選択手段を含むことを特徴とする請求項15に記載のシステム。
前記サーバが、各データアイテムについて、前記P2Pネットワークにおいてデータアイテムを保有するデータノードを示すノード情報を格納するノード情報記憶手段を、さらに備えることを特徴とする請求項15に記載のシステム。
前記データノードが、前記データノードと他のデータノードとの間のデータアイテム交換の状態を示す性能情報を収集し、収集した性能情報を前記サーバにフィードバックする性能情報フィードバック手段を含み、
前記サーバが、データノードからフィードバックされた性能情報を受信すると、受信した性能情報に基づいて前記位置情報記憶手段に格納された座標情報を更新する位置情報更新手段をさらに含むことを特徴とする請求項15に記載のシステム。
【背景技術】
【0002】
近年、インターネットアプリケーション分野ではP2P技術が注目を集めている。この技術は、インターネットユーザがリソースを効率的に共有するための新しい方式を提供するものである。P2Pネットワークにおいては、ノードの選択が重要な問題となる。データノードは、他のデータノードとリソース(データアイテム)を交換したいときに、P2Pネットワーク内のサーバに対して要求を発行することができる。サーバはこのリソースを保有するデータノードを検索し、その中からいくつかのノードを選び、その情報を要求元に返す。その後、要求元はこれらのノードから目的のリソースを直接ダウンロードすることができる。
【0003】
既存のP2Pシステムでは、リソースを保有するノードからいくつかのノードが無作為に選択されるのが一般的である。このような方法では、ネットワークを効率的に利用することはできない。例えば、膨大な量のネットワークトラフィックがインターネットサービスプロバイダ(ISP)のバックボーンを通過するため、バックボーンに多大な送信負荷がかかる。また、ネットワークトラフィックは複数のISPを横断して送信されることが多いため、大量なネットワーク間(ISP間)トラフィックが発生する。さらに、このような方法では、提供されるサービスの品質と性能にも影響が出る。それは、P2Pネットワーク内に通信遅延が少ないノードが存在していたとしても、無作為ノード選択機構が通信遅延の多い他のノードを選択する可能性があるからである。
【0004】
この問題を解決するため、位置情報に基づく新しいP2Pシステムが提案されている。この方法とは、ノード選択の際に、「近接」ノードを優先的に選択するものである。無作為ノード選択機構の問題は、近接するノードを選択することで解決される。そのため、ネットワークの利用効率は高まり、ネットワーク間トラフィックは減少し、アプリケーションの性能が向上する。
【0005】
2007年8月15日付けの中国特許出願公開CN101018172A、“Method for Optimizing P2P Transmission within Metropolitan Area Network”(メトロポリタンエリアネットワークにおけるP2P送信の最適化方法)(特許文献1)では、メトロポリタンエリアネットワーク(都市規模ネットワーク)用P2Pアプリケーションのための最適化方法が開示されている。特許文献1では、トポロジサーバとインデキシングサーバを追加することにより、P2Pトラフィックの発生をネットワークの縁部のみに限定してバックボーンにかかる送信負荷を軽減し、それによりP2Pに起因するネットワークの輻輳を回避することが試みられる。
【0006】
Sigcomm 2008で発表された“P4P:Provider Portal for Applications”(P4P:アプリケーション用プロバイダポータル)、Haiyong Xie,Y.Richard Yang,Arvind Krishnamurthy,Yanbin Liu,Avi Silberschatz(非特許文献1)では、P4Pと呼ばれる新しいアーキテクチャが提案されている。このアーキテクチャでは、ネットワークトラフィックの制御において、P2PアプリケーションとISP間でより効率的に連携することが可能になる。この機構は、既存のP2Pアプリケーションの性能を維持し、さらには向上させる一方で、ISP側のコストを削減することができる。
【0007】
2008年8月6日付けの中国特許出願公開CN101237467A、“Mobile P2P Network Resource Discovering Method Introducing Vector Locating”(ベクトル位置決めを導入したモバイルP2Pネットワークリソース発見方法)(特許文献2)では、ベクトル位置決めを導入したモバイルP2Pネットワークリソース発見方法が開示されている。この方法では、極座標位置決め理論を導入して、セルラーネットワーク全体をホーム地域、距離、および方向によって分割し、位置ベクトル情報を保持する新しい経路指定テーブルを確立することにより、セルラーネットワークのための迅速で高精度な位置決めと、リソースの双方向ルックアップとが実現されている。
【0008】
図1は、特許文献1に記載されるメトロポリタンエリアネットワークの構造を示す。ユーザコンピュータは、P2Pネットワーク内のデータノードとして動作する際には、最初に建物スイッチにアクセスし、次にセルスイッチに接続し、アクセス層スイッチまたはルータ(以下、「アクセススイッチ」という)に接続し、さらに集約層スイッチまたはルータ(以下、「集約スイッチ」という)に接続し、最後にコアスイッチまたはルータに接続するのが一般的である。メトロポリタンエリアネットワークのコアネットワークは、概して、1つ以上のコアスイッチまたはルータで構成される。また、典型的には、建物スイッチは1つのサブネットで構成される。
【0009】
特許文献1で開示されたメトロポリタンエリアネットワーク内のP2P送信の最適化方法は、1)P2Pノードがリソースのダウンロードを要求してきたときに(このノードは「要求元P2Pノード」と呼ばれる)、P2Pインデキシングサーバを介して、このリソースを保有するP2Pノード(これらのノードは「リソースP2Pノード」と呼ばれる)のリストをクエリするステップと、2)リソースP2Pノードから、ネットワーク上で要求元P2Pノードに最も近接したノードを検索するステップと、3)要求元P2Pノードが、ネットワーク上の1つ以上の最も近接したリソースP2Pノードからリソースをダウンロードするステップ、とを含む。
【0010】
要求元P2Pノードのために近接ノードを選択するアルゴリズムは、最初に要求元P2Pノードと同じ建物スイッチに接続されたノードを選択し、次に要求元P2Pノードと同じセルスイッチに接続されたノードを選択し、さらに要求元P2Pノードと同じアクセススイッチに接続されたノードを選択し、最後に要求元P2Pノードと同じ集約スイッチに接続されたノードを選択する。選択されたノードの数が要求された数よりも少ない場合は、当該リソースを保有するすべてのノードが近接ノードとみなされる。この方法では、P2Pトラフィックを可能な限りコアネットワークから遠くして、ネットワークの縁部で送信されるようにすることにより、コアネットワークや集約ネットワークのようなバックボーンネットワークを流れるP2Pトラフィックが減少される。
【0011】
近接ノードを検索するためには、メトロポリタンエリアネットワーク内のスイッチまたはルータをコード化する必要がある。
図1に示すように、s1は集約スイッチのコードであり、その値は1〜n1である。s2はアクセススイッチのコードであり、その値は1〜n2である。s3はセルスイッチのコードであり、その値は1〜n3である。s4は建物スイッチのコードであり、その値は1〜n4である。コアネットワークから各コンピュータに至るまでに存在するスイッチまたはルータのコードは、当該コンピュータの位置ベクトル(位置情報)を構成し、S=(s1,s2,s3,s4)と表現される。
【0012】
近接ノードを検索するための計算方法は、以下のとおりである。すなわち、まず2つのノードの位置ベクトルが、それぞれS=(s1、s2、s3、s4)およびS’=(s1’、s2’、s3’、s4’)として定義される。これら2つのノード間の距離ベクトルDは以下のようになる。
D=(d1,d2,d3,d4)
=(s1,s2,s3,s4)−(s1’,s2’,s3’,s4’)
=(s1−s1’,s2−s2’,s3−s3’,s4−s4’),
【0013】
ここで、si=si’のときdi=0であり、si≠si’のときdi=1である。
【0014】
2つの距離ベクトル、すなわちD=(d1,d2,d3,d4)およびD’=(d1’,d2’,d3’,d4’)のサイズを比較する方法は、以下のように定義される。
【0015】
d1=d1’、d2=d2’、d3=d3’、d4=d4’のとき、D=D’であり、
d1=1、d1’=0のとき、
d1=d1’、d2=1、d2’=0のとき、
d1=d1’、d2=d2’、d3=1、d3’=0のとき、または
d1=d1’、d2=d2’、d3=d3’、d4=1、d4’=0のとき、D>D’である。
【0016】
距離ベクトルDが小さいほど、2つのノードのネットワーク上での近接度は高くなる。
【0017】
トポロジサーバ内の位置情報テーブルは、表1に示すような、メトロポリタンエリアネットワークのトポロジ情報を格納している。
【表1】
【発明を実施するための形態】
【0032】
最初に、本明細書で使用するいくつかの用語について説明する。
【0033】
P2Pネットワーク:「P2Pシステム」ともいう。P2Pネットワークには、インデキシングサーバ(「トラッカ」または「appTracker」ともいう)、トポロジサーバ(「iTracker」ともいう)、およびデータ交換を行う複数のデータノードなどが含まれる。これらのデータノードは互いにピア(同位)である。インデキシングサーバとトポロジサーバは論理的なカテゴリであり、総称して「サーバ」と呼ぶことができる。
【0034】
データノード:「ノード」または「ホスト」ともいう。これは、P2Pネットワーク内のユーザ(マシン)である。データノードは、1つ以上の実データアイテムの全体または一部を記憶するエンティティである。データノードは、データアイテムを保有し、P2Pネットワーク内の他のデータノード(ピア)からデータアイテムをダウンロードする(ピアとデータアイテムを交換する)ことができる。データノードとして使用できるのは、データを記憶し、ネットワーク上で他のネットワークノードと通信することのできる、パーソナルコンピュータ(PC)、携帯電話、携帯情報端末(PDA)等の情報処理装置である。
【0035】
ピア:P2Pシステム内のデータノードは互いにピア接続される。
【0036】
データアイテム:「データ」、「リソース」、「データファイル」等と呼ばれることもある。データアイテムは、音声ファイル、映像ファイル、テキストファイル等の、P2Pネットワーク内のデータノード間で共有されるリソースである。
【0037】
ノード情報:サーバによって提供される、データアイテムDを保有するノードの全部または一部を示す情報である。
【0038】
位置情報:本発明においては、「位置情報」には、各データノードの座標を本発明による座標系で示す座標情報が含まれる。
【0039】
データ情報:データノードからサーバに報告される情報であり、データノードがデータアイテムDを保有することを示す。
【0040】
性能情報:データ交換中またはデータ交換後にデータノードからサーバにフィードバックされる情報であり、データ交換の状態(通信遅延、帯域幅等)を示す。
【0041】
P2Pネットワークは複数のデータノードを含むことがあるが、以下の説明では、これらのデータノードのうちの特定のデータノードP(後述するデータノード10)を具体例として使用する。当該技術に精通する当業者には明らかなように、P2Pネットワーク内の他のデータノードはデータノードPと同一または類似した構造のことがあり、データノードPと同一または類似した方法でサーバと対話することができる。
【0042】
以下では、添付図面を参照しながら本発明の実施例について説明する。本明細書および添付図面においては、同一または類似した要素を示すために同一または類似した参照記号を使用していることに注意されたい。また、同一要素を反復して説明することは避けている。
【0043】
図2は、本発明の第1の実施例によるシステム1のブロック図を示す。
図2に示すように、システム1はデータノード10とサーバ20とを備える。
【0044】
ここでのデータノード10は、P2Pネットワーク内の例示的なデータノードPであり、ノード情報要求手段101とデータ交換手段102とデータ情報報告手段103とを含む。
【0045】
サーバ20は、ノード情報記憶手段201と位置情報記憶手段202とノード情報提供手段203とノード情報更新手段204とを含む。
【0046】
データノード10がP2Pネットワーク内の他のデータノード(すなわち、ピア)からデータアイテムD1をダウンロードする場合、まずP2Pネットワーク内のどのデータノードがデータアイテムD1を保有するかを知る必要がある。そのため、データノード10のノード情報要求手段101は、データアイテムD1を保有するデータノードに関する情報を取得するために、ノード情報要求をサーバ20に送信する。ここで、「データアイテムを保有する」とは、ダウンロード可能なデータアイテムの少なくとも一部を保有することを意味することに注意されたい。
【0047】
サーバ20のノード情報記憶手段201は、P2Pネットワーク内で共有されるすべてのデータアイテムに関するノード情報(すなわち、どのノードがどのデータアイテムを保有しているかについての情報)を記憶している。換言すれば、P2Pネットワーク内のデータノード間で共有される各データアイテムについて記憶されたノード情報は、そのデータアイテムを保有するP2Pネットワーク内のすべてのデータノードを示す。例えば、ノード情報記憶手段201は下記のノード情報テーブルのようなノード情報を記憶する。
【表2】
【0048】
位置情報記憶手段202は位置情報を記憶する。具体的には、本発明の位置情報は、P2Pネットワークの各データノードの座標を本発明による座標系で示す座標情報を含む。この座標系は、P2Pネットワーク内の少なくとも数個のデータノード間における通信遅延に基づいて生成される。換言すれば、位置情報記憶手段202はP2Pネットワーク全体に存在するすべてのノードの位置情報を座標として記憶する、ということができる。これは特許文献1の階層的コード化ベースの位置情報表現とは異なる。以下では、本発明による位置情報表現について説明する。
【0049】
本発明においては、既知のP2Pネットワーク内のデータノード間における通信遅延に基づいて多次元ユークリッド座標系が確立され、任意のノード間の通信遅延を予測するために、座標がデータノードに割り当てられる。予測されたノード間の通信遅延は、ネットワーク上の近接度を表現するので、要求元ノードは、データアイテムをダウンロードするノードとして近接したノードを優先的に選択することができる。
【0050】
本発明による座標系においては、インターネット内の各データノードは座標空間内の点として表される。例えば、3次元のユークリッド空間の場合であれば、ノードPの座標はC
p=(x
p,y
p,z
p)である。2つのノード間の距離は、空間内の2つのデータノードを表わす2点間のユークリッド距離によって表現される。例えば、座標(x
p,y
p,z
p)を有するノードPと座標(x
q,y
q,z
q)を有するノードQ間の距離dは、以下のような式となる。
【数1】
【0051】
距離dが小さいほど、2つのノードの近接度は高くなる。
【0052】
位置情報記憶手段202は、位置情報を位置情報テーブルとして記憶することができる。位置情報テーブルは、下記の表3に示すような、P2Pネットワーク内のノードに関する座標情報を格納する。
【表3】
【0053】
上記のノードIDは例として示したものである。
【0054】
座標系は、P2Pネットワーク内のデータノード間の通信遅延に基づいて生成される。ここで、P2Pネットワーク内にM個のデータノード{H
1,…,H
M}があるとする(Mは1より大きい整数)。ノードH
iおよびH
j間の通信遅延が測定され、それに基づいて距離L
ijが導出される。すべてのL
ijを使用して1つのM*M行列が構成される。ここでの目的は、測定された通信遅延(すなわち、L
ij)に基づく距離と、ユークリッド空間座標(「d
ij」とする)によって計算された距離の間の累積誤差が最小化されるように(すなわち、以下の目的関数のFが最小化されるように)、各データノードの座標{C
1,…,C
M}を計算することである。
【数2】
【0055】
ここで、Err()は誤差関数である。例えば、以下のような誤差関数を選択することができる。
Err(L
ij,d
ij)=(L
ij−d
ij)
2
【0056】
L
ij行列においては、座標計算は最適化問題である。この問題は、sigcomm 2004で発表されたVivaldi:A Decentralized Network Coordinate System(分散型ネットワーク座標系),Frank Dabek,etc(非特許文献2)に記載されるバネ力法(spring forces method)や、Infocom 2002で発表されたPredicting Internet Network Distance with Coordinates−Based Approaches(座標ベース方式によるインターネットネットワーク距離の予測),T.S.Eugene Ng etc(非特許文献3)に記載される簡易ダウンヒル法等の、既存の研究によってほぼ解決できる。
【0057】
ただし、実際の使用においては、幅広いネットワーク測定には膨大な費用がかかるため、座標系の最初の確立時に通信遅延を測定できるのは、ノードのごく一部に限られる。そのため、L
ijによって形成されたM*M行列においては、当初は多数のL
ijが値を持たない。そして、システムの稼働を続ける過程で、通信遅延情報が測定および取得されて値が増えていくのである。具体的な座標系構築方法(すなわち、各ノードの座標値Cを計算する方法)は以下のとおりである(非特許文献2のバネ力法を例にとる)。
【0058】
(1)システムのM個のノード{H
1,…,H
M}から、以下の2つの特徴を持つI個のランドマークノード{K
1,…,K
I}を選択する。
【0059】
a.これらのノードK
i,1≦i≦Iは、可能な最大数の他データノードH
j,1≦j≦Mを用いて測定された通信遅延値(すなわち、可能な最大数の他データノードH
j,1≦j≦Mを用いて測定された距離L
ij)を有するため、可能な最大数の近隣ノードを有する。
【0060】
b.これらのノードは、座標空間内で可能な限り広く分散している。これは、K
i,1≦i≦IおよびK
j,1≦j≦I間の距離(L
ij)が最大限に大きい、という具体的事実によって示される。
【0061】
(2)非特許文献2のバネ力法により、I個のランドマークノード間の測定通信遅延ベース距離L
ijを用いて、I個のランドマークノードK
j,1≦j≦Iの座標C(K
i)を計算する。
【0062】
(3)他のR=M−I個のノード{N
1,…,N
R}に関して座標を計算する。各ノードN
iにつき、以下を行う。
【0063】
a.非特許文献2のバネ力法により、当該ノードN
iとI個のランドマークノードK
j,1≦j≦Iの間の測定通信遅延ベース距離L
ijを用いて、当該ノードの座標C
Iを計算する。
【0064】
b.次に、非特許文献2のバネ力法により、当該ノードに比較的近い(すなわち、当該ノードとのL
ijが比較的小さい)ノードと当該ノードN
iの間の測定通信遅延ベース距離L
ijを用いてC
Iを更新し、座標空間内における当該ノードの正確な位置、すなわちN
iの座標C(N
i)、を導出する。
【0065】
図2に戻ると、ノード情報提供手段203は、データノード10からノード情報要求を受信した後、位置情報記憶手段202に記憶された座標情報に基づいて、ノード情報記憶手段201に記憶されたノード情報によって示されるデータアイテムD1を保有するデータノードの中から1つ以上のデータノードを選択し、選択された1つ以上のデータノードを示す情報をデータノード10に提供する。
【0066】
具体的には、ノード情報提供手段203は要求を受信すると、ノード情報記憶手段201内のデータアイテムD1を保有するすべてのデータノード(例えば、T個のノード{P
1,…,P
T})を検索する。ノード情報提供手段203はその後、例えばノードIDやノードのサブネットIPアドレスを用いて、位置情報記憶手段202内の、データアイテムD1を有するこれらのデータノード{P
1,…,P
T}の各々の座標とデータノード10の座標とを検索する。次に、ノード情報提供手段203は、検索された座標に基づいて、データアイテムD1を保有する各データノードとデータノード10との間の距離を計算する。その後、ノード情報提供手段203は、計算された距離の昇順に基づいて、データアイテムD1を保有するすべてのデータノードの中からいくつかのデータノード(例えば、S個のノード{P
i1,…,P
is})を選択する。本発明においては、選択されるデータノード数Sを事前に決定することも、あるいはデータノード10またはサーバ20によって任意の数に指定することもできる。また、「距離が所定のしきい値を下回る」という条件を設定し、この条件を満足するすべてのデータノードが選択されるようにすることもできる。これらはすべて当業者にはよく知られている方法である。選択されたこれらのデータノードは、データノード10に最も近接したデータノードである。ノード情報提供手段203はその後、選択された近接データノードをデータノード10に通知する。
【0067】
データノード10内のノード情報要求手段101は、サーバ20から通知された情報を受信すると、その情報をデータ交換手段102に伝える。データ交換手段102はその後、サーバ20から提供された情報に示される近接データノードからデータアイテムD1をダウンロード(または、近接データノードとデータアイテムD1を交換)する。
【0068】
データノード10(すなわち、ノードP)はさらに、図示するように、データ情報報告手段103も含む。データノード10がP2Pネットワーク内の他のデータノードと交換できるデータアイテムD2を保有している場合には、サーバ20およびP2Pネットワーク内の他のデータノードがこの情報を学習できるように、データ情報報告手段103はサーバ20に対し、データノード10がデータアイテムD2(例:{D2:P})を保有することを示すデータ情報を報告する。
【0069】
そのため、サーバ20はノード情報更新手段204も含む。ノード情報更新手段204は、データノード10のデータ情報報告手段103から報告されてきたデータ情報を受信すると、受信した情報(例:{D2:P})をノード情報記憶手段に格納されるノード情報に追加して、そのノード情報を更新する。例えば、この情報を追加されたノード情報テーブルは、下記の表4のようになる(太字は追加されたエントリ)。
【表4】
【0070】
前述したように、本発明による座標系を確立するために、データノードの地理的な位置情報(このノードが所在する国や都市等)や、他のネットワークトポロジ情報(ユーザコンピュータからコアネットワークに至るまでに存在するスイッチまたはルータ等)の知識は不要である。その代わりに、測定されたノード間の通信遅延情報に基づいて、ノードの座標が決定される。
【0071】
さらに、特許文献1の従来技術とは異なり、座標系は非階層的である。すなわち、座標の複数次元を使用して異なるレベルの情報(国、都市等)や異なるタイプの情報(アクセススイッチ、セルスイッチ等)を表わすのではなく、座標の次元はすべて並列である。そのため、レベルの数と、各レベルが表す情報を事前に設定する必要はない。
【0072】
本発明による位置情報表現方法は、従来技術よりも高い精度と拡張性を実現する。ある2つのノード間について予測された通信遅延は、ネットワーク上におけるこれらのノード間の近接度を表現する。ファイルをダウンロードする際には、近接したデータノードが優先的に選択される。そのため、ダウンロードの性能が向上し、無作為ノード選択によって生じる大量なネットワーク間トラフィックが回避される。座標系は測定により得られるノード間通信遅延情報に基づいた計算によって確立されるため、データノードに関する地理的位置情報や他のネットワークトポロジ情報を知る必要はない。したがって、座標系は高い拡張性を有し、メトロポリタンエリアネットワークや自律システム(AS)、ひいてはインターネット全体にも適用することができる。また、座標系は非階層的なので、レベル数と、各レベルによって表される情報とを事前に設定する必要はない。そのため、使用上の柔軟性と利便性も向上する。
【0073】
さらに、システムをインターネット全体に拡張する際には、ネットワーク毎に座標系の粒度を柔軟に選択することができる。
図3に示すように、既知の情報が多い(通信遅延の測定が可能な範囲が広い)ネットワークの場合は粒度の細かい座標を使用し、既知の情報が少ないネットワークの場合は粒度の粗い座標を使用することができる。
【0074】
図4は、本発明の第1の実施例によるシステム1において実行される方法のプロセスフローを示す。
【0075】
図4に示すように、データノード10とサーバ20間の対話は、データ情報を報告する第1の部分とノード情報を提供する第2の部分との2部構成とすることができる。
【0076】
データ情報を報告する第1の部分では、ステップS110において、データノード10がP2Pネットワーク内の他のデータノードと交換できるデータアイテムD2を保有している場合には、データ情報報告手段103が、データノード10がデータアイテムD2を保有していることを示すデータ情報をサーバ20に報告する。
【0077】
続いてステップS120において、サーバ20のノード情報更新手段204が、データノード10のデータ情報報告手段103から報告されてきた情報の受信後、受信した情報を反映するために、ノード情報記憶手段201に格納されるノード情報を更新する。
【0078】
ノード情報を提供する第2の部分では、ステップS210において、データノード10のノード情報要求手段101が、データアイテムD1を保有するデータノードに関する情報を取得するために、ノード情報要求をサーバ20に送信する。
【0079】
ノード情報提供手段203は、データノード10からノード情報要求を受信すると、ステップS220において、ノード情報記憶手段201内のデータアイテムD1を保有するすべてのデータノードを検索する。
【0080】
その後、ノード情報提供手段203はステップS230において、位置情報記憶手段202内で、データアイテムD1を保有する各データノードすべての座標とデータノード10の座標とを検索し、検索した座標に基づいて、データアイテムD1を保有する各データノードとデータノード10間の距離を計算する。
【0081】
次に、ノード情報提供手段203はステップS240において、計算した距離の昇順に基づいて、データアイテムD1を保有するすべてのデータノードの中から1つ以上のデータノードを選択する。選択されたこれらのデータノードは、データノード10に最も近接したデータノードである。
【0082】
次にステップS250において、ノード情報提供手段203は、選択された近接データノードをデータノード10に通知する。
【0083】
当該技術に精通した当業者には明らかなように、上述した第1の部分と第2の部分の相対的順序は一例にすぎない。例えば、データ情報の報告を行う第1の部分をノード情報の提供を行う第2の部分の後に実行したり、あるいは双方を並列で実行したりすることも可能である。また、データ情報を報告するデータノードとサーバから提供されたノード情報を受信するデータノードは異なるデータノードであってもよく、処理対象となるデータアイテムは同一のデータアイテムであっても異なるデータアイテムであってもよい。
【0084】
図5は、本発明の第1の実施例によるシステム1の具体的な実装を示すブロック図である。
【0085】
図5に示す具体的な実装では、サーバ20はさらに、機能に応じて2つのサーバに分割されている。すなわち、サーバ20はインデキシングサーバ20−1とトポロジサーバ20−2とを備える。こうした分割は概して論理的な機能上の分割であり、必ずしも物理的に分割する必要はない。例えば、インデキシングサーバ20−1とトポロジサーバ20−2とを物理的に同じ位置に置いて、1つのサーバに統合する、という実装も可能である。また、インデキシングサーバ20−1とトポロジサーバ20−2を別々に配置して2つの独立したサーバとする、という実装もありうる。
【0086】
そのため、ノード情報提供手段203が、ノード検索手段203−1とノード選択手段203−2の両方を含むこともある。
【0087】
さらに、ノード検索手段203−1とノード情報記憶手段201とノード情報更新手段204とを、インデキシングサーバ20−1内にすべて含めることもできる。また、ノード選択手段203−2と位置情報記憶手段202とをトポロジサーバ20−2内に含めることも可能である。
【0088】
データノード10の構造は
図2に示す構造と同一とすることができる。
【0089】
ノード検索手段203−1は、データノード10内のノード情報要求手段101からデータアイテムD1を保有するデータノードの情報を求める要求を受信すると、ノード情報記憶手段201内でデータアイテムD1を保有するデータノードを検索し、ノード選択手段203−2に対して、データアイテムD1を保有するデータノードの中からデータノード10に近接した1つ以上のデータノードを選択するよう要求する。
【0090】
ノード選択手段203−2は、ノード検索手段203−1からの要求の受信後、位置情報記憶手段202内でデータアイテムD1を保有する各データノードの座標とデータノード10の座標とを検索し、検索した座標に基づいて、データアイテムD1を保有する各データノードとデータノード10との間の距離を計算し、計算した距離の昇順に基づいてデータアイテムD1を保有するデータノードの中から1つ以上のデータノードを選択し、選択した1つ以上のデータノードをノード検索手段203−1に通知する。
【0091】
ノード検索手段203−1は、選択された1つ以上のデータノードを示す情報を、データノード10のノード情報要求手段101に提供する。
【0092】
図6は、
図5に示すシステムにおいて実行される方法のプロセスフローを示す。
【0093】
図6に示すデータ情報を報告するための第1の部分は、
図4に示す第1の部分と実質的に同じであるため、その説明を書略する。また前述したように、第1の部分と第2の部分の順序は一例にすぎない。例えば、データ情報を報告する第1の部分をノード情報を提供する第2の部分の後に実行したり、あるいは2つの部分を並列で実行したりすることも可能である。また、データ情報を報告するデータノードとサーバから提供されたノード情報を受信するデータノードは異なるデータノードであってもよく、対象となるデータアイテムは同一のデータアイテムであっても異なるデータアイテムであってもよい。
【0094】
ノード情報を提供する第2の部分では、ステップS210において、データノード10のノード情報要求手段101が、データアイテムD1を保有するデータノードに関する情報を取得するために、ノード情報要求をサーバ20に発行する。
【0095】
ノード情報提供手段203のノード検索手段203−1は、データノード10からノード情報要求を受信すると、ステップS220において、ノード情報記憶手段201内のデータアイテムD1を保有するすべてのデータノードを検索する。
【0096】
ノード検索手段203−1は、次のステップS221において、ノード選択手段203−2に対してデータアイテムD1を保有するすべてのデータノードの中からいくつかのデータノードを選択するよう求めるために、ノード選択手段203−2に要求を発行する。
【0097】
その後、ステップS230において、ノード選択手段203−2が位置情報記憶手段202内で、データアイテムD1を保有する各データノードの座標とデータノード10の座標とを検索し、検索した座標に基づいて、データアイテムD1を保有する各データノードとデータノード10間の距離を計算する。
【0098】
次に、ノード選択手段203−2はステップS240において、計算した距離の昇順に基づいて、データアイテムD1を保有するすべてのデータノードの中から1つ以上のデータノードを選択する。選択されたこれらのデータノードは、データノード10に最も近接したデータノードである。
【0099】
次のステップS241において、ノード選択手段203−2は、選択した1つ以上のデータノードをノード検索手段203−1に通知する。
【0100】
ステップS250において、ノード検索手段203−1はさらに、選択された近接データノードをデータノード10に通知する。
【0101】
図7は、本発明の第2の実施例によるシステム1aのブロック図を示す。
【0102】
第2の実施例によるシステム1aは、データノード10とサーバ20aとを備えるが、データノード10は
図2に示すデータノード10と同じであってもよい。
【0103】
本発明の第2の実施例は、近接ノードを選択するための改良型アルゴリズムを適用する。ノードの選択において解決すべき問題は、ノードPがデータアイテムD1を保有するノードを要求する際に、データアイテムD1を保有し、かつ要求元ノードPに近接した位置にあるS個のノードをどのように検索するかということである。第1の実施例では、最初に、P2Pネットワーク内のデータアイテムD1を保有する全T個のノード{P
1,…,P
T}が検索され、その後、要求元ノードPとデータアイテムD1を保有する各ノード{P
1,…,P
T}との間の距離d
i=距離(P,P
i)が計算され、最後に、Pに近接するノードとしてd
iの昇順に基づいてS個のノードが選択されていた。このような方法は、T>>Sのときに効率的ではない。
【0104】
第2の実施例によれば、サーバ20aは、ノード情報記憶手段201aと位置情報記憶手段202とノード情報提供手段203aとノード情報更新手段204aとを含む。
【0105】
ノード情報記憶手段201aに記憶されるノード情報においては、各データアイテムを保有するデータノードは、座標系内にこれらデータノードの座標別に格納される。
【0106】
具体的には、第2の実施例において、位置情報はノード情報テーブルに格納される。すなわち、{P
1,…,P
T}がデータアイテムD1を保有すると想定すると、この情報がノード情報テーブル内に格納されるときには、ユークリッド空間内のこれらT個のノードの位置の順序に従って格納される。要求元ノードPの近接ノードを探索する際には、Pの座標を起点として、ユークリッド空間内におけるPの隣接ノードが検索される。このように、T個のノードが比較されるのではなく、約S個のノードがアクセスされ比較されるので、T>>Sの場合には近接ノードを検索する速度が大幅に向上する。
【0107】
下記の表5は、2次元ユークリッド空間の場合のノード情報テーブルの例を示す。この表に示すように、本実施例によるノード情報テーブルは、各ノードの座標情報を含む。
【表5】
【0108】
図8Aは、本実施例によるノード情報記憶手段201aにノード情報テーブルを記憶するときの概略図を示す。
図8Aに示すように、データアイテムD1を保有する全ノードの情報は各次元の座標順に格納される。データアイテムD1に対しては、例えば、データアイテムD1を保有するすべてのノードのxおよびy座標と、それに対応するノードへのポインタとを格納するために、x[]およびy[]という2つの配列を設けることができる。例えば、配列x[]のi番目の要素は、データアイテムD1を保有する全ノードのx座標においてi番目のx座標であるx
iと、データアイテムD1を保有するノードのうちx
iというx座標を有する全ノードの情報への1つ以上のポインタを格納する。同様に、配列y[]のj番目の要素は、データアイテムD1を保有する全ノードのy座標においてj番目のy座標であるy
jと、データアイテムD1を保有するノードのうちy
jというy座標を有する全ノードの情報への1つ以上のポインタを格納する。
【0109】
ノード情報更新手段204aは、データノード(例:データノード10)から報告された、データアイテム(例:データアイテムD2)を有することについての情報の受信後、まず位置情報記憶手段202内においてデータノード10の座標を検索し、次に検索した座標に基づいて、受信した情報とノードの座標とを、ノード情報記憶手段に記憶されるノード情報へ当該ノードの情報として追加する。そのため、元のノード情報テーブルは、当該ノードの情報を追加された後も上記の形のまま座標内に格納されている。さらに、ノード情報提供手段203aは、データノード(例:データノード10、すなわちノードP)からデータアイテム(例:データアイテムD1)を保有するデータノードの情報を求める要求を受信後、位置情報記憶手段202内でデータノード10の座標を検索し、このデータノード10の座標を起点として、ノード情報記憶手段201a内に記憶されたノード情報にリストされるデータアイテムD1を保有するデータノードの中から、座標系のデータノードを順に選択する。
図8Bはノード情報提供手段203aがデータノードを順に選択するときの概略図を示す。(6,7)の座標を有するノードPが、データアイテムD1を保有するS=5のノードを要求したと想定すると、例えば
図8Aに示すような形式でノード情報を記憶するノード情報記憶手段201a内において、ノード情報提供手段203aはノードPの座標から開始して、各次元の2つの方向に沿って検索の範囲を徐々に拡張していく。このとき検索された範囲内に存在するノードが、ノードPの隣接ノードである。十分な数の隣接ノードが検索されたとき(例えば、ノード数が指定された数に達したとき、または距離がしきい値に達したとき等)、検索範囲の拡張は停止される。
【0110】
例えば、ノード情報提供手段203aは最初に、上記のx[]配列内にx座標=6を格納する要素が存在し、同時にy[]配列内にy座標=7を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(6,7)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示す例では、このようなノードは存在しない。
【0111】
次に、ノード情報提供手段203aは、x[]配列内にx座標=6を格納する要素が存在し、同時にy[]配列内にy座標=6を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(6,6)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示す例では、このようなノードは存在しない。
【0112】
その後、ノード情報提供手段203aは、x[]配列内にx座標=6を格納する要素が存在し、同時にy[]配列内にy座標=8を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(6,8)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示す例では、このようなノードは存在しない。
【0113】
続いて、x[]配列内にx座標=5を格納する要素が存在し、同時にy[]配列内にy座標=7を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(5,7)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示す例では、このようなノードは存在しない。
【0114】
さらに、x[]配列内にx座標=7を格納する要素が存在し、同時にy[]配列内にy座標=7を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(7,7)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示す例では、このようなノードは存在しない。
【0115】
さらに、x[]配列内にx座標=5を格納する要素が存在し、同時にy[]配列内にy座標=6を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(5,6)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示すように、この時点でノードP
1(5,6)が発見される。よって、このノードが、ノードデータアイテムD1を保有し、ノードPに最も近接したノードとして選択される。
【0116】
さらに、x[]配列内にx座標=5を格納する要素が存在し、同時にy[]配列内にy座標=8を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(5,8)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示す例では、このようなノードは存在しない。
【0117】
続いて、x[]配列内にx座標=7を格納する要素が存在し、同時にy[]配列内にy座標=6を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(7,6)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示す例では、このようなノードは存在しない。
【0118】
さらに、x[]配列内にx座標=7を格納する要素が存在し、同時にy[]配列内にy座標=8を格納する要素が存在し、かつこれら2つの要素に格納されているポインタが同じノードをポイントしているかどうかをチェックする。この条件が満足される場合、それは、データアイテムD1を保有し、かつ座標(7,8)を有するもう1つのノードが存在することを意味し、このノードが選択可能である。
図8Aと
図8Bに示すように、この時点でノードP
2(7,8)が発見される。よって、このノードが、データアイテムD1を保有し、ノードPに近接したノードとして選択される。
【0119】
同様にして、ノードP
4(5,9)、P
7(10,8)、およびP
9(4,11)が順に発見される。この時点で、データアイテムD1を保有し、かつノードPに比較的近接したノードとして、計5個のノードが発見されたことになる。その後、これら5ノードの情報が、要求を発行したデータノードPに返すノード情報に含められる。
【0120】
前述したように、ノード情報記憶手段201aに記憶されるノード情報テーブルには、各次元の座標値の順序に従ってノードが格納されている。そのため、指定されたノードに隣接するノードを簡単に発見することができる。
【0121】
図9は、本発明の第2の実施例によるシステム1aにおいて実行される方法のプロセスフローを示す。
【0122】
図4と同様に
図9でも、データノード10とサーバ20a間の対話は、データ情報を報告する第1の部分とノード情報を提供する第2の部分との2部構成となっている。
【0123】
データ情報を報告する第1の部分では、ステップS110において、データノード10がP2Pネットワーク内の他のデータノードと交換できるデータアイテムD2を保有している場合には、データ情報報告手段103が、データノード10がデータアイテムD2を保有していることを示すデータ情報をサーバ20aに報告する。
【0124】
続いてステップS121において、サーバ20aのノード情報更新手段204aが、データノード10のデータ情報報告手段103から報告されてきた情報の受信後、データノード10の位置情報、すなわち座標C(P)を、位置情報記憶手段202に格納する。
【0125】
ステップS122において、ノード情報更新手段204aは、検索された座標に従って、受信した情報をノード情報記憶手段に記憶されるノード情報に追加する。このとき、データアイテムD2を有するデータノードの中で、データノード10がその座標に基づいて配置されるようにする。
【0126】
第2の部分では、ステップS210においてノード情報提供手段203aが、データノード10から送られてきた、データアイテムD1を保有するデータノードに関する情報を取得するための要求を受信すると、ステップS241においてノード情報提供手段203aが、位置情報記憶手段202内でデータノード10の座標C(P)を検索する。
【0127】
ステップS242において、ノード情報提供手段203aが、データノード10の座標を起点として、ノード情報記憶手段201aに記憶されたノード情報にリストされるデータアイテムD1を保有するデータノードからデータノードを順に選択する。
【0128】
ステップS250において、ノード情報提供手段203aは、選択されたデータノードをデータノード10に通知する。
【0129】
ここでも、当該技術に精通した当業者には明らかなように、上述した第1の部分と第2の部分の相対的順序は一例にすぎない。例えば、データ情報を報告する第1の部分をノード情報を提供する第2の部分の後に実行したり、あるいは2つの部分を並列で実行したりすることも可能である。また、データ情報を報告するデータノードとサーバから提供されたノード情報を受信するデータノードは異なるデータノードであってもよく、対象となるデータアイテムは同一のデータアイテムであっても異なるデータアイテムであってもよい。
【0130】
図10は、本発明の第3の実施例によるシステム1bのブロック図を示す。
【0131】
座標系の最初の確立時に通信遅延を測定できるのは一部のノードのみであり、その後のシステムの稼働を続ける過程で、通信遅延情報が測定および取得されて値が増えていく。そのため、ネットワークの状態に応じて位置情報テーブルを更新することができる。ある方法では、ノードが性能情報(通信遅延、帯域幅等)を収集するステップと、データ交換の状態を反映するステップと、ノードの位置情報を更新するためにサーバにそれをフィードバックするステップとを含む。
【0132】
第3の実施例によるシステム1bは、データノード10bとサーバ20bとを含む。
【0133】
データノード10bは、ノード情報要求手段101、データ交換手段102、およびデータ情報報告手段103に加えて、性能情報フィードバック手段104を含む。
【0134】
性能情報フィードバック手段104は、データノード10bと他のデータノードとの間のデータアイテム交換の状態を示す性能情報を収集し、それをサーバ20bにフィードバックする。性能情報とは、データノード10bと他のデータノードとの間のデータアイテム交換中に取得された性能統計情報であり、これには例えば通信遅延や帯域幅等が含まれる。
【0135】
そのため、サーバ20bは位置情報更新手段205も含む。位置情報更新手段205は、データノード10bの性能情報フィードバック手段104からフィードバックされた情報を受信後、受信した情報に基づいて位置情報記憶手段202に記憶された座標情報を更新する。受信された情報に含まれる通信遅延に基づいて座標情報を更新する方法は、前述した通信遅延に基づいて座標情報を計算する方法と同様である。
【0136】
図11は、本発明の第3の実施例によるシステム1bにおいて実行される方法のプロセスフローを示す。
【0137】
図11に示すように、データノード10bとサーバ20b間の対話は、データ情報を報告する第1の部分と、ノード情報を提供する第2の部分と、位置情報を更新する第3の部分という3つに分割することができる。
【0138】
第1の部分と第2の部分は
図9と同じなので、以下では説明を省略する。
【0139】
第3の部分では、ステップS310において、性能情報フィードバック手段104が、データノード10bと他のデータノードとの間のデータアイテム交換の状態を反映した性能情報を収集する。
【0140】
ステップS320において、性能情報フィードバック手段104は、収集した性能情報をサーバ20bにフィードバックする。
【0141】
ステップS33において、サーバ20bの位置情報更新手段205は、サーバ20bの性能情報フィードバック手段104からフィードバックされた情報を受信後、受信した情報に基づいて位置情報記憶手段202に記憶された座標情報を更新する。
【0142】
ここでも、当該技術に精通した当業者には明らかなように、上述した第1の部分、第2の部分、および第2の部分の相対的順序は一例にすぎない。第1の部分、第2の部分、および第3の部分は、他の順序で実行することも、あるいは並列で実行することも可能である。また、データ情報を報告するデータノード、サーバから提供されたノード情報を受信するデータノード、および性能情報をフィードバックするノードは異なるデータノードであってもよく、対象となるデータアイテムは同一のデータアイテムであっても異なるデータアイテムであってもよい。
【0143】
上記では本発明の特定の実施例をいくつか取り上げて説明したが、本発明には様々な修正、組み合わせ、改変をなすことが可能であり、これらの修正、組み合わせ、改変は付記された請求項の範囲内にある限りにおいて本発明に含まれることは、当業者に理解されるであろう。
【0144】
例えば、
図5には第1の実施例による特定の実装を示しているが、こうした特定の実装は第2の実施例や第3の実施例にも同様に適用することができる。