説明

エッジノードおよび帯域制御方法

【課題】帯域保証ネットワークでのデータ転送において、ネットワーク内等で発生したパケット廃棄に伴って低下する輻輳ウィンドウサイズを早期に向上させることを可能にしたエッジノードを提供する。
【解決手段】データ送信端末からデータ受信端末へデータ送信される帯域が保証された帯域保証ネットワークにおいてデータ送信端末とデータ受信端末の間に配置されるエッジノードであって、通過する重複ACKの数が閾値を越えると、データ送信端末がサービス対象フローのデータパケットを再送する再送制御モードになったことを認識し、伝送されるデータパケットのシーケンス番号とデータパケットのACKパケットのACK番号とを比較して再送制御モードが終了したか否かを判定するACK分割制御部と、ACK分割制御部が再送制御モードの終了を認識すると、ACKパケットを分割するACK分割部と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、端末間でネットワークを介してデータを送受信する際のフロー制御を行うエッジノードおよび帯域制御方法に関する。
【背景技術】
【0002】
パソコンなどの端末の間ではインターネットなどのコンピュータネットワークを介した通信が行われる。この通信によってファイル等のデータが転送される。この種のデータ転送システムでは、トランスポート層のプロトコルとして、標準的なトランスポートプロトコルであるTCP(Transmission Control Protocol)が用いられることが多い。
【0003】
TCPでは、ウィンドウサイズをパケット廃棄に従って自律的に変化させる帯域制御が行われる。このため、保証された帯域以上のトラヒックがネットワークに流入するのを防ぐためにネットワークの入り口で流入制限を行っている帯域保証ネットワークでのデータ転送においては、スループットが鋸歯状になり、保証された帯域を十分に活用できないという課題があった。また、ユーザネットワーク内でパケット廃棄が発生した場合に、輻輳ウィンドウ(congestion window: CWND)のサイズが低下することで、保証する帯域を有効に使いきれない問題があった。
【0004】
この問題に対する対策の一例が、非特許文献1に開示されている。この文献には、ネットワークのエッジノードが広告ウィンドウサイズを一定に制御し、かつパケット廃棄が発生した際にACKパケットの分割を行うことで、保証された帯域に合わせて一定のスループットでデータを送信する技術が開示されている。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Kyota Hattori, Kentaro Ogawa, Masaru Katayama, Michihiro Aoki, and Shinichiro Chaki, "The method for improving TCP performance in bandwidth-guaranteed network", APCC2009
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、非特許文献1に開示された技術においては、単純に、既に受け取ったACKと同じACK番号のACK(以下では、重複ACKと称する)を認識してACKを分割するのみであるため、分割したACKに対して不必要なデータパケットの再送が発生し帯域の利用効率が低下する場合があった。以下、原因を詳細に説明する。
【0007】
昨今普及しているWindows VISTA(登録商標)などのOS(Operating System)に搭載されているTCPスタックにはNewRenoベースのFast Retransmissionの仕組みが実装されている。このNew RenoベースのFast Retransmissionでは、1ウィンドウ中に複数のデータパケットがバースト的に廃棄されたときに発生する、輻輳ウィンドウサイズの低下を改善することを目的として、重複ACKによってパケット廃棄を認識した瞬間にウィンドウ内に存在するデータパケットすべてに対してACKが返信されるまでは、新しいACKを1つ受信するだけで、そのACKに対応するデータパケット以降のデータパケットを再送する再送制御を行っている(以下では、再送制御モードと称する)。
【0008】
このNewRenoベースの再送制御を行うTCPに対してACK分割を行った場合に、1RTT(Round Trip Time:往復伝播遅延時間)中に複数のデータパケットが廃棄されると、再送制御モード中のACKに対しても分割を行うことになり、本来ウィンドウサイズを向上させるために行っていたものが、分割した全てのACKに対して再送制御が発生してしまうという問題があった。
【0009】
本発明は上述したような技術が有する問題点を解決するためになされたものであり、帯域保証ネットワークでのデータ転送において、ネットワーク内等で発生したパケット廃棄に伴って低下する輻輳ウィンドウサイズを早期に向上させることを可能にしたエッジノードおよび帯域制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するための本発明のエッジノードは、データ送信端末からデータ受信端末へデータ送信される帯域が保証された帯域保証ネットワークにおいて前記データ送信端末と前記データ受信端末の間に配置されるエッジノードであって、
通過する重複ACKの数が閾値を越えると、前記データ送信端末がサービス対象フローのデータパケットを再送する再送制御モードになったことを認識し、伝送されるデータパケットのシーケンス番号と該データパケットのACKパケットのACK番号とを比較して前記再送制御モードが終了したか否かを判定するACK分割制御部と、
前記ACK分割制御部が前記再送制御モードの終了を認識すると、前記ACKパケットを分割するACK分割部と、
を有する構成である。
【0011】
また、本発明の帯域制御方法は、データ送信端末からデータ受信端末へデータ送信される帯域が保証された帯域保証ネットワークにおいて前記データ送信端末から前記データ受信端末へのデータ送信の帯域を制御するエッジノードによる帯域制御方法であって、
通過する重複ACKの数をカウントし、
前記重複ACKの数が閾値を越えると、前記データ送信端末がサービス対象フローのデータパケットを再送する再送制御モードになったことを認識し、
伝送されるデータパケットのシーケンス番号と該データパケットのACKパケットのACK番号とを比較して前記再送制御モードが終了したか否かを判定し、前記再送制御モードが終了したと判定すると、前記ACKパケットの分割処理を行うものである。
【発明の効果】
【0012】
本発明によれば、複数パケットが廃棄されたときに輻輳ウィンドウの低下を改善する帯域保証サービスに対して、パケット廃棄や転送タイムアウトなどにより輻輳ウィンドウが低下した場合でも、保証帯域内で安定的にスループットを制御できるので、保証帯域を効率よく利用することが可能となる。
【図面の簡単な説明】
【0013】
【図1】本実施形態によるデータ通信システムの一構成例を示すブロック図である。
【図2】本実施形態のエッジノードの一構成例を示すブロック図である。
【図3】フロー識別・振り分け部によるパケット振り分けを説明するための図である。
【図4】往復伝播遅延時間を計測するときのエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【図5】ウィンドウサイズを算出するときのエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【図6】ACKパケットに広告ウィンドウサイズを書き込むときのエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【図7】ACK分割の要否判定を行うときのエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【図8】ACK分割部にACK分割からACK分割停止でのエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【発明を実施するための形態】
【0014】
一般的なTCPでは広告ウィンドウと輻輳ウィンドウという2つのウィンドウが定義される。広告ウィンドウのサイズは受信側で受信バッファの状態に依存して決定される。輻輳ウィンドウのサイズはデータ送信側でパケット廃棄の状況に応じて決定される。フロー制御に用いられるウィンドウサイズには、広告ウィンドウサイズと輻輳ウィンドウサイズのうち、いずれか小さいほうが選択される。このウィンドウサイズはACKが到着したときに更新される。
【0015】
本実施形態では、データの送信側となるデータ送信端末と、データの受信側となるデータ受信端末との間は、帯域保証ネットワークによって帯域が保証される構成である。したがって、保証帯域以下でデータを送出している限りパケットの廃棄が生じないことが想定される。それゆえ、データが保証帯域以下で送出されるように広告ウィンドウサイズを調節すればパケットの廃棄を防ぐことができる。パケットの廃棄が生じなければ輻輳ウィンドウサイズが小さくならないので常に広告ウィンドウサイズがTCPウィンドウサイズに採用されることになる。その結果、スループットが鋸歯状に変動しなくなり保証帯域の効率的な利用が可能となる。
【0016】
そこで、本実施形態では、データ送信端末とデータ受信端末の間でエッジノードがデータ送信側とデータ受信側の間の伝播遅延時間と、帯域保証ネットワークによる保証帯域とから、データが保証帯域以内で送出されるようなウィンドウサイズを算出し、データ受信端末からデータ送信端末へのACKパケットに記載される広告ウィンドウサイズを、算出したウィンドウサイズの値に書き換える。
【0017】
これにより、データ送信端末からデータ受信端末へ送信するデータのレートを保証帯域内で安定的に制御できるので、保証帯域を効率よく利用することができる。
【0018】
また、エッジノードがパケット廃棄認識時にウィンドウ中に存在する最も大きいシーケンス番号を認識して記憶し、通過するACKパケットのACK番号とそのシーケンス番号の比較を行い、記憶したシーケンス番号よりも大きなACK番号のACKが到着した際に、このACKの分割を行う。これにより、NewRenoベースの再送制御のような、1ウィンドウ中に複数パケットが廃棄されたときに発生する、輻輳ウィンドウサイズの低下を改善するTCPに対しても、ユーザネットワーク等で発生するパケット廃棄や転送タイムアウトにより発生するスループットの低下を改善し、保証帯域を効率よく利用して高いスループットを保つことが可能となる。
【0019】
以下、本実施形態について図面を参照して詳細に説明する。
【0020】
図1は、本実施形態によるデータ送信システムの構成を示すブロック図である。図1を参照すると、本実施形態のデータ送信システムは、エッジノード11,12、および帯域管理サーバ(Resource Admission Control Subsystem: RACS)13を有している。
【0021】
データ送信端末14はエッジノード11に接続され、データ受信端末15はエッジノード12に接続されている。エッジノード11とエッジノード12は帯域保証ネットワーク16上でデータを送受信することができる。これによりデータ送信端末14からのデータがエッジノード11とエッジノード12を介してデータ受信端末15へ転送される。
【0022】
帯域管理サーバ13は帯域保証ネットワーク16の全リンクの帯域情報を集中的に管理する装置である。帯域情報にはリンクに割り当てられた保証帯域の情報が含まれている。帯域管理サーバ13は管理している各リンクの帯域情報をエッジノード11,12に通知する。帯域管理サーバ13による帯域管理によって、データ送信端末14からデータ受信端末15へのリンクは帯域保証ネットワーク16での保証帯域が確保される。その結果、データ送信端末14が保証帯域以下でデータを送出する限り帯域保証ネットワーク16内でのパケット廃棄は発生しない。また、エッジノード11はデータ送信端末14とデータ受信端末15の間のデータ送信端末とデータ受信端末間の往復伝播遅延時間17を計測する。
【0023】
図2は、本実施形態のエッジノードの構成を示すブロック図である。
【0024】
図2を参照すると、エッジノード11は、データ受信部21、フロー識別・振り分け部22、伝播遅延時間算出部23、データ送信部24、帯域情報保持部25、フロー情報保持部26、ウィンドウサイズ算出部27、広告ウィンドウサイズ書き込み部28、ACK分割部29、およびACK分割制御部30を有している。
【0025】
データ受信部21は、データパケットやACKパケットなどのパケットを受信し、フロー識別・振り分け部22に送る。
【0026】
フロー識別・振り分け部22は、帯域情報保持部25に帯域情報とともに保持されているユーザ情報を元に、帯域を保証したデータ転送のサービスの対象となるフロー(以下では、サービス対象フローと称する)と、帯域を保証したデータ転送のサービスの対象とならないフロー(以下では、サービス非対象フローと称する)とを識別する。さらに、フロー識別・振り分け部22は、サービス対象フローのACKパケットを信号線22aを介して広告ウィンドウサイズ書き込み部28へ、サービス非対称フローのパケットおよびサービス対象フローのデータパケットを信号線22cを介してデータ送信部24へと振り分ける。
【0027】
伝播遅延時間算出部23は、データ送信端末14とエッジノード12の間とエッジノード11とデータ送信端末14の間の往復伝播遅延時間を計測する。
【0028】
データ送信部24は、フロー識別・振り分け部22からのパケットと、広告ウィンドウサイズ書き込み部28からのパケットとを、帯域保証ネットワーク16を介してエッジノード12へ送信する。
【0029】
帯域情報保持部25は、帯域管理サーバ13から通知されたサービス対象ユーザの帯域情報とユーザ情報(宛先・送信元IPアドレス、宛先・送信元ポート番号)とを対応付けて保持する。帯域情報には、リンクに割り当てられた保証帯域の情報が含まれている。リンクは、ユーザ情報により識別することができる。
【0030】
フロー情報保持部26は、フロー識別・振り分け部22で識別されるサービス対象フローのコネクション情報と、伝播遅延時間算出部23で算出された往復伝播遅延時間とを対応付けて保持する。
【0031】
ウィンドウサイズ算出部27は、フロー情報保持部26に保持されているデータ送信端末とデータ受信端末間の往復伝播遅延時間17と、帯域情報保持部25に保持されている帯域情報の保証帯域とを用いて、データの送出帯域が保証帯域以内となるようなウィンドウサイズを算出する。
【0032】
広告ウィンドウサイズ書き込み部28は、データ受信端末15からデータ送信端末14へのACKパケットのウィンドウフィールドに、ウィンドウサイズ算出部27で算出されたウィンドウサイズの値を書き込み、そのACKパケットをデータ送信部24に送る。
【0033】
ACK分割部29は、フロー識別・振り分け部22から転送されたACKに対してACK分割を行い、分割したACKを広告ウィンドウサイズ書き込み部28に転送する。
【0034】
ACK分割制御部30には、重複ACKをカウントするための重複ACK計測テーブルが格納されている。重複ACK計測テーブルには、輻輳ウィンドウサイズが低下したか否かの判定基準となる、重複ACKの数の閾値が記述されている。また、重複ACK計測テーブルには、到着したACKパケットのACK番号と、重複ACKを受け取った回数である重複ACKカウンタと、シーケンス番号が記録される。
【0035】
ACK分割制御部30は、フロー識別・振り分け部22からの要求にしたがって重複ACKのカウントを行うことで輻輳ウィンドウサイズの低下を認識すると、輻輳ウィンドウサイズの低下が認められた際に通過するデータパケットのシーケンス番号を記憶し、到着するACKパケットのACK番号と記憶したシーケンス番号と比較し、記憶したシーケンス番号より大きなACK番号のACKパケットが到着すると、フロー識別・振り分け部22にACK分割要求を転送する。
【0036】
図3は、フロー識別・振り分け部22によるパケット振り分けを説明するための図である。図3を参照して、フロー識別・振り分け部22によるパケット振り分けを詳細に説明する。
【0037】
データ送信端末14とデータ受信端末15間でコネクションが確立されると、データの転送が開始される。エッジノード11のフロー識別・振り分け部22は、データ受信端末15からのACKパケットを受信すると、サービス対象フローのACKパケットか否か判定をする。そのACKパケットがサービス対象フローのACKパケットであれば、次に、フロー識別・振り分け部22は、分割対象のACKか否かを判定する。そのACKが分割非対象ACKの場合、フロー識別・振り分け部22は、分割非対象ACKを、信号線22aを介して広告ウィンドウサイズ書き込み部28に送る。そのACKがサービス対象フローのACKパケットであり、かつ、フロー識別・振り分け部22がACK分割制御部30からACK分割要求を受けている場合、フロー識別・振り分け部22は、そのACKを分割対象ACKとして信号線22bを介してACK分割部29に送る。サービス非加入ユーザパケットやデータパケットに関しては、フロー識別・振り分け部22は、サービス非加入ユーザパケットやデータパケットを、信号線22cを介してデータ送信部24に送る。
【0038】
図4は、往復伝播遅延時間を計測する時のエッジノード内のブロック間の信号のやり取りを示すシーケンス図である。
【0039】
なお、SYN-SYN/ACK往復伝播遅延時間は、SYN(同期)パケットとそのACKであるSYN/ACKパケットの往復伝播遅延時間であり、SYN/ACK-ACK往復伝播遅延時間は、SYN/ACKパケットとそのACKパケットの往復伝播遅延時間である。
【0040】
図4を参照すると、データ送信端末14側のエッジノード11において、フロー識別・振り分け部22は、SYNパケットを観測すると(ステップ101)、サービス対象フローのユーザ情報・入力ポート情報と共にSYN-SYN/ACK往復伝播遅延時間計測開始要求を伝播遅延時間算出部23に送る(ステップ102)。これにより伝播遅延時間算出部23はセッション接続要求受信側とエッジノード11間のSYN-SYN/ACK往復伝播遅延時間の計測を開始する。
【0041】
その後、フロー識別・振り分け部22は、SYNに対するSYN/ACKパケットを観測すると(ステップ103)、サービス対象フローのユーザ情報・入力ポート情報と共にSYN-SYN/ACK往復伝播遅延時間計測終了要求を伝播遅延時間算出部23に送る(ステップ104)。これにより伝播遅延時間算出部23はセッション接続要求受信側とエッジノード11間のSYN-SYN/ACK往復伝播遅延時間の計測を終了する。
【0042】
同時に、フロー識別・振り分け部22は、サービス対象フローのユーザ情報・入力ポート情報と共にSYN/ACK-ACK往復伝播遅延時間計測開始要求を伝播遅延時間算出部23に送る(ステップ105)。これにより伝播遅延時間算出部23はセッション接続要求側とエッジノード11間のSYN/ACK-ACK往復伝播遅延時間の計測を開始する。その後、フロー識別・振り分け部22は、SYN/ACKに対するACKパケットを観測すると(ステップ106)、サービス対象フローのユーザ情報・入力ポート情報と共にSYN/ACK-ACK往復伝播遅延時間計測終了要求を伝播遅延時間算出部23に送る(ステップ107)。これにより伝播遅延時間算出部23はセッション接続要求側とエッジノード11間のSYN/ACK-ACK往復伝播遅延時間の計測を終了する。
【0043】
SYN-SYN/ACK往復伝播遅延時間とSYN/ACK-ACK往復伝播遅延時間の計測を終えた伝播遅延時間算出部23は、SYN-SYN/ACK往復伝播遅延時間とSYN/ACK-ACK往復伝播遅延時間の和を往復伝播遅延時間17とし、往復伝播遅延時間17をユーザ情報と共に、データ送信端末とデータ受信端末間の往復伝播遅延時間報告としてフロー情報保持部26に通知する(ステップ108)。同時に、SYN-SYN/ACK往復伝播遅延時間とSYN/ACK-ACK往復伝播遅延時間をユーザ情報と入力ポート情報とをACK分割制御部30に通知する(ステップ109)。
【0044】
図5は、ウィンドウサイズを算出するときのエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【0045】
フロー情報保持部26は、伝播遅延時間算出部23から往復伝播遅延時間報告を受信すると(ステップ201)、ウィンドウサイズ算出部27に対して、データ送信端末とデータ受信端末間の往復伝播遅延時間17とユーザ情報と共に、帯域保証ウィンドウ計算要求(ステップ202)を通知する。帯域保証ウィンドウ計算要求(ステップ202)を受けたウィンドウサイズ算出部27は、そのユーザ情報を基にして、帯域情報保持部25に対してユーザ情報に対応する保証帯域を要求する(ステップ203)。
【0046】
帯域情報保持部25は、ウィンドウサイズ算出部27からの要求に応じて保証帯域を返送する(ステップ204)。データ送信端末とデータ受信端末間の往復伝播遅延時間17と保証帯域を受信したウィンドウサイズ算出部27は、それらの値を基に、データ送信端末14が保証帯域以内でデータを送出するようなウィンドウサイズを算出する(ステップ205)。このとき保証帯域と一致するレートでデータが送出されるようなウィンドウサイズが好適である。
【0047】
ウィンドウサイズの求め方は、例えば式(1)により求めることができる。式(1)の「データ送信端末とデータ受信端末間の往復伝播遅延時間」は往復伝播遅延時間17である。
【0048】
【数1】

【0049】
図6は、ACKパケットに広告ウィンドウサイズを書き込む時のエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【0050】
図6を参照すると、まずウィンドウサイズ算出部27がサービス対象フローのウィンドウサイズを算出する(ステップ301)。続いて、ウィンドウサイズ算出部27は算出したウィンドウサイズと、そのサービス対象フローのユーザ情報を広告ウィンドウサイズ書き込み部28に通知する(ステップ302)。広告ウィンドウサイズ書き込み部28は、ウィンドウサイズ算出部27から通知されたウィンドウサイズの値を、フロー識別・振り分け部22からのACKパケットのウィンドウフィールドに書き込む(ステップ303)。広告ウィンドウサイズ書き込み部28で広告ウィンドウサイズが書き込まれたACKパケットはデータ送信部24に送られる。続いて、ウィンドウサイズ算出部27は算出したウィンドウサイズと、そのサービス対象フローのユーザ情報をACK分割部29に通知する(ステップ304)。
【0051】
図7は、ACK分割制御部30が重複ACKの計測およびACK分割要否判定を行って、ACK分割要求をフロー識別・振り分け部22に通知する際のエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【0052】
図7を参照すると、まずフロー識別・振り分け部22にサービス対象ユーザのACKが到着すると(ステップ401)、フロー識別・振り分け部22はACK分割制御部30に対して重複ACK計測要求としてユーザ情報とACK番号を送信する(ステップ402)。ACK分割制御部30は、フロー識別・振り分け部22から重複ACK計測要求の通知を受けると、受信したACK番号とユーザ情報にしたがってACK分割制御部30内に存在する重複ACK計測テーブル内を参照し、フロー識別・振り分け部22から通知されたACKが重複ACKか確認する。(ステップ403)。
【0053】
ステップ403において、ACK分割制御部30が参照した結果、ステップ402でフロー識別・振り分け部22から通知されたACKが重複ACKでない場合、ACK分割制御部30は、重複ACK計測テーブル内の重複ACKカウンタをクリアする(ステップ404)。一方、フロー識別・振り分け部22から通知されたACKが重複ACKであれば、重複ACK計測テーブル内の重複ACKカウンタを増加させる(ステップ405)。ステップ405の後に重複ACKカウンタが閾値を超えていた場合(ステップ406)、データ送信端末14が再送制御モードに入ったことを認識する(ステップ407)。
【0054】
TCPでは、データパケット内のシーケンス番号に対して、ACK内のACK番号を対応づけることによりデータ受信状況をデータ送信端末14に伝えることが可能である。すなわち、重複ACKがデータ送信端末14に到着することは、データ受信端末15がそのACK番号に対応するシーケンス番号のデータパケットを受信できていないことを意味する。データ送信端末14は重複ACKを認識すると輻輳ウィンドウサイズを低下させる。この仕組みを利用して、エッジノード11のACK分割制御部30は、重複ACK数を計測することで輻輳ウィンドウサイズの低下を認識する。
【0055】
なお、データ受信端末15はデータパケットを送信後、一定の時間以上経過してもデータパケットに対するACKが返信されない場合、パケット廃棄が発生したとみなして輻輳ウィンドウサイズを低下させる。この仕組みを利用して、エッジノード11のACK分割制御部30は、通過するデータパケットとACKがエッジノードを通過する時刻を計測することによって輻輳ウィンドウサイズの低下を認識してもよい。例えば、ACK分割制御部30は、通過するデータパケット内のシーケンス番号とACKパケット内のACK番号を記録し、これらのパケットの対応付けにより計測された伝播遅延時間を予め決められた基準時間と比較して、計測された伝播遅延時間の方が基準時間よりも大きい場合に、輻輳ウィンドウサイズが低下したと認識する。その後、その伝播遅延時間が基準時間よりも小さくなると、ACK分割制御部30は、データ送信端末14の再送制御モードが終了したと認識する。
【0056】
次に、フロー識別・振り分け部22にサービス対象ユーザのデータが到着すると(ステップ408)、フロー識別・振り分け部22はACK分割制御部30に対してシーケンス番号計測要求としてユーザ情報とシーケンス番号を送信する(ステップ409)。ACK分割制御部30は、フロー識別・振り分け部22からシーケンス番号計測要求の通知を受けると、データ送信端末14が再送制御モードであって、シーケンス番号をまだ記憶していない場合、または、記憶済みのシーケンス番号よりもステップ409によって通知されたシーケンス番号の方が大きい場合(ステップ410)、ステップ409によって通知されたシーケンス番号を記憶する(ステップ411)。
【0057】
さらに、ステップ402で通知されたACK番号に対して、データ送信端末14が再送制御モードで、かつ、到着ACK番号よりも、記憶していたシーケンス番号のほうが大きい場合(ステップ412)、ACK分割制御部30は、データ送信端末14の再送制御モードが終了したと認識し、フロー識別・振り分け部22に対してACK分割要求を送信し(ステップ413)、記憶していたシーケンス番号をクリアする(ステップ414)。
【0058】
NewRenoベースの再送制御に対応可能となるように、再送制御モード中においてACK分割を実施しないために、パケット廃棄認識毎にウィンドウ中に存在する最も大きいシーケンス番号を記憶する。この到着データパケットのシーケンス番号の認識は、エッジノード11がパケット廃棄発生を認識した瞬間から、エッジノード11とデータ送信端末14との間の遅延時間後まで実施し、再送制御モード中であれば、それ以降の新たなシーケンス番号の記憶を行わなくてもよい。
【0059】
ステップ410において、記憶される対象となるシーケンス番号は、例えば、再送制御モードになった時刻からSYN-SYN/ACK往復伝播遅延時間もしくはSYN/ACK-ACK往復伝播遅延時間、または、SYN-SYN/ACK往復伝播遅延時間とSYN/ACK-ACK往復伝播遅延時間を足した時間のいずれかの時間の経過後までに通過するデータパケットの最大シーケンス番号としてもよい。
【0060】
また、ステップ410において、記憶される対象となるシーケンス番号は、エッジノード11がパケット廃棄発生を認識することで、再送制御モードになったときにエッジノード11を通過したACKパケットのACK番号に対して再送されたパケットである再送制御パケットがエッジノード11に到着するまでに、エッジノード11を通過したデータパケットの最大のシーケンス番号としてもよい。また、パケット廃棄の認識は、重複ACKの認識やタイマーカウントでもよい。
【0061】
ステップ412における、到着ACK番号と記憶していたシーケンス番号との比較は、例えば式(2)のように行うことができる。
【0062】
【数2】

【0063】
図8は、ACK分割部29がACKを分割する際のエッジノード内のブロック間の信号のやりとりを示すシーケンス図である。
【0064】
図8を参照すると、まずフロー識別・振り分け部22にACK分割要求が到着すると(ステップ601)、フロー識別・振り分け部22は、ACK分割要求に伴って通知されたユーザ情報にしたがって、ユーザ情報に該当するACKをACK分割部29に転送する(ステップ602)。ACK分割部29は、フロー識別・振り分け部22からACKを受け取ると、受け取ったACKを分割する(ステップ603)。
【0065】
ステップ603でACKを分割する際、ACK分割部29は、次のようにして分割数を決める。1つのACKに対して、ACKを分割し過ぎると、輻輳がアクセス網内で発生し、逆にCWNDを低下させる可能性がある。そのため、ACKによって占有される帯域が保証帯域よりも小さくなるように、ACK1パケットあたりの分割数は、保証帯域が上り下りで等しいことを考慮に入れて、MTU(最大転送ユニット)とACKパケットとのサイズ比とするのが最良である。これにより、ACK分割部29は、MTUとACKパケットとのサイズ比を分割数として算出する。例えば、MTUのサイズが1514Byteであり、ACKパケットのサイズが60Byteである場合、ACKパケットの分割数であるACK分割数は、25(≒1514÷60)となる。MTUの代わりにデータパケットとしてもよい。
【0066】
ACK分割部29は、分割したACKを広告ウィンドウ書き込み部28に送る(ステップ604)。ACK分割部29は、ACKの分割数がステップ603で決めた値に達しなければ(ステップ605)、ステップ603に戻って、ACKの分割を行い、ACKの分割数がステップ603で決めた値に達すると、フロー識別・振り分け部22に転送解除を要求する(ステップ606)。
【0067】
なお、ACK分割を行う際、次のように行ってもよい。エッジノード11が輻輳ウィンドウサイズの低下を認識した際に、輻輳ウィンドウサイズを早期に向上させるためにACKの分割を行う。これは、データ送信端末14がACK受信毎に輻輳ウィンドウサイズを上昇させる性質を利用するものである。また、データ送信端末14は、現在認識しているACK番号より大きな値のACK番号のACKが到着した際に輻輳ウィンドウサイズを上昇させる性質がある。この性質を利用して、ACK分割部29は、ACK分割を行う際、分割対象ACKに対して、既にデータ送信端末14に転送済みのACKのACK番号と分割対象ACKのACK番号の間の値で分割対象ACKのACK番号を書き換えたものを複数作成してもよい。例えば、データ送信端末14に転送済みのACKのACK番号が「1000」で、分割対象ACKのACK番号が「2000」である場合、「1000」と「2000」の間のACK番号を付与したACKを作成する。
【0068】
また、ACK分割を行う際に、ACK分割部29は、複数パケット廃棄に対応するためのSelective ACK(SACK)オプションがACKパケットに付与されている場合、SACKオプションを削除してACK分割を行ってもよい。SACKオプション付きのACKパケットは、複数の廃棄されたパケットをまとめて通知するものであるため、このオプション付きのACKパケットを分割しても、同じ内容の情報を付加したパケットが複製されるだけで、作成されたACKパケットは無効になってしまうからである。
【0069】
また、ステップ603の処理における、ACKの分割数を数1(式(1))のウィンドウサイズに基づいて決めてもよい。
【0070】
本実施形態によれば、1ウィンドウ中に複数パケットが廃棄されたときに発生する、輻輳ウィンドウの低下を改善するTCPを用いた帯域保証サービス運用時に、データ送信端末のTCPプロトコルスタックの変更を必要とすることなく、パケット廃棄や転送タイムアウトにより輻輳ウィンドウが低下した場合でも、保証帯域内で安定的にスループットを制御できるので、保証帯域を効率よく利用することが可能となる。上記帯域保証サービスとして、例えば、NewRenoベースの再送制御に、本実施形態を適用可能である。
【0071】
上述したように、エッジノードが輻輳ウィンドウサイズの低下にしたがってACKパケットを操作するのみなので、データ送信端末はそれを基に既存の動作をするだけであり、データ送信端末のプロトコルに対して本発明の特有な機能を加えることなくスループットを改善できる。
【符号の説明】
【0072】
11、12 エッジノード
13 帯域管理サーバ
14 データ送信端末
15 データ受信端末
16 帯域保証ネットワーク
21 データ受信部
22 フロー識別・振り分け部
23 伝播遅延時間算出部
24 データ送信部
25 帯域情報保持部
26 フロー情報保持部
27 ウィンドウサイズ算出部
28 広告ウィンドウサイズ書き込み部
29 ACK分割部
30 ACK分割制御部

【特許請求の範囲】
【請求項1】
データ送信端末からデータ受信端末へデータ送信される帯域が保証された帯域保証ネットワークにおいて前記データ送信端末と前記データ受信端末の間に配置されるエッジノードであって、
通過する重複ACKの数が閾値を越えると、前記データ送信端末がサービス対象フローのデータパケットを再送する再送制御モードになったことを認識し、伝送されるデータパケットのシーケンス番号と該データパケットのACKパケットのACK番号とを比較して前記再送制御モードが終了したか否かを判定するACK分割制御部と、
前記ACK分割制御部が前記再送制御モードの終了を認識すると、前記ACKパケットを分割するACK分割部と、
を有するエッジノード。
【請求項2】
前記ACK分割制御部は、
前記データパケットのシーケンス番号と前記ACKパケットのACK番号の対応付けにより計測される伝播遅延時間が所定の基準時間と比べて大きいか否かを判定することで、前記再送制御モードが終了したか否かを判定し、または、前記サービス対象フローのSYNパケットと該SYNパケットのACKパケットであるSYN/ACKパケットとの対応付け、もしくは該SYN/ACKパケットと該SYN/ACKパケットのACKパケットとの対応付けにより計測される伝播遅延時間までに通過するデータパケットの最大シーケンス番号と前記ACKパケットのACK番号とを比較し、その比較の結果に基づいて前記再送制御モードが終了したか否かを判定する、請求項1に記載のエッジノード。
【請求項3】
前記ACK分割制御部は、
前記重複ACKに対して前記データ送信端末から再送されたデータパケットを受信するまでに通過したデータパケットのうち最大のシーケンス番号と通過したACKパケットのACK番号とを比較し、その比較の結果に基づいて前記再送制御モードが終了したか否かを判定する、請求項1に記載のエッジノード。
【請求項4】
前記ACK分割部は、
前記ACKパケットを分割する際の分割数であるACK分割数として、前記データパケットと前記ACKパケットのサイズ比に基づいて算出する、請求項2または3に記載のエッジノード。
【請求項5】
前記ACK分割部は、
複数パケット廃棄に対応するためのSelective ACKオプションが前記ACKパケットに付与されている場合、該Selective ACKオプションを削除して該ACKパケットを分割する、請求項1から4のいずれか1項に記載のエッジノード。
【請求項6】
データ送信端末からデータ受信端末へデータ送信される帯域が保証された帯域保証ネットワークにおいて前記データ送信端末から前記データ受信端末へのデータ送信の帯域を制御するエッジノードによる帯域制御方法であって、
通過する重複ACKの数をカウントし、
前記重複ACKの数が閾値を越えると、前記データ送信端末がサービス対象フローのデータパケットを再送する再送制御モードになったことを認識し、
伝送されるデータパケットのシーケンス番号と該データパケットのACKパケットのACK番号とを比較して前記再送制御モードが終了したか否かを判定し、前記再送制御モードが終了したと判定すると、前記ACKパケットの分割処理を行う、帯域制御方法。
【請求項7】
前記再送制御モードが終了したか否かの判定は、
前記データパケットのシーケンス番号と前記ACKパケットのACK番号の対応付けにより計測される遅延時間が所定の基準時間と比べて大きいか否かを判定すること、または、前記サービス対象フローのSYNパケットと該SYNパケットのACKパケットであるSYN/ACKパケットとの対応付け、もしくは該SYN/ACKパケットと該SYN/ACKパケットのACKパケットとの対応付けにより計測される遅延時間までに通過するデータパケットの最大シーケンス番号と前記ACKパケットのACK番号とを比較し、その比較の結果に基づいて判定することである、請求項6に記載の帯域制御方法。
【請求項8】
前記再送制御モードが終了したか否かの判定は、
前記重複ACKに対して前記データ送信端末から再送されたデータパケットを受信するまでに通過したデータパケットのうち最大のシーケンス番号と通過したACKパケットのACK番号とを比較し、その比較の結果に基づいて判定するものである、請求項6に記載の帯域制御方法。
【請求項9】
前記ACKの分割処理は、
前記ACKパケットを分割する際の分割数であるACK分割数として、前記データパケットと前記ACKパケットのサイズ比に基づいて算出する処理を有する、請求項7または8に記載の帯域制御方法。
【請求項10】
前記ACKの分割処理は、
複数パケット廃棄に対応するためのSelective ACKオプションが前記ACKパケットに付与されている場合、該Selective ACKオプションを削除して該ACKパケットを分割する処理を有する、請求項6から9のいずれか1項に記載の帯域制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−44278(P2012−44278A)
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願番号】特願2010−181308(P2010−181308)
【出願日】平成22年8月13日(2010.8.13)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】