(57)【要約】【課題】遅延ベースの輻輳制御手法において、輻輳ウィンドウサイズの不必要な減少を防止するパケット送信装置を提供する。【解決手段】パケット送信装置１は、パケットの往復遅延時間（ＲＴＴ）を計測するＲＴＴ計測手段１４１と、最小ＲＴＴを逐次更新する最小ＲＴＴ更新手段１７１と、ＲＴＴの変動量を平滑化した基準ＲＴＴ変動量を算出し逐次更新する変動量算出手段１６１と、ＲＴＴが最小ＲＴＴと基準ＲＴＴ変動量とを加算した時間長よりも長くなったときにＲＴＴが増加したと判定し、当該時間長以下のときにＲＴＴが増加していないと判定するＲＴＴ増加判定手段１７２と、ＲＴＴが増加したと判定された場合に、輻輳ウィンドウサイズを減少させ、ＲＴＴが増加していないと判定された場合に、輻輳ウィンドウサイズを増加させるように輻輳ウィンドウサイズを制御する輻輳ウィンドウ制御手段１５と、を備える。【選択図】図１
2015033125.tif 000002
【特許請求の範囲】
【請求項１】
送達確認応答を受信するまで一度に送信可能なパケット数を示す輻輳ウィンドウサイズを、パケットの伝送遅延に応じて制御するパケット送信装置において、
受信した送達確認応答に対応したパケットの送信時刻と、当該送達確認応答の受信時刻とから当該パケットの往復遅延時間であるＲＴＴを計測するＲＴＴ計測手段と、
このＲＴＴ計測手段で逐次計測されるＲＴＴの最小ＲＴＴを更新して記憶手段に記憶する最小ＲＴＴ更新手段と、
前記計測されるＲＴＴの変動量を平滑化した変動量を算出し、基準ＲＴＴ変動量として順次更新する基準ＲＴＴ変動量算出手段と、
前記計測されたＲＴＴが、前記最小ＲＴＴと前記基準ＲＴＴ変動量とを加算した時間長よりも長くなったときにはＲＴＴが増加したと判定し、前記時間長以下のときにはＲＴＴが増加していないと判定するＲＴＴ増加判定手段と、
このＲＴＴ増加判定手段でＲＴＴが増加したと判定された場合に、前記輻輳ウィンドウサイズを減少させ、ＲＴＴが増加していないと判定された場合に、前記輻輳ウィンドウサイズを増加させるように輻輳ウィンドウサイズを制御する輻輳ウィンドウ制御手段と、
を備えることを特徴とするパケット送信装置。
【請求項２】
前記基準ＲＴＴ変動量を更新した後、所定の時間区間が経過したか否かを判定する時間区間判定手段を備え、
前記基準ＲＴＴ変動量算出手段が、前記時間区間における前記変動量の最大値を記憶し、当該時間区間経過後に、前記基準ＲＴＴ変動量と前記変動量の最大値とを平滑化して、新たな基準ＲＴＴ変動量として更新することを特徴とする請求項１に記載のパケット送信装置。
【請求項３】
送達確認されたパケットの送信時刻の間隔が所定の時間長よりも長いか否かを判定する送信時刻判定手段を備え、
前記基準ＲＴＴ変動量算出手段は、前記送信時刻判定手段において、前記送信時刻間隔が所定の時間長よりも長いと判定された場合、前記基準ＲＴＴ変動量を更新せず、前記送信時刻間隔が所定の時間長以下と判定された場合、前記基準ＲＴＴ変動量を更新することを特徴とする請求項１に記載のパケット送信装置。
【請求項４】
前記基準ＲＴＴ変動量を算出した後、所定の時間区間が経過したか否かを判定する時間区間判定手段と、
送達確認されたパケットの送信時刻の間隔が所定の時間長よりも長いか否かを判定する送信時刻判定手段と、を備え、
前記基準ＲＴＴ変動量算出手段が、前記時間区間において、前記送信時刻間隔が所定の時間長よりも短い場合だけ前記変動量の最大値を記憶し、当該時間区間経過後、前記基準ＲＴＴ変動量と前記変動量の最大値とを平滑化して、新たな基準ＲＴＴ変動量として更新することを特徴とする請求項１に記載のパケット送信装置。
【請求項５】
送達確認応答を受信するまで一度に送信可能なパケット数を示す輻輳ウィンドウサイズを、パケットの伝送遅延に応じて制御するために、パケット送信装置のコンピュータを、
パケットのデータを入力してデータバッファに記憶するデータ入力手段、
前記データバッファに記憶されたパケットのデータを読み出し、通信回線を介して、送信するデータ送信手段、
前記送達確認応答を受信し、当該送達確認応答に対応したパケットの送信時刻と、当該送達確認応答の受信時刻とから当該パケットの往復遅延時間であるＲＴＴを計測する送達応答確認受信手段、
前記輻輳ウィンドウサイズに基づいて、送信するパケットのデータ量を制御するフロー制御手段、
前記送達応答確認受信手段で逐次計測されるＲＴＴの最小ＲＴＴを更新して記憶手段に記憶する最小ＲＴＴ更新手段、
前記計測されるＲＴＴの変動量を平滑化した変動量を算出し、基準ＲＴＴ変動量として順次更新する基準ＲＴＴ変動量算出手段、
前記計測されたＲＴＴが、前記最小ＲＴＴと前記基準ＲＴＴ変動量とを加算した時間長よりも長くなったときにはＲＴＴが増加したと判定し、前記時間長以下のときにはＲＴＴが増加していないと判定するＲＴＴ増加判定手段、
このＲＴＴ増加判定手段でＲＴＴが増加したと判定された場合に、前記輻輳ウィンドウサイズを減少させ、ＲＴＴが増加していないと判定された場合に、前記輻輳ウィンドウサイズを増加させるように輻輳ウィンドウサイズを制御する輻輳ウィンドウ制御手段、
として機能させるためのパケット送信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信によってデータを伝送するパケット送信装置およびそのプログラムに関する。
【背景技術】
【０００２】
品質の保証がされていないベストエフォートタイプのＩＰ（Internet Protocol）ネットワークでは、ネットワーク機器内部でのバッファ漏れ、伝送中のビットエラー等によって、送信パケットの廃棄（パケットロス）が発生する。そのため、従来、ＩＰネットワーク上で、確実にデータを伝送するための送達確認を行うプロトコルとしてＴＣＰ（Transmission Control Protocol）が幅広く利用されている（非特許文献１参照）。
【０００３】
このＴＣＰでは、受信装置がパケットを受信すると、受信した旨の報告として、次に送信を要求するパケットの番号を送信装置に通知する。そして、送信装置は、受信装置から通知される報告に基づいて、パケットが正常に受信装置に到達したことを確認する。また、送信装置は、受信装置から通知される報告でパケットロスを検出した場合、当該パケットを再送するとともに、送達確認応答を受信するまで一度に送出可能なパケットの数（セグメント数）を表す輻輳ウィンドウサイズ（ＣＷＮＤ：Congestion Window Size）を調整する。例えば、送信装置は、パケットが正常に受信された場合、ＣＷＮＤを増加させ、パケットロスを検出した場合、ＣＷＮＤを減少させる。
【０００４】
このＣＷＮＤを調整する手法は、一般に、輻輳制御手法と呼ばれ、輻輳の発生をどのように判定するかによって、ロスベース手法と遅延ベース手法とに分類することができる。
ロスベース手法は、パケットロスの発生を輻輳のシグナルとみなして、ＣＷＮＤを減少させ、パケットロスの発生がない場合には、ＣＷＮＤを増加させる。このロスベースの輻輳制御手法として、ＮｅｗＲｅｎｏ（非特許文献２参照）、ＣＵＢＩＣ（非特許文献３参照）、ＣＴＣＰ（非特許文献４参照）が知られている。
【０００５】
一方、遅延ベース手法は、伝送遅延の増加を輻輳のシグナルとみなして、ＣＷＮＤを減少させ、伝送遅延の増加がない場合には、ＣＷＮＤを増加させる。この遅延ベースの輻輳制御手法として、Ｖｅｇａｓ（非特許文献５参照）、ＹｅＡＨ ＴＣＰ（非特許文献６参照）が知られている。例えば、Ｖｅｇａｓでは、通信中に測定した伝送遅延の最小値を基準にして、輻輳が発生したかどうかを判定し、ＣＷＮＤの制御を行っている。
また、遅延ベース手法として、Ｖｅｇａｓをベースに、ＣＷＮＤの変更幅を、伝送遅延の大きさによって変える（Ｖｅｇａｓでは“１”固定）手法が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４２４９０４９号公報
【非特許文献】
【０００７】
【非特許文献１】“RFC: 793 TRANSMISSION CONTROL PROTOCOL September 1981”、［online］、［平成２５年７月２９日検索］、インターネット<URL: http://www.ietf.org/rfc/rfc793.txt>
【非特許文献２】“RFC:6582 The NewReno Modification to TCP's Fast Recovery Algorithm April 2012”、［online］、［平成２５年７月２９日検索］、インターネット<URL: http://www.ietf.org/rfc/rfc6582.txt>
【非特許文献３】“CUBIC: A New TCP-Friendly High-Speed TCP Variant”, Sangtae Ha, Injong Rhee and Lisong Xu (ACM SIGOPS Operating System Review, Volume 42, Issue 5, July 2008)
【非特許文献４】“A Compound TCP Approach for High-speed and Long Distance Networks,” kun Tan, Jingmin Song, Qian Zhang and Murari Sridharan (IEEE Infocom, April 2006)
【非特許文献５】“TCP Vegas: End to End Congestion Avoidance on a Global Internet”, Lawrence S. Brakmo, Larry L. Peterson (IEEE JOURNAL ON SELECTED AREAS IN COMMUNICATIONS,Vol.13 No.8 pp.1465-1480, Oct. 1995)
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前記したロスベース手法は、パケットロスが発生するまでＣＷＮＤを増加させる。しかし、ロスベース手法では、使用可能な帯域を超えたデータを送信した場合、その超えた分のデータをただちに廃棄するのではなく、ネットワーク機器内に備えられたメモリに一時的に蓄積する。そして、ロスベース手法は、ネットワークの帯域が空いた段階で、蓄積されたデータをメモリから読み出して送信する。
【０００９】
このように、ロスベース手法では、パケットロスが発生するまで、すなわち、メモリからデータが溢れるまでＣＷＮＤを増加させるため、データがメモリに蓄積されることによるキューイング遅延の増加が発生してしまう。
近年の多くのネットワーク機器はメモリを備えており、キューイング遅延の増加は大きく、ロスベース手法では、データ通信のレスポンスを低下させてしまうという問題がある。
【００１０】
一方、前記した遅延ベース手法は、キューイング遅延（伝送遅延）の増加を輻輳のシグナルとしてＣＷＮＤを減少させるため、ネットワーク機器内のメモリに蓄積されるデータ量、すなわち、伝送遅延の増加を抑えることができる。
しかし、無線ネットワークでは、フェージング、干渉等による無線品質の一時的な低下によってパケットロスに対して再送が行われるため、輻輳とは関係なく伝送遅延が発生する。また、例えば、Ｖｅｇａｓ等の遅延ベース手法では、通信中に測定した伝送遅延の最小値を基準として輻輳の有無を判定するため、輻輳とは無関係な無線品質の一時的な低下による遅延増加も輻輳と誤って判定してしまう。
【００１１】
そのため、従来の遅延ベース手法は、無線ネットワークのようなキューイング遅延ではない遅延変動が起きやすい環境において、必要以上にＣＷＮＤを減少させることになり、スループットが著しく低下してしまうという問題がある。
なお、特許文献１に記載の手法では、伝送遅延の大きさによって、ＣＷＮＤの変更量を変えているが、輻輳の判定を単に伝送遅延で行っていることから、前記問題は解決されていない。
【００１２】
本発明は、このような問題に鑑みてなされたものであり、遅延ベースの輻輳制御手法において、輻輳とは関係がない伝送遅延による輻輳ウィンドウサイズ（ＣＷＮＤ）の不必要な減少を防止することが可能なパケット送信装置およびそのプログラムを提供することを課題とする。
【課題を解決するための手段】
【００１３】
前記課題を解決するため、本発明に係るパケット送信装置は、送達確認応答を受信するまで一度に送信可能なパケット数を示す輻輳ウィンドウサイズを、パケットの伝送遅延に応じて制御するパケット送信装置において、ＲＴＴ計測手段と、最小ＲＴＴ更新手段と、基準ＲＴＴ変動量算出手段と、ＲＴＴ増加判定手段と、輻輳ウィンドウ制御手段と、を備える構成とした。
【００１４】
かかる構成において、パケット送信装置は、ＲＴＴ計測手段によって、受信した送達確認応答に対応したパケットの送信時刻と、当該送達確認応答の受信時刻とから当該パケットの往復遅延時間であるＲＴＴ（Round Trip Time）を計測する。このＲＴＴによって、ネットワークの負荷状態を認識することができる。
そして、パケット送信装置は、最小ＲＴＴ更新手段によって、ＲＴＴ計測手段で逐次計測される最小ＲＴＴを更新して記憶手段に記憶する。また、パケット送信装置は、基準ＲＴＴ変動量算出手段によって、計測されるＲＴＴの変動量を平滑化した変動量を算出し、基準ＲＴＴ変動量として順次更新する。
【００１５】
そして、パケット送信装置は、ＲＴＴ増加判定手段によって、計測されたＲＴＴが、最小ＲＴＴと基準ＲＴＴ変動量とを加算した時間長よりも長くなったときにはＲＴＴが増加したと判定し、その時間長以下のときにはＲＴＴが増加していないと判定する。
これは、平滑化した基準ＲＴＴ変動量の範囲内でＲＴＴが変動していれば、その変動は、ネットワーク固有の環境における遅延により発生したものとみなすことができるからである。
【００１６】
そして、パケット送信装置は、輻輳ウィンドウ制御手段によって、ＲＴＴ増加判定手段でＲＴＴが増加したと判定された場合に、輻輳ウィンドウサイズを減少させ、ＲＴＴが増加していないと判定された場合に、輻輳ウィンドウサイズを増加させるように輻輳ウィンドウサイズを制御する。
これによって、パケット送信装置は、たとえ、ＲＴＴが増加した場合であっても、その変動量が基準ＲＴＴ変動量の範囲内であれば、その変動が輻輳とは関係のない遅延、すなわち、ネットワーク固有の遅延と判定し、輻輳ウィンドウサイズを減少させない。
【００１７】
なお、本発明に係るパケット送信装置は、パケット送信装置のコンピュータを、データ入力手段、データ送信手段、ＲＴＴを計測する送達応答確認受信手段、フロー制御手段、最小ＲＴＴ更新手段、基準ＲＴＴ変動量算出手段、ＲＴＴ増加判定手段、輻輳ウィンドウ制御手段、として機能させるためのパケット送信プログラムで動作させることができる。
【発明の効果】
【００１８】
本発明は、以下に示す優れた効果を奏するものである。
本発明に係るパケット送信装置によれば、遅延ベースの輻輳制御手法において、基準ＲＴＴ変動量によって、輻輳とは関係がない伝送遅延を推定することができ、輻輳以外の遅延による輻輳ウィンドウサイズ（ＣＷＮＤ）の減少を防止することができる。
すなわち、本発明に係るパケット送信装置によれば、ロスベースの輻輳制御手法に比べて伝送遅延を低く保つことができる遅延ベースの輻輳制御手法を採用しつつ、さらに、不必要なＣＷＮＤの減少を防止することで、通信速度の低下を抑え、ネットワークのスループットを高い状態で維持することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施形態に係るパケット送信装置の構成を示すブロック構成図である。
【図２】本発明の第１実施形態に係るパケット送信装置において、輻輳のシグナルとなる伝送遅延の増加を判定する手法の概要を説明するためのグラフ図である。
【図３】本発明の第１〜第４実施形態に係るパケット送信装置の動作を示すフローチャートである。
【図４】図３の最小ＲＴＴ更新の動作を示すフローチャートである。
【図５】図３の基準ＲＴＴ変動量推定の動作であって、本発明の第１実施形態に係るパケット送信装置の動作を示すフローチャートである。
【図６】図３のパケットロス発生時処理の動作を示すフローチャートである。
【図７】本発明の第２実施形態に係るパケット送信装置の構成を示すブロック構成図である。
【図８】本発明の第２実施形態に係るパケット送信装置において、基準ＲＴＴ変動量を推定する時間区間を説明するためのグラフ図である。
【図９】本発明の第２実施形態に係るパケット送信装置の動作のうち、図３の基準ＲＴＴ変動量推定の動作を示すフローチャートである。
【図１０】本発明の第３実施形態に係るパケット送信装置の構成を示すブロック構成図である。
【図１１】本発明の第３実施形態に係るパケット送信装置の動作のうち、図３の基準ＲＴＴ変動量推定の動作を示すフローチャートである。
【図１２】本発明の第４実施形態に係るパケット送信装置の構成を示すブロック構成図である。
【図１３】本発明の第４実施形態に係るパケット送信装置の動作のうち、図３の基準ＲＴＴ変動量推定の動作を示すフローチャートである。
【図１４】参考例の実施形態に係るパケット受信装置の構成を示すブロック構成図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について図面を参照して説明する。
≪第１実施形態≫
〔パケット送信装置の構成〕
まず、図１を参照して、本発明の第１実施形態に係るパケット送信装置１の構成について説明する。
【００２１】
パケット送信装置１は、図示を省略したデータ送信装置等から入力されたデータ（パケットデータ）を、ウィンドウ制御方式によって、そのデータ送信量を制御して、パケット受信装置２に送信するものである。
このパケット送信装置１は、パケット受信装置２との間で、送達確認応答を受信するまで一度に送出可能なパケットの数（セグメント数）である輻輳ウィンドウサイズ（ＣＷＮＤ：Congestion Window Size、以下、単にＣＷＮＤという。）を制御し、そのＣＷＮＤに応じてフロー制御を行うことで、送信するパケット数（データ量）を調整する。
また、パケット送信装置１は、パケットの伝送遅延の増加を輻輳のシグナルとみなしてＣＷＮＤを減少させ、伝送遅延の増加がない場合には、ＣＷＮＤを増加させる遅延ベースの輻輳制御を行う。
【００２２】
ここで、図２を参照して、パケット送信装置１が行う遅延ベースの輻輳制御において、輻輳のシグナルとなる伝送遅延の増加を判定する手法の概要を説明する。
図２に示したグラフ図は、横軸を時刻、縦軸をパケットの往復遅延時間（ＲＴＴ：Round Trip Time）とし、時間の経過に伴ってＲＴＴが変動する様子を示している。
このとき、パケット送信装置１は、逐次変動するＲＴＴのジッタの移動平均を基準ＲＴＴ変動量ｃとする。そして、パケット送信装置１は、ある時刻ｔ１で計測された最小のＲＴＴ（ｒ）に対して、基準ＲＴＴ変動量ｃを超過してＲＴＴが変動（増加）した場合に、輻輳のシグナルとなる伝送遅延が増加していると判定する。
【００２３】
図２の例では、パケット送信装置１は、時刻ｔ２において、ＲＴＴが基準ＲＴＴ変動量ｃを超過して変動する場合（図中Ａ）、伝送遅延の増加と判定する。しかし、ＲＴＴが増加している場合でも、その変動量が基準ＲＴＴ変動量ｃを超過しなければ（図中Ｂ）、パケット送信装置１は、伝送遅延の増加とは判定しない。
このような遅延ベースの輻輳制御を行うパケット送信装置１の構成について、図１を参照して詳細に説明する。
【００２４】
パケット送信装置１は、図１に示すように、データ入力手段１０と、データバッファ（一時記憶手段）１１と、フロー制御手段１２と、データ送信手段１３と、送達確認応答受信手段１４と、輻輳ウィンドウ制御手段１５と、基準ＲＴＴ変動量推定手段１６と、ＲＴＴ変動解析手段１７と、記憶手段１８と、を備える。
【００２５】
データ入力手段１０は、外部からパケット受信装置２に送信するためのデータ（パケットデータ）を入力するものである。このパケットデータは、例えば、ＩＰパケットである。このデータ入力手段１０は、入力されたパケットを逐次データバッファ１１に記憶するとともに、フロー制御手段１２に対して、パケットを入力した旨の通知を行う。
【００２６】
データバッファ（一時記憶手段）１１は、データ入力手段１０を介して入力されたパケットデータを一時的に記憶しておくもので、例えば、半導体メモリ等の記憶媒体である。このデータバッファ１１に記憶されたパケットデータは、データ送信手段１３によって読み出される。すなわち、データバッファ１１は、ＦＩＦＯ（First-In First-Out）として機能する。
【００２７】
フロー制御手段１２は、輻輳ウィンドウ制御手段１５によって制御されるＣＷＮＤに応じて、フロー制御を行うものである。すなわち、フロー制御手段１２は、一般的なウィンドウ制御方式によって、データ送信手段１３から送信するパケット数を制御する。
【００２８】
具体的には、フロー制御手段１２は、データ送信手段１３に対して、データバッファ１１に記憶されたパケットを送信する旨を指示する。そして、フロー制御手段１２は、送達確認応答受信手段１４から、送信したパケットに対する送達確認応答（ＡＣＫ）を受信した段階で、データバッファ１１における次に送信すべきパケットの送信番号（シーケンス番号）を更新する。このとき、フロー制御手段１２は、記憶手段１８（１８１）に記憶されているＣＷＮＤのパケット数までは、ＡＣＫを受信することなく一度に、データ送信手段１３に対して送信を指示することができる。
このように、フロー制御手段１２は、輻輳ウィンドウ制御手段１５によって制御されるＣＷＮＤによって、一度にパケット受信装置２に送信するパケット数を制御する。
【００２９】
データ送信手段１３は、フロー制御手段１２からの指示により、データバッファ１１に記憶されているパケットを、通信回線を介して、パケット受信装置２に送信するものである。なお、パケットデータには、パケットの宛先が記述されており、データ送信手段１３は、その宛先に対してパケットを送信する。例えば、パケットが、ＩＰパケットの場合、ＩＰヘッダに宛先のＩＰアドレスが記述されている。
また、ここでは、データ送信手段１３は、送信時刻書込手段１３１を備える。
【００３０】
送信時刻書込手段１３１は、パケットを送信する時刻を、図示を省略したタイマから取得して、パケットのヘッダ領域に書き込むものである。例えば、送信時刻書込手段１３１は、ＴＣＰヘッダ中のオプション領域のＴＣＰタイムスタンプに送信時刻を書き込む。この送信時刻は、パケットの往復遅延時間（ＲＴＴ：Round Trip Time）を計測するための基準となる時刻として利用される。
また、例えば、送信時刻書込手段１３１は、直接パケットに送信時刻を書き込まずに、送信時刻を当該パケットのシーケンス番号と対応付けて、記憶手段１８に書き込むこととしてもよい。
【００３１】
送達確認応答受信手段１４は、データ送信手段１３を介して送信されたパケットに対応する送達確認応答（ＡＣＫ）を、送信先のパケット受信装置２から、通信回線を介して、受信するものである。
また、ここでは、送達確認応答受信手段１４は、ＲＴＴ計測手段１４１を備える。
【００３２】
ＲＴＴ計測手段１４１は、データ送信手段１３から送信され、送達確認されたパケットの往復遅延時間（ＲＴＴ）を計測するものである。例えば、送信時刻書込手段１３１において、パケットのヘッダ領域に送信時刻を書き込む場合、ＲＴＴ計測手段１４１は、その送信時刻を含んだ送達確認応答を受信し、図示を省略したタイマから取得した現在時刻（受信時刻）との差分をとることで、ＲＴＴを計算する。
【００３３】
また、例えば、送信時刻書込手段１３１において、記憶手段１８に、パケットのシーケンス番号と対応付けて送信時刻を書き込む場合、ＲＴＴ計測手段１４１は、送達確認応答で通知されるシーケンス番号に対応するパケットの送信時刻を記憶手段１８から読み出し、現在時刻（受信時刻）との差分をとることで、ＲＴＴを計算する。
この送達確認応答受信手段１４は、受信した送達確認応答（ＡＣＫ）をフロー制御手段１２および輻輳ウィンドウ制御手段１５に出力し、さらに、ＲＴＴを輻輳ウィンドウ制御手段１５に出力する。
【００３４】
輻輳ウィンドウ制御手段１５は、ネットワークの負荷状態に応じて、フロー制御手段１２がフロー制御を行う際の輻輳ウィンドウサイズ（ＣＷＮＤ）を制御するものである。この輻輳ウィンドウ制御手段１５は、送達確認応答受信手段１４から入力される送達確認応答（ＡＣＫ）によりパケットロスを検出し、ＣＷＮＤを減少させたり、ＲＴＴ変動解析手段１７から入力されるＲＴＴが増加しているか否かの判定結果により、ＣＷＮＤを増減させたりする制御を行う。
ここでは、輻輳ウィンドウ制御手段１５は、パケットロス検出手段１５１と、ロス発生用ＣＷＮＤ処理手段１５２と、ＲＴＴ変動用ＣＷＮＤ処理手段１５３と、を備える。
【００３５】
パケットロス検出手段１５１は、送達確認応答受信手段１４から入力した送達確認応答（ＡＣＫ）により、パケットロスを検出するものである。
このパケットロス検出手段１５１は、例えば、同一シーケンス番号のＡＣＫを３つ連続して受信した場合にロスが発生したとみなす等、一般的な手法でパケットロスを検出すればよい。
【００３６】
このパケットロス検出手段１５１は、パケットロスを検出した場合、ロス発生用ＣＷＮＤ処理手段１５２にパケットロスが発生した旨を通知する。また、パケットロス検出手段１５１は、パケットロスを検出した場合、送達確認応答受信手段１４から入力したＲＴＴとパケットロスが発生した旨（ロス通知）とを、基準ＲＴＴ変動量推定手段１６とＲＴＴ変動解析手段１７とに出力する。
一方、パケットロス検出手段１５１は、パケットロスを検出しなかった場合、送達確認応答受信手段１４から入力したＲＴＴを、ＲＴＴ変動解析手段１７に出力する。
【００３７】
ロス発生用ＣＷＮＤ処理手段１５２は、パケットロスが発生した際に、ＣＷＮＤを減少させるものである。ここでは、ロス発生用ＣＷＮＤ処理手段１５２は、パケットロス検出手段１５１からパケットロスが検出された旨が通知された際に、ＣＷＮＤを減少させた値で、記憶手段１８（１８１）に記憶されているＣＷＮＤを更新する。
例えば、ロス発生用ＣＷＮＤ処理手段１５２は、パケットロスが発生した場合に、記憶手段１８（１８１）に記憶されている現在のＣＷＮＤに対して、０．５倍、０．７倍等の１より小さい予め定めた値を乗算して、ＣＷＮＤを減少させる。
【００３８】
ＲＴＴ変動用ＣＷＮＤ処理手段１５３は、ＲＴＴ変動解析手段１７による基準ＲＴＴ変動量を超過して増加しているか否かを示す判定結果に応じて、ＲＴＴが増加状態であればＣＷＮＤを減少させ、それ以外であればＣＷＮＤを増加させるものである。
ここでは、ＲＴＴ変動用ＣＷＮＤ処理手段１５３は、ＲＴＴ変動解析手段１７から、ＲＴＴが増加している旨が判定結果として通知された場合、輻輳の発生を防止するため、ＣＷＮＤを減少させる。例えば、ＲＴＴ変動用ＣＷＮＤ処理手段１５３は、ＲＴＴが増加した場合、記憶手段１８（１８１）に記憶されているＣＷＮＤを、予め定めた数（例えば、“１”）減少させる。
【００３９】
一方、ＲＴＴ変動用ＣＷＮＤ処理手段１５３は、ＲＴＴ変動解析手段１７から、ＲＴＴが増加していない旨（非増加）が判定結果として通知された場合、一度に送信するパケット数を増やすため、ＣＷＮＤを増加させる。例えば、ＲＴＴ変動用ＣＷＮＤ処理手段１５３は、ＲＴＴが増加していない場合、記憶手段１８（１８１）に記憶されているＣＷＮＤを、予め定めた数（例えば、“１”）増加させる。
【００４０】
基準ＲＴＴ変動量推定手段１６は、ＲＴＴ計測手段１４１で計測されるＲＴＴの変動量を平滑化して、ＲＴＴの増加判定の基準となる基準ＲＴＴ変動量を推定するものである。この基準ＲＴＴ変動量の範囲内でＲＴＴが変動していれば、たとえ、ＲＴＴが増加した場合であっても、それは、輻輳とは関係のないネットワーク固有の環境（無線環境等）における遅延により発生したものとみなすことができる。
ここでは、基準ＲＴＴ変動量推定手段１６は、変動量算出手段１６１を備える。
【００４１】
変動量算出手段（基準ＲＴＴ変動量算出手段）１６１は、ＴＣＰのコネクション確立中において、今回受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（今回のＲＴＴ）と、その直前に受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（前回のＲＴＴ）との差分（ジッタ）の移動平均を演算することで、ＲＴＴの平滑化した変動量（基準ＲＴＴ変動量）を算出し、更新するものである。ここで、コネクション確立中か否かは、例えば、変動量算出手段１６１は、データ送信手段１３から、ＴＣＰのコネクションの確立や終了のシーケンスを完了した旨の通知されることでに認識することができる。
なお、ここでは、基準ＲＴＴ変動量推定手段１６（変動量算出手段１６１）は、ＲＴＴ変動解析手段１７を経由してＲＴＴを入力することとする。これは、基準ＲＴＴ変動量推定手段１６が基準ＲＴＴ変動量を計算するためのＲＴＴと、ＲＴＴ変動解析手段１７がＲＴＴの増加を判定するためのＲＴＴとを同期させるためである。
【００４２】
具体的には、変動量算出手段１６１は、今回受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（今回のＲＴＴ）と、記憶手段１８（１８２）に記憶されている前回算出した基準ＲＴＴ変動量および前回受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（前回のＲＴＴ）とから、以下の式（１）により変動量を平滑化し、新たな基準ＲＴＴ変動量として更新する。
【００４３】
基準ＲＴＴ変動量←基準ＲＴＴ変動量＊（１−α）
＋（前回のＲＴＴと今回のＲＴＴとの差の絶対値）＊α  …式（１）
【００４４】
ここで、αは、予め定めた平滑化パラメータ（０＜α＜１）である。例えば、αとして、ＴＣＰにおいてＲＴＴの平滑化に用いられる値“１／８”、ＲＴＴの分散の平滑化に用いられる値“１／４”等を用いることができる。
この変動量算出手段１６１は、算出した新たな基準ＲＴＴ変動量を記憶手段１８（１８２）に記憶することで基準ＲＴＴ変動量を更新するとともに、新たな基準ＲＴＴ変動量をＲＴＴ変動解析手段１７に出力する。また、変動量算出手段１６１は、今回受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（今回のＲＴＴ）を、前回のＲＴＴとして記憶手段１８（１８２）に記憶する。
【００４５】
なお、変動量算出手段１６１は、パケットロス検出手段１５１から、パケットロスが発生した旨（ロス通知）およびＲＴＴを入力した場合、基準ＲＴＴ変動量の計算を行わず、入力されたＲＴＴ（今回のＲＴＴ）を、前回のＲＴＴとして記憶手段１８（１８２）に記憶する。
【００４６】
ＲＴＴ変動解析手段１７は、基準ＲＴＴ変動量推定手段１６で推定される基準ＲＴＴ変動量から、今回計測されたＲＴＴが、一定の基準を超えて増加傾向にあるか否かを解析するものである。なお、ここでは、ＲＴＴ変動解析手段１７は、輻輳ウィンドウ制御手段１５を経由したＲＴＴを用いることとする。これは、ＲＴＴ変動解析手段１７が、パケットロスの有無によって、処理が異なるためである。
ここでは、ＲＴＴ変動解析手段１７は、最小ＲＴＴ更新手段１７１と、ＲＴＴ増加判定手段１７２と、を備える。
【００４７】
最小ＲＴＴ更新手段１７１は、今まで計測したＲＴＴの最小値を逐次更新するものである。ここでは、最小ＲＴＴ更新手段１７１は、記憶手段１８（１８２）に最小ＲＴＴが記憶されていない場合、輻輳ウィンドウ制御手段１５を経由して通知される、ＲＴＴ計測手段１４１で計測されたＲＴＴを記憶手段１８（１８２）に書き込む。また、最小ＲＴＴ更新手段１７１は、記憶手段１８（１８２）に最小ＲＴＴが記憶されている場合、今回のＲＴＴがその最小ＲＴＴよりも小さければ、記憶手段１８（１８２）に記憶されている最小ＲＴＴを今回のＲＴＴで更新する。
【００４８】
ＲＴＴ増加判定手段１７２は、基準ＲＴＴ変動量を越えた変動量でＲＴＴが増加しているか否かを判定するものである。
このＲＴＴ増加判定手段１７２は、輻輳ウィンドウ制御手段１５から通知されるＲＴＴを基準ＲＴＴ変動量推定手段１６に通知し、基準ＲＴＴ変動量推定手段１６から、基準ＲＴＴ変動量を取得する。そして、ＲＴＴ増加判定手段１７２は、記憶手段１８（１８２）に記憶されている最小ＲＴＴと、基準ＲＴＴ変動量とに基づいて、ＲＴＴが増加しているか否かを判定する。
【００４９】
具体的には、ＲＴＴ増加判定手段１７２は、以下の式（２）に示すような判定式によって、最小ＲＴＴと基準ＲＴＴ変動量を加算した時間長よりも、今回受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（今回のＲＴＴ）の方が長ければ、ＲＴＴが増加していると判定する。また、ＲＴＴ増加判定手段１７２は、最小ＲＴＴと基準ＲＴＴ変動量と加算した時間長が、今回計測されたＲＴＴ以上であれば、ＲＴＴが増加していないと判定する。
【００５０】
ｉｆ  （最小ＲＴＴ＋基準ＲＴＴ変動量  ＜  今回のＲＴＴ）
ｔｈｅｎ            ＲＴＴが増加している
ｏｔｈｅｒｗｉｓｅ  ＲＴＴが増加していない                        …式（２）
【００５１】
このＲＴＴ増加判定手段１７２は、判定結果を輻輳ウィンドウ制御手段１５に出力する。
なお、ＲＴＴ増加判定手段１７２は、パケットロス検出手段１５１から、パケットロスが発生した旨（ロス通知）およびＲＴＴを入力した場合、入力したＲＴＴに応じて記憶手段１８（１８２）に記憶されている最小ＲＴＴの更新のみを行う。これは、パケットロスが発生した場合、輻輳ウィンドウ制御手段１５のロス発生用ＣＷＮＤ処理手段１５２が、ＲＴＴの増減に関係なくＣＷＮＤを減少させるためである。
【００５２】
記憶手段１８（１８１，１８２）は、パケット送信装置１で逐次更新される情報を記憶するもので、半導体メモリ等の記憶媒体である。
この記憶手段１８には、ＣＷＮＤと、基準ＲＴＴ変動量と、前回のＲＴＴと、最小ＲＴＴとが記憶される。ここで、ＣＷＮＤは、輻輳ウィンドウ制御手段１５によって更新され、フロー制御手段１２によって参照される。また、基準ＲＴＴ変動量および前回のＲＴＴは、基準ＲＴＴ変動量推定手段１６（変動量算出手段１６１）によって更新され、最小ＲＴＴは、ＲＴＴ変動解析手段１７（最小ＲＴＴ更新手段１７１）によって更新される。
また、基準ＲＴＴ変動量は、初期値として“０”を設定しておくこととする。
なお、図１では、記憶手段１８を記憶手段１８１と記憶手段１８２とに分けて図示しているが、同一の記憶媒体であっても構わない。
【００５３】
以上説明したようにパケット送信装置１を構成することで、パケット送信装置１は、輻輳とは関係なく発生するＲＴＴの変動量（基準ＲＴＴ変動量）を推定し、最小ＲＴＴに基準ＲＴＴ変動量を加算した値を閾値として動的に遅延増加の判定を行う。
これによって、パケット送信装置１は、輻輳のシグナルとなるＲＴＴの増加を精度よく検出して、ネットワーク環境に応じたＣＷＮＤの制御を行うことができる。
【００５４】
〔パケット送信装置の動作〕
次に、図３〜図６を参照（構成については適宜図１参照）して、本発明の第１実施形態に係るパケット送信装置１の動作について説明する。
なお、ここでは、一般的な遅延ベースの輻輳制御手法については説明を省略し、本発明の特徴であるパケットの往復遅延時間（ＲＴＴ）に基づいて、輻輳のシグナルとなる伝送遅延の増加を動的に判定してＣＷＮＤの制御を行う動作について主に説明する。すなわち、ここでは、データ送信手段１３（主に送信時刻書込手段１３１）、送達確認応答受信手段１４（主にＲＴＴ計測手段１４１）、輻輳ウィンドウ制御手段１５、基準ＲＴＴ変動量推定手段１６およびＲＴＴ変動解析手段１７の動作について説明する。
【００５５】
図３に示すように、パケット送信装置１は、送達確認応答受信手段１４によって、ステップとして図示していないデータ送信手段１３を介して送信されたパケットに対応する送達確認応答（ＡＣＫ）を受信する（ステップＳ１）。
そして、パケット送信装置１は、ＲＴＴ計測手段１４１によって、パケットの送信時刻と現在時刻（受信時刻）との差分をとることで、ＲＴＴを計算する（ステップＳ２）。
【００５６】
そして、パケット送信装置１は、輻輳ウィンドウ制御手段１５のパケットロス検出手段１５１によって、ステップＳ１で受信した送達確認応答（ＡＣＫ）により、パケットロスが発生しているか否かを検出する（ステップＳ３）。
ここで、パケットロスが検出されなければ（ステップＳ３でＮｏ）、パケット送信装置１は、ステップＳ４以降に動作を進める。
すなわち、パケット送信装置１は、ＲＴＴ変動解析手段１７の最小ＲＴＴ更新手段１７１によって、最小ＲＴＴの更新を行う（ステップＳ４）。
このステップＳ４の動作については、図４を参照して説明する。
【００５７】
図４に示すように、パケット送信装置１は、最小ＲＴＴ更新手段１７１によって、記憶手段１８（１８２）に記憶されている現時点までの最小ＲＴＴと、ステップＳ２で計算された今回受信したＡＣＫに対応したＲＴＴ（今回のＲＴＴ）とを比較する（ステップＳ４１）。
【００５８】
ここで、最小ＲＴＴの方が今回のＲＴＴよりも大きければ（ステップＳ４１でＹｅｓ）、最小ＲＴＴ更新手段１７１は、記憶手段１８（１８２）に記憶されている最小ＲＴＴを今回のＲＴＴで更新する（ステップＳ４２）。なお、最小ＲＴＴが今回のＲＴＴ以下であれば（ステップＳ４１でＮｏ）、最小ＲＴＴ更新手段１７１は、最小ＲＴＴの更新を行わない。
図３に戻って、パケット送信装置１の動作について説明を続ける。
【００５９】
ステップＳ４の後、パケット送信装置１は、基準ＲＴＴ変動量推定手段１６によって、基準ＲＴＴ変動量を推定する（ステップＳ５）。
このステップＳ５の動作については、図５を参照して詳細に説明する。
【００６０】
図５に示すように、パケット送信装置１は、変動量算出手段１６１によって、記憶手段１８（１８２）に前回のＲＴＴが記憶されているか否かを判定する（ステップＳ５１）。
ここで、記憶手段１８（１８２）に前回のＲＴＴが記憶されている場合（ステップＳ５１でＹｅｓ）、変動量算出手段１６１は、前記式（１）により、前回のＲＴＴと今回のＲＴＴとの差分（ジッタ）の移動平均を演算する。
【００６１】
すなわち、変動量算出手段１６１は、まず、前回のＲＴＴと今回のＲＴＴとの差の絶対値をＲＴＴ差分として算出する（ステップＳ５２）。そして、変動量算出手段１６１は、記憶手段１８（１８２）に記憶されている基準ＲＴＴ変動量と、ステップＳ５２で算出したＲＴＴ差分とを、予め定めた比率で〔（１−α）：α〕で加算することで、新たな基準ＲＴＴ変動量を算出する（ステップＳ５３）。このステップＳ５３で算出された新たな基準ＲＴＴ変動量は、変動量算出手段１６１によって、記憶手段１８（１８２）に記憶される。
【００６２】
そして、変動量算出手段１６１は、今回のＲＴＴを、前回のＲＴＴとして記憶手段１８（１８２）に記憶する（ステップＳ５４）。
なお、ステップＳ５１において、記憶手段１８（１８２）に前回のＲＴＴが記憶されていない場合（ステップＳ５１でＮｏ）、変動量算出手段１６１は、ステップＳ５４の動作のみを行う。
図３に戻って、パケット送信装置１の動作について説明を続ける。
【００６３】
ステップＳ５の後、パケット送信装置１は、ＲＴＴ変動解析手段１７のＲＴＴ増加判定手段１７２によって、ＲＴＴが基準ＲＴＴ変動量を越えた変動量で増加しているか否かを判定する（ステップＳ６）。
ここで、記憶手段１８（１８２）に記憶されている最小ＲＴＴと、ステップＳ５で推定された基準ＲＴＴ変動量とを加算した時間長よりも、今回のＲＴＴの方が長ければ、ＲＴＴ増加判定手段１７２は、ＲＴＴが増加していると判定する。また、今回のＲＴＴが、最小ＲＴＴと基準ＲＴＴ変動量とを加算した時間長以下であれば、ＲＴＴ増加判定手段１７２は、ＲＴＴが増加してないと判定する。
【００６４】
そして、ＲＴＴが増加していると判定された場合（ステップＳ６でＹｅｓ）、パケット送信装置１は、輻輳ウィンドウ制御手段１５のＲＴＴ変動用ＣＷＮＤ処理手段１５３によって、ＣＷＮＤを減少（例えば、−１）させる（ステップＳ７）。一方、ＲＴＴが増加していないと判定された場合（ステップＳ６でＮｏ）、パケット送信装置１は、ＲＴＴ変動用ＣＷＮＤ処理手段１５３によって、ＣＷＮＤを増加（例えば、＋１）させる（ステップＳ８）。
なお、ステップＳ３において、パケットロスが検出された場合（ステップＳ３でＹｅｓ）、ステップＳ９のパケットロス発生時処理を行う。
このステップＳ９の動作については、図６を参照して説明する。
【００６５】
図６に示すように、パケットロスが発生した場合、パケット送信装置１は、輻輳ウィンドウ制御手段１５のロス発生用ＣＷＮＤ処理手段１５２によって、ＣＷＮＤを減少（０．５倍、０．７倍等）させる（ステップＳ９１）。
また、パケット送信装置１は、ＲＴＴ変動解析手段１７において、ＲＴＴの増加判定を行わず、最小ＲＴＴ更新手段１７１によって、最小ＲＴＴの更新のみを行う（ステップＳ９２）。なお、このステップＳ９２は、図４で説明した動作と同じである。
また、パケット送信装置１は、基準ＲＴＴ変動量推定手段１６の変動量算出手段１６１における基準ＲＴＴ変動量の算出を行わず、今回のＲＴＴを、前回のＲＴＴとして記憶手段１８（１８２）に記憶する（ステップＳ９３）。
【００６６】
以上説明したようにパケット送信装置１を構成し、動作させることで、パケット送信装置１は、伝送遅延を低く保つという遅延ベース輻輳制御のメリットを維持しつつ、無線環境のような輻輳とは関係のない遅延増加が発生する環境下であっても、ＣＷＮＤの不必要な減少を抑え、スループットを高い状態で維持することができる。
【００６７】
≪第２実施形態≫
〔パケット送信装置の構成〕
次に、図７を参照して、本発明の第２実施形態に係るパケット送信装置１Ｂの構成について説明する。
【００６８】
パケット送信装置１Ｂは、遅延ベースの輻輳制御でパケットの送信を行うもので、図１で説明したパケット送信装置１と基本的には同様の機能を有する。
図１で説明したパケット送信装置１は、ＲＴＴジッタの移動平均を基準ＲＴＴ変動量とし、ＲＴＴを計測したタイミングで基準ＲＴＴ変動量を逐次更新する形態であった。
しかし、パケット送信装置１Ｂは、所定の時間区間におけるＲＴＴジッタの最大値の移動平均を基準ＲＴＴ変動量として基準ＲＴＴ変動量を更新する。
【００６９】
ここで、図８を参照して、パケット送信装置１Ｂの基準ＲＴＴ変動量を推定する時間区間の例について説明する。ここでは、所定の時間区間を、最後に基準ＲＴＴ変動量を更新してから、最小ＲＴＴの時間が経過するまでとする。
図８に示したグラフ図は、横軸を時刻、縦軸をパケットの往復遅延時間（ＲＴＴ）とし、時間の経過に伴ってＲＴＴが変動する様子を示している。
【００７０】
ここで、パケット送信装置１Ｂは、時刻ｔ１において、基準ＲＴＴ変動量を更新したとする。このとき、今までに計測した最小ＲＴＴがｒ１であった場合、パケット送信装置１Ｂは、時刻ｔ１からｒ１経過した後に、送達確認応答（ＡＣＫ）を受信したタイミング（ここでは時刻ｔ２）で、基準ＲＴＴ変動量を更新する。
【００７１】
また、図８の例では、時刻ｔ２時点において、最小ＲＴＴはｒ１であるが、ｔ２からの
時刻計時途中に最小ＲＴＴがｒ２に更新された場合、パケット送信装置１Ｂは、時刻ｔ２からｒ２経過した後に、送達確認応答（ＡＣＫ）を受信したタイミング（ここでは時刻ｔ３）で、基準ＲＴＴ変動量を更新することとする。もちろん、時刻ｔ２から当初の最小ＲＴＴであるｒ１経過後に基準ＲＴＴ変動量を更新することとしてもよい。
なお、この第２実施形態では、所定の時間区間を、最小ＲＴＴとして説明するが、この所定の時間区間は、パケットの伝送遅延時間を示す時間であれば、最小ＲＴＴである必要はない。例えば、逐次計測されるＲＴＴであっても構わない。
【００７２】
このパケット送信装置１Ｂでは、送信レートが大きくなりバースト的にパケットの送受信が発生する環境や、輻輳以外の遅延増加の頻度が低い環境で用いる場合、基準ＲＴＴ変動量が過剰に低くなることを防止するため、基準ＲＴＴ変動量の更新頻度を減らしている。その更新頻度の基準として、伝送遅延時間を基準とした時間区間を用いることで、ネットワークに適した更新を行うことができる。
このように、所定の時間区間で基準ＲＴＴ変動量を更新するパケット送信装置１Ｂの構成について、図７を参照して詳細に説明する。
【００７３】
パケット送信装置１Ｂは、図７に示すように、データ入力手段１０と、データバッファ（一時記憶手段）１１と、フロー制御手段１２と、データ送信手段１３と、送達確認応答受信手段１４と、輻輳ウィンドウ制御手段１５と、基準ＲＴＴ変動量推定手段１６Ｂと、ＲＴＴ変動解析手段１７と、記憶手段１８と、を備える。
【００７４】
基準ＲＴＴ変動量推定手段１６Ｂ以外の構成については、図１で説明したパケット送信装置１と同一の構成であるため、同一の符号を付して説明を省略する。なお、記憶手段１８は、記憶する内容がパケット送信装置１に対して増えている。その内容は、基準ＲＴＴ変動量推定手段１６Ｂにより更新されるものであるため、基準ＲＴＴ変動量推定手段１６Ｂの説明において行うこととする。
【００７５】
基準ＲＴＴ変動量推定手段１６Ｂは、ＲＴＴ計測手段１４１で計測されるＲＴＴの変動量を平滑化して、ＲＴＴの増加判定の基準となる基準ＲＴＴ変動量を推定するものである。ここでは、基準ＲＴＴ変動量推定手段１６Ｂは、変動量算出手段１６１Ｂと、時間区間判定手段１６２と、を備える。
【００７６】
変動量算出手段（基準ＲＴＴ変動量算出手段）１６１Ｂは、ＴＣＰのコネクション確立中において、所定の時間区間における送達確認応答（ＡＣＫ）で計測されたＲＴＴ（今回のＲＴＴ）と、その直前に受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（前回のＲＴＴ）との差分（ジッタ）の最大値の移動平均を演算することで、ＲＴＴの最大値を平滑化した変動量を算出し、基準ＲＴＴ変動量として更新するものである。なお、ここでは、基準ＲＴＴ変動量推定手段１６Ｂ（変動量算出手段１６１Ｂ）は、ＲＴＴ変動解析手段１７を経由してＲＴＴを入力する。
【００７７】
この変動量算出手段１６１Ｂは、時間区間判定手段１６２に、前回の基準ＲＴＴ変動量の更新から、所定の時間区間が経過したか否かを問い合わせ、その時間区間が経過している場合に、基準ＲＴＴ変動量を更新する。
具体的には、変動量算出手段１６１Ｂは、所定の時間区間経過後、記憶手段１８（１８２）に記憶されている前回算出した基準ＲＴＴ変動量と、記憶手段１８（１８２）に記憶されている所定の時間区間において計測されるＲＴＴの最大の変動量（現区間最大変動量）とから、以下の式（３）により変動量を平滑化し、新たな基準ＲＴＴ変動量を算出する。
【００７８】
基準ＲＴＴ変動量←基準ＲＴＴ変動量＊（１−α）
＋現区間最大変動量＊α                              …式（３）
【００７９】
ここで、αは、予め定めた平滑化パラメータ（０＜α＜１）である。例えば、基準ＲＴＴ変動量推定手段１６（図１参照）と同様に、αとして、ＴＣＰにおいてＲＴＴの平滑化に用いられる値“１／８”、ＲＴＴの分散の平滑化に用いられる値“１／４”等を用いることができる。
また、現区間最大変動量は、時間区間判定手段１６２が判定する時間区間において、送達確認応答（ＡＣＫ）で計測されたＲＴＴ（今回のＲＴＴ）と、その直前に受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（前回のＲＴＴ）との差分（ジッタ）の最大値である。
この変動量算出手段１６１Ｂは、算出した新たな基準ＲＴＴ変動量を記憶手段１８（１８２）に記憶することで基準ＲＴＴ変動量を更新する。
【００８０】
また、変動量算出手段１６１Ｂは、基準ＲＴＴ変動量を更新した場合、その旨を時間区間判定手段１６２に通知するとともに、更新した基準ＲＴＴ変動量をＲＴＴ変動解析手段１７に出力する。また、変動量算出手段１６１Ｂは、基準ＲＴＴ変動量を更新していない場合、記憶手段１８（１８２）に記憶されている基準ＲＴＴ変動量をそのままＲＴＴ変動解析手段１７に出力する。
なお、変動量算出手段１６１Ｂは、基準ＲＴＴ変動量を更新した場合、記憶手段１８（１８２）に記憶されている現区間最大変動量を初期化（“０”に設定）することとする。
【００８１】
また、変動量算出手段１６１Ｂは、ＲＴＴを受信するたびに、記憶手段１８（１８２）に記憶されている前回のＲＴＴとの差の絶対値を計算し、記憶手段１８（１８２）に記憶されている現区間最大変動量よりも大きければ、今回のＲＴＴの変動量で現区間最大変動量を更新する。なお、記憶手段１８（１８２）に記憶される現区間最大変動量は、初期値として、予め“０”が設定されているものとする。
【００８２】
また、変動量算出手段１６１Ｂは、今回受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（今回のＲＴＴ）を、前回のＲＴＴとして記憶手段１８（１８２）に記憶する。
なお、変動量算出手段１６１Ｂは、パケットロス検出手段１５１から、パケットロスが発生した旨（ロス通知）およびＲＴＴを入力した場合、基準ＲＴＴ変動量の計算を行わず、入力されたＲＴＴ（今回のＲＴＴ）を、前回のＲＴＴとして記憶手段１８（１８２）に記憶する。
【００８３】
時間区間判定手段１６２は、基準ＲＴＴ変動量を更新してから、次に基準ＲＴＴ変動量を更新するまでの時間区間が所定時間経過したか否かを判定するものである。
この時間区間判定手段１６２は、変動量算出手段１６１Ｂから、基準ＲＴＴ変動量を更新した旨を通知された段階で、時刻計時を開始する。また、時間区間判定手段１６２は、変動量算出手段１６１Ｂから、所定の時間区間が経過したか否かの問い合わせを受けた段階で、基準ＲＴＴ変動量を更新してからの経過時間が、記憶手段１８（１８２）に記憶されている最小ＲＴＴを超過したか否かを判定する。
この時間区間判定手段１６２は、この判定結果を変動量算出手段１６１Ｂに出力する。
【００８４】
以上説明したようにパケット送信装置１Ｂを構成することで、パケット送信装置１Ｂは、基準ＲＴＴ変動量推定手段１６Ｂによって、少なくとも所定の時間区間（ここでは、最小ＲＴＴ）が経過したタイミングで、基準ＲＴＴ変動量を更新することができる。
なお、ここでは、基準ＲＴＴ変動量を推定（更新）する時間区間を最小ＲＴＴとしたが、ＲＴＴを基準とした時間区間であれば、この時間区間に限定されるものではない。
【００８５】
例えば、最後に基準ＲＴＴ変動量を更新してから、パケット送信装置１Ｂが次に送信予定のパケットに対する送達応答確認（ＡＣＫ）が到着するまでの時間区間、すなわち、基準ＲＴＴ変動量更新後のＲＴＴとしてもよい。
【００８６】
この場合、データ送信手段１３が、送信パケットのシーケンス番号を基準ＲＴＴ変動量推定手段１６Ｂに通知する。また、輻輳ウィンドウ制御手段１５（パケットロス検出手段１５１）が、ＲＴＴとともに、送達確認応答に含まれているＡＣＫ番号をＲＴＴ変動解析手段１７に通知する。そして、ＲＴＴ変動解析手段１７（ＲＴＴ増加判定手段１７２）が、ＲＴＴとともにＡＣＫ番号を基準ＲＴＴ変動量推定手段１６Ｂに通知する。
そして、基準ＲＴＴ変動量推定手段１６Ｂ（時間区間判定手段１６２）が、データ送信手段１３から通知されるシーケンス番号と、それに対応するＲＴＴ変動解析手段１７から通知されるＡＣＫ番号とから、基準ＲＴＴ変動量更新後の送信パケットのＲＴＴに相当する時間区間を判定する。
【００８７】
〔パケット送信装置の動作〕
次に、図３および図９を参照（構成については適宜図７参照）して、本発明の第２実施形態に係るパケット送信装置１Ｂの動作について説明する。
なお、図３に示したパケット送信装置１Ｂの動作は、ステップＳ５Ｂを除き、パケット送信装置１（図１参照）と同じ動作であるため、ここでは、説明を省略する。すなわち、パケット送信装置１Ｂの動作は、パケット送信装置１のステップＳ５をステップＳ５Ｂに替えただけである。
ここでは、図９を参照して、ステップＳ５Ｂの動作について詳細に説明する。
【００８８】
図９に示すように、パケット送信装置１Ｂは、基準ＲＴＴ変動量推定手段１６Ｂの時間区間判定手段１６２によって、前回の基準ＲＴＴ変動量の更新からの計時時間が、記憶手段１８（１８２）に記憶されている最小ＲＴＴ（所定の時間区間）を経過したか否かを判定する（ステップＳ５１Ｂ）。なお、ここで、時間区間判定手段１６２は、基準ＲＴＴ変動量がまだ一度も更新されていない段階においては、所定の時間区間を経過したと判定することとする。
【００８９】
ここで、所定の時間区間を経過した場合（ステップＳ５１ＢでＹｅｓ）、基準ＲＴＴ変動量推定手段１６Ｂの変動量算出手段１６１Ｂは、前記式（３）により、記憶手段１８（１８２）に記憶されている基準ＲＴＴ変動量と現区間最大変動量とを、予め定めた比率で〔（１−α）：α〕で加算することで、新たな基準ＲＴＴ変動量を算出する（ステップＳ５２Ｂ）。このステップＳ５２Ｂで算出された新たな基準ＲＴＴ変動量は、変動量算出手段１６１Ｂによって、記憶手段１８（１８２）に記憶される。
【００９０】
そして、変動量算出手段１６１Ｂは、記憶手段１８（１８２）に記憶されている現区間最大変動量を初期化（“０”）する（ステップＳ５３Ｂ）。
また、時間区間判定手段１６２は、変動量算出手段１６１Ｂからの基準ＲＴＴ変動量の更新の通知により、時間区間の計時をリセットし、再度、時間区間の計時を開始する（ステップとして図示せず）。
【００９１】
その後、または、ステップＳ５１Ｂで時間区間が経過していない場合（ステップＳ５１ＢでＮｏ）、変動量算出手段１６１Ｂは、記憶手段１８（１８２）に前回のＲＴＴが記憶されているか否かを判定する（ステップＳ５４Ｂ）。
ここで、記憶手段１８（１８２）に前回のＲＴＴが記憶されている場合（ステップＳ５４ＢでＹｅｓ）、変動量算出手段１６１Ｂは、前回のＲＴＴと今回のＲＴＴとの差分の絶対値（ＲＴＴ差分）を算出する（ステップＳ５５Ｂ）。
【００９２】
そして、変動量算出手段１６１Ｂは、ステップＳ５５Ｂで算出したＲＴＴ差分が、記憶手段１８（１８２）に記憶されている現区間最大変動量よりも大きければ（ステップＳ５６ＢでＹｅｓ）、現区間最大変動量をステップＳ５５Ｂで算出したＲＴＴ差分で更新する（ステップＳ５７Ｂ）。
【００９３】
そして、変動量算出手段１６１Ｂは、今回のＲＴＴを、前回のＲＴＴとして記憶手段１８（１８２）に記憶する（ステップＳ５８Ｂ）。
なお、ステップＳ５４Ｂにおいて、記憶手段１８（１８２）に前回のＲＴＴが記憶されていない場合（ステップＳ５４ＢでＮｏ）、あるいは、ステップＳ５６Ｂにおいて、ＲＴＴ差分が現区間最大変動量以下の場合（ステップＳ５６ＢでＮｏ）、変動量算出手段１６１Ｂは、ステップＳ５８Ｂの動作のみを行う。
【００９４】
以上説明したようにパケット送信装置１Ｂを構成し、動作させることで、パケット送信装置１Ｂは、時間区間判定手段１６２によって、基準ＲＴＴ変動量を更新してからの所定時間区間を判定することができ、自身の持つ時刻解像度に対して、送信レートが大きくなりバースト的にパケットの送受信が発生する環境や、輻輳以外の遅延増加の頻度が低い環境であっても、基準ＲＴＴ変動量が過剰に低くなることを防止することができる。すなわち、パケット送信装置１Ｂは、ＣＷＮＤの過剰な減少を防止して、高スループットを維持することができる。
【００９５】
≪第３実施形態≫
〔パケット送信装置の構成〕
次に、図１０を参照して、本発明の第３実施形態に係るパケット送信装置１Ｃの構成について説明する。
【００９６】
パケット送信装置１Ｃは、遅延ベースの輻輳制御でパケットの送信を行うもので、図１で説明したパケット送信装置１と基本的には同様の機能を有する。
すなわち、パケット送信装置１Ｃは、ＲＴＴジッタの移動平均を基準ＲＴＴ変動量として、ＲＴＴを計測したタイミングで基準ＲＴＴ変動量を逐次更新する。
しかし、パケット送信装置１Ｃは、パケットの送信時刻間隔が予め定めた時間長よりも長い場合には、基準ＲＴＴ変動量を更新しないこととする。
【００９７】
これは、以下の理由によるものである。
一般に、パケットの送信時刻間隔が長い場合、二つのパケットが通過するネットワークの状態が変化している可能性が大きいといえる。ここで、ＲＴＴを、「キューイング遅延（可変）＋処理・伝搬遅延（固定）＋再送などの輻輳とは無関係の遅延（可変）」から構成されると考えたとき、ネットワークの状態（例えば、混雑具合）が異なるとキューイング遅延も異なる可能性がある。この場合、輻輳とは無関係の遅延量を推定することができない。
そこで、パケット送信装置１Ｃは、パケットの送信時刻間隔が長い場合、このようなＲＴＴをサンプルから除外することとした。
【００９８】
パケット送信装置１Ｃは、図１０に示すように、データ入力手段１０と、データバッファ（一時記憶手段）１１と、フロー制御手段１２と、データ送信手段１３と、送達確認応答受信手段１４と、輻輳ウィンドウ制御手段１５と、基準ＲＴＴ変動量推定手段１６Ｃと、ＲＴＴ変動解析手段１７と、記憶手段１８と、を備える。
【００９９】
基準ＲＴＴ変動量推定手段１６Ｃ以外の構成については、図１で説明したパケット送信装置１と同一の構成であるため、同一の符号を付して説明を省略する。なお、記憶手段１８は、記憶する内容がパケット送信装置１に対して増えている。その内容は、基準ＲＴＴ変動量推定手段１６Ｃにより更新されるものであるため、基準ＲＴＴ変動量推定手段１６Ｃの説明において行うこととする。
【０１００】
基準ＲＴＴ変動量推定手段１６Ｃは、ＲＴＴ計測手段１４１で計測されるＲＴＴの変動量を平滑化して、ＲＴＴの増加判定の基準となる基準ＲＴＴ変動量を推定するものである。ここでは、基準ＲＴＴ変動量推定手段１６Ｃは、変動量算出手段１６１Ｃと、送信時刻判定手段１６３と、を備える。
なお、基準ＲＴＴ変動量推定手段１６Ｃは、送達確認されたパケットの送信時刻を基準ＲＴＴ変動量の更新判定に用いるが、この送信時刻については、ＲＴＴに付随して、送達確認応答受信手段１４（ＲＴＴ計測手段１４１）から、輻輳ウィンドウ制御手段１５（パケットロス検出手段１５１）およびＲＴＴ変動解析手段１７（ＲＴＴ増加判定手段１７２）を経由して取得することとする。
【０１０１】
変動量算出手段（基準ＲＴＴ変動量算出手段）１６１Ｃは、ＴＣＰのコネクション確立中において、今回受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（今回のＲＴＴ）と、その直前に受信した送達確認応答（ＡＣＫ）で計測されたＲＴＴ（前回のＲＴＴ）との差分（ジッタ）の移動平均を演算することで、ＲＴＴの平滑化した変動量を算出し、基準ＲＴＴ変動量として更新するものである。この機能については、図１で説明した変動量算出手段１６１と同じである。
【０１０２】
ただし、変動量算出手段１６１Ｃは、送信時刻判定手段１６３に、パケットの送信時刻間隔が所定の時間長よりも長いか否かを問い合わせ、送信時刻間隔が短い場合だけ、新たな基準ＲＴＴ変動量として更新する。
【０１０３】
送信時刻判定手段１６３は、送達確認されたパケットの送信時刻の間隔が所定の時間長よりも長いか否かを判定するものである。
具体的には、送信時刻判定手段１６３は、逐次ＲＴＴに付随して通知される送達確認されたパケットの送信時刻から、以下の式（４）に示すような判定式（ｉｆ文）によって、送信時刻間隔が閾値（所定の時間長）よりも長いか否かを判定する。そして、変動量算出手段１６１Ｃが、その判定結果を取得し、送信時刻間隔が閾値よりも長ければ（ｔｈｅｎ）基準ＲＴＴ変動量の更新を行わず、閾値以下（ｏｔｈｅｒｗｉｓｅ）であれば基準ＲＴＴ変動量を更新する。
【０１０４】
ｉｆ  （今回送達確認されたパケットの送信時刻
−前回送達確認されたパケットの送信時刻）  ＞  β
ｔｈｅｎ            基準ＲＴＴ変動量の更新を行わない
ｏｔｈｅｒｗｉｓｅ  基準ＲＴＴ変動量の更新を行う                  …式（４）
【０１０５】
ここで、βは更新を行うか否かを判定するための閾値である。
この閾値βは、例えば、パケット送信装置１Ｃで動作するＯＳ（Operating System）上のクロックが計測可能な最小時間とすることができる。また、例えば、パケット送信装置１Ｃから送信パケットを出力するために必要な時間（送信パケット長÷送信インタフェース速度）を閾値βとすることができる。また、例えば、最小ＲＴＴ時間と基準ＲＴＴ変動量とを加算した時間長を輻輳ウィンドウサイズ（ＣＷＮＤ）で割った値とすることができる。あるいは、これら例示した値の最大値を閾値βとしてもよい。
【０１０６】
この送信時刻判定手段１６３は、今回送達確認されたパケットの送信時刻（今回の送信時刻）を、記憶手段１８（１８２）に、前回送達確認されたパケットの送信時刻（前回の送信時刻）として記憶する。また、送信時刻判定手段１６３は、この判定結果を変動量算出手段１６１Ｃに出力する。
【０１０７】
以上説明したようにパケット送信装置１Ｃを構成することで、パケット送信装置１Ｃは、輻輳とは関係なく発生するＲＴＴの変動量（基準ＲＴＴ変動量）を推定し、動的に遅延増加の判定を行うことができる。また、このとき、パケット送信装置１Ｃは、パケットの送信時刻間隔が長い場合、基準ＲＴＴ変動量の更新を行わないことで、キューイング遅延が異なる二つのＲＴＴの差分を、基準ＲＴＴ変動量の更新判定のサンプルから除外することができる。
【０１０８】
〔パケット送信装置の動作〕
次に、図３および図１１を参照（構成については適宜図１０参照）して、本発明の第３実施形態に係るパケット送信装置１Ｃの動作について説明する。
なお、図３に示したパケット送信装置１Ｃの動作は、ステップＳ５Ｃを除き、パケット送信装置１（図１参照）と同じ動作であるため、ここでは、説明を省略する。すなわち、パケット送信装置１Ｃの動作は、パケット送信装置１のステップＳ５をステップＳ５Ｃに替えただけである。
ここでは、図１１を参照して、ステップＳ５Ｃの動作について説明する。
なお、図１１に示したステップＳ５１Ｃ，Ｓ５４Ｃ，Ｓ５５Ｃ，Ｓ５７Ｃについては、それぞれ、図５で説明したパケット送信装置１のステップＳ５１，Ｓ５２，Ｓ５３，Ｓ５４の動作と同じであるため、詳細な説明は省略する。
【０１０９】
このパケット送信装置１Ｃの動作は、パケット送信装置１の動作に対して、新たにステップＳ５２Ｃ，Ｓ５３Ｃ，Ｓ５６Ｃの動作が付加されている。
すなわち、パケット送信装置１Ｃは、記憶手段１８（１８２）に前回のＲＴＴが記憶されている場合（ステップＳ５１ＣでＹｅｓ）、基準ＲＴＴ変動量推定手段１６Ｃの変動量算出手段１６１Ｃによって、記憶手段１８（１８２）に前回送達確認されたパケットの送信時刻（前回の送信時刻）が記憶されているか否かを判定する（ステップＳ５２Ｃ）。
【０１１０】
ここで、記憶手段１８（１８２）に前回の送信時刻が記憶されている場合（ステップＳ５２ＣでＹｅｓ）、パケット送信装置１Ｃは、送信時刻判定手段１６３によって、今回送達確認されたパケットの送信時刻（今回の送信時刻）と前回送達確認されたパケットの送信時刻（前回の送信時刻）との差が、閾値βよりも大きいか否かを判定する（ステップＳ５３Ｃ）。
【０１１１】
そして、今回の送信時刻と前回の送信時刻との差が閾値β以下であれば（ステップＳ５３ＣでＮｏ）、パケット送信装置１Ｃは、変動量算出手段１６１Ｃによって、ステップＳ５４Ｃ，Ｓ５５Ｃの動作、すなわち、基準ＲＴＴ変動量の更新を行う。
一方、記憶手段１８（１８２）に前回のＲＴＴが記憶されていない場合（ステップＳ５１ＣでＮｏ）、記憶手段１８（１８２）に前回の送信時刻が記憶されていない場合（ステップＳ５２ＣでＮｏ）、または、今回の送信時刻前回の送信時刻との差が閾値よりも大きい場合（ステップＳ５３ＣでＹｅｓ）、パケット送信装置１Ｃは、ステップＳ５６Ｃに動作を進める。
【０１１２】
そして、パケット送信装置１Ｃは、変動量算出手段１６１Ｃによって、今回の送信時刻を、前回の送信時刻として記憶手段１８（１８２）に記憶する（ステップＳ５６Ｃ）。また、パケット送信装置１Ｃは、変動量算出手段１６１Ｃによって、今回のＲＴＴを、前回のＲＴＴとして記憶手段１８（１８２）に記憶する（ステップＳ５７Ｃ）。
【０１１３】
以上説明したようにパケット送信装置１Ｃを構成し、動作させることで、パケット送信装置１Ｃは、パケット送信装置１の効果に加え、以下の効果を奏する。
すなわち、パケット送信装置１Ｃは、送信時刻判定手段１６３によって、パケットの送信時刻間隔が所定の時間長よりも長いか否かを判定することができ、基準ＲＴＴ変動量算出手段によって、パケットの送信時刻間隔が長く二つのパケットそれぞれに発生するキューイング遅延が変化している場合のＲＴＴ変動量を基準ＲＴＴ変動量の推定に用いないため、より正確に基準ＲＴＴ変動量を推定することができる。これによって、パケット送信装置１Ｃは、ＣＷＮＤをより適切に制御することができ、ネットワーク環境に応じた最適なスループットを維持することができる。
【０１１４】
≪第４実施形態≫
〔パケット送信装置の構成〕
次に、図１２を参照して、本発明の第４実施形態に係るパケット送信装置１Ｄの構成について説明する。
【０１１５】
パケット送信装置１Ｄは、遅延ベースの輻輳制御でパケットの送信を行うもので、図７で説明したパケット送信装置１Ｂと、図１０で説明したパケット送信装置１Ｃとを併せた機能を有する。
すなわち、パケット送信装置１Ｄは、所定の時間区間におけるＲＴＴジッタの最大値の移動平均を基準ＲＴＴ変動量として、その時間区間で基準ＲＴＴ変動量を更新するが、パケットの送信時刻間隔が予め定めた時間長よりも長い場合には、ＲＴＴジッタの最大値を更新しないこととする。
【０１１６】
図１２に示すように、パケット送信装置１Ｃは、データ入力手段１０と、データバッファ（一時記憶手段）１１と、フロー制御手段１２と、データ送信手段１３と、送達確認応答受信手段１４と、輻輳ウィンドウ制御手段１５と、基準ＲＴＴ変動量推定手段１６Ｄと、ＲＴＴ変動解析手段１７と、記憶手段１８と、を備える。
【０１１７】
基準ＲＴＴ変動量推定手段１６Ｄ以外の構成については、パケット送信装置１（図１）、パケット送信装置１Ｂ（図７）、パケット送信装置１Ｃ（図１０）と同一の構成であるため、同一の符号を付して説明を省略する。
【０１１８】
基準ＲＴＴ変動量推定手段１６Ｄは、ＲＴＴ計測手段１４１で計測されるＲＴＴの変動量を平滑化して、ＲＴＴの増加判定の基準となる基準ＲＴＴ変動量を推定するものである。ここでは、基準ＲＴＴ変動量推定手段１６Ｄは、変動量算出手段１６１Ｄと、時間区間判定手段１６２と、送信時刻判定手段１６３と、を備える。
なお、時間区間判定手段１６２はパケット送信装置１Ｂ（図７）、送信時刻判定手段１６３はパケット送信装置１Ｃ（図１０）とそれぞれ同じものであるため、説明を省略する。
【０１１９】
変動量算出手段（基準ＲＴＴ変動量算出手段）１６１Ｄは、変動量算出手段１６１Ｂ（図７）と、変動量算出手段１６１Ｃ（図１１）とを併せた機能を有するものである。
すなわち、変動量算出手段１６１Ｄは、ＴＣＰのコネクション確立中において、所定の時間区間における、パケットの送信時刻間隔が所定の時間長以下の場合に計測したＲＴＴの変動量の最大値を用いて基準ＲＴＴ変動量を更新する。
【０１２０】
具体的には、変動量算出手段１６１Ｄは、時間区間判定手段１６２に時間区間が所定時間経過したか否かを問い合わせ、所定時間が経過した場合に、基準ＲＴＴ変動量を更新する。さらに、変動量算出手段１６１Ｄは、送信時刻判定手段１６３に、パケットの送信時刻間隔が所定の時間長よりも長いか否かを問い合わせ、送信間隔が短い場合だけ、現区間最大変動量と比較し、ＲＴＴ差分が現区間最大変動量より大きい場合に更新を行う。
このように、パケット送信装置１Ｄを構成することで、パケット送信装置１Ｄは、パケット送信装置１Ｂ（図７）の効果と、パケット送信装置１Ｃ（図１０）の効果とを併せて持つことになる。
【０１２１】
〔パケット送信装置の動作〕
次に、図３および図１３を参照（構成については適宜図１２参照）して、本発明の第４実施形態に係るパケット送信装置１Ｄの動作について説明する。
図３に示したパケット送信装置１Ｄの動作は、ステップＳ５Ｄを除き、パケット送信装置１（図１参照）と同じ動作である。すなわち、パケット送信装置１Ｄの動作は、パケット送信装置１のステップＳ５をステップＳ５Ｄに替えただけである。
【０１２２】
また、図１３に示したパケット送信装置１ＤのステップＳ５Ｄの動作は、基本的に、図９で説明したパケット送信装置１Ｂ（図７）のステップＳ５Ｂの動作と、図１１で説明したパケット送信装置１Ｃ（図１０）のステップＳ５Ｃの動作とを併せたものである。
そこで、ここでは、図９および図１１で説明した動作と同じステップについて、同一のステップ番号を用いることで、図１３の説明を省略する。
【０１２３】
以上説明したように、パケット送信装置１Ｄは、自身の持つ時刻解像度に対して、送信レートが大きくなりバースト的にパケットの送受信が発生する環境や、輻輳以外の遅延増加の頻度が低い環境であっても、ＣＷＮＤの過剰な減少を防止して、高スループットを維持することができる。
さらに、パケット送信装置１Ｄは、パケットの送信時刻間隔が長く二つのパケットそれぞれに発生するキューイング遅延が変化している場合のＲＴＴ変動量を基準ＲＴＴ変動量の推定に用いないため、より正確に基準ＲＴＴ変動量を推定することができる。これによって、パケット送信装置１Ｄは、ＣＷＮＤをより適切に制御することができ、ネットワーク環境に応じた最適なスループットを維持することができる。
【０１２４】
以上、第１から第４実施形態に係るパケット送信装置の構成および動作について説明したが、これらパケット送信装置は、コンピュータを、前記した各手段として機能させるためのプログラム（パケット送信プログラム）で動作させることができる。
【０１２５】
≪参考例の実施形態≫
〔パケット受信装置〕
最後に、図１４を参照して、パケット送信装置１（１Ｂ，１Ｃ，１Ｄ）が送信するパケットデータを受信する一般的なパケット受信装置２について簡単に説明しておく。
パケット受信装置２は、データ受信手段２０と、データバッファ（一時記憶手段）２１と、データ出力手段２２と、フロー制御手段２３と、送達確認応答送信手段２４と、を備える。
【０１２６】
データ受信手段２０は、通信回線を介して、パケット送信装置１から送信されるパケットデータを受信するものである。このデータ受信手段２０は、受信したパケットを逐次データバッファ２１に書き込むとともに、フロー制御手段２３に対して、パケットを受信した旨の通知を行う。
【０１２７】
データバッファ（一時記憶手段）２１は、データ受信手段２０を介して受信されたパケットデータを一時的に記憶しておくもので、例えば、半導体メモリ等の記憶媒体である。このデータバッファ２１に記憶されたパケットデータは、データ出力手段２２によって読み出され、データバッファ２１は、ＦＩＦＯとして機能する。
【０１２８】
データ出力手段２２は、データバッファ２１に記憶されているパケットを、順次読み出して外部に出力するものである。なお、データ出力手段２２は、パケットを読み出した旨をフロー制御手段２３に通知する。
【０１２９】
フロー制御手段２３は、パケット送信装置１との間でフロー制御を行うものである。
このフロー制御手段２３は、データバッファ２１の容量で予め定めた最大パケット数（受信ウィンドウサイズ）を管理し、データバッファ２１に記憶されるパケット数が、受信ウィンドウサイズを超過しないように、フロー制御を行う。なお、データバッファ２１に記憶されるパケット数は、データ受信手段２０で受信されたパケットと、データ出力手段２２で出力されるパケットの数で把握することができる。
ここで、フロー制御手段２３は、データ受信手段２０が受信したパケットに対して、受信した旨と、次に受信すべきパケットを特定する情報を含んだ送達確認応答（ＡＣＫ）を送達確認応答送信手段２４に出力する。
【０１３０】
送達確認応答送信手段２４は、フロー制御手段２３から出力される送達確認応答（ＡＣＫ）を、通信回線を介して、パケット送信装置１に送信するものである。
パケット送信装置１（１Ｂ，１Ｃ，１Ｄ）は、以上説明したように、一般的なパケット受信装置２に対して、パケットを送信する場合であっても、輻輳とは関係がない伝送遅延によるＣＷＮＤの必要以上の減少を防止することができ、ネットワーク環境に適したスループットを維持してパケットの送信を行うことができる。
【符号の説明】
【０１３１】
１      パケット送信装置
１０    データ入力手段
１１    データバッファ（一時記憶手段）
１２    フロー制御手段
１３    データ送信手段
１３１  送信時刻書込手段
１４    送達確認応答受信手段
１４１  ＲＴＴ計測手段
１５    輻輳ウィンドウ制御手段
１５１  パケットロス検出手段
１５２  ロス発生用ＣＷＮＤ処理手段
１５３  ＲＴＴ変動用ＣＷＮＤ処理手段
１６    基準ＲＴＴ変動量推定手段
１６１  変動量算出手段（基準ＲＴＴ変動量算出手段）
１６２  時間区間判定手段
１６３  送信時刻判定手段
１７    ＲＴＴ変動解析手段
１７１  最小ＲＴＴ更新手段
１７２  ＲＴＴ増加判定手段
１８    記憶手段
【図１】
2015033125.tif 000003
【図２】
2015033125.tif 000004
【図３】
2015033125.tif 000005
【図４】
2015033125.tif 000006
【図５】
2015033125.tif 000007
【図６】
2015033125.tif 000008
【図７】
2015033125.tif 000009
【図８】
2015033125.tif 000010
【図９】
2015033125.tif 000011
【図１０】
2015033125.tif 000012
【図１１】
2015033125.tif 000013
【図１２】
2015033125.tif 000014
【図１３】
2015033125.tif 000015
【図１４】
2015033125.tif 000016