図7はレイヤ2スイッチによるQOS動作の説明図であり,(a) はL2SWの構成,(b) は各部の動作概要を示す。図中,80はレイヤ2スイッチ(L2SWで表示),81は入力QOS部,810は端末A,端末Bから入力するフレームに対応して設けられたクラシファイ部,811はポリシングを行うポリサ,82は出力QOS部,820はシェーパである。83はファイル転送プロトコル(FTP)のフレームによりデータを伝送する端末であり,図7の例では端末Aと端末Bの2つの例を示す。
L2SWにおけるQOSには,クラシファイ,ポリシング,シェーピングの3種類があり,入力フレーム毎にクラシファイ部810において優先度振分け(Classify) を行い,フレームの集まりであるトラフィックの帯域を入力側のポリサ811と出力側のシェーパ820で実施する,という一連の流れを総称してQOSという。中でも,ポリシングを行うポリサ811では,入力レートの上限値(PIR:Peak Information Rate :最大情報速度,bit/second)と入力トラフィックのバースト許容値(MBS:Maximum Burst Size:最大バーストサイズ,Byte単位) が利用者との契約により予め設定されており,入力レートの上限値(PIR)とバースト許容値(MBS)はポリサ毎に任意の値を設定することが可能であるが,いずれの値もユーザが手動で一意の値を設定する必要がある。
図7の(b) には,端末Aと端末Bにはそれぞれの伝送路に対して一定の物理帯域(伝送可能な帯域)が決められており,各端末A,Bのフレームに対して上記PIRの値に対応するポリサ設定値A,ポリサ設定値Bが設定されているものとすると,フレームはクラシファイ部810を通る時,図7の(b) の中の(1) に示すような分布をとり,それぞれのフレームの入力はポリサ811において,図7の(b) の(2) に示すように各ポリサ設定値A,ポリサ設定値Bにより制限される。端末A,端末Bからのフレームに対応した2つのポリサ811から出力されたフレームはシェーパ820に入力されて,その中のバッファ(図示省略)に格納され,そのバッファから出力される。シェーパ設定値(バッファ容量により決められる)に制限されたデータ量が図7の(b) の(3) に示すように出力される。
図8はポリシング機能の概要を示す図である。ポリシング機能には大きく分けて,以下の2つの機能がある。一つは,L2SWに入力されたトラフィックの上限値であるPIRを設定し,入力トラフィックのうち,PIRを越えるトラフィックは廃棄する機能である。もう一つは,バースト許容値MBSを設定し,瞬間的にPIR値を越えるバーストトラフィックを受信した際に,設定されたバーストサイズ分のフレーム受信を許容する機能である。図8の場合,(1) に示すように,最初のうちはPIR値を越えてバーストサイズ分のトラフィックも流すが,シェーピングにおけるバッファ容量によりバーストサイズ分を使い果たした後は,PIR設定値までのトラフィックしか流さない。この後,トラフィックが止まって一定時間経過すると図8の(2) に示すように,バーストサイズ分を再び流すことができる。
レイヤ2スイッチのポリシングの方式としてトークンバケット(またはトークンバケツ)方式がある。図9にトークンバケット方式の原理を示す。図9中,90は送信する権利を表すトークンの供給源,91はトークンを蓄積するバケット,92はフレームを表し,斜線で表したものはトークンを受け取って出力することができたフレームを表す。
トークンバケット方式では,ポリサからフレームを出力するためには,流れてくるフレーム一つ一つに対してフレームサイズ分のトークンを与える必要があり,フレームはトークンを受け取ることで初めてポリサを通過できる。トークンはバケット91に蓄えることができ,バケット91のサイズがMBS(バースト許容値)であり,フレームが流れてくる度にフレームにトークンが逐次供給される。自身のバイト長分のトークンを受け取ったフレームは,ポリサを通過することが可能となり,受け取ることができなかったフレームは廃棄される。バケットにはPIRのレートに従ってトークンが随時補充されており,フレームが流れない時やPIR以下のレートである場合は,バケットにトークンが溜まる。図9のA.にバケットにトークンが溜まっている場合を表し,供給源90から一定周期でバケット91にトークンを供給(PIRに依存)することで,バケット91にトークンが溜められた状態を表す。このトークンがバケット91からフレームへ供給されると,パケットがフレームサイズ分のトークンを受け取ることにより,ポリサから先へ出力され,パケットのトークンサイズ分はバーストトラフィックとして流すことが可能である。
PIRを越えるレートで入ってきたフレーム(バーストトラフィック)に対し,バケットからトークンを供給することで,バケットに蓄えられたトークンは減じられていく。ここで,バーストトラフィックが流れ続け,トークンを与え続けると,最終的にバケットは空になってしまい,PIRに従ってバケットに補充されるトークンでのみフレームの透過が可能となる。図9のB.はバケットのトークンが空の場合であり,トークンはPIRレート通りにフレームへトークンを供給されるため,PIRレートでフレームが出力できるが,バケットにトークンが溜められていないためバーストトラフィックを流すことができない。この状態はPIRに設定したレートが確実に守られることを意味する。
図10,図11によりトークンバケット方式におけるバッファ使用率を説明すると,図10は説明に使用するL2SWの構成例,図11はポリサとシェーパのバッファ使用率の説明図であり,図11の(a) はユーザのトラフィックとバッファの使用量,(b) はシェーパからの出力を示す図である。
図10に示す構成では,上記図7に示すL2SWの構成の中の主要な構成要素であるポリサ811,シェーパ820だけを示し,ポリサ811内には,ポリサA,ポリサBが示され,それぞれMBS(バースト許容値)は一定値で,PIR(最大情報速度)はそれぞれPA,PBが設定されている。83はユーザA,ユーザBの端末である。またシェーパ820は,バッファ820aと出力制限部820bとで構成される。また,図11の(a) に示す図は,横軸が時間,縦軸がレート(速度)を表し,上から順にユーザAのトラフィック,ユーザBのトラフィック,シェーパの状態を表す。
トークンバケット方式でポリサを動作させた際,ユーザA,ユーザBがそれぞれポリサA,Bでポリシングを受けて,図11の(a) のa1,b1のようにフレームが流れる。ポリサA,Bを通過したフレームは,シェーパ820へ送られる。シェーパ820は設定レートに従ってフレームを装置外へ出力するが,フレームデータをシェーパ前のバッファ820aに蓄積され,蓄積されたフレームデータは設定レートの速度で読み出す処理を行う。
この後,各ユーザA,BからそれぞれのPIRであるPA,PBを越えるバーストが(2) に示すようにb2(ユーザBのバースト),a2(ユーザAのバースト)の順に流れてくると,まずはポリサに設定したMBS(バケット満杯分のトークン)分のトラフィックを流し,MBS分のトラフィックが流れてしまった後は,PIR設定値を最大としたレートでトラフィックを流し続ける。
シェーパ820で複数のポリサから流れてきたフレームが集約されるが,次の制約を満たしていれば,バッファ820aに蓄積されることはない。
シェーパレート≧配下ポリサからのΣPIR
このように,ユーザA,Bが図11の(a) のa1,b1のようにPIRを守っていれば,トラフィックはバッファ820aに蓄積されることなくシェーパ820から読出されるが,ユーザBがバーストトラフィックを図11の(a) のb2のように流し,その直後ユーザAがバーストトラフィックを図11の(a) のa2のように流すと,バーストトラフィックは最大で物理レートまで出力するため,シェーパのバッファ820aからの読み出しが追いつかず,ユーザAのバーストトラフィックによって図11の(a) のc1に示すようにバッファは溢れてしまい,バッファ溢れによるパケット廃棄を起こしてしまう。この時,バッファ820aにはバーストトラフィックのみが溜まっている状態となり,新たなユーザが加わってPIR以内のトラフィックを流そうとしても,図11の(b) のc2に示すように他ポートからのバーストトラフィックの影響で全く流れなくなる。こうして,バッファがバーストトラフィックのみで溢れてしまい,新たに別のユーザがPIR以内で流したトラフィックに対してフレームの廃棄がおこり,バーストトラフィックを流すユーザのためにPIRまでのレートが保証されないユーザが現れるという現象が生じる。
コンピュータネットワークシステムにおけるルータ,リピータ等の中継装置に関して,ネットワークを流れるトラフィックの増大に対応できるようにするための技術が存在する(特許文献1参照)。その技術は,パケット転送処理を行うパケット転送ユニットを並列化し,各パケット転送ユニットへパケットを振り分けるパケット振り分けユニットと,パケット転送ユニットの出力を再配列するパケット再配列ユニットを設け,更にパケット転送ユニット内でパケットヘッダを検索するパケット検索ユニットを並列化することにより,パケットの転送処理ユニットの並列度に応じてパケット転送処理を高速化するものである。
特開2001−211203号公報
上記図11の(b) で示す現象は,ユーザAのポリサAに与えられたMBS値が大きければ大きいほど,長時間発生し続けることになる。逆にMBSが小さいと,バーストトラフィックを流す時間は短くなり,1ユーザでバッファを占有する時間を短縮することが可能となるが,その反面,1対1通信におけるFTP転送等のTCP(Transmission Control Protocol)スループットが悪くなるという問題がある。
TCPスループットについて説明する。ユーザXとユーザYとでFTP転送をする場合を想定すると,両者間の通信はTCP/IPプロトコルに従ってフロー制御が行われる。ユーザXから送信されたフレームは,ユーザYで受信すると,ユーザYからユーザXへと受信確認情報があるACKパケットを送り返す。このACKパケットをユーザXが受け取ったことで,ユーザXは送信したフレームが無事受信されたことを確認し,次のフレームを送信する。ACKが戻ってこなければ,ユーザXは戻ってこなかった分のフレームを再送することになる。ここで,TCP/IPの輻輳処理であるスロースタートに従い,まず送信フレーム1個毎にACKを返すが,一度ACKが戻ってくると,送信フレームの個数(ウィンドウサイズ)を倍に増やし,次にACKが戻ってくると更にその倍に増やして,一度に送信するフレーム数を倍々に増やして送り出す処理を行う。
スロースタートによってウィンドウサイズはどんどん増えていくが,使用可能な帯域の限界になるとフレームロス(廃棄)が起きてACKが返らなくなり,その時点でスロースタートは中止し,ウィンドウサイズを半分まで落とし,その後はウィンドウサイズを一つずつ増やすファストリカバリ処理を行うこととなる。また,ファストリカバリ処理に入るよりも更に多くの送信フレームが廃棄されるような輻輳状態に陥ると,一旦送信フレームを一個まで戻し,改めてスロースタートを行うことにより再送タイムアウト(再送時間がかかりタイムアウトになる)状態となる。
図12はTCP/IPプロトコルを考慮したMBSとTCPスループットの関係を示す。FTP転送では,転送ファイルサイズ分のトラフィックがバースト的に流れることになる。PIRが物理レートよりも低いユーザでは,最初のうち,ポリサでバーストトラフィックを許容しているため,スロースタートによってウィンドウサイズはどんどん大きくなり(図12のa),ファイル転送は物理レートで流れるが,バーストトラフィックの合計サイズがMBS値まで流れると,トラフィックレートは物理レートからPIR設定値のレートまで急激に落ちてしまい(図12のb),パケットの大量廃棄が発生する。そのため,パケットの再送タイムアウトが発生し,ウィンドウサイズを最小値まで戻してスロースタートからやり直すことになる(図12のc)。スロースタートにてウィンドウサイズを徐々に大きくしていく間,ポリサのトークンは徐々にMBSまで溜まっていき,完全に溜まるころにはFTP転送速度は物理レートまで増加しており(図12のd),MBS値までのサイズになると再びスロースタートに陥る(同e)。転送ファイルを全て送りきるまではこの動作を繰り返すことになるが,ここで得られる傾向として,次の結果が得られる。
MBSが小なら,TCPスループットが出ず,バッファ小容量でも他ユーザに影響が少なく,MBSが大なら,TCPスループットが出て,バッファ小容量でも他ユーザに影響が大きい。
また,IPネットワークは非同期網であるため,どのユーザが,いつ,どのくらいのトラフィックを流すかどうか,一意に決定することは難しい。PIRの小さいユーザでも,FTP転送を行うためにバーストサイズは大きなものが必要となる場合や,PIRが大きいユーザでもバーストトラフィックをほとんど流さない場合もある。あるシェーパに属する複数ユーザでも,時間帯によってバーストトラフィックが輻輳する時間としない時間があり,輻輳時に大きなMBSでバーストトラフィックを流す他ユーザの帯域に影響を与え,非輻輳時でもMBSが小さければFTP転送でのスループットが出力されず,遅延が大きくなる。このように,ポリサバーストサイズも他ユーザの帯域使用量によって,その容量を一意に決めるのは難しい。
更に,全てのポリサのバーストトラフィックを共用できる大容量バッファを装置に設置すると,装置に実装する機能がバッファ容量に圧迫されるために機能搭載の効率が落ち,なおかつバーストトラフィックが流れない場合には大容量バッファの使用効率が劣化することになる。
上記特許文献1の技術は,パケット転送ユニットを並列化し,パケット振り分けユニットと,パケット再配列ユニットと,更にパケット転送ユニット内でパケットヘッダを検索するパケット検索ユニットとを並列化してパケット転送処理を高速化するもので,ユーザに対して設定した最大情報速度(PIR)やバースト許容値(MBS)を考慮してバーストラフィック時の最適な制御を行うものではない。
本発明は種々の最大情報速度(PIR)やバースト許容値(MBS)による契約を行った利用者に対し,バーストトラフィックが輻輳した場合に手動で一意にMBSを与える手間を省き,トラフィックに従って最適なバーストサイズを自動的に設定することが可能なポリサバーストサイズ自動設定方式を提供することを目的とする。
図1は本発明の構成を示す図である。図中,1はレイヤ2スイッチ(L2SWで表示),2は入力QOS部,20a〜20nはそれぞれユーザ端末に対応して設けられ,各ユーザ端末からのフレームが入力されるポリサであり,各ポリサの内部に設けられた200は,そこにフレームを入力するユーザ端末に対してポリシング制御の基準となるバーストサイズの閾値が設定され,その値がシェーパから自動的に可変制御することができる自動バーストサイズ(ABS:Auto-set Burst Size)設定部,201はユーザに対して決められた最大情報速度が設定される最大情報速度(PIR)設定部である。3は出力QOS部,30a〜30mはそれぞれ相手側の端末(または伝送路)に接続されたシェーパ,各シェーパの内部の300はバッファ監視部,301はシェーパ配下のポリサ情報に関する情報として使用バッファ容量,ABS初期値(ユーザに対応したMBSを設定),ABS現状値,PIR,及びバースト発生時のバーストトラフィック量(特定の計算式により求める)等を保持するポリサテーブル,302はバッファ,302aは配下ポリサの単一MBS以上の値であって,単一ユーザがMBSを出力する場合ではその閾値を越えることのない値である下位閾値が設定される下位閾値保持部,302bは最終閾値である上位閾値が設定される上位閾値保持部である。303は出力制御部である。4は送信元のユーザ端末であり,この例ではポリサ20a,20bにそれぞれ接続されるユーザ端末A,ユーザ端末Bの2つだけが示されている。5は送信先の端末であり,この例ではシェーパ30aに接続された端末Xとシェーパ30mに接続された端末Zだけ示されている。
ユーザ端末Aとユーザ端末Bからの入力がそれぞれ入力QOS部2のポリサ20aと20bに入力して,入力QOS制御を受け,ポリサ20aと20bの出力がシェーパ30aで集約され,ユーザ端末Xへ送信される場合について説明する。始めはポリサ20a,20bの自動バーストサイズ(ABS)設定部200にそれぞれのユーザ端末A,ユーザ端末BのMBS(最大バーストサイズ)が設定され,201にもそれぞれのPIR(最大情報速度)が設定される。
ユーザ端末A,Bからの入力トラフィックは,ポリサ20a,20bで自動バーストサイズ(ABS)設定部200と最大情報速度(PIR)設定部201によりポリシングを受けてシェーパ30aのバッファ302に書き込まれた後,出力制御部303により読み出されてユーザXに出力される。バッファ302の使用量が何れかのポリサからのフレームにより下位閾値保持部302aを越えた場合,バッファ302からバッファ監視部300に閾値超過を通知する。バッファ監視部300はポリサテーブル301を参照して,ポリサ(ユーザ)毎のバーストトラフィック量(物理帯域からそのポリサの最大情報速度を減じて,バッファの使用率を乗じることにより求める)を算出して,最もバーストトラフィック量の多いポリサを識別し,そのポリサに対し自動バーストサイズ(ABS)半減命令を通知する。
これを受けたポリサは自動バーストサイズ(ABS)設定部200の設定値を半減し,半減の完了をシェーパのバッファ監視部300へ通知する。半減完了を受けたバッファ監視部300は更に半減した自動バーストサイズ(ABS)値を用いて監視を行って,バッファの使用量が更に下位閾値を越えると更に半減命令をその時のバーストトラフィック量が多いポリサを識別して,そのポリサに対して通知し,この動作を繰り返して,設定値が変換される。また,下位閾値を越えてないことが検出されると,バッファ監視部300は半減された自動バーストサイズ(ABS)値を元に戻す命令を該当ポリサに通知する。
また,バッファ302の使用量が上位閾値保持部302bに設定した上位閾値を越えるとバッファ監視部300に通知し,バッファ監視部300は配下の全てのポリサの自動バーストサイズ(ABS)設定部200の設定値を最低値(BBS:Bottom Burst Size:バッファ下位閾値/シェーパ配下のポリサ数)に設定する命令を通知し,各ポリサはその通知を受けるとそれぞれの自動バーストサイズ(ABS)値を最低値(BBS)まで削減し,設定完了をシェーパに通知する。
ABSやBBSの適用可否,及び初期値の設定は,ユーザが設定可能であり,且つユーザがPIRを設定した時点でABSの初期値を自動設定する機能を有することで,これまで使われてきた機能も使用することができる。
以上の動作により,トラフィック量が非同期であり,バースト的なトラフィックが頻発するイーサネットのネットワークにおいて,ユーザは他ユーザのトラフィックを侵害せず,最適なバーストサイズを一意に決定することなく,PIRのみを意識してネットワークの構築および運用が可能となる。また同時に,シェーパにて有するバッファは,全てのユーザのMBSを許容するだけの容量を有して非効率的な運用を行うことなく,バッファ容量と回路コストの軽減が可能となる。
本発明により種々の契約帯域を持つユーザに対して手動で一意にMBSを与えることなく,ユーザのポリサ毎にそのユーザのトラフィックに従って最適なバーストサイズを自動的に設定することが可能となる。また,シェーパのバッファが全ポリサのMBSの総合計値以下であっても,単一ポリサのみがバーストトラフィックを流している場合には1対1通信で十分なバーストサイズを自動的に取得可能であり,バーストトラフィックが輻輳した場合でも,バッファの閾値設定とABS自動設定によって,バッファには他ポリサのPIR分を出力することが可能となり,バッファの小容量化と効率的な装置設計が可能となる。
図2はポリサテーブルの構成と変化を示す図,図3はポリサとシェーパの相互の処理フローである。
図1の構成における出力QOS部3のシェーパ30aに設けられたポリサテーブル301には,最初に図2のA.に示すような情報が設定されている。すなわち,aの欄にはポリサ名が設定され,この例ではポリサ20a,ポリサ20b,……ポリサ20nが設定され,bの欄には各ポリサがこのシェーパ30aの配下にあるか否かを「○」または「×」に設定され,この例ではポリサ20aと20bがシェーパ30aの配下に属している。cの欄は使用バッファ容量(Mbyte: メガバイト)が設定される。この使用バッファ容量は,入力トラフィックがこのシェーパ配下のどのポリサからのものであるかを認識し,バッファに書き込まれるとカウンタ(図示省略されたデータ量のカウンタ)を増加させ,バッファから読み出されるとカウンタを減少させることにより求める。この例では,ポリサ20aによる使用バッファ容量が「2M」で,ポリサ20bによる使用バッファ容量が「0.5M」である。dの欄はABS初期値(Mbyte)であり,ポリサ20a,20bの何れも「10M」である。eはの欄はABS現状値(Mbyte)であり運用により変化する。fの欄はPIR(Mbps:メガビット/ 秒 )であり,ポリサ20aに対して「50Mbps 」,ポリサ20bに対して「1Mbps 」である。gの欄はバーストトラフィック量(byte) で初期状態では何も設定されていない。hの欄は自動設定回数であり,初期値は0である。
最初にポリサ20aとポリサ20bの各自動バーストサイズ設定部200(以下,ABS設定部という)に,ユーザA,ユーザBの契約MBSの値である「10Mbyte」を設定し,ポリサテーブルのポリサ20a,20bにABS初期値の欄(図2のA.のd)及びABS現状値(図2のA.のe)にも同じ値が設定される。そして,バッファの下位閾値を10Mbyte,上位閾値を19Mbyteとする。
図3の処理フローにおいて,バッファ302において,バッファ使用量が下位閾値を超過したか判別する(図3のS1)。この時,使用バッファ量が図2のポリサテーブルのB.のcに示すようにポリサ20aが「10」でポリサ20bが「6」になって,合計して「16」となり下位閾値の「12」を超過したことが検出されると,下位閾値の超過通知をバッファ監視部300に通知する(同S2)。バッファ監視部300ではバーストトラフィック量(図2のポリサテーブルのA.のg)を参照する(図3のS3)。
ここで,ポリサテーブルのバーストトラフィック量は次の計算式により求めたものを意味する。この計算式によって,ポリサ毎の単位時間当たりに流しているトラフィック量が算出される。
バーストトラフィック量=(100-PIR) ×(バッファ使用量/バッファ総容量)
この計算式中の「100」は物理レートが100Mbyteであることを表す。このバーストトラフィック量は,PIRに差がある2つのユーザでも,バーストトラフィックは物理レートまで出力されるため,PIRが小さいユーザの方がバースト時にはPIRが大きいユーザより大量にバーストトラフィックを流していることとなるため,PIRを越える残り帯域分を(100-PIR) で計算し,その数値に単位時間当たりのバッファ使用率(バッファ使用量/バッファ総量)を掛けることで,ユーザ毎のバーストトラフィック量が算出できる。
図2のB.に示すようにポリサ20a,20bによる使用バッファ容量が変化すると,バーストトラフィック量は図2のB.のgに示すように,それぞれ「25」と「299.7」になり,ポリサ20bのバーストトラフィック量の方が多いことが分かり,バッファ監視部300はポリサ20bに対しABS半減命令を送信する(図3のS4)。これを受けたポリサ20bはABSの値を半減し(図3のS5),ABS半減完了をバッファ監視部300に通知する(同S6)。ポリサ20aはこの後,半減したABSの値(具体的にはABS初期値の「10Mbyte」の半分である「5Mbyte」)をバースト許容値(MBS)として処理を行う。
バッファ監視部300はポリサ20bからの半減完了通知を受け取ると,ポリサテーブル301を更新する(図3のS7)。この更新により,ABSの現状値の記録(半減値を設定),自動変更回数加算(+1)し,バーストトラフィック量算出を行う。この更新により,ポリサテーブル301は図2のC.の各欄に示す値になる。続いて,バッファ使用量チェックをバッファ302に指示し(図3のS8),バッファ302でこれに応じてチェックをして,バッファ使用量が下位閾値を超過したか判別し(同S9),超過したと判別された場合は上記のステップS2に戻り,超過通知をバッファ監視部300へ通知し,改めてその時点でバーストトラフィック量の大きいポリサに対してABS半減命令を通知する処理に移行する。下位閾値未満の場合は,復旧通知をバッファ監視部300に出力する(同S10)。
バッファ監視部300はこれを受け取ると全ポリサのABSをチェックし,現在のABSの値が初期値から下がっているポリサを,ポリサテーブル301を参照して確認し(図3のS11),該当する全ポリサに対してABSの復旧命令を出す(同S12)。復旧命令を受けたポリサは,自身のABSを初期値に復旧し(図3のS13),復旧完了通知をバッファ監視部300に通知する(同S14)。復旧通知を受けたバッファ監視部300は,ポリサテーブル301の該当する情報の書換えを行う(同S15)。すなわち,ABS現状値(復旧した値)を記録し,バーストトラフィック量を算出する)。この後もバッファ302,バッファ監視部300,及び各ポリサは上記と同様の処理を繰り返す。
ポリサテーブル301にはユーザ毎(ポリサ毎)のABS変更回数と変更値を記録するが,この記録によりユーザ毎のトラフィック使用状況を確認することができる。これにより,変更頻度の高いユーザ同士の集約を避け,PIRを守るユーザと混在させる等,将来的なネットワーク拡大時の判断基準として利用することができる。
図3に示す処理フローにより,複数ポリサから集約されるシェーパのバッファに閾値を下位閾値と上位閾値の2段階与えておき,バーストトラフィックが複数ユーザで同時に発生し,バッファ使用量が下位閾値を越えた場合,バッファ使用率とPIRから算出した最も大きなバーストトラフィックを流しているポリサのABSを自動的に半減させ,バッファ使用量が下位閾値を下回るまで,最もバーストトラフィックを流しているポリサを順次算出し,ABSを半減させ続け,最終的にバッファ使用量が下位閾値を下回った時点で全てのポリサのABS値を元に戻す。また,上記図3の処理フローには示されてないが,急激なバーストトラフィックの流入によって,バッファ使用量が上位閾値を越えてしまった場合には,該当シェーパ配下のポリサのABSを全て最小値(BBS)に設定し,バーストトラフィックを最小化する。
また,ABSやBBSの適用可否,および初期値の設定はユーザにより設定可能であり,尚且つユーザがPIRを設定した時点でABSの初期値を自動設定する機能を有することで,これまで使われてきた機能も利用することが可能である。
以上の動作によって,トラフィック量が非同期であり,バースト的なトラフィックが頻発するイーサのネットワークにおいて,ユーザは他ユーザのトラフィックを侵害せず,最適なバーストサイズを一意に決定することなく,PIRのみを意識してネットワークの構築及び運用が可能となる。また,同時にシェーパに有するバッファは,全てのユーザのMBSを許容するだけの容量を有して非効率的な運用を行うことなく,バッファ容量と回路コストの軽減が可能となる。
上記図3の処理におけるポリサに対するABS半減方法では,ABS半減時にトークンバケット方式によるトークンは減らさないで,その時に蓄積された(残った)トークンはそのまま残してバーストトラフィックの送信のために全部流し切る動作になるが,ABSを半減させた時点で,その時に残っていたトークンを全て無くすようにすることができる。その場合,ABSを半減した瞬間から,バーストトラフィックは停止し,PIRのレートでのみトラフィックが流れることになる。
図4はABS半減時のトークンの扱い方法の説明図である。図4のA.はポリサの元のABSであり,この例では10Mbyteであり,この時点でのトークン量(蓄積されたトークンのカウント量)が2Mbyteとすると,ABS半減通知を受けると,トークンバケットのバケットの大きさ(ABS)は5Mbyteに半減し,トークンは減らさないため2Mbyteである。図4のB.はポリサの元のABS及びトークン量は上記A.の場合と同じであるが,ABS半減通知を受け取った時点で,トークンが残っていても,ABSは半減するが,トークンを無くしてしまう。この場合,ポリサはそのPIRの値に制限されて送信を行う。
なお,各ポリサでPIRを設定する場合に,そのPIR値での,TCPスループットが十分に出力される最小のABSを初期値として自動設定するようにしてもよい。
図5,図6を用いて具体的な設定例であり,図5はネットワークの構成例,図6は図5の構成例におけるABS自動設定の流れである。
図5には上記図1に示す構成要素の中の主要な部分だけを示し,1はL2SW,20a〜20dはポリサA〜ポリサD,30aはシェーパ,302はバッファ,4a〜4dはユーザ端末A,B,C,D,5は送信先のユーザ端末Yである。図6は図5の構成におけるポリサテーブルの変化の具体例を示す。
図5の例では,ポート数8(図5では入力側4,出力側1の合計5だけ示す)のL2SWにユーザ端末A〜Dが収容されており,全てのユーザは一つの出力先のユーザ端末Yと通信を行うことができる設定となっている。各ユーザ端末A〜DはそれぞれポリサのPIRにより帯域制御を受けており,図6に示すポリサテーブルの(1) に示すように,順に50Mbps,10Mbps,1Mbps,0.5Mbpsのレートを割り当てられている。それぞれMBSは10Mbyteとし,ABSの初期値は,ユーザ端末A,B,CがMBS=ABSとして10Mbyteが与えられている。ユーザ端末Dは初期値の自動設定機能を設定しており,3Mbyteを与えられているものとする。シェーパのバッファ302は全ポート数のMBS総計80Mbyteの半分である40Mbyteとし,下位閾値は20Mbyte,上位閾値は30Mbyteとする。ここまでの設定における各ポリサPIR,ABS,バッファ使用量のテーブルが図6の(1) である。
ユーザ端末Aとユーザ端末Y,ユーザ端末Bとユーザ端末Yのそれぞれが1対1でのバーストトラフィックを別々のタイミングで実行した場合,バッファはその都度最大10Mbyteまで使用され,通信終了と共にバッファは空になる。また,2ユーザまで同時にバーストトラフィックを流したとしても,バッファは最大20Mbyteまでの使用に留まるため,ABSを半減させることはなく,各数値は図6の(1) のままである。
ここで,ユーザ端末A,B,Cが同時にバーストトラフィックを流してバッファの下位閾値を越えた場合が図6の(2) に示され,バッファ使用量のテーブルを参照して各ポリサのバッファ使用量を読み出し,各ポリサPIR値とでポリサ毎のバーストトラフィックの量を算出し,最も多くのバーストトラフィックを流しているポリサに対してABSを半分にするよう要求する。これにより,図6の(3) に示すようにポリサBのABSが半減される。このABS半減完了通知を受け取った後,バッファ使用量が下位閾値を下回っていなければ,改めてバーストトラフィック量を算出し,その段階で最もバーストトラフィックの大きいポリサCのABSを半減させる。この場合,図6の(4) に示すようにポリサCのABSが半減される。この図6の(4) の状態になると,バッファ使用量が下位閾値(20Mbyte)を下回ったため,ABSを初期値に戻し,図6の(1) の状態になる。
次に図6の(1) の状態の時,全てのポリサA〜Dが同時にバーストトラフィックとなってABS値フルでバッファに流してきた場合,図6の(5) に示すようにバッファの上位閾値である30Mbyteを越えて33Mbyteまで使用することになる。この場合,シェーパからポリサへABSをBBSまで落とす要求を出し,シェーパ配下の全ポリサのABSは予め設定されているBBSまで落とされる。BBS算出方法は次の通りである。
(下位閾値=20M)/(A,B,C,Dの4ユーザ)=20/4=5
この計算式より,A,B,C,DのABSはそれぞれ5,5,5,3(Mbyte)となる。但し,DのABSはBBS計算結果よりも小さいため,設定変更はしないものとする。
この動作によって,シェーパは以下のポリサABS総計は下位閾値まで下がり,図6の(6) の状態になる。一旦ABSが下がってしまえば,その後のトラフィックはPIRに抑えられるため,バッファ使用量が下位閾値を越えることはない。従って,一旦ABSに設定し,設定完了通知を全てのポリサから受け取った後は,全てのABSを初期値まで戻し,図6の(1) の状態になる。
(付記1) 複数のポートへ入力するユーザ端末からのフレームを受け取るポリサと,複数ポリサからの出力を集約して出力ポートに出力するシェーパとを備えるレイヤ2スイッチにおけるポリサバーストサイズ自動設定方式において,前記ポリサはトークンバケット方式によりフレームを流し,ユーザ毎に決められた最大バーストサイズを初期値として設定され,動作中に変動の上限値を設定可能な自動バーストサイズ設定部と,最大情報速度設定部とを備え,前記シェーパはポリサから入力するフレームを格納するバッファとバッファ監視部を備え,前記バッファにバッファ使用率の上位閾値と下位閾値を保持する保持部を設け,前記バッファ監視部は,シェーパ配下のポリサ毎のバッファ使用量を含むポリサ情報を保持するポリサテーブルを備え,前記バッファでバッファ使用率が前記下位閾値を越えていることを検知すると,前記ポリサテーブルを参照してバーストトラフィック量の大きなポリサに対してバーストサイズの半減指示を発生し,前記ポリサは前記半減指示を受け取ると前記自動バーストサイズ設定部の設定値を半減し,その値に従って入力帯域を制限することを特徴とするポリサバーストサイズ自動設定方式。
(付記2) 付記1において,前記バッファ監視部は,各ポリサのバーストトラフィック量を,次の計算式 (物理帯域−最大情報速度)×(バッファ使用量/バッファ総容量) により求めて,最も大きいバーストトラフィック量のポリサを検出することを特徴とするポリサバーストサイズ自動設定方式。
(付記3) 付記1において,前記自動バーストサイズの値を半減したポリサは,半減完了通知を前記シェーパのバッファ監視部に通知し,前記バッファ監視部は前記ポリサテーブルの情報を書換え,更にバッファ使用率が前記下位閾値を越えているか判別し,越えている場合は他のポリサに対し自動バーストサイズ設定部の設定値を半減する通知を出力し,前記下位閾値を下回った場合は全てのポリサの自動バーストサイズを初期値に戻す指示を出力することを特徴とするポリサバーストサイズ自動設定方式。
(付記4) 付記1において,前記バッファ監視部は,前記バッファでバッファ使用率が前記上位閾値を越えたことを検知すると,当該シェーパ配下の全てのポリサの自動バーストサイズ設定部の設定値を最小値に設定して,バーストトラフィックを最小化することを特徴とするポリサバーストサイズ自動設定方式。
(付記5) 付記4において,前記バーストサイズの最小値は前記下位閾値を配下のポリサの個数で除算した値とすることを特徴とするポリサバーストサイズ自動設定方式。
(付記6) 付記1において,前記バッファ監視部は,ポリサに対してバーストサイズの半減指示を出力する毎に,前記ポリサテーブルに自動設定回数を加算して,変更頻度の高いユーザを識別可能にすることを特徴とするポリサバーストサイズ自動設定方式。
(付記7) 付記1において,前記自動バーストサイズ設定部の設定値を半減した時,トークンバケット方式により入力帯域を制限する際に,単にバケットのサイズを小さくするか,バケット内のトークンを空にしてバーストを止めるか,前記最大情報速度設定部に設定されたレートまで落とすかの何れかにより実現することを特徴とするポリサバーストサイズ自動設定方式。