(57)【要約】【課題】従来のマルチパス通信技術では、パケットロスと伝播遅延への対応重視の短いデータおよび帯域重視の長いデータの混在環境で、効率良く送受信できず、また、データの到着順序は考慮されていなく、一部のコネクションの送信性能低下があった場合、データが途中抜けて受信側に到着し、データ送信の効率が低下する。【解決手段】送信するデータが短いデータの場合は、送信側は複数のコネクションで並列に同じデータを送信し、受信側は先に届いたデータを採用し、長いデータの場合は、送信側は複数のコネクションでデータの異なる部分の送信を行う。また、各コネクションの送信速度に基づき、受信側で順番通りに到着するように各コネクションへの送信データの振り分けを行う。さらに、複数のコネクションを監視し、送信中データを必要があれば他コネクションで再送を行う。【選択図】 図１
2010056990.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信機器間で送受信するデータを一つ以上のブロックに分け、前記複数の通信機器間に確立した複数のコネクションを用いて送受信する複数コネクションを用いたデータ通信方法において、
送信側通信機器は、一つの送信すべき前記ブロックを、前記複数のコネクションを用いて並列に送信する送信方法と、前記複数のコネクションのいずれか一つを用いて送信する送信方法と、のどちらを選択して送信するかを決定する送信方法選択情報を繰り返し取得し、
取得した前記送信方法選択情報が前記複数のコネクションを用いて並列に送信することを示している場合は、前記送信側通信機器は、一つ以上の送信すべき前記ブロックを、前記複数のコネクションを用いて並列に送信し、
取得した前記送信方法選択情報が前記複数のコネクションのいずれか一つを用いて送信することを示している場合は、前記送信側通信機器は、一つ以上の送信すべき前記ブロックの各々を、前記複数のコネクションのいずれか一つを用いて送信し、
受信側通信機器は、前記複数のコネクションのいずれか一つから受信した前記ブロックを採用する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項２】
請求項１に記載の複数コネクションを用いたデータ通信方法において、
前記送信方法選択情報は、前記送信側通信機器が送信しようとするブロック数と、前記複数のコネクションにより前記送信側通信機器が送信し前記受信側通信機器が受信に成功したブロック数と、に依存する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項３】
請求項２に記載の複数コネクションを用いたデータ通信方法において、
前記複数のコネクションを用いて並列に送信する送信方法を選択している場合に取得する前記送信方法選択情報は、前記複数のコネクションのいずれか一つが送信できない状態であるか否かを示し、
前記送信側通信機器は、取得した前記送信方法選択情報が、前記複数のコネクションのいずれか一つが送信できない状態を示していれば、前記複数のコネクションのいずれか一つを用いて送信する送信方法に切り替え、
前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択している場合に取得する前記送信方法選択情報は、送信待ちのブロックがあるか否かを示し、
前記送信側通信機器は、取得した前記送信方法選択情報が、送信待ちのブロック数が一定のしきい値以下を示していれば、前記複数のコネクションを用いて並列に送信する送信方法に切り替える
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項４】
請求項２に記載の複数コネクションを用いたデータ通信方法において、
前記送信方法選択情報は、前記受信側通信機器から取得する前記複数のコネクションを用いて送信したブロックの損失率であって、
前記送信側通信機器は、
取得した前記ブロックの損失率が、予め定めた所定値より高ければ、前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択し、
取得した前記ブロックの損失率が、予め定めた所定値以下であれば、前記複数のコネクションを用いて並列に送信する送信方法を選択する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項５】
請求項１に記載の複数コネクションを用いたデータ通信方法において、
前記受信側通信機器は、前記複数のコネクションから最初に受信した前記ブロックを採用する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項６】
請求項３に記載の複数コネクションを用いたデータ通信方法において、
前記複数のコネクションがTCP (Transmission Control Protocol)で制御されており、前記複数のコネクションを用いて並列に送信する送信方法を選択している場合の前記送信方法選択情報は、前記送信側通信機器の前記複数のコネクションの各々について備えているバッファ内の空き容量であって、
前記送信側通信機器は、前記バッファ内の空き容量に基づき、前記複数のコネクション各々の送信可否を判断する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項７】
請求項２に記載の複数コネクションを用いたデータ通信方法において、
前記複数のコネクションがUDP (User Datagram Protocol)で制御されている場合、前記送信側通信機器は、
前記受信側通信機器から、当該受信側通信機器が受信に成功したブロックの情報を取得し、
前記送信側通信機器が送信したブロックの情報と、取得した前記受信に成功したブロックの情報と、に基づき、前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択するか、前記複数のコネクションを用いて並列に送信する送信方法を選択するか、を判断する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項８】
請求項１に記載の複数コネクションを用いたデータ通信方法において、
送信すべきデータのブロックを、前記複数のコネクションのいずれか一つを用いて送信する場合に、
前記送信側通信機器は、各コネクションで送信された、および／または、送信中の前記ブロック番号に基づき、前記ブロックの送信に用いるコネクションと当該コネクションで次に送信するブロックを選択する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項９】
請求項８に記載の複数コネクションを用いたデータ通信方法において、
前記送信側通信機器は、送信する前記ブロックに識別子を付与して送信し、
前記受信側通信機器は、受信した前記ブロックに含まれている識別子を送信側の通信機器に返信し、
前記送信側通信機器は、受信した前記識別子に基づき、送信したブロック数と送信時間を求めることで各コネクションの転送速度を求める
ことを特徴とする複数コネクションを用いたデータ通信方法。
【請求項１０】
請求項３に記載の複数コネクションを用いたデータ通信方法において、
前記送信側通信機器は、
前記複数のコネクションの各々において、前記受信側通信機器が受信していない、送信中および送信待ちの前記ブロックを監視し、
監視対象の前記ブロックについて、他の前記コネクションでの送信を行うかどうかを、前記送信待ちブロックの量に基づいて判断し、
前記判断の結果に従い、監視対象の前記ブロックを、前記他のコネクションで送信する
ことを特徴とする複数コネクションを用いたデータ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報通信ネットワークにおいて、複数の通信コネクション（以下、コネクションと略する）を並列に使用することで通信の性能を向上する方法に関するものである。
【背景技術】
【０００２】
データとデータ処理ソフトウェアをサーバで管理し、サーバのデータ処理ソフトウェアを、ユーザが使用するシンクライアントなどの端末により、遠隔操作することで情報処理を行う遠隔操作型情報処理システムが普及しつつある。遠隔操作型情報処理システムでは、端末がユーザの遠隔操作命令を受け付けネットワーク経由でサーバに送り、サーバが遠隔操作命令に従いデータの処理を行い、処理結果の画面情報をネットワーク経由で端末に返し、端末が画面情報を表示する。遠隔操作型情報システムでは、サーバから端末へは、データではなく画面情報が送信されるため、データの漏洩が起こりにくくなる。
【０００３】
このような遠隔操作型情報処理システムで、スキャナや、DVDリーダなどの周辺機器を利用しようとすると、ユーザが操作する端末にこれら周辺機器が接続され、端末からサーバへ、上述の遠隔操作命令に混じって、大量のデータがネットワーク経由で送信されることになる。一方、サーバから端末へ送信される画面情報は、上述の遠隔操作命令に対応する処理結果に基づく短い描画命令、及び大量の画像データを含む。つまり、端末とサーバの間では同一方向に長短のデータが混在するという状況が発生する。
【０００４】
この場合のデータ送信速度はネットワークのデータ送受信性能に強く依存するため、ユーザが端末で快適に情報処理する環境を構築するには、応答速度および／または帯域幅が要因に含まれる、端末とサーバ間のネットワーク性能の確保が重要である。
【０００５】
一方、インターネットなどのパケット交換ネットワークは通信の速度を保障しない仕組みを採用しており、送信側と受信側は双方とも、通信路のデータ送受信性能を決めることが困難である。
【０００６】
そこで、単一コネクションよりも高い性能でデータ送信を実現するために、複数コネクション(パス)を並列に利用する手法 (マルチパス通信) が注目されている。
【０００７】
特許文献１では、送信側は送信すべきデータをPDU (Protocol Data Unit) 単位に分割し、分割した各データに対して、送信状況管理のために特別のヘッダを付与して、更に通常のTCP (Transmission Control Protocol)ヘッダをつけて送信する手法を採用している。具体的には、送信側は、複数コネクションを並列に用いて、PDUを送信する。受信側は、PDUを受信した際、受信したことを知らせるためのACK（Acknowledgment）を返送する。複数コネクションを並列に扱う輻輳制御を行い、各々のコネクションにおいて従来TCPと同等の制御を行う。
【０００８】
特許文献2では、リアルタイム通信などに使用されるUDP (User Datagram  Protocol) を用いる。具体的には、送信すべきデータ系列を複数の部分データ系列に分配して、これらを複数のコネクションで並列に送信する。コネクションごとの通信品質を観測し、この情報に基づいて送信データ系列の部分データ系列への配分 (α％と 100−α％) を適宜変更して、網全体のスループットを確保する。
【０００９】
【特許文献１】米国特許出願公開第 2007/0005787号明細書
【特許文献２】特開 2006−67075 号公報  （図1、段落００１８、００２０）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
データを送るための帯域が狭い、又は伝播遅延が大きい、等の理由によりデータ送信失敗（送信中のデータ損失）の発生頻度が高い、といったデータ送信性能の低いネットワーク環境では、データの送受信に時間がかかり、ネットワークを利用した情報処理システムの性能が低下する問題がある。
【００１１】
マルチパス通信方法は、このデータ送受信性能を高めるために複数のコネクションを並列に使用する技術であるが、下記の課題がある。
【００１２】
まず、ネットワーク上で送信されるデータは、情報処理システムで実現する情報処理内容により、様々なサイズがあり、数パケットからなる、上述のような短いデータと、数十以上といったパケットの列からなる長いデータの二種類が混在する場合が多い。
【００１３】
それに加えて、短いデータは通信中のデータ損失無く素早く送ることが望ましい重要なデータで、長いデータは広い帯域で効率良く送ることが望ましいデータであることが多い。
【００１４】
例えば、遠隔操作型情報処理システムでは、端末からサーバへは、操作命令という短いデータと、記憶媒体の読み取り装置やスキャナの出力という長いデータが混在して送信される。また、サーバから端末へ送られる画面情報は、描画命令であり送信途中に損失なく素早く送ることが望ましい短いデータと、画像データであり広い帯域で送ることが望ましい長いデータとを含み、これらが混在して送信される。
【００１５】
しかしながら、従来のマルチパス通信技術では、通信中のデータ損失や長い伝播遅延の影響を回避するための、複数コネクションで同じデータを並列に送る方法と、帯域を広くするための複数コネクションで違うデータを並列に送る方法のどちらかを使用するしかなく、データ損失と伝播遅延を減らすべき短いデータおよび帯域を確保すべき長いデータが混在する環境で、これらを効率良く送受信することが難しかった。
【００１６】
また、データは送信側が送信した順で、かつ、途中の抜けなく受信側に到着すると、受信側は素早く処理開始できることが多い。例えば、遠隔操作型情報処理システムでは、サーバから送られる画面情報を、端末は生成された順で再生するため、順序良く到着しないと、端末での画面再生は途中の抜けたデータを受信するまで遅れてしまう。しかし、従来のマルチパス通信技術では、データの到着順序は考慮されていなかった。
【００１７】
さらに、従来のマルチパス通信技術では、複数のコネクションにデータを分割して送信する際に、一部のコネクションに接続切れなどの通信性能低下があった場合、途中のデータが抜けて受信側に到着するため、抜けたデータが受信側に到着して、受信側での処理再開するまでに時間が掛かっていた。
【課題を解決するための手段】
【００１８】
本発明は、複数のコネクションを状況に応じて効率よく使い分けるデータ通信技術を提供する。
【００１９】
具体的な本発明の一態様は、複数の通信機器間で送受信するデータを一つ以上のブロックに分け、前記複数の通信機器間に確立した複数のコネクションを用いて送受信する複数コネクションを用いたデータ通信方法であって、
送信側通信機器は、一つの送信すべき前記ブロックを、前記複数のコネクションを用いて並列に送信する送信方法と、前記複数のコネクションのいずれか一つを用いて送信する送信方法と、のどちらを選択して送信するかを決定する送信方法選択情報を繰り返し取得し、
取得した前記送信方法選択情報が前記複数のコネクションを用いて並列に送信することを示している場合は、前記送信側通信機器は、一つ以上の送信すべき前記ブロックを、前記複数のコネクションを用いて並列に送信し、
取得した前記送信方法選択情報が前記複数のコネクションのいずれか一つを用いて送信することを示している場合は、前記送信側通信機器は、一つ以上の送信すべき前記ブロックの各々を、前記複数のコネクションのいずれか一つを用いて送信し、
受信側通信機器は、前記複数のコネクションのいずれか一つから受信した前記ブロック、例えば、前記複数のコネクションから最初に受信したブロック、を採用することを特徴とする。
【００２０】
前記送信方法選択情報は、送信側通信機器が送信しようとする単位時間当たりのデータ量に依存し、予め定めた所定値より短いか、所定値以上の長さであるか、を示す情報であってもよい。なお、データ量としてブロック数を用いても良い。
【００２１】
また、前記送信方法選択情報として、データが短いか、長いか、を用いても良い。短いデータと長いデータの区別は、たとえば、各コネクションの最大の送信速度でデータを送信しても未送信のデータが送信側に残った場合、長いデータである、と判断し、長いデータでなければ、短いデータである、と判断しても良い。
【００２２】
また、前記送信方法選択情報は、前記送信側通信機器が送信しようとするブロック数と、前記複数のコネクションにより前記送信側通信機器が送信し受信側通信機器が受信に成功したブロック数と、に依存する情報であってもよい。
【００２３】
すなわち、送信しようとする単位時間当たりのブロック数が多くてもコネクションの通信性能が高ければ、前記複数のコネクションを用いて並列に送信し、送信しようとする単位時間当たりのブロック数が少なくてもコネクションの通信性能が低ければ、前記ブロックの各々を、前記複数のコネクションのいずれか一つを用いて送信するようにしてもよい。
【００２４】
また、前記複数のコネクションを用いて並列に送信する送信方法を選択している場合に取得する前記送信方法選択情報は、前記複数のコネクションのいずれか一つが送信できない状態であるか否かを示し、
前記送信側通信機器は、取得した前記送信方法選択情報が、前記複数のコネクションのいずれか一つが送信できない状態を示していれば、前記複数のコネクションのいずれか一つを用いて送信する送信方法に切り替え、
前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択している場合に取得する前記送信方法選択情報は、送信待ちのブロックがあるか否かを示し、
前記送信側通信機器は、取得した前記送信方法選択情報が、送信待ちのブロック数が一定のしきい値以下を示していれば、前記複数のコネクションを用いて並列に送信する送信方法に切り替えることを特徴とする。
【００２５】
また、前記送信方法選択情報は、前記受信側通信機器から取得する前記複数のコネクションを用いて送信したブロックの損失率であって、前記送信側通信機器は、取得した前記ブロックの損失率が、予め定めた所定値より高ければ、前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択し、取得した前記ブロックの損失率が、予め定めた所定値以下であれば、前記複数のコネクションを用いて並列に送信する送信方法を選択してもよい。
【００２６】
また、前記複数のコネクションがTCP (Transmission Control Protocol)で制御されており、前記複数のコネクションを用いて並列に送信する送信方法を選択している場合の前記送信方法選択情報は、前記送信側通信機器の前記複数のコネクションの各々について備えているバッファ内の空き容量であって、前記送信側通信機器は、前記バッファ内の空き容量に基づき、前記複数のコネクション各々の送信可否を判断してもよい。
【００２７】
また、前記複数のコネクションがUDP (User Datagram Protocol)で制御されている場合、前記送信側通信機器は、前記受信側通信機器から、当該受信側通信機器が受信に成功したブロックの情報を取得し、前記送信側通信機器が送信したブロックの情報と、取得した前記受信に成功したブロックの情報と、に基づき、前記複数のコネクションのいずれか一つを用いて送信する送信方法を選択するか、前記複数のコネクションを用いて並列に送信する送信方法を選択するか、を判断してもよい。なお、ブロックの情報として、ブロック番号を用いても良い。
【００２８】
また、本発明が提供する複数コネクションを用いたデータ通信方法は、送信側が、帯域優先送信において、各コネクションの送信完了および送信中のデータに基づいて、受信側での処理の順番通りに到着するように各コネクションへの送信データの振り分けを行うことを特徴とする。
【００２９】
具体的には、送信すべきデータのブロックを、前記複数のコネクションのいずれか一つを用いて送信する場合に、前記送信側通信機器は、各コネクションで送信された、および／または、送信中の前記ブロック番号に基づき、前記ブロックの送信に用いるコネクションと当該コネクションで次に送信するブロックを選択してもよい。
【００３０】
さらに、前記送信側通信機器は、送信する前記ブロックに識別子を付与して送信し、前記受信側通信機器は、受信した前記ブロックに含まれている識別子を送信側の通信機器に返信し、前記送信側通信機器は、受信した前記識別子に基づき、送信したブロック数と送信時間を求めることで各コネクションの転送速度を求めてもよい。
【００３１】
さらに、前記送信側通信機器は、前記複数のコネクションの各々において、前記受信側通信機器が受信していない、送信中および送信待ちの前記ブロックを監視し、監視対象の前記ブロックについて、他のコネクションでの送信を行うかどうかを、前記送信待ちデータの量に基づいて判断し、前記判断の結果に従い、監視対象の前記ブロックを、前記他のコネクションで送信してもよい。
【００３２】
上記構成により、短いデータは最も速いコネクションで送られたものが採用されるため通信中データ損失と伝播遅延の影響を少なくすることができ、長いデータについては複数のコネクションで別々のデータを送るため帯域を拡大できるようになり、通信中データ損失と伝播遅延を減らすべき短いデータと帯域を確保すべき長いデータが混在する環境で、これらを効率良く送受信することが可能となる。
【００３３】
また、各コネクションの通信性能を考慮して、各コネクションへ送信データを振り分けることにより、送信元で作られた順番通りに送信データが受信側に到着する確率が高くなるため、受信側はデータ処理を素早く開始できるようになる。
【００３４】
さらに、再送が必要なデータを他コネクションで再送することにより、複数のコネクションの内、送信性能低下に繋がる一部のコネクションの接続切れなどがあった場合でも、受信側への影響を少なくすることが可能となる。
【発明の効果】
【００３５】
本発明により、ネットワークの送受信性能が向上し、ネットワークを利用した情報処理システムの性能が向上する。
【発明を実施するための最良の形態】
【００３６】
図１は本発明の実施形態に関わるデータ通信システムの構成を示すブロック図である。以下では、送信側通信機器として端末１０１を用い、サーバ装置１０４を遠隔操作する、いわゆるシンクライアントシステムでの実施形態を説明する。まず、図中の各ブロックの意味について、以下、図２〜図７を用いて説明する。
【００３７】
図２は端末１０１の内部構成を示すものである。端末１０１はプロセッサ２２３、I/Oハードウェア２２４、通信ハードウェア１３１、固定ディスク２１２及びメモリ２１１から構成される。プロセッサ２２３はデータを処理するための計算機能を持つハードウェアである。I/Oハードウェア２２４はモニタ、キーボードやマウスなど、利用者が端末を操作するためのデバイスである。通信ハードウェア１３１はNIC (ネットワークインタフェースカード) など、ネットワーク通信のためのデバイスである。固定ディスク２１２はデータやデータ処理ソフトウェア (プログラム) を格納する記憶媒体 (例えば磁気ディスクなど)である。メモリ２１１はプログラムを実行する際にプロセッサ２２３が利用する記憶媒体である。
【００３８】
固定ディスク２１２には、通信制御部１２１とアプリクライアント１１１とデータ中継部１１２を実現するプログラムと、中継機器接続情報２１３とサーバ接続情報２１４と、が格納されている。通信制御部１２１はソケット (プログラムとトランスポートプロトコル (TCPやUDP)の間のインターフェース) やTCP/IPスタックなど、通信ハードウェア１３１を通じてデータをネットワーク上送受信するための機能を備える。アプリクライアント１１１は端末利用者が端末１０１を利用する際に必要となる機能を備える。データ中継部１１２はデータ保存領域を含み、マルチパス通信を実現する機能を備える。データ中継部１１２の詳細については後述する。
【００３９】
中継機器接続情報２１３は後述する中継機器１０３のIPアドレス及びデータ中継部１１３が利用するポート番号（TCP/IP通信を行うソフトウェアプログラムを識別するための番号）を含んでいる。中継機器接続情報２１３により、データ中継部１１２がデータ中継部１１３へ接続することが可能となる。一方、サーバ接続情報２１４は後述するサーバ装置１０４のIPアドレス及びアプリサーバ１１４が利用するポート番号を含んでいる。サーバ接続情報２１４により、データ中継部１１３がアプリサーバ１１４に接続することができる。
【００４０】
データ中継部１１２、アプリクライアント１１１及び通信制御部１２１を実現するプログラムは、実行する際にメモリ２１１にロードされてプロセッサ２２３により実行され、上述の機能を実現する。
【００４１】
図３は、受信側通信機器として用いる中継機器１０３の内部構成を示すものである。中継機器１０３はプロセッサ２２３、通信ハードウェア１３１、固定ディスク２１１及びメモリ２１２から構成される。固定ディスク３１２の中にデータ中継部１１３及び通信制御部１２１を実現するプログラムが格納される。データ中継部１１３はデータ保存領域を含み、
マルチパス通信を実現する機能を備える。データ中継部１１３の詳細については後述する。通信制御部３２１は、端末１０１の通信制御部１２１と同様の機能を備える。メモリ３１１の中にはデータ中継部１１３、通信制御部３２１を実現するプログラムが実行時ロードされてプロセッサ３２３により実行され、上述の機能を実現する。
【００４２】
図４はサーバ装置１０４の内部構成を示すブロック図である。サーバ装置１０４はプロセッサ４２３、通信ハードウェア４３１、固定ディスク４１２及びメモリ４１１から構成される。固定ディスク４１２の中にはアプリサーバ１１４及び通信制御部４２１を実現するプログラムが格納される。アプリサーバ１１４はアプリクライアント１１１が必要とするデータを提供する機能を備える。通信制御部４２１は、端末１０１の通信制御部１２１と同様の機能を備える。メモリ４１１の中には実行時のアプリサーバ１１４及び通信制御部４２１を実現するプログラムがロードされてプロセッサ４２３により実行され、上述の機能を実現する。
【００４３】
なお、上述の各プログラムは、あらかじめ、上記各装置のメモリまたは固定ディスク内に格納されていても良いし、必要なときに、上記各装置が利用可能な、着脱可能な記憶媒体から、または通信媒体（インターネットなど、またはそれらの上を伝搬する搬送波やデジタル信号など）を介して他の装置から、導入されてもよい。
【００４４】
図５は、端末１０１のデータ中継部１１２の機能構成を示すものである。コネクション管理テーブル５０５はアプリクライアント１１１からのデータをどのコネクションを用いて、通信相手装置（ここでは中継機器１０３）のデータ中継部１１３へ送信するかを記憶するためのデータベースである。コネクション管理テーブル５０５の詳細については後述する。
【００４５】
受信モジュール５０１はアプリクライアント１１１からのデータを受信し、受信したデータを送信用バッファ５１１に一時的に格納する。マルチパス送信モジュール５０２は送信用バッファ５１１の中のデータを複数のコネクションでデータ中継部１１３へ送信する機能を備える。一方、マルチパス受信モジュール５０３は中継機器１０３のデータ中継部１１３からデータを受信し、受信用バッファ５１２に一時的に格納する機能を備える。送信用モジュール５０４は受信用バッファ５１２の中のデータをアプリクライアント１１１へ送信する機能を備える。
【００４６】
図６はデータブロックの構成を示すものである。送信用バッファ５１１及び受信用バッファ５１２に格納されているデータは、受信用モジュール５０１により、図６に示すブロックに分割されている。
【００４７】
データブロックにはブロックのシーケンス番号、ペイロード（データ）のバイト数を示すフィードとペイロードである。なお、ペイロードのバイト数の決定方法については後述する。
【００４８】
図７はコネクション管理テーブル５０５の構成を示すものである。コネクション管理テーブル５０５には、アプリクライアントのIPアドレス、アプリクライアントのポート番号、アプリクライアントからのコネクション名、通信相手装置（ここでは中継機器１０３）の中継部１１３へのコネクション名、アプリサーバのIPアドレス、アプリサーバのポート番号が保存される。このテーブルを参照することにより、データ中継部１１２はあるコネクションからデータを受信した際に、そのデータを転送するためのコネクションが分かる。
【００４９】
中継機器１０３のデータ中継部１１３の機能構成は、端末１０１のデータ中継部１１２と同じである。ただ、受信モジュール５０１はアプリサーバ１１４からデータを受信し、送信モジュール５０４はアプリサーバ１１４へデータを送信する。また、マルチパス受信モジュール５０３はデータ中継部１１２からデータを受信し、マルチパス送信モジュール５０２はデータ中継部１１２へデータを送信する。
【００５０】
ここで、図１全体の動作について説明する。端末１０１はシステム利用者がサーバ装置１０４を遠隔操作するための機器である、いわゆるシンクライアントである。利用者が端末のキーボードやマウスなどを操作すると、その操作内容がアプリクライアント１１１によってアプリサーバ１１４へ送られる。そして、システム利用者の操作に対する処理結果は、画面表示データとして、アプリサーバ１１４からアプリクライアント１１１へ送られて、システム利用者が確認できるために端末のモニタなどで表示される。
【００５１】
端末１０１は二つのアクセスネットワーク（例えばPHS (Personal Handy−phone System)ネットワーク及び携帯ネットワーク）を利用してインターネットに接続することが可能であるが、アクセスネットワークの片方だけを利用する際、端末・サーバ間のデータ通信を十分に処理できない状況を想定する。
【００５２】
そこで、端末１０１とサーバ装置１０４の間のネットワークの送受信性能を向上させるために中継機器１０３を導入する。中継機器１０３は高速ネットワーク（LANなど）を介してサーバ装置１０４に接続し、サーバ装置１０４と高速にデータ通信を行うことができる。
【００５３】
一方、端末１０１と中継機器１０３はTCPコネクション１及びTCPコネクション２で、それぞれPHS網と携帯網を通して接続し、本発明のマルチパス通信手法でデータ通信を行い、データ送信を高速化する。なお、本実施例ではデータ通信のためにTCPを利用すると仮定して説明するが、必ずしもTCPに限定されるべきものではなく、UDPなど他のトランスポートプロトコルも適用可能である。
【００５４】
UDPの用途としては、例えば、符号化した音声データの伝送を行うVoIP（Voice over Internet Protocol）がある。VoIPシステムでは、複数人が同時に会話を行うことが可能なので、長い発言に対応する長いデータと短い発言に対応する短いデータの両方が発生する。つまり、UDPを利用したVoIPシステムにおいても長短のデータが一方向中に混在した状況があるため、本発明の実施形態は適用できる。
【００５５】
次に、本発明の実施形態であるデータ通信システムの動作について説明する。
【００５６】
図８は利用者が一回当該データ通信システムを利用するにあたってのシステム内のデータ通信の手順を示す図である。まず、データ通信開始する前に、各ステップ７０１、７０２、７０３において、それぞれデータ中継部１１２がアプリクライアント１１１からの接続、データ中継部１１３がデータ中継部１１２からの接続、そしてアプリサーバ１１４がデータ中継部１１３からの接続を待つ状態に入る。
【００５７】
システム利用者がアプリクライアント１１１を操作し始めると、アプリクライアント１１１がステップ７１１において、データ中継部１１２へTCPコネクション４を確立し、データ送信を開始する（ステップ７１２）。データ中継部１１２はアプリクライアント１１１からのデータを受信すると、データ中継部１１２は中継機器接続情報２１３を参考し、データ中継部１１３との間にTCPコネクション１（ステップ７１３）及びTCPコネクション２（ステップ７１６）を確立する。
【００５８】
コネクション１の確立直後、データ中継部１１２はコネクション１でアプリクライアント１１１のIPアドレス及びポート番号、サーバ装置１０４のIPアドレス及びアプリサーバ１１４のポート番号を送信する（ステップ７１４）。アプリサーバ１１４のIPアドレス及びアプリサーバ１１４のポート番号はサーバ接続情報２１４から得られる。また、コネクション２の確立直後も、同上のデータを送信する。
【００５９】
一方、データ中継部１１３はコネクション１から、アプリクライアント１１１及びアプリサーバ１１４に関する情報を受信すると、アプリサーバ１１４との間にコネクション３を設立する（ステップ７１５）。
【００６０】
また、これ以降にコネクション1からのデータをコネクション３へ転送するように、逆にコネクション３からのデータを、コネクション１へ転送するように、コネクションの対応付けを、データ中継部１１３内のコネクション管理テーブル５０５に記憶する（ステップ７２１）。その後、データ中継部１１３はステップ７１７において、コネクション２から同上の送受信側情報を受信する。受信した情報により、データ中継部１１３は、コネクション１とコネクション２で送信されるデータは同じ送信元及び送信先のものであることが分かり、両コネクションからのデータを纏めてコネクション３へ転送し、また、コネクション3からのデータを両コネクションへ転送するように、データ中継部１１３のコネクション管理テーブル５０５で記録する（ステップ７２２）。
【００６１】
コネクション１またはコネクション２の混雑状況により、データ中継部１１３がステップ７１３とステップ７１６の両方を実施できないこともある。この際、ステップ７１３および７１６の中の一つが実施できた時にでも中継部１１３が後述のステップ７３１に進む。
【００６２】
ステップ７３１では、アプリクライアント１１１とアプリサーバ１１４の間のデータ送受信が行われる。ステップ７３１の詳細については後述する。
【００６３】
一方、システム利用者がアプリクライアント１１１の利用を終了する際、アプリクライアント１１１がコネクション４を終了する（ステップ７４１）。コネクション４の終了を検知したデータ中継部１１２はコネクション１及びコネクション２を終了する（ステップ７４２及びステップ７４３）。データ中継部１１３は、コネクション１及びコネクション２両方終了することを検知した場合、コネクション３を終了する（ステップ７４４）。
【００６４】
図９はステップ７３１において、当該システムがデータの送信を行う際の手順を示すものである。ステップ９０１において、アプリクライアント１１１がデータ中継部１１２へデータを送信する。データ中継部１１２がデータを受信し、複数のブロックに分割する（ステップ９０２）。そして、データ中継部１１２が分割した各データブロックをコネクション１及びコネクション２で並列にデータ中継部１１３へ送信する（ステップ９０３及びステップ９０４）。データ中継部１１３はコネクション１及びコネクション２からのデータを統合し（ステップ９０５）、コネクション３を経由してアプリサーバ１１４へ送信する（ステップ９０６）。
【００６５】
一方、アプリサーバ１１４がアプリクライアント１１１へデータを送信する手順は、アプリクライアント１１１がデータをアプリサーバ１１４へ送信する際の手順の逆となる。ステップ９１１では、アプリサーバ１１４がアプリクライアント１１１へ送信すべきデータをデータ中継部１１３へコネクション３を用いて送信する。ステップ９１２でデータ中継部１１３がアプリサーバ１１４から受信したデータを複数のデータブロックに分割する。次に、データ中継部１１３がステップ９１３及び９１４でコネクション１及びコネクション２を使って並列にデータブロックを中継部１１２へ送信する。データ中継部１１２はコネクション１及びコネクション２からデータ受信し、統合する（ステップ９１５）。そして、データ中継部１１２はステップ９１５で統合したデータをアプリクライアント１１１へ送信する（ステップ９１６）。
【００６６】
以上は利用者が当該データ通信システムを利用するにあたってのシステム内のデータ通信の手順である。
【００６７】
次に、データ中継部１１２及びデータ中継部１１３の内部処理手順について説明する。データ中継部１１２とデータ中継部１１３の内部構成及び処理手順は同じであるが、設置場所が異なるため、データやり取り相手が異なる。ここで、データ中継部１１２を中心に説明し、その後データ中継部１１２とデータ中継部１１３の違いについて説明する。
【００６８】
図５を再び利用してデータ中継部１１２の詳細なデータ送信手順について説明する。コネクション４を介してアプリクライアント１１１からデータが送信されてきたとき、受信モジュール５０１がデータを受信し、複数のブロックに分割してから送信用バッファ５１１に格納する。マルチパス送信モジュール５０２は送信用バッファ５１１にデータがあるとコネクション１及びコネクション２を介してデータ中継部１１３へ送信する。データブロックをコネクション１及びコネクション２へ振り分ける方法について後述する。
【００６９】
一方、コネクション１及びコネクション２を介してデータ中継部１１３からデータブロックが到着したとき、マルチパス受信モジュール５０３がデータブロックを受信し、受信用バッファ５１２に格納する。送信モジュール５０４は受信用バッファ５１２の中のデータを統合し、コネクション４を介してアプリサーバ１１４へ送信する。
【００７０】
なお、コネクション管理テーブル５０５は、コネクション４からのデータをコネクション1及びコネクション２へ送信し、またコネクション1及びコネクション２からのデータをコネクション４へ送信するという、データ送信先に関する情報を、送信モジュール５０４およびマルチパス送信モジュール５０２に提供する。
【００７１】
データ中継部１１２は、複数のアプリクライアントからの接続を並列して中継することが可能である。それぞれのアプリクライアントとその接続先との関連付けをコネクション管理テーブル５０５で管理し、アプリクライアントごとに送信用バッファの領域を割り当てることが可能である。
【００７２】
以下、説明を簡単にするために、データ中継部１１２及びデータ中継１１３はひとつのアプリクライアント（アプリクライアント１１１）から、一つのアプリサーバ（アプリサーバ１１４）へデータを送信する場合を想定する。
【００７３】
受信モジュール５０１はコネクション４からのデータを受信し、データを送信用バッファ５１１に格納する際に、下記のアルゴリズムでデータをブロックに分割する。分割処理には、受信モジュール５０１の保持するブロックのペイロードの最大値（以下、Ｍとする）を使用する。
（１）送信用バッファ５１１内に格納するデータのサイズ(以下、Nとする)が M 以下の場合は、ペイロードがN となる一つのブロックとする。
（２）N が M より大きい場合、データの先頭から サイズ M のブロックを分割していく。この際、余ったデータは、（１）と同様、ペイロードがM以下のブロックにする。
（３）ブロックにブロックの番号とブロックのペイロードサイズを追加する。ブロック番号は、ブロック毎に割り振る番号で、１から始まる。
【００７４】
上記のように、ブロックのペイロードのサイズは一定の値ではなく、分割する時点で、送信用バッファ５１１にあるデータのサイズによりまちまちである。
【００７５】
図１０はマルチパス送信モジュール５０２の処理手順を示すフローチャートである。データ中継部１１２がステップ７０１で待ち受け状態に入ると、マルチパス送信モジュール５０２がステップ１００１で、送信用バッファ５１１内に未送信データが格納されるまで待機する。送信用バッファ５１１内に未送信データがあると、後述する遅延優先送信（ステップ１００２）を行う。遅延優先送信を一回行った後に、送信モードを切り替える必要があるかどうかをステップ１００３で判断する。必要がある場合、後述する帯域優先送信（ステップ１００４）に進む。必要がない場合、ステップ１００１に戻る。送信モードを切り替えるための条件判断については後述する。まず、遅延優先送信手順について説明する。
【００７６】
図１１はステップ１００２の遅延優先送信手順を示すものである。ステップ１１０２では、送信モジュール５０２が送信ブロックを選択する。ここで、送信モジュール５０２が次のブロック（送信されていないブロックで、ブロック番号がもっとも小さいブロック）を選択する。次に、送信モジュール５０２はステップ１１０３において、ステップ１１０２で選択したブロックをコネクション１で送信する。また、ステップ１１０３と並行してステップ１１０４も行う。ステップ１１０４ではステップ１１０２で選択したブロックをコネクション２で送信する。つまり、送信モジュール５０２が同じブロックをコネクション１及びコネクション２で並列に送信することになる。
【００７７】
次に、ステップ１００３での条件判定に用いる送信方法選択情報について述べる。マルチパス送信モジュール５０２はコネクション１およびコネクション２でデータを送信し続けた場合、各コネクションが混雑の状態になり、一時的にマルチパス送信モジュール５０２からの新しい送信要求を、通信制御部１２１が受け付けない、あるいは通信中データ損失率が高くなることがある。
【００７８】
例えば、通信制御部１２１の採用するデータ通信プロトコルはTCPである場合、TCPはフロー制御という機能があり、ネットワークのデータ送信性能および受信側の受信性能により、送信側がネットワークに送信するある時点でのデータ量が制限される。データ量制限値以上のデータ量の送信が要求された場合、TCPの送信側が送信バッファというデータ保存領域にデータを格納していく。TCPの送信側の送信バッファの空き容量が所定値(例えば０)以下になると、TCPの送信側を担当する通信制御部１２１がデータの送信要求を受け付けないことがある。
【００７９】
一方、通信制御部１２１の採用するデータ通信プロトコルはUDPである場合、UDPにはフロー制御という機能がないため、コネクションのデータ送信能力を超えたデータ量も送信してしまう特徴がある。この場合、通信制御部１２１が送信したデータが高い確率で通信中に損失し、受信側へ届かなくなる。そのため、UDPの場合、送信要求データ量がコネクションのデータ送信能力を超えたかどうかを知るために、受信側で受信したブロック番号を確認することで、データの損失率を調べる方法が有効である。
【００８０】
本実施形態では、これら、バッファの空き容量に基づき、新しい送信要求を通信制御部１２１が受け付けるか否か、または、通信中データ損失率を、送信方法選択情報として利用する。
【００８１】
ステップ１００３では、コネクション１又はコネクション２の少なくともいずれか一方が送信できなく、かつ、受信側にG個(G>0)の未送信ブロックが残った場合、送信方法選択情報の判定結果がYESになり、送信モードを切り替える。
【００８２】
なお、中継用コネクションが３以上の場合は次のように一般化できる。ステップ１００３では、直前のステップ１００２においてマルチパス送信モジュール５０２がブロック送信を要求したn本のコネクションの中で、m本以上のコネクションが要求を受け付けない場合、送信方法選択情報の判定はYESとなる。逆に、要求を受け付けないコネクションがm本未満の場合、判定はNOとなる。ここでn はデータ中継部１１２およびデータ中継部１１３の間のコネクション数であり、mは１からn までの間の整数値である。
【００８３】
図１２は帯域優先送信手順（ステップ１００４）の詳細を示すフローチャートである。
【００８４】
まず、ステップ１２０１では、マルチパス送信モジュール５０２はコネクション１が送信可能な状態にあるかどうかを確認する。コネクションが送信可能とは、通信プロトコルはTCPである場合、TCPの送信側である通信制御部１２１がデータの送信要求を受け付けることである。
【００８５】
送信可能であれば、ステップ１２０２で一つのブロックをコネクション１で送信する。送信の仕方については後述する。マルチパス送信モジュール５０２は一つのブロックを送信した後と、ステップ１２０３で送信用バッファ５１１に未送信データがあるかどうかを確認し、未送信データがあれば、次のステップ１２０４に進み、無ければ、帯域優先送信を終了する。ステップ１２０１では、コネクション１が送信可能な状態でなければ、ステップ１２０４へ進む。
【００８６】
マルチパス送信モジュール５０２はステップ１２０４で、コネクション２が送信可能な状態にあるかどうかを確認する。送信可能ならば、ステップ１２０５で一つのデータブロックを行い、その後、送信用バッファ５１１に未送信データがなければ、帯域優先送信を終了し、あれば、ステップ１２０１に戻る。
【００８７】
このように、帯域優先送信では、マルチパス送信モジュール５０２が各コネクションを交互に監視し、コネクションがデータ送信可能であれば、データを送信し、送信用バッファ５１１にデータが無くなり次第、帯域優先送信を終了する。
【００８８】
なお、ステップ１２０１及びステップ１２０４では、コネクション１及びコネクション２が更にデータ送信可能かを、データ中継部１１２が判断するために、次の方法を利用してもよい。
【００８９】
データ中継部１１３はデータ中継部１１２からデータブロックを受信するたびに、受信したブロックに含まれているシーケンス番号をデータ中継部１１２に送り返し、ブロックの到着を通知する。到着通知はブロックを送信したコネクションで返送すればよい。データ中継部１１２はコネクション1から到着通知が来れば、コネクション１がさらにデータ送信が可能となることが分かり、ステップ１２０１でYES判断を出す。また、コネクション2に対しても同じ処理を行う。
【００９０】
なお、データ中継部１１２は到着通知のシーケンス番号により、一定時間内にコネクション１が送信完了したブロックを特定し、送信完了したブロックのデータサイズの合計を取得することができる。
【００９１】
一定時間内にコネクション１が送信完了したブロックのデータサイズの合計から、コネクション１の平均送信速度の計算ができ、また、同様に、コネクション２からの到着通知によりコネクション２の平均送信速度を計算することができる。
【００９２】
データ中継部１１２はコネクション１及びコネクション２の平均送信速度を用いて、再送の判断（ステップ１３０１）やそれぞれのコネクションで次に送信するブロックの選択（ステップ１３０３）を行ってもよい。
【００９３】
図１３はマルチパス送信モジュール５０２がステップ１２０２及びステップ１２０５で一つのデータブロックを送信する手順を示すフローチャートである。まず、ステップ１３０１で、コネクション1（ステップ１２０２の場合）又はコネクション２（ステップ１２０５の場合）が再送する必要が可能かを判定する。
【００９４】
ここでの再送とは、あるコネクションで送信中のデータを必要があれば他のコネクションで再送を行うことであり、これにより、受信側が途中のデータを抜けることなく受信できるようにする。
【００９５】
ここで再送要否判定処理について説明する。各コネクションが送信中のブロックの中でもっとも小さい番号をQとする。また、各コネクションが送信中のブロックの中でもっとも番号の大きいものをPとする。PとQの間の差がK以上ならば、ステップ１３０１の判定結果がYESとなり、PとQの間の差がKより小さいならばステップ１３０１の判定結果がNOとなる。なお、上記の番号管理はマルチパス送信モジュール５０２が行う。
【００９６】
本発明の実施形態では、Kを２にしているが、２以上の値にしてもよい。Kを小さい値にした場合、各コネクション１、コネクション２上のどちらか一方の送信速度の低下がデータ中継部１１２とデータ中継部１１３間のデータ送信性能に影響を与えにくく、一方、Kが小さすぎると再送の条件が成り立ちやすくなるため、再送の頻度が高くなり、ブロックの無駄な送信が発生し、データ中継部１１２とデータ中継部１１３間のデータ送信性能が低下する。
【００９７】
ステップ１３０１で判定結果がYESとなる場合、ステップ１３０２では、Qを再送ブロックの番号として選択する。一方、ステップ１３０１で判定結果がNOとなる場合、ステップ１３０３では、番号P+R+(n−1)のブロックを次に送信するブロックとして選択する。
【００９８】
ここで、Rはコネクション1（ステップ１２０２の場合）又はコネクション２（ステップ１２０５の場合）が直前のブロックを送信している間に他のコネクションが送信したブロックの総数である。一方、n はデータ中継部１１２及びデータ中継部１１３の間の中継用コネクション数である。本発明の実施形態ではnは２ となっている。なお、番号P + R + (n−1)のブロックが送信用バッファ５１１に存在しない又は存在するが、未送信ではない場合、次に送信するブロックを、未送信かつP+R+ (n−1)にもっとも近い番号のブロックとする。
【００９９】
ステップ１３０４では、マルチパス送信モジュール５０２はステップ１３０２あるいはステップ１３０３で選択したブロックを、コネクション1（ステップ１２０２の場合）又はコネクション２（ステップ１２０５の場合）で送信する。また、マルチパス送信モジュール５０２はQより番号が小さいブロックを送信用バッファ５１１から消去する。
【０１００】
次に図５を用いて、データ中継部１１２がデータ中継部１１３からデータを受信し、アプリクライアント１１１へ送信する手順を説明する。マルチパス受信モジュール５０３はコネクション１及びコネクション２からデータを受信し、受信用バッファ５１２に格納する。一方、送信モジュール５０４は受信用バッファ５１２の中のデータをコネクション４でアプリクライアント１１１へ送信する。
【０１０１】
図１４は、マルチパス受信モジュール５０３の処理手順を示すフローチャートである。まずステップ１４０１でマルチパス受信モジュール５０３がコネクション１及びコネクション２からデータブロックが到着するまで待つ。マルチパス通信モジュール５０３は、自分が受信したブロックの番号を管理しており、ステップ１４０２で到着したデータブロックの番号を、データ送信開始時からそれまでにマルチパス受信モジュール５０３が受信したデータブロックと重複するかどうかを確認する。重複した場合はステップ１４０１に戻る。重複がない場合は到着したブロックを受信用バッファ５１２に格納する。ステップ１４０３の次はステップ１４０１に戻る。
【０１０２】
送信モジュール５０４は、受信用バッファ５１２に格納されるブロックを監視する。番号１のブロックがあると番号１のブロックを送信する。また、送信したブロックの次の番号のブロックがあれば、このブロックも送信する。送信したブロックの次の番号のブロックがなければ、次の番号のブロックが到着するまで待つ。
【０１０３】
なお、送信したブロックは受信用バッファ５１２から消去する。ここでの送信先は、端末１０１の中のアプリクライアント１１１である。また、ブロックを送信する際、ブロックのペイロードを送信する。つまり、送信モジュール５０４では、ステップ９１５のデータ統合作業が行われる。
【０１０４】
ここまで、データ中継部１１２の処理手順について説明した。データ中継部１１３は上述のデータ中継部１１２の内部構成および動作手順と同じである。ただし、データ中継部１１３の場合、マルチパス送信モジュール５０２はデータ中継部１１２へデータを送信し、受信モジュール５０１はアプリサーバ１１４から受信する。また、マルチパス受信モジュール５０３はデータ中継部１１２からデータを受信し、受信モジュール５０４はアプリサーバ１１４へデータを送信することになる。
【０１０５】
また、データ中継部１１２、１１３の間のコネクション本数は２以上あっても良い。
【０１０６】
また、以下の要素により、データ中継部１１２およびデータ中継部１１３が連携して中継コネクション数を調整してもよい。調整時に考慮する要素は、たとえば、それぞれのコネクションに対する課金ポリシー、それぞれのコネクションに対する消費電力、それぞれのコネクションに対するセキュリティーポリシー、それぞれのコネクションに対するユーザの好みである。
【０１０７】
各コネクション１、コネクション２上を送信されるデータをそれぞれ別の暗号化手法で暗号化し、データ中継部１１２、１１３間の送受信データの解読難度を高めることも可能である。
【０１０８】
今回説明した実施形態では、コネクション１及びコネクション２はインターネットの接続としていたが、接続環境はIPネットワークではなくてもよい。また、データ中継部はアプリケーションレイヤに適用したが、データトランスポートレイヤ、IPレイヤなどでも適用可能である。
【０１０９】
以上の通り、本発明の実施形態を説明した。
【０１１０】
本実施形態では、時間当たりデータ量が少ない場合、つまり、各コネクション１、 ２の送信能力に余裕があるときは、ステップ１００２の遅延優先送信でデータ中継部１１２が各コネクション１、 ２で同じデータブロックを送信するため、各コネクション１、 ２の中で遅延がもっとも短いほうでブロックがデータ中継１１３に到着する。
【０１１１】
一方、送信データサイズが大きい場合、つまり、各コネクション１、 ２の送信能力を超えたデータ量が送信用バッファ５１１に存在する場合、データ中継部１１２がステップ１００４の帯域優先送信に切り替えて、各コネクション１、ネクション２の帯域を最大限に利用して、送信用バッファ５１１内のデータを素早く送信する。
【０１１２】
本実施形態によれば、シンクライアントシステムにおいて、端末からの操作命令は遅延優先送信方法で送信され、素早くサーバ装置へ到着する。一方、サーバ装置からの描画命令も遅延優先送信で送信され、素早く端末へ到着する。また、サーバ装置からの画像データなどは帯域優先送信方法で送信されるため、端末とサーバ送信間の複数のネットワークの帯域が小さくても、端末では画像データのダウンロードも素早くできる。よって、端末での入力操作が素早く反映されることになり、端末利用者の操作感が向上する。
【０１１３】
また、本実施形態によれば、送信済みおよび／または送信中のブロックの数に基づき、コネクション毎の通信性能を取得し、ステップ１３０３では、取得した通信性能に基づき、遅いコネクションほど (Rの値が大きい)、ブロックの番号 P+R+(n−1))が大きいブロックを送信するため、ブロックが受信側に到着するとき、ブロック番号どおりに到着することが多くなる。これにより、受信側でのデータ並べ替え処理が少なくなり、システムのデータ送受信速度が向上する。
【０１１４】
さらに本実施形態は、データ中継部１１２が次に受信したいブロックが、コネクションの通信性能低下により、データ中継部１１３への到着が遅れている場合、ブロック再送を行う。ブロックの再送 (ステップ１３０２)により、一部のコネクションの通信能力が低下しても受信側ではブロック番号どおりにブロックを受信できる確率が高くなるため、受信側での処理が遅れることも少なくなる。
【０１１５】
本発明の実施形態は図１５に示すデータ通信システムの構成に変更してもよい。なお、同じ参照符号は図１と同じ要素を表す。すなわち、データ中継部１１２を端末１０１内に構成する代わりに、中継機器１０２として独立させてもよい。中継機器１０２の内部構成は中継機器１０３と同じである。この場合、アプリクライアント１１１とデータ中継部１１２の間のデータやり取りを行うコネクション４はネットワークを経由することになる。
【０１１６】
また、中継機器１０２はホーム・ゲートウェイであってもよい。ホーム・ゲートウェイは、一般にインターネットと家庭（ホーム）ネットワークの間に配置され、ホーム・ルータ、プロトコル変換、ファイアウォールなどの機能を持つ情報通信機器である。本発明の実施形態を採用すると、家の中のすべての端末がホームゲートウェアを介して、インターネット上にあるサーバ装置１０４とマルチパスで高速に通信ができるようになる。
【０１１７】
また、本発明の実施形態は図１６に示すデータ通信システムの構成に変更してもよい。図１６で示すシステム構成では、データ中継部１１３をアプリサーバ１１４と同じく、サーバ装置１０４内に構成する。データ中継部１１３とアプリサーバ１１４は通信制御部１２１を介してデータのやり取りを行う。サーバ装置１０４は、ＬＡＮ１４２ではなくコネクション１およびコネクション２で端末１０１に接続する。図１６で示すシステム構成を採用すれば、 データ中継部１１３とアプリサーバ１１４のデータやり取りはＬＡＮ１４２を介さないため、より高速に行える。
【０１１８】
本発明の実施例のデータ通信システムは、図１７に示すように、VPN (Virtual Private Network)サーバ装置１７０１が、コネクション１やコネクション２など、データ中継部１１２とデータ中継部１１３の間のコネクションを切断したり、中継したりしてもよい。
【０１１９】
この場合でも、データ中継部１１２を端末１０１の中に導入してもよいし、中継機器１０２に導入してもよい。また、データ中継部１１３をサーバ装置１０４に導入してもよいし、中継機器１０３に導入してもよい。
【０１２０】
VPNサーバ装置１７０１がコネクション１及びコネクション２を並列に通すためにコネクション１及びコネクション２上の認証のアカウントをそれぞれ別のものを利用してもよい。又は、VPNサーバで二重ログインを許可にして、コネクション１及びコネクション２上同じアカウントで認証を行ってもよい。
【０１２１】
また、本発明の実施例のシステムにおいて、図１８に示すように、中継機器１０３はVPNサーバでもよい。VPNサーバが複数ある環境において、コネクション１及びコネクション２が同じVPNサーバに接続しないと、データ中継部１１３がコネクション１及びコネクション２両方からのデータを受信することができない。そこで、VPNサーバが複数ある場合は、データ中継部１１２が先に設立したコネクションと同じVPNサーバに次のコネクションが接続するようにデータ中継部１１２がコネクションの確立を管理すればよい。
【０１２２】
本発明の実施例のシステムにおいて、中継機器１０２および中継機器１０３は、図１９に示すような、WAN（Wide Area Network、広域通信網）の高速化装置であってもよい。
【０１２３】
WAN高速化装置１９０２とWAN高速化装置１９０３はネットワーク１とネットワーク２間のデータやり取りを高速化するものである。WAN高速化装置１９０２とWAN高速化装置１９０３は二つ以上のネットワーク回線で結ばれるとする。
【０１２４】
この際、データ中継部１１２は、業者Xのネットワーク回線上にコネクション１、業者Yのネットワーク回線上にコネクション２を作成し、ネットワーク１の中からネットワーク２へ送信されるデータをすべて纏めてデータ中継部１１３へ転送する。また、データ中継部１１３はネットワーク２からのデータに対してもコネクション１およびコネクション２で、データ中継部１１２へ転送する。
【０１２５】
ネットワーク１からWAN高速化装置１９０２へ送信されたデータは、ネットワーク１の様々な利用者のデータを含んでおり、それぞれの利用者のデータはネットワーク２中の別の宛先を持つことが多い。そのため、データ中継部１１２はデータをデータ中継部１１３へ送信する際、ネットワーク１中のどの利用者から送られ、そしてネットワーク２のどの宛先に届けるべきかというコネクション情報を取得し、データと一緒にコネクション情報を送信する必要がある。データ中継部１１３はコネクション情報に基づいてネットワーク２の内部へデータを転送するという処理を行う。
【０１２６】
なお、データ中継部１１２によるコネクション情報の取得方法としては、ネットワーク１の利用者が利用する送信側通信機器が、ネットワーク２へTCPコネクションを確立するために、WAN高速化装置１９０２を経由して送信するSYNパケットを、データ中継部１１２がキャプチャして、SYNパケットの宛先から当該利用者の通信先を取得してもよい。
【０１２７】
上記実施例のシステムにおいて、図２０に示すように、データ中継部１１２及びデータ中継部１１３をMIMO (Multiple Input Multiple Output、複数のアンテナで複数の通信チャネルを用いて並列にデータ送受信を行い、帯域を広げる無線通信技術）の送受信機器に導入してもよい。
【０１２８】
図２０では、MIMO送受信機器２００２のアンテナ１と、MIMO送受信機器２００３のアンテナ２は通信チャネル１を設立し、アンテナ3及びアンテナ４は通信チャネル２を設立する。MIMO送受信機器２００２と、MIMO送受信機器２００３は通信チャネル１及び通信チャネル２で異なるデータを並列に送信する機能を備える。
【０１２９】
上記装置に、帯域優先送信と、遅延優先送信を切り替えて送信する上記実施例のデータ中継部１１２及びデータ中継部１１３を導入することにより、通信環境が悪化する場合でも通信速度を安定させることが可能になる。
【０１３０】
また、MIMO送受信機器に適用する際、データ中継部１１２及びデータ中継部１１３のステップ１００３における、遅延優先送信と帯域優先送信を切り替える条件を、チャネル１及びチャネル２上のデータ損失率が、予め定めた所定値より高くなる場合、遅延優先送信に切り替える、としてもよい。これにより、遅延優先送信では、同じデータをチャネル１とチャネル２で並列に送信するため、片方が損失しても受信側がデータを受信することができ、通信速度の低下を防ぐことができる。また、チャネル１及びチャネル２上のデータ損失率が、所定値以下になった場合、従来どおり帯域優先送信でデータ送信の高速化を実現することが可能になる。
【図面の簡単な説明】
【０１３１】
【図１】実施形態に関わるデータ通信システムの構成を例示する図である。
【図２】実施形態に関わる端末１０１のハードウェア構成を例示する図である。
【図３】実施形態に関わる中継機器１０３のハードウェア構成を例示する図である。
【図４】実施形態に関わるサーバ装置１０４のハードウェア構成を例示する図である。
【図５】実施形態に関わるデータ中継部１１２の機能構成を例示する図である。
【図６】実施形態に関わるデータブロックの構成を例示する図である。
【図７】実施形態に関わるコネクション管理テーブル５０５の構成を例示する図である。
【図８】実施形態に関わるデータ通信システムの動作開始手順を例示する図である。
【図９】実施形態に関わるデータ通信システムのデータ送受信手順を例示する図である。
【図１０】実施形態に関わるデータ中継部の処理手順を例示するフローチャートである。
【図１１】実施形態に関わる遅延優先送信の処理手順を例示するフローチャートである。
【図１２】実施形態に関わる帯域優先送信の処理手順を例示するフローチャートである。
【図１３】実施形態に関わる帯域優先送信時のブロック送信手順を例示するフローチャートである。
【図１４】実施形態に関わるデータ中継部の受信モジュールの処理手順を例示するフローチャートである。
【図１５】実施形態に関わるデータ中継部１１２を中継機器１０２として独立させる場合のシステム構成を例示する図である。
【図１６】実施形態に関わるデータ中継部１１３をサーバ装置内に構成する場合のシステム構成を例示する図である。
【図１７】実施形態に関わるVPNサーバがある環境のシステム構成を例示する図である。
【図１８】実施形態に関わるデータ中継部１１３をVPNサーバ装置への導入した場合のシステム構成を例示する図である。
【図１９】実施形態に関わるデータ中継部をWAN高速化装置へ導入した場合のシステム構成を例示する図である。
【図２０】実施形態に関わるデータ中継部をMIMO送受信機器へ導入した場合のシステム構成を例示する図である。
【符号の説明】
【０１３２】
１０１：端末、１０２：中継機器、１０３：中継機器、１０４：サーバ装置、１１１：アプリクライアント、１１２：データ中継部、１１３：データ中継部、１１４：アプリサーバ、１２１：通信制御部、１３１：通信ハードウェア、２１１：メモリ、２１２：固定ディスク、２１３：中継機器接続情報、２１４：サーバ接続情報、２２３：プロセッサ、２２４：I/Oハードウェア、５０１：受信モジュール、５０２：マルチパス送信モジュール、５０３：マルチパス受信モジュール、５０４：送信モジュール、５０５：コネクション管理テーブル、５１１：送信用バッファ、５１２：受信用バッファ、１７０１：VPNサーバ装置、１９０１：WAN高速化装置、１９０２：WAN高速化装置、２００２：MIMO送受信機器、２００３：MIMO送受信機器。
【図１】
2010056990.tif 000003
【図２】
2010056990.tif 000004
【図３】
2010056990.tif 000005
【図４】
2010056990.tif 000006
【図５】
2010056990.tif 000007
【図６】
2010056990.tif 000008
【図７】
2010056990.tif 000009
【図８】
2010056990.tif 000010
【図９】
2010056990.tif 000011
【図１０】
2010056990.tif 000012
【図１１】
2010056990.tif 000013
【図１２】
2010056990.tif 000014
【図１３】
2010056990.tif 000015
【図１４】
2010056990.tif 000016
【図１５】
2010056990.tif 000017
【図１６】
2010056990.tif 000018
【図１７】
2010056990.tif 000019
【図１８】
2010056990.tif 000020
【図１９】
2010056990.tif 000021
【図２０】
2010056990.tif 000022