説明

輻輳制御装置及び輻輳制御方法

【課題】効果を安定的・効率的に生じさせることができると共に、通信速度が大きく低下するフロー数を常に最小限にすることができる輻輳制御装置及び輻輳制御方法を提供する。
【解決手段】この輻輳制御装置1は、ウィンドウサイズ分のパケット群の中で、先頭のパケットに現時点のウィンドウサイズを情報として付加するウィンドウサイズ付加手段7と、先頭パケットに付加されたウィンドウサイズの情報を検出するウィンドウサイズ情報検出手段3と、ウィンドウサイズ情報検出手段3により検出されたウィンドウサイズ情報の中から最大のウィンドウサイズを含むフローを選択するフロー選択手段4と、フロー選択手段4により選択されたフローの先頭パケットを除く他のパケットを廃棄するパケット廃棄手段6と、各手段を制御する制御部(制御手段)5と、を備え、輻輳制御装置1は、インターフェース2を介してネットワーク8によりエッジノード9と接続されている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、輻輳制御装置及び輻輳制御方法に関し、さらに詳しくは、TCP同期現象を効率的に回避する輻輳制御装置及び輻輳制御方法に関するものである。
【背景技術】
【0002】
近年、低コストのTCP/IPに基づく汎用通信機器は、インターネットのみならず、企業内の閉域ネットワークへも適用が進んでいる。そして、ネットワークに様々なアプリケーションが取り込まれるに従って、輻輳への対策はますます重要となってきている。輻輳防止のための基本的な対策は、輻輳を発生させないように、ネットワーク設備の増強を行うことであるが、経済的な理由から増強の時期を遅らせざるを得ない場合、あるいは冗長化・負担分散化された通信経路で障害が発生した場合等には、トラフィックの集中するノードで輻輳が発生する可能性が高い。このため、輻輳の発生時においても、効率的に輻輳制御を行えるような対策を行う必要がある。
そこで、大部分のアプリケーションで転送用プロトコルとして用いられているTCPは、設備容量内にトラフィックを抑制するために、通信速度を抑制する輻輳制御の機能を備えている。即ち、通信経路内のノードにおいて輻輳が発生してパケットが廃棄された場合、送信元のTCPがそれを検出し、一度に送信できるパケット数を決めるウィンドウサイズを減少させることにより、ネットワークへのパケット送出速度を抑制して輻輳を解消するものである。
【0003】
一方、ルータやスイッチの多くは、バッファにおいてTail Drop方式を採用している。Tail Drop方式では、到着順にパケットをバッファに蓄積するが、輻輳によりバッファが一杯になった場合は、到着するパケットを廃棄する。このとき、到着するパケットを無作為に廃棄するため、複数のフローにわたってパケットがほぼ連続的に廃棄される(ここで、フローとは、送信側と受信側を1対1でつないでいる通信コネクションのことをいう)。そのため、複数のフローで同時にTCPの輻輳制御機能が働き、そろってウィンドウサイズを半分(もしくは1パケット)まで減少させることから、一時的に通信効率が大きく低下する。また、この状態から、一斉にウィンドウサイズを増加させることとなるが、このときバッファ内のパケット量が減少しており、これに伴い、RTT(Round Trip Time)も低下していることから、ウィンドウサイズの増加は急激となる。このため、再び輻輳に陥り、パケット廃棄が発生する。この現象はTCP同期と呼ばれ、通信効率の低下を招くという問題がある。
【0004】
このようなTCP同期を解決する方法として特許文献1には、輻輳の発生により、バッファに到達するパケットを廃棄しなければならなくなったとき、無作為な廃棄ではなく、例えば、フローA、Bのパケットのみを集中的に廃棄する(フローはパケットヘッダ情報より識別できる)。なお、廃棄するフローの選択基準は、ちょうど到達したパケットのフロー、或いは、到着レートの大きなフロー、ランダムなフローとする等である。これにより、フローC、Dのパケットがバッファに入り、そのままバッファを通過する。
フローA、Bはパケットが廃棄された後、そろってウィンドウサイズを減少させるため、これらは速度が低下するものの、それを埋め合わせるように、フローC、Dは速度を増加させるので、全体として通信効率の低下は起こらない。また、フローA、Bはその後、そろってウィンドウサイズを増加させることとなるが、このときバッファ内のパケット量は減少しておらず、RTTも低下していないため、ウィンドウサイズの増加は緩やかになる。加えて、そろって増加するフロー数も少ないため、再び輻輳に陥ることは無い。このため、TCP同期が発生せず、通信効率の低下が回避できる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−146013号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、特許文献1に開示されている従来技術にも課題がある。即ち、従来の方法は、特定のフローにパケット廃棄を集中させることで、その他のフローがパケット廃棄されずに済むようになり、TCP同期の回避という効果を生むというものであり、そのため、パケット廃棄するフロー数を最小限とし、パケット廃棄しないフロー数を最大限とすることが、効果を安定的、効率的に生じさせるために必要である。このことは、パケット廃棄するフローについては、RTO(Retransmission Time Out)の動作となり、通信速度が大きく低下してしまうという観点からも必要であるが、このような機能を持っていない。そのため、その時々で効果がばらついて安定せず、効果が低いときには、通信速度が大きく低下してフローも無駄に多く発生してしまうという課題があった。
本発明は、かかる課題に鑑みてなされたものであり、送信側のTCPにおいて、ウィンドウサイズ分のパケット群の中で、先頭パケットに、現時点のウィンドウサイズを情報として付加して、輻輳中のノードでは、先頭パケットに付加されたウィンドウサイズの情報を検出して、この情報を用いて、ウィンドウサイズ分のパケット群のうち、なるべく先頭に近いパケットを含むフローを選択して、このフローのパケットを連続的に廃棄することにより、効果を安定的・効率的に生じさせることができると共に、通信速度が大きく低下するフロー数を常に最小限にすることができる輻輳制御装置及び輻輳制御方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明はかかる課題を解決するために、請求項1は、TCP同期現象を回避する輻輳制御装置であって、ウィンドウサイズ分のパケット群の中で、先頭のパケットに現時点のウィンドウサイズを情報として付加するウィンドウサイズ付加手段と、前記先頭パケットに付加されたウィンドウサイズの情報を検出するウィンドウサイズ情報検出手段と、該ウィンドウサイズ情報検出手段により検出されたウィンドウサイズ情報を用いて、ウィンドウサイズ分のパケット群のうち、なるべく先頭に近いパケットを含むフローを選択するフロー選択手段と、該フロー選択手段により選択されたフローのパケットを連続的に廃棄するパケット廃棄手段と、前記各手段を制御する制御手段と、を備えたことを特徴とする。
TCPでは、送信側が、受信側からの確認応答パケットの返信を待たずに、一度に送付するパケット数は、ウィンドウサイズ分だけである。そのため、一つのフローにつき、廃棄されるパケット数は、最大でもウィンドウサイズ分である。この廃棄されるパケット数は、到達するウィンドウサイズ分のパケット群の中のどの位置から廃棄を開始するかによって異なってくる。すなわち、パケット群の最初の方であれば、最大でウィンドウサイズ分のパケット数が廃棄されるが、パケット群の最後の方であれば、最小で1パケットとなる。即ち、一つのフローにつき、最大限のパケット数を廃棄するためには、到達するウィンドウサイズ分のパケット群の中で、なるべく最初の方のパケットから廃棄する必要がある。そこで本発明では、送信側のTCPにおいて、ウィンドウサイズ分のパケット群の中で、先頭パケットに、現時点のウィンドウサイズを情報として付加して、輻輳中のノードでは、先頭パケットに付加されたウィンドウサイズの情報を検出して、この情報を用いて、ウィンドウサイズ分のパケット群のうち、なるべく先頭に近いパケットを含むフローを選択して、このフローのパケットを連続的に廃棄する。これにより、パケット廃棄するフロー数を最小限とし、パケット廃棄しないフロー数を最大限とすることができる。
【0008】
請求項2は、前記制御手段は、送信側のTCPで前記ウィンドウサイズの情報を付加することができない場合、エッジノードにて前記送信側に対しては擬似ACKを返信し、受信側に対しては新たなTCPを張り直すようにした上で、新たに張り直すTCPにおいて先頭パケットに該ウィンドウサイズの情報を付加することを特徴とする。
様々な都合により、送信側のTCPでウィンドウサイズの情報を付加することができない場合がある。そのような場合、新たに張り直すTCPにおいて先頭パケットにウィンドウサイズの情報を付加する。これにより、送信側のTCPでウィンドウサイズの情報を付加することができない場合でも、新たなTCPでウィンドウサイズの情報を付加することができる。
【0009】
請求項3は、前記制御手段は、前記ウィンドウサイズ情報検出手段によりウィンドウサイズの情報を検出したことを認識すると、該ウィンドウサイズの情報を消去することを特徴とする。
輻輳中のノードでは、先頭パケットに付加されたウィンドウサイズ情報を検出するが、そのウィンドウサイズ情報を付加したまま送信すると、受信側で不具合が出ないとも限らない。そこで本発明では、検出した後は消去することで、受信側に何ら影響を与えないようにする。
【0010】
請求項4は、ウィンドウサイズ付加手段、ウィンドウサイズ情報検出手段、フロー選択手段、パケット廃棄手段、及び制御手段を備えた輻輳制御装置の輻輳制御方法であって、前記ウィンドウサイズ付加手段が、ウィンドウサイズ分のパケット群の中で、先頭のパケットに現時点のウィンドウサイズを情報として付加するステップと、前記ウィンドウサイズ情報検出手段が、前記先頭パケットに付加されたウィンドウサイズの情報を検出するステップと、前記フロー選択手段が、前記ウィンドウサイズ情報検出手段により解析されたウィンドウサイズの情報の中から最大のウィンドウサイズを含むフローを選択するステップと、前記パケット廃棄手段が、前記フロー選択手段により選択されたフローの先頭パケット以外のパケットを廃棄するステップと、前記制御手段が、前記各手段を制御するステップと、を備えたことを特徴とする。
請求項1と同様の作用効果を奏する。
【発明の効果】
【0011】
本発明によれば、効果を安定的・効率的に生じさせることができると共に、通信速度が大きく低下するフロー数を常に最小限にすることができる。
また、送信側・受信側のTCPには何ら変更を加えず、ネットワーク中のノードの機能だけで対処することができるため、運用面や経済面における様々な現実的事情により、送信側・受信側のTCPを変更できない場合にも適用でき、実導入面で有利である。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態に係る輻輳制御装置の機能を示すブロック図である。
【図2】ネットワーク図の一例を示す図である。
【図3】(a)は従来方法によるパケット廃棄を説明する図、(b)は本発明によるパケット廃棄を説明する図である。
【発明を実施するための形態】
【0013】
以下、本発明を図に示した実施形態を用いて詳細に説明する。但し、この実施形態に記載される構成要素、種類、組み合わせ、形状、その相対配置などは特定的な記載がない限り、この発明の範囲をそれのみに限定する主旨ではなく単なる説明例に過ぎない。
【0014】
図1は本発明の一実施形態に係る輻輳制御装置の機能を示すブロック図である。この輻輳制御装置1は、ウィンドウサイズ分のパケット群の中で、先頭のパケットに現時点のウィンドウサイズを情報として付加するウィンドウサイズ付加手段7と、先頭パケットに付加されたウィンドウサイズの情報を検出するウィンドウサイズ情報検出手段3と、ウィンドウサイズ情報検出手段3により検出されたウィンドウサイズ情報の中から最大のウィンドウサイズを含むフローを選択するフロー選択手段4と、フロー選択手段4により選択されたフローの先頭パケットを除く他のパケットを廃棄するパケット廃棄手段6と、各手段を制御する制御部(制御手段)5と、を備え、輻輳制御装置1は、インターフェース2を介してネットワーク8によりエッジノード9と接続されている。尚、本実施形態の場合は、輻輳制御装置1は輻輳中のコアノード11内に備えられ、エッジノード9にも同様な構成の輻輳制御装置1が備えられている。従って、どこに備えられているかにより、機能する手段と機能しない手段がある。
即ち、TCPでは、送信側が、受信側からの確認応答パケット(以下、ACKという)の返信を待たずに、一度に送付するパケット数は、ウィンドウサイズ分だけである。そのため、一つのフローにつき、廃棄されるパケット数は、最大でもウィンドウサイズ分である。この廃棄されるパケット数は、到達するウィンドウサイズ分のパケット群の中のどの位置から廃棄を開始するかによって異なってくる。すなわち、パケット群の最初の方であれば、最大でウィンドウサイズ分のパケット数が廃棄されるが、パケット群の最後の方であれば、最小で1パケットとなる。即ち、一つのフローにつき、最大限のパケット数を廃棄するためには、到達するウィンドウサイズ分のパケット群の中で、なるべく最初の方のパケットから廃棄する必要がある。そこで本発明では、送信側のTCPにおいて、ウィンドウサイズ分のパケット群の中で、先頭パケットに、現時点のウィンドウサイズを情報として付加して、輻輳中のノードでは、先頭パケットに付加されたウィンドウサイズの情報を検出して、この情報の中から最大のウィンドウサイズを含むフローを選択して、このフローの先頭パケットを除いた全てのパケットを廃棄する。これにより、パケット廃棄するフロー数を最小限とし、パケット廃棄しないフロー数を最大限とすることができる(詳細は図3で説明する)。
【0015】
図2はネットワーク図の一例を示す図である。送信端10の回線を集約しているノードをエッジノード9、それ以外を輻輳中のノード11とする。エッジノード9はネットワーク8中に複数存在する。エッジノード9は、送信端10からパケットを受け取ると、すぐに確認応答(ACK)パケットを送信端10に返信する。一方、エッジノード9が受け取ったパケットは、輻輳中のノード11へ送られ、図示しない受信端へ到着すると、受信端から確認応答(ACK)パケットを受け取る。つまり、エッジノード9でTCPコネクションが張りなおされる形となる。このとき、エッジノード9から見て、送信端10側のネットワークはRTT(Round Trip Time)が小さいので通信速度は速く、逆に輻輳中のノード11側のネットワークはRTTが大きいので通信速度は遅い。そのため、この速度差によってエッジノード9のバッファには自然にパケットが蓄積される。これは、送信端10が持っていた送信データがエッジノード9のバッファに引っ張り出されるイメージとなる。このような原理上、バッファにパケットが蓄積されていても、通信遅延は発生していない。また、このバッファは、TCPコネクションで繋がったパケットを蓄積するものではないので、たとえ保持時間が長い場合でも、タイムアウトでTCPが切断されることはない。
【0016】
図3は本発明の輻輳制御装置の動作を説明するために、従来方法との比較で例示した図である。図3(a)は従来方法によるパケット廃棄を説明する図、図3(b)は本発明によるパケット廃棄を説明する図である。
特定のフローにパケット廃棄を集中させることで、その他のフローがパケット廃棄されずに済むようになり、TCP同期の回避という効果を生むというものである。そのため、パケット廃棄するフロー数を最小限とし、パケット廃棄しないフロー数を最大限とすることが、効果を安定的、効率的に生じさせるために必要である。このことは、パケット廃棄するフローについては、RTO(Retransmission Time Out)の動作となり、通信速度が大きく低下してしまうという観点からも必要である(RTOとは、ウィンドウサイズ内で複数のパケット廃棄が発生した場合に、輻輳の度合いが大きいと判断し、送信側にて数秒間待ってからウィンドウサイズを1パケットまで減少させて再送を開始するというTCPの動作である)。しかし、従来の方法は、このような機能を持っていない。そのため、その時々で効果がばらついて安定せず、効果が低いときには、通信速度が大きく低下するフローも無駄に多く発生してしまうという課題があった。
【0017】
図3(a)を用いて更に詳細に説明すると、フローA〜Dごとに所定のウィンドウサイズでパケットが到着した場合について説明する。図の右側が輻輳中のノードへのパケット到着順が先で、左側が後である。ここで廃棄パケット数が2の場合について説明する。ウィンドウサイズがP1−1〜P1−5のパケット群では、P1−1〜P1−3がフローAであり、P1−4〜P1−5までがフローBである。同じく、ウィンドウサイズがP2−1〜P2−12のパケット群では、P2−1〜P2−6がフローBであり、P2−7〜P2−12までがフローCである。同じく、ウィンドウサイズがP3−1〜P3−2のパケット群では、P3−1〜P3−2がフローCである。同じく、ウィンドウサイズがP4−1〜P4−8のパケット群では、P4−1〜P4−8がフローDである。ここで、パケットP1−1、P2−1、P3−1、P4−1がウィンドウサイズの最初のパケットとすると、パケットP1−1、P2−1、P3−1、P4−1には何ら情報が付加されておらず、ノードで識別することができない。その結果、フローAのパケットP1−2、P1−3、及びフローBのP2−2〜P2−6までが廃棄パケットとなると、廃棄パケット数が7で、廃棄フロー数は2となる。
それに対して本発明では、一つのフローにつき、最大限のパケットを廃棄することに取り組む。これにより、最小限のフロー数で、必要な廃棄パケット数を確保することができる。よって、パケット廃棄するフロー数を最小限とし、パケット廃棄しないフロー数を最大限とすることができる。
【0018】
以下、詳細に説明する。
TCP通信では、送信側が受信側からの確認応答パケット(以下、ACKという)の返信を待たずに、一度に送付するパケット数は、ウィンドウサイズ分だけである。そのため、一つのフローにつき、廃棄されるパケット数は、最大でもウィンドウサイズ分である。この廃棄されるパケット数は、到達するウィンドウサイズ分のパケット群の中のどの位置から廃棄を開始するかによって異なってくる。即ち、パケット群の最初の方であれば、最大でウィンドウサイズ分のパケット数が廃棄されるが、パケット群の最後の方であれば、最小で1パケットとなる。
立ち返って、一つのフローにつき、最大限のパケット数を廃棄するためには、到達するウィンドウサイズ分のパケット群の中で、なるべく最初の方のパケットから廃棄する必要がある。しかし、ネットワーク中のノードは、到達したパケットがウィンドウサイズ分のパケット群の中で、どの位置にあるかを判別する機能を持っていない(パケットの順番はシーケンス番号から判別できるものの、ウィンドウサイズの端がどこなのか判別できない)。
【0019】
そこで、送信側のTCPにおいて、ウィンドウサイズ分のパケット群の中で、先頭パケットに、現時点のウィンドウサイズを情報として付加することとする。ここで、現時点のウィンドウサイズとする理由は、ウィンドウサイズはパケット廃棄に伴い、TCPによって決められた最大値を上限として増減するため、その時々で、およびフロー毎で異なるためである。ウィンドウサイズは、パケット数で表してもよいし、バイト数で表してもよいが、ここでは前者として説明する。
この情報を付加するには、例えば、TCPヘッダのウィンドウサイズ・フィールドや、IPヘッダのオプション・フィールドなどを利用すればよい(前者は、通常、ACKで用いられている。つまり、受信側から送信側に対して、現状の受信バッファの空き容量を通知し、スライディング・ウィンドウ方式でパケットを受け取るために用いられている。後者は、通常、使用されていない)。
また、様々な都合により、送信側のTCPで情報を付加することができない場合は、例えば、エッジノード9にて、送信側に対しては疑似ACKを返信し、受信側に対しては新たにTCPを張り直すようにした上で、新たに張り直すTCPで先頭パケットにこの情報を付加すればよい。
【0020】
一方、輻輳中のノード11では、先頭パケットに付加されたウィンドウサイズの情報を検出する。なお、検出した後は消去することで、受信側に何ら影響を与えないようにしてもよい。そして、検出したウィンドウサイズ(ここでは、パケット数で表されている)を初期値とする変数Nをフロー毎に管理テーブルで管理する。変数Nは、次々とそのフローのパケットが到達する度に、1ずつ減じていき、最後の到達パケットで1となるようにする。輻輳中のノードは、この変数Nを管理することにより、現時点での到達パケットがウィンドウサイズ分のパケット群の中で、どの位置にあって、あとどのくらいのパケットが送付されてくるかをフロー毎に知ることができる。
ここで、バッファが一杯になり、パケットを廃棄しなければならなくなったとする。本発明では、到着するパケットから廃棄するのではなく、現時点でバッファに蓄積されているパケットの中から、より変数Nが大きいパケットを含むフローを選択し、廃棄していく。以上により、一つのフローにつき、最大限のパケットを廃棄することができるようになる。この結果、パケット廃棄するフロー数を最小限とし、パケット廃棄しないフロー数を最大限とすることができる。
【0021】
図3(b)を用いて更に詳細に説明すると、フローA〜Dごとに所定のウィンドウサイズでパケットが到着した場合について説明する。図の右側が輻輳中のノードへのパケット到着順が先で、左側が後である。ここで廃棄パケット数が2の場合について説明する。フローとウィンドウサイズの関係は図3(a)と同様であるので説明を省略する。ここで、パケットP1−1、P2−1、P3−1、P4−1がウィンドウサイズの最初のパケットとすると、パケットP1−1、P2−1、P3−1、P4−1にはウィンドウサイズの情報が付加されており、ノードで識別することができる。その結果、フローDのパケットP4−2〜P4−8までが廃棄パケットとなると、廃棄パケット数が7で、廃棄フロー数は1となり、図3と比較して、廃棄パケット数は同じであるが、廃棄フロー数を減少させることができる。
【符号の説明】
【0022】
1 輻輳制御装置、2 インターフェース、3 ウィンドウサイズ情報検出手段、4 フロー選択手段、5 制御部、6 パケット廃棄手段、7 ウィンドウサイズ付加手段、8 ネットワーク、9 エッジノード、10 送信端、11 輻輳中のノード

【特許請求の範囲】
【請求項1】
TCP同期現象を回避する輻輳制御装置であって、
ウィンドウサイズ分のパケット群の中で、先頭のパケットに現時点のウィンドウサイズを情報として付加するウィンドウサイズ付加手段と、
前記先頭パケットに付加されたウィンドウサイズの情報を検出するウィンドウサイズ情報検出手段と、
該ウィンドウサイズ情報検出手段により検出されたウィンドウサイズ情報を用いて、ウィンドウサイズ分のパケット群のうち、なるべく先頭に近いパケットを含むフローを選択するフロー選択手段と、
該フロー選択手段により選択されたフローのパケットを連続的に廃棄するパケット廃棄手段と、
前記各手段を制御する制御手段と、を備えたことを特徴とする輻輳制御装置。
【請求項2】
前記制御手段は、送信側のTCPで前記ウィンドウサイズの情報を付加することができない場合、エッジノードにて前記送信側に対しては擬似ACKを返信し、受信側に対しては新たなTCPを張り直すようにした上で、新たに張り直すTCPにおいて先頭パケットに該ウィンドウサイズの情報を付加することを特徴とする請求項1に記載の輻輳制御装置。
【請求項3】
前記制御手段は、前記ウィンドウサイズ情報検出手段によりウィンドウサイズの情報を検出したことを認識すると、該ウィンドウサイズの情報を消去することを特徴とする請求項1又は2に記載の輻輳制御装置。
【請求項4】
ウィンドウサイズ付加手段、ウィンドウサイズ情報検出手段、フロー選択手段、パケット廃棄手段、及び制御手段を備えた輻輳制御装置の輻輳制御方法であって、
前記ウィンドウサイズ付加手段が、ウィンドウサイズ分のパケット群の中で、先頭のパケットに現時点のウィンドウサイズを情報として付加するステップと、
前記ウィンドウサイズ情報検出手段が、前記先頭パケットに付加されたウィンドウサイズの情報を検出するステップと、
前記フロー選択手段が、前記ウィンドウサイズ情報検出手段により解析されたウィンドウサイズの情報の中から最大のウィンドウサイズを含むフローを選択するステップと、
前記パケット廃棄手段が、前記フロー選択手段により選択されたフローの先頭パケット以外のパケットを廃棄するステップと、
前記制御手段が、前記各手段を制御するステップと、
を備えたことを特徴とする輻輳制御装置の輻輳制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate