(57)【要約】      （修正有）【課題】帯域制限のある中央サーバを通過することなく、複数のクライアントが互いに情報をやり取りできるピアツーピアネットワークを構築する。【解決手段】発見されたＮＡＴタイプにもとづいてピアツーピアグリッドのためのホストを選択する。各ピアがＮＡＴプロファイル情報を収集し、他のピアと共有する。各ピアは他のピアに対するＮＡＴプロファイル情報を受信する。各ピアは、当該ピアに対するＮＡＴプロファイル情報と、他のピアに対するＮＡＴプロファイル情報とから、２以上のピアのいずれをホストとして指定するべきかを決定する。【選択図】図２
2010244509.tif 000002
【特許請求の範囲】
【請求項１】
２以上のピアの中から、ピアツーピアグリッド内のサービスに対するホストとして指定するべきものを決定するための、１のピアにおける方法であって、
ａ）前記１のピアに対するＮＡＴプロファイル情報を集めるステップと、
ｂ）前記１のピアに対するＮＡＴプロファイル情報を前記２以上のピアの内、１以上の他のピアと共有するステップと、
ｃ）前記１以上の他のピアに対するＮＡＴプロファイル情報を受信するステップと、
ｄ）前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とから、前記２以上のピアのいずれをホストとして指定するかを決定するステップとを含むことを特徴とする方法。
【請求項２】
ステップａ）は、ＳＴＵＮサーバを用いてＮＡＴプロファイル情報を収集するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
ステップｂ）は、前記１のピアと前記１以上の他のピアとの間の前もって確立されたコネクションを介して、前記１のピアに対するＮＡＴプロファイル情報を前記１以上の他のピアに中継するステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記前もって確立されたコネクションには、前記２以上のピアに共通するアプリケーションのためにサーバを利用することが含まれる請求項３に記載の方法。
【請求項５】
前記サーバは、ホストとして指定されたピアによって管理される前記ピアツーピアグリッドに１以上の機能をオフロードすることを特徴とする請求項４に記載の方法。
【請求項６】
前記前もって確立されたコネクションには、ホストとして動作する前記１以上の他のピアの一つが含まれることを特徴とする請求項３に記載の方法。
【請求項７】
ステップｃ）は、前記前もって確立されたコネクションを介して前記１以上の他のピアに対するＮＡＴプロファイル情報を受信するステップを含むことを特徴とする請求項３に記載の方法。
【請求項８】
ステップｄ）は、前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とにもとづいて前記２以上のピアの各々に優先度の値を割り当てるステップと、前記優先度の値にもとづいてホストを選択するステップとを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記ＮＡＴプロファイル情報には、ピアの前段にあるＮＡＴのＮＡＴタイプ、そのＮＡＴがＵＰｎＰ（ｕｎｉｖｅｒｓａｌ  ｐｌｕｇ  ａｎｄ  ｐｌａｙ）をサポートするかどうかに関する情報、そのＮＡＴに対するポート予測可能性情報、そのＮＡＴに対するポート保護情報が含まれることを特徴とする請求項８に記載の方法。
【請求項１０】
前記１以上の他のピアに対するＮＡＴプロファイル情報には、ピアの前段にあるＮＡＴのＮＡＴタイプ、そのＮＡＴがＵＰｎＰをサポートするかどうかに関する情報、そのＮＡＴに対するポート予測可能性情報、そのＮＡＴに対するポート保護情報が含まれることを特徴とする請求項８に記載の方法。
【請求項１１】
前記２以上のピアの内、２以上のピアが等しい優先度の値をもつ場合、ステップｄ）は、等しい優先度の値をもつ前記２以上の潜在的なホストのいずれをホストとして指定するべきかを決定するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１２】
等しい優先度の値をもつ前記２以上の潜在的なホストのいずれをホストとして指定するべきかを決定するステップは、前記２以上の潜在的なホストの各々に異なる序数が割り当てられている場合、等しい優先度の値をもつ前記２以上の潜在的なホストの内、より高い序数をもつものをホストとして指定するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
等しい優先度の値をもつ前記２以上の潜在的なホストのいずれをホストとして指定するべきかを決定するステップは、分散調停アルゴリズムを含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記１のピアがホストとして指定された場合、前記１のピアがホストとして指定された旨を前記１以上の他のピアに通知するステップと、前記１以上の他のピアが接続することを待つステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１５】
ホストに接続されたピアの数を期待されるカウントと比較するステップと、もしホストに接続されたピアの数が期待されるカウントに等しくないなら、ホストに接続されたピアの数を前記１以上の他のピアと共有するステップとをさらに含む請求項１４に記載の方法。
【請求項１６】
もし前記１のピアがホストとして指定されないならば、前記１のピアをホストに接続させることを試みるステップをさらに含む請求項１に記載の方法。
【請求項１７】
もし前記１のピアがホストへの接続に失敗したならば、前記１のピアがホストへの接続に失敗したことを前記２以上のピアに通知するステップをさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
コンピュータプロセッサと、
前記プロセッサに結合したコンピュータメモリと、
前記プロセッサに結合したネットワークインタフェースであって、ピアツーピアグリッドで接続された前記プロセッサと１以上の他のピアデバイスの間の通信を助けるように構成されたネットワークインタフェースと、
前記メモリに具体化されたコンピュータ読み取り可能なインストラクションセットとを含み、
前記コンピュータ読み取り可能なインストラクションは、ピアツーピアグリッドのいずれのピアデバイスを、ピアツーピアグリッド内のサービスに対するホストとして指定するかを決める方法を実装するように構成されており、
前記方法は、
ａ）前記１のピアに対するＮＡＴプロファイル情報を集めるステップと、
ｂ）前記１のピアに対するＮＡＴプロファイル情報を前記２以上のピアの内、１以上の他のピアと共有するステップと、
ｃ）前記１以上の他のピアに対するＮＡＴプロファイル情報を受信するステップと、
ｄ）前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とから、前記２以上のピアのいずれをホストとして指定するかを決定するステップとを含むことを特徴とするピアデバイス。
【請求項１９】
コンピュータ読み取り可能なインストラクションが具体化されたコンピュータ読み取り可能な記録媒体であって、
前記コンピュータ読み取り可能なインストラクションは、ピアツーピアグリッドのいずれのピアデバイスを、ピアツーピアグリッド内のサービスに対するホストとして指定するかを決める方法を実装するように構成されており、
前記方法は、
ａ）前記１のピアに対するＮＡＴプロファイル情報を集めるステップと、
ｂ）前記１のピアに対するＮＡＴプロファイル情報を前記２以上のピアの内、１以上の他のピアと共有するステップと、
ｃ）前記１以上の他のピアに対するＮＡＴプロファイル情報を受信するステップと、
ｄ）前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とから、前記２以上のピアのいずれをホストとして指定するかを決定するステップとを含むことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、本願と同日に出願された、マーク・レスタ・ジェイコブらの「シームレスなホストマイグレーションのためのシステムと方法」と題する同一出願人による米国特許出願第１２／０４９，９５４号に関するものであり、その内容全体を参照によりここに組み入れる。本願は、２００７年１０月５日に出願された「シームレスなホストマイグレーションのためのシステムと方法」と題する米国仮特許出願第６０／９９７，９１８号にも関連し、その開示内容を参照によりここに組み入れる。
【０００２】
本願は、２００５年１０月４日に出願された、ユタカ・タケダらの「シンメトリックなネットワークアドレストランスレータを通過するピアツーピア通信」と題する米国特許出願公報第２００７００７６７２９号に関連し、その内容全体を参照によりここに組み入れる。
【０００３】
［技術分野］
本発明はコンピュータネットワークに関し、特にコンピュータネットワークのクライアント間のピアツーピア通信に対してホストを決定することに関する。
【背景技術】
【０００４】
現在、コンピュータネットワークのクライアント間でゲームプレイをする間、クライアントはサーバと直接通信する。中央サーバはあらゆるクライアントからのデータを処理し、このデータを他のすべてのクライアントに中継する。これにより、ネットワーク上のクライアントは、中央サーバを通して互いにゲームプレイに関わることができるようになる。中央サーバがクライアント間のデータ通信を行う能力は帯域幅で制限される。そのため、ゲームプレイ外の通信は制限される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ゲームプレイデータとは別に、クライアントは、帯域幅制限のある中央サーバを通過することなく互いに情報をやりとりしたいこともある。そのような通信の例として、ＶｏＩＰ（ｖｏｉｃｅ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）、ビットトレント、ビデオデータ、ファイル共有、およびデータストリーミングがある。クライアントが中央サーバを必要とせずに互いに通信することを可能にすることで、中央サーバの責任のいくらかをクライアントにオフロードすることができる。
【０００６】
Ｐ２Ｐネットワークに参加する多数のクライアントの中からホストを決定するとき、ピアツーピアネットワークが構築される。ホストは中央サーバの任務を引き受け、クライアント（以下、Ｐ２Ｐネットワークにおいてホストでないクライアントを指すときは、ピアと呼ぶ）間の通信を管理する。
【０００７】
このような文脈のもとで本発明の実施の形態が考えられた。
【課題を解決するための手段】
【０００８】
本発明のある態様は、２以上のピアの中から、ピアツーピアグリッド内のサービスに対するホストとして指定するべきものを決定するための、１のピアにおける方法である。この方法は、ａ）前記１のピアに対するＮＡＴプロファイル情報を集めるステップと、ｂ）前記１のピアに対するＮＡＴプロファイル情報を前記２以上のピアの内、１以上の他のピアと共有するステップと、ｃ）前記１以上の他のピアに対するＮＡＴプロファイル情報を受信するステップと、ｄ）前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とから、前記２以上のピアのいずれをホストとして指定するかを決定するステップとを含む。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係るＰ２Ｐネットワークを例示する概略図である。
【図２】クライアントの視点から見た、発見されたＮＡＴタイプにもとづいてホストを選択する方法を説明するフローチャートである。
【図３】クライアントの視点から見た、発見されたＮＡＴタイプにもとづくホスト選択の基本的な方法を説明するフローチャートである。
【図４】本発明の実施の形態に係るクライアントインタフェースの一例を説明する概略図である。
【発明を実施するための形態】
【００１０】
［イントロダクション］
ピアツーピア（Ｐ２Ｐ）コミュニケーションを通じてクライアント間の通信を構築しようとするときに生じる一つの問題として、ネットワークアドレストランスレーション（ＮＡＴ）の問題がある。中央サーバに接続されたクライアントはたいていＮＡＴの後ろに位置している。ＮＡＴを使うことにより、ローカルエリアネットワーク（ＬＡＮ）は、内部トラフィックのためにはプライベートＩＰアドレスの集合（第１集合）を使い、外部トラフィックのためにはグローバルＩＰアドレスの集合（第２集合）を使うことが可能になる。したがって、最適なＰ２Ｐネットワークを生成するために、Ｐ２Ｐネットワークにおけるホストが好ましいＮＡＴプロファイルをもつことが望ましい。
【００１１】
こういうわけで、中央サーバに接続されたクライアントの中から望ましいＮＡＴプロファイルをもったホストを決定する方法が技術的に必要とされている。
【００１２】
次の４つのＮＡＴタイプを利用することができる。フルコーンＮＡＴ、制限付きコーンＮＡＴ、ポート制限付きコーンＮＡＴ、およびシンメトリックＮＡＴ。フルコーンＮＡＴは、同じ内部ＩＰアドレスおよびポートからのすべてのリクエストを同じ外部ＩＰアドレスおよびポートにマップするものである。さらに、任意の外部のホストは、マップされた外部アドレスにパケットを送ることにより、内部のホストにパケットを送ることができる。
【００１３】
制限付きコーンＮＡＴでは、同じ内部ＩＰアドレスおよびポートからのすべてのリクエストは同じ外部ＩＰアドレスおよびポートにマップされる。しかし、フルコーンＮＡＴとは違って、（ＩＰアドレスＸをもつ）外部ホストが内部ホストにパケットを送ることができるのは、内部ホストがそのＩＰアドレスＸにパケットを以前送ったことがある場合に限られる。
【００１４】
ポート制限付きコーンＮＡＴは、制限付きコーンＮＡＴに似ているが、制限はポート番号を含む。具体的には、外部クライアントが、ソースＩＰアドレスＸおよびソースポートＰをもつパケットを内部ホストに送ることができるのは、内部ホストが以前そのＩＰアドレスＸおよびポートＰからパケットを送ったことがある場合に限られる。
【００１５】
シンメトリックＮＡＴでは、同じ内部ＩＰアドレスおよびポートから特定のデスティネーションＩＰアドレスおよびポートへのすべてのリクエストは、同じ外部ＩＰアドレスおよびポートにマップされる。もし、同じホストが、同じソースアドレスおよびポートをもつが宛先が異なるパケットを送るなら、異なるマッピングが使われる。さらに、パケットを受信する外部ホストだけがＵＤＰパケットを内部ホストに送り返すことができる。
【００１６】
［ＮＡＴタイプにもとづくホスト選択］
図１は、本発明の実施の形態に係るＰ２Ｐネットワークを例示する概略図である。ネットワーク上のクライアントデバイス１０５Ａ、１０５Ｂ、１０７、および１０５Ｄは、はじめは外部ネットワーク１０９にあるサーバ１０１に接続されている。一例として、サーバ１０１は、外部ネットワーク１０９に接続されたクライアント１０５Ａ、１０５Ｂ、１０７、および１０５Ｄの間でやりとりされるゲームプレイ用のデータをモニタしてもよい。クライアント１０５Ａ、１０５Ｂ、１０７、および１０５Ｄは、対応するＮＡＴ（ｎｅｔｗｏｒｋ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｏｒ）１１１Ａ、１１１Ｂ、１１１Ｃ、および１１１Ｄの後段に配置される。各ＮＡＴはインターネット標準に準拠して構成されており、ローカルエリアネットワーク（ＬＡＮ）が、内部トラフィックに対してはプライベートＩＰアドレスの集合（第１集合）を使い、外部トラフィックに対してはグローバルＩＰアドレスの集合（第２集合）を使うことを可能にする。ほとんどのＮＡＴはＩＰアドレスを動的に変換するため、内部ネットワークが通信を開始する前に、外部ネットワークが内部ネットワークに到達する手段はない。しかしながら、クライアント１０５Ａ、１０５Ｂ、１０７、および１０５Ｄは、サーバ・クライアント関係を構築するので、サーバ１０１とクライアント１０５Ａ、１０５Ｂ、１０７、および１０５Ｄの間の通信はＮＡＴ１１１Ａ、１１１Ｂ、１１１Ｃ、および１１１Ｄによって制限されることはない。
【００１７】
クライアントが互いに直接通信することができるＰ２Ｐネットワークを構築する際、一つのクライアントがホスト１０７として構築され、ホスト１０７を介して、他のピア１０５（Ｐ２Ｐネットワークに接続された、ホストではないクライアント）は互いに直接的な接続を構築することができる。一例として、これに限定するわけではないが、ピア１０５は、完全結合グリッド（ｆｕｌｌｙ  ｃｏｎｎｅｃｔｅｄ  ｇｒｉｄ；  ＦＣＧ）として知られる構成で互いに接続されてもよい。そのような構成によれば、任意の一つのピアがボトルネックとなることを防ぐことができる。本発明の実施の形態においては、ホスト１０７は、各クライアントのＮＡＴプロファイルにもとづいて決定することができる。ＮＡＴ１１１Ａ、１１１Ｂ、１１１Ｃ、および１１１Ｄは、フルコーンＮＡＴ、制限付きコーンＮＡＴ、ポート制限付きコーンＮＡＴ、およびシンメトリックＮＡＴと一般的に称される４つの異なる構成の一つであってもよい。
【００１８】
フルコーンＮＡＴは、同じ内部ＩＰアドレスおよびポートからのすべてのリクエストを同じ外部ＩＰアドレスおよびポートにマップするものである。任意のクライアントは、フルコーンＮＡＴの後ろに位置するクライアント用の外部アドレスにパケットを送ることにより、そのクライアントにパケットを送ることができる。
【００１９】
制限付きコーンＮＡＴでは、同じ内部ＩＰアドレスおよびポートからのすべてのリクエストは同じ外部ＩＰアドレスおよびポートにマップされる。しかし、フルコーンＮＡＴとは違って、（ＩＰアドレスＸをもつ）外部クライアントがフルコーンＮＡＴの後ろにあるクライアントにパケットを送ることができるのは、内部ホストがそのＩＰアドレスＸにパケットを以前送ったことがある場合に限られる。
【００２０】
ポート制限付きコーンＮＡＴは、制限付きコーンＮＡＴに似ているが、制限はポート番号を含む。具体的には、外部クライアントが、ソースＩＰアドレスＸおよびソースポートＰをもつパケットをポート制限付きコーンＮＡＴの後ろにあるクライアントに送ることができるのは、ポート制限付きコーンＮＡＴの後ろにあるクライアントが以前そのＩＰアドレスＸおよびポートＰからパケットを送ったことがある場合に限られる。
【００２１】
シンメトリックＮＡＴでは、同じ内部ＩＰアドレスおよびポートから特定のデスティネーションＩＰアドレスおよびポートへのすべてのリクエストは、同じ外部ＩＰアドレスおよびポートにマップされる。もし、同じホストが、同じソースアドレスおよびポートをもつが宛先が異なるパケットを送るなら、異なるマッピングが使われる。さらに、パケットを受信する外部ホストだけがＵＤＰパケットを内部ホストに送り返すことができる。
【００２２】
フルコーン、制限付きコーン、およびポート制限付きコーンＮＡＴの通過（ｔｒａｖｅｒｓａｌ）は、比較的簡単であるが、シンメトリックＮＡＴの通過は多少複雑である。クライアントがシンメトリックＮＡＴの後段にある場合のＮＡＴ通過は、たとえば、出願人が共通する米国特許出願公報第２００７００７６７２９号に記載されている。特に、クライアントはポート予測を実行してもよい。ポート予測は、後段にクライアントがあるＮＡＴに関して、予測されるトランスポートアドレスのリストを生成することに関わるものである。その後、シンメトリックＮＡＴの後ろにあるクライアントは、予測されたトランスポートアドレスを用いて、第２のノードと接続性チェックを行う。接続性チェックは、ＳＴＵＮ（ｓｉｍｐｌｅ  ｔｒａｖｅｒｓａｌ  ｏｆ  ｕｓｅｒ  ｄａｔａ  ｐｒｏｔｏｃｏｌ（ＵＤＰ）  ｔｈｒｏｕｇｈ  ＮＡＴ）リクエストをそれぞれの予測されたトランスポートアドレスに並列に送ることによって実行される。シンメトリックＮＡＴの背後のクライアントがこのリクエストを受け取ると、ＳＴＵＮレスポンスを第２のクライアントに送る。もし、第２のクライアントがＳＴＵＮレスポンスを受信すると、第２のクライアントは、そのアドレスにメディアを送信し始めることができる。
【００２３】
上述の４つ以外のＮＡＴタイプを設けてもよい。ある場合には、標準的な技術を用いてそのようなＮＡＴを通過することができる。他の場合には、ＮＡＴの振る舞いを予測することができなかったり、不安定であったりするため、そのようなＮＡＴの背後にあるクライアントとの通信は信頼できないことがある。
【００２４】
ホスト１０７の任務は、他のピア１０５Ａ、１０５Ｂ、および１０５Ｄの間で情報の通信を行うことであるから、ホスト１０７が、通信能力の妨げにならないタイプのＮＡＴの背後にあることが重要である。ピア１０５Ａ、１０５Ｂ、１０５Ｄおよびホスト１０７が完全結合グリッド（ＦＣＧ）で結合している実施の形態においては、最大数のピアに最高レベルのサービスを提供することができるように、通信能力を邪魔しないＮＡＴの背後にあるホストを利用することが特に好ましい。Ｐ２Ｐに対するサポートが疑わしい（未知である）とされているＮＡＴが現実には、Ｐ２Ｐネットワークにおいて既存のピアによって使用されている他のＮＡＴタイプと比べても十分に動作する場合もある。もっとも好ましいＮＡＴプロファイルをもつホスト１０７を選択することにより、より信頼性の高いピアツーピアの通信を実現できる。ここで、Ｐ２Ｐ通信という用語は、ネットワークに接続されたクライアントデバイス間の直接通信のことを指す。Ｐ２Ｐアプリケーションの例として、ここに挙げるものには限られないが、たとえば、ＶｏＩＰ（ｖｏｉｃｅ  ｏｖｅｒ  ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）、ビットトレント（ｂｉｔ  ｔｏｒｒｅｎｔ）転送、ビデオ転送、ファイル共有、データ共有、その他のタイプのクライアント間の直接データ転送であって、個々のクライアントの帯域幅の容量を超えないものなどがある。いったんホスト１０７が確立すると、ピア１０５Ａ、１０５Ｂ、１０５Ｄは、最初はホスト１０７に情報を転送し、ホスト１０７がその情報を各受信先のピア１０５Ａ、１０５Ｂ、１０５Ｄに中継することにより、互いに通信することができる。あるいは、これらのピアは、この直接の通信経路を確立するためにホスト１０７を利用した後、直接的に情報を転送してもよい。
【００２５】
ある実施の形態では、クライアント１０５Ａ、１０５Ｂ、１０５Ｄ、および１０７は、外部ネットワーク１０９と関連づけられたＳＴＵＮを用いてＮＡＴプロファイル情報を取得してもよい。ＳＴＵＮサーバ１０３は、ＩＥＴＦによって提案された軽量プロトコルであり、これにより、ＩＰ通信可能なクライアントは、自分の前段にあるＮＡＴの存在とタイプを発見することができるようになる。ＳＴＵＮ１０３は、たいていのＮＡＴタイプで動作し、ＮＡＴの特定の振る舞いに依存しない。ＳＴＵＮサーバ１０３は、クライアント１０５Ａに立てかけたミラーのように作用し、クライアント１０５Ａは、自身のローカルトランスポートアドレスがどのようにパブリックトランスポートアドレスにマップされるかを見ることができる。クライアント１０５Ａは、クライアント１０５Ａの前にあるＮＡＴ１１１Ａのタイプを、ＳＴＵＮサーバ１０３との通信を通して決定することもできる。
【００２６】
一例として、ここに挙げる例には限られないが、各クライアント１０５Ａ、１０５Ｂ、１０７、１０５ＤはＳＴＵＮサーバを用いてＮＡＴプロファイル情報を取得し、その情報を中央サーバ１０１に中継してもよい。これにより、中央サーバ１０１は、どのクライアントがもっとも好ましいホスト１０７になりうるかを決定することができる。同様に、いずれかのクライアント１０５Ａ、１０５Ｂ、１０７、１０５Ｄは、ＳＴＵＮサーバ１０３を用いて他のＮＡＴプロファイル情報を取得し、Ｐ２Ｐネットワークを介して通信しようとする他のクライアント１０５にその情報を中継してもよい。これにより、クライアント１０５Ａ、１０５Ｂ、１０７、１０５Ｄがホスト１０７を最適に決定することができる。
【００２７】
図２は、クライアントの視点から見た、発見されたＮＡＴタイプにもとづいてホストを選択する基本的な方法を説明するフローチャートである。ステップ２０１で示すように、サーバ１０１に接続された各クライアントは、Ｐ２Ｐネットワークで使用する自分のＮＡＴプロファイル情報を収集する。このプロファイル情報には、クライアントの前方にあるＮＡＴのタイプに関する情報、そのＮＡＴがＵＰｎＰ（ｕｎｉｖｅｒｓａｌ  ｐｌｕｇ  ａｎｄ  ｐｌａｙ）をサポートするかどうかに関する情報、そのＮＡＴがポート保護を提示するものであるかどうかに関する情報、および、そのＮＡＴがポート予測可能性をサポートするかどうかに関する情報が含まれる。ここで、ポート保護とは、いったん特定の外部ポートにマップされた内部ＩＰアドレスは、一貫してその特定のポートにマップされることを意味する。ここでポート予測可能性とは、内部ＩＰアドレスがマップされる外部ポートを、たとえそれが常に同じポートでなくても、予測することができることを意味する。たとえば、外部ポートは、内部ＩＰアドレスをマッピングしようと試みる度に一貫してインクリメントされてもよい。
【００２８】
ＮＡＴの振る舞いに加えて、各クライアントのプロファイル情報にはサービス品質（ＱｏＳ）情報も含まれる。ここでＱｏＳ情報という用語は、クライアントに関する情報であって、そのクライアントデバイスが他のクライアントデバイスとどれくらいよく通信することができるかに関するものを含む。一例として、ここに挙げるものに限らないが、そのような情報は、そのクライアントがどれくらい速く通信することができるか、そのクライアントがそれくらい信頼性のある通信をすることができるか、あるいはそれらの両方に関するものである。ＱｏＳ情報の特定の例は、ここで挙げるものに限らないが、ピング（ｐｉｎｇ）タイム、帯域幅の振る舞い、レイテンシ、地理、ＩＰプロバイダなどを含む。
【００２９】
各クライアント用のプロファイル情報は、サーバに接続されたすべてのクライアント間の優先度リストを作るのに使うこともできる。これにより、Ｐ２Ｐ通信用にホストを最適に選択することができる。潜在的なホスト間の優先順位が同順位である場合は、どの潜在的なホストを現実のホストとして選択するかを決定するために序数を設定しておいてもよい。ある実施の形態では、そのような序数は、ステップ２０３においてサーバによって割り当てられてもよい。たとえば、クライアントがサーバに接続された順にする。あるいは、分散調停アルゴリズムを用いて、２以上の等しく適切な潜在的なホストの中から一つのホストを選択してもよい。最初のホストがＰ２Ｐネットワークを離れることを決定するか、Ｐ２Ｐネットワークから何らかの理由で接続が切られることがあった場合、この情報はＰ２Ｐネットワーク用の次のホストを選択するために用いられる。
【００３０】
いったんプロファイル情報が与えられたクライアントによって収集されると、そのクライアントに対するＮＡＴプロファイルは、サーバに接続された他のクライアントと共有される。プロファイル情報は、サーバに接続されたクライアントの数の期待値を含む。これは、最適なＰ２Ｐに到達したかどうかを決めるために使われる。この時点で、ステップ２０５に示すように、各クライアントは、他のすべてのクライアントが自分の手前にあるＮＡＴに関するプロファイル情報を提出するまで待つ。いったんすべてのＮＡＴプロファイルがクライアントによって提出されたなら、ステップ２０７に示すように、クライアントはホストになるか、ピアになるか、あるいは、いずれになるための要件も満たすことができないかを決定する。この決定は上述の各クライアントに対して取得されたプロファイル情報にもとづいてなされる。たとえば、多くの要因にもとづいて優先度を割り当てることにより、利用可能なクライアントの中から、もっとも好ましいプロファイルをもつクライアントにもとづいてホストを選ぶことができる。残りのクライアントはピアに割り当てられるか、もしくは、それらのプロファイル情報にもとづいてピアともホストとも認識されない。たとえば、通過可能でないＮＡＴの後ろにあるクライアントは、ピアまたはホストとしてネットワークに接続するために必要な要件を満たさない。一例として、ここで述べる例に限られないが、ピアまたはホストとして認識されることができないクライアントは、自分のプロファイルを更新し、自分のステータスをＰ２Ｐネットワークの残りの部分に通知し、Ｐ２Ｐネットワークからこのクライアントが除外されるように、期待されたカウントをデクリメントしてもよい。
【００３１】
表１は、Ｐ２Ｐネットワークにおいてホストの割り当てを決めるために使うことのできる優先順位付けスキームの例を説明する。一例として、これに限らないが、優先順位付けスキームは、５つの分離された区分に分けることができる。アクティブ、起こりうる、不明、進行中、非アクティブの５つである。これらは表１にホスト優先度の順にリストされている。「アクティブ」タグは、クライアントがホストとしてたいへん良い候補であることを示す。「起こりうる」タグは、クライアントがホストとして良い候補であるが、アクティブタグの付いたクライアントの方が優先することを示す。「不明」タグは、ネットワークはその特定のクライアントがホストとして良い候補であるかどうかを決定できないことを示す。「進行中」タグは、ネットワークはそのクライアントがホストとして良い候補であるかどうかをまだ決定中であることを示す。最後に、「非アクティブ」タグは、クライアントはホストの任務を引き受けることができないことを示す。表１に示した例では、優先度タグは、４つの基準にもとづいている。ＮＡＴタイプ、ＵＰｎＰ機能、ポート保護、ポート予測可能性の４つである。しかしながら、優先度を決定する際に他のいくつかの要因を使用してもよい。これらの要因は、クライアントのサービス品質のプロファイルの範囲に入るものであり、ピングタイム、バンド幅の振る舞い、地理、レイテンシ、およびＩＰプロバイダを含むがこれらに限定されないＱｏＳ情報を含んでもよい。
【００３２】
【表１】
2010244509.tif 000003
【００３３】
図３は、クライアントの視点から見た、本発明の特定の実施の形態に係る、発見されたＮＡＴタイプにもとづくホスト選択の方法を説明するフローチャートである。ステップ３０１に示すように、クライアントは最初、自分の前方にあるＮＡＴについてのプロファイル情報を取得する。このプロファイル情報には、ＮＡＴタイプ、ＮＡＴがＵＰｎＰをサポートするかどうか、ＮＡＴがポート保護をサポートするかどうか、およびＮＡＴがポート予約可能性をサポートするかどうかに関する情報が含まれる。この情報に加えて、プロファイル情報は、ピングタイム、バンド幅の振る舞い、地理、レイテンシ、およびＩＰプロバイダを含むがこれらに限定されないＱｏＳ情報を含んでもよい。この情報は、これらのいくつかの異なるクライアントの中から、Ｐ２Ｐ通信をサポートするためのホストを決定するために、クライアント間に優先順位を付けるのに使われる。最初のホストがＰ２Ｐネットワークを離れることを決定するか、何らかの理由でネットワークから切り離された場合、この情報はＰ２Ｐネットワーク用の次のホストを選択するために使うことができる。
【００３４】
いったんクライアントが自分の手前にあるＮＡＴに関するプロファイル情報を取得すると、ステップ３０３に示すように、クライアントは同じサーバに接続された他のクライアントとこのＮＡＴプロファイルを共有する。これらのクライアントは、今や、他のすべてのクライアントに対する上述のプロファイル情報について知っているだけではなく、サーバに現在接続されたクライアントの期待されるカウント値についても知らされる。この時点で、各クライアントは、ステップ３０５に示すように、他のすべてのクライアントが自分の前にあるＮＡＴに関する自分のプロファイル情報を提供するまで待つ。いったんすべてのＮＡＴプロファイルがクライアントによって提出されたなら、ステップ３０７に示すように、クライアントはホストになるか、ピアになるか、あるいは、いずれになるための要件も満たすことができないかを決定する。この決定は上述の各クライアントに対して取得されたプロファイル情報にもとづいてなされる。多くの要因にもとづいて優先度を割り当てることにより、クライアントの中から、もっとも好ましいプロファイルをもつクライアントにもとづいてホストを選ぶことができる。残りのクライアントはピアに割り当てられるか、もしくは、それらのプロファイル情報にもとづいてピアともホストとも認識されない。たとえば、通過可能でないＮＡＴの後ろにあるクライアントは、ピアまたはホストとしてネットワークに接続するために必要な要件を満たさない。一例として、ここで述べる例に限られないが、ピアまたはホストとして認識されることができないクライアントは、自分のプロファイルを更新し、自分のステータスをＰ２Ｐネットワークの残りの部分に通知し、Ｐ２Ｐネットワークからこのクライアントが除外されるように、期待されたカウントをデクリメントしてもよい。
【００３５】
ホストとなる任務を割り当てられたクライアントは、ステップ３０９に示すように、ネットワーク上の残りのクライアントが接続するのを待ち、また、プロファイルを更新する。すべてのクライアントがホストに接続したら、ステップ３１１に示すように、期待されたカウントをチェックして、サーバに接続されたすべてのクライアントがホストに接続されたかどうかを決定する。もしカウントが期待通りであったならば、ステップ３１７に示すように、Ｐ２Ｐ通信が可能になる。しかし、１以上のクライアントがホストまたはピアになるための要件を満たさなかったがためにカウントが期待よりも小さい場合は、カウントは減らされ、処理は再び３０３から開始される。
【００３６】
クライアントがピアになることを決定した場合、ステップ３１３に示すように、クライアントは、ホストが決定された後、そのホストに接続を試みる。ステップ３１５に示すように、ピアがホストに接続できるか、ホストに接続することができないかが決定される。クライアントがホストに接続できるならば、ステップ３１７に示すように、クライアントは、Ｐ２Ｐ通信が可能になる前に他のすべてのピアがホストに接続されるのを待つ。クライアントがホストに接続できないならば、クライアントのプロファイル情報を更新し、処理は再びステップ３０３から始まる。最終的に、クライアントが何度もホストに接続できなかった場合は、カウントが減らされ、そのクライアントはＰ２Ｐネットワークから離れる。
【００３７】
ＮＡＴ情報を集めている間にピアになることができなかった場合、これは失敗として記録され、他のピアとの間で共有される。データ共有やデータ待ちは失敗しないと仮定してもよい。たとえば、このデータ通信が、サーバ１０１のような信頼できる通信チャネルを通してなされるならば、そのような仮定が成り立つ。この処理のどこかのポイントで、サーバ１０１との通信に失敗すると、処理全体が中止され、残りのクライアントは、接続が断たれたことを知らされる。この通知は、サーバ１０１との通信に使われたプロトコルによって特定される。残りのクライアントはもはや、接続が断たれたクライアントからのレスポンスを待つことはない。
【００３８】
いったんホストがクライアントデバイスの中から特定されると、サーバ１０１は、そのホストに任命されたピアによって管理されるＰ２Ｐグリッドに１以上の機能をオフロードする。ホストおよび／またはＰ２Ｐグリッド内の任意のピアがそのような機能を引き受ける。一例として、これに限られないが、Ｐ２Ｐグリッドは、すべての通信がホストを経由する完全結合グリッドまたはスター型トポロジーであってもよい。グリッドのトポロジーは本発明の実施の形態にとって厳密に関連性があるわけではない。関連性があるのは、任意のトポロジーのＰ２Ｐグリッドへの通信の主要ポイント（ホスト）が、その通信の主要ポイントと関連づけられたＮＡＴの振る舞いにもとづいて構築されるという点である。
【００３９】
クライアントデバイス４００は、図４に示すように、本発明の実施の形態に係るホスト決定方法を実装するように構成される。一例として、一般性を損なうことなく、クライアントデバイス４００は、デジタルテレビジョンセット、パーソナルコンピュータ、ビデオゲーム機、パーソナルデジタル情報機器、携帯電話またはパーソナルデジタル機器のようなモバイルまたはハンドヘルドデバイス、ハンドヘルドビデオゲーム機、ポータブル電子メール機器、または他のデジタルデバイスの一部として実装される。
【００４０】
デバイス４００は、中央演算処理装置（ＣＰＵ）４０２とＣＰＵ４０２に接続されているメモリ４０４を含む。ＣＰＵ４０２は、ソフトウェアアプリケーションと、任意であるがオペレーティングシステムとを走らせるように構成される。本発明のある実施の形態は、ＣＰＵ４０２がメインプロセッサ４０２Ａと１以上の補助プロセッサ４０２Ｂを含むタイプのプロセッサアーキテクチャを活用する。各補助プロセッサ４０２Ｂはそれ自身に関連づけられたローカルデータストレージをもう。そのようなプロセッサアーキテクチャの一例はセルプロセッサである。セルプロセッサアーキテクチャの例は、「セルブロードバンドエンジンアーキテクチャ」に詳細が記述されている。これは、ＩＢＭ、ソニー・コンピュータエンタテインメント、東芝の２００５年８月８日付けの著作権で保護されており、コピーはｈｔｔｐ：／／ｃｅｌｌ．ｓｃｅｉ．ｃｏ．ｊｐ／からダウンロード可能であり、その内容全体を参照によってここに組み入れる。
【００４１】
再び図４を参照して、受信デバイス４００はまた、入出力（Ｉ／Ｏ）装置４１１、電源（Ｐ／Ｓ）４１２、クロック（ＣＬＫ）４１３およびキャッシュ４１４などの公知のサポート機能４１０を備えてもよい。デバイス４００はさらに、アプリケーションおよびデータ用の不揮発性のストレージを提供するハードディスクドライブのような高速データストレージデバイス４１５を備えてもよい。一例としてストレージデバイス４１５は、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリデバイス、テープドライブであってもよい。あるいは、ストレージデバイス４１５は、たとえば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ブルーレイ（商標または登録商標）、ＨＤ−ＤＶＤ、ＵＭＤ、その他の光学式ストレージデバイスであってもよい。より低速のストレージデバイスからのファイル４１６は、一時的に、より高速のストレージデバイスに格納され、メモリ４０４に高速にロードするためのハードウエアキャッシュとして利用されてもよい。
【００４２】
１以上のユーザからのユーザ入力をシステム４００に伝えるために１以上のユーザ入力デバイス４２０が用いられてもよい。たとえば、１以上のユーザ入力デバイス４２０が、入出力装置４１１を介してクライアントデバイス４００に接続されてもよい。適当な入力デバイス４２０の例には、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、リモートコントロールユニット、ライトペン、スチル／ビデオカメラ、および／またはマイクロホンが含まれる。
【００４３】
クライアントデバイス４００は、電子通信ネットワーク４２７を介した通信を手助けするネットワークインタフェース４２５を通じて、ピアツーピアネットワークにある他のクライアントデバイスと通信することができる。ネットワークインタフェース４２５は、ローカルエリアネットワークおよびインターネットのようなワイドエリアネットワーク上で有線または無線通信を実装するべく構成されてもよい。システム４００はネットワーク４２７上で１以上のメッセージパケット４２６を用いて、データおよび／またはファイルに対するリクエストを送受信することができる。一例として、これに限られないが、電子通信ネットワーク４２７は、デバイス４００と他のクライアントでバース間の通信を可能にする、ローカルエリアネットワーク、ワイドエリアネットワーク、またはパーソナルエリアネットワーク（たとえば、ブルートゥース（商標または登録商標））であってもよい。
【００４４】
メモリ４０４はＣＰＵ４０２が用いるアプリケーションおよびデータを格納する。メモリ４０４は集積回路（たとえば、ＲＡＭ、ＤＲＡＭ、ＲＯＭその他）の形態であってもよい。コンピュータプログラム４０１は、プロセッサ４０２で実行可能なインストラクションの形式でメモリ４０４に格納される。
【００４５】
プログラム４０１は、プロセッサによって実行されると、ピアツーピアネットワークにおける２以上のピアクライアントデバイスのグループの中からホストを決定するための方法をプロセッサに実装させるインストラクションを含む。一例として、一般性を失うことなく、プログラム４０１は、実行時に、デバイス４００に図２に例示した方法２００や図３に例示した方法３００を実装させてもよい。特に、プログラム４０１はデバイス４００に次のことを実行させてもよい。ａ）デバイス４００に対するＮＡＴプロファイル情報を集め、ｂ）そのデバイスに対するＮＡＴプロファイル情報をネットワーク４２７に接続された１以上の他のクライアントデバイス４００’、４００’’と共有し、ｃ）その１以上の他のクライアントデバイスに対するＮＡＴプロファイル情報を受信し、ｄ）当該クライアントデバイス４００に対するＮＡＴプロファイル情報と、１以上の他のクライアントデバイスに対するＮＡＴプロファイル情報とから、クライアントデバイス４００、４００’、４００’’のいずれをホストとして指定するかを決定する。
【００４６】
クライアントデバイス４００と他のクライアントデバイス４００’、４００’’に対するＮＡＴプロファイル情報４０６はメモリ４０４に格納され、ホストを決定するときに使われる。クライアントデバイス４００、４００’、４００’’の各々は、対応するＮＡＴ４０３、４０３’、４０３’’の後ろにある。クライアントデバイス４００はＮＡＴ４０３の後ろに位置しており、ＮＡＴ４０３はクライアント４００に対する内部ＩＰアドレスを、他のデバイスから見られるパブリックＩＰアドレスに変換する。あるタイプのクライアントデバイスはＮＡＴを含んでいることがあるが、ＮＡＴ４０３は通常はクライアントデバイス４００の一部ではない。さらに、本発明の実施の形態は、クライアントデバイス４００、４００’、４００’’のいずれか、またはすべてがＮＡＴの後ろにないなら、実装することはできない。
【００４７】
ＮＡＴプロファイル情報４０６には、ここで挙げるものに限定されないが、クライアントデバイス４００がその後方にある（もしあれば）ＮＡＴのタイプに関する情報、そのＮＡＴがＵＰｎＰに携わることのできる能力、ポート保護を維持するＮＡＴの能力、およびＮＡＴのポート予測可能性が含まれる。プログラム４０１は、表１に関する上述の基準にもとづいた選択を実装する。その他のクライアントデバイス４００’、４００’’は同様に構成され、同じホスト選択処理を実装する。もしすべてのクライアントデバイス４００、４００’、４００’’が同じプログラム４０１とプロファイル情報４０６を用いるとすれば、これらが同じホスト決定をすることを期待するのは理にかなっている。
【００４８】
ある状況では、プログラム４０１が、サービス品質（ＱｏＳ）情報のような付加的な情報４０８にもとづいて、補助的な調停フィルタを適用し、２以上の同程度に有望な候補デバイスの中からホストデバイスを選ぶ決定を調停することが望ましい。サービス品質情報は、クライアントのピングタイム、帯域幅の振る舞い、地理、レイテンシ、ＩＰプロバイダなどの要因や上述の他の要因を含んでもよい。そのような付加情報４０８もメモリ４０４に格納することができる。
【００４９】
クライアントデバイス４００は、グラフィックプロセッシングユニット（ＧＰＵ）４３５とグラフィックスメモリ４３７とを有するグラフィックス・サブシステム４３０を更に含む。グラフィックスメモリ４３７は、出力イメージの各画素に対する画素データを格納するために使われるディスプレイメモリ（例えばフレーム・バッファ）を含む。グラフィックスメモリ４３７は、ＧＰＵ４３５と同じデバイス内に統合されてもよく、別のデバイスとしてＧＰＵ４３５に結合されてもよく、メモリ４０４内に実装されてもよい。画素データは、ＣＰＵ４０２から直接グラフィックスメモリ４３７に提供される。あるいは、ＣＰＵ４０２は、所望の出力イメージを定めるデータやインストラクションをＧＰＵ４３５に提供する。ＧＰＵ４３５はそれを用いて出力イメージの画素データを生成する。所望出力イメージを定めるデータやインストラクションは、メモリ４０６やグラフィックスメモリ４３７に格納される。ある実施の形態では、ＧＰＵ４３５は、例えば、適当なプログラミングまたはハードウェア・コンフィギュレーションによって構成され、シーンのためにジオメトリ、ライティング（照明）、シェーディング、テクスチャリング、モーション、および／またはカメラパラメータを定めるインストラクションとデータから出力イメージに対する画素データを生成するための３Ｄレンダリング機能をもつ。ＧＰＵ４３５は、シェーダプログラムを実行することができるプログラム可能な実行ユニットを更に含む。
【００５０】
グラフィックス・サブシステム４３０は、ビデオ表示装置４５０で表示されるべきグラフィックスメモリ４３７からのイメージに対する画素データを周期的に出力する。ビデオ表示装置４５０は、デバイス４００からの信号に応じてビジュアル情報を表示することができる任意のデバイスであり、テキスト、数字、グラフィカルシンボル、または画像を表示可能なＣＲＴ、ＬＣＤ、プラズマ、およびＯＬＥＤディスプレイを含む。デジタル放送受信デバイス４００は、表示装置４５０に、表示装置のタイプに応じてアナログまたはデジタル信号を提供する。さらに、ディスプレイ４５０は、可聴もしくは検知可能な音を出すオーディオスピーカーで補強されてもよい。そのような音の生成を容易にするために、クライアントデバイス４００は、ＣＰＵ４０２、メモリ４０４、および／またはストレージ４１５によって提供されたインストラクションおよび／またはデータからアナログまたはデジタル音声出力を生成するために適したオーディオプロセッサ４５５を更に含む。
【００５１】
受信デバイス４００は、オプションとして位置表示デバイス４７０を含んでもよい。そのようなデバイスは、デバイスの地理的位置に関する情報を提供することができる任意の適当な技術にもとづくものである。既存技術の例として、ＧＰＳ技術、慣性誘導技術などがある。そのようなデバイスからの情報は、モバイルまたはハンドヘルドデバイス用のナビゲーションのようなデジタル放送データアプリケーションで使われる。
【００５２】
ある実施の形態によれば、クライアントデバイス４００の地理的場所を決定することは有益である。バンド幅、ピングタイム、レイテンシなどのＱｏＳ考慮事項は、デバイスの場所の影響を受けることがあるからである。一例として、これに限定するものではないが、ホスト決定を容易にするために、位置表示デバイス４７０は、地理的場所の情報を提供し、プログラム４０１はその情報を用いて、クライアントデバイス４００がピアツーピアサービスに対するホストとなりうる良い候補であるかどうかを決定してもよい。
【００５３】
ＣＰＵ４０２、メモリ４０４、支援機能４１０、データストレージデバイス４１５、ユーザ入力デバイス４２０、ネットワークインターフェース４２５、グラフィックスユニット４３０、オーディオプロセッサ４５５、および位置表示デバイス４７０を含むデバイス４００の構成要素は、データバス４６０を介して互いに機能的に接続されている。これらの構成要素は、ハードウェア、ソフトウェアまたはファームウェア、あるいはこれらのうちの２つ以上の組合せで実装される。
【００５４】
本発明の実施の形態は、ピアツーピアネットワークの状況において協調的なホスト決定とホストマイグレーションを許容する。
【００５５】
本発明の好ましい実施の形態を完全な形で説明してきたが、いろいろな代替物、変形、等価物を用いることができる。したがって、本発明の範囲は、上記の説明を参照して決められるものではなく、請求項により決められるべきであり、均等物の全範囲も含まれる。ここで述べた特徴はいずれも、好ましいかどうかを問わず、他の特徴と組み合わせてもよい。請求項において、明示的に断らない限り、各項目は１またはそれ以上の数量である。請求項において「〜のための手段」のような語句を用いて明示的に記載する場合を除いて、請求項がミーンズ・プラス・ファンクションの限定を含むものと解してはならない。
【図１】
2010244509.tif 000004
【図２】
2010244509.tif 000005
【図３】
2010244509.tif 000006
【図４】
2010244509.tif 000007
【手続補正書】
【提出日】平成21年10月27日(2009.10.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータプロセッサと、
前記プロセッサに結合したコンピュータメモリと、
前記プロセッサに結合したネットワークインタフェースであって、ピアツーピアグリッドで接続された前記プロセッサと１以上の他のピアデバイスの間の通信を助けるように構成されたネットワークインタフェースと、
前記メモリに具体化されたコンピュータ読み取り可能なインストラクションセットとを含み、
前記コンピュータ読み取り可能なインストラクションは、ピアツーピアグリッドのいずれのピアデバイスを、ピアツーピアグリッド内のサービスに対するホストとして指定するかを決める方法を実装するように構成されており、
前記方法は、
ａ）前記１のピアに対するＮＡＴプロファイル情報を集めるステップと、
ｂ）前記１のピアに対するＮＡＴプロファイル情報を前記２以上のピアの内、１以上の他のピアと共有するステップと、
ｃ）前記１以上の他のピアに対するＮＡＴプロファイル情報を受信するステップと、
ｄ）前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とから、前記２以上のピアのいずれをホストとして指定するかを決定するステップとを含むことを特徴とするピアデバイス。
【請求項２】
ステップｄ）は、前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とにもとづいて前記２以上のピアの各々に優先度の値を割り当てるステップと、前記優先度の値にもとづいてホストを選択するステップとを含むことを特徴とする請求項１に記載のデバイス。
【請求項３】
前記１のピアに対するＮＡＴプロファイル情報には、ピアの前段にあるＮＡＴのＮＡＴタイプ、そのＮＡＴがＵＰｎＰ（ｕｎｉｖｅｒｓａｌ  ｐｌｕｇ  ａｎｄ  ｐｌａｙ）をサポートするかどうかに関する情報、そのＮＡＴに対するポート予測可能性情報、そのＮＡＴに対するポート保護情報が含まれることを特徴とする請求項２に記載のデバイス。
【請求項４】
前記１以上の他のピアに対するＮＡＴプロファイル情報には、ピアの前段にあるＮＡＴのＮＡＴタイプ、そのＮＡＴがＵＰｎＰをサポートするかどうかに関する情報、そのＮＡＴに対するポート予測可能性情報、そのＮＡＴに対するポート保護情報が含まれることを特徴とする請求項２に記載のデバイス。
【請求項５】
前記２以上のピアの内、２以上のピアが等しい優先度の値をもつ場合、ステップｄ）は、等しい優先度の値をもつ前記２以上の潜在的なホストのいずれをホストとして指定するべきかを決定するステップを含むことを特徴とする請求項２に記載のデバイス。
【請求項６】
等しい優先度の値をもつ前記２以上の潜在的なホストのいずれをホストとして指定するべきかを決定するステップは、前記２以上の潜在的なホストの各々に異なる序数が割り当てられている場合、等しい優先度の値をもつ前記２以上の潜在的なホストの内、より高い序数をもつものをホストとして指定するステップを含むことを特徴とする請求項５に記載のデバイス。
【請求項７】
前記１のピアがホストとして指定された場合、前記１のピアがホストとして指定された旨を前記１以上の他のピアに通知するステップと、前記１以上の他のピアが接続することを待つステップとをさらに含むことを特徴とする請求項１に記載のデバイス。
【請求項８】
ホストに接続されたピアの数を期待されるカウントと比較するステップと、もしホストに接続されたピアの数が期待されるカウントに等しくないなら、ホストに接続されたピアの数を前記１以上の他のピアと共有するステップとをさらに含む請求項７に記載のデバイス。
【請求項９】
もし前記１のピアがホストとして指定されないならば、前記１のピアをホストに接続させることを試みるステップをさらに含む請求項１に記載のデバイス。
【請求項１０】
もし前記１のピアがホストへの接続に失敗したならば、前記１のピアがホストへの接続に失敗したことを前記２以上のピアに通知するステップをさらに含むことを特徴とする請求項９に記載のデバイス。
【請求項１１】
２以上のピアの中から、ピアツーピアグリッド内のサービスに対するホストとして指定するべきものを決定するための、１のピアにおける方法であって、
ａ）前記１のピアに対するＮＡＴプロファイル情報を集めるステップと、
ｂ）前記１のピアに対するＮＡＴプロファイル情報を前記２以上のピアの内、１以上の他のピアと共有するステップと、
ｃ）前記１以上の他のピアに対するＮＡＴプロファイル情報を受信するステップと、
ｄ）前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とから、前記２以上のピアのいずれをホストとして指定するかを決定するステップとを含むことを特徴とする方法。
【請求項１２】
コンピュータ読み取り可能なインストラクションが具体化されたコンピュータ読み取り可能な記録媒体であって、
前記コンピュータ読み取り可能なインストラクションは、ピアツーピアグリッドのいずれのピアデバイスを、ピアツーピアグリッド内のサービスに対するホストとして指定するかを決める方法を実装するように構成されており、
前記方法は、
ａ）前記１のピアに対するＮＡＴプロファイル情報を集めるステップと、
ｂ）前記１のピアに対するＮＡＴプロファイル情報を前記２以上のピアの内、１以上の他のピアと共有するステップと、
ｃ）前記１以上の他のピアに対するＮＡＴプロファイル情報を受信するステップと、
ｄ）前記１のピアに対するＮＡＴプロファイル情報と、前記１以上の他のピアに対するＮＡＴプロファイル情報とから、前記２以上のピアのいずれをホストとして指定するかを決定するステップとを含むことを特徴とする記録媒体。