(57)【要約】【課題】再送タイムアウト値を最適に設定することによりスループット向上を可能にした通信装置および通信方法、ならびにそのためのプログラムを提供すること。【解決手段】送信側環境において、同一の送信・受信アドレス情報、ポート情報を１つのフローとして管理し、フロー毎に再送タイムアウトを検知するとともに再送タイムアウトが発生するまでのスループットを測定して記録するスループット測定記録手順（ステップＳ０１６）と、再送タイムアウト値を変更し、スループット測定記録手順によりスループットを測定することによってスループットが最大化される再送タイムアウト値を取得して新たな再送タイムアウト値として設定する再送タイムアウト値設定手順（ステップＳＳ０１１〜Ｓ０１８）と、設定された最大化される再送タイムアウト値に基づいて通信を行う通信手順とを有する。【選択図】図５
2011171912.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰ通信を行う場合、送信側環境において、同一の送信・受信アドレス情報、ポート情報を１つのフローとして管理し、フロー毎に再送タイムアウトを検知するとともに再送タイムアウトが発生するまでのスループットを測定して記録するスループット測定記録手段と、
再送タイムアウト値を変更し、前記スループット測定記録手段によりスループットを測定することによってスループットが最大化される再送タイムアウト値を取得して新たな再送タイムアウト値として設定する再送タイムアウト値設定手段と、
該設定された最大化される再送タイムアウト値に基づいて通信を行う通信手段と
を有することを特徴とする通信装置。
【請求項２】
請求項１記載の通信装置において、
前記再送タイムアウト値の変更は、往復遅延時間以上の範囲で行われることを特徴とする通信装置。
【請求項３】
請求項１に記載の通信装置において、
トークンバケットポリサが適用されたネットワークに設定されているポリシング設定値を取得する手段と、
初回の再送タイムアウト発生時から、送信端末が送出したパケット情報をもとに、回復した送信レートがポリシングレートを上回るまでの時間を測定する測定手段と、
該測定手段により得られた時間をバケットサイズが０から上限値まで充足される時間から引いた値が往復遅延時間より大きい場合に、該値を新たな再送タイムアウト値として設定する手段と
を有することを特徴とする通信装置。
【請求項４】
請求項１に記載の通信装置において、
前記再送タイムアウト値設定手段は、
再送タイムアウトの発生を契機に、再送タイムアウト値を現在の再送タイムアウト値を初期値とした二分探索法を用いて一時的に変更し、スループットが最大化される再送タイムアウト値を探索し、該探索された最大化される再送タイムアウト値を新たな再送タイムアウト値として設定する手段
であることを特徴とする通信装置。
【請求項５】
請求項４記載の通信装置において、
前記二分探索法の探索終了条件は、スループットが向上しなくなったこと、あるいは、スループットがポリシングレートに対する設定目標とする割合の値になったこと、あるいは、再送タイムアウトの変化幅が所定の閾値より小さくなったことのいずれかであることを特徴とする通信装置。
【請求項６】
請求項１に記載の通信装置において、
前記再送タイムアウト値の変更は、往復遅延時間から一般的に設定されている再送タイムアウト値までの範囲において、再送タイムアウトの発生を契機に、予め決められた任意の間隔で行われることを特徴とする通信装置。
【請求項７】
コンピュータを、請求項１から６のいずれか１項に記載の通信装置における各手段として機能させることを特徴とするプログラム。
【請求項８】
ＴＣＰ通信を行う場合、送信側環境において、同一の送信・受信アドレス情報、ポート情報を１つのフローとして管理し、フロー毎に再送タイムアウトを検知するとともに再送タイムアウトが発生するまでのスループットを測定して記録するスループット測定記録手順と、
再送タイムアウト値を変更し、前記スループット測定記録手順によりスループットを測定することによってスループットが最大化される再送タイムアウト値を取得して新たな再送タイムアウト値として設定する再送タイムアウト値設定手順と、
該設定された最大化される再送タイムアウト値に基づいて通信を行う通信手順と
を有することを特徴とする通信方法。
【請求項９】
請求項８に記載の通信方法において、
トークンバケットポリサが適用されたネットワークに設定されているポリシング設定値を取得する手順と、
初回の再送タイムアウト発生時から、送信端末が送出したパケット情報をもとに、回復した送信レートがポリシングレートを上回るまでの時間を測定する測定手順と、
該測定手段により得られた時間をバケットサイズが０から上限値まで充足される時間から引いた値が往復遅延時間より大きい場合に、該値を新たな再送タイムアウト値として設定する手順と
を有することを特徴とする通信方法。
【請求項１０】
請求項８に記載の通信方法において、
前記再送タイムアウト値設定手順は、
再送タイムアウトの発生を契機に、再送タイムアウト値を現在の再送タイムアウト値を初期値とした二分探索法を用いて一時的に変更し、スループットが最大化される再送タイムアウト値を探索し、該探索された最大化される再送タイムアウト値を新たな再送タイムアウト値として設定する手順
であることを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネットやイントラネットなどのパケット通信ネットワークにおける通信品質制御技術に係り、特に、ＴＣＰ（Transmission Control Protocol）のようなデータ通信プロトコルの送信レートを最適化して、スループットの向上を図るために好適なＴＣＰパラメータセッティング技術に関するものである。
【背景技術】
【０００２】
インターネットに代表されるパケット通信ネットワークでは、複数のユーザがネットワークを共有するため、パケットの転送品質はネットワークの利用状況に依存する。
【０００３】
しかし、近年、DiffServ（Differentiated Services）のようなネットワーク技術により、パケットの転送品質をフロー（送信元と宛先のアドレス情報とポート番号が同じであるパケットをひとまとめにしたもの）単位で保証することが可能になっている。
【０００４】
このDiffServを用いた品質保証（QoS：Quality of Services）技術については、例えば、特許文献１および特許文献２などに記載されたものがある。
【０００５】
この技術では、ネットワークにおいて品質保証を行うフローに対してポリシングレートとバーストサイズを規定し、規定を超えるトラヒックについてはエッジルータ（ネットワークの入り口に設置されている装置）においてトラヒックの流入制限を実現するポリシング（超過パケットの廃棄）を行うようにしている。市中製品ではポリシングとしてトークンバケットポリサを実装したものが幅広く用いられている（後述する図４参照）。
【０００６】
このような環境における通信では、映像配信や音声通話などの送信レートがほぼ一定のＵＤＰ（User Datagram Protocol）通信を行うフローに対しては、送信側での適切な制御により、特許文献１および特許文献２に記載された品質保証技術によりパケットロスのない転送が可能となる。
【０００７】
しかし、ＴＣＰのように送信レートを徐々に増加させ、パケットロスが発生した時点で送信レートを一定割合下げるといった輻輳制御（ウィンドウ制御）機能を持つ通信においては、パケットロスがスループットに及ぼす影響が大きい。
【０００８】
例えば、特許文献１、２に記載のような品質保証を行うネットワークでは、ポリシングによりＴＣＰのスループットが規定のレートよりも大幅に低下してしまうという問題が開示されている。
【０００９】
この問題を解決する技術として、例えば特許文献３に記載のように、パケットの送信レートを平滑化させるシェーピング技術がある。このシェーピング技術は、端末から送信されるトラヒックをシェーピング装置に通し、このシェーピング装置内でトラヒックの送信レートをネットワークのトラヒック規定内に収まるよう平滑化するものである。
【００１０】
しかしながら、シェーピング装置は、ネットワークと送信端末の間に設置する必要があるため、サービスに加入している各ユーザがシェーピング装置を持つ必要がある。しかし、シェーピング装置は高価であるため、シェーピング装置を前提とした品質保証ネットワークの利用はコストの面から現実的ではない。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００４−３２０４８９号公報
【特許文献２】特開２００５−０７３１０６号公報
【特許文献３】特開平０６−２６８６７１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明が解決しようとする課題は、従来の技術、例えば、DiffServのようなネットワーク技術を使った品質確保ネットワークでは、確保レートを超えるトラヒックはエッジルータのポリシングにより廃棄されるため、ＴＣＰのようにパケットロスが発生するたびに送信レートを低下させる通信プロトコルでは、ポリシングによるスループット低下を防ぐために、従来は上述したシェーピング装置を用いる必要があったが、サービス加入者がシェーピング装置を用意するのは、コスト的に難しいという点や、また、ポリシング機構そのものを改良するアプローチでは、市中製品に広く実装されている既存のトークンバケットポリサ（トークンバケットを用いてポリシングを行うこと）を用いる環境において、ネットワーク全体のポリシング機構を全て新たな装置で置き換えて再構築する必要があり、通信事業者にとって大きなコスト負担になる点である。
【００１３】
そこで本発明の目的は、これら従来技術の課題を解決し、ＴＣＰ通信のパラメータである再送タイムアウト値を最適に設定することによりスループット向上を可能にした通信装置および通信方法、ならびにそのためのプログラムを提供することである。
【課題を解決するための手段】
【００１４】
本発明は、上記目的を達成するために、次の如き構成を採用している。
ａ）本発明に係る通信装置は、ＴＣＰ通信を行う場合、送信側環境において、同一の送信・受信アドレス情報、ポート情報を１つのフローとして管理し、フロー毎に再送タイムアウトを検知するとともに再送タイムアウトが発生するまでのスループットを測定して記録するスループット測定記録手段と、再送タイムアウト値を変更し、前記スループット測定記録手段によりスループットを測定することによってスループットが最大化される再送タイムアウト値を取得して新たな再送タイムアウト値として設定する再送タイムアウト値設定手段と、該設定された最大化される再送タイムアウト値に基づいて通信を行う通信手段とを有することを特徴としている。
【００１５】
ｂ）上記ａ）に記載の通信装置において、前記再送タイムアウト値の変更は、往復遅延時間以上の範囲で行われることを特徴としている。
【００１６】
ｃ）また、上記ａ）に記載の通信装置において、トークンバケットポリサが適用されたネットワークに設定されているポリシング設定値を取得する手段と、初回の再送タイムアウト発生時から、送信端末が送出したパケット情報をもとに、回復した送信レートがポリシングレートを上回るまでの時間を測定する測定手段と、該測定手段により得られた時間をバケットサイズが０から上限値まで充足される時間から引いた値が往復遅延時間より大きい場合に、該値を新たな再送タイムアウト値として設定する手段とを有することを特徴としている。
【００１７】
ｄ）また、上記ａ）に記載の通信装置において、前記再送タイムアウト値設定手段は、再送タイムアウトの発生を契機に、再送タイムアウト値を現在の再送タイムアウト値を初期値とした二分探索法を用いて一時的に変更し、スループットが最大化される再送タイムアウト値を探索し、該探索された最大化される再送タイムアウト値を新たな再送タイムアウト値として設定する手段であることを特徴としている。
【００１８】
ｅ）また、上記ｄ）に記載の通信装置において、前記二分探索法の探索終了条件は、スループットが向上しなくなったこと、あるいは、スループットがポリシングレートに対する設定目標とする割合の値になったこと、あるいは、再送タイムアウトの変化幅が所定の閾値より小さくなったことのいずれかであることを特徴としている。
【００１９】
ｆ）また、上記ａ）に記載の通信装置において、前記再送タイムアウト値の変更は、往復遅延時間から一般的に設定されている再送タイムアウト値までの範囲において、再送タイムアウトの発生を契機に、予め決められた任意の間隔で行われることを特徴としている。
【００２０】
ｇ）本発明に係るプログラムは、コンピュータを、上記ａ）からｆ）のいずれかに記載の通信装置における各手段として機能させることを特徴とするプログラムである。
【００２１】
ｈ）本発明に係る通信方法は、ＴＣＰ通信を行う場合、送信側環境において、同一の送信・受信アドレス情報、ポート情報を１つのフローとして管理し、フロー毎に再送タイムアウトを検知するとともに再送タイムアウトが発生するまでのスループットを測定して記録するスループット測定記録手順と、再送タイムアウト値を変更し、前記スループット測定記録手順によりスループットを測定することによってスループットが最大化される再送タイムアウト値を取得して新たな再送タイムアウト値として設定する再送タイムアウト値設定手順と、該設定された最大化される再送タイムアウト値に基づいて通信を行う通信開始手順とを有することを特徴としている。
【００２２】
ｉ）また、上記ｈ）に記載の通信方法において、トークンバケットポリサが適用されたネットワークに設定されているポリシング設定値を取得する手順と、初回の再送タイムアウト発生時から、送信端末が送出したパケット情報をもとに、回復した送信レートがポリシングレートを上回るまでの時間を測定する測定手順と、該測定手段により得られた時間をバケットサイズが０から上限値まで充足される時間から引いた値が往復遅延時間より大きい場合に、該値を新たな再送タイムアウト値として設定する手順とを有することを特徴としている。
【００２３】
ｊ）また、上記ｈ）に記載の通信方法において、前記再送タイムアウト値設定手順は、再送タイムアウトの発生を契機に、再送タイムアウト値を現在の再送タイムアウト値を初期値とした二分探索法を用いて一時的に変更し、スループットが最大化される再送タイムアウト値を探索し、該探索された最大化される再送タイムアウト値を新たな再送タイムアウト値として設定する手順であることを特徴としている。
【発明の効果】
【００２４】
本発明によれば、例えば、トークンバケットによるポリシングが適用されたネットワークでＴＣＰ通信を行う場合などにおいて、再送タイムアウト値をスループットが最大となる再送タイムアウト値を動的に設定することで、再送タイムアウトによるトークンが上限まで充足しているにもかかわらず送信を行わない無送信時間を最小化することになり、結果的に有効にトークンが利用され、平均スループットをよりポリシングレートに近づけることが可能な通信装置および通信方法ならびにそのためのプログラムを提供することができる。
【図面の簡単な説明】
【００２５】
【図１】再送までの時間の無駄について、時間とトークン量の関係を示す図である。
【図２】全ての実施例に共通する＜初期化設定サブルーチン＞を示す図である。
【図３】全ての実施例に共通する＜スループット算出サブルーチン＞を示す図である。
【図４】本発明に係る環境を示す構成図である。
【図５】本発明の実施例１に係る送信側環境における処理のフローチャートを示す図である。
【図６】本発明の実施例２に係る送信側環境における処理のフローチャートを示す図である。
【図７】本発明の実施例2における再送タイムアウト発生毎の各パラメータの変化を示す図である。
【図８】本発明の実施例３に係る送信側環境における処理のフローチャートを示す図である（二分探索法によるＲＴＯ変更でスループットが向上しなくなった場合を探索終了条件とした場合）。
【図９】本発明の実施例３に係る送信側環境における処理のフローチャートを示す図である（二分探索法によるＲＴＯの変化幅が閾値より小さくなったことを探索終了条件とした場合）。
【図１０】本発明の実施例３における再送タイムアウト発生毎の各パラメータの変化を示す図である。
【図１１】本発明の実施例４に係る送信側環境における処理のフローチャートを示す図である。
【図１２】本発明の実施例４における再送タイムアウト発生毎の各パラメータの変化を示す図である。に係る送信側環境における処理のフローチャートを示す図である。
【図１３】本発明に係る実施例２〜４で求めた再送タイムアウトと初期再送タイムアウトにおけるスループットを比較する図である。
【発明を実施するための形態】
【００２６】
＜本発明のポイント＞
本発明は、再送タイムアウト値を動的に変化させてスループットが最大となる再送タイムアウト値を求め、該スループットが最大となる再送タイムアウト値により通信を行うようにした技術であり、ポリシング機能として市中製品で広く用いられているトークンバケットポリサを使用するネットワーク環境下に適用した場合に特に好適であるので、以下では、トークンバケットポリサを使用したネットワークに用いた場合を例にして説明する。
【００２７】
従来、例えば、トークンバケットによるポリシングが適用されたネットワークにおいて、ＴＣＰ通信を行う場合、送信側環境におけるＴＣＰパラメータである再送タイムアウト最小値が固定的に割り振られており、その影響でトークンの効率的な利用を阻害する要因となり、平均スループットがポリシングレートと比較して大きく減少していた。
【００２８】
本発明は、送信側環境において、スループットが最大となるように再送タイムアウト値を選択・設定することにより、再送タイムアウト発生時にトークンの効率的な利用が実施できるようになり、結果的に平均スループットをよりポリシングレートに近づけることを可能としている。
【００２９】
＜本発明で使用する用語の説明と本発明の技術的意義の説明＞
ポリシングとは、フロー毎の流量を監視し、一定の送信レートを超えるパケットに対して、バッファリングを行わずに廃棄する方式である。ポリシングは、シェーピングとは異なり、パケットに対してのキューイング（バッファリング）を行わないため、遅延が発生しないことを特徴としている。
【００３０】
トークンバケットは、バケット内のトークンの存在に基づいてトラヒックの転送をいつ行うかを指示する制御機構である。バケット内のトークンはパケットを送信する際に削除される。
【００３１】
トークンバケットには最大値（最大バケットサイズＢｓ）が設定されており、最大バケットサイズＢｓ以上にトークンは補充されない。最大バケットサイズＢｓに対して、ポリシングレートＢｐに従ってトークンが補充されていく。
【００３２】
トークンが０の状態から最大バケットサイズＢｓまで補充されるために要する時間をレート係数Ｂｒとする。パケットが到着したときにバケット内のトークン量を確認し、トークンがあるときはパケットの転送を行うことができるが、トークンが枯渇すると、パケットは転送されず廃棄される。
【００３３】
本発明では、トークンバケットを用いてポリシングを行うことを「トークンバケットポリサ」と定義する。
【００３４】
トークンバケットポリサ適用下のネットワークにおいて、ＴＣＰ通信では、自律的なウインドウ制御により、送信側がパケットロスを検知するまで、ＡＣＫを受信する契機で送信レートを増加させるため、バーストトラヒックを送出する。
【００３５】
そのため、送信レートがポリシングレートＢｐを超過した場合、パケット廃棄が発生する。また、パケットロスの検知もＡＣＫパケット到着を契機として検知される。
【００３６】
一方、パケット廃棄とＡＣＫ到着のタイミングには往復遅延時間の時間差があるため、ポリサによるパケット廃棄が発生した直後でも輻輳ウインドウは大きいままとなり、ポリサに余剰トークンがない状態でもパケットが次々に送出されるため、結果としてバースト廃棄が発生する。
【００３７】
このようにパケットが廃棄されると、ＴＣＰでは廃棄されたパケットの再転送を試みるが、再転送試行回数は、パケット廃棄が生じたタイミングにおける輻輳ウインドウの大きさに依存して上限値が決定されるため、再転送試行回数が少ない場合には、廃棄されたパケット数によっては、パケット再転送に失敗し、再送タイムアウトが発生する可能性が高くなる。
【００３８】
再送タイムアウト値ＲＴＯには最小値ＲＴＯ_ＭＩＮが固定的に存在し（一般的には２００ｍｓｅｃ以上の値が設定）、再送タイムアウトが発生した場合は、必ずＲＴＯ_ＭＩＮ以上の待ち時間が発生することになる。
【００３９】
トークン枯渇によるバースト廃棄が起因となる再送タイムアウトが発生すると、ＲＴＯ_ＭＩＮがレート係数Ｂｒより大きい場合、トークンが最大バケットサイズＢｓまで充足されているにもかかわらず、通信が再開されないという無駄な待ち時間（ＲＴＯ_ＭＩＮ−Ｂｒ）が必ず発生してしまう。
【００４０】
この待ち時間が、期待するポリシングレートＢｐに対してスループットを大きく下げてしまう要因となっている。上述した再送までの時間の無駄について、時間とトークン量の関係を図１に示す。
【００４１】
本発明では、ポリシング適用下のＴＣＰ通信において、トークン枯渇によるバースト廃棄が起因となる再送タイムアウトが発生した場合、再送タイムアウト値ＲＴＯがＲＴＯ_ＭＩＮより小さくなることを許容し、再送タイムアウト値ＲＴＯを一時的に変化させ、その際のスループットを記録し、比較することでスループットが最大となる再送タイムアウト値ＲＴＯを求め、従来よりポリシングレートに近いスループットを実現する。再送タイムアウト値ＲＴＯを小さくしすぎると無駄な再送が発生してしまうため、再送タイムアウト値ＲＴＯの変化の範囲は適した範囲を選択する必要がある。
【００４２】
＜実施例の説明＞
以下、本発明に係る実施例を、フローチャートを用いて詳細に説明する。なお、全ての実施例について、共通した処理を予めサブルーチンとして用意しておく。ここで共通した処理として、以下に示す＜初期化設定サブルーチン＞と＜スループット算出サブルーチン＞がある。先ず、これらのサブルーチンについて説明する。
【００４３】
＜初期化設定サブルーチン＞
各実施例では、スループットを最大化する再送タイムアウト値ＲＴＯを求めるため、その情報を蓄積する変数としてＲＴＯ_max，Throughput_maxを定義し、初期値として設定を行うフローを＜初期化設定サブルーチン＞として定義する。
【００４４】
図２は、＜初期化設定サブルーチン＞のフローチャートである。
同図に示すように、先ず、一般的に設定されている再送タイムアウト値ＲＴＯ（≒ＲＴＴ+ＲＴＯ_ＭＩＮ）をＲＴＯ_ＩＮＩＴと定義し、再送タイムアウト値ＲＴＯの初期値として設定する（ステップＳ００１）。ここで、ＲＴＴ（Round Trip Time）は往復遅延時間である。
【００４５】
次に、送信側端末にて、再送タイムアウトが発生したことを検知し、発生時刻ｔ1を記録する（ステップＳ００２）。通信を開始してからｔ1までに送信したパケット量を、送信パケット情報から取得し、通信を開始してからｔ1までの経過時間で割ることにより、スループットを変数Throughputとして定義し、算出する（ステップＳ００３）。
【００４６】
ステップＳ００１で設定したＲＴＯ_ＩＮＩＴをＲＴＯ_maxに、ステップＳ００３で求めたThroughputをThroughput_maxに設定する（ステップＳ００４）。
【００４７】
＜スループット算出サブルーチン＞
各実施例では、スループットを最大化する再送タイムアウト値ＲＴＯを求めるため、異なるアルゴリズム（実施例２〜４参照）にて再送タイムアウト値ＲＴＯの設定を行う。再送タイムアウトの発生毎に、再送タイムアウト値ＲＴＯを変更した後、スループットの算出を行うが、そのスループットの算出のフローをスループット算出サブルーチンとして定義する。
【００４８】
図３は、＜スループット算出サブルーチン＞のフローチャートである。
同図に示すように、先ず、再送タイムアウトの発生回数をｎ（ｎ≧２）として、送信側端末にてｎ回目の再送タイムアウトを検知し、発生時刻ｔｎを記録する（ステップＳ００５）。
【００４９】
前回（ｎ−１回目）の再送タイムアウト発生時刻ｔｎ−1を用いて、ｔｎ−1からｔｎまでに送信したパケット量を送信パケット情報から取得し、取得したパケット量を、ｔｎ−1からｔｎまでの時間で割ることにより、スループットを変数Throughputとして算出する（ステップＳ００６）。
【００５０】
ステップＳ００６で求めたThroughputとThroughput_maxを比較し（ステップＳ００７）、Throughputの方がThroughput_maxより大きい場合は（ステップＳ００７：Ｙ）、ＲＴＯ_maxとThroughput_maxを更新する（ステップＳ００８）。Throughputの方がThroughput_maxより小さい場合は（ステップＳ００７：Ｎ）、何も行わないでスループット算出処理を終了する。
【００５１】
＜実施例１＞
次に、実施例１について説明する。
実施例１において、送信端末はアクセス回線を通して、ネットワークのエッジルータに接続されている。このエッジルータにはポリシング設定値（ポリシングレートＢｐ、最大バケットサイズＢｓ、レート係数Ｂｒ）で規定されたトークンバケットによるポリシングが実施されている。
【００５２】
図４は、上記環境を示す図であり、本発明の実施例１〜４における共通の構成である。
同図において、送信端末１０は、アクセス回線２０、エッジルータ３１からDiffServネットワーク３０、エッジルータ３２、アクセス回線４０を経由して受信端末５０にＴＣＰ通信を行う。
【００５３】
送信端末１０は、通信の開始前にフローの送信速度をDiffservネットワーク３０に通知し、パケットの転送品質を確保する。
【００５４】
エッジルータ３１では、送信側（送信端末）および受信側（受信端末）のアドレス情報やポート情報が同一のものをフローとして管理し、フロー毎に送信レートを管理し、ポリシングレートＢｐを超えるものを破棄する。
【００５５】
本実施例は、再送タイムアウトの発生を検知し、再送タイムアウト発生毎に、送信パケットの情報によりスループットを計測し、ＴＣＰプロトコルの通信中に再送タイムアウトの発生をトリガー（契機）として、ＲＴＴ≦ＲＴＯを満たす範囲で、スループットが最大化される再送タイムアウト値ＲＴＯを探索し、その値を新たな再送タイムアウト値ＲＴＯとして設定し、通信を行うことを特徴とするものである。
【００５６】
図５は、本実施例の送信側環境（送信端末１０）におけるフローチャートである。
同図において、先ず、ＴＣＰ通信を開始し、初期値設定サブルーチン（図２に示すフローチャートの処理）にてＲＴＯ_ＩＮＩＴに対するスループットをThroughtput_maxの初期値として設定する（ステップＳ００９）。
【００５７】
本実施例では、再送タイムアウトをトリガー（契機）として、再送タイムアウト値ＲＴＯを変更して新たなスループットの算出を行う処理を繰り返すため、再送タイムアウト発生回数ｎ回目におけるＲＴＯを変数ＲＴＯ_ｎとして定義する。
【００５８】
再送タイムアウト発生回数ｎを２と設定し（ステップＳ０１０）、ある特定のアルゴリズム（後述する実施例２〜４参照）によってＲＴＯ_ｎの算出を行い（ステップＳ０１１）、算出して求めたＲＴＯ_ｎを再送タイムアウト値ＲＴＯとして設定し（ステップＳ０１２）、通信を行う。
【００５９】
次に、受信したＡＣＫパケット情報から往復遅延時間ＲＴＴの値を取得し（ステップＳ０１３）、ステップＳ０１２で設定した再送タイムアウト値ＲＴＯが往復遅延時間ＲＴＴより小さくなると無駄な再送タイムアウトが増加してしまうため、これらを比較し（ステップＳ０１４）、再送タイムアウト値ＲＴＯが往復遅延時間ＲＴＴ以上場合すなわちＲＴＴ≦ＲＴＯの場合（ステップＳ０１４：Ｙ）、ステップＳ０１２で設定した再送タイムアウト値ＲＴＯを用いて通信を継続し（ステップＳ０１５）、再送タイムアウトの発生をトリガーとして、スループット算出サブルーチン（図３に示すフローチャートの処理）にて、Throughputを求め、ＲＴＯ_max，Throughtput_maxの更新処理を行い（ステップＳ０１６）、再送タイムアウト発生回数ｎを１増加させて（ステップＳ０１７）、ステップＳ０１１に戻る。
【００６０】
ステップＳ０１１からステップＳ０１７までの処理が繰り返され、終了条件を再送タイムアウト値ＲＴＯが往復遅延時間ＲＴＴより小さくなることとし、その場合はステップＳ０１４：Ｎ）、スループットを最大化するＲＴＯ_maxを再送タイムアウト値ＲＴＯと設定して（ステップＳ０１８）、継続して通信を行う。
【００６１】
次に、ステップＳ０１１におけるスループットを最大化する再送タイムアウト値ＲＴＯの探索アルゴリズムについて、実施例２から実施例４までの３つの手法の提案を行い、各手法についてフローチャートおよび具体例について示す。
【００６２】
＜実施例２＞
実施例２は、実施例１の環境において、ＴＣＰプロトコルの通信中に送信側（送信端末１０）がポリシング設定値（ポリシングレートＢｐ、最大バケットサイズＢｓ、レート係数Ｂｒ）の情報を取得できる場合、初回の再送タイムアウト発生時から送信端末１０が送出したパケット情報をもとにスループットがポリシングレートＢｐを超えるまでの時間Ｔを計測し、レート係数Ｂｒと時間Ｔの差を再送タイムアウト値ＲＴＯに設定し（ＲＴＯ＝Ｂｒ − Ｔ）、この再送タイムアウト値ＲＴＯの場合のスループットを算出し、新たに算出されたスループットと前回のスループットを比較し、スループットが向上した場合、その値を新たな再送タイムアウト値ＲＴＯとして設定し、通信を行うことを特徴とするものである。
【００６３】
再送タイムアウトが発生すると、送信レートを最小化するため、送信レートがポリシングレートＢｐを上回るまでは、トークンの消費よりも充足量の方が上回る。そこで再送タイムアウト値ＲＴＯとしてはレート係数Ｂｒに対して、送信レートがポリシングレートＢｐを上回る時間Ｔを引いたものが最適値であると考える。
【００６４】
変更後、ＲＴＯ＜ＲＴＴとなる場合は、余計な再送が発生してしまうため、その場合は往復遅延時間ＲＴＴとレート係数Ｂｒの大きい値を再送タイムアウト値ＲＴＯとして、スループットの比較を行う。
【００６５】
次に、上記実施例２の処理を、フローチャートを用いて説明する。
図６は、本実施例の送信側環境におけるフローチャートである。
同図において、先ず、ＴＣＰ通信を開始し、送信側端末（送信端末１０）がポリシング設定値（ポリシングレートＢｐ、最大バケットサイズＢｓ、レート係数Ｂｒ）を取得し（ステップＳ１９）、次に、初期値設定サブルーチン（図２に示すフローチャートの処理）にてＲＴＯ_ＩＮＩＴに対するスループットをThroughput_maxの初期値として設定する（ステップＳ０２０）。
【００６６】
次に、初回再送タイムアウトの発生時刻ｔ1から、送信パケット情報を元に、ThroughputがポリシングレートＢｐを上回るまでの時間Ｔを計測する（ステップＳ０２１）。
【００６７】
次に、再送タイムアウト回数ｎを２として設定し（ステップＳ０２２）、受信したＡＣＫパケット情報から往復遅延時間ＲＴＴの値を取得し（ステップＳ０２３）、レート係数Ｂｒと時間Ｔとの差（Ｂｒ−Ｔ）と往復遅延時間ＲＴＴの値を比較し（ステップＳ０２４）、レート係数Ｂｒと時間Ｔとの差（Ｂｒ−Ｔ）が往復遅延時間ＲＴＴより大きい場合は（ステップＳ０２４：Ｙ）、ＲＴＯ_ｎをＢｒ−Ｔとして算出する（ステップＳ０２５）。
【００６８】
一方、レート係数Ｂｒと時間Ｔとの差（Ｂｒ−Ｔ）が往復遅延時間ＲＴＴ以下の場合は（ステップＳ０２４：Ｎ）、無駄な再送タイムアウトが発生してしまうため、レート係数Ｂｒと往復遅延時間ＲＴＴを比較し（ステップＳ０２７）、レート係数Ｂｒが往復遅延時間ＲＴＴより大きい場合は（ステップＳ０２７：Ｙ）、ＲＴＯ_ｎをレート係数Ｂｒとして算出し（ステップＳ０２８）、往復遅延時間ＲＴＴがレート係数Ｂｒ以上の場合は（ステップＳ０２７：Ｎ）、ＲＴＯ_ｎを往復遅延時間ＲＴＴとして算出する（ステップＳ０２９）。
【００６９】
ステップＳ０２５，Ｓ０２８，Ｓ０２９で求めたＲＴＯ_ｎを再送タイムアウト値ＲＴＯに設定し（ステップＳ０２６）、通信を継続する（ステップＳ０３０）。
【００７０】
次に、再送タイムアウトの発生をトリガーとして、スループット算出サブルーチン（図３に示すフローチャートの処理）にてThroughputを求め、ＲＴＯ_max，Throughput_maxの更新処理を行う（ステップＳ０３１）。
【００７１】
次に、スループットを最大化するＲＴＯ_maxを再送タイムアウト値ＲＴＯに設定し（ステップＳ０３２）、通信を継続する。
【００７２】
（実施例２の具体例）
次に、実施例２の具体例を説明する。
実施例２の具体例では、実施例１と同様に、往復遅延時間ＲＴＴを５ｍｓｅｃ、ポリシングレートＢｐを２Ｍｂｐｓ、最大バケットサイズＢｓを２５ＫＢ（レート係数Ｂｒが１００ｍｓｅｃとなる値）、一般的に設定されているＲＴＯ_ＭＩＮを２００ｍｓｅｃとする。
【００７３】
図６のステップＳ０１９にて、ポリシング設定値として、ポリシングレートＢｐが２Ｍｂｐｓ、最大バケットサイズＢｓが２５ＫＢ、レート係数Ｂｒが１００ｍｓｅｃという値を取得し、ステップＳ０２０の初期値設定ステップにてＲＴＯ_ＩＮＩＴが２０５ｍｓｅｃと設定され、初回の再送タイムアウト発生時にスループットが算出され、Throughputが１.１６Ｍｂｐｓとなり、この２つの値がＲＴＯ_maxとThroughput_maxに設定される。
【００７４】
ステップＳ０２１にて初回の再送タイムアウト発生時からThroughputがポリシングレートＢｐよりも大きくなるまでの時間Ｔを計測する。時間Ｔは５ｍｓｅｃと計測される。ステップＳ０２２にて再送タイムアウトの発生回数ｎを２に設定し、ステップＳ０２３にて往復遅延時間ＲＴＴの値（５ｍｓｅｃ）を取得し、ステップＳ０２４でレート係数Ｂｒと時間Ｔとの差（Ｂｒ−Ｔ）と往復遅延時間ＲＴＴの比較を行う。
【００７５】
レート係数Ｂｒと時間Ｔとの差（Ｂｒ−Ｔ）は９５ｍｓｅｃであるため往復遅延時間ＲＴＴ５ｍｓｅｃより大きいことから（ステップＳ０２４：Ｙ）、ステップＳ０２５にて再送タイムアウト値ＲＴＯ_ｎは９５ｍｓｅｃと求められ、ステップＳ０２６にて再送タイムアウト値ＲＴＯに求めたＲＴＯ_ｎを設定して、ステップＳ０３０で通信を継続する。ステップＳ０３１にて、再送タイムアウトの発生をトリガーとしてスループットの算出を行い、Throughputが１.８５Ｍｂｐｓと算出される。
【００７６】
次に、Throughput（１.８５Ｍｂｐｓ）とThroughput_max（１.１６Ｍｂｐｓ）と比較し、Throughputの方が大きいため、ＲＴＯ_maxを９５ｍｓｅｃにThroughput_maxを１.８５Ｍｂｐｓに更新する。ステップＳ０３２にて再送タイムアウト値ＲＴＯを９５ｍｓｅｃと設定し、通信を継続する。
【００７７】
図７は、ステップＳ１９からＳ３１までの処理における再送タイムアウト値ＲＴＯ、Throughput、ＲＴＯ_max、Throughtput_maxの値の具体例を示す図である。
【００７８】
求められた再送タイムアウト値ＲＴＯに対してスループットは１.８５Ｍｂｐｓとなり、ＲＴＯ_ＩＮＩＴ（≒ＲＴＴ+ＲＴＯ_ＭＩＮ＝２０５ｍｓｅｃ）と比較して、スループットが０.６９Ｍｂｐｓ向上したことがわかる。また、本パラメータを計算するために必要な再送タイムアウト発生回数ｎは２回である。
【００７９】
＜実施例３＞
実施例３は、実施例１の環境において、ＴＣＰプロトコルの通信中に再送タイムアウトの発生をトリガーとして、
ＲＴＴ ≦ ＲＴＯ ≦ ＲＴＯ_ＩＮＩＴ
の範囲の中で、再送タイムアウト値ＲＴＯ探索範囲を変数ＲＴＯ_low〜ＲＴＯ_highとして定義し、それぞれ往復遅延時間ＲＴＴ，初期再送タイムアウト値ＲＴＯ_ＩＮＩＴとして設定し、スループットが最大化される再送タイムアウト値ＲＴＯを二分探索法を用いて探索する。
【００８０】
探索終了条件は、二分探索によってスループットが向上しなくなった点としてもよいし、スループットを目指すポリシングレートの割合で指定してもよいし、変化させるＲＴＯ幅が往復遅延時間ＲＴＴ以下となった場合としてもよい。
【００８１】
次に、上記実施例３の処理を、フローチャートを用いて説明する。
図８および９は、実施例３における送信側環境で行われる処理のフローチャートである。図８は、探索終了条件を「スループットが向上しなくなった」とした場合のフローチャートであり、図９は、探索終了条件を「変化させるＲＴＯ幅が往復遅延時間ＲＴＴ以下」とした場合のフローチャートである。図８と図９は、図８ステップＳＳ５２におけるスループットに基づく探索終了条件を、図９のステップＳ０５５における再送タイムアウトの変化幅に基づく探索終了条件に置き換えた点を除けば同一のフローチャートである。
【００８２】
図８において、先ず、ＴＣＰ通信を開始し、初期値設定サブルーチン（図２に示すフローチャートの処理）にてＲＴＯ_ＩＮＩＴに対するスループットをThroughput_maxの初期値として設定する（ステップＳ０３３）。
【００８３】
次に、スループットを最大化する再送タイムアウト値ＲＴＯの探索において、再送タイムアウト値ＲＴＯの探索範囲を変数ＲＴＯ_low，ＲＴＯ_high、それぞれのスループットをThroughput_low，Throughput_highと定義し、初期値設定サブルーチンで求めた再送タイムアウト値ＲＴＯとThroughputをＲＴＯ_highとThroughput_highに設定する（ステップＳ０３４）。
【００８４】
次に、受信したＡＣＫパケット情報から往復遅延時間ＲＴＴの値を取得し（ステップＳ０３５）、再送タイムアウト値ＲＴＯを往復遅延時間ＲＴＴとして設定し（ステップＳ０３６）、再送タイムアウト回数ｎを２に設定し（ステップＳ０３７）、再送タイムアウトの発生をトリガーとして、スループット算出サブルーチンにてThroughputを求め、ＲＴＯ_max、Throughput_maxの更新処理を行う（ステップＳ０３８）。
【００８５】
再送タイムアウト値ＲＴＯと求めたThroughputを、それぞれＲＴＯ_lowとThrougput_lowに設定し（ステップＳ０３９）、二分探索を行っていくことになる。
【００８６】
再送タイムアウト発生回数ｎを３に設定し（ステップＳ０４０）、Throuput_lowとThrouput_highを比較し（ステップＳ０４１）、Throuput_highよりThrouput_lowが高い場合は（ステップＳ０４１：Ｙ）、求めたいスループットを最大化する再送タイムアウト値ＲＴＯがＲＴＯ_low近辺にあると判断し、ＲＴＯ_highを（ＲＴＯ_low+ＲＴＯ_high）／２に更新し（ステップＳ０４２）、この値を再送タイムアウト値ＲＴＯに設定し（ステップＳ０４３）、通信を継続する（ステップＳ０４４）。
【００８７】
次に、再送タイムアウトの発生をトリガーとして、スループット算出サブルーチン（図３に示すフローチャートの処理）にてThroughputを求め、ＲＴＯ_max，Throughput_maxの更新処理を行う（ステップＳ０４５）。
【００８８】
そしてThroughput_highを、求めたThroughputで更新する（ステップＳ０４６）。
【００８９】
一方、ステップＳ０４１でThrouput_lowとThrouput_highを比較した結果、Throuput_lowよりThrouput_highが高い場合は（ステップＳ０４１：Ｎ）、求めたいスループットを最大化する再送タイムアウト値ＲＴＯがＲＴＯ_high近辺にあると判断し、ＲＴＯ_lowを（ＲＴＯ_low+ＲＴＯ_high）／２に更新し（ステップＳ０４７）、この値を再送タイムアウト値ＲＴＯに設定し（ステップＳ０４８）、通信を継続する（ステップＳ０４９）。
【００９０】
次に、再送タイムアウトの発生をトリガーとして、スループット算出サブルーチン（図３に示すフローチャートの処理）にてThroughputを求め、ＲＴＯ_max，Throughput_maxの更新処理を行う（ステップＳ０５０）。そしてThroughput_lowを、求めたThroughputで更新する（ステップＳ０５１）。
【００９１】
ステップＳ０４２からＳ０４６およびステップＳ０４７からＳ０５１によってそれぞれＲＴＯ_highおよびＲＴＯ_lowに設定してThrouput_maxが更新されたかを判定し（ステップＳ０５２）、ThroughputとThroughput_maxが等しい場合すなわちThrouput_maxが更新された場合（ステップＳ０５２：Ｎ）、再送タイムアウト回数ｎを１増やし（ステップＳ０５３）、ステップＳ０４１からＳ０５３までの処理を繰り返す。
【００９２】
図８は、上述したように、繰り返し終了条件を、「二分探索による再送タイムアウト値ＲＴＯ変更によってスループットの最大値Througput_maxが更新されない」（ステップＳ０５２）としたものである。Throuput_maxが更新されなかった場合すなわちThroughputとThroughput_maxが等しくない場合は（ステップＳ０５２：Ｙ）、ＲＴＯ_maxを再送タイムアウト値ＲＴＯに設定し（ステップＳ０５４）、通信を継続する。
【００９３】
図９は、上述したように、繰り返し終了条件を、「二分探索における再送タイムアウト値ＲＴＯの変更幅（ＲＴＯ_low+ＲＴＯ_high）／２が閾値σよりも小さくなった」（ステップＳ０５５）とした場合の例である。再送タイムアウト値ＲＴＯの変更幅（ＲＴＯ_low+ＲＴＯ_high）／２が閾値σよりも小さくなった場合は（ステップＳ０５５：Ｙ）、ＲＴＯ_maxを再送タイムアウト値ＲＴＯに設定し（ステップＳ０５４）、通信を継続する。
【００９４】
（実施例３の具体例）
次に、実施例３の具体例を説明する。
実施例３の具体例として、往復遅延時間ＲＴＴを５ｍｓｅｃ（ＲＴＯ_low＝ＲＴＴ＝５ｍｓｅｃ）、一般的に設定されているＲＴＯ_ＭＩＮを２００ｍｓｅｃ、ＲＴＯ_highをＲＴＯ_ＩＮＩＴ（≒ＲＴＴ+ＲＴＯ_ＭＩＮ＝２０５ｍｓｅｃ）、ポリシングレートＢｐを２Ｍｂｐｓ、最大バケットサイズＢｓを２５ＫＢ（レート係数Ｂｒが１００ｍｓｅｃとなる値）、探索終了条件をスループットが向上しなくなった点とする。
【００９５】
ステップＳ０３３でＲＴＯ_ＩＮＩＴが２０５ｍｓｅｃと設定され、初回の再送タイムアウト発生時にスループットが算出され、Throughputが１.１６Ｍｂｐｓとなり、この２つの値がＲＴＯ_maxとThroughtput_maxに設定される。ステップＳ０３４にて、ＲＴＯ_highには２０５ｍｓｅｃ、Throughtput_highには１.１６Ｍｂｐｓが設定される。
【００９６】
図８のステップＳ０３５により往復遅延時間ＲＴＴの値（５ｍｓｅｃ）を取得し、ステップＳ０３６にて新たな再送タイムアウト値ＲＴＯをＲＴＴの値５ｍｓｅｃに設定する。
【００９７】
次に、ステップＳ０３７にて再送タイムアウト回数を２と設定し、ステップＳ０３８にて再送タイムアウト発生をトリガーとして、スループットの算出を行い、Throughtputが１.６９Ｍｂｐｓと算出される。
【００９８】
次に、Throughtput（１.６９Ｍｂｐｓ）とThroughput_max（１.１６Ｍｂｐｓ）とを比較し、Throughputが大きいため、ＲＴＯ_maxを５ｍｓｅｃに、Throughtput_maxをこのときのThroughtputの値に更新する。ステップＳ０３９にて、ＲＴＯ_lowには５ｍｓｅｃ、Throughput_lowには１.６９Ｍｂｐｓを設定する。
【００９９】
ステップＳ０４０にて再送タイムアウト発生回数ｎを３に設定し、ステップＳ０４１にて、Throughput_lowとThroughput_highを比較する。本例の場合、Throughput_low（１.６９Ｍｂｐｓ）の方がThroughput_high（１.１６Ｍｂｐｓ）より大きいため（ステップＳ０４１：Ｙ）、ステップＳ０４２にてＲＴＯ_highを１０５ｍｓｅｃとして算出し、ステップＳ０４３にてＲＴＯ_highを再送タイムアウト値ＲＴＯに設定して、ステップＳ０４４で通信を継続する。
【０１００】
再送タイムアウトの発生をトリガーとして、スループットの算出を行い、Throughputが１.９Ｍｂｐｓとして算出される（ステップＳ０４５）。ThroughputとThroughput_maxと比較して、ThroughputがThroughput_maxより大きいため、ＲＴＯ_maxを１０５ｍｓｅｃ，Throughput_maxを１.９Ｍｂｐｓに更新する。
【０１０１】
ステップＳ０４６にてThroughput_highを１.９Ｍｂｐｓに更新し、ステップＳ０５２にてThroughputとThroughput_maxを比較し、ThroughputとThroughput_maxが等しい場合は（ステップＳ０５２：Ｎ）、Throughput_maxの更新処理が行われたことを意味するため、ステップＳ０５３で再送タイムアウト回数を４に更新し、再びステップＳ０４１からＳ０５３までの処理を繰り返す。
【０１０２】
図１０は、実施例３のステップＳ０４１からＳ０５３までの繰り返し処理（ｎ＝１〜５）における再送タイムアウト値ＲＴＯ、Throughput、ＲＴＯ_max、Throughtput_max、ＲＴＯ_high、Throughput_high、ＲＴＯ_low，Throughput_lowの値の例を示す図である。
【０１０３】
ステップＳ０５２にて、ThroughputとThroughput_maxが等しくない場合は（ステップＳ０５２：Ｙ）、Throughput_maxの更新が行われなくなったことを意味するため、ステップＳ０４１からＳ０５３までの繰り返し処理を終了し、ステップＳ０５４にてＲＴＯ_maxである５５ｍｓｅｃを再送タイムアウト値ＲＴＯに設定し、通信を継続する。
【０１０４】
求められた再送タイムアウト値ＲＴＯに対してスループットは１.９３Ｍbpとなり、ＲＴＯ_ＩＮＩＴ（≒ＲＴＴ+ＲＴＯ_ＭＩＮ＝２０５ｍｓｅｃ）と比較して、スループットは０.７７Ｍｂｐｓ向上したことがわかる。
【０１０５】
また、本パラメータを計算するために必要な再送タイムアウト発生回数は５回である。
【０１０６】
＜実施例４＞
実施例４は、実施例１の環境において、ＴＣＰプロトコルの通信中に再送タイムアウトの発生をトリガーとして、
ＲＴＴ ≦ ＲＴＯ ≦ ＲＴＯ_ＩＮＩＴ
を満たす範囲で、任意の間隔ｄで順次変化させ、スループットが最大となるＲＴＯを網羅的に探索し、その値を新たな再送タイムアウト値ＲＴＯとして設定し、通信を行う。
【０１０７】
次に、上記実施例４の処理を、フローチャートを用いて説明する。
図１１は、実施例４における送信側環境で行われる処理のフローチャートである。
同図に示すように、先ず、ＴＣＰ通信を開始し、初期設定サブルーチン（図２のフローチャートの処理）にてＲＴＯ_ＩＮＩＴに対するスループットをThroughput_maxの初期値として設定する（ステップＳ０５６）。
【０１０８】
次に、再送タイムアウト回数ｎを２に設定し（ステップＳ０５７）、ｎ回目の再送タイムアウトにおけるＲＴＯ_ｎを再送タイムアウト値ＲＴＯから一定間隔ｄによって減じ（ステップＳ０５８）、ＲＴＯ_ｎを再送タイムアウト値ＲＴＯに設定する（ステップＳ０５９）。
【０１０９】
次に、受信したＡＣＫパケット情報から往復遅延時間ＲＴＴの値を取得し（ステップＳ０６０）、往復遅延時間ＲＴＴと再送タイムアウト値ＲＴＯの比較を行う（ステップＳ０６１）。
【０１１０】
ステップＳ０６１での比較の結果、再送タイムアウト値ＲＴＯが往復遅延時間ＲＴＴより大きい場合は（ステップＳ０６１：Ｙ）、通信を継続し（ステップＳ０６２）、再送タイムアウトの発生をトリガーとして、スループット算出サブルーチン（図３のフローチャートの処理）にてThroughputを求め、ＲＴＯ_max，Throughput_maxの更新処理を行う（ステップＳ０６３）。
【０１１１】
次に、再送タイムアウト回数を１増やし（ステップＳ０６４）、ステップＳ０５７からＳ０６３までの処理を繰り返す。
【０１１２】
ステップＳ０６１での比較の結果、再送タイムアウト値ＲＴＯが往復遅延時間ＲＴＴ以下となった場合（ステップＳ０６１：Ｎ）、無駄な再送タイムアウトが発生してしまうため、探索をやめ、ＲＴＯ_maxを再送タイムアウト値ＲＴＯに設定して（ステップＳ０６５）、通信を継続する。
【０１１３】
（実施例４の具体例）
次に、実施例４の具体例を説明する。
実施例４に対する具体例として、往復遅延時間ＲＴＴ＝５ｍｓｅｃ、ポリシングレートＢｐを２Ｍｂｐｓ、最大バケットサイズＢｓを２５ＫＢ（レート係数Ｂｒが１００ｍｓｅｃとなる値）、ｄ＝１０ｍｓｅｃ、一般的に設定されているＲＴＯ_ＭＩＮを２００ｍｓｅｃとする。
【０１１４】
ステップＳ０５６の初期値設定サブルーチンで、ＲＴＯ_ＩＮＩＴが２０５ｍｓｅｃと設定され、初回の再送タイムアウト発生時にスループットが算出され、Throughputが１.１６Ｍｂｐｓとなり、この２つの値がＲＴＯ_maxとThroughput_maxに設定される。
【０１１５】
次のステップＳ０５７で再送タイムアウト回数ｎを２に設定し、ステップＳ０５８でＲＴＯ_２がＲＴＯ−ｄ＝２０５−１０＝１９５ｍｓｅｃとして設定され、ステップＳ０５９でこの値を新たな再送タイムアウト値ＲＴＯとして設定し、ステップＳ０６０で往復遅延時間ＲＴＴの値（５ｍｓｅｃ）を取得し、ステップＳ０６１で往復遅延時間ＲＴＴと再送タイムアウト値ＲＴＯの比較を行う。
【０１１６】
ステップＳ０６１での往復遅延時間ＲＴＴと再送タイムアウト値ＲＴＯの比較の結果、再送タイムアウト値ＲＴＯ（１９５ｍｓｅｃ）の方が往復遅延時間ＲＴＴ（５ｍｓｅｃ）より大きいため（ステップＳ０６１：Ｙ）、ステップＳ０６２で通信が継続され、ステップＳ０６３にて、再送タイムアウトの発生をトリガーとしてスループットの算出を行うことにより、Throughputに１.２１Ｍｂｐｓが算出される。Throughput_maxと比較してThroughputが大きいため、ＲＴＯ_maxを１９５ｍｓｅｃに、Throughput_maxを１.２１Ｍｂｐｓに更新する。
【０１１７】
次に、ステップＳ０６４で再送タイムアウト回数ｎを１増やして３に設定し、ステップＳ０５８からＳ０６４の処理を繰り返す。
【０１１８】
ステップＳ０５８からＳ０６４までの繰り返し処理における再送タイムアウト値ＲＴＯ、Throughput、ＲＴＯ_max、Throughtput_maxの値を図１２に示す。
【０１１９】
ステップＳ０５８にてＲＴＯ_ｎをｄ（＝１０ｍｓｅｃ）ずつ減じて、ステップＳ０６１の終了条件（往復遅延時間ＲＴＴが再送タイムアウト値ＲＴＯ以上）を満たした場合（ステップＳ０６１：Ｎ）、ステップＳ０６５にてスループットを最大化するＲＴＯ_maxである７５ｍｓｅｃを再送タイムアウト値ＲＴＯと設定し、通信を継続する。
【０１２０】
求められた再送タイムアウト値ＲＴＯ（７５ｍｓｅｃ）に対してスループットは１.９６Ｍｂｐｓとなり、ＲＴＯ_ＩＮＩＴ（≒ＲＴＴ+ＲＴＯ_ＭＩＮ＝２０５ｍｓｅｃ）と比較して、スループットは０.８Ｍｂｐｓ向上したことがわかる。また、図１２からわかるように、本例ではパラメータを計算するために必要な再送タイムアウト発生回数ｎは２０回である。
【０１２１】
＜実施例２〜４を用いた場合のスループットの比較＞
次に、後述した実施例２〜４で得られた結果の比較を図面を用いて説明する。
図１３は、実施例２〜４で説明したアルゴリズムを用いて求められた再送タイムアウト値ＲＴＯとＲＴＯ_ＩＮＩＴのスループットとの比較結果を示す図である。同図（ａ）は、上記で説明した実施例毎の数値例を表で示したものであり、同図（ｂ）は、各実施例で得られた再送タイムアウト値ＲＴＯの値を横軸に、ＲＴＯ_ＩＮＩＴのスループットの値を縦軸にしたグラフにプロットしたものである。
【０１２２】
図１３により、実施例２〜４のアルゴリズムを用いない場合（すなわち再送タイムアウト値ＲＴＯ_ＩＮＩＴを設定した場合）のスループットに比較して、実施例２〜４のアルゴリズムを用いて求められた再送タイムアウト値ＲＴＯを設定した場合のスループットの方が大幅に向上していることがわかる。
【０１２３】
なお、図２に示す初期化設定サブルーチンの処理、図３に示すスループット算出サブルーチンの処理、図５に示す実施例１のフローチャートの処理、図６に示す実施例２のフローチャートの処理、図８および図９に示す実施例３のフローチャートの処理、図１１に示す実施例４のフローチャートの処理は、送信側環境（主として送信端末となる通信装置）を構成するコンピュータに内蔵されるＣＰＵやメモリ、レジスタなどのハードウェアを用いて各処理に対応するプログラムを実行することにより実現される。また、これら各処理に対応するプログラムは、ＦＤ、ＣＤ−ＲＯＭ、ＤＶＤなどの記録媒体や、インターネットなどのネットワークを介して市場に流通させることができる。なお、上記各フローチャートの処理における各ステップ（各手順）は、送信側環境である通信装置を構成するコンピュータに内蔵されるＣＰＵやメモリ、レジスタなどのハードウェアを用いて処理されるものであり、請求項における「手段」は、これらの各処理（各ステップ）を実行するための構成部分を意味している。
【符号の説明】
【０１２４】
１０：送信端末(送信側の通信装置)
２０：アクセス回線
３０：DiffServネットワーク
３１，３２：エッジルータ
３１１：トークンバケットポリサ
３３：ポリサコントローラ
４０：アクセス回線
５０：受信端末（受信側の通信装置）
Ｂｐ：ポリシングレート
Ｂｓ：最大バケットサイズ
Ｂｒ：レート係数
【図１】
2011171912.tif 000003
【図２】
2011171912.tif 000004
【図３】
2011171912.tif 000005
【図４】
2011171912.tif 000006
【図５】
2011171912.tif 000007
【図６】
2011171912.tif 000008
【図７】
2011171912.tif 000009
【図８】
2011171912.tif 000010
【図９】
2011171912.tif 000011
【図１０】
2011171912.tif 000012
【図１１】
2011171912.tif 000013
【図１２】
2011171912.tif 000014
【図１３】
2011171912.tif 000015