図1は本発明の実施形態に関わるデータ通信システムの構成を示すブロック図である。以下では、送信側通信機器として端末101を用い、サーバ装置104を遠隔操作する、いわゆるシンクライアントシステムでの実施形態を説明する。まず、図中の各ブロックの意味について、以下、図2〜図7を用いて説明する。
図2は端末101の内部構成を示すものである。端末101はプロセッサ223、I/Oハードウェア224、通信ハードウェア131、固定ディスク212及びメモリ211から構成される。プロセッサ223はデータを処理するための計算機能を持つハードウェアである。I/Oハードウェア224はモニタ、キーボードやマウスなど、利用者が端末を操作するためのデバイスである。通信ハードウェア131はNIC (ネットワークインタフェースカード) など、ネットワーク通信のためのデバイスである。固定ディスク212はデータやデータ処理ソフトウェア (プログラム) を格納する記憶媒体 (例えば磁気ディスクなど)である。メモリ211はプログラムを実行する際にプロセッサ223が利用する記憶媒体である。
固定ディスク212には、通信制御部121とアプリクライアント111とデータ中継部112を実現するプログラムと、中継機器接続情報213とサーバ接続情報214と、が格納されている。通信制御部121はソケット (プログラムとトランスポートプロトコル (TCPやUDP)の間のインターフェース) やTCP/IPスタックなど、通信ハードウェア131を通じてデータをネットワーク上送受信するための機能を備える。アプリクライアント111は端末利用者が端末101を利用する際に必要となる機能を備える。データ中継部112はデータ保存領域を含み、マルチパス通信を実現する機能を備える。データ中継部112の詳細については後述する。
中継機器接続情報213は後述する中継機器103のIPアドレス及びデータ中継部113が利用するポート番号(TCP/IP通信を行うソフトウェアプログラムを識別するための番号)を含んでいる。中継機器接続情報213により、データ中継部112がデータ中継部113へ接続することが可能となる。一方、サーバ接続情報214は後述するサーバ装置104のIPアドレス及びアプリサーバ114が利用するポート番号を含んでいる。サーバ接続情報214により、データ中継部113がアプリサーバ114に接続することができる。
データ中継部112、アプリクライアント111及び通信制御部121を実現するプログラムは、実行する際にメモリ211にロードされてプロセッサ223により実行され、上述の機能を実現する。
図3は、受信側通信機器として用いる中継機器103の内部構成を示すものである。中継機器103はプロセッサ223、通信ハードウェア131、固定ディスク211及びメモリ212から構成される。固定ディスク312の中にデータ中継部113及び通信制御部121を実現するプログラムが格納される。データ中継部113はデータ保存領域を含み、
マルチパス通信を実現する機能を備える。データ中継部113の詳細については後述する。通信制御部321は、端末101の通信制御部121と同様の機能を備える。メモリ311の中にはデータ中継部113、通信制御部321を実現するプログラムが実行時ロードされてプロセッサ323により実行され、上述の機能を実現する。
図4はサーバ装置104の内部構成を示すブロック図である。サーバ装置104はプロセッサ423、通信ハードウェア431、固定ディスク412及びメモリ411から構成される。固定ディスク412の中にはアプリサーバ114及び通信制御部421を実現するプログラムが格納される。アプリサーバ114はアプリクライアント111が必要とするデータを提供する機能を備える。通信制御部421は、端末101の通信制御部121と同様の機能を備える。メモリ411の中には実行時のアプリサーバ114及び通信制御部421を実現するプログラムがロードされてプロセッサ423により実行され、上述の機能を実現する。
なお、上述の各プログラムは、あらかじめ、上記各装置のメモリまたは固定ディスク内に格納されていても良いし、必要なときに、上記各装置が利用可能な、着脱可能な記憶媒体から、または通信媒体(インターネットなど、またはそれらの上を伝搬する搬送波やデジタル信号など)を介して他の装置から、導入されてもよい。
図5は、端末101のデータ中継部112の機能構成を示すものである。コネクション管理テーブル505はアプリクライアント111からのデータをどのコネクションを用いて、通信相手装置(ここでは中継機器103)のデータ中継部113へ送信するかを記憶するためのデータベースである。コネクション管理テーブル505の詳細については後述する。
受信モジュール501はアプリクライアント111からのデータを受信し、受信したデータを送信用バッファ511に一時的に格納する。マルチパス送信モジュール502は送信用バッファ511の中のデータを複数のコネクションでデータ中継部113へ送信する機能を備える。一方、マルチパス受信モジュール503は中継機器103のデータ中継部113からデータを受信し、受信用バッファ512に一時的に格納する機能を備える。送信用モジュール504は受信用バッファ512の中のデータをアプリクライアント111へ送信する機能を備える。
図6はデータブロックの構成を示すものである。送信用バッファ511及び受信用バッファ512に格納されているデータは、受信用モジュール501により、図6に示すブロックに分割されている。
データブロックにはブロックのシーケンス番号、ペイロード(データ)のバイト数を示すフィードとペイロードである。なお、ペイロードのバイト数の決定方法については後述する。
図7はコネクション管理テーブル505の構成を示すものである。コネクション管理テーブル505には、アプリクライアントのIPアドレス、アプリクライアントのポート番号、アプリクライアントからのコネクション名、通信相手装置(ここでは中継機器103)の中継部113へのコネクション名、アプリサーバのIPアドレス、アプリサーバのポート番号が保存される。このテーブルを参照することにより、データ中継部112はあるコネクションからデータを受信した際に、そのデータを転送するためのコネクションが分かる。
中継機器103のデータ中継部113の機能構成は、端末101のデータ中継部112と同じである。ただ、受信モジュール501はアプリサーバ114からデータを受信し、送信モジュール504はアプリサーバ114へデータを送信する。また、マルチパス受信モジュール503はデータ中継部112からデータを受信し、マルチパス送信モジュール502はデータ中継部112へデータを送信する。
ここで、図1全体の動作について説明する。端末101はシステム利用者がサーバ装置104を遠隔操作するための機器である、いわゆるシンクライアントである。利用者が端末のキーボードやマウスなどを操作すると、その操作内容がアプリクライアント111によってアプリサーバ114へ送られる。そして、システム利用者の操作に対する処理結果は、画面表示データとして、アプリサーバ114からアプリクライアント111へ送られて、システム利用者が確認できるために端末のモニタなどで表示される。
端末101は二つのアクセスネットワーク(例えばPHS (Personal Handy−phone System)ネットワーク及び携帯ネットワーク)を利用してインターネットに接続することが可能であるが、アクセスネットワークの片方だけを利用する際、端末・サーバ間のデータ通信を十分に処理できない状況を想定する。
そこで、端末101とサーバ装置104の間のネットワークの送受信性能を向上させるために中継機器103を導入する。中継機器103は高速ネットワーク(LANなど)を介してサーバ装置104に接続し、サーバ装置104と高速にデータ通信を行うことができる。
一方、端末101と中継機器103はTCPコネクション1及びTCPコネクション2で、それぞれPHS網と携帯網を通して接続し、本発明のマルチパス通信手法でデータ通信を行い、データ送信を高速化する。なお、本実施例ではデータ通信のためにTCPを利用すると仮定して説明するが、必ずしもTCPに限定されるべきものではなく、UDPなど他のトランスポートプロトコルも適用可能である。
UDPの用途としては、例えば、符号化した音声データの伝送を行うVoIP(Voice over Internet Protocol)がある。VoIPシステムでは、複数人が同時に会話を行うことが可能なので、長い発言に対応する長いデータと短い発言に対応する短いデータの両方が発生する。つまり、UDPを利用したVoIPシステムにおいても長短のデータが一方向中に混在した状況があるため、本発明の実施形態は適用できる。
次に、本発明の実施形態であるデータ通信システムの動作について説明する。
図8は利用者が一回当該データ通信システムを利用するにあたってのシステム内のデータ通信の手順を示す図である。まず、データ通信開始する前に、各ステップ701、702、703において、それぞれデータ中継部112がアプリクライアント111からの接続、データ中継部113がデータ中継部112からの接続、そしてアプリサーバ114がデータ中継部113からの接続を待つ状態に入る。
システム利用者がアプリクライアント111を操作し始めると、アプリクライアント111がステップ711において、データ中継部112へTCPコネクション4を確立し、データ送信を開始する(ステップ712)。データ中継部112はアプリクライアント111からのデータを受信すると、データ中継部112は中継機器接続情報213を参考し、データ中継部113との間にTCPコネクション1(ステップ713)及びTCPコネクション2(ステップ716)を確立する。
コネクション1の確立直後、データ中継部112はコネクション1でアプリクライアント111のIPアドレス及びポート番号、サーバ装置104のIPアドレス及びアプリサーバ114のポート番号を送信する(ステップ714)。アプリサーバ114のIPアドレス及びアプリサーバ114のポート番号はサーバ接続情報214から得られる。また、コネクション2の確立直後も、同上のデータを送信する。
一方、データ中継部113はコネクション1から、アプリクライアント111及びアプリサーバ114に関する情報を受信すると、アプリサーバ114との間にコネクション3を設立する(ステップ715)。
また、これ以降にコネクション1からのデータをコネクション3へ転送するように、逆にコネクション3からのデータを、コネクション1へ転送するように、コネクションの対応付けを、データ中継部113内のコネクション管理テーブル505に記憶する(ステップ721)。その後、データ中継部113はステップ717において、コネクション2から同上の送受信側情報を受信する。受信した情報により、データ中継部113は、コネクション1とコネクション2で送信されるデータは同じ送信元及び送信先のものであることが分かり、両コネクションからのデータを纏めてコネクション3へ転送し、また、コネクション3からのデータを両コネクションへ転送するように、データ中継部113のコネクション管理テーブル505で記録する(ステップ722)。
コネクション1またはコネクション2の混雑状況により、データ中継部113がステップ713とステップ716の両方を実施できないこともある。この際、ステップ713および716の中の一つが実施できた時にでも中継部113が後述のステップ731に進む。
ステップ731では、アプリクライアント111とアプリサーバ114の間のデータ送受信が行われる。ステップ731の詳細については後述する。
一方、システム利用者がアプリクライアント111の利用を終了する際、アプリクライアント111がコネクション4を終了する(ステップ741)。コネクション4の終了を検知したデータ中継部112はコネクション1及びコネクション2を終了する(ステップ742及びステップ743)。データ中継部113は、コネクション1及びコネクション2両方終了することを検知した場合、コネクション3を終了する(ステップ744)。
図9はステップ731において、当該システムがデータの送信を行う際の手順を示すものである。ステップ901において、アプリクライアント111がデータ中継部112へデータを送信する。データ中継部112がデータを受信し、複数のブロックに分割する(ステップ902)。そして、データ中継部112が分割した各データブロックをコネクション1及びコネクション2で並列にデータ中継部113へ送信する(ステップ903及びステップ904)。データ中継部113はコネクション1及びコネクション2からのデータを統合し(ステップ905)、コネクション3を経由してアプリサーバ114へ送信する(ステップ906)。
一方、アプリサーバ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)。
以上は利用者が当該データ通信システムを利用するにあたってのシステム内のデータ通信の手順である。
次に、データ中継部112及びデータ中継部113の内部処理手順について説明する。データ中継部112とデータ中継部113の内部構成及び処理手順は同じであるが、設置場所が異なるため、データやり取り相手が異なる。ここで、データ中継部112を中心に説明し、その後データ中継部112とデータ中継部113の違いについて説明する。
図5を再び利用してデータ中継部112の詳細なデータ送信手順について説明する。コネクション4を介してアプリクライアント111からデータが送信されてきたとき、受信モジュール501がデータを受信し、複数のブロックに分割してから送信用バッファ511に格納する。マルチパス送信モジュール502は送信用バッファ511にデータがあるとコネクション1及びコネクション2を介してデータ中継部113へ送信する。データブロックをコネクション1及びコネクション2へ振り分ける方法について後述する。
一方、コネクション1及びコネクション2を介してデータ中継部113からデータブロックが到着したとき、マルチパス受信モジュール503がデータブロックを受信し、受信用バッファ512に格納する。送信モジュール504は受信用バッファ512の中のデータを統合し、コネクション4を介してアプリサーバ114へ送信する。
なお、コネクション管理テーブル505は、コネクション4からのデータをコネクション1及びコネクション2へ送信し、またコネクション1及びコネクション2からのデータをコネクション4へ送信するという、データ送信先に関する情報を、送信モジュール504およびマルチパス送信モジュール502に提供する。
データ中継部112は、複数のアプリクライアントからの接続を並列して中継することが可能である。それぞれのアプリクライアントとその接続先との関連付けをコネクション管理テーブル505で管理し、アプリクライアントごとに送信用バッファの領域を割り当てることが可能である。
以下、説明を簡単にするために、データ中継部112及びデータ中継113はひとつのアプリクライアント(アプリクライアント111)から、一つのアプリサーバ(アプリサーバ114)へデータを送信する場合を想定する。
受信モジュール501はコネクション4からのデータを受信し、データを送信用バッファ511に格納する際に、下記のアルゴリズムでデータをブロックに分割する。分割処理には、受信モジュール501の保持するブロックのペイロードの最大値(以下、Mとする)を使用する。
(1)送信用バッファ511内に格納するデータのサイズ(以下、Nとする)が M 以下の場合は、ペイロードがN となる一つのブロックとする。
(2)N が M より大きい場合、データの先頭から サイズ M のブロックを分割していく。この際、余ったデータは、(1)と同様、ペイロードがM以下のブロックにする。
(3)ブロックにブロックの番号とブロックのペイロードサイズを追加する。ブロック番号は、ブロック毎に割り振る番号で、1から始まる。
上記のように、ブロックのペイロードのサイズは一定の値ではなく、分割する時点で、送信用バッファ511にあるデータのサイズによりまちまちである。
図10はマルチパス送信モジュール502の処理手順を示すフローチャートである。データ中継部112がステップ701で待ち受け状態に入ると、マルチパス送信モジュール502がステップ1001で、送信用バッファ511内に未送信データが格納されるまで待機する。送信用バッファ511内に未送信データがあると、後述する遅延優先送信(ステップ1002)を行う。遅延優先送信を一回行った後に、送信モードを切り替える必要があるかどうかをステップ1003で判断する。必要がある場合、後述する帯域優先送信(ステップ1004)に進む。必要がない場合、ステップ1001に戻る。送信モードを切り替えるための条件判断については後述する。まず、遅延優先送信手順について説明する。
図11はステップ1002の遅延優先送信手順を示すものである。ステップ1102では、送信モジュール502が送信ブロックを選択する。ここで、送信モジュール502が次のブロック(送信されていないブロックで、ブロック番号がもっとも小さいブロック)を選択する。次に、送信モジュール502はステップ1103において、ステップ1102で選択したブロックをコネクション1で送信する。また、ステップ1103と並行してステップ1104も行う。ステップ1104ではステップ1102で選択したブロックをコネクション2で送信する。つまり、送信モジュール502が同じブロックをコネクション1及びコネクション2で並列に送信することになる。
次に、ステップ1003での条件判定に用いる送信方法選択情報について述べる。マルチパス送信モジュール502はコネクション1およびコネクション2でデータを送信し続けた場合、各コネクションが混雑の状態になり、一時的にマルチパス送信モジュール502からの新しい送信要求を、通信制御部121が受け付けない、あるいは通信中データ損失率が高くなることがある。
例えば、通信制御部121の採用するデータ通信プロトコルはTCPである場合、TCPはフロー制御という機能があり、ネットワークのデータ送信性能および受信側の受信性能により、送信側がネットワークに送信するある時点でのデータ量が制限される。データ量制限値以上のデータ量の送信が要求された場合、TCPの送信側が送信バッファというデータ保存領域にデータを格納していく。TCPの送信側の送信バッファの空き容量が所定値(例えば0)以下になると、TCPの送信側を担当する通信制御部121がデータの送信要求を受け付けないことがある。
一方、通信制御部121の採用するデータ通信プロトコルはUDPである場合、UDPにはフロー制御という機能がないため、コネクションのデータ送信能力を超えたデータ量も送信してしまう特徴がある。この場合、通信制御部121が送信したデータが高い確率で通信中に損失し、受信側へ届かなくなる。そのため、UDPの場合、送信要求データ量がコネクションのデータ送信能力を超えたかどうかを知るために、受信側で受信したブロック番号を確認することで、データの損失率を調べる方法が有効である。
本実施形態では、これら、バッファの空き容量に基づき、新しい送信要求を通信制御部121が受け付けるか否か、または、通信中データ損失率を、送信方法選択情報として利用する。
ステップ1003では、コネクション1又はコネクション2の少なくともいずれか一方が送信できなく、かつ、受信側にG個(G>0)の未送信ブロックが残った場合、送信方法選択情報の判定結果がYESになり、送信モードを切り替える。
なお、中継用コネクションが3以上の場合は次のように一般化できる。ステップ1003では、直前のステップ1002においてマルチパス送信モジュール502がブロック送信を要求したn本のコネクションの中で、m本以上のコネクションが要求を受け付けない場合、送信方法選択情報の判定はYESとなる。逆に、要求を受け付けないコネクションがm本未満の場合、判定はNOとなる。ここでn はデータ中継部112およびデータ中継部113の間のコネクション数であり、mは1からn までの間の整数値である。
図12は帯域優先送信手順(ステップ1004)の詳細を示すフローチャートである。
まず、ステップ1201では、マルチパス送信モジュール502はコネクション1が送信可能な状態にあるかどうかを確認する。コネクションが送信可能とは、通信プロトコルはTCPである場合、TCPの送信側である通信制御部121がデータの送信要求を受け付けることである。
送信可能であれば、ステップ1202で一つのブロックをコネクション1で送信する。送信の仕方については後述する。マルチパス送信モジュール502は一つのブロックを送信した後と、ステップ1203で送信用バッファ511に未送信データがあるかどうかを確認し、未送信データがあれば、次のステップ1204に進み、無ければ、帯域優先送信を終了する。ステップ1201では、コネクション1が送信可能な状態でなければ、ステップ1204へ進む。
マルチパス送信モジュール502はステップ1204で、コネクション2が送信可能な状態にあるかどうかを確認する。送信可能ならば、ステップ1205で一つのデータブロックを行い、その後、送信用バッファ511に未送信データがなければ、帯域優先送信を終了し、あれば、ステップ1201に戻る。
このように、帯域優先送信では、マルチパス送信モジュール502が各コネクションを交互に監視し、コネクションがデータ送信可能であれば、データを送信し、送信用バッファ511にデータが無くなり次第、帯域優先送信を終了する。
なお、ステップ1201及びステップ1204では、コネクション1及びコネクション2が更にデータ送信可能かを、データ中継部112が判断するために、次の方法を利用してもよい。
データ中継部113はデータ中継部112からデータブロックを受信するたびに、受信したブロックに含まれているシーケンス番号をデータ中継部112に送り返し、ブロックの到着を通知する。到着通知はブロックを送信したコネクションで返送すればよい。データ中継部112はコネクション1から到着通知が来れば、コネクション1がさらにデータ送信が可能となることが分かり、ステップ1201でYES判断を出す。また、コネクション2に対しても同じ処理を行う。
なお、データ中継部112は到着通知のシーケンス番号により、一定時間内にコネクション1が送信完了したブロックを特定し、送信完了したブロックのデータサイズの合計を取得することができる。
一定時間内にコネクション1が送信完了したブロックのデータサイズの合計から、コネクション1の平均送信速度の計算ができ、また、同様に、コネクション2からの到着通知によりコネクション2の平均送信速度を計算することができる。
データ中継部112はコネクション1及びコネクション2の平均送信速度を用いて、再送の判断(ステップ1301)やそれぞれのコネクションで次に送信するブロックの選択(ステップ1303)を行ってもよい。
図13はマルチパス送信モジュール502がステップ1202及びステップ1205で一つのデータブロックを送信する手順を示すフローチャートである。まず、ステップ1301で、コネクション1(ステップ1202の場合)又はコネクション2(ステップ1205の場合)が再送する必要が可能かを判定する。
ここでの再送とは、あるコネクションで送信中のデータを必要があれば他のコネクションで再送を行うことであり、これにより、受信側が途中のデータを抜けることなく受信できるようにする。
ここで再送要否判定処理について説明する。各コネクションが送信中のブロックの中でもっとも小さい番号をQとする。また、各コネクションが送信中のブロックの中でもっとも番号の大きいものをPとする。PとQの間の差がK以上ならば、ステップ1301の判定結果がYESとなり、PとQの間の差がKより小さいならばステップ1301の判定結果がNOとなる。なお、上記の番号管理はマルチパス送信モジュール502が行う。
本発明の実施形態では、Kを2にしているが、2以上の値にしてもよい。Kを小さい値にした場合、各コネクション1、コネクション2上のどちらか一方の送信速度の低下がデータ中継部112とデータ中継部113間のデータ送信性能に影響を与えにくく、一方、Kが小さすぎると再送の条件が成り立ちやすくなるため、再送の頻度が高くなり、ブロックの無駄な送信が発生し、データ中継部112とデータ中継部113間のデータ送信性能が低下する。
ステップ1301で判定結果がYESとなる場合、ステップ1302では、Qを再送ブロックの番号として選択する。一方、ステップ1301で判定結果がNOとなる場合、ステップ1303では、番号P+R+(n−1)のブロックを次に送信するブロックとして選択する。
ここで、Rはコネクション1(ステップ1202の場合)又はコネクション2(ステップ1205の場合)が直前のブロックを送信している間に他のコネクションが送信したブロックの総数である。一方、n はデータ中継部112及びデータ中継部113の間の中継用コネクション数である。本発明の実施形態ではnは2 となっている。なお、番号P + R + (n−1)のブロックが送信用バッファ511に存在しない又は存在するが、未送信ではない場合、次に送信するブロックを、未送信かつP+R+ (n−1)にもっとも近い番号のブロックとする。
ステップ1304では、マルチパス送信モジュール502はステップ1302あるいはステップ1303で選択したブロックを、コネクション1(ステップ1202の場合)又はコネクション2(ステップ1205の場合)で送信する。また、マルチパス送信モジュール502はQより番号が小さいブロックを送信用バッファ511から消去する。
次に図5を用いて、データ中継部112がデータ中継部113からデータを受信し、アプリクライアント111へ送信する手順を説明する。マルチパス受信モジュール503はコネクション1及びコネクション2からデータを受信し、受信用バッファ512に格納する。一方、送信モジュール504は受信用バッファ512の中のデータをコネクション4でアプリクライアント111へ送信する。
図14は、マルチパス受信モジュール503の処理手順を示すフローチャートである。まずステップ1401でマルチパス受信モジュール503がコネクション1及びコネクション2からデータブロックが到着するまで待つ。マルチパス通信モジュール503は、自分が受信したブロックの番号を管理しており、ステップ1402で到着したデータブロックの番号を、データ送信開始時からそれまでにマルチパス受信モジュール503が受信したデータブロックと重複するかどうかを確認する。重複した場合はステップ1401に戻る。重複がない場合は到着したブロックを受信用バッファ512に格納する。ステップ1403の次はステップ1401に戻る。
送信モジュール504は、受信用バッファ512に格納されるブロックを監視する。番号1のブロックがあると番号1のブロックを送信する。また、送信したブロックの次の番号のブロックがあれば、このブロックも送信する。送信したブロックの次の番号のブロックがなければ、次の番号のブロックが到着するまで待つ。
なお、送信したブロックは受信用バッファ512から消去する。ここでの送信先は、端末101の中のアプリクライアント111である。また、ブロックを送信する際、ブロックのペイロードを送信する。つまり、送信モジュール504では、ステップ915のデータ統合作業が行われる。
ここまで、データ中継部112の処理手順について説明した。データ中継部113は上述のデータ中継部112の内部構成および動作手順と同じである。ただし、データ中継部113の場合、マルチパス送信モジュール502はデータ中継部112へデータを送信し、受信モジュール501はアプリサーバ114から受信する。また、マルチパス受信モジュール503はデータ中継部112からデータを受信し、受信モジュール504はアプリサーバ114へデータを送信することになる。
また、データ中継部112、113の間のコネクション本数は2以上あっても良い。
また、以下の要素により、データ中継部112およびデータ中継部113が連携して中継コネクション数を調整してもよい。調整時に考慮する要素は、たとえば、それぞれのコネクションに対する課金ポリシー、それぞれのコネクションに対する消費電力、それぞれのコネクションに対するセキュリティーポリシー、それぞれのコネクションに対するユーザの好みである。
各コネクション1、コネクション2上を送信されるデータをそれぞれ別の暗号化手法で暗号化し、データ中継部112、113間の送受信データの解読難度を高めることも可能である。
今回説明した実施形態では、コネクション1及びコネクション2はインターネットの接続としていたが、接続環境はIPネットワークではなくてもよい。また、データ中継部はアプリケーションレイヤに適用したが、データトランスポートレイヤ、IPレイヤなどでも適用可能である。
以上の通り、本発明の実施形態を説明した。
本実施形態では、時間当たりデータ量が少ない場合、つまり、各コネクション1、 2の送信能力に余裕があるときは、ステップ1002の遅延優先送信でデータ中継部112が各コネクション1、 2で同じデータブロックを送信するため、各コネクション1、 2の中で遅延がもっとも短いほうでブロックがデータ中継113に到着する。
一方、送信データサイズが大きい場合、つまり、各コネクション1、 2の送信能力を超えたデータ量が送信用バッファ511に存在する場合、データ中継部112がステップ1004の帯域優先送信に切り替えて、各コネクション1、ネクション2の帯域を最大限に利用して、送信用バッファ511内のデータを素早く送信する。
本実施形態によれば、シンクライアントシステムにおいて、端末からの操作命令は遅延優先送信方法で送信され、素早くサーバ装置へ到着する。一方、サーバ装置からの描画命令も遅延優先送信で送信され、素早く端末へ到着する。また、サーバ装置からの画像データなどは帯域優先送信方法で送信されるため、端末とサーバ送信間の複数のネットワークの帯域が小さくても、端末では画像データのダウンロードも素早くできる。よって、端末での入力操作が素早く反映されることになり、端末利用者の操作感が向上する。
また、本実施形態によれば、送信済みおよび/または送信中のブロックの数に基づき、コネクション毎の通信性能を取得し、ステップ1303では、取得した通信性能に基づき、遅いコネクションほど (Rの値が大きい)、ブロックの番号 P+R+(n−1))が大きいブロックを送信するため、ブロックが受信側に到着するとき、ブロック番号どおりに到着することが多くなる。これにより、受信側でのデータ並べ替え処理が少なくなり、システムのデータ送受信速度が向上する。
さらに本実施形態は、データ中継部112が次に受信したいブロックが、コネクションの通信性能低下により、データ中継部113への到着が遅れている場合、ブロック再送を行う。ブロックの再送 (ステップ1302)により、一部のコネクションの通信能力が低下しても受信側ではブロック番号どおりにブロックを受信できる確率が高くなるため、受信側での処理が遅れることも少なくなる。
本発明の実施形態は図15に示すデータ通信システムの構成に変更してもよい。なお、同じ参照符号は図1と同じ要素を表す。すなわち、データ中継部112を端末101内に構成する代わりに、中継機器102として独立させてもよい。中継機器102の内部構成は中継機器103と同じである。この場合、アプリクライアント111とデータ中継部112の間のデータやり取りを行うコネクション4はネットワークを経由することになる。
また、中継機器102はホーム・ゲートウェイであってもよい。ホーム・ゲートウェイは、一般にインターネットと家庭(ホーム)ネットワークの間に配置され、ホーム・ルータ、プロトコル変換、ファイアウォールなどの機能を持つ情報通信機器である。本発明の実施形態を採用すると、家の中のすべての端末がホームゲートウェアを介して、インターネット上にあるサーバ装置104とマルチパスで高速に通信ができるようになる。
また、本発明の実施形態は図16に示すデータ通信システムの構成に変更してもよい。図16で示すシステム構成では、データ中継部113をアプリサーバ114と同じく、サーバ装置104内に構成する。データ中継部113とアプリサーバ114は通信制御部121を介してデータのやり取りを行う。サーバ装置104は、LAN142ではなくコネクション1およびコネクション2で端末101に接続する。図16で示すシステム構成を採用すれば、 データ中継部113とアプリサーバ114のデータやり取りはLAN142を介さないため、より高速に行える。
本発明の実施例のデータ通信システムは、図17に示すように、VPN (Virtual Private Network)サーバ装置1701が、コネクション1やコネクション2など、データ中継部112とデータ中継部113の間のコネクションを切断したり、中継したりしてもよい。
この場合でも、データ中継部112を端末101の中に導入してもよいし、中継機器102に導入してもよい。また、データ中継部113をサーバ装置104に導入してもよいし、中継機器103に導入してもよい。
VPNサーバ装置1701がコネクション1及びコネクション2を並列に通すためにコネクション1及びコネクション2上の認証のアカウントをそれぞれ別のものを利用してもよい。又は、VPNサーバで二重ログインを許可にして、コネクション1及びコネクション2上同じアカウントで認証を行ってもよい。
また、本発明の実施例のシステムにおいて、図18に示すように、中継機器103はVPNサーバでもよい。VPNサーバが複数ある環境において、コネクション1及びコネクション2が同じVPNサーバに接続しないと、データ中継部113がコネクション1及びコネクション2両方からのデータを受信することができない。そこで、VPNサーバが複数ある場合は、データ中継部112が先に設立したコネクションと同じVPNサーバに次のコネクションが接続するようにデータ中継部112がコネクションの確立を管理すればよい。
本発明の実施例のシステムにおいて、中継機器102および中継機器103は、図19に示すような、WAN(Wide Area Network、広域通信網)の高速化装置であってもよい。
WAN高速化装置1902とWAN高速化装置1903はネットワーク1とネットワーク2間のデータやり取りを高速化するものである。WAN高速化装置1902とWAN高速化装置1903は二つ以上のネットワーク回線で結ばれるとする。
この際、データ中継部112は、業者Xのネットワーク回線上にコネクション1、業者Yのネットワーク回線上にコネクション2を作成し、ネットワーク1の中からネットワーク2へ送信されるデータをすべて纏めてデータ中継部113へ転送する。また、データ中継部113はネットワーク2からのデータに対してもコネクション1およびコネクション2で、データ中継部112へ転送する。
ネットワーク1からWAN高速化装置1902へ送信されたデータは、ネットワーク1の様々な利用者のデータを含んでおり、それぞれの利用者のデータはネットワーク2中の別の宛先を持つことが多い。そのため、データ中継部112はデータをデータ中継部113へ送信する際、ネットワーク1中のどの利用者から送られ、そしてネットワーク2のどの宛先に届けるべきかというコネクション情報を取得し、データと一緒にコネクション情報を送信する必要がある。データ中継部113はコネクション情報に基づいてネットワーク2の内部へデータを転送するという処理を行う。
なお、データ中継部112によるコネクション情報の取得方法としては、ネットワーク1の利用者が利用する送信側通信機器が、ネットワーク2へTCPコネクションを確立するために、WAN高速化装置1902を経由して送信するSYNパケットを、データ中継部112がキャプチャして、SYNパケットの宛先から当該利用者の通信先を取得してもよい。
上記実施例のシステムにおいて、図20に示すように、データ中継部112及びデータ中継部113をMIMO (Multiple Input Multiple Output、複数のアンテナで複数の通信チャネルを用いて並列にデータ送受信を行い、帯域を広げる無線通信技術)の送受信機器に導入してもよい。
図20では、MIMO送受信機器2002のアンテナ1と、MIMO送受信機器2003のアンテナ2は通信チャネル1を設立し、アンテナ3及びアンテナ4は通信チャネル2を設立する。MIMO送受信機器2002と、MIMO送受信機器2003は通信チャネル1及び通信チャネル2で異なるデータを並列に送信する機能を備える。
上記装置に、帯域優先送信と、遅延優先送信を切り替えて送信する上記実施例のデータ中継部112及びデータ中継部113を導入することにより、通信環境が悪化する場合でも通信速度を安定させることが可能になる。
また、MIMO送受信機器に適用する際、データ中継部112及びデータ中継部113のステップ1003における、遅延優先送信と帯域優先送信を切り替える条件を、チャネル1及びチャネル2上のデータ損失率が、予め定めた所定値より高くなる場合、遅延優先送信に切り替える、としてもよい。これにより、遅延優先送信では、同じデータをチャネル1とチャネル2で並列に送信するため、片方が損失しても受信側がデータを受信することができ、通信速度の低下を防ぐことができる。また、チャネル1及びチャネル2上のデータ損失率が、所定値以下になった場合、従来どおり帯域優先送信でデータ送信の高速化を実現することが可能になる。
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送受信機器。