(57)【要約】      （修正有）【課題】MPTCPに対応した装置とTCPにしか対応していない装置とが併存する状態においてもマルチパス接続可能な方法を提供する。【解決手段】中継モジュールRは、第1のホストH1が送信した第1のコネクション設定リクエストを取得する取得モジュールCMと、第2のホストH2との間で初期の補助的なコネクションを設定するために第2のコネクション設定リクエストを送信し、第2のホストH2から第1のアクノリッジメントレスポンス（ＡＣＫ）を受信する第１のインタフェースI1と、第1のコネクション設定リクエストと第1のＡＣＫとが同じマルチパス許容性を示す場合、転送モードを起動し、第1のコネクション設定リクエストと第1のＡＣＫとが異なるマルチパス許容性を示す場合、追加的な補助的なコネクション、及び中継モードを起動するコンテキストディスカバリ部3とを有する。【選択図】図１
2015070616.tif 000002
【特許請求の範囲】
【請求項１】
中継モジュールを経由して少なくとも１つの通信ネットワークにより第１のホスト及び第２のホストを接続するために中継モジュールが実行する方法であって、
＿前記第２のホストとのメインコネクションを設定するために前記第１のホストが送信した第１のコネクション設定リクエストを取得するステップと、
＿前記中継モジュールと前記第２のホストとの間で初期の補助的なコネクションを設定するために第２のコネクション設定リクエストを前記第２のホストに送信するステップと、
＿前記第２のホストから第１のアクノリッジメントレスポンスを受信するステップと、
＿前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが同じマルチパス許容性を示す場合、設定される直接的なメインコネクションにより搬送されるトラフィックを処理するために、転送モードを起動するステップであって、
・  前記第２のホストから受信した前記第１のアクノリッジメントレスポンスを破棄し、前記初期の補助的なコネクションの設定を解除する処理と、
・  前記第１のコネクション設定リクエストを前記第２のホストに公表する処理と、
・  前記直接的なメインコネクションを設定するために、送信された前記第１のコネクション設定リクエストに応答して前記第２のホストから送信された第２のアクノリッジメントレスポンスを前記第１のホストに転送する処理とを実行するステップと、
＿前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが異なるマルチパス許容性を示す場合、
・  前記第１のホストと前記中継モジュールとの間に設定される追加的な補助的なコネクション、及び
・  前記中継モジュールと前記第２のホストとの間に設定される前記初期の補助的なコネクション
により搬送されるトラフィックを処理するために、中継モードを起動するステップと
を有する方法。
【請求項２】
前記第１のコネクション設定リクエストを受信した場合に、前記初期の補助的なコネクションの設定を行うように前記中継モジュールの第１のインタフェースを設定するステップを有する請求項１に記載の方法。
【請求項３】
前記第２のコネクション設定リクエストが、初期の補助的なマルチパスコネクションの設定を要求する、請求項１又は２に記載の方法。
【請求項４】
前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが、前記中継モジュールのコンテキストディスカバリ部に保存される、請求項１〜３のうち何れか１項に記載の方法。
【請求項５】
前記中継モードが起動された場合に、前記中継モジュールが、
＿  前記第１のホストと前記中継モジュールとの間で前記追加的な補助的なコネクションを設定するために前記第１のコネクション設定リクエストを処理するステップと、
＿  前記中継モジュールと前記第２のホストとの間で前記初期の補助的なコネクションを設定するために前記第１のアクノリッジメントレスポンスを処理するステップと、
＿  前記初期の補助的なコネクションと前記追加的な補助的なコネクションとの間にリンクを形成するステップと
を実行する、請求項４に記載の方法。
【請求項６】
前記初期の補助的なコネクションと前記追加的な補助的なコネクションとの間の前記リンクが、対応関係テーブルを利用している、請求項５に記載の方法。
【請求項７】
前記第１のコネクション設定リクエストを処理する前記ステップが、
前記第１のホストとの前記追加的な補助的なコネクションの設定を処理するように前記中継モジュールの第２のインタフェースを設定するステップと、
前記第２のインタフェースに対する保存されている前記第１のコネクション設定リクエストを解除するステップと、
前記追加的な補助的なコネクションを設定するために、前記第１のホストが要求した前記メインコネクションを受け入れるステップと
を有する、請求項５又は６に記載の方法。
【請求項８】
前記第１のアクノリッジメントレスポンスを処理する前記ステップが、
第１のインタフェースに対する保存されている前記第１のアクノリッジメントレスポンスを解除するステップと、
前記追加的な補助的なコネクションを設定するために、前記中継モジュールが要求した前記初期の補助的なコネクションを受け入れるステップと
を有する、請求項５〜７のうち何れか１項に記載の方法。
【請求項９】
少なくとも１つの通信ネットワークにより第１のホスト及び第２のホストを接続する中継モジュールであって、
＿前記第２のホストとのメインコネクションを設定するために前記第１のホストが送信した第１のコネクション設定リクエストを取得するように形成された取得モジュールと、
＿前記中継モジュールと前記第２のホストとの間で初期の補助的なコネクションを設定するために第２のコネクション設定リクエストを前記第２のホストに送信し、前記第２のホストから第１のアクノリッジメントレスポンスを受信するように形成された通信モジュールと、
＿(a)前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが同じマルチパス許容性を示す場合、設定される直接的なメインコネクションにより搬送されるトラフィックを処理するために、転送モードを起動し、(b)前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが異なるマルチパス許容性を示す場合、前記第１のホストと前記中継モジュールとの間に設定される追加的な補助的なコネクション、及び、前記中継モジュールと前記第２のホストとの間に設定される前記初期の補助的なコネクションにより搬送されるトラフィックを処理するために、中継モードを起動するコンテキストディスカバリ部と
を有し、取得モジュールは、
・  前記第２のホストから受信した前記第１のアクノリッジメントレスポンスを破棄し、前記初期の補助的なコネクションの設定を解除する処理と、
・  前記第１のコネクション設定リクエストを前記第２のホストに公表する処理と、
・  前記直接的なメインコネクションを設定するために、送信された前記第１のコネクション設定リクエストに応答して前記第２のホストから送信された第２のアクノリッジメントレスポンスを前記第１のホストに転送する処理と
を実行する、中継モジュール。
【請求項１０】
前記コンテキストディスカバリ部は、前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとを保存し、それらのマルチパス許容性を判別するように形成されている、請求項９に記載の中継モジュール。
【請求項１１】
前記転送モードで処理されたトラフィックと前記中継モードで処理されたトラフィックとを区別するように形成されたトラフィック識別部を有する請求項９又は１０に記載の中継モジュール。
【請求項１２】
前記中継モードにおいて前記第１のホストと前記第２のホストとの間で前記初期の及び追加的な補助的なコネクションにより搬送されるトラフィックを中継するための中継アプリケーションを有する請求項９〜１１のうち何れか１項に記載の中継モジュール。
【請求項１３】
少なくとも１つの通信ネットワークにより第１のホスト及び第２のホストを接続する中継モジュールであって、
＿前記第２のホストとのメインコネクションを設定するために前記第１のホストが送信した第１のコネクション設定リクエストを取得する処理と、
＿前記中継モジュールと前記第２のホストとの間で初期の補助的なコネクションを設定するために第２のコネクション設定リクエストを前記第２のホストに送信する処理と、
＿前記第２のホストから第１のアクノリッジメントレスポンスを受信する処理と、
＿(a)前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが同じマルチパス許容性を示す場合、設定される直接的なメインコネクションにより搬送されるトラフィックを処理するために、転送モードを起動し、(b)前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが異なるマルチパス許容性を示す場合、前記第１のホストと前記中継モジュールとの間に設定される追加的な補助的なコネクション、及び、前記中継モジュールと前記第２のホストとの間に設定される前記初期の補助的なコネクションにより搬送されるトラフィックを処理するために、中継モードを起動する処理と
＿前記第２のホストから受信した前記第１のアクノリッジメントレスポンスを破棄し、前記初期の補助的なコネクションの設定を解除する処理と、
＿前記第１のコネクション設定リクエストを前記第２のホストに公表する処理と、
＿前記直接的なメインコネクションを設定するために、送信された前記第１のコネクション設定リクエストに応答して前記第２のホストから送信された第２のアクノリッジメントレスポンスを前記第１のホストに転送する処理と
を実行する少なくとも１つのプロセッサを有する中継モジュール。
【請求項１４】
通信ネットワークからダウンロードすることが可能であり、及び/又は、コンピュータにより読み取ることが可能な記憶媒体に記録され、及び/又は、請求項１〜８のうちの何れか１項に記載の方法をプロセッサに実行させるプログラムコード命令を有するコンピュータプログラム。
【請求項１５】
コンピュータにより読み取ることが可能な記憶媒体であって、請求項１〜８のうちの何れか１項に記載の方法をプロセッサに実行させるプログラムコード命令を有するコンピュータプログラムを保存する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に1つ以上の通信ネットワークを介して第1及び第2のホストの間でデータパケットを通信すること等に関連し、特に、マルチホームのマルチパスプロトコル対応ホストとシングルパスプロトコルホストとを中継モジュールを経由する少なくとも1つの通信ネットワークを介して接続するための方法及び中継モジュールに関連するが、これらに限定されない。
【背景技術】
【０００２】
この「背景技術」の欄は、明細書、特許請求の範囲及び/又は図面に示される本発明の様々な形態に関連する様々な観点からの技術を読者に紹介するように意図されている。本説明は、本発明の様々な形態を適切に理解することを促すように読者に背景技術を呈示することに資する。本説明はこれらの観点から理解されるべきであり、従来技術として認めたわけではないことが理解されるべきである。
【０００３】
今日、マルチメディア及びデータサービスは様々な通信経路を利用している(通信経路は、例えば、衛星、ADSL、3G、4G及びWiFi等である)。そのような様々な利用可能な通信経路の恩恵を享受するため、最近の装置はほとんど複数の無線インタフェースを備えている。特に、ラップトップ、スマートフォン及びタブレット等のような新しい世代のモバイル装置は、通常、WiFi、3G及びブルートゥースのインタフェースを備えている。
【０００４】
しかしながら、マルチメディアサービスは、通常、通信プロトコルとして通信制御プロトコル(TCP)に従って実現されており、TCPは2つの装置間のコネクション各々について1つの通信経路しか使用しない。従って、マルチメディアサービスは、モバイル装置の複数のインタフェースにより提供される利用可能な様々な通信経路形態の恩恵を享受してパフォーマンス、障害耐性(resilience)或いは利便性等を改善することができない。
【０００５】
そのような欠点を克服するため、ある研究団体はマルチパス通信制御プロトコル(MuliPath  Transmission  Control  Protocol：MPTCP)を開発しており、これは、2つの装置間にある複数の経路を介して、1つのエンドトゥエンドコネクションのデータを同時に送信する機能を提供するように、従来のTCPプロトコルを拡張したものである。MPTCPについては、インターネットエンジニアリングタスクフォースにより2013年1月付けで公表された非特許文献1等に記載されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】IETF  RFC-6824,“TCP  Extensions,  for  Multipath  Operation  with  Multiple  Addresses”(A.Ford  et.  al.)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明に関し、次のような意味で用語が理解されるべきである。
【０００８】
＿「マルチホーム装置(multi-homed  device)」又は「マルチホームホスト」：この装置は少なくとも2つの(有線及び/又は無線による)通信インタフェースを有し、各々のインタフェースは自身の通信アドレス(例えば、IPアドレス)を有し、この装置はマルチパスモードで相手の通信装置(おそらくは異なるタイプの装置)とデータパケットを送受信することが可能である。「相手の通信装置」は、「リモート通信装置」、「遠隔通信装置」等と言及されてもよい。従って、マルチホーム装置は、固定又は移動電話(移動電話は、例えば「スマートフォン」の形式であってもよい)、固定式又は携帯式コンピュータ、パーソナルディジタルアシスタント(PDA)、コンテンツ受信機(例えば、デコーダ、住居用ゲートウェイ、セットトップボックス(STB)等)、或いはコンテンツサーバのようなネットワーク装置等を含んでよい。
【０００９】
＿「通信経路」又は「通信パス」：経路は、2つの通信インタフェース(装置各々にあるインタフェース)が存在するおかげで2つの通信装置(おそらくは、マルチホーム装置)を接続し、通信経路は、2つの対応する通信インタフェースの通信アドレスのペアにより特定される。「ペア」は、「対」、「組」等と言及されてもよい。
【００１０】
＿「サブフロー(sub-flow)」：TCPパケットのフローは1つの経路を介して流れ、これは、より大規模なMPTCPコネクションの一部を形成する。そのようなサブフローは、本来のTCPコネクション(regular  TCP  connection)と同様に開始され終了する。サブフローは本来のTCPコネクションに対して本来的でないコネクションとして言及されてもよい。
【００１１】
第1及び第2のマルチホーム装置の間のMPTCPコネクションは、メイン通信経路に関連するメインの本来のTCPコネクションと、1つ以上の補助的なTPCコネクションとで形成され、補助的なTCPコネクションは、メインの本来のTCPコネクションに結合又はリンクされ、補助的な通信経路に関連している。そのようなMPTCPコネクションは、双方のエンド装置のアプリケーションにとって、単独のTPCコネクションのように見える。
【００１２】
(少なくとも発明者等に)既に知られているように、マルチホーム装置は、MPTCPプロトコルの実現を支援することが可能であり(MPTCP対応(MPTCP  capable)と言及される)、通常、MPTCPコネクションを開始するために使用されるべきメインインタフェースとして指定される1つの固定された通信インタフェースを有する。
【００１３】
新たなインターネットプロトコルが導入される場合には、通常、それが広く普及するまでに新システムの配備又は展開は徐々に時間をかけて行われる。従って、MPTCPに対応した装置とTCPにしか対応していない装置とが併存する状態が長期間続き、その間、マルチパスの状態は完全には応用できないことが懸念される。例えば、MPTCPを利用できないTCPビデオサーバは、標準的なTCPコネクション及び単一の経路の状態にサービスを制限する一方、クライアント装置にはマルチパスの状況に対応できる複数のインタフェースが備わっていることが考えられる(この場合マルチパスの状態を完全に活用することはできない)。
【００１４】
本発明は少なくともこのような欠点を克服する手段を提案する。
【課題を解決するための手段】
【００１５】
一実施形態による方法は、
中継モジュールを経由して少なくとも１つの通信ネットワークにより第１のホスト及び第２のホストを接続するために中継モジュールが実行する方法であって、
＿前記第２のホストとのメインコネクションを設定するために前記第１のホストが送信した第１のコネクション設定リクエストを取得するステップと、
＿前記中継モジュールと前記第２のホストとの間で初期の補助的なコネクションを設定するために第２のコネクション設定リクエストを前記第２のホストに送信するステップと、
＿前記第２のホストから第１のアクノリッジメントレスポンスを受信するステップと、
＿前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが同じマルチパス許容性を示す場合、設定される直接的なメインコネクションにより搬送されるトラフィックを処理するために、転送モードを起動するステップであって、
・  前記第２のホストから受信した前記第１のアクノリッジメントレスポンスを破棄し、前記初期の補助的なコネクションの設定を解除する処理と、
・  前記第１のコネクション設定リクエストを前記第２のホストに公表する処理と、
・  前記直接的なメインコネクションを設定するために、送信された前記第１のコネクション設定リクエストに応答して前記第２のホストから送信された第２のアクノリッジメントレスポンスを前記第１のホストに転送する処理とを実行するステップと、
＿前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが異なるマルチパス許容性を示す場合、
・  前記第１のホストと前記中継モジュールとの間に設定される追加的な補助的なコネクション、及び
・  前記中継モジュールと前記第２のホストとの間に設定される前記初期の補助的なコネクション
により搬送されるトラフィックを処理するために、中継モードを起動するステップと
を有する方法である。
【図面の簡単な説明】
【００１６】
【図１】本発明の好適な実施形態による中継モジュールを有するネットワークアーキテクチャの具体例を示す概略図。
【図２】好適な実施形態による図1の中継モジュールにより実行される方法のフローチャート。
【発明を実施するための形態】
【００１７】
＜実施の形態の概要＞
本発明の一実施形態による方法は、
中継モジュールを経由して少なくとも１つの通信ネットワークにより第１のホスト及び第２のホストを接続するために中継モジュールが実行する方法であって、
＿前記第２のホストとのメインコネクションを設定するために前記第１のホストが送信した第１のコネクション設定リクエストを取得するステップと、
＿前記中継モジュールと前記第２のホストとの間で初期の補助的なコネクションを設定するために第２のコネクション設定リクエストを前記第２のホストに送信するステップと、
＿前記第２のホストから第１のアクノリッジメントレスポンスを受信するステップと、
＿前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが同じマルチパス許容性を示す場合、設定される直接的なメインコネクションにより搬送されるトラフィックを処理するために、転送モードを起動するステップであって、
・  前記第２のホストから受信した前記第１のアクノリッジメントレスポンスを破棄し、前記初期の補助的なコネクションの設定を解除する処理と、
・  前記第１のコネクション設定リクエストを前記第２のホストに公表する処理と、
・  前記直接的なメインコネクションを設定するために、送信された前記第１のコネクション設定リクエストに応答して前記第２のホストから送信された第２のアクノリッジメントレスポンスを前記第１のホストに転送する処理とを実行するステップと、
＿前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが異なるマルチパス許容性を示す場合、
・  前記第１のホストと前記中継モジュールとの間に設定される追加的な補助的なコネクション、及び
・  前記中継モジュールと前記第２のホストとの間に設定される前記初期の補助的なコネクション
により搬送されるトラフィックを処理するために、中継モードを起動するステップと
を有する方法である。
【００１８】
従って、本発明による方法は、例えば、マルチホームマルチパスプロトコル対応の第1のホストと中継モジュールとの間で、第2のホストに如何なるマルチパス対応機能も要求することなく、マルチパスアーキテクチャによる恩恵を享受することが可能である(これらの装置の関係は逆でもよい)。第1のホストのインタフェースのパフォーマンスが低く(例えば、帯域幅が狭い)、(例えば、無線インタフェースのように)非決定的(non-deterministic)である場合に、本発明は特に有益である。この場合、様々なインタフェースの帯域幅を集約することにより、マルチパスアーキテクチャは、第1のホストの側で多くの容量及び優れた信頼性の双方を提供することができる。
【００１９】
一実施形態によれば、本方法は、前記第１のコネクション設定リクエストを受信した場合に、前記初期の補助的なコネクションの設定を行うように前記中継モジュールの第１のインタフェースを設定するステップを有する。
【００２０】
有利なことに、前記第２のコネクション設定リクエストが、初期の補助的なマルチパスコネクションの設定を要求してもよい。例えば、上記の例では、第1のホストは標準的なTCPしか利用できず、第2のホストはマルチホーム及びMPTCP対応であり、この場合、初期の補助的なコネクションは、中継モジュールと第2のホストとの間のマルチパスであってもよい。
【００２１】
更に、前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが、前記中継モジュールのコンテキストディスカバリ部に保存されることが可能である。
【００２２】
更に、本方法は、前記中継モードが起動された場合に、前記中継モジュールが、
＿  前記第１のホストと前記中継モジュールとの間で前記追加的な補助的なコネクションを設定するために前記第１のコネクション設定リクエストを処理するステップを実行してもよい。一例として、第1のコネクション設定リクエストがマルチパス許容オプション(multipath  property  option)を含む場合、追加的な補助的なコネクションはマルチパスコネクションとすることが可能である。
【００２３】
＿  中継モジュールは、前記中継モジュールと前記第２のホストとの間で前記初期の補助的なコネクションを設定するために前記第１のアクノリッジメントレスポンスを処理するステップを実行してもよい。一例として、第1のアクノリッジメントレスポンスがマルチパス許容オプションを含む場合、初期の補助的なコネクションはマルチパスコネクションである。
【００２４】
＿  中継モジュールは、前記初期の補助的なコネクションと前記追加的な補助的なコネクションとの間にリンクを形成するステップを実行してもよい。
【００２５】
本発明の別の実施形態において、前記初期の補助的なコネクションと前記追加的な補助的なコネクションとの間の前記リンクは、対応関係テーブルを利用することが可能である。
【００２６】
また、前記第１のコネクション設定リクエストを処理する前記ステップが、
前記第１のホストとの前記追加的な補助的なコネクションの設定を処理するように前記中継モジュールの第２のインタフェースを設定するステップと、
前記第２のインタフェースに対する保存されている前記第１のコネクション設定リクエストを解除するステップと、
前記追加的な補助的なコネクションを設定するために、前記第１のホストが要求した前記メインコネクションを受け入れるステップと
を有していてもよい。
【００２７】
更に、前記第１のアクノリッジメントレスポンスを処理する前記ステップが、
前記第１のインタフェースに対する保存されている前記第１のアクノリッジメントレスポンスを解除するステップと、
前記追加的な補助的なコネクションを設定するために、前記中継モジュールが要求した前記初期の補助的なコネクションを受け入れるステップと
を有していてもよい。
【００２８】
本発明の一実施形態による中継モジュールは、
少なくとも１つの通信ネットワークにより第１のホスト及び第２のホストを接続する中継モジュールであって、
＿前記第２のホストとのメインコネクションを設定するために前記第１のホストが送信した第１のコネクション設定リクエストを取得するように形成された取得モジュールと、
＿前記中継モジュールと前記第２のホストとの間で初期の補助的なコネクションを設定するために第２のコネクション設定リクエストを前記第２のホストに送信し、前記第２のホストから第１のアクノリッジメントレスポンスを受信するように形成された通信モジュールと、
＿(a)前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが同じマルチパス許容性マルチパス許容性を示す場合、設定される直接的なメインコネクションにより搬送されるトラフィックを処理するために、転送モードを起動し、(b)前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが異なるマルチパス許容性を示す場合、前記第１のホストと前記中継モジュールとの間に設定される追加的な補助的なコネクション、及び、前記中継モジュールと前記第２のホストとの間に設定される前記初期の補助的なコネクションにより搬送されるトラフィックを処理するために、中継モードを起動するコンテキストディスカバリ部と
を有し、取得モジュールは、
・  前記第２のホストから受信した前記第１のアクノリッジメントレスポンスを破棄し、前記初期の補助的なコネクションの設定を解除する処理と、
・  前記第１のコネクション設定リクエストを前記第２のホストに公表する処理と、
・  前記直接的なメインコネクションを設定するために、送信された前記第１のコネクション設定リクエストに応答して前記第２のホストから送信された第２のアクノリッジメントレスポンスを前記第１のホストに転送する処理と
を実行する、中継モジュールである。
【００２９】
更に、前記コンテキストディスカバリ部は、前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとを保存し、それらのマルチパス許容性を判別するように形成されることが可能である。
【００３０】
更に、中継モジュールは、
前記転送モードで処理されたトラフィックと前記中継モードで処理されたトラフィックとを区別するように形成されたトラフィック識別部と、
前記中継モードにおいて前記第１のホストと前記第２のホストとの間で前記初期の及び追加的な補助的なコネクションにより搬送されるトラフィックを中継するための中継アプリケーションと
を有することが可能である。
【００３１】
本発明の一実施形態による中継モジュールは、
少なくとも１つの通信ネットワークにより第１のホスト及び第２のホストを接続する中継モジュールであって、
＿前記第２のホストとのメインコネクションを設定するために前記第１のホストが送信した第１のコネクション設定リクエストを取得する処理と、
＿前記中継モジュールと前記第２のホストとの間で初期の補助的なコネクションを設定するために第２のコネクション設定リクエストを前記第２のホストに送信する処理と、
＿前記第２のホストから第１のアクノリッジメントレスポンスを受信する処理と、
＿(a)前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが同じマルチパス許容性を示す場合、設定される直接的なメインコネクションにより搬送されるトラフィックを処理するために、転送モードを起動し、(b)前記第１のコネクション設定リクエストと前記第１のアクノリッジメントレスポンスとが異なるマルチパス許容性を示す場合、前記第１のホストと前記中継モジュールとの間に設定される追加的な補助的なコネクション、及び、前記中継モジュールと前記第２のホストとの間に設定される前記初期の補助的なコネクションにより搬送されるトラフィックを処理するために、中継モードを起動する処理と
＿前記第２のホストから受信した前記第１のアクノリッジメントレスポンスを破棄し、前記初期の補助的なコネクションの設定を解除する処理と、
＿前記第１のコネクション設定リクエストを前記第２のホストに公表する処理と、
＿前記直接的なメインコネクションを設定するために、送信された前記第１のコネクション設定リクエストに応答して前記第２のホストから送信された第２のアクノリッジメントレスポンスを前記第１のホストに転送する処理と
を実行する少なくとも１つのプロセッサを有する中継モジュールである。
【００３２】
本発明はコンピュータプログラム又はコンピュータプログラムプロダクトにも関連し、コンピュータプログラムは、通信ネットワークからダウンロードすることが可能であり、及び/又は、コンピュータにより読み取ることが可能な記憶媒体に記録され、及び/又は、上記の方法をプロセッサに実行させる。
【００３３】
また、本発明はコンピュータにより読み取ることが可能な有形の媒体であって、上記の方法をプロセッサに実行させるプログラムコード命令を有するコンピュータプログラムを保存する媒体にも関連する。
【００３４】
実施形態の目的に沿う様々な具体例も本願で説明される。これらの実施形態は、本発明がとり得る所定の形式の簡易な概要を読者に提供するために示されているに過ぎず、これらの実施形態は本発明の範囲を制限するようには意図されていないことが、理解されるべきである。実際、本発明は以下の説明において明示的には示されていない様々な形態も包含する。
【００３５】
＜図面＞
本発明は、非限定的な形式で添付図面と共に以下の実施形態及び動作例により適切に理解され表現される。
【００３６】
図1は本発明の好適な実施形態による中継モジュールを有するネットワークアーキテクチャの具体例を示す概略図である。
【００３７】
図2は好適な実施形態による図1の中継モジュールにより実行される方法のフローチャートを示す。
【００３８】
明細書、特許請求の範囲及び図面により開示される個々の内容は、独立に使用されてもよいし、適切な任意の組み合わせで使用されてもよい。適切である限り、要素はハードウェア、ソフトウェア又はそれらの組み合わせにより実現されてよい。
【００３９】
更に、図1において、図示されているブロックは機能的なユニットであり、物理的に分離されたユニットに対応してもよいし、或いは同一の物理ユニット内に包含されていてもよい。すなわち、それらはソフトウェア又はハードウェアに配備されてもよいし、或いは1つ又は複数の集積回路で実施されてもよい。例えば、それらのブロック又はそれらのうち少なくともいくつかは、固有の素子又はコンポーネントにグループ化されてもよいし、或いは同じソフトウェアの機能群を形成していてもよい。また、それらのブロックは最終的には複数の別個のユニットに分割されていてもよい。
【００４０】
＜実施の形態の詳細な説明＞
好適な実施形態により、本発明は、インターネットプロトコルにおける標準的なTCP及びマルチパスプロトコルMPTCPとともに説明される。ただし、本発明はそのような特定の実施形態には限定されず、他のマルチパスプロトコルも当然に想定されており実現可能である。
【００４１】
図1に示されているように、好適な実施形態によるネットワークアーキテクチャは、第1のホストH1と、第2のホストH2と、マルチホームMPTCP対応のミドルボックスMB(例えば、ゲートウェイ)とを有する。ホストH1及びH2はTCPを利用してデータを送受信することを希望している。「ホスト」は、クライアント(例えば、パーソナルコンピュータ、タブレット、スマートフォン等)、サーバ又はミドルボックスを指すことに留意を要する。ホストH1及びH2は何れもMPTCP対応でもよいし或いは標準のTCP対応であってもよい(後者は、TCPのみに対応しており、MPTCPには対応していない)。
【００４２】
ホストH1は、(ホームネットワークのような)第1のネットワークN1を介してミドルボックスMBに接続され、ホストH1は、(インターネットネットワークのような)第2のネットワークN2を介してホストH2に接続されることを希望している。第1のネットワークN1は、ミドルボックスMBのおかげで第2のネットワークN2に接続される。明らかに、変形例では、コネクションは第2のホストH2の側から設定し始めてもよい。
【００４３】
全てのホストの組み合わせ(標準TCP対応、MPTCP対応)を考慮して、一例としてミドルボックスMBとして形成されている中継モジュールRは、中継手順RMを実行し(中継手順RMについては図2を参照しながら説明される)、転送モード(FORWARDモード)及び中継モード(RELAYモード)という2つの動作モードが提案される。
【００４４】
ホストH1及びH2の双方が同じマルチパス対応可能性(又はマルチパス許容性)を示す場合、すなわち、ホストH1及びH2の双方がMPTCP対応である場合、或いは、ホストH1及びH2の双方が標準TCPスタックを含んでいる場合に、転送モードが起動される。これらの場合、中継モジュールRは、透明なブリッジ又はトランスペアレントブリッジとして動作し、何らかのパフォーマンス劣化を避けるための特殊な処理を行うことなく、トラフィックを転送する。
【００４５】
ホストH1及びH2が異なるマルチパス対応可能性を示す場合(例えば、一方のホストがMPTCP対応であり、他方のホストが標準TCPにしか対応していない場合)、中継モードが起動され、中継モジュールRは中継モードに切り替わり、ホストH1及びH2の間でトラフィックを中継する。
【００４６】
(少なくとも発明者等に)既に知られているように、MPTCPはTCPに対する拡張であるので、MPTCPコネクションは、通常のTCPコネクションと同じ手順(すなわち、3ウェイハンドシェーク手順(three-way  handshake)(SNY、SYN/ACK、ACK))を利用して設定されてもよい。MPTCPホストは、利用可能な経路のうちの1つを利用して、リモートホストにSYNを送信することにより、TCPコネクションを設定するホストである。追加的な経路をイネーブルにする場合、新たなTCP-3ウェイハンドシェーク手順が実行される。
【００４７】
MPTCP対応ホストにより処理を行う場合、MPTCPコネクションに帰属する全てのTCPパケットは、TCPセグメントのヘッダに含まれる特定のデータを、「オプション」フィールドに埋め込んでいる。MPTCPオプションは、「種類(kind)」の値が30に等しいことにより識別される(2014年1月3日付けのRFC6824のテーブル1参照)。また、「サブタイプ(subtype)」のフィールドは、MPTCPオプションを更に具体的に規定するのに使用される。SYN、SYN/ACK、ACKパケットの手順に関連して、リモートホストがMPTCPをサポートしているか否かを検査するために、これらのオプションが設計されている。これらは、利用可能な経路に沿って追加的なサブフローを安全に設定するためにホストが何らかの情報を送受信できるようにする。MPTCPサブフローは、IPアドレスのペアにより決定され、ペアの内の一方は第1のホストH1(例えば、クライアント)に帰属し、ペアの内の他方は第2のホストH2(例えば、サーバ)に帰属する。
【００４８】
MPTCPコネクションが設定される場合、標準のTCPスリーウェイハンドシェーク手順がSYN、SYN/ACK及びACKパケットと共に実行され、これらのパケットは、0に等しいサブタイプ値により識別されるマルチパス許容性オプション(すなわち、MP_CAPABLE)を担う。このオプションは、送信側がマルチパスTCPを実行可能であることを宣言する。
【００４９】
次に、追加的な経路を設定する場合、サブフローは、設定されるMPTCPコネクションに関連付けられる。新たなTCPスリーウェイハンドシェーク手順がその後にSYN、SYN/ACK及びACKパケットと共に実行され、これらのパケットは、1に等しいサブタイプ値により識別されるマルチパスジョインオプション(すなわち、MP_JOIN)を担う。
【００５０】
図1及び図2に示されるように、ホストH1及びH2双方の間でTCPトラフィックを管理するために、中継モジュールRは、中継モジュールRのメモリMYに保存されている中継アプリケーションによる以下の処理RMを実行する(メモリは、ミドルボックスMBのメモリに対応してもよい)。ステップS1において、中継モジュールRは、トラフィック経路制御部1により識別した受信したトラフィックを、監視インタフェース2の方に仕向ける(又はそこから取得する)。仕向けられるトラフィックは、中継モードにおいて識別される全てのTCPパケット及び送受信される全てのSYN及びSYN/ACKパケットであってよい。言い換えれば、トラフィック経路制御部1は、パケットタイプに従って、及び/又はトラフィックが送受信されるコネクションモード(中継モード又は転送モード)に従って、トラフィックを向ける方向を制御する。
【００５１】
図1に示されているように、トラフィック経路制御部1及び監視インタフェース2は、取得モジュールCMを規定してもよい。
【００５２】
ステップS2において、中継モジュールRの監視インタフェース2は、ホストH1、H2のうち何れかから到来する第1のコネクション設定リクエスト(メッセージ)(  MP_CAPABLEオプション(サブタイプ=0×0)を有するMPTCP-SYNパケット又は標準のSYNパケット)を識別又は特定する。具体例では、ホストH1が、第1のコネクション設定リクエストをホストH2に向けて送信している。ホストH1からのそのような第1のコネクション設定リクエストが識別されると、監視インタフェース2はそれを中継モジュールのコンテキストディスカバリ部3に転送する。
【００５３】
ステップS3において、ホストH1からそのような第1のコネクション設定リクエストを受信すると、中継モジュールRのコンテキストディスカバリ部3は、次の処理を実行する：
＿  第2のホストH2のIPアドレスと、第1のホストH1により要求された元のポートと、第1のコネクション設定リクエストのマルチパス許容性(「SP」は単一経路を意味し、「MP」はマルチパスを意味する)とを保存する処理(ステップS3a)；
＿  第1のコネクション設定リクエストを保ち続ける処理(ステップS3b)；
＿  初期の補助的なコネクションにより第2のホストH2と接続するように第1のインタフェース(例えば、MPTCPソケットであり、これは通信モジュールと言及されてもよい)を設定する処理(ステップS3c)。
【００５４】
ステップS4において、中継モジュールRと第2のホストH2との間にマルチパスの初期の補助的なコネクションを設定するために、第2のコネクション設定リクエスト(MP_CAPABLEオプションを含むSYNパケット)を送信することにより、第1のインタフェースI1は、第2のホストH2に対する新たなMPTCPコネクションの設定を試みる。
【００５５】
ステップS5において、第1のアクノリッジメントレスポンス(SYN/ACKパケット)が中継モジュールRにより受信され、それがトラフィック経路制御部1及び監視インタフェース2によりコンテキストディスカバリ部3に転送されると、コンテキストディスカバリ部3は、ホストH1、H2の双方が同じマルチパス許容性を示しているか否かを判断するために、第1のアクノリッジメントレスポンスのマルチパス許容性(SP又はMP)を検査する。
【００５６】
ステップS6において、ホストH1及びH2の双方が同じマルチパス許容性を示している場合(すなわち、双方がMPTCP対応可能である場合、又は双方がTCPのみ対応可能である場合)、中継モジュールRは転送モードを起動し、ホストH1及びH2が異なるマルチパス許容性を示している場合(すなわち、H1、H2の一方がマルチパス対応可能であり、H1、H2の他方が標準のTCPにのみ対応可能である場合)、中継モジュールRは中継モードを起動する。
【００５７】
中継モジュールRはトラフィック識別部4を更に有し、トラフィック識別部4は、コネクション設定段階で形成される確認テーブル(後述)に基づいて、転送モード及び中継モードで処理されるトラフィックをそれぞれ区別することが可能である。
【００５８】
転送モードが起動される場合、ステップS7において、中継モジュールRは(例えば取得モジュールCMにより)次のような処理を実行する：
＿  第2のホストH2に接続された第1のインタフェースI1をクローズにする処理(中継モジュール及び第2のホストH2間のもはや不要になったコネクションをリセットする)(ステップS7a)。「インタフェースをクローズにする」は、「インタフェースの使用を終了する」こと等を意味する。
【００５９】
＿  初期の補助的なコネクションの設定を解除するために、第2のホストH2から受信した第1のアクノリッジメントレスポンスを破棄する処理(ステップS7b)；
＿  ミドルボックスMBのパケット処理の経路において如何なる変更も加えずに、第1のコネクション設定リクエストを第2のホストH2に公表又はリリースする処理(ステップS7c)；
＿  (a)直接的なメインコネクションを設定するために、第2のホストH2から送信された第2のアクノリッジメントレスポンス(SYN/ACKパケット)を第1のホストH1に転送し、かつ(b)第1のホストH1から送信された対応する設定のアクノリッジメントレスポンス(ACKパケット)を第2のホストH2に転送する処理(ステップS7d)。
【００６０】
その結果、転送モードでは、第1のコネクション設定リクエストと対応するコネクションで送受信されるトラフィックとは、図1において参照番号5(具体的には、ルーティングモジュール5A及び代行モジュール(masquerading  module)5B)により特定されるミドルボックスMBの標準転送経路に続く。
【００６１】
MP_JOINオプションを含む別のコネクション設定リクエスト(サブタイプ=0x1のSYNパケット)がミドルボックスMBで受信され、現在は転送モードにあるMPTCPセッションに帰属するように(確認テーブルを利用することにより)サブフローが識別される場合、中継モジュールRに備わるトラフィック識別部4は、(例えば、後述する確認テーブルを利利用することにより)(SYN-MP_JOINパケットにより開始された)サブフローにより搬送されるトラフィックが転送モードにあるとして識別するように形成される。別のコネクション設定リクエストは、ミドルボックスのパケット処理に続くように監視インタフェース2により公表される。この場合において、データパケットが受信されると、それは方向転換されず、その理由は中継モジュールRが転送モードで動作しているからであり、標準のミドルボックスパケット処理経路に続くのみである。
【００６２】
中継モードが起動されている場合、ステップS8において、中継モジュールRは次のような処理を実行する：
＿  第1のインタフェースI1により処理されるべき第1のアクノリッジメントレスポンスをリリースする処理(ステップS8a)；
＿  初期の補助的なコネクションを設定するために、中継モジュールRが要求した初期の補助的なコネクションを受け入れる処理(ステップS8b)；
＿  第1のホストH1と中継モジュールRとの間で追加的な補助的なコネクションを設定するために第2のインタフェースI2を設定する処理(ステップS8c)；
＿  保存されている第1のコネクション設定リクエスト(SYNパケット)を第2のインタフェースI2に対してリリースする処理(ステップS8d)；
＿  追加的な補助的なコネクションを設定するために、第1のホストH1から最初に要求されたメインコネクションを受け入れる処理(ステップS8e)。すなわち、第2のホストH2と送受信を行うために第1のホストH1により要求されたメインコネクションは、第1のホストH1と中継モジュールRとの間の追加的な補助的なコネクションにより置換される；
＿  例えば対応関係テーブルを利用して、第1及び第2のインタフェースI1、I2の間にリンクを形成する処理(ステップS8f)。
【００６３】
中継モジュールRのトラフィック識別部4は、確認テーブルに基づいて、初期の及び追加的な補助的なコネクションにより搬送されるトラフィックが、中継モードにあることを識別できる。より一般的に言えば、トラフィック識別部4は、確認テーブルに基づいて、転送モードで処理されるトラフィックと中継モードで処理されるトラフィックとを区別することができる。
【００６４】
すなわち、中継モードの場合、第1のインタフェースI1により管理される初期の補助的なコネクションで送受信されるトラフィックは、中継モジュールRのトラフィック識別部4により、中継モードにあるように判別される。第1のコネクション設定リクエストは、監視インタフェース2に至る経路に続くようにリリースされ、監視インタフェース2は、第1のコネクション設定リクエストを受け入れ、第1のホストのインタフェースI1を取り扱う(又はやり取りを行う)第2のインタフェースI2を形成する。設定される追加的な補助的なコネクションで送受信されるトラフィックは、トラフィック識別部4により識別され、トラフィック経路制御部1により、中継モジュールの中継アプリケーションの方にルーティングされ、第1及び第2のインタフェースI1、I2双方の間でデータを転送する。
【００６５】
MP_JOINオプション(サブタイトルが0x1であるSYNパケット)を担う更なるコネクション設定リクエストがミドルボックスMBで受信され、(確認テーブルを用いることで)サブフローが、現在は中継モードにあるMPTCPセッションに帰属するように識別される場合、中継モジュールRのトラフィック識別部は、(SYN-MP_JOINパケットにより開始される)サブフローにより搬送されるトラフィックが中継モードにあるように識別する。更なるコネクション設定リクエストは中継アプリケーションの方に仕向けられ、TCPハンドシェークを完了して対応するサブフローをオープンの状態にすることができる。
【００６６】
特に、データパケットが、ミドルボックスMBにより第1のホストH1から受信される場合、それは中継モジュールRの形成される第2のインタフェースI2の方に仕向けられる。そして、中継アプリケーションにより使用される対応関係テーブルの恩恵により、データパケットは、第2のホストH2に至る前に、第2のインタフェースI2から第1のインタフェースI1へ中継される。データパケットが、ミドルボックスMBにより第2のホストH2から受信される場合、それは、中継モジュールRの形成される第1のインタフェースI1の方に仕向けられる。そして、そのデータパケットは、第2のホストH2に至る前に、第1のインタフェースI1から第2のインタフェースへ中継される。
【００６７】
(TCPの場合にはFINパケットであり、MPTCPパケットの場合にはDATA_FINパケットである)「クローズコネクション」パケット又はコネクション終了パケットが、ミドルボックスMBにより受信される場合、第1、第2のインタフェースI1、I2は中継モジュールRによりクローズの状態にされ、対応関係テーブルはリセットされる。
【００６８】
何れのコネクションが転送又は中継される必要があるかを追跡し続けることに加えて、コネクションが設定される場合に、中継モジュールRはルックアップテーブルを構築する。この確認テーブル(図示されてはいない)は、当初は空白(ブランク又は未記入状態)であり、コンテキストディスカバリ部3により記入される。ルックアップテーブルは、データパケットを受信した場合に、トラフィック識別部4から問い合わせを受ける又は確認される。そのような確認テーブルの具体例は次のようなものである：
＜確認テーブル＞
【００６９】
【表１】
2015070616.tif 000003
送信元及び送信先のアドレス及びポートの列(カラム)は、受信したパケット各々に関し、設定されるコネクションの速やかな確認と、適切な処理の選択とを可能にする。「送信元」は「ソース」等と言及されてもよい。「送信先」は「宛先」等と言及されてもよい。通常のTCPコネクションの場合、送信元及び送信先のトークンは存在せず、ブランクのままである。MPTCPコネクションの場合、送信元トークンは、(送信先ホストからSYN/ACKパケットにより送信されるような)送信先の鍵のハッシュであり、送信先トークンは、(送信元ホストからSYNパケットにより送信される)送信元の鍵のハッシュである。
【００７０】
トークンのこのペア(トークン対)は、双方の側においてMPTCPコネクションを一意に識別する。これらのトークンは、以後のサブフローを設定する際にMPTCPにより再利用され、対応するMPTCPマスターフロー(master  flow)を確認又は参照できるようにする。中継する側の観点からは、各々のサブフローの動作モードを決定するために、何れのサブフローが何れのマスターフローに属するかを追跡しなければならない。
【００７１】
中継の際に、新たなサブフローの追加を追跡するために、2つの別々の状況を取り扱うことが好ましい：
＿  新たな送信元アドレスを追加する場合：複数のインタフェースを有する送信元(例えば、第1のホストH1)が、既存のMPTCPセッションにインタフェースを追加することを決定した場合、送信元は、送信先でMPTCPセッションを特定するトークン(例えば、「S_tok1」)と共にMP_JOINオプションを担うMPTCP_SYNパケットを、IPアドレスにより特定される送信先ホスト(例えば、第2のホストH2)に向けて発行する。そのようなパケットが見えた場合、中継モジュールRは、S_tok1及び送信先アドレスのペアを探し、そのMPTCPセッションのために選択される動作モードを読み取り、確認テーブルにラインを追加して、対応するトークン及び動作モード(中継モード、転送モード)と共に追加的なソースアドレスを記録する。
【００７２】
＿  新たな送信先アドレスを追加する場合：中継モジュールRは2ステップ処理を実行する必要がある。第1ステップとして、中継モジュールRは、データパケットにオプションとして付加されかつ送信先ホストに追加的なIPアドレスを通知可能にするADD_ADDRメッセージを追跡又は監視する。そのようなメッセージを受信すると、MPTCPセッションに関連付けてそのアドレスを確認テーブルに記録する。第2ステップとして、MP_JOINオプションとともにMPTCP_SYNパケットを受信した場合において、送信先アドレスが過去に記録された(追加された)アドレスに合致し、かつ送信元トークンが既知のトークン(例えば、S_tok1)に合致する場合、中継モジュールRは、そのサブフローがMPTCPセッションに属するものと判断し、関連する送信元及び送信先のポートを記録する。
【００７３】
限定的ではない一実施形態において、本発明は、MPTCPスタックを組み込むリナックスパーソナルコンピュータ(linux  Personal  Computer)上で動作するルータであるミドルボックスで実現されてもよいことに留意を要する。第1のホスト(例えば、クライアント)及び第2のホスト(例えば、サーバ)は、MPTCP又は標準のTCPスタックを組み込むリナックスパーソナルコンピュータ上で動作する。ルータは、一方において2×100M個にも及ぶイーサネットインタフェースを介してクライアントPCに接続され、他方において2×100M個にも及びイーサネットインタフェースを介してサーバPCにも接続される。
【００７４】
更に、上記の好適な実施形態において、中継モジュールRは、ハードウェア及び/又はソフトウェアモジュールとしてミドルボックスMBに組み込まれる。明らかに、代替定例において、中継モジュールは、第1及び第2のホストに、直接的に又はミドルボックスを介して接続される独立したハードウェアであってもよい。
【００７５】
本発明の実施形態は、完全にハードウェアの実施形態、(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)完全にソフトウェアの実施形態、或いはソフトウェア及びハードウェアを組み合わせる実施形態の形式ととることが可能であり、それらは本願では一般的に「クライアント」、「モジュール」又は「システム」と言及され、単独のホストに組み込まれてもよいし、或いは何らかの手段で互いに接続された多数のホストに組み込まれてもよい。更に、本発明原理の実施形態は、コンピュータにより読み取られることが可能な(コンピュータ可読の)記憶媒体の形態をとることが可能である。1つ以上のコンピュータ可読の記憶媒体の任意の組み合わせが使用されてもよい。
【００７６】
明細書、特許請求の範囲及び/又は図面に示される特徴は独立に又は適切な任意の組み合わせにより使用されてよい。それらの特徴はハードウェア、ソフトウェア又はそれらの組み合わせにより適切に実現されてよい。特許請求の範囲に参照番号が登場していたとしても、それらは単なる例示に過ぎず、本発明の範囲を限定するような影響はない。
【００７７】
以上本発明は好適な実施形態により説明されてきたが、創作的な能力を発揮することなく当業者の通常の能力の範囲内で様々な変形例や実施例が許容されることは明らかである。すなわち、本発明の範囲は実施例によっては限定されず特許請求の範囲によって規定される。
【００７８】
本願発明に監視、特定の機能を実行する手段として表現される任意の要素(例えば、トラフィック経路制御部1、監視インタフェース2、コンテキストディスカバリ部3)は、その機能を実行する任意の手段を包含するように意図されており、例えば、(a)その機能を実行する回路要素の組み合わせ(例えば、1つ以上のプロセッサ)や、或いは(b)その機能を発揮するためにソフトウェアを実行する適切な回路と組み合わせられる任意の形態のソフトウェア(すなわち、ファームウェアやマイクロコードを含む)等を包含する。本発明原理は特許請求の範囲の記載により表現され  記載されている様々な手段により提供される機能は、特許請求の範囲に記載される方法で組み合わせられ活用される。
【符号の説明】
【００７９】
H1、H2  ホスト
R  中継モジュール
I1、I2  インタフェース
CM  取得モジュール
【図１】
2015070616.tif 000004
【図２】
2015070616.tif 000005
【外国語明細書】
2015070616000001.pdf