(57)【要約】【課題】ネットワークへの過剰なセグメントの送信を効果的に抑制できるようにする。【解決手段】受信バイト数計算部１４は、最小時間計測部１３にて計測されたＲＴＴの最小値の期間内に受信側に到達したセグメントのバイト数を送信側で算出し、ターゲット計算部１５は、受信バイト数計算部１４にて算出された受信セグメントのバイト数に基づいて、セグメントの送信制御に用いるターゲットを計算し、送信セグメント制御部１６は、ターゲット計算部１５にて計算されたターゲットに基づいて、セグメントの送信制御を行う。【選択図】図１
2008259164.tif 000002
【特許請求の範囲】
【請求項１】
一定期間内に受信側に到達したセグメントのバイト数を送信側で算出する受信バイト数計算部と、
前記受信バイト数計算部にて算出されたセグメントのバイト数に基づいて、送信セグメント数を制御する送信セグメント制御部とを備えることを特徴とする通信端末。
【請求項２】
ＲＴＴの最小値を計測する最小時間計測部と、
前記最小時間計測部にて計測されたＲＴＴの最小値の期間内に受信側に到達したセグメントのバイト数を送信側で算出する受信バイト数計算部と、
前記受信バイト数計算部にて算出されたセグメントのバイト数に基づいて、送信セグメント数を制御する送信セグメント制御部とを備えることを特徴とする通信端末。
【請求項３】
前記最小時間計測部は、セグメントの送信が所定時間以上行われなかった場合、あるいは輻輳ウィンドウが初期ウィンドウサイズを下回った場合、あるいは所定の計測時間に渡って前記ＲＴＴの最小値にて規定される値以下のＲＴＴが計測されなかった場合、前記ＲＴＴの最小値を再設定することを特徴とする請求項２記載の通信端末。
【請求項４】
前記送信セグメント制御部は、送信側が送信することができる最大セグメントサイズ、あるいはＡＣＫされたバイト数に基づいて、セグメントの送出を制限することを特徴とする請求項２または３記載の通信端末。
【請求項５】
前記受信バイト数計算部にて算出されたセグメントのバイト数を考慮することなく、ＡＣＫ受信時またはパケットロス発生時の輻輳ウィンドウまたはスロースタート閾値を計算する輻輳ウィンドウ計算部をさらに備え、
前記送信セグメント制御部は、前記輻輳ウィンドウ計算部にて計算された輻輳ウィンドウまたはスロースタート閾値に基づいてセグメントの送信制御を行うことを特徴とする請求項１から４のいずれか１項記載の通信端末。
【請求項６】
一定期間内に受信側に到達したセグメントのバイト数を送信側で算出するステップと、
前記送信側で算出されたセグメントのバイト数に基づいて、送信セグメント数を制御するステップとを備えることを特徴とする通信制御方法。
【請求項７】
一定期間内に受信側に到達したセグメントのバイト数を送信側で算出するステップと、
前記送信側で算出されたセグメントのバイト数に基づいて、送信セグメント数を制御するステップとをコンピュータに実行させることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信端末、通信制御方法および通信制御プログラムに関し、特に、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）における輻輳制御方法に適用して好適なものである。
【背景技術】
【０００２】
現在、インターネットで幅広く用いられているＴＣＰでは、ネットワークの輻輳を回避するために、セグメントを送信する際に輻輳ウィンドウ（ＣＷＮＤ）を利用して輻輳制御が行われている。
一般的にＴＣＰの輻輳制御アルゴリズムでは、以下のようにして輻輳ウィンドウ（ＣＷＮＤ）の設定が行なわれる。
【０００３】
１．ＡＣＫ（Ａｃｋｎｏｗｌｅｇｍｅｎｔ）受信時
１．１．Ｓｌｏｗ  Ｓｔａｒｔ時
ＣＷＮＤ（ｎ＋１）＝ＣＷＮＤ（ｎ）＋ａ×ＭＳＳに設定する。
１．２．Ｃｐｎｇｅｓｔｉｏｎ  Ａｖｏｉｄａｎｃｅ時
ＣＷＮＤ（ｎ＋１）＝ＣＷＮＤ（ｎ）＋ａ／ＣＷＮＤ（ｎ）に設定する。
２．パケットロス発生時
ＣＷＮＤ（ｎ＋１）＝（１−ｂ）×ＣＷＮＤ（ｎ）に設定する。
【０００４】
ただし、ＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）は送信側が送信することができる最大セグメントサイズである。また、ＣＷＮＤ（ＣＯＮＧＥＳＴＩＯＮ  ＷＩＮＤＯＷ）は、ＴＣＰの送信可能サイズを制限するＴＣＰステート変数である。
通常のＴＣＰでは、ａ＝１、ｂ＝０．５が利用される。
このＴＣＰの輻輳制御アルゴリズムでは、セグメントロスを契機としてＣＷＮＤを減少させて、輻輳制御が行われるため、セグメントロスが発生しない限り、ＣＷＮＤが増加し続ける。このため、セグメントロスが発生しない限り、ＣＷＮＤが増加し、中継ノードの受信バッファの利用率の上昇によってＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）の増加を招く。
【０００５】
例えば、非特許文献１には、送信側のＳｌｏｗ  Ｓｔａｒｔを考慮し、受信側が１ＲＴＴの間にアプリケーションに読み込んだバイト数（ｒｃｖ_ｂｙｔｅｓ）の２倍を広告ウ
ィンドウとして送信側に伝え、送信側がセグメントの送信量をｒｃｖ_ｂｙｔｅｓ×２に
抑えることで、余分なセグメントの送信を防止する方法が開示されている。
図７は、従来のＲＴＴの計測方法を示す図である。各セグメントは１０ｂｙｔｅのデータを持つと想定し、各セグメントの最初のシーケンス番号をｓｅｑとして図に表している。
【０００６】
図７において、ＴＣＰ受信側３２では、広告ウィンドウ（ｒｃｖ_ｗｎｄ）を用いてａ
ｃｋ（ａｃｋｎｏｗｌｅｄｇｅ  ｎｕｍｂｅｒ）＋ｒｃｖ_ｗｎｄのｓｅｑ（ｓｅｑｕｅ
ｎｃｅ  ｎｕｍｂｅｒ）−１をＴＣＰ送信側３１から受け取るまでの時間を１ＲＴＴとすることができる。
例えば、ａｃｋ＝２１０、ｒｃｖ_ｗｎｄ＝６０とすると、ＴＣＰ受信側３２では、ｓｅｑ＝２１０からｓｅｑ＝２６９（ａｃｋ＋ｒｃｖ＿ｗｎｄ−１）をＴＣＰ送信側３１から受け取るまでの時間を１ＲＴＴとすることができる。
【非特許文献１】Ｄｙｎａｍｉｃ  Ｒｉｇｈｔ−Ｓｉｚｉｎｇ  ｉｎ  ＴＣＰ  Ｍｉｋｅ  Ｆｉｓｋ  ａｎｄ  Ｗ．Ｆｅｎｇ  ２ｎｄ  Ａｎｎｕａｌ  Ｌｏｓ  Ａｌａｍｏｓ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  Ｉｎｓｔｉｔｕｔｅ  Ｓｙｍｐｏｓｉｕｍ（ＬＡＣＳＩ２００１），Ｓｎｔａ  Ｆｅ，Ｎｅｗ  Ｍｅｘｉｃｏ，Ｏｃｔｏｂｅｒ  ２００１
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１に開示された方法では、ＲＴＴの計測やｒｃｖ_ｂｙｔｅ
ｓの算出がＴＣＰ受信側３２で行われるため、ＲＴＴの計測精度の劣化を招いたり、過剰なセグメントの送出が行われたりするという問題があった。
図８は、従来のＲＴＴの計測方法の問題点を示す図である。
図８において、ＣＷＮＤがｒｃｖ_ｗｎｄよりも小さいと、ＲＴＴが通常よりも長く計
測され、ｒｃｖ_ｂｙｔｅｓが増加するため、過剰なセグメントの送出が行われる。例え
ば、ａｃｋ＝２１０、ｒｃｖ_ｗｎｄ＝６０とし、ＣＷＮＤ＝４０とすると、ｓｅｑ＝２
３０が送信される時刻とｓｅｑ＝２４０が送信される時刻との間の間隔が大きくなる。このため、ＴＣＰ受信側３２では、ｓｅｑ＝２１０からｓｅｑ＝２６９を受け取るまでの時間が１ＲＴＴとされるため、ＲＴＴが通常よりも長く計測される。
【０００８】
また、非特許文献１に開示された方法では、ｒｃｖ_ｂｙｔｅｓの２倍を広告ウィンドウとして送信側に伝えるとともに、計測されたｒｃｖ_ｂｙｔｅｓの最大値を利用するため、「１ＲＴＴの間に送信したバイト数＝１ＲＴＴの間に受信したバイト数」という理想的な場合に比べると、過剰なセグメントの送出が行われるようになる。
そこで、本発明の目的は、ネットワークへの過剰なセグメントの送信を効果的に抑制することが可能な通信端末、通信制御方法および通信制御プログラムを提供することである。
【課題を解決するための手段】
【０００９】
上述した課題を解決するために、請求項１記載の通信端末によれば、一定期間内に受信側に到達したセグメントのバイト数を送信側で算出する受信バイト数計算部と、前記受信バイト数計算部にて算出されたセグメントのバイト数に基づいて、送信セグメント数を制御する送信セグメント制御部とを備えることを特徴とする。
また、請求項２記載の通信端末によれば、ＲＴＴの最小値を計測する最小時間計測部と、前記最小時間計測部にて計測されたＲＴＴの最小値の期間内に受信側に到達したセグメントのバイト数を送信側で算出する受信バイト数計算部と、前記受信バイト数計算部にて算出されたセグメントのバイト数に基づいて、送信セグメント数を制御する送信セグメント制御部とを備えることを特徴とする。
【００１０】
また、請求項３記載の通信端末によれば、前記最小時間計測部は、セグメントの送信が所定時間以上行われなかった場合、あるいは輻輳ウィンドウが初期ウィンドウサイズを下回った場合、あるいは所定の計測時間に渡って前記ＲＴＴの最小値にて規定される値以下のＲＴＴが計測されなかった場合、前記ＲＴＴの最小値を再設定することを特徴とする。
また、請求項４記載の通信端末によれば、前記送信セグメント制御部は、送信側が送信することができる最大セグメントサイズ、あるいはＡＣＫされたバイト数に基づいて、セグメントの送出を制限することを特徴とする。
【００１１】
また、請求項５記載の通信端末によれば、前記受信バイト数計算部にて算出されたセグメントのバイト数を考慮することなく、ＡＣＫ受信時またはパケットロス発生時の輻輳ウィンドウまたはスロースタート閾値を計算する輻輳ウィンドウ計算部をさらに備え、前記送信セグメント制御部は、前記輻輳ウィンドウ計算部にて計算された輻輳ウィンドウまたはスロースタート閾値に基づいてセグメントの送信制御を行うことを特徴とする。
【００１２】
また、請求項６記載の通信制御方法によれば、一定期間内に受信側に到達したセグメントのバイト数を送信側で算出するステップと、前記送信側で算出されたセグメントのバイト数に基づいて、送信セグメント数を制御するステップとを備えることを特徴とする。
また、請求項７記載の通信制御プログラムによれば、一定期間内に受信側に到達したセグメントのバイト数を送信側で算出するステップと、前記送信側で算出されたセグメントのバイト数に基づいて、送信セグメント数を制御するステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１３】
以上説明したように、本発明によれば、受信側に到達したセグメントのバイト数を送信側で算出することにより、送信側の事情を考慮しながら、受信側に到達したセグメントのバイト数を送信側に伝える必要がなくなり、ネットワークへの過剰なセグメントの送信を効果的に抑制することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態に係る通信端末について図面を参照しながら説明する。
図１は、本発明の第１実施形態に係る送信端末の概略構成を示すブロック図である。
図１において、送信端末１１には、インターネットなどのネットワークを介して送られたセグメントを受信するセグメント受信部１２、ＲＴＴの最小値を計測する最小時間計測部１３、最小時間計測部１３にて計測されたＲＴＴの最小値の期間内に受信側に到達したセグメントのバイト数を送信側で算出する受信バイト数計算部１４、受信バイト数計算部１４にて算出された受信セグメントのバイト数に基づいて、セグメントの送信制御に用いるターゲットを計算するターゲット計算部１５、ターゲット計算部１５にて計算されたターゲットに基づいて、セグメントの送信制御を行う送信セグメント制御部１６およびインターネットなどのネットワークを介してセグメントを送信するセグメント送信部１７が設けられている。
【００１５】
そして、最小時間計測部１３は、ＴＣＰにて行われる方法と同様にしてＲＴＴを計測することができる。すなわち、Ｔｉｍｅｓｔａｍｐ  Ｏｐｔｉｏｎが利用可能な場合、最小時間計測部１３は、ＡＣＫ（Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）の受信時に、（現在の時刻）−（Ｔｉｍｅｓｔａｍｐ  Ｅｃｈｏ）をＲＴＴとすることができる。
一方、Ｔｉｍｅｓｔａｍｐ  Ｏｐｔｉｏｎが利用できない場合、最小時間計測部１３は、ＡＣＫの受信時に、（現在の時刻）−（Ａｃｋされたセグメントが送信された時刻）をＲＴＴとすることができる。
【００１６】
そして、最小時間計測部１３は、セグメントが送信されている間にＲＴＴの計測を継続して行い、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）が計測されるごとにＲＴＴの最小値（ｒｔｔ_ｍｉｎ）を更新しながら、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）を受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）の計算に用いることができる。
また、ルートの切り替えや受信端末の移動などによってＲＴＴが大きく変化する場合を考慮し、以下の場合にはＲＴＴの最小値（ｒｔｔ_ｍｉｎ）を再設定することもできる。
【００１７】
（１）セグメントの送信が１ＲＴＴ以上の時間行われなかった場合。
この場合には、１ＲＴＴとしては、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の他に、ＴＣＰ
においてＲＴＴから計算されるＲＴＯ（Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅｏｕｔ）を利用することができる。
（２）ＣＷＮＤが初期ウィンドウサイズを下回った場合。
（３）数ＲＴＴに渡ってｒｔｔ_ｍｉｎ×（ｔａｒｇｅｔ/ｒｃｖ_ｂｙｔｅｓ＋１）（ｔａｒｇｅｔは後述）以下のＲＴＴが計測されない場合。ここで、計測する期間としては、ｒｃｖ_ｂｙｔｅｓの計測の１ＲＴＴ、計測した値に基づいて送信セグメント数を制御する期間１ＲＴＴを考慮し、２ＲＴＴ以上を設定する。
【００１８】
次に、受信バイト数計算部１４は、最小時間計測部１３にてＲＴＴの最小値（ｒｔｔ_
ｍｉｎ）が計測されると、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の時間内に受信したＡＣＫ
またはＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）の情報から、受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）を算出する。
図２は、本発明の一実施形態に係る受信セグメントのバイト数の計測ポイントを従来例と比較して示すブロック図である。
【００１９】
図２において、ＴＣＰ送信側２１からは、セグメント２４がネットワーク２３を介してＴＣＰ受信側２２に送られる。そして、ＴＣＰ受信側２２で受信されたセグメント２４は受信バッファ２６に保持され、受信バッファ２６を介してアプリケーション２５に読み込まれる。
ここで、図５の方法では、アプリケーション２５に読み込まれる時点Ｐ２のセグメント２４のバイト数が輻輳制御に用いられる。このため、セグメントの再送があった場合には、アプリケーション２５に読み込まれる時点Ｐ２のセグメント数が過少／過大に評価されてしまい、正確な制御を行うことができない。
【００２０】
これに対して、本実施形態では、受信した時点Ｐ１のセグメント２４のバイト数を輻輳制御に用いることにより、ネットワークへの過剰なセグメントの送信を効果的に抑制することが可能となる。
図３は、本発明の一実施形態に係る受信セグメントのバイト数の計測方法を示す図である。
図３において、ＴＣＰ送信側２１では、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の時間内に
ＴＣＰ受信側２２から受信したＡＣＫの情報から、受信セグメントのバイト数（ｒｃｖ_
ｂｙｔｅｓ）が算出される。
【００２１】
具体的には、受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）は、以下のようにして
計測することができる。
・ＳＡＣＫ  Ｏｐｔｉｏｎがサポートされている場合。
ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の時間内に受け取ったＡＣＫによって受信端末に受
信が通知された最大のシーケンス番号（ｒｃｖ_ａｃｋ）から、計測を開始した際にＡＣ
Ｋを受信していない先頭セグメントのシーケンス番号数（ｄｒｓ_ｓｎｄ_ｕｎａ）を引いた値を利用することができる。
【００２２】
また、セグメントの再送中においては、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の時間内に
再送したセグメントの合計バイト数を考慮するために、受け取ったＡＣＫのＳＡＣＫ  Ｏｐｔｉｏｎによって通知されたセグメントの合計のバイト数（ｓａｃｋ_ｅｎｄ）から、
計測を開始した際にＳＡＣＫ  Ｏｐｔｉｏｎによって通知されたセグメントの合計のバイト数（ｓａｃｋ_ｓｔａｒｔ）を引いた値を最初の値に加える。
すなわち、ｒｃｖ_ｂｙｔｅｓ＝ｒｃｖ_ａｃｋ−ｄｒｓ_ｓｎｄ_ｕｎａ＋（ｓａｃｋ_
ｅｎｄ−ｓａｃｋ_ｓｔａｒｔ）となる。
【００２３】
なお、セグメントロスが発生していない場合、ｓａｃｋ_ｅｎｄおよびｓａｃｋ_ｓｔａｒｔの双方とも０になるので、ｒｃｖ_ｂｙｔｅｓ＝ｒｃｖ_ａｃｋ−ｄｒｓ_ｓｎｄ_ｕｎａとなる。また、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の時間内にセグメントロスが解消さ
れた場合、ｓａｃｋ_ｅｎｄは０になり、ｓａｃｋ_ｓｔａｒｔだけが有効になる。
・ＳＡＣＫ  Ｏｐｔｉｏｎがサポートされていない場合。
この場合には、重複ＡＣＫ（ｒｃｖ_ａｃｋがＡＣＫを受信していない最小のセグメント
（ｓｎｄ_ｕｎａ）以下のＡＣＫ）の数を考慮して受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）を算出することができる。
【００２４】
すなわち、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の時間内に最後に受け取ったＡＣＫによ
って受信端末に受信が通知されたシーケンス番号（ｒｃｖ_ａｃｋ）から、計測を開始し
た際にＡＣＫを受信していない先頭セグメントのシーケンス番号（ｄｒｓ_ｓｎｄ_ｕｎａ）を引いた値を利用することができる。
また、セグメントの再送中においては、再送したセグメントの合計バイト数を考慮するために、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の時間内に受信した重複ＡＣＫの数×ＭＳＳ
（ｄａｃｋ_ｅｎｄ）から、計測を開始した際に受信した重複ＡＣＫの数×ＭＳＳ（ｄａ
ｃｋ_ｓｔａｒｔ）を引いた値を最初の値に加える。
【００２５】
すなわち、ｒｃｖ_ｂｙｔｅｓ＝ｒｃｖ_ａｃｋ−ｄｒｓ_ｓｎｄ_ｕｎａ＋（ｄａｃｋ_
ｅｎｄ−ｄａｃｋ_ｓｔａｒｔ）となる。
なお、受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）が前回算出された受信セグメ
ントのバイト数（ｒｃｖ_ｂｙｔｅｓ）より増加した場合には、ＡＣＫの受信ごとに値を更新するようにしてもよい。
【００２６】
また、セグメントロスが発生していない場合、ｄａｃｋ_ｅｎｄおよびｄａｃｋ_ｓｔａｒｔの双方とも０になる。
ここで、ＡＣＫパスについてもキューイングディレイが発生する場合、状況によっては受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）を精度よく計測できないことがある。
このため、ＡＣＫの送信時刻を用いることによってＡＣＫパスのキューイングディレイの影響をなくし、受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）を精度よく計測するこ
とが可能となる。
【００２７】
図４は、本発明の一実施形態に係る受信セグメントのバイト数の計測方法のその他の例を示す図である。
図４において、ＡＣＫにおいてＴＣＰ送信側２１側と同様のＴｉｍｅｓｔａｍｐ  Ｏｐｔｉｏｎが付加されている場合、ＲＴＴの最小値（ｒｔｔ_ｍｉｎ）の時間内に送信され
たＡＣＫの送信時刻を参照することにより、受信セグメントのバイト数（ｒｃｖ_ｂｙｔ
ｅｓ）を計測することができる。但し、受信側と送信側で用いられているＴｉｍｅｓｔａｍｐ  Ｏｐｔｉｏｎの粒度が異なる場合、送信側でＡＣＫの送信時刻を補正する必要がある。
【００２８】
図５は、送信側においてＡＣＫの送信時刻を補正する例を示す図である。
図５において、ｔｓはセグメントの送信時刻、ｔｓ＿ｅｃｈｏはＴｉｍｅｓｔａｍｐ  Ｅｃｈｏを表す。送信側では、ＡＣＫを受信した際に、一定の期間計測を行い、その間に受信したＡＣＫのｔｓとｔｓ＿ｅｃｈｏの増加量を計算し、補正に利用する。図５においては、ｔｓ＿ｅｃｈｏの増加量が６０であるに対して、ｔｓの増加量は６なので、ｒｃｖ＿ｂｙｔｅｓは送信を開始した際のＡＣＫの送信時刻にｒｔｔ＿ｍｉｎの１０分の１を加えた時刻までのＡＣＫによって算出される。
【００２９】
次に、図１のターゲット計算部１５は、受信バイト数計算部１４にて算出された受信セグメントのバイト数に基づいてターゲット（ｔａｒｇｅｔ）を計算する。
ここで、ターゲットの計算方法としては、以下の６種類の方法が考えられる。
（１）受信バイト数計算部１４にて計測された受信セグメントのバイト数（ｒｃｖ_ｂｙ
ｔｅｓ）の最大値×２を利用する方法。
（２）受信バイト数計算部１４にて計測された受信セグメントのバイト数（ｒｃｖ_ｂｙ
ｔｅｓ）×２を利用する方法。
（３）受信バイト数計算部１４にて計測された直近の２回の受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）の平均を利用する方法。
（４）受信バイト数計算部１４にて計測された受信セグメントのバイト数（ｒｃｖ_ｂｙ
ｔｅｓ）の加重平均の２倍を利用する方法。
【００３０】
例えば、ｔａｒｇｅｔ＝（それまでに計測された受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）の平均（ａｖ_ｒｃｖ_ｂｙｔｅｓ）×７／８＋（ｒｃｖ_ｂｙｔｅｓ）×１／８）×２とすることができる。
（５）任意の定数αを利用する方法。
例えば、ｒｃｖ_ｂｙｔｅｓ＋α×ＭＳＳ≧ｃｗｎｄ
かつｃｗｎｄ＜Ｓｌｏｗｓｔａｒｔ  Ｔｈｒｅｓｈｏｌｄ（ｓｓｔｈｒｅｓｈ）の場合、ｔａｒｇｅｔ＝ｒｃｖ_ｂｙｔｅｓ×２とすることができる。
【００３１】
それ以外の場合は、
ｔａｒｇｅｔ＝ｒｃｖ_ｂｙｔｅｓ＋α×ＭＳＳとすることができる。
（６）受信バイト数計算部１４にて計測された受信セグメントのバイト数（ｒｃｖ_ｂｙ
ｔｅｓ）の加重平均と、加重平均偏差を用いる方法。
例えば、受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）の加重平均（ａｖｇ＿ｒｃｖ＿ｂｙｔｅｓ）＝（ａｖｇ_ｒｃｖ_ｂｙｔｅｓ）×７／８＋（ｒｃｖ_ｂｙｔｅｓ）×１／８として計算し、受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）の加重平均偏差（ｖａｒ＿ｒｃｖ＿ｂｙｔｅｓ）＝（ｖａｒ＿ｒｃｖ_ｂｙｔｅｓ）×７／８＋｜ｒｃｖ_ｂｙｔｅｓ−ａｖｇ＿ｒｃｖ＿ｂｙｔｅｓ｜×１／８として計算し、求められたｖａｒ＿ｒｃｖ_ｂｙｔｅｓを利用し、ｔａｒｇｅｔ＝ａｖｇ＿ｒｃｖ＿ｂｙｔｅｓ＋ｖａｒ＿ｒｃｖ_ｂｙｔｅｓ×４とすることができる。
【００３２】
なお、定数αは、ネットワークの状況に応じて任意に設定することができ、最低でも、ｃｗｎｄ≧ｓｓｔｈｒｅｓｈの場合に１ＲＴＴの間に最大限増加するｃｗｎｄの値（ＴＣＰであれば１ＭＳＳ）以上に設定することができる。
また、ｔａｒｇｅｔが所定値以下にならないように任意の定数βを利用し、β×ＭＳＳをｔａｒｇｅｔの下限値として用いることができる。定数βは任意に設定することができるが、例えば、初期ウィンドウサイズを用いることができる。
【００３３】
次に、図１の送信セグメント制御部１６は、ターゲット計算部１５にて計算されたｔａｒｇｅｔに基づいてセグメントの送信制御を行う。なお、送信セグメント制御部１６は、ｔａｒｇｅｔが急激に増加した時にバースト的にセグメントが送出されるのを防止するために、ｓｐａｃｅという値を利用して、実際のセグメントの送出を制限することができる。
【００３４】
ここで、ｓｐａｃｅは以下のように設定することができる。
ｓｐａｃｅ＜ｔａｒｇｅｔの場合。
ＡＣＫ受信ごとにｓｐａｃｅ＝ｓｐａｃｅ＋２ＭＳＳとする。
ｓｐａｃｅ＞ｔａｒｇｅｔの場合には、以下の２種類の方法が考えられる。
（１）ｓｐａｃｅ＝ｔａｒｇｅｔとする方法。
（２）ＡＣＫ受信ごとにｓｐａｃｅ＝ｓｐａｃｅ−ＭＳＳとする方法。
【００３５】
なお、ＡＣＫされたバイト数が計算できる場合には、
ｓｐａｃｅ＜ｔａｒｇｅｔの場合。
ＡＣＫ受信ごとにｓｐａｃｅ＝ｓｐａｃｅ＋ＡＣＫされたバイト数とする。
ｓｐａｃｅ＞ｔａｒｇｅｔの場合には、以下の２種類の方法が考えられる。
（１）ｓｐａｃｅ＝ｔａｒｇｅｔとする方法。
（２）ＡＣＫ受信ごとにｓｐａｃｅ＝ｓｐａｃｅ−ＡＣＫされたバイト数／２とする方法。
また、ＡＣＫが重複ＡＣＫの場合には、１ＭＳＳとして扱い、ｓｐａｃｅを減少させる際にＡＣＫされたバイト数が１ＭＳＳに満たない場合には、ＡＣＫされたバイト数が１ＭＳＳ以上になるまで、ｓｐａｃｅを減少させない。
【００３６】
次に、図１のセグメント送信部１７は、送信セグメント制御部１６にて送信制御が行われたセグメントを送信する。具体的には、ｓｐａｃｅ、ｃｗｎｄおよびｒｃｖ_ｗｎｄの
最小値に従ってセグメントを送信することができ、ｓｐａｃｅの値がｃｗｎｄおよびｒｃｖ_ｗｎｄの最小値を下回る場合には、ｓｐａｃｅに従ってセグメントを送信することが
できる。
これにより、送信側で算出された受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）に
基づいて、セグメントの送信を抑制することが可能となり、ネットワークへの過剰なセグメントの送信を効果的に抑制することが可能となる。
【００３７】
なお、ｃｗｎｄが小さい場合に通信速度を妨げないようにするために、受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）が、受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）の計測時のｃｗｎｄ＋α（定数）以下である場合、ｓｐａｃｅを用いた制御は行わないようにすることもできる。
さらに、再送時にｓｐａｃｅによる制御を行っていないＴＣＰとの公平性を保つために、ｓｐａｃｅを用いた制御を行わないようにして得られたＣＷＮＤの値を用いてＡＣＫ受信時またはパケットロスの発生時のＣＷＮＤおよびＳＳＴＨＲＥＳＨを設定するようにしてもよい。
【００３８】
図６は、本発明の第２実施形態に係る送信端末の概略構成を示すブロック図である。
図６において、送信端末１１１には、図１の構成に加え、ＡＣＫ受信時またはパケットロスの発生時のＣＷＮＤおよびＳＳＴＨＲＥＳＨを計算する輻輳ウィンドウ計算部１８が設けられている。
ここで、輻輳ウィンドウ計算部１８は、ＡＣＫ受信時またはパケットロスの発生時のＣＷＮＤおよびＳＳＴＨＲＥＳＨを以下のようにして計算することができる。
【００３９】
すなわち、パケットロス発生時には以下の様にＷＮＤ（Ｗｉｎｄｏｗ）を用いて、ＳＳＴＨＲＥＳＨおよびＣＷＮＤを決定する。
ＷＮＤ＝Ｍａｘ（ＣＷＮＤ，ＣＷＮＤ＿ｅｓｔ）
ここで、ＣＷＮＤ＿ｅｓｔは、ｓｐａｃｅを用いた制御を行わない場合に得られるであろうＣＷＮＤの値である。
【００４０】
２．１．ＦＦ（Ｆａｓｔ  Ｒｅｔｒａｎｓｍｉｔ＆Ｆａｓｔ  Ｒｅｃｏｖｅｒｙ：高速再送および高速復帰）時
ＳＳＴＨＲＥＳＨ＝（１−ｂ）×ＷＮＤ
ＣＷＮＤ＝ＳＳＴＨＲＥＳＨになるように設定する。
２．２．ＲＴＯ（Ｒｅｔｒａｎｓｍｉｔ  Ｔｉｍｅｏｕｔ：再送タイムアウト）発生時
ＳＳＴＨＲＥＳＨ＝（１−ｂ）×ＷＮＤ
ＣＷＮＤ＝１×ＭＳＳになるように設定する。
【００４１】
ただし，受信セグメントのバイト数（ｒｃｖ_ｂｙｔｅｓ）が、受信セグメントのバイ
ト数（ｒｃｖ_ｂｙｔｅｓ）の計測時のｃｗｎｄ＋α（定数）以下である場合、輻輳によ
るパケットロスではないと判断し、ＣＷＮＤとＳＳＴＨＲＥＳＨを減少させないことも出来る。
なお、ＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）は送信側が送信することができる最大セグメントサイズである。また、ＣＷＮＤ（ＣＯＮＧＥＳＴＩＯＮ  ＷＩＮＤＯＷ）は、ＴＣＰの送信可能サイズを制限するＴＣＰステート変数である。また、ＳＳＴＨＲＥＳＨ（ＳＬＯＷＳＴＡＲＴ  ＴＨＲＥＳＨＯＬＤ）はスロースタート閾値である。
通常のＴＣＰでは、ａ＝１、ｂ＝０．５が利用される。
【００４２】
そして、ｓｐａｃｅを用いた制御を行わない場合、輻輳ウィンドウ計算部１８は、ＡＣＫ受信時またはパケットロスの発生時のＣＷＮＤおよびＳＳＴＨＲＥＳＨを上記の式に従って計算する。そして、送信セグメント制御部１６は、輻輳ウィンドウ計算部１８にて計算されたＣＷＮＤおよびＳＳＴＨＲＥＳＨに基づいてセグメントの送信制御を行いながら、セグメント送信部１７を介してセグメントを送信する。
【００４３】
なお、最小時間計測部１３、受信バイト数計算部１４およびターゲット計算部１５は、これらの手段で行われる処理を遂行させる命令が記述されたプログラムをコンピュータに実行させることにより実現することができる。
そして、このプログラムをＣＤ−ＲＯＭなどの記憶媒体に記憶しておけば、送信端末１１のコンピュータに記憶媒体を装着し、そのプログラムをコンピュータにインストールすることにより、最小時間計測部１３、受信バイト数計算部１４およびターゲット計算部１５で行われる処理を実現することができる。また、このプログラムをネットワークを介してダウンロードすることにより、このプログラムを容易に普及させることができる。
【００４４】
また、図７の方法では、図２のネットワーク２３およびＴＣＰ受信側２２の状況を考慮してｒｃｖ_ｂｙｔｅｓが決定されるのに対して、本実施形態では、ネットワーク２３の状況を考慮してｒｃｖ_ｂｙｔｅｓが決定される。ただし、ネットワーク２３のデータ伝送速度に比べてアプリケーション２５がデータを読み込む速度が極端に遅い場合には、ＴＣＰ受信側２２に滞留しているセグメントのバイト数も考慮することが好ましい。
【００４５】
ここで、ｒｃｖ_ｂｙｔｅｓを決定する際に、ＴＣＰ受信側２２の状況を考慮する方法として、受信バッファ２６に滞留しているセグメントのバイト数（ｂｕｆ_ｂｙｔｅｓ）をＡＣＫから間接的に予測することができる。
具体的には、ｂｕｆ_ｂｙｔｅｓ＝（ＡＣＫで受け取った最大のｒｃｖ_ｗｎｄ）−（現在のｒｃｖ_ｗｎｄ）とすることができる。
【００４６】
ｒｃｖ_ｂｙｔｅｓを算出する際にｂｕｆ_ｂｙｔｅｓを計算しておき、ｔａｒｇｅｔからｂｕｆ_ｂｙｔｅｓを引くことによって、ＴＣＰ受信側２２の受信バッファ２６に滞留しているセグメントのバイト数を間接的に考慮することができる。ただし、セグメントを再送している場合には、受信バッファ２６でのセグメントの滞留は順序待ちのセグメントにて引き起こされている可能性が高いので、ｂｕｆ_ｂｙｔｅｓを考慮することなく、ｔａｒｇｅｔを計算することが好ましい。
なお、上述した実施形態では、ターゲット計算部１５にて計算されたｔａｒｇｅｔに基づいてセグメントの送信制御を行う方法について説明したが、ｔａｒｇｅｔの計算を受信側で行い、受信側で計算されたｔａｒｇｅｔを送信側に伝えることで、セグメントの送信制御を行うようにしてもよい。
【図面の簡単な説明】
【００４７】
【図１】本発明の第１実施形態に係る送信端末の概略構成を示すブロック図である。
【図２】本発明の一実施形態に係る受信セグメントのバイト数の計測ポイントを従来例と比較して示すブロック図である。
【図３】本発明の一実施形態に係る受信セグメントのバイト数の計測方法を示す図である。
【図４】本発明の一実施形態に係る受信セグメントのバイト数の計測方法のその他の例を示す図である。
【図５】送信側においてＡＣＫの送信時刻を補正する例を示す図である。
【図６】本発明の第２実施形態に係る送信端末の概略構成を示すブロック図である。
【図７】従来のＲＴＴの計測方法を示す図である。
【図８】従来のＲＴＴの計測方法の問題点を示す図である。
【符号の説明】
【００４８】
１１、１１１  送信端末
１２  セグメント受信部
１３  最小時間計測部
１４  受信バイト数計算部
１５  ターゲット計算部
１６  送信セグメント制御部
１７  セグメント送信部
１８  輻輳ウィンドウ計算部
２１  ＴＣＰ送信側
２２  ＴＣＰ受信側
２３  ネットワーク
２４  セグメント
２５  アプリケーション
２６  受信バッファ
【図１】
2008259164.tif 000003
【図２】
2008259164.tif 000004
【図３】
2008259164.tif 000005
【図４】
2008259164.tif 000006
【図５】
2008259164.tif 000007
【図６】
2008259164.tif 000008
【図７】
2008259164.tif 000009
【図８】
2008259164.tif 000010