現在、インターネット等のネットワークでは、TCP(Transmission Control Protocol)が広く使用されている。TCPによる通信では、ネットワークにおいて利用者のアクセスが特定の宛先に集中し、通常行えるはずの通信ができなくなる状況を回避するための輻輳制御が行われている。輻輳制御については、RFC(Request for Comments)2581で定義されたTCP Renoの他、様々な輻輳制御アルゴリズム(TCP Tahoe、TCP New Reno、TCP Vegas等)が提案されており、OS(Operating System)により、さらにはOSのバージョンにより異なる輻輳制御アルゴリズムが搭載されている。
輻輳制御では、輻輳ウインドウというパラメータを使用して制御を行っており、送信端末は、輻輳ウインドウの大きさ(以下、単に「輻輳ウインドウ」と呼ぶこともある)まで、受信端末からの確認応答のセグメント(以下、「確認応答セグメント」とする)の到着を待たずに、セグメントを送信することができる(以下、送信端末が送信するセグメントを「データセグメント」とする)。この輻輳ウインドウは、ネットワークが輻輳状態ではないと判断されている間は増加されるが、ネットワークが輻輳状態であると判断されると、一気に減少される。減少する幅は輻輳制御アルゴリズムによって異なるが、いずれの場合も、セグメント損失時のこのような輻輳制御における輻輳ウインドウの制御は、ネットワークのスループット(ネットワークや通信回線の単位時間あたりの実効転送量)に影響を与える。特に、データ転送に時間を要する長距離高速通信ネットワークや、セグメント損失が発生し易い無線ネットワークにおいては影響が大きい。
無線ネットワークは、有線ネットワークに比べて、通信による輻輳に関係なく、電波干渉やビットエラー等の様々な原因でセグメント損失を起こし易く、輻輳状態と判断され易いネットワークである。よって、輻輳状態と判断される度に、輻輳制御が行われると、スループットの低下、セグメントの再送によるネットワーク帯域の圧迫、送信端末での再送処理の増加等、通信経路にあるネットワーク全体に影響を与えるので、輻輳制御の改善が進められている。
TCP WestwoodやTCP Westwood+は、このような無線ネットワークをターゲットとして提案されたアルゴリズムである。無線ネットワークを想定しているが、実装されている技術には、長距離高速通信ネットワークにも応用できるものがある。ここで、TCP Westwood+による輻輳制御について説明する。
TCP Westwood+を用いてセグメントを送信する場合、輻輳制御におけるスロースタート、輻輳回避及び輻輳検知の各段階での制御はTCP Reno等と同じ制御であるが、輻輳検知後の輻輳ウインドウの極端な減少を回避するために、輻輳検知後のスロースタート閾値は確認応答セグメントを受信した際に算出した帯域推測値を用いて求めており、さらにそれに合わせて輻輳ウインドウも変更している。具体的には、k番目の確認応答セグメントに対する帯域推測値SBWEkを下記数1より算出し、さらに、k番目の確認応答セグメントに対する利用可能帯域BWEkを下記数2より算出する。
ここで、ASは確認応答セグメントに含まれる確認応答の数であり、データセグメントと確認応答セグメントが1対1で送受信される場合、ASは1であるが、複数のデータセグメントに対して1つの確認応答セグメントが送受信される場合は、送受信されたデータセグメントの数がASとなる。SSはセグメントサイズである。よって、AS×SSは、確認応答セグメントの基となったデータセグメントの総データサイズとなる。RTTkはk番目の確認応答セグメントに対する往復遅延時間である。往復遅延時間とは、送信端末がデータセグメントを送信した時点から、データセグメントが受信端末に届き、受信端末からの確認応答セグメントが送信端末に届くまでの時間である。αは定数で、0.9が推奨値とされている。そして、輻輳検知の条件のうち、早期再送の場合である同じ確認応答セグメントを3回受信した(以下、「三重複応答」とする)場合は、下記数3のようにスロースタート閾値ssthresh及び輻輳ウインドウCWNDを変更し、再送タイマがタイムアウトした(以下、「再送タイムアウト」とする)場合は、下記数4のように変更する。
ここで、RTTminは、RTTkが計測されるまでの全ての往復遅延時間の中での最小値である。
上記のような制御を行うTCP Westwood+の使用により無線ネットワークでの輻輳制御の改善を図ろうとした場合、送信端末と受信端末が無線ネットワークのみで通信するような通信経路全体を観測できる環境では改善が図れる。しかし、現在は無線ネットワークと有線ネットワークが混在する環境(以下、「混在ネットワーク環境」とする)が多く存在する。例えば、携帯電話やスマートフォンでのデータ通信では、携帯電話会社が構築している無線ネットワークとインターネットが混在した環境でデータ通信を行っており、ホテルやカフェ等で提供されている公衆無線LAN(Local Area Network)でも、無線ネットワークとインターネットを介してデータ通信が行われている。このような混在ネットワーク環境では、TCP Westwood+を始め、従来のTCPは送受信端末で実行され、通信経路を特定できないために、適切な制御を行えない可能性がある。この問題への対策の1つとして、RFC2757にてSplit TCPが提案されている。Split TCPによれば、無線や有線等のネットワーク特性に応じてネットワーク区間を分割し、各区間のネットワーク特性に合わせて適切なTCPを適用することにより、輻輳制御の改善が期待できる。そして、Split TCPの実現方法として、ネットワーク区間を分割した地点に中継装置を設置する方法がある。
中継装置の使用を前提に、中継装置と端末間の通信が無線ネットワークで行われる場合、中継装置で使用するTCPとしてTCP Westwood+を採用すると、帯域推測値に基づいてスロースタート閾値を決定する方法において不都合が生じる可能性がある。例えば、公衆無線LANのように、短距離通信である無線ネットワークと長距離通信であるインターネットの有線ネットワークを中継装置で接続した場合、無線ネットワークでの通信における往復遅延時間は、有線ネットワークでの通信における往復遅延時間に比べて非常に小さい。しかし、例えば無線LANで採用されているCSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)方式で通信を行う場合、図1に示されるように、端末1Bが無線アクセスポイント2を経由してデータ(データセグメント)を送信する際、端末1Bが送信する前に端末1Aが送信を行っていたら、フレーム送信間隔における最短の待ち時間であるSIFS(Short Interframe Space)、ビジー状態のチャネルから信号が検出されなくなり、アイドル状態に移行したと判断されるまでの時間であるDIFS(DCF(Distributed Coordination Function) Interframe Space)及びフレームの衝突を回避するためにフレーム送信を待機するランダムな時間であるバックオフを経て、端末1Bはデータ送信することになる。よって、端末1Aや1Bがデータを送受信する場合、上記の時間のために、無線ネットワークでは有線ネットワークよりも遅延ジッタが生じる可能性がある。例えば、図2に示されるように、無線アクセスポイント2に有線ネットワークで接続されているサーバ3が、無線アクセスポイント2を経由して端末1Aにデータを送信する場合、図2(A)においてはデータ1とデータ2の間に、図2(B)においてはデータ2とデータ3の間に遅延ジッタが生じるようなことが起こり得る。また、多数の端末が同時期に多量のデータを送信する等により無線アクセスポイント上での待機データが急激に増えた場合、バッファオーバーフローにより待機データが破棄されると、三重複応答時での早期再送ではなく、再送タイムアウト時での再送処理を取るために、タイムアウトまで再送が待たされ、待機データが多いほど、破棄されたデータの再送処理が多く発生することになる。よって、往復遅延時間は通信データ量(通信量)以外の別の要因で変化し易く、輻輳検知時に往復遅延時間を用いて算出される帯域推測値、さらにはスロースタート閾値も別の要因で変化し易いことになる。また、通常、スロースタート段階では、輻輳ウインドウをスロースタート閾値まで急速に増加されることになり、送信レートも急速に増加するが、そのことが、無線ネットワークにおいてはセグメント損失の確率を高くすることになり、セグメント損失に伴う再送処理の発生する確率も高くなる。
このように、帯域推測値に基づいて求められるスロースタート閾値を用いた輻輳制御は、通信経路全体を観測できるならば、有効な手段ではあるが、中継装置を使用する混在ネットワーク環境において、特に無線ネットワークのように通信データ量に関係なく往復遅延時間が変化するネットワークに適用する場合は、改良が必要である。
中継装置により通信を改善する方法として、例えば特許第5059976号公報(特許文献1)にて開示されている方法がある。特許文献1の装置では、セッション毎に通信帯域を測定し、測定帯域と予め設定されている目標帯域を比較し、測定帯域が目標帯域を上回る場合は目標帯域でパケットが送信されるように帯域を抑制し、測定帯域が目標帯域を下回る場合はバッファリングしておいたパケットを代理再送することにより帯域を促進することによって、通信の安定化を図っている。帯域の抑制及び促進はパケットのヘッダの変更を伴わずに実行され、既存のTCP/IP処理に依存しない処理となっている。
本発明では、複数のネットワーク間の通信を中継する中継装置において、特定のネットワークに対して、TCP Westwood+でのスロースタート閾値ssthreshの算出方法を改良した方法で輻輳制御を行っている。具体的には、k番目の確認応答セグメントに対する帯域推測値SBWEkの算出を、数1ではなく、下記数5を用いて行う。
従来のTCP Westwood+では観測された往復遅延時間RTTkが使用されているが、その代わりに、RTTkが計測されるまでの全ての往復遅延時間の中での最小値であるRTTminを使用し、そのRTTminは1つのセグメントを送信するために必要な時間であると見做して、帯域推測値SBWEkを算出する。帯域推測値SBWEk算出後は、従来のTCP Westwood+と同様の演算(数2〜4)によりスロースタート閾値ssthreshを算出し、輻輳制御を行う。帯域推測値SBWEkの算出に数5を用いることにより、帯域推測値SBWEkの変動が抑えられ、且つ、帯域推測値SBWEkを小さく見積もることができる。例えば、セグメントサイズSSが1460バイトで、1番目、2番目及び3番目の確認応答セグメントに含まれる確認応答の数ASがそれぞれ5、11及び2で、往復遅延時間がそれぞれ26、30及び24秒の場合、従来のTCP Westwood+での帯域推測値SBWEk(k=1,2,3)は下記数6となり、本発明での帯域推測値SBWEkは下記数7となり(小数点以下は切り捨て)、本発明では、帯域推測値SBWEkの変動が抑えられ、帯域推測値SBWEkが小さくなることがわかる。
このような輻輳制御が実行されるネットワーク(以下、「適用ネットワーク」とする)として、例えば、無線ネットワークのように、往復遅延時間が通信量以外の別の要因で変化し易いネットワークを採用した場合、帯域推測値SBWEkの変動が抑えられ、帯域推測値SBWEkが小さくなることによって、輻輳検知時に再設定されるスロースタート閾値ssthreshを小さくすることができ、再設定された後、輻輳ウインドウCWNDの増加率がスロースタートの段階より抑えられる輻輳回避の段階に早期に移行することができる。よって、急激な送信レートの増加を抑え、安定的な送信を行うことができ、セグメント損失を抑えることができる。
適用ネットワーク以外のネットワーク(以下、「非適用ネットワーク」とする)に対しては、TCP CUBIC等の従来から使用されている標準のTCPによる輻輳制御を行う。
なお、数5では、RTTminを1つのセグメントを送信するために必要な時間であると見做しているが、1以外の数(整数でなくても良い)のセグメントを送信するために必要な時間と見做して帯域推測値SBWEkを算出しても良い。
本発明の中継装置では、このような輻輳制御を行なうために、制御対象のネットワーク毎に制御部を備えているが、さらにネットワーク毎に記憶部を備えることも可能である。送信端末から中継装置に送信されたデータセグメントは記憶部に記憶され、中継装置は記憶部に記憶されたデータセグメントを受信端末に送信する。そして、再送処理が必要な場合は、記憶部に記憶されているデータセグメントを使用して、受信端末に再送する。この記憶部を使用した処理は、適用ネットワークか非適用ネットワークかに関係なく実行されるので、各制御部は他の制御部でのセグメント送受信とは独立して処理を実行することができる。また、送信端末と受信端末間ではなく、中継装置と受信端末間で再送処理を実行するので、再送処理にかかる時間を短縮でき、送信端末と中継装置の間での再送のための通信量の増加を抑えることができる。なお、ネットワーク毎に記憶部を備えるのではなく、1つの記憶部のみを備え、ネットワーク毎にその記憶部内の記憶領域を分割して使用するようにしても良い。
以下に、本発明の実施の形態を、図面を参照して説明する。
図3は、本発明に係る中継装置を含んだ全体のネットワーク環境の構成例(第1実施形態)を示す。本構成例では、無線ネットワークを適用ネットワークとし、インターネット上の有線ネットワークを非適用ネットワークとしている。無線ネットワークでは、パソコンやタブレット等の受信端末4と無線アクセスポイント2との間でセグメントの送受信を行い、無線アクセスポイント2に中継装置5が直結されている。インターネット上の有線ネットワークでは、インターネット6を介してサーバ7が中継装置5に接続されている。なお、通常、中継装置5とサーバ7との間にルータ等を介するが、本構成例では省略している。
第1実施形態では、図4に示されるように、非適用ネットワークに接続されているサーバ7からデータセグメント(図4では「セグメント」と表記)が中継装置5に送信され、中継装置5は、データセグメントを受信したら、確認応答セグメント(図4では「応答」と表記)をサーバ7に送信すると共に、データセグメントを記憶部40に記憶する。そして、適用ネットワークに接続されている受信端末4Aに、記憶部40に記憶されたデータセグメントを送信する。受信端末4Aは、データセグメントを受信したら、確認応答セグメントを中継装置5に送信する。記憶部40には、通信セッション毎にデータセグメントを記憶する領域(以下、「セッション別記憶バッファ」とする)が設けられており、サーバ7よりデータセグメントを受信したら、該当するセッション別記憶バッファに記憶する。
サーバ7から受信端末4Aへのセグメント送受信における再送処理も、中継装置5を介して行われる。即ち、セグメント損失等によりサーバ7から中継装置5に送信されるデータセグメントの一部が中継装置5に正しく届かなかった場合、中継装置5は、従来のTCPと同様の方法により、確認応答セグメントの有無や確認応答セグメント中のシーケンス番号を使用して、データセグメントの再送をサーバ7に要求する。中継装置5から受信端末4Aに送信されるデータセグメントの一部が受信端末4Aに正しく届かなかった場合は、中継装置5は、受信端末4Aから送信される確認応答セグメントの有無や確認応答セグメント中のシーケンス番号よりそのことを判定し、記憶部40に記憶されているデータセグメントを用いて、データセグメントの再送を行う。
第1実施形態の中継装置5の構成例を図5に示す。中継装置5は、制御部10、セグメント管理部20、制御部30及び記憶部40を備える。なお、図5には、図3における非適用ネットワークから適用ネットワークにデータセグメントを送信する場合の輻輳制御の説明に必要な構成要素のみを示している。このことは、後述の制御部10及び制御部30の構成例を示す図6及び図7においても同様である。
制御部10は、サーバ7から送信されるデータセグメントDsegを入力し、サーバ7に送信する確認応答セグメントAckSを出力すると共に、データセグメントDsegをセグメント管理部20に出力する。制御部10は、従来のTCP、例えばTCP CUBICにより輻輳制御を行う。なお、TCPはプロトコル構造でのトランスポート層に位置し、通常、サーバ7から送信されるデータはトランスポート層より下位の層を経て、トランスポート層に入力されるが、制御部10が入力するデータセグメントDsegは下位の層を経ているものとする。同様に、制御部10が出力する確認応答セグメントAckSは、下位の層を経て、サーバ7に送信されるものとする。
制御部10の構成例を図6に示す。制御部10はセグメント受信部110、確認応答生成部120及びセグメント送信部130を備える。セグメント受信部110は、データセグメントDsegを入力し、TCPで通常実行されているエラー確認等のデータ入力処理を行った後、データセグメントDsegを確認応答生成部120に出力すると共に、セグメント管理部20に出力する。確認応答生成部120は、データセグメントDsegの情報から、従来のTCPと同様の手順により確認応答セグメントAckSを生成し、セグメント送信部130に出力する。セグメント送信部130は、確認応答セグメントAckSを下位の層へ出力するための処理を行った後、出力する。
セグメント管理部20は、制御部10から出力されるデータセグメントDsegを入力し、記憶部40に格納する。上述のように、記憶部40には、通信セッション毎にセッション別記憶バッファが設けられているので、データセグメントDseg中の宛先ポート番号を基に通信セッションを特定し、対応するセッション別記憶部バッファにデータセグメントDsegを格納する。
記憶部40に記憶されているデータセグメントDsegは、後述の制御部30からのセグメント要求Rsに従って、セグメント管理部20を経由して制御部30に入力される。セグメント管理部20は、セグメント要求Rsを基に、要求されている通信セッションとシーケンス番号に対応するデータセグメントDsegを記憶部40から読み込み、制御部30に出力する。ただ、セッション別記憶バッファに最初に格納されるデータセグメントDsegに関しては、記憶部40に格納された時点で、制御部30に出力する。
セグメント管理部20は、後述の制御部30からの消去指令Cdに従った処理も行う。消去指令Cdを基に、消去すべき通信セッションとシーケンス番号を確認し、対応するデータセグメントDsegを記憶部40から消去する。
制御部30は、セグメント管理部20から出力されるデータセグメントDsegを入力し、受信端末4Aに送信する。また、受信端末4Aから送信される確認応答セグメントAckRを入力し、確認応答セグメントAckRの情報を基に、セグメント要求Rs及び消去指令Cdを生成し、セグメント管理部20に出力する。制御部30では、数5に基づいた輻輳制御が行われる。なお、制御部10と同様に、制御部30に入力される確認応答セグメントAckRは下位の層を経ているものとし、出力されるデータセグメントDsegは下位の層を経て送信されるものとする。
制御部30の構成例を図7に示す。制御部30はセグメント受信部310、輻輳制御部320及びセグメント送信部330を備える。
セグメント受信部310は、確認応答セグメントAckRを入力し、確認応答セグメントAckRに対して、セグメント受信部110と同様に、TCPで通常実行されているエラー確認等のデータ入力処理を行った後、輻輳制御部320に出力する。
輻輳制御部320は、数5に基づいた輻輳制御を行う。輻輳制御はスロースタート、輻輳回避及び輻輳検知の段階があり、さらに、輻輳検知には三重複応答による輻輳検知と再送タイムアウトによる輻輳検知がある。三重複応答による輻輳検知では、シーケンス番号が同じ確認応答セグメントAckRを3回連続で受信端末4Aから受信した場合、輻輳検知と判定する。再送タイムアウトによる輻輳検知では、データセグメントDsegを受信端末4Aに送信後、所定の時間が経ってもそのデータセグメントDsegに対する確認応答セグメントAckRを受信しない場合、輻輳検知と判定する。これらの輻輳検知のタイミング以外がスロースタート又は輻輳回避の段階であり、スロースタートと輻輳回避の区別は、輻輳ウインドウCWNDとスロースタート閾値ssthreshとの比較により行われる。即ち、輻輳ウインドウCWNDがスロースタート閾値ssthreshより小さい場合はスロースタートの段階であり、そうでない場合は輻輳回避の段階である。
スロースタートにおいては、下記数8に従って輻輳ウインドウCWNDを更新し、輻輳回避においては、下記数9に従って輻輳ウインドウCWNDを更新する。
更新後、受信端末4Aに送信すべきデータセグメントDsegの通信セッションとシーケンス番号を確認応答セグメントAckRから特定し、セグメント要求Rsとしてセグメント管理部20に出力する。なお、複数のデータセグメントDsegの要求に対して、1つのセグメント要求Rsを出力するようにしても良い。
三重複応答による輻輳検知の場合は、前記数3に従って、スロースタート閾値ssthresh及び輻輳ウインドウCWNDを変更し、再送タイムアウトによる輻輳検知の場合は、前記数4に従って、スロースタート閾値ssthresh及び輻輳ウインドウCWNDを変更する。この際に使用する帯域推測値SBWEk及び利用可能帯域BWEkは、確認応答セグメントAckRを入力する度に、前記数5及び数2に従って、最新の値にしておく。帯域推測値SBWEkの算出に使用する往復遅延時間の最小値RTTminは、制御部30がデータセグメントDsegを送信してから、それに対する確認応答セグメントAckRを受信するまでの時間を往復遅延時間として算出し、算出された往復遅延時間をその時点での最小値と比較することにより、更新していく。利用可能帯域BWEkの算出に使用する定数αは、TCP Westwood+の推奨値である0.9とする。スロースタート閾値ssthresh及び輻輳ウインドウCWNDの変更後は、受信端末4Aに再送すべきデータセグメントDsegの通信セッション及びシーケンス番号をセグメント要求Rsとしてセグメント管理部20に出力する。
データセグメントDsegが正常に受信端末4Aに送信された場合、記憶部40に記憶されている当該のデータセグメントDsegは不要となるから、輻輳制御部320からセグメント管理部20に消去指令Cdを出力し、当該のデータセグメントDsegを記憶部40から消去するようにする。データセグメントDsegが正常に送信されたかは、スロースタート及び輻輳回避の段階において、確認応答セグメントAckR中のシーケンス番号を用いて、従来のTCPの場合と同様に、入力した確認応答セグメントAckRが次のデータセグメントの送信を要求する確認応答セグメントであるかで判定する。消去すべきデータセグメントDsegの通信セッション及びシーケンス番号を消去指令Cdとして出力し、セグメント管理部20は、消去指令Cdより消去すべきデータセグメントDsegを特定し、記憶部40から消去する。なお、複数のデータセグメントDsegの消去に対して、1つの消去指令Cdを出力するようにしても良い。
セグメント要求Rsによりセグメント管理部20から出力されるデータセグメントDsegを輻輳制御部320が入力したら、セグメント送信部330に出力する。ただ、セッション別記憶バッファに最初に格納されるデータセグメントDsegに関しては、確認応答セグメントAckRに基づいたセグメント要求Rsを生成することができないので、データセグメントDsegが記憶部40に格納された時点でセグメント管理部20から輻輳制御部320にデータセグメントDsegが入力され、それをセグメント送信部330に出力する。
セグメント送信部330は、データセグメントDsegに対して、セグメント送信部130と同様に、下位の層へ出力するための処理を行った後、出力する。
なお、受信端末4Aへのデータセグメント送信に当たっては、受信端末4Aが備えるバッファに基づいて設定されるウインドウサイズによるフロー制御も実行されるが、本実施形態では、輻輳ウインドウに比べてウインドウサイズは常に大きく、データセグメント送信は輻輳制御にのみ依存して実行されるものとする。
以上の構成において、確認応答セグメントAckRを入力してからの制御部30の動作例を、図8及び図9のフローチャートを参照して説明する。
制御部30が確認応答セグメントAckRを入力したら(ステップS10)、確認応答セグメントAckRはセグメント受信部310に入力される。セグメント受信部310は、確認応答セグメントAckRに対してデータ入力処理を行い(ステップS20)、輻輳制御部320に出力する。
輻輳制御部320は、確認応答セグメントAckRの情報を基に往復遅延時間を算出し、算出された往復遅延時間が往復遅延時間の最小値RTTminより小さい場合は、算出された往復遅延時間をRTTminとし、そうでなければ、RTTminはそのままとする(ステップS30)。そして、往復遅延時間の最小値RTTminを用いて、数5及び数2より帯域推測値SBWEk及び利用可能帯域BWEkを算出する(ステップS40)。
次に、輻輳制御部320は、確認応答セグメントAckR中のシーケンス番号を確認し、3回連続同じシーケンス番号である三重複応答であるか確認し(ステップS50)、確認結果が三重複応答ではない場合、輻輳ウインドウCWNDとスロースタート閾値ssthreshとを比較する(ステップS60)。輻輳ウインドウCWNDがスロースタート閾値ssthreshより小さい場合、スロースタートの段階と判定し、数8により輻輳ウインドウCWNDを更新し(ステップS70)、輻輳ウインドウCWNDがスロースタート閾値ssthresh以上の場合は、輻輳回避の段階と判定し、数9により輻輳ウインドウCWNDを更新する(ステップS80)。そして、確認応答セグメントAckRが次のデータセグメントの送信を要求する確認応答セグメントであるか確認し(ステップS90)、次のデータセグメント送信要求の場合、送信すべきデータセグメントDsegの通信セッションとシーケンス番号を確認応答セグメントAckRから特定し、セグメント要求Rsとしてセグメント管理部20に出力する(ステップS100)。さらに、確認応答セグメントAckRが次のデータセグメント送信要求であることによって正常に送信されたことが確認されたデータセグメントDsegを記憶部40から消去するために、当該データセグメントDsegの通信セッション及びシーケンス番号を消去指令Cdとしてセグメント管理部20に出力する(ステップS110)。確認応答セグメントAckRが次のデータセグメント送信要求ではない場合、リターンとなる。なお、ステップS100とステップS110の順番は逆でも良い。
ステップS50において、確認結果が三重複応答の場合は、輻輳検知と判定し、ステップS40で算出した帯域推測値SBWEk及び利用可能帯域BWEkを用いて、数3よりスロースタート閾値ssthresh及び輻輳ウインドウCWNDを変更する(ステップS120)。そして、確認応答セグメントAckRの情報より、再送すべきデータセグメントDsegを特定し、当該データセグメントDsegの通信セッション及びシーケンス番号をセグメント要求Rsとしてセグメント管理部20に出力する(ステップS130)。
セグメント要求Rsに応じて、セグメント管理部20からデータセグメントDsegが出力され、輻輳制御部320がデータセグメントDsegを入力したら(ステップS140)、そのデータセグメントDsegをセグメント送信部330に出力する。
セグメント送信部330は、入力したデータセグメントDsegに対して、下位の層へ出力するための処理を行い、出力する(ステップS150)。出力の際、出力したデータセグメントDsegに対する再送タイマをスタートさせる(ステップS160)。
以上の動作が、確認応答セグメントAckRが入力される度に実行される。
再送タイムアウトによる輻輳検知での再送処理は、再送タイマからの割込みにより実行される。即ち、再送タイマが、設定された時間を越えてタイムアウトとなったら、割込みが発生し、再送タイムアウトによる輻輳検知として、ステップS40で算出した帯域推測値SBWEk及び利用可能帯域BWEkを用いて、数4よりスロースタート閾値ssthresh及び輻輳ウインドウCWNDを変更する(ステップS200)。その後、三重複応答による輻輳検知の場合と同様に、確認応答セグメントAckRの情報より、再送すべきデータセグメントDsegを特定し、当該データセグメントDsegの通信セッション及びシーケンス番号をセグメント要求Rsとしてセグメント管理部20に出力する(ステップS210)。そして、ステップS140〜S160と同じ動作により、データセグメントDsegを出力し、再送タイマをスタートさせる(ステップS220〜S240)。
なお、再送タイムアウトによる輻輳検知での再送処理は、割込みによる処理ではなく、再送タイマの適宜チェックによる処理等で実行しても良い。また、本再送処理でのステップS220〜S240を本再送処理では実行せず、ステップS140〜S160の実行で兼用しても良い。
上記の説明は、非適用ネットワークから適用ネットワークにデータセグメントを送信する場合の構成及び動作についての説明だが、逆方向、即ち、適用ネットワークから非適用ネットワークへのデータセグメントの送信も本実施形態で可能である。この場合も中継装置5を介してデータセグメントが送信されるが、受信端末4Aから中継装置5へのデータセグメント送信及び中継装置5からサーバ7へのデータセグメント送信では、共に従来のTCPによる輻輳制御が行われ、制御部30が制御部10と同様な動作を行う。この場合、セグメント受信部110、確認応答生成部120及びセグメント送信部130と同等な構成要素を制御部30にそれぞれ備えさせても良いし、セグメント受信部310、輻輳制御部320及びセグメント送信部330が、それぞれセグメント受信部110、確認応答生成部120及びセグメント送信部130の機能を兼ねるようにしても良い。制御部10は、制御部30と同様な動作を行うが、輻輳制御は従来のTCPにより行われる。この場合も、セグメント受信部310、輻輳制御部320(但し、従来のTCPによる輻輳制御を実行)及びセグメント送信部330と同等な構成要素を制御部10にそれぞれ備えさせても良いし、セグメント受信部110、確認応答生成部120及びセグメント送信部130が、それぞれセグメント受信部310、輻輳制御部320及びセグメント送信部330の機能を兼ねるようにしても良い。なお、記憶部については、記憶部40とは別の記憶部を備えるか、記憶部40に別の領域を設けるかして、記憶するデータセグメントを区別するようにする。
ここで、第1実施形態の効果を、従来のTCP Westwood+による輻輳制御と比較することにより説明する。
図10は、従来のTCP Westwood+による輻輳制御での輻輳ウインドウCWNDの変化と、第1実施形態による輻輳制御での輻輳ウインドウCWNDの変化を示す図である。図10(A)が従来のTCP Westwood+の場合で、図10(B)が第1実施形態の場合で、縦軸が輻輳ウインドウCWND、横軸が時間である。実線が輻輳ウインドウCWNDの変化を、太い点線がスロースタート閾値ssthreshの変化を表わしており、BWEk×RTTminの値を破線で示している。図10において、三重複応答により輻輳制御が実行された時点(時点t1)から、再送タイムアウトとなる輻輳ウインドウCWNDの値が同じであるとして、図10(A)及び(B)においてそれぞれ時点t2及びt3で再送タイムアウトとなったとする。図10からわかるように、図10(B)の第1実施形態の場合、BWEk×RTTminの値が小さく変動も少ない安定的な通信ができており、再送タイムアウトとなるまでの時間が相対的に長くなり、輻輳制御が実行された時点t1から再送タイムアウトの時点までの送信量(グレーとなっている三角形の領域)も相対的に多くなっており、輻輳検知の回数を減らすことが可能となっている。また、再送タイムアウトとなった後、輻輳回避の段階(輻輳ウインドウCWNDがスロースタート閾値ssthresh以上になる段階)までの移行時間が、図10(B)の方が短いことがわかる。これにより、急激な送信レートの増加を抑え、セグメント損失を抑えることができる。
本発明の他の実施形態について説明する。
第1実施形態のように無線アクセスポイントを経由した通信では、図2に示されるように、通信データ量に関係なくランダムな遅延ジッタが生じるため、数5のように往復遅延時間の最小値RTTminを1つのセグメントを送信するための時間と見做す方法は、受信端末が多い場合はランダムな遅延ジッタの影響を抑制できるので、有効である。しかし、受信端末が1台等、極端に少ない場合は、従来のTCP Westwood+での輻輳制御が有効に働く。そこで、中継装置での中継処理を開始する時点において受信端末の数又は通信セッションの数を検知し、検知された受信端末数(以下、「検知端末数」とする)又は通信セッション数(以下、「検知セッション数」とする)が所定の値(閾値)以上の場合のみ数5を用いた輻輳制御を行うようにする。つまり、検知端末数が受信端末用の閾値(以下、「端末閾値」とする)以上又は検知セッション数が通信セッション用の閾値(以下、「セッション閾値」とする)以上の場合、数5を用いて帯域推測値SBWEkを算出し、それ以外の場合(検知端末数が端末閾値より大きく、且つ検知セッション数がセッション閾値より大きい場合)、従来のTCP Westwood+で使用している数1を用いて帯域推測値SBWEkを算出する。
本実施形態(第2実施形態)の中継装置の構成例を図11に示す。図5に示される第1実施形態の構成例と比べると、制御部30が制御部50となっている。他の構成要素は第1実施形態の構成例と同じであるから、説明は省略する。
制御部50の構成例を図12に示す。図7に示される第1実施形態での制御部30の構成例と比べると、閾値設定部540及び対象検知部550が追加され、輻輳制御部320が輻輳制御部520となっている。他の構成要素は第1実施形態での制御部30の構成例と同じであるから、説明は省略する。
閾値設定部540は、使用する無線アクセスポイントや使用目的、設置環境等に基づいて設定される端末閾値Tht及びセッション閾値Thsを輻輳制御部520に出力する。
対象検知部550は、制御部50が中継処理を開始した時点において、適用ネットワーク(本実施形態では無線ネットワーク)内の受信端末数及び通信セッション数を検知し、検知端末数Nt及び検知セッション数Nsとして輻輳制御部520に出力する。
輻輳制御部520は、基本的な機能は輻輳制御部320と同じであるが、帯域推測値SBWEkの算出式を、検知端末数Ntと端末閾値Thtとの比較及び検知セッション数Nsとセッション閾値Thsとの比較に基づいて変える。具体的には、検知端末数Ntが端末閾値Tht以上の場合、又は検知セッション数Nsがセッション閾値Ths以上の場合、数5を用いて帯域推測値SBWEkを算出し、それ以外の場合、数1を用いて帯域推測値SBWEkを算出する。
第2実施形態での確認応答セグメントAckRを受信してからの制御部50の動作は、図8及び図9に示されている第1実施形態での動作例でのステップS40の「帯域推測値、利用可能帯域算出」の動作が異なるのみで、他の動作は第1実施形態での動作例と同じである。その異なる箇所の動作例を、図13のフローチャートを参照して説明する。なお、端末閾値Tht及びセッション閾値Thsは閾値設定部540にて既に設定されており、検知端末数Nt及び検知セッション数Nsは対象検知部550にて既に検知されているものとする。
輻輳制御部520は、往復遅延時間の最小値RTTmin算出(図8のステップS30)後、確認応答セグメントAckRに含まれる確認応答の数ASを確認する(ステップS410)。次に、閾値設定部540より端末閾値Tht及びセッション閾値Thsを入力し(ステップS420)、対象検知部550より検知端末数Nt及び検知セッション数Nsを入力する(ステップS430)。そして、検知端末数Ntと端末閾値Thtとの比較及び検知セッション数Nsとセッション閾値Thsとの比較を行い(ステップS440)、検知端末数Ntが端末閾値Tht以上又は検知セッション数Nsがセッション閾値Ths以上の場合、数5より帯域推測値SBWEkを算出し(ステップS450)、それ以外の場合、ステップS30において算出した往復遅延時間RTTk及びステップS410で確認した確認応答の数ASを用いて、数1より帯域推測値SBWEkを算出する(ステップS460)。帯域推測値SBWEk算出後、数2より利用可能帯域BWEkを算出する(ステップS470)。
なお、帯域推測値SBWEkの算出式を切り替える条件を、検知端末数Ntが端末閾値Tht以上且つ検知セッション数Nsがセッション閾値Ths以上の場合としても良い。また、検知端末数Nt及び端末閾値Thtのみを使用しての切り替え、又は検知セッション数Ns及びセッション閾値Thsのみを使用しての切り替えとしても良い。
上述の実施形態(第1実施形態、第2実施形態)でのネットワーク環境において高遅延での通信が発生する可能性がある場合、TCPの基本性能を向上するために、上述の実施形態に対して、RFC3390で定義されている「大容量初期ウインドウ」、RFC1323で定義されている「ウインドウ・スケーリング・オプション」、RFC2018で定義されている「SACK(Selective Acknowledgement)」等を適用しても良い。これにより、中継装置の性能向上及び本実施形態との相乗効果が図れる。また、上述の実施形態では、適用ネットワーク及び非適用ネットワークはそれぞれ1つを想定しているが、それぞれ複数存在しても良い。その場合、制御部はネットワーク毎に用意される。
上述の実施形態での記憶部を除いた各構成要素の処理をプログラムで実現し、コンピュータと記憶装置の構成で上述の実施形態を実現することも可能である。
なお、本発明は上記形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々の変形が可能である。
本発明は、複数のネットワーク間の通信を中継し、前記ネットワーク毎に通信を制御する制御部を備え、前記制御部を介して前記ネットワーク間の通信を行う中継装置に関し、本発明の上記目的は、前記制御部として、セグメントサイズに応じた所定のサイズ及び往復遅延時間の最小値を用いた帯域推測値の推測を行い、前記帯域推測値に基づいて算出されるスロースタート閾値を用いて輻輳制御を行う制御部1を少なくとも1つ備えることにより達成される。
本発明の上記目的は、前記制御部1は、通信量以外の要因による前記往復遅延時間の変動が大きいネットワークでの通信を制御することにより、或いは前記制御部1は、無線ネットワークでの通信を制御することにより、或いは送信端末から受信したセグメントを記憶する記憶部を前記制御部毎にさらに備え、前記制御部間での前記セグメントの入出力は前記記憶部を介して行うことにより、前記各制御部は独立して制御を行うことができることにより、或いは前記各制御部は、前記送信端末から受信したセグメントが受信端末に受信されたことを確認した場合、前記確認したセグメントを前記記憶部から消去し、前記送信端末から受信したセグメントの再送を前記受信端末に対して行う場合、前記記憶部に記憶されたセグメントを再送することにより、或いは前記制御部1は、前記セグメントサイズを前記往復遅延時間の最小値で除算することにより前記帯域推測値の推測を行うことにより、或いは前記制御部1は、前記制御部1が通信を制御するネットワーク内の受信端末の数及び通信セッションの数の少なくとも1つの数が所定の値以上の場合、前記往復遅延時間の最小値を用いた帯域推測値の推測を行うことにより、より効果的に達成される。
また、本発明は、複数のネットワーク間の通信を中継し、前記ネットワーク毎に通信を制御する制御ステップを有し、前記制御ステップにおいて前記ネットワーク間の通信のための処理を行う中継方法に関し、本発明の上記目的は、前記制御ステップとして、セグメントサイズに応じた所定のサイズ及び往復遅延時間の最小値を用いた帯域推測値の推測を行い、前記帯域推測値に基づいて算出されるスロースタート閾値を用いて輻輳制御を行う制御ステップ1を少なくとも1つ有することにより達成される。
第1実施形態のように無線アクセスポイントを経由した通信では、図2に示されるように、通信データ量に関係なくランダムな遅延ジッタが生じるため、数5のように往復遅延時間の最小値RTTminを1つのセグメントを送信するための時間と見做す方法は、受信端末が多い場合はランダムな遅延ジッタの影響を抑制できるので、有効である。しかし、受信端末が1台等、極端に少ない場合は、従来のTCP Westwood+での輻輳制御が有効に働く。そこで、中継装置での中継処理を開始する時点において受信端末の数又は通信セッションの数を検知し、検知された受信端末数(以下、「検知端末数」とする)又は通信セッション数(以下、「検知セッション数」とする)が所定の値(閾値)以上の場合のみ数5を用いた輻輳制御を行うようにする。つまり、検知端末数が受信端末用の閾値(以下、「端末閾値」とする)以上又は検知セッション数が通信セッション用の閾値(以下、「セッション閾値」とする)以上の場合、数5を用いて帯域推測値SBWEkを算出し、それ以外の場合(検知端末数が端末閾値より小さく、且つ検知セッション数がセッション閾値より小さい場合)、従来のTCP Westwood+で使用している数1を用いて帯域推測値SBWEkを算出する。