説明

複数コネクションを用いたデータ通信方法

【課題】
従来のマルチパス通信技術では、パケットロスと伝播遅延への対応重視の短いデータおよび帯域重視の長いデータの混在環境で、効率良く送受信できず、また、データの到着順序は考慮されていなく、一部のコネクションの送信性能低下があった場合、データが途中抜けて受信側に到着し、データ送信の効率が低下する。
【解決手段】
送信するデータが短いデータの場合は、送信側は複数のコネクションで並列に同じデータを送信し、受信側は先に届いたデータを採用し、長いデータの場合は、送信側は複数のコネクションでデータの異なる部分の送信を行う。また、各コネクションの送信速度に基づき、受信側で順番通りに到着するように各コネクションへの送信データの振り分けを行う。さらに、複数のコネクションを監視し、送信中データを必要があれば他コネクションで再送を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報通信ネットワークにおいて、複数の通信コネクション(以下、コネクションと略する)を並列に使用することで通信の性能を向上する方法に関するものである。
【背景技術】
【0002】
データとデータ処理ソフトウェアをサーバで管理し、サーバのデータ処理ソフトウェアを、ユーザが使用するシンクライアントなどの端末により、遠隔操作することで情報処理を行う遠隔操作型情報処理システムが普及しつつある。遠隔操作型情報処理システムでは、端末がユーザの遠隔操作命令を受け付けネットワーク経由でサーバに送り、サーバが遠隔操作命令に従いデータの処理を行い、処理結果の画面情報をネットワーク経由で端末に返し、端末が画面情報を表示する。遠隔操作型情報システムでは、サーバから端末へは、データではなく画面情報が送信されるため、データの漏洩が起こりにくくなる。
【0003】
このような遠隔操作型情報処理システムで、スキャナや、DVDリーダなどの周辺機器を利用しようとすると、ユーザが操作する端末にこれら周辺機器が接続され、端末からサーバへ、上述の遠隔操作命令に混じって、大量のデータがネットワーク経由で送信されることになる。一方、サーバから端末へ送信される画面情報は、上述の遠隔操作命令に対応する処理結果に基づく短い描画命令、及び大量の画像データを含む。つまり、端末とサーバの間では同一方向に長短のデータが混在するという状況が発生する。
【0004】
この場合のデータ送信速度はネットワークのデータ送受信性能に強く依存するため、ユーザが端末で快適に情報処理する環境を構築するには、応答速度および/または帯域幅が要因に含まれる、端末とサーバ間のネットワーク性能の確保が重要である。
【0005】
一方、インターネットなどのパケット交換ネットワークは通信の速度を保障しない仕組みを採用しており、送信側と受信側は双方とも、通信路のデータ送受信性能を決めることが困難である。
【0006】
そこで、単一コネクションよりも高い性能でデータ送信を実現するために、複数コネクション(パス)を並列に利用する手法 (マルチパス通信) が注目されている。
【0007】
特許文献1では、送信側は送信すべきデータをPDU (Protocol Data Unit) 単位に分割し、分割した各データに対して、送信状況管理のために特別のヘッダを付与して、更に通常のTCP (Transmission Control Protocol)ヘッダをつけて送信する手法を採用している。具体的には、送信側は、複数コネクションを並列に用いて、PDUを送信する。受信側は、PDUを受信した際、受信したことを知らせるためのACK(Acknowledgment)を返送する。複数コネクションを並列に扱う輻輳制御を行い、各々のコネクションにおいて従来TCPと同等の制御を行う。
【0008】
特許文献2では、リアルタイム通信などに使用されるUDP (User Datagram Protocol) を用いる。具体的には、送信すべきデータ系列を複数の部分データ系列に分配して、これらを複数のコネクションで並列に送信する。コネクションごとの通信品質を観測し、この情報に基づいて送信データ系列の部分データ系列への配分 (α%と 100−α%) を適宜変更して、網全体のスループットを確保する。
【0009】
【特許文献1】米国特許出願公開第 2007/0005787号明細書
【特許文献2】特開 2006−67075 号公報 (図1、段落0018、0020)
【発明の開示】
【発明が解決しようとする課題】
【0010】
データを送るための帯域が狭い、又は伝播遅延が大きい、等の理由によりデータ送信失敗(送信中のデータ損失)の発生頻度が高い、といったデータ送信性能の低いネットワーク環境では、データの送受信に時間がかかり、ネットワークを利用した情報処理システムの性能が低下する問題がある。
【0011】
マルチパス通信方法は、このデータ送受信性能を高めるために複数のコネクションを並列に使用する技術であるが、下記の課題がある。
【0012】
まず、ネットワーク上で送信されるデータは、情報処理システムで実現する情報処理内容により、様々なサイズがあり、数パケットからなる、上述のような短いデータと、数十以上といったパケットの列からなる長いデータの二種類が混在する場合が多い。
【0013】
それに加えて、短いデータは通信中のデータ損失無く素早く送ることが望ましい重要なデータで、長いデータは広い帯域で効率良く送ることが望ましいデータであることが多い。
【0014】
例えば、遠隔操作型情報処理システムでは、端末からサーバへは、操作命令という短いデータと、記憶媒体の読み取り装置やスキャナの出力という長いデータが混在して送信される。また、サーバから端末へ送られる画面情報は、描画命令であり送信途中に損失なく素早く送ることが望ましい短いデータと、画像データであり広い帯域で送ることが望ましい長いデータとを含み、これらが混在して送信される。
【0015】
しかしながら、従来のマルチパス通信技術では、通信中のデータ損失や長い伝播遅延の影響を回避するための、複数コネクションで同じデータを並列に送る方法と、帯域を広くするための複数コネクションで違うデータを並列に送る方法のどちらかを使用するしかなく、データ損失と伝播遅延を減らすべき短いデータおよび帯域を確保すべき長いデータが混在する環境で、これらを効率良く送受信することが難しかった。
【0016】
また、データは送信側が送信した順で、かつ、途中の抜けなく受信側に到着すると、受信側は素早く処理開始できることが多い。例えば、遠隔操作型情報処理システムでは、サーバから送られる画面情報を、端末は生成された順で再生するため、順序良く到着しないと、端末での画面再生は途中の抜けたデータを受信するまで遅れてしまう。しかし、従来のマルチパス通信技術では、データの到着順序は考慮されていなかった。
【0017】
さらに、従来のマルチパス通信技術では、複数のコネクションにデータを分割して送信する際に、一部のコネクションに接続切れなどの通信性能低下があった場合、途中のデータが抜けて受信側に到着するため、抜けたデータが受信側に到着して、受信側での処理再開するまでに時間が掛かっていた。
【課題を解決するための手段】
【0018】
本発明は、複数のコネクションを状況に応じて効率よく使い分けるデータ通信技術を提供する。
【0019】
具体的な本発明の一態様は、複数の通信機器間で送受信するデータを一つ以上のブロックに分け、前記複数の通信機器間に確立した複数のコネクションを用いて送受信する複数コネクションを用いたデータ通信方法であって、
送信側通信機器は、一つの送信すべき前記ブロックを、前記複数のコネクションを用いて並列に送信する送信方法と、前記複数のコネクションのいずれか一つを用いて送信する送信方法と、のどちらを選択して送信するかを決定する送信方法選択情報を繰り返し取得し、
取得した前記送信方法選択情報が前記複数のコネクションを用いて並列に送信することを示している場合は、前記送信側通信機器は、一つ以上の送信すべき前記ブロックを、前記複数のコネクションを用いて並列に送信し、
取得した前記送信方法選択情報が前記複数のコネクションのいずれか一つを用いて送信することを示している場合は、前記送信側通信機器は、一つ以上の送信すべき前記ブロックの各々を、前記複数のコネクションのいずれか一つを用いて送信し、
受信側通信機器は、前記複数のコネクションのいずれか一つから受信した前記ブロック、例えば、前記複数のコネクションから最初に受信したブロック、を採用することを特徴とする。
【0020】
前記送信方法選択情報は、送信側通信機器が送信しようとする単位時間当たりのデータ量に依存し、予め定めた所定値より短いか、所定値以上の長さであるか、を示す情報であってもよい。なお、データ量としてブロック数を用いても良い。
【0021】
また、前記送信方法選択情報として、データが短いか、長いか、を用いても良い。短いデータと長いデータの区別は、たとえば、各コネクションの最大の送信速度でデータを送信しても未送信のデータが送信側に残った場合、長いデータである、と判断し、長いデータでなければ、短いデータである、と判断しても良い。
【0022】
また、前記送信方法選択情報は、前記送信側通信機器が送信しようとするブロック数と、前記複数のコネクションにより前記送信側通信機器が送信し受信側通信機器が受信に成功したブロック数と、に依存する情報であってもよい。
【0023】
すなわち、送信しようとする単位時間当たりのブロック数が多くてもコネクションの通信性能が高ければ、前記複数のコネクションを用いて並列に送信し、送信しようとする単位時間当たりのブロック数が少なくてもコネクションの通信性能が低ければ、前記ブロックの各々を、前記複数のコネクションのいずれか一つを用いて送信するようにしてもよい。
【0024】
また、前記複数のコネクションを用いて並列に送信する送信方法を選択している場合に取得する前記送信方法選択情報は、前記複数のコネクションのいずれか一つが送信できない状態であるか否かを示し、
前記送信側通信機器は、取得した前記送信方法選択情報が、前記複数のコネクションのいずれか一つが送信できない状態を示していれば、前記複数のコネクションのいずれか一つを用いて送信する送信方法に切り替え、
前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択している場合に取得する前記送信方法選択情報は、送信待ちのブロックがあるか否かを示し、
前記送信側通信機器は、取得した前記送信方法選択情報が、送信待ちのブロック数が一定のしきい値以下を示していれば、前記複数のコネクションを用いて並列に送信する送信方法に切り替えることを特徴とする。
【0025】
また、前記送信方法選択情報は、前記受信側通信機器から取得する前記複数のコネクションを用いて送信したブロックの損失率であって、前記送信側通信機器は、取得した前記ブロックの損失率が、予め定めた所定値より高ければ、前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択し、取得した前記ブロックの損失率が、予め定めた所定値以下であれば、前記複数のコネクションを用いて並列に送信する送信方法を選択してもよい。
【0026】
また、前記複数のコネクションがTCP (Transmission Control Protocol)で制御されており、前記複数のコネクションを用いて並列に送信する送信方法を選択している場合の前記送信方法選択情報は、前記送信側通信機器の前記複数のコネクションの各々について備えているバッファ内の空き容量であって、前記送信側通信機器は、前記バッファ内の空き容量に基づき、前記複数のコネクション各々の送信可否を判断してもよい。
【0027】
また、前記複数のコネクションがUDP (User Datagram Protocol)で制御されている場合、前記送信側通信機器は、前記受信側通信機器から、当該受信側通信機器が受信に成功したブロックの情報を取得し、前記送信側通信機器が送信したブロックの情報と、取得した前記受信に成功したブロックの情報と、に基づき、前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択するか、前記複数のコネクションを用いて並列に送信する送信方法を選択するか、を判断してもよい。なお、ブロックの情報として、ブロック番号を用いても良い。
【0028】
また、本発明が提供する複数コネクションを用いたデータ通信方法は、送信側が、帯域優先送信において、各コネクションの送信完了および送信中のデータに基づいて、受信側での処理の順番通りに到着するように各コネクションへの送信データの振り分けを行うことを特徴とする。
【0029】
具体的には、送信すべきデータのブロックを、前記複数のコネクションのいずれか一つを用いて送信する場合に、前記送信側通信機器は、各コネクションで送信された、および/または、送信中の前記ブロック番号に基づき、前記ブロックの送信に用いるコネクションと当該コネクションで次に送信するブロックを選択してもよい。
【0030】
さらに、前記送信側通信機器は、送信する前記ブロックに識別子を付与して送信し、前記受信側通信機器は、受信した前記ブロックに含まれている識別子を送信側の通信機器に返信し、前記送信側通信機器は、受信した前記識別子に基づき、送信したブロック数と送信時間を求めることで各コネクションの転送速度を求めてもよい。
【0031】
さらに、前記送信側通信機器は、前記複数のコネクションの各々において、前記受信側通信機器が受信していない、送信中および送信待ちの前記ブロックを監視し、監視対象の前記ブロックについて、他のコネクションでの送信を行うかどうかを、前記送信待ちデータの量に基づいて判断し、前記判断の結果に従い、監視対象の前記ブロックを、前記他のコネクションで送信してもよい。
【0032】
上記構成により、短いデータは最も速いコネクションで送られたものが採用されるため通信中データ損失と伝播遅延の影響を少なくすることができ、長いデータについては複数のコネクションで別々のデータを送るため帯域を拡大できるようになり、通信中データ損失と伝播遅延を減らすべき短いデータと帯域を確保すべき長いデータが混在する環境で、これらを効率良く送受信することが可能となる。
【0033】
また、各コネクションの通信性能を考慮して、各コネクションへ送信データを振り分けることにより、送信元で作られた順番通りに送信データが受信側に到着する確率が高くなるため、受信側はデータ処理を素早く開始できるようになる。
【0034】
さらに、再送が必要なデータを他コネクションで再送することにより、複数のコネクションの内、送信性能低下に繋がる一部のコネクションの接続切れなどがあった場合でも、受信側への影響を少なくすることが可能となる。
【発明の効果】
【0035】
本発明により、ネットワークの送受信性能が向上し、ネットワークを利用した情報処理システムの性能が向上する。
【発明を実施するための最良の形態】
【0036】
図1は本発明の実施形態に関わるデータ通信システムの構成を示すブロック図である。以下では、送信側通信機器として端末101を用い、サーバ装置104を遠隔操作する、いわゆるシンクライアントシステムでの実施形態を説明する。まず、図中の各ブロックの意味について、以下、図2〜図7を用いて説明する。
【0037】
図2は端末101の内部構成を示すものである。端末101はプロセッサ223、I/Oハードウェア224、通信ハードウェア131、固定ディスク212及びメモリ211から構成される。プロセッサ223はデータを処理するための計算機能を持つハードウェアである。I/Oハードウェア224はモニタ、キーボードやマウスなど、利用者が端末を操作するためのデバイスである。通信ハードウェア131はNIC (ネットワークインタフェースカード) など、ネットワーク通信のためのデバイスである。固定ディスク212はデータやデータ処理ソフトウェア (プログラム) を格納する記憶媒体 (例えば磁気ディスクなど)である。メモリ211はプログラムを実行する際にプロセッサ223が利用する記憶媒体である。
【0038】
固定ディスク212には、通信制御部121とアプリクライアント111とデータ中継部112を実現するプログラムと、中継機器接続情報213とサーバ接続情報214と、が格納されている。通信制御部121はソケット (プログラムとトランスポートプロトコル (TCPやUDP)の間のインターフェース) やTCP/IPスタックなど、通信ハードウェア131を通じてデータをネットワーク上送受信するための機能を備える。アプリクライアント111は端末利用者が端末101を利用する際に必要となる機能を備える。データ中継部112はデータ保存領域を含み、マルチパス通信を実現する機能を備える。データ中継部112の詳細については後述する。
【0039】
中継機器接続情報213は後述する中継機器103のIPアドレス及びデータ中継部113が利用するポート番号(TCP/IP通信を行うソフトウェアプログラムを識別するための番号)を含んでいる。中継機器接続情報213により、データ中継部112がデータ中継部113へ接続することが可能となる。一方、サーバ接続情報214は後述するサーバ装置104のIPアドレス及びアプリサーバ114が利用するポート番号を含んでいる。サーバ接続情報214により、データ中継部113がアプリサーバ114に接続することができる。
【0040】
データ中継部112、アプリクライアント111及び通信制御部121を実現するプログラムは、実行する際にメモリ211にロードされてプロセッサ223により実行され、上述の機能を実現する。
【0041】
図3は、受信側通信機器として用いる中継機器103の内部構成を示すものである。中継機器103はプロセッサ223、通信ハードウェア131、固定ディスク211及びメモリ212から構成される。固定ディスク312の中にデータ中継部113及び通信制御部121を実現するプログラムが格納される。データ中継部113はデータ保存領域を含み、
マルチパス通信を実現する機能を備える。データ中継部113の詳細については後述する。通信制御部321は、端末101の通信制御部121と同様の機能を備える。メモリ311の中にはデータ中継部113、通信制御部321を実現するプログラムが実行時ロードされてプロセッサ323により実行され、上述の機能を実現する。
【0042】
図4はサーバ装置104の内部構成を示すブロック図である。サーバ装置104はプロセッサ423、通信ハードウェア431、固定ディスク412及びメモリ411から構成される。固定ディスク412の中にはアプリサーバ114及び通信制御部421を実現するプログラムが格納される。アプリサーバ114はアプリクライアント111が必要とするデータを提供する機能を備える。通信制御部421は、端末101の通信制御部121と同様の機能を備える。メモリ411の中には実行時のアプリサーバ114及び通信制御部421を実現するプログラムがロードされてプロセッサ423により実行され、上述の機能を実現する。
【0043】
なお、上述の各プログラムは、あらかじめ、上記各装置のメモリまたは固定ディスク内に格納されていても良いし、必要なときに、上記各装置が利用可能な、着脱可能な記憶媒体から、または通信媒体(インターネットなど、またはそれらの上を伝搬する搬送波やデジタル信号など)を介して他の装置から、導入されてもよい。
【0044】
図5は、端末101のデータ中継部112の機能構成を示すものである。コネクション管理テーブル505はアプリクライアント111からのデータをどのコネクションを用いて、通信相手装置(ここでは中継機器103)のデータ中継部113へ送信するかを記憶するためのデータベースである。コネクション管理テーブル505の詳細については後述する。
【0045】
受信モジュール501はアプリクライアント111からのデータを受信し、受信したデータを送信用バッファ511に一時的に格納する。マルチパス送信モジュール502は送信用バッファ511の中のデータを複数のコネクションでデータ中継部113へ送信する機能を備える。一方、マルチパス受信モジュール503は中継機器103のデータ中継部113からデータを受信し、受信用バッファ512に一時的に格納する機能を備える。送信用モジュール504は受信用バッファ512の中のデータをアプリクライアント111へ送信する機能を備える。
【0046】
図6はデータブロックの構成を示すものである。送信用バッファ511及び受信用バッファ512に格納されているデータは、受信用モジュール501により、図6に示すブロックに分割されている。
【0047】
データブロックにはブロックのシーケンス番号、ペイロード(データ)のバイト数を示すフィードとペイロードである。なお、ペイロードのバイト数の決定方法については後述する。
【0048】
図7はコネクション管理テーブル505の構成を示すものである。コネクション管理テーブル505には、アプリクライアントのIPアドレス、アプリクライアントのポート番号、アプリクライアントからのコネクション名、通信相手装置(ここでは中継機器103)の中継部113へのコネクション名、アプリサーバのIPアドレス、アプリサーバのポート番号が保存される。このテーブルを参照することにより、データ中継部112はあるコネクションからデータを受信した際に、そのデータを転送するためのコネクションが分かる。
【0049】
中継機器103のデータ中継部113の機能構成は、端末101のデータ中継部112と同じである。ただ、受信モジュール501はアプリサーバ114からデータを受信し、送信モジュール504はアプリサーバ114へデータを送信する。また、マルチパス受信モジュール503はデータ中継部112からデータを受信し、マルチパス送信モジュール502はデータ中継部112へデータを送信する。
【0050】
ここで、図1全体の動作について説明する。端末101はシステム利用者がサーバ装置104を遠隔操作するための機器である、いわゆるシンクライアントである。利用者が端末のキーボードやマウスなどを操作すると、その操作内容がアプリクライアント111によってアプリサーバ114へ送られる。そして、システム利用者の操作に対する処理結果は、画面表示データとして、アプリサーバ114からアプリクライアント111へ送られて、システム利用者が確認できるために端末のモニタなどで表示される。
【0051】
端末101は二つのアクセスネットワーク(例えばPHS (Personal Handy−phone System)ネットワーク及び携帯ネットワーク)を利用してインターネットに接続することが可能であるが、アクセスネットワークの片方だけを利用する際、端末・サーバ間のデータ通信を十分に処理できない状況を想定する。
【0052】
そこで、端末101とサーバ装置104の間のネットワークの送受信性能を向上させるために中継機器103を導入する。中継機器103は高速ネットワーク(LANなど)を介してサーバ装置104に接続し、サーバ装置104と高速にデータ通信を行うことができる。
【0053】
一方、端末101と中継機器103はTCPコネクション1及びTCPコネクション2で、それぞれPHS網と携帯網を通して接続し、本発明のマルチパス通信手法でデータ通信を行い、データ送信を高速化する。なお、本実施例ではデータ通信のためにTCPを利用すると仮定して説明するが、必ずしもTCPに限定されるべきものではなく、UDPなど他のトランスポートプロトコルも適用可能である。
【0054】
UDPの用途としては、例えば、符号化した音声データの伝送を行うVoIP(Voice over Internet Protocol)がある。VoIPシステムでは、複数人が同時に会話を行うことが可能なので、長い発言に対応する長いデータと短い発言に対応する短いデータの両方が発生する。つまり、UDPを利用したVoIPシステムにおいても長短のデータが一方向中に混在した状況があるため、本発明の実施形態は適用できる。
【0055】
次に、本発明の実施形態であるデータ通信システムの動作について説明する。
【0056】
図8は利用者が一回当該データ通信システムを利用するにあたってのシステム内のデータ通信の手順を示す図である。まず、データ通信開始する前に、各ステップ701、702、703において、それぞれデータ中継部112がアプリクライアント111からの接続、データ中継部113がデータ中継部112からの接続、そしてアプリサーバ114がデータ中継部113からの接続を待つ状態に入る。
【0057】
システム利用者がアプリクライアント111を操作し始めると、アプリクライアント111がステップ711において、データ中継部112へTCPコネクション4を確立し、データ送信を開始する(ステップ712)。データ中継部112はアプリクライアント111からのデータを受信すると、データ中継部112は中継機器接続情報213を参考し、データ中継部113との間にTCPコネクション1(ステップ713)及びTCPコネクション2(ステップ716)を確立する。
【0058】
コネクション1の確立直後、データ中継部112はコネクション1でアプリクライアント111のIPアドレス及びポート番号、サーバ装置104のIPアドレス及びアプリサーバ114のポート番号を送信する(ステップ714)。アプリサーバ114のIPアドレス及びアプリサーバ114のポート番号はサーバ接続情報214から得られる。また、コネクション2の確立直後も、同上のデータを送信する。
【0059】
一方、データ中継部113はコネクション1から、アプリクライアント111及びアプリサーバ114に関する情報を受信すると、アプリサーバ114との間にコネクション3を設立する(ステップ715)。
【0060】
また、これ以降にコネクション1からのデータをコネクション3へ転送するように、逆にコネクション3からのデータを、コネクション1へ転送するように、コネクションの対応付けを、データ中継部113内のコネクション管理テーブル505に記憶する(ステップ721)。その後、データ中継部113はステップ717において、コネクション2から同上の送受信側情報を受信する。受信した情報により、データ中継部113は、コネクション1とコネクション2で送信されるデータは同じ送信元及び送信先のものであることが分かり、両コネクションからのデータを纏めてコネクション3へ転送し、また、コネクション3からのデータを両コネクションへ転送するように、データ中継部113のコネクション管理テーブル505で記録する(ステップ722)。
【0061】
コネクション1またはコネクション2の混雑状況により、データ中継部113がステップ713とステップ716の両方を実施できないこともある。この際、ステップ713および716の中の一つが実施できた時にでも中継部113が後述のステップ731に進む。
【0062】
ステップ731では、アプリクライアント111とアプリサーバ114の間のデータ送受信が行われる。ステップ731の詳細については後述する。
【0063】
一方、システム利用者がアプリクライアント111の利用を終了する際、アプリクライアント111がコネクション4を終了する(ステップ741)。コネクション4の終了を検知したデータ中継部112はコネクション1及びコネクション2を終了する(ステップ742及びステップ743)。データ中継部113は、コネクション1及びコネクション2両方終了することを検知した場合、コネクション3を終了する(ステップ744)。
【0064】
図9はステップ731において、当該システムがデータの送信を行う際の手順を示すものである。ステップ901において、アプリクライアント111がデータ中継部112へデータを送信する。データ中継部112がデータを受信し、複数のブロックに分割する(ステップ902)。そして、データ中継部112が分割した各データブロックをコネクション1及びコネクション2で並列にデータ中継部113へ送信する(ステップ903及びステップ904)。データ中継部113はコネクション1及びコネクション2からのデータを統合し(ステップ905)、コネクション3を経由してアプリサーバ114へ送信する(ステップ906)。
【0065】
一方、アプリサーバ114がアプリクライアント111へデータを送信する手順は、アプリクライアント111がデータをアプリサーバ114へ送信する際の手順の逆となる。ステップ911では、アプリサーバ114がアプリクライアント111へ送信すべきデータをデータ中継部113へコネクション3を用いて送信する。ステップ912でデータ中継部113がアプリサーバ114から受信したデータを複数のデータブロックに分割する。次に、データ中継部113がステップ913及び914でコネクション1及びコネクション2を使って並列にデータブロックを中継部112へ送信する。データ中継部112はコネクション1及びコネクション2からデータ受信し、統合する(ステップ915)。そして、データ中継部112はステップ915で統合したデータをアプリクライアント111へ送信する(ステップ916)。
【0066】
以上は利用者が当該データ通信システムを利用するにあたってのシステム内のデータ通信の手順である。
【0067】
次に、データ中継部112及びデータ中継部113の内部処理手順について説明する。データ中継部112とデータ中継部113の内部構成及び処理手順は同じであるが、設置場所が異なるため、データやり取り相手が異なる。ここで、データ中継部112を中心に説明し、その後データ中継部112とデータ中継部113の違いについて説明する。
【0068】
図5を再び利用してデータ中継部112の詳細なデータ送信手順について説明する。コネクション4を介してアプリクライアント111からデータが送信されてきたとき、受信モジュール501がデータを受信し、複数のブロックに分割してから送信用バッファ511に格納する。マルチパス送信モジュール502は送信用バッファ511にデータがあるとコネクション1及びコネクション2を介してデータ中継部113へ送信する。データブロックをコネクション1及びコネクション2へ振り分ける方法について後述する。
【0069】
一方、コネクション1及びコネクション2を介してデータ中継部113からデータブロックが到着したとき、マルチパス受信モジュール503がデータブロックを受信し、受信用バッファ512に格納する。送信モジュール504は受信用バッファ512の中のデータを統合し、コネクション4を介してアプリサーバ114へ送信する。
【0070】
なお、コネクション管理テーブル505は、コネクション4からのデータをコネクション1及びコネクション2へ送信し、またコネクション1及びコネクション2からのデータをコネクション4へ送信するという、データ送信先に関する情報を、送信モジュール504およびマルチパス送信モジュール502に提供する。
【0071】
データ中継部112は、複数のアプリクライアントからの接続を並列して中継することが可能である。それぞれのアプリクライアントとその接続先との関連付けをコネクション管理テーブル505で管理し、アプリクライアントごとに送信用バッファの領域を割り当てることが可能である。
【0072】
以下、説明を簡単にするために、データ中継部112及びデータ中継113はひとつのアプリクライアント(アプリクライアント111)から、一つのアプリサーバ(アプリサーバ114)へデータを送信する場合を想定する。
【0073】
受信モジュール501はコネクション4からのデータを受信し、データを送信用バッファ511に格納する際に、下記のアルゴリズムでデータをブロックに分割する。分割処理には、受信モジュール501の保持するブロックのペイロードの最大値(以下、Mとする)を使用する。

(1)送信用バッファ511内に格納するデータのサイズ(以下、Nとする)が M 以下の場合は、ペイロードがN となる一つのブロックとする。
(2)N が M より大きい場合、データの先頭から サイズ M のブロックを分割していく。この際、余ったデータは、(1)と同様、ペイロードがM以下のブロックにする。
(3)ブロックにブロックの番号とブロックのペイロードサイズを追加する。ブロック番号は、ブロック毎に割り振る番号で、1から始まる。
【0074】
上記のように、ブロックのペイロードのサイズは一定の値ではなく、分割する時点で、送信用バッファ511にあるデータのサイズによりまちまちである。
【0075】
図10はマルチパス送信モジュール502の処理手順を示すフローチャートである。データ中継部112がステップ701で待ち受け状態に入ると、マルチパス送信モジュール502がステップ1001で、送信用バッファ511内に未送信データが格納されるまで待機する。送信用バッファ511内に未送信データがあると、後述する遅延優先送信(ステップ1002)を行う。遅延優先送信を一回行った後に、送信モードを切り替える必要があるかどうかをステップ1003で判断する。必要がある場合、後述する帯域優先送信(ステップ1004)に進む。必要がない場合、ステップ1001に戻る。送信モードを切り替えるための条件判断については後述する。まず、遅延優先送信手順について説明する。
【0076】
図11はステップ1002の遅延優先送信手順を示すものである。ステップ1102では、送信モジュール502が送信ブロックを選択する。ここで、送信モジュール502が次のブロック(送信されていないブロックで、ブロック番号がもっとも小さいブロック)を選択する。次に、送信モジュール502はステップ1103において、ステップ1102で選択したブロックをコネクション1で送信する。また、ステップ1103と並行してステップ1104も行う。ステップ1104ではステップ1102で選択したブロックをコネクション2で送信する。つまり、送信モジュール502が同じブロックをコネクション1及びコネクション2で並列に送信することになる。
【0077】
次に、ステップ1003での条件判定に用いる送信方法選択情報について述べる。マルチパス送信モジュール502はコネクション1およびコネクション2でデータを送信し続けた場合、各コネクションが混雑の状態になり、一時的にマルチパス送信モジュール502からの新しい送信要求を、通信制御部121が受け付けない、あるいは通信中データ損失率が高くなることがある。
【0078】
例えば、通信制御部121の採用するデータ通信プロトコルはTCPである場合、TCPはフロー制御という機能があり、ネットワークのデータ送信性能および受信側の受信性能により、送信側がネットワークに送信するある時点でのデータ量が制限される。データ量制限値以上のデータ量の送信が要求された場合、TCPの送信側が送信バッファというデータ保存領域にデータを格納していく。TCPの送信側の送信バッファの空き容量が所定値(例えば0)以下になると、TCPの送信側を担当する通信制御部121がデータの送信要求を受け付けないことがある。
【0079】
一方、通信制御部121の採用するデータ通信プロトコルはUDPである場合、UDPにはフロー制御という機能がないため、コネクションのデータ送信能力を超えたデータ量も送信してしまう特徴がある。この場合、通信制御部121が送信したデータが高い確率で通信中に損失し、受信側へ届かなくなる。そのため、UDPの場合、送信要求データ量がコネクションのデータ送信能力を超えたかどうかを知るために、受信側で受信したブロック番号を確認することで、データの損失率を調べる方法が有効である。
【0080】
本実施形態では、これら、バッファの空き容量に基づき、新しい送信要求を通信制御部121が受け付けるか否か、または、通信中データ損失率を、送信方法選択情報として利用する。
【0081】
ステップ1003では、コネクション1又はコネクション2の少なくともいずれか一方が送信できなく、かつ、受信側にG個(G>0)の未送信ブロックが残った場合、送信方法選択情報の判定結果がYESになり、送信モードを切り替える。
【0082】
なお、中継用コネクションが3以上の場合は次のように一般化できる。ステップ1003では、直前のステップ1002においてマルチパス送信モジュール502がブロック送信を要求したn本のコネクションの中で、m本以上のコネクションが要求を受け付けない場合、送信方法選択情報の判定はYESとなる。逆に、要求を受け付けないコネクションがm本未満の場合、判定はNOとなる。ここでn はデータ中継部112およびデータ中継部113の間のコネクション数であり、mは1からn までの間の整数値である。
【0083】
図12は帯域優先送信手順(ステップ1004)の詳細を示すフローチャートである。
【0084】
まず、ステップ1201では、マルチパス送信モジュール502はコネクション1が送信可能な状態にあるかどうかを確認する。コネクションが送信可能とは、通信プロトコルはTCPである場合、TCPの送信側である通信制御部121がデータの送信要求を受け付けることである。
【0085】
送信可能であれば、ステップ1202で一つのブロックをコネクション1で送信する。送信の仕方については後述する。マルチパス送信モジュール502は一つのブロックを送信した後と、ステップ1203で送信用バッファ511に未送信データがあるかどうかを確認し、未送信データがあれば、次のステップ1204に進み、無ければ、帯域優先送信を終了する。ステップ1201では、コネクション1が送信可能な状態でなければ、ステップ1204へ進む。
【0086】
マルチパス送信モジュール502はステップ1204で、コネクション2が送信可能な状態にあるかどうかを確認する。送信可能ならば、ステップ1205で一つのデータブロックを行い、その後、送信用バッファ511に未送信データがなければ、帯域優先送信を終了し、あれば、ステップ1201に戻る。
【0087】
このように、帯域優先送信では、マルチパス送信モジュール502が各コネクションを交互に監視し、コネクションがデータ送信可能であれば、データを送信し、送信用バッファ511にデータが無くなり次第、帯域優先送信を終了する。
【0088】
なお、ステップ1201及びステップ1204では、コネクション1及びコネクション2が更にデータ送信可能かを、データ中継部112が判断するために、次の方法を利用してもよい。
【0089】
データ中継部113はデータ中継部112からデータブロックを受信するたびに、受信したブロックに含まれているシーケンス番号をデータ中継部112に送り返し、ブロックの到着を通知する。到着通知はブロックを送信したコネクションで返送すればよい。データ中継部112はコネクション1から到着通知が来れば、コネクション1がさらにデータ送信が可能となることが分かり、ステップ1201でYES判断を出す。また、コネクション2に対しても同じ処理を行う。
【0090】
なお、データ中継部112は到着通知のシーケンス番号により、一定時間内にコネクション1が送信完了したブロックを特定し、送信完了したブロックのデータサイズの合計を取得することができる。
【0091】
一定時間内にコネクション1が送信完了したブロックのデータサイズの合計から、コネクション1の平均送信速度の計算ができ、また、同様に、コネクション2からの到着通知によりコネクション2の平均送信速度を計算することができる。
【0092】
データ中継部112はコネクション1及びコネクション2の平均送信速度を用いて、再送の判断(ステップ1301)やそれぞれのコネクションで次に送信するブロックの選択(ステップ1303)を行ってもよい。
【0093】
図13はマルチパス送信モジュール502がステップ1202及びステップ1205で一つのデータブロックを送信する手順を示すフローチャートである。まず、ステップ1301で、コネクション1(ステップ1202の場合)又はコネクション2(ステップ1205の場合)が再送する必要が可能かを判定する。
【0094】
ここでの再送とは、あるコネクションで送信中のデータを必要があれば他のコネクションで再送を行うことであり、これにより、受信側が途中のデータを抜けることなく受信できるようにする。
【0095】
ここで再送要否判定処理について説明する。各コネクションが送信中のブロックの中でもっとも小さい番号をQとする。また、各コネクションが送信中のブロックの中でもっとも番号の大きいものをPとする。PとQの間の差がK以上ならば、ステップ1301の判定結果がYESとなり、PとQの間の差がKより小さいならばステップ1301の判定結果がNOとなる。なお、上記の番号管理はマルチパス送信モジュール502が行う。
【0096】
本発明の実施形態では、Kを2にしているが、2以上の値にしてもよい。Kを小さい値にした場合、各コネクション1、コネクション2上のどちらか一方の送信速度の低下がデータ中継部112とデータ中継部113間のデータ送信性能に影響を与えにくく、一方、Kが小さすぎると再送の条件が成り立ちやすくなるため、再送の頻度が高くなり、ブロックの無駄な送信が発生し、データ中継部112とデータ中継部113間のデータ送信性能が低下する。
【0097】
ステップ1301で判定結果がYESとなる場合、ステップ1302では、Qを再送ブロックの番号として選択する。一方、ステップ1301で判定結果がNOとなる場合、ステップ1303では、番号P+R+(n−1)のブロックを次に送信するブロックとして選択する。
【0098】
ここで、Rはコネクション1(ステップ1202の場合)又はコネクション2(ステップ1205の場合)が直前のブロックを送信している間に他のコネクションが送信したブロックの総数である。一方、n はデータ中継部112及びデータ中継部113の間の中継用コネクション数である。本発明の実施形態ではnは2 となっている。なお、番号P + R + (n−1)のブロックが送信用バッファ511に存在しない又は存在するが、未送信ではない場合、次に送信するブロックを、未送信かつP+R+ (n−1)にもっとも近い番号のブロックとする。
【0099】
ステップ1304では、マルチパス送信モジュール502はステップ1302あるいはステップ1303で選択したブロックを、コネクション1(ステップ1202の場合)又はコネクション2(ステップ1205の場合)で送信する。また、マルチパス送信モジュール502はQより番号が小さいブロックを送信用バッファ511から消去する。
【0100】
次に図5を用いて、データ中継部112がデータ中継部113からデータを受信し、アプリクライアント111へ送信する手順を説明する。マルチパス受信モジュール503はコネクション1及びコネクション2からデータを受信し、受信用バッファ512に格納する。一方、送信モジュール504は受信用バッファ512の中のデータをコネクション4でアプリクライアント111へ送信する。
【0101】
図14は、マルチパス受信モジュール503の処理手順を示すフローチャートである。まずステップ1401でマルチパス受信モジュール503がコネクション1及びコネクション2からデータブロックが到着するまで待つ。マルチパス通信モジュール503は、自分が受信したブロックの番号を管理しており、ステップ1402で到着したデータブロックの番号を、データ送信開始時からそれまでにマルチパス受信モジュール503が受信したデータブロックと重複するかどうかを確認する。重複した場合はステップ1401に戻る。重複がない場合は到着したブロックを受信用バッファ512に格納する。ステップ1403の次はステップ1401に戻る。
【0102】
送信モジュール504は、受信用バッファ512に格納されるブロックを監視する。番号1のブロックがあると番号1のブロックを送信する。また、送信したブロックの次の番号のブロックがあれば、このブロックも送信する。送信したブロックの次の番号のブロックがなければ、次の番号のブロックが到着するまで待つ。
【0103】
なお、送信したブロックは受信用バッファ512から消去する。ここでの送信先は、端末101の中のアプリクライアント111である。また、ブロックを送信する際、ブロックのペイロードを送信する。つまり、送信モジュール504では、ステップ915のデータ統合作業が行われる。
【0104】
ここまで、データ中継部112の処理手順について説明した。データ中継部113は上述のデータ中継部112の内部構成および動作手順と同じである。ただし、データ中継部113の場合、マルチパス送信モジュール502はデータ中継部112へデータを送信し、受信モジュール501はアプリサーバ114から受信する。また、マルチパス受信モジュール503はデータ中継部112からデータを受信し、受信モジュール504はアプリサーバ114へデータを送信することになる。
【0105】
また、データ中継部112、113の間のコネクション本数は2以上あっても良い。
【0106】
また、以下の要素により、データ中継部112およびデータ中継部113が連携して中継コネクション数を調整してもよい。調整時に考慮する要素は、たとえば、それぞれのコネクションに対する課金ポリシー、それぞれのコネクションに対する消費電力、それぞれのコネクションに対するセキュリティーポリシー、それぞれのコネクションに対するユーザの好みである。
【0107】
各コネクション1、コネクション2上を送信されるデータをそれぞれ別の暗号化手法で暗号化し、データ中継部112、113間の送受信データの解読難度を高めることも可能である。
【0108】
今回説明した実施形態では、コネクション1及びコネクション2はインターネットの接続としていたが、接続環境はIPネットワークではなくてもよい。また、データ中継部はアプリケーションレイヤに適用したが、データトランスポートレイヤ、IPレイヤなどでも適用可能である。
【0109】
以上の通り、本発明の実施形態を説明した。
【0110】
本実施形態では、時間当たりデータ量が少ない場合、つまり、各コネクション1、 2の送信能力に余裕があるときは、ステップ1002の遅延優先送信でデータ中継部112が各コネクション1、 2で同じデータブロックを送信するため、各コネクション1、 2の中で遅延がもっとも短いほうでブロックがデータ中継113に到着する。
【0111】
一方、送信データサイズが大きい場合、つまり、各コネクション1、 2の送信能力を超えたデータ量が送信用バッファ511に存在する場合、データ中継部112がステップ1004の帯域優先送信に切り替えて、各コネクション1、ネクション2の帯域を最大限に利用して、送信用バッファ511内のデータを素早く送信する。
【0112】
本実施形態によれば、シンクライアントシステムにおいて、端末からの操作命令は遅延優先送信方法で送信され、素早くサーバ装置へ到着する。一方、サーバ装置からの描画命令も遅延優先送信で送信され、素早く端末へ到着する。また、サーバ装置からの画像データなどは帯域優先送信方法で送信されるため、端末とサーバ送信間の複数のネットワークの帯域が小さくても、端末では画像データのダウンロードも素早くできる。よって、端末での入力操作が素早く反映されることになり、端末利用者の操作感が向上する。
【0113】
また、本実施形態によれば、送信済みおよび/または送信中のブロックの数に基づき、コネクション毎の通信性能を取得し、ステップ1303では、取得した通信性能に基づき、遅いコネクションほど (Rの値が大きい)、ブロックの番号 P+R+(n−1))が大きいブロックを送信するため、ブロックが受信側に到着するとき、ブロック番号どおりに到着することが多くなる。これにより、受信側でのデータ並べ替え処理が少なくなり、システムのデータ送受信速度が向上する。
【0114】
さらに本実施形態は、データ中継部112が次に受信したいブロックが、コネクションの通信性能低下により、データ中継部113への到着が遅れている場合、ブロック再送を行う。ブロックの再送 (ステップ1302)により、一部のコネクションの通信能力が低下しても受信側ではブロック番号どおりにブロックを受信できる確率が高くなるため、受信側での処理が遅れることも少なくなる。
【0115】
本発明の実施形態は図15に示すデータ通信システムの構成に変更してもよい。なお、同じ参照符号は図1と同じ要素を表す。すなわち、データ中継部112を端末101内に構成する代わりに、中継機器102として独立させてもよい。中継機器102の内部構成は中継機器103と同じである。この場合、アプリクライアント111とデータ中継部112の間のデータやり取りを行うコネクション4はネットワークを経由することになる。
【0116】
また、中継機器102はホーム・ゲートウェイであってもよい。ホーム・ゲートウェイは、一般にインターネットと家庭(ホーム)ネットワークの間に配置され、ホーム・ルータ、プロトコル変換、ファイアウォールなどの機能を持つ情報通信機器である。本発明の実施形態を採用すると、家の中のすべての端末がホームゲートウェアを介して、インターネット上にあるサーバ装置104とマルチパスで高速に通信ができるようになる。
【0117】
また、本発明の実施形態は図16に示すデータ通信システムの構成に変更してもよい。図16で示すシステム構成では、データ中継部113をアプリサーバ114と同じく、サーバ装置104内に構成する。データ中継部113とアプリサーバ114は通信制御部121を介してデータのやり取りを行う。サーバ装置104は、LAN142ではなくコネクション1およびコネクション2で端末101に接続する。図16で示すシステム構成を採用すれば、 データ中継部113とアプリサーバ114のデータやり取りはLAN142を介さないため、より高速に行える。
【0118】
本発明の実施例のデータ通信システムは、図17に示すように、VPN (Virtual Private Network)サーバ装置1701が、コネクション1やコネクション2など、データ中継部112とデータ中継部113の間のコネクションを切断したり、中継したりしてもよい。
【0119】
この場合でも、データ中継部112を端末101の中に導入してもよいし、中継機器102に導入してもよい。また、データ中継部113をサーバ装置104に導入してもよいし、中継機器103に導入してもよい。
【0120】
VPNサーバ装置1701がコネクション1及びコネクション2を並列に通すためにコネクション1及びコネクション2上の認証のアカウントをそれぞれ別のものを利用してもよい。又は、VPNサーバで二重ログインを許可にして、コネクション1及びコネクション2上同じアカウントで認証を行ってもよい。
【0121】
また、本発明の実施例のシステムにおいて、図18に示すように、中継機器103はVPNサーバでもよい。VPNサーバが複数ある環境において、コネクション1及びコネクション2が同じVPNサーバに接続しないと、データ中継部113がコネクション1及びコネクション2両方からのデータを受信することができない。そこで、VPNサーバが複数ある場合は、データ中継部112が先に設立したコネクションと同じVPNサーバに次のコネクションが接続するようにデータ中継部112がコネクションの確立を管理すればよい。
【0122】
本発明の実施例のシステムにおいて、中継機器102および中継機器103は、図19に示すような、WAN(Wide Area Network、広域通信網)の高速化装置であってもよい。
【0123】
WAN高速化装置1902とWAN高速化装置1903はネットワーク1とネットワーク2間のデータやり取りを高速化するものである。WAN高速化装置1902とWAN高速化装置1903は二つ以上のネットワーク回線で結ばれるとする。
【0124】
この際、データ中継部112は、業者Xのネットワーク回線上にコネクション1、業者Yのネットワーク回線上にコネクション2を作成し、ネットワーク1の中からネットワーク2へ送信されるデータをすべて纏めてデータ中継部113へ転送する。また、データ中継部113はネットワーク2からのデータに対してもコネクション1およびコネクション2で、データ中継部112へ転送する。
【0125】
ネットワーク1からWAN高速化装置1902へ送信されたデータは、ネットワーク1の様々な利用者のデータを含んでおり、それぞれの利用者のデータはネットワーク2中の別の宛先を持つことが多い。そのため、データ中継部112はデータをデータ中継部113へ送信する際、ネットワーク1中のどの利用者から送られ、そしてネットワーク2のどの宛先に届けるべきかというコネクション情報を取得し、データと一緒にコネクション情報を送信する必要がある。データ中継部113はコネクション情報に基づいてネットワーク2の内部へデータを転送するという処理を行う。
【0126】
なお、データ中継部112によるコネクション情報の取得方法としては、ネットワーク1の利用者が利用する送信側通信機器が、ネットワーク2へTCPコネクションを確立するために、WAN高速化装置1902を経由して送信するSYNパケットを、データ中継部112がキャプチャして、SYNパケットの宛先から当該利用者の通信先を取得してもよい。
【0127】
上記実施例のシステムにおいて、図20に示すように、データ中継部112及びデータ中継部113をMIMO (Multiple Input Multiple Output、複数のアンテナで複数の通信チャネルを用いて並列にデータ送受信を行い、帯域を広げる無線通信技術)の送受信機器に導入してもよい。
【0128】
図20では、MIMO送受信機器2002のアンテナ1と、MIMO送受信機器2003のアンテナ2は通信チャネル1を設立し、アンテナ3及びアンテナ4は通信チャネル2を設立する。MIMO送受信機器2002と、MIMO送受信機器2003は通信チャネル1及び通信チャネル2で異なるデータを並列に送信する機能を備える。
【0129】
上記装置に、帯域優先送信と、遅延優先送信を切り替えて送信する上記実施例のデータ中継部112及びデータ中継部113を導入することにより、通信環境が悪化する場合でも通信速度を安定させることが可能になる。
【0130】
また、MIMO送受信機器に適用する際、データ中継部112及びデータ中継部113のステップ1003における、遅延優先送信と帯域優先送信を切り替える条件を、チャネル1及びチャネル2上のデータ損失率が、予め定めた所定値より高くなる場合、遅延優先送信に切り替える、としてもよい。これにより、遅延優先送信では、同じデータをチャネル1とチャネル2で並列に送信するため、片方が損失しても受信側がデータを受信することができ、通信速度の低下を防ぐことができる。また、チャネル1及びチャネル2上のデータ損失率が、所定値以下になった場合、従来どおり帯域優先送信でデータ送信の高速化を実現することが可能になる。
【図面の簡単な説明】
【0131】
【図1】実施形態に関わるデータ通信システムの構成を例示する図である。
【図2】実施形態に関わる端末101のハードウェア構成を例示する図である。
【図3】実施形態に関わる中継機器103のハードウェア構成を例示する図である。
【図4】実施形態に関わるサーバ装置104のハードウェア構成を例示する図である。
【図5】実施形態に関わるデータ中継部112の機能構成を例示する図である。
【図6】実施形態に関わるデータブロックの構成を例示する図である。
【図7】実施形態に関わるコネクション管理テーブル505の構成を例示する図である。
【図8】実施形態に関わるデータ通信システムの動作開始手順を例示する図である。
【図9】実施形態に関わるデータ通信システムのデータ送受信手順を例示する図である。
【図10】実施形態に関わるデータ中継部の処理手順を例示するフローチャートである。
【図11】実施形態に関わる遅延優先送信の処理手順を例示するフローチャートである。
【図12】実施形態に関わる帯域優先送信の処理手順を例示するフローチャートである。
【図13】実施形態に関わる帯域優先送信時のブロック送信手順を例示するフローチャートである。
【図14】実施形態に関わるデータ中継部の受信モジュールの処理手順を例示するフローチャートである。
【図15】実施形態に関わるデータ中継部112を中継機器102として独立させる場合のシステム構成を例示する図である。
【図16】実施形態に関わるデータ中継部113をサーバ装置内に構成する場合のシステム構成を例示する図である。
【図17】実施形態に関わるVPNサーバがある環境のシステム構成を例示する図である。
【図18】実施形態に関わるデータ中継部113をVPNサーバ装置への導入した場合のシステム構成を例示する図である。
【図19】実施形態に関わるデータ中継部をWAN高速化装置へ導入した場合のシステム構成を例示する図である。
【図20】実施形態に関わるデータ中継部をMIMO送受信機器へ導入した場合のシステム構成を例示する図である。
【符号の説明】
【0132】
101:端末、102:中継機器、103:中継機器、104:サーバ装置、111:アプリクライアント、112:データ中継部、113:データ中継部、114:アプリサーバ、121:通信制御部、131:通信ハードウェア、211:メモリ、212:固定ディスク、213:中継機器接続情報、214:サーバ接続情報、223:プロセッサ、224:I/Oハードウェア、501:受信モジュール、502:マルチパス送信モジュール、503:マルチパス受信モジュール、504:送信モジュール、505:コネクション管理テーブル、511:送信用バッファ、512:受信用バッファ、1701:VPNサーバ装置、1901:WAN高速化装置、1902:WAN高速化装置、2002:MIMO送受信機器、2003:MIMO送受信機器。

【特許請求の範囲】
【請求項1】
複数の通信機器間で送受信するデータを一つ以上のブロックに分け、前記複数の通信機器間に確立した複数のコネクションを用いて送受信する複数コネクションを用いたデータ通信方法において、
送信側通信機器は、一つの送信すべき前記ブロックを、前記複数のコネクションを用いて並列に送信する送信方法と、前記複数のコネクションのいずれか一つを用いて送信する送信方法と、のどちらを選択して送信するかを決定する送信方法選択情報を繰り返し取得し、
取得した前記送信方法選択情報が前記複数のコネクションを用いて並列に送信することを示している場合は、前記送信側通信機器は、一つ以上の送信すべき前記ブロックを、前記複数のコネクションを用いて並列に送信し、
取得した前記送信方法選択情報が前記複数のコネクションのいずれか一つを用いて送信することを示している場合は、前記送信側通信機器は、一つ以上の送信すべき前記ブロックの各々を、前記複数のコネクションのいずれか一つを用いて送信し、
受信側通信機器は、前記複数のコネクションのいずれか一つから受信した前記ブロックを採用する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項2】
請求項1に記載の複数コネクションを用いたデータ通信方法において、
前記送信方法選択情報は、前記送信側通信機器が送信しようとするブロック数と、前記複数のコネクションにより前記送信側通信機器が送信し前記受信側通信機器が受信に成功したブロック数と、に依存する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項3】
請求項2に記載の複数コネクションを用いたデータ通信方法において、
前記複数のコネクションを用いて並列に送信する送信方法を選択している場合に取得する前記送信方法選択情報は、前記複数のコネクションのいずれか一つが送信できない状態であるか否かを示し、
前記送信側通信機器は、取得した前記送信方法選択情報が、前記複数のコネクションのいずれか一つが送信できない状態を示していれば、前記複数のコネクションのいずれか一つを用いて送信する送信方法に切り替え、
前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択している場合に取得する前記送信方法選択情報は、送信待ちのブロックがあるか否かを示し、
前記送信側通信機器は、取得した前記送信方法選択情報が、送信待ちのブロック数が一定のしきい値以下を示していれば、前記複数のコネクションを用いて並列に送信する送信方法に切り替える
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項4】
請求項2に記載の複数コネクションを用いたデータ通信方法において、
前記送信方法選択情報は、前記受信側通信機器から取得する前記複数のコネクションを用いて送信したブロックの損失率であって、
前記送信側通信機器は、
取得した前記ブロックの損失率が、予め定めた所定値より高ければ、前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択し、
取得した前記ブロックの損失率が、予め定めた所定値以下であれば、前記複数のコネクションを用いて並列に送信する送信方法を選択する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項5】
請求項1に記載の複数コネクションを用いたデータ通信方法において、
前記受信側通信機器は、前記複数のコネクションから最初に受信した前記ブロックを採用する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項6】
請求項3に記載の複数コネクションを用いたデータ通信方法において、
前記複数のコネクションがTCP (Transmission Control Protocol)で制御されており、前記複数のコネクションを用いて並列に送信する送信方法を選択している場合の前記送信方法選択情報は、前記送信側通信機器の前記複数のコネクションの各々について備えているバッファ内の空き容量であって、
前記送信側通信機器は、前記バッファ内の空き容量に基づき、前記複数のコネクション各々の送信可否を判断する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項7】
請求項2に記載の複数コネクションを用いたデータ通信方法において、
前記複数のコネクションがUDP (User Datagram Protocol)で制御されている場合、前記送信側通信機器は、
前記受信側通信機器から、当該受信側通信機器が受信に成功したブロックの情報を取得し、
前記送信側通信機器が送信したブロックの情報と、取得した前記受信に成功したブロックの情報と、に基づき、前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択するか、前記複数のコネクションを用いて並列に送信する送信方法を選択するか、を判断する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項8】
請求項1に記載の複数コネクションを用いたデータ通信方法において、
送信すべきデータのブロックを、前記複数のコネクションのいずれか一つを用いて送信する場合に、
前記送信側通信機器は、各コネクションで送信された、および/または、送信中の前記ブロック番号に基づき、前記ブロックの送信に用いるコネクションと当該コネクションで次に送信するブロックを選択する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項9】
請求項8に記載の複数コネクションを用いたデータ通信方法において、
前記送信側通信機器は、送信する前記ブロックに識別子を付与して送信し、
前記受信側通信機器は、受信した前記ブロックに含まれている識別子を送信側の通信機器に返信し、
前記送信側通信機器は、受信した前記識別子に基づき、送信したブロック数と送信時間を求めることで各コネクションの転送速度を求める
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項10】
請求項3に記載の複数コネクションを用いたデータ通信方法において、
前記送信側通信機器は、
前記複数のコネクションの各々において、前記受信側通信機器が受信していない、送信中および送信待ちの前記ブロックを監視し、
監視対象の前記ブロックについて、他の前記コネクションでの送信を行うかどうかを、前記送信待ちブロックの量に基づいて判断し、
前記判断の結果に従い、監視対象の前記ブロックを、前記他のコネクションで送信する
ことを特徴とする複数コネクションを用いたデータ通信方法。

【図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

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate