(57)【要約】【課題】ＡＣＫ経路の帯域の影響を抑え、データ送信経路におけるデータ送信のスループットを向上する。【解決手段】サーバ１の受信部１ａは、送信サーバ２からデータを受信する。判断部１ｂは、受信部１ａによって受信されたデータに含まれるシーケンス番号に基づいて、データの再送が行われたか否かを判断する。測定部１ｃは、受信部１ａによって受信されたデータの受信レートを測定する。返信部１ｄは、判断部１ｂによってデータの再送が行われたと判断された場合、測定部１ｃによって測定される受信レートが飽和するまで、データの受信に応じて行う送信サーバ２へのＡＣＫの返信を、複数のデータを受信してから行い、ＡＣＫの返信を徐々に減少させる。【選択図】図１
2010258631.tif 000002
【特許請求の範囲】
【請求項１】
データ通信を行うサーバにおいて、
送信サーバからデータを受信する受信部と、
前記受信部によって受信された前記データの再送が行われたか否かを判断する判断部と、
前記受信部によって受信された前記データの受信レートを測定する測定部と、
前記判断部によって前記データの再送が行われたと判断された場合、前記測定部によって測定される前記受信レートが飽和するまで、前記データの受信に応じて行う前記送信サーバへのＡＣＫの返信を複数の前記データを受信してから行い前記ＡＣＫの返信を徐々に減少させる返信部と、
を有することを特徴とするサーバ。
【請求項２】
前記データのヘッダに含まれる前記送信サーバが前記データを送信してから前記ＡＣＫが返ってくるまでの時間を計測するためのタイムスタンプ値を減算するためのタイムスタンプ減算値を算出する算出部と、をさらに有し、
前記返信部は、前記算出部によって算出された前記タイムスタンプ減算値を減算した前記タイムスタンプ値を前記ＡＣＫに含めて前記送信サーバに返信することを特徴とする請求項１記載のサーバ。
【請求項３】
前記送信サーバの前記データを再送する再送タイマ値を推定する推定部と、をさらに有し、
前記算出部は、前記推定部によって推定された前記再送タイマ値と前記送信サーバへ返信される前記ＡＣＫの送信間隔とに基づいて前記タイムスタンプ減算値を算出することを特徴とする請求項２記載のサーバ。
【請求項４】
前記送信サーバに返信する前記ＡＣＫの送信レートと前記ＡＣＫの平均データサイズとを測定するＡＣＫ測定部と、をさらに有し、
前記算出部は、前記判断部によって前記送信サーバの前記データの再送が行われたと判断されたときの前記ＡＣＫ測定部によって測定された前記ＡＣＫの前記送信レートと前記平均データサイズとに基づいて前記ＡＣＫの送信間隔を算出することを特徴とする請求項３記載のサーバ。
【請求項５】
データ通信を行うサーバにおいて、
送信サーバからデータを受信する受信部と、
前記受信部によって受信された前記データのヘッダに含まれる前記送信サーバが前記データを送信してからＡＣＫが返ってくるまでの時間を計測するためのタイムスタンプ値を減算するためのタイムスタンプ減算値を算出する算出部と、
前記算出部によって算出された前記タイムスタンプ減算値を減算した前記タイムスタンプ値を前記ＡＣＫに含めて前記送信サーバに返信する返信部と、
を有することを特徴とするサーバ。
【請求項６】
データ通信を行うサーバのＡＣＫ返信方法において、
送信サーバからデータを受信し、
受信された前記データの再送が行われたか否かを判断し、
受信された前記データの受信レートを測定し、
前記データの再送が行われたと判断された場合、前記受信レートが飽和するまで、前記データの受信に応じて行う前記送信サーバへのＡＣＫの返信を複数の前記データを受信してから行い前記ＡＣＫの返信を徐々に減少させる、
ことを特徴とするＡＣＫ返信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件はデータ通信を行うサーバおよびそのサーバのＡＣＫ返信方法に関する。
【背景技術】
【０００２】
ＴＣＰ（Transmission Control Protocol）のデータ通信において、データ送信経路とデータ受信確認の応答情報（ＡＣＫ：ACKnowledgment）経路とが異なる場合がある。例えば、データ送信を衛星回線で行い、ＡＣＫの応答を地上回線で行う場合、データ送信経路とＡＣＫ経路とが異なる。また、ＡＤＳＬ（Asymmetric Digital Subscriber Line）などのネットワークでも、データ送信経路とＡＣＫ経路とが異なる。
【０００３】
なお、従来、広帯域、高遅延無線ネットワークにおけるＴＣＰ通信の問題を解決し、高速なＴＣＰ通信を可能にするＴＣＰ輻輳制御方式が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１７３９６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ＡＣＫ経路とデータ送信経路とが異なり、ＡＣＫ経路の帯域がデータ送信経路の帯域より小さい場合、データ送信経路の帯域が最大に達する前にＡＣＫ経路の帯域が最大に達する場合がある。この場合、ＡＣＫは、ＡＣＫ経路にて輻輳し、データを送信する側の送信サーバは、ＡＣＫを適切に受信できない場合が生じる。その結果、送信サーバは、送信したデータの受信確認ができないためにデータ再送を行い、データ経路の帯域に余裕があってもデータ送信のスループットを向上することができないという問題点があった。
【０００６】
本件はこのような点に鑑みてなされたものであり、ＡＣＫ経路の帯域の影響を抑え、データ送信経路におけるデータ送信のスループットを向上することができるサーバおよびＡＣＫ返信方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、データ通信を行うサーバが提供される。このサーバは、送信サーバからデータを受信する受信部と、前記受信部によって受信された前記データの再送が行われたか否かを判断する判断部と、前記受信部によって受信された前記データの受信レートを測定する測定部と、前記判断部によって前記データの再送が行われたと判断された場合、前記測定部によって測定される前記受信レートが飽和するまで、前記データの受信に応じて行う前記送信サーバへのＡＣＫの返信を複数の前記データを受信してから行い前記ＡＣＫの返信を徐々に減少させる返信部と、を有する。
【０００８】
また、上記課題を解決するために、データ通信を行うサーバが提供される。このサーバは、送信サーバからデータを受信する受信部と、前記受信部によって受信された前記データのヘッダに含まれる前記送信サーバが前記データを送信してからＡＣＫが返ってくるまでの時間を計測するためのタイムスタンプ値を減算するためのタイムスタンプ減算値を算出する算出部と、前記算出部によって算出された前記タイムスタンプ減算値を減算した前記タイムスタンプ値を前記ＡＣＫに含めて前記送信サーバに返信する返信部と、を有する。
【発明の効果】
【０００９】
上記サーバによれば、ＡＣＫ経路の帯域の影響を抑え、データ送信経路におけるデータ送信のスループットを向上することができる。
【図面の簡単な説明】
【００１０】
【図１】サーバを示した図である。
【図２】サーバを適用したネットワーク構成例を示した図である。
【図３】データを受信するサーバのハードウェアブロック図である。
【図４】データを受信するサーバの機能ブロック図である。
【図５】受信データ記憶部のデータ構成例を示した図である。
【図６】ＡＣＫ経路最大帯域記憶部のデータ構成例を示した図である。
【図７】再送タイマ推定値記憶部のデータ構成例を示した図である。
【図８】データを受信するサーバの動作を示したフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、サーバを示した図である。図１に示すように、サーバ１は、受信部１ａ、判断部１ｂ、測定部１ｃ、および返信部１ｄを有している。図１には、サーバ１にデータを送信する送信サーバ２も示している。送信サーバ２がサーバ１にデータを送信するデータ送信経路３ａと、サーバ１が送信サーバ２にＡＣＫを返信するＡＣＫ経路３ｂは異なり、ＡＣＫ経路３ｂの帯域は、データ送信経路３ａの帯域より小さいとする。
【００１２】
受信部１ａは、送信サーバ２からデータを受信する。
判断部１ｂは、受信部１ａによって受信されたデータの再送が行われたか否かを判断する。例えば、判断部１ｂは、受信部１ａによって同じシーケンス番号のデータが受信された場合、データの再送が行われたと判断する。
【００１３】
測定部１ｃは、受信部１ａによって受信されたデータの受信レートを測定する。すなわち、測定部１ｃは、送信サーバ２の送信するデータの送信レートを測定する。
返信部１ｄは、判断部１ｂによってデータの再送が行われたと判断された場合、測定部１ｃによって測定される受信レートが飽和するまで、データの受信に応じて行う送信サーバ２へのＡＣＫの返信を複数のデータを受信してから行い、ＡＣＫの返信を徐々に減少させる。
【００１４】
例えば、返信部１ｄは、判断部１ｂによって、送信サーバ２のデータの再送が発生したと判断されるまで、１つのデータを受信して、１つのＡＣＫを送信サーバ２に返す。返信部１ｄは、判断部１ｂによって送信サーバ２のデータの再送が発生したと判断された場合は、送信サーバ２から２つのデータを受信して、１つのＡＣＫを送信サーバ２に返信する。次いで、返信部１ｄは、３つのデータを受信して、１つのＡＣＫを送信サーバ２に返信する。以下同様に、返信部１ｄは、送信サーバ２の送信するデータの送信レートが飽和するまで、データの受信数を増加させてＡＣＫを送信サーバ２に返信する。このように、返信部１ｄは、データの受信に応じて行う送信サーバ２へのＡＣＫの返信を、複数のデータを受信してから行って、ＡＣＫの返信を徐々に減少させる。
【００１５】
このように、返信部１ｄは、送信サーバ２のデータの再送が発生した後、送信サーバ２の送信レートが飽和するまで、データの受信数を増加させてＡＣＫを送信サーバ２に返信する。これにより、データを送信する送信サーバのデータ送信のスループットを向上することができる。
【００１６】
図２は、サーバを適用したネットワーク構成例を示した図である。図２には、サーバ１１，１２およびサーバ１１，１２を結ぶネットワーク１３が示してある。ネットワーク１３は、例えば、インターネットである。
【００１７】
サーバ１１，１２は、例えば、ＴＣＰのデータ通信を行う。サーバ１２は、データを送信する側であり、サーバ１１は、データを受信する側とする。サーバ１１は、サーバ１２からデータを受信すると、ＡＣＫをサーバ１２に返す。
【００１８】
サーバ１２がサーバ１１にデータを送信するデータ送信経路は、サーバ１１がサーバ１２にＡＣＫを返すＡＣＫ経路とは異なる。データ送信経路は、例えば、広帯域の衛星回線であり、ＡＣＫ経路は、衛星回線よりも帯域の狭い狭帯域の地上回線である。このようなネットワーク構成例は、例えば、地上回線のインフラが整っていない遠隔地域へデータ送信する場合などに適用される。すなわち、広帯域の衛星回線を用いて大量のデータをサーバ１１に送信し、ＡＣＫを狭帯域の地上回線でサーバ１２に返信する場合などに適用される。
【００１９】
ＡＣＫ回線は、狭帯域のため、データ送信経路に帯域の余裕があっても、ＡＣＫの輻輳が発生する場合があり、データ送信経路のスループットを向上することができない場合がある。そこで、データを受信するサーバ１１は、次の３つのフェーズで動作し、サーバ１２の送信するデータのスループットの向上を図るようにする。
【００２０】
フェーズ１．データを送信するサーバ１２は、スロースタートアルゴリズムにより、送信データの送信レートを徐々に増加させていく。サーバ１１は、サーバ１２から送信レートの増加するデータを受信し、ＡＣＫをサーバ１２に送信する。ＡＣＫ経路は、狭帯域のため、サーバ１２の送信するデータの送信レートがある値まで増加すると、ＡＣＫの輻輳が生じる。ＡＣＫの輻輳によってＡＣＫが消失すると、サーバ１２は、ＡＣＫを適切に受信できなくなるため、データの再送処理を行う。サーバ１１は、サーバ１２からのデータ再送を検出して、ＡＣＫの輻輳の発生を認識し、ＡＣＫの輻輳が生じたときのＡＣＫ経路の帯域（ＡＣＫ経路最大帯域）を検出して記憶装置に記憶する。
【００２１】
フェーズ２．サーバ１１は、受信したデータに対するＡＣＫを遅延させる。例えば、サーバ１１は、最初、１セグメントのデータを受信して、ＡＣＫを返す。次いで、サーバ１１は、２セグメントのデータを受信して、ＡＣＫを返す。次いで、サーバ１１は、３セグメントのデータを受信して、ＡＣＫを返す。以下、サーバ１１は、サーバ１２の送信するデータの送信レートを監視し、送信レートが飽和するまで、ＡＣＫの遅延を行う。
【００２２】
なお、以下では、ＡＣＫを返すまでの、受信したデータ数をＡＣＫ限度数と呼ぶ。例えば、サーバ１１がｎ個の受信データを受信してＡＣＫを返した場合、ＡＣＫ限度数は、ｎとなる。
【００２３】
フェーズ３．サーバ１１がＡＣＫ限度数を増加すると、サーバ１２に送信されるＡＣＫの間隔が長くなる。そして、最終的に、ＡＣＫの送信間隔が、送信側のサーバ１２の再送タイマ値（ＲＴＯ：Retransmission Time Out）を超えると、サーバ１２は、データの再送を行い、これにより送信レートが飽和する。そこで、サーバ１１は、ＴＣＰヘッダのオプションのタイムスタンプから所定の値を減算することで、サーバ１２のデータ再送を抑制する。
【００２４】
例えば、サーバ１１は、サーバ１２が送信したデータのタイムスタンプ値‘ｘ’（ｘ：例えば、時刻を示すカウント値）から、タイムスタンプ減算値‘ｄ’を減算してＡＣＫをサーバ１２に返す。タイムスタンプ減算値は、フェーズ１で記憶装置に記憶したＡＣＫ経路最大帯域と、以下で説明するサーバ１２の再送タイマ推定値（サーバ１２のデータを再送する間隔時間）とを用いて算出され、正・負どちらの値もとり得る。
【００２５】
サーバ１２は、本来、ＡＣＫに含まれるタイムスタンプ‘ｘ’と、現在時刻とを比較して、送信データを送信してＡＣＫが返ってくるまでの往復時間を認識する。サーバ１２は、往復時間をもとにＲＴＯを設定する。そして、サーバ１２は、ＲＴＯを経過するまでサーバ１１からのＡＣＫを受信していないと、データが適切にサーバ１１に送信されていないと判断し、データの再送を行う。しかし、ＡＣＫに含まれるタイムスタンプ‘ｘ’に‘ｄ’が減算されているので、サーバ１２は、本来の往復時間より長い往復時間をもとにＲＴＯを設定する。これにより、データの再送が抑制され、スループットを向上できる。
【００２６】
サーバ１１は、上記のフェーズ１〜３の処理を繰り返す。これにより、サーバ１２は、データ送信経路の全帯域を使用してデータ送信することができるようになり、スループットを向上することができる。
【００２７】
図３は、データを受信するサーバのハードウェアブロック図である。図３に示すサーバ１１は、ＣＰＵ（Central Processing Unit）１１ａによって装置全体が制御されている。ＣＰＵ１１ａには、バス１１ｇを介してＲＡＭ（Random Access Memory）１１ｂ、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１１ｃ、グラフィック処理装置１１ｄ、入力インタフェース１１ｅ、および通信インタフェース１１ｆが接続されている。
【００２８】
ＲＡＭ１１ｂには、ＣＰＵ１１ａに実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１１ｂには、ＣＰＵ１１ａによる処理に必要な各種データが保存される。ＨＤＤ１１ｃには、ＯＳやサーバ１２の送信するデータのスループットを向上させるためのプログラムなどが格納される。
【００２９】
グラフィック処理装置１１ｄには、モニタ１１ｈが接続されている。グラフィック処理装置１１ｄは、ＣＰＵ１１ａからの命令に従って、画像をモニタ１１ｈの表示画面に表示させる。入力インタフェース１１ｅには、キーボード１１ｉおよびマウス１１ｊが接続されている。入力インタフェース１１ｅは、キーボード１１ｉやマウス１１ｊから送られてくる信号を、バス１１ｇを介してＣＰＵ１１ａに送信する。
【００３０】
記録媒体１１ｌは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの記録媒体である。読み取り装置１１ｋは、記録媒体１１ｌに記録されたデータを読み取り、バス１１ｇを介してＣＰＵ１１ａに送信する。記録媒体１１ｌには、サーバ１２の送信するデータのスループットを向上させるためのプログラムなどを格納することができ、読み取り装置１１ｋを介して、ＨＤＤ１１ｃに格納することもできる。
【００３１】
通信インタフェース１１ｆは、ネットワーク１３に接続され、サーバ１２と通信することができる。
図４は、データを受信するサーバの機能ブロック図である。図４に示すように、サーバ１１は、受信データ記憶部２１、ＡＣＫ経路最大帯域記憶部２２、再送タイマ推定値記憶部２３、再送判断部２４、データ受信レート測定部２５、ＡＣＫ測定部２６、対向ホスト再送タイマ推定部２７、タイムスタンプ算出部２８、タイムスタンプ変更部２９、ＡＣＫ限度数制御部３０、通信部３１、時間単位推定部３２、および遅延ＡＣＫ制御部３３を有している。図１で示した受信部１ａは、例えば、通信部３１に対応し、判断部１ｂは、再送判断部２４に対応し、測定部１ｃは、データ受信レート測定部２５に対応し、返信部１ｄは、ＡＣＫ限度数制御部３０、通信部３１、および遅延ＡＣＫ制御部３３に対応する。
【００３２】
まず、受信データ記憶部２１、ＡＣＫ経路最大帯域記憶部２２、および再送タイマ推定値記憶部２３について図を用いて説明する。
受信データ記憶部２１には、サーバ１１が受信したデータの情報が記憶される。
【００３３】
図５は、受信データ記憶部のデータ構成例を示した図である。図５に示すように、受信データ記憶部２１は、受信時刻、宛先ＩＰ（Internet Protocol）アドレス、送信元ＩＰアドレス、宛先ポート番号、送信元ポート番号、シーケンス番号、およびタイムスタンプの欄を有している。
【００３４】
受信時刻の欄には、データを受信した時刻が格納される。宛先ＩＰアドレスの欄には、受信したデータの宛先ＩＰアドレスが格納される。すなわち、サーバ１１のＩＰアドレスが格納される。送信元ＩＰアドレスの欄には、受信したデータを送信したサーバのＩＰアドレスが格納される。宛先ポート番号の欄には、受信したデータの宛先ポート番号が格納される。すなわち、サーバ１１のデータを受信したポート番号が格納される。送信元ポート番号の欄には、受信したデータを送信したサーバのポート番号が格納される。シーケンス番号の欄には、サーバ１１が受信したデータのＴＣＰのシーケンス番号が格納される。タイムスタンプの欄には、受信したデータのＴＣＰヘッダに含まれるタイムスタンプが格納される。
【００３５】
例えば、サーバ１１は、図５の受信データ記憶部２１を参照することによって、再送されたデータを認識することができる。例えば、サーバ１２が同じシーケンス番号のデータを送ってきた場合、サーバ１１は、サーバ１２がデータを再送してきたことを認識することができる。
【００３６】
ＡＣＫ経路最大帯域記憶部２２には、ＡＣＫ経路が輻輳したときのＡＣＫ経路の帯域に関する情報が記憶される。
図６は、ＡＣＫ経路最大帯域記憶部のデータ構成例を示した図である。図６に示すように、ＡＣＫ経路最大帯域記憶部２２は、ＡＣＫ経路最大帯域、平均ＡＣＫサイズ、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート番号、送信元ポート番号、および算出時刻の欄を有している。
【００３７】
ＡＣＫ経路最大帯域の欄には、ＡＣＫ経路に輻輳が生じたときのＡＣＫの送信レートが格納される。単位は、例えば、Ｍｂｉｔ／ｓである。平均ＡＣＫサイズの欄には、ＡＣＫ経路に輻輳が生じたときのＡＣＫ１個あたりの平均データサイズが格納される。単位は、例えば、ｂｙｔｅである。宛先ＩＰアドレスの欄には、受信したデータの宛先ＩＰアドレスが格納される。すなわち、サーバ１１のＩＰアドレスが格納される。送信元ＩＰアドレスの欄には、データを送信したサーバのＩＰアドレスが格納される。宛先ポート番号の欄には、受信したデータの宛先ポート番号が格納される。すなわち、サーバ１１のデータを受信したポート番号が格納される。送信元ポート番号の欄には、受信したデータを送信したサーバのポート番号が格納される。算出時刻の欄には、ＡＣＫが輻輳し、ＡＣＫ経路最大帯域が算出されたときの時刻が格納される。
【００３８】
例えば、サーバ１１は、図６のＡＣＫ経路最大帯域記憶部２２を参照することによって、２００８年１０月２９日１８時１５分５３．１２３秒に、ＡＣＫ経路が輻輳したことが分かる。また、そのときのＡＣＫの帯域（ＡＣＫ経路最大帯域）は、１．２３４Ｍｂｉｔ／ｓであることが分かる。ＡＣＫの輻輳原因となったデータを送信したサーバの送信元ＩＰアドレスは、１９２．１６８．１．９８であることが分かる。平均ＡＣＫサイズは、４０ｂｙｔｅであることが分かる。
【００３９】
再送タイマ推定値記憶部２３には、データを送信するサーバのデータを再送するタイマの推定値（再送タイマ推定値）が格納される。
図７は、再送タイマ推定値記憶部のデータ構成例を示した図である。図７に示すように、再送タイマ推定値記憶部２３は、再送タイマ推定値、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート番号、送信元ポート番号、および算出時刻の欄を有している。
【００４０】
再送タイマ推定値には、データを送信するサーバのデータを再送するタイマ（ＲＴＯ）の推定値が格納される。単位は、例えば、秒である。後で詳述するが、サーバ１１は、データを送信するサーバのデータを再送するタイマ値を推定し、再送タイマ推定値の欄に格納する。宛先ＩＰアドレスの欄には、受信したデータの宛先ＩＰアドレスが格納される。すなわち、サーバ１１のＩＰアドレスが格納される。送信元ＩＰアドレスの欄には、再送データのタイマ値を推定したサーバのＩＰアドレスが格納される。宛先ポート番号の欄には、受信したデータの宛先ポート番号が格納される。すなわち、サーバ１１のデータを受信したポート番号が格納される。送信元ポート番号の欄には、受信したデータを送信したサーバのポート番号が格納される。算出時刻の欄には、再送タイマ推定値を算出した時刻が格納される。
【００４１】
例えば、サーバ１１は、図７の再送タイマ推定値記憶部２３を参照することによって、データを送信する各サーバの再送タイマ推定値を認識することができる。
図４の説明に戻る。再送判断部２４は、受信データ記憶部２１に記憶されたシーケンス番号を参照して、再送データを検出する。例えば、再送判断部２４は、受信データ記憶部２１に記憶されたサーバ１２のＩＰアドレス（送信元ＩＰアドレス）において、同じシーケンス番号が記憶されている場合、サーバ１２がデータを再送していることを検出する。また、再送判断部２４は、再送データの再送レートを算出する。再送レートの単位は、例えば、％（１００×再送データ受信数（パケット）／受信データ数（パケット））である。
【００４２】
データ受信レート測定部２５は、受信するデータの受信レートと受信データの平均データサイズを測定する。
ＡＣＫ測定部２６は、データを送信したサーバに送信するＡＣＫの送信レートと、送信したＡＣＫの平均ＡＣＫサイズを測定する。ＡＣＫ測定部２６は、ＡＣＫが輻輳したときのＡＣＫの送信レートをＡＣＫ経路最大帯域としてＡＣＫ経路最大帯域記憶部２２に記憶する。また、ＡＣＫ測定部２６は、そのときの平均ＡＣＫサイズもＡＣＫ経路最大帯域記憶部２２に記憶する。
【００４３】
対向ホスト再送タイマ推定部２７は、受信データ記憶部２１を参照し、再送データの受信時刻から、前回送信されたデータの時刻を減算することにより、データを送信するサーバの再送タイマ値（ＲＴＯ）を推定する。例えば、対向ホスト再送タイマ推定部２７は、受信データ記憶部２１の同じシーケンス番号に基づき、再送データを認識する。対向ホスト再送タイマ推定部２７は、認識した再送データの受信時刻から、前回送信された同じシーケンス番号のデータの受信時刻を減算し、データを送信するサーバの再送タイマ値を推定する。対向ホスト再送タイマ推定部２７は、推定したタイマ値の情報を再送タイマ推定値記憶部２３に記憶する。
【００４４】
タイムスタンプ算出部２８は、ＡＣＫ経路最大帯域記憶部２２に記憶されたＡＣＫ経路最大帯域と、平均ＡＣＫサイズと、再送タイマ推定値記憶部２３に記憶された再送タイマ推定値とに基づいて、ＡＣＫのタイムスタンプ値を変更するためのタイムスタンプ減算値を算出する。タイムスタンプ算出部２８は、以下の式（１）に基づいて、タイムスタンプ減算値‘ｄ’を算出する。
【００４５】
ｄ＝１／２｛（ＬA／ＳA）−ＲＴＯ｝  …（１）
ｄは、タイムスタンプ減算値である。ＳAは、ＡＣＫ経路最大帯域である。ＬAは、ＡＣＫが輻輳したときの平均ＡＣＫサイズである。ＲＴＯは、再送タイマ値（推定値）である。ＬA，ＳAは、ＡＣＫ経路最大帯域記憶部２２から取得でき、ＲＴＯは、再送タイマ推定値記憶部２３から取得できる。
【００４６】
式（１）は、以下の式（２）〜（５）から導出することができる。まず、ＲＴＯは、次の式（２）の関係を有する。
ＲＴＯ＝２ＲＴＴ  …（２）
ＲＴＴ（Round trip time）は、データを送信してからＡＣＫが返ってくるまでの往復時間を示す。
【００４７】
ＲＴＴは、タイムスタンプ減算値‘ｄ’により、ＲＴＴ’に変わる。従って、次の式（３）が成り立つ。
ＲＴＯ’＝２ＲＴＴ’  …（３）
また、次の式（４）が成り立つ。
【００４８】
ＲＴＴ’＝ＲＴＴ＋ｄ  …（４）
データを再送しないように、ＲＴＯ’に期待される値は、ＡＣＫの送信間隔（ＬA／ＳA）以上となる値である。従って、以下の式（５）が成り立つ。
【００４９】
ＲＴＯ’≦ＬA／ＳA  …（５）
式（４）に式（２）、式（３）を代入すると、式（６）が得られる。
（１／２）・ＲＴＯ’＝（１／２）・ＲＴＯ＋ｄ  …（６）
式（６）に式（５）を代入すると（不等号を等号にした式（５）に代入すると）、式（１）が得られる。
【００５０】
タイムスタンプ変更部２９は、ＡＣＫに含まれるタイムスタンプから、タイムスタンプ変更部２９によって算出されたタイムスタンプ減算値を減算するように通信部３１を制御する。
【００５１】
ＡＣＫ限度数制御部３０は、データ受信レート測定部２５の測定する受信レートを監視しながら、ＡＣＫ限度数を‘１’ずつ増加させる。ＡＣＫ限度数制御部３０は、データ受信レート測定部２５の測定する受信レートが飽和すると、ＡＣＫ限度数の増加を停止する。
【００５２】
通信部３１は、他のサーバとデータ通信を行う。例えば、通信部３１は、サーバ１２から送信されるデータを受信し、ＡＣＫをサーバ１２に返す。通信部３１は、タイムスタンプ減算値を減算したタイムスタンプをＡＣＫに含める。通信部３１は、受信したデータの情報を受信データ記憶部２１に記憶する。
【００５３】
時間単位推定部３２は、データを送信するサーバのタイムスタンプの時間単位を推定する。タイムスタンプの時間単位は、データを送信するサーバによって異なるからである。
例えば、タイムスタンプは、カウント値で示され、時間単位推定部３２は、その１カウントあたりの時間を推定する。時間単位推定部３２は、受信データ記憶部２１を参照して、２以上の受信データについての受信時刻の差と、タイムスタンプの差を比較し、タイムスタンプの単位時間を推定する。
【００５４】
遅延ＡＣＫ制御部３３は、ＡＣＫ限度数制御部３０から出力されるＡＣＫ限度数でＡＣＫを返すように通信部３１を制御する。例えば、ＡＣＫ限度数制御部３０から出力されるＡＣＫ限度数が‘ｎ’であるとする。この場合、遅延ＡＣＫ制御部３３は、受信データを‘ｎ’個受信して、１個のＡＣＫをサーバに返すように通信部３１を制御する。
【００５５】
図４の動作について説明する。サーバ１２は、スロースタートアルゴリズムにより、送信データの送信レートを増加させていく。通信部３１は、サーバ１２から１つのデータを受信し、１つのＡＣＫをサーバ１２に返す。
【００５６】
サーバ１２から受信したデータの情報は、受信データ記憶部２１に記憶される。ＡＣＫ測定部２６は、サーバ１２に返すＡＣＫの送信レートと、送信したＡＣＫの平均ＡＣＫサイズを測定する。
【００５７】
ＡＣＫ経路は、狭帯域のため、サーバ１２の送信するデータの送信レートがある値まで増加すると、ＡＣＫの輻輳が生じる。ＡＣＫの輻輳が生じると、例えば、ＡＣＫが消失し、サーバ１２は、ＡＣＫを適切に受信できなくなる。このため、サーバ１２は、データの再送処理を行う。
【００５８】
再送判断部２４は、受信データ記憶部２１に記憶されるシーケンス番号に基づき、データの再送を検出する。例えば、再送判断部２４は、サーバ１２から同じシーケンス番号のデータを受信した場合、サーバ１２は、データの再送処理を行っていると検出する。
【００５９】
ＡＣＫ測定部２６は、再送判断部２４によって、データの再送が検出されると、そのときに測定していたＡＣＫの送信レートと、平均ＡＣＫサイズとをＡＣＫ経路最大帯域記憶部２２に記憶する。すなわち、ＡＣＫ測定部２６は、ＡＣＫが輻輳したときのＡＣＫの送信レートをＡＣＫ経路最大帯域としてＡＣＫ経路最大帯域記憶部２２に記憶する。また、ＡＣＫ測定部２６は、そのときの平均ＡＣＫサイズをＡＣＫ経路最大帯域記憶部２２に記憶する。
【００６０】
対向ホスト再送タイマ推定部２７は、受信データ記憶部２１を参照し、送信側のサーバ１２の再送タイマ値を推定する。例えば、対向ホスト再送タイマ推定部２７は、受信データ記憶部２１を参照し、再送データの受信時刻から、前回送信された同じシーケンス番号のデータの時刻を減算することにより、サーバ１２の再送タイマ値を推定する。対向ホスト再送タイマ推定部２７は、推定した再送タイマ値を再送タイマ推定値記憶部２３に記憶する。
【００６１】
ＡＣＫ限度数制御部３０は、再送判断部２４によって、データの再送が検出されると、データ受信レート測定部２５の測定する受信レートを監視しながら、ＡＣＫ限度数を‘１’から増加させる。遅延ＡＣＫ制御部３３は、ＡＣＫ限度数制御部３０から出力されるＡＣＫ限度数でＡＣＫを返すように通信部３１を制御する。
【００６２】
ＡＣＫ限度数制御部３０がＡＣＫ限度数を増加すると、サーバ１２に送信されるＡＣＫの間隔が長くなる。そして、最終的に、ＡＣＫの送信間隔が、送信側のサーバ１２の再送タイマ値を超えると、サーバ１２は、データの再送を行う。これにより、ＡＣＫ経路の帯域は減少するが、データ受信レート測定部２５の測定する受信レートは、飽和する。
【００６３】
ＡＣＫ限度数制御部３０は、データ受信レート測定部２５の測定する受信レートが飽和すると、ＡＣＫ限度数の増加を停止する。すなわち、ＡＣＫ限度数制御部３０と遅延ＡＣＫ制御部３３は、サーバ１２の送信レートが飽和するまで、ＡＣＫの遅延処理を行う。
【００６４】
タイムスタンプ算出部２８は、ＡＣＫ経路最大帯域記憶部２２に記憶されたＡＣＫ経路最大帯域と、平均ＡＣＫサイズと、再送タイマ推定値記憶部２３に記憶された再送タイマ推定値とに基づいて、ＡＣＫのタイムスタンプ値を変更するためのタイムスタンプ減算値を算出する。タイムスタンプ算出部２８は、式（１）に基づいて、タイムスタンプ減算値を算出する。タイムスタンプ変更部２９は、ＡＣＫに含まれるタイムスタンプから、タイムスタンプ算出部２８によって算出されたタイムスタンプ減算値を減算するように通信部３１を制御する。これにより、サーバ１２のデータの再送が抑制される。
【００６５】
サーバ１１は、上記の動作を繰り返す。すなわち、ＡＣＫ経路が輻輳すると、ＡＣＫ経路の輻輳を低減するために、ＡＣＫ限度数を増加させる。そして、ＡＣＫ限度数の増加によって、データ送信経路の帯域が飽和すると、ＴＣＰのタイムスタンプ値からタイムスタンプ減算値を減算して、データ送信経路の飽和を解消する。そして、さらに、送信データの帯域を上げ、ＡＣＫ経路が輻輳すると、ＡＣＫ経路の輻輳を低減するために、ＡＣＫ限度数を増加させる。以下、データ送信経路の帯域とＡＣＫ経路の帯域とが限度になるまで上記動作を繰り返す。これにより、サーバ１２は、ＡＣＫ経路が狭帯域でも、データ送信経路の帯域をフルに使用してデータ送信することができ、スループットを向上することができる。
【００６６】
図８は、データを受信するサーバの動作を示したフローチャートである。サーバ１１は、以下のステップの処理を繰り返す。
［ステップＳ１］通信部３１は、送信側のサーバ１２とＴＣＰ接続を確立し、ＴＣＰのデータ受信を開始する。なお、サーバ１２は、スロースタートアルゴリズムにより、送信データの送信レートを増加させていく。通信部３１は、サーバ１２からのデータを受信し、ＡＣＫをサーバ１２に返す。通信部３１は、１つのデータを受信して、１つのＡＣＫをサーバ１２に返す。通信部３１は、受信したデータの情報を受信データ記憶部２１に記憶する。
【００６７】
［ステップＳ２］再送判断部２４は、受信データ記憶部２１に記憶されるシーケンス番号に基づき、データが再送されたか否か判断する。再送判断部２４は、データが再送されたと判断した場合、ステップＳ３へ進む。
【００６８】
［ステップＳ３］ＡＣＫ測定部２６は、再送判断部２４によって、データの再送が判断されると、そのときに測定していたＡＣＫの送信レートと、平均ＡＣＫサイズとをＡＣＫ経路最大帯域記憶部２２に記憶する。すなわち、ＡＣＫ測定部２６は、ＡＣＫが輻輳したときのＡＣＫの送信レートをＡＣＫ経路最大帯域としてＡＣＫ経路最大帯域記憶部２２に記憶する。また、ＡＣＫ測定部２６は、ＡＣＫが輻輳したときの平均ＡＣＫサイズをＡＣＫ経路最大帯域記憶部２２に記憶する。
【００６９】
［ステップＳ４］対向ホスト再送タイマ推定部２７は、受信データ記憶部２１を参照し、データ送信側のサーバ１２の再送タイマ値を推定する。対向ホスト再送タイマ推定部２７は、推定した再送タイマ値を再送タイマ推定値記憶部２３に記憶する。
【００７０】
［ステップＳ５］ＡＣＫ限度数制御部３０は、ＡＣＫ限度数を‘１’から増加させる。遅延ＡＣＫ制御部３３は、ＡＣＫ限度数制御部３０から出力されるＡＣＫ限度数でＡＣＫを返すように通信部３１を制御する。
【００７１】
［ステップＳ６］ＡＣＫ限度数制御部３０は、データ受信レート測定部２５の測定する受信レートを監視しながら、ＡＣＫ限度数を‘１’から増加させる。ＡＣＫ限度数制御部３０は、データ受信レート測定部２５の測定する受信レートが飽和した場合、ステップＳ７へ進む。ＡＣＫ限度数制御部３０は、データ受信レート測定部２５の測定する受信レートが飽和しない場合、ステップＳ５へ進む。
【００７２】
［ステップＳ７］ＡＣＫ限度数制御部３０は、ＡＣＫ限度数の増加を停止する。
［ステップＳ８］タイムスタンプ算出部２８は、ＡＣＫ経路最大帯域記憶部２２に記憶されたＡＣＫ経路最大帯域と、平均ＡＣＫサイズと、再送タイマ推定値記憶部２３に記憶された再送タイマ推定値とに基づいて、ＡＣＫのタイムスタンプ値を変更するためのタイムスタンプ減算値を算出する。タイムスタンプ変更部２９は、ＡＣＫに含まれるタイムスタンプ値から、タイムスタンプ算出部２８によって算出されたタイムスタンプ減算値を減算するように通信部３１を制御する。
【００７３】
［ステップＳ９］通信部３１は、送信側のサーバ１２とのＴＣＰ接続が切断されたか否か判断する。通信部３１は、ＴＣＰ接続が切断された場合、処理を終了する。通信部３１は、ＴＣＰ接続が切断されていない場合、ステップＳ２へ進む。
【００７４】
このように、サーバ１１は、データの再送が発生した後、受信レートが飽和するまでＡＣＫ限度数を増加させる。そして、サーバ１１は、受信レートが飽和すると、ＡＣＫ限度数の増加を停止し、タイムスタンプを書き換えてＡＣＫをサーバ１２に送信する。これにより、データの送信側であるサーバ１２は、データ送信経路の全帯域を使用してデータ送信することができるようになり、スループットを向上することができる。
【００７５】
なお、上記では、ＡＣＫ限度数の増加処理とタイムスタンプの変更処理の両方を行っているが、一方の処理のみを行ってもよい。例えば、サーバ１１は、データの再送が発生すると、ＡＣＫ限度数を増加させ、受信レートが飽和すると、ＡＣＫ限度数の増加を停止するようにしてもよい。また、サーバ１１は、データの再送が発生すると、タイムスタンプの変更処理を行うようにしてもよい。これらの場合でも、スループットを向上することができる。
【符号の説明】
【００７６】
１  サーバ
１ａ  受信部
１ｂ  判断部
１ｃ  測定部
１ｄ  返信部
２  送信サーバ
３ａ  データ送信経路
３ｂ  ＡＣＫ経路
【図１】
2010258631.tif 000003
【図２】
2010258631.tif 000004
【図３】
2010258631.tif 000005
【図４】
2010258631.tif 000006
【図５】
2010258631.tif 000007
【図６】
2010258631.tif 000008
【図７】
2010258631.tif 000009
【図８】
2010258631.tif 000010