(57)【要約】【課題】データ通信量の少ないアプリケーションの組みで、データの再送が滞ることを防止すること。【解決手段】転送装置１００は、複数のアプリケーションの組みが共通して利用するネットワーク５０の最大通信帯域の範囲内で、複数の組み毎に最低帯域以上の通信帯域をそれぞれ割り当てる。そして、転送装置１００は、割り当てられた各組の通信帯域内において、データの送信元から受信するＴＣＰデータをＵＤＰデータに変換してＵＤＰデータを送信先に転送し、ＵＤＰデータの再送要求に応答して、再送データを再送する。【選択図】図１
2014049905.tif 000002
【特許請求の範囲】
【請求項１】
データの送信元と送信先との複数の組みが共通して利用する通信回線の最大通信帯域の範囲内で、前記複数の組み毎に最低限の通信帯域をそれぞれ割り当てる帯域割当部と、
前記帯域割当部によって割り当てられた各組の通信帯域内において、前記送信元から受信するデータとは異なるプロトコルで送受信される変換データに前記データを変換し、前記変換データを前記送信先に転送し、前記変換データの再送要求に応答して、再送データを再送する転送制御部と
を有することを特徴とする転送装置。
【請求項２】
前記帯域割当部は、前記送信元と前記送信先との複数の組みにそれぞれ割り当てる通信帯域を、最低限の通信帯域と、前記送信元と前記送信先との組で送受信されるデータ通信量に応じた通信帯域とを加算することで算出し、算出した通信帯域を各組みに割り当てることを特徴とする請求項１に記載の転送装置。
【請求項３】
前記転送制御部は、前記再送データを優先してデータ転送し、前記送信元と送信先との組みに割り当てられた通信帯域から前記再送データで利用する通信帯域を減算した通信帯域の範囲内で、残りの変換データのデータ転送を実行することを特徴とする請求項１または２に記載の転送装置。
【請求項４】
他の転送装置から変換データを順次受信し、受信した変換データを一意に識別する識別情報を木構造データによって記録する受信部と、前記木構造データをもとにして、再送要求を行う変換データを特定する再送要求部とを更に有することを特徴とする請求項１、２または３に記載の転送装置。
【請求項５】
コンピュータが実行する転送方法であって、
データの送信元と送信先との複数の組みが共通して利用する通信回線の最大通信帯域の範囲内で、前記複数の組み毎に最低限の通信帯域をそれぞれ割り当て、
割り当てた各組みの通信帯域内において、前記送信元から受信するデータとは異なるプロトコルで送受信される変換データに前記データを変換し、前記変換データを前記送信先に転送し、前記変換データの再送要求に応答して、再送データを再送する
各処理を実行する転送方法。
【請求項６】
コンピュータに、
データの送信元と送信先との複数の組みが共通して利用する通信回線の最大通信帯域の範囲内で、前記複数の組み毎に最低限の通信帯域をそれぞれ割り当て、
割り当てた各組みの通信帯域内において、前記送信元から受信するデータとは異なるプロトコルで送受信される変換データに前記データを変換し、前記変換データを前記送信先に転送し、前記変換データの再送要求に応答して、再送データを再送する
各処理を実行させることを特徴とする転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置等に関する。
【背景技術】
【０００２】
近年、ネットワーク上で複数のアプリケーションが協働し、利用者にサービスを提供するクラウドコンピューティングが存在する。
【０００３】
コンピュータネットワークにおいて、データ通信の確実性のため、一般にＴＣＰ(Transmission  Control  Protocol)に代表されるコネクション型プロトコルが用いられる。しかしながら、各アプリケーションがＴＣＰを用いてデータ通信を実行すると、ハンドシェイクプロセスでのコネクションを確立する処理やデータ転送の確認応答処理が発生し、例えば通信距離が長距離の場合など、ネットワーク帯域が十分である場合でも、遅延が発生してしまう場合がある。
【０００４】
かかる遅延発生を防止するべく、ＴＣＰに代わる従来技術が存在する。図１３は、従来技術の一例を説明するための図である。図１３に示す例では、アプリケーション１０は、データをＴＣＰクライアント１５に送信し、ＴＣＰクライアント１５は、ＴＣＰパケットを中継ソフトウェア２０に送信する。
【０００５】
中継ソフトウェア２０は、ＴＣＰパケットをキャプチャし、コネクションレス型プロトコルであるＵＤＰ（User  Datagram  Protocol）と再送アルゴリズムに変換し、データ転送を行う。具体的に、中継ソフトウェア２０は、ＴＣＰパケットをＵＤＰパケットに変換し、ＵＤＰによって、データ転送を実行する。また、中継ソフトウェア２０は、アプリケーション層を２分割し、ＵＤＰによるデータ消失に対応するリカバリや、帯域制御などを行うための再送アルゴリズムを備えた高速転送部を設ける。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−４９５０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、データ通信量の少ないアプリケーションの組みに十分な通信帯域が割り当てられず、データの再送が滞るという問題があった。
【０００８】
図１４は、従来技術の問題点を説明するための図である。図１４に示す例では、転送装置３０ａ、３０ｂがネットワーク５０を介して接続されている。転送装置３０ａは、アプリケーション１５ａ、１５ｂ、１５ｃ、中継ソフトウェア２０ａを有する。転送装置３０ｂは、アプリケーション１６ａ、１６ｂ、１６ｃ、中継ソフトウェア２０ｂを有する。
【０００９】
例えば、アプリケーション１５ａは、データ通信量の少ない低性能のアプリケーションであり、中継ソフトウェア２０ａ、２０ｂを利用して、アプリケーション１６ａとデータ通信を行う。アプリケーション１５ｂは、データ通信量の多い高性能のアプリケーションであり、中継ソフトウェア２０ａ、２０ｂを利用して、アプリケーション１６ｂとデータ通信を行う。アプリケーション１５ｃは、データ通信量の少ない低性能のアプリケーションであり、アプリケーション１６ｃとデータ通信を行う。中継ソフトウェア２０ａ、２０ｂは、図１３で説明した中継ソフトウェア２０に対応する。
【００１０】
従来の中継ソフトウェア２０ａ、２０ｂは、ネットワーク５０の最大通信帯域を鑑みず、各アプリケーションの性能に応じて、帯域を割り当てる。このため、中継ソフトウェア２０ａ、２０ｂは、高性能のアプリケーション１５ｂ，１６ｂの組みに、大きな通信帯域を割り当てる場合がある。このように、中継ソフトウェア２０ａ、２０ｂが帯域を割り当てると、ネットワーク５０の帯域が占有されてしまい、アプリケーション１５ａ、１６ａ間や、アプリケーション１５ｃ，１６ｃ間に十分な通信帯域が割り当てられず、データの再送が滞ってしまう。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、データ通信量の少ないアプリケーションの組みでもデータの再送が滞ることを防止することができる転送装置、転送方法および転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
開示の転送装置は、帯域割当部と転送制御部とを有する。帯域割当部は、データの送信元と送信先との複数の組みが共通して利用する通信回線の最大通信帯域の範囲内で、複数の組み毎に最低限の通信帯域をそれぞれ割り当てる。転送制御部は、帯域割当部によって割り当てられた各組の通信帯域内において、送信元から受信するデータとは異なるプロトコルで送受信される変換データにデータを変換し、変換データを送信先に転送し、変換データの再送要求に応答して、再送データを再送する。
【発明の効果】
【００１３】
開示の転送装置によれば、データ通信量の少ないアプリケーションの組みでもデータの再送が滞ることを防止することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、本実施例に係るシステムの構成を示す図である。
【図２】図２は、本実施例に係る転送装置の構成を示す機能ブロック図である。
【図３】図３は、本実施例に係る記憶部のデータ構造の一例を示す図である。
【図４】図４は、転送制御部が生成するＵＤＰパケットのデータ構造の一例を示す図である。
【図５】図５は、受信状況確認パケットのデータ構造の一例を示す図である。
【図６】図６は、受信状況応答パケットのデータ構造の一例を示す図である。
【図７】図７は、本実施例に係るパケット受信情報のデータ構造の一例を示す図である。
【図８】図８は、パケット受信情報を生成する処理の一例を示す図である。
【図９】図９は、本実施例に係るシステムの処理手順を示すフローチャートである。
【図１０】図１０は、本実施例に係るデータ転送の処理手順を示すフローチャートである。
【図１１】図１１は、データ転送処理の処理手順を示すフローチャートである。
【図１２】図１２は、転送プログラムを実行するコンピュータの一例を示す図である。
【図１３】図１３は、従来技術の一例を説明するための図である。
【図１４】図１４は、従来技術の問題点を説明するための図である。
【発明を実施するための形態】
【００１５】
以下に、本発明に係る転送装置、転送方法および転送プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１６】
次に、本実施例に係るシステムについて説明する。図１は、本実施例に係るシステムの構成を示す図である。図１に示すように、このシステムは、ＴＣＰクライアント６０ａ、６０ｂ、６０ｃ、ＴＣＰサーバ７０ａ、７０ｂ、７０ｃ、転送装置１００、２００を有する。ここでは一例として、ＴＣＰクライアント６０ａ〜６０ｃ、ＴＣＰサーバ７０ａ〜７０ｃを示すが、その他のＴＣＰクライアント、ＴＣＰサーバが接続されていても良い。以下の説明では、ＴＣＰクライアント６０ａ〜６０ｃをまとめて、ＴＣＰクライアント６０と表記する。ＴＣＰサーバ７０ａ〜７０ｃをまとめて、ＴＣＰサーバ７０と表記する。
【００１７】
ＴＣＰクライアント６０は、転送装置１００に接続される。ＴＣＰサーバ７０は、転送装置２００に接続される。転送装置１００および転送装置２００は、ネットワーク５０を介して相互に接続される。ＴＣＰクライアント６０およびＴＣＰ７０サーバは、転送装置１００、２００を介してデータ通信を実行する。
【００１８】
図１に示した転送装置１００、２００の構成について説明する。図２は、本実施例に係る転送装置の構成を示す機能ブロック図である。図２に示すように、転送装置１００は、ＵＩ部１０１、設定ファイル記憶部１０２、設定変更部１０３、転送部１０４、記憶部１０５、送信制御部１０６を有する。転送装置２００は、ＵＩ部２０１、設定ファイル記憶部２０２、設定変更部２０３、転送部２０４、記憶部２０５、受信制御部２０６を有する。
【００１９】
まず、転送装置１００の構成について説明する。ＵＩ（User  Interface）部１０１は、利用者が各種の情報を入力する入力部である。例えば、ＵＩ部１０１は、キーボード、タッチパネル等の入力装置に対応する。利用者は、ＵＩ部１０１を操作して、各種の設定情報を入力する。ＵＩ部１０１から入力された各種の設定情報は、設定ファイル記憶部１０２に記憶される。
【００２０】
設定ファイル記憶部１０２は、各種の設定情報を記憶する記憶装置である。設定変更部１０３は、設定ファイル記憶部１０２に記憶された設定情報に基づいて、転送部１０４、送信制御部１０６の設定を適宜変更する処理部である。
【００２１】
転送部１０４は、ＴＣＰクライアント６０とコネクションを確立し、ＴＣＰクライアント６０からＴＣＰパケットを受信する処理部である。転送部１０４は、ＴＣＰパケットを記憶部１０５に記憶させる。転送部１０４は、ＴＣＰクライアント６０毎にＴＣＰパケットを記憶部１０５に記憶させる。また、転送部１０４は、ＴＣＰクライアント６０から受信したＴＣＰパケットの単位時間当たりのデータサイズを記憶部１０５に記憶させる。
【００２２】
記憶部１０５は、ＴＣＰパケットを記憶する記憶装置である。図３は、本実施例に係る記憶部のデータ構造の一例を示す図である。図３に示すように、記憶部１０５は、識別番号、ＴＣＰパケット、データサイズＴ（Ｘ）、データサイズＲ（Ｘ）を対応付けて記憶する。識別番号は、データ通信を行うＴＣＰクライアント６０とＴＣＰサーバ７０との組みを一意に識別する情報である。ＴＣＰパケットは、ＴＣＰクライアント６０から受信したＴＣＰパケットのデータである。データサイズＴ（Ｘ）は、単位時間あたりのＴＣＰパケットの合計サイズである。データサイズＲ（Ｘ）は、転送装置２００に再送する単位時間あたりの再送パケットの合計サイズである。再送パケットは、送信先の転送装置２００から、再送要求のあったＵＤＰパケットである。
【００２３】
送信制御部１０６は、ＴＣＰパケットをＵＤＰパケットに変換し、ＵＤＰパケットによって、データ転送を実行する処理部である。また、送信制御部１０６は、ＵＤＰによるデータ消失に対応するリカバリや、ＴＣＰクライアントとＴＣＰサーバとの帯域制御を行う。送信制御部１０６は、帯域割当部１０６ａ、転送制御部１０６ｂ、再送受付部１０６ｃを有する。
【００２４】
帯域割当部１０６ａは、ＴＣＰクライアント６０とＴＣＰサーバ７０との各組みに、最低帯域以上の通信帯域をそれぞれ割り当てる処理部である。具体的に、帯域割当部１０６ａは、下記に示すように、ＴＣＰクライアント６０とＴＣＰサーバ７０との各組みに割り当てる帯域を算出する。帯域割当部１０６ａは、算出結果を転送制御部１０６ｂに出力する。
【００２５】
ここで、帯域割当部１０６ａの処理を具体的に説明する。まず、帯域割当部１０６ａは、記憶部１０５を参照し、式（１）に基づいて、TotalSizeを算出する。TotalSizeは、ＴＣＰクライアント６０とＴＣＰサーバ７０とのデータ通信における、単位時間あたりのデータ量の合計値である。
【００２６】
【数１】
2014049905.tif 000003
【００２７】
帯域割当部１０６ａは、ネットワーク５０の最大帯域と、TotalSizeとを比較し、最大帯域の方がTotalSizeよりも大きいか否かを判定する。例えば、最大帯域の情報は、利用者が予め設定しておくものとする。
【００２８】
最大帯域の方がTotalSizeよりも大きい場合について説明する。帯域割当部１０６ａは、全データを送信する旨を転送制御部１０６ｂに通知する。
【００２９】
最大帯域がTotalSize以下の場合について説明する。帯域割当部１０６ａは、記憶部１０５を参照し、式（２）に基づいて、「Bnow」を算出する。式（２）において、Ｂ（ｂｐｓ）は、ネットワーク５０の最大帯域である。ｂ（ｂｐｓ）は、ＴＣＰクライアント６０とＴＣＰサーバ７０との各組みにそれぞれ割り当てる、最低帯域である。最低帯域ｂの値は、例えば、利用者が予め設定しておく。なお、式（２）において、ｍｉｎ（ｂ，Ｒ（ｘ））は、ｂ，Ｒ（ｘ）のうち、小さい方の値を選択する関数である。すなわち、「Bnow」は、最大帯域から、ＴＣＰクライアント６０とＴＣＰサーバ７０との各組に割り当てる最低限の帯域を合計したものを減算した残りの帯域といえる。
【００３０】
【数２】
2014049905.tif 000004
【００３１】
帯域割当部１０６ａは、「Bnow」を算出した後に、式（３）を基にして、各組みの「Total（Ｘ）」を算出する。「Total（Ｘ）」は、ＵＤＰパケットおよび再送パケットを送信する場合のＴＣＰクライアント６０とＴＣＰサーバ７０との各組に割り当てる帯域である。例えば、Total（１）は、ＴＣＰクライアント６０ａとＴＣＰサーバ７０ａとの組みに割り当てる帯域を示す。帯域割当部１０６ａは、算出結果となる「Total（Ｘ）」の情報を、転送制御部１０６ｂに通知する。
【００３２】
【数３】
2014049905.tif 000005
【００３３】
転送制御部１０６ｂは、転送装置２００との間でコネクションを確立させ、ＴＣＰパケットをＵＤＰパケットに変換し、ＵＤＰパケットを転送装置２００に送信する処理部である。例えば、転送制御部１０６ｂは、ＴＣＰパケットをカプセル化し、ＵＤＰヘッダを付与することで、ＵＤＰパケットを生成する。また、転送制御部１０６ｂは、再送に備えて、ＵＤＰパケットを記憶部１０５に記憶させておく。転送制御部１０６ｂは、再送要求を受け付けた場合には、未送信のＵＤＰパケットよりも、再送パケットを優先して、転送装置２００に再送パケットを送信する。
【００３４】
図４は、転送制御部が生成するＵＤＰパケットのデータ構造の一例を示す図である。図４に示すように、例えば、ＵＤＰパケットは、ＵＤＰヘッダ、ＲＰＳヘッダ、送信データ部を含む。ＲＰＳヘッダには、送信データのオフセット、受信完了通知を受けたデータのオフセットが含まれる。また、ＵＤＰヘッダには、ＵＤＰパケットを一意に識別するＩＤ（Identification）が含まれているものとする。また、送信データ部には、カプセル化されたＴＣＰパケットが含まれる。
【００３５】
転送制御部１０６ｂが、帯域割当部１０６ａから、全データを送信する旨の情報を取得した場合の処理について説明する。転送制御部１０６ｂは、記憶部１０５に記憶されたＴＣＰパケットを、ＵＤＰパケットに変換し、変換したＵＤＰパケットを転送装置２００に送信する。また、転送制御部１０６ｂは、再送受付部１０６ｃから、再送対象となるＵＤＰパケットのＩＤを取得した場合に、再送対象となるＵＤＰパケットを記憶部１０５から抽出し、転送装置２００に再送する。再送対象となるＵＤＰパケットは、上記の再送パケットに対応する。
【００３６】
転送制御部１０６ｂが、各組みのTotal（Ｘ）を取得した場合の処理について説明する。転送制御部１０６ｂは、未送信のＵＤＰパケットよりも、再送パケットを優先して、転送装置２００にパケットを送信する処理を実行する。転送制御部１０６ｂは、式（４）を基にして、再送パケットを優先的に送信した場合の、残りの帯域を算出し、算出した残りの帯域の範囲内で、ＴＣＰパケットをＵＤＰパケットに変換して送信する。
【００３７】
例えば、ＴＣＰクライアント６０ａとＴＣＰサーバ７０ａとの組に割り当てる帯域をTotal（１）とし、Total（１）を１００Ｍ（ｂｐｓ）とする。また、Ｔ（１）を６０Ｍ（ｂｐｓ）とし、Ｒ（Ｍ）を６０Ｍ（ｂｐｓ）とする。この場合には、転送制御部１０６ｂは、Total（１）の１００Ｍｂｐｓうち、６０Ｍ（ｂｐｓ）を、再送パケットのデータ転送に割り当て、残りの４０Ｍ（ｂｐｓ）を、未送信のＵＤＰパケットのデータ転送に割り当てる。
【００３８】
このように、転送制御部１０６ｂが、再送パケットを優先して送信することで、転送装置２００に到達できなかったＵＤＰパケットを、時間的に古い方から順番に補っていくことができる。例えば、時間的に新しいＵＤＰパケットを受け取れても、再送要求した、古いＵＤＰパケットをいっこうに受け取れないといった問題を解消できる。
【００３９】
【数４】
2014049905.tif 000006
【００４０】
再送受付部１０６ｃは、転送装置２００から再送対象となるＵＤＰパケットのＩＤを受信する処理部である。例えば、再送受付部１０６ｃは、受信状況確認パケットを、転送装置２００に送信し、かかる受信状況確認パケットの応答となる受信状況応答パケットを受信する。受信状況応答パケットに、送信対象となるＵＤＰパケットのＩＤが含まれる。
【００４１】
図５は、受信状況確認パケットのデータ構造の一例を示す図である。図５に示すように、この受信状況確認パケットは、ＵＤＰヘッダ、ＲＰＳヘッダ、SendReqID、CurSendOffsetを含む。SendReqIDは、受信できた受信状況応答の個数を示す。CurSendOffsetは、送信済みデータの先頭からの位置を示す。
【００４２】
図６は、受信状況応答パケットのデータ構造の一例を示す図である。図６に示すように、この受信状況応答パケットは、ＵＤＰヘッダ、ＲＰＳヘッダ、SendReqID、CurSendOffsetを含む。また、受信状況応答パケットは、LossCnt、SackID、SackMaxID、AckDataを含む。LossCntは、受信できているパケットの合計個数を示す。SackIDは、受信状況応答パケットに含まれるAckDataの個数を示す。SackMaxIDは、AckDataの合計個数を示す。AckDataは、受信したＵＤＰパケットの開始ＩＤと終了ＩＤを含む。例えば、再送受付部１０６ｃは、かかるAckDataを参照することで、再送対象となるＵＤＰパケットのＩＤを特定する。
【００４３】
再送受付部１０６ｃは、再送パケットのＩＤを転送制御部１０６ｂに出力する。また、再送受付部１０６ｃは、再送パケットの単位時間当たりのデータ量を、Ｒ（Ｘ）に加算して、記憶部１０５を更新する。
【００４４】
次に、転送装置２００の構成について説明する。ＵＩ部２０１は、利用者が各種の情報を入力する入力部である。例えば、ＵＩ部２０１は、キーボード、タッチパネル等の入力装置に対応する。利用者は、ＵＩ部２０１を操作して、各種の設定情報を入力する。ＵＩ部２０１から入力された各種の設定情報は、設定ファイル記憶部２０２に記憶される。
【００４５】
設定ファイル記憶部２０２は、各種の設定情報を記憶する記憶装置である。設定変更部２０３は、設定ファイル記憶部２０２に記憶された設定情報に基づいて、転送部２０４、受信制御部２０６の設定を適宜変更する処理部である。
【００４６】
転送部２０４は、ＴＣＰサーバ７０とコネクションを確立し、記憶部２０５に記憶されたＴＣＰパケットを、ＴＣＰサーバ７０に転送する処理部である。
【００４７】
記憶部２０５は、ＴＣＰクライアント６０とＴＣＰサーバ７０との各組みに対応するＴＣＰパケットを記憶する。また、記憶部２０５は、パケット受信情報を記憶する。パケット受信情報は、受信できなかったＵＤＰパケットを判定するために利用される情報である。
【００４８】
図７は、本実施例に係るパケット受信情報のデータ構造の一例を示す図である。図７に示すように、このパケット受信情報は、各ノード８１〜８７がツリー状となっている。各ノード８１〜８７は、ＵＤＰパケットを一意に識別するＩＤと受信状況とを対応付けている。ノード８１はノード８２、８５に接続される。ノード８２は、ノード８３、８４に接続される。ノード８５は、ノード８６、８７に接続される。
【００４９】
図７において、ノード８１は、受信状況が「未」である。このため、ノード８１は、ＩＤ０〜１２７によって識別されるＵＤＰパケットのうち、いずれかのＵＤＰパケットを受信していないことを示す。
【００５０】
ノード８２は、受信状況が「済み」である。このため、ノード８２は、ＩＤ０〜６３によって識別されるＵＤＰパケットを全て受信していることを示す。ノード８３は、受信状況が「済み」である。このため、ノード８３は、ＩＤ０〜３１によって識別されるＵＤＰパケットを全て受信していることを示す。ノード８４は、受信状況が「済み」である。このため、ノード８４は、ＩＤ３２〜６３によって識別されるＵＤＰパケットを全て受信していることを示す。
【００５１】
ノード８５は、受信状況が「未」である。このため、ノード８５は、ＩＤ６４〜１２７によって識別されるＵＤＰパケットのうち、いずれかのＵＤＰパケットを受信していないことを示す。ノード８６は、受信状況が「未」である。このため、ノード８６は、ＩＤ６４〜９５によって識別されるＵＤＰパケットのうち、いずれかのＵＤＰパケットを受信していないことを示す。ノード８７は、受信状況が「済み」である。このため、ノード８７は、ＩＤ９６〜１２７によって識別されるＵＤＰパケットを全て受信していることを示す。このパケット受信情報のノードのうち、受信状況が「未」となるノードを辿ることで、未受信のＵＤＰパケットのＩＤを特定することができる。
【００５２】
受信制御部２０６は、転送装置１００からＵＤＰパケットを受信し、ＵＤＰパケットをＴＣＰパケットに変換して、記憶部２０５に順次記憶する。また、受信制御部２０６は、受信できなかったＵＤＰパケットの情報を、転送装置１００に送信し、再送要求を行う。受信制御部２０６は、受信部２０６ａおよび再送要求部２０６ｂを有する。
【００５３】
受信部２０６ａは、転送装置からＵＤＰパケットを受信し、受信したＵＤＰパケットをＴＣＰパケットに変換して、記憶部２０５に記憶させる。例えば、受信部２０６ａは、ＵＤＰパケットに含まれるカプセル化されたＴＣＰパケットを取り出し、記憶部２０５に記憶させる。また、受信部２０６ａは、ＵＰＤパケットに含まれるＩＤを基にして、図７に示したパケット受信情報を生成する。
【００５４】
ここで、受信部２０６ａが、パケット受信情報を生成する処理の一例について説明する。図８は、パケット受信情報を生成する処理の一例を示す図である。図８では受信状況の図示を省略する。図８に示すように、受信部２０６ａは、ＩＤ０〜３のＵＤＰパケットを受信した時点で、ＩＤ０〜３に対応するノード９１ａ〜９１ｄを生成し、ノード９１ａ〜９１ｄの受信状態を「済み」に設定する。また、受信部２０６ａは、ノード９１を生成し、ＩＤ０〜３のＵＤＰパケットを受信済みである旨を、ノード９１に設定する。
【００５５】
受信部２０６ａは、ＩＤ４〜７のＵＤＰパケットを受信した時点で、ＩＤ４〜７に対応するノード９２ａ〜９２ｄを生成し、ノード９２ａ〜９２ｄの受信状態を「済み」に設定する。また、受信部２０６ａは、ノード９２を生成し、ＩＤ４〜７のＵＤＰパケットを受信済みである旨を、ノード９２に設定する。
【００５６】
受信部２０６ａは、ＩＤ８、９、１１のＵＤＰパケットを受信した時点で、ＩＤ８〜１１に対応するノード９３ａ〜９３ｄを生成し、ノード９３ａ、９３ｂ、９３ｄの受信状態を「済み」に設定する。受信部２０６ａは、ＩＤ１０のＵＤＰパケットを受信できていないため、ノード９３ｃの受信状態を「未」に設定する。そして、受信部２０６ａは、ノード９３を生成し、ＩＤ８〜１１に対応する受信状態を「未」に設定する。
【００５７】
受信部２０６ａは、ＩＤ１２〜１５のＵＤＰパケットを受信した時点で、ＩＤ１２〜１５に対応するノード９４ａ〜９４ｄを生成し、ノード９４ａ〜９４ｄの受信状態を「済み」に設定する。また、受信部２０６ａは、ノード９４を生成し、ＩＤ１２〜１５のＵＤＰパケットを受信済みである旨を、ノード９４に設定する。
【００５８】
受信部２０６ａは、ノード９１〜９４を生成した後に、ノード９０を生成する。受信部２０６ａは、ノード９３の受信状態が「未」であるため、ＩＤ０〜１５に対応する受信状態を「未」に設定する。受信部２０６ａは、ＵＤＰパケットを受信する度に上記処理を繰り返し実行することで、パケット受信情報を生成する。
【００５９】
再送要求部２０６ｂは、受信状況確認パケットを転送装置１００から受信し、記憶部２０５のパケット受信情報を基にして、未受信のＵＤＰパケットのＩＤを特定し、特定したＩＤを転送装置１００に通知することで、未受信のＵＤＰパケットの再送要求を行う。再送要求部２０６ｂは、パケット受信情報のノードのうち、受信状況が「未」となるノードを辿ることで、未受信のＵＤＰパケットのＩＤを特定する。再送要求部２０６ｂは、パケット受信状況応答パケットを生成して、転送装置１００に送信する。例えば、図８に示す例では、再送要求部２０６ｂは、受信状態が「未」となるノードを辿ると、ノード９３に辿り着くため、ＩＤ１０のＵＤＰパケットが未受信であると判定する。
【００６０】
次に、本実施例にかかるシステムの処理手順について説明する。図９は、本実施例にかかるシステムの処理手順を示すフローチャートである。図９に示すように、転送装置１００と転送装置２００との間でコネクションを確立する（ステップＳ１０１）。ＴＣＰクライアント６０と転送装置１００との間でコネクションを確立する（ステップＳ１０２）。
【００６１】
転送装置１００は、宛先ＩＰを転送装置２００に送信し（ステップＳ１０３）、転送装置２００は、宛先ＩＰを受信する（ステップＳ１０４）。ステップＳ１０３、Ｓ１０４において、宛先ＩＰは、ＴＣＰクライアント６０がデータ通信を行うＴＣＰサーバ７０のＩＰアドレスに対応する。
【００６２】
転送装置２００とＴＣＰサーバ７０との間でコネクションを確立する（ステップＳ１０５）。ＴＣＰクライアント６０は、ＴＣＰパケットを順次送信し（ステップＳ１０６）、ＴＣＰパケットを順次受信する（ステップＳ１０７）。
【００６３】
転送装置１００は、ＵＤＰヘッダを付加し、ＴＣＰパケットのカプセル化を行う（ステップＳ１０８）。転送装置１００は転送装置２００との間で、ＵＤＰパケット、再送パケットのデータ転送、受信状況確認、受信状況返信を繰り返し実行する（ステップＳ１０９）。ステップＳ１０９において、転送装置１００は、ＴＣＰクライアント６０とＴＣＰサーバ７０との組みに割り当てる帯域を算出し、算出した帯域内で、データ転送を実行するものとする。
【００６４】
転送装置２００は、ヘッダ情報を解析し、ＴＣＰパケットをＴＣＰサーバ７０に順次送信し（ステップＳ１１０）、ＴＣＰサーバ７０はＴＣＰパケットを順次受信する（ステップＳ１１１）。ＴＣＰクライアント６０のＴＣＰパケット転送が完了した後に、ＴＣＰクライアント６０と転送装置１００との間でセッションを切断する（ステップＳ１１２）。
【００６５】
転送装置１００は、宛先ＩＤを転送装置２００に送信し（ステップＳ１１３）、転送装置２００は、宛先ＩＰを受信する（ステップＳ１１４）。ステップＳ１１３、Ｓ１１４において、宛先ＩＰは、ＴＣＰクライアント６０がデータ通信を終了するＴＣＰサーバ７０のＩＰアドレスに対応する。転送装置２００とＴＣＰサーバ７０との間でセッションを切断する（ステップＳ１１５）。
【００６６】
次に、転送装置１００がデータ転送を行う処理手順について説明する。図１０は、本実施例に係るデータ転送の処理手順を示すフローチャートである。例えば、図１０に示す処理は、転送装置１００が、ＴＣＰクライアント６０からＴＣＰパケットの受信を開始したことを契機として実行される。
【００６７】
図１０に示すように、転送装置１００は、単位時間内において、ＴＣＰパケットを受信した場合には、データパケットサイズＴ（Ｘ）に受信したＴＣＰパケットのデータサイズを加算する。また、転送装置１００は、単位時間内において、再送要求を受信した場合には、データサイズＲ（Ｘ）に、再送パケットのデータサイズを加算する（ステップＳ２０１）。
【００６８】
転送装置１００は、データ転送処理を実行し（ステップＳ２０２）、処理を継続する場合には（ステップＳ２０３，Ｙｅｓ）、再度ステップＳ２０１に移行する。一方、転送装置１００は、処理を継続しない場合には（ステップＳ２０３，Ｎｏ）、処理を終了する。すなわち、転送装置１００は、処理を継続している間は、所定の単位時間毎に、ステップＳ２０１、２０２の処理を繰り返し実行する。
【００６９】
次に、図１０のステップＳ２０２に示したデータ転送処理について説明する。図１１は、データ転送処理の処理手順を示すフローチャートである。図１１に示すように、転送装置１００は、TotalSizeを算出する（ステップＳ３０１）。ステップＳ３０１において、転送装置１００は、式（１）を基にしてTotalSizeを算出する。
【００７０】
転送装置１００は、最大帯域がTotalSizeよりも大きいか否かを判定する（ステップＳ３０２）。転送装置１００は、最大帯域がTotalSizeよりも大きい場合には（ステップＳ３０２，Ｙｅｓ）、全データを送信する（ステップＳ３０３）。
【００７１】
転送装置１００は、最大帯域がTotalSizeよりも大きくない場合には（ステップＳ３０２，Ｎｏ）、Bnowを算出する（ステップＳ３０４）。ステップＳ３０４において、転送装置１００は、式（２）を基にして、Bnowを算出する。
【００７２】
転送装置１００は、ＴＣＰクライアント６０、ＴＣＰサーバ７０の組み毎のTotal（Ｘ）を算出する（ステップＳ３０５）。ステップＳ３０５において、転送装置１００は、式（３）を基にして、Total（Ｘ）を算出する。
【００７３】
転送装置１００は、Total（Ｘ）を基にして、再送パケットを優先させ、ＵＤＰパケットおよび再送パケットのデータ転送を実行する（ステップＳ３０６）。
【００７４】
次に、本実施例に係る転送装置１００の効果について説明する。転送装置１００は、複数のアプリケーションの組みが共通して利用する通信回線の最大通信帯域の範囲内で、複数の組み毎に最低帯域以上の通信帯域をそれぞれ割り当て、ＵＤＰデータの転送および再送制御を実行する。このため、転送装置１００によれば、再送パケットを再送するだけの通信帯域を確保でき、例えば、データ通信量の少ないアプリケーションの組みでもデータの再送が滞ることを防止することができる。
【００７５】
また、転送装置１００によれば、複数のアプリケーションの組みにそれぞれ割り当てる通信帯域を、最低限の通信帯域と、アプリケーションの組で送受信されるデータ通信量に応じた通信帯域とを加算することで算出する。このため、転送装置１００によれば、複数のアプリケーションに公平に通信帯域を割り当てることができる。例えば、高帯域を使用するアプリの利用中に、他の低帯域のアプリがデータ通信を実行不能になることを未然に防止することができる。また、利用可能な通信帯域をフル活用することができる。
【００７６】
また、転送装置１００は、再送パケットを優先してデータ転送し、アプリケーションの組みに割り当てられた通信帯域から再送パケットで利用する通信帯域を減算した通信帯域の範囲内で、残りのＵＤＰデータのデータ転送を実行する。このため、再送パケットを早めに転送でき、転送装置２００側で不足するパケットを優先的に補うことができる。
【００７７】
また、転送装置２００は、受信したＵＤＰパケットのＩＤと、受信状況を基にして、ツリー状のパケット受信情報を生成する。そして、転送装置２００は、パケット受信情報を基にして、再送要求を転送装置１００に送信する。このため、未受信のＵＤＰパケットのＩＤを開始ＩＤから終了ＩＤまで順に確認すること無く、未受信のＵＤＰパケットのＩＤを特定することができる。例えば、未受信のＵＤＰパケットのＩＤを特定する計算量が（ｌｏｇＮ）となる。これにより、ＡＣＫ要求に時間がかかることによってパケットキューがフルになりパケットロスが増大する現象を抑止することができる。
【００７８】
ところで、転送装置１００、２００の構成は、図２に示すものに限定されない。例えば、転送装置１００は、転送装置２００の受信制御部２０６の機能を有していても良い。また、転送装置２００は、転送装置１００の送信制御部１０６の機能を有していても良い。そして、転送装置２００が、ＴＣＰクライアント６０からＴＣＰパケットを受信して、転送装置１００にデータ送信を実行し、転送装置１００がＴＣＰサーバ７０にＴＣＰパケットを送信しても良い。
【００７９】
次に、各実施例に示した転送装置１００、２００と同様の機能を実現する転送プログラムを実行するコンピュータの一例を説明する。図１２は、転送プログラムを実行するコンピュータの一例を示す図である。
【００８０】
図１２に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、ユーザからのデータの入力を受け付ける入力装置３０２と、ディスプレイ３０３を有する。また、コンピュータ３００は、記憶媒体からプログラム等を読取る読み取り装置３０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置３０５とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０６と、ハードディスク装置３０７を有する。そして、各装置３０１〜３０７は、バス３０８に接続される。
【００８１】
ハードディスク装置３０７は、例えば、送信制御プログラム３０７ａ、受信制御プログラム３０７ｂを有する。ＣＰＵ３０１は、各プログラム３０７ａ、３０７ｂを読み出して、ＲＡＭ３０６に展開する。
【００８２】
送信制御プログラム３０７ａは、送信制御プロセス３０６ａとして機能する。受信制御プログラム３０７ｂは、受信制御プロセス３０６ｂとして機能する。
【００８３】
例えば、送信制御プロセス３０６ａは、送信制御部１０６に対応する。受信制御プロセス３０６ｂは、受信制御部２０６に対応する。
【００８４】
なお、各プログラム３０７ａ、３０７ｂについては、必ずしも最初からハードディスク装置３０７に記憶させておかなくてもよい。例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ３００がこれらから各プログラム３０７ａ、３０７ｂを読み出して実行するようにしてもよい。
【００８５】
なお、本実施例における処理では送信をＵＤＰ通信により行うものしているが、通信方式はこれに限定されない。例えば、コネクションレス型通信プロトコルとしても良い。コネクションレス型通信とは、データ通信において、通信相手の状況を確認せずデータを一方的に送りつける通信方式、または、互いにそのようにデータを送りあう方式である。
【００８６】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８７】
（付記１）データの送信元と送信先との複数の組みが共通して利用する通信回線の最大通信帯域の範囲内で、前記複数の組み毎に最低限の通信帯域をそれぞれ割り当てる帯域割当部と、
前記帯域割当部によって割り当てられた各組の通信帯域内において、前記送信元から受信するデータとは異なるプロトコルで送受信される変換データに前記データを変換し、前記変換データを前記送信先に転送し、前記変換データの再送要求に応答して、再送データを再送する転送制御部と
を有することを特徴とする転送装置。
【００８８】
（付記２）前記帯域割当部は、前記送信元と前記送信先との複数の組みにそれぞれ割り当てる通信帯域を、最低限の通信帯域と、前記送信元と前記送信先との組で送受信されるデータ通信量に応じた通信帯域とを加算することで算出し、算出した通信帯域を各組みに割り当てることを特徴とする付記１に記載の転送装置。
【００８９】
（付記３）前記転送制御部は、前記再送データを優先してデータ転送し、前記送信元と送信先との組みに割り当てられた通信帯域から前記再送データで利用する通信帯域を減算した通信帯域の範囲内で、残りの変換データのデータ転送を実行することを特徴とする付記１または２に記載の転送装置。
【００９０】
（付記４）他の転送装置から変換データを順次受信し、受信した変換データを一意に識別する識別情報を木構造データによって記録する受信部と、前記木構造データをもとにして、再送要求を行う変換データを特定する再送要求部とを更に有することを特徴とする付記１、２または３に記載の転送装置。
【００９１】
（付記５）コンピュータが実行する転送方法であって、
データの送信元と送信先との複数の組みが共通して利用する通信回線の最大通信帯域の範囲内で、前記複数の組み毎に最低帯域以上の通信帯域をそれぞれ割り当て、
割り当てた各組みの通信帯域内において、前記送信元から受信するデータとは異なるプロトコルで送受信される変換データに前記データを変換し、前記変換データを前記送信先に転送し、前記変換データの再送要求に応答して、再送データを再送する
各処理を実行する転送方法。
【００９２】
（付記６）前記通信帯域をそれぞれ割り当てる処理は、前記送信元と前記送信先との複数の組みにそれぞれ割り当てる通信帯域を、最低限の通信帯域と、前記送信元と前記送信先との組で送受信されるデータ通信量に応じた通信帯域とを加算することで算出し、算出した通信帯域を各組みに割り当てることを特徴とする付記５に記載の転送方法。
【００９３】
（付記７）前記変換データの転送および再送データを再送する処理は、前記再送データを優先してデータ転送し、前記送信元と送信先との組みに割り当てられた通信帯域から前記再送データで利用する通信帯域を減算した通信帯域の範囲内で、残りの変換データのデータ転送を実行することを特徴とする付記５または６に記載の転送方法。
【００９４】
（付記８）他の転送装置から変換データを順次受信し、受信した変換データを一意に識別する識別情報を木構造データによって記録し、木構造データをもとにして、再送要求を行う変換データを特定する各処理を更に実行する付記５、６または７に記載の転送方法。
【００９５】
（付記９）コンピュータに、
データの送信元と送信先との複数の組みが共通して利用する通信回線の最大通信帯域の範囲内で、前記複数の組み毎に最低帯域以上の通信帯域をそれぞれ割り当て、
割り当てた各組みの通信帯域内において、前記送信元から受信するデータとは異なるプロトコルで送受信される変換データに前記データを変換し、前記変換データを前記送信先に転送し、前記変換データの再送要求に応答して、再送データを再送する
各処理を実行させることを特徴とする転送プログラム。
【００９６】
（付記１０）前記通信帯域をそれぞれ割り当てる処理は、前記送信元と前記送信先との複数の組みにそれぞれ割り当てる通信帯域を、最低限の通信帯域と、前記送信元と前記送信先との組で送受信されるデータ通信量に応じた通信帯域とを加算することで算出し、算出した通信帯域を各組みに割り当てることを特徴とする付記９に記載の転送プログラム。
【００９７】
（付記１１）前記変換データの転送および再送データを再送する処理は、前記再送データを優先してデータ転送し、前記送信元と送信先との組みに割り当てられた通信帯域から前記再送データで利用する通信帯域を減算した通信帯域の範囲内で、残りの変換データのデータ転送を実行することを特徴とする付記９または１０に記載の転送プログラム。
【００９８】
（付記１２）他の転送装置から変換データを順次受信し、受信した変換データを一意に識別する識別情報を木構造データによって記録し、木構造データをもとにして、再送要求を行う変換データを特定する各処理を更にコンピュータに実行させることを特徴とする付記９、１０または１１に記載の転送プログラム。
【符号の説明】
【００９９】
５０    ネットワーク
６０ａ、６０ｂ、６０ｃ  ＴＣＰクライアント
７０ａ、７０ｂ、７０ｃ  ＴＣＰサーバ
１００、２００    転送装置
【図１】
2014049905.tif 000007
【図２】
2014049905.tif 000008
【図３】
2014049905.tif 000009
【図４】
2014049905.tif 000010
【図５】
2014049905.tif 000011
【図６】
2014049905.tif 000012
【図７】
2014049905.tif 000013
【図８】
2014049905.tif 000014
【図９】
2014049905.tif 000015
【図１０】
2014049905.tif 000016
【図１１】
2014049905.tif 000017
【図１２】
2014049905.tif 000018
【図１３】
2014049905.tif 000019
【図１４】
2014049905.tif 000020