JP6417225B2 - パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法 - Google Patents

パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法 Download PDF

Info

Publication number
JP6417225B2
JP6417225B2 JP2015007501A JP2015007501A JP6417225B2 JP 6417225 B2 JP6417225 B2 JP 6417225B2 JP 2015007501 A JP2015007501 A JP 2015007501A JP 2015007501 A JP2015007501 A JP 2015007501A JP 6417225 B2 JP6417225 B2 JP 6417225B2
Authority
JP
Japan
Prior art keywords
packet
congestion window
window size
time
slow start
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015007501A
Other languages
English (en)
Other versions
JP2016134712A (ja
Inventor
智史 小山
智史 小山
青木 勝典
勝典 青木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japan Broadcasting Corp
Original Assignee
Japan Broadcasting Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Japan Broadcasting Corp filed Critical Japan Broadcasting Corp
Priority to JP2015007501A priority Critical patent/JP6417225B2/ja
Publication of JP2016134712A publication Critical patent/JP2016134712A/ja
Application granted granted Critical
Publication of JP6417225B2 publication Critical patent/JP6417225B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、パケット通信によってデータを伝送する技術に関し、特に、送達確認に基づいて輻輳ウインドウサイズを決定しパケット送信に関するスロースタート制御を行うパケット送信装置、通信端末及びスロースタート制御方法に関する。
品質の保証がされていないベストエフォートタイプのIP(Internet Protocol)ネットワークでは、ネットワーク機器内部でのバッファ溢れや、伝送中のビットエラー等によって送信パケットの廃棄が発生する。そのため、確実にデータを伝送するための送達確認を行うプロトコルとしてTCP(Transmission Control Protocol)が幅広く利用されている(例えば、非特許文献1参照)。
例えば、図12に示すように、TCPを利用して相互通信接続を行う通信端末10,20において、通信端末10にはパケット送信装置11及びパケット受信装置12が設けられ、通信端末20にはパケット送信装置22及びパケット受信装置21が設けられる。パケット送信装置11及びパケット受信装置21とパケット送信装置22及びパケット受信装置12はそれぞれ同様の機能を有し、代表してパケット送信装置11及びパケット受信装置21に注目して説明する。パケット送信装置11は、データ送信用パケットを所定の通信路を介してパケット受信装置21に送信すると、パケット受信装置21は、受信した旨の報告として送達確認応答用パケットをパケット送信装置11に送信する。
より具体的には、TCPでは、パケット受信装置21がパケットを受信すると、受信した旨の報告として、次に送信を要求するパケットの番号をパケット送信装置11に通知する。そして、パケット送信装置11は、パケット受信装置21から通知される報告に基づいて、パケットが正常にパケット受信装置21に到達したことを確認する。パケット送信装置11は、パケット受信装置21から通知される報告に基づいて、送達確認応答なしに送出可能なパケットの数を表す輻輳ウインドウサイズ(cwnd: congestion window size)を調整する。例えばパケットが正常に受信された場合はcwndを拡大し、パケットロスが検出された場合はcwndを縮小する。
このcwndを調整する技法は輻輳制御技法と呼ばれ、通信の状態によってその制御技法が切り替えられる。一般的には通信開始時やタイムアウト後に適用される「スロースタートフェーズ」、通信が安定している際に適用される「輻輳回避フェーズ」、ロスパケットを再送するための「ロスリカバリフェーズ」といったフェーズに応じて輻輳制御技法を切り替える。RFC5681には一般的なTCPが用いる輻輳制御技法が記載されている(例えば、非特許文献2参照)。RFC5681に記載されているスロースタートフェーズの動作では、cwndがスロースタート閾値(ssthresh)未満である場合、式(1)によりcwndを拡大する。ssthreshは、スロースタートフェーズと輻輳回避フェーズの切り替えを決定する閾値である。
cwnd = min(N, MSS) (1)
Nは新たに送達確認されたバイト数、MSSはパケットに含まれるデータの最大バイト数である。cwndがssthresh以上になるか、パケットロスが発生した時点でスロースタートフェーズでの動作を終了する。
TCP CUBIC(例えば、非特許文献3参照)やCTCP(例えば、非特許文献4参照)など様々なTCPが提案されているが、「スロースタートフェーズ」での動作はRFC5681と同じであり、「輻輳回避フェーズ」に独自の輻輳制御アルゴリズムが組み込まれている。
一例のスロースタートフェーズでの動作として、Limited Slow‐Startが提案されている(例えば、非特許文献5参照)。RFC5681では、cwndがssthreshより大きくなるまで式(1)によりcwndを拡大するが、Limited Slow‐Startでは新たにmax_ssthreshという閾値を導入し、cwndがmax_ssthreshより大きくなると1往復遅延時間(rtt:Round Trip Time)辺りに増加するcwndをmax_ssthresh/2に制限する。
他例のスロースタートフェーズでの動作として、Hystartが提案されている(例えば、非特許文献6参照)。Hystartでは、スロースタート終了条件についてRFC5681に加えて2つの新しい条件を定義している。1つは、1往復遅延時間(rtt)中に送信するパケット列の送信にかかる時間が閾値を超えた場合に終了する。もう1つは、所定の1計測期間中に送信するパケット列の先頭の数パケットで計測した最小のrttであるrttminが、それまでに計測した最小のrttであるrttbaseよりも閾値以上に大きくなっている場合に終了する。ここに、rttbaseは通信を開始してから現時点までに計測した最小のrttである。
また、スロースタートフェーズの前に、独自の帯域測定を行う技法が提案されている(例えば、特許文献1参照)。この技法では、通信開始時にTCPの輻輳ウインドウサイズにはよらず予め決められた数のパケットを送信し、その結果をTCPの輻輳制御方式にフィードバックすることで、より高速に輻輳ウインドウサイズを拡大可能としている。
これらのスロースタートフェーズに関する動作を適用可能な従来技術のRFC5681やRFC3742等に基づくパケット送信装置を総括するに、そのパケット送信装置11の概略構成を示すと、図13のようになる。尚、図13に示すパケット送信装置11は、後述する本発明との対比に係る機能ブロックのみを図示したものであり、送達確認を行うパケット通信方式のパケット送信装置としてその他の必要な機能は、従来から知られている既知の技術と同様の構成とすることができ、その詳細な説明は省略する。図13に示す従来技術に基づくパケット送信装置11は、送信時刻書込部111、パケット送信部112、送達確認応答受信部113、パケットロス判定部114及びパケット送信制御部115を備え、パケット送信制御部115は、ロス再送動作部116、ロスリカバリ動作部117、輻輳回避動作部118及びスロースタート動作部119からなる。
送信時刻書込部111は、パケット送信時に送信時刻を記録する。この送信時刻は、パケット送信装置11の本体内メモリ(図示せず)にパケット番号とともに記録することができる。或いは、TCPのタイムスタンプオプションを用いて記録することもできる。
パケット送信部112は、パケット受信装置21に向けてパケットを送信する。その後、送達確認応答受信部113は、パケット受信装置21から通知される送達確認応答用パケットを受信すると、次の処理を開始する。
送達確認応答受信部113は、送達確認応答用パケットを受信すると、パケット送信部112からのパケット送信から送達確認応答用パケットを受信するまでにかかったrttを計算する。rttの計算は、本体内メモリに記録した送信時刻と受信時刻の差とすることができる。或いは、TCPタイムスタンプオプションを用いることができる。rttの計算後、送達確認応答受信部113は、パケットロス判定部114へ送達確認応答用パケットとrttを通知する。
パケットロス判定部114は、送達確認応答部113から送達確認応答用パケットとrttを受信すると、rttbaseを更新し、パケットロスの発生の有無を判定する。パケットロスが発生している場合には、パケットロス判定部114は、ロス再送動作部116へ送達確認応答用パケットとrttを通知し、所定のパケットロス再送動作を実行させる。パケットロスが発生していない場合は、パケットロス判定部114は、現在の動作フェーズがロスリカバリフェーズの場合はロスリカバリ動作部117へ、輻輳回避フェーズの場合は輻輳回避動作部118へ、送達確認応答用パケットとrttを通知する。また、パケットロス判定部114は、スロースタートフェーズの場合はスロースタート動作部119へ、式(1)に関する所定のスロースタートの動作指示を通知する。
ロス再送動作部116は、送達確認応答用パケットとrttを基に送信パケットの再送処理を実行する。
ロスリカバリ動作部117は、送達確認応答用パケットとrttを基にパケットロスの発生後の通信状況の回復を行うようcwndの値の拡大又は縮小の調整処理を実行する。
輻輳回避動作部118は、送達確認応答用パケットとrttを基に通信路の輻輳を回避するようcwndの値を更新する。
ただし、ロス再送動作部116、ロスリカバリ動作部117及び輻輳回避動作部118は、一般的なTCPなどを含み既知の輻輳制御技法に基づいたレート制御処理を実行するように構成すればよく、その動作の更なる詳細については省略する。
スロースタート動作部119は、パケットロスが発生していない間、式(1)を基にcwndの値を拡大するよう更新する。
このようにして、パケット送信制御部115は、パケットロスの発生の有無に応じて各種の動作フェーズに基づいたレート制御を実行する。
特許第4367505号明細書
"RFC793-Transmission Control Protocol"、[online]、昭和56(西暦1981)年9月策定、DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION、[平成26年12月19日検索]、インターネット〈URL:http://www.rfc-base.org/txt/rfc-793.txt〉 "RFC5681-TCP Congestion Control"、[online]、平成21(西暦2009)年9月策定、Network Working Group、[平成26年12月19日検索]、インターネット〈URL:http://tools.ietf.org/search/rfc5681〉 Sangtae Ha, Injong Rhee and Lisong Xu,"CUBIC: A New TCP-Friendly High-Speed TCP Variant,"[online]、ACM SIGOPS Operating System Review, Volume 42, Issue 5, July 2008、[平成26年12月19日検索]、インターネット〈URL:http://dl.acm.org/citation.cfm?id=1400105〉 kun Tan, Jingmin Song, Qian Zhang and Murari Sridharan,"A Compound TCP Approach for High-speed and Long Distance Networks," [online]、 INFOCOM 2006. 25th IEEE International Conference on Computer Communications. Proceedings, April 2006, [平成26年12月19日検索]、インターネット〈URL:http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=4146841&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D4146841〉 "RFC3742-Limited Slow-Start for TCP with Large Congestion windows"、[online]、平成16(西暦2004)年3月策定、Network Working Group、[平成26年12月19日検索]、インターネット〈URL:https://tools.ietf.org/html/rfc3742〉 Sangtae Ha and Injong Rhee, "Hybrid slow start for high-bandwidth and long-distance networks," [online]、 PFLDnet, 2008,[平成26年12月19日検索]、インターネット〈URL:http://netsrv.csc.ncsu.edu/export/hybridstart_pfldnet08.pdf〉
RFC5681では、通信開始時にはssthreshは十分に大きい値(例えば取りうる最大の値)に設定されることが推奨されており、結果的にパケットロスが発生するまでスロースタートフェーズが継続する。パケットロスが発生するまで急速にcwndを拡大しネットワークにパケットを送出するため、他のトラフィックに影響を与えてしまう。また、パケットロスが発生すると損失したパケットを再度送り直す必要があるため、自身の通信効率も低下する。
そこで、パケットロスを発生させずにスロースタートフェーズから輻輳回避フェーズへ移行することで上記の問題を解決することができる。ただし、非特許文献5に開示されるLimited Slow‐Startではロスが発生する前にcwndの増加速度を落とすことで一度に多くのパケットロスが発生すること避けるが、パケットロスが発生するまではスロースタートフェーズが終了しないため、最終的にパケットロスが発生してしまう。また、通信開始時にはmax_ssthreshの値は不明であり、RFC5681と同じ挙動となってしまうという問題がある。
また、非特許文献6に開示されるHystartではスロースタートフェーズにおいて送信されるパケットのrttを用い、パケットロスが発生する前に輻輳を検知することで輻輳回避フェーズへ移行する技法を提示している。しかし、Hystartでは有線ネットワークのように伝搬遅延が安定した環境を前提にしており、各rtt期間に計測するrttのうち、先頭の数サンプルのみを用いて輻輳検知を実施しているため、無線ネットワークのように輻輳とは無関係に伝搬遅延が変化するネットワークでは、cwndが拡大する前に輻輳回避フェーズへ移行してしまうことがある。
また、特許文献1に開示される技法では、通信開始時に回線状況が不明なまま、予め定められた負荷をかけるため、輻輳を引き起こし回線の品質を下げる可能性がある。
本発明は、上述の問題に鑑みてなされたものであり、本発明の目的は、送達確認を行うパケット通信において、無線ネットワークのような遅延変動が起きやすい環境でも通信開始時におけるパケットロスを抑制し、高速な通信を可能にするパケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法を提供することにある。
本発明によるパケット送信装置は、スロースタートフェーズにおいて、パケットの送受信結果から輻輳ウインドウサイズの上限値を決定し、スロースタートフェーズ終了判定に用いるよう構成する。
即ち、本発明のパケット送信装置は、送達確認に基づいて輻輳ウインドウサイズを決定しパケット送信に関するスロースタート制御を行うパケット送信装置であって、パケット送信の送達確認として通知される送達確認応答用パケットを受信し、該パケット送信の送信時刻と該送達確認応答用パケットの受信時刻との差から当該パケット送信の送達確認に基づく往復遅延時間を算出する送達確認応答受信手段と、通信開始から輻輳ウインドウサイズを拡大しつつ輻輳判定を行って、輻輳と判定した際にスロースタートフェーズから輻輳回避フェーズへ遷移させるように動作するスロースタート制御手段とを備え、前記スロースタート制御手段は、スロースタートフェーズで動作中に、前記往復遅延時間について継続して計測した最小の往復遅延時間と、輻輳ウインドウサイズの更新が為される度に所定の更新式に基づいて更新される輻輳ウインドウサイズの最大値と、当該受信した送達確認応答用パケットに対して最近時に受信したパケット群の送信時刻及び受信時刻とに基づいて、予め定めたパケット遅延量に関する計測期間毎に前記輻輳ウインドウサイズの上限値を決定する輻輳ウインドウ上限算出手段と、前記送達確認応答用パケットを受信する度に直前の1計測期間の経過時に決定された当該輻輳ウインドウサイズの上限値以下で前記輻輳ウインドウサイズを所定幅で拡大し、当該計測期間毎に該輻輳ウインドウサイズの上限値と当該拡大した輻輳ウインドウサイズとを比較して、前記拡大した輻輳ウインドウサイズが該輻輳ウインドウサイズの上限値以上となる際に、スロースタートフェーズから輻輳回避フェーズへ遷移させるように動作する輻輳ウインドウ増加手段と、を有することを特徴とする。
また、本発明のパケット送信装置において、前記輻輳ウインドウ上限算出手段は、前記送達確認応答用パケットを受信する度に、該送達確認応答用パケットに対応する送信パケットの送信レートが前記輻輳ウインドウサイズの最大値から求められる送信レート以上であるか否かを判定する第1判定手段と、前記送達確認応答用パケットを受信する度に、最近時に受信したパケット群に含まれるか否かの判定を行う第2判定手段と、前記第1判定手段及び前記第2判定手段の双方の判定を満たすときは当該最近時に受信したパケット群の受信バイト数に該送達確認応答用パケットにより送達確認したバイト数を加えた受信バイト数を定め、前記第1判定手段及び前記第2判定手段のいずれか一方の判定を満たさないときには、該受信バイト数から求められる当該最近時に受信したパケット群の受信レートを基準にした輻輳ウインドウサイズを算出して当該計測期間毎に更新し、当該更新した輻輳ウインドウサイズを前記輻輳ウインドウサイズの上限値として決定する輻輳ウインドウ上限決定手段と、を有することを特徴とする。
また、本発明のパケット送信装置において、前記輻輳ウインドウサイズの最大値は、前記所定の更新式として、更新された輻輳ウインドウサイズの2倍の値か、又は更新された輻輳ウインドウサイズの2倍の値と、直前の1計測期間の経過時に決定された前記輻輳ウインドウサイズの上限値のうち小さい方の値により更新されることを特徴とする。
また、本発明のパケット送信装置において、前記スロースタート制御手段は、受信する送達確認応答用パケット毎の往復遅延時間の変動量を監視して連続する往復遅延時間パケットのパケット列の最大の変動量を計測し、当該計測期間毎に当該最大の変動量について移動平均した値を往復遅延時間の平均変動量として算出する遅延変動量推定手段を更に備え、前記輻輳ウインドウ上限算出手段は、前記平均変動量を加味して当該輻輳ウインドウの上限値を決定する手段を有し、前記輻輳ウインドウ増加手段は、前記往復遅延時間について継続して計測した最小の往復遅延時間に当該平均変動量を加えた値と、直前の1計測期間で最小の値として計測した計測期間内最小の往復遅延時間とを比較して、該計測期間内最小の往復遅延時間が前記往復遅延時間について継続して計測した最小の往復遅延時間に当該平均変動量を加えた値を超える際に、スロースタートフェーズから輻輳回避フェーズへ遷移させるように動作する手段を更に有することを特徴とする。
更に、本発明の通信端末は、本発明のパケット送信装置を備えることを特徴とする。
更に、本発明のスロースタート制御方法は、送達確認に基づいて輻輳ウインドウサイズを決定しパケット送信に関するスロースタート制御を行うスロースタート制御方法であって、スロースタートフェーズで動作中に、パケット送信の送信時刻と送達確認応答用パケットの受信時刻との差から当該パケット送信の送達確認に基づく往復遅延時間について継続して計測した最小の往復遅延時間と、輻輳ウインドウサイズの更新が為される度に所定の更新式に基づいて更新される輻輳ウインドウサイズの最大値と、当該受信した送達確認応答用パケットに対して最近時に受信したパケット群の送信時刻及び受信時刻とに基づいて、予め定めたパケット遅延量に関する計測期間毎に前記輻輳ウインドウサイズの上限値を決定するステップと、前記送達確認応答用パケットを受信する度に直前の1計測期間の経過時に決定された当該輻輳ウインドウサイズの上限値以下で前記輻輳ウインドウサイズを所定幅で拡大し、当該計測期間毎に該輻輳ウインドウサイズの上限値と当該拡大した輻輳ウインドウサイズとを比較して、前記拡大した輻輳ウインドウサイズが該輻輳ウインドウサイズの上限値以上となる際に、スロースタートフェーズから輻輳回避フェーズへ遷移させるように動作するステップと、を含むことを特徴とする。
送達確認を行うパケット通信において、無線ネットワークのような遅延変動が起きやすい環境で生じうる輻輳とは無関係の遅延による輻輳の誤検出を抑制し、また、バースト的なパケットロスの発生を抑制し、これにより通信開始時のスロースタートフェーズにおける輻輳ウインドウサイズを拡大させる前の輻輳回避フェーズへの移行を効率よく抑制することができるので、高速な通信が可能となる。
本発明による一実施形態のパケット送信装置におけるブロック図である。 本発明による一実施形態のパケット送信装置における送達確認応答受信部の処理を示すフローチャートである。 本発明による一実施形態のパケット送信装置におけるパケットロス判定部の処理を示すフローチャートである。 (A),(B)は、本発明による一実施形態のパケット送信装置に係るパケット遅延量に関する計測期間の説明図である。 本発明による一実施形態のパケット送信装置における実施例1のスロースタート動作部の構成を示すブロック図である。 本発明による一実施形態のパケット送信装置における実施例1のスロースタート動作部の輻輳ウインドウ増加処理を示すフローチャートである。 本発明による一実施形態のパケット送信装置における実施例1のスロースタート動作部の輻輳ウインドウ上限算出処理を示すフローチャートである。 本発明による一実施形態のパケット送信装置における実施例2のスロースタート動作部の構成を示すブロック図である。 本発明による一実施形態のパケット送信装置における実施例2のスロースタート動作部の輻輳ウインドウ増加処理を示すフローチャートである。 本発明による一実施形態のパケット送信装置における実施例2のスロースタート動作部の遅延変動量算出処理を示すフローチャートである。 本発明による一実施形態のパケット送信装置における実施例2のスロースタート動作部の輻輳ウインドウ上限算出処理を示すフローチャートである。 TCPを利用して相互通信接続を行う通信端末のネットワーク接続例を説明する図である。 従来技術に基づくパケット送信装置におけるブロック図である。
以下、図面を参照して、本発明による一実施形態のパケット送信装置、通信端末及びスロースタート制御方法を説明する。
図1は、本発明による一実施形態のパケット送信装置11aにおけるブロック図である。パケット送信装置11aは、図13に示すパケット送信装置11に置き換えて、図12に示す通信端末10に設ける装置である。同様に、通信端末20に対しても、パケット送信装置22に置き換えてパケット送信装置11aと同様の構成を設けることができる。したがって、図12に示すように、TCPを利用して相互通信接続を行う通信端末10,20において、パケット送信装置11aは、データ送信用パケットを所定の通信路を介してパケット受信装置21に送信すると、パケット受信装置21は、受信した旨の報告として送達確認応答用パケットをパケット送信装置11aに送信する。尚、図1に示すパケット送信装置11aは、本発明に係る機能ブロックのみを図示したものであり、送達確認を行うパケット通信方式のパケット送信装置としてその他の必要な機能は、従来から知られている既知の技術と同様の構成とすることができ、その詳細な説明は省略する。
図1に示すように、本実施形態のパケット送信装置11aは、送信時刻書込部111、パケット送信部112、送達確認応答受信部113、パケットロス判定部114及びパケット送信制御部115を備え、パケット送信制御部115は、ロス再送動作部116、ロスリカバリ動作部117、輻輳回避動作部118及びスロースタート動作部119aからなる。尚、図13に示すパケット送信装置11と比較して、本実施形態のパケット送信装置11aは、スロースタート動作部119の代わりに、スロースタート動作部119aを備える点で相違しており、同様な構成要素には同一の参照番号を付している。
送信時刻書込部111は、データ送信用パケットの送信時の送信時刻を記録する。この送信時刻は、パケット送信装置11の本体内メモリ(図示せず)にパケット番号とともに記録することができる。或いは、TCPのタイムスタンプオプションを用いて記録することもできる。
パケット送信部112は、パケット受信装置21に向けてパケットを送信する。その後、送達確認応答受信部113は、パケット受信装置21から通知される送達確認応答用パケット(以下、「ACKパケット」と表記する。)を受信すると、次の処理を開始する。
送達確認応答受信部113は、ACKパケットを受信すると、パケット送信部112からのパケット送信からACKパケットを受信するまでにかかった往復遅延時間(rtt)を計算する。rttの計算は、本体内メモリに記録した当該ACKパケットに対応する送信パケットの送信時刻(以下、「sndtime」と表記する。)と当該ACKパケットの受信時刻(以下、「rcvtime」と表記する。)の差とすることができる。或いは、本体内メモリに記録する代わりに、TCPタイムスタンプオプションを用いることができる。rttの計算後、送達確認応答受信部113は、パケットロス判定部114へACKパケットとrtt,sndtime,rcvtimeを通知する。より具体的には、図2に示すように、送達確認応答受信部113は、ACKパケットを受信すると(ステップS11)、送信時刻(sndtime)と受信時刻(rcvtime)の差から往復遅延時間(rtt)を求め(ステップS12)、rttの計算後、パケットロス判定部114へACKパケット及びrtt,sndtime,rcvtimeを通知する(ステップS13)。
パケットロス判定部114は、送達確認応答部113からACKパケットと、rtt,sndtime,rcvtimeを受信すると、ACKパケット内の送達確認番号(「ACK番号」とも称される。)によりパケットロス判定を行う。パケットロスが発生している場合には、パケットロス判定部114は、ロス再送動作部116へACKパケットとrttを通知する。パケットロスが発生していない場合は、パケットロス判定部114は、現在の動作フェーズがロスリカバリフェーズの場合はロスリカバリ動作部117へACKパケットとrttを通知し、輻輳回避フェーズの場合は輻輳回避動作部118へACKパケットとrttを通知し、スロースタートフェーズの場合はスロースタート動作部119aへACKパケットとrtt、sndtime、rcvtimeを通知する。より具体的には、図3に示すように、パケットロス判定部114は、送達確認応答受信部113から送達確認応答用パケットとrttを受信すると(ステップS21)、パケットロスが発生しているか否かの判定を行う(ステップS22)。パケットロスの判定には、例えばACKパケットに含まれるACK番号が同じパケットを3回受信した場合とする方法がある。
パケットロスが発生している場合には(ステップS22:Yes)、パケットロス判定部114は、ロス再送動作部116へACKパケットとrttを通知し、所定のパケットロス再送動作を実行させる(ステップS23)。パケットロスが発生していない場合は(ステップS22:No)、パケットロス判定部114は、現在の動作フェーズがロスリカバリフェーズの場合はロスリカバリ動作部117へ(ステップS24,S25)、輻輳回避フェーズの場合は輻輳回避動作部118へ(ステップS24,S26)、ACKパケットとrttを通知する。また、パケットロス判定部114は、スロースタートフェーズの場合は本発明に係るスロースタート動作部119aへ、ACKパケットとrtt、sndtime、rcvtimeを通知する(ステップS24,S27)。
パケット送信制御部115は、パケットロスの発生の有無に応じて各種の動作フェーズに基づいたレート制御を実行する。尚、ロス再送動作部116、ロスリカバリ動作部117及び輻輳回避動作部118は、一般的なTCPなどを含み既知の輻輳制御技法に基づいたレート制御処理を実行するように構成すればよく、その動作の更なる詳細については省略する。特に、パケット送信制御部115は、スロースタート動作部119aによる比較的高速に輻輳ウインドウサイズを拡大するスロースタートフェーズと、輻輳回避動作部118による比較的緩やかに輻輳ウインドウサイズを調整する輻輳回避フェーズとを遷移しながらレート制御を実行するよう動作する。
詳細に後述するが、本発明に係る実施例1のスロースタート動作部119aは、通信を開始してから現時点までに計測した最小のrttであるrttbaseを用い、このrttbaseを比較・監視しつつ、パケットの送受信結果から輻輳ウインドウサイズの上限値(以下、「cwndlimit」と表記する。)を決定し、スロースタートフェーズの終了判定に用いるよう構成される。また、本発明に係る実施例2のスロースタート動作部119aは、通信を開始してから現時点までに計測した最小のrttであるrttbaseと、受信したACKパケットに対応するrttに関して予め定めた1計測期間毎に計測する全てのrttの中で最小のrttであるrttminを算出・更新し、このrttbase及びrttminを比較・監視しつつ、パケット遅延の変動量を考慮してパケットの送受信結果から輻輳ウインドウサイズの上限値(cwndlimit)を決定し、スロースタートフェーズの終了判定に用いるよう構成される。尚、本発明に係るrttminは、非特許文献6に開示されるHystartにおける最小のrtt(rttmin)とは相違する点に留意する。
ここで、「計測期間」に関して説明する。例えば、図4(A)に示すように、通信端末10が連続的に送信するデータ送信用パケットD1,D2,D3を通信端末20に向けて送信するとともに、データ送信用パケットD1,D2,D3の各々に対応するACKパケットACK1,ACK2,ACK3を受信する場合を考えたとき、1計測期間は、計測期間の計測の開始から通信端末10(パケット送信装置11a)が最初に送信するパケットに対する送達確認応答(ACK)が到着するまで、とすることができる。
或いは、図4(B)に示すように、1計測期間は、計測期間の計測の開始から所定時間経過時まで(例えば、直前の1計測期間における最小のrtt(rttmin)経過時まで)、とすることができる。尚、計測期間は、IPデータフローに対して連続的に定めてもよいし、間欠的に定めてもよく、計測期間で求めたrttminは少なくとも次回の計測期間でrttminを求めるまで保持するように構成し、rttminを用いるcwnd等の更新にはその更新時点で保持するrttminを用いるようにする。
(実施例1のスロースタート動作部)
まず、本発明に係る実施例1のスロースタート動作部119aについて、図5乃至図7を参照して説明する。図5は、本発明に係る実施例1のスロースタート動作部119aの構成を示すブロック図である。図6は、本発明に係る実施例1のスロースタート動作部119aの輻輳ウインドウ増加処理を示すフローチャートである。図7は、本発明に係る実施例1のスロースタート動作部119aの輻輳ウインドウ上限算出処理を示すフローチャートである。
図5に示すように、実施例1のスロースタート動作部119aは、輻輳ウインドウ増加処理を実行する輻輳ウインドウ増加部1191と、輻輳ウインドウ上限算出処理を実行する輻輳ウインドウ上限算出部1192とを備える。
まず、図6を参照して、輻輳ウインドウ増加部1191による輻輳ウインドウ増加処理を説明する。
輻輳ウインドウ増加部1191は、パケットロス判定部114からACKパケットと、rtt,sndtime,rcvtimeを受信すると(ステップS31)、式(2)によりrttbaseを更新する(ステップS32,S33)。rttbaseは通信開始から通信中に計測したrttの最小値である。rttbaseの通信開始時における初期値は、とりうる最大の値など、或る決まった値とすることができる。
if rttbase > rtt (2)
then rttbase = rtt
次に、輻輳ウインドウ増加部1191は、ACKパケットと、rttbase,sndtime,rcvtime,cwndmaxを輻輳ウインドウ上限算出部1192に通知する(ステップS34)。cwndmaxは、輻輳ウインドウ上限算出部1192において輻輳ウインドウサイズの上限値(cwndlimit)の算出に用いる値である。cwndmaxの値の計算方法(更新方法)や、輻輳ウインドウサイズの上限値(cwndlimit)の算出手順については後述する。
続いて、輻輳ウインドウ増加部1191は、輻輳ウインドウ上限算出部1192からcwndlimitを受信すると(ステップS35)、1計測期間を経過していたか否かを判定する(ステップS36)。1計測期間の判定方法として、前述した図4のように、例えば1計測期間の測定を開始してから最初に送信したパケットに対する送達確認応答を受信した時とする方法や、1計測期間の開始時から所定時間が経過した時とする方法がある。この1計測期間が経過していた場合(ステップS36:Yes)、輻輳ウインドウ増加部1191は、スロースタートフェーズを終了するか否かの判定を行う(ステップS38〜S40)。この判定は現在の輻輳ウインドウサイズ(cwnd)と輻輳ウインドウサイズの上限値(cwndlimit)の比較によって行われ、即ち式(3)によって行う。
if cwnd ≧ cwndlimit (3)
then スロースタートフェーズを終了、
else スロースタートフェーズを継続。
そして、スロースタートフェーズを終了する場合(ステップS38:Yes)、式(4)に示す処理を行う(ステップS40)。
ssthresh = cwnd (4)
cwnd = cwnd + MSS
一方、スロースタートフェーズを継続する場合(ステップS38:No)、式(5)に示す処理を行う(ステップS39)。
cwnd = min(cwnd + γ,cwndlimit) (5)
γは、1回のACKパケットの受信で増加させる輻輳ウインドウサイズ(cwnd)の大きさであり、MSS、又は今回受信したACKパケットにより送達確認が行われたバイト数とすることができる。
また、スロースタートフェーズを継続する場合(ステップS38:No)、cwndmaxの更新も行う(ステップS39)。cwndmaxは、輻輳ウインドウ上限算出部1192において輻輳ウインドウサイズの上限値(cwndlimit)の算出に用いる値であり、より具体的には次回のスロースタートフェーズ終了判定までに取りうる輻輳ウインドウの最大値であり、cwndmaxの初期値として、通信開始時には取りうる最大の値とすることができる。また、通信開始後にスロースタート閾値(ssthresh)を用いてスロースタートフェーズと輻輳回避フェーズの切り替えが為されていたときは、今回のスロースタートフェーズに用いるcwndmaxの初期値をスロースタート閾値(ssthresh)の値とすることができる。
cwndmaxは、今回のスロースタートフェーズにてcwndが更新される度に所定の更新式に基づいて更新され、より具体的な更新式の例として、輻輳ウインドウ増加部1191は、例えば更新するcwndmaxを、更新されたcwndの2倍の値とすることや、更新されたcwndの2倍の値と、直前の1計測期間の経過時に決定された輻輳ウインドウサイズの上限値cwndlimitのうち小さい方の値として決定する。
そして、1計測期間が経過していないと判定した場合(ステップS36:No)、輻輳ウインドウ増加部1191は、式(5)に示す処理を行う(ステップS37)。
次に、図7を参照して、輻輳ウインドウ上限算出部1192による輻輳ウインドウ上限算出処理を説明する。
輻輳ウインドウ上限算出部1192は、輻輳ウインドウ増加部1191からACKパケットと、rttbase,sndtime,rcvtime,cwndmaxを受信すると(ステップS41)、輻輳ウインドウサイズの上限値cwndlimitを下記の手順で計算する。cwndlimitは、今回のスロースタートフェーズ中に輻輳ウインドウサイズを増加させる場合の上限値であり、ACKパケットから受信レートを算出し計算を行う。cwndlimitの初期値は、事前に想定した予め定めた最大値(取りうる最大の値)とすることができる。
輻輳ウインドウサイズの上限値cwndlimitの算出は、ACKパケットを受信する度に行い、まず、cwndmaxから求められる送信レートと、今回受信したACKパケットに対応する送信パケットの送信レートとの比較を行う(ステップS42)。
今回受信したACKパケットに対応する送信パケットの送信レートが、cwndmaxから求められる送信レート以上であるときに(ステップS42:Yes)、続いて、今回受信したACKパケットが最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなすACKパケット群)に含まれるか否かの判定を行う(ステップS43)。これにより、無線ネットワークのような遅延変動が起きやすい環境でスロースタートフェーズ時に生じうる輻輳による遅延変動を有して受信するACKパケットが一連の送信パケットに対応するものとして扱うか否かを判定する。この判定には、以下の二例の判定方法が有効である。
第1例の判定方法は、式(6)により行う。尚、sndtimelastは、直前に受信したACKパケットに対応する送信パケットの送信時刻である。
if sndtime−sndtimelast ≦ (MSS/cwndmax)×rttbase (6)
then 最近時に受信したパケット群に含まれる。
else 最近時に受信したパケット群に含まれない。
第2例の判定方法は、式(7)により行う。尚、rcvbyteは最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなしたACKパケット群)で受信したバイト数、sndtimefirstは最近時に受信したパケット群の先頭のACKパケットに対応する送信パケットの送信時刻である。
if sndtime−sndtimefirst
((rcvbyte + 送達確認バイト数)/cwndmax)×rttbase (7)
then 最近時に受信したパケット群に含まれる。
else 最近時に受信したパケット群に含まれない。
今回受信したACKパケットに対応する送信パケットの送信レートが、cwndmaxから求められる送信レート以上でないとき(ステップS42:No)、及び、今回受信したACKパケットが最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなすACKパケット群)に含まれないと判定したとき(ステップS43:No)、最近時に受信したパケット群の記録から式(8)により、最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなしたACKパケット群)の受信レートを基準にして、この受信レートを満たす輻輳ウインドウサイズcwndestを算出する(ステップS45)。
cwndest = rcvbyte × rttbase/(rcvtimelast−rcvtimefirst) (8)
ここに、rcvbyteは最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなしたACKパケット群)で受信したバイト数、rcvtimelastは最近時に受信したパケット群のうち最後のACKパケットを受信した時刻、rcvtimefirstは最近時に受信したパケット群のうち先頭のACKパケットを受信した時刻である。
また、1rtt以上に輻輳ウインドウサイズの算出に要する計測状態が継続することを防ぐことを意図して、1rtt未満で定期的に、輻輳ウインドウサイズの算出を行うようにするために、式(9)に示すように、今回受信したACKパケットに対応する送信パケットに対して連続した送信の期間(sndtime - sndtimefirst)が所定の閾値(本例では、rttbase /2)を超える場合も、式(8)による輻輳ウインドウサイズcwndestを算出するようにする。
if sndtime−sndtimefirst > rttbase /2 (9)
then 式(8)による輻輳ウインドウサイズの算出。
cwndestを算出すると、式(10)により1計測期間でのcwndestの最大値cwndlimit-tmpを更新する(ステップS46,S47)。尚、cwndlimit-tmpの初期値は、cwndlimit-tmp = 0である。
if cwndlimit-tmp < cwndest (10)
then cwndlimit-tmp = cwndest
更に、次に受信するACKパケットに関するステップS44の判定や、輻輳ウインドウサイズの算出のために、式(11)のように各変数をリセットする(ステップS48)。
rcvbyte = 0 (11)
sndtimefirst = sndtime
rcvtimefirst = rcvtime
今回受信したACKパケットに対応する送信パケットの送信レートが、cwndmaxから求められる送信レート以上であり(ステップS42:Yes)、今回受信したACKパケットが最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなすACKパケット群)に含まれると判定したとき(ステップS43:Yes)、即ち送信間隔に基づく判定で連続したパケット列とみなし、且つ連続したパケット列に関する送信パケットの所定の送信期間が予め定めた閾値を超えない場合、式(12)により、当該連続したパケット列の受信バイト数を更新する(ステップS44)。
rcvbyte = rcvbyte + 送達確認バイト数 (12)
次に、1計測期間が経過したか否かを判定し(ステップS49)、1計測期間が経過していたと判定するときは(ステップS49:Yes)、cwndlimit-tmpの更新が行われているか否かを判定する(ステップS50)。
cwndlimit-tmpの更新が行われている場合に(ステップS50:Yes)、式(13)によりcwndlimitを更新する(ステップS51)。
if cwndlimit-tmp > 0 (13)
then cwndlimit = cwndlimit-tmp
cwndlimit-tmp = 0
1計測期間を経過していないと判定したとき(ステップS49:No)、及び、cwndlimit-tmpの更新が行われていないとき(ステップS50:No)、cwndlimitは前回値のままである。
ステップS50を経てcwndlimitの値が決定されると、式(14)によりsndtimelast, rcvtimelastを更新する(ステップS52)。尚、実施例1では、式(6)による場合のみ、sndtimelastを利用する。
sndtimelast = sndtime (14)
rcvtimelast = rcvtime
最後に、輻輳ウインドウ上限算出部1192は、cwndlimitを輻輳ウインドウ増加部1191へ通知する(ステップS53)。したがって、輻輳ウインドウ上限算出部1192は、ステップS42及びステップS43の双方の判定を満たすときは当該最近時に受信したパケット群の受信バイト数に今回受信したACKパケットにより送達確認したバイト数を加えた受信バイト数を定め(ステップS44)、ステップS42及びステップS43のいずれか一方の判定を満たさないときには、該受信バイト数から求められる当該最近時に受信したパケット群の受信レートを基準にした輻輳ウインドウサイズ(cwndlimit-tmp)を算出して1計測期間毎に更新し、1計測期間毎に更新した該輻輳ウインドウサイズ(cwndlimit-tmp)を輻輳ウインドウサイズの上限値(cwndlimit)として決定する。そして、輻輳ウインドウ増加部1191は、ACKパケットを受信する度に1計測期間の経過時に決定されたcwndlimit以下で輻輳ウインドウサイズ(cwnd)を所定幅で拡大し、計測期間毎に、1計測期間の経過時に決定されたcwndlimitと当該拡大したcwndとを比較してスロースタートフェーズから輻輳回避フェーズへの遷移を判定する。
このように、輻輳ウインドウ増加部1191及び輻輳ウインドウ上限算出部1192を備える実施例1のスロースタート動作部119aを構成し、パケット送信装置11aに具備させることで、バースト的なパケットロスの発生を抑制し、これにより通信開始時のスロースタートフェーズにおける輻輳ウインドウサイズを拡大させる前の輻輳回避フェーズへの移行を効率よく抑制することができるので、高速な通信が可能となる。
(実施例2のスロースタート動作部)
次に、本発明に係る実施例1のスロースタート動作部119aについて、図8乃至図11を参照して説明する。図8は、本発明に係る実施例2のスロースタート動作部119aの構成を示すブロック図である。図9は、本発明に係る実施例2のスロースタート動作部119aの輻輳ウインドウ増加処理を示すフローチャートである。図10は、本発明に係る実施例2のスロースタート動作部119aの遅延変動量算出処理を示すフローチャートである。図11は、本発明に係る実施例2のスロースタート動作部119aの輻輳ウインドウ上限算出処理を示すフローチャートである。尚、図8は、実施例1と同様な構成要素には同一の参照番号を付している。
図8に示すように、実施例2のスロースタート動作部119aは、輻輳ウインドウ増加処理を実行する輻輳ウインドウ増加部1191と、輻輳ウインドウ上限算出処理を実行する輻輳ウインドウ上限算出部1192と、輻輳とは無関係の遅延変動量を推定する遅延変動量推定部1193を備える。
実施例2において、遅延変動量推定部1193は、受信するACKパケット毎のrttの変動量を監視して連続するACKパケットのパケット列の最大の変動量を計測し、1計測期間毎に当該最大の変動量について移動平均した値をrttの平均変動量として算出する。そして、輻輳ウインドウ上限算出部1192は、このrttの平均変動量を加味して輻輳ウインドウの上限値(cwndlimit)を決定する。そして、輻輳ウインドウ増加部1191は、通信を開始してから現時点までに計測した最小のrtt(rttbase)に当該平均変動量を加えた値と、計測期間内におけるrttについて直前の1計測期間で計測した最小のrtt(rttmin)との比較によってスロースタート終了判定を行い、終了と判定された場合にはスロースタートフェーズから輻輳回避フェーズへ遷移させる。したがって、実施例2は、当該rttの平均変動量を加味してスロースタートフェーズの終了判定を行うことを可能とする点で、実施例1とは相違する。
まず、図9を参照して、輻輳ウインドウ増加部1191による輻輳ウインドウ増加処理を説明する。
輻輳ウインドウ増加部1191は、パケットロス判定部114からACKパケットと、rtt,sndtime,rcvtimeを受信すると(ステップS61)、式(15)によりrttminを更新する(ステップS62,S63)。rttminは直前の1計測期間で決定したrttの最小値である。尚、通信を開始してから1計測期間を経過する前のrttminの値は、通信を開始してから現時点までに計測した最小のrttであるrttbaseと同じ値とすることができる。尚、rttbaseの通信開始時における初期値は、とりうる最大の値など、或る決まった値とすることができる。また、1計測期間の開始から最初に計測したrttについては、その大きさに関わらずrttminに代入する。
if (1計測期間で最初に計測したrtt) or (rttmin > rtt) (15)
then rttmin = rtt
式(15)によりrttminを更新した場合(ステップS63)、続けて式(2)によりrttbaseを更新する(ステップS64,S65)。rttbaseは通信中に計測したrttの最小値である。通信開始時には、とりうる最大の値など、或る決まった値に初期化することができる。
次に、輻輳ウインドウ増加部1191は、遅延変動量推定部1193へACKパケットと、rtt,sndtimeを通知し(ステップS66)、遅延変動量推定部1193からjitteraveを受信する(ステップS67)。jitteraveは輻輳とは無関係の遅延変動量であり、その算出方法は図10を参照して後述する。
次に、輻輳ウインドウ増加部1191は、ACKパケットと、rttbase,jitterave,sndtime,rcvtime,cwndmaxを輻輳ウインドウ上限算出部1192に通知する(ステップS68)。cwndmaxは、輻輳ウインドウ上限算出部1192において輻輳ウインドウサイズの上限値(cwndlimit)の算出に用いる送信パケットを決定するために用いる値である。cwndmaxの値の計算方法(更新方法)は実施例1と同様であり、輻輳ウインドウサイズの上限値(cwndlimit)の算出手順については後述する。
続いて、輻輳ウインドウ増加部1191は、輻輳ウインドウ上限算出部1192からcwndlimitを受信すると(ステップS69)、1計測期間を経過しているか否かを判定する(ステップS70)。この1計測期間が経過していた場合(ステップS70:Yes)、輻輳ウインドウ増加部1191は、スロースタートフェーズを終了するか否かの判定を行う(ステップS72)。この判定は式(16)によって行う。
if rttmin > rttbase + jitterave (16)
then スロースタートフェーズを終了、
else 式(3)によりスロースタートフェーズの終了判定へ移行。
式(3)によるスロースタートフェーズの終了判定は、現在の輻輳ウインドウサイズcwndと輻輳ウインドウサイズの上限値(cwndlimit)との比較によって行い(ステップS73)、スロースタートフェーズを終了する場合(ステップS72:Yes、又はステップS73:Yes)、実施例1と同様に、式(4)に示す処理を行う(ステップS75)。
一方、スロースタートフェーズを継続する場合(ステップS72:No、且つステップS73:No)、実施例1と同様に、式(5)に示す処理を行う(ステップS74)。
また、スロースタートフェーズを継続する場合(ステップS72:No、且つステップS73:No)、cwndmaxの更新も行い、rttminは直前の1計測期間で決定したrttの最小値で初期化する(ステップS74)。
そして、1計測期間が経過していないと判定した場合(ステップS70:No)、輻輳ウインドウ増加部1191は、式(5)に示す処理を行う(ステップS71)。
次に、図10を参照して、遅延変動量推定部1193による遅延変動量算出処理を説明する。
遅延変動量推定部1193は、輻輳ウインドウ増加部1191からACKパケットと、rtt,sndtimeを受信すると(ステップS81)、式(17)による最近時に受信したパケット群(ACKパケットのパケット列)と連続したパケットであるか否かの判定を行う(ステップS82)。
if sndtime−sndtimelast ≦ β (17)
then 連続したパケット、
else 連続していないパケット。
sndtimelastは、直前に受信したACKパケットに対応する送信パケットの送信時刻であり、βは定数である。βは、パケット送信装置11aが計測可能な最小時間の整数倍や、パケット送信装置11aが1MSSの長さを持つTCPパケットを1つ送信するために必要な時間の整数倍とすることができる。
連続したパケットと判定した場合(ステップS82:Yes)、式(18)により当該ACKパケットに関するパケット間のジッタ(jitter)を計算する(ステップS83)。rttlastは、前回受信したACKパケットで計測したrttである。
jitter = |rtt−rttlast| (18)
jitterの計算後、式(19)の処理を行い、1計測期間中の最大のjitterを表すjittermaxを更新する(ステップS84)。
if jittermax < jitter (19)
then jittermax = jitter
一方、連続していないパケットと判定した場合(ステップS82:No)や、1計測期間中の最大のjitterを表すjittermaxを更新しないとき(ステップS84:No)、ステップS86に移行する。
そして、jittermaxの値を確定後、1計測期間が経過しているか判定し(ステップS86)、1計測期間が経過している場合(ステップS86:Yes)、jittermaxの値が0より大きいとして算出されていたときは(ステップS89:Yes)、式(20)により平均ジッタ(jitterave)を更新し(ステップS90)、jittermaxの値を0にリセットする(ステップS91)。jittermaxの値を0にリセットしたとき(ステップS91)、及び、1計測期間が経過している場合でもjittermaxの値が0のときは(ステップS89:No)、ステップS87に移行する。jitteraveの初期値は0である。尚、αは1未満の重み付け定数であり、例えば0.5とするなど予め定めた値とすることができる。
jitterave = (1−α)×jitterave +α×jittermax (20)
次に、今回のACKパケットの受信時に1計測期間が経過していないと判定した場合(ステップS86:No)や、jittermaxの値を0にリセットしたとき(ステップS91)、或いは1計測期間が経過していると判定した場合でもjittermaxの値が0のときは(ステップS89:No)、rttlast, sndtimelastを式(21)により更新する(ステップS87)。
rttlast = rtt (21)
sndtimelast = sndtime
jitteraveの値を確定後、遅延変動量推定部1193は、輻輳ウインドウ増加部1191へ通知する(ステップS88)。
次に、図11を参照して、輻輳ウインドウ上限算出部1192による輻輳ウインドウ上限算出処理を説明する。
輻輳ウインドウ上限算出部1192は、輻輳ウインドウ増加部1191からACKパケットと、rttbase,jitterave,sndtime,rcvtime,cwndmaxを受信すると(ステップS101)、輻輳ウインドウサイズの上限値cwndlimitを下記の手順で計算する。cwndlimitは、スロースタートフェーズ中に輻輳ウインドウサイズを増加させる場合の上限値であり、ACKパケットから受信レートを算出し計算を行う。cwndlimitの初期値は、事前に想定した予め定めた最大値(取りうる最大の値)とすることができる。尚、実施例2は、式(6)の処理を式(22)に、式(7)の処理を式(23)に、式(8)の処理を式(24)に、式(9)の処理を式(25)とする以外は、実施例1と同一の処理である。
輻輳ウインドウサイズの上限値cwndlimitの算出動作は、ACKパケットを受信すると、まず、cwndmaxから求められる送信レートと、今回受信したACKパケットに対応する送信パケットの送信レートとの比較を行う(ステップS102)。
今回受信したACKパケットに対応する送信パケットの送信レートが、cwndmaxから求められる送信レート以上であるときに(ステップS102:Yes)、続いて、今回受信したACKパケットが最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなすACKパケット群)に含まれるか否かの判定を行う(ステップS103)。これにより、無線ネットワークのような遅延変動が起きやすい環境でスロースタートフェーズ時に生じうる輻輳及びジッタによる遅延変動を有して受信するACKパケットが一連の送信パケットに対応するものとして扱うか否かを判定する。この判定には、以下の二例の判定方法が有効である。
第1例の判定方法は、式(22)により行う。尚、sndtimelast及びcwndmaxは、実施例1と同様である。
if sndtime−sndtimelast ≦(MSS/cwndmax)×(rttbase+jitterave) (22)
then 最近時に受信したパケット群に含まれる。
else 最近時に受信したパケット群に含まれない。
第2例の判定方法は、式(23)により行う。尚、sndtimefirstは、実施例1と同様である。
if sndtime−sndtimefirst
((rcvbyte+送達確認バイト数)/cwndmax)×(rttbase+jitterave) (23)
then 最近時に受信したパケット群に含まれる。
else 最近時に受信したパケット群に含まれない。
今回受信したACKパケットに対応する送信パケットの送信レートが、cwndmaxから求められる送信レート以上でないとき(ステップS102:No)、及び、今回受信したACKパケットが最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなすACKパケット群)に含まれないと判定したとき(ステップS103:No)、最近時に受信したパケット群の記録から式(24)により、その受信レートを満たす輻輳ウインドウサイズcwndestを算出する(ステップS105)。
cwndest=rcvbyte×(rttbase+jitterave)/(rcvtimelast−rcvtimefirst) (24)
また、1rtt以上に輻輳ウインドウサイズの算出に要する計測状態が継続することを防ぐことを意図して、1rtt未満で定期的に、輻輳ウインドウサイズの算出を行うようにするために、式(25)に示すように、今回受信したACKパケットに対応する送信パケットに対して連続した送信の期間(sndtime - sndtimefirst)が所定の閾値(本例では、(rttbase+jitterave)/2)を超える場合も、式(24)による輻輳ウインドウサイズcwndestを算出するようにする。
if sndtime−sndtimefirst > (rttbase+jitterave) /2 (25)
then 式(24)による輻輳ウインドウサイズの算出。
cwndestを算出すると、式(10)により1計測期間でのcwndestの最大値cwndlimit-tmpを更新する(ステップS106,S107)。
更に、次に受信するACKパケットに関するステップS44の判定や、輻輳ウインドウサイズの算出のために、式(11)のように各変数をリセットする(ステップS108)。
今回受信したACKパケットに対応する送信パケットの送信レートが、cwndmaxから求められる送信レート以上であり(ステップS102:Yes)、今回受信したACKパケットが最近時に受信したパケット群(即ち、一連の送信パケットに対応するものとしてみなすACKパケット群)に含まれると判定したとき(ステップS103:Yes)、即ち送信間隔に基づく判定で連続したパケット列とみなし、且つ連続したパケット列に関する送信パケットの所定の送信期間が予め定めた閾値を超えない場合、式(12)により、当該連続したパケット列の受信バイト数を更新する(ステップS104)。
次に、1計測期間を経過しているか否かを判定し(ステップS109)、1計測期間を経過していると判定したときは(ステップS109:Yes)、cwndlimit-tmpの更新が行われているか否かを判定する(ステップS110)。
cwndlimit-tmpの更新が行われている場合に(ステップS110:Yes)、式(13)によりcwndlimitを更新する(ステップS111)。
今回受信したACKパケットが1計測期間を経過していないとき(ステップS109:No)、及び、cwndlimit-tmpの更新が行われていないとき(ステップS110:No)、cwndlimitは前回値のままである。
ステップS110を経てcwndlimitの値が決定されると、式(14)によりsndtimelast, rcvtimelastを更新する(ステップS112)。
最後に、輻輳ウインドウ上限算出部1192は、cwndlimitを輻輳ウインドウ増加部1191へ通知する(ステップS113)。したがって、実施例2において、輻輳ウインドウ上限算出部1192は、輻輳とは無関係に生じるジッタをも考慮し、ステップS102及びステップS103の双方の判定を満たすときは当該最近時に受信したパケット群の受信バイト数に今回受信したACKパケットにより送達確認したバイト数を加えた受信バイト数を定め(ステップS104)、ステップS102及びステップS103のいずれか一方の判定を満たさないときには、該受信バイト数から求められる当該最近時に受信したパケット群の受信レートを基準にした輻輳ウインドウサイズ(cwndlimit-tmp)を算出して1計測期間毎に更新し、1計測期間毎に更新した該輻輳ウインドウサイズ(cwndlimit-tmp)を輻輳ウインドウサイズの上限値(cwndlimit)として決定する。そして、輻輳ウインドウ増加部1191は、ACKパケットを受信する度に1計測期間の経過時に決定されたcwndlimit以下で輻輳ウインドウサイズ(cwnd)を所定幅で拡大し、計測期間毎に、1計測期間の経過時に決定されたcwndlimitと当該拡大したcwndとを比較してスロースタートフェーズから輻輳回避フェーズへの遷移を判定する。
このように、輻輳ウインドウ増加部1191、輻輳ウインドウ上限算出部1192及び遅延変動量推定部1193を備える実施例2のスロースタート動作部119aを構成し、パケット送信装置11aに具備させることで、輻輳とは無関係に生じるジッタをも考慮してバースト的なパケットロスの発生を抑制し、これにより通信開始時のスロースタートフェーズにおける輻輳ウインドウサイズを拡大させる前の輻輳回避フェーズへの移行を効率よく抑制することができるので、高速な通信が可能となる。
以上、特定の実施例を挙げて本発明を説明したが、本発明は前述の実施形態及び各実施例に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。例えば、送達確認に基づく遅延量を用いてパケット送信に関するスロースタート制御を行うパケット送信装置であれば、如何なる態様の装置でもよい。
本発明によれば、送達確認を行うパケット通信において、無線ネットワークのような遅延変動が起きやすい環境で通信開始時のスロースタートフェーズにおける通信効率を高めることができるので、送達確認に基づく遅延量を用いてパケット送信に関するスロースタート制御を行う用途に有用である。
10 通信端末
11 従来技術に係るパケット送信装置
11a 本発明による一実施形態のパケット送信装置
12 パケット受信装置
20 通信端末
21 パケット受信装置
22 パケット送信装置
111 送信時刻書込部
112 パケット送信部
113 送達確認応答受信部
114 パケットロス判定部
115 パケット送信制御部
116 ロス再送動作部
117 ロスリカバリ動作部
118 輻輳回避動作部
119 従来技術に係るスロースタート動作部
119a 本発明に係るスロースタート動作部
1191 輻輳ウインドウ増加部
1192 輻輳ウインドウ上限算出部
1193 遅延変動量推定部

Claims (6)

  1. 送達確認に基づいて輻輳ウインドウサイズを決定しパケット送信に関するスロースタート制御を行うパケット送信装置であって、
    パケット送信の送達確認として通知される送達確認応答用パケットを受信し、該パケット送信の送信時刻と該送達確認応答用パケットの受信時刻との差から当該パケット送信の送達確認に基づく往復遅延時間を算出する送達確認応答受信手段と、
    通信開始から輻輳ウインドウサイズを拡大しつつ輻輳判定を行って、輻輳と判定した際にスロースタートフェーズから輻輳回避フェーズへ遷移させるように動作するスロースタート制御手段とを備え、
    前記スロースタート制御手段は、
    スロースタートフェーズで動作中に、前記往復遅延時間について継続して計測した最小の往復遅延時間と、輻輳ウインドウサイズの更新が為される度に所定の更新式に基づいて更新される輻輳ウインドウサイズの最大値と、当該受信した送達確認応答用パケットに対して最近時に受信したパケット群の送信時刻及び受信時刻とに基づいて、予め定めたパケット遅延量に関する計測期間毎に前記輻輳ウインドウサイズの上限値を決定する輻輳ウインドウ上限算出手段と、
    前記送達確認応答用パケットを受信する度に直前の1計測期間の経過時に決定された当該輻輳ウインドウサイズの上限値以下で前記輻輳ウインドウサイズを所定幅で拡大し、当該計測期間毎に該輻輳ウインドウサイズの上限値と当該拡大した輻輳ウインドウサイズとを比較して、前記拡大した輻輳ウインドウサイズが該輻輳ウインドウサイズの上限値以上となる際に、スロースタートフェーズから輻輳回避フェーズへ遷移させるように動作する輻輳ウインドウ増加手段と、
    を有することを特徴とするパケット送信装置。
  2. 前記輻輳ウインドウ上限算出手段は、
    前記送達確認応答用パケットを受信する度に、該送達確認応答用パケットに対応する送信パケットの送信レートが前記輻輳ウインドウサイズの最大値から求められる送信レート以上であるか否かを判定する第1判定手段と、
    前記送達確認応答用パケットを受信する度に、最近時に受信したパケット群に含まれるか否かの判定を行う第2判定手段と、
    前記第1判定手段及び前記第2判定手段の双方の判定を満たすときは当該最近時に受信したパケット群の受信バイト数に該送達確認応答用パケットにより送達確認したバイト数を加えた受信バイト数を定め、前記第1判定手段及び前記第2判定手段のいずれか一方の判定を満たさないときには、該受信バイト数から求められる当該最近時に受信したパケット群の受信レートを基準にした輻輳ウインドウサイズを算出して当該計測期間毎に更新し、当該更新した輻輳ウインドウサイズを前記輻輳ウインドウサイズの上限値として決定する輻輳ウインドウ上限決定手段と、
    を有することを特徴とする、請求項1に記載のパケット送信装置。
  3. 前記輻輳ウインドウサイズの最大値は、前記所定の更新式として、更新された輻輳ウインドウサイズの2倍の値か、又は更新された輻輳ウインドウサイズの2倍の値と、直前の1計測期間の経過時に決定された前記輻輳ウインドウサイズの上限値のうち小さい方の値により更新されることを特徴とする、請求項1又は2に記載のパケット送信装置。
  4. 前記スロースタート制御手段は、受信する送達確認応答用パケット毎の往復遅延時間の変動量を監視して連続する往復遅延時間パケットのパケット列の最大の変動量を計測し、当該計測期間毎に当該最大の変動量について移動平均した値を往復遅延時間の平均変動量として算出する遅延変動量推定手段を更に備え、
    前記輻輳ウインドウ上限算出手段は、前記平均変動量を加味して当該輻輳ウインドウの上限値を決定する手段を有し、
    前記輻輳ウインドウ増加手段は、前記往復遅延時間について継続して計測した最小の往復遅延時間に当該平均変動量を加えた値と、直前の1計測期間で最小の値として計測した計測期間内最小の往復遅延時間とを比較して、該計測期間内最小の往復遅延時間が前記往復遅延時間について継続して計測した最小の往復遅延時間に当該平均変動量を加えた値を超える際に、スロースタートフェーズから輻輳回避フェーズへ遷移させるように動作する手段を更に有することを特徴とする、請求項1に記載のパケット送信装置。
  5. 請求項1から4のいずれか一項に記載のパケット送信装置を備えることを特徴とする通信端末。
  6. 送達確認に基づいて輻輳ウインドウサイズを決定しパケット送信に関するスロースタート制御を行うスロースタート制御方法であって、
    スロースタートフェーズで動作中に、パケット送信の送信時刻と送達確認応答用パケットの受信時刻との差から当該パケット送信の送達確認に基づく往復遅延時間について継続して計測した最小の往復遅延時間と、輻輳ウインドウサイズの更新が為される度に所定の更新式に基づいて更新される輻輳ウインドウサイズの最大値と、当該受信した送達確認応答用パケットに対して最近時に受信したパケット群の送信時刻及び受信時刻とに基づいて、予め定めたパケット遅延量に関する計測期間毎に前記輻輳ウインドウサイズの上限値を決定するステップと、
    前記送達確認応答用パケットを受信する度に直前の1計測期間の経過時に決定された当該輻輳ウインドウサイズの上限値以下で前記輻輳ウインドウサイズを所定幅で拡大し、当該計測期間毎に該輻輳ウインドウサイズの上限値と当該拡大した輻輳ウインドウサイズとを比較して、前記拡大した輻輳ウインドウサイズが該輻輳ウインドウサイズの上限値以上となる際に、スロースタートフェーズから輻輳回避フェーズへ遷移させるように動作するステップと、
    を含むことを特徴とするスロースタート制御方法。
JP2015007501A 2015-01-19 2015-01-19 パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法 Expired - Fee Related JP6417225B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015007501A JP6417225B2 (ja) 2015-01-19 2015-01-19 パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015007501A JP6417225B2 (ja) 2015-01-19 2015-01-19 パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法

Publications (2)

Publication Number Publication Date
JP2016134712A JP2016134712A (ja) 2016-07-25
JP6417225B2 true JP6417225B2 (ja) 2018-10-31

Family

ID=56434647

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015007501A Expired - Fee Related JP6417225B2 (ja) 2015-01-19 2015-01-19 パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法

Country Status (1)

Country Link
JP (1) JP6417225B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9178789B2 (en) * 2011-08-19 2015-11-03 Futurewei Technologies, Inc. System and method for transmission control protocol slow-start
JP6280680B2 (ja) * 2014-03-19 2018-02-14 日本放送協会 パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法

Also Published As

Publication number Publication date
JP2016134712A (ja) 2016-07-25

Similar Documents

Publication Publication Date Title
CN109309934B (zh) 一种拥塞控制方法及相关设备
Chowdhury et al. TP-CRAHN: A transport protocol for cognitive radio ad-hoc networks
JP4147534B2 (ja) 通信装置および通信方法
US7706269B2 (en) Method, system and device for controlling a transmission window size
US7460472B2 (en) System and method for transmitting information in a communication network
JP4708978B2 (ja) 高スループットを実現する通信システム、通信端末、セッション中継装置、及び通信プロトコル
US20060209838A1 (en) Method and system for estimating average bandwidth in a communication network based on transmission control protocol
JP2004253934A (ja) 無線通信システム、サーバ、基地局、移動端末及びそれらに用いる再送タイムアウト時間決定方法
US20130058212A1 (en) Optimization of the transmission control protocol particularly for wireless connections
KR100912178B1 (ko) 무선 환경에서의 혼잡제어방법 및 기록매체
JP4726978B2 (ja) 輻輳制御装置及び輻輳制御方法
WO2007026557A1 (ja) 通信システム、通信端末、中継ノード及びそれに用いる通信方法並びにそのプログラム
JP2008104018A (ja) 通信システム、通信装置、及び送信制御方法
JP5387058B2 (ja) 送信装置、送信レート算出方法及び送信レート算出プログラム
JP6417225B2 (ja) パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法
Sinky et al. Cross-layer assisted TCP for seamless handoff in heterogeneous mobile wireless systems
JP2004357307A (ja) IPv6基盤無線網でモバイルノードのハンドオフ時、バインドアップデートメッセージを用いたパケット伝送制御方法及びそのシステム
JP6280680B2 (ja) パケット通信におけるパケット送信装置、通信端末及びスロースタート制御方法
JP6491521B2 (ja) パケット通信におけるパケット送信装置、通信端末及び輻輳制御方法
JP6280681B2 (ja) パケット通信におけるパケット送信装置、通信端末及び輻輳制御方法
Naguib et al. On the Transport Layer Throughput in Cognitive Mobile Ad Hoc Networks using Soft Sensing
Ullah et al. Improving network efficiency by selecting and modifying congestion control constraints
KR100915996B1 (ko) 대역폭변화에 따른 적응형 전송 제어 프로토콜을 이용한데이터 패킷 전송 방법 및 그를 위한 송신측 단말장치
Zhu et al. Performance of Tahoe, Reno, and SACK TCP at Different Scenarios
Ahirwal et al. TCP Congestion Control through Bandwidth Estimation Mechanism in MANET

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180829

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180911

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181005

R150 Certificate of patent or registration of utility model

Ref document number: 6417225

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees