(57)【要約】【課題】データの転送遅延を最小化する、特に、ネットワーク内でのキュー遅延を最小化する。【解決手段】ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信端末において、 受信したデータに基づいて送受信を行う通信端末間の往復遅延時間（ＲＴＴ）、あるいは片道遅延時間を計測する計測部5-6、受信したデータに基づいて通信端末のうちの受信端末における受信帯域を計測する受信帯域計測部5-9、往復遅延時間あるいは片道遅延時間の値を少なくとも受信帯域を用いて補正する補正部5-7と、補正された往復遅延時間あるいは片道遅延時間の値に基づいて送信帯域を決定する送信帯域決定部5-5と、を有する。【選択図】図９
2008193335.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムに用いる通信端末であって、 
受信したデータに基づいて、送受信を行う前記通信端末間の往復遅延時間あるいは片道遅延時間を計測する手段と、受信した前記データに基づいて前記複数の通信端末のうちの受信端末における受信帯域を計測する計測手段と、
前記往復遅延時間あるいは片道遅延時間の値を少なくとも前記受信帯域を用いて補正する補正手段と、
前記補正手段により補正された往復遅延時間あるいは片道遅延時間によって送信帯域を決定する決定手段と、を有することを特徴とする通信端末。
【請求項２】
請求項１に記載の通信端末において、
送信されるデータの送信帯域を計測する手段を有し、
前記補正手段は、該送信帯域を前記受信帯域で割った値を、計測した往復遅延時間あるいは片道遅延時間に乗ずることで該往復遅延時間あるいは片道遅延時間を補正することを特徴とする通信端末。
【請求項３】
請求項１に記載の通信端末において、
送信中のデータ量を計測する手段を有し、
前記補正手段は、該送信中のデータ量を前記受信帯域で割った値を、前記往復遅延時間あるいは片道遅延時間の補正した値として用いることを特徴とする通信端末。
【請求項４】
請求項２又は３に記載の通信端末において、
前記補正手段は、補正後の前記往復遅延時間あるいは片道遅延時間の値と、計測した前記往復遅延時間あるいは片道遅延時間の値との、大きい値を、前記補正された往復遅延時間あるいは片道遅延時間として前記決定手段に出力することを特徴とする通信システム、通信端末、及び通信プロトコル。
【請求項５】
請求項２又は３に記載の通信端末において、
前記補正手段は、補正後の前記往復遅延時間あるいは片道遅延時間の値と、計測した前記往復遅延時間あるいは片道遅延時間の最小値との、大きい値を、前記補正された往復遅延時間あるいは片道遅延時間として前記決定手段に出力することを特徴とする通信端末。
【請求項６】
ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムに用いる端末であって、 
送信中のデータ量を計測する手段と、受信した前記データに基づいて前記複数の通信端末のうちの受信端末における受信帯域を計測する計測手段と、
計測された前記送信中のデータ量を前記受信帯域で割った値を、前記往復遅延時間あるいは片道遅延時間とする推定手段と、
前記推定手段により推定された往復遅延時間あるいは片道遅延時間によって送信帯域を決定する決定手段と、を有することを特徴とする通信端末。
【請求項７】
ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムに用いる通信端末であって、 
前記ネットワーク内のキューで待たされているデータ量を推定し、前記データ量とその目標値との差分によって送信帯域の制御を行う手段と、前記複数の通信端末の送受信端末間の往復遅延時間あるいは片道遅延時間を計測する手段とを有し、
前記目標値を前記往復遅延時間あるいは片道遅延時間の減少関数として動的に変更することを特徴とする通信端末。
【請求項８】
請求項７に記載の通信端末において、
前記減少関数として、前記遅延時間の計測値と最小値の差分に対する指数関数又は線形関数を用いることを特徴とする通信端末。
【請求項９】
ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムに用いる通信端末であって、 
ネットワーク内のキューで待たされているデータ量を推定し、前記データ量とその目標値との差分によって送信帯域の制御を行う手段と、前記複数の通信端末の送受信端末間の往復遅延時間あるいは片道遅延時間を計測する手段とを有し、
前記目標値に対して、回線帯域、回線帯域を送信帯域で割った値、往復遅延時間、往復遅延時間の最小値のうちの少なくとも１つの値をかけあわせることを特徴とする通信端末。
【請求項１０】
ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムに用いる通信端末であって、 
ネットワーク内のキューで待たされているデータ量を推定する手段と、前記データ量とその目標値との差分によって送信帯域の制御を行う手段と、送受信端末間の往復遅延時間あるいは片道遅延時間を計測する手段とを有し、
前記データ量を推定する手段が、推定したデータ量に対して往復遅延時間、あるいは往復遅延時間の最小値をかけあわせることを特徴とする通信端末。
【請求項１１】
前記送信帯域の制御を行う手段は、制御の速さを表す時定数を、前記データ量とその目標値との差分の絶対値に対する減少関数とすることを特徴とする通信端末。
【請求項１２】
請求項１から１１のいずれか１項に記載の通信端末と、該通信端末とデータの送受信を行う他の通信端末とを有する通信システム。
【請求項１３】
請求項１２に記載の通信システムにおいて、前記他の通信システムは、前記通信端末からのデータ送信に対して、応答確認パケットを送信し、前記通信端末は応答確認パケットに基づいて前記往復遅延時間あるいは片道遅延時間を計測することを特徴とする通信システム。
【請求項１４】
ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムの通信端末における輻輳制御方法であって、 
受信したデータに基づいて、送受信を行う前記通信端末間の往復遅延時間あるいは片道遅延時間を計測するとともに前記複数の通信端末のうちの受信端末における受信帯域を計測する第１ステップと、
前記往復遅延時間あるいは片道遅延時間の値を少なくとも前記受信帯域を用いて補正する第２ステップと、
前記第２ステップで補正された往復遅延時間あるいは片道遅延時間によって送信帯域を決定する第３ステップと、を有することを特徴とする輻輳制御方法。
【請求項１５】
請求項１４に記載の輻輳制御方法において、
送信されるデータの送信帯域を計測する第４ステップを有し、
前記第２ステップでは、該送信帯域を前記受信帯域で割った値を、計測した往復遅延時間あるいは片道遅延時間に乗ずることで該往復遅延時間あるいは片道遅延時間を補正することを特徴とする輻輳制御方法。
【請求項１６】
請求項１４に記載の輻輳制御方法において、
送信中のデータ量を計測する第５ステップを有し、
前記第２ステップでは、該送信中のデータ量を前記受信帯域で割た値を、前記往復遅延時間あるいは片道遅延時間の補正した値として用いることを特徴とする輻輳制御方法。
【請求項１７】
請求項１５又は１６に記載の輻輳制御方法において、
前記第２ステップでは、補正後の前記往復遅延時間あるいは片道遅延時間の値と、計測した前記往復遅延時間あるいは片道遅延時間の値との、大きい値を、前記補正された往復遅延時間あるいは片道遅延時間とすることを特徴とする輻輳制御方法。
【請求項１８】
請求項１５又は１６に記載の輻輳制御方法において、
前記第２ステップでは、補正後の前記往復遅延時間あるいは片道遅延時間の値と、計測した前記往復遅延時間あるいは片道遅延時間の最小値との、大きい値を、前記補正された往復遅延時間あるいは片道遅延時間として前記決定手段に出力することを特徴とする輻輳制御方法。
【請求項１９】
ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムの通信端末における輻輳制御方法であって、 
送信中のデータ量を計測する第１ステップと、
受信した前記データに基づいて前記複数の通信端末のうちの受信端末における受信帯域を計測する第２ステップと、
計測された前記送信中のデータ量を前記受信帯域で割った値を、前記往復遅延時間あるいは片道遅延時間とする第３ステップと、
前記第３ステップで推定された往復遅延時間あるいは片道遅延時間によって送信帯域を決定する第４ステップと、を有することを特徴とする輻輳制御方法。
【請求項２０】
ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムの通信端末としてのコンピュータに、請求項１４から請求項１９のいずれか１項に記載の輻輳制御方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信端末、通信システム、輻輳制御方法、及び輻輳制御用プログラムに関し、特に、広帯域回線を使用して低遅延の通信を行う通信端末、通信システム、輻輳制御方法、及び輻輳制御用プログラムに関する。
【背景技術】
【０００２】
ネットワークを介した通信において、送受信端末間で低遅延な通信を行うためには、ネットワーク内でのキュー遅延による遅延時間を短くすることが求められる。送受信端末間での遅延の最小値は、送受信端末間の伝播遅延時間であり、これより短い遅延での通信はできないものと考えられる。そして、ネットワーク内で輻輳が発生すると、輻輳が発生したノードにおいてパケット出力待ち合わせのためのキューができ、このキューを通過する時間分だけ送受信端末間の遅延が増加する。また、キューが長くなり、輻輳しているノードのバッファ容量を超えると、パケット廃棄が発生するため、送受信端末間の遅延時間はパケット再送にかかわる分だけ大幅に増加する。このように、低遅延な通信を行うためには、ネットワーク内ノードにおけるキュー遅延を小さくすることが求められる。
【０００３】
キュー遅延を小さくする方式として最も効果の高い方式は、ネットワーク内ノードにおいて、低遅延な通信のみ特別に優先度の高いキューに格納して優先的にパケット出力を行う方式である。例えば、Differentiated Service (Internet Engineering Task Force, Request For Comments 2475)による方式などがあげられる。しかしながら、この方式では、ネットワーク内のノードにおいて特別な仕組みが必要であり、また低遅延な通信が複数同時に行われるとやはりキュー遅延は発生する。
【０００４】
また、別の方式としては、ネットワーク内のノードから送信端末に対して輻輳情報を明示的に通知する方式がある。この方式としては、ECN (Explicit Congestion Notification、Internet Engineering Task Force, Request For Comments 3168)方式のようにノードの輻輳度をパケットヘッダに記入して送信端末に通知する方式や、非特許文献１に示されている方式のようにノードにおいて各通信の最適な送信帯域を計算しこれを送信端末に通知する方式などが存在する。しかしながら、これらの方式もネットワーク内のノードにおいて特別な仕組みが必要であり、既存ノードを取り替えるなどのコストがかかる。
【０００５】
上記の各方式と異なる技術としては、送受信端末間の輻輳制御によって低遅延通信を実現する以下に説明する技術がある。
【０００６】
第一の従来技術は、ネットワークの回線容量に応じて送信帯域の最大値を設定する技術である。この技術では、回線容量を超えて過大な送信帯域を設定することを防ぐことにより、不必要なキュー遅延やパケット廃棄を防ぐことが出来る。例えば、特許文献１に示される方式では、TCP通信中に最適な通信帯域を推定し、送信帯域がこの帯域を越えないように輻輳制御することで、不必要な輻輳を防いでデータ転送遅延時間を短くする。
【０００７】
第二の従来技術は、送信端末で計測した片道遅延時間や往復遅延時間を元に送信帯域を決定する技術である。この技術では、遅延時間が増加すると送信帯域を減少することにより、キュー遅延を短く保つように送信端末において輻輳制御を行う。例えばTCP-FAST方式(From Theory to Experiments, C. Jin, D. X. Wei, S. H. Low, G. Buhrmaster, J. Bunn, D. H. Choe, R. L. A. Cottrell, J. C. Doyle, W. Feng, O. Martin, H. Newman, F. Paganini, S. Ravot, S. Singh. IEEE Network, 19(1):4-11, January/February 2005)では、ネットワークの往復伝播遅延時間を計測し、その最小値と現在の値の差分に現在の送信帯域を乗じた値(この値はノード内のキューで待たされている該通信のデータ量に相当する)を用い、この値をあらかじめ定められた目標値に誘導するように送信帯域を制御することで、送信帯域を最適な帯域へと制御する。
【０００８】
本発明に関連する技術として、特許文献２、特許文献３、特許文献４、特許文献５がある。
【特許文献１】特開２００６−２７９２８３号公報
【特許文献２】特開２０００−２９５２８６号公報
【特許文献３】特開２００４−１５３７７６号公報
【特許文献４】特開２００６−３４００７８号公報
【特許文献５】特表２００５−５１７３３０号公報
【非特許文献１】"Processor Sharing Flows in the Internet" (Nandita Dukkipati, Masayoshi Kobayashi, Rui Zhang-Shen, Nick McKeown, Thirteenth International Workshop on Quality of Service (IWQoS))
【発明の開示】
【発明が解決しようとする課題】
【０００９】
第一の従来技術の問題点は、複数のセッションが存在する場合、個々のセッションの制限帯域は回線容量以下であっても、それらのセッションの制限帯域の合計は回線容量を上回ってしまうことである。そのため、複数セッションが存在する場合には、キュー遅延が長くなってしまう。
【００１０】
第二の従来技術の問題点は、設定されたデータ量のパケットが定常的にキュー内に滞留することであり、滞留するパケット数が大きく振動することで遅延時間の変動が激しいことである。低遅延な通信を行うためには、最適な送信帯域に早期に達する必要があり、そのためには送信帯域の増加幅を大きく設定しなければならない。しかしながら、送信帯域の増加幅を大きく設定すると、短期間で大量のパケットがネットワークノードに到着するため、キュー長が短期間で大幅に大きくなるが、キュー遅延の増加によって輻輳が送信端末に通知されるまでの時間も長くなる。結果として、急激に送信帯域を増加させたときには、輻輳の発生からそれに対応して送信帯域を減少させるまでの時間が長くなり、結果としてキュー長が不安定になってしまう。また、第一の従来技術では、定常的にキュー内に滞留するパケット数はセッション数の増加に伴って線形に増加するという問題もある。
【００１１】
そこで、本発明の第一の目的は、複数のセッションが存在する場合でもその合計帯域を回線容量以下に抑えることであり、その結果として送受信端末間の遅延時間を短くすることである。
【００１２】
本発明の第二の目的は、送信帯域の増加幅を大きくした場合でも、またセッション数が多い場合でも、キュー遅延を振動させずに小さな値に収束させることであり、その結果として送受信端末間の遅延時間を短くすることである。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明の通信端末は、ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムに用いる通信端末であって、 
受信したデータに基づいて、送受信を行う前記通信端末間の往復遅延時間あるいは片道遅延時間を計測する手段と、受信した前記データに基づいて前記複数の通信端末のうちの受信端末における受信帯域を計測する計測手段と、
前記往復遅延時間あるいは片道遅延時間の値を少なくとも前記受信帯域を用いて補正する補正手段と、
前記補正手段により補正された往復遅延時間あるいは片道遅延時間によって送信帯域を決定する決定手段と、を有することを特徴とする。
【００１４】
また本発明の通信端末は、ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムに用いる端末であって、 
送信中のデータ量を計測する手段と、受信した前記データに基づいて前記複数の通信端末のうちの受信端末における受信帯域を計測する計測手段と、
計測された前記送信中のデータ量を前記受信帯域で割った値を、前記往復遅延時間あるいは片道遅延時間とする推定手段と、
前記推定手段により推定された往復遅延時間あるいは片道遅延時間によって送信帯域を決定する決定手段と、を有することを特徴とする。
また本発明の輻輳制御方法は、ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムの通信端末における輻輳制御方法であって、  受信したデータに基づいて、送受信を行う前記通信端末間の往復遅延時間あるいは片道遅延時間を計測するとともに前記複数の通信端末のうちの受信端末における受信帯域を計測する第１ステップと、
前記往復遅延時間あるいは片道遅延時間の値を少なくとも前記受信帯域を用いて補正する第２ステップと、
前記第２ステップで補正された往復遅延時間あるいは片道遅延時間によって送信帯域を決定する第３ステップと、を有することを特徴とする。
【００１５】
また本発明の輻輳制御方法は、ネットワークを介し複数の通信端末間で通信セッションを設定してデータの送受信を行う通信システムの通信端末における輻輳制御方法であって、 
送信中のデータ量を計測する第１ステップと、
受信した前記データに基づいて前記複数の通信端末のうちの受信端末における受信帯域を計測する第２ステップと、
計測された前記送信中のデータ量を前記受信帯域で割った値を、前記往復遅延時間あるいは片道遅延時間とする第３ステップと、
前記第３ステップで推定された往復遅延時間あるいは片道遅延時間によって送信帯域を決定する第４ステップと、を有することを特徴とする。
【発明の効果】
【００１６】
本発明によれば以下に述べる効果が達成される。
【００１７】
第一に、キュー遅延の増大に対応して、キューイングされているデータ量を減少させることで、複数のセッションが存在する場合でもその合計帯域を回線容量以下に抑えることであり、その結果として送受信端末間の遅延時間を短くすることができる。
【００１８】
第二に、計測RTTが変化するより早く送信帯域の制御を行うことが出来るため、キュー遅延を振動させずに小さな値に収束させることができ、その結果として送受信端末間の遅延時間を短くすることができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
［実施形態１］
【００２０】
本発明の第１の実施形態について図面を参照して説明する。
【００２１】
（構成の説明）
図１は本実施形態による通信端末1の構成を示すブロック図である。送信端末となる通信端末1は送信データを発生するデータ発生部1-1と、通信データをネットワークに出力するパケット送信部1-2、通信端末１と通信を行う他の通信端末（受信端末）からの応答確認パケット(ACKパケット)を受信するパケット受信部1-3、パケット送信部1-2に対して送信帯域を指示する輻輳制御部1-4で構成される。
【００２２】
輻輳制御部1-4は、ACKパケットを受信する毎に往復遅延時間を計測するRTT(Round Trip Time)計測部1-6、送信帯域を計測する送信帯域計測部1-8、受信帯域を計測する受信帯域計測部1-9、送信帯域および受信帯域の値を用いて計測したRTTを補正するRTT補正部1-7、RTTを元に送信帯域を決定する送信帯域決定部1-5で構成される。ここで、RTTとは、ネットワーク通信において、1 つのパケットが送信元から宛先まで行き、再び戻ってくるまでの時間をいう。
【００２３】
（動作の説明） 
図１及び図２を参照して、本実施形態の動作について説明する。図２は通信端末１の動作を示すフローチャートである。
【００２４】
データ発生部1-1において送信データが発生すると（ステップS11）、輻輳制御部1-4の送信帯域決定部1-5が指定する送信帯域に従って、パケット送信部1-2が送信データをパケット化して送信する（ステップS12）。その際、送信帯域計測部1-8では、送信帯域の計測を行う（ステップS12）。これは、例えば以下の式のように一定時間に送信したデータ量をその受信時間で割ったものとしても良い。
【００２５】
計測送信帯域 ＝ (時刻t1から時刻t2の間に送信したデータ量) / (t2-t1)
また、以下の式のように、パケットを送信する毎に指数平均を取って計算した計測送信帯域でも良い。
【００２６】
計測送信帯域 ＝(前回計算した送信帯域 × 係数) ＋((今回送信したデータ量) / (今回のパケット送信時刻 - 前回のパケット送信時刻)) × (1 - 係数)
また、送信帯域計測部1-8では、計測送信帯域ではなく、送信帯域決定部1-5で求めた送信帯域の値を用いても良い。
【００２７】
送信したパケットに対するACKパケットがパケット受信部1-3に到着すると、RTT計測部1-6は、該パケットに関する往復遅延時間(RTT)と、送信開始からのその最小値(RTTmin)を計測する(ステップS13)。
【００２８】
なお、本実施形態においては、遅延として往復遅延時間(RTT)を用いるが、代わりに片道遅延時間を用いても良い。片道遅延時間の導出方法としては、例えば、送信端末がパケット送信時にパケットヘッダ中に送信時刻を書き込み、このパケットを受信した受信端末が前記送信時刻とパケット受信時刻の差分を片道遅延として計算し、この計算値をACKパケットに書き込んで送信端末に通知するといった方法等が利用可能である。
【００２９】
受信帯域計測部1-9ではACKパケットによって受信確認されたデータ量から、受信端末における受信帯域を計測する（ステップS13）。これは、例えば以下の式のように一定時間に受信確認されたデータ量をその受信時間で割ったものとしても良い。
【００３０】
受信帯域 ＝ (時刻t1から時刻t2の間に受信確認されたデータ量) / (t2-t1)
また、以下の式のように、ACKパケットを受信する毎に指数平均を取って計算した受信帯域でも良い。
【００３１】
受信帯域 ＝ (前回計算した受信帯域 × 係数) ＋ ((今回のACKパケットによって受信確認されたデータ量) / (今回のACKパケット到着時刻 − 前回のACKパケット到着時刻)) × (1 − 係数)
次に、RTT補正部1-4において、計測送信帯域と受信帯域のバランスによってRTTの補正を行う (ステップS14)。例えば、以下の式のように求めればよい。
【００３２】
補正RTT ＝ max(計測RTT × (計測送信帯域/受信帯域), 計測RTTmin)
つまり、補正RTTは、計測RTT × (計測送信帯域/受信帯域)と計測RTTminのうち大きい値となる。
【００３３】
また、以下のような式で求めても良い。
【００３４】
補正RTT ＝ max(計測RTT × (計測送信帯域/受信帯域), 計測RTT)
つまり、補正RTTは、計測RTT × (計測送信帯域/受信帯域)と計測RTTのうち大きい値となる。
【００３５】
ここでは、計測送信帯域と受信帯域は、それぞれ最新の計測値を用いたが、計測送信帯域を1RTT過去の計測値を用いることで同一パケットに対する計測送信帯域の計測時刻と受信帯域の計測時刻をあわせても良い。
【００３６】
送信帯域決定部1-5は、前記補正RTTの値を用いて送信帯域の制御を行う（ステップS15）。制御された送信帯域はステップS12の指定された送信帯域となる。送信帯域の制御方式はRTTを用いる制御方式であれば任意である。例えば、以下のような式で計算すればよい。
【００３７】
送信帯域 ＝ 前回計算の送信帯域 + 
(α/RTT − (RTT-RTTmin)/RTT×前回計算の送信帯域) × 時定数 
時定数としては、例えば、(今回計算する時刻 - 前回計算した時刻) * RTTなどの値を用いる。αの値は送信帯域の増加速度を決定するパラメータである。上記の式は、以下のような式を用いても同様の結果が得られる。なお、上式の「*」は「×」を意味する（すなわち、上式の「*」は乗算を意味する）。以下の式においても同様である。
送信帯域 ＝ 前回計算の送信帯域 + 
(α/RTT − (前回計算の送信帯域 − 受信帯域)) × 時定数
以上では、送信帯域の制御による輻輳制御方式について説明したが、以上の方式はＴＣＰ(Transmission Control Protocol)のようなウインドウフロー制御による輻輳制御方式に対しても適用可能である。この場合、上記の送信帯域の計算式は、以下のように変更される。
送信ウインド ＝ 前回計算の送信ウインド + 
(α − (RTT-RTTmin)/RTT×前回計算の送信ウインド)/前回計算の送信ウインド 
ネットワークの輻輳度が大きくなると、一時的に受信帯域が送信帯域よりも小さくなる。また、送信帯域が最適な値よりも大きくなると、一時的に送信帯域が受信帯域よりも大きくなる。このように、送信帯域を下げる必要がある場合には、送信帯域と受信帯域の比率が一時的に変化し、その後キューイング遅延が伸び始めてRTTが増大する。すなわち、前記比率の変化はRTTの変化よりも先に現象として現れるため、前記比率の変化をもって輻輳制御を行うことで、あるいは前記比率の変化をもってRTTの値を補正することで、輻輳に対してより早期に制御を行うことが出来る。
［実施形態２］
【００３８】
本発明の第２の実施形態について図面を参照して説明する。
【００３９】
（構成の説明）
図３は本実施形態による通信端末2の構成を示すブロック図である。実施形態１との違いは、送信帯域計測部の代わりに送信中データ量計測部が設けられている点である。
【００４０】
通信端末2は送信データを発生するデータ発生部2-1と、通信データをネットワークに出力するパケット送信部2-2、受信端末からの応答確認パケット(ACKパケット)を受信するパケット受信部2-3、パケット送信部2-2に対して送信帯域を指示する輻輳制御部2-4で構成される。
【００４１】
輻輳制御部2-4は、ACKパケットを受信する毎に往復遅延時間を計測するRTT計測部2-6、ACK未受信の送信中データ量を計測する送信中データ量計測部2-8、受信帯域を計測する受信帯域計測部2-9、受信帯域と送信中データ量の値を用いて計測したRTTを補正するRTT補正部2-7、RTTを元に送信帯域を決定する送信帯域決定部2-5で構成される。
【００４２】
（動作の説明） 
図３及び図４を参照して、本実施形態の動作について説明する。
【００４３】
図４は通信端末２の動作を示すフローチャートである。
【００４４】
データ発生部2-1において送信データが発生すると（ステップS11）、輻輳制御部2-4の送信帯域決定部2-5が指定する送信帯域に従って、パケット送信部2-2が送信データをパケット化して送信する（ステップS22）。その際、実施形態１と異なり、送信帯域の計測は行われない。送信したパケットに対するACKパケットがパケット受信部2-3に到着すると、RTT計測部2-6 においてRTTおよびRTTminを計測し、受信帯域計測部2-9において受信帯域を計測する（ステップS23）。また、送信中データ量計測部2-8では、最後に送信したパケットのシーケンス番号と、ACKで受信確認されたシーケンス番号の差分から送信中のデータ量を求める（ステップS23）。
【００４５】
次に、RTT補正部2-7において、送信中データ量と送信帯域を用いてRTTの補正を行う（ステップS24）。例えば、以下の式のように求めればよい。
補正RTT ＝ max(送信中データ量 / 受信帯域), 計測RTTmin)
また、以下のような式で求めても良い。
【００４６】
補正RTT ＝ max(送信中データ量 / 受信帯域, 計測RTT)
ここでは、送信中データ量と受信帯域は、それぞれ最新の計測値を用いたが、送信中データ量の計測値を1RTT過去の計測値を用いることで同一パケットに対する送信中データ量の計測時刻と受信帯域の計測時刻をあわせても良い。
【００４７】
送信帯域決定部2-5は、前記補正RTTの値を用いて送信帯域の制御を行う (ステップS15)。その制御方式はRTTを用いる制御方式であれば任意である。例えば、以下のような式で計算すればよい。
【００４８】
送信帯域 ＝ 前回計算の送信帯域 + 
(α/RTT − (RTT-RTTmin)/RTT×前回計算の送信帯域) × 時定数 
上記の式は、以下のような式を用いても同様の結果が得られる。
送信帯域 ＝ 前回計算の送信帯域 + 
(α/RTT − (送信中のデータ量/RTTmin − 受信帯域)) × 時定数
［実施形態３］
【００４９】
本発明の第３の実施形態について図面を参照して説明する。
【００５０】
（構成の説明）
図５は本実施形態による端末3の構成を示すブロック図である。通信端末3は、第１の実施形態による通信端末1の構成に加えて、送信帯域増加幅変更部3-10を加えた構成である。
【００５１】
通信端末3は送信データを発生するデータ発生部3-1と、通信データをネットワークに出力するパケット送信部3-2、通信端末3と通信を行う他の通信端末からの応答確認パケット(ACKパケット)を受信するパケット受信部3-3、パケット送信部3-2に対して送信帯域を指示する輻輳制御部3-4で構成される。
輻輳制御部3-4は、ACKパケットを受信する毎に往復遅延時間を計測するRTT(Round Trip Time)計測部3-6、送信帯域を計測する送信帯域計測部3-8、受信帯域を計測する受信帯域計測部3-9、送信帯域および受信帯域の値を用いて計測したRTTを補正するRTT補正部3-7、RTTを元に送信帯域を決定する送信帯域決定部3-5、計測したRTTに基づき送信帯域の増加幅を変更する送信帯域増加幅変更部3-10で構成される。
【００５２】
（動作の説明） 
図５及び図６を参照して、本実施形態の動作について説明する。図６は通信端末３の動作を示すフローチャートである。ここでは図２の動作を同じ動作については同一符号を付して動作説明を省略する。
【００５３】
パケット送信時の動作（ステップS11,S12）は、第１の実施形態と同様である。
【００５４】
パケット受信時の動作は、補正RTTを計算するまでは（ステップS13,S14）、第１の実施形態と同様である。
【００５５】
本実施形態においても、送信帯域を計算方法は、以下のような従来からの一般的な方式を基礎としている。
【００５６】
一般的に、ネットワーク内でのキュー遅延を制御指標とした輻輳制御方式においては、キューに蓄えられているデータ量を推定し、このデータ量によって送信帯域の制御を行う。すなわち、キューに蓄えられているデータ量があらかじめ設定した目標値よりも大きい場合には、ネットワークが輻輳していると判断して送信帯域を小さくし、逆にキューに蓄えられているデータ量が少ない場合にはネットワークが輻輳していないと判断して送信帯域を大きくする。
【００５７】
キューに蓄えられているデータ量は、一般的に、次のように推定することが出来る。計測したRTTの最小値(RTTmin)はネットワーク内のキューに全くデータが蓄えられていないときの遅延時間であり、これはすなわちネットワーク回線上での物理的な伝播遅延時間であるとみなすことができる。そして、計測したRTTがこの値よりも大きくなれば、その差分、すなわち(RTT-RTTmin)はキュー内において待たされていた時間であるとみなすことが出来る。キュー内に蓄えられているデータ量は、キューで待たされていた時間に送信帯域をかけたものであるため、(RTT-RTTmin)×送信帯域、がキューに蓄えられているデータ量であると推定できる。
【００５８】
キューに蓄えられているデータ量の目標をαとし、RTTが長いほど制御利得を小さくして制御を安定化することを考慮に入れると、ネットワーク内でのキュー遅延を制御指標とした輻輳制御方式は、一般的に、以下のような式で表すことができる。
【００５９】
送信帯域 ＝ 前回計算の送信帯域 + 
(α/RTT - (RTT-RTTmin)/RTT×前回計算の送信帯域) × 時定数 
以上の方式においては、キューに蓄えられているデータ量の目標値αが大きいほどキュー遅延が増大するため、キュー遅延を削減するためにはαの値を適切に設定する必要がある。一方、αの値が小さいと送信帯域の増加速度が遅くなるという問題がある。
【００６０】
そこで、本実施例においては、αの値を固定値とするのではなく、ネットワークの状況に応じて動的に変更することにより、最適な制御を行う。キュー遅延を削減するためには、キュー遅延が大きくなるほどαの値が小さくなるような関数を用いればよいため、αの値は、計測したRTT、もしくは補正RTTの値を元に動的に変更する。従って、本実施例においては、αの値を (RTT-RTTmin)に対する減少関数として定義する。例えば、以下のような関数を用いる。
(式1) α ＝ 1/e(RTT-RTTmin)×a、もしくは
(式2) α ＝ 1/e(RTT-RTTmin)/(最大RTT-RTTmin)×b、もしくは
(式3) α ＝ max(c - (RTT-RTTmin)*d, e) 、もしくは
(式4) α ＝ f * B / e(RTT-RTTmin)×a、もしくは
(式5) α ＝ f * B / 送信帯域 / e(RTT-RTTmin)×a、もしくは
(式6) α ＝ f * B / 送信帯域 * RTT / e(RTT-RTTmin)×a、もしくは
(式7) α ＝ f * B / 送信帯域 * RTTmin / e(RTT-RTTmin)×a
ここでa、b、c、d、e、fはそれぞれ0以上の定数である。Bは回線帯域の値であり、あらかじめ設定された値や、特願2005-027684号に示される推定方式を用いて求めた値を使用する。ここで、式(1)および式(2)は目標値αとしてキュー遅延の指数的減少関数を用いた場合、式(3)はキュー遅延の線形的減少関数を用いた場合、式(4)は目標値に回線帯域を乗じた場合、式(5)は目標値に回線帯域を送信帯域で割った値をかけた場合、式(6)は式(5)に往復遅延時間をかけた場合、式(7)は式(5)に往復遅延時間の最小値をかけた場合、をそれぞれ表す。
【００６１】
式(6)-(7)ではαの値に往復遅延時間をかけたが、この代わりの手段として、αの値に往復遅延時間をかけるのではなく、推定したデータ量を往復遅延時間で割ってもよい。すなわち、以下のような式となる。
【００６２】
送信帯域 ＝ 前回計算の送信帯域 + 
(α/RTT - (RTT-RTTmin)/RTT×前回計算の送信帯域 / RTT) × 時定数
送信帯域 ＝ 前回計算の送信帯域 + 
(α/RTT - (RTT-RTTmin)/RTT×前回計算の送信帯域 / RTTmin) × 時定数
また、上記計算式おいて、(RTT-RTTmin)/RTT×前回計算の送信帯域、の項は、(RTT-RTTmin)/定数g×前回計算の送信帯域、としても良い。
【００６３】
さらに、上記計算式における時定数も、ネットワークでキューイングされているデータ量に応じて動的に変更してもよい。これは前記データ量が多いほど輻輳状態が激しいと判断し、時定数を大きく変更することで早く輻輳を解消するためである。従って、前記時定数は、前記差分の絶対値に対する増加関数として定義すればよい。例えば、以下のような関数を用いる。
【００６４】
時定数 ＝ max(f×|A|, g) 
ここでfとgはそれぞれ0以上の定数であり、Aは前記差分の値、|A|はその絶対値である。
【００６５】
以上の、αの計算、および送信帯域増加幅、すなわち、/RTT - (RTT-RTTmin)/RTT×前回計算の送信帯域) × 時定数、の計算は送信帯域増加幅変更部で行われる。
【００６６】
複数セッションが存在する場合にはキュー遅延が長くなるが、このキュー遅延の増大に応じて前記目標値を小さく設定することにより、個々のセッションでキューイングされているデータ量が減少し、全体のセッションでキューイングされているデータ量が減少する。
［実施形態４］ 
【００６７】
本発明の第４の実施形態について図面を参照して説明する。
【００６８】
（構成の説明）
図７は本実施形態による通信端末4の構成を示すブロック図である。通信端末4は送信データを発生するデータ発生部4-1と、通信データをネットワークに出力するパケット送信部4-2、受信端末からの応答確認パケット(ACKパケット)を受信するパケット受信部4-3、パケット送信部4-2に対して送信帯域を指示する輻輳制御部4-4で構成される。
【００６９】
輻輳制御部4-4は、ACK未受信の送信中データ量を計測する送信中データ量計測部4-8、受信帯域を計測する受信帯域計測部4-9、受信帯域と送信中データ量の値を用いてRTTを推定するRTT推定部4-7、RTTを元に送信帯域を決定する送信帯域決定部4-5で構成される。
【００７０】
（動作の説明） 
図７及び図８を参照して、本実施形態の動作について説明する。図８は通信端末４の動作を示すフローチャートである。
【００７１】
パケット送信時の処理（ステップS11,S22）は第２の実施形態と同様であるため、ここでは説明を省略する。
【００７２】
送信したパケットに対するACKパケットがパケット受信部4-3に到着すると、受信帯域計測部4-9において受信帯域を計測する（ステップS23）。また、送信中データ量計測部4-6では、最後に送信したパケットのシーケンス番号と、ACKで受信確認されたシーケンス番号の差分から送信中のデータ量を求める（ステップS23）。
【００７３】
次に、RTT推定部4-4において、送信中データ量と送信帯域を用いてRTTの推定を行う（ステップS44）。例えば、以下の式のように求めればよい。
推定RTT ＝ 送信中データ量 / 受信帯域
また、RTTminは最小の推定RTTとして求める。
【００７４】
次に、求めたRTTを元にして送信帯域の制御を行うが（ステップS45）、その方法は第２の実施形態と同様であるため、ここでは説明を省略する。
［実施形態５］
【００７５】
本発明の第５の実施形態について図面を参照して説明する。
【００７６】
（構成の説明）
図９は本実施形態による通信端末5の構成を示すブロック図である。通信端末5は送信データを発生するデータ発生部5-1と、通信データをネットワークに出力するパケット送信部5-2、通信端末5と通信を行う他の通信端末からの応答確認パケット(ACKパケット)を受信するパケット受信部5-3、パケット送信部5-2に対して送信帯域を指示する輻輳制御部5-4で構成される。
【００７７】
輻輳制御部5-4は、ACKパケットを受信する毎に往復遅延時間を計測するRTT(Round Trip Time)計測部5-6、受信帯域を計測する受信帯域計測部5-9、受信帯域の値を用いて計測したRTTを補正するRTT補正部5-7、RTTを元に送信帯域を決定する送信帯域決定部5-5で構成される。第１の実施形態における輻輳制御部1-4と比較して、送信帯域計測部1-8がない構成であり、その他は同様である。
【００７８】
（動作の説明） 
図９及び図１０を参照して、本実施形態の動作について説明する。図１０は通信端末５の動作を示すフローチャートである。以下では、本実施形態における補正RTTの導出について記述し、その他の動作については第１の実施形態と同様なので説明を省略する。
【００７９】
本実施形態では、送信帯域を計測せず、受信帯域のみを用いてRTTの補正を行う。RTT補正部5-7では、現在の受信帯域と、過去に計測した受信帯域を用い、その比率によってRTTの補正を行う（ステップS54）。例えば、以下の式のように求めればよい。
補正RTT ＝ max(計測RTT × (過去に計測した受信帯域/現在の受信帯域), RTTmin)
［実施形態６］
【００８０】
本発明の第６の実施形態について図面を参照して説明する。
【００８１】
（構成の説明）
図１１は本実施形態によるシステムの構成を示すブロック図である。本システムは、送信端末となる通信端末6-1、受信端末となる通信端末6-2、ネットワーク6-3で構成される。通信端末6-1の構成は、第１の実施形態における通信端末1と同様であるため、ここでは説明を書略する。なお、第２〜第５に示した通信端末のいずれかを用いることもできる。通信端末6-2は、受信パケットから通信データを再構成するデータ再構成部6-5、再構成されたデータを受信し処理するデータ受信部6-4、ACKパケットを生成して通信端末6-1に返送するACK生成部6-6、で構成される。
【００８２】
(動作の説明) 
図１１を参照して、本実施形態の動作について説明する。
【００８３】
送信端末5-1から送信されたパケットは、ネットワーク5-3を介して、受信端末5-3に到着する。
【００８４】
データ再構成部6-5は、受信したパケットからデータを取り出し、元のデータを再構成し、データ受信部6-4へと送る。データ受信部6-4は、受け取ったデータを様々な受信アプリケーションによって処理する。
【００８５】
データ再構成部6-5は、受信完了したデータの番号をACK生成部6-6に通知する。そして、ACK生成部6-6は前記番号に基づいてACKパケットを生成し、通信端末6-1へと送信する。ACKパケットによって通知されるデータの番号は、通信端末6-2によって受信確認されたデータの番号であり、この番号およびこの番号以前のデータは通信端末6-2で確かに受信されたこととなる。従って、通信端末6-1がACKパケットを受信すると、このパケットに書かれている番号までのデータを再送することはないため、これらのデータは通信端末6-1側で破棄してもよい。送信経路上でパケット廃棄が発生すると、通信端末6-2は同じデータの番号を複数のACKに対して書き込むことで、この番号以降のデータを受信していないことを通信端末6-1に通知し、再送を促す。また、別の方法として、通信端末6-2側から通信端末6-1側に対して明示的にパケット廃棄があったことを示すNACK (Negative ACK)を送信しても良い。
【００８６】
以上説明した各実施形態の通信端末は、専用ＩＣ等を用いたハードウエアで構成できるが、コンピュータを用いたソフトウエアで実現することができる。すなわち、例えば、図１２に示すようなコンピュータで図１、図３、図５、図７、図９のいずれかの通信端末を構成し、図２、図４、図６、図８、図１０のいずれかのフローを記述したプログラムにより通信端末の機能を実現することができる。図２、図４、図６、図８、図１０のいずれかのフローを記述したプログラムをハードディスク装置等のディスク装置１０３やＲＯＭ等の記憶装置（ここではディスク装置を示している）に記憶し、ＣＰＵ１０５により通信端末の機能を実現するプログラムが実行される。入力部１０２はキーボード等の入力デバイスとなる。送受信部１０１はパケット送信部とパケット受信部に対応するものである。ＬＣＤ（液晶表示装置）１０７は情報処理状況や判定結果を表示するものである。１０４はデータバス等のバス、１０６はＣＰＵ１０５の情報処理に必要な情報を記憶するＤＲＡＭ等のメモリを示す。
【産業上の利用可能性】
【００８７】
本発明は、通信端末、通信システム、輻輳制御方法、及び輻輳制御用プログラムに関し、特に、広帯域回線を使用して低遅延の通信を行う通信端末、通信システム、輻輳制御方法、及び輻輳制御用プログラムに適用できる。
【図面の簡単な説明】
【００８８】
【図１】本発明の第１の実施形態による端末の構成を示すブロック図である。
【図２】第１の実施形態による通信端末の動作を示すフローチャートである。
【図３】本発明の第２の実施形態による端末の構成を示すブロック図である。
【図４】第２の実施形態による通信端末の動作を示すフローチャートである。
【図５】本発明の第３の実施形態による端末の構成を示すブロック図である。
【図６】第３の実施形態による通信端末の動作を示すフローチャートである。
【図７】本発明の第４の実施形態による端末の構成を示すブロック図である。
【図８】第４の実施形態による通信端末の動作を示すフローチャートである。
【図９】本発明の第５の実施形態による端末の構成を示すブロック図である。
【図１０】第６の実施形態による通信端末の動作を示すフローチャートである。
【図１１】本発明の一実施形態によるシステムの構成を示すブロック図である。
【図１２】コンピュータの構成の一例を示すブロック図である。
【符号の説明】
【００８９】
1-1, 2-1,3-1,4-1,5-1  データ発生部
1-2, 2-2,3-2,4-2,5-2  パケット送信部
1-3, 2-3,3-3,4-3,5-3  パケット受信部
1-4,2-4,3-4,4-4,5-4  輻輳制御部
1-5,2-5,3-5,4-5,5-5  送信帯域決定部
1-6,2-6,3-6,5-6  RTT(Round Trip Time)計測部
1-7,2-7,3-7,5-7  RTT補正部
4-7  RTT推定部
1-8,3-8  送信帯域計測部
2-8,4-8  送信中データ量計測部
1-9,2-9,3-9,4-9,5-9  受信帯域計測部
3-10  送信帯域増加幅変更部
6-1,6-2  通信端末
6-3  ネットワーク
6-4  データ受信部
6-5  データ再構成部
6-6  ACK送信部
【図１】
2008193335.tif 000003
【図２】
2008193335.tif 000004
【図３】
2008193335.tif 000005
【図４】
2008193335.tif 000006
【図５】
2008193335.tif 000007
【図６】
2008193335.tif 000008
【図７】
2008193335.tif 000009
【図８】
2008193335.tif 000010
【図９】
2008193335.tif 000011
【図１０】
2008193335.tif 000012
【図１１】
2008193335.tif 000013
【図１２】
2008193335.tif 000014