JP2010527561A - エッジルーティングを用いたピアツーピアコラボレーションシステム - Google Patents

エッジルーティングを用いたピアツーピアコラボレーションシステム Download PDF

Info

Publication number
JP2010527561A
JP2010527561A JP2010508480A JP2010508480A JP2010527561A JP 2010527561 A JP2010527561 A JP 2010527561A JP 2010508480 A JP2010508480 A JP 2010508480A JP 2010508480 A JP2010508480 A JP 2010508480A JP 2010527561 A JP2010527561 A JP 2010527561A
Authority
JP
Japan
Prior art keywords
peer
peers
group
packet
nat
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2010508480A
Other languages
English (en)
Inventor
ジェイ.ワン ジム
ビー.ティチェナー トーマス
ディー.サンフィリッポ トーマス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010527561A publication Critical patent/JP2010527561A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2567NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2578NAT traversal without involvement of the NAT server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1051Group master selection mechanisms

Abstract

共有空間に対する変更を、アドレッシング技法の組合せを用いて送られるメッセージを使用して、コラボレーションセッション内のピアのすべてにブロードキャストすることができるピアツーピアコラボレーションシステム。メッセージは、直接的なピアツーピア伝送、別のピアを介した間接的な伝送、またはサーバを介した間接的な伝送のためにアドレス指定することができる。各ピアと通信するために使用されるアドレッシングのタイプは、ルーティングテーブルの使用を通して決定される。ルーティングテーブルは、相互接続される、ピアのグループを規定し、各グループ内の1つまたは複数のピアをメッセージの最初の受信者として選択するために使用することができる。最初の受信者は、それらのグループ内の他のピアにメッセージを転送することができる。NAT背後のピアについては、1つまたは複数のNATトラバーサル技法を使用し、ルーティングテーブルを構築するための情報を得ることができる。

Description

本発明は、エッジルーティングを用いたピアツーピアコラボレーションシステムに関する。
ピアツーピアコラボレーションシステムは、一般にビジネスの場面で、たとえユーザが相異なる場所にいることがあるにしても、複数のユーザが共同で作業をすることができるようにするために使用される。ピアツーピアコラボレーションシステムは、ネットワークによって相互接続されたコンピューティングデバイスを用いて実装される。ピアデバイスのそれぞれは、共同作業するユーザに対して表示される、またはそのようなユーザが働きかけるデータまたは他の情報のコピーを維持することができる。その情報は、「共有空間」と呼ばれるものを生み出す。
ピアデバイスのそれぞれの中のクライアントソフトウェアは、そのデバイスのユーザが、そのデバイスによって維持されている共有空間のコピーを変更することを可能にする。変更が加えられるたびに、クライアントは、共有空間に加えられた変更を示すメッセージをブロードキャストする。コラボレーションセッション内の他のピアデバイスは、これらの変更メッセージを受信し、共有空間の各自のコピーに対して対応する変更を加える。このようにして、共有空間のコピーのすべてが同期され、コラボレーションセッション内のあらゆるユーザが、あらゆる他のユーザによって加えられた変更を閲覧することができる。
しかし、コラボレーションシステムが所期のように機能するためには、各ピアデバイスがあらゆる他のピアデバイスに変更を伝えることができなければならない。インターネットなどのネットワークは、理論上、そのネットワークに結合された任意の2つのピアデバイス間で通信を可能にするように使用することができる。しかし、一部のプライベートネットワークは、インターネットに結合されていても、そのプライベートネットワークを介してインターネットに結合されたピアデバイスがそのプライベートネットワークの外側のデバイスとのピアツーピア通信に加わることができるように構成されていない。たとえば、多数のローカルエリアネットワーク(LAN)は、プライベートネットワークとインターネットの間のインターフェースでネットワークアドレス変換(NAT)を使用する。アドレス変換は、NATデバイス背後のピアに向けて送られるメッセージを中断し、それによりピアツーピア通信と干渉する可能性がある。
いくつかのデバイスがNATデバイスの背後にある、または他の形で他のピアから到達できないときコラボレーションセッションの中断を回避するために、コラボレーションシステムは、リレーサーバを使用する。別のピアと直接通信することができないピアは、最初にリレーサーバにメッセージを送ることによって間接的に通信することができる。リレーサーバは、そのメッセージを受信者ピアに転送することができる。場合によっては、リレーサーバは、そのメッセージを受信者ピアに直接転送する。しかし、他の状況では、そのメッセージは、受信者ピアに到達する前に、1つまたは複数の他のリレーサーバを通って転送されることになる。
ピアツーピア通信セッション内でリレーサーバを通るルーティング変更メッセージによって引き起こされる輻輳を低減するために、これらの変更は、ダイレクトピアツーピアメッセージを使用して配布することができるメッセージ内で通信される。リレーサーバは、いくつかのメッセージに使用することができるが、多数の変更メッセージを処理する際のリレーサーバに対する負荷を低減することにより、ピアツーピアメッセージのコストを削減することができ、システムのスケーラビリティを増大することができる。
直接的なピアツーピア通信を容易にするために、ピア間の相互接続を定義するルーティングテーブルを使用し、メッセージのアドレス指定を行うことができる。ルーティングテーブルは、ダイレクトピアツーピアメッセージを使用して通信を行うことができるピアのグループを識別することができる。変更を開始する、かつその変更をコラボレーションセッション内の他のピアにブロードキャストするピアは、最初の受信者として、各グループ内のあるピアを選択することができ、このピアは、開始ピアから直接または間接的にメッセージを受信することができる。最初の受信者は、そのメッセージをグループ内の1つまたは複数の他のピアに転送することができる。次いで、そのメッセージを受信する各ピアは、コラボレーションセッション内のピアすべてがそのメッセージを受信するまで、ピアツーピア通信を介して、グループ内の他のピアにそのメッセージをさらに伝播することができる。
リレーサーバ、またはコラボレーションシステムの他の構成要素は、ルーティングテーブルの構築に参加することができる。そのようなサーバは、探索用のメッセージをピアから受信し、それらのメッセージを解析し、他のピアがそのピアと通信することができる可能性があるアドレスに関する情報を得ることができる。また、ピアがネットワークアドレス変換(NAT)デバイスの背後にある場合、サーバが得た情報を使用し、そのNATデバイスをトラバースしそのピアに到達するための手法を識別することができ、おそらくは直接的なピアツーピア通信で到達可能なコラボレーションセッション内のピアの数を拡大する。
前述は、添付の特許請求の範囲によって規定される本発明の非限定的な概要である。
添付の図面は、原寸に比例して示すことを意図されていない。図面では、様々な図に示されている同一またはほぼ同一の各構成要素が同様の符号によって表されている。図を見やすくするために、あらゆる図面においてあらゆる構成要素に符号が付けられているわけではないことがある。
従来技術のピアツーピアコラボレーションシステムの図である。 本発明の一実施形態によるピアツーピアコラボレーションシステムの図である。 本発明の一実施形態によるピアツーピアコラボレーションシステム内のピアの機能ブロック図である。 本発明の一実施形態によるピアツーピアコラボレーションシステムのピアで使用することができるデータ構造の図である。 B1およびB2の符号が付けられた点で相互接続されたとき、ピアが背後にある、あるタイプのNATデバイスを発見するためのプロセスの流れ図を形成する図である。 B1およびB2の符号が付けられた点で相互接続されたとき、ピアが背後にある、あるタイプのNATデバイスを発見するためのプロセスの流れ図を形成する図である。 本発明の一実施形態によるピアツーピア通信に使用することができるアドレッシングの形態の図である。 本発明の一実施形態によるピアツーピア通信に使用することができるアドレッシングの形態の図である。 本発明の一実施形態によるピアツーピア通信に使用することができるアドレッシングの形態の図である。 本発明の一実施形態によるピア内のルーティングテーブルを維持するプロセスの流れ図である。 本発明の一実施形態によるメッセージを送信するためのプロセスの流れ図である。
本発明者らは、ピアツーピアコラボレーションシステムのコラボレーションセッション内で直接通信することができないピア間で間接的な通信を容易にするためにリレーサーバを使用すると、リレーサーバの周りで望ましくない量の負荷が生じる可能性があると理解している。その結果、ピアツーピアコラボレーションシステムの効果的な動作には、ネットワーク帯域幅またはメモリなど、リレーサーバに関連する望ましくない量のリソースが必要となるおそれがある。また、本発明者らは、負荷、およびサーバ負荷に伴う性能劣化は、より多くのピアデバイスが他のピアデバイスから到達できなくなるにつれて増大すると理解している。直接的な通信をするためにピアデバイスに到達できない可能性がある1つの理由は、そのピアがNATデバイスの背後にある可能性があることである。残念ながら、ピアデバイスがNATデバイスの背後にある可能性は、より多くのユーザが家庭から仕事をする、またはNATデバイスを使用するローカルエリアネットワークを介してインターネットに接続されるにつれて、増大している。
本発明の実施形態によれば、ピアツーピアコラボレーションシステムのリレーサーバに対する負荷を、エッジルーティング技法を使用することによって低減することができる。そのような技法は、ピアツーピアから直接、または1つまたは複数の中間ピアを通って間接的に他のピアに渡すことができる、ピアツーピアコラボレーションシステムに関連する変更メッセージまたは他のメッセージの量を増大させることができる。したがって、それらのメッセージがリレーサーバを通過しないため、サーバ負荷が低減される。そのようなシステムの有効性は、NATデバイスの背後にあるデバイスとのピアツーピア通信を可能にするNATトラバーサル技法を組み込むことによってさらに改善することができる。
いくつかの実施形態では、本発明は、当技術分野で知られているピアツーピアコラボレーションシステムの構成要素を使用して実装することができる。知られている構成要素のタイプの一例として、図1は、従来技術のピアツーピアコラボレーションシステムを示す。図1の例では、複数のピアデバイスが、インターネットとすることができるネットワーク100を介して通信する。しかし、本発明の実施形態を構築する上では、企業ネットワーク、または任意の他の好適なネットワークでピア間の通信を搬送することができる。
図1に示されているように、いくつかのピアを、LANを介してネットワーク100に接続することができる。たとえば、LAN110がルータ116を介してネットワーク100に結合される。ピア112および114など、LAN110に接続されたピアデバイスは、LAN110をネットワーク100に結合するルータ116を介してネットワーク100にアクセスすることができる。
図の実施形態では、ルータ116がNATデバイスとして働くことができる。したがって、ピア112および114はルータ116を通って外に向かうメッセージを送ることができるが、ローカルエリアネットワークの外側のピアデバイスは、それらのメッセージ内のアドレス情報を使用してピア112および114に応答することができない可能性がある。というのは、そのようにアドレス情報されたメッセージは、ルータ116を通って所期のピアデバイスに渡らないからである。
たとえば、LAN120は、ピアデバイス122および124を含むように示されている。ピアデバイス122および124は、ルータ126を通ってネットワーク100にアクセスすることができるが、ルータ116内のネットワークアドレス変換により、ピアデバイス122または124によって送られるメッセージがピア112および114に到達することが妨げられる可能性がある。この例では、ルータ126もまた、内に向かうメッセージがピアデバイス122および124に到達するのを妨げるあるタイプのネットワークアドレス変換を実施する場合、到達できない可能性は、対称的なものとなる可能性がある。
ピア122または124とピア112または114との間で通信を可能にするために、リレーサーバ130を使用することができる。リレーサーバ130は、ここではネットワーク100に接続されて示されている。ピア112、114、122、124のそれぞれが、リレーサーバ130と通信を確立することができる。ピア112、114、122、124のそれぞれは、各ピアが背後にあるNATデバイスを通って、外に向かうメッセージを送ることができるため、各ピアが、他のピア宛のメッセージをリレーサーバ130に送ることができる。次いで、リレーサーバ130は、そのメッセージを受信者ピアに転送することができる。このようにして、ピアツーピアコラボレーションセッション内の各ピアは、変更メッセージを任意の他のピアに通信することができる。しかし、各変更の通信は、1つまたは複数のメッセージがリレーサーバ130を通過することを必要とする可能性がある。
図1は、変更メッセージ、またはピアツーピアコラボレーションシステムに関連する他のメッセージを処理することによって引き起こされるサーバ130の周りのその大きさの負荷をマスクすることができるピアツーピアコラボレーションシステムの略図である。たとえば、図1のコラボレーションシステムに示されている4つのピアは、コラボレーションセッション内のピアの数を表していなくてもよい。多くの場合、4つを超えるユーザがコラボレーションセッションに参加することができる。ピアの数が増大するにつれて、リレーサーバ130を通って送られるメッセージの数もまた増大する可能性がある。さらに、リレーサーバ130を運用する企業または他の団体(entity)は、複数のコラボレーションセッションをサポートしたいと望む可能性がある。各コラボレーションセッションは、リレーサーバ130を通ってルーティングされる変更メッセージを生成することができる。したがって、リレーサーバ130は、複数のセッション内の複数のユーザによって生成される変更メッセージを処理するのに十分な帯域幅、メモリ、または他のリソースを有していなければならない。
リレーサーバ130に対する負荷を低減するために、図1に示されているコラボレーションシステムの構成要素を、変更メッセージのエッジルーティングをサポートするように適合させることができる。エッジルーティングは、リレーサーバ130を関与させることなしに、ピアツーピアから通信される変更メッセージの数を増大する。図2は、本発明の一実施形態によるコラボレーションシステムを示す。図2の例では、図1の例のように、4つのピアがコラボレーションセッション内で示されている。図1の場合と同様に、これらのピアは、2つのローカルエリアネットワークに接続される。図2の例では、ローカルエリアネットワーク110’がピア112’および114’を含む。ローカルエリアネットワーク120’は、ピア122’および124’を含む。ローカルエリアネットワークに接続されるピアは、ルータ116または126など、NATデバイスを通ってネットワーク100に結合させることができる。直接的な通信が使用されないピア間で通信を容易にするために、リレーサーバ130’をピアツーピアコラボレーションセッションに含めることができる。しかし、エッジルーティングを組み込むことにより、リレーサーバ130’を通る間接的な通信が使用される場合を低減することができる。
ピアツーピアコラボレーションシステムを実装するために使用される特定の構成要素は、本発明にとってクリティカルなものではない。したがって、ピア112’、114’、122’、124’は、本発明の一実施形態によるエッジルーティングをサポートするようにプログラムされるが、図1における対応するデバイスと同じ構成を有するデバイスを用いて実装することができる。これらのデバイスは、ネットワーク対応デスクトップコンピュータとして示されている。しかし、任意の好適なネットワークコンピューティングデバイスを使用することができる。同様に、図では、サーバ130’は、やはりエッジルーティングをサポートするようにプログラムされた、サーバ130(図1)と同じタイプのデバイスを用いて実装されている。しかし、任意の好適なデバイスを使用し、サーバ130’を実装することができる。また、図2では、NATデバイスがルータ116および126によって示されているが、ピアデバイスと、他のピアデバイスを相互接続するネットワークとの間の任意の好適な接続が使用されてもよく、そのような接続は、NATを使用しても使用しなくてもよい。
図2は、図1に先に示されていたシステムとのさらなる違いを示す。図の例では、サーバ232および234は、システム内に組み込まれている。この例では、サーバ232および234は、任意の好適なネットワークデバイスとすることができ、ピア112’、114’、122’、124’など、コラボレーションセッション内のピアのためのNATトラバーサルおよびアドレス発見をサポートするようにプログラムされる。これらの機能は、ピア112’、114’、122’、124’のそれぞれについて、そのデバイスがそれ自体のLAN外部のデバイスから到達可能であるかどうか、また到達可能である場合、他のピアデバイスが変更メッセージをこれらのデバイスに通信するために使用することができるアドレス情報を判定することを可能にする。この情報を用いて、ピアは、最初にリレーサーバ130’にそのメッセージを送ることなしに変更情報を直接送ることができる、コラボレーションセッション内の他のピアを識別することができる。たとえば、ルータ116をトラバースするようにNATトラバーサル技法が識別された場合、ピア122’および124’など、LAN110’の外側のピアは、ピア112’、ピア114’のどちらか、またはそれらの両方に直接アドレス指定して変更メッセージを送ることができる。
図2の実施形態では、2つのサーバ232および234が、ピアツーピアコラボレーションシステムに組み込まれるように示されている。これらのサーバは、あるタイプのNATデバイスが識別された後でそのようなNATデバイスをトラバースするのに効果的な技法を使用することができるように、NAT識別技法の実行をサポートする。
図の2つのサーバは、相異なるデバイスからのメッセージの送信および/または受信を必要とするNAT識別技法の実行を可能にする。そのようなサーバ232および234は、互いに通信し、そのようなNAT識別技法を実施するためにそれらの動作を調整することができる。しかし、その機能を実施するために2つの物理的なサーバが使用されることは必要でない。たとえば、1つの追加のサーバがリレーサーバ130’と協働し、そのようなNAT識別技法を実施することができる。別法として、複数のサーバをエミュレートするように単一のサーバをプログラムすることも、他の理由でネットワーク100に接続されているサーバがNAT識別技法の一部またはすべてを実施することもできる。したがって、NAT識別に使用される特定のハードウェアは、本発明に対する限定ではなく、任意の好適なハードウェアを使用することができる。
NATトラバーサル情報をピアが使用し、リレーサーバを使用することなしに通信することができるピアの数を増大することができる。ピアツーピアコラボレーションシステムの動作時には、これらのピアのいくつかが互いに通信を確立することになる。次いで、これらのピアは、リレーサーバを使用することなしに通信することができるピアの「近隣ピア群」にグループ化されてもよい。近隣ピア群を識別することによって、各近隣ピア群内の1つまたはいくつかのピアにメッセージを送ることができ、そこからそのメッセージを他のピアに伝播することができる。
近隣ピア群内のピアに対する最初の通信がリレーサーバを必要とする場合でさえ、最初のピアから近隣ピア群内の他のピアには、リレーサーバにさらに負荷をかけることなしにメッセージを配布することができる。たとえば、メッセージをピア112’および114’に直接送るために、ピア122’がルータ116によってもたらされるNATをトラバースすることができない場合でさえ、ピア122’は、単一のメッセージを、リレーサーバ130’を経てピア112’に送ることができる。次いで、ピア112’は、そのメッセージをピア114’、およびピア112’から直接到達可能な任意の他のピアデバイスに転送することができる。サーバ232および234などサーバを経てコラボレーションセッション内のピアに関する情報を得ることにより、そのような近隣ピア群の識別が容易になる。
図3Aに転じると、本発明の一実施形態によるピアツーピアコラボレーションシステム内で使用することができるピアデバイス310の図が提供されている。ピア310は、デスクトップまたはラップトップコンピュータとすることができる。しかし、任意の好適なコンピューティングデバイスをピア用のプラットフォームとして使用することができる。他のピアとの通信を容易にするために、ピア310は、ピア310をネットワーク300に結合するネットワークインターフェース334を含む。ネットワーク300は、1つまたは複数のNATデバイスを含むことができる、任意の好適なネットワークとすることができる。
ネットワークインターフェース334は、ネットワーク300を介してパケットを送信または受信することを可能にする任意の好適なインターフェースハードウェアおよび/またはソフトウェアとすることができる。図の実施形態では、1つまたは複数のパケットを使用し、コラボレーションシステム内の共有空間に関する変更情報を含むメッセージを伝えることができる。しかし、そのようなメッセージを伝えるために使用される特定の媒体、およびそれらのメッセージのためのプロトコルは、本発明にとってクリティカルなものではなく、任意の好適なネットワークインターフェース334を使用することができる。たとえば、ネットワークインターフェース334は、従来のネットワークインターフェース、および既知の有線または無線プロトコルに従って動作する関連のドライバソフトウェアとすることができる。
ネットワークインターフェース334の特定の形態にかかわらず、コラボレーションクライアントコンポーネント320は、ネットワークインターフェース334を介してコラボレーションセッション内の他のピアにメッセージを送ることができる。同様に、コラボレーションコンポーネント320は、ネットワークインターフェース334を介して他のピアからメッセージを受信することができる。コラボレーションクライアント320は、これらのメッセージを使用し、共有空間のコピーを維持することができる。コラボレーションクライアントコンポーネント320は、ユーザインターフェース332を介してユーザに共有空間を表すものを提示することができる。ピア310が従来のデスクトップまたはラップトップコンピュータである実施形態では、ユーザインターフェース332は、コラボレーションクライアントコンポーネント320が、共有空間を表すものをレンダリングすることができるディスプレイ画面を含むことができる。しかし、ユーザインターフェース332の形態は、本発明にとってクリティカルなものではない。
同様に、ユーザインターフェース332は、共有空間に対する変更を引き起こすコマンドをユーザが入力することを可能にする1つまたは複数のユーザ入力デバイスを含むことができる。コラボレーションクライアントコンポーネント320は、共有空間を変更するためのコマンドを表す、ユーザインターフェース332からの入力を受信することができる。これらのコマンドは、コラボレーションクライアントコンポーネント320をトリガし、共有空間に対する変更をコラボレーションセッション内の他のピアに通信する1つまたは複数のメッセージを生成することができる。
変更メッセージを生成および処理するために、コラボレーションクライアントコンポーネント320は、「変更エンジン」322を含むことができる。変更エンジン322は、従来のピアツーピアコラボレーションシステム内で使用されるものと同様の、1つまたは複数のソフトウェアコンポーネントとすることができる。しかし、変更エンジン322の特定の実装は、本発明にとってクリティカルなものではなく、任意の好適な実装を使用することができる。
そのようなコンポーネントは、ユーザ入力を受け取り、他のピアに配布するために変更メッセージに変更を変換することができる。同様に、変更エンジン322内のコンポーネントは、コラボレーションセッション内の1つまたは複数の他のピアからの変更メッセージを受け取り、ピア310内の共有空間のコピーを他のピア内の共有空間のコピーと同期するために、共有空間のコピーに対して行う適切なアクションを決定することができる。
変更メッセージを他のピアと交換するために、ピア310は、コラボレーションセッション内の複数のピアの間での変更の通信に関連する機能を実施する通信サブシステム326を含む。ピアデバイス310のユーザによって加えられた変更について、通信サブシステム326は、これらの変更を説明するメッセージを、コラボレーションセッション内の他のピアにブロードキャストすることができる。他のデバイスのユーザによって加えられた変更については、通信サブシステム326は、メッセージを受け取り、変更エンジン322に渡す前にメッセージを順序付けることができる。そのような機能は、既知のピアツーピアコラボレーションシステムの場合と同じように、または任意の好適な形で実施することができる。しかし、通信サブシステム326は、エッジルーティングをサポートするように適合させることができる点で、既知のピアツーピアコラボレーションシステム内の通信コンポーネントと異なっていてもよい。
エッジルーティングと共に行われるときメッセージをコラボレーションシステム内の他のピアに向けて送るのを容易にするために、コラボレーションクライアントコンポーネント320は、ルーティングテーブル324を含むことができる。ルーティングテーブル324は、ピア310のユーザによって加えられた変更を伝えるメッセージをアドレス指定するための適切な機構を、通信サブシステム326が決定することができる情報を含むことができる。さらに、通信サブシステム326は、ルーティングテーブル324を使用し、コラボレーションセッション内の他のピアから受信されたメッセージの転送先のピアを選択することができる。
図3Bは、ルーティングテーブル324の図を提供する。そのようなデータ構造は、任意の好適な仕方で実装することができる。たとえば、ルーティングテーブル324は、ピアデバイス内のコンピュータ可読媒体340内にデータ構造として格納することができる。しかし、任意の好適な機構を使用し、ルーティングテーブル324を物理的に含めることができ、ルーティングテーブル324内の情報の、任意の好適な表現を使用することができる。
図3Bの実施形態では、ルーティングテーブル324は、ピア310(図3A)を含むピアツーピアコラボレーションシステム内のピアに関する情報を含むように示されている。図では、ルーティングテーブル324は、直接通信することができるピアのグループに関する情報を伝えるように編成される。図3Bの実施形態では、ピアの2つのグループが、近隣ピア群350および360として示されている。近隣ピア群350は、4つのピア352A、352B、352C、352Dを含むように示されている。同様に、近隣ピア群360は、ピア362E、362F、362G、362Hを含むように示されている。
この実施形態では、各近隣ピア群が、その近隣ピア群内の少なくとも1つの他のピアと通信することができるピアのグループを含むように示されている。近隣ピア群350内では、ピア352Aは、ピア352Bとの接続3701を形成している。また、ピア352Aは、ピア352Cとの接続3702を形成している。次いで、ピア352Cは、ピア352Dとの接続3704を形成している。ピア352Aおよび352Bは、ピア352Dに直接形成された接続を有していないが、ピア352Aおよび352Bは、ピア352Cを介してメッセージを送ることによってピア352Dと通信することができる。したがって、ピア352A、352B、352C、352Dはすべて、リレーサーバを使用することなしに、近隣ピア群350内のあらゆる他のピアと通信することができる。そのような構成は、近隣ピア群350内のピアのすべてが同じNATデバイスの背後にあり、その結果、直接的なピアツーピア通信が可能であることに由来するものとすることができる。しかし、他の動作条件が、近隣ピア群350内に示されているピアのグループ化を引き起こす可能性がある。たとえば、近隣ピア群350内のピアの1つまたは複数がNATデバイスの背後にないことがある。あるいは、近隣ピア群350内のピアの1つまたは複数が、他のピアが、NATをトラバースすることができるようになるアドレス情報を受信したNATデバイスの背後にあることがある。
同様に、近隣ピア群360は、各ピアがリレーサーバを使用することなしにあらゆる他のピアと通信することができるピアのグループを表す。しかし、近隣ピア群360は、近隣ピア群350と異なる接続パターンを含むように示されている。図の実施形態では、ピア362Eは、「スーパーピア」として働き、複数の他のピアデバイスと通信を確立済みであることを意味する。図の実施形態では、ピア362Eは、ピア362Fと接続3721を確立済みである。スーパーピア362Eは、ピア362Gと接続3722を、またピア362Hと接続3723を確立済みである。
各近隣ピア群内のピア間で確立されている接続の数およびタイプは、本発明にとってクリティカルなものではない。図の実施形態では、コラボレーションセッション内の各ピアデバイス内の通信サブシステム326(図3A)は、近隣ピア群を形成するように他のピアと接続を確立するように構成することができる。各ピアデバイスが、接続を確立することになるピアを決定する仕方は、本発明にとってクリティカルなものではない。しかし、いくつかの実施形態では、ピアツーピアコラボレーションセッション内の他のピアの特性によって、ピア間の接続が決定される可能性がある。たとえば、ピアは、メッセージを送信、受信、または転送するのに使用可能な、そのピアが有する帯域幅、メモリ、または他のリソースに基づいて、他のピアと確立する接続の数を制限することができる。
逆に、多数のメッセージを処理するためのリソースを有するピアは、多数の接続を形成することによってスーパーピアになるようにプログラムされてもよい。これらの接続の形成は、ピアを、その使用可能なリソースに基づいて複数の接続を形成するようにプログラムすることによってトリガすることができる。しかし、いくつかの実施形態では、リレーサーバまたは他のデバイスによって送られるコマンドまたは要求によってスーパーピアになるように、ピアをトリガすることができる。
また、いくつかの実施形態では、近隣ピア群内のピア間の既存の接続がピア間での適時の通信を不利にサポートしない場合、ピアは、他のピアと新しい接続を確立することができる。たとえば、352Aは、ピア352Cに転送するためにピア352Bにメッセージを送ることにより、次いでピア352Cがそのメッセージをピア352Dに転送することになり、ピア352Dと通信することができる。そのような通信経路は、非常に遅く、または非常に損失が多く、または別の形でピア352Aとピア352Dの間の確実な通信にとって非常にエラーを起こしやすいものとなるおそれがある。ピア352Aは、既存の接続が適切でないことを検出したことに応答して、接続3702を確立している可能性があり、それによりピア352Dに対するより直接的な通信がもたらされる。しかし、ネットワーク内で形成される特定の接続は、本発明にとってクリティカルなものではない。同様に、ネットワーク内のピア間での接続の形成をトリガするために使用される特定の機構は、本発明の限定ではない。
ルーティングテーブル324によって伝えられるピア間の接続に関する特定の情報にかかわらず、ルーティングテーブル324を通信サブシステム326(図3A)が使用し、コラボレーションセッション内の他のピアに対する変更情報をブロードキャストするために使用することができるアドレッシング情報を決定することができる。たとえば、ルーティングテーブル324を使用し、変更をレポートするメッセージを受信するように、各近隣ピア群内でピアを1つ程度選択することができる。図3Bの例では、変更を有するメッセージは、最初に近隣ピア群350内のピア352Aにアドレス指定することができる。ピア352Aは、そのメッセージをピア352Bおよび352Cに配布することができる。次いで、ピア352Cは、そのメッセージをピア352Dに配布することができる。同様の形で、変更メッセージを、最初に近隣ピア群350内のピア362Eに向けて送ることができる。ピア362Eは、そのメッセージをピア362F、362G、362Hのそれぞれに配布することができる。この例では、変更メッセージは、最初にそのメッセージを各近隣ピア群内の1つのピアだけに送信することによって、コラボレーションセッション内のピアすべてにブロードキャストされる。
図の実施形態では、各ピアが同様のルーティングテーブルを維持する。したがって、各ピアがそのルーティングテーブルを使用し、そのピアによって発せられる各変更の最初の受信者ピアを選択することができる。さらに、各ピアは、ルーティングテーブルのそのコピーを使用し、または既存のブロードキャストセッションに依拠し、そのピアがメッセージを転送することになるピアを識別することができる。たとえば、ピア362Eは、ルーティングテーブルのそのコピーを使用し、メッセージをクライアント362F、362G、362Hに転送することができる。図の実施形態では、コラボレーションセッション内の各受信者ピアは、その近隣ピア群に、各ピアが同じメッセージを1回だけ受信するように変更メッセージをブロードキャストする。しかし、ピアが同じメッセージの複数のコピーを受信することができる実施形態では、各ピア内の通信サブシステム326(図3A)が、重複するメッセージを無視するように構築されてもよい。
ピアのそれぞれは、他のピアまたは他のデバイスとの情報の交換を介してなど、任意の好適な形でルーティングテーブルを構築することができる。図2に示されている実施形態では、サーバ232および234が、ルーティングテーブルの構築を容易にするように、ピアと情報を交換する。サーバ232、サーバ234、およびコラボレーションセッション内のピアの間での対話から、サーバ232および234は、近隣ピア群350および360など、デバイスの近隣ピア群を識別するために使用することができる情報を得ることができる。この情報は、NATデバイスの背後にあるピアの識別、およびピアのそれぞれが背後にあるNATデバイスのタイプを含むことができる。さらに、この情報は、他のピアと通信を確立するために使用することができるアドレス情報の識別を含むことができる。
サーバ232および234(図2)は、コラボレーションセッション内のメンバが変化したとき、またはいくつかのネットワーク条件が変化し、それによりピアが他のピアから到達可能になる、または到達できなくなる可能性があるとき、ピアがそれらのルーティングテーブルを更新することができるように、任意の好適な時間に各ピアに関する情報を収集することができる。一例として、サーバ232および234は、各ピアがコラボレーションセッションに加わったとき、情報を収集および配布することができる。
新しいピアに関する情報は、コラボレーションセッション内のピアのそれぞれに配布することができ、次いで、各ピアは、その情報を使用し、その新しいピアと接続を確立するかどうか判定することができる。同様に、サーバ232および234などのサーバは、ピアツーピアコラボレーションセッションを離れたピアに関する情報のための中央配布点として働くことができる。より一般的には、コラボレーションセッションの帰属関係に変化があったときはいつでも、1つまたは複数のサーバが、そのコラボレーションセッション内に現在あるピアに関する情報を配布することができる。
ルーティングテーブル324が形成される特定の機構にかかわらず、NATデバイスが、コラボレーションセッション内のピアとのピアツーピア通信を制限しない場合、ネットワーク輻輳を低減することが望ましい可能性がある。したがって、NATデバイスがネットワーク内に存在する場合、ピアツーピア通信が可能になるようにそれらのNATデバイスをトラバースすることができるかどうか識別することが望ましい。ひとたびNATデバイスのタイプが識別されたならば、好適なNATトラバーサル技法を選択することができる。
使用される特定のNATトラバーサル技法は、本発明にとってクリティカルなものではなく、任意の好適な技法を使用することができる。トラバーサル技法は、多数のタイプのNATデバイスについて既知であり、使用することができる。たとえば、NATトラバーサル技法は、Directed IP接続、UPnP NAT、Full Cone(フルコーン)NAT、Restricted Cone(制限付きコーン)NATもしくはPort Restricted Cone(ポート制限付きコーン)NAT、ISAサーバを用いたSymmetrical(シンメトリカル)NAT、決定的ポート割当て(Deterministic Port Assignment)を用いたSymmetrical NAT、および制限された発信ポート制約を用いたファイアウォールなどのNATタイプについて既知である。1対のピアは、たとえ各ピアが異なるNATデバイスの背後にあるにしても、NATデバイスのその対に適したトラバーサル技法が使用可能である場合、直接的なピアツーピア通信に加わることができることが知られている。したがって、ピアツーピア通信を確立する際には、各ピアが背後にあるNATデバイスのタイプを識別するための技法を、トラバーサル技法の選択のために使用することができる。NAT識別技法は、上記にリストされているタイプのNATデバイスを識別することができる。さらに、本発明者らは、「シンメトリックバリアント(symmetric variant)」と呼ばれる他のタイプのNATデバイスを分類した。
シンメトリックバリアントNATデバイスは、同じ内部IPアドレスおよびポートから任意の宛先アドレスおよびポートへのあらゆる要求を、毎回、同じ外部IPアドレスに、しかし異なるポートにマップするものである。シンメトリックバリアントは、セッション依存性のバインディング挙動を示す。すなわち、アドレスバインディングは一貫しているが、ポートバインディングは、同じ内部ホストからの要求ごとに変化する。多数のNATデバイス(たとえばISAおよびNetScreen)は、クライアントが、TCPを使用して外に向かう接続要求に対してそのローカルソケットを特定のポートにバインドするとき、このように振る舞う。シンメトリックバリアントは、一般的なシンメトリックNATの変形形態であり、したがって、非決定的ポート割当て(non−deterministic port assignment)を用いる通常のシンメトリックバリアントと、決定的ポート割当てを用いるシンメトリックバリアントとして、さらに分類することができる。ポートを決定的な形で割り当てるシンメトリックバリアントNATは、一般に、次のポート割当てを予測することができるとき、トラバース可能である。
また、本発明者らは、シンメトリカルファイアウォール(Symmetrical Firewall)と呼ばれる、あるタイプのファイアウォールデバイスを分類した。シンメトリカルファイアウォールは、どの内部ホストアドレスマッピングをも提供しないが、外部ホストからファイアウォール背後の任意の内部ホストへの応答不要の接続要求を遮断するネットワークデバイスである。シンメトリカルファイアウォールは、内部ホストが以前に外部ホストに接続していた後でその外部ホストがその内部ホストに接続することができる場合、トラバース可能である。
NATデバイスのタイプを発見し、次いでそのNATをトラバースするために、サーバ232および234(図2)など、NAT探索用サーバを使用することができる。そのようなサーバは、公共エリア内にあることができ、探索しようとするNAT背後のピアから到達可能であることがある。図2は、2つのサーバを有する単なる1つの可能なシナリオを示す。実際には、そのサーバが2つの、公然とアドレス可能なネットワークインターフェースを有する場合にサーバを1つだけ使用することができる。また、サーバ130’など公開リレーサーバは、探索用サーバとして働くことができる。
NAT発見の一部として、ピアは、NATデバイスおよびその特性について探索するために、一連のメッセージをサーバに送ることができる。ピアメッセージを受信した後で、サーバは、NATによって割り当てられた外部アドレスおよびポートと共に応答を返信する。サーバがピアメッセージに応答するので、ピアが送るメッセージは、エコーメッセージとも呼ばれる。ピアは、クライアントがインターネット上で開いているか、それともファイアウォール、またはNATデバイスなどアドレス変換デバイスの背後にあるか、見出すためにエコーメッセージを送る。NATデバイスが見つかった場合、ピアはまた、そのNATのタイプを見出したいと望むことになる。エコーメッセージはまた、そのNATをうまくトラバースすることができる場合、特定のIPアドレスおよびポートでピアに接続するように、特定のサーバに指令することができる。NATは、そのNAT背後のピアが、外部ホストがクライアントに対して内に向かう接続を確立するのに成功したことを検知した場合、TCPを使用してトラバースを受けることができる。
ピアがTCPを使用してネットワークに結合される一実施形態によるNAT発見の一部として、ピアは、以下のタイプのメッセージをサーバに送ることができる。すなわち、
エコーテスト(Echo Test):ピアは、サーバに対してTCP接続を確立し、次いで要求を送る。サーバは、ピアのマップされた外部IPアドレスおよびポートと共に応答を返信するピアは、応答を受信した後で接続を閉じる。
エコーホップテスト(Echo Hop Test):ピアは、サーバに対してTCP接続を確立し、次いで要求を送る。サーバは、ピアのマップされた外部IPアドレスおよびポートと共に応答を返信し、同時に、異なるサーバに要求を転送し、ピアのマップされた外部IPアドレスおよびポートでピアに接続するようにその第2のサーバに指令する。ピアは、第1のサーバから応答を受信した後で接続を閉じる。
ポート変更を伴うエコーテスト(Echo Test with port change):ピアは、サーバに対してTCP接続を確立し、次いでポート番号と共に要求を送る。サーバは、ピアのマップされた外部IPアドレスおよびポートと共に応答を返信し、次いでマップされた外部IPアドレスおよび受信されたポートでピアに接続する。ピアは、元のサーバから応答を受信した後で接続を閉じる。
順次エコーテスト(Sequential Echo Test):ピアは、順次割り当てられたポート番号を用いて、サーバに対して複数のTCP接続を同時に確立し、サーバは、ピアのマップされた外部IPアドレスおよびポートと共に各接続について応答を返信する。ピアは、その接続について応答が受信された後で各接続を閉じる。
また、ピアは、NATトラバーサルの試行をそのピアとサーバまたは複数のサーバとの間で構成することができるように、他の特別なメッセージをサーバに送ることができる。たとえば、ピアがシンメトリカルNATの背後にあることをそのピアが見出した後で、そのピアは、ポート割当て範囲を有するメッセージをサーバに送ることができ、そのサーバは、その所与の範囲内におけるクライアントの外部IPアドレスおよびポート番号でピアに接続するように第2のサーバに指令する。
図4Aおよび図4Bは、TCPベースのNAT発見プロセスを示す。このプロセスでは、ピアが一連のエコーメッセージをサーバに送る。このプロセスは、ピアが、探索用サーバに対してTCP接続を確立することによって、NATデバイスが存在するかどうか、またNATデバイスが見つかった場合、そのNATデバイスのタイプを発見することを可能にする。このプロセスは、NATの全コーンタイプ、シンメトリカルNAT、ならびにシンメトリカルバリアントを発見することができる。さらに、このプロセスはまた、ピアがインターネット上で開いているか、それともシンメトリカルファイアウォールの背後にあるか検出することができる。NATが発見されたとき、直接、または同時TCPオープンを使用して、そのNATをトラバースしようと試みることができる。図4Aおよび図4Bは、送られるメッセージおよび行われるテストの順番を示しているが、いくつかのアクションを同時に実施することができ、したがって実際の順序は様々な実施形態で異なる可能性がある。したがって、処理の順序は、本発明に対する限定ではない。
このプロセスは、ピアがポート上で内に向かう接続を求めてリッスンすることから開始することができる。新しい各接続要求について、ピアは、ソケットを作成し、そのローカルポートをそのピアがリッスンしているポートにバインドすることができる。たとえば、ピアツーピアコラボレーションセッション内のピアは、2492、80、または443など特定のポートを介してそのセッションのピア群またはリレーサーバと通信することができる。ここで、ピアは、ピアツーピアコラボレーションセッション内で実際に動作するピアが、TCPベースのNATトラバーサルを可能にするために何をすることになるかシミュレーションする。内に向かう接続要求がピアによって受け入れられるために、外部ホストは、NATがその内部アドレスとピアがリッスンしているポートとにマップした外部アドレスおよびポートに接続しなければならない。
接続が確立された後で、ピアは最初に、ブロック410で、エコーテストメッセージをサーバに送ることができる。マップされたIPアドレスおよびポートをサーバから受信したとき、ピアは、判断ブロック412で、マップされたIPアドレスおよびポートをそのローカルIPアドレスおよびポートと比較することができる。
アドレスおよびポートが同じである場合には、ピアは、アドレス変換デバイスがインストールされていないが、そのピアがファイアウォールの背後にある可能性があることを理解している。したがって、プロセスはブロック430に分岐する。ファイアウォールが内に向かう接続を許すかどうか見出すために、ピアは、ブロック430で、エコーホップテストメッセージをサーバに送り、そのサーバは第2のサーバに、ピアのIPアドレスおよびポートに接続するように指令する。第2のサーバからの内に向かう接続をうまく確立することができる場合、プロセスは、判断ブロック432で、終了点450に分岐する。プロセスが終了点450に到達した場合、ピアがインターネット上で開いていることをそのピアは理解しており、そうでない場合には、プロセスは、判断ブロック432で終了点452に分岐し、ここでクライアントは、応答不要の、内に向かう接続の試行を妨げるシンメトリカルファイアウォールの背後にあると決定する。ファイアウォールがシンメトリカルである場合、ピアはまた、クライアントに対する内に向かう接続を確立することができるかどうか確かめるために、そのピアとサーバが同時に互いに接続するように構成することができるように、特別なメッセージをサーバに送ることができる。確立された内に向かう接続は、シンメトリカルファイアウォールがトラバース可能であることを示す。
逆に、ピアの外部IPアドレスおよびポートがピアの内部IPアドレスおよびポートと異なる場合には、ピアは、アドレス変換デバイスの背後にあると結論を下すことができる。したがって、プロセスは、判断ブロック412からブロック414に分岐する。ブロック414では、ピアは、サーバと別のエコーテストを行い、次いで、新しくマップされた外部IPアドレスおよびポートを以前のエコーテストからのものと比較する。
プロセスは、ブロック416で、その比較の結果に基づいて分岐する。マッピングが異なる場合には、NATのアドレスバインディングはセッション依存性であり、NATバインディングが、外に向かう接続ごとに変化することを意味する。セッション依存性のバインディング挙動を伴うNATデバイスは、通常、トラバースするのが困難である。したがって、判断ブロック416で決定されたようにマッピングが異なる場合、プロセスは判断ブロック440に分岐する。さらに、プロセスは、判断ブロック440で、マッピングの変更がポートにしかないかどうかに基づいて分岐する。変更がポートに限定されない場合、プロセスは終了点454に分岐する。プロセスが終了点454に到達した場合、ピアは、トラバース可能でないデバイスの背後にあると結論を下すことができる。
しかし、NATが、一貫して同じ外部アドレスにバインドしており、ポートだけがセッションごとに変化する場合には、そのNATは、シンメトリックバリアントNATと見なされる。この条件では、プロセスは判断ブロック440からブロック442に分岐する。ブロック442では、ピアは、順次エコーテストを用いて、NATのポート割当てパターンを探索することになる。順次テストの結果を使用し、NATがそのポートを決定的に割り当てるか、それとも予測できないように割り当てるか示すことができる。ポート割当てが決定的でない場合、プロセスは判断ブロック444から終了点458に分岐する。プロセスが終了点458に到達した場合、ピアは、シンメトリカルNATの背後にあると結論を下すことができる。逆に、ポート割当てが予測可能である場合、プロセスは判断ブロック444から終了点460に分岐する。プロセスが終了点460に到達した場合、クライアントは、予測可能なポート割当てを用いるシンメトリックNATまたはシンメトリカルNATバリアントの背後にあると結論を下すことができる。
逆に、判断ブロック416で同じマッピングが検出された場合、プロセスはブロック418に分岐する。ブロック418では、ピアは、コーンNATデバイスの背後にあるかどうかテストするためのサブプロセスを開始することができる。そのNATデバイスのタイプに関するより多くの情報を得るために、ピアは、エコーホップテストを第1のサーバに送り、第2のサーバがそこに接続するのを待つことができる。第2のサーバからの接続がうまく確立された場合には、ピアは、フルコーンNATデバイスの背後にある。したがって、プロセスは判断ブロック420から終了点456に分岐し、ここでクライアントは、フルコーンNATデバイスの背後にあると結論を下すことができる。
逆に、第2のサーバからの内に向かう接続が、タイムアウト間隔の後で受け入れられない場合、プロセスは、判断ブロック420からブロック422に分岐することができる。ブロック422では、ピアは、エコーテストメッセージを第2のサーバに送ることができる。次いで、プロセスは、判断ブロック424で、第2のサーバから受け取られたマッピングに基づいて分岐することができる。第2のサーバからのマップされたアドレスおよびポートが第1のサーバからのものと異なる場合には、NATは、シンメトリカルNATと見なすことができる。したがって、プロセスは、上述のように、シンメトリカルNATに適合して処理するために、判断ブロック424をブロック442に分岐することができる。
逆に、2つのサーバからのマップされたアドレスおよびポートが同じままである場合、プロセスはブロック426に分岐する。ブロック426では、ピアは、ポート変更を伴うエコーテストメッセージを第1のサーバに送ることができる。次いで、ピアは、第1のサーバが指定されたポートからそのピアに接続するのを待つことができる。
プロセスは、判断ブロック428で、ピアが内に向かう接続をうまく受け入れるかどうかに基づいて、分岐することができる。内に向かう接続が確立された場合、プロセスは終了点462に分岐し、ここでピアは、制限付きNATデバイスの背後にあると結論を下す。そうでない場合には、プロセスは、ブロック428から終了点464に分岐し、ここでピアは、ポート制限付きNATデバイスの背後にあると結論を下す。
識別されたNATデバイスのタイプによって、通信のフォーマットを決めることができる。NATがポート制限付きである場合、ピアは、そのピアに対する内に向かう接続を確立することができるかどうか確かめるために、そのピアとサーバが同時に互いに接続するように構成することができるように、特別なメッセージをサーバに送ることができる。確立された内に向かう接続は、ポート制限付きNATが、TCP接続を使用してトラバース可能であることを示す。
NATがシンメトリカルNATまたはシンメトリカルバリアントであることが見出された場合、ピアは、順次ローカルポートを用いてサーバに対して一連のエコーテストを実行することができる。これらのエコーテストからのマップされた外部ポートを解析し、NATがその次のポートを、小さな範囲内で割り当てるか、それとも予測可能な形で割り当てるか判定することになる。ポート番号が、予測できるように、または小さな増分で割り当てられる場合には、そのNATは、決定的ポート割当てを用いるシンメトリカルNATとして分類され、そうでない場合には、非決定的ポート割当てを用いるシンメトリカルNATである。
NATが、決定的ポート割当てを用いるシンメトリカルNATまたはシンメトリカルバリアントである場合、ピアは、そのピアに対する内に向かう接続を確立することができるかどうか確かめるために、そのピアと第2のサーバが同時に互いに接続するように構成することができるように、特別なメッセージをサーバに送ることができる。この場合、第2のサーバは、ピアのマップされた外部IPアドレスおよび予測されたポートに接続することになる。確立された内に向かう接続は、シンメトリカルNATがトラバース可能であることを示す。非決定的ポート割当てを用いるシンメトリカルNATまたはシンメトリカルバリアントは、一般に非トラバース可能と見なされる。
決定的ポート割当てを用いるシンメトリカルNATまたはシンメトリカルバリアントをトラバースするとき、トラバーサルに成功する機会を改善するために、外部ホストが予測された範囲内のいくつかのポートに同時に接続することが必要である可能性がある。
したがって、図4Aおよび図4Bのプロセスをピアが使用し、それらの接続状況を決定することができる。ピアツーピアコラボレーションシステム内の各ピアは、図4Aおよび図4Bに示されているプロセスと同様のプロセスを実施し、その接続状況を決定することができる。エコーテストに応答してなど、ピアに送られる情報を、NATデバイスタイプの決定と組み合わせて使用し、そのピアと通信する機構を識別することができる。各ピアは、この情報をピアツーピアコラボレーションセッション内の他のピアとを共有することができる。図2に示されている実施形態では、この情報は、リレーサーバ130’を介して共有することができる。しかし、この情報は、サーバ232および234を介するものを含めて、任意の他の好適な仕方で共有することができる。
ピアのそれぞれについてのコンダクティビティ(conductivity)情報がどのように決定され他のピアと共有されるかにかかわらず、ひとたびこの情報がピアツーピアコラボレーションセッション内のピアにとって使用可能になったならば、それを使用し、リレーサーバの使用を回避する、他のピアに対するメッセージをアドレス指定する1つまたは複数のモードをサポートすることができる。これらのアドレッシングのモードを単独で、または組み合わせて使用し、メッセージをピアツーピアコラボレーションシステム内のピアにルーティングすることができる。
図5Aは、ダイレクトアドレッシングモードを示す。図5Aに示されている構成では、ピア510は、ピア512に直接アドレス指定される変更メッセージ514を生成する。そのようなダイレクトアドレッシングは、NATデバイスがピア510とピア512の間に接続されていないとき、またはピア510および512が、ピア510とピア512の間の任意のNATデバイスをトラバースすることができるNATトラバース技法を識別したとき使用することができる。
図5Bは、他のアドレッシングモードを示す。図5Bに示されているシナリオでは、ピア520、522、524が同じ近隣ピア群内にある。ピア520は、ピア522と接続を確立済みである。次いで、ピア522は、ピア524と接続を確立している。このシナリオでは、ピア520は、変更メッセージ5261を開始する。メッセージ5261は、ピア522にアドレス指定される。
メッセージ5261を受け取ったとき、ピア522は、転送メッセージ5262をピア524にアドレス指定する。このようにして、ピア520内で生成された変更を、ピア522にもピア524にも配布することができる。
図5Cは、サーバを通って中継されることなしに、変更メッセージを近隣ピア群内の複数のピアに通信することができる他のシナリオを示す。図5Cに示されているシナリオでは、ピア520、532、534、536が同じ近隣ピア群内にある。ピア538もまた、その近隣ピア群内で接続される。
図の実施形態では、ピア520が変更メッセージ5421を生成する。メッセージ5421は、ピア538にアドレス指定される。そのようなメッセージを受信したとき、ピア538は、ピア532にアドレス指定される転送メッセージ5422、ピア534にアドレス指定される転送メッセージ5423、およびピア536にアドレス指定される転送メッセージ5424を生成する。
図の実施形態では、ピア538はスーパーピアとして働くことができ、受信されたメッセージを複数の他のピアに転送する。図の実施形態では、サーバ540は、変更メッセージを転送するのに参加していないが、近隣ピア群内のピアの動作を調整することができる。この実施形態では、サーバ540は、従来のピアツーピアコラボレーションシステムの場合と同様にリレーサーバであってもよいが、ピアをスーパーピアとして構成するように修正されてもよい。たとえば、リレーサーバ540は、各ピアがコラボレーションセッションに加わったとき、そのハードウェア構成についてそのピアにポーリングすることができる。したがって、リレーサーバ540は、他のピアデバイスより多くのメッセージトラフィックをピアデバイスが処理することができるはずの帯域幅、メモリ、および他のリソースを有するピアデバイスを識別することを可能にする、ピアデバイスのそれぞれに関する情報を有することができる。したがって、リレーサーバ520は、制御メッセージ541をピア538に送ることができ、スーパーピアとして働くべきであることをピア538にシグナリングする。スーパーピアとして指定されたデバイスは、その近隣ピア群内の複数のデバイスと接続を確立しようと試みることができる。
制御メッセージ541は、スーパーピアとしてのピア538の動作のパラメータを指定するための、任意の好適なタイプの情報を含むことができる。たとえば、制御メッセージ541は、スーパーピア538が接続を確立すべきピアデバイスの数を識別することができる。しかし、リレーサーバ540など制御用サーバと、スーパーピアとして指定されたピアデバイスとの間で交換される特定の情報は、本発明に対する限定ではない。
さらに、リレーサーバ540など制御用サーバと、ピア538などスーパーピアとして指定されたデバイスとの間の通信は、双方向とすることができる。たとえば、ピアデバイス538は、ピア538によって処理されるメッセージトラフィックの量に関して、リレーサーバ540に情報を提供することができる。そのようなメッセージは、ピア538に対する負荷を低減するために、またはネットワーク輻輳の可能性を緩和するために、さらなるスーパーピアが近隣ピア群内に必要とされることをリレーサーバ540に伝えることができる。
そのようなメッセージに応答して、リレーサーバ540は、近隣ピア群内の別のデバイスをスーパーピアとして指定することができる。しかし、ピアをスーパーピアとして指定することをトリガするタイミングまたはイベントは、本発明に対する限定ではない。たとえば、コラボレーションセッションの開始時に、複数のピアの間で、1つまたは複数のデバイスがスーパーピアとして指定されてもよい。別法として、リレーサーバ540など制御用サーバは、ピアツーピアコラボレーションセッションに関する情報を監視し、または他の形で受信し、そのような情報に応答して、1つまたは複数のデバイスをスーパーピアとして指定することができる。
いくつかの実施形態では、リレーサーバは、どのピアがスーパーピア候補になることができるか判断するために、ピアに関する情報(CPUパワー、メモリ、動作可能時間など)を収集する。リレーサーバは、近隣のピア群に対するトラフィックまたはリソース使用がある閾値を超えたとき、近隣ピア群内のある候補をスーパーピアとして昇格させることができる。たとえば、各ピアが近隣ピア群内のあらゆる他のピアと接続を作成し、したがって完全にメッシュ化された接続性のネットワークを形成する場合には、ピアの数が増えたとき、ピアは、そのリソースを超過し、したがってその近隣ピア群にスーパーピアを割り当てるようにリレーサーバに要求することができる。
スーパーピアが近隣ピア群内で確立されるかどうか、またどのように確立されるかにかかわらず、ルーティングテーブル内に含まれる近隣ピア群に関する情報を使用し、リレーサーバを関与させることなしに変更メッセージを通信するための機構を識別することができる。図3Aに示されている実施形態では、近隣ピア群に関する情報は、ピアツーピアコラボレーションセッション内の各デバイスによって構築されるルーティングテーブル内に格納される。図6は、デバイスがピアツーピアコラボレーションセッションに加わったとき、そのデバイスがルーティングテーブルを形成することができるプロセスの例を提供する。
図6のプロセスはブロック610で始まり、ピアは、そのピアが背後にあるNATデバイスがあればそのタイプを発見しようと試みる。さらに、ブロック610で、ピアは、他のピアデバイスがそのピアにメッセージを向けて送るために使用することができるアドレスを決定する。この情報は、任意の好適な仕方で得ることができる。たとえば、図4Aおよび図4Bに示されているプロセスを使用することができる。
この情報がどのように得られるかにかかわらず、この情報は、他のピアデバイスがそのピアとどのように通信することができるかについて説明するアドレスベクトルを形成するために使用することができる。ブロック612では、このアドレスベクトルがピアツーピアセッション内の他のピアと共有される。図の実施形態では、ピアは、アドレスベクトルをリレーサーバに通信することによって、他のピアとそのアドレスベクトルを共有する。リレーサーバは、アドレスベクトルを、コラボレーションセッション内の他のピアすべてに直接、または、コラボレーションセッション内のピアの間での通信を容易にするように構成されている1つまたは複数の他のリレーサーバを介して間接的に通信することができる。
それ自体のアドレスベクトルを得ることに加えて、各ピアは、コラボレーションセッション内の他のピアについてアドレスベクトルを受信する。図の実施形態では、各ピアは、それ自体のリレーサーバからピアツーピアコラボレーションセッション内の他のピアすべてについてアドレスベクトルを受信するしかし、各ピアがコラボレーションセッション内の他のピアのアドレスベクトルを受信する特定の機構は、本発明に対する限定ではなく、任意の好適な機構を使用することができる。
アドレスベクトルに関する情報を受信することに加えて、各ピアは、ピア間ですでに確立されている接続に関する情報を受信することができる。たとえば、図3Bに示されているように、ピア352Aは、ピア352Bと接続3701を確立済みである。しかし、たとえピア352Aがピア352Dと同じ近隣ピア群内にあるにしても、ピア352Aは、ピア352Dと直接的な接続を確立していない。したがって、図6のプロセスは、直接的な接続を確立済みである他のピアのリストをピアが受信するプロセスブロック616を含む。
プロセスは、ブロック618に続く。ブロック618では、ピアは、任意の好適な機構を使用して、1つまたは複数のピアと接続を確立することができる。たとえば、ブロック618での処理は、接続を確立する「ハンドシェイク」プロトコルでのメッセージの交換を含むことができる。交換される特定のメッセージは、ピアを相互接続するネットワークによって使用されるプロトコルによって決まる可能性がある。したがって、接続を確立するための特定の機構は、本発明に対する限定ではない。
接続がどのように確立されるかにかかわらず、ブロック620で、ピアは、確立済みである直接的な接続を他のピアと共有することができる。接続に関する情報は、この情報をリレーサーバに、またはピアの直接的な接続を介して提供することによって共有することができる。しかし、そのような情報を共有するために、任意の好適な機構を使用することができる。
この情報が他のピアとどのように共有されるかにかかわらず、プロセスはブロック622に進む。ブロック622では、ピアは、ルーティングテーブルを構築することができる。ピアは、ブロック614で受信された他のピアのアドレスベクトル内に含まれる情報、ブロック616で受信された、直接的な接続に関する情報、およびブロック618で確立されたそれ自体の接続に関する情報を使用し、近隣ピア群と、これらの近隣ピア群内の相互接続とを識別することができる。この情報は、図3Bに描かれているルーティングテーブル324など、ルーティングテーブル内で反映させることができる。しかし、任意の好適な機構を使用し、この情報を取り込むことができる。
ピアは、ブロック622で構築されたルーティングテーブルを、ピアツーピアコラボレーションシステム内で変更メッセージを通信するために使用することができる。ピアは、ワークスペース内のメンバの変化が検出されるまで引き続きルーティングテーブルを使用することができる。ワークスペース帰属関係の変化が検出されたとき、そのルーティングテーブルはもはや正確でない可能性がある。したがって、ルーティングテーブルを確立する一部またはすべてのプロセスを繰り返し、更新済みルーティングテーブルを構築することができる。したがって、ワークスペース帰属関係またはネットワーク構成の変化が検出されたとき、プロセスは判断ブロック624からブロック612に分岐する。ルーティングテーブルを構築するプロセスは、ブロック612で開始して繰り返され、ピアは、そのルーティングテーブルを最新のまま保つのに必要なステップを実施することになる。
場合によっては、たとえワークスペース帰属関係の変化が検出されなくても、ルーティングテーブルが古くなることがある。たとえば、ピアが別のピアとの接続を失い、したがってピア間の接続を変更する可能性がある。接続は、ネットワーク内の性能問題、過負荷、またはユーザコマンドがピアツーピアネットワーク内のピアに与えられたことなど、いくつかの理由で失われる可能性がある。したがって、ルーティングテーブルは、時々更新される可能性がある。任意の好適な機構を使用し、いつルーティングテーブルを更新するか判定することができる。たとえば、ピアツーピアコラボレーションシステム内のピアすべてが、周期的な間隔でそれらのルーティングテーブルを更新することができる。別法として、ピアツーピアコラボレーションシステム内の任意のデバイスが、コラボレーションシステム内で検知された条件に応答して、他のデバイスにそれらのルーティングテーブルを更新するようにシグナリングすることができる。たとえば、メッセージがピアツーピアから直接送られたときデバイスが多数の通信失敗を経験し、または接続を失い、または新しい接続を確立した場合、そのデバイスは、影響を受けた接続に関する情報を送ることによって、他のデバイスにそれらのルーティングテーブルをリフレッシュするようにシグナリングすることができる。
ピアツーピアコラボレーションセッション内で使用されているルーティングテーブルが古いことがどのように決定されるかにかかわらず、テーブルが古いと決定されたとき、プロセスは判断ブロック626からブロック628に分岐し、ここでルーティングテーブルを構築するプロセスを繰り返すことができる。たとえば、ピアは、近隣ピア群内の他のピアに対する接続がもはや使用可能でないので、そのルーティングテーブルが古いものであることを検出することができる。ピアは、古いときにそのルーティングテーブルを更新することができる。各ピアがメッセージを送るためにそれ自体のルーティングテーブルを使用するので、各ピアは、最終的に接続が失われたことを検出し、次いで、それに応じてそのルーティングテーブルを更新することになる。互いに接続を失った2つのピアは、それらのネットワーク構成が変化した場合、NAT探索用プロセスを通過することができる。接続が、たとえばトラフィック過負荷など性能の理由により失われた場合には、ピアは、負荷がより適切なレベルにあるとき後で接続を再確立するまで待つことができる。
図6に示されているプロセスは、ピアツーピアコラボレーションセッション内のピアのそれぞれが、エッジルーティング技法に従って他のピアと効果的に通信するのに有用なルーティングテーブルを維持することができるように、各ピアで繰り返すことができる。
図7は、ピアが、エッジルーティング技法を使用して他のピアに変更情報をブロードキャストするためにルーティングテーブルを使用することができるプロセスを示す。ブロードキャストするプロセスは、ブロック710で始まる。ブロック710では、ピアがメッセージを生成する。ブロック710で生成されるメッセージは、既知のピアツーピアコラボレーションシステムによって使用されるフォーマットの変更メッセージとすることができる。しかし、メッセージのタイプおよびフォーマットは、本発明に対する限定ではない。
図7の例では、ピアツーピアコラボレーションシステム内のピアすべてにブロードキャストすることが意図されている。しかし、メッセージのフォーマットおよび受信者ピアの数は、本発明に対する限定ではない。ブロック710で生成されるメッセージは、任意の好適なフォーマットにあるものでよく、ピアツーピアコラボレーションセッション内のピアのいずれか1つまたは複数に向けて送ることができる。
メッセージのタイプおよびメッセージの所期の受信者ピアにかかわらず、プロセスは、ループスタート712に進む。ループスタート712は、ブロック710で生成されたメッセージを受信するピアを含む各近隣ピア群について実施されるプロセスの開始を表す。図6のプロセスに従って構築されたルーティングテーブルを使用して近隣ピア群を識別することができる。しかし、近隣ピア群は、任意の好適な仕方で識別されてもよい。
近隣ピア群がどのように識別されるかにかかわりなく、プロセスはブロック714に続く。ブロック714では、選択された近隣ピア群について、1つまたは複数のスパニングツリーが構築される。各スパニングツリーは、ブロック710で生成されたメッセージを受信することが意図された近隣ピア群内のピアすべてをアドレス指定することができる配布経路を定義する。たとえば、2つの可能なスパニングツリーを、近隣ピア群350(図3B)について構築することができる。近隣ピア群350内のピアのすべてに到達するためには、クライアント352Bおよび352Cに転送するためにメッセージをピア352Aに向けて送ることができ、クライアント352Cがピア352Aから受信したメッセージをピア352Bに転送する。逆に、スパニングツリーは、ピア352Aがメッセージをピア352Bに送信することによって構築することができ、ピア352Bは、そのメッセージをピア352Cに転送することになる。次いで、ピア352Dは、ピア352Cによって転送されるそのメッセージを受信することができる。したがって、図3Bの単純化された例では、ネットワーク350について2つのスパニングツリーが可能である。より複雑なピア間の相互接続を有するより多くのピアを含む近隣ピア群については、3つ以上のスパニングツリーを識別することができる。ステップ714でスパニングツリーが識別される機構は、本発明にとってクリティカルなものではない。しかし、いくつかの実施形態では、ピアによって維持されるルーティングテーブルは有向グラフと見なすことができ、その場合、有向グラフ全体にわたってスパニングツリーを構築するための既知のアルゴリズムを使用することができる。
これらのスパニングツリーがどのように構築されるかにかかわらず、プロセスはブロック716に進む。ブロック716では、ブロック714で構築されたあるスパニングツリーが選択される。図の実施形態では、この選択は、最も低い「コスト」に基づくものである。この文脈では、「コスト」は、ピアツーピアコラボレーションシステムの性能特性を示す任意のメトリックまたは複数のメトリックの使用を表すことができる。たとえば、他のスパニングツリーに比べて、最も少ない回数でメッセージが転送されることを必要とするスパニングツリーが、最も低コストのスパニングツリーとして選択されてもよい。別法として、輻輳しているノード群を通って転送されるメッセージの数が最も少なくなるスパニングツリーが最も低コストのスパニングツリーとして選択されてもよい。しかし、任意の好適なメトリックを、ブロック716でのコストの指示として使用することができる。
スパニングツリーがどのように選択されるかにかかわらず、プロセスは判断ブロック718に続く。判断ブロック718では、ループスタート712で選択された近隣ピア群に図7のプロセスを実行するピアからの直接的な接続が到達することができるかどうかに応じて、プロセスが分岐する。図の実施形態では、判断ブロック718でのチェックを実施するための単純な方法は、選択された近隣ピア群に開始ピアが属するかどうか判定することである。それ自体の近隣ピア群である場合、開始ピアは、それ自体をルートとしてスパニングツリーを作成し、次いで、変更メッセージをそのスパニングツリーに沿ってブロードキャストすることができる。
選択された近隣ピア群に直接到達することができる場合、プロセスはブロック720に分岐する。ブロック720では、選択されたスパニングツリーのルートノードを形成するピアに、メッセージが直接送られる。逆に、選択された近隣ピア群に開始ピアが属さない場合、プロセスは判断ブロック718からブロック740に分岐する。ブロック740では、メッセージは、図7のプロセスを実施するピアのホームリレーに送られる。メッセージは、従来のピアツーピアコラボレーションシステム内のピアのホームリレーにメッセージが送られる同じ方法でホームリレーに送られてもよい。しかし、任意の好適な機構を使用し、ブロック740での処理を実施することができる。
ブロック742では、ホームリレーは、選択されたスパニングツリーのルートノードにメッセージを転送する。メッセージは、従来のピアツーピアコラボレーションシステムの場合と同様に、ホームリレーによって転送されてもよい。メッセージの転送は、選択されたスパニングツリーのルートノードとして働くピアにメッセージを直接送ることによって実施することができる。別法として、メッセージは、スパニングツリーのルートノードであるピアと通信することができるリレーサーバに到達する前に、1つまたは複数のリレーサーバを経て転送されてもよい。
メッセージがルートノードに、ブロック720で直接送られるか、それともブロック742で1つまたは複数のリレーサーバを介して間接的に送られるかにかかわらず、プロセスはブロック722に続く。ブロック722では、メッセージは、スパニングツリーを通って伝播される。伝播は、ルートノードが直接的な接続を有するノードにメッセージを転送することによって開始することができる。次いで、これらのピアは、ルーティングテーブル内に反映されている直接的な接続を有するスパニングツリー内の他のピアに、メッセージを転送することができる。しかし、メッセージを伝播するための任意の好適な機構を使用することができる。
判断ブロック724では、メッセージを受信することが意図された近隣ピア群内のピアすべてにメッセージが到達したかどうかに応じて、プロセスが分岐する。到達した場合、プロセスは判断ブロック732に分岐し、ここでプロセスは、それ以上の近隣ピア群がまだ処理されずに残っているかどうかに応じてさらに分岐する。残っている場合、プロセスはループスタート712に分岐して戻り、ここで処理が次の近隣ピア群に対して繰り返される。逆に、近隣ピア群が残っていない場合、処理は終了する。
しかし、送信が成功しなかった場合、プロセスはブロック730に分岐し、ここでメッセージを再送信することができる。最初のメッセージと同じ仕方でメッセージを再送信することも、異なるルーティング経路を選択し、メッセージをその宛先ピアに送ることもできる。しかし、メッセージを受信しなかったピアにメッセージを送るために複数のアベニュー(avenue)が可能である場合、再送信したとき異なるアベニューを試すことができる。アベニューは、任意の好適な順序で試すことができる。しかし、図の実施形態では、リレーサーバに対する負荷を低減する努力を反映して、リレーサーバを使用する再送信を、最後の手段として試すことができる。
成功する送信が行われる機構にかかわらず、プロセスは判断ブロック732に進み、ここでプロセスは、次の近隣ピア群があればそれについて繰り返されることになり、または終了することになる。
上述のように、他のピアに直接アドレス指定されて送信されるピアツーピアコラボレーションシステム内のメッセージの量を増大することができ、それによりリレーサーバに対する負荷を低減することができ、より低コストかつ/またはより効果的なピアツーピアコラボレーションシステムが可能になる。
このように本発明の少なくとも1つの実施形態のいくつかの態様について述べたが、様々な改変、修正、および改良を当業者なら容易に思いつくであろう。
そのような改変、修正、および改良は、本開示の一部とするものとし、本発明の精神および範囲内にあるものとする。したがって、前述の説明および図面は、例にすぎない。
本発明の上述の実施形態は、多数の仕方のいくつかで実施することができる。たとえば、これらの実施形態は、ハードウェア、ソフトウェア、またはそれらの組合せを使用して実施することができる。ソフトウェアで実施されるとき、そのソフトウェアコードは、単一のコンピュータ内に設けられるか、それとも複数のコンピュータ間で分散されるかにかかわらず、任意の好適なプロセッサまたはプロセッサの集まりで実行することができる。
さらに、コンピュータは、ラックマウント型コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータなど、いくつかの形態のいずれかで実施することができる。さらに、コンピュータは、携帯情報端末(PDA)、スマートフォン、または任意の他の好適な可搬型または固定型の電子デバイスを含めて、一般にコンピュータと見なされないが適切な処理能力を有するデバイスに埋め込まれていてもよい。
また、コンピュータは、1つまたは複数の入出力デバイスを有することができる。これらのデバイスは、とりわけ、ユーザインターフェースを提示するために使用することができる。ユーザインターフェースを提供するために使用することができる出力デバイスの例には、出力を視覚的に提示するためのプリンタまたはディスプレイ画面や、出力を聞こえるように提示するためのスピーカまたは他の音声生成デバイスが含まれる。ユーザインターフェース用に使用することができる入力デバイスの例には、キーボードや、マウス、タッチパッド、デジタイジングタブレットなどポインティングデバイスが含まれる。別の例として、コンピュータは、音声認識を介して、または他の可聴フォーマットで入力情報を受け取ることができる。
そのようなコンピュータは、ローカルエリアネットワーク、または企業ネットワークもしくはインターネットなどワイドエリアネットワークとして、を含めて任意の好適な形態にある1つまたは複数のネットワークによって相互接続されてもよい。そのようなネットワークは、任意の好適な技術に基づくことができ、任意の好適なプロトコルに従って動作することができ、無線ネットワーク、有線ネットワーク、または光ファイバネットワークを含むことができる。
また、本明細書で概説されている様々な方法またはプロセスは、様々なオペレーティングシステムまたはプラットフォームのいずれか1つを使用する1つまたは複数のプロセッサ上で実行可能なソフトウェアとしてコード化することができる。さらに、そのようなソフトウェアは、いくつかの好適なプログラミング言語および/または従来のプログラミングツールもしくはスクリプティングツールのいずれかを使用して記述することができ、また、実行可能な機械語、またはあるフレームワークもしくは仮想機械上で実行可能な中間コードとしてコンパイルすることもできる。
これに関して、本発明は、1つまたは複数のコンピュータまたは他のプロセッサ上で実行されたとき、上記で論じた本発明の様々な実施形態を実施する方法を実施する1つまたは複数のプログラムで符号化されたコンピュータ可読媒体(または複数のコンピュータ可読媒体)(たとえば、コンピュータメモリ、1つまたは複数のフロッピディスク、コンパクトディスク、光ディスク、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイ内の回路構成、または他の半導体デバイスなど)として実施することができる。コンピュータ可読媒体または複数の媒体は、それらに格納されたプログラムまたは複数のプログラムを1つまたは複数の相異なるコンピュータもしくは他のプロセッサ上にロードし、上記で論じた本発明の様々な態様を実施することができるように、トランスポート可能とすることができる。
本明細書では、「プログラム」または「ソフトウェア」という用語を使用し、上記で論じた本発明の様々な態様を実施するようにコンピュータまたは他のプロセッサをプログラムするために使用することができる任意のタイプのコンピュータコードまたはコンピュータ実行可能命令のセットを指す。さらに、この実施形態の一態様によれば、実行されたとき本発明の方法を実施する1つまたは複数のコンピュータプログラムは、単一のコンピュータまたはプロセッサ上に常駐している必要がなく、いくつかの相異なるコンピュータまたはプロセッサ間でモジュール式で分散させ、本発明の様々な態様を実施することができることを理解されたい。
コンピュータ実行可能命令は、1つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなど多数の形態にあることができる。一般に、プログラムモジュールは、特定のタスクを実施する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。一般に、プログラムモジュールの機能は、様々な実施形態で望まれるように、組み合わせる、または分散させることができる。
本発明の様々な態様は、単独で、または組み合わせて、または前述の実施形態において具体的に論じられていない様々な構成で使用することができ、したがって、その応用例において、前述の説明に述べられている、または図面に示されている詳細および構成に限定されない。たとえば、一実施形態に述べられている態様は、他の実施形態で述べられている態様と任意の仕方で組み合わせることができる。
請求項要素を修飾するための、特許請求の範囲における「第1」「第2」「第3」など序数詞の使用は、それ自体、どんな優先順位、序列、またはある請求項要素の、別の要素にまさる順序、もしくは方法の動作が実施される時間的順序を暗示してはおらず、請求項要素を区別するために、ある名前を有するある請求項要素を、(序数詞の使用を除いて)同じ名前を有する別の要素と区別するようにラベルとして使用されるにすぎない。
また、本明細書で使用される言葉遣いおよび術語は、説明のためのものであり、限定するものと見なすべきではない。本明細書における「including(含む)」「comprising(備える、含む)」「having(有する)」「containing(含む)」「involving(含む、関与させる、必要とする)」およびそれらの変形形態は、その後にリストされている項目およびそれらの均等物、ならびに追加の項目を包含するものとする。

Claims (20)

  1. 複数のピア(112、114、122、124)がそれぞれ、前記複数のピアの他のピア(112、114、122、124)にコラボレーション情報をブロードキャストするピアツーピアコラボレーションシステムを動作させる方法であって、
    前記複数のピアの第1のピアがネットワークアドレス変換(NAT)デバイスを介してパケットを受信することができるアドレス情報を決定するステップと(610)、
    前記複数のピアの少なくとも第2のピアと前記アドレス情報を共有するステップと(614)と、
    前記複数のピアの前記他のピアのそれぞれにコラボレーション情報を前記第2のピアから送信するステップと(720、742)
    を具え、
    前記送信するステップは、前記第1のピアにアドレス指定された前記コラボレーション情報を含む少なくとも1つのパケットを、前記アドレス情報を使用して送信するステップを具えたことを特徴とする方法。
  2. アドレス情報を決定するステップは、
    探索用パケット(410)を前記第1のピアからサーバに送るステップと、
    前記第1のピアにて応答(412)パケットを受信するステップと
    を具えたことを特徴とする請求項1記載の方法。
  3. 前記第2のピアから送信するステップは、
    前記複数のピアの一部分に配布するために、少なくとも1つのパケットを前記サーバに送るステップ(740)を具えたことを特徴とする請求項2記載の方法。
  4. 前記アドレス情報を共有するステップは、
    アドレスベクトルをサーバに送信するステップ(612)と、
    前記アドレス情報を前記複数のピアの前記他のピアのそれぞれに配布するステップ(614)と
    を具えたことを特徴とする請求項1記載の方法。
  5. 前記複数のピア内のピア(352A、352B、352C、352D、362E、362F、362G、362H)の複数のグループ(350、360)を識別するデータ構造(324)を、前記第2のピアに関連付けられたコンピュータ可読媒体内に格納するステップであって、各グループ内の各ピアが前記グループ内の少なくとも1つの他のピアにパケットを送ることができる、ステップをさらに具え、
    前記第2のピアから送信するステップは、
    前記複数のグループ(712)のそれぞれの中の少なくとも1つのピアにパケットを送信するステップを具えた
    ことを特徴とする請求項1記載の方法。
  6. 前記複数のグループの第1のグループ内の前記複数のピアの少なくとも1つをスーパーピア(362E)として指定するステップをさらに具え、
    前記第2のピアから送信するステップは、
    パケット(542)を前記スーパーピアに送信するステップと、
    前記パケットを前記スーパーピアから前記第1のグループ内の複数の前記ピア(532、534、536)に転送するステップと
    を具えたことを特徴とする請求項5記載の方法。
  7. 前記第2のピアから送信するステップは、
    前記パケットを公然とアクセス可能なサーバに送信するステップ(740)と、
    前記パケットを前記公然とアクセス可能なサーバから前記複数のグループの少なくとも1つの中のピアに配布するステップ(742)と
    を具えたことを特徴とする請求項5記載の方法。
  8. 複数のピアがそれぞれ、前記複数のピアの他のピアのそれぞれにコラボレーション情報をブロードキャストするピアツーピアコラボレーションシステムを動作させる方法であって、
    複数のルーティングテーブル(324)のそれぞれが前記複数のピアの少なくとも一部分の中のピアに関連付けられ、各ルーティングテーブルが前記複数のピアのグループ(350、360)を識別し、各グループ内の各ピアが、前記グループ内のピアに直接アドレス指定されたパケットを使用して前記グループ内の少なくとも1つの他のピアと通信することができる、複数のルーティングテーブルを維持するステップと、
    パケット(720、742)を前記グループのそれぞれの中の少なくとも1つのピアに送信するステップと、
    前記グループの少なくとも一部分の中の前記少なくとも1つのピアから、前記パケットを前記グループ内の少なくとも1つの他のピアに転送するステップ(722)であって、各他のピアに転送される前記パケットが前記他のピアに直接アドレス指定される、ステップと
    を具えたことを特徴とする方法。
  9. 前記グループの少なくとも1つの中の前記少なくとも1つの他のピア(538)から、前記パケットを前記グループ内の第2の他のピア(532、534、536)に転送するステップをさらに具え、
    前記第2の他のピアに転送される前記パケット(5422、5433、5424)が前記第2の他のピアに直接アドレス指定されることを特徴とする請求項8記載の方法。
  10. パケットを前記グループのそれぞれの中の少なくとも1つのピアに送信するステップは、
    パケットを公然とアクセス可能なサーバ(560)に送信するステップと、
    前記パケットを前記公然とアクセス可能なサーバから前記複数のグループの一部分の中の少なくとも1つのピア(552、554、556)に転送するステップと
    を具えたことを特徴とする請求項8記載の方法。
  11. パケットを前記グループのそれぞれの中の少なくとも1つのピアに送信するステップは、
    前記パケットを前記グループの第1のグループ内の第1のピア(538)に送信するステップと、
    前記パケットを前記第1のピアから前記第1のグループ内の複数の他のピア(532、534、536)のそれぞれに転送するステップと
    を具えたことを特徴とする請求項8記載の方法。
  12. パケットを前記グループのそれぞれの中の少なくとも1つのピアに送信するステップは、
    前記パケットをサーバ(560)に送信するステップと、
    前記パケットを前記グループの第2のグループの中の少なくとも1つのピア(552、554、556)に転送するステップと
    を具えたことを特徴とする請求項11記載の方法。
  13. 前記サーバから、前記第1のピアが前記第1のグループ内の前記複数の他のピアのそれぞれに前記パケットを転送すべきであることを指定するステップ(541)をさらに具えたことを特徴とする請求項12記載の方法。
  14. 前記複数のピアがコラボレーションセッション内で通信し、複数のルーティングテーブルを維持するステップは、ピアが前記コラボレーションセッションに入る、もしくは離れるとき(624)、またはピア間の相互接続が変化したとき、前記複数のルーティングテーブルを再構築するステップを含むことを特徴とする請求項8記載の方法。
  15. ネットワークに接続され、ユーザインターフェースを有し、ピアツーピアコラボレーションセッション内でピアとして動作するように適合されており、コンピュータ実行可能コンポーネントを格納するコンピュータ可読媒体を備えるコンピューティングデバイスであって、前記コンピュータ実行可能コンポーネントは、
    前記ユーザインターフェース(332)を介してユーザと対話するためのアクティビティコンポーネント(322)であって、コラボレーションセッション内の複数の他のピアに送信するためにデータ変更コマンドを生成するように適合され、前記データ変更コマンドがユーザとの対話に基づくものである、アクティビティコンポーネントと、
    前記複数のピア間の、前記ネットワークにわたる相互接続を規定する情報を格納するためのルーティングテーブル(324)と、
    複数のメッセージを送信することによって、前記ネットワークにわたって前記データ変更コマンドを送信するための通信コンポーネント(326)であって、各メッセージが、前記ルーティングテーブル内の情報に基づいて選択されたアドレスを有し、前記メッセージの少なくとも1つが前記複数のピアの少なくとも1つに直接アドレス指定される、通信コンポーネントと
    を具えたことを特徴とするコンピューティングデバイス。
  16. 前記ルーティングテーブルは、複数の近隣ピア群(350、360)として編成された前記情報を含み、各近隣ピア群は、複数のピア(352A、352B、352C、352D、362E、362F、362G、362H)を含み、前記近隣ピア群内の各ピアは、前記近隣ピア群内の少なくとも1つの他のピアとメッセージを通信することができることを特徴とする請求項15記載のコンピューティングデバイス。
  17. 各近隣ピア群内の前記複数のピアは、同じネットワークアドレス変換(NAT)デバイス(116、126)の背後にある、またはNATデバイスの背後にない前記近隣ピア群内のピアからトラバースすることができる前記NATデバイスの背後にあることを特徴とする請求項16記載のコンピューティングデバイス。
  18. 前記通信コンポーネントは、前記複数のメッセージのそれぞれを前記複数の近隣ピア群のそれぞれの中のピアに送信するように適合されることを特徴とする請求項17記載のコンピューティングデバイス。
  19. 前記通信コンポーネントは、前記複数のメッセージの一部分を前記複数の近隣ピア群の少なくとも1つの中のピアに直接送信するように適合されることを特徴とする請求項18記載のコンピューティングデバイス。
  20. 前記通信コンポーネントは、前記複数のメッセージの一部分を前記複数の近隣ピア群の少なくとも1つの中のピアに、中間デバイスを介して間接的に送信するように適合されることを特徴とする請求項19記載のコンピューティングデバイス。
JP2010508480A 2007-05-16 2008-04-20 エッジルーティングを用いたピアツーピアコラボレーションシステム Withdrawn JP2010527561A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/803,800 US8656017B2 (en) 2007-05-16 2007-05-16 Peer-to-peer collaboration system with edge routing
PCT/US2008/060957 WO2008144144A1 (en) 2007-05-16 2008-04-20 Peer-to-peer collaboration system with edge routing

Publications (1)

Publication Number Publication Date
JP2010527561A true JP2010527561A (ja) 2010-08-12

Family

ID=40028631

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010508480A Withdrawn JP2010527561A (ja) 2007-05-16 2008-04-20 エッジルーティングを用いたピアツーピアコラボレーションシステム

Country Status (7)

Country Link
US (1) US8656017B2 (ja)
EP (1) EP2153337B1 (ja)
JP (1) JP2010527561A (ja)
KR (1) KR101455434B1 (ja)
CN (1) CN101681337A (ja)
MX (1) MX2009012073A (ja)
WO (1) WO2008144144A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008289109A (ja) * 2007-04-20 2008-11-27 Panasonic Corp Ip通信装置及びip通信装置によるnat種別の判定方法

Families Citing this family (190)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065418B1 (en) 2004-02-02 2011-11-22 Apple Inc. NAT traversal for media conferencing
DE102004043969A1 (de) * 2004-09-11 2006-03-16 Deutsche Thomson-Brandt Gmbh Netzwerkverbindungsschalteinheit
US8631155B2 (en) * 2007-06-29 2014-01-14 Microsoft Corporation Network address translation traversals for peer-to-peer networks
TWI363537B (en) * 2007-07-27 2012-05-01 Qubes Inc Method for establishing network connection and mobile communication system thereof
US9178957B2 (en) * 2007-09-27 2015-11-03 Adobe Systems Incorporated Application and data agnostic collaboration services
US9420014B2 (en) 2007-11-15 2016-08-16 Adobe Systems Incorporated Saving state of a collaborative session in an editable format
KR101422213B1 (ko) * 2007-11-23 2014-07-22 삼성전자 주식회사 단말의 능력을 기초로 역할을 설정하는 장치 및 그 방법
CN101965716A (zh) * 2008-01-10 2011-02-02 惠普开发有限公司 多路对等媒体流传送
JP5423401B2 (ja) * 2008-02-22 2014-02-19 日本電気株式会社 情報処理装置、情報処理システム、設定プログラム送信方法及びサーバ設定プログラム
CN101557388B (zh) * 2008-04-11 2012-05-23 中国科学院声学研究所 一种基于UPnP和STUN技术相结合的NAT穿越方法
KR101467512B1 (ko) * 2008-04-30 2014-12-02 삼성전자주식회사 피투피 네트워크 시스템 및 그의 운용 방법
KR101472936B1 (ko) * 2008-04-30 2014-12-17 삼성전자주식회사 피투피 네트워크 시스템 및 그의 지역 기반 운용 방법
US9456054B2 (en) 2008-05-16 2016-09-27 Palo Alto Research Center Incorporated Controlling the spread of interests and content in a content centric network
US20090327187A1 (en) * 2008-06-25 2009-12-31 Broadon Communications Corp. Connectivity in a peer network
EP2216957A1 (en) * 2009-02-06 2010-08-11 Thomson Licensing Device and method for disseminating content data between peers in a P2P mode, by using a bipartite peer overlay
KR101511154B1 (ko) * 2008-07-02 2015-04-10 톰슨 라이센싱 이분 피어 오버레이를 사용함으로써, p2p모드로 피어 사이에 콘텐츠 데이터를 배포하기 위한 디바이스 및 방법
US8631094B1 (en) * 2008-08-08 2014-01-14 Google Inc. Distributed parallel determination of single and multiple source shortest paths in large directed graphs
US8064362B2 (en) * 2008-08-21 2011-11-22 Cisco Technology, Inc. Wide area network optimization proxy routing protocol
US9294291B2 (en) * 2008-11-12 2016-03-22 Adobe Systems Incorporated Adaptive connectivity in network-based collaboration
US7962627B2 (en) * 2008-12-04 2011-06-14 Microsoft Corporation Peer-to-peer network address translator (NAT) traversal techniques
US8924513B2 (en) * 2009-07-08 2014-12-30 International Business Machines Corporation Storage system
US8825820B2 (en) * 2009-09-18 2014-09-02 At&T Intellectual Property I, Lp Network aware application management
JP5273002B2 (ja) * 2009-09-30 2013-08-28 ブラザー工業株式会社 通信システム、通信制御装置、通信制御方法、及び通信制御プログラム
US8700780B2 (en) * 2009-10-15 2014-04-15 Qualcomm Incorporated Group owner selection with crossing requests
US8923293B2 (en) 2009-10-21 2014-12-30 Palo Alto Research Center Incorporated Adaptive multi-interface use for content networking
US8438294B2 (en) * 2010-04-07 2013-05-07 Apple Inc. Application programming interface, system, and method for collaborative online applications
US9118733B2 (en) * 2010-05-21 2015-08-25 Skype Multilevel routing
CN102299975B (zh) * 2010-06-28 2014-02-26 杭州华三通信技术有限公司 自适应多层nat环境的nat设备调整方法和系统
EP2405622B1 (en) 2010-07-08 2014-05-14 Mobile Imaging in Sweden AB Device communication
US8606884B2 (en) * 2010-09-21 2013-12-10 Taesung Kim System and method for web hosting behind NATs
US8934492B1 (en) 2010-09-28 2015-01-13 Adtran, Inc. Network systems and methods for efficiently dropping packets carried by virtual circuits
US9264459B2 (en) * 2010-12-16 2016-02-16 Palo Alto Research Center Incorporated SIP-based custodian routing in content-centric networks
US9712340B2 (en) * 2011-02-28 2017-07-18 Red Hat, Inc. Using a shared data store for peer discovery
US9503223B2 (en) * 2011-03-04 2016-11-22 Blackberry Limited Controlling network device behavior
CN103037448B (zh) 2011-09-30 2015-05-27 华为技术有限公司 内容发布方法和用户设备
CN103095664B (zh) * 2011-10-31 2015-12-16 国际商业机器公司 Ip多媒体会话建立方法和系统
TWI448129B (zh) * 2011-11-09 2014-08-01 D Link Corp According to the behavior of the network address translator to establish a transmission control protocol connection method
KR20130052240A (ko) * 2011-11-11 2013-05-22 삼성전자주식회사 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치
EP3800854A1 (en) * 2012-02-14 2021-04-07 INTEL Corporation Peer to peer networking and sharing systems and methods
CN104205741A (zh) * 2012-03-28 2014-12-10 索尼公司 信息处理设备、信息处理方法和程序
US8650309B2 (en) * 2012-06-01 2014-02-11 Cisco Technology, Inc. Cascading architecture for audio and video streams
US9280546B2 (en) 2012-10-31 2016-03-08 Palo Alto Research Center Incorporated System and method for accessing digital content using a location-independent name
US9400800B2 (en) 2012-11-19 2016-07-26 Palo Alto Research Center Incorporated Data transport by named content synchronization
US10430839B2 (en) 2012-12-12 2019-10-01 Cisco Technology, Inc. Distributed advertisement insertion in content-centric networks
US9978025B2 (en) 2013-03-20 2018-05-22 Cisco Technology, Inc. Ordered-element naming for name-based packet forwarding
TWI523456B (zh) * 2013-04-24 2016-02-21 仁寶電腦工業股份有限公司 網路通訊之連線方法與管理伺服器
US9935791B2 (en) 2013-05-20 2018-04-03 Cisco Technology, Inc. Method and system for name resolution across heterogeneous architectures
CN104184755A (zh) * 2013-05-21 2014-12-03 华为终端有限公司 一种网页实时通信方法、系统及终端
US9185120B2 (en) 2013-05-23 2015-11-10 Palo Alto Research Center Incorporated Method and system for mitigating interest flooding attacks in content-centric networks
US9852230B2 (en) 2013-06-29 2017-12-26 Google Llc Asynchronous message passing for large graph clustering
US9596295B2 (en) 2013-06-29 2017-03-14 Google Inc. Computing connected components in large graphs
US9444722B2 (en) 2013-08-01 2016-09-13 Palo Alto Research Center Incorporated Method and apparatus for configuring routing paths in a custodian-based routing architecture
US9407549B2 (en) 2013-10-29 2016-08-02 Palo Alto Research Center Incorporated System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers
US9276840B2 (en) 2013-10-30 2016-03-01 Palo Alto Research Center Incorporated Interest messages with a payload for a named data network
US9282050B2 (en) 2013-10-30 2016-03-08 Palo Alto Research Center Incorporated System and method for minimum path MTU discovery in content centric networks
US9401864B2 (en) 2013-10-31 2016-07-26 Palo Alto Research Center Incorporated Express header for packets with hierarchically structured variable-length identifiers
US9311377B2 (en) 2013-11-13 2016-04-12 Palo Alto Research Center Incorporated Method and apparatus for performing server handoff in a name-based content distribution system
US10129365B2 (en) 2013-11-13 2018-11-13 Cisco Technology, Inc. Method and apparatus for pre-fetching remote content based on static and dynamic recommendations
US10101801B2 (en) 2013-11-13 2018-10-16 Cisco Technology, Inc. Method and apparatus for prefetching content in a data stream
US10089655B2 (en) 2013-11-27 2018-10-02 Cisco Technology, Inc. Method and apparatus for scalable data broadcasting
US9503358B2 (en) 2013-12-05 2016-11-22 Palo Alto Research Center Incorporated Distance-based routing in an information-centric network
US9515995B2 (en) * 2013-12-27 2016-12-06 Futurewei Technologies, Inc. Method and apparatus for network address translation and firewall traversal
US9379979B2 (en) 2014-01-14 2016-06-28 Palo Alto Research Center Incorporated Method and apparatus for establishing a virtual interface for a set of mutual-listener devices
US10098051B2 (en) 2014-01-22 2018-10-09 Cisco Technology, Inc. Gateways and routing in software-defined manets
US10172068B2 (en) 2014-01-22 2019-01-01 Cisco Technology, Inc. Service-oriented routing in software-defined MANETs
US9374304B2 (en) 2014-01-24 2016-06-21 Palo Alto Research Center Incorporated End-to end route tracing over a named-data network
US9954678B2 (en) 2014-02-06 2018-04-24 Cisco Technology, Inc. Content-based transport security
US9531679B2 (en) 2014-02-06 2016-12-27 Palo Alto Research Center Incorporated Content-based transport security for distributed producers
US9678998B2 (en) 2014-02-28 2017-06-13 Cisco Technology, Inc. Content name resolution for information centric networking
US10089651B2 (en) 2014-03-03 2018-10-02 Cisco Technology, Inc. Method and apparatus for streaming advertisements in a scalable data broadcasting system
US9836540B2 (en) 2014-03-04 2017-12-05 Cisco Technology, Inc. System and method for direct storage access in a content-centric network
US9473405B2 (en) 2014-03-10 2016-10-18 Palo Alto Research Center Incorporated Concurrent hashes and sub-hashes on data streams
US9391896B2 (en) 2014-03-10 2016-07-12 Palo Alto Research Center Incorporated System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network
US9626413B2 (en) 2014-03-10 2017-04-18 Cisco Systems, Inc. System and method for ranking content popularity in a content-centric network
US9407432B2 (en) 2014-03-19 2016-08-02 Palo Alto Research Center Incorporated System and method for efficient and secure distribution of digital content
US9916601B2 (en) 2014-03-21 2018-03-13 Cisco Technology, Inc. Marketplace for presenting advertisements in a scalable data broadcasting system
US9363179B2 (en) 2014-03-26 2016-06-07 Palo Alto Research Center Incorporated Multi-publisher routing protocol for named data networks
US9363086B2 (en) 2014-03-31 2016-06-07 Palo Alto Research Center Incorporated Aggregate signing of data in content centric networking
US9716622B2 (en) 2014-04-01 2017-07-25 Cisco Technology, Inc. System and method for dynamic name configuration in content-centric networks
US9390289B2 (en) 2014-04-07 2016-07-12 Palo Alto Research Center Incorporated Secure collection synchronization using matched network names
US10075521B2 (en) 2014-04-07 2018-09-11 Cisco Technology, Inc. Collection synchronization using equality matched network names
US9473576B2 (en) 2014-04-07 2016-10-18 Palo Alto Research Center Incorporated Service discovery using collection synchronization with exact names
US9451032B2 (en) 2014-04-10 2016-09-20 Palo Alto Research Center Incorporated System and method for simple service discovery in content-centric networks
US9203885B2 (en) 2014-04-28 2015-12-01 Palo Alto Research Center Incorporated Method and apparatus for exchanging bidirectional streams over a content centric network
US9992281B2 (en) 2014-05-01 2018-06-05 Cisco Technology, Inc. Accountable content stores for information centric networks
US9609014B2 (en) 2014-05-22 2017-03-28 Cisco Systems, Inc. Method and apparatus for preventing insertion of malicious content at a named data network router
US9455835B2 (en) 2014-05-23 2016-09-27 Palo Alto Research Center Incorporated System and method for circular link resolution with hash-based names in content-centric networks
US9276751B2 (en) 2014-05-28 2016-03-01 Palo Alto Research Center Incorporated System and method for circular link resolution with computable hash-based names in content-centric networks
US9516144B2 (en) 2014-06-19 2016-12-06 Palo Alto Research Center Incorporated Cut-through forwarding of CCNx message fragments with IP encapsulation
US9467377B2 (en) 2014-06-19 2016-10-11 Palo Alto Research Center Incorporated Associating consumer states with interests in a content-centric network
US9537719B2 (en) 2014-06-19 2017-01-03 Palo Alto Research Center Incorporated Method and apparatus for deploying a minimal-cost CCN topology
US9426113B2 (en) 2014-06-30 2016-08-23 Palo Alto Research Center Incorporated System and method for managing devices over a content centric network
US9699198B2 (en) 2014-07-07 2017-07-04 Cisco Technology, Inc. System and method for parallel secure content bootstrapping in content-centric networks
US9621354B2 (en) 2014-07-17 2017-04-11 Cisco Systems, Inc. Reconstructable content objects
US9959156B2 (en) 2014-07-17 2018-05-01 Cisco Technology, Inc. Interest return control message
US9729616B2 (en) 2014-07-18 2017-08-08 Cisco Technology, Inc. Reputation-based strategy for forwarding and responding to interests over a content centric network
US9590887B2 (en) 2014-07-18 2017-03-07 Cisco Systems, Inc. Method and system for keeping interest alive in a content centric network
US9535968B2 (en) 2014-07-21 2017-01-03 Palo Alto Research Center Incorporated System for distributing nameless objects using self-certifying names
US9882964B2 (en) 2014-08-08 2018-01-30 Cisco Technology, Inc. Explicit strategy feedback in name-based forwarding
US9729662B2 (en) 2014-08-11 2017-08-08 Cisco Technology, Inc. Probabilistic lazy-forwarding technique without validation in a content centric network
US9503365B2 (en) 2014-08-11 2016-11-22 Palo Alto Research Center Incorporated Reputation-based instruction processing over an information centric network
US9391777B2 (en) 2014-08-15 2016-07-12 Palo Alto Research Center Incorporated System and method for performing key resolution over a content centric network
US9800637B2 (en) 2014-08-19 2017-10-24 Cisco Technology, Inc. System and method for all-in-one content stream in content-centric networks
US9467492B2 (en) 2014-08-19 2016-10-11 Palo Alto Research Center Incorporated System and method for reconstructable all-in-one content stream
US9497282B2 (en) 2014-08-27 2016-11-15 Palo Alto Research Center Incorporated Network coding for content-centric network
US10204013B2 (en) 2014-09-03 2019-02-12 Cisco Technology, Inc. System and method for maintaining a distributed and fault-tolerant state over an information centric network
US9553812B2 (en) 2014-09-09 2017-01-24 Palo Alto Research Center Incorporated Interest keep alives at intermediate routers in a CCN
US10069933B2 (en) 2014-10-23 2018-09-04 Cisco Technology, Inc. System and method for creating virtual interfaces based on network characteristics
US9536059B2 (en) 2014-12-15 2017-01-03 Palo Alto Research Center Incorporated Method and system for verifying renamed content using manifests in a content centric network
US9590948B2 (en) 2014-12-15 2017-03-07 Cisco Systems, Inc. CCN routing using hardware-assisted hash tables
US10237189B2 (en) 2014-12-16 2019-03-19 Cisco Technology, Inc. System and method for distance-based interest forwarding
US9846881B2 (en) 2014-12-19 2017-12-19 Palo Alto Research Center Incorporated Frugal user engagement help systems
US9585159B2 (en) * 2014-12-19 2017-02-28 Qualcomm Incorporated Opportunistic dual-band relay
US10681145B1 (en) * 2014-12-22 2020-06-09 Chelsio Communications, Inc. Replication in a protocol offload network interface controller
US9473475B2 (en) 2014-12-22 2016-10-18 Palo Alto Research Center Incorporated Low-cost authenticated signing delegation in content centric networking
US10003520B2 (en) 2014-12-22 2018-06-19 Cisco Technology, Inc. System and method for efficient name-based content routing using link-state information in information-centric networks
US9660825B2 (en) 2014-12-24 2017-05-23 Cisco Technology, Inc. System and method for multi-source multicasting in content-centric networks
US9946743B2 (en) 2015-01-12 2018-04-17 Cisco Technology, Inc. Order encoded manifests in a content centric network
US9916457B2 (en) 2015-01-12 2018-03-13 Cisco Technology, Inc. Decoupled name security binding for CCN objects
US9954795B2 (en) 2015-01-12 2018-04-24 Cisco Technology, Inc. Resource allocation using CCN manifests
US9602596B2 (en) 2015-01-12 2017-03-21 Cisco Systems, Inc. Peer-to-peer sharing in a content centric network
US9832291B2 (en) 2015-01-12 2017-11-28 Cisco Technology, Inc. Auto-configurable transport stack
US9462006B2 (en) 2015-01-21 2016-10-04 Palo Alto Research Center Incorporated Network-layer application-specific trust model
US9800659B2 (en) * 2015-02-02 2017-10-24 International Business Machines Corporation Enterprise peer-to-peer storage and method of managing peer network storage
US9552493B2 (en) 2015-02-03 2017-01-24 Palo Alto Research Center Incorporated Access control framework for information centric networking
US10333840B2 (en) 2015-02-06 2019-06-25 Cisco Technology, Inc. System and method for on-demand content exchange with adaptive naming in information-centric networks
US10075401B2 (en) 2015-03-18 2018-09-11 Cisco Technology, Inc. Pending interest table behavior
WO2016155772A1 (en) * 2015-03-30 2016-10-06 Irdeto B.V. Monitoring a peer-to-peer network
US10116605B2 (en) 2015-06-22 2018-10-30 Cisco Technology, Inc. Transport stack name scheme and identity management
US10075402B2 (en) 2015-06-24 2018-09-11 Cisco Technology, Inc. Flexible command and control in content centric networks
US10701038B2 (en) 2015-07-27 2020-06-30 Cisco Technology, Inc. Content negotiation in a content centric network
US9986034B2 (en) 2015-08-03 2018-05-29 Cisco Technology, Inc. Transferring state in content centric network stacks
US10610144B2 (en) 2015-08-19 2020-04-07 Palo Alto Research Center Incorporated Interactive remote patient monitoring and condition management intervention system
US9832123B2 (en) 2015-09-11 2017-11-28 Cisco Technology, Inc. Network named fragments in a content centric network
US10355999B2 (en) 2015-09-23 2019-07-16 Cisco Technology, Inc. Flow control with network named fragments
US10313227B2 (en) 2015-09-24 2019-06-04 Cisco Technology, Inc. System and method for eliminating undetected interest looping in information-centric networks
US9977809B2 (en) 2015-09-24 2018-05-22 Cisco Technology, Inc. Information and data framework in a content centric network
US10454820B2 (en) 2015-09-29 2019-10-22 Cisco Technology, Inc. System and method for stateless information-centric networking
US10263965B2 (en) 2015-10-16 2019-04-16 Cisco Technology, Inc. Encrypted CCNx
US9794238B2 (en) 2015-10-29 2017-10-17 Cisco Technology, Inc. System for key exchange in a content centric network
US9807205B2 (en) 2015-11-02 2017-10-31 Cisco Technology, Inc. Header compression for CCN messages using dictionary
US10009446B2 (en) 2015-11-02 2018-06-26 Cisco Technology, Inc. Header compression for CCN messages using dictionary learning
US10021222B2 (en) 2015-11-04 2018-07-10 Cisco Technology, Inc. Bit-aligned header compression for CCN messages using dictionary
US10097521B2 (en) 2015-11-20 2018-10-09 Cisco Technology, Inc. Transparent encryption in a content centric network
US9912776B2 (en) 2015-12-02 2018-03-06 Cisco Technology, Inc. Explicit content deletion commands in a content centric network
US10097346B2 (en) 2015-12-09 2018-10-09 Cisco Technology, Inc. Key catalogs in a content centric network
US10078062B2 (en) 2015-12-15 2018-09-18 Palo Alto Research Center Incorporated Device health estimation by combining contextual information with sensor data
US10257271B2 (en) 2016-01-11 2019-04-09 Cisco Technology, Inc. Chandra-Toueg consensus in a content centric network
US9949301B2 (en) 2016-01-20 2018-04-17 Palo Alto Research Center Incorporated Methods for fast, secure and privacy-friendly internet connection discovery in wireless networks
US10305864B2 (en) 2016-01-25 2019-05-28 Cisco Technology, Inc. Method and system for interest encryption in a content centric network
US10043016B2 (en) 2016-02-29 2018-08-07 Cisco Technology, Inc. Method and system for name encryption agreement in a content centric network
US10051071B2 (en) 2016-03-04 2018-08-14 Cisco Technology, Inc. Method and system for collecting historical network information in a content centric network
US10003507B2 (en) 2016-03-04 2018-06-19 Cisco Technology, Inc. Transport session state protocol
US10742596B2 (en) 2016-03-04 2020-08-11 Cisco Technology, Inc. Method and system for reducing a collision probability of hash-based names using a publisher identifier
US10038633B2 (en) 2016-03-04 2018-07-31 Cisco Technology, Inc. Protocol to query for historical network information in a content centric network
US9832116B2 (en) 2016-03-14 2017-11-28 Cisco Technology, Inc. Adjusting entries in a forwarding information base in a content centric network
US10212196B2 (en) 2016-03-16 2019-02-19 Cisco Technology, Inc. Interface discovery and authentication in a name-based network
US11436656B2 (en) 2016-03-18 2022-09-06 Palo Alto Research Center Incorporated System and method for a real-time egocentric collaborative filter on large datasets
US10067948B2 (en) 2016-03-18 2018-09-04 Cisco Technology, Inc. Data deduping in content centric networking manifests
CN105847343B (zh) * 2016-03-21 2019-01-25 福建星网锐捷通讯股份有限公司 用于点对点传输的公网信息探测方法、装置及系统
US10091330B2 (en) 2016-03-23 2018-10-02 Cisco Technology, Inc. Interest scheduling by an information and data framework in a content centric network
US10033639B2 (en) 2016-03-25 2018-07-24 Cisco Technology, Inc. System and method for routing packets in a content centric network using anonymous datagrams
CN105743739A (zh) * 2016-03-28 2016-07-06 Tcl集团股份有限公司 对称式nat的端口预测方法、探测服务器及受测端设备
US10320760B2 (en) 2016-04-01 2019-06-11 Cisco Technology, Inc. Method and system for mutating and caching content in a content centric network
US9930146B2 (en) 2016-04-04 2018-03-27 Cisco Technology, Inc. System and method for compressing content centric networking messages
US10425503B2 (en) 2016-04-07 2019-09-24 Cisco Technology, Inc. Shared pending interest table in a content centric network
US10027578B2 (en) 2016-04-11 2018-07-17 Cisco Technology, Inc. Method and system for routable prefix queries in a content centric network
US10404450B2 (en) 2016-05-02 2019-09-03 Cisco Technology, Inc. Schematized access control in a content centric network
US10320675B2 (en) 2016-05-04 2019-06-11 Cisco Technology, Inc. System and method for routing packets in a stateless content centric network
US10547589B2 (en) 2016-05-09 2020-01-28 Cisco Technology, Inc. System for implementing a small computer systems interface protocol over a content centric network
US10084764B2 (en) 2016-05-13 2018-09-25 Cisco Technology, Inc. System for a secure encryption proxy in a content centric network
US10063414B2 (en) 2016-05-13 2018-08-28 Cisco Technology, Inc. Updating a transport stack in a content centric network
US10103989B2 (en) 2016-06-13 2018-10-16 Cisco Technology, Inc. Content object return messages in a content centric network
US10305865B2 (en) 2016-06-21 2019-05-28 Cisco Technology, Inc. Permutation-based content encryption with manifests in a content centric network
US10148572B2 (en) 2016-06-27 2018-12-04 Cisco Technology, Inc. Method and system for interest groups in a content centric network
US10009266B2 (en) 2016-07-05 2018-06-26 Cisco Technology, Inc. Method and system for reference counted pending interest tables in a content centric network
US9992097B2 (en) 2016-07-11 2018-06-05 Cisco Technology, Inc. System and method for piggybacking routing information in interests in a content centric network
US10122624B2 (en) 2016-07-25 2018-11-06 Cisco Technology, Inc. System and method for ephemeral entries in a forwarding information base in a content centric network
US10069729B2 (en) 2016-08-08 2018-09-04 Cisco Technology, Inc. System and method for throttling traffic based on a forwarding information base in a content centric network
US10956412B2 (en) 2016-08-09 2021-03-23 Cisco Technology, Inc. Method and system for conjunctive normal form attribute matching in a content centric network
KR101941583B1 (ko) * 2016-08-26 2019-01-23 홍익대학교 산학협력단 P2p 네트워크 기반 피어 관리 방법 및 피어 관리 장치
US10033642B2 (en) 2016-09-19 2018-07-24 Cisco Technology, Inc. System and method for making optimal routing decisions based on device-specific parameters in a content centric network
US10212248B2 (en) 2016-10-03 2019-02-19 Cisco Technology, Inc. Cache management on high availability routers in a content centric network
US10447805B2 (en) 2016-10-10 2019-10-15 Cisco Technology, Inc. Distributed consensus in a content centric network
US10135948B2 (en) 2016-10-31 2018-11-20 Cisco Technology, Inc. System and method for process migration in a content centric network
US10243851B2 (en) 2016-11-21 2019-03-26 Cisco Technology, Inc. System and method for forwarder connection information in a content centric network
US20200145484A1 (en) * 2017-02-03 2020-05-07 Hewlett-Packard Development Company, L.P. Sub-groups of remote computing devices with relay devices
KR101962022B1 (ko) 2017-07-18 2019-03-25 주식회사 에스원 에지 서버를 활용한 피-투-피 접근 시스템 및 그 방법
WO2019232750A1 (zh) * 2018-06-07 2019-12-12 Guan Chi 一种网络通信方法、对等体及系统
CN110086884A (zh) * 2019-05-09 2019-08-02 俞力奇 一种主机连接通讯系统及连接方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807165B2 (en) * 2000-11-08 2004-10-19 Meshnetworks, Inc. Time division protocol for an ad-hoc, peer-to-peer radio network having coordinating channel access to shared parallel data channels with separate reservation channel
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7151769B2 (en) * 2001-03-22 2006-12-19 Meshnetworks, Inc. Prioritized-routing for an ad-hoc, peer-to-peer, mobile radio access system based on battery-power levels and type of service
US7752127B2 (en) * 2001-09-28 2010-07-06 Acs State & Local Solutions, Inc. Apparatus and methods for providing a national portal for electronic services
US7028183B2 (en) * 2001-11-13 2006-04-11 Symantec Corporation Enabling secure communication in a clustered or distributed architecture
US7079520B2 (en) * 2001-12-28 2006-07-18 Cisco Technology, Inc. Methods and apparatus for implementing NAT traversal in mobile IP
US7092391B2 (en) * 2002-02-26 2006-08-15 Skyley Networks, Inc. Multi-hop peer-to-peer telecommunications method in a wireless network, radio terminal telecommunications method, and medium recording a program for causing a processor to implement the radio terminal telecommunications method
US7803052B2 (en) * 2002-06-28 2010-09-28 Microsoft Corporation Discovery and distribution of game session information
US8224985B2 (en) * 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US7213047B2 (en) * 2002-10-31 2007-05-01 Sun Microsystems, Inc. Peer trust evaluation using mobile agents in peer-to-peer networks
US7454520B2 (en) * 2002-11-20 2008-11-18 Hewlett-Packard Development Company, L.P. Method and apparatus for generating a routing table
FR2853187B1 (fr) * 2003-03-28 2006-01-13 At & T Corp Systeme permettant a toute application reseau de fonctionner de facon transparente a travers un dispositif de traduction d'adresse de reseau
US20040249973A1 (en) * 2003-03-31 2004-12-09 Alkhatib Hasan S. Group agent
US7949785B2 (en) * 2003-03-31 2011-05-24 Inpro Network Facility, Llc Secure virtual community network system
US7656870B2 (en) * 2004-06-29 2010-02-02 Damaka, Inc. System and method for peer-to-peer hybrid communications
US8571011B2 (en) * 2004-08-13 2013-10-29 Verizon Business Global Llc Method and system for providing voice over IP managed services utilizing a centralized data store
EP1646205A1 (en) * 2004-10-08 2006-04-12 Deutsche Thomson-Brandt Gmbh Method for establishing communication between peer-groups
US7606187B2 (en) * 2004-10-28 2009-10-20 Meshnetworks, Inc. System and method to support multicast routing in large scale wireless mesh networks
US7639681B2 (en) * 2004-11-23 2009-12-29 Microsoft Corporation System and method for a distributed server for peer-to-peer networks
US7443849B2 (en) * 2004-12-30 2008-10-28 Cisco Technology, Inc. Mechanisms for detection of non-supporting NAT traversal boxes in the path
US7912046B2 (en) * 2005-02-11 2011-03-22 Microsoft Corporation Automated NAT traversal for peer-to-peer networks
US7646775B2 (en) * 2005-03-08 2010-01-12 Leaf Networks, Llc Protocol and system for firewall and NAT traversal for TCP connections
US7983254B2 (en) 2005-07-20 2011-07-19 Verizon Business Global Llc Method and system for securing real-time media streams in support of interdomain traversal
US8024727B2 (en) * 2006-06-15 2011-09-20 Microsoft Corporation Enhancing or replacing host operating system functionality by leveraging guest operating system functionality

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008289109A (ja) * 2007-04-20 2008-11-27 Panasonic Corp Ip通信装置及びip通信装置によるnat種別の判定方法

Also Published As

Publication number Publication date
KR20100019420A (ko) 2010-02-18
US8656017B2 (en) 2014-02-18
CN101681337A (zh) 2010-03-24
EP2153337A1 (en) 2010-02-17
WO2008144144A1 (en) 2008-11-27
EP2153337A4 (en) 2015-02-25
EP2153337B1 (en) 2020-07-29
KR101455434B1 (ko) 2014-10-27
US20080288580A1 (en) 2008-11-20
MX2009012073A (es) 2009-11-19

Similar Documents

Publication Publication Date Title
EP2153337B1 (en) Peer-to-peer collaboration system with edge routing
US9979605B2 (en) Virtualization mapping
US9871854B2 (en) Interaction with a virtual network
US9667524B2 (en) Method to check health of automatically discovered controllers in software defined networks (SDNs)
US9830179B2 (en) Interaction with a virtual network
US9979694B2 (en) Managing communications between virtual computing nodes in a substrate network
US11303553B1 (en) Return path trace
JP4000331B2 (ja) ネットワークのポートマッピング用システム
JP7345059B2 (ja) ルーティング制御方法、装置、プログラム及びコンピュータ装置
US7315896B2 (en) Server network controller including packet forwarding and method therefor
JP2017537547A (ja) ステートレスなネットワークにおけるステートフルなロードバランシング
US9942153B2 (en) Multiple persistant load balancer system
US8051213B2 (en) Method for server-directed packet forwarding by a network controller based on a packet buffer threshold
Lin et al. WEBridge: west–east bridge for distributed heterogeneous SDN NOSes peering
Koshibe et al. Towards distributed hierarchical SDN control plane
EP1741270B1 (en) Zone-based peer-to-peer
Baggan et al. A comprehensive analysis and experimental evaluation of routing information protocol: An elucidation
EP1440529B1 (en) System and method for information object routing in computer networks
Shukla et al. Towards software defined low maintenance structured peer-to-peer overlays
CN112968879B (zh) 一种实现防火墙管理的方法及设备
Brennan et al. Improving communication through overlay detours: Pipe dream or actionable insight?
JP7217647B2 (ja) 通信装置、通信方法、及びプログラム
Koshibe The design and evaluation of a hierarchical OpenFlow SDN control plane
Nakasan Design and Implementation of OpenFlow-based Routing Optimization for MPTCP
Brennan Exploring Alternative Routes Using Multipath TCP

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110324

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110512

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110527

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20121113