説明

通信端末および通信システム並びに輻輳制御方法

【課題】ネットワークの空き帯域の利用効率を改善し、既存TCPとの帯域利用の公平性を実現することができる通信端末および通信システム並びに輻輳制御方法を提供することを目的とする。
【解決手段】通信端末に、パケットロスの有無に基づいて、第1の送信速度を設定し、輻輳制御を行う第1の輻輳制御手段と、ネットワークの空き帯域の状況を判断する帯域状況判断手段と、空き帯域のうち、第1の送信速度により使用されない帯域に基づいて、第2の送信速度を設定し、輻輳制御を行う第2の輻輳制御手段とを備えることにより達成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、輻輳制御を行う通信端末および通信システム並びに輻輳制御方法に関する。
【背景技術】
【0002】
TCPの輻輳制御方式として広く使われているものに、TCP NewRenoとTCP Fackがある(例えば、非特許文献1参照)。これらの既存TCPの輻輳制御方式では、パケット伝搬遅延に基づいて、送信速度が変更される。ここで、パケット伝搬遅延は、パケットを送った場合にその受信確認が届くまでの時間であり、具体的にはRTT(Round Trip Time)により表される。また、送信速度は、具体的には輻輳ウインドウサイズ(Congestion Window Size)(以下、cwndと呼ぶ)により表される。
(1)パケットロスが発生していない場合
cwnd_next=cwnd+1 (1)
(2)パケットロスが発生した場合
cwnd_next=cwnd/2 (2)
既存TCPにおけるcwndの時間推移について、図1を参照して説明する。
【0003】
送信者は、パケットロスを経験しない場合には送信速度を徐々に増大させ、ネットワークに輻輳が発生しパケットロスを経験した場合には送信速度を大きく減少させる。したがって、既存TCPでは、「a」に示されるように、ネットワークの帯域を有効利用できていない領域、すなわち未使用のネットワーク帯域が存在する。
【0004】
一方、既存TCPよりもネットワークの帯域を高効率に利用するTCPとして、TCP Vegasが提案されている(例えば、非特許文献2参照)。
【0005】
TCP Vegasでは、送信者は、受信者との間のRTTの増加を輻輳発見に用いる。ネットワークが輻輳し始めると、ルータのキューイング遅延が増大しRTTが増加し始める。送信者は、RTTが増加した時点でデータの送信速度を抑えるので、輻輳を防止しネットワークを有効に利用することができる。
【0006】
ここで、TCP Vegasの動作原理について説明する。
【0007】
まず、ネットワークが全く輻輳していない場合の送信者と受信者との間のRTTをRTTbaseと定義する。通常、送信者はRTTを常に測定しており、測定されたRTTのうち最も小さい値であるRTTをRTTbaseとして用いる。ネットワークが輻輳し始めると、ボトルネックとなるルータ(以下、ボトルネックルータと呼ぶ)によるパケットのキューイング遅延(以下、Dと呼ぶ)が発生し、RTTが増大する。すなわち、式(3)が成り立つ。
RTT=RTTbase+D (3)
送信者は、1RTTに1度、以下の式(4)により定義されるDiffを計算する。
Diff=(cwnd/RTTbase−cwnd/RTT)×RTTbase (4)
式(4)に式(3)を代入し、以下の計算を行う。ただし、T=cwnd/RTTとする。このTは、送信者のデータの送信速度に等しい。
Diff=(cwnd/RTTbase−cwnd/RTT)×RTTbase
=(cwnd/RTTbase−cwnd/(RTTbase+D))×RTTbase (5)
=cwnd/RTT×D
=T×D
ここで、Diffについて、図2を参照して説明する。
【0008】
Diffは、送信者がボトルネックルータのバッファにキューイングさせているパケット量に等しい。送信者は、送信速度Tでデータパケットを常に送信している。ルータには、全てのパケットがD秒間、そのバッファにキューイングされている。したがって、平均Diff=T×Dの量のパケットが常にルータのバッファにバッファリングされている。このDは、RTTの変動から測定することができる。
【0009】
TCP Vegasでは、送信者はCongestion Avoidanceに入った後は、1RTTに1度、このDiffを計算し、以下の方法で、cwndが変更される。
(1)Diff<α(αはデフォルトでは1)
cwnd_next=cwnd+1 (6)
(2)β<Diff(βはデフォルトでは3)
cwnd_next=cwnd−1 (7)
TCP Vegasでは、既存TCPと違い、RTTの変動情報を見ながらネットワークに常に一定の負荷をかけるようにデータ送信速度が決定される。そのため、ネットワークを高効率に利用することが可能である。
【0010】
また、Speedy Congestion Controlも提案されている(例えば、非特許文献3参照)。Speedy Congestion Controlでは、TCP Vegasにおいて、ネットワークの輻輳状況の変化に迅速に追従するために、式(6)、式(7)が式(8)のように変更される。
(1)Diff<α、もしくはβ<Diff
cwnd_next=cwnd+ε(δ−Diff) (8)
ただし、δ=(α+β)/2である。Speedy Congestion Controlでは、Diffをδに近づけるように輻輳制御が行われる。また、Diffが理想値δから離れていればいる程、急激にcwndを変化させることができ、ネットワークの急激な輻輳状況の変化に追従させることができる。
【0011】
しかし、既存TCP、TCP Vegasとも、もとは数Mbps程度の低速通信のために作られたプロトコルであり、光ファイバなどを用いたギガビット級の広帯域なネットワークでは、ネットワークの帯域を十分に利用できない。
【0012】
これらの既存TCPでは、図3(a)に示すように、ネットワークが輻輳していない間は徐々にcwndを増加させていく。しかし、cwndの増加のスピードが遅いため広帯域なネットワークでは、最大速度に達するまでに非常に長い時間がかかる。
【0013】
これらの問題を解決するために、High−Speed TCPが提案されている(例えば、非特許文献4参照)。
【0014】
High−Speed TCPは、図3(b)に示すように、既存TCPのcwndの増加率を大きくしたものである。High−Speed TCPでは、cwndを従来のものよりも急激に増加させ、またパケットロスが発生した場合においても既存TCPほどcwndを減少させない。このため、広帯域なネットワーク環境でも、ネットワークの帯域を速やかに利用することが可能である。
【非特許文献1】W.Richard Stevens,”TCP/IP Illustrated, Volume 1: The Protocols” Addison-Wesley,1994
【非特許文献2】Charalampos(Babis) Samios, Mary K. Vernon,”Modeling the throughput of TCP Vegas”, ACM SIGMETRICS, 2003
【非特許文献3】齋藤健太郎、五十嵐健、川上博、“TCP Vegasの輻輳制御の改良手法の提案と評価”、電子情報通信学会 NS研究会2004年3月
【非特許文献4】S.Floyd, “HighSpeed TCP for Large Congestion Windows(登録商標)”,IETF RFC 3649 2003
【発明の開示】
【発明が解決しようとする課題】
【0015】
しかしながら、上述した背景技術には以下の問題がある。
【0016】
既存TCP、TCP Vegas、High−Speedy TCPが共存している場合には、TCPバージョン間の公平性の問題がある。
【0017】
最初に、既存TCPとTCP Vegasとの間の公平性の問題について説明する。TCP Vegasは、単体で使用されている場合はTCP Renoよりもネットワークの帯域を高効率に利用することが可能である。しかし、TCP Vegasは、既存TCPと共存した場合にフロー間の公平性を保てない問題がある。
【0018】
例えば、図4に示すように、TCP Vegasのフローと既存TCPのフローとが共通のボトルネックリンクを通して通信している場合、公平性の観点からは、2つのフロー間でボトルネックリンクの帯域を平等に分け合うべきである。しかし、実際にはこの様な状況では、既存TCPのフローがボトルネックリンクの帯域のほとんどを占有する。以下、この理由を説明する。
【0019】
既存TCPは、ボトルネックリンクが輻輳し最終的にパケットロスが発生するまでcwndを増加させ、通信速度を増加させる。一方、TCP Vegasは、RTTの変動からDiffを計算し、ボトルネックルータのバッファが溢れないように通信速度を決定する。すなわち、TCP Vegasは、輻輳の発生を早めに検知し、パケットロスが発生する前にcwndを減少させようとする。よって、2つのフローが共存した場合、TCP Vegasがcwndを下げることによってボトルネックリンクの輻輳が緩和し、その結果輻輳によるパケットロスが発生しないので既存TCPはcwndをますます増加させる、ということが繰り返される。この公平性の問題は、既存TCPとSpeedy Congestion Avoidanceとの間でも同様に生じる。
【0020】
また、既存TCPとHigh−Speed TCPとの間にも同様な公平性の問題がある。既存TCPはパケットロスが発生するまでcwndを増加させ、パケットロスを経験した後にcwndを大きく減少させる制御を行う。よって、ネットワークでのパケットロス率がTCPの速度を決定する重要な要素の1つである。既存TCPとHigh Speed TCPとが共存した場合、図3を参照して説明したように、High−Speed TCPはcwndの増加率が大きいので既存TCPよりも頻繁にネットワークを輻輳させる。この結果、ネットワークのパケットロス率が上昇し、既存TCPの通信速度が大きく低下する。つまり、High Speed TCPは既存TCPが使い切れないネットワークの帯域を利用するだけでなく、既存TCPの通信を圧迫してネットワークの帯域の大半を占有する。
【0021】
上述したように、TCP Vegas、High―Speed TCPには既存TCPとの公平性の問題があり、既存TCPと平等性を保持し、かつネットワークの帯域の利用効率を向上させる方式が必要である。
【0022】
そこで、本発明の目的は、ネットワークの空き帯域の利用効率を改善し、既存TCPとの帯域利用の公平性を実現することができる通信端末および通信システム並びに輻輳制御方法を提供することを目的とする。
【課題を解決するための手段】
【0023】
上記課題を解決するため、本発明の通信端末は、パケットロスの有無に基づいて、第1の送信速度を設定し、輻輳制御を行う第1の輻輳制御手段と、ネットワークの空き帯域の状況を判断する帯域状況判断手段と、空き帯域のうち、第1の送信速度により使用されない帯域に基づいて、第2の送信速度を設定し、輻輳制御を行う第2の輻輳制御手段とを備える。
【0024】
このように構成することにより、ネットワークの空き帯域の利用効率を改善し、かつ既存輻輳制御手段、例えば既存TCPとの帯域利用の公平性を実現することができる。
【0025】
また、本発明にかかる通信システムは、パケットロスの有無に基づいて、第1の送信速度を設定し、輻輳制御を行う第1の輻輳制御手段と、ネットワークの空き帯域の状況を判断する帯域状況判断手段と、空き帯域のうち、第1の送信速度により使用されない帯域に基づいて、第2の送信速度を設定し、輻輳制御を行う第2の輻輳制御手段とを備える。
【0026】
このように構成することにより、ネットワークの空き帯域の利用効率を改善し、かつ既存の輻輳制御手段、例えば既存TCPとの帯域利用の公平性を実現することができる。
【0027】
また、本発明にかかる輻輳制御方法は、ネットワークの空き帯域の状況を判断するステップと、パケットロスの有無に基づいて、第1の通信速度を設定するステップと、空き帯域のうち、前記第1の送信速度により使用されない帯域に基づいて、前記第2の送信速度を設定するステップとを有する。
【0028】
このようにすることにより、ネットワークの空き帯域の利用効率を改善し、かつ既存の輻輳制御手段、例えば既存TCPとの帯域利用の公平性を実現することができる。
【発明の効果】
【0029】
本発明の実施例によれば、ネットワークの空き帯域の利用効率を改善し、既存TCPとの帯域利用の公平性を実現することができる通信端末および通信システム並びに輻輳制御方法を実現できる。
【発明を実施するための最良の形態】
【0030】
次に、本発明の実施例について図面を参照して説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【0031】
TCPバージョン間の公平性の問題が発生するのは、異なるバージョンのTCPが混在することで輻輳発生の頻度が変化することや、輻輳発生時にTCPの各バージョンによって輻輳制御ポリシーが異なることが原因である。よって、既存のTCPとの公平性を維持しながら、ネットワーク帯域の利用効率を向上させる新しいTCPを導入するためには、新しいTCPを導入することによってこれらの状態を変化させないことが必要である。本発明の実施例では、この要求条件を実現するために以下の2つの方式を提案する。
【0032】
(1)複数の輻輳制御ポリシーを持った輻輳制御方式
本実施例では、基本ポリシー、追加ポリシーの2つの輻輳制御ポリシーを持った輻輳制御方式を提案する。
【0033】
最初に、送信者側の通信装置(通信端末)は、基本輻輳ウインドウサイズ(Congestion Window Size)(以下、cwnd_baseと呼ぶ)と追加輻輳ウインドウサイズ(Congestion Window Size)(以下、cwnd_addと呼ぶ)とを備える。すなわち、通信装置の送信速度を制御するために、複数の輻輳ウインドウサイズを設ける。cwnd_baseおよびcwnd_addは負の値にはならず、実際にデータ送信の際に用いられるcwndはcwnd_baseとcwnd_addとの和になる。また、送信者側の通信装置は2つの輻輳制御ポリシーを備える。1つ目は基本ポリシーで、第1の送信速度を決定するcwnd_baseの変更を行う。2つ目は追加ポリシーで、第2の送信速度を決定するcwnd_addの変更を行う。
【0034】
以下、2つの輻輳制御ポリシーについて説明する。
【0035】
基本ポリシーは既存TCPとの公平性を保つためのポリシーであり、内容は既存TCPと同様である。追加ポリシーは基本ポリシーで利用し切れないネットワークの空き帯域を利用するためのものであり、内容はTCP Vegasや、Speedy Congestion AvoidanceのようなRTTの変動を利用する輻輳制御ポリシーである。追加ポリシーは、基本ポリシーと共存した場合に基本ポリシーを圧迫しない輻輳制御ポリシーであれば何でも良いが、以下では追加ポリシーとして、Speedy Congestion Avoidanceを用いた場合を例として説明する。
【0036】
以下、本実施例にかかる輻輳制御方法におけるcwndの変更方法について説明する。
【0037】
(i)パケットロスが発生していない場合
cwnd_base_next=cwnd_base+1 (1´)
Diff<αもしくはβ<Diff
cwnd_add_next=cwnd_add+ε(δ-Diff) (8´)
(ii)パケットロスが発生した場合
cwnd_base_next=cwnd_base/2 (2´)
cwnd_add_next=0 (9)
なお、上述したようにcwnd_next=cwnd_base_next+cwnd_add_nextであり、また、
Diff=(cwnd/RTTbase−cwnd/RTT)×RTTbase (4)
である。
【0038】
次に、本実施例にかかる輻輳制御方法の概要について、図5を参照して説明する。図5は、時間に対する輻輳ウインドウサイズの変化を示す。
【0039】
図5では、送信者側の通信装置(通信端末)が1台である場合について説明するが、送信者側の通信装置が複数台である場合においても同様の制御が行われる。
【0040】
最初に、(1)で示される部分では、ネットワークに空き帯域が存在する。この場合、送信者側の通信装置は式(1´)にしたがって、cwnd_baseを1ずつ増加させる。また、送信者側の通信装置と受信者側の通信装置との間のパケット伝搬遅延を求めるために、例えばRTTを測定し、式(4)にしたがってDiffを計算し、Diffがαよりも小さい間は式(8´)にしたがって、cwnd_addを増加させる。よって、Diffが小さい間は既存TCPよりも急激にcwndを増加させることができる。
【0041】
(2)で示される部分ではネットワークは高効率に利用されている。ネットワークが輻輳し始めるとDiffが増大し始める。その場合、基本制御ポリシーは式(1´)にしたがってcwnd_baseを増加させるが、追加制御ポリシーは式(8´)にしたがってDiffをα〜βの一定範囲内に維持しようとcwnd_addを減少させる。そのため輻輳によるパケットロスは発生せず、ネットワークの帯域を高効率に利用した通信が可能である。
【0042】
(3)で示される部分について説明する。cwnd_addを減少させた結果、cwnd_addが0になった場合でも、送信者側の通信装置はcwnd_baseを増加させ続けるので、cwnd_baseの上昇にしたがってcwndが上昇し始める。最終的にはルータのバッファが溢れパケットロスが発生する。パケットロスが発生すると式(2´)、式(9)にしたがってcwndが半分に減少する。その後は、上述した動作が繰り返される。
【0043】
図5を参照して説明したように、追加ポリシーは基本ポリシーを圧迫しないので、例えば、本実施例にかかる輻輳制御方法は、複数の既存TCPと共存した場合でも、その他のフローを圧迫せずに、ネットワークの空き帯域のみを利用することが可能である。
【0044】
(2)Diffの時間推移情報を用いたcwnd変更方式
複数の輻輳制御ポリシーを用いた輻輳制御は、基本ポリシー、追加ポリシーとも広帯域ネットワークを想定したものではない。したがって、広帯域ネットワーク上で利用した場合には、ネットワークの帯域を十分に使い切れない可能性がある。そのため、広帯域ネットワークの利用効率を改善する輻輳制御ポリシーを提案する。本手法は主に上記輻輳制御方式の追加ポリシーに適応することが想定される。
【0045】
広帯域のネットワークを迅速に利用するためにはcwndの増加率を大きくすれば良い。しかし、cwndを大きくし過ぎるとネットワークが急激に輻輳し、それに対応してcwndを減少させる前にルータのバッファが溢れてしまう場合がある。この場合は、パケットロスが発生し、その結果他のフロー、すなわち他の通信装置の通信を圧迫する可能性がある。したがって、ルータのバッファが溢れない安全な領域内で、できるだけcwndの増加率を大きくすることが必要である。
【0046】
本発明の実施例では、適切なcwndの増加率を決定するために、Diffの時間推移を用いてボトルネックルータのバッファ量を推測する。
【0047】
本実施例にかかる輻輳制御方法について、図6を参照して説明する。
【0048】
図6(a)に示すように、n台の送信者側の通信装置が同一のボトルネックルータを共有して通信を行う場合について説明する。一般に、i番目の送信者の計算するDiff(以下、Diff_iと呼ぶ)は、図6(b)に示すように時間堆移する。ネットワークが輻輳していない間は0に近く、ネットワークが輻輳し始めると徐々に増大し始める。ルータのバッファが溢れパケットロスが発生すると、パケットロスを経験したフローはcwndを大幅に減少させるため、輻輳は緩和されDiff_iはすぐに0に近くなる。0に戻る直前は、ルータのバッファがいっぱいになっている状態であるので、この時のDiff_iをDiff_max_iと表すと、ボトルネックルータのバッファ量Buffは、全送信者のDiff_maxを用いて以下の式(10)のように表される。
【0049】
【数1】

パケットロス発生後Diffは0に近くなるが、その後ボトルネックルータのバッファを溢れさせない範囲で、できるだけ速やかにネットワークの空き帯域を利用する必要がある。そのためには以下の式(11)を常に満たしている必要がある。
【0050】
【数2】

そのためには、全送信者側の通信装置が自通信装置のDiff_maxを記憶しておき、cwndを増加させる際に、常にDiff_i≦Diff_max_iを満たすように制御を行えばよい。本実施例ではこの条件を満たすため、式(8´)を以下のように変更する。
cwnd_add_next_i=cwnd_add_i+ε(λ×Diff_max_i−Diff_i) (8´´)
ただし、λ≦1である。このように制御することによって、送信者側の通信装置はDiffをλ×Diff_max_iに近づけるように輻輳制御を行うことができる。したがって、ネットワークの帯域に空きがありDiffが0に近い場合には、ルータのバッファが溢れない程度に急激にcwndを増加させるができ、空き帯域を迅速に利用することが可能である。
【0051】
ただし、上記の方法が理想的に働かないケースも存在する。1つ目のケースは、複数の送信者が同一のボトルネックルータを共有して通信している場合であり、ボトルネックルータが輻輳し始めて各送信者側の通信装置のDiffがある程度大きくなった後に送信者側の通信装置の1台が急に通信を終了した場合である。
【0052】
この場合は、通信の終了に伴いボトルネックルータの輻輳が緩和され、各送信者側の通信装置のDiffが急激に低下する。上記手法にしたがうと、各送信者側の通信装置は急激に低下したときのDiffをDiff_maxとして記憶する場合がある。しかし、計算されるDiff_maxはボトルネックルータのバッファ量から求まるはずの、真のDiff_maxよりも小さい。したがって、計算されたDiff_maxを使って制御を行うと、ネットワークの空きを十分早く利用できない場合がある。しかし、この様なケースでは、他のトラフィックを圧迫することはないので大きな問題にはならない。
【0053】
もう1つのケースは送信者側の通信装置がDiff_maxを学習した後に、ネットワークの状況が急激に変化する場合である。例えば、Diff_maxを学習した直後に大量の他の送信者が通信を開始し、ネットワークが予測以上に輻輳してしまう場合や、ネットワークの輻輳箇所が変わることにより学習したDiff_maxに意味がなくなる場合が考えられる。この様な場合では、上記手法を用いることでネットワークに輻輳を発生させ、他のトラフィックを圧迫する可能性があるため、式(8´´)において、λを小さい値に変更する等の制御を行うことにより対応できる。
【0054】
次に、本発明の実施例にかかる通信システムについて、図7を参照して説明する。
【0055】
本実施例にかかる通信システムは、複数の輻輳制御ポリシーを利用して輻輳制御を行う。
【0056】
本実施例にかかる通信システムは、例えばインターネットなどの通信網100と、通信網100と接続されたルータ110および120と、ルータ110と、例えばTCP/IPネットワークであるLANを介して、有線または無線により接続された通信装置としての端末130および140と、ルータ120と、例えばTCP/IPネットワークであるLANを介して、有線または無線により接続された通信端末としての端末150および160とを備える。
【0057】
送信者側の通信端末としての端末130が、受信者側の端末としての端末150宛のパケットを送信すると、そのパケットは、ルータ110およびルータ120に中継され端末150へ送信される。
【0058】
次に、本発明の第1の実施例にかかる通信端末としての端末130について、図8を参照して説明する。端末140、150および160については、端末130と同様の構成であるため、その説明を省略する。
【0059】
本実施例にかかる端末130は、輻輳制御部131と輻輳制御部131と接続された帯域状況判断部132と、帯域状況判断部132および輻輳制御部131と接続された伝搬遅延測定部133とを備える。また、輻輳制御部131は、帯域状況判断部132および伝搬遅延測定部133と接続された第1の輻輳制御手段としての基本輻輳制御部134と、基本輻輳制御部134および伝搬遅延測定部133と接続された第2の輻輳制御手段としての追加輻輳制御部135とを備える。
【0060】
伝搬遅延測定部133は、送信者側の通信装置と受信者側の通信装置との間のパケット伝搬遅延を求めるために、例えばRTTを測定する。本実施例では、伝搬遅延の測定を行う伝搬遅延測定部133を備える場合について説明するが、追加輻輳制御部135が伝搬遅延を測定するようにしてもよい。帯域状況判定部132は、ネットワークの帯域利用状況を把握し、空き帯域が存在しているか否かを判断する。また、伝搬遅延の測定結果に基づいて、輻輳が発生したか否かを判断する。さらに、パケットロスが発生したか否かを判断する。
【0061】
データの送信制御を制御するということは、パケット伝搬遅延に応じて送信速度を増減させることに等しい。パケット伝搬遅延は、例えばRTTを測定することにより求めることができる。この場合、RTTが大きくなったら送信速度を下げ、小さくなったら送信速度を上げる制御が行われる。この送信速度を変更するために輻輳ウインドウサイズを用いる。
【0062】
基本輻輳制御部134は、基本ポリシーを備え、第1の送信速度を決定するcwnd_baseの変更を行う。基本輻輳制御部134は、基本ポリシーとして、例えば、既存のTCPを備え、cwnd_baseの変更を行う。例えば、ネットワークに空き帯域が存在している場合、式(1´)にしたがって、cwnd_baseを1づつ増加させる。また、パケットロスが発生した場合、式(2´)にしたがって、cwnd_baseを半分に減少させる制御を行う。
【0063】
追加輻輳制御部135は、追加ポリシーを備え、第2の送信速度を決定するcwnd_addの変更を行う。追加輻輳制御部135は、追加ポリシーとして、例えばSpeedy congestion Avoidanceを備え、cwnd_addの変更を行う。また、伝搬遅延測定部133による伝搬遅延測定結果を用いて、Diffを計算し、Diffがαよりも小さい場合には、式(8´)にしたがってcwnd_addを増加させる。このようにすることにより、Diffが小さい間は既存TCPよりも急激にcwndを増加させることができる。
【0064】
また、追加輻輳制御部135は、ネットワークが輻輳し始めた結果、Diffが増大し始めた場合、式(8´)にしたがってDiffをα〜βの一定範囲内に維持するために、cwnd_addを減少させる。このようにすることにより、輻輳によるパケットロスの発生を抑えることができ、ネットワークの帯域の利用効率を改善できる。
【0065】
次に、本実施例にかかる端末130の動作について、図9を参照して説明する。
【0066】
最初に、帯域状況判断部132はパケットロスが発生しているか否かについて判断する(ステップS902)、パケットロスが発生している場合(ステップS902:YES)、基本輻輳制御部134および追加輻輳制御部135は、cwnd_baseおよびcwnd_addの値を変更し(ステップS904)、ステップS902にもどる。すなわち、式(2´)および式(9)に基づいて、cwnd_baseおよびcwnd_addの値を変更する。
【0067】
一方、パケットロスが発生していない場合(ステップS902:NO)、基本輻輳制御部134は、cwnd_baseの値を変更する(ステップS906)。すなわち、式(1´)にしたがって、cwnd_baseの値を増加させる。
【0068】
次に、伝搬遅延測定部133は、伝搬遅延を求めるために、例えばRTTの測定を行う(ステップS908)。次に、追加輻輳制御部135は、伝搬遅延の測定結果を用いてDiffを計算し、Diff<αもしくはDiff>βであるか否かを判断する(ステップS910)。
【0069】
Diff<αもしくはDiff>βである場合(ステップS910:YES)、式(8´)にしたがってcwnd_addの値を変更し(ステップS912)、ステップS902に戻る。一方、Diff<αもしくはDiff>βでない場合(ステップS910:NO)、何もせずにステップS902に戻る。
【0070】
次に、本発明の第2の実施例にかかる通信端末としての端末130について、図10を参照して説明する。端末140、150および160については、端末130と同様の構成であるため、その説明を省略する。
【0071】
本実施例にかかる端末130は、輻輳制御部131と、輻輳制御部131と接続された帯域状況判断部132と、帯域状況判断部132および輻輳制御部131と接続された伝搬遅延測定部133と、輻輳制御部131と接続された記憶部137とを備える。また、輻輳制御部131は、帯域状況判断部132および伝搬遅延測定部133と接続された基本輻輳制御部134と、基本輻輳制御部134、伝搬遅延測定部133および記憶部137と接続された追加輻輳制御部136とを備える。本実施例では、伝搬遅延の測定を行う伝搬遅延測定部133を備える場合について説明するが、追加輻輳制御部136が伝搬遅延を測定するようにしてもよい。
【0072】
本実施例にかかる端末130は、第1の実施例において説明した端末と追加輻輳制御部の機能が異なる。
【0073】
追加輻輳制御部136は、例えば追加ポリシーとしてSpeedy congestion Avoidanceを備え、第2の送信速度を決定するcwnd_addの変更を行う。
【0074】
本実施例にかかる通信端末は、適切なcwndの増加率を決定するために、Diffの時間推移を用いて、ボトルネックルータのバッファ量を推測する。例えば、ボトルネックルータにバッファリングできる自通信端末の最大パケット量を推定する。
【0075】
本実施例にかかる端末130が、i番目の端末である場合について説明する。
【0076】
追加輻輳制御部136は、帯域状況判断部132により輻輳と判断され、パケットロスが検出され、Diff_iが0に近くなる直前のDiff、すなわちルータのバッファがいっぱいになった状態の自端末のDiff_iをDiff_max_iとして、記憶部137に記憶する。また、cwndを増加させる場合に、常にDiff_max_i以下となるように制御を行う。このようにすることにより、ネットワークの帯域に空きがあり、かつDiffが0に近い場合、ルータのバッファが溢れない範囲で、cwndを増加させることができ、空き帯域を迅速に利用することができる。
【0077】
次に、本実施例にかかる通信端末130の動作について、図11を参照して説明する。ここでは、第1の実施例とは異なる追加輻輳制御部136の動作について説明する。
【0078】
最初に、ボトルネックルータのバッファ量を推測し、記憶する動作について、図11(a)を参照して説明する。追加輻輳制御部136は、Diffの時間推移を計測する。帯域状況判断部132は、パケットロスが発生したか否かについて判断する(ステップS1102)。この場合、自通信端末においてパケットロスが発生した場合でもよいし、他の通信端末においてパケットロスが発生した場合でもよい。パケットロスが発生した場合(ステップS1102:YES)、追加輻輳制御部136は、パケットロスが起こり、Diff_が0に近くなる直前のDiffをDiff_max_iとして、記憶部137に記憶する(ステップS1104)。一方、パケットロスが発生していない場合(ステップS1102:NO)、ステップS1102に戻る。
【0079】
次に、輻輳を制御する動作について、図11(b)を参照して説明する。
【0080】
帯域状況判断部132は、ネットワークに空き帯域があるか否かについて判断する(ステップS1106)。ネットワークに空き帯域がある場合(ステップS1106:YES)、追加輻輳制御部136は、記憶部137に記憶されたDiff_max_iを参照し、cwndをDiff_i<Diff_max_iを満たすように制御し、ステップS1106に戻る。例えば、追加輻輳制御部136は、式(8“”)にしたがってcwnd_add変更することにより、cwndを制御する。一方、ネットワークに空き帯域がない場合(ステップS1106:NO)、ステップS1106に戻る。
【0081】
このように制御することによって、送信者側の通信端末はDiffをλ×Diff_max_iに近づけるように輻輳制御を行うことができる。したがって、ネットワークの帯域に空きがありDiffが0に近い場合には、ルータのバッファが溢れない程度に急激にcwndを増加させることで空き帯域を迅速に利用することが可能であり、cwndの増加のスピードを改善することができる。
【0082】
次に、本発明の第3の実施例にかかる通信端末としての端末130について、図12を参照して説明する。端末140、150および160については、端末130と同様の構成であるため、その説明を省略する。
【0083】
本実施例にかかる端末130は、第1の実施例にかかる端末と第2の実施例にかかる端末とを組み合わせたものである。すなわち、本実施にかかる通信端末としての端末は、輻輳制御部131と、輻輳制御部131と接続された帯域状況判断部132と、帯域状況判断部132および輻輳制御部131と接続された伝搬遅延測定部133と、輻輳制御部131と接続された記憶部137とを備える。また、輻輳制御部131は、帯域状況判断部132および伝搬遅延測定部133と接続された基本輻輳制御部134と、基本輻輳制御部134、伝搬遅延測定部133および記憶部137と接続された追加輻輳制御部138とを備える。本実施例では、伝搬遅延の測定を行う伝搬遅延測定部133を備える場合について説明するが、追加輻輳制御部138が伝搬遅延を測定するようにしてもよい。
【0084】
本実施例では、送信者側の通信端末としての端末130は、基本ポリシーとして既存TCPを、追加ポリシーとしてSpeedy congestion Avoidanceを用いた場合を例として説明する。すなわち、基本輻輳制御部134は、基本ポリシーとして、既存のTCPを備え、第1の送信速度を決定するcwnd_baseの変更を行う。追加輻輳制御部138は、追加ポリシーとしてSpeedy congestion Avoidanceを備え、第2の送信速度を決定するcwnd_addの変更を行う。
【0085】
また、追加輻輳制御部138は、Diff_minというパラメータを設定し、Diff<Diff_minである場合は、ネットワークに空き帯域があるとみなして、第2の実施例において説明したDiffの時間推移情報を用いたcwnd変更方式を用いることで空き帯域を迅速に利用する。
【0086】
基本輻輳制御部134および追加輻輳制御部138は、以下の条件に応じて、cwnd_baseおよびcwnd_addの変更を行う。
【0087】
(1)パケットロスが発生していない場合
cwnd_base_next=cwnd_base+1 (1´)
Diff<Diff_minの場合
cwnd_add_next=cwnd_add+ε(λ×Diff_max−Diff) (10)
Diff≧Diff_minで、Diff<αもしくはβ<Diffの場合
cwnd_add_next=cwnd_add+ε(δ−Diff) (8´)
(2)パケットロスが発生した場合
cwnd_base_next=cwnd_base/2 (2´)
cwnd_add_next=0 (9)
ただし、各パラメータについては、所定の値が予め設定される。例えばDiff_min=0.5、α=1、β=3、δ=2、λ=0.75、ε=1、等とあらかじめ設定される。また、cwnd_next=cwnd_base_next+cwnd_add_nextである。
【0088】
Diff_maxは、第2の実施例において説明したDiffの時間推移情報を用いたcwnd変更方式で説明した方法により決定される。具体的には、デフォルトとして、Diff_max_default=8等と固定的なパラメータをあらかじめ用意し、Diff>Diff_max_defaultの状態から、1RTTでDiff<Diff_minまで減少した場合に、Diffが急激に減少したと見なしてDiff_maxの値を決定し、この値を記憶部137に記憶する。
【0089】
次に、本実施例にかかる通信端末としての端末の動作について、図13を参照して説明する。
【0090】
最初に、帯域状況判断部132はパケットロスが発生しているか否かについて判断する(ステップS1302)、パケットロスが発生している場合(ステップS1302:YES)、基本輻輳制御部134および追加輻輳制御部135は、cwnd_baseおよびcwnd_addの値を変更し(ステップS1304)、ステップS1302にもどる。すなわち、式(2´)および式(9)に基づいて、cwnd_baseおよびcwnd_addの値を変更する。
【0091】
一方、パケットロスが発生していない場合(ステップS1302:NO)、基本輻輳制御部134は、cwnd_baseの値を変更する(ステップS1306)。すなわち、式(1´)にしたがって、cwnd_baseの値を増加させる。
【0092】
次に、伝搬遅延測定部133は、伝搬遅延を求めるために、例えばRTTの測定を行う(ステップS1308)。
【0093】
次に、追加輻輳制御部138は、Diffを計算し、Diff<Diff_minであるか否かについて判断する(ステップS1310)。Diff<Diff_minである場合(ステップS1310:YES)、追加輻輳制御部138は、式(10)にしたがって、Diff_i<Diff_maxを満たすように、cwnd_addを急激に増大させる(ステップS1312)。ここで、Diff_maxは、ルータのバッファがいっぱいになった状態の自端末のDiff_iである。
【0094】
このようにすることにより、端末130は、Diffをλ×Diff_maxに急速に近づけることができ、ルータのバッファを溢れさせない範囲で、空き帯域を利用することができ、cwndの増加のスピードを改善することができる。
【0095】
一方、Diff<Diff_minでない場合(ステップS1302:NO)、追加輻輳制御部135は、伝搬遅延の測定結果を用いてDiffを計算し、Diff<αもしくはDiff>βであるか否かを判断する(ステップS1314)。
【0096】
Diff<αもしくはDiff>βである場合(ステップS1314:YES)、式(8´)にしたがってcwnd_addの値を変更し(ステップS1316)、ステップS902に戻る。一方、Diff<αもしくはDiff>βでない場合(ステップS1314:NO)、何もせずにステップS902に戻る。
【0097】
次に、本実施例にかかる端末130の輻輳ウインドウサイズの制御動作について、図14を参照して説明する。
【0098】
(1)で示される領域では、Diff<Diff_minであり、端末130の追加輻輳制御部138は、式(10)にしたがって、cwnd_addを急激に増加させる。
【0099】
次に、(2)で示される領域では、ネットワークの帯域が高効率に利用されDiff≧minとなる。このため、端末130は、式(8´)にしたがって、cwnd_addを変更する。この間cwnd_baseは式(1´)にしたがって増加し続けるが、cwnd_addがDiffをα〜βに維持するようにcwnd_addを変更するため、輻輳によるパケットロスは発生しない。
【0100】
次に、(3)で示される領域では、cwnd_add=0となり、cwndはcwnd_baseの増加に伴って増加する。ネットワークも輻輳し始めるため、Diffも増加し始める。(4)で示される領域では、ボトルネックルータのバッファが溢れパケットロスが発生する。このため、端末130は、cwndを半分に減少させる。また、端末130は、パケットロスが発生した時のDiffをDiff_maxとして記憶する。cwndを半分に減少させることで、ネットワークの輻輳は速やかに緩和される。
【0101】
もしその他の送信者が同一のルータを通して通信している場合は、ネットワークの輻輳の緩和により他送信者のDiffも急激に減少する。よって、第2の実施例において説明したDiffの時間推移情報を用いたcwnd変更方式に述べた方法で各自のDiff_maxを記憶する。後は、(1)〜(4)の繰り返しになる。
【0102】
本実施例によれば、既存TCPが利用することができないネットワークの空き帯域を迅速に、かつ既存TCPとの公平性を保ちながら利用することが可能になる。
【産業上の利用可能性】
【0103】
本発明にかかる通信端末および通信システム並びに輻輳制御方法は、輻輳制御を行う通信システムに適用できる。
【図面の簡単な説明】
【0104】
【図1】既存TCPにおけるcwndの時間推移の例を示す説明図である。
【図2】TCP VegasにおけるDiffの見積もり方法の概要を示す説明図である。
【図3】High−Speed TCPにおけるcwndの時間推移の例を示す説明図である。
【図4】既存TCPとTCP Vegasとの間の公平性の問題を示す説明図である。
【図5】本発明の一実施例にかかる輻輳制御方式の概要を示す説明図である。
【図6】本発明の一実施例にかかる輻輳制御方式の概要を示す説明図である。
【図7】本発明の一実施例にかかる通信システムを示すブロック図である。
【図8】本発明の一実施例にかかる通信端末を示すブロック図である。
【図9】本発明の一実施例にかかる通信端末の動作を示すフローチャートである。
【図10】本発明の一実施例にかかる通信端末を示すブロック図である。
【図11】本発明の一実施例にかかる通信端末の動作を示すフローチャートである。
【図12】本発明の一実施例にかかる通信端末を示すブロック図である。
【図13】本発明の一実施例にかかる通信端末の動作を示すフローチャートである。
【図14】本発明の一実施例にかかるcwndの変化例を示す説明図である。
【符号の説明】
【0105】
100 通信網
110、120 ルータ
130、140、150、160 通信端末

【特許請求の範囲】
【請求項1】
パケットロスの有無に基づいて、第1の送信速度を設定し、輻輳制御を行う第1の輻輳制御手段;
ネットワークの空き帯域の状況を判断する帯域状況判断手段;
前記空き帯域のうち、前記第1の送信速度により使用されない帯域に基づいて、前記第2の送信速度を設定し、輻輳制御を行う第2の輻輳制御手段;
を備えることを特徴とする通信端末。
【請求項2】
請求項1に記載の通信端末において:
前記第2の輻輳制御手段は、他の通信端末との間のパケット伝搬遅延の変動に基づいて、前記第2の送信速度を制御することを特徴とする通信端末。
【請求項3】
請求項1または2に記載の通信端末において:
前記第2の輻輳制御手段は、ボトルネックルータにバッファリングできる自通信端末の最大パケット量を推定し、前記推定値に基づいて第2の送信速度を設定することを特徴とする通信端末。
【請求項4】
パケットロスの有無に基づいて、第1の送信速度を設定し、輻輳制御を行う第1の輻輳制御手段;
ネットワークの空き帯域の状況を判断する帯域状況判断手段;
前記空き帯域のうち、前記第1の送信速度により使用されない帯域に基づいて、前記第2の送信速度を設定し、輻輳制御を行う第2の輻輳制御手段;
を備えることを特徴とする通信システム。
【請求項5】
請求項4に記載の通信システムにおいて:
前記第2の輻輳制御手段は、他の通信端末との間のパケット伝搬遅延の変動に基づいて、前記第2の送信速度を制御することを特徴とする通信システム。
【請求項6】
請求項4または5に記載の通信端末において:
前記第2の輻輳制御手段は、ボトルネックルータにバッファリングできる自通信端末の最大パケット量を推定し、前記推定値に基づいて第2の送信速度を設定することを特徴とする通信システム。
【請求項7】
ネットワークの空き帯域の状況を判断するステップ;
パケットロスの有無に基づいて、第1の通信速度を設定するステップ;
前記空き帯域のうち、前記第1の送信速度により使用されない帯域に基づいて、前記第2の送信速度を設定するステップ;
を有することを特徴とする輻輳制御方法。
【請求項8】
請求項7に記載の輻輳制御方法において:
他の通信端末との間のパケット伝搬遅延を測定するステップ;
を有し、
前記第2の送信速度を設定するステップは、前記パケット伝搬遅延の変動に基づいて、第2の送信速度を設定することを特徴とする輻輳制御方法。
【請求項9】
請求項7または8に記載の輻輳制御方法において:
ボトルネックルータにバッファリングできる自通信端末の最大パケット量を推定するステップ;
を有し、
前記第2の送信速度を設定するステップは、前記推定値に基づいて第2の通信速度を設定することを特徴とする輻輳制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2006−67109(P2006−67109A)
【公開日】平成18年3月9日(2006.3.9)
【国際特許分類】
【出願番号】特願2004−245522(P2004−245522)
【出願日】平成16年8月25日(2004.8.25)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】