(57)【要約】【解決手段】ネットワークデータ分配を維持するための本発明のシステムおよび方法が提供される。ネットワークデータは、データを大きく損なうことなく、ネットワークセッションがホストとクライアントの間での通信の中断を乗り越えることができるような態様で分配される。本発明の実施の形態では、一つまたは複数のクライアントがネットワークセッションのバックアップホストとして機能する。このような判定にはＮＡＴプロファイル情報の利用が含まれる。他のクライアントがホストにデータを送信するとき、通信の中断が示されている場合、他のクライアントは一つまたは複数のバックアップホストにもデータを送信することができる。【選択図】図１Ｄ
2010541476.tif 000002
【特許請求の範囲】
【請求項１】
ホストと複数のクライアントの間の接続を確立するステップであって、前記ホストと前記複数のクライアントの各々との間で交換されるデータが受領時に確認されるステップと、
前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）プロファイル情報に少なくとも基づいて、前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップと、
前記第１クライアントに対してホスト情報を送信するステップであって、前記第１クライアントは少なくとも前記ホスト情報に基づき前記複数のクライアントのうち他のすべてのクライアントへの接続を確立し、前記ホストと前記複数のクライアントのうちの第２クライアントとの間で通信が中断された場合、前記第１クライアントが前記第２クライアントからデータを受け取るステップと、
を含むネットワークデータ分配を維持する方法。
【請求項２】
前記ホストと前記複数のクライアント間の前記ＮＡＴプロファイル情報を共有するのに先立って、ＳＴＵＮサーバを通じてＮＡＴプロファイル情報を収集するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
クライアント−サーバ構成を利用して前記ホストと前記複数のクライアント間で前記ＮＡＴプロファイル情報が共有されることを特徴とする請求項１に記載の方法。
【請求項４】
ピアツーピア構成を利用して前記ホストと前記複数のクライアント間で前記ＮＡＴプロファイル情報が共有されることを特徴とする請求項１に記載の方法。
【請求項５】
前記ＮＡＴプロファイル情報を用いて前記複数のクライアントから前記クライアントそれぞれに優先度を割り当てるステップをさらに含み、
ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、前記優先度の使用を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１クライアントの優先度が、前記複数のクライアントのうちの他のクライアントに割り当てられた優先度と等しい優先度のとき、優先度の衝突を解決するステップをさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記優先度の衝突を解決するステップは、前記第１クライアントのより高次の序数に対して前記複数のクライアントのうちの前記他のクライアントに割り当てられた序数を参照するステップをさらに含み、
前記序数はあらかじめ前記複数のクライアントそれぞれに割り当てられていることを特徴とする請求項６に記載の方法。
【請求項８】
前記複数のクライアントの前記ＮＡＴプロファイル情報はＮＡＴタイプを含み、
前記ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、前記ＮＡＴタイプの使用を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記複数のクライアントそれぞれの前記ＮＡＴプロファイル情報は、ＮＡＴがＵＰｎＰ（Universal Plug and Play）をサーポーとするか否かに関する情報を含み、
前記ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、ＮＡＴがＵＰｎＰをサーポーとするか否かに関する情報の使用を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記複数のクライアントそれぞれの前記ＮＡＴプロファイル情報は、ＮＡＴのポート予測可能性に関する情報を含み、
前記ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、前記ポート予測可能性の情報の使用を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記複数のクライアントそれぞれの前記ＮＡＴプロファイル情報は、ＮＡＴのポート保存に関する情報を含み、
前記ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、前記ポート保存の情報の使用を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記通信の中断は、前記第２クライアントが前記ホストにデータを送信した後のある時間内に前記ホストから前記第２クライアントに対して確認がないことにより認識されることを特徴とする請求項１に記載の方法。
【請求項１３】
前記ホストと前記複数のクライアントの各々との間の接続を判定するために前記複数のクライアントにポーリングすることをさらに含む請求項１に記載の方法。
【請求項１４】
前記中断された通信が、前記ポーリングの結果によって示されることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記ホストから前記複数のクライアントの各々に対し、前記中断された通信に関する表示が送信されることをさらに含む請求項１に記載の方法。
【請求項１６】
前記中断された通信に基づき、前記ホストと前記第２クライアントとの間の通信を終了することをさらに含む請求項１に記載の方法。
【請求項１７】
前記第１クライアントのバックアップ実行可能性の交渉が、該第１クライアントの帯域を判定することを含む請求項１に記載の方法。
【請求項１８】
前記第１クライアントのバックアップ実行可能性の交渉が、前記第１クライアントが前記複数のクライアントのうちの他のクライアントの各々へと接続可能であるかを判定することをさらに含む請求項１に記載の方法。
【請求項１９】
前記第１クライアントへのホスト情報の送信が、該ホスト情報を提供するアプリケーションを送信することを含む請求項１に記載の方法。
【請求項２０】
前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴプロファイル情報に少なくとも基づいて、前記複数のクライアントのうちの第３クライアントのバックアップ実行可能性を判定し、
少なくともホスト情報とＮＡＴプロファイル情報とに基づき、前記第３クライアントが前記複数のクライアントのうちの他のすべてのクライアントへと接続し、かつ、前記第１クライアントと前記第２クライアントの間の通信が中断された場合に該第３クライアントが前記第２クライアントからデータを受信できるように、前記第３クライアントに対してホスト情報を送信することをさらに含む請求項１に記載の方法。
【請求項２１】
前記ホストとの接続が確立される順序に少なくとも基づき、前記第３クライアントへデータを送信する前に前記第１クライアントにデータを送信するように前記第２クライアントがさらに構成されていることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記第１クライアントの帯域と前記第３クライアントの帯域とに少なくとも基づき、前記第３クライアントにデータを送信する前に前記第１クライアントにデータを送信するように前記第２クライアントがさらに構成されていることを特徴とする請求項２０に記載の方法。
【請求項２３】
複数のクライアントに接続されるよう構成され、該複数のクライアントの各々からデータを受け取りデータの受信を確認するホストと、
ホスト情報を受け取るように構成され、前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴプロファイル情報に少なくとも基づいて、前記複数のクライアントのうちの他のすべてのクライアントと接続する第１クライアントと、
前記ホストとの間の通信が中断した場合に、前記第１クライアントに対してデータを送信するように構成された第２クライアントとを備え、
前記ホストは、第１クライアントのバックアップ実行可能性を交渉することを特徴とするネットワークデータ分配を維持するシステム。
【請求項２４】
前記通信の中断が、前記第２クライアントが前記ホストにデータを送信した後ある時間内に前記ホストからの確認がないことによって示されることを特徴とする請求項２３に記載のシステム。
【請求項２５】
前記第２クライアントは、前記ホストに対しデータを再送信するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項２６】
前記第２クライアントは、前記ホストと第２クライアントの間の通信の中断に関する情報を、前記複数のクライアントの各々に通知するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項２７】
前記第２クライアントは、前記ホストと第２クライアントの間の接続を停止するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項２８】
前記ホストは、接続に関する情報を前記複数のクライアントにポーリングするようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項２９】
前記ホストは、該ホストと前記第２クライアントの間の通信の中断に関する情報を、前記複数のクライアントの各々に通知する通知するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項３０】
前記ホストは、該ホストと前記第２クライアントの間の接続を停止するようにさらに構成されていることを特徴とする請求項２９に記載のシステム。
【請求項３１】
前記ホストは、前記第１クライアントの帯域に基づいて前記第１クライアントのバックアップ実行可能性の交渉をするようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項３２】
前記ホストは、前記複数のクライアントのうちの他のクライアントの各々に対して前記第１クライアントが接続可能であるか否かに基づきバックアップ実行可能性をさらに交渉することを特徴とする請求項２３に記載のシステム。
【請求項３３】
前記ホストは、前記第１クライアントに対してホスト情報を送信するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項３４】
前記ホストは、前記複数のクライアントのうちの他のクライアントの各々に関する情報を提供するように構成されたアプリケーションを送信することで、前記ホスト情報を送信することを特徴とする請求項３３に記載のシステム。
【請求項３５】
前記複数のクライアントのうちの第３クライアントがホスト情報を受け取るように構成されており、これにより前記第３クライアントが、前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴプロファイル情報に少なくとも基づいて、複数のクライアントのうちの他のすべてのクライアントと接続することを特徴とする請求項２３に記載のシステム。
【請求項３６】
前記第２クライアントは、前記第１クライアントと前記第２クライアントとの間の通信が中断している場合、前記第３クライアントにデータを送信するようにさらに構成されていることを特徴とする請求項３５に記載のシステム。
【請求項３７】
クライアントから受け取ったデータを確認する応答を送信するように構成された確認モジュールと、
共有されたＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）プロファイル情報に少なくとも基づいて、第１クライアントのバックアップ実行可能性を交渉するように構成された交渉モジュールと、
少なくともＮＡＴプロファイル情報に基づき複数のクライアントのうちの他のクライアントすべてに前記第１クライアントが接続して第２クライアントからデータを受け取るように、前記第１クライアントに対してホスト情報を提供するアプリケーションを送信するように構成されたバックアップアプリケーションモジュールと、
を備えることを特徴とする、ネットワーク内でデータ分配を維持するためのコンピューティングデバイス。
【請求項３８】
プロセッサにより実行可能でありグループメッセージング方法を実行するプログラムが具現化されたコンピュータ可読の記録媒体であって、
前記プログラムは、
ホストと複数のクライアントの各々との間で交換されたデータが受領時に確認されるように、複数のクライアントにホストを接続し、
前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）プロファイル情報に少なくとも基づいて、前記複数のクライアントとのうちの第１クライアントのバックアップ実行可能性を判定し、
少なくともホスト情報に基づき前記複数のクライアントのうちの他のクライアントすべてに前記第１クライアントが接続して、複数のクライアントのうちの第２クライアントから第１クライアントがデータを受け取るように、前記第１クライアントに対してホスト情報を送信することを含む記録媒体。
【請求項３９】
前記プログラムは、前記ホストと前記第２クライアントの間の接続を停止するための実行可能な命令をさらに含むことを特徴とする請求項３８に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にネットワークに関する。より具体的には、本発明はネットワークにおけるデータ分配およびＮＡＴ（Network Address Translation）の使用に関する。
【背景技術】
【０００２】
ネットワークは、通信システムによって互いに接続されたコンピューティングデバイスのグループを含むことができる。ネットワーク内のコンピュータは、ネットワーク内の他のコンピュータと通信し、データを交換し、リソースを分け合うことができる。ネットワークの例には、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）が含まれる。
【０００３】
様々なネットワーク構成が当分野で知られている。図１Ａに示す従来のクライアント−サーバネットワークは、クライアント１２０Ａ−Ｄに接続されたホスト１１０を含む。ホスト１１０は、ネットワークセッション１３０を確立し、多数のクライアントによるネットワークセッション１３０への参加およびその方法を制御し、クライアント１２０Ａ−Ｄがネットワークセッション１３０に参加した後はクライアントによる相互対話の方法を制御する。ホスト１１０は一般に広い帯域と高い処理能力を持つので、ホスト１１０は、ネットワークセッション１３０内のすべてのクライアント１２０Ａ−Ｄとのデータの管理および分配を行うことが可能である。このような構成では、特定のクライアント（例えばクライアント１２０Ｄ）からのデータは、ホスト１１０を通して他のクライアント（例えばクライアント１２０Ａ−Ｃ）に分配される。例えば、クライアント１２０Ｄはホスト１１０にデータを送信する。他のクライアント、例えばクライアント１２０Ａがデータを要求すると、ホスト１１０はそのデータをクライアント１２０Ａに送信する。
【０００４】
ホストに接続しているおかげで、クライアントは自身が必要とするデータのみを（ホストを介して）要求することができ、そのため、クライアントは不必要なデータを管理する必要がない。このような構成は、ネットワークセッション内で交換されるすべてのデータを効率的に管理する能力を持たないクライアントの間で共通であってもよい。これらのクライアントは、データを管理し分配するホストを必要とする。
【０００５】
ネットワークセッション内のデータの管理および分配をホストに管理させることの欠点は、ホストとセッションクライアントのいずれか一つとの間の通信に影響を与える接続問題が生じたとき、データが失われる恐れがあることである。この場合、特定クライアントからのデータをホストに送信することができない。そのデータはまた、ネットワーク内の他のクライアントにとっても利用不可能になる。例えば、クライアント１２０Ｄが突然ホスト１１０から切断されたとする。クライアント１２０Ｄがホスト１１０に送っていたはずの情報はホスト１１０に到達せず、結果として、その情報はネットワークの残り（すなわち、クライアント１２０Ａ−Ｃ）には送信することができない。失われた情報により、ネットワークセッション１３０に混乱を引き起こすことがあり、他のクライアントの動作に影響を与える恐れがある。このことは、インタラクティブなネットワークゲームの場合には特に当てはまる。
【０００６】
Ｐ２Ｐ（peer-to-peer）通信でクライアント間の通信の確立を試みるとき、ＮＡＴ（Network Address Translation）に関してさらなる問題が起こりうる。Ｐ２Ｐ通信は一般にネットワークに接続されているクライアント装置間のダイレクトな通信のことをいう。限定されるわけではないが、ＶｏＩＰ（Voice over Internet Protocol）、ビットトレント（BitTorrent）送信、ビデオ送信、ファイル共有、データ共有、および個々のクライアントの帯域制限を超えないクライアント間でのダイレクトな伝送における他の種類のものがＰ２Ｐの適用例として含まれる。
【０００７】
ＮＡＴプロトコルを用いることにより、複数のノードや計算機が単一のインターネットまたはローカルなＩＰ（Internet Protocol）アドレスを共有しうる。一例としては、ローカルエリアネットワークは、公開されたグローバルアドレスを外部ネットワークトラフィックに使用しうるし、ひとつの（あるいは一組の）プライベートなＩＰアドレスを内部のネットワークトラフィックに使用しうる。ネットワーク内のほとんどのクライアントは中央サーバに接続されている。その中央サーバはＮＡＴファイアウォール（以後単に「ＮＡＴ」という。）の内部に置かれている。一般的に、以下の４つの種類のＮＡＴが知られている。すなわち、フルコーン（full cone）、制限コーン（restricted cone）、ポート制限（port restricted）、およびシンメトリック（symmetric）の４つである。
【０００８】
フルコーンＮＡＴは同一の内部ＩＰアドレスおよびポートからの要求を全て取得し、それらを同一の外部ＩＰアドレスおよびポートにマップする。外部にある任意のホストは、マップされた外部ＩＰアドレスにパケットを送信することで、内部のホストにパケットを送信することができる。制限コーンの場合も、同一の内部ＩＰアドレスおよびポートからの全ての要求は同一の外部ＩＰアドレスおよびポートにマップされる。しかし、フルコーンＮＡＴとは異なり、（ＩＰアドレスＸをもつ）外部のホストが内部ホストにパケットを送ることができるのは、内部ホストがそのＩＰアドレスＸにパケットを以前送信したことがある場合に限られる。
【０００９】
ポート制限ＮＡＴは制限コーンＮＡＴと似ているが、制限はポート番号も含む。具体的に、外部のクライアントが、ソースＩＰアドレスＸおよびソースポートＰをもつパケットを内部ホストに送ることができるのは、内部ホストが以前そのＩＰアドレスＸおよびポートＰからパケットを送ったことがある場合に限られる。最後の例であるシンメトリックＮＡＴは、同一の内部ＩＰアドレスおよびポートから特定のデスティネーションＩＰアドレスおよびポートへの全ての要求は、同一の外部ＩＰアドレスおよびポートにマップされる。もし、同じホストが同じソースアドレスおよびポートをもつが宛先が異なるパケットを送信する場合、異なるマッピングが用いられる。さらに、パケットを受信する外部ホストだけがＵＤＰ（User Data Protocol）パケットを内部ホストに送り返すことができる。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
したがって、ネットワークセッションの接続に関連する問題を解決し、セッション内で中断されないデータ交換を維持する、改善されたネットワークデータ分配システムおよび方法が当分野で必要とされている。このような文脈のもと、最適なＰ２Ｐネットワークを生成するために、Ｐ２Ｐネットワークにおけるホストは有益なＮＡＴプロファイルを持つことが望まれている。したがって、中央サーバに接続されているいくつかのクライアントの間で有益なＮＡＴプロファイルを持つホストを判定することが当分野でさらに必要とされている。
【課題を解決するための手段】
【００１１】
本発明のシステムおよび方法は、ネットワークセッションがデータを失うことなくホストとクライアントの間での通信の中断を乗り越えることを可能にする、ネットワークデータ分配の維持を提供する。ホスト機能は、シームレスにかつデータを大きく損なうことなくクライアントに移行する。本発明の実施形態は、ネットワークセッションのためにバックアップホストとして機能する一つまたは複数のクライアントを備える。他のクライアントがホストに対しデータを送信すると、そのデータを一つまたは複数のバックアップホストにも送信する。例えば、ホストにデータを送信したクライアントが所定の期間内にデータの確認を受領しないことがある。そのクライアントは、ホストに対してデータを再送信するとともに、データをバックアップホストにも送信する。バックアップホストの判定は、ホストと複数のクライアントとの間で接続が確立されたときにそのホストとクライアントとの間で共有された（ＮＡＴ）プロファイル情報に基づいてもよい。
【００１２】
本発明の様々な実施形態は、ネットワークデータ分配方法を含む。この方法は、ホストをクライアントに接続し、クライアントがバックアップホストとして機能できるか否かを判定し、機能できる場合、そのクライアントに対してバックアップホストとして機能できるようにする特定の情報を送信することを含む。この判定はＮＡＴプロファイル情報を用いて行ってもよい。バックアップホストとして機能することには、他のクライアントがホストとの通信ができないときに、その他のクライアントからの情報を受け取ることが含まれる。本発明の一部の実施形態では、方法はさらに、ホストとクライアントの間の通信が中断したことを表し、ホストとその特定クライアントの間の接続を停止することを含む。
【００１３】
本発明の様々な実施形態は、ネットワークデータ分配システムを含む。このシステムは、ホストと、バックアップホストとして機能可能である第１クライアントと、ホストおよび第２クライアントの間の通信が中断した時に第１クライアントに対してデータを送信可能な第２クライアントとを含む。本発明の一部の実施形態では、第２クライアントもまたバックアップホストとして機能することができる。本発明の一部の実施形態は、それぞれがバックアップホストとして機能するように構成された複数のクライアントを含むことができる。ＮＡＴプロファイル情報がバックアップホストとして機能可能であるか否かの判定に用いられてもよい。
【００１４】
ネットワーク分配システムで使用されるホストシステムも、本発明の実施形態で提供される。このホストシステムは、受信時にクライアント通信を確認する確認モジュールと、特定のクライアントがバックアップホストとして機能できるか否かを交渉する交渉モジュールと、ホスト情報を提供するアプリケーションをクライアントに配信するバックアップアプリケーションモジュールとを含む。本発明の一部の実施形態は、さらにホスト情報データベースとタイマとを含む。ＮＡＴプロファイル情報が収集され、解析され、バックアップホストとして機能可能であるか否かの判定に利用されてもい。
【００１５】
本発明の一部の実施形態は、ネットワークデータ分配用のコンピュータ記録媒体および命令を含む。この命令は、ホストをクライアントに接続すること、ＮＡＴプロファイル情報の使用を通じてバックアップホストとして機能可能であるクライアントと交渉すること、およびクライアントにホスト情報を送信してクライアントがバックアップホストとして機能開始できるようにすることを含む。
【図面の簡単な説明】
【００１６】
【図１Ａ】当技術分野で既知であるクライアント−サーバネットワーク構成を示す図である。
【図１Ｂ】一つのバックアップホストを有するネットワークデータ分配用の例示的なシステムを示す。
【図１Ｃ】いくつかのバックアップホストを有するネットワークデータ分配用の例示的なシステムを示す。
【図１Ｄ】ＮＡＴを利用するネットワークデータ分配用の例示的なシステムを示す。
【図２】ネットワークデータ分配システムにおいてシームレスなホスト移行を提供するコンピューティングデバイスの例示的な構成を示す図である。
【図３Ａ】ネットワークデータ分配用の、ネットワークアドレス変換器を含むシステムの例示的な実装を示す図である。
【図３Ｂ】ネットワークデータ分配用の、例ネットワークアドレス変換器を含むシステムの別の実装例を示す図である。
【図４】ＮＡＴプロファイル情報の使用を含むネットワークデータ分配の例示的な方法を示す図である。
【発明を実施するための形態】
【００１７】
本発明はネットワークデータ配布システムおよび方法を含む。本発明の実施形態により、ホスト移行をシームレスに発生させることが可能になる。ホストとクライアントとの間で通信が中断した場合に、データを大きく損なうことなくネットワークセッションを継続することができる。ネットワークセッションのホストは、複数のクライアントに接続されていてもよい。これらクライアントの一つ（または複数）が、バックアップホストとして機能できるようにしてもよい。バックアップ実行可能性はクライアントと交渉され、ホスト情報はクライアントに送信される。このクライアントは続いてバックアップホストとして機能することができる。バックアップホストは、続いてネットワークセッション内の他のクライアントに接続し、他のクライアントからデータを受け取ってもよい。その後、ホストと特定クライアントとの間の通信が中断した場合、その特定クライアントは、自身のデータをバックアップホストに送信することができ、これによってデータを失うことなくネットワークセッションを継続することができる。
【００１８】
全体を通して特定される構成要素は例示であり、様々な代替物、等価物または派生物を含む。ハードウェア、ソフトウェア、およびコンピュータで実行可能な命令の様々な組み合わせを利用することができる。プログラムモジュールおよびエンジンは、プロセッサによって実行されるときに特定タスクの実行をするルーチン、プログラム、オブジェクト、コンポーネントおよびデータ構造を含んでもよい。このプロセッサは、汎用のものでもまたはアプリケーション専用のものでもよい。コンピュータ可読媒体に格納された、コンピュータで実行可能な命令および関連するデータ構造とは、本明細書で開示された方法のステップを実行するか、および／または本明細書で開示された特定のシステム構成を実装するためのプログラミング手段の例を表している。
【００１９】
図１Ａに示され、また上で詳細に説明したクライアント−サーバネットワーク構成においては、各クライアントは、ネットワークセッション内のすべてのデータを処理する必要はない。代わりに、各クライアントは、そのクライアントがネットワークセッションに参加するために必要なデータのみを受け取り、それを処理する。一部のクライアントは、データのすべてを効率的に管理することができないが、これは、例えば帯域の不足か処理能力の不足によるものである。しかしながら、クライアントの中には、ネットワークセッション内のすべてのデータを管理する能力を有しているものもある。これらの特定のクライアントは、ネットワークセッションから得られるデータの一部またはすべてを格納するバックアップホストとして機能することができる。
【００２０】
図１Ａのシステム構成と比較して、図１Ｂは、一つのバックアップホストであるクライアント１６０Ａを備えた、ネットワークデータ分配用の例示的なシステムを示している。バックアップホストは、ネットワークセッションのホストの機能の一部またはすべてを実行することが可能である任意のクライアントであってもよい。ネットワークセッション１５０のホスト１４０が実行不可能であるかまたは実行しないとき、ホスティング責任の一部またはすべてがバックアップホストに移行することができる。バックアップホストとしての資格を得るためには、バックアップの実行可能性を明示する候補ホスト（クライアント）が必要となる。バックアップ実行可能性を明示することには、例えば、帯域、処理能力、メモリ、ハードウェアまたはソフトウェア構成、あるいはサービス品質に関する一つ以上の用件を満足することを含む。クライアントのバックアップ実行可能性は、ホストとの交渉を通じて判定されてもよい。
【００２１】
バックアップ実行可能性に関連しそれを確認する交渉が完了した後、ネットワークセッション１５０を通じてホスト１４０とクライアント１６０Ａとの間でホスト情報が送信される。ホスト情報は、ネットワーク名、ネットワーク内でのクライアントのインターネットプロトコル（ＩＰ）アドレス、ファイアウォール情報、およびクライアント１６０Ａがあるホスト責任を引き継ぐ必要がある場合の特定の責任に関する情報を含むことができる。ホスト情報を使用して、クライアント１６０Ａは、ホスト１４０と他のクライアント１６０Ｂ−Ｄとの間の一つ以上の接続が中断した場合に、バックアップホストとして機能することが可能になる。例えば、クライアント１６０Ｂがホスト１４０から切断されたとすると、図３Ａおよび図３Ｂに示されているように、クライアント１６０Ｂはクライアント１６０Ａにデータを転送してもよい。ホスト１４０からクライアント１６０Ａにホスト責任を移行することによって、クライアント１６０Ｂからの情報がネットワークセッション１５０で完全に失われることはない。
【００２２】
一部の実施形態では、二つ以上のクライアントがバックアップホストとして機能可能であってもよい。図１Ｃは、いくつかのバックアップホストであるクライアント１９０Ａ−Ｄを有するネットワークデータ配布用の例示的なシステムを示す。図１Ｃのネットワークセッション１８０内の各クライアントは、元のホスト１７０が利用できなくなった場合に、特定のバックアップホスト責任に関与することができる。例えば、クライアント１９０Ａが得点の記録に責任を持つ一方で、クライアント１９０Ｂはゲーム環境内の状況変化に責任を持つことができる。クライアント１９０Ｃは参加基準（例えば、誰がゲームに参加できるか）について責任を持ち、クライアント１９０Ｄはチャット機能の責任を持つことができる。代わりに、クライアント１９０Ａが上述のタスクのすべてについて責任を持ち、他のクライアント１９０Ｂ−Ｄは、クライアント１９０Ａがその後機能しなくなった場合にそれらのタスクを引き継いでもよい。
【００２３】
図１Ｄは、ＮＡＴを利用するネットワークデータ分配用の例示的なシステムを示す。ネットワーク上のクライアント１９５Ａ、クライアント１９５Ｂ、クライアント１９７、およびクライアント１９５Ｄは始め、外部ネットワーク１９９内のサーバ１９１に接続されている。サーバ１９１は、外部ネットワーク１９９に接続されているクライアント１９５Ａ、クライアント１９５Ｂ、クライアント１９７、およびクライアント１９５Ｄ間で行われているゲームを監視する。
【００２４】
クライアント１９５Ａ、クライアント１９５Ｂ、クライアント１９７、およびクライアント１９５Ｄはそれぞれ、対応するネットワークアドレス変換器（ＮＡＴ）１９２Ａ、１９２Ｂ、１９２Ｃ、および１９２Ｄの後ろに置かれている。各ＮＡＴは、ＬＡＮ（Local Area Network）の使用を可能とするインターネットの標準にしたがって、内部トラフィック用にあるプライベートＩＰアドレスのセットと外部トラフィック用に別のグローバルＩＰアドレスのセットとを用いるように構成されている。ほとんどのＮＡＴは、動的なＩＰアドレス変換を実行し、そのため内部ネットワークが通信を初期化する前には外部ネットワークが内部ネットワークに到達する方法はない。しかし、クライアント１９５Ａ、クライアント１９５Ｂ、クライアント１９７、およびクライアント１９５Ｄはサーバ・クライアントの関係を構築するため、クライアント１９５Ａ、クライアント１９５Ｂ、クライアント１９７、およびクライアント１９５Ｄとサーバ１９１との間の通信は、ＮＡＴ１９２Ａ、１９２Ｂ、１９２Ｃ、および１９２Ｄによって制限されない。
【００２５】
クライアント同士がダイレクトに通信することができるＰ２Ｐネットワークを確立する際、あるクライアントはホスト１９７として確立する。これにより他のピア１９５（Ｐ２Ｐネットワークと接続しているクライアントであってホストでないクライアント）は互いにダイレクトに接続する。ピア１９５は、完全結合グリッド（Fully Connected Grid；  ＦＣＧ）として知られる形態で接続される。ホスト１９７は、各クライアントのＮＡＴプロファイルに基づいて判定される。ＮＡＴ１９２Ａ、１９２Ｂ、１９２Ｃ、および１９２Ｄは、上述の４つの異なるＮＡＴタイプ（フルコーン、制限コーンＮＡＴ、ポート制限コーン、およびシンメトリック）のうちのひとつであってもよい。
【００２６】
一般に、フルコーン、制限コーン、およびポート制限コーンの通過は、シンメトリックＮＡＴを通過する場合よりも複雑である。クライアントがシンメトリックＮＡＴの後ろに置かれる場合のＮＡＴ通過の実装は、米国特許出願番号第１１／２４３，８５３号に記載されている。この開示は既に参照により援用されている。具体的には、あるＮＡＴの後ろに置かれたクライアントが、そのＮＡＴ上で予測されたトランスポートアドレスのリストの構築を含むポート予測を実行する。その後、クライアントは第１のノードから第２のクライアントに対し、予測されたトランスポートアドレスのリストを含む招待メッセージを送信する。次いで、シンメトリックＮＡＴの後ろに置かれたクライアントは、予測されたトランスポートアドレスを用いて第２のノードとの接続性のチェックを実行する。接続性のチェックは、ＳＴＵＮ（Simple Traversal of UDP through NAT）リクエストを予測されたトランスポートアドレスそれぞれに並列に送信することによって実行される。シンメトリックＮＡＴの後ろに置かれたクライアントがそのリクエストを受信すると、そのクライアントは第２のクライアントにＳＴＵＮ応答を送信する。第２のクライアントがＳＴＵＮ応答を受信した場合、そのアドレスに情報を送信することを開始できる。
【００２７】
上述の４つ以外のＮＡＴタイプを設けてもよい。ある場合には、標準的な技術を用いてＮＡＴを通過することができる。他の場合には、ＮＡＴの振る舞いが予測できない状態か不安定な状態のため、そのようなＮＡＴの後ろに置かれたクライアントとの通信は信頼性に欠く。ホスト１９７は、他のピア１９５Ａ、１０５Ｂ、および１９５Ｄとの間で情報の通信をすることが任務であるから、通信能力の妨げにならないタイプのＮＡＴの背後にあることが重要である。ピア１９５Ａ、１９５Ｂ、１９５Ｄ、およびホスト１９７が完全結合グリッド内に置かれているような例において、あるＮＡＴの後ろに置かれたホストがそのＮＡＴの通信能力の影響を受けないことが特に望まれる。
【００２８】
最も好ましいＮＡＴプロファイルを持ったホスト１９７を選択することで、より信頼できるＰ２Ｐ通信が得られる。ひとたびホスト１９７が確立されると、ピア１９５群は最初にホスト１９７に情報を送信し、次いでホスト１９７がその情報を受信者であるピア１９５に中継することによって、ピア１９５群は相互に通信することができる。ダイレクトな通信パスを確立するためにホスト１９７を使った後は、クライアントは直接情報を送信する。
【００２９】
本発明のある実施の形態では、クライアント１９５Ａ、１９５Ｂ、および１９７は、外部ネットワーク１９９と関連づけられているＳＴＵＮサーバ１９３を通してＮＡＴプロファイル情報を取得する。ＳＴＵＮサーバ１９３は、ＮＡＴの後ろに置かれているＩＰが使用可能なクライアントが、そのＮＡＴの存在およびＮＡＴタイプを探知することを許可するための軽量プロトコルを利用する。ＳＴＵＮサーバ１９３は、ほとんどの種類のＮＡＴと共に動作し、ＮＡＴの特定の挙動にも依存しない。ある観点から見れば、ＳＴＵＮサーバ１９３は、クライアント１９５Ａに立てかけられたミラーのように作用し、クライアント１９５Ａは、自身のローカルな送信アドレスがどのようにパブリックな送信アドレスにマップされるかを見ることができる。ＮＡＴ１９２Ａの後ろに置かれたクライアント１９５Ａは、ＳＴＵＮサーバ１９３との通信を通して、ＮＡＴ１９２Ａのタイプを判定することができる。
【００３０】
クライアント１９５Ａ、１９５Ｂ、１９７、および１９５Ｄはそれぞれ、ＳＴＵＮサーバ１９３を使ってＮＡＴプロファイル情報を取得し、取得した情報を中央サーバ１９１に中継する。これにより中央サーバ１９１が、どのクライアントが最もホスト１９７に適しているかを決めることができる。同様に、いずれかのクライアント１９５Ａ、１９５Ｂ、１９７、１９５Ｄは、ＳＴＵＮサーバ１９３を使ってＮＡＴプロファイル情報を取得し、
Ｐ２Ｐネットワークを通して通信を試みる他の全てのクライアントにその情報を中継してもよい。これにより、クライアント１９５Ａ、１９５Ｂ、１９７、および１９５Ｄが、ホスト１９７を最もよく判定することができる。
【００３１】
サーバ１９１に接続されている各クライアントは、Ｐ２Ｐネットワーク内で使用するための自身のＮＡＴプロファイル情報を収集する。このプロファイル情報には、クライアントの前方にあるＮＡＴタイプに関する情報、そのＮＡＴがＵＰｎＰ（Universal Plug and Play）をサポートするか否かに関する情報、そのＮＡＴがポート保存を提示するか否かに関する情報、およびそのＮＡＴがポートの予測可能性をサポートしているか否かに関する情報が含まれる。
【００３２】
本願において「ポート保存」とは、ひとたびある内部ＩＰアドレスが特定の外部ポートにマップされると、一貫してその特定のポートにマップされることを意味する。同様に、「ポートの予測可能性」とは、たとえ常に同じポートにマップされるものではないとしても、ある内部ＩＰアドレスがマップされる外部ポートを予測することができることを意味する。例えば、外部のポート番号は、内部ＩＰアドレスのそれぞれのマッピングが試みられると一貫して増加されてもよい。
【００３３】
各クライアント用のＮＡＴプロファイル情報は、Ｐ２Ｐ通信のためのホストを最もうまく選択するために、サーバに接続されている全てのクライアントに関する優先度のリストを生成するために使われる。潜在的なホスト間の優先順位が同順位である場合は、どの潜在的なホストを現実のホストとして選択するかを決定するために序数を設定しておいてもよい。ある実施の形態では、そのような序数はサーバによって割り当てられてもよい。たとえば、クライアントがサーバに接続された順にする。あるいは、分散調停アルゴリズムを用いて、２以上の等しく適切な潜在的なホストの中から一つのホストを選択してもよい。最初のホストがＰ２Ｐネットワークを離れることを決定するか、Ｐ２Ｐネットワークから何らかの理由で接続が切られることがあった場合、この情報はＰ２Ｐネットワーク用の次のホストを選択するために用いられる
【００３４】
ひとたびＮＡＴプロファイル情報が所定のクライアントによって収集されると、そのクライアント用のＮＡＴプロファイルはサーバに接続している他のクライアントに共有される。Ｐ２Ｐの分散を通して、あるいはクライアントからサーバを通して、残りのクライアントへの分散が生ずる。サーバは専用のネットワーク接続を通してプロファイル情報を分散する。ひとたび全てのＮＡＴプロファイルがクライアントによって提出されると、どの特定のクライアントがホストやピアとなるべきか、あるいはそれらが全体としてネットワークの交流のための条件を満たしていないかどうかの判定がなされる。上述の各クライアントが取得したプロファイル情報に基づいて、この判定はなされる。
【００３５】
例えば、複数の要因に基づいて優先度が割り振られることにより、最も好適なプロファイルを持っているクライアントに基づいて、有効なクライアントの中からひとつのホストが選択できる。残りのクライアントはそれらのプロファイル情報に基づいて、ピアに割り当てられるか、あるいはピアまたはホストとして認識されずに終わる。例えば、通過可能でないＮＡＴの後ろに置かれたクライアントは、ピアまたはホストとしてネットワークに接続するために必要な条件を満たさない。
【００３６】
典型的な優先順位付けスキームは、５つの分離された区分に分けることができる。アクティブ、起こりうる、不明、進行中、非アクティブの５つである。「アクティブ」タグはそのクライアントがホストとして非常によい候補であることを示す。「起こりうる」タグはそのクライアントがホストとしてよい候補であるが、アクティブタグの付いたクライアントの方が優先することを示す。「不明」タグは、その特定のクライアントがホストとしてよい候補であるか否かをネットワークが判定できないことを示す。「進行中」タグは、そのクライアントがホストとしてよい候補であるか否かをネットワークが判定中であることを示す。最後に、「非アクティブ」タグは、クライアントがホストとしての任務を担うことができないことを示す。
【００３７】
優先度タグは、以下の４つの典型的な基準に基づく。すなわち、ＮＡＴタイプ、ＵＰｎＰ（Universal Plug and Play）機能、ポート保存、およびポート予測の４つである。他のいくつかの要因も優先度の判定に用いてもよい。これらの要因はクライアントのサービス品質のプロファイルに該当し、ピングタイム、バンド幅の振る舞い、地理、レイテンシ、およびＩＰプロバイダを含むがこれらに限定されない。
【００３８】
図２は、ネットワークデータ配布システムにおいてシームレスなホスト移行を提供するコンピューティングデバイスの構成の一例２００を示す。ホスト２００は、ネットワーク内で中央通信ハブとして機能することができ、例えばサーバなどのコンピューティングデバイスである。通常はクライアント動作のために用意されるコンピューティングデバイスは、ホスト２００の構成の一部またはすべてを有していてもよいが、これは、ある時点においてはクライアントがバックアップホストとなることがあるという事実のためである。ホスト２００は、ネットワークインタフェース２１０、確認モジュール２２０、交渉モジュール２３０、ホスト情報データベース２４０、バックアップアプリケーションモジュール２５０、ポーリングモジュール２６０、タイマ２７０およびＮＡＴモジュール２８０を含むことができる。
【００３９】
本発明で参照される場合、モジュール（またはアプリケーション）とは、様々なシステムレベルの機能を実行するルーチンの集合のことをいう。モジュールは、必要に応じて、ハードウェア（例えば情報処理装置など）およびデバイスドライバよって動的にロードおよびアンロード（例えば実行）される。本明細書で述べるモジュラーソフトウェアコンポーネントは、より大きなソフトウェアプラットフォームの一部として組み込まれてもよいし、あるいはアプリケーション専用コンポーネントの一部として統合されてもよい。
【００４０】
ネットワークインタフェース２１０は、ネットワーク内でホストと他のコンピューティングデバイスの間の通信が可能になるように構成された様々なハードウェアおよび／またはソフトウェアコンポーネントのうち任意のものであってよい。ネットワークインタフェース２１０は、有線、無線、および／またはインターネットベースの通信ネットワークを介して通信を行うコンポーネントを含んでもよい。
【００４１】
確認モジュール２２０は、クライアントによって送信された情報がホスト２００によって受信されたことを確認できるようにする。ネットワークインタフェース２１０を通じてホスト２００がクライアントから情報を受け取ると、確認モジュール２２０は、情報を送信したクライアントに対して受信確認（ＡＣＫ）を送信することができる。例えば、クライアントがホスト２００に対してゲーム状態データの変更に関連する情報を送信する場合、確認モジュール２２０は送信クライアントに対して、その情報が受信されたことを表すＡＣＫ返答を送信することができる。確認モジュール２２０により送信されたＡＣＫ返答は、受信した情報の内容およびその情報の量に関する表示、および／または情報が破損していたり不完全であったりした場合にはその旨の表示をさらに含むことができる。
【００４２】
送信クライアントによる特定のデータ送信に対してＡＣＫを受領していないということは、データ送信がホスト２００によって受け取られていないことを表す。ホスト２００がデータ送信（またはその一部）を受け取っていないということは、ホスト２００とデータ送信をしたクライアントとの間の接続に問題があるか、またはホスト２００自体に問題があることを示している。特定の数のデータ送信がホスト２００からのＡＣＫ返答の受信をしていない場合、送信クライアントは移行動作を実行してもよく、これによって、ホスト機能の一部またはすべてがバックアップホストに移行される。
【００４３】
交渉モジュール２３０は、様々なパラメータに基づきクライアントのバックアップ実行可能性を交渉する。例えば、実行可能なバックアップホスト／クライアント候補は、ある量の利用可能な帯域を有している必要があるかもしれない。クライアントの帯域は、ネットワークセッションにおけるデータのすべてをクライアントが管理できるよう十分なものである必要がある。バックアップ実行可能性は、クライアントが関連する様々なサービス基準の品質に準拠している必要があるかもしれない。例えば、ｐｉｎｇレート、パケットロス、利用可能なメモリ、プロセッサ速度等である。
【００４４】
交渉モジュール２３０は、クライアント候補がネットワーク内の他の各クライアントと接続可能であるかについて判定してもよい。実行可能なバックアップホストは、ネットワーク内の他の各クライアントと接続可能であり、かつ情報を受け取ることができる必要がある。バックアップ実行可能性のパラメータは、ネットワークセッションのタイプによって判別されてもよい。例えば、特定のゲームネットワークセッションは、ゲーム環境内で多くの状態変化が生じうるので、バックアップ実行可能とするために特定の量の帯域とプロセッサ速度とを必要とする場合がある。単純なファイル転送のような複雑さの少ないトランザクションでは、より小さな帯域および／または処理能力を必要とする。
【００４５】
交渉モジュール２３０は、複数のクライアントとともにバックアップ実行可能性について交渉するように構成されていてもよい。これによって、一連のバックアップホストを生じさせる。代わりに、交渉モジュール２３０は、特定のタスクに対するバックアップ責任をクライアントのグループの間で割り当てるように構成されていてもよい。一連のバックアップホストを提供することによって、ネットワークまたはホスト／クライアント条件が保証するとき、ホスティングの義務を、ホストから第１のバックアップホストへ、第２のバックアップホストへ、といったようにシームレスに移行させることができる。バックアップホスト責任および／または特定の責任の順序は、クライアントがホストに接続されている順序に基づいて割り当てられてもよい。代わりに、帯域やサービス品質などの他の要因に基づいて、順序および／または責任が定められてもよい。
【００４６】
ホスト情報データベース２４０は、ホスト、クライアント、またはネットワークセッションに関連する情報を格納することができる。ホスト情報データベース２４０に格納される情報により、コンピューティングデバイスは、ネットワークセッション内の他のクライアントへの接続などの特定のホスティング義務を果たすことが可能になる。このようなホスト情報は、ネットワーク名、ネットワーク内のクライアントのインターネットプロトコル（ＩＰ）アドレス、およびファイアウォール情報を含んでもよい。ネットワークからクライアントが切断されたりまたはネットワークに新たなクライアントが参加したりといったイベントが生じると、ホスト情報データベース２４０が更新されてもよい。例えば、新たなクライアントのＩＰアドレスは、ホスト情報データベース２４０に追加される必要がある。
【００４７】
ホスト情報データベース２４０とともに動作して、バックアップアプリケーションモジュール２５０は、クライアントにダウンロードされ、インストールされ、実行されることができるアプリケーションを作成する。このアプリケーションは、基礎的な実行可能用件を満足することに加えて、クライアントがバックアップホストとして動作するために必要である特定の機能をクライアントに提供する。アプリケーションは、クライアントがネットワークセッション内の他のクライアントと接続しデータを交換できるようにクライアントを調整することができる。
【００４８】
オプションであるポーリングモジュール２６０は、ネットワークセッション内のすべてのクライアントにポーリングをするように構成される。ポーリングモジュール２６０を使用して接続するクライアントをポーリングすることができる。接続のポーリングには、ネットワークセッション内の各クライアントに対して小さなデータパケットを送信すること、データパケットを受け取ったクライアントからの返信／確認を受け取ること、およびホスト２００との通信に問題を抱えているクライアントを判定することを含むことができる。
【００４９】
ポーリングモジュール２６０は、周期的な間隔で自動的にクライアントにポーリングすることができる。ポーリングモジュール２６０は、新たなクライアントがネットワークセッションに参加したりあるいは接続が中断した事象があったり（例えば、クライアントがホスト２００により送信されたデータを確認していない）といったイベントが生じたときに、クライアントに対しポーリングをするように構成することもできる。ポーリングモジュール２６０のポーリング動作は、米国特許公開番号第２００３−０２０４５６６号の「マルチユーザアプリケーションインタフェース」に記載されているような周期的な鼓動にも似ているかもしれない。この開示は既に参照により援用されている。
【００５０】
ホスト２００はタイマ２７０を含んでもよい。タイマ２７０は、イベント後に経過した時間を測定するように構成されている。ホスト２００はタイマ２７０を使用して、ポーリングモジュール２６０により生成されるようなデータ送信と、そのデータ送信の確認との間の時間を判定することができる。この種の情報を使用して、特定クライアントへの接続を打ち切るか否かの判定をすることができる。タイマ２７０により測定するとき、ホスト２００がある期間の間、特定のクライアントからの確認を受け取っていなかったりまたはポーリングの応答を受け取っていない場合、ホスト２００はそのクライアントとの接続を停止することができる。
【００５１】
バックアップアプリケーションモジュール２５０により作成されたアプリケーションは、ポーリングモジュール２６０およびタイマ２７０の機能と似た特定の機能をさらに含んでもよい。ネットワークセッションから特定クライアントを外すか否かを判定しようとするホスト２００とは異なり、この「鼓動」機能はバックアップホストとして指定されたクライアントによって使用され、ホスト２００が特定のホスト義務を実行できなくなったり、またはホスト義務の実行に連続して失敗した時間を判定する。ホスト２００が特定の義務を実行不可能であるかまたは実行に失敗したということは、確認モジュール２２０により生成されるＡＣＫすなわち鼓動を連続して受け取っていないことで表すことができる。
【００５２】
ホスト２００はＮＡＴモジュール２８０を含む。ＮＡＴモジュール２８０の実行によりＮＡＴプロファイル情報の収集、共有、および受信が可能となる。同様に、ＮＡＴモジュール２８０の実行により、ＮＡＴプロファイル情報を用いてネットワーク内の最も実行可能なホストを判定することが可能となる。ＮＡＴプロファイル情報はメモリ、専用のデータベース、またはホスト情報データベース２４０のような他のデータベースに格納される。
【００５３】
ホスト２００（および他の多くのクライアント）は、ネットワークアドレス変換器の後ろに存在し、そのネットワークアドレス変換器は、特定の計算機のために、内部のＩＰアドレスをパブリックなＩＰアドレスに変換する。パブリックなＩＰアドレスはネットワーク内の他の計算機から見られるアドレスである。ある実施の形態では、ホスト２００や他の計算機器はネットワークアドレス変換器を内包する。しかしながら、あるネットワークでは、ＮＡＴが全く使用されない。ＮＡＴプロファイル情報は、使用されている（もしあれば）ＮＡＴタイプ、ＮＡＴがＵＰｎＰ（Universal Plug and Play）を行う能力、ＮＡＴのポート保存を維持する能力、およびＮＡＴのポート予測についての情報を含む。
【００５４】
場合によっては、ホスト２００（またはネットワーク内の他の計算機）は、サービス情報の等価性のような付加的な情報に基づいて、補助的な調停フィルタを適用し、２以上の同程度に有望な候補デバイスの中からホストデバイスを選ぶ決定を調停することが望ましい。サービス品質情報は、クライアントのピングタイム、帯域幅の振る舞い、地理、レイテンシ、ＩＰプロバイダなどの要因や上述の他の要因を含んでもよい。これらの追加的な情報はメモリや（専用または他の）データベースに格納される。
【００５５】
図３Ａは、ネットワークアドレス変換器（図示せず）を含むネットワークデータ分配用の例示的なシステム３００の実装を示す。ホスト２００は複数のクライアント３１０Ａ−Ｄに接続されている。クライアント３１０Ａは、ホスト２００とのバックアップ実行可能性についての交渉を成功させており、接続３２０を通じてホスト情報を受け取っている。ホスト情報を使用して、クライアント３１０Ａはネットワーク内の他のクライアント、すなわちクライアント３１０Ｂ−Ｄと接続する。接続３３０により、クライアント３１０Ｂ−Ｄはクライアント３１０Ａと直接（すなわち、ホスト２００を介することなく）通信する。クライアント３１０Ｂ−Ｄは、それぞれのクライアントからホスト２００へのデータ送信が困難になった場合に、接続３３０を用いてクライアント３１０Ａとデータを交換することができる。クライアント３１０Ｂ−Ｄは、ホスト２００とのデータ送信における問題に関係なく、クライアント３１０Ａに対して自動的にデータを送信することもできる。
【００５６】
図３Ｂは、ネットワークアドレス変換器（図示せず）を含むネットワークデータ分配用の例示的なシステムの別の実装を示す。特に、図３Ｂは、ホスト２００とクライアント３１０Ｄとの間の通信が中断した場合の、ネットワークデータ分配用の例示的なシステムを表している。具体的には、ホスト２００とクライアント３１０Ｄの間のデータ送信３４０が失敗した様子が示されている。クライアント３１０Ｄがホスト２００に対するデータ送信３４０を実行しようと試みている一方で、障害のある接続のためにホスト２００による送信の受け取りが妨げられている。
【００５７】
クライアント３１０Ａはネットワークセッションのバックアップホストであるので、クライアント３１０Ｄは、ホスト２００に向けられたのと同一のデータを、バックアップデータ送信３５０で直接（すなわち、ホスト２００を介さずに）クライアント３１０Ａに送ることができる。続いて、クライアント３１０Ａは、データ送信３６０でホスト２００に対してそのデータを送る。この特定の実施形態では、クライアント３１０Ｄとホスト２００とを分離する障害のある通信のために、クライアント３１０Ａは、クライアント３１０Ｄとホスト２００の間のプロキシ（代理）として機能する。続いて、ホスト２００は、クライアント３１０Ａを介して受け取ったものではあるが、クライアント３１０Ｄからのデータをクライアント３１０Ｂと３１０Ｃに分配する。代わりに、クライアント３１０Ｄとホスト２００の間の接続に対するホスト義務をホスト２００が維持することができなかった場合に、クライアント３１０Ａがデータをクライアント３１０Ｂまたは３１０Ｃに送信してもよい。
【００５８】
ホスト２００とクライアント３１０Ｄの間の通信が中断したので、クライアント３１０Ｄはクライアント３１０Ａを介してセッションデータを取得する必要がある。クライアント３１０Ａは、いずれかのコンピューティングデバイスに代わってデータを要求することに加えて、ホスト２００およびクライアント３１０Ｄに対するデータ送受信の中間媒体として機能することができる。
【００５９】
図４は、ＮＡＴプロファイル情報の利用を含むネットワークデータ分配をする例示的な方法４００を示すフローチャートである。図４で特定されるステップ（およびその順序）は例示であり、様々な代替物、等価物または派生物を含むことができ、またその実行の順序に限定されない。図４のプロセスのステップ（およびその様々な代替物）は、プロセッサにより実行可能である命令を含む機械可読媒体またはコンピュータ可読記録媒体（例えば、光ディスク、メモリカードまたはハードドライブ）を含む、ハードウェアまたはソフトウェアで実現可能である。
【００６０】
ステップ４１０で、ホスト（例えばホスト２００）がネットワークセッションを確立する。ホストは、ネットワークセッションを進行させる様々な態様の他に、ネットワークセッションに参加可能な対象についての特定のパラメータを設定してもよい。ホストは、特定のクライアントのみまたは招待されたクライアントのみが参加できるプライベートなネットワークセッションを確立することができる。代わりに、ホストは、公衆に開かれており任意のクライアントが参加可能であるネットワークセッションを確立することができる。
【００６１】
ステップ４２０で、ホストに接続することによって複数のクライアントがネットワークセッションに参加する。ネットワークセッションに参加可能である対象に関する特定のパラメータをホストが設定していた場合、ホストへの接続またはネットワークセッションへの参加が許可される前に、クライアントはそれらのパラメータを満足している必要がある。
【００６２】
ステップ４３０で、図２の交渉モジュール２３０を介してバックアップ実行可能性が交渉される。一つまたは複数のクライアントが、バックアップホストとして機能するための能力およびリソースを有する、実行可能なバックアップホストとなることができる。帯域およびサービス品質を含むバックアップ実行可能性の様々な側面が評価され、特定のクライアントがバックアップホストとして機能可能であるか否かが判定される。ＮＡＴプロファイル情報も同様に考慮される。交渉モジュール２３０の要件に応じて、ネットワークセッション内のクライアント中に一つまたは二つ以上の実行可能なバックアップホストが存在するか、またはバックアップホストが存在しないこともある。
【００６３】
ステップ４４０で、バックアップ責任が割り当てられる。実行可能なバックアップホストであるクライアントが複数ある場合、順序および／または特定の責任に関して、それらのクライアントの間でバックアップ責任を割り当てる必要がある。ネットワークセッション内のクライアントは、第１の実行可能なバックアップホストに対して自身のデータを送信することができる。第１の実行可能なバックアップホストは、ホストによって特定されるか、またはブロードキャストあるいは他の通信によって最初にバックアップと見なされたものである。後者については、米国特許公開番号第２００３−０２１７１３５号の「動的プレイヤー管理」に例証されており、この開示は既に参照により援用されている。第１の実行可能なバックアップホストがバックアップホストとして動作不可能であるか、または動作不可能になった場合、他のクライアントは、第２の実行可能なバックアップホストに対して自身のデータを送信して、ネットワークセッションに参加することができる。本明細書に開示の、および／または上述の「動的プレイヤー管理」の出願に開示されている手段を利用して、第２のバックアップホストと通信する必要性を示すことができる。
【００６４】
ステップ４５０で、ネットワークセッション内の他の各クライアントに対して特定のクライアントが接続可能であるか否かが判定される。バックアップホストは、セッション内の各クライアントおよびあらゆる他のクライアントと接続可能である必要がある。第１のクライアントが第２のクライアントと接続できない場合、第１のくライアンとは、ネットワークセッションのバックアップホストとして機能することはできない。例えば、第１クライアントによるあるタイプの接続を妨げるファイアウォール問題を第１のクライアントが有しているかもしれない。潜在的なバックアップホストがいかなる理由によっても別のクライアントと接続できない場合、本方法はステップ４４０に戻りバックアップ責任を再割り当てする。
【００６５】
あるクライアントが実行可能なバックアップホストであり、ネットワークセッション内の他のクライアントのすべてと接続可能であると判定されると、方法はステップ４６０に進む。ステップ４６０で、バックアップ情報が実行可能なバックアップホストにダウンロードされる。バックアップ情報をバックアップホストに提供することで、ホストはネットワークから抜け出すことができ、バックアップホストは、ネットワークセッション内の他のクライアントにより要求されるあらゆる情報を提供できるようになる。図２のバックアップアプリケーションモジュール２５０の文脈で述べたように、バックアップ情報は、シームレスなホスト移行を容易にするアプリケーションのダウンロードおよびインストールの一部として提供することができる。
【００６６】
ステップ４７０で、ネットワークデータ分配が開始される。図３Ａに示したように、ホストとクライアントの間でデータ送信が発生する。図３Ｂにさらに示したように、二つのクライアントの間、すなわちホスト接続問題を抱えるクライアントから、バックアップホストとして動作可能であるクライアントに対してデータ送信が行われる。さらに、バックアップホストは、ホストに向けてデータを送るか、または要求に応じて他のクライアントに対して直接データを送ることができる。データを中継しなければならないあらゆる接続を介して、そのデータを要求するコンピューティングデバイスに対してデータが提供される。
【００６７】
例示的な実施形態を参照して本発明を説明してきたが、当業者ならば、本発明の真の精神および範囲を逸脱することなく、様々な変更が可能であり、また等価物による要素の置換が可能であることを理解するだろう。加えて、本発明の本質的な教示を逸脱することなく修正が可能である。本明細書で述べた様々な方法を実装するために様々な代替システムを利用することができ、また上述のシステムから生じる特定の結果を達成するために様々な方法を使用することができる。
【図１Ａ】
2010541476.tif 000003
【図１Ｂ】
2010541476.tif 000004
【図１Ｃ】
2010541476.tif 000005
【図１Ｄ】
2010541476.tif 000006
【図２】
2010541476.tif 000007
【図３Ａ】
2010541476.tif 000008
【図３Ｂ】
2010541476.tif 000009
【図４】
2010541476.tif 000010
【手続補正書】
【提出日】平成22年8月24日(2010.8.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストと複数のクライアントの間の接続を確立するステップであって、前記ホストと前記複数のクライアントの各々との間で交換されるデータが受領時に確認されるステップと、
前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）プロファイル情報に少なくとも基づいて、前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップと、
前記第１クライアントに対してホスト情報を送信するステップであって、前記第１クライアントは少なくとも前記ホスト情報に基づき前記複数のクライアントのうち他のすべてのクライアントへの接続を確立し、前記ホストと前記複数のクライアントのうちの第２クライアントとの間で通信が中断された場合、前記第１クライアントが前記第２クライアントからデータを受け取るステップと、
を含むネットワークデータ分配を維持する方法。
【請求項２】
前記ホストと前記複数のクライアント間の前記ＮＡＴプロファイル情報を共有するのに先立って、ＳＴＵＮサーバを通じてＮＡＴプロファイル情報を収集するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
クライアント−サーバ構成を利用して前記ホストと前記複数のクライアント間で前記ＮＡＴプロファイル情報が共有されることを特徴とする請求項１に記載の方法。
【請求項４】
ピアツーピア構成を利用して前記ホストと前記複数のクライアント間で前記ＮＡＴプロファイル情報が共有されることを特徴とする請求項１に記載の方法。
【請求項５】
前記ＮＡＴプロファイル情報を用いて前記複数のクライアントから前記クライアントそれぞれに優先度を割り当てるステップをさらに含み、
ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、前記優先度の使用を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１クライアントの優先度が、前記複数のクライアントのうちの他のクライアントに割り当てられた優先度と等しい優先度のとき、優先度の衝突を解決するステップをさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記優先度の衝突を解決するステップは、前記第１クライアントのより高次の序数に対して前記複数のクライアントのうちの前記他のクライアントに割り当てられた序数を参照するステップをさらに含み、
前記序数はあらかじめ前記複数のクライアントそれぞれに割り当てられていることを特徴とする請求項６に記載の方法。
【請求項８】
前記複数のクライアントの前記ＮＡＴプロファイル情報はＮＡＴタイプを含み、
前記ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、前記ＮＡＴタイプの使用を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記複数のクライアントそれぞれの前記ＮＡＴプロファイル情報は、ＮＡＴがＵＰｎＰ（Universal Plug and Play）をサーポーとするか否かに関する情報を含み、
前記ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、ＮＡＴがＵＰｎＰをサーポーとするか否かに関する情報の使用を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記複数のクライアントそれぞれの前記ＮＡＴプロファイル情報は、ＮＡＴのポート予測可能性に関する情報を含み、
前記ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、前記ポート予測可能性の情報の使用を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記複数のクライアントそれぞれの前記ＮＡＴプロファイル情報は、ＮＡＴのポート保存に関する情報を含み、
前記ＮＡＴプロファイル情報に少なくとも基づいて前記複数のクライアントのうち第１クライアントのバックアップ実行可能性を判定するステップは、前記ポート保存の情報の使用を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記通信の中断は、前記第２クライアントが前記ホストにデータを送信した後のある時間内に前記ホストから前記第２クライアントに対して確認がないことにより認識されることを特徴とする請求項１に記載の方法。
【請求項１３】
前記ホストと前記複数のクライアントの各々との間の接続を判定するために前記複数のクライアントにポーリングすることをさらに含む請求項１に記載の方法。
【請求項１４】
前記中断された通信が、前記ポーリングの結果によって示されることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記ホストから前記複数のクライアントの各々に対し、前記中断された通信に関する表示が送信されることをさらに含む請求項１に記載の方法。
【請求項１６】
前記中断された通信に基づき、前記ホストと前記第２クライアントとの間の通信を終了することをさらに含む請求項１に記載の方法。
【請求項１７】
前記第１クライアントのバックアップ実行可能性の判定が、該第１クライアントの帯域を判定することを含む請求項１に記載の方法。
【請求項１８】
前記第１クライアントのバックアップ実行可能性の判定が、前記第１クライアントが前記複数のクライアントのうちの他のクライアントの各々へと接続可能であるかを判定することをさらに含む請求項１に記載の方法。
【請求項１９】
前記第１クライアントへのホスト情報の送信が、該ホスト情報を提供するアプリケーションを送信することを含む請求項１に記載の方法。
【請求項２０】
前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴプロファイル情報に少なくとも基づいて、前記複数のクライアントのうちの第３クライアントのバックアップ実行可能性を判定し、
少なくともホスト情報とＮＡＴプロファイル情報とに基づき、前記第３クライアントが前記複数のクライアントのうちの他のすべてのクライアントへと接続し、かつ、前記第１クライアントと前記第２クライアントの間の通信が中断された場合に該第３クライアントが前記第２クライアントからデータを受信できるように、前記第３クライアントに対してホスト情報を送信することをさらに含む請求項１に記載の方法。
【請求項２１】
前記ホストとの接続が確立される順序に少なくとも基づき、前記第３クライアントへデータを送信する前に前記第１クライアントにデータを送信するように前記第２クライアントがさらに構成されていることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記第１クライアントの帯域と前記第３クライアントの帯域とに少なくとも基づき、前記第３クライアントにデータを送信する前に前記第１クライアントにデータを送信するように前記第２クライアントがさらに構成されていることを特徴とする請求項２０に記載の方法。
【請求項２３】
複数のクライアントに接続されるよう構成され、該複数のクライアントの各々からデータを受け取りデータの受信を確認するホストと、
ホスト情報を受け取るように構成され、前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴプロファイル情報に少なくとも基づいて、前記複数のクライアントのうちの他のすべてのクライアントと接続する第１クライアントと、
前記ホストとの間の通信が中断した場合に、前記第１クライアントに対してデータを送信するように構成された第２クライアントとを備え、
前記ホストは、第１クライアントのバックアップ実行可能性を交渉することを特徴とするネットワークデータ分配を維持するシステム。
【請求項２４】
前記通信の中断が、前記第２クライアントが前記ホストにデータを送信した後ある時間内に前記ホストからの確認がないことによって示されることを特徴とする請求項２３に記載のシステム。
【請求項２５】
前記第２クライアントは、前記ホストに対しデータを再送信するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項２６】
前記第２クライアントは、前記ホストと第２クライアントの間の通信の中断に関する情報を、前記複数のクライアントの各々に通知するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項２７】
前記第２クライアントは、前記ホストと第２クライアントの間の接続を停止するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項２８】
前記ホストは、接続に関する情報を前記複数のクライアントにポーリングするようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項２９】
前記ホストは、該ホストと前記第２クライアントの間の通信の中断に関する情報を、前記複数のクライアントの各々に通知する通知するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項３０】
前記ホストは、該ホストと前記第２クライアントの間の接続を停止するようにさらに構成されていることを特徴とする請求項２９に記載のシステム。
【請求項３１】
前記ホストは、前記第１クライアントの帯域に基づいて前記第１クライアントのバックアップ実行可能性の交渉をするようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項３２】
前記ホストは、前記複数のクライアントのうちの他のクライアントの各々に対して前記第１クライアントが接続可能であるか否かに基づきバックアップ実行可能性をさらに交渉することを特徴とする請求項２３に記載のシステム。
【請求項３３】
前記ホストは、前記第１クライアントに対してホスト情報を送信するようにさらに構成されていることを特徴とする請求項２３に記載のシステム。
【請求項３４】
前記ホストは、前記複数のクライアントのうちの他のクライアントの各々に関する情報を提供するように構成されたアプリケーションを送信することで、前記ホスト情報を送信することを特徴とする請求項３３に記載のシステム。
【請求項３５】
前記複数のクライアントのうちの第３クライアントがホスト情報を受け取るように構成されており、これにより前記第３クライアントが、前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴプロファイル情報に少なくとも基づいて、複数のクライアントのうちの他のすべてのクライアントと接続することを特徴とする請求項２３に記載のシステム。
【請求項３６】
前記第２クライアントは、前記第１クライアントと前記第２クライアントとの間の通信が中断している場合、前記第３クライアントにデータを送信するようにさらに構成されていることを特徴とする請求項３５に記載のシステム。
【請求項３７】
クライアントから受け取ったデータを確認する応答を送信するように構成された確認モジュールと、
共有されたＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）プロファイル情報に少なくとも基づいて、第１クライアントのバックアップ実行可能性を交渉するように構成された交渉モジュールと、
少なくともＮＡＴプロファイル情報に基づき複数のクライアントのうちの他のクライアントすべてに前記第１クライアントが接続して第２クライアントからデータを受け取るように、前記第１クライアントに対してホスト情報を提供するアプリケーションを送信するように構成されたバックアップアプリケーションモジュールと、
を備えることを特徴とする、ネットワーク内でデータ分配を維持するためのコンピューティングデバイス。
【請求項３８】
プロセッサにより実行可能でありグループメッセージング方法を実行するプログラムが具現化されたコンピュータ可読の記録媒体であって、
前記プログラムは、
ホストと複数のクライアントの各々との間で交換されたデータが受領時に確認されるように、複数のクライアントにホストを接続し、
前記ホストと前記複数のクライアント間の接続が確立したときに前記ホストと前記複数のクライアントとの間で共有されたＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）プロファイル情報に少なくとも基づいて、前記複数のクライアントとのうちの第１クライアントのバックアップ実行可能性を判定し、
少なくともホスト情報に基づき前記複数のクライアントのうちの他のクライアントすべてに前記第１クライアントが接続して、複数のクライアントのうちの第２クライアントから第１クライアントがデータを受け取るように、前記第１クライアントに対してホスト情報を送信することを含む記録媒体。
【請求項３９】
前記プログラムは、前記ホストと前記第２クライアントの間の接続を停止するための実行可能な命令をさらに含むことを特徴とする請求項３８に記載の記録媒体。
【国際調査報告】
2010541476.tif 000011