(57)【要約】  トランスポート・プロトコルの異なる実装を切替える装置が提供される。本装置は、複数の異なるトランスポート・プロトコル実装をトランスポート層より上の層と接続するための上位トランスポート・インタフェースと、前記複数の異なるトランスポート・プロトコル実装を前記トランスポート層より下の層と接続するための下位トランスポート・インタフェースとを備えており、前記上位トランスポート・インタフェースと前記下位トランスポート・インタフェースとは、切替情報に基づいて前記異なるトランスポート・プロトコル実装の間の接続を切替えるように構成されるものである。また本装置は、ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定する制御モジュールを更に備えるものである。
2008518531.tif 000002
【特許請求の範囲】
【請求項１】
あるトランスポート・プロトコルの異なる実装間の切替えを行う装置であって、
複数の異なるトランスポート・プロトコル実装をトランスポート層より上の層と接続するための上位トランスポート・インタフェースと、
前記複数の異なるトランスポート・プロトコル実装を前記トランスポート層より下の層と接続するための下位トランスポート・インタフェースとを備えており、
前記上位トランスポート・インタフェースと前記下位トランスポート・インタフェースとは、切替情報に基づいて前記異なるトランスポート・プロトコル実装の間の接続を切替えるように構成されるものであり、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定する制御モジュールを更に備えるものである装置。
【請求項２】
前記上位トランスポート・インタフェース及び前記下位トランスポート・インタフェースのそれぞれは、
前記制御モジュールによって提供された前記切替情報に基づいて、前記複数の異なるＴＣＰ実装の１つをある特定の通信セッションへ割り当てるモジュールと、
到来パケットのヘッダと発信パケットのヘッダとをチェックすることによりセッションを識別し、それに基づいて、前記到来パケット及び前記発信パケットが前記複数の異なるＴＣＰ実装のどれに送られるべきかを決定するモジュールと
を備えるものである、請求項１に記載の装置。
【請求項３】
前記制御モジュールは、前記トランスポート層より下位に実装されたネットワークの構造のタイプを代表する１つ以上の特性を決定して、トランスポート・プロトコルがアンダーレイ・ネットワークの構造に適応するように、選択されるべきトランスポート・プロトコルを決定するモジュールを含むものである、請求項１または２に記載の装置。
【請求項４】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、既存のオペレーティング・システム機能を利用してアンダーレイ・ネットワークの特性を決定するモジュールを含むものである、請求項１乃至３のいずれか１項に記載の装置。
【請求項５】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、プロービング信号を送信し、該プロービング信号に対する応答を評価し、該評価に基づいてアンダーレイ・ネットワークの特性を決定するモジュールを含むものである、請求項１乃至４のいずれか１項に記載の装置。
【請求項６】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、前記通信セッションにおける他方のエンドポイントとの通信を確立し、前記通信セッションの前記他方のエンドポイントにおける対応するモジュールと前記通信セッションで使用される適切なトランスポート・プロトコル実装セッションをネゴシエーションするためのモジュールを含むものである、請求項１乃至５のいずれか１項に記載の装置。
【請求項７】
前記制御モジュールは、前記通信セッションを要求しているアプリケーションの特性に基づいて使用すべきＴＣＰ実装を決定するモジュールを含むものである、請求項１乃至６のいずれか１項に記載の装置。
【請求項８】
前記制御モジュールは、前記複数の異なるトランスポート・プロトコル実装の１つを使用する通信が開始する前に前記切替情報を決定するように構成されるものである、請求項１乃至７のいずれか１項に記載の装置。
【請求項９】
前記制御モジュールは、現在実行中の通信セッションにおいて、実行時間中に前記複数の異なるトランスポート・プロトコル実装間の切替えを行うように構成されるものである、請求項１乃至８のいずれか１項に記載の装置。
【請求項１０】
前記制御モジュールは、
実行時間中に新たなトランスポート・プロトコル実装へ切替えるために前記新たなトランスポート・プロトコル実装の使用の開始をトリガーするモジュールと、
現在実行中のトランスポート・プロトコル・セッションのＴＣＰヘッダのコンテンツを変換して、前記新しく開始されたＴＣＰ実装へ送られた前記ヘッダ及び前記新しく開始されたＴＣＰから送られてきた前記ヘッダが、現在実行中の通信セッションの前記他方の通信エンドポイントにおけるトランスポート・プロトコル実装によって送受信された前記ＴＣＰヘッダと整合するようにするモジュールと
を備えるものである、請求項９に記載の装置。
【請求項１１】
前記制御モジュールは、
ある異なるトランスポート・プロトコル実装に切替えられることになっているその切替え前のトランスポート・プロトコル・セッションからヘッダデータを抽出するモジュールと、
前記抽出されたトランスポート・プロトコル・セッションのヘッダデータを前記新しく開かれたトランスポート・プロトコル・セッションに挿入して、前記新しく開かれたトランスポート・プロトコル・セッションが、ある異なるトランスポート・プロトコル実装を介して、前記切替え前のトランスポート・プロトコル・セッションを再開することができるようにするモジュールと
を備えるものである、請求項９または１０に記載の装置。
【請求項１２】
前記制御モジュールは、現在実行中のトランスポート・プロトコル・セッションが、第１の通信エンドポイントにおいてある異なるトランスポート・プロトコル実装へ切替えられる場合において、切替が実行されるべきである対応する第２の通信エンドポイントにおける対応するモジュールとネゴシエーションして、それらの通信エンドポイントにおける両方の制御モジュールが、ある異なるトランスポート・プロトコル実装を対象とする新たなトランスポート・プロトコル・セッションを開き、その際に実行中のトラフィックが、前記新たに開かれたトランスポート・プロトコル・セッションと両方の通信エンドポイントにおける前記異なるトランスポート・プロトコル実装とを通じて再開されるようにするモジュールを備えるものである、請求項９乃至１１のいずれか１項に記載の装置。
【請求項１３】
前記制御モジュールは、ある異なるトランスポート・プロトコル実装への切替をトリガーするためのトリガー信号を受信するように構成されるものである、請求項９乃至１２のいずれか１項に記載の装置。
【請求項１４】
前記トリガー信号は、
移動体通信のセッションの間のハンドオーバと、
現在実行中の通信セッションの間のサービス品質の変更と、
現在実行中の通信セッションで使用されるハードウェアまたはソフトウェアモジュールの変更と
のいずれか１つのメカニズムに応答して生成されるものである、請求項１３に記載の装置。
【請求項１５】
前記制御モジュールは、前記複数の異なるＴＣＰ実装のどれが使用されるべきかの決定がそれに基づいて行われる１つ以上のパラメータを継続的にモニタするためのモジュールを更に備えており、
前記モニタするためのモジュールは、セットの所定ルールに従って前記モニタされた１つ以上のパラメータの変化が現在使用されているＴＣＰバージョンから異なるＴＣＰバージョンへの変更が実行されるべきことを示唆している場合には、現在使用されているＴＣＰバージョンからある異なるＴＣＰバージョンへの変更をトリガーするものである、請求項１乃至１５のいずれか１項に記載の装置。
【請求項１６】
トランスポート・プロトコルの異なる実装間の切替えを行う方法であって、
前記トランスポート・プロトコルの複数の異なる実装をトランスポート層より上の層と接続するために前記複数の異なるトランスポート・プロトコル実装を上位トランスポート・インタフェースと接続するステップと、
前記トランスポート・プロトコルの前記複数の異なる実装をトランスポート層より下の層と接続するために前記複数の異なるトランスポート・プロトコル実装を下位トランスポート・インタフェースと接続するステップと、
前記上位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続とを切替情報に基づいてそれぞれ切替えるステップと、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定するステップと
を含む方法。
【請求項１７】
前記切替情報に基づいて前記複数の異なるＴＣＰ実装の１つをある特定の通信セッションへ割り当てるステップと、
到来パケットのヘッダと発信パケットのヘッダとをチェックすることによりセッションを識別し、それに基づいて、前記到来パケット及び前記発信パケットが前記複数の異なるＴＣＰ実装のどれに送られるべきかを決定するステップと
を更に含む請求項１６に記載の方法。
【請求項１８】
前記トランスポート層より下位に実装されたネットワークの構造のタイプを代表する１つ以上の特性を決定して、トランスポート・プロトコルがアンダーレイ・ネットワークの構造に適合するように、選択されるべきトランスポート・プロトコルを決定するステップを含む、請求項１６または１７に記載の方法。
【請求項１９】
既存のオペレーティング・システム機能を利用してアンダーレイ・ネットワークの特性を決定するステップを更に含む請求項１６乃至１８のいずれか１項に記載の方法。
【請求項２０】
プロービング信号を送信し、該プロービング信号に対する応答を評価し、該評価に基づいてアンダーレイ・ネットワークの特性を決定するステップを更に含む請求項１６乃至１９のいずれか１項に記載の方法。
【請求項２１】
前記通信セッションの他方のエンドポイントとの通信を確立し、前記通信セッションの前記他方のエンドポイントにおける対応するモジュールと前記通信セッションで使用される適切なトランスポート・プロトコル実装セッションについてネゴシエーションするステップを更に含む請求項１６乃至２０のいずれか１項に記載の方法。
【請求項２２】
前記通信セッションを要求しているアプリケーションの特性に基づいて使用すべきＴＣＰ実装を決定するステップを更に含む請求項１６乃至２１のいずれか１項に記載の方法。
【請求項２３】
前記複数の異なるトランスポート・プロトコル実装の１つを使用する通信が開始する前に前記切替情報を決定するステップを更に含む請求項１６乃至２２のいずれか１項に記載の方法。
【請求項２４】
現在実行中の通信セッションにおいて、実行中に前記複数の異なるトランスポート・プロトコル実装を切替えるステップを更に含む請求項１６乃至２３のいずれか１項に記載の方法。
【請求項２５】
実行中に新たなトランスポート・プロトコル実装へ切替えるために前記新たなトランスポート・プロトコル実装の使用の開始をトリガーするステップと、
現在実行中のトランスポート・プロトコル・セッションのＴＣＰヘッダのコンテンツを変換して、前記新しく開始されたＴＣＰ実装へ送られた前記ヘッダ及び前記新しく開始されたＴＣＰから送られた前記ヘッダが、現在実行中の通信セッションの前記他方の通信エンドポイントにおけるトランスポート・プロトコル実装によって送受信された前記ＴＣＰヘッダと整合するようにするステップと
を更に含む請求項２４に記載の方法。
【請求項２６】
ある異なるトランスポート・プロトコル実装に切替えられることになっているその切替え前のトランスポート・プロトコル・セッションからヘッダデータを抽出するステップと、
前記抽出されたトランスポート・プロトコル・セッションのヘッダデータを前記新しく開かれたトランスポート・プロトコル・セッションに挿入して、前記新しく開かれたトランスポート・プロトコル・セッションが、ある異なるトランスポート・プロトコル実装を介して、前記切替え前のトランスポート・プロトコル・セッションを再開することができるようにするステップと
を更に含む請求項２４または２５に記載の方法。
【請求項２７】
現在実行中のトランスポート・プロトコル・セッションが第１の通信エンドポイントにおいてある異なるトランスポート・プロトコル実装へ切替えられる場合において、切替が実行されるべきである対応する第２の通信エンドポイントにおける対応するモジュールとネゴシエーションして、それらの通信エンドポイントにおける両方の制御モジュールが、ある異なるトランスポート・プロトコル実装を対象とする新たなトランスポート・プロトコル・セッションを開き、その際に実行中のトラフィックが、前記新たに開かれたトランスポート・プロトコル・セッションと両方の通信エンドポイントにおける前記異なるトランスポート・プロトコル実装とを通じて再開されるようにするステップを更に含む請求項２４乃至２６のいずれか１項に記載の方法。
【請求項２８】
ある異なるトランスポート・プロトコル実装への切替をトリガーするためのトリガー信号を受信するステップを更に含む請求項２４乃至２７のいずれか１項に記載の方法。
【請求項２９】
前記トリガー信号は、
移動体通信のセッションの間のハンドオーバと、
現在実行中の通信セッションの間のサービス品質の変更と、
現在実行中の通信セッションで使用されるハードウェアまたはソフトウェアモジュールの変更と、
のいずれか１つのメカニズムに応答して生成される、請求項２８に記載の方法。
【請求項３０】
前記複数の異なるＴＣＰ実装のうちのどれが使用されるべきかの決定がそれに基づいて行われる１つ以上のパラメータを継続的にモニタするステップと、
セットの所定ルールに従って前記モニタされた１つ以上のパラメータの変化が現在使用されているＴＣＰバージョンから異なるＴＣＰバージョンへの変更が実行されるべきことを示唆している場合には、現在使用されているＴＣＰバージョンからある異なるＴＣＰバージョンへの変更をトリガーするステップと
を更に含む請求項１６乃至２９のいずれか１項に記載の方法。
【請求項３１】
コンピュータ上で実行させる際に請求項１６乃至３０のいずれか１項に記載された方法を実行することができるコンピュータプログラムコードを含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異なるプロトコル実装間の切替えを行う、特に、ＴＣＰの異なる実装間の切替えを行う方法および装置に関する。
【背景技術】
【０００２】
近年、コンピュータと、ＰＤＡ（個人用携帯情報端末）、携帯電話機などの他のコンピューティング通信機器とのネットワーキングが大きな課題になっている。特に、インターネットが新生のモバイルネットワーキング技術（例えばＧＳＭ、ＷＬＡＮ、ＧＰＲＳ、ｉ−ｍｏｄｅ、ＵＭＴＳなど）とともに爆発的に成長したことにより新しく生まれる個々の電子機器を単一または複数のネットワークにつなげて、それらが互いに通信することができるようにする要求が高まってきている。
【０００３】
２つの機器を接続するため、多種多様なネットワーキング方法およびプロトコルが使用される。それらは異なるプロトコルを使用し、異なる標準（例えば２、３例を挙げると、携帯電話機のＧＳＭ標準、第３世代携帯電話機のＵＭＴＳ標準、無線ＬＡＮのＩＥＥＥ８０２．１１標準など）に準拠する。２つのコンピュータまたは機器の間の通信におそらく最も広く使用されている標準は、インターネットに使用される一般にＴＣＰ／ＩＰ（transmission control protocol/internet protocol）と呼ばれるプロトコルである。
【０００４】
斯かる標準およびプロトコルを定義し記述するため、通常、マルチレイヤモデルを参照してアーキテクチャが記述される。マルチレイヤモデルの中でも最も広く利用されるモデルは“ＩＳＯ−ＯＳＩ層モデル”である。このモデルはアプリケーション層と呼ばれる最上層から物理層と呼ばれる最下層までの７層から成り、物理層はネットワークの非常に低いレベルにおける電気信号および信号構造を規定する。図１にこのモデルを概略的に示す。
【０００５】
ＴＣＰ／ＩＰの記述と定義には、図２に示すような４層モデルがよく参照される。このＴＣＰ／ＩＰモデルは、最下層としてネットワーク層を含む。このネットワーク層では、トークンリング（token-ring）ＬＡＮ、イーサネット（Ethernet）ＬＡＮ、Ｘ．２５通信などの特定のネットワークの仕様が定義される。他の図示されていない例としては、無線ＬＡＮ、ＧＳＭ通信などが挙げられる。
【０００６】
ネットワーク層の上には、インターネットプロトコルの処理を担当するインターネット層が配置されている。インターネット層の上には、伝送制御プロトコル（ＴＣＰ）を処理するいわゆるトランスポート層が配置されている。図２にはトランスポート層の別のプロトコルも示されている。それはユーザ・データグラム・プロトコル（ＵＤＰ：user datagram protocol）と呼ばれ、伝送制御プロトコルとは少し異なる働き方をする。
【０００７】
トランスポート層の上には図２に示すようにアプリケーションの処理を担当するアプリケーション層が配置されている。
【０００８】
これらの図から、伝送制御プロトコル（ＴＣＰ）を有するトランスポート層は、ネットワークまたはアンダーレイ・ネットワーク（underlying network）の特性に対して特有な層（図１で言えば、ネットワーク層と、データリンク層と、物理層であり、あるいは図２で言えば、インターネット層とネットワーク層）の上にあることが認識できる。このおかげで特に伝装置制御プロトコル（ＴＣＰ）は、ネットワークの基礎となる構造からは比較的独立したものとなる。
【０００９】
しかしながら、それでもなおトランスポート層より下位に置かれ得るネットワークの間に非常に大きな違いが存在することから、特定のアンダーレイ・ネットワークの構造（例えば、ＧＳＭネットワーク、無線ＬＡＮ、およびイーサネットといった固定型有線ＬＡＮ）に適応した異なるフレーバ（flavour）のＴＣＰを結果的にもたらす個別のネットワークに対する最適化が発展してきた。これらの異なるネットワーク構造に対して、個別のアンダーレイ・ネットワークの構造に対して最適化された若干異なるバージョンのＴＣＰが開発されている。
【００１０】
例えば、固定型有線ネットワークの場合、従来のＴＣＰは、セグメントの損失をネットワーク輻輳の示唆として解釈し、それに応じて送信速度を調節している。しかしながら、移動体ネットワークがアンダーレイ・ネットワーク（underlying network）である場合には、セグメントの損失が発生することに関してネットワーク輻輳以外の他の理由が存在する可能性が大いにある。それゆえ損失セグメントに応答して送信速度を調節する必要は実際上なくなることがある。脆弱なリンクと損失率が高いリンクとの上において古典的なＴＣＰバージョンの純粋なパフォーマンスを処理するために、例えば脆弱リンクの場合に適用できる特別なフレーバのＴＣＰが開発されている。
【００１１】
同様に、ＴＣＰは、従来のＴＣＰ実装（TCP implementation）に固有であるウィンドウサイズの適応の問題があるために、多くの場合において、あるリンク上で利用可能な全帯域を有効に活用できていない。従来または古典的なＴＣＰ実装が最適なパフォーマンスを提供していない他のケースは、例えば高遅延（例えば衛星リンク）である。結果、長年にわたり、多種多様な異なるＴＣＰ実装および拡張が、脆弱無線リンク、高速リンク、および高遅延リンクといった異なるコンテクストで提案されている。これらのバージョンは、こうした各ケースでかなりの性能向上を結果的にもたらす。しかしながら、これらの最適化はそれらが与えられている個別のアプリケーションに限定される。
【００１２】
異なったフレーバのＴＣＰの例としては、Ｒｅｎｏ  ＴＣＰと、Ｔａｈｏｅ  ＴＣＰと、Ｌａｓ  Ｖｅｇａｓ  ＴＣＰと、Ｓａｃｋ  ＴＣＰとがある。これらのフレーバのＴＣＰは、例えば、損失パケットの処理の仕方で異なっており、例えば異なるフローレート制御メカニズムまたはリスタートメカニズムで異なる。Ｒｅｎｏ  ＴＣＰは例えば、高速再送を含み、そのため高損失ネットワークの場合には一般にＴａｈｏｅ  ＴＣＰよりも効率的である。というのは、それはＴａｈｏｅ  ＴＣＰが行うように全てのパケット損失に対してスロースタートに入らないからである。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
原理的には、異なるフレーバ（flavours）または実装（implementations）のＴＣＰ／ＩＰは互いに通信し合うことができるが、２つの異なるＴＣＰ／ＩＰ実装の間の通信の場合においては、結果として生じるデータフローは全てのケースで最適化されるわけではない。これらの問題は、近年、基礎インフラ（ストラクチャ）に関して時間的に変化することさえある異種混交のネットワークおよび通信リンクがより一般的になりつつあることから、特に重要になる。例えば、ノート型コンピュータまたはＰＤＡは、ある時間では固定型有線ネットワークに接続されることがあるが、ユーザが移動すると、アンダーレイ・ネットワークの構造は、例えばカフェテリア内のホットスポットといったＷＬＡＮインフラストラクチャあるいはノート型コンピュータに差し込まれる対応するアダプタカードを利用するＧＳＭネットワーク構造に変わることがある。このことは、あるＴＣＰ実装の適切度は時間の経過とともに変わる場合があり、その結果、結果として生じるデータフローは最適化されない場合があることを意味している。
【００１４】
以上の点から、本発明の課題はこれらの欠点を克服するためのソリューションを提供することにある。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明は、トランスポート・プロトコルの異なる実装（implementation）間の切替えを行う装置を提供する。当該装置は、
複数の異なるトランスポート・プロトコルと、
前記複数の異なるトランスポート・プロトコル実装（transport protocol implementation）をトランスポート層より上の層と接続するための上位トランスポート・インタフェース（upper transport interface）と、
前記複数の異なるトランスポート・プロトコル実装を前記トランスポート層より下の層と接続するための下位トランスポート・インタフェース（lower transport interface）とを備えており、
前記上位トランスポート・インタフェースと前記下位トランスポート・インタフェースとは、切替情報（switching information）に基づいて前記異なるトランスポート・プロトコル実装との間の接続を切替えるように適合されるものであり、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定する制御モジュールを更に備えるものである。
【００１６】
本装置は、異なるトランスポート・プロトコル実装を切替えることにより、通信セッションのデータフローの最適化を可能にする。これは、所与の条件の下で最も適したトランスポート・プロトコル実装が決定かつ選択でき、選択されたＴＣＰ実装を通るデータフローを経路指定する（route）ことができるようになるからである。さらに、切替機能を切替情報を決定する能力とともに提供することにより、既存のＴＣＰ実装を使用すること及び既存のＴＣＰ実装を切替えることが可能になる。
【００１７】
１つの一般的なプロトコル・バージョンよりも実際に異なるプロトコル実装を提供することにより、本装置は、既存のプロトコル実装を利用することができ、それゆえ特に既存システム（レガシー・システム）に実装されるときに有利である。
【００１８】
本装置において、その一態様として、前記制御モジュールは、前記トランスポート層より下位に実装されたネットワークの構造のタイプを代表する１つ以上の特性を決定して、トランスポート・プロトコルがアンダーレイ・ネットワークの構造（underlying network structure）に適応するように、選択されるべきトランスポート・プロトコルを決定するモジュールを含むものである。アンダーレイ・ネットワークの構造の特性を決定することにより、所与のトランスポート・プロトコル・バージョンのパフォーマンスに最も大きな影響を及ぼすパラメータが決定され、どのＴＣＰバージョンを使用すべきかを決定するための基準として利用される。これにより、切替装置を特に効果的に所与のネットワーク条件へ適応することができる。
【００１９】
本装置において、その一態様として、アンダーレイ・ネットワークの特性（underlying network characteristics）を決定する前記モジュールは、既存のオペレーティング・システムの機能を利用してアンダーレイ・ネットワークの特性を決定するモジュールを含むものである。
【００２０】
既存のオペレーティング・システム機能を利用することにより、アンダーレイ・ネットワークの特性を決定するモジュールの実装がかなりシンプルになる。
【００２１】
本装置において、その一態様として、アンダーレイ・ネットワークの特性を決定する前記モジュールは、プロービング信号を送信し、該プロービング信号に対する応答を評価し、該評価に基づいてアンダーレイ・ネットワークの特性を決定するモジュールを含むものである。
【００２２】
プロービングのメカニズムは、オペレーティング・システムのクエリーのようなよりシンプルな方法が利用できない場合に有利である。さらに、単なる基礎をなすハードウェアのコンポーネント又は構造よりもむしろ、プロービングを通じてネットワークの実際の挙動が決定でき、その結果、トランスポート・プロトコル実装の選択を、基礎をなすハードウェアをただ単に見るだけのときに、予測される挙動とは異なり得る実際の挙動に適応させることが可能となる。
【００２３】
本装置において、その一態様として、アンダーレイ・ネットワークの特性を決定する前記モジュールは、前記通信セッションの他方のエンドポイントとの通信を確立し、前記通信セッションの前記他方のエンドポイントにおける対応するモジュールと前記通信セッションで使用される適切なトランスポート・プロトコル実装セッションをネゴシエーション（negotiate）するためのモジュールを含むものである。
【００２４】
直接のネゴシエーションにより、切替装置が置かれている通信エンドポイントにおける状況だけでなく、他方の通信エンドポイントにおける状況も考慮に入れることが可能となる。このおかげで、使用すべきトランスポート・プロトコルのより良い適合された選択が可能となり、さらに、切替が実行時間（ランタイム）中に実行されるべき場合に、例えばヘッダ・パラメータを変換することが不必要になるという利点が存在する。
【００２５】
本装置において、その一態様として、前記制御モジュールは、現在実行中の通信セッション中において、実行時間（ランタイム）中に前記複数の異なるトランスポート・プロトコル実装を切替えるように構成されるものである。これは例えば、通信相手の一方が移動したために条件が変わり、別のトランスポート・プロトコル実装への切替が必要になるまたは少なくとも望ましくなる場合に特に有利である。
【００２６】
本装置において、その一態様として、前記制御モジュールは、
実行時間中に新たなトランスポート・プロトコル実装へ切替のために使用される前記新たなトランスポート・プロトコル実装の開始をトリガーするためのモジュールと、
現在実行中のトランスポート・プロトコル・セッションのＴＣＰヘッダのコンテンツを変換して、前記新しく開始されたＴＣＰ実装へ送られた前記ヘッダ及び前記新しく開始されたＴＣＰから送られた前記ヘッダが、現在実行中の通信セッションの前記他方の通信エンドポイントにおけるトランスポート・プロトコル実装によって送受信された前記ＴＣＰヘッダと整合するようにするモジュールと
を備えるものである。
【００２７】
斯かる独立した切替を使用すれば、既存のシステムにほんのわずかな修正を加えるだけよく、切替メカニズムの実装は比較的容易になる。さらに、この独立した切替は、アプリケーション層が下位の変更に気がつかないようにアプリケーション層にとって透過的なやり方で実行できる。このことはアプリケーション層で実行中の“セッション”が変わらず、中断されないことを意味する。さらに、他方の通信エンドポイントで使用されるトランスポート・プロトコル実装のほかに両方の通信エンドポイントにおけるアプリケーション層もまた、異なるトランスポート・プロトコル実装の切替には気がつかない。
【００２８】
本装置において、その一態様として、前記制御モジュールは、
ある異なるトランスポート・プロトコル実装に切替えられることになっているその切替え前のトランスポート・プロトコル・セッションからヘッダデータを抽出するモジュールと、
前記抽出されたトランスポート・プロトコル・セッションのヘッダデータを前記新しく開かれたトランスポート・プロトコルセッショに挿入して、前記新しく開かれたトランスポート・プロトコル・セッションが、ある異なるトランスポート・プロトコル実装を介して、前記切替え前のトランスポート・プロトコル・セッションを再開することができるようにするモジュールと
を備えるものである。
【００２９】
トランスポート・プロトコルのヘッダ・パラメータを新たなトランスポート・プロトコルコネクションへ直接的に挿入（inject）することにより、ヘッダデータのトランスコーディング（transcoding）が不要になる。さらに、これはアプリケーション層にとって透過的なやり方で実行できる。言い換えると、ＴＣＰ層の最上部にあるアプリケーション層は、使用中である下位のＴＣＰ実装の変更には気がつかない。
【００３０】
本装置において、その一態様として、前記制御モジュールは、
現在実行中のトランスポート・プロトコル・セッションが、第１の通信エンドポイントにおいて異なるトランスポート・プロトコル実装へ切替えられる場合において、切替が実行されるべきである対応する第２の通信エンドポイントにおける対応するモジュールとネゴシエーションして、それらの通信エンドポイントにおける両方の制御モジュールが、ある異なるトランスポート・プロトコル実装を対象とする新たなトランスポート・プロトコル・セッションを開き、その際に実行中のトラフィックが、前記新たに開かれたトランスポート・プロトコル・セッションと両方の通信エンドポイントにおける前記異なるトランスポート・プロトコル実装とを通じて再開されるようにするモジュールを備えるものである。
【００３１】
このような十分に調整された切替（fully co-ordinated switching）により、ヘッダデータを新たなトランスポート・プロトコル・セッションへ挿入する必要がなくなる。なぜなら、両方の通信エンドポイントの側で完全に新しい（ＴＣＰ）セッションを確立することが可能となるからである。これは、アプリケーション層で実行されており通信セッションを使用するアプリケーションに対し十分に透過的な状態を保つやり方で実行することもできる。
【００３２】
本装置において、その一態様として、前記制御モジュールは、異なるトランスポート・プロトコル実装への切替をトリガーするためのトリガー信号を受信するように構成されるものである。
【００３３】
トリガー信号を受信することにより、ハンドオーバ、サービス品質の変更、または切替の判断に影響を及ぼしうる任意の他の条件など、外部の作用に対応することが可能となる。
【００３４】
本装置において、その一態様として、前記トリガー信号は、
移動体通信のセッションの間のハンドオーバと、
現在実行中の通信セッションの間のサービス品質の変更と、
現在実行中の通信セッションで使用されるハードウェアまたはソフトウェアモジュールの変更と、のいずれか１つのメカニズムに応答して生成される。
【００３５】
上記課題を解決するため、本発明は、トランスポート・プロトコルの異なる実装間の切替えを行う方法も提供する。本方法は、
トランスポート・プロトコルの複数の異なる実装をトランスポート層より上の層と接続するためにその複数の異なるトランスポート・プロトコル実装を上位トランスポート・インタフェースと接続するステップと、
前記トランスポート・プロトコルの前記複数の異なる実装をトランスポート層より下の層と接続するために前記複数の異なるトランスポート・プロトコル実装を下位トランスポート・インタフェースと接続するステップと、
前記上位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続とを切替情報に基づいてそれぞれ切替えるステップと、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定するステップとを含む。
【００３６】
上記方法は本発明の装置によって実施することが可能である。
【発明を実施するための最良の形態】
【００３７】
図３はＴＣＰ／ＩＰネットワークにおける一般的なプロトコル・スタック（protocol stack）を概略的に示している。下位の２層Ｌ１（物理層）およびＬ２（ネットワーク層）の上には、ＩＰ（インターネットプロトコル）層Ｌ３が存在し、その最上部には、本実施形態におけるＴＣＰを実装するトランスポート層が配置されている。ＴＣＰを実装するトランスポート層の上に配置された対応するソケット・インタフェース（socket interfaces）を通じて１つ以上のセッションが、維持されるようになっている。
【００３８】
本発明の実施の一形態によれば、図３に示されているトランスポート層は、図４を参照して次に説明する切替装置によって実装される。図４は通信エンドポイントＡと別の通信エンドポイントＢとの間の通信リンクを示している。本実施形態における両方のエンドポイントは、アプリケーション層の上に位置し、それらは、コンピュータ上で実行するプロセス、携帯電話機、ＰＤＡ、ＷＬＡＮインタフェースを備えたノート型パソコン、もしくはデスクトップ型コンピュータ、スマートフォンなどによって提供され得る。通信エンドポイントＡを実装する機器またはプロセスは、トランスポート層を実装する切替装置ＳＷＡを通り、Ａ側のインターネット・プロトコル・スタックの層Ｌ１乃至Ｌ３を通り、図４に示すようなインターネットＩＮの一般的に複数のノードを通り、Ｂ側のインターネット・プロトコル・スタックの層Ｌ１乃至Ｌ３を通り、そして切替装置Ｂを通って、最後にエンドポイントＢへと、通信エンドポイントＢを実装する機器またはプロセスに接続される。
【００３９】
切替装置ＳＷＡとＳＷＢはそれぞれ、異なるアンダーレイ・ネットワークの構造に対して最適化された複数の異なるトランスポート・プロトコル実装を実装している。切替装置ＳＷＡ及びＳＷＢは、これらの異なる実装を切替えることにより、ＡからＢへそしてＢからＡへのトラフィックが所与のアンダーレイ・ネットワーク（underlying network）の特性に対して最も適したＴＣＰ実装を通して経路指定されるようにすることが可能である。例えば、機器Ａは、例えばこの機器Ａを所有するユーザの雇用主の会社サーバであり得る機器Ｂとの先のコネクションを確立するために固定型有線イーサネット（Ethernet）に接続されているノート型パソコンの場合がある。しかしながら、ユーザはオフィスを後にし、その結果、固定型有線コネクションが切断され、そのあとそのユーザはＷＬＡＮホットスポット（このスポットを介してユーザはインターネットを通じてサーバＢに接続したいと考えている）が提供されているエリアに入ってしまう場合がある。このことはＡ側のアンダーレイ・ネットワークの特性が変わり、そのためにコネクションに使用されるＴＣＰ実装の変更が有利となり得ることを意味する。切替装置は、実施の一形態においてアンダーレイ・ネットワークの特性を検出し、通信セッションに使用される提供されたＴＣＰ実装の１つを適切に選択する。この決定および選択は、Ｂ側に切替装置ＳＷＢが全く与えられていなくとも実行することが可能であることに言及しておきたい。このことは、Ａ側とそして同じくＢ側にあるトランスポート層の上下の層が切替に気が付かないように、切替がユーザに意識されないで実行されることを意味する。
【００４０】
図４に示されているように両方の通信エンドポイントに切替装置が備わっている場合においては、通信リンクの両側で適合化（adaptation）が実行できる。
【００４１】
さらに、実施の更なる一形態として、切替装置ＳＷＡは、切替装置ＳＷＢに接続して、ＡとＢとの間の通信セッションに使用される適切なＴＣＰ実装をネゴシエーションする(negotiate)ことが可能である。
【００４２】
次に図５を参照して、本発明による切替装置（例えば図４における装置ＳＷＡおよびＳＷＢ）の１つの実施形態をより詳しく説明する。図５からわかるように、本実施形態は、ＴＣＰｘとＴＣＰｙとでラベルされた２つの異なるＴＣＰ実装を有する。それらは例えば、固定型有線ＬＡＮに対して最適化されたＴＣＰ実装（ＴＣＰｘ）と無線ＬＡＮに対して最適化された更なるＴＣＰ実装（ＴＣＰｙ）とを示す場合がある。この２つのＴＣＰ実装の下には、ＩＰ層と異なるＴＣＰフレーバを持つ２つの実装とをつなぐ“ＬＴＩ（lower transport interface）”とラベルされたインタフェースが置かれている。同様に、２つのＴＣＰ実装の上には、この２つのＴＣＰ実装とアプリケーション層へのコネクションを確立するソケット・インタフェース（socket interface）とをつなぐ“ＵＴＩ（upper transport interface）”とラベルされた別のインタフェースが存在する。２つのＴＣＰ実装ＴＣＰｘおよびＴＣＰｙは、それぞれ下位トランスポート・インタフェースＬＴＩと上位トランスポート・インタフェースＵＴＩとに接続した標準的なＴＣＰ実装であり得る。
【００４３】
図５に示したような構成では、層Ｌ１、層Ｌ２、および層Ｌ３を経由して到着するセグメントを経路指定して、それらを下位トランスポート・インタフェースＬＴＩを通して“正しい”または“最適化された”ＴＣＰ実装に導くことが可能である。この“正しい”または“最適化された”ＴＣＰ実装は、トランスポート層より下の下位層のネットワーク特性に依存するようなＴＣＰｘまたはＴＣＰｙのいずれかであり得る。図５からわかるように、上位および下位トランスポート・インタフェースは、異なるＴＣＰ実装をどれが最も適切かに応じて“切替える”ことができる。どのＴＣＰ実装が使用されるかについての決定は、下位層のアンダーレイ・ネットワークの特性に応じて実行することができる。ここではその特性は、例えば、通信相手との間でどの種類のネットワーク・コネクション（例えば、固定型有線イーサネット、ＷＬＡＮ、ギガビット・イーサネット、ＧＳＭなど）が使用されるかを意味する場合がある。これらのアンダーレイ・ネットワークの特性に基づいて、ＴＣＰ実装が選ばれ、その選ばれたＴＣＰ実装からデータが上位インタフェースへ、そしてそこからソケット・インタフェースヘと送られる。
【００４４】
逆方向の場合においては、ソケット・インタフェースを経由して到着するパケットまたはセグメントは、上位トランスポート・インタフェースＵＴＩを通過する。ＵＴＩにおいて、パケットまたはセグメントは、上位ネットワーク特性に応じて実装ＴＣＰｘまたは実装ＴＣＰｙのいずれか一方に導かれ、そこから下流方向に下位トランスポート・インタフェースＬＴＩへ、そして図４にすでに示したように次にＬ３、Ｌ２、およびＬ１へと送られ、そこからインターネットＩＮを経由して他方の通信相手（図示されていない）に送られる。
【００４５】
セグメントに対して正しい経路を選ぶために上位および下位インタフェースによってそれぞれどのＴＣＰ実装が使用されるべきかが決定されなければならない。この決定は、図５に示した制御モジュールＣＭによって行われる。これについて次に説明する。
【００４６】
実施の一形態によれば、制御モジュールは、下位層Ｌ１、．．．、Ｌ３の１つ以上とのインタフェース（図５のＬＬＩ）を備える。このインタフェースＬＬＩは、下位層の１つ以上と直接通信することによって下位層の種類についての情報を引き出すことが可能である。その目的のため、それは下位層の１つの（図示されていない）ＡＰＩ（application programming interface）を利用し、それにより下位層の１つ以上とコンタクトしてアンダーレイ・ネットワークの構造についての情報を引き出すことができる。
【００４７】
アンダーレイ・ネットワークの特性に関するこのように引き出された情報は次に、評価モジュールＥＶＡＬ（evaluation module）へ送られ、ＥＶＡＬは、その引き出された情報に基づいてどのＴＣＰ実装を使用すべきかを決定する。制御モジュールＣＭは、上位トランスポート・インタフェースＵＴＩと下位トランスポート・インタフェースＬＴＩとに対してＴＣＰ実装としてＴＣＰｙとＴＣＰｘのどちらを使用すべきかを通知する。その後に通信が以下のようにして始まる。
【００４８】
発信通信（outgoing communication）の場合、ソケット・インタフェースは、新たなセッションを開始することになる。その通信セッションを利用する意思のあるアプリケーションは、通常のＴＣＰ／ＩＰコネクションのように送信先（宛先）ＩＰアドレスとポート番号とを指定し、一時的なソースＩＰポート番号が与えられる。この情報により、オープンすべきセッションが一意に識別される。新たなセッションをオープンするためのリクエストは、ＵＴＩによって、適切なＴＣＰバージョンを決定するためのリクエストと見なされる。次いでＵＴＩは、制御モジュールに通知し、制御モジュールは、オープンすべきセッションに対する最も適切なＴＣＰバージョンを決定するために上述した決定手続きを実行する。この情報が得られたところで、ＵＴＩには制御モジュールＣＭによってその情報が通知され、ＬＴＩにも制御モジュールＣＭによって直接的にまたは代替的に図５には示されていないがＵＴＩとＬＴＩとの間の直接インタフェースによって通知される。この情報を使って、上位トランスポート・インタフェースＵＴＩと下位トランスポート・インタフェースＬＴＩとは、ＴＣＰセグメントを適切なＴＣＰ実装に送る（route）ことができる。これは、発信パケット（outgoing packet）と到来パケット（incoming packet）に対してそれぞれＵＴＩとＬＴＩがＴＣＰヘッダをチェックすることにより実行することができる。このとき送信元／送信先ＩＰアドレス及び送信元／送信先ポートの四つ組（quadruple）についての情報を見つけ出すことが可能であり、この情報は、通信セッションだけでなく、このセッションに最も適切なものとして決定されたＴＣＰバージョンも識別する。こうして、このヘッダ情報に基づいて、ＵＴＩとＬＴＩとは、パケットを正しいＴＣＰ実装へ送ることができる。
【００４９】
ＵＴＩおよびＬＴＩには、異なるバージョンを使用するよう制御モジュールが明示的に通知しない限り使用すべきバージョンとなる“デフォルトＴＣＰバージョン（default TCP version）”が与えられ得ることに言及しておきたい。例えば、デフォルトＴＣＰバージョンは、セッションをオープンするための最初のステップ、例えば、セッション・オープニング・リクエスト、一時ポート番号の割り当てなど、に使用することができる。これらは、セッションを定義してそれが後で識別することができるようにし、さらに識別されたセッションに制御モジュールによって決定された特定のＴＣＰバージョンが割り当てられるようにするために必要なステップである。
【００５０】
次に、到来セッション（incoming session）、言い換えると他方の通信エンドポイントによって開始されたセッションの場合に、パケットのルーティングがどのように働くかについて説明する。この場合、まず最初に下位トランスポート・インタフェースＬＴＩがセッションをオープンするためのリクエストを受信する。ＬＴＩは、新たに識別されたセッションを一意に識別するのに必要であるので、デフォルトＴＣＰバージョンを利用して、通信を通じてそのリクエストを送る。次に適切なＴＣＰバージョンがすでに上述したように制御モジュールによって決定され、結果の情報がＬＴＩとＵＴＩとへ伝達される。ＬＴＩとＵＴＩは、この情報を利用して、選択された適切なＴＣＰ実装に到来パケットと発信パケットとを送る（route）ことができる。すでに述べたように、ルーティングは、ＴＣＰヘッダをチェックすることによって実行することが可能である。またルーティングは、到来パケットについては下位トランスポート・インタフェースＬＴＩ、発信パケットについては上位トランスポート・インタフェースＵＴＩによって行われる。
【００５１】
図５において、制御モジュールＣＭは、ＵＴＩおよびＬＴＩとは別個の単一モジュールとして示されているが、制御モジュールＣＭは、上位トランスポート・インタフェースＵＴＩ、下位トランスポート・インタフェースＬＴＩ、またはそれらの両方の一部として実装され得ることに言及しておきたい。制御モジュールＣＭの動作は、ＵＴＩまたはＬＴＩのどちらか一方によってトリガーされ得る。このＵＴＩまたはＬＴＩは、セッション・オープニング・リクエスト（session opening request）を、適切なＴＣＰバージョンを決定するために制御モジュールの動作をトリガーするためのトリガーとして解釈され得る。
【００５２】
図６における実施の更なる一形態によれば、制御モジュールＣＭは、通信エンドポイントがベースとするオペレーティング・システム（ＯＳ）のオペレーティング・システム・プリミティブ（operating system primitives）に問い合わせを行うためのクエリーモジュールＱＭ（query module）を備える。クエリーに対するリスポンス（応答）は、評価モジュールＥＶＡＬ（evaluation module）によってどれがアンダーレイ・ネットワークの構造で、その結果、どのＴＣＰフレーバが使用されるべきかを決定するために使用され得る。決定されたＴＣＰ実装は、前の実施形態と同様に通知される。
【００５３】
１つの斯かるクエリーは、例えばオペレーティング・システムのコマンド、例えばイーサネット、ＷＬＡＮ、ギガビット・イーサネット、ＧＳＭ回線などのアンダーレイ・ネットワークについての情報を後で返す“ipconfig”または“ifconfig”であることが可能である。ネットワーク特性を適切なＴＣＰフレーバに関連付けるルックアップテーブルに保存された情報に基づいて、評価モジュールＥＶＡＬは、通信効率を最適化するためにどのＴＣＰフレーバを使用すべきかを決定することができる。
【００５４】
次に図７を参照して更なる実施形態を説明する。この更なる実施形態によれば、アンダーレイ・ネットワークの構造とそれに関して適切なＴＣＰフレーバは、プロービング（probing）メカニズムによって決定することができる。その目的のため、ＴＣＰインタフェースは、図７に示すプロービング・モジュールＰＭ（probing module）を備えることができる。プロービング・モジュールＰＭは以下のように機能する。
【００５５】
プロービング・モジュールＰＭは、通信相手となる通信エンドポイントＢであり得るあるいはネットワークにおけるプロービング・メカニズムのターゲットになるための専用の特定のノードであり得るプロービング・パートナーＸへ、プロービング信号（probing signal）を送信する。プロービング信号を送信し、所望の通信相手からの対応する応答を評価モジュールＥＶＡＬで評価することによって、制御モジュールはアンダーレイ・ネットワークの構造の性質を決定し、それに基づいて使用すべきＴＣＰのタイプについての判断を下すことができる。例えば、“ping”コマンドが、プロービング信号を送信するために使用することができる。各pingコマンドは、対応する通信相手からの（この通信相手が到達可能な場合にはその相手にアドレス指定された）応答をトリガーすることになる。そしてプロービング・モジュールＰＭは、応答が受信されるまでの時間を測定する。応答時間は、実際のネットワーク負荷、パケットがインターネットを通して取りうる特定の経路、その他の変動ファクタに依存する可能性があるため、ある個別のpingリクエストに対する応答時間は特徴的でない場合があるが、しかし実施の一形態では、応答時間のある種の分布をもたらす複数のpingリクエストを使用することが可能である。この分布は、ある平均応答時間の周囲で変動し、かつ／またはこの平均応答時間の周囲においてある統計分布を有する場合がある。この分布は、アンダーレイ・ネットワークの構造を特徴付けるものと見なされ得る。固定型有線イーサネット・ネットワークの場合には、例えばもっと短い平均応答時間及びこの平均応答時間の周囲の小さな分散を期待することができるが、それに対してＧＳＭ接続の場合には、より幅広い分散を示すより長い平均応答時間が期待できる。評価モジュールＥＶＡＬは、応答分布を評価し、どのＴＣＰ実装を使用すべきかを決定する。
【００５６】
図８は、固定型有線イーサネット（例えば（ａ））とＧＳＭ接続（例（ｂ））の応答時間分布の一例を示している。応答時間分布を評価し、それをアンダーレイ・ネットワークの構造の特徴的な或る標準パターンと比較することによって（例えば、平均値と分散とを計算することによって、またはニューラル・ネットワークのようなより洗練されたパターン評価メカニズムを使用することによって）、評価モジュールは、どのようなアンダーレイ・ネットワークの構造が存在し、従ってどのＴＣＰバージョンが使用されるべきかを結論を下すことができる。
【００５７】
実施の更なる一形態によれば、他のプロービング方法もまた、単独でまたはすでに述べたものとの組み合わせで使用することが可能である。ある１つの他のプロービング方法は例えば、あるコネクションを通じて実現することが可能なスループットを測定することができる。実施の一形態ではその目的のため、“ping”機能は、例えば、ピング（ping）のコマンドを、それらの周波数を増やしつつ同時にどのポイントで最大スループットに達するかを見ながら送信することによって使用することが可能である。その結果は、最も適切なＴＣＰバージョンを決定するために評価かつ使用されることが可能である。
【００５８】
別のアプローチでは、パケットサイズをいろいろ変えて、達成可能な結果を同様に探すようにすることが可能である。それに基づいて、使用すべきＴＣＰバージョンが選択され得る。例えば、可能なパケットサイズが大きくなれば、特にそのような条件（大きなパケットサイズ）のために設計されたＴＣＰバージョンの使用が許容され得る。
【００５９】
実施の一形態によれば、コネクションの信号強度（signal strength）は、適切なＴＣＰバージョンがそれに基づいて決定される情報としてチェックすることが可能である。これは例えば、実施の一形態として、ＵＮＩＸコマンドであり無線ＬＡＮ接続における信号強度についての情報を返信する“iwconfig”といったオペレーティング・システム機能を使用することによって実行可能である。
【００６０】
ある特有の実施形態では、信号強度についての情報またはネットワーク特性を反映する他のパラメータまたはコネクションの品質は、所定の時間間隔で継続的にモニタされ、それによって基本パラメータの任意の劣化または大きな変化が検出可能であり、それに基づいて異なるＴＣＰバージョンの変更をトリガーすることが可能である。
【００６１】
実施の更なる一形態によれば、制御モジュールは、通信セッションを要求している（アプリケーション層レベルにある）アプリケーションの特性を決定するモジュールを備え得る。そのモジュールは、アプリケーションのタイプを決定し、例えばルックアップテーブルの形で保存されているアプリオリな知識を参照してこのタイプのアプリケーションにとってどれが最も適切なＴＣＰ実装かを決定することができる。
【００６２】
実施の一形態によれば、制御モジュールは、上述したメカニズムの組み合わせ、例えばオペレーティングシステムプリミティブへの問い合わせ（querying）、または通信セッションを要求しているアプリケーションのタイプの探査（probing）もしくは調査（checking）の組み合わせを使用することができる。この場合、最も適切なＴＣＰ実装を選択する際に考慮されるアプリオリな知識は、考慮すべき情報のこれらの種類全てについての情報を含むことができる。このときには例えば、唯一のタイプの情報を考慮したときに結論が衝突した場合（例えば、探査がＴＣＰ実装Ａを提案しているのに対して、通信セッションを要求しているアプリケーションタイプがＴＣＰ実装Ｂの使用を提案しているといったような場合）に最終的な意思決定をするためのルールが存在し得る。ルールベースのナレッジベース（rule-based knowledge base）は、入力情報の各可能な組み合わせごとにこの情報に基づいてどのＴＣＰ実装が選択されるべきかを定めるために設定することができる。
【００６３】
実施の更なる一形態によれば、制御モジュールは、プロービング・モジュール（probing module）の代わりにあるいはそれに加えてネゴシエイティング・モジュール（negotiating module）ＮＭを備えることができる。ネゴシエイティング・モジュールＮＭのおかげで通信リンクの他端にある対応するインタフェースと直接的に通信することが可能となる。以下、図９を参照して、このネゴシエイティング・モジュールＮＭの動作について説明する。
【００６４】
図９は、通信セッションがそれらの間で確立されるべき通信のエンドポイントＡおよびＢを示している。これらの装置ＡおよびＢは、コンピュータ、携帯電話機、ＰＤＡ、スマートフォン、ノート型パソコンであり得る。あるいはそれらはこれらの機器上で実行し通信セッションをオープンして維持することが可能なアプリケーションまたはプロセスであり得る。
【００６５】
図９に示した機器要素ＡおよびＢはそれぞれ、異なるＴＣＰ実装を切替えることが可能な前置モジュール（fronted module）ＳＷＡまたはＳＷＢに接続されている。これらのモジュールＳＷＡおよびＳＷＢは、ネゴシエイティング・モジュールＮＭＡとＮＭＢとをそれぞれ含んでいる。
【００６６】
ここで、装置Ａが装置Ｂへの通信を確立する意思があると仮定する。このとき装置Ａは、あるポートを通じて確立される通信セッションを要求するリクエストを装置ＢのＩＰアドレスへ送信する。このリクエストは、切替モジュールＳＷＡを経由するように送られ、切替モジュールＳＷＡは、このリクエストによってその相手ＳＷＢとの通信セッションの確立を試行し、ＳＷＡおよびＳＷＢによってそれぞれ使用されるべきＴＣＰアプリケーションをネゴシエーションするようトリガーされる。ネゴシエーションをするためにこの通信セッションが確立されたら、モジュールＳＷＡは、モジュールＳＷＢにＳＷＡ側のアンダーレイ・ネットワークの構造について通知する。この情報は、前述の実施形態で述べた問い合わせ（querying）メカニズムから引き出される場合がある、あるいはそれはモジュールＳＷＡのステータスレジスタにすでに存在している場合がある。仮に装置Ａが携帯電話機であるとすると、このことは、モジュールＳＷＡが、Ａ側のアンダーレイ・ネットワークのインフラストラクチャはＧＳＭインフラストラクチャであるという対応する情報をモジュールＳＷＢへ送信することを意味する。
【００６７】
対応するモジュールＳＷＢは、同様なやり方で装置Ｂ側のアンダーレイ・ネットワークのインフラストラクチャについての情報を引き出したり、または斯かる情報を保存している場合がある。この情報に基づいて、両方のネゴシエイティング・モジュールＮＭＡおよびＮＭＢは、切替モジュールＳＷＡおよびＳＷＢでそれぞれ使用されるＴＣＰ実装についてネゴシエーションすることができる。例えば、アンダーレイ・ネットワークの構造としてＧＳＭに適したＴＣＰ実装が切替装置ＳＷＡだけでなく切替装置ＳＷＢでも利用可能である場合には、それに応じてネゴシエイティング・モジュールＮＭＢは、ネゴシエイティング・モジュールＮＭＡに対して、両方の切替モジュールがアンダーレイ・ネットワークの構造としてＧＳＭに最も適切な斯かるＴＣＰ実装を使用するよう通知することができる。
【００６８】
異種混交しているようなアンダーレイ・ネットワークの構造の場合、例えばアンダーレイ・ネットワークの構造がＡ側ではＧＳＭ構造になっており、Ｂ側ではＷＬＡＮインフラストラクチャになっている場合において、ネゴシエイティング・モジュールＮＭＢは、ルックアップテーブルに保存され得るアプリオリな知識に基づいて、このような場合の最も適切なＴＣＰ実装を決定することができる。この選択されたＴＣＰ実装は、ネゴシエイティング・モジュールＮＭＡに提案されることができ、もしそれがＡ側で利用可能ならばＡとＢとの間の通信セッションに使用できる。提案されたＴＣＰ実装が切替装置ＳＷＡで利用可能でなければ、ネゴシエイティング・モジュールＮＭＡは、使用すべきＴＣＰ実装の更なる代替案を再提案することができる。このときモジュールＮＭＡは、対応する情報をその対応するネゴシエーションＮＭＢへ送信することができ、ネゴシエーションＮＭＢにおいて、ネゴシエイティング・モジュールＮＭＡから提案されたＴＣＰ実装の利用可能性が再度チェックされることが可能である。この手続きを繰り返すことにより、適切かつ利用可能なＴＣＰ実装が最終的に選択できる。
【００６９】
次に、実施の更なる一形態による適切なＴＣＰ実装をネゴシエーションする別の代替となるものを説明する。ネゴシエーティングモジュールＮＭＢにアンダーレイ・ネットワークの構造について通知する際に、ネゴシエーティングモジュールＮＭＡは、切替装置ＳＷＡで利用可能なＴＣＰ実装についての情報を送信する。次いで、送信された情報に基づいて、ネゴシエイティング・モジュールＮＭＢは、（例えば、ルックアップテーブルの形の）ナレッジベース（knowledge base）を参照し、所与の環境下で最も適切なＴＣＰ実装を選択することができる。次にモジュールＮＭＢは、ネゴシエイティング・モジュールＮＭＡに選択されたＴＣＰ実装を通知し、その選択されたＴＣＰ実装は、エンドポイントＡとエンドポイントＢとの間の通信セッション（このセッションは、適切なＴＣＰ実装をネゴシエーションするために使用されたＳＷＡとＳＷＢとの間の通信セッションを閉じた後に、こうして選択されたＴＣＰ実装を使用してオープンされ得る）に使用されることが可能である。
【００７０】
次に、２つの通信エンドポイントＡおよびＢあるいは通信セッションを開始する少なくともエンドポイントＡによりＴＣＰ実装を切替えることが可能な更なる実施形態について説明する。この更なる実施形態によれば、ネットワーク内に他端のノードＢの代理として機能することができるサポート・ノードＢ’が提供される。サポート・ノードＢ’は、開始エンドポイントＡと適切なＴＣＰ実装についてネゴシエーションすることが可能である。
【００７１】
このシナリオについて図９を参照して更に詳しく説明する。本例における開始エンドポイントＡとサポート・ノードＢ’とは、両方ともあるアンダーレイ・ネットワークの構造（例えば、あるプロバイダによって提供される高品質で高速なインフラストラクチャ）の範囲内にある。図９においてその範囲は、ＡおよびＢ’を含むエリアとして示されている。ここで、エンドポイントＡは、先ほど言及した高品質で高速なプロバイダのカバレッジ（図９において点線で囲まれた部分）外にあるエンドポイントＢとの通信セッションを確立する意思があると仮定する。ここで、エンドポイントＡとサポート・ノードＢ’との間の適切なＴＣＰ実装をネゴシエーションするために、エンドポイントＡは、最初にサポート・ノードＢ’に接続する。続いてサポート・ノードＢ’は、エンドポイントＢにコンタクトして、もし可能なら更に、サポート・ノードＢ’とエンドポイントＢとの間の適切なＴＣＰ実装についてネゴシエーションする。ネゴシエーションのプロセスの後、エンドポイントＡとエンドポイントＢと間の直接通信がネゴシエーションの結果に基づいて確立され得るか、あるいは、通信がエンドポイントＡからサポート・ノードＢ’へ確立され、こんどはそこからエンドポイントＢへと確立される。その間、ネゴシエーションの結果に基づいて、経路Ａ−Ｂ’に対しては第１の適切なＴＣＰ実装が使用され、経路Ｂ’−Ｂに対しては第２の適切なＴＣＰ実装が使用される。
【００７２】
次に、実行時間（ランタイム）中において異なるＴＣＰ実装を切替える本発明の更なる実施形態について説明する。前述の例では、制御モジュールは最初に、最も適切なＴＣＰ実装を決定し、その後に、実際の通信が開始され、選択されたＴＣＰ実装を通るように経路指定されると想定されている。しかしながら、今日のネットワークは多くの場合に異種混交であるだけでなく、時間の経過とともに変更することがあり、その結果、実行中の通信セッションは、アンダーレイ・ネットワークのインフラストラクチャの変更に直面する可能性もある。斯かる変更の１つの理由としては、移動体ネットワークにおけるハンドオーバが挙げられる。移動体ネットワークの基地局はある決まったカバレッジエリアを有し、ユーザがそのカバレッジエリアの境界近くに来ると、いわゆるハンドオーバが必要になることがある。すなわち、実行中の通信セッションは異なる基地局へ“ハンドオーバ”される。斯かるハンドオーバは、例えば新たな基地局が異なるネットワーク・プラットフォームを利用することから、アンダーレイ・ネットワークの特性の変化をもたらすことがある。例えば、ユーザが、ＷＬＡＮホットスポットがカバーするエリア（例えば空港、レストラン、または斯かるホットスポットが提供される他の場所）に入ると、実行中の通信セッションは、“従来の”携帯電話基地局からそのＷＬＡＮホットスポットへハンドオーバされることがある。逆に、ユーザは斯かるホットスポットのカバレッジエリアを去る場合がある。このときは実行中の通信セッションは携帯電話基地局へハンドオーバされる必要がある。これらそれぞれのハンドオーバは、アンダーレイ・ネットワークの特性が変更することを意味し、結果的に、これは、実行中の通信セッションに適用されるＴＣＰ実装の変更に反映されることが望ましい。
【００７３】
次に、異なるＴＣＰ実装の間における斯かる実行中の切替（ランタイム切替）を実行する実施形態について説明する。上位／下位トランスポート・インタフェース間の古いＴＣＰコネクションと新しいＴＣＰコネクションとの間の外部調整が一切ないことから、この実施形態は以後“独立切替（independent switching）”と称される。
【００７４】
ここで、通信エンドポイントＡが他方の通信エンドポイントＢとの実行中のセッションを有していると仮定する。その後、エンドポイントＡが移動して、通信エンドポイントＡのアンダーレイ・ネットワークの特性が変更するようなハンドオーバが起こる。本実施形態では、エンドポイントＡ側における上位と下位のトランスポート・インタフェースのペアは、実際のＴＣＰ実装と他方のエンドポイントＢとに対し透過的な（気付かれない）方法で、現時点のＴＣＰ実装を終了して別のＴＣＰ実装を開始する。
【００７５】
ここで、この形の切替は、制御モジュールと異なるＴＣＰ実装との間のコネクションを除いてどのコンポーネントにおいてもハードウェアまたはソフトウェアの変更を一切必要としないことを指摘しておきたい。現時点のＴＣＰ実装は、制御モジュールが下位トランスポート・インタフェースＬＴＩへ、他方のエンドポイントＢがコネクションを閉じたことを示す信号を送ってセッションを終結することによって終了する。Ａ側における現在のＴＣＰ実装からアプリケーションへ送られる対応する信号は、その結果としてインターセプトされ、転送されない。同様に、新たなＴＣＰ実装は、同じような技術を使って、別のＴＣＰ実装モジュールがアプリケーションへの新たなＴＣＰコネクションを開始することをトリガーすることにより、制御モジュールによって開始される。本実施形態ではコネクションを開いたり閉じたりする能力以外のインタフェースは存在しないので、シーケンス番号あるいはウィンドウサイズなどのＴＣＰパラメータが、異なる実装の間で交換できることは保証できない。このため、他方のエンドポイントにおけるＴＣＰ実装は、セッションの現時点のシーケンス番号ｘで継続するのに対し、新しく開始された実装は、シーケンス番号０から始まる。結果として、上位／下位トランスポート・インタフェースのペアまたは制御モジュールによるＴＣＰヘッダにおけるポート番号および他のフィールドの変換が、将来のセグメントに必要になることがあり得る。特に、ＴＣＰヘッダにおけるシーケンス番号とＡＣＫ（acknowledgement）番号とは、新しく開始されたＴＣＰ実装と古いシーケンス番号で継続する他方のエンドポイントにおけるＴＣＰ実装との間のオフセットｘを補償するよう調整される必要がある。例えば、新しく開始された実装からのシーケンス番号ａは、ＴＣＰコネクションのエンドポイントＡで正しく処理されるためにａ＋ｘ（ｘは他方のエンドポイントＢから送信された最後のシーケンスである）に変換されなければならない。さらに、ＴＣＰセグメントのチェックサム（check-sum）は、再計算される必要がある。従って本実施形態では、制御モジュールまたは下位トランスポート・インタフェースＬＴＩは、実行中の通信セッションが切替後も継続可能になるように新しく開かれたＴＣＰコネクションにおけるＴＣＰヘッダ・パラメータを修正するための（図示されていない）モジュールを含む。
【００７６】
次に、異なるＴＣＰ実装間におけるランタイム切替において“大まかに調整される切替（loosely co-ordinated switching）”と呼ばれる少し異なった実施形態を説明する。本実施形態によれば、制御モジュールは、ＴＣＰパラメータをインタフェースを通じてローカルなＴＣＰ実装に挿入することができる。さらに、実行中の通信セッションにおける関連するＴＣＰパラメータを抽出するモジュールが提供される。このため、現時点のＴＣＰセッションからの状態（実行中のＴＣＰコネクションを異なるＴＣＰ実装で正しく再開することを保証するために必要なシーケンス番号および他の関係のあるパラメータ）が取り出され、新たなＴＣＰ実装に挿入される。このようなケースでは、新たなローカルなＴＣＰ実装は、セッションの現時点のＴＣＰシーケンス番号を入力として受信し、上位／下位トランスポート・インタフェースによるＴＣＰヘッダフィールドの転写が不要になるようにすることができる。
【００７７】
次に、異なるＴＣＰ実装間におけるランタイム切替において“十分に調整される切替（fully co-ordinated switching）”と呼ばれる更なる実施形態を説明する。本実施形態では、エンドポイントＡに加えて他方のエンドポイントＢも、あるいは言い換えるとＴＣＰ実装切替メカニズムを実現するためにそれに接続されたフロントエンドも、実行中にＴＣＰ実装を切替えることが可能であると仮定される。この切替メカニズムは、前の実施形態においてネゴシエーションによる切替との関連で説明した切替メカニズムと同様に実行することができる。従って、当業者には容易に理解できるため、ここでは詳細は省略される。ネゴシエーションによる切替が可能な斯かるメカニズムによる、Ａ及びＢの両側で行われる調整された同時切替は、両側で使用されるＴＣＰ実装のネゴシエーションが成功裏に終わった後は容易になることがある。通信は新たにネゴシエーションして取り決められたＴＣＰ実装を使用して進行することが可能であるが、前の実施形態で述べたＴＣＰヘッダ情報の変換、別の前の実施形態で述べたＴＣＰヘッダデータの挿入、または全く新しいＴＣＰセッションの確立はいずれも使用可能である。
【００７８】
すでに言及したように、異なるＴＣＰバージョンへの変更は、実行中のコネクションのアンダーレイ・ネットワークのインフラストラクチャの変更をもたらすハンドオーバが実行されるなど、外部の作用によってトリガーされることが可能である。別のＴＣＰバージョンへの変更をトリガーし得る他の環境としては、例えば、信号強度といったコネクションまたはサービスの品質の変化が挙げられる。実施の一形態によれば、どのＴＣＰバージョンを使用すべきかを決定する際に考慮される一部または全てのパラメータは、例えば一定の時間間隔で関係のあるデータをサンプリングすることによって、継続的にモニタされる。これにより、どのＴＣＰバージョンを使用すべきかを決定する際に考慮されるパラメータの任意の変化に対する迅速な応答が可能になる。
【００７９】
これまでにアウトラインを述べてきた本発明は、ＴＣＰのみに限定されないことに言及しておきたい。本発明は、ＴＣＰおよび他のタイプのトランスポート・プロトコルの間の実行中における切替のほかに他のトランスポート・プロトコルの間の切替にも適用可能である。このようなケースにおいて、上位／下位トランスポート・インタフェースは、ペイロードタイプがＴＣＰまたはその他のトランスポート・プロトコル（の１つ）であるような全てのＩＰパケットを受信する。トランスポート・プロトコル間の切替も同様に十分に調整したやり方で実行されることを推測することも可能であるが、しかしながら、新たなトランスポート・プロトコルコネクションのヘッダと元々のトランスポート・プロトコルコネクションのヘッダとの間のトランスコードが可能な場合においては、ルーズな調整または独立な調整での切替を行うことも可能である。
【００８０】
さらに、制御モジュールは、これまで述べてきた例では上位および下位のトランスポート・インタフェースとは別個でそれらと相互作用するモジュールとして説明してきたが、実施形態によっては、制御モジュールは、ＬＴＩまたはＵＴＩまたはその両方の一部または全体として実装することもできる。
【００８１】
本発明による切替装置は、上記実施形態において述べたように動作するよう適切にプログラムされた任意のコンピュータまたはコンピューティングデバイスによって実現することができることは容易に理解できよう。さらに、本発明の実施形態による切替装置は、実行した際にコンピュータまたはコンピューティングデバイスが上記実施形態に基づく切替装置として機能することを可能にするコンピュータプログラムまたはコンピュータプログラムコードによっても実現することができる。コンピュータまたはコンピューティングデバイスは、従って、デバイスが前述したように実行されようにプログラムで制御できる１つ以上のマイクロプロセッサから構成される任意のデバイスを意味することがある。このようなデバイスの例としては、パーソナルコンピュータ、ノート型パソコン、ＰＤＡ、携帯電話機、スマートフォンなどが挙げられる。さらに、本発明の実施形態の上述した個々のモジュールは、実行した際に上述したモジュールの機能を実現するコンピュータプログラムコードを含むプログラムモジュールによって実現することができる。本発明の実施形態を実現する製品は、コンピュータまたはコンピューティングデバイスが上述した実施形態と関連して述べた装置として機能することを可能にするコンピュータプログラムコードを保存または具現化したデータキャリアまたは任意の記憶媒体を備え得る。
【図面の簡単な説明】
【００８２】
【図１】ＴＣＰ／ＩＰプロトコルの階層化アーキテクチャを示す図である。
【図２】ＩＳＯ／ＯＳＩ層モデルと比較したときのＴＣＰ／ＩＰプロトコルの階層化アーキテクチャを示す図である。
【図３】従来のＴＣＰ／ＩＰコネクションのプロトコル・スタックを示す図である。
【図４】本発明の実施の一形態を利用する通信リンクを示す図である。
【図５】本発明の実施の一形態による切替装置の略構成図である。
【図６】本発明の実施の更なる一形態による切替装置の略構成図である。
【図７】本発明の実施の更なる一形態による切替装置の略構成図である。
【図８】本発明の実施の一形態によるプロービング・メカニズムの結果データを示す図である。
【図９】ネゴシエーションによる切替に関する本発明の実施の一形態を示す図である。
【図１０】ネゴシエーションによる切替に関する本発明の実施の更なる一形態を示す図である。
【図１】
2008518531.tif 000003
【図２】
2008518531.tif 000004
【図３】
2008518531.tif 000005
【図４】
2008518531.tif 000006
【図５】
2008518531.tif 000007
【図６】
2008518531.tif 000008
【図７】
2008518531.tif 000009
【図８】
2008518531.tif 000010
【図９】
2008518531.tif 000011
【図１０】
2008518531.tif 000012
【手続補正書】
【提出日】平成19年6月27日(2007.6.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
あるトランスポート・プロトコルの異なる実装間の切替えを行う装置であって、
複数の異なるトランスポート・プロトコル実装をトランスポート層より上の層と接続するための上位トランスポート・インタフェースと、
前記複数の異なるトランスポート・プロトコル実装を前記トランスポート層より下の層と接続するための下位トランスポート・インタフェースとを備えており、
前記上位トランスポート・インタフェースと前記下位トランスポート・インタフェースとは、切替情報に基づいて前記異なるトランスポート・プロトコル実装の間の接続を切替えるように構成されるものであり、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定する制御モジュールを更に備えるものである装置。
【請求項２】
前記上位トランスポート・インタフェース及び前記下位トランスポート・インタフェースのそれぞれは、
前記制御モジュールによって提供された前記切替情報に基づいて、前記複数の異なるＴＣＰ実装の１つをある特定の通信セッションへ割り当てるモジュールと、
到来パケットのヘッダと発信パケットのヘッダとをチェックすることによりセッションを識別し、それに基づいて、前記到来パケット及び前記発信パケットが前記複数の異なるＴＣＰ実装のどれに送られるべきかを決定するモジュールと
を備えるものである、請求項１に記載の装置。
【請求項３】
前記制御モジュールは、前記トランスポート層より下位に実装されたネットワークの構造のタイプを代表する１つ以上の特性を決定して、トランスポート・プロトコルがアンダーレイ・ネットワークの構造に適応するように、選択されるべきトランスポート・プロトコルを決定するモジュールを含むものである、請求項１または２に記載の装置。
【請求項４】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、既存のオペレーティング・システム機能を利用してアンダーレイ・ネットワークの特性を決定するモジュールを含むものである、請求項１乃至３のいずれか１項に記載の装置。
【請求項５】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、プロービング信号を送信し、該プロービング信号に対する応答を評価し、該評価に基づいてアンダーレイ・ネットワークの特性を決定するモジュールを含むものである、請求項１乃至４のいずれか１項に記載の装置。
【請求項６】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、前記通信セッションにおける他方のエンドポイントとの通信を確立し、前記通信セッションの前記他方のエンドポイントにおける対応するモジュールと前記通信セッションで使用される適切なトランスポート・プロトコル実装セッションをネゴシエーションするためのモジュールを含むものである、請求項１乃至５のいずれか１項に記載の装置。
【請求項７】
前記制御モジュールは、前記通信セッションを要求しているアプリケーションの特性に基づいて使用すべきＴＣＰ実装を決定するモジュールを含むものである、請求項１乃至６のいずれか１項に記載の装置。
【請求項８】
前記制御モジュールは、前記複数の異なるトランスポート・プロトコル実装の１つを使用する通信が開始する前に前記切替情報を決定するように構成されるものである、請求項１乃至７のいずれか１項に記載の装置。
【請求項９】
前記制御モジュールは、現在実行中の通信セッションにおいて、実行時間中に前記複数の異なるトランスポート・プロトコル実装間の切替えを行うように構成されるものである、請求項１乃至８のいずれか１項に記載の装置。
【請求項１０】
前記制御モジュールは、
実行時間中に新たなトランスポート・プロトコル実装へ切替えるために前記新たなトランスポート・プロトコル実装の使用の開始をトリガーするモジュールと、
現在実行中のトランスポート・プロトコル・セッションのＴＣＰヘッダのコンテンツを変換して、前記新しく開始されたＴＣＰ実装へ送られた前記ヘッダ及び前記新しく開始されたＴＣＰから送られてきた前記ヘッダが、現在実行中の通信セッションの前記他方の通信エンドポイントにおけるトランスポート・プロトコル実装によって送受信された前記ＴＣＰヘッダと整合するようにするモジュールと
を備えるものである、請求項９に記載の装置。
【請求項１１】
前記制御モジュールは、
ある異なるトランスポート・プロトコル実装に切替えられることになっているその切替え前のトランスポート・プロトコル・セッションからヘッダデータを抽出するモジュールと、
前記抽出されたトランスポート・プロトコル・セッションのヘッダデータを前記新しく開かれたトランスポート・プロトコル・セッションに挿入して、前記新しく開かれたトランスポート・プロトコル・セッションが、ある異なるトランスポート・プロトコル実装を介して、前記切替え前のトランスポート・プロトコル・セッションを再開することができるようにする、モジュールと
を備えるものである、請求項９または１０に記載の装置。
【請求項１２】
前記制御モジュールは、現在実行中のトランスポート・プロトコル・セッションが、第１の通信エンドポイントにおいてある異なるトランスポート・プロトコル実装へ切替えられる場合において、切替が実行されるべきである対応する第２の通信エンドポイントにおける対応するモジュールとネゴシエーションして、それらの通信エンドポイントにおける両方の制御モジュールが、ある異なるトランスポート・プロトコル実装を対象とする新たなトランスポート・プロトコル・セッションを開き、その際に実行中のトラフィックが、前記新たに開かれたトランスポート・プロトコル・セッションと両方の通信エンドポイントにおける前記異なるトランスポート・プロトコル実装とを通じて再開されるようにするモジュールを備えるものである、請求項９乃至１１のいずれか１項に記載の装置。
【請求項１３】
前記制御モジュールは、ある異なるトランスポート・プロトコル実装への切替をトリガーするためのトリガー信号を受信するように構成されるものである、請求項９乃至１２のいずれか１項に記載の装置。
【請求項１４】
前記トリガー信号は、
移動体通信のセッションの間のハンドオーバと、
現在実行中の通信セッションの間のサービス品質の変更と、
現在実行中の通信セッションで使用されるハードウェアまたはソフトウェアモジュールの変更と
のいずれか１つのメカニズムに応答して生成されるものである、請求項１３に記載の装置。
【請求項１５】
前記制御モジュールは、前記複数の異なるＴＣＰ実装のどれが使用されるべきかの決定がそれに基づいて行われる１つ以上のパラメータを継続的にモニタするためのモジュールを更に備えており、
前記モニタするためのモジュールは、セットの所定ルールに従って前記モニタされた１つ以上のパラメータの変化が現在使用されているＴＣＰバージョンから異なるＴＣＰバージョンへの変更が実行されるべきことを示唆している場合には、現在使用されているＴＣＰバージョンからある異なるＴＣＰバージョンへの変更をトリガーするものである、請求項１乃至１５のいずれか１項に記載の装置。
【請求項１６】
トランスポート・プロトコルの異なる実装間の切替えを行う方法であって、
前記トランスポート・プロトコルの複数の異なる実装をトランスポート層より上の層と接続するために前記複数の異なるトランスポート・プロトコル実装を上位トランスポート・インタフェースと接続するステップと、
前記トランスポート・プロトコルの前記複数の異なる実装をトランスポート層より下の層と接続するために前記複数の異なるトランスポート・プロトコル実装を下位トランスポート・インタフェースと接続するステップと、
前記上位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続とを切替情報に基づいてそれぞれ切替えるステップと、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定するステップと
を含む方法。
【請求項１７】
請求項２乃至１５のいずれか１項の中で定義されたモジュールが実行するステップを更に含む請求項１６に記載の方法。
【請求項１８】
コンピュータ上で実行させる際に請求項１６または１７に記載された方法を実行することができるコンピュータプログラムコードを含むコンピュータプログラム。