(57)【特許請求の範囲】
【請求項１】
第１ノード及び第２ノードの間のネットワークにおける双方向通信セッションでデータを非対称にルーティングする方法であって、
前記ネットワークの複数の中継ノードであって前記第１ノードから前記第２ノードへの第１方向でデータをルーティングするのに利用可能な中継ノード各々を経由して前記第１方向に前記双方向通信セッションでデータをルーティングすることに関する第１の複数の一方向パフォーマンス測定値を判定し、及び、前記ネットワークの複数の中継ノードであって前記第２ノードから前記第１ノードへの第２方向でデータをルーティングするのに利用可能な中継ノード各々を経由して前記第２方向に前記双方向通信セッションでデータをルーティングすることに関する第２の複数の一方向パフォーマンス測定値を判定するステップであって、前記第１方向及び前記第２方向の一方向パフォーマンス測定値は、レイテンシ測定値、帯域幅測定値、ジッタ測定値及びパケット損失測定値のうちの少なくとも何れかを含み、前記第１方向の前記第１ノード以外のノード及び前記第２方向の前記第２ノード以外のノードから取り出される一方向パフォーマンス測定値の各々は、前記複数の中継ノード各々の異なる中継ノード各々を経由する双方向通信セッションの品質を示す、ステップと、
前記第１の複数の一方向パフォーマンス測定値に基づいて、前記第１方向にデータをルーティングするために使用する１つ以上の中継ノードの第１組を、前記第１ノードから前記第２ノードへの通信に関する平均的な又は予想される１つ以上のラウンド・トリップ時間に基づいて選択し、前記第２の複数の一方向パフォーマンス測定値に基づいて、前記第２方向にデータをルーティングするために使用する１つ以上の中継ノードの第２組を、前記第２ノードから前記第１ノードへの通信に関する平均的な又は予想される１つ以上のラウンド・トリップ時間に基づいて選択するステップであって、前記第１組及び前記第２組の選択は、前記第１ノード及び前記第２ノードにとって前記双方向通信セッションの品質が最適化されるように実行される、ステップと、
前記第１方向でデータをルーティングするのに利用可能な１つ以上の中継ノードの第１組を経由して前記ネットワークにおいて前記第１方向に前記双方向通信セッションでデータをルーティングするステップと、
を有する方法。
【請求項２】
前記双方向通信セッションで前記第１方向にデータをルーティングするために使用する選択される１つ以上の中継ノードの前記第１組は、前記双方向通信セッションで前記第２方向にデータをルーティングするために使用する選択される１つ以上の中継ノードの前記第２組とは異なる、請求項１に記載の方法。
【請求項３】
前記データはリアルタイムメディアデータであり、前記双方向通信セッションはリアルタイムメディアセッションである、請求項１に記載の方法。
【請求項４】
前記リアルタイムメディアセッションは、前記ネットワークにおけるユーザ間の呼である、請求項３に記載の方法。
【請求項５】
前記ネットワークはインターネット上で動作するオーバーレイネットワークである、請求項１に記載の方法。
【請求項６】
前記第２方向で通信され且つ前記第２方向でデータをルーティングするのに使用する１つ以上の中継ノードの前記第２組によりルーティングされるデータを前記第１ノードで取得するステップを含む、請求項１〜５のうちの何れか１項に記載の方法。
【請求項７】
前記第１方向での前記双方向通信セッションに関してルーティングされるデータは通信データパケットを含み、前記第２方向での前記双方向通信セッションに関してルーティングされるデータは制御データパケットを含む、請求項１に記載の方法。
【請求項８】
前記第１ノードが第１ユーザに関連する第１クライアントであり、前記第２ノードが第２ユーザに関連する第２クライアントであり、前記双方向通信セッションは前記第１クライアント及び前記第２クライアントの間の双方向通信セッションであり、それにより、前記第１ユーザ及び第２ユーザの互いの通信を許容する、請求項１に記載の方法。
【請求項９】
前記第１ノードはクライアント装置であり、当該方法は前記クライアント装置で実現される、請求項１に記載の方法。
【請求項１０】
前記１つ以上の中継ノードの前記第２組を経由して前記ネットワークを介して前記第２方向で前記双方向通信セッションのデータをルーティングするステップを更に有する請求項１に記載の方法。
【請求項１１】
前記１つ以上の中継ノードの前記第２組を経由して前記第２ノードから前記第１ノードへの前記ネットワークを介する前記第２方向において前記双方向通信セッションで通信されるデータを前記第１ノードで受信するステップを更に有する請求項１に記載の方法。
【請求項１２】
請求項１ないし１１のうち何れか一項に記載の方法をクライアント装置のコンピュータに実行させるコンピュータプログラム。
【請求項１３】
請求項１２に記載のコンピュータプログラムを保存する記憶媒体。
【請求項１４】
請求項１ないし１１のうち何れか一項に記載の方法を実行するように構成されたクライアント装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータをルーティングすること等に関連する。
【背景技術】
【０００２】
通信システムはネットワークを介してユーザ達が互いに通信することを可能にする。例えば、ユーザは、ユーザ端末(例えば、モバイルフォン、移動電話、タブレット、ラップトップ、PC等)を利用して、通信システムにアクセスするための「クライアント」(又は「クライアントアプリケーション」)を実行してもよい。クライアントは通信システムのプロバイダによりユーザ端末に提供され(例えば、ダウンロードされ)、クライアントは通信システムへのアクセスを可能にするユーザ端末で実行されるソフトウェアを有する。
【０００３】
通信システムのノードはオーバーレイネットワーク(overlay  network)を形成してもよい。ノードは、例えば、クライアント、サーバ又は中継ノードであってもよい。オーバーレイネットワークはコンピュータネットワークであり、そのコンピュータネットワークは別のネットワークの上に構築される。オーバーレイネットワークにおけるノードは、仮想的又は論理的なリンクにより接続されていると考えることが可能であり、各々のノードは、基本のネットワークにおける1つ以上の物理リンクを介するパス(又は経路)に対応する。基本のネットワークは例えばインターネットであってもよい。
【０００４】
ユーザが通信システムを利用してオーバーレイネットワークにおける双方向通信セッションに関わる場合、データは、オーバーレイネットワークの中継ノードを介してユーザのクライアント同士の間で送受信されルーティングされる。例えばネットワークのファイヤウォールやネットワークアドレス変換(Network  Address  Translation：NAT)設定などに起因して、通信システムの必ずしも全てのノードが互いに直接的に通信できるとは限らないので、中継ノード又はリレーノード(relay  node)が使用される。ユーザは中継ノードを利用することができ、中継ノードは通信を仲介するのにほとんど制約を有しない。このように、中継ノードは、互いに直接的に通信することはできないノード間で通信を実現するために利用される。中継ノードは、ユーザのクライアント同士の間におけるオーバーレイネットワークの双方向通信セッションでのラウンドトリップ時間(Round  Trip  Time：RTT)を最小化するように選択されてもよい。
【発明の概要】
【０００５】
この「発明の概要」の欄は以下の「詳細な説明」の欄で更に説明される概念のうち選択されたものを簡易な形式で紹介するために設けられる。この「発明の概要」は、請求項に記載される事項のうちの主要な特徴や本質的な特徴を特定するようには意図されておらず、請求項に記載される事項の範囲を限定するために使用されるようにも意図されていない。
【０００６】
ある方法が提供され、その方法により、第1ノード及び第2ノード間のオーバーレイネットワークの双方向通信セッションにおける異なる方向にデータをルーティングするために中継ノードが別々に選択される。オーバーレイネットワークの複数の中継ノードの各々を経由して第1ノードから第2ノードへの第1方向に通信セッションのデータをルーティングする際の複数の一方向パフォーマンス測定値(one-way  performance  measurement)が判定される。判定された一方向パフォーマンス測定値に基づいて、第1ノードから第2ノードへの第1方向にデータをルーティングするために使用する1つ以上の中継ノードが選択される。データは、1つ以上の選択された中継ノードを経由してオーバーレイネットワークにおいて第1ノードから第2ノードへの第1方向に通信セッションでルーティングされる。第1方向にデータをルーティングするのに使用する1つ以上の中継ノードの選択は、通信セッションで第2ノードから第1ノードへの第2方向にデータをルーティングするのに使用する1つ以上の中継ノードの選択とは別個に実行される。
【０００７】
対応する別形態の方法は、通信セッションで第2方向にデータをルーティングする1つ以上の中継ノードを選択するために適用される。すなわち、オーバーレイネットワークの複数の中継ノードの各々を経由して第2ノードから第1ノードへの第2方向に通信セッションのデータをルーティングする際の第2の(別の)複数の一方向パフォーマンス測定値が判定される。判定された第2の複数の一方向パフォーマンス測定値に基づいて、第2ノードから第1ノードへの第2方向にデータをルーティングするために使用する1つ以上の中継ノードが選択される。データは、第2方向に関して選択された1つ以上の中継ノードを経由してオーバーレイネットワークにおいて第2ノードから第1ノードへの第2方向に通信セッションでルーティングされる。第2方向にデータをルーティングするのに使用する1つ以上の中継ノードの選択は、通信セッションで第1方向にデータをルーティングするのに使用する1つ以上の中継ノードの選択とは別個に実行される。
【図面の簡単な説明】
【０００８】
【図１】通信システムの概略を示す図。
【図２】オーバーレイネットワークにおける双方向通信セッションでデータをルーティングするプロセスのフローチャートを示す図。
【発明を実施するための形態】
【０００９】
説明される実施形態の適切な理解を促し、実施形態がどのように実施されるかを説明するために、例示として以下の図面が参照される。
【００１０】
図1は通信システム100のオーバーレイネットワークのノードを示す。オーバーレイネットワークは例えばピアツーピア(peer-to-peer：P2P)ネットワークであってもよい。第1ユーザ102(ユーザA)は通信システム100にアクセスするためにクライアント104を利用する。クライアント104はソフトウェアを有し、そのソフトウェアは、ユーザ端末(例えば、モバイルフォン、携帯電話、タブレット、ラップトップ又はPC等)において実行されると、ユーザ102が通信システム100につながるために必要な機能を実行する。同様に、第2ユーザ106(ユーザB)は通信システム100にアクセスするためにクライアント108を利用する。クライアント108はソフトウェアを有し、そのソフトウェアは、ユーザ端末(例えば、モバイルフォン、携帯電話、タブレット、ラップトップ又はPC等)において実行されると、ユーザ106が通信システム100につながるために必要な機能を実行する。クライアント104及び108は、通信システム100のプロバイダにより各々のユーザ102,106のユーザ端末に提供される(例えば、ダウンロードされる)。
【００１１】
クライアント104は第1のインターネットサービスプロバイダ(Internet  Service  Provider：ISP)112を介して(又は経由して)通信するように形成される。クライアント104が実行されるユーザ端末は、クライアント104がISP112を介して通信できるように、少なくとも、クライアント104を実行するためのプロセッサと、データを保存するためのメモリと、インターネットに接続するためのネットワークインタフェースとを含む。図1に示される通信システム100では、クライアント104により送受信される通信システム100に関連する全てのデータは、ISP112を経由してルーティングされる。同様に、クライアント108は第2のインターネットサービスプロバイダ(ISP)116を介して通信するように形成される。クライアント108が実行されるユーザ端末は、クライアント108がISP116を介して通信できるように、少なくとも、クライアント108を実行するためのプロセッサと、データを保存するためのメモリと、インターネットに接続するためのネットワークインタフェースとを含む。図1に示される通信システム100では、クライアント108により送受信される通信システム100に関連する全てのデータは、ISP116を経由してルーティングされる。通信システム100は、サーバに基づく通信システムであってもなくてもよい。
【００１２】
通信システム100のオーバーレイネットワークは第1中継ノード118(リレー1)及び第2中継ノード120(リレー2)を含む。データは、オーバーレイネットワークにおいて、ISP112のクライアント104とISP116のクライアント108との間で中継ノード118又は中継ノード120の何れかを経由してルーティングされることが可能である。中継ノード118,120は任意のネットワークに存在してもよく(例えば、別のISPに存在してもよく)、任意のネットワーク同士の間に複数のネットワークが存在してもよい。インターネットは、互いに通信することが可能なネットワークのうちの1つのネットワークであることに留意を要する。通信システム100のオーバーレイネットワークは、図1に示されるものより多い数のノードを含んでもよい。特に、通信システム100のオーバーレイネットワークは、クライアント104とクライアント108との間でデータがルーティングされる際に経由する2つより多い中継ノードを含んでもよいが、簡明化のためここでは2つの中継ノード118,120のみが図1に図示され説明される。中継ノード118,120は、中継サーバであってもよいし、或いは、P2P中継ノード(例えば、ネットワーク内の他のユーザ端末)であってもよい。
【００１３】
動作時において、2つのユーザ102,106は通信システム100において互いに双方向通信セッションに参加している。データは、(i)ISP112，(ii)中継ノード118,120のうちの何れか，及び(iii)ISP116を介してクライアント104からクライアント108へ送信される。同様に、データは、(i)ISP116，(ii)中継ノード118,120のうちの何れか，及び(iii)ISP112を介してクライアント108からクライアント104へ送信される。
【００１４】
通信セッションはリアルタイムメディアセッションであってもよく、その場合、通信セッションで送信されるデータはリアルタイムメディアデータである。例えば、通信セッションは、ユーザ102及び106間の呼(call)であってもよい。
【００１５】
図1は、クライアント104からクライアント108へ進むデータパケットが、中継ノード118を経由する又は中継ノード120を経由する2つの可能な経路のうち何れか1つに従う様子を示す。ISP1-112からのデータパケットをハンドオフするために使用されるピアリング(peering)の選択は、通常、ISP1-112で利用可能なピアリング契約(peering  agreement)に依存し、実際のルーティングは、しばしばターゲットアドレスに基づき、多くの場合、何らかの所定のルーティングポリシに従う(例えば、ホットポテトルーティング(hot  potato  routing)、コールドポテトルーティング(cold  potato  routing)等)。オーバーレイネットワークで利用可能な中継候補について多くの選択肢が存在するが、簡明化のため、図1では2つの中継ノード118,120しか示されていない。基礎となるネットワーク(例えば、インターネット)の特定のネットワークにおける中継ノード(ターゲットアドレス)を選択することにより、従って、パケットがISP1-112から出る出口あるいはその経路に沿う基礎のネットワークの何らかの他のネットワークを制御することにより、使用されるピアリングに影響を及ぼすことが可能である。
【００１６】
クライアント104からクライアント108へのデータのルーティングに関する判断は、クライアント104により実行されてもよい。クライアント104におけるアプリケーションレベルの論理手段(logic)が、オーバーレイネットワークにおけるルーティングに関する判断を行ってもよい。ルート又は経路は、中継ノードを選択することにより、クライアントアプリケーション104により判断される(中継ノードは、そのアドレスにより、パケットがシステム100の中で辿る経路に影響する)。中継ノードは特定のIPアドレスとともに選択され、ISP112は、残りの(又は別の)アドレスの場合とは異なるピアリングポイントを介してネットワークの外にデータをルーティングしてもよい。これは、ISP112が特定のネットワークとの直接的なピアリング契約を有しているためであり、従って、全てのトラフィックが向かうデフォルトのゲートウェイ(輻輳する傾向が強い)に送信するのとは異なる好ましい経路を有するためである。同様に、クライアント108からクライアント104へのデータのルーティングに関する判断は、クライアント104により決定されるルーティングに関する上記の方法に対応する方法により、クライアント108により実行されてもよい。
【００１７】
図1に示されるネットワークのうちの任意のノード間に関し、基礎となるネットワーク(例えば、インターネット)においてたどるルートは非対称であるかもしれないことに留意を要する。すなわち、基礎となるネットワークを通じて2つのノード間で或る一方方向においてデータパケットがたどる経路は、基礎となるネットワークを通じて同じ2つのノード間で別の方向においてデータパケットがたどる経路と同じでなくてもよい。例えば、ISP112からISP116へ中継ノード118を経由してルーティングされるデータパケットは、基礎となるネットワーク(例えば、インターネット)において、ISP116からISP112へ同じ中継ノード118を経由してルーティングされるパケットと同じ部分のネットワークを必ずしも通らなくてよい。例えば、中継ノード118を経由してISP112からISP116へルーティングされるデータパケットはインターネットのネットワーク群Z,U,Xを経由して進行するが、中継ノード118を経由してISP116からISP112へルーティングされるデータパケットは、そうではなく、インターネットのネットワーク群Z,Y,Xを経由して進行するかもしれない。このこと及びインターネットトラフィックにおける一般的な非対称性は(ネットワークにおける非対称な輻輳状態を引き起こす可能性があり)、クライアント104からクライアント108に進むデータパケットに対するレイテンシと反対方向に進むデータパケットに対するレイテンシとを比較した場合に相違する結果をもたらすかもしれない。この場合における「レイテンシ(latency)」は「待ち時間」、「遅延」等と言及されてもよい。
【００１８】
中継ノードは、オーバーレイネットワークのノードの間で伝送されるデータパケットについての平均的な又は予想されるラウンドトリップ時間(Round  Trip  Time：RTT)に基づいて選択されてもよい。例えば、図1に示されるように、クライアント104からクライアント108へ中継ノード118を経由して進行するデータの場合にかかる平均時間は98msであり、クライアント108からクライアント104へ中継ノード118を経由して進行するデータの場合にかかる平均時間は54msであり、従って図1に示される例において、上側の経路をたどると、152(=98+54)msの平均RTTという結果をもたらす。更に、図1に示される例において、クライアント104からクライアント108へ中継ノード120を経由して進行するデータの場合にかかる平均時間は81msであり、クライアント108からクライアント104へ中継ノード120を経由して進行するデータの場合にかかる平均時間は64msであり、従って図1に示される例において、下側の経路をたどると、145(=81+64)msの平均RTTという結果をもたらす。これは、下側の方が短いRTTを有するので下側の経路の方が短いレイテンシを有し、従って、上側の経路よりも良い体感をユーザにもたらすことを示唆する。この場合において、下側の経路が使用されるように中継ノード120を選択する場合、クライアント108はデータパケットが81msのレイテンシとともにクライアント104から到着するように見る一方、クライアント104はデータパケットが64msのレイテンシとともにクライアント108から到着するように見る。図1に示される具体的な平均時間は単なる具体例に過ぎない。上記の例に示される時間は平均時間であるので、各々のパケットに関する実際の時間は例えばジッタ(jitter)等に起因して平均時間とは異なるかもしれない。
【００１９】
データパケットのRTTに基づく上記の方法に対する改善として、本願で説明される方法によれば、通信セッションで第1方向にデータをルーティングする際に使用するために選択される中継ノードは、通信セッションで(第1方向とは反対の)第2方向にデータをルーティングする際に使用するために選択される中継ノードと相違していてもよい。すなわち、データをルーティングするために中継ノードが選択される場合に、データが伝送される方向が考慮される。
【００２０】
メディアの伝送方向が考慮され、異なる方向へのデータのルーティングが別々に考慮される場合、図1に示す例において、ISP116からISP112へ進行するデータは、下側の経路ではなく(すなわち、中継ノード120を経由するのではなく)、上側の経路(すなわち、中継ノード118)を経由させることにより、より短いレイテンシを経験することになる。双方の方向でメディアを中継するために単独のリレーを使用する代わりに、複数の中継ノードが各々の方向について別々に考慮され、中継ノードの組み合わせは、メディアの伝送方向に依存して双方のエンドポイントにとって最良の品質(例えば、最短のレイテンシ)をもたらすように選択される。この場合、ISP116(及びクライアント108)にとっての体感は上記の例の場合と同じであるが(すなわち、下側の経路で中継ノード120を経由してルーティングする場合の81msのままであるが)、ISP(及びクライアント104)は上側の経路で中継ノード118を経由してルーティングされ受信されるメディアストリームに関して(先の例の64msではなく)54msの平均レイテンシという短いレイテンシを体感する。
【００２１】
簡明化のため、上記の具体例は、エンドユーザまで届くパフォーマンス/品質についての予測/測定値としてレイテンシのみを利用しているが、パフォーマンスの測定値は適切な如何なるメトリック(基準)とすることが可能であり、そのようなメトリックは例えば帯域幅測定値、ジッタ測定値、パケット損失測定値、又は、複数のメトリックの組み合わせ等であってもよい。例えば、一群の測定値の平均値が使用されてもよい。パフォーマンス測定値は、現在値のリアルタイムの測定値(選択された現在の測定値)であってもよいし、或いは、ルーティングするノードで保存されている過去のパフォーマンス測定値であってもよい。例えば、帯域幅、ジッタ、パケット損失及び一方向レイテンシ(片道のレイテンシ)を組み合わせる非線形ネットワーク品質モデルが、パフォーマンス測定値を提供するために使用されてもよい。このように、パフォーマンス測定値は、特定の経路で一方のみの方向に流れるデータについての体感品質の目安を与える。1対1の呼について複数のリレーを利用し(すなわち、異なる方向について異なる中継ノードを利用し)、メディアの方向に依存して中継ノードの選択を最適化することにより、エンドユーザの体感を改善することが可能である。
【００２２】
図2は通信システム100のオーバーレイネットワークにおいて双方向通信セッションでデータをルーティングする仕方を決定するプロセスのフローチャートを示す。この方法は、通信システム100のユーザ102及び106の間の呼において中継ノード118又は中継ノード120の何れかを経由してクライアント108にデータをルーティングするために、クライアント104で実行されてもよい。
【００２３】
クライアント104は、例えばユーザ102及び106の間の呼の一部として、クライアント108にデータを送信することを意図している。ステップS202において、クライアント104はクライアント104からクライアント108へ中継ノード118を経由してデータをルーティングする際の一方向パフォーマンス測定値を判定し、及び、クライアント104はクライアント104からクライアント108へ中継ノード120を経由してデータをルーティングする際の一方向パフォーマンス測定値を判定する。上述したように、パフォーマンス測定値は、例えば、レイテンシ、帯域幅、ジッタ、パケット欠落等に関する測定値或いはそのような測定値の組み合わせであってもよい。一方向パフォーマンス測定値は各々の中継ノードについて決定される。
【００２４】
別の実施形態において、クライアント104以外のアプリケーションが、クライアント104からクライアント108へデータをルーティングする際の一方向パフォーマンス測定値を判定してもよい。例えば、一方向パフォーマンス測定値は、ステップS202に先行して、ネットワーク上に存在する別のアプリケーションにより判定されてもよく、その場合、ステップS202は、一方向パフォーマンス測定値を判定したノードから、既に判定された一方向パフォーマンス測定値を受信することを含む。クライアント104が一方向パフォーマンス測定値の実際の測定を実行する実施形態では、測定値は、よりいっそう最新状態でありかつ有用である。しかしながら、基本的には、ネットワーク間の接続は頻繁には変わらないので、クライアント104にとって、(例えば、ネットワーク間の一方向レイテンシにより表現される)平均的な接続推定値を抽出することで十分であり、そのデータは、ルーティングの判定が実際になされる前に他の手段により収集されてもよい。一例として、クライアント104は、合計のレイテンシを示すテーブルから一方向パフォーマンス測定値を取り出し、ネットワークXを経由して通信する場合のレイテンシがネットワークYを経由して通信する場合より短いことを示す証拠が存在することに起因して、ネットワークYとは異なるネットワークXを介して2つのエンドポイントは中継されるべきことを決定してもよい。
【００２５】
例えば、パフォーマンス測定値がレイテンシの測定値である場合に、クライアント104からクライアント108へデータをルーティングする前に、タイムスタンプがデータに含められてもよい。タイムスタンプはクライアント104がデータに含めてもよい。クライアント108はデータを受信した時間を測定する。測定された時間とデータに含められたタイムスタンプとに基づいて、クライアント104からクライアント108へデータをルーティングするのに費やされる時間が判定される。これは、クライアント108により判定されてクライアント104に返されてもよいし、或いは、クライアント108がデータを受信した時間の測定値がクライアント104に返され、クライアント104が、クライアント104からクライアント108へデータを送信するのにかかる時間を判定する処理を実行してもよい。クライアント104からクライアント108へデータを送信するのに費やされる時間は、各々の経路について判定される(すなわち、図1に示す例における中継ノード118を経由する場合及び中継ノード120を経由する場合について判定される)。この方法を効率的に使用するために、データ通信に関わるエンドポイントは互いに時間的に同期しているべきである(すなわち、それらは同期したクロックをそれぞれ有するべきである)。別の例として、各々のルートは1つより多い中継ノードを含んでいてもよい。一方向レイテンシ測定値は、上記の例とは異なる方法で判定されてもよい。
【００２６】
ステップS204において、クライアント104は、判定されたパフォーマンス測定値に基づいて何れかの中継ノード(118又は120)を選択する。この選択は、最良のユーザ体感をもたらすように実行され、例えば、選択はデータ伝送のレイテンシを最小化するように実行されてもよい。
【００２７】
ステップS206において、データは、ISP112及びISP116並びに指定され選択された中継ノード(すなわち、中継ノード118又は中継ノード120)を介して、クライアント104からクライアント108へルーティングされる。
【００２８】
中継ノードは、ステップS202で判定されるパフォーマンス測定値に基づいて、最良のパフォーマンスをもたらすようにステップS204で選択される。例えば、パフォーマンス測定値がレイテンシ測定値である場合に、選択される中継ノードは、最短のレイテンシに対応してもよい。例えば、図1に示される例において、ステップS204は、そのルートで最短のレイテンシであることに基づいて(中継ノード118を経由してデータをルーティングする場合の98msと比較される81msに基づいて)中継ノード120を選択してクライアント104からクライアント108へデータをルーティングしてもよい。
【００２９】
図2に関して説明された方法に対応する方法が、通信セッションでクライアント108からクライアント104へデータをルーティングするためにクライアント108で実行されてもよい。
【００３０】
クライアント108は、例えばユーザ102及び106の間の呼の一部として、クライアント104にデータを送信することを意図している。
【００３１】
ステップS202に対応するステップにおいて、クライアント108はクライアント108からクライアント104へ中継ノード118を経由してデータをルーティングする際の一方向パフォーマンス測定値を判定し、ルーティングノード114は、中継ノード120を経由してクライアント108からクライアント104へデータをルーティングする際の一方向パフォーマンス測定値を判定する。上述したように、パフォーマンス測定値は、例えば、レイテンシ、帯域幅、ジッタ、パケット欠落等に関する測定値或いはそのような測定値の組み合わせであってもよい。一方向パフォーマンス測定値は各々の中継ノードについて決定される。
【００３２】
例えば、パフォーマンス測定値がレイテンシの測定値である場合に、クライアント108からクライアント104へデータをルーティングする前に、タイムスタンプがデータに含められてもよい。タイムスタンプはクライアント108がデータに含めてもよい。クライアント104はデータを受信した時間を測定する。測定された時間とデータに含められたタイムスタンプとに基づいて、クライアント108からクライアント104へデータを送信するのに費やされる時間が判定される。これは、クライアント104により判定されてクライアント108に返されてもよいし、或いは、クライアント104がデータを受信した時間の測定値がクライアント108に返され、クライアント108が、クライアント108からクライアント104へデータをルーティングするのにかかる時間を判定する処理を実行してもよい。クライアント108からクライアント104へデータを送信するのに費やされる時間は、各々の経路について判定される(すなわち、図1に示す例における中継ノード118を経由する場合及び中継ノード120を経由する場合について判定される)。この方法を効率的に使用するために、データ通信に関わるエンドポイントは互いに時間的に同期しているべきである(すなわち、それらは同期したクロックをそれぞれ有するべきである)。一方向レイテンシ測定値は、上記の例とは異なる方法で判定されてもよい。
【００３３】
ステップS204に対応するステップにおいて、クライアント108は、クライアント108からクライアント104へデータをルーティングするために、判定されたパフォーマンス測定値に基づいて、何れかの中継ノード(118又は120)を選択する。この選択は、最良のユーザ体感をもたらすように実行され、例えば、選択はデータ伝送のレイテンシを最小化するように実行されてもよい。
【００３４】
ステップS206に対応するステップにおいて、データは、ISP116及びISP112並びに指定され選択された中継ノード(すなわち、中継ノード118又は中継ノード120)を介して、クライアント108からクライアント104へルーティングされる。
【００３５】
上記の具体例では、ステップS204において1つの中継ノードが選択される。別の例では、1つより多い数の(例えば、10個の)中継ノードが、例えば、約1000個の可能性のある中継ノードのプール(pool)の中から選択される。そして、データパケットは、選択された中継ノード(群)を並列的に経由してルーティングされてもよい。
【００３６】
判定されたパフォーマンス測定値に基づいて、最良のパフォーマンスをもたらすように、中継ノードが選択される。例えば、パフォーマンス測定値がレイテンシ測定値である場合、選択される中継ノードは、最短のレイテンシに対応してもよい。例えば、図1に示される例において、クライアント108からクライアント104へデータをルーティングするために、そのルートで最短のレイテンシであることに基づいて(中継ノード120を経由してデータをルーティングする場合の64msと比較される54msに基づいて)、中継ノード118が選択されてもよい。
【００３７】
データをルーティングする中継ノードを選択するステップにおいて、1つより多いパフォーマンス測定値が考慮されてもよい。例えば、レイテンシ及びパケット損失が、各々のルートについて測定され、データをルーティングするルートを選択するために使用されてもよい。
【００３８】
従って、クライアント104からクライアント108へデータをルーティングするための中継ノードを選択する方法は、クライアント108からクライアント104へデータをルーティングするための中継ノードを選択する方法とは別々に実行されることが、理解できる。すなわち、ある方向にデータをルーティングするために中継ノードを選択することは、通信セッションで別の方向に送信されるデータのルーティングとは独立に実行される。言い換えれば、双方向通信セッションにおけるデータのルート(経路)は、各々の方向について独立に最適化される。リアルタイムメディアストリームでは、データパケットが或る方向に送信され、専ら制御パケットは逆方向に送信される。制御パケットは、例えば、多くのデータパケットがどのように適切に受信されたか等を示してもよい。双方向リアルタイムメディアセッションでは、双方向にメディアを送受信するために、同じトランスポートチャネル(セッション)が設定され使用されるが、双方のエンドポイントがメディアを送信している場合のエンドポイント同士の間の単独のセッションに関し、リバース方向(逆方向)に関する制御パケットは、反対方向におけるデータのセッションを共有してもよい(多重化されるプロトコルの場合)。異なるタイプのパケット(例えば、データパケット及び制御パケット)については異なるルートが相応しいかもしれないので、例えば、特定の方向におけるメディア配信を最適化するように経路(パス)が選択されるべきである。
【００３９】
本願で説明される方法では、トラフィックの方向に依存して、双方向通信セッションにおいて、複数の中継ノードが使用される。上述したように、通信システム100のオーバーレイネットワークはP2Pネットワークであってもよい。
【００４０】
上述したように、2つのノード(118及び120)のみが、図1に示されて上記の具体例で説明されている。しかしながら、任意の数の中継ノードがオーバーレイネットワークで利用可能であってよい。更に、図1に示される各々のルートは単に1つの中継ノードしか含んでいない。別の例では、1つのルートは1つ以上の中継ノードを含んでよい。それは例えば次のような場合である：サーバーベースの通信システムでは、完全なP2P通信システムの場合よりも、存在する利用可能な中継ノードは少ない(例えば、サーバーベースの場合、10ないし50の選択可能なデータセンタが存在し、或いは、クラウドの中に何千ものエッジ演算処理ノードが存在するかもしれない。P2Pの場合、例えば、1000万より多い中継候補によるグローバル選択プールを有するかもしれない。)。
【００４１】
リアルタイムメディアを担うストリームセッションに関するトポロジは、メディアの方向に関して最適化され、その理由は、メディアが流れる方向に関するネットワーク属性は、送達確認パケット(アクノリッジメントパケット)に使用されるリターンパスのネットワーク属性よりも、ユーザが受ける体感に対して強い相関を有するからである。この非対称性による恩恵を享受するために、メディアに関する同じ中継ノードを双方向に常に使用するのではなく、オーバーレイネットワークは、メディアの方向に基づいて、単独の呼に対して複数の異なる中継ノード(例えば、中継サーバ)を活用する。中継ノードの選択は、通信セッションでのデータ伝送の各々の方向に対する個別的な選択プロセスにおいて、一方向レイテンシ測定値に基づいて実行されることが可能である。そのような最適化は、リアルタイムのメディアセッションに関わるユーザにとって改善された体感をもたらす。
【００４２】
クライアント104と通信システム100との間の通信はISP112を介してなされ、同様に、クライアント108と通信システム100との間の通信はISP116を介してなされる。クライアント104及び108が、それぞれサーバを経由してデータをルーティングすることなく、通信システム100と通信することができるように、通信システム100はサーバーベースの通信システム100でなくてもよい。ルーティングについての判断を行うための論理手段(又は論理モジュール)は、クライアント104及び108で実現される。ルーティングについての判断を行うために、クライアント104は、(メディアの伝送方向を考慮に入れた上で)何れのネットワークが最適な品質の中継候補を提案するかを知るために十分な、様々なネットワーク間の一方向遅延測定値についての統計情報を収集する。
【００４３】
一般に、(例えば、図2に示される機能的なステップのような)本願で説明される如何なる機能も、ソフトウェア、ファームウェア、ハードウェア(例えば、一定の論理回路)又はそれらの手段の組み合わせを用いるモジュールで実現されることが可能である。図2に個々に示されるステップは、個々のモジュール又はステップとして実現されてもされなくてもよい。本願で使用される「モジュール」、「機能」、「コンポーネント」及び「論理手段」等のような用語は、一般に、ソフトウェア、ファームウェア、ハードウェア又はそれらの組み合わせを表現する。ソフトウェア手段の場合、モジュール、機能又は論理手段は、プロセッサ(例えば、CPU又はCPUs)で実行される場合に特定のタスクを実行するプログラムコードを表現する。プログラムコードは、1つ以上のコンピュータ読み取り可能なメモリ装置に保存されることが可能である。本願で説明される技術的特徴は、プラットフォームには依存せず、これは、そのような技術は様々なプロセッサを有する様々なコンピュータプラットフォームで実現されてよいことを意味する。
【００４４】
例えば、ユーザ装置は、ユーザ装置のハードウェアに処理を実行させる手段(例えば、ソフトウェア)を含んでもよく、例えば、プロセッサ、機能ブロック等を含んでもよい。例えば、ユーザ装置は命令を保持するように形成されてもよいコンピュータ読み取り可能な記憶媒体を含んでもよく、命令は、ユーザ装置(特に、ユーザ装置のオペレーティングシステム及び関連するハードウェア)に処理を実行させる。従って、命令は、処理を実行するように、オペレーティングシステム及び関連するハードウェアを構築する機能を果たし、及びこのようにして、処理を実行するためにオペレーティングシステム及び関連するハードウェアを変換する結果をもたらす。命令は、コンピュータ読み取り可能な媒体により、多種多様なコンフィギュレーション(又は設定)を通じてユーザ装置に提供されてもよい。
【００４５】
コンピュータ読み取り可能な媒体のそのような形態の1つは、信号伝送媒体であり、これは例えばネットワークを介して命令をコンピュータ装置に送信するように(例えば、搬送波として)機能する。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な記憶媒体として形成されてもよく、これは、信号伝送媒体ではない。コンピュータ読み取り可能な記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、光ディスク、フラッシュメモリ、ハードディスクメモリ等を含んでもよく、或いは、命令及び/又はその他のデータを保存するために磁気的、光学的及び/又はその他の技術を利用する他のメモリ装置を含んでもよい。
【００４６】
説明対象の事項は、構造的な特徴及び/又は方法的な処理に特化した言葉で説明されてきたが、特許請求の範囲で規定される発明特定事項は、上記の特定の特徴や処理に必ずしも限定されないことが、理解されるべきである。むしろ上記の特定の特徴や処理は本発明を実現する際の実施形態として開示されている。
【図１】
0006472756.tif 000002
【図２】
0006472756.tif 000003