説明

異なるプロトコル実装間の切替えを行う方法および装置

トランスポート・プロトコルの異なる実装を切替える装置が提供される。本装置は、複数の異なるトランスポート・プロトコル実装をトランスポート層より上の層と接続するための上位トランスポート・インタフェースと、前記複数の異なるトランスポート・プロトコル実装を前記トランスポート層より下の層と接続するための下位トランスポート・インタフェースとを備えており、前記上位トランスポート・インタフェースと前記下位トランスポート・インタフェースとは、切替情報に基づいて前記異なるトランスポート・プロトコル実装の間の接続を切替えるように構成されるものである。また本装置は、ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定する制御モジュールを更に備えるものである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、異なるプロトコル実装間の切替えを行う、特に、TCPの異なる実装間の切替えを行う方法および装置に関する。
【背景技術】
【0002】
近年、コンピュータと、PDA(個人用携帯情報端末)、携帯電話機などの他のコンピューティング通信機器とのネットワーキングが大きな課題になっている。特に、インターネットが新生のモバイルネットワーキング技術(例えばGSM、WLAN、GPRS、i−mode、UMTSなど)とともに爆発的に成長したことにより新しく生まれる個々の電子機器を単一または複数のネットワークにつなげて、それらが互いに通信することができるようにする要求が高まってきている。
【0003】
2つの機器を接続するため、多種多様なネットワーキング方法およびプロトコルが使用される。それらは異なるプロトコルを使用し、異なる標準(例えば2、3例を挙げると、携帯電話機のGSM標準、第3世代携帯電話機のUMTS標準、無線LANのIEEE802.11標準など)に準拠する。2つのコンピュータまたは機器の間の通信におそらく最も広く使用されている標準は、インターネットに使用される一般にTCP/IP(transmission control protocol/internet protocol)と呼ばれるプロトコルである。
【0004】
斯かる標準およびプロトコルを定義し記述するため、通常、マルチレイヤモデルを参照してアーキテクチャが記述される。マルチレイヤモデルの中でも最も広く利用されるモデルは“ISO−OSI層モデル”である。このモデルはアプリケーション層と呼ばれる最上層から物理層と呼ばれる最下層までの7層から成り、物理層はネットワークの非常に低いレベルにおける電気信号および信号構造を規定する。図1にこのモデルを概略的に示す。
【0005】
TCP/IPの記述と定義には、図2に示すような4層モデルがよく参照される。このTCP/IPモデルは、最下層としてネットワーク層を含む。このネットワーク層では、トークンリング(token-ring)LAN、イーサネット(Ethernet)LAN、X.25通信などの特定のネットワークの仕様が定義される。他の図示されていない例としては、無線LAN、GSM通信などが挙げられる。
【0006】
ネットワーク層の上には、インターネットプロトコルの処理を担当するインターネット層が配置されている。インターネット層の上には、伝送制御プロトコル(TCP)を処理するいわゆるトランスポート層が配置されている。図2にはトランスポート層の別のプロトコルも示されている。それはユーザ・データグラム・プロトコル(UDP:user datagram protocol)と呼ばれ、伝送制御プロトコルとは少し異なる働き方をする。
【0007】
トランスポート層の上には図2に示すようにアプリケーションの処理を担当するアプリケーション層が配置されている。
【0008】
これらの図から、伝送制御プロトコル(TCP)を有するトランスポート層は、ネットワークまたはアンダーレイ・ネットワーク(underlying network)の特性に対して特有な層(図1で言えば、ネットワーク層と、データリンク層と、物理層であり、あるいは図2で言えば、インターネット層とネットワーク層)の上にあることが認識できる。このおかげで特に伝装置制御プロトコル(TCP)は、ネットワークの基礎となる構造からは比較的独立したものとなる。
【0009】
しかしながら、それでもなおトランスポート層より下位に置かれ得るネットワークの間に非常に大きな違いが存在することから、特定のアンダーレイ・ネットワークの構造(例えば、GSMネットワーク、無線LAN、およびイーサネットといった固定型有線LAN)に適応した異なるフレーバ(flavour)のTCPを結果的にもたらす個別のネットワークに対する最適化が発展してきた。これらの異なるネットワーク構造に対して、個別のアンダーレイ・ネットワークの構造に対して最適化された若干異なるバージョンのTCPが開発されている。
【0010】
例えば、固定型有線ネットワークの場合、従来のTCPは、セグメントの損失をネットワーク輻輳の示唆として解釈し、それに応じて送信速度を調節している。しかしながら、移動体ネットワークがアンダーレイ・ネットワーク(underlying network)である場合には、セグメントの損失が発生することに関してネットワーク輻輳以外の他の理由が存在する可能性が大いにある。それゆえ損失セグメントに応答して送信速度を調節する必要は実際上なくなることがある。脆弱なリンクと損失率が高いリンクとの上において古典的なTCPバージョンの純粋なパフォーマンスを処理するために、例えば脆弱リンクの場合に適用できる特別なフレーバのTCPが開発されている。
【0011】
同様に、TCPは、従来のTCP実装(TCP implementation)に固有であるウィンドウサイズの適応の問題があるために、多くの場合において、あるリンク上で利用可能な全帯域を有効に活用できていない。従来または古典的なTCP実装が最適なパフォーマンスを提供していない他のケースは、例えば高遅延(例えば衛星リンク)である。結果、長年にわたり、多種多様な異なるTCP実装および拡張が、脆弱無線リンク、高速リンク、および高遅延リンクといった異なるコンテクストで提案されている。これらのバージョンは、こうした各ケースでかなりの性能向上を結果的にもたらす。しかしながら、これらの最適化はそれらが与えられている個別のアプリケーションに限定される。
【0012】
異なったフレーバのTCPの例としては、Reno TCPと、Tahoe TCPと、Las Vegas TCPと、Sack TCPとがある。これらのフレーバのTCPは、例えば、損失パケットの処理の仕方で異なっており、例えば異なるフローレート制御メカニズムまたはリスタートメカニズムで異なる。Reno TCPは例えば、高速再送を含み、そのため高損失ネットワークの場合には一般にTahoe TCPよりも効率的である。というのは、それはTahoe TCPが行うように全てのパケット損失に対してスロースタートに入らないからである。
【発明の開示】
【発明が解決しようとする課題】
【0013】
原理的には、異なるフレーバ(flavours)または実装(implementations)のTCP/IPは互いに通信し合うことができるが、2つの異なるTCP/IP実装の間の通信の場合においては、結果として生じるデータフローは全てのケースで最適化されるわけではない。これらの問題は、近年、基礎インフラ(ストラクチャ)に関して時間的に変化することさえある異種混交のネットワークおよび通信リンクがより一般的になりつつあることから、特に重要になる。例えば、ノート型コンピュータまたはPDAは、ある時間では固定型有線ネットワークに接続されることがあるが、ユーザが移動すると、アンダーレイ・ネットワークの構造は、例えばカフェテリア内のホットスポットといったWLANインフラストラクチャあるいはノート型コンピュータに差し込まれる対応するアダプタカードを利用するGSMネットワーク構造に変わることがある。このことは、あるTCP実装の適切度は時間の経過とともに変わる場合があり、その結果、結果として生じるデータフローは最適化されない場合があることを意味している。
【0014】
以上の点から、本発明の課題はこれらの欠点を克服するためのソリューションを提供することにある。
【課題を解決するための手段】
【0015】
上記課題を解決するため、本発明は、トランスポート・プロトコルの異なる実装(implementation)間の切替えを行う装置を提供する。当該装置は、
複数の異なるトランスポート・プロトコルと、
前記複数の異なるトランスポート・プロトコル実装(transport protocol implementation)をトランスポート層より上の層と接続するための上位トランスポート・インタフェース(upper transport interface)と、
前記複数の異なるトランスポート・プロトコル実装を前記トランスポート層より下の層と接続するための下位トランスポート・インタフェース(lower transport interface)とを備えており、
前記上位トランスポート・インタフェースと前記下位トランスポート・インタフェースとは、切替情報(switching information)に基づいて前記異なるトランスポート・プロトコル実装との間の接続を切替えるように適合されるものであり、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定する制御モジュールを更に備えるものである。
【0016】
本装置は、異なるトランスポート・プロトコル実装を切替えることにより、通信セッションのデータフローの最適化を可能にする。これは、所与の条件の下で最も適したトランスポート・プロトコル実装が決定かつ選択でき、選択されたTCP実装を通るデータフローを経路指定する(route)ことができるようになるからである。さらに、切替機能を切替情報を決定する能力とともに提供することにより、既存のTCP実装を使用すること及び既存のTCP実装を切替えることが可能になる。
【0017】
1つの一般的なプロトコル・バージョンよりも実際に異なるプロトコル実装を提供することにより、本装置は、既存のプロトコル実装を利用することができ、それゆえ特に既存システム(レガシー・システム)に実装されるときに有利である。
【0018】
本装置において、その一態様として、前記制御モジュールは、前記トランスポート層より下位に実装されたネットワークの構造のタイプを代表する1つ以上の特性を決定して、トランスポート・プロトコルがアンダーレイ・ネットワークの構造(underlying network structure)に適応するように、選択されるべきトランスポート・プロトコルを決定するモジュールを含むものである。アンダーレイ・ネットワークの構造の特性を決定することにより、所与のトランスポート・プロトコル・バージョンのパフォーマンスに最も大きな影響を及ぼすパラメータが決定され、どのTCPバージョンを使用すべきかを決定するための基準として利用される。これにより、切替装置を特に効果的に所与のネットワーク条件へ適応することができる。
【0019】
本装置において、その一態様として、アンダーレイ・ネットワークの特性(underlying network characteristics)を決定する前記モジュールは、既存のオペレーティング・システムの機能を利用してアンダーレイ・ネットワークの特性を決定するモジュールを含むものである。
【0020】
既存のオペレーティング・システム機能を利用することにより、アンダーレイ・ネットワークの特性を決定するモジュールの実装がかなりシンプルになる。
【0021】
本装置において、その一態様として、アンダーレイ・ネットワークの特性を決定する前記モジュールは、プロービング信号を送信し、該プロービング信号に対する応答を評価し、該評価に基づいてアンダーレイ・ネットワークの特性を決定するモジュールを含むものである。
【0022】
プロービングのメカニズムは、オペレーティング・システムのクエリーのようなよりシンプルな方法が利用できない場合に有利である。さらに、単なる基礎をなすハードウェアのコンポーネント又は構造よりもむしろ、プロービングを通じてネットワークの実際の挙動が決定でき、その結果、トランスポート・プロトコル実装の選択を、基礎をなすハードウェアをただ単に見るだけのときに、予測される挙動とは異なり得る実際の挙動に適応させることが可能となる。
【0023】
本装置において、その一態様として、アンダーレイ・ネットワークの特性を決定する前記モジュールは、前記通信セッションの他方のエンドポイントとの通信を確立し、前記通信セッションの前記他方のエンドポイントにおける対応するモジュールと前記通信セッションで使用される適切なトランスポート・プロトコル実装セッションをネゴシエーション(negotiate)するためのモジュールを含むものである。
【0024】
直接のネゴシエーションにより、切替装置が置かれている通信エンドポイントにおける状況だけでなく、他方の通信エンドポイントにおける状況も考慮に入れることが可能となる。このおかげで、使用すべきトランスポート・プロトコルのより良い適合された選択が可能となり、さらに、切替が実行時間(ランタイム)中に実行されるべき場合に、例えばヘッダ・パラメータを変換することが不必要になるという利点が存在する。
【0025】
本装置において、その一態様として、前記制御モジュールは、現在実行中の通信セッション中において、実行時間(ランタイム)中に前記複数の異なるトランスポート・プロトコル実装を切替えるように構成されるものである。これは例えば、通信相手の一方が移動したために条件が変わり、別のトランスポート・プロトコル実装への切替が必要になるまたは少なくとも望ましくなる場合に特に有利である。
【0026】
本装置において、その一態様として、前記制御モジュールは、
実行時間中に新たなトランスポート・プロトコル実装へ切替のために使用される前記新たなトランスポート・プロトコル実装の開始をトリガーするためのモジュールと、
現在実行中のトランスポート・プロトコル・セッションのTCPヘッダのコンテンツを変換して、前記新しく開始されたTCP実装へ送られた前記ヘッダ及び前記新しく開始されたTCPから送られた前記ヘッダが、現在実行中の通信セッションの前記他方の通信エンドポイントにおけるトランスポート・プロトコル実装によって送受信された前記TCPヘッダと整合するようにするモジュールと
を備えるものである。
【0027】
斯かる独立した切替を使用すれば、既存のシステムにほんのわずかな修正を加えるだけよく、切替メカニズムの実装は比較的容易になる。さらに、この独立した切替は、アプリケーション層が下位の変更に気がつかないようにアプリケーション層にとって透過的なやり方で実行できる。このことはアプリケーション層で実行中の“セッション”が変わらず、中断されないことを意味する。さらに、他方の通信エンドポイントで使用されるトランスポート・プロトコル実装のほかに両方の通信エンドポイントにおけるアプリケーション層もまた、異なるトランスポート・プロトコル実装の切替には気がつかない。
【0028】
本装置において、その一態様として、前記制御モジュールは、
ある異なるトランスポート・プロトコル実装に切替えられることになっているその切替え前のトランスポート・プロトコル・セッションからヘッダデータを抽出するモジュールと、
前記抽出されたトランスポート・プロトコル・セッションのヘッダデータを前記新しく開かれたトランスポート・プロトコルセッショに挿入して、前記新しく開かれたトランスポート・プロトコル・セッションが、ある異なるトランスポート・プロトコル実装を介して、前記切替え前のトランスポート・プロトコル・セッションを再開することができるようにするモジュールと
を備えるものである。
【0029】
トランスポート・プロトコルのヘッダ・パラメータを新たなトランスポート・プロトコルコネクションへ直接的に挿入(inject)することにより、ヘッダデータのトランスコーディング(transcoding)が不要になる。さらに、これはアプリケーション層にとって透過的なやり方で実行できる。言い換えると、TCP層の最上部にあるアプリケーション層は、使用中である下位のTCP実装の変更には気がつかない。
【0030】
本装置において、その一態様として、前記制御モジュールは、
現在実行中のトランスポート・プロトコル・セッションが、第1の通信エンドポイントにおいて異なるトランスポート・プロトコル実装へ切替えられる場合において、切替が実行されるべきである対応する第2の通信エンドポイントにおける対応するモジュールとネゴシエーションして、それらの通信エンドポイントにおける両方の制御モジュールが、ある異なるトランスポート・プロトコル実装を対象とする新たなトランスポート・プロトコル・セッションを開き、その際に実行中のトラフィックが、前記新たに開かれたトランスポート・プロトコル・セッションと両方の通信エンドポイントにおける前記異なるトランスポート・プロトコル実装とを通じて再開されるようにするモジュールを備えるものである。
【0031】
このような十分に調整された切替(fully co-ordinated switching)により、ヘッダデータを新たなトランスポート・プロトコル・セッションへ挿入する必要がなくなる。なぜなら、両方の通信エンドポイントの側で完全に新しい(TCP)セッションを確立することが可能となるからである。これは、アプリケーション層で実行されており通信セッションを使用するアプリケーションに対し十分に透過的な状態を保つやり方で実行することもできる。
【0032】
本装置において、その一態様として、前記制御モジュールは、異なるトランスポート・プロトコル実装への切替をトリガーするためのトリガー信号を受信するように構成されるものである。
【0033】
トリガー信号を受信することにより、ハンドオーバ、サービス品質の変更、または切替の判断に影響を及ぼしうる任意の他の条件など、外部の作用に対応することが可能となる。
【0034】
本装置において、その一態様として、前記トリガー信号は、
移動体通信のセッションの間のハンドオーバと、
現在実行中の通信セッションの間のサービス品質の変更と、
現在実行中の通信セッションで使用されるハードウェアまたはソフトウェアモジュールの変更と、のいずれか1つのメカニズムに応答して生成される。
【0035】
上記課題を解決するため、本発明は、トランスポート・プロトコルの異なる実装間の切替えを行う方法も提供する。本方法は、
トランスポート・プロトコルの複数の異なる実装をトランスポート層より上の層と接続するためにその複数の異なるトランスポート・プロトコル実装を上位トランスポート・インタフェースと接続するステップと、
前記トランスポート・プロトコルの前記複数の異なる実装をトランスポート層より下の層と接続するために前記複数の異なるトランスポート・プロトコル実装を下位トランスポート・インタフェースと接続するステップと、
前記上位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続とを切替情報に基づいてそれぞれ切替えるステップと、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定するステップとを含む。
【0036】
上記方法は本発明の装置によって実施することが可能である。
【発明を実施するための最良の形態】
【0037】
図3はTCP/IPネットワークにおける一般的なプロトコル・スタック(protocol stack)を概略的に示している。下位の2層L1(物理層)およびL2(ネットワーク層)の上には、IP(インターネットプロトコル)層L3が存在し、その最上部には、本実施形態におけるTCPを実装するトランスポート層が配置されている。TCPを実装するトランスポート層の上に配置された対応するソケット・インタフェース(socket interfaces)を通じて1つ以上のセッションが、維持されるようになっている。
【0038】
本発明の実施の一形態によれば、図3に示されているトランスポート層は、図4を参照して次に説明する切替装置によって実装される。図4は通信エンドポイントAと別の通信エンドポイントBとの間の通信リンクを示している。本実施形態における両方のエンドポイントは、アプリケーション層の上に位置し、それらは、コンピュータ上で実行するプロセス、携帯電話機、PDA、WLANインタフェースを備えたノート型パソコン、もしくはデスクトップ型コンピュータ、スマートフォンなどによって提供され得る。通信エンドポイントAを実装する機器またはプロセスは、トランスポート層を実装する切替装置SWAを通り、A側のインターネット・プロトコル・スタックの層L1乃至L3を通り、図4に示すようなインターネットINの一般的に複数のノードを通り、B側のインターネット・プロトコル・スタックの層L1乃至L3を通り、そして切替装置Bを通って、最後にエンドポイントBへと、通信エンドポイントBを実装する機器またはプロセスに接続される。
【0039】
切替装置SWAとSWBはそれぞれ、異なるアンダーレイ・ネットワークの構造に対して最適化された複数の異なるトランスポート・プロトコル実装を実装している。切替装置SWA及びSWBは、これらの異なる実装を切替えることにより、AからBへそしてBからAへのトラフィックが所与のアンダーレイ・ネットワーク(underlying network)の特性に対して最も適したTCP実装を通して経路指定されるようにすることが可能である。例えば、機器Aは、例えばこの機器Aを所有するユーザの雇用主の会社サーバであり得る機器Bとの先のコネクションを確立するために固定型有線イーサネット(Ethernet)に接続されているノート型パソコンの場合がある。しかしながら、ユーザはオフィスを後にし、その結果、固定型有線コネクションが切断され、そのあとそのユーザはWLANホットスポット(このスポットを介してユーザはインターネットを通じてサーバBに接続したいと考えている)が提供されているエリアに入ってしまう場合がある。このことはA側のアンダーレイ・ネットワークの特性が変わり、そのためにコネクションに使用されるTCP実装の変更が有利となり得ることを意味する。切替装置は、実施の一形態においてアンダーレイ・ネットワークの特性を検出し、通信セッションに使用される提供されたTCP実装の1つを適切に選択する。この決定および選択は、B側に切替装置SWBが全く与えられていなくとも実行することが可能であることに言及しておきたい。このことは、A側とそして同じくB側にあるトランスポート層の上下の層が切替に気が付かないように、切替がユーザに意識されないで実行されることを意味する。
【0040】
図4に示されているように両方の通信エンドポイントに切替装置が備わっている場合においては、通信リンクの両側で適合化(adaptation)が実行できる。
【0041】
さらに、実施の更なる一形態として、切替装置SWAは、切替装置SWBに接続して、AとBとの間の通信セッションに使用される適切なTCP実装をネゴシエーションする(negotiate)ことが可能である。
【0042】
次に図5を参照して、本発明による切替装置(例えば図4における装置SWAおよびSWB)の1つの実施形態をより詳しく説明する。図5からわかるように、本実施形態は、TCPxとTCPyとでラベルされた2つの異なるTCP実装を有する。それらは例えば、固定型有線LANに対して最適化されたTCP実装(TCPx)と無線LANに対して最適化された更なるTCP実装(TCPy)とを示す場合がある。この2つのTCP実装の下には、IP層と異なるTCPフレーバを持つ2つの実装とをつなぐ“LTI(lower transport interface)”とラベルされたインタフェースが置かれている。同様に、2つのTCP実装の上には、この2つのTCP実装とアプリケーション層へのコネクションを確立するソケット・インタフェース(socket interface)とをつなぐ“UTI(upper transport interface)”とラベルされた別のインタフェースが存在する。2つのTCP実装TCPxおよびTCPyは、それぞれ下位トランスポート・インタフェースLTIと上位トランスポート・インタフェースUTIとに接続した標準的なTCP実装であり得る。
【0043】
図5に示したような構成では、層L1、層L2、および層L3を経由して到着するセグメントを経路指定して、それらを下位トランスポート・インタフェースLTIを通して“正しい”または“最適化された”TCP実装に導くことが可能である。この“正しい”または“最適化された”TCP実装は、トランスポート層より下の下位層のネットワーク特性に依存するようなTCPxまたはTCPyのいずれかであり得る。図5からわかるように、上位および下位トランスポート・インタフェースは、異なるTCP実装をどれが最も適切かに応じて“切替える”ことができる。どのTCP実装が使用されるかについての決定は、下位層のアンダーレイ・ネットワークの特性に応じて実行することができる。ここではその特性は、例えば、通信相手との間でどの種類のネットワーク・コネクション(例えば、固定型有線イーサネット、WLAN、ギガビット・イーサネット、GSMなど)が使用されるかを意味する場合がある。これらのアンダーレイ・ネットワークの特性に基づいて、TCP実装が選ばれ、その選ばれたTCP実装からデータが上位インタフェースへ、そしてそこからソケット・インタフェースヘと送られる。
【0044】
逆方向の場合においては、ソケット・インタフェースを経由して到着するパケットまたはセグメントは、上位トランスポート・インタフェースUTIを通過する。UTIにおいて、パケットまたはセグメントは、上位ネットワーク特性に応じて実装TCPxまたは実装TCPyのいずれか一方に導かれ、そこから下流方向に下位トランスポート・インタフェースLTIへ、そして図4にすでに示したように次にL3、L2、およびL1へと送られ、そこからインターネットINを経由して他方の通信相手(図示されていない)に送られる。
【0045】
セグメントに対して正しい経路を選ぶために上位および下位インタフェースによってそれぞれどのTCP実装が使用されるべきかが決定されなければならない。この決定は、図5に示した制御モジュールCMによって行われる。これについて次に説明する。
【0046】
実施の一形態によれば、制御モジュールは、下位層L1、...、L3の1つ以上とのインタフェース(図5のLLI)を備える。このインタフェースLLIは、下位層の1つ以上と直接通信することによって下位層の種類についての情報を引き出すことが可能である。その目的のため、それは下位層の1つの(図示されていない)API(application programming interface)を利用し、それにより下位層の1つ以上とコンタクトしてアンダーレイ・ネットワークの構造についての情報を引き出すことができる。
【0047】
アンダーレイ・ネットワークの特性に関するこのように引き出された情報は次に、評価モジュールEVAL(evaluation module)へ送られ、EVALは、その引き出された情報に基づいてどのTCP実装を使用すべきかを決定する。制御モジュールCMは、上位トランスポート・インタフェースUTIと下位トランスポート・インタフェースLTIとに対してTCP実装としてTCPyとTCPxのどちらを使用すべきかを通知する。その後に通信が以下のようにして始まる。
【0048】
発信通信(outgoing communication)の場合、ソケット・インタフェースは、新たなセッションを開始することになる。その通信セッションを利用する意思のあるアプリケーションは、通常のTCP/IPコネクションのように送信先(宛先)IPアドレスとポート番号とを指定し、一時的なソースIPポート番号が与えられる。この情報により、オープンすべきセッションが一意に識別される。新たなセッションをオープンするためのリクエストは、UTIによって、適切なTCPバージョンを決定するためのリクエストと見なされる。次いでUTIは、制御モジュールに通知し、制御モジュールは、オープンすべきセッションに対する最も適切なTCPバージョンを決定するために上述した決定手続きを実行する。この情報が得られたところで、UTIには制御モジュールCMによってその情報が通知され、LTIにも制御モジュールCMによって直接的にまたは代替的に図5には示されていないがUTIとLTIとの間の直接インタフェースによって通知される。この情報を使って、上位トランスポート・インタフェースUTIと下位トランスポート・インタフェースLTIとは、TCPセグメントを適切なTCP実装に送る(route)ことができる。これは、発信パケット(outgoing packet)と到来パケット(incoming packet)に対してそれぞれUTIとLTIがTCPヘッダをチェックすることにより実行することができる。このとき送信元/送信先IPアドレス及び送信元/送信先ポートの四つ組(quadruple)についての情報を見つけ出すことが可能であり、この情報は、通信セッションだけでなく、このセッションに最も適切なものとして決定されたTCPバージョンも識別する。こうして、このヘッダ情報に基づいて、UTIとLTIとは、パケットを正しいTCP実装へ送ることができる。
【0049】
UTIおよびLTIには、異なるバージョンを使用するよう制御モジュールが明示的に通知しない限り使用すべきバージョンとなる“デフォルトTCPバージョン(default TCP version)”が与えられ得ることに言及しておきたい。例えば、デフォルトTCPバージョンは、セッションをオープンするための最初のステップ、例えば、セッション・オープニング・リクエスト、一時ポート番号の割り当てなど、に使用することができる。これらは、セッションを定義してそれが後で識別することができるようにし、さらに識別されたセッションに制御モジュールによって決定された特定のTCPバージョンが割り当てられるようにするために必要なステップである。
【0050】
次に、到来セッション(incoming session)、言い換えると他方の通信エンドポイントによって開始されたセッションの場合に、パケットのルーティングがどのように働くかについて説明する。この場合、まず最初に下位トランスポート・インタフェースLTIがセッションをオープンするためのリクエストを受信する。LTIは、新たに識別されたセッションを一意に識別するのに必要であるので、デフォルトTCPバージョンを利用して、通信を通じてそのリクエストを送る。次に適切なTCPバージョンがすでに上述したように制御モジュールによって決定され、結果の情報がLTIとUTIとへ伝達される。LTIとUTIは、この情報を利用して、選択された適切なTCP実装に到来パケットと発信パケットとを送る(route)ことができる。すでに述べたように、ルーティングは、TCPヘッダをチェックすることによって実行することが可能である。またルーティングは、到来パケットについては下位トランスポート・インタフェースLTI、発信パケットについては上位トランスポート・インタフェースUTIによって行われる。
【0051】
図5において、制御モジュールCMは、UTIおよびLTIとは別個の単一モジュールとして示されているが、制御モジュールCMは、上位トランスポート・インタフェースUTI、下位トランスポート・インタフェースLTI、またはそれらの両方の一部として実装され得ることに言及しておきたい。制御モジュールCMの動作は、UTIまたはLTIのどちらか一方によってトリガーされ得る。このUTIまたはLTIは、セッション・オープニング・リクエスト(session opening request)を、適切なTCPバージョンを決定するために制御モジュールの動作をトリガーするためのトリガーとして解釈され得る。
【0052】
図6における実施の更なる一形態によれば、制御モジュールCMは、通信エンドポイントがベースとするオペレーティング・システム(OS)のオペレーティング・システム・プリミティブ(operating system primitives)に問い合わせを行うためのクエリーモジュールQM(query module)を備える。クエリーに対するリスポンス(応答)は、評価モジュールEVAL(evaluation module)によってどれがアンダーレイ・ネットワークの構造で、その結果、どのTCPフレーバが使用されるべきかを決定するために使用され得る。決定されたTCP実装は、前の実施形態と同様に通知される。
【0053】
1つの斯かるクエリーは、例えばオペレーティング・システムのコマンド、例えばイーサネット、WLAN、ギガビット・イーサネット、GSM回線などのアンダーレイ・ネットワークについての情報を後で返す“ipconfig”または“ifconfig”であることが可能である。ネットワーク特性を適切なTCPフレーバに関連付けるルックアップテーブルに保存された情報に基づいて、評価モジュールEVALは、通信効率を最適化するためにどのTCPフレーバを使用すべきかを決定することができる。
【0054】
次に図7を参照して更なる実施形態を説明する。この更なる実施形態によれば、アンダーレイ・ネットワークの構造とそれに関して適切なTCPフレーバは、プロービング(probing)メカニズムによって決定することができる。その目的のため、TCPインタフェースは、図7に示すプロービング・モジュールPM(probing module)を備えることができる。プロービング・モジュールPMは以下のように機能する。
【0055】
プロービング・モジュールPMは、通信相手となる通信エンドポイントBであり得るあるいはネットワークにおけるプロービング・メカニズムのターゲットになるための専用の特定のノードであり得るプロービング・パートナーXへ、プロービング信号(probing signal)を送信する。プロービング信号を送信し、所望の通信相手からの対応する応答を評価モジュールEVALで評価することによって、制御モジュールはアンダーレイ・ネットワークの構造の性質を決定し、それに基づいて使用すべきTCPのタイプについての判断を下すことができる。例えば、“ping”コマンドが、プロービング信号を送信するために使用することができる。各pingコマンドは、対応する通信相手からの(この通信相手が到達可能な場合にはその相手にアドレス指定された)応答をトリガーすることになる。そしてプロービング・モジュールPMは、応答が受信されるまでの時間を測定する。応答時間は、実際のネットワーク負荷、パケットがインターネットを通して取りうる特定の経路、その他の変動ファクタに依存する可能性があるため、ある個別のpingリクエストに対する応答時間は特徴的でない場合があるが、しかし実施の一形態では、応答時間のある種の分布をもたらす複数のpingリクエストを使用することが可能である。この分布は、ある平均応答時間の周囲で変動し、かつ/またはこの平均応答時間の周囲においてある統計分布を有する場合がある。この分布は、アンダーレイ・ネットワークの構造を特徴付けるものと見なされ得る。固定型有線イーサネット・ネットワークの場合には、例えばもっと短い平均応答時間及びこの平均応答時間の周囲の小さな分散を期待することができるが、それに対してGSM接続の場合には、より幅広い分散を示すより長い平均応答時間が期待できる。評価モジュールEVALは、応答分布を評価し、どのTCP実装を使用すべきかを決定する。
【0056】
図8は、固定型有線イーサネット(例えば(a))とGSM接続(例(b))の応答時間分布の一例を示している。応答時間分布を評価し、それをアンダーレイ・ネットワークの構造の特徴的な或る標準パターンと比較することによって(例えば、平均値と分散とを計算することによって、またはニューラル・ネットワークのようなより洗練されたパターン評価メカニズムを使用することによって)、評価モジュールは、どのようなアンダーレイ・ネットワークの構造が存在し、従ってどのTCPバージョンが使用されるべきかを結論を下すことができる。
【0057】
実施の更なる一形態によれば、他のプロービング方法もまた、単独でまたはすでに述べたものとの組み合わせで使用することが可能である。ある1つの他のプロービング方法は例えば、あるコネクションを通じて実現することが可能なスループットを測定することができる。実施の一形態ではその目的のため、“ping”機能は、例えば、ピング(ping)のコマンドを、それらの周波数を増やしつつ同時にどのポイントで最大スループットに達するかを見ながら送信することによって使用することが可能である。その結果は、最も適切なTCPバージョンを決定するために評価かつ使用されることが可能である。
【0058】
別のアプローチでは、パケットサイズをいろいろ変えて、達成可能な結果を同様に探すようにすることが可能である。それに基づいて、使用すべきTCPバージョンが選択され得る。例えば、可能なパケットサイズが大きくなれば、特にそのような条件(大きなパケットサイズ)のために設計されたTCPバージョンの使用が許容され得る。
【0059】
実施の一形態によれば、コネクションの信号強度(signal strength)は、適切なTCPバージョンがそれに基づいて決定される情報としてチェックすることが可能である。これは例えば、実施の一形態として、UNIXコマンドであり無線LAN接続における信号強度についての情報を返信する“iwconfig”といったオペレーティング・システム機能を使用することによって実行可能である。
【0060】
ある特有の実施形態では、信号強度についての情報またはネットワーク特性を反映する他のパラメータまたはコネクションの品質は、所定の時間間隔で継続的にモニタされ、それによって基本パラメータの任意の劣化または大きな変化が検出可能であり、それに基づいて異なるTCPバージョンの変更をトリガーすることが可能である。
【0061】
実施の更なる一形態によれば、制御モジュールは、通信セッションを要求している(アプリケーション層レベルにある)アプリケーションの特性を決定するモジュールを備え得る。そのモジュールは、アプリケーションのタイプを決定し、例えばルックアップテーブルの形で保存されているアプリオリな知識を参照してこのタイプのアプリケーションにとってどれが最も適切なTCP実装かを決定することができる。
【0062】
実施の一形態によれば、制御モジュールは、上述したメカニズムの組み合わせ、例えばオペレーティングシステムプリミティブへの問い合わせ(querying)、または通信セッションを要求しているアプリケーションのタイプの探査(probing)もしくは調査(checking)の組み合わせを使用することができる。この場合、最も適切なTCP実装を選択する際に考慮されるアプリオリな知識は、考慮すべき情報のこれらの種類全てについての情報を含むことができる。このときには例えば、唯一のタイプの情報を考慮したときに結論が衝突した場合(例えば、探査がTCP実装Aを提案しているのに対して、通信セッションを要求しているアプリケーションタイプがTCP実装Bの使用を提案しているといったような場合)に最終的な意思決定をするためのルールが存在し得る。ルールベースのナレッジベース(rule-based knowledge base)は、入力情報の各可能な組み合わせごとにこの情報に基づいてどのTCP実装が選択されるべきかを定めるために設定することができる。
【0063】
実施の更なる一形態によれば、制御モジュールは、プロービング・モジュール(probing module)の代わりにあるいはそれに加えてネゴシエイティング・モジュール(negotiating module)NMを備えることができる。ネゴシエイティング・モジュールNMのおかげで通信リンクの他端にある対応するインタフェースと直接的に通信することが可能となる。以下、図9を参照して、このネゴシエイティング・モジュールNMの動作について説明する。
【0064】
図9は、通信セッションがそれらの間で確立されるべき通信のエンドポイントAおよびBを示している。これらの装置AおよびBは、コンピュータ、携帯電話機、PDA、スマートフォン、ノート型パソコンであり得る。あるいはそれらはこれらの機器上で実行し通信セッションをオープンして維持することが可能なアプリケーションまたはプロセスであり得る。
【0065】
図9に示した機器要素AおよびBはそれぞれ、異なるTCP実装を切替えることが可能な前置モジュール(fronted module)SWAまたはSWBに接続されている。これらのモジュールSWAおよびSWBは、ネゴシエイティング・モジュールNMAとNMBとをそれぞれ含んでいる。
【0066】
ここで、装置Aが装置Bへの通信を確立する意思があると仮定する。このとき装置Aは、あるポートを通じて確立される通信セッションを要求するリクエストを装置BのIPアドレスへ送信する。このリクエストは、切替モジュールSWAを経由するように送られ、切替モジュールSWAは、このリクエストによってその相手SWBとの通信セッションの確立を試行し、SWAおよびSWBによってそれぞれ使用されるべきTCPアプリケーションをネゴシエーションするようトリガーされる。ネゴシエーションをするためにこの通信セッションが確立されたら、モジュールSWAは、モジュールSWBにSWA側のアンダーレイ・ネットワークの構造について通知する。この情報は、前述の実施形態で述べた問い合わせ(querying)メカニズムから引き出される場合がある、あるいはそれはモジュールSWAのステータスレジスタにすでに存在している場合がある。仮に装置Aが携帯電話機であるとすると、このことは、モジュールSWAが、A側のアンダーレイ・ネットワークのインフラストラクチャはGSMインフラストラクチャであるという対応する情報をモジュールSWBへ送信することを意味する。
【0067】
対応するモジュールSWBは、同様なやり方で装置B側のアンダーレイ・ネットワークのインフラストラクチャについての情報を引き出したり、または斯かる情報を保存している場合がある。この情報に基づいて、両方のネゴシエイティング・モジュールNMAおよびNMBは、切替モジュールSWAおよびSWBでそれぞれ使用されるTCP実装についてネゴシエーションすることができる。例えば、アンダーレイ・ネットワークの構造としてGSMに適したTCP実装が切替装置SWAだけでなく切替装置SWBでも利用可能である場合には、それに応じてネゴシエイティング・モジュールNMBは、ネゴシエイティング・モジュールNMAに対して、両方の切替モジュールがアンダーレイ・ネットワークの構造としてGSMに最も適切な斯かるTCP実装を使用するよう通知することができる。
【0068】
異種混交しているようなアンダーレイ・ネットワークの構造の場合、例えばアンダーレイ・ネットワークの構造がA側ではGSM構造になっており、B側ではWLANインフラストラクチャになっている場合において、ネゴシエイティング・モジュールNMBは、ルックアップテーブルに保存され得るアプリオリな知識に基づいて、このような場合の最も適切なTCP実装を決定することができる。この選択されたTCP実装は、ネゴシエイティング・モジュールNMAに提案されることができ、もしそれがA側で利用可能ならばAとBとの間の通信セッションに使用できる。提案されたTCP実装が切替装置SWAで利用可能でなければ、ネゴシエイティング・モジュールNMAは、使用すべきTCP実装の更なる代替案を再提案することができる。このときモジュールNMAは、対応する情報をその対応するネゴシエーションNMBへ送信することができ、ネゴシエーションNMBにおいて、ネゴシエイティング・モジュールNMAから提案されたTCP実装の利用可能性が再度チェックされることが可能である。この手続きを繰り返すことにより、適切かつ利用可能なTCP実装が最終的に選択できる。
【0069】
次に、実施の更なる一形態による適切なTCP実装をネゴシエーションする別の代替となるものを説明する。ネゴシエーティングモジュールNMBにアンダーレイ・ネットワークの構造について通知する際に、ネゴシエーティングモジュールNMAは、切替装置SWAで利用可能なTCP実装についての情報を送信する。次いで、送信された情報に基づいて、ネゴシエイティング・モジュールNMBは、(例えば、ルックアップテーブルの形の)ナレッジベース(knowledge base)を参照し、所与の環境下で最も適切なTCP実装を選択することができる。次にモジュールNMBは、ネゴシエイティング・モジュールNMAに選択されたTCP実装を通知し、その選択されたTCP実装は、エンドポイントAとエンドポイントBとの間の通信セッション(このセッションは、適切なTCP実装をネゴシエーションするために使用されたSWAとSWBとの間の通信セッションを閉じた後に、こうして選択されたTCP実装を使用してオープンされ得る)に使用されることが可能である。
【0070】
次に、2つの通信エンドポイントAおよびBあるいは通信セッションを開始する少なくともエンドポイントAによりTCP実装を切替えることが可能な更なる実施形態について説明する。この更なる実施形態によれば、ネットワーク内に他端のノードBの代理として機能することができるサポート・ノードB’が提供される。サポート・ノードB’は、開始エンドポイントAと適切なTCP実装についてネゴシエーションすることが可能である。
【0071】
このシナリオについて図9を参照して更に詳しく説明する。本例における開始エンドポイントAとサポート・ノードB’とは、両方ともあるアンダーレイ・ネットワークの構造(例えば、あるプロバイダによって提供される高品質で高速なインフラストラクチャ)の範囲内にある。図9においてその範囲は、AおよびB’を含むエリアとして示されている。ここで、エンドポイントAは、先ほど言及した高品質で高速なプロバイダのカバレッジ(図9において点線で囲まれた部分)外にあるエンドポイントBとの通信セッションを確立する意思があると仮定する。ここで、エンドポイントAとサポート・ノードB’との間の適切なTCP実装をネゴシエーションするために、エンドポイントAは、最初にサポート・ノードB’に接続する。続いてサポート・ノードB’は、エンドポイントBにコンタクトして、もし可能なら更に、サポート・ノードB’とエンドポイントBとの間の適切なTCP実装についてネゴシエーションする。ネゴシエーションのプロセスの後、エンドポイントAとエンドポイントBと間の直接通信がネゴシエーションの結果に基づいて確立され得るか、あるいは、通信がエンドポイントAからサポート・ノードB’へ確立され、こんどはそこからエンドポイントBへと確立される。その間、ネゴシエーションの結果に基づいて、経路A−B’に対しては第1の適切なTCP実装が使用され、経路B’−Bに対しては第2の適切なTCP実装が使用される。
【0072】
次に、実行時間(ランタイム)中において異なるTCP実装を切替える本発明の更なる実施形態について説明する。前述の例では、制御モジュールは最初に、最も適切なTCP実装を決定し、その後に、実際の通信が開始され、選択されたTCP実装を通るように経路指定されると想定されている。しかしながら、今日のネットワークは多くの場合に異種混交であるだけでなく、時間の経過とともに変更することがあり、その結果、実行中の通信セッションは、アンダーレイ・ネットワークのインフラストラクチャの変更に直面する可能性もある。斯かる変更の1つの理由としては、移動体ネットワークにおけるハンドオーバが挙げられる。移動体ネットワークの基地局はある決まったカバレッジエリアを有し、ユーザがそのカバレッジエリアの境界近くに来ると、いわゆるハンドオーバが必要になることがある。すなわち、実行中の通信セッションは異なる基地局へ“ハンドオーバ”される。斯かるハンドオーバは、例えば新たな基地局が異なるネットワーク・プラットフォームを利用することから、アンダーレイ・ネットワークの特性の変化をもたらすことがある。例えば、ユーザが、WLANホットスポットがカバーするエリア(例えば空港、レストラン、または斯かるホットスポットが提供される他の場所)に入ると、実行中の通信セッションは、“従来の”携帯電話基地局からそのWLANホットスポットへハンドオーバされることがある。逆に、ユーザは斯かるホットスポットのカバレッジエリアを去る場合がある。このときは実行中の通信セッションは携帯電話基地局へハンドオーバされる必要がある。これらそれぞれのハンドオーバは、アンダーレイ・ネットワークの特性が変更することを意味し、結果的に、これは、実行中の通信セッションに適用されるTCP実装の変更に反映されることが望ましい。
【0073】
次に、異なるTCP実装の間における斯かる実行中の切替(ランタイム切替)を実行する実施形態について説明する。上位/下位トランスポート・インタフェース間の古いTCPコネクションと新しいTCPコネクションとの間の外部調整が一切ないことから、この実施形態は以後“独立切替(independent switching)”と称される。
【0074】
ここで、通信エンドポイントAが他方の通信エンドポイントBとの実行中のセッションを有していると仮定する。その後、エンドポイントAが移動して、通信エンドポイントAのアンダーレイ・ネットワークの特性が変更するようなハンドオーバが起こる。本実施形態では、エンドポイントA側における上位と下位のトランスポート・インタフェースのペアは、実際のTCP実装と他方のエンドポイントBとに対し透過的な(気付かれない)方法で、現時点のTCP実装を終了して別のTCP実装を開始する。
【0075】
ここで、この形の切替は、制御モジュールと異なるTCP実装との間のコネクションを除いてどのコンポーネントにおいてもハードウェアまたはソフトウェアの変更を一切必要としないことを指摘しておきたい。現時点のTCP実装は、制御モジュールが下位トランスポート・インタフェースLTIへ、他方のエンドポイントBがコネクションを閉じたことを示す信号を送ってセッションを終結することによって終了する。A側における現在のTCP実装からアプリケーションへ送られる対応する信号は、その結果としてインターセプトされ、転送されない。同様に、新たなTCP実装は、同じような技術を使って、別のTCP実装モジュールがアプリケーションへの新たなTCPコネクションを開始することをトリガーすることにより、制御モジュールによって開始される。本実施形態ではコネクションを開いたり閉じたりする能力以外のインタフェースは存在しないので、シーケンス番号あるいはウィンドウサイズなどのTCPパラメータが、異なる実装の間で交換できることは保証できない。このため、他方のエンドポイントにおけるTCP実装は、セッションの現時点のシーケンス番号xで継続するのに対し、新しく開始された実装は、シーケンス番号0から始まる。結果として、上位/下位トランスポート・インタフェースのペアまたは制御モジュールによるTCPヘッダにおけるポート番号および他のフィールドの変換が、将来のセグメントに必要になることがあり得る。特に、TCPヘッダにおけるシーケンス番号とACK(acknowledgement)番号とは、新しく開始されたTCP実装と古いシーケンス番号で継続する他方のエンドポイントにおけるTCP実装との間のオフセットxを補償するよう調整される必要がある。例えば、新しく開始された実装からのシーケンス番号aは、TCPコネクションのエンドポイントAで正しく処理されるためにa+x(xは他方のエンドポイントBから送信された最後のシーケンスである)に変換されなければならない。さらに、TCPセグメントのチェックサム(check-sum)は、再計算される必要がある。従って本実施形態では、制御モジュールまたは下位トランスポート・インタフェースLTIは、実行中の通信セッションが切替後も継続可能になるように新しく開かれたTCPコネクションにおけるTCPヘッダ・パラメータを修正するための(図示されていない)モジュールを含む。
【0076】
次に、異なるTCP実装間におけるランタイム切替において“大まかに調整される切替(loosely co-ordinated switching)”と呼ばれる少し異なった実施形態を説明する。本実施形態によれば、制御モジュールは、TCPパラメータをインタフェースを通じてローカルなTCP実装に挿入することができる。さらに、実行中の通信セッションにおける関連するTCPパラメータを抽出するモジュールが提供される。このため、現時点のTCPセッションからの状態(実行中のTCPコネクションを異なるTCP実装で正しく再開することを保証するために必要なシーケンス番号および他の関係のあるパラメータ)が取り出され、新たなTCP実装に挿入される。このようなケースでは、新たなローカルなTCP実装は、セッションの現時点のTCPシーケンス番号を入力として受信し、上位/下位トランスポート・インタフェースによるTCPヘッダフィールドの転写が不要になるようにすることができる。
【0077】
次に、異なるTCP実装間におけるランタイム切替において“十分に調整される切替(fully co-ordinated switching)”と呼ばれる更なる実施形態を説明する。本実施形態では、エンドポイントAに加えて他方のエンドポイントBも、あるいは言い換えるとTCP実装切替メカニズムを実現するためにそれに接続されたフロントエンドも、実行中にTCP実装を切替えることが可能であると仮定される。この切替メカニズムは、前の実施形態においてネゴシエーションによる切替との関連で説明した切替メカニズムと同様に実行することができる。従って、当業者には容易に理解できるため、ここでは詳細は省略される。ネゴシエーションによる切替が可能な斯かるメカニズムによる、A及びBの両側で行われる調整された同時切替は、両側で使用されるTCP実装のネゴシエーションが成功裏に終わった後は容易になることがある。通信は新たにネゴシエーションして取り決められたTCP実装を使用して進行することが可能であるが、前の実施形態で述べたTCPヘッダ情報の変換、別の前の実施形態で述べたTCPヘッダデータの挿入、または全く新しいTCPセッションの確立はいずれも使用可能である。
【0078】
すでに言及したように、異なるTCPバージョンへの変更は、実行中のコネクションのアンダーレイ・ネットワークのインフラストラクチャの変更をもたらすハンドオーバが実行されるなど、外部の作用によってトリガーされることが可能である。別のTCPバージョンへの変更をトリガーし得る他の環境としては、例えば、信号強度といったコネクションまたはサービスの品質の変化が挙げられる。実施の一形態によれば、どのTCPバージョンを使用すべきかを決定する際に考慮される一部または全てのパラメータは、例えば一定の時間間隔で関係のあるデータをサンプリングすることによって、継続的にモニタされる。これにより、どのTCPバージョンを使用すべきかを決定する際に考慮されるパラメータの任意の変化に対する迅速な応答が可能になる。
【0079】
これまでにアウトラインを述べてきた本発明は、TCPのみに限定されないことに言及しておきたい。本発明は、TCPおよび他のタイプのトランスポート・プロトコルの間の実行中における切替のほかに他のトランスポート・プロトコルの間の切替にも適用可能である。このようなケースにおいて、上位/下位トランスポート・インタフェースは、ペイロードタイプがTCPまたはその他のトランスポート・プロトコル(の1つ)であるような全てのIPパケットを受信する。トランスポート・プロトコル間の切替も同様に十分に調整したやり方で実行されることを推測することも可能であるが、しかしながら、新たなトランスポート・プロトコルコネクションのヘッダと元々のトランスポート・プロトコルコネクションのヘッダとの間のトランスコードが可能な場合においては、ルーズな調整または独立な調整での切替を行うことも可能である。
【0080】
さらに、制御モジュールは、これまで述べてきた例では上位および下位のトランスポート・インタフェースとは別個でそれらと相互作用するモジュールとして説明してきたが、実施形態によっては、制御モジュールは、LTIまたはUTIまたはその両方の一部または全体として実装することもできる。
【0081】
本発明による切替装置は、上記実施形態において述べたように動作するよう適切にプログラムされた任意のコンピュータまたはコンピューティングデバイスによって実現することができることは容易に理解できよう。さらに、本発明の実施形態による切替装置は、実行した際にコンピュータまたはコンピューティングデバイスが上記実施形態に基づく切替装置として機能することを可能にするコンピュータプログラムまたはコンピュータプログラムコードによっても実現することができる。コンピュータまたはコンピューティングデバイスは、従って、デバイスが前述したように実行されようにプログラムで制御できる1つ以上のマイクロプロセッサから構成される任意のデバイスを意味することがある。このようなデバイスの例としては、パーソナルコンピュータ、ノート型パソコン、PDA、携帯電話機、スマートフォンなどが挙げられる。さらに、本発明の実施形態の上述した個々のモジュールは、実行した際に上述したモジュールの機能を実現するコンピュータプログラムコードを含むプログラムモジュールによって実現することができる。本発明の実施形態を実現する製品は、コンピュータまたはコンピューティングデバイスが上述した実施形態と関連して述べた装置として機能することを可能にするコンピュータプログラムコードを保存または具現化したデータキャリアまたは任意の記憶媒体を備え得る。
【図面の簡単な説明】
【0082】
【図1】TCP/IPプロトコルの階層化アーキテクチャを示す図である。
【図2】ISO/OSI層モデルと比較したときのTCP/IPプロトコルの階層化アーキテクチャを示す図である。
【図3】従来のTCP/IPコネクションのプロトコル・スタックを示す図である。
【図4】本発明の実施の一形態を利用する通信リンクを示す図である。
【図5】本発明の実施の一形態による切替装置の略構成図である。
【図6】本発明の実施の更なる一形態による切替装置の略構成図である。
【図7】本発明の実施の更なる一形態による切替装置の略構成図である。
【図8】本発明の実施の一形態によるプロービング・メカニズムの結果データを示す図である。
【図9】ネゴシエーションによる切替に関する本発明の実施の一形態を示す図である。
【図10】ネゴシエーションによる切替に関する本発明の実施の更なる一形態を示す図である。

【特許請求の範囲】
【請求項1】
あるトランスポート・プロトコルの異なる実装間の切替えを行う装置であって、
複数の異なるトランスポート・プロトコル実装をトランスポート層より上の層と接続するための上位トランスポート・インタフェースと、
前記複数の異なるトランスポート・プロトコル実装を前記トランスポート層より下の層と接続するための下位トランスポート・インタフェースとを備えており、
前記上位トランスポート・インタフェースと前記下位トランスポート・インタフェースとは、切替情報に基づいて前記異なるトランスポート・プロトコル実装の間の接続を切替えるように構成されるものであり、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定する制御モジュールを更に備えるものである装置。
【請求項2】
前記上位トランスポート・インタフェース及び前記下位トランスポート・インタフェースのそれぞれは、
前記制御モジュールによって提供された前記切替情報に基づいて、前記複数の異なるTCP実装の1つをある特定の通信セッションへ割り当てるモジュールと、
到来パケットのヘッダと発信パケットのヘッダとをチェックすることによりセッションを識別し、それに基づいて、前記到来パケット及び前記発信パケットが前記複数の異なるTCP実装のどれに送られるべきかを決定するモジュールと
を備えるものである、請求項1に記載の装置。
【請求項3】
前記制御モジュールは、前記トランスポート層より下位に実装されたネットワークの構造のタイプを代表する1つ以上の特性を決定して、トランスポート・プロトコルがアンダーレイ・ネットワークの構造に適応するように、選択されるべきトランスポート・プロトコルを決定するモジュールを含むものである、請求項1または2に記載の装置。
【請求項4】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、既存のオペレーティング・システム機能を利用してアンダーレイ・ネットワークの特性を決定するモジュールを含むものである、請求項1乃至3のいずれか1項に記載の装置。
【請求項5】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、プロービング信号を送信し、該プロービング信号に対する応答を評価し、該評価に基づいてアンダーレイ・ネットワークの特性を決定するモジュールを含むものである、請求項1乃至4のいずれか1項に記載の装置。
【請求項6】
アンダーレイ・ネットワークの特性を決定する前記モジュールは、前記通信セッションにおける他方のエンドポイントとの通信を確立し、前記通信セッションの前記他方のエンドポイントにおける対応するモジュールと前記通信セッションで使用される適切なトランスポート・プロトコル実装セッションをネゴシエーションするためのモジュールを含むものである、請求項1乃至5のいずれか1項に記載の装置。
【請求項7】
前記制御モジュールは、前記通信セッションを要求しているアプリケーションの特性に基づいて使用すべきTCP実装を決定するモジュールを含むものである、請求項1乃至6のいずれか1項に記載の装置。
【請求項8】
前記制御モジュールは、前記複数の異なるトランスポート・プロトコル実装の1つを使用する通信が開始する前に前記切替情報を決定するように構成されるものである、請求項1乃至7のいずれか1項に記載の装置。
【請求項9】
前記制御モジュールは、現在実行中の通信セッションにおいて、実行時間中に前記複数の異なるトランスポート・プロトコル実装間の切替えを行うように構成されるものである、請求項1乃至8のいずれか1項に記載の装置。
【請求項10】
前記制御モジュールは、
実行時間中に新たなトランスポート・プロトコル実装へ切替えるために前記新たなトランスポート・プロトコル実装の使用の開始をトリガーするモジュールと、
現在実行中のトランスポート・プロトコル・セッションのTCPヘッダのコンテンツを変換して、前記新しく開始されたTCP実装へ送られた前記ヘッダ及び前記新しく開始されたTCPから送られてきた前記ヘッダが、現在実行中の通信セッションの前記他方の通信エンドポイントにおけるトランスポート・プロトコル実装によって送受信された前記TCPヘッダと整合するようにするモジュールと
を備えるものである、請求項9に記載の装置。
【請求項11】
前記制御モジュールは、
ある異なるトランスポート・プロトコル実装に切替えられることになっているその切替え前のトランスポート・プロトコル・セッションからヘッダデータを抽出するモジュールと、
前記抽出されたトランスポート・プロトコル・セッションのヘッダデータを前記新しく開かれたトランスポート・プロトコル・セッションに挿入して、前記新しく開かれたトランスポート・プロトコル・セッションが、ある異なるトランスポート・プロトコル実装を介して、前記切替え前のトランスポート・プロトコル・セッションを再開することができるようにするモジュールと
を備えるものである、請求項9または10に記載の装置。
【請求項12】
前記制御モジュールは、現在実行中のトランスポート・プロトコル・セッションが、第1の通信エンドポイントにおいてある異なるトランスポート・プロトコル実装へ切替えられる場合において、切替が実行されるべきである対応する第2の通信エンドポイントにおける対応するモジュールとネゴシエーションして、それらの通信エンドポイントにおける両方の制御モジュールが、ある異なるトランスポート・プロトコル実装を対象とする新たなトランスポート・プロトコル・セッションを開き、その際に実行中のトラフィックが、前記新たに開かれたトランスポート・プロトコル・セッションと両方の通信エンドポイントにおける前記異なるトランスポート・プロトコル実装とを通じて再開されるようにするモジュールを備えるものである、請求項9乃至11のいずれか1項に記載の装置。
【請求項13】
前記制御モジュールは、ある異なるトランスポート・プロトコル実装への切替をトリガーするためのトリガー信号を受信するように構成されるものである、請求項9乃至12のいずれか1項に記載の装置。
【請求項14】
前記トリガー信号は、
移動体通信のセッションの間のハンドオーバと、
現在実行中の通信セッションの間のサービス品質の変更と、
現在実行中の通信セッションで使用されるハードウェアまたはソフトウェアモジュールの変更と
のいずれか1つのメカニズムに応答して生成されるものである、請求項13に記載の装置。
【請求項15】
前記制御モジュールは、前記複数の異なるTCP実装のどれが使用されるべきかの決定がそれに基づいて行われる1つ以上のパラメータを継続的にモニタするためのモジュールを更に備えており、
前記モニタするためのモジュールは、セットの所定ルールに従って前記モニタされた1つ以上のパラメータの変化が現在使用されているTCPバージョンから異なるTCPバージョンへの変更が実行されるべきことを示唆している場合には、現在使用されているTCPバージョンからある異なるTCPバージョンへの変更をトリガーするものである、請求項1乃至15のいずれか1項に記載の装置。
【請求項16】
トランスポート・プロトコルの異なる実装間の切替えを行う方法であって、
前記トランスポート・プロトコルの複数の異なる実装をトランスポート層より上の層と接続するために前記複数の異なるトランスポート・プロトコル実装を上位トランスポート・インタフェースと接続するステップと、
前記トランスポート・プロトコルの前記複数の異なる実装をトランスポート層より下の層と接続するために前記複数の異なるトランスポート・プロトコル実装を下位トランスポート・インタフェースと接続するステップと、
前記上位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記異なるトランスポート・プロトコル実装との間の接続とを切替情報に基づいてそれぞれ切替えるステップと、
ある通信セッションに対して最適化されたデータフローを与えるトランスポート・プロトコル実装が選択されるように、前記上位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続と、前記下位トランスポート・インタフェースと前記複数の異なるトランスポート・プロトコル実装との間の接続とをそれぞれ切替えるための前記切替情報を決定するステップと
を含む方法。
【請求項17】
前記切替情報に基づいて前記複数の異なるTCP実装の1つをある特定の通信セッションへ割り当てるステップと、
到来パケットのヘッダと発信パケットのヘッダとをチェックすることによりセッションを識別し、それに基づいて、前記到来パケット及び前記発信パケットが前記複数の異なるTCP実装のどれに送られるべきかを決定するステップと
を更に含む請求項16に記載の方法。
【請求項18】
前記トランスポート層より下位に実装されたネットワークの構造のタイプを代表する1つ以上の特性を決定して、トランスポート・プロトコルがアンダーレイ・ネットワークの構造に適合するように、選択されるべきトランスポート・プロトコルを決定するステップを含む、請求項16または17に記載の方法。
【請求項19】
既存のオペレーティング・システム機能を利用してアンダーレイ・ネットワークの特性を決定するステップを更に含む請求項16乃至18のいずれか1項に記載の方法。
【請求項20】
プロービング信号を送信し、該プロービング信号に対する応答を評価し、該評価に基づいてアンダーレイ・ネットワークの特性を決定するステップを更に含む請求項16乃至19のいずれか1項に記載の方法。
【請求項21】
前記通信セッションの他方のエンドポイントとの通信を確立し、前記通信セッションの前記他方のエンドポイントにおける対応するモジュールと前記通信セッションで使用される適切なトランスポート・プロトコル実装セッションについてネゴシエーションするステップを更に含む請求項16乃至20のいずれか1項に記載の方法。
【請求項22】
前記通信セッションを要求しているアプリケーションの特性に基づいて使用すべきTCP実装を決定するステップを更に含む請求項16乃至21のいずれか1項に記載の方法。
【請求項23】
前記複数の異なるトランスポート・プロトコル実装の1つを使用する通信が開始する前に前記切替情報を決定するステップを更に含む請求項16乃至22のいずれか1項に記載の方法。
【請求項24】
現在実行中の通信セッションにおいて、実行中に前記複数の異なるトランスポート・プロトコル実装を切替えるステップを更に含む請求項16乃至23のいずれか1項に記載の方法。
【請求項25】
実行中に新たなトランスポート・プロトコル実装へ切替えるために前記新たなトランスポート・プロトコル実装の使用の開始をトリガーするステップと、
現在実行中のトランスポート・プロトコル・セッションのTCPヘッダのコンテンツを変換して、前記新しく開始されたTCP実装へ送られた前記ヘッダ及び前記新しく開始されたTCPから送られた前記ヘッダが、現在実行中の通信セッションの前記他方の通信エンドポイントにおけるトランスポート・プロトコル実装によって送受信された前記TCPヘッダと整合するようにするステップと
を更に含む請求項24に記載の方法。
【請求項26】
ある異なるトランスポート・プロトコル実装に切替えられることになっているその切替え前のトランスポート・プロトコル・セッションからヘッダデータを抽出するステップと、
前記抽出されたトランスポート・プロトコル・セッションのヘッダデータを前記新しく開かれたトランスポート・プロトコル・セッションに挿入して、前記新しく開かれたトランスポート・プロトコル・セッションが、ある異なるトランスポート・プロトコル実装を介して、前記切替え前のトランスポート・プロトコル・セッションを再開することができるようにするステップと
を更に含む請求項24または25に記載の方法。
【請求項27】
現在実行中のトランスポート・プロトコル・セッションが第1の通信エンドポイントにおいてある異なるトランスポート・プロトコル実装へ切替えられる場合において、切替が実行されるべきである対応する第2の通信エンドポイントにおける対応するモジュールとネゴシエーションして、それらの通信エンドポイントにおける両方の制御モジュールが、ある異なるトランスポート・プロトコル実装を対象とする新たなトランスポート・プロトコル・セッションを開き、その際に実行中のトラフィックが、前記新たに開かれたトランスポート・プロトコル・セッションと両方の通信エンドポイントにおける前記異なるトランスポート・プロトコル実装とを通じて再開されるようにするステップを更に含む請求項24乃至26のいずれか1項に記載の方法。
【請求項28】
ある異なるトランスポート・プロトコル実装への切替をトリガーするためのトリガー信号を受信するステップを更に含む請求項24乃至27のいずれか1項に記載の方法。
【請求項29】
前記トリガー信号は、
移動体通信のセッションの間のハンドオーバと、
現在実行中の通信セッションの間のサービス品質の変更と、
現在実行中の通信セッションで使用されるハードウェアまたはソフトウェアモジュールの変更と、
のいずれか1つのメカニズムに応答して生成される、請求項28に記載の方法。
【請求項30】
前記複数の異なるTCP実装のうちのどれが使用されるべきかの決定がそれに基づいて行われる1つ以上のパラメータを継続的にモニタするステップと、
セットの所定ルールに従って前記モニタされた1つ以上のパラメータの変化が現在使用されているTCPバージョンから異なるTCPバージョンへの変更が実行されるべきことを示唆している場合には、現在使用されているTCPバージョンからある異なるTCPバージョンへの変更をトリガーするステップと
を更に含む請求項16乃至29のいずれか1項に記載の方法。
【請求項31】
コンピュータ上で実行させる際に請求項16乃至30のいずれか1項に記載された方法を実行することができるコンピュータプログラムコードを含むコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公表番号】特表2008−518531(P2008−518531A)
【公表日】平成20年5月29日(2008.5.29)
【国際特許分類】
【出願番号】特願2007−538279(P2007−538279)
【出願日】平成16年10月29日(2004.10.29)
【国際出願番号】PCT/EP2004/052738
【国際公開番号】WO2006/045345
【国際公開日】平成18年5月4日(2006.5.4)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.i−mode
2.イーサネット
3.ETHERNET
4.UNIX
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】