パケットスケジューリング装置
【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ATM網のようなパケット網においてバッファリングされたパケットを選択出力するためのパケットスケジューリング装置に関する。
【0002】
【従来の技術】ATM(Asynchronous Transfer Mode:非同期転送モード)方式を用いたパケット網では、セルと呼ばれる53オクテットの固定長のパケットが伝送される。ATM方式においては、セルのヘッダ部に書かれたVCI(Virtual Channel Identifier:バーチャルチャネル識別子)、VPI(Virtual Path Identifier :バーチャルパス識別子)と呼ばれる識別子によりコネクションが識別される。
【0003】また、ATM方式ではコネクションが属するサービスクラスが定義される。サービスクラスには、CBR(Constant Bit Rate :固定ビットレート)、実時間VBR(Variable Bit Rate :可変レート)、非実時間VBR、ABR(Available Bit Rate:アベイラブル・ビットレート)、UBR(Unspecified Bit Rate:アンスペシファイド・ビットレート)がある。そして、これらの各サービスクラスに対して、必要なセル廃棄率やセル遅延に関するQOS(Quality of Service:サービス品質)が規定される。すなわち、CBR、実時間VBRおよび非実時間VBRでは、セル廃棄率、セル遅延の両方に関する要求値が規定される。ABRではセル廃棄率に関する要求値のみ規定され、UBRではQOSは規定されない。
【0004】ユーザは、コネクション設定時にコネクションのトラヒック特性に関するパラメータを網に申告する。網はこの申告パラメータを守ってセルを送出するコネクションに対して、要求するQOSを保証できる場合にコネクションを設定する。申告パラメータとしては、CBRに関してはピークセルレートが、実時間VBRおよび非実時間VBRに関してはピークセルレート、平均セルレートや最大バースト長がそれぞれ用いられる。
【0005】網は、これらの申告パラメータ通りにセルを送出しているコネクションに対しては、たとえパラメータに違反して送出するコネクションがあっても、その影響を受けずにQOSを保証する必要がある。このための制御として、網の入口でコネクションの送出レートを監視し、パラメータに違反してセルを送出するコネクションに対しては入力規制を行なうUPC(Usage Parameter Control :使用量パラメータ制御)がある。UPCを適切に行なえば、ATM交換機は複数のコネクションのセルを単一もしくはクラス別のFIFO(First-In First-Out:先入れ先出し)キューにより管理することで、申告パラメータ通りにセルを送出しているコネクションに対して、他のコネクションの影響を受けずにQOSを保証することができる。
【0006】しかし、ABRのように端末が送出可能なセルレートがコネクション接続中に網の状態によって動的に変動する場合には、正確なUPCは難しいため、他のコネクションの影響を受けやすくなる。また、UBRに対してはUPCを行なうことを想定していないが、UBRクラス内のコネクション間で、できるだけ公平に帯域を使用するような制御を行なうことが望ましい。このため、ABR/UBRに対しては、単一もしくはクラス別のFIFOキューによる管理よりも、コネクション毎にキューを設けて、複数のキューの間でパケットのスケジューリングを行なうことが必要となる。
【0007】このパケットスケジューリング方式として、あるクラスのコネクション間で全て等しい割合で公平にサービスを行なうFQ(Fair Queueing )と呼ばれる方式が文献1:John B.Nagle, "On Packet Switches with Infinite Storage", IEEETransactions on Communications, Vol. COM-35, No.4,pp.435-438,April 1987. で提案されている。FQ方式は、アクティブな(空でない)キューをラウンドロビンでサービスすることにより実現されるものであるが、コネクション毎に要求される帯域が異なる場合には適当でない。また、パケットが可変長である場合にはパケット長を考慮する必要がある。
【0008】そこで、コネクション毎に各々の使用帯域に関する重みを与え、重みに応じた割合でパケット長を考慮して公平にキューのサービスを行なうことでパケットのスケジューリングを行なうWFQ(Weighted Fair Queueing)と呼ばれるスケジューリング方式に関する検討がなされている。WFQのアルゴリズムについては、SCFQ(Self Clocked Fair Queueing)と呼ばれるアルゴリズムが文献2:S.Golestani, "A Self-Clocked Fair Queueing Scheme for Broadband Applications", In Proc. of INFOCOM '94,pp.636-646,1994. で提案がなされている。また、Virtual Clock (バーチャルクロック)と呼ばれる同様のアルゴリズムが文献3:L.Zhang, "Virtual Clock: A New Traffic Control Algorithm for Packet Switcing Networking", In Proc. of SIGCOMM '90pp. 19-29, 1990. で提案されている。
【0009】今、パケットスケジューリング装置がコネクション毎にキューを持ち、コネクションは識別子により識別されるものとすると、SCFQではコネクションi毎に使用帯域に比例した重みwiと変数Fiを持ち、パケットがパケットスケジューリング装置に到着すると変数Fiの値の更新を行ない、更新した変数Fiを到着パケットと一緒にキューに格納する。パケット出力時には、アクティブなキューの先頭のパケットの変数Fiの中から最小のFiを持つコネクションのパケットをサービスする。変数Fiの更新は、Fi =L/wi+max(Fi,v(ta))
に従って行なわれる。但し、Lは到着パケットのパケット長、taはパケットの到着時刻、v(ta)は時刻taにおいてサービス中またはサービス直後のコネクションjのパケットの変数Fjの値を返す関数である。
【0010】
【発明が解決しようとする課題】しかしながら、上述したSCFQやバーチャルクロックのようなアルゴリズムによるパケットのスケジューリング方式では、2つの問題点がある。第1の問題点は、重みの差が大きいコネクションのパケット同士がスケジューリングされる場合に、小さい時間スケールで公平になりにくいことである。例えば、重み1のコネクション100本と、重み100のコネクション1本のパケットがぞれぞれ1個ずつ合計101個、各コネクション対応のキューに存在し、その状態で重み100のコネクションのパケットが連続して到着するものとする。このとき公平を期するとすると、理想的には重み1の100本のコネクションのパケットと重み100の1本のコネクションのパケットは交互にスケジューリングされるべきにもかかわらず、SCFQやバーチャルクロックでは、重み100のコネクションから先に最大100個のパケットが出力された後で、重み1のコネクションのパケットが出力される。すなわち、重みの大きいコネクション群と重みの小さいコネクション群があって、それぞれのコネクション群の重みの和が等しい場合には、常に重みの大きい方のコネクション群のパケットが小さい時間スケールで優位に扱われてしまうという不都合がある。
【0011】第2の問題点は、SCFQやバーチャルクロックでは前述したようにパケットのスケジューリング時に変数Fiの最小値を計算で求める必要があるが、このための計算時間がコネクション数とともに増大することである。今、変数Fiを常にソートしておくものとすると、コネクション数がnのときに最小値を求めるのに必要な計算時間は、ソートされたFiの系列に新しいFiを挿入する時間、すなわちo(log2 n)のオーダとなる。ATMの場合、l物理リンクあたりの最大のバーチャルコネクション(VC)数n=4096をサポートするには、変数Fiの最小値を計算するとき最大log2 4096=12回のサーチが必要となる。このような計算時間の増大から、パケットのみでなくクラスおよびバーチャルパス(VP)のスケジューリングも行なう場合や、リンク速度が大きい場合を考慮すると、SCFQやバーチャルクロックは実装が困難である。従って、スケジューリングに必要な処理時間がコネクション数に関係なく小さい値であることが望まれる。
【0012】一方、米国特許第5,379,297号明細書"Concurrent Multi-Channel Segmentation and Reassmbly Processors for Asynchronous Transfer Mode" には、ピークレート毎にキューを構成することにより、コネクション数に関係ない処理時間で複数のキューの間でWFQを行なう方式が開示されているが、この方式では任意のピークレート(重み)の組み合わせをサポートできない。
【0013】本発明は、上記のような従来技術の問題点を解決し、コネクションの重みによらず公平なスケジューリングを可能としたパケットスケジューリング装置を提供することを目的とする。
【0014】また、本発明は受信パケットが固定長パケットの場合に、スケジューリングに必要な処理時間がコネクション数に関係なく一定値となるようなパケットスケジューリング装置を提供することを目的とする。
【0015】
【課題を解決するための手段】上記の課題を解決するため、本発明は入力されるパケットを一時的に蓄積するための動的に変更可能な重みがそれぞれ設定された複数のパケット蓄積部と、パケット受信時に複数のパケット蓄積手段の少なくとも一つにパケットを入力するパケット入力部と、複数のパケット蓄積部にそれぞれ蓄積されたパケットを読み出す順序を指定するためのスケジューリング情報を該パケット蓄積部のパケット蓄積量と該パケット蓄積部に設定された重みとに基づいて管理するスケジューリング情報管理部と、パケット送信時にスケジューリング情報管理部が管理するスケジューリング情報を基に所望のパケット蓄積部から所望のパケットを出力するパケット出力部とを有することを基本的な特徴とする。
【0016】このように本発明では、スケジューリング情報管理部において、パケット蓄積部からパケットを読み出す際に用いるスケジューリング情報をパケット蓄積量とそのパケット蓄積部に設定された重みと基づいて管理するため、アクティブなパケット蓄積部に対応する重みの値だけでなく、アクティブなパケット蓄積部のパケット蓄積量も考慮してパケットのスケジューリングが行なわれる。
【0017】ここで、それぞれのパケット蓄積部に設定される重みとして、例えばパケット蓄積部に対応したコネクションに設定されている帯域の重みを用いた場合、パケット蓄積量に比例した評価値が重み以下のコネクションは、重みに相当する分の帯域をフルに使用せず、他のコネクションに帯域を与えることができるため、コネクションの重みによらず公平なスケジューリングが可能となる。すなわち、重みの大きいコネクション群と重みの小さいコネクション群が存在し、それぞれのコネクション群の重みの和が等しい場合においても、重みの大きいコネクション群が小さい時間スケールで優位に扱われることが抑制される。また、任意の重みの組合せをサポートできる。
【0018】また、本発明は特に固定長パケットをスケジューリングする際、パケット蓄積量が蓄積されたパケットの数に比例することから、スケジューリング情報管理部において複数のパケット蓄積部にそれぞれ対応したスケジューリング情報を該パケット蓄積部スケジューリング情報をパケット蓄積部のパケット蓄積量とそのパケット蓄積部に設定された重みのうちの小さい方の値に等しい個数だけ常に保持することを特徴とする。
【0019】この場合、スケジューリング情報管理部へのスケジューリング情報の入力はパケットの受信時と送信時に行ない、その際に必要な処理としては基本的にそのパケットを蓄積しているパケット蓄積部のパケット蓄積数と設定された重みを比較して小さい方を調べるのみでよい。このようにすることにより、パケットが固定長であることを利用してスケジューリングに必要な処理時間がコネクション数に依存せず一定のパケットスケジューリングを実現できる。また、このようにスケジューリング情報管理部が保持するスケジューリング情報の個数をパケット蓄積数と重みのうちの小さい方の値を上限とすることにより、パケット蓄積量と重みの両方を考慮したパケットスケジューリングが上記と同様に可能になるため、重みによらず公平なスケジューリングを行なうことができる。さらに、スケジューリング情報管理部から読み出すスケジューリング情報の選び方を変えれば、様々なポリシーに基づいたパケットスケジューリングが可能となる。
【0020】また、本発明では複数クラスおよび仮想パスのスケジューリングをサポートするパケットスケジューリング装置を実現する場合、スケジューリング情報管理部において、パケットが属するクラス別または仮想パス別にスケジューリング情報を管理することを特徴とする。さらに、クラス別または仮想パス別に重みを設定し、これを各クラスまたは仮想パス内のコネクション別のキュー長が0から正の値に変化したときまたは、正の値から0に変化したときに変更することにより、クラス間または仮想パス間でのパケットスケジューリングと同一クラスまたは同一仮想パス内のパケットスケジューリングの両方において、上述と同様の作用が得られる。
【0021】スケジューリング情報管理部は、少なくとも一つのFIFOキューあるいはランダムアウトキューで構成される。スケジューリング情報管理部をFIFOキューで構成した場合は、スケジューリング情報管理部がパケットをスケジューリングするために必要な処理時間がコネクション数に関係なく一定となり、かつスケジューリング情報管理部のハードウエア構成も簡単になる。また、スケジューリング情報管理部をランダムアウトキューで構成した場合は、スケジューリング情報管理部がパケットをスケジューリングするために必要な処理時間がコネクション数に関係なく一定となる上、入力トラヒックにほとんど依存せず確率的に公平なスケジューリングが可能となる。
【0022】
【発明の実施の形態】
(第1の実施の形態)図1に、本発明の第1の実施形態に係わるパケットスケジューリング装置の構成を示す。
【0023】本実施形態におけるパケットスケジューリング装置11は、パケット蓄積部である複数のパケットキュー12,13,14と、パケット受信時にパケットキュー12,13,14にパケットを入力するためのパケット入力部15と、パケットキュー12,13,14に蓄積されたパケット18を読み出す順序を指定するためのスケジューリング情報を管理するスケジューリング情報管理部16と、パケット送信時にスケジューリング情報管理16が管理するスケジューリング情報に基づきパケットキュー12,13,14から所望のパケットを読み出して出力するパケット出力部17と、受信パケットをパケットスケジューリング装置11に入力するためのパケット入力線19と、送信パケットをパケットスケジューリング装置11から出力するためのパケット出力線20を有する。
【0024】次に、パケットスケジューリング装置11の動作を説明する。パケットスケジューリング装置11で受信されたパケットは、パケット入力線19からパケット入力部15に入力される。パケット入力線19は一般に複数本存在する。パケット入力部15は、パケット入力線19から入力されたパケットを該パケットのヘッダ情報を基にパケットキュー12,13,14のうちの所望の一つに入力する。ここで、受信パケットがユニキャストパケットの場合には、いずれか1つのパケットキューにパケットが入力されるが、パケットスケジューリング装置11でマルチキャストをサポートする場合には、マルチキャストすべき複数のパケットキューにパケットが入力される。
【0025】パケットキュー12,13,14は、VC(バーチャルチャネル)コネクション毎、トラヒッククラス毎、出力リンク毎、あるいはこれら2つ以上の組み合わせ等、種々の単位で設けることができるが、本実施形態ではVCコネクション毎にパケットキュー12,13,14が設けられているものとする。これらのVCコネクションには、それぞれ要求された帯域が設定されている。
【0026】スケジューリング情報管理部16は、パケットキュー12,13,14に蓄積されているパケットを読み出す順序を指定するためのスケジューリング情報であるVCI(バーチャルチャネル識別子)をパケット入力部15から入力し、パケット出力部17へ出力する。この際、スケジューリング情報管理部16は各パケットキュー12,13,14に対して、そのパケットキューのパケット蓄積量(以下、キュー長という)と、そのパケットキューに対応した重みとに基づいてスケジューリング情報であるVCIを管理し、これらキュー長と重みに従ってパケット出力部17へのスケジューリング情報の出力順序を決定する。
【0027】本実施形態では、各パケットキューに対応したVCコネクションに設定された帯域の比に等しい重みを各パケットキューに割り当てる。ここで、VCI=iで識別されるパケットキューに対応するVCコネクションに設定された帯域の重みをwi、同パケットキューのキュー長をバイト数で表わしてqiとする。スケジューリング情報管理部16は、VCI=iのパケットがパケット入力部15に到着したとき、あるいはVCI=iのパケットがパケット出力部17から出力されるときに式(1)で表される変数Fiを更新し、次に出力すべきパケットのVCIを決定する。
【0028】Fi=f(qi,wi)
ここで、関数fはスケジューリングのポリシーに依存して決定される。例えば関数fを式(2)とすれば、キュー長qiが重みwi以下の場合には、重みwiに応じた帯域はVCコネクションiに与えられず、他のコネクションに帯域を与えることが可能となる。
【0029】
【数1】
なお、関数fを式(3)とすれば、スケジューリングがキュー長qiに依存しない従来のSCFQ方式となる。
【0030】
【数2】
【0031】但し、式(2)(3)においてLは到着パケットのパケット長、Lminはパケットスケジューリング装置11で扱う最小パケット長、taはパケットの到着時刻、v(ta)は時刻taにおいてサービス中またはサービス直後のVCコネクションjのパケットの変数Fjの値を返す関数である。
【0032】パケット出力部17は、パケット送信時にスケジューリング情報管理部16からVCIを1つ取り出した後、そのVCIに対応するパケットキューからパケットを取り出してパケット出力線20へ出力する。
【0033】このように本実施形態によれば、スケジューリング情報管理部16において、スケジューリング情報であるVCIをパケットキュー12,13,14のキュー長と設定された重みとに基づいて管理するため、アクティブなパケットキューに設定されている重みの値だけでなく、そのパケットキューのキュー長も考慮したきめ細かなパケットスケジューリングを行なうことができる。
【0034】従って、各パケットキュー12,13,14に対応するVCコネクションに設定されている帯域の重みを各パケットキュー12,13,14に設定すれば、キュー長に比例した評価値が重み以下のVCコネクションが重みに相当する分の帯域をフルに使用せず、他のコネクションに帯域を与えることができるため、重みの大きいコネクション群と重みの小さいコネクション群が存在し、それぞれのコネクション群の重みの和が等しい場合においても、重みの大きいコネクション群が小さい時間スケールで優位に扱われることが抑制され、コネクションの重みによらず公平なパケットスケジューリングが実現されるという効果が得られる。
【0035】(第2の実施形態)次に、第1実施形態をより具体化した第2の実施形態に係わるパケットスケジューリング装置について図2を用いて説明する。本実施形態はATMセルのような固定長パケットのスケジューリングを行なう例であり、M個のパケットキューを有し、またスケジューリング情報としては第1の実施形態と同様にVCIを用いるものとする。図2において、図1R>1と相対応する部分には同一符号を付して第1の実施形態との相違点を中心に説明する。
【0036】本実施形態においては、スケジューリング情報管理部16はM個のパケットキュー12,13,14に対応したVCI21を各パケットキューに対してキュー長と設定された重みのうち小さい方の値に等しい個数だけ常に保持する。
【0037】また、本実施形態では各パケットキュー12,13,14に対応するコネクションにそれぞれ設定された帯域の比に等しい重みw1,w2,wMを各パケットキュー12,13,14に設定する。ここで、VCI=iで識別されるパケットキューに対応するコネクションに設定された帯域の重みをwiとし、該パケットキューのキュー長をqiとする。
【0038】スケジューリング情報管理部16は、保持されているスケジューリング情報であるVCI=iの個数をniとすると、以下の関係式が常に成立するように制御される。
【0039】
ni=min(qi,wi) …(4)
このとき、f(qi,wi)=min(qi,wi)となる。ここで、パケットキュー12,13,14に対して設定される重みをw1=w2=wM=1とおけば、文献4:John B.Nagle, "On Packet Switches with Infinite Storage", IEEE Transactions on Communications, Vol. COM-35, No.4,April 1987. と同様のFair Queueing が実現できる。
【0040】また、w1=2,w2=1,wM=3とすると、図2においてはパケットキュー12,13,14のキュー長はq1=3,q2=2,qM=0であるため、n1=2,n2=1,nM=0となる。なお、図2においてパケットキュー12,13,14の中に記された○印がパケットを表わし、この○印の数がキュー長を評価している。
【0041】パケット出力部17は、パケット送信時にスケジューリング情報管理部16からVCIを1つ取り出した後、そのVCIに対応するパケットキューからパケットを取り出してパケット出力線30からパケットを出力する。
【0042】図3に、本実施形態におけるスケジューリング情報としてVCIを用いるスケジューリング情報管理部16の構成例を示す。このスケジューリング情報管理部16は、プロセッサ(MPU)31、ROM32、VCIメモリ33、キュー長メモリ34、重みメモリ35、状態レジスタ36、入力VCIレジスタ37、出力VCIレジスタ38、データバス39および制御バス40を有する。これら各部の機能は、次の通りである。
【0043】MPU31は、ROM32にプログラムされた命令を逐次実行する。VCIメモリ33は、スケジューリング情報であるVCIを格納するためのキューであり、RAMによって構成される。スケジューリング情報管理部16がFIFOキューで構成されている場合には、VCIメモリ33はリンクドリストまたはリングバッファのいずれの方式で実装してもよい。
【0044】キュー長メモリ34は、パケットキュー12,13,14毎の現在のキュー長を記憶するメモリであり、RAMによって構成される。重みメモリ35は、パケットキュー12,13,14毎に設定されている重みを記憶するメモリであり、RAMによって構成される。
【0045】状態レジスタ36は、スケジューリング情報管理部16の動作状態を示す情報を格納するためのレジスタであり、図示しない外部装置により書き込みがなされ、MPU31が該レジスタ36の値を参照する。なお、各セルスロットにおいて、入力セルがある場合には状態レジスタ36の値は1となり、セル入力処理終了後状態レジスタ36の値は2となる。
【0046】入力VCIレジスタ37は、スケジューリングされるパケットのVCIを格納するためのレジスタであり、外部装置により書き込みがなされ、MPU31が該レジスタ37の値を参照する。
【0047】出力VCIレジスタ38は、出力されるパケットのVCIを格納するためのレジスタであり、MPU31から書き込みがなされ、図示しない外部装置が該レジスタ38の値を参照する。出力VCIレジスタ38に負の値が書き込まれる場合は、パケットは出力されないものとする。
【0048】MPU31と、各メモリ33,34,35および各レジスタ36,37,38との間でやりとりされるデータは、データバス39上を流れる。また、制御バス40を用いて、アドレス指定等のデータアクセスのための制御情報のやりとりを行なう。
【0049】次に、図4に示すフローチャートを用いて図3のスケジューリング情報管理部16内で実行されるスケジューリングアルゴリズムを説明する。図4において、Enqueue(i)はVCI=iをVCIメモリ33に書き込む操作を表し、DequeueはVCIメモリ33からVCIを読み出す操作を表す。なお、図4のスケジューリングアルゴリズムはコード化されて図3のROM32内に格納される。
【0050】まず、状態レジスタ36の値sをMPU31で参照し(ステップS101)、sが1,2のいずれか、またはsが1、2のいずれでもないかどうかを調べる(ステップS102)。s=1であれば、VCI入力レジスタ37の値iを参照し(ステップS103)、VCI=iのパケットキューのキュー長+1をqとし(ステップS104)、またVCI=iのパケットキューに設定された重みをwとして(ステップS105)、q、wの大小関係を調べる(ステップS106)。ここで、q≦wの場合にはステップS107においてEnqueue(i)、つまりVCI=iをVCIメモリ33に書き込み、その後にステップS108に移り、またq>wの場合には直接ステップS108に移る。ステップS108では、VCI=iのパケットキューのキュー長をqとする。
【0051】一方、ステップS102においてs=2であれば、ステップS109においてi:=Dequeue、つまりVCIメモリ33からVCIを読み出した後、VCI=iのパケットキューのキュー長−1,0のうち大きい方をqとし(S110)、さらにVCI=iのパケットキューに設定された重みをwとして(S111)、q,wの大小関係を調べる(S112)。ここで、q≧wの場合にはステップS113においてEnqueue(i)、つまりVCI=iをVCIメモリ33に書き込み、その後にステップS114に移り、またq<wの場合には直接ステップS114に移る。ステップS114では、VCI=iのパケットキューのキュー長をqとし、さらに次のステップS115でVCI出力レジスタ38の値をiとする。
【0052】そして、ステップS102においてsが1、2のいずれでもない場合と、ステップS108,S115の処理の終了後、ステップS116で状態レジスタ36の値を0としてステップS101に戻り、以上の処理を繰り返す。
【0053】このようなアルゴリズムにより、VCIメモリ33内の各VCI=iの個数について常に式(4)が成立する。このように本実施形態では、スケジューリング情報管理部16においてVCIメモリ33に各パケットキュー12,13,14毎にキュー長と設定されている重みとを比較して、これらのうち小さい方の値同じ個数のVCI21をスケジューリング情報として保持するため、第1の実施形態の効果に加えて、スケジューリングに必要な処理時間がVCコネクション数に依存せず一定のパケットスケジューリングを実現できるという効果がある。
【0054】(第3の実施形態)次に、第2の実施形態においてスケジューリング情報管理部16をFIFOキューで構成した場合の第3の実施形態に係わるパケットスケジューリング装置の構成と動作を図5を用いて説明する。図5において、CVI=1,1,2の順番でパケットキュー12,13,14からパケットが出力される。ここで、スケジューリング情報管理部16がリングドリストを用いたFIFOキュー構成の場合には、図3に示したフローチャート中のEnqueue(i)はリストの最後尾にiを追加する操作を表わし、Dequeueはリストの先頭から値を取り出すとともに、リストの先頭を更新する操作を表す。リストが空の場合は、Dequeueは負の値とする。
【0055】まず、パケットがパケット入力部5から入力された場合の動作例を述べる。図5(a)の状態でVCI=Mがパケット入力部15から入力された場合、パケット入力直後はVCI=Mに対応するパケットキュー14のキュー長qMと、このパケットキュー14に設定された重みwMの大小関係はqM=1<wM=3であるため、VCI=Mがスケジューリング情報管理部16の最後尾に追加される。また、図5(a)の状態でVCI=1のパケットがパケット入力部15から入力された場合、パケット入力直後はVCI=1に対応するパケットキュー11のキュー長q1と、このパケットキュー11に設定された重みw1の大小関係はq1=4>w1=2であるため、VCI=1はスケジューリング情報管理部16の最後尾に追加されない。
【0056】次に、パケットがパケット出力部17から出力された場合の動作例を述べる。ここで、w1=1,wM=3に設定されているものとする。図5(a)の状態でVCI=1のパケットがパケット出力部17から出力された直後はq1=w1=2であるため、VCI=1はスケジューリング情報管理部16に再度入力される。このとき、VCI=1はスケジューリング情報管理部16の最後尾に追加され、図5(b)の状態になる。次に、図5(b)の状態でVCI=1のパケットがパケット出力部17から出力されるが、パケット出力直後はq1=1<w1=2であるため、VCI=1はスケジューリング情報管理部16に再入力されない。
【0057】このように本実施形態によれば、スケジューリング情報管理部16をFIFOキューで構成したことにより、スケジューリング情報管理部16がパケットをスケジューリングするために必要な処理時間がVCコネクション数に関係なく一定となり、かつスケジューリング情報管理部16のハードウエア構成が簡単になるという効果がある。
【0058】(第4の実施形態)図6に、本発明の第4の実施形態におけるスケジューリング情報管理部16の構成例を示す。なお、スケジューリング情報管理部16はクラス毎にスケジューリング情報を管理するものとする。ここでのクラスは速度クラス、サービスクラス、それらの組合せのいずれでもよい。また仮想パス別にスケジューリング情報を管理する場合についても同様の構成となる。図6において、図3と同一部分に同一符号を付して説明すると、本実施形態においては図3の構成に加えてクラスレジスタ61が新たに設けられる。
【0059】このクラスレジスタ61は、パケットが属するクラスの番号を格納するためのレジスタであり、図示しない外部装置から書き込みがなされ、MPU31が該レジスタ61の値を参照する。また、入力VCIレジスタ37はVCIをクラス別に格納するためのキューであり、RAMにより構成される。入力VCIレジスタ37から読み込まれた入力VCIは、クラスレジスタ61から読み込んだクラス番号のクラスに対応したVCIメモリ33内のキューに書き込まれる。
【0060】次に、図7に示すフローチャートを用いて図6のスケジューリング情報管理部16内で実行されるスケジューリングアルゴリズムを説明する。図7において、Enqueue (c,i)はVCI=iをVCIメモリ33のクラスcに対応するクラス別キューに書き込む操作を表し、Dequeue (c)はVCIメモリ33のクラスcに対応するクラス別キューからVCIを取り出す操作を表す。Select ClassはVCIを出力すべきクラスの番号を返す関数である。但し、クラス別キューが空であれば、クラス番号として負の値を返す。
【0061】まず、状態レジスタ36の値sをMPU31で参照し(ステップS201)、sが1,2のいずれか、またはsが1、2のいずれでもないかどうかを調べる(ステップS202)。s=1であれば、クラスレジスタ61の値cと、VCI入力レジスタ37の値iを順次参照し(ステップS203,S204)、VCI=iのパケットキューのキュー長+1をqとし(ステップS205)、またVCI=iのパケットキューの重みをwとして(ステップS206)、q,wの大小関係を調べる(ステップS207)。ここで、q≦wの場合にはステップS208においてEnqueue (c,i)、つまりVCI=iをVCIメモリ33のクラスcに対応するクラス別キューに書き込み、その後にステップS209に移り、またq>wの場合には直接ステップS209に移る。ステップS209では、VCI=iのパケットキューのキュー長をqとする。
【0062】一方、ステップS202においてs=2であれば、ステップS211においてi:=Dequeue (c)、つまりVCIメモリ33のクラス別キューからVCIを取り出した後、VCI=iのパケットキューのキュー長−1,0をqとし(S212)、またVCI=iのパケットキューの重みをwとして(S213)、q,wの大小関係を調べる(S214)。ここで、q≧wの場合にはステップS215においてEnqueue(c,i)、つまりVCI=iをVCIメモリ33に書き込んだ後にステップS216に移り、またq<wの場合には直接ステップS216に移る。ステップS216では、VCI=iのパケットキューのキュー長をqとし、さらにVCI出力レジスタ38の値をiとする(S217)。
【0063】そして、ステップS202においてsが1、2のいずれでもない場合と、ステップS209,S217の処理の終了後、状態レジスタ36の値を0とし(ステップS218)、ステップS201に戻り、以上の動作を繰り返す。
【0064】Select Classが予め定められた順番で周期的にクラスを選択すれば、時分割多重(TDM)的なクラスのスケジューリングとなる。また、クラスに対してもキュー長と重みのうちの小さい方の値に基づいたWFQを行なう場合には、クラスをスケジューリングするためのクラススケジューリングキューとクラス別セル数カウンタとクラス別の重みとを用意し、Select Classはクラスcのセル数カウンタの値が1以上であれば、クラススケジューリングキューからクラス番号を1個出力するとともに、クラスcのセル数カウンタをデクリメントする。一方、クラスcのセル数カウンタの値が0であれば、負の値を出力する。
【0065】ここで、Enqueue(c,i)は、VCI=iをVCIメモリ33のクラスcに対応するクラス別キューに書き込む操作に加え、クラスcのセル数カウンタをインクリメントし、状態レジスタ31の値がs=1、かつクラスcのセル数が重み以下であるか、またはs=2、かつクラスcのセル数が重み以上である場合にクラス番号cをクラススケジューリングキューに書き込む操作を行なうようにする。
【0066】また、クラスのスケジューリングには、SCFQやVirtual Clockなどの従来方式を用いることも可能である。また、1個以上蓄積されているクラスの中で最も優先度の高いクラスをサービスするような完全優先のクラススケジューリングを行なう場合には、クラス別の重みは必要ない。
【0067】このゆうなアルゴリズムにより、常にVCIメモリ33内のVCI=iの個数について式(4)が成立し、かつクラス毎に独立したスケジューリングが可能となる。
【0068】なお、図7のスケジューリングアルゴリズムは、コード化されて図6のROM32内に格納されているものとする。このように本実施形態によれば、パケットが属するクラス別にスケジューリング情報管理部16でスケジューリング情報であるVCIを管理することにより、クラス間でのパケットスケジューリングと同一クラス内のコネクション間のパケットスケジューリングの両方において、第1〜第3の実施形態と同様の効果を得ることができる。
【0069】(第5の実施形態)次に、本発明の第5の実施形態に係るパケットスケジューリング装置の構成と動作を図8を用いて説明する。
【0070】図8において、図2および図5と同一部分に同一符号を付して説明すると、本実施形態ではスケジューリング情報管理部16内にランダムアウトキュー81,82およびキュー選択部83,84が設けられている。
【0071】キュー選択部83は、スケジューリング情報をランダムアウトキュー81,82のいずれに格納するかを選択する。また、キュー選択部84はランダムアウトキュー81,82のいずれからスケジューリング情報を取り出すかを選択する。ここで、キュー選択部83がランダムアウトキュー81を選択している場合は、キュー選択部84はランダムアウトキュー82を選択し、反対にキュー選択部83がランダムアウトキュー82を選択している場合は、キュー選択部84はランダムアウトキュー81を選択する。このようにキュー選択部83,84は、常に互いに異なるランダムアウトキューを選択するように制御される。なお、ここではランダムアウトキューが2個であるが、さらに多数のランダムキューを設けてもよい。
【0072】ランダムアウトキュー81,82はキュー選択部84によって選択されている場合に、格納しているスケジューリング情報をランダムに出力する。ここで、キュー選択部84によって選択されているランダムアウトキューからスケジューリング情報が全て取り出された場合、キュー選択部83,84はそれぞれ、現在選択されていないランダムアウトキューを選択する。
【0073】スケジューリング情報管理部16の基本動作は、図4に示したフローチャートで表されるが、Enqueue(i)、Dequeueの意味が先の第2の実施形態の場合と異なる。
【0074】図8において、パケットキュー12,13,14はVCI=1,2,MのVCコネクションにそれぞれ対応しており、それらのコネクションの持つ重みをそれぞれw1=2,w2=1,wM=1とする。また、図8(a)の状態でパケットキュー12,13,14にパケットが格納されており、それらのスケジューリング情報がスケジューリング情報管理部16内のランダムアウトキュー81に格納されているものとする。すなわち、キュー選択部83はランダムアウトキュー81を選択し、キュー選択部84はランダムアウトキュー82を選択している。
【0075】パケット出力時点で現在キュー選択部84が選択しているランダムアウトキュー82は空であるため、キュー選択部83はランダムアウトキュー82へ選択を切り替え、キュー選択部84はランダムアウトキュー81へ選択を切り替える。ここで、ランダムアウトキュー81からランダムにVCIを選択した結果、VCI=2が出力されたものとすると、q2=0<w2=1となって、VCI=2はスケジューリング情報管理部16に再入力されないため、パケットスケジューリング装置11は図8(a)の状態から図8(b)の状態に遷移する。
【0076】図8(b)の状態において、VCI=1のパケットキューへ1個パケットが到着した場合、q1とw1の関係から、VCI=1が1個新たにランダムアウトキュー82へ入力され、パケットスケジューリング装置11は図8(b)の状態から図8(c)の状態に遷移する。
【0077】さらに、図8(c)の状態委からVCI=2に対応するパケットキュー13にパケットが1個到着した後、ランダムアウトキュー81から2個の識別子1,Mがランダムに選択された場合には、パケットスケジューリング装置11は図8(c)の状態から図8(d)の状態に遷移する。この際、ランダムアウトキュー81が空になるため、キュー選択部83,84が選択するランダムアウトキューの切替えが起こる。
【0078】このような制御により、例えばw1=100,w2=100のように大きい値を持つ重みに対しては、スケジューリング情報管理部16が第3の実施形態で述べたようなFIFO構成の場合には、短い時間スケールではweightedfairとはなりにくいという欠点が解消され、どのような重みに対しても常に確率的にweighted fairなスケジューリングが可能となる。また、あるランダムアウトキューからスケジューリング情報を出力中は、別のランダムアウトキューへスケジューリング情報が入力されるため、空でない全てのパケットキューの先頭のパケットを一定時間内に出力することが保証される。
【0079】ランダムアウトキュー81,82は図9のようなアルゴリズムで実現可能である。図9において、rは配列、pは配列の終りを示すポインタである。まず、初期化処理として、ポインタpに−1をセットする。Enqueue(i)操作は、ポインタpを1だけインクリメントした後でr[p]:=iとすることにより実現される。次に、Dequeue操作について述べる。まず、ポインタpが−1であればキューが空であるため返り値−1を変数iに記憶する。そうでなければ、0以上p以下の疑似ランダム整数(Random(O,P))をkとし、i:=r[k]によりDequeueの返り値を変数iに記憶した後、r[k]:=r[p]とすることによりキューの最後尾の値を位置kに移し、ポインタpを1だけデクリメントする。最後に、変数iの値を返す。このようなアルゴリズムにより、簡単な構成によりランダムアウトキューの管理ができる。
【0080】(第6の実施形態)図10に、本発明によるパケットスケジューリング装置を出力バッファ型ATMスイッチに適用した実施形態を示す。なお、本発明によるパケットスケジューリング装置は入力バッファ型や共通バッファ型のスイッチアーキテクチャにも適用可能である。
【0081】図10において、セル入力線101−1〜101−Nに到着した固定長パケットであるATMセルは、ATMセルのヘッダ情報を基にスイッチ102で交換出力され、パケット入力線19−1〜19−Nを介して上述したパケットスケジューリング装置11−1〜11−Nに入力される。パケットスケジューリング装置11−1〜11−Nは、パケット蓄積部としてVCコネクション単位のキューを持っており、入力されたセルはそのセルのヘッダに書かれているVCIに対応するキューに格納される。パケットスケジューリング装置11−1〜11−Nは、各セルサイクルにおいて、キューにバッファリングされたセルのうち、1つを選択出力する。
【0082】(第7の実施形態)図11に、本発明において重みが動的に変化する場合のスケジューラのフローチャートを示す。なお、ハード構成は図3のようになる。
【0083】重みが動的に変化する場合には、スケジューリング情報管理手段内のVCI=iの個数は一時的に式(4)を満たさない場合がある。したがって、スケジューリング情報管理手段内のVCI=iの個数niをカウントしておく必要がある。niの変更は、スケジューリング情報管理手段へのスケジューリング情報入力および出力時い行なう。
【0084】また、セル出力時にVCI=iをスケジューリングキューに入れるかどうかを判定する場合には、重みとキュー長を比較せずに、重いとスケジューリングキュー内のVCI=iの個数および、キュー長とスケジューリングキュー内のVCI=iの個数の比較を行ない、wi≧njかつqi≧njのときに、VCI=iがスケジューリングキューに入れられる。これにより、重みが増加した結果、wi>qiとなった場合でもVCI=iはスケジューリングキューに入れられるようになる。
【0085】また、wi,<qiであるときにwiが増加した場合には、重みの増加分だけスケジューリング情報管理手段内のVCI=iの個数も増加させる必要がある。この処理が図11の重み対応処理である。図11においては、重み変更対応処理はセル出力時に行なう例を示しているが、重み変更対応処理をセル入力時に行なうことも、セル入力時および出力時の両方で行なうことも、また、毎セル時間行なうことも可能である。
【0086】重み変更対応処理においては、必要な回数だけEnqueue (i)を実行するとともにniをインクリメントする。ただし、重みの変更幅が大きいほどループの回数も増えるため、1回の処理に対するループの最大回数Cmax を決めておき、Cmax を越える分のループは次以降のセル時間に実行するようにする。
【0087】(第8の実施形態)図12に、本発明において重みが実数値をとり得る場合のスケジューラのフローチャートを示す。なお、ハード構成は図3のようになる。図12においては、重みwiは1以上の実数値をとるものとする。重みとキュー長の比較の際には、winowが使用される。winowの値は、floor(winow)の値がfloor(wi )またはfloor(wi )+1のいずれかの値をとるように、かつwinowの平均値がwi と等しくなるように制御する。ここで、floor(x)は、x以下の最大の整数値を返す関数である。winowの値は動的に変更されるため、第7の実施形態と同様に、スケジューリング情報管理部内のVCI=iの個数niをカウントしておく必要がある。
【0088】VC設定時に、winowの値はwi に初期化され、また、変数fi がwi の小数部分の値に設定される。図12の例では、winowの値の更新はセル出力時に行なわれる。すなわち、winowの値はfi ずつインクリメントされ、その結果、floor(wi )+1以上となった場合には1だけデクリメントされる。この処理が図12の小数点処理である。また、winowの動的な変更に伴い、第7の実施形態と同様に重み変更対応処理が必要となる。図12では、重み変更対応処理の中でwi の代わりにwinowが用いられる。なお、winowの値は小数点処理によって変更されるだけでなく、第7の実施形態のようにwi の動的な変更に伴って変更される場合もあるが、本実施例はそのような変更も許容するような構成となっている。
【0089】なお、小数点処理、および重み変更対応処理はセル出力時だけでなく、セル入力時に行なうことも、セル入力時および出力時の両方で行なうことも、また、毎セル時間行なうことも可能である。このように重みが実数値をとれるようにすることにより、重みの値が大きくならないようにできるためスケジューラの性能劣化を抑えることができる。
【0090】(第9の実施形態)図13に、本発明においてスケジューリング情報管理手段が、パケットが所属するクラス別に設定される重みに基づいてクラスのスケジューリングを行ない、かつ、クラス別の重みをそのクラス内のコネクションのキューの状態に応じて変更する場合の実施形態を示す。
【0091】クラス別スケジューラは速度クラス、QOSクラス、仮想パス、またはそれらの組合せ毎に用意される。クラス別スケジューラは重みとキュー長とを用いたスケジューリングを行なう。クラススケジューラは従来方式のスケジューラでもよい。
【0092】クラススケジューラは各クラスi毎に重みφi を管理する。クラス重みφi は、
となるように制御する。ただし、Bi はクラスiのVCの中でVCキューが空でないVCIの集合である。また、Wi はクラスiに接続中のVCに関するwjの和である。したがって、パケットキューが空のVC数が多いほどφi は小さくなる。これにより、スケジューラを階層化した場合でもクラススケジューラはクラス内のVCの状態を考慮したスケジューリングが可能になる。
【0093】ただし、φi の値が変わった場合には、それに合わせてクラススケジューラ内の状態も更新する必要がある。例えば、クラススケジューラがSCFQのようにバーチャルタイムを用いたスケジューラである場合、スケジューリング情報の再ソーティングが行なわれる。この場合のフローチャートを図14に示す。ハード構成は図6のようになる。
【0094】図14では重みが実数値をとることができ、また、動的な重みの変更も可能である。まず、初期化処理ですべてのクラスi重みの和Wi およびキュー長が0にリセットされる。
【0095】次に、クラスiのVCI=jのVCの接続要求があった場合には、qi 、niを0にリセットし、重みの小数部分をfj に設定し、重みの初期値wjnowをwjに設定する。また、クラスiの重みをwj だけインクリメントする。また、クラスiのVCI=jのVCの切断要求があった場合には、クラスiの重みをwj だけデクリメントする。
【0096】セル入力時には、クラスiのVCI=jのVCのキュー長qj が0である場合には、クラスiの重み現在のφ1 の値を変数φ´1 に記憶するとともに、φ1 をwj /Wi だけインクリメントする。次に、φ1 の変更に伴いクラスiに対する評価値Fi の値の更新を行なう。更新される値は現在のFi の値に対して1/φ´i −1φi だけ小さくなるが、現在ソートされている評価値の中での最小値Fよりも小さい値に更新されてしまうような場合には、Fi の値をFから1φi だけ大きい値に設定する。また、クラスiのキュー長Qi が0である場合も同様にFi の値をFから1φ/1 だけ大きい値に設定する。その後、qj 、Qi の値をインクリメントし、qi ≦wjnowの場合にはスケジューリングキューにVCI=jを入れ、ni の値をインクリメントする。
【0097】セル出力時には、ソートされている中で最も小さい評価値をもつクラス(i)からVCI(=j)を取り出すとともに、qj 、Qi をデクリメントする。次に図12と同様の小数点処理を行なう。qj =0であればクラスiの重みφi をwj /Wi だけデクリメントする。次に、Qi >0であればクラスiの評価値Fiを1/φi だけインクリメントする。次に、wjnow≧nj であれば、VCI=jをクラスiのスケジューリングキューに再入力(Enqueue(i,j))し、そうでなければnj を1だけデクリメントする。最後に、wjnowの更新に伴って図12と同様の重み変更対応処理を行ない、VCI=jのVCキューの先頭からセルを出力するためにVCIレジスタにjを設定する。
【0098】このような構成により、重みが大きいコネクションと重みが小さいコネクションを別のクラスに分けて管理することができるため、重みが大きいコネクションの重みの絶対値が小さくなり、階層化しない場合に比べてスケジューラの性能劣化を抑えることができる。
【0099】
【発明の効果】以上説明したように、本発明のスケジューリング装置によれば、重みのみでなくパケット蓄積料も用いたきめ細かなパケットスケジューリングが可能となる。従って、例えば重みの大きいコネクション群と重みの小さいコネクション群があって、それぞれのコネクション群の重みの和が等しい場合にも、重みの大きいコネクション群が小さい時間スケールで優位に扱われるという不都合を抑制することができ、コネクションの重みによらず公平なパケットスケジューリングが可能となる。
【0100】また、特に固定長パケットを扱う場合には、スケジューリング情報管理部において各パケットキュー(パケット蓄積部)に対応した重みとキュー長(パケット蓄積量)のうちの小さい方の値に等しい個数のスケジューリング情報を常に保持することにより、スケジューリング情報管理部がパケットのスケジューリングに必要な処理時間をコネクション数に関係なく一定値にすることができ、入力トラヒックにほとんど依存せずに確率的に公平なWFQも実現可能となる。
【0101】さらに、スケジューリング情報管理部においてクラス別にキューを設ければ、各クラス内あるいはクラス間のパケットスケジューリングに対して上記と同様の効果が期待できる。
【図面の簡単な説明】
【図1】 本発明の一実施形態に係るパケットスケジューリング装置の構成を示すブロック図。
【図2】 本発明の他の実施形態に係るパケットスケジューリング装置の構成を示すブロック図。
【図3】 本発明におけるスケジューリング情報管理部の実現例をしめすブロック図。
【図4】 図3のスケジューリング情報管理部の動作を示すフローチャート。
【図5】 本発明の別の実施形態に係るパケットスケジューリング装置の構成を示すブロック図。
【図6】 本発明におけるスケジューリング情報管理部の他の実現例を示すブロック図。
【図7】 図6のスケジューリング情報管理部の動作を示すフローチャート。
【図8】 本発明のさらに別の実施形態に係るパケットスケジューリング装置の構成を示すブロック図。
【図9】 ランダムアウトキューの実現例。
【図10】 重みが動的に変化する場合のスケジューリングアルゴリズム。
【図11】 重みが動的に変化する場合のスケジューリングアルゴリズム。
【図12】 重みが実数値をとり得る場合のスケジューリングアルゴリズム。
【図13】 スケジューラの階層化構成。
【図14】 クラススケジューラがクラス内のコネクションのキューの状態によってクラスの重みを変更する場合のスケジューリングアルゴリズム。
【符号の説明】
11,11−1〜11−N…パケットスケジューリング装置
12,13,14…パケットキュー(パケット蓄積部)
15…パケット入力部
16…スケジューリング情報管理部
17…パケット出力部
18…パケット
19,19−1〜19−n…パケット入力線
20,20−1〜20−N…パケット出力線
21…VCI(スケジューリング情報)
31…プロセッサ
32…ROM
33…VCIメモリ
34…キュー長メモリ
35…重みメモリ
36…状態レジスタ
37…VCI出力レジスタ
38…VCI出力レジスタ
39…データバス
40…制御バス
61…クラスレジスタ
81,82…ランダムアウトキュー
83,84…キュー選択部
91…レジスタ
92…シフト信号生成回路
93…セレクト信号生成回路
94…セレクタ信号線
95…シフト信号線
96…アドレス入力線
97…データ入力線
98…読み出し可能信号線
99…書き込み可能信号線
910…データ出力線
911…シフト信号生成可能信号線
912…データシフト線
101−1〜101−N…セル入力線
102…ATMスイッチ
【0001】
【発明の属する技術分野】本発明は、ATM網のようなパケット網においてバッファリングされたパケットを選択出力するためのパケットスケジューリング装置に関する。
【0002】
【従来の技術】ATM(Asynchronous Transfer Mode:非同期転送モード)方式を用いたパケット網では、セルと呼ばれる53オクテットの固定長のパケットが伝送される。ATM方式においては、セルのヘッダ部に書かれたVCI(Virtual Channel Identifier:バーチャルチャネル識別子)、VPI(Virtual Path Identifier :バーチャルパス識別子)と呼ばれる識別子によりコネクションが識別される。
【0003】また、ATM方式ではコネクションが属するサービスクラスが定義される。サービスクラスには、CBR(Constant Bit Rate :固定ビットレート)、実時間VBR(Variable Bit Rate :可変レート)、非実時間VBR、ABR(Available Bit Rate:アベイラブル・ビットレート)、UBR(Unspecified Bit Rate:アンスペシファイド・ビットレート)がある。そして、これらの各サービスクラスに対して、必要なセル廃棄率やセル遅延に関するQOS(Quality of Service:サービス品質)が規定される。すなわち、CBR、実時間VBRおよび非実時間VBRでは、セル廃棄率、セル遅延の両方に関する要求値が規定される。ABRではセル廃棄率に関する要求値のみ規定され、UBRではQOSは規定されない。
【0004】ユーザは、コネクション設定時にコネクションのトラヒック特性に関するパラメータを網に申告する。網はこの申告パラメータを守ってセルを送出するコネクションに対して、要求するQOSを保証できる場合にコネクションを設定する。申告パラメータとしては、CBRに関してはピークセルレートが、実時間VBRおよび非実時間VBRに関してはピークセルレート、平均セルレートや最大バースト長がそれぞれ用いられる。
【0005】網は、これらの申告パラメータ通りにセルを送出しているコネクションに対しては、たとえパラメータに違反して送出するコネクションがあっても、その影響を受けずにQOSを保証する必要がある。このための制御として、網の入口でコネクションの送出レートを監視し、パラメータに違反してセルを送出するコネクションに対しては入力規制を行なうUPC(Usage Parameter Control :使用量パラメータ制御)がある。UPCを適切に行なえば、ATM交換機は複数のコネクションのセルを単一もしくはクラス別のFIFO(First-In First-Out:先入れ先出し)キューにより管理することで、申告パラメータ通りにセルを送出しているコネクションに対して、他のコネクションの影響を受けずにQOSを保証することができる。
【0006】しかし、ABRのように端末が送出可能なセルレートがコネクション接続中に網の状態によって動的に変動する場合には、正確なUPCは難しいため、他のコネクションの影響を受けやすくなる。また、UBRに対してはUPCを行なうことを想定していないが、UBRクラス内のコネクション間で、できるだけ公平に帯域を使用するような制御を行なうことが望ましい。このため、ABR/UBRに対しては、単一もしくはクラス別のFIFOキューによる管理よりも、コネクション毎にキューを設けて、複数のキューの間でパケットのスケジューリングを行なうことが必要となる。
【0007】このパケットスケジューリング方式として、あるクラスのコネクション間で全て等しい割合で公平にサービスを行なうFQ(Fair Queueing )と呼ばれる方式が文献1:John B.Nagle, "On Packet Switches with Infinite Storage", IEEETransactions on Communications, Vol. COM-35, No.4,pp.435-438,April 1987. で提案されている。FQ方式は、アクティブな(空でない)キューをラウンドロビンでサービスすることにより実現されるものであるが、コネクション毎に要求される帯域が異なる場合には適当でない。また、パケットが可変長である場合にはパケット長を考慮する必要がある。
【0008】そこで、コネクション毎に各々の使用帯域に関する重みを与え、重みに応じた割合でパケット長を考慮して公平にキューのサービスを行なうことでパケットのスケジューリングを行なうWFQ(Weighted Fair Queueing)と呼ばれるスケジューリング方式に関する検討がなされている。WFQのアルゴリズムについては、SCFQ(Self Clocked Fair Queueing)と呼ばれるアルゴリズムが文献2:S.Golestani, "A Self-Clocked Fair Queueing Scheme for Broadband Applications", In Proc. of INFOCOM '94,pp.636-646,1994. で提案がなされている。また、Virtual Clock (バーチャルクロック)と呼ばれる同様のアルゴリズムが文献3:L.Zhang, "Virtual Clock: A New Traffic Control Algorithm for Packet Switcing Networking", In Proc. of SIGCOMM '90pp. 19-29, 1990. で提案されている。
【0009】今、パケットスケジューリング装置がコネクション毎にキューを持ち、コネクションは識別子により識別されるものとすると、SCFQではコネクションi毎に使用帯域に比例した重みwiと変数Fiを持ち、パケットがパケットスケジューリング装置に到着すると変数Fiの値の更新を行ない、更新した変数Fiを到着パケットと一緒にキューに格納する。パケット出力時には、アクティブなキューの先頭のパケットの変数Fiの中から最小のFiを持つコネクションのパケットをサービスする。変数Fiの更新は、Fi =L/wi+max(Fi,v(ta))
に従って行なわれる。但し、Lは到着パケットのパケット長、taはパケットの到着時刻、v(ta)は時刻taにおいてサービス中またはサービス直後のコネクションjのパケットの変数Fjの値を返す関数である。
【0010】
【発明が解決しようとする課題】しかしながら、上述したSCFQやバーチャルクロックのようなアルゴリズムによるパケットのスケジューリング方式では、2つの問題点がある。第1の問題点は、重みの差が大きいコネクションのパケット同士がスケジューリングされる場合に、小さい時間スケールで公平になりにくいことである。例えば、重み1のコネクション100本と、重み100のコネクション1本のパケットがぞれぞれ1個ずつ合計101個、各コネクション対応のキューに存在し、その状態で重み100のコネクションのパケットが連続して到着するものとする。このとき公平を期するとすると、理想的には重み1の100本のコネクションのパケットと重み100の1本のコネクションのパケットは交互にスケジューリングされるべきにもかかわらず、SCFQやバーチャルクロックでは、重み100のコネクションから先に最大100個のパケットが出力された後で、重み1のコネクションのパケットが出力される。すなわち、重みの大きいコネクション群と重みの小さいコネクション群があって、それぞれのコネクション群の重みの和が等しい場合には、常に重みの大きい方のコネクション群のパケットが小さい時間スケールで優位に扱われてしまうという不都合がある。
【0011】第2の問題点は、SCFQやバーチャルクロックでは前述したようにパケットのスケジューリング時に変数Fiの最小値を計算で求める必要があるが、このための計算時間がコネクション数とともに増大することである。今、変数Fiを常にソートしておくものとすると、コネクション数がnのときに最小値を求めるのに必要な計算時間は、ソートされたFiの系列に新しいFiを挿入する時間、すなわちo(log2 n)のオーダとなる。ATMの場合、l物理リンクあたりの最大のバーチャルコネクション(VC)数n=4096をサポートするには、変数Fiの最小値を計算するとき最大log2 4096=12回のサーチが必要となる。このような計算時間の増大から、パケットのみでなくクラスおよびバーチャルパス(VP)のスケジューリングも行なう場合や、リンク速度が大きい場合を考慮すると、SCFQやバーチャルクロックは実装が困難である。従って、スケジューリングに必要な処理時間がコネクション数に関係なく小さい値であることが望まれる。
【0012】一方、米国特許第5,379,297号明細書"Concurrent Multi-Channel Segmentation and Reassmbly Processors for Asynchronous Transfer Mode" には、ピークレート毎にキューを構成することにより、コネクション数に関係ない処理時間で複数のキューの間でWFQを行なう方式が開示されているが、この方式では任意のピークレート(重み)の組み合わせをサポートできない。
【0013】本発明は、上記のような従来技術の問題点を解決し、コネクションの重みによらず公平なスケジューリングを可能としたパケットスケジューリング装置を提供することを目的とする。
【0014】また、本発明は受信パケットが固定長パケットの場合に、スケジューリングに必要な処理時間がコネクション数に関係なく一定値となるようなパケットスケジューリング装置を提供することを目的とする。
【0015】
【課題を解決するための手段】上記の課題を解決するため、本発明は入力されるパケットを一時的に蓄積するための動的に変更可能な重みがそれぞれ設定された複数のパケット蓄積部と、パケット受信時に複数のパケット蓄積手段の少なくとも一つにパケットを入力するパケット入力部と、複数のパケット蓄積部にそれぞれ蓄積されたパケットを読み出す順序を指定するためのスケジューリング情報を該パケット蓄積部のパケット蓄積量と該パケット蓄積部に設定された重みとに基づいて管理するスケジューリング情報管理部と、パケット送信時にスケジューリング情報管理部が管理するスケジューリング情報を基に所望のパケット蓄積部から所望のパケットを出力するパケット出力部とを有することを基本的な特徴とする。
【0016】このように本発明では、スケジューリング情報管理部において、パケット蓄積部からパケットを読み出す際に用いるスケジューリング情報をパケット蓄積量とそのパケット蓄積部に設定された重みと基づいて管理するため、アクティブなパケット蓄積部に対応する重みの値だけでなく、アクティブなパケット蓄積部のパケット蓄積量も考慮してパケットのスケジューリングが行なわれる。
【0017】ここで、それぞれのパケット蓄積部に設定される重みとして、例えばパケット蓄積部に対応したコネクションに設定されている帯域の重みを用いた場合、パケット蓄積量に比例した評価値が重み以下のコネクションは、重みに相当する分の帯域をフルに使用せず、他のコネクションに帯域を与えることができるため、コネクションの重みによらず公平なスケジューリングが可能となる。すなわち、重みの大きいコネクション群と重みの小さいコネクション群が存在し、それぞれのコネクション群の重みの和が等しい場合においても、重みの大きいコネクション群が小さい時間スケールで優位に扱われることが抑制される。また、任意の重みの組合せをサポートできる。
【0018】また、本発明は特に固定長パケットをスケジューリングする際、パケット蓄積量が蓄積されたパケットの数に比例することから、スケジューリング情報管理部において複数のパケット蓄積部にそれぞれ対応したスケジューリング情報を該パケット蓄積部スケジューリング情報をパケット蓄積部のパケット蓄積量とそのパケット蓄積部に設定された重みのうちの小さい方の値に等しい個数だけ常に保持することを特徴とする。
【0019】この場合、スケジューリング情報管理部へのスケジューリング情報の入力はパケットの受信時と送信時に行ない、その際に必要な処理としては基本的にそのパケットを蓄積しているパケット蓄積部のパケット蓄積数と設定された重みを比較して小さい方を調べるのみでよい。このようにすることにより、パケットが固定長であることを利用してスケジューリングに必要な処理時間がコネクション数に依存せず一定のパケットスケジューリングを実現できる。また、このようにスケジューリング情報管理部が保持するスケジューリング情報の個数をパケット蓄積数と重みのうちの小さい方の値を上限とすることにより、パケット蓄積量と重みの両方を考慮したパケットスケジューリングが上記と同様に可能になるため、重みによらず公平なスケジューリングを行なうことができる。さらに、スケジューリング情報管理部から読み出すスケジューリング情報の選び方を変えれば、様々なポリシーに基づいたパケットスケジューリングが可能となる。
【0020】また、本発明では複数クラスおよび仮想パスのスケジューリングをサポートするパケットスケジューリング装置を実現する場合、スケジューリング情報管理部において、パケットが属するクラス別または仮想パス別にスケジューリング情報を管理することを特徴とする。さらに、クラス別または仮想パス別に重みを設定し、これを各クラスまたは仮想パス内のコネクション別のキュー長が0から正の値に変化したときまたは、正の値から0に変化したときに変更することにより、クラス間または仮想パス間でのパケットスケジューリングと同一クラスまたは同一仮想パス内のパケットスケジューリングの両方において、上述と同様の作用が得られる。
【0021】スケジューリング情報管理部は、少なくとも一つのFIFOキューあるいはランダムアウトキューで構成される。スケジューリング情報管理部をFIFOキューで構成した場合は、スケジューリング情報管理部がパケットをスケジューリングするために必要な処理時間がコネクション数に関係なく一定となり、かつスケジューリング情報管理部のハードウエア構成も簡単になる。また、スケジューリング情報管理部をランダムアウトキューで構成した場合は、スケジューリング情報管理部がパケットをスケジューリングするために必要な処理時間がコネクション数に関係なく一定となる上、入力トラヒックにほとんど依存せず確率的に公平なスケジューリングが可能となる。
【0022】
【発明の実施の形態】
(第1の実施の形態)図1に、本発明の第1の実施形態に係わるパケットスケジューリング装置の構成を示す。
【0023】本実施形態におけるパケットスケジューリング装置11は、パケット蓄積部である複数のパケットキュー12,13,14と、パケット受信時にパケットキュー12,13,14にパケットを入力するためのパケット入力部15と、パケットキュー12,13,14に蓄積されたパケット18を読み出す順序を指定するためのスケジューリング情報を管理するスケジューリング情報管理部16と、パケット送信時にスケジューリング情報管理16が管理するスケジューリング情報に基づきパケットキュー12,13,14から所望のパケットを読み出して出力するパケット出力部17と、受信パケットをパケットスケジューリング装置11に入力するためのパケット入力線19と、送信パケットをパケットスケジューリング装置11から出力するためのパケット出力線20を有する。
【0024】次に、パケットスケジューリング装置11の動作を説明する。パケットスケジューリング装置11で受信されたパケットは、パケット入力線19からパケット入力部15に入力される。パケット入力線19は一般に複数本存在する。パケット入力部15は、パケット入力線19から入力されたパケットを該パケットのヘッダ情報を基にパケットキュー12,13,14のうちの所望の一つに入力する。ここで、受信パケットがユニキャストパケットの場合には、いずれか1つのパケットキューにパケットが入力されるが、パケットスケジューリング装置11でマルチキャストをサポートする場合には、マルチキャストすべき複数のパケットキューにパケットが入力される。
【0025】パケットキュー12,13,14は、VC(バーチャルチャネル)コネクション毎、トラヒッククラス毎、出力リンク毎、あるいはこれら2つ以上の組み合わせ等、種々の単位で設けることができるが、本実施形態ではVCコネクション毎にパケットキュー12,13,14が設けられているものとする。これらのVCコネクションには、それぞれ要求された帯域が設定されている。
【0026】スケジューリング情報管理部16は、パケットキュー12,13,14に蓄積されているパケットを読み出す順序を指定するためのスケジューリング情報であるVCI(バーチャルチャネル識別子)をパケット入力部15から入力し、パケット出力部17へ出力する。この際、スケジューリング情報管理部16は各パケットキュー12,13,14に対して、そのパケットキューのパケット蓄積量(以下、キュー長という)と、そのパケットキューに対応した重みとに基づいてスケジューリング情報であるVCIを管理し、これらキュー長と重みに従ってパケット出力部17へのスケジューリング情報の出力順序を決定する。
【0027】本実施形態では、各パケットキューに対応したVCコネクションに設定された帯域の比に等しい重みを各パケットキューに割り当てる。ここで、VCI=iで識別されるパケットキューに対応するVCコネクションに設定された帯域の重みをwi、同パケットキューのキュー長をバイト数で表わしてqiとする。スケジューリング情報管理部16は、VCI=iのパケットがパケット入力部15に到着したとき、あるいはVCI=iのパケットがパケット出力部17から出力されるときに式(1)で表される変数Fiを更新し、次に出力すべきパケットのVCIを決定する。
【0028】Fi=f(qi,wi)
ここで、関数fはスケジューリングのポリシーに依存して決定される。例えば関数fを式(2)とすれば、キュー長qiが重みwi以下の場合には、重みwiに応じた帯域はVCコネクションiに与えられず、他のコネクションに帯域を与えることが可能となる。
【0029】
【数1】
なお、関数fを式(3)とすれば、スケジューリングがキュー長qiに依存しない従来のSCFQ方式となる。
【0030】
【数2】
【0031】但し、式(2)(3)においてLは到着パケットのパケット長、Lminはパケットスケジューリング装置11で扱う最小パケット長、taはパケットの到着時刻、v(ta)は時刻taにおいてサービス中またはサービス直後のVCコネクションjのパケットの変数Fjの値を返す関数である。
【0032】パケット出力部17は、パケット送信時にスケジューリング情報管理部16からVCIを1つ取り出した後、そのVCIに対応するパケットキューからパケットを取り出してパケット出力線20へ出力する。
【0033】このように本実施形態によれば、スケジューリング情報管理部16において、スケジューリング情報であるVCIをパケットキュー12,13,14のキュー長と設定された重みとに基づいて管理するため、アクティブなパケットキューに設定されている重みの値だけでなく、そのパケットキューのキュー長も考慮したきめ細かなパケットスケジューリングを行なうことができる。
【0034】従って、各パケットキュー12,13,14に対応するVCコネクションに設定されている帯域の重みを各パケットキュー12,13,14に設定すれば、キュー長に比例した評価値が重み以下のVCコネクションが重みに相当する分の帯域をフルに使用せず、他のコネクションに帯域を与えることができるため、重みの大きいコネクション群と重みの小さいコネクション群が存在し、それぞれのコネクション群の重みの和が等しい場合においても、重みの大きいコネクション群が小さい時間スケールで優位に扱われることが抑制され、コネクションの重みによらず公平なパケットスケジューリングが実現されるという効果が得られる。
【0035】(第2の実施形態)次に、第1実施形態をより具体化した第2の実施形態に係わるパケットスケジューリング装置について図2を用いて説明する。本実施形態はATMセルのような固定長パケットのスケジューリングを行なう例であり、M個のパケットキューを有し、またスケジューリング情報としては第1の実施形態と同様にVCIを用いるものとする。図2において、図1R>1と相対応する部分には同一符号を付して第1の実施形態との相違点を中心に説明する。
【0036】本実施形態においては、スケジューリング情報管理部16はM個のパケットキュー12,13,14に対応したVCI21を各パケットキューに対してキュー長と設定された重みのうち小さい方の値に等しい個数だけ常に保持する。
【0037】また、本実施形態では各パケットキュー12,13,14に対応するコネクションにそれぞれ設定された帯域の比に等しい重みw1,w2,wMを各パケットキュー12,13,14に設定する。ここで、VCI=iで識別されるパケットキューに対応するコネクションに設定された帯域の重みをwiとし、該パケットキューのキュー長をqiとする。
【0038】スケジューリング情報管理部16は、保持されているスケジューリング情報であるVCI=iの個数をniとすると、以下の関係式が常に成立するように制御される。
【0039】
ni=min(qi,wi) …(4)
このとき、f(qi,wi)=min(qi,wi)となる。ここで、パケットキュー12,13,14に対して設定される重みをw1=w2=wM=1とおけば、文献4:John B.Nagle, "On Packet Switches with Infinite Storage", IEEE Transactions on Communications, Vol. COM-35, No.4,April 1987. と同様のFair Queueing が実現できる。
【0040】また、w1=2,w2=1,wM=3とすると、図2においてはパケットキュー12,13,14のキュー長はq1=3,q2=2,qM=0であるため、n1=2,n2=1,nM=0となる。なお、図2においてパケットキュー12,13,14の中に記された○印がパケットを表わし、この○印の数がキュー長を評価している。
【0041】パケット出力部17は、パケット送信時にスケジューリング情報管理部16からVCIを1つ取り出した後、そのVCIに対応するパケットキューからパケットを取り出してパケット出力線30からパケットを出力する。
【0042】図3に、本実施形態におけるスケジューリング情報としてVCIを用いるスケジューリング情報管理部16の構成例を示す。このスケジューリング情報管理部16は、プロセッサ(MPU)31、ROM32、VCIメモリ33、キュー長メモリ34、重みメモリ35、状態レジスタ36、入力VCIレジスタ37、出力VCIレジスタ38、データバス39および制御バス40を有する。これら各部の機能は、次の通りである。
【0043】MPU31は、ROM32にプログラムされた命令を逐次実行する。VCIメモリ33は、スケジューリング情報であるVCIを格納するためのキューであり、RAMによって構成される。スケジューリング情報管理部16がFIFOキューで構成されている場合には、VCIメモリ33はリンクドリストまたはリングバッファのいずれの方式で実装してもよい。
【0044】キュー長メモリ34は、パケットキュー12,13,14毎の現在のキュー長を記憶するメモリであり、RAMによって構成される。重みメモリ35は、パケットキュー12,13,14毎に設定されている重みを記憶するメモリであり、RAMによって構成される。
【0045】状態レジスタ36は、スケジューリング情報管理部16の動作状態を示す情報を格納するためのレジスタであり、図示しない外部装置により書き込みがなされ、MPU31が該レジスタ36の値を参照する。なお、各セルスロットにおいて、入力セルがある場合には状態レジスタ36の値は1となり、セル入力処理終了後状態レジスタ36の値は2となる。
【0046】入力VCIレジスタ37は、スケジューリングされるパケットのVCIを格納するためのレジスタであり、外部装置により書き込みがなされ、MPU31が該レジスタ37の値を参照する。
【0047】出力VCIレジスタ38は、出力されるパケットのVCIを格納するためのレジスタであり、MPU31から書き込みがなされ、図示しない外部装置が該レジスタ38の値を参照する。出力VCIレジスタ38に負の値が書き込まれる場合は、パケットは出力されないものとする。
【0048】MPU31と、各メモリ33,34,35および各レジスタ36,37,38との間でやりとりされるデータは、データバス39上を流れる。また、制御バス40を用いて、アドレス指定等のデータアクセスのための制御情報のやりとりを行なう。
【0049】次に、図4に示すフローチャートを用いて図3のスケジューリング情報管理部16内で実行されるスケジューリングアルゴリズムを説明する。図4において、Enqueue(i)はVCI=iをVCIメモリ33に書き込む操作を表し、DequeueはVCIメモリ33からVCIを読み出す操作を表す。なお、図4のスケジューリングアルゴリズムはコード化されて図3のROM32内に格納される。
【0050】まず、状態レジスタ36の値sをMPU31で参照し(ステップS101)、sが1,2のいずれか、またはsが1、2のいずれでもないかどうかを調べる(ステップS102)。s=1であれば、VCI入力レジスタ37の値iを参照し(ステップS103)、VCI=iのパケットキューのキュー長+1をqとし(ステップS104)、またVCI=iのパケットキューに設定された重みをwとして(ステップS105)、q、wの大小関係を調べる(ステップS106)。ここで、q≦wの場合にはステップS107においてEnqueue(i)、つまりVCI=iをVCIメモリ33に書き込み、その後にステップS108に移り、またq>wの場合には直接ステップS108に移る。ステップS108では、VCI=iのパケットキューのキュー長をqとする。
【0051】一方、ステップS102においてs=2であれば、ステップS109においてi:=Dequeue、つまりVCIメモリ33からVCIを読み出した後、VCI=iのパケットキューのキュー長−1,0のうち大きい方をqとし(S110)、さらにVCI=iのパケットキューに設定された重みをwとして(S111)、q,wの大小関係を調べる(S112)。ここで、q≧wの場合にはステップS113においてEnqueue(i)、つまりVCI=iをVCIメモリ33に書き込み、その後にステップS114に移り、またq<wの場合には直接ステップS114に移る。ステップS114では、VCI=iのパケットキューのキュー長をqとし、さらに次のステップS115でVCI出力レジスタ38の値をiとする。
【0052】そして、ステップS102においてsが1、2のいずれでもない場合と、ステップS108,S115の処理の終了後、ステップS116で状態レジスタ36の値を0としてステップS101に戻り、以上の処理を繰り返す。
【0053】このようなアルゴリズムにより、VCIメモリ33内の各VCI=iの個数について常に式(4)が成立する。このように本実施形態では、スケジューリング情報管理部16においてVCIメモリ33に各パケットキュー12,13,14毎にキュー長と設定されている重みとを比較して、これらのうち小さい方の値同じ個数のVCI21をスケジューリング情報として保持するため、第1の実施形態の効果に加えて、スケジューリングに必要な処理時間がVCコネクション数に依存せず一定のパケットスケジューリングを実現できるという効果がある。
【0054】(第3の実施形態)次に、第2の実施形態においてスケジューリング情報管理部16をFIFOキューで構成した場合の第3の実施形態に係わるパケットスケジューリング装置の構成と動作を図5を用いて説明する。図5において、CVI=1,1,2の順番でパケットキュー12,13,14からパケットが出力される。ここで、スケジューリング情報管理部16がリングドリストを用いたFIFOキュー構成の場合には、図3に示したフローチャート中のEnqueue(i)はリストの最後尾にiを追加する操作を表わし、Dequeueはリストの先頭から値を取り出すとともに、リストの先頭を更新する操作を表す。リストが空の場合は、Dequeueは負の値とする。
【0055】まず、パケットがパケット入力部5から入力された場合の動作例を述べる。図5(a)の状態でVCI=Mがパケット入力部15から入力された場合、パケット入力直後はVCI=Mに対応するパケットキュー14のキュー長qMと、このパケットキュー14に設定された重みwMの大小関係はqM=1<wM=3であるため、VCI=Mがスケジューリング情報管理部16の最後尾に追加される。また、図5(a)の状態でVCI=1のパケットがパケット入力部15から入力された場合、パケット入力直後はVCI=1に対応するパケットキュー11のキュー長q1と、このパケットキュー11に設定された重みw1の大小関係はq1=4>w1=2であるため、VCI=1はスケジューリング情報管理部16の最後尾に追加されない。
【0056】次に、パケットがパケット出力部17から出力された場合の動作例を述べる。ここで、w1=1,wM=3に設定されているものとする。図5(a)の状態でVCI=1のパケットがパケット出力部17から出力された直後はq1=w1=2であるため、VCI=1はスケジューリング情報管理部16に再度入力される。このとき、VCI=1はスケジューリング情報管理部16の最後尾に追加され、図5(b)の状態になる。次に、図5(b)の状態でVCI=1のパケットがパケット出力部17から出力されるが、パケット出力直後はq1=1<w1=2であるため、VCI=1はスケジューリング情報管理部16に再入力されない。
【0057】このように本実施形態によれば、スケジューリング情報管理部16をFIFOキューで構成したことにより、スケジューリング情報管理部16がパケットをスケジューリングするために必要な処理時間がVCコネクション数に関係なく一定となり、かつスケジューリング情報管理部16のハードウエア構成が簡単になるという効果がある。
【0058】(第4の実施形態)図6に、本発明の第4の実施形態におけるスケジューリング情報管理部16の構成例を示す。なお、スケジューリング情報管理部16はクラス毎にスケジューリング情報を管理するものとする。ここでのクラスは速度クラス、サービスクラス、それらの組合せのいずれでもよい。また仮想パス別にスケジューリング情報を管理する場合についても同様の構成となる。図6において、図3と同一部分に同一符号を付して説明すると、本実施形態においては図3の構成に加えてクラスレジスタ61が新たに設けられる。
【0059】このクラスレジスタ61は、パケットが属するクラスの番号を格納するためのレジスタであり、図示しない外部装置から書き込みがなされ、MPU31が該レジスタ61の値を参照する。また、入力VCIレジスタ37はVCIをクラス別に格納するためのキューであり、RAMにより構成される。入力VCIレジスタ37から読み込まれた入力VCIは、クラスレジスタ61から読み込んだクラス番号のクラスに対応したVCIメモリ33内のキューに書き込まれる。
【0060】次に、図7に示すフローチャートを用いて図6のスケジューリング情報管理部16内で実行されるスケジューリングアルゴリズムを説明する。図7において、Enqueue (c,i)はVCI=iをVCIメモリ33のクラスcに対応するクラス別キューに書き込む操作を表し、Dequeue (c)はVCIメモリ33のクラスcに対応するクラス別キューからVCIを取り出す操作を表す。Select ClassはVCIを出力すべきクラスの番号を返す関数である。但し、クラス別キューが空であれば、クラス番号として負の値を返す。
【0061】まず、状態レジスタ36の値sをMPU31で参照し(ステップS201)、sが1,2のいずれか、またはsが1、2のいずれでもないかどうかを調べる(ステップS202)。s=1であれば、クラスレジスタ61の値cと、VCI入力レジスタ37の値iを順次参照し(ステップS203,S204)、VCI=iのパケットキューのキュー長+1をqとし(ステップS205)、またVCI=iのパケットキューの重みをwとして(ステップS206)、q,wの大小関係を調べる(ステップS207)。ここで、q≦wの場合にはステップS208においてEnqueue (c,i)、つまりVCI=iをVCIメモリ33のクラスcに対応するクラス別キューに書き込み、その後にステップS209に移り、またq>wの場合には直接ステップS209に移る。ステップS209では、VCI=iのパケットキューのキュー長をqとする。
【0062】一方、ステップS202においてs=2であれば、ステップS211においてi:=Dequeue (c)、つまりVCIメモリ33のクラス別キューからVCIを取り出した後、VCI=iのパケットキューのキュー長−1,0をqとし(S212)、またVCI=iのパケットキューの重みをwとして(S213)、q,wの大小関係を調べる(S214)。ここで、q≧wの場合にはステップS215においてEnqueue(c,i)、つまりVCI=iをVCIメモリ33に書き込んだ後にステップS216に移り、またq<wの場合には直接ステップS216に移る。ステップS216では、VCI=iのパケットキューのキュー長をqとし、さらにVCI出力レジスタ38の値をiとする(S217)。
【0063】そして、ステップS202においてsが1、2のいずれでもない場合と、ステップS209,S217の処理の終了後、状態レジスタ36の値を0とし(ステップS218)、ステップS201に戻り、以上の動作を繰り返す。
【0064】Select Classが予め定められた順番で周期的にクラスを選択すれば、時分割多重(TDM)的なクラスのスケジューリングとなる。また、クラスに対してもキュー長と重みのうちの小さい方の値に基づいたWFQを行なう場合には、クラスをスケジューリングするためのクラススケジューリングキューとクラス別セル数カウンタとクラス別の重みとを用意し、Select Classはクラスcのセル数カウンタの値が1以上であれば、クラススケジューリングキューからクラス番号を1個出力するとともに、クラスcのセル数カウンタをデクリメントする。一方、クラスcのセル数カウンタの値が0であれば、負の値を出力する。
【0065】ここで、Enqueue(c,i)は、VCI=iをVCIメモリ33のクラスcに対応するクラス別キューに書き込む操作に加え、クラスcのセル数カウンタをインクリメントし、状態レジスタ31の値がs=1、かつクラスcのセル数が重み以下であるか、またはs=2、かつクラスcのセル数が重み以上である場合にクラス番号cをクラススケジューリングキューに書き込む操作を行なうようにする。
【0066】また、クラスのスケジューリングには、SCFQやVirtual Clockなどの従来方式を用いることも可能である。また、1個以上蓄積されているクラスの中で最も優先度の高いクラスをサービスするような完全優先のクラススケジューリングを行なう場合には、クラス別の重みは必要ない。
【0067】このゆうなアルゴリズムにより、常にVCIメモリ33内のVCI=iの個数について式(4)が成立し、かつクラス毎に独立したスケジューリングが可能となる。
【0068】なお、図7のスケジューリングアルゴリズムは、コード化されて図6のROM32内に格納されているものとする。このように本実施形態によれば、パケットが属するクラス別にスケジューリング情報管理部16でスケジューリング情報であるVCIを管理することにより、クラス間でのパケットスケジューリングと同一クラス内のコネクション間のパケットスケジューリングの両方において、第1〜第3の実施形態と同様の効果を得ることができる。
【0069】(第5の実施形態)次に、本発明の第5の実施形態に係るパケットスケジューリング装置の構成と動作を図8を用いて説明する。
【0070】図8において、図2および図5と同一部分に同一符号を付して説明すると、本実施形態ではスケジューリング情報管理部16内にランダムアウトキュー81,82およびキュー選択部83,84が設けられている。
【0071】キュー選択部83は、スケジューリング情報をランダムアウトキュー81,82のいずれに格納するかを選択する。また、キュー選択部84はランダムアウトキュー81,82のいずれからスケジューリング情報を取り出すかを選択する。ここで、キュー選択部83がランダムアウトキュー81を選択している場合は、キュー選択部84はランダムアウトキュー82を選択し、反対にキュー選択部83がランダムアウトキュー82を選択している場合は、キュー選択部84はランダムアウトキュー81を選択する。このようにキュー選択部83,84は、常に互いに異なるランダムアウトキューを選択するように制御される。なお、ここではランダムアウトキューが2個であるが、さらに多数のランダムキューを設けてもよい。
【0072】ランダムアウトキュー81,82はキュー選択部84によって選択されている場合に、格納しているスケジューリング情報をランダムに出力する。ここで、キュー選択部84によって選択されているランダムアウトキューからスケジューリング情報が全て取り出された場合、キュー選択部83,84はそれぞれ、現在選択されていないランダムアウトキューを選択する。
【0073】スケジューリング情報管理部16の基本動作は、図4に示したフローチャートで表されるが、Enqueue(i)、Dequeueの意味が先の第2の実施形態の場合と異なる。
【0074】図8において、パケットキュー12,13,14はVCI=1,2,MのVCコネクションにそれぞれ対応しており、それらのコネクションの持つ重みをそれぞれw1=2,w2=1,wM=1とする。また、図8(a)の状態でパケットキュー12,13,14にパケットが格納されており、それらのスケジューリング情報がスケジューリング情報管理部16内のランダムアウトキュー81に格納されているものとする。すなわち、キュー選択部83はランダムアウトキュー81を選択し、キュー選択部84はランダムアウトキュー82を選択している。
【0075】パケット出力時点で現在キュー選択部84が選択しているランダムアウトキュー82は空であるため、キュー選択部83はランダムアウトキュー82へ選択を切り替え、キュー選択部84はランダムアウトキュー81へ選択を切り替える。ここで、ランダムアウトキュー81からランダムにVCIを選択した結果、VCI=2が出力されたものとすると、q2=0<w2=1となって、VCI=2はスケジューリング情報管理部16に再入力されないため、パケットスケジューリング装置11は図8(a)の状態から図8(b)の状態に遷移する。
【0076】図8(b)の状態において、VCI=1のパケットキューへ1個パケットが到着した場合、q1とw1の関係から、VCI=1が1個新たにランダムアウトキュー82へ入力され、パケットスケジューリング装置11は図8(b)の状態から図8(c)の状態に遷移する。
【0077】さらに、図8(c)の状態委からVCI=2に対応するパケットキュー13にパケットが1個到着した後、ランダムアウトキュー81から2個の識別子1,Mがランダムに選択された場合には、パケットスケジューリング装置11は図8(c)の状態から図8(d)の状態に遷移する。この際、ランダムアウトキュー81が空になるため、キュー選択部83,84が選択するランダムアウトキューの切替えが起こる。
【0078】このような制御により、例えばw1=100,w2=100のように大きい値を持つ重みに対しては、スケジューリング情報管理部16が第3の実施形態で述べたようなFIFO構成の場合には、短い時間スケールではweightedfairとはなりにくいという欠点が解消され、どのような重みに対しても常に確率的にweighted fairなスケジューリングが可能となる。また、あるランダムアウトキューからスケジューリング情報を出力中は、別のランダムアウトキューへスケジューリング情報が入力されるため、空でない全てのパケットキューの先頭のパケットを一定時間内に出力することが保証される。
【0079】ランダムアウトキュー81,82は図9のようなアルゴリズムで実現可能である。図9において、rは配列、pは配列の終りを示すポインタである。まず、初期化処理として、ポインタpに−1をセットする。Enqueue(i)操作は、ポインタpを1だけインクリメントした後でr[p]:=iとすることにより実現される。次に、Dequeue操作について述べる。まず、ポインタpが−1であればキューが空であるため返り値−1を変数iに記憶する。そうでなければ、0以上p以下の疑似ランダム整数(Random(O,P))をkとし、i:=r[k]によりDequeueの返り値を変数iに記憶した後、r[k]:=r[p]とすることによりキューの最後尾の値を位置kに移し、ポインタpを1だけデクリメントする。最後に、変数iの値を返す。このようなアルゴリズムにより、簡単な構成によりランダムアウトキューの管理ができる。
【0080】(第6の実施形態)図10に、本発明によるパケットスケジューリング装置を出力バッファ型ATMスイッチに適用した実施形態を示す。なお、本発明によるパケットスケジューリング装置は入力バッファ型や共通バッファ型のスイッチアーキテクチャにも適用可能である。
【0081】図10において、セル入力線101−1〜101−Nに到着した固定長パケットであるATMセルは、ATMセルのヘッダ情報を基にスイッチ102で交換出力され、パケット入力線19−1〜19−Nを介して上述したパケットスケジューリング装置11−1〜11−Nに入力される。パケットスケジューリング装置11−1〜11−Nは、パケット蓄積部としてVCコネクション単位のキューを持っており、入力されたセルはそのセルのヘッダに書かれているVCIに対応するキューに格納される。パケットスケジューリング装置11−1〜11−Nは、各セルサイクルにおいて、キューにバッファリングされたセルのうち、1つを選択出力する。
【0082】(第7の実施形態)図11に、本発明において重みが動的に変化する場合のスケジューラのフローチャートを示す。なお、ハード構成は図3のようになる。
【0083】重みが動的に変化する場合には、スケジューリング情報管理手段内のVCI=iの個数は一時的に式(4)を満たさない場合がある。したがって、スケジューリング情報管理手段内のVCI=iの個数niをカウントしておく必要がある。niの変更は、スケジューリング情報管理手段へのスケジューリング情報入力および出力時い行なう。
【0084】また、セル出力時にVCI=iをスケジューリングキューに入れるかどうかを判定する場合には、重みとキュー長を比較せずに、重いとスケジューリングキュー内のVCI=iの個数および、キュー長とスケジューリングキュー内のVCI=iの個数の比較を行ない、wi≧njかつqi≧njのときに、VCI=iがスケジューリングキューに入れられる。これにより、重みが増加した結果、wi>qiとなった場合でもVCI=iはスケジューリングキューに入れられるようになる。
【0085】また、wi,<qiであるときにwiが増加した場合には、重みの増加分だけスケジューリング情報管理手段内のVCI=iの個数も増加させる必要がある。この処理が図11の重み対応処理である。図11においては、重み変更対応処理はセル出力時に行なう例を示しているが、重み変更対応処理をセル入力時に行なうことも、セル入力時および出力時の両方で行なうことも、また、毎セル時間行なうことも可能である。
【0086】重み変更対応処理においては、必要な回数だけEnqueue (i)を実行するとともにniをインクリメントする。ただし、重みの変更幅が大きいほどループの回数も増えるため、1回の処理に対するループの最大回数Cmax を決めておき、Cmax を越える分のループは次以降のセル時間に実行するようにする。
【0087】(第8の実施形態)図12に、本発明において重みが実数値をとり得る場合のスケジューラのフローチャートを示す。なお、ハード構成は図3のようになる。図12においては、重みwiは1以上の実数値をとるものとする。重みとキュー長の比較の際には、winowが使用される。winowの値は、floor(winow)の値がfloor(wi )またはfloor(wi )+1のいずれかの値をとるように、かつwinowの平均値がwi と等しくなるように制御する。ここで、floor(x)は、x以下の最大の整数値を返す関数である。winowの値は動的に変更されるため、第7の実施形態と同様に、スケジューリング情報管理部内のVCI=iの個数niをカウントしておく必要がある。
【0088】VC設定時に、winowの値はwi に初期化され、また、変数fi がwi の小数部分の値に設定される。図12の例では、winowの値の更新はセル出力時に行なわれる。すなわち、winowの値はfi ずつインクリメントされ、その結果、floor(wi )+1以上となった場合には1だけデクリメントされる。この処理が図12の小数点処理である。また、winowの動的な変更に伴い、第7の実施形態と同様に重み変更対応処理が必要となる。図12では、重み変更対応処理の中でwi の代わりにwinowが用いられる。なお、winowの値は小数点処理によって変更されるだけでなく、第7の実施形態のようにwi の動的な変更に伴って変更される場合もあるが、本実施例はそのような変更も許容するような構成となっている。
【0089】なお、小数点処理、および重み変更対応処理はセル出力時だけでなく、セル入力時に行なうことも、セル入力時および出力時の両方で行なうことも、また、毎セル時間行なうことも可能である。このように重みが実数値をとれるようにすることにより、重みの値が大きくならないようにできるためスケジューラの性能劣化を抑えることができる。
【0090】(第9の実施形態)図13に、本発明においてスケジューリング情報管理手段が、パケットが所属するクラス別に設定される重みに基づいてクラスのスケジューリングを行ない、かつ、クラス別の重みをそのクラス内のコネクションのキューの状態に応じて変更する場合の実施形態を示す。
【0091】クラス別スケジューラは速度クラス、QOSクラス、仮想パス、またはそれらの組合せ毎に用意される。クラス別スケジューラは重みとキュー長とを用いたスケジューリングを行なう。クラススケジューラは従来方式のスケジューラでもよい。
【0092】クラススケジューラは各クラスi毎に重みφi を管理する。クラス重みφi は、
となるように制御する。ただし、Bi はクラスiのVCの中でVCキューが空でないVCIの集合である。また、Wi はクラスiに接続中のVCに関するwjの和である。したがって、パケットキューが空のVC数が多いほどφi は小さくなる。これにより、スケジューラを階層化した場合でもクラススケジューラはクラス内のVCの状態を考慮したスケジューリングが可能になる。
【0093】ただし、φi の値が変わった場合には、それに合わせてクラススケジューラ内の状態も更新する必要がある。例えば、クラススケジューラがSCFQのようにバーチャルタイムを用いたスケジューラである場合、スケジューリング情報の再ソーティングが行なわれる。この場合のフローチャートを図14に示す。ハード構成は図6のようになる。
【0094】図14では重みが実数値をとることができ、また、動的な重みの変更も可能である。まず、初期化処理ですべてのクラスi重みの和Wi およびキュー長が0にリセットされる。
【0095】次に、クラスiのVCI=jのVCの接続要求があった場合には、qi 、niを0にリセットし、重みの小数部分をfj に設定し、重みの初期値wjnowをwjに設定する。また、クラスiの重みをwj だけインクリメントする。また、クラスiのVCI=jのVCの切断要求があった場合には、クラスiの重みをwj だけデクリメントする。
【0096】セル入力時には、クラスiのVCI=jのVCのキュー長qj が0である場合には、クラスiの重み現在のφ1 の値を変数φ´1 に記憶するとともに、φ1 をwj /Wi だけインクリメントする。次に、φ1 の変更に伴いクラスiに対する評価値Fi の値の更新を行なう。更新される値は現在のFi の値に対して1/φ´i −1φi だけ小さくなるが、現在ソートされている評価値の中での最小値Fよりも小さい値に更新されてしまうような場合には、Fi の値をFから1φi だけ大きい値に設定する。また、クラスiのキュー長Qi が0である場合も同様にFi の値をFから1φ/1 だけ大きい値に設定する。その後、qj 、Qi の値をインクリメントし、qi ≦wjnowの場合にはスケジューリングキューにVCI=jを入れ、ni の値をインクリメントする。
【0097】セル出力時には、ソートされている中で最も小さい評価値をもつクラス(i)からVCI(=j)を取り出すとともに、qj 、Qi をデクリメントする。次に図12と同様の小数点処理を行なう。qj =0であればクラスiの重みφi をwj /Wi だけデクリメントする。次に、Qi >0であればクラスiの評価値Fiを1/φi だけインクリメントする。次に、wjnow≧nj であれば、VCI=jをクラスiのスケジューリングキューに再入力(Enqueue(i,j))し、そうでなければnj を1だけデクリメントする。最後に、wjnowの更新に伴って図12と同様の重み変更対応処理を行ない、VCI=jのVCキューの先頭からセルを出力するためにVCIレジスタにjを設定する。
【0098】このような構成により、重みが大きいコネクションと重みが小さいコネクションを別のクラスに分けて管理することができるため、重みが大きいコネクションの重みの絶対値が小さくなり、階層化しない場合に比べてスケジューラの性能劣化を抑えることができる。
【0099】
【発明の効果】以上説明したように、本発明のスケジューリング装置によれば、重みのみでなくパケット蓄積料も用いたきめ細かなパケットスケジューリングが可能となる。従って、例えば重みの大きいコネクション群と重みの小さいコネクション群があって、それぞれのコネクション群の重みの和が等しい場合にも、重みの大きいコネクション群が小さい時間スケールで優位に扱われるという不都合を抑制することができ、コネクションの重みによらず公平なパケットスケジューリングが可能となる。
【0100】また、特に固定長パケットを扱う場合には、スケジューリング情報管理部において各パケットキュー(パケット蓄積部)に対応した重みとキュー長(パケット蓄積量)のうちの小さい方の値に等しい個数のスケジューリング情報を常に保持することにより、スケジューリング情報管理部がパケットのスケジューリングに必要な処理時間をコネクション数に関係なく一定値にすることができ、入力トラヒックにほとんど依存せずに確率的に公平なWFQも実現可能となる。
【0101】さらに、スケジューリング情報管理部においてクラス別にキューを設ければ、各クラス内あるいはクラス間のパケットスケジューリングに対して上記と同様の効果が期待できる。
【図面の簡単な説明】
【図1】 本発明の一実施形態に係るパケットスケジューリング装置の構成を示すブロック図。
【図2】 本発明の他の実施形態に係るパケットスケジューリング装置の構成を示すブロック図。
【図3】 本発明におけるスケジューリング情報管理部の実現例をしめすブロック図。
【図4】 図3のスケジューリング情報管理部の動作を示すフローチャート。
【図5】 本発明の別の実施形態に係るパケットスケジューリング装置の構成を示すブロック図。
【図6】 本発明におけるスケジューリング情報管理部の他の実現例を示すブロック図。
【図7】 図6のスケジューリング情報管理部の動作を示すフローチャート。
【図8】 本発明のさらに別の実施形態に係るパケットスケジューリング装置の構成を示すブロック図。
【図9】 ランダムアウトキューの実現例。
【図10】 重みが動的に変化する場合のスケジューリングアルゴリズム。
【図11】 重みが動的に変化する場合のスケジューリングアルゴリズム。
【図12】 重みが実数値をとり得る場合のスケジューリングアルゴリズム。
【図13】 スケジューラの階層化構成。
【図14】 クラススケジューラがクラス内のコネクションのキューの状態によってクラスの重みを変更する場合のスケジューリングアルゴリズム。
【符号の説明】
11,11−1〜11−N…パケットスケジューリング装置
12,13,14…パケットキュー(パケット蓄積部)
15…パケット入力部
16…スケジューリング情報管理部
17…パケット出力部
18…パケット
19,19−1〜19−n…パケット入力線
20,20−1〜20−N…パケット出力線
21…VCI(スケジューリング情報)
31…プロセッサ
32…ROM
33…VCIメモリ
34…キュー長メモリ
35…重みメモリ
36…状態レジスタ
37…VCI出力レジスタ
38…VCI出力レジスタ
39…データバス
40…制御バス
61…クラスレジスタ
81,82…ランダムアウトキュー
83,84…キュー選択部
91…レジスタ
92…シフト信号生成回路
93…セレクト信号生成回路
94…セレクタ信号線
95…シフト信号線
96…アドレス入力線
97…データ入力線
98…読み出し可能信号線
99…書き込み可能信号線
910…データ出力線
911…シフト信号生成可能信号線
912…データシフト線
101−1〜101−N…セル入力線
102…ATMスイッチ
【特許請求の範囲】
【請求項1】入力されるパケットを一時的に蓄積するための動的に変更可能な重みがそれぞれ設定された複数のパケット蓄積手段と、パケット受信時に前記複数のパケット蓄積手段の少なくとも一つにパケットを入力するパケット入力手段と、前記複数のパケット蓄積手段にそれぞれ蓄積されたパケットを読み出す順序を指定するためのスケジューリング情報を該パケット蓄積手段のパケット蓄積量と該パケット蓄積手段に設定された前記重みとに基づいて管理するスケジューリング情報管理手段と、パケット送信時に前記スケジューリング情報管理手段が管理するスケジューリング情報を基に所望の前記パケット蓄積手段から所望のパケットを読み出して出力するパケット出力手段とを有し、前記スケジューリング情報管理手段は、前記パケットが所属するクラス別または仮想パス別に設定される動的に変更可能な重みに基づいてクラスまたは仮想パスのスケジューリングを行ない、前記クラス別または仮想パス別の重みを前記クラスまたは仮想パス内に収容されるコネクションのパケット蓄積手段内のパケット蓄積数が、0から正の値に変化したときあるいは正の値から0に変化したときに変更することを特徴とすることを特徴とするパケットスケジューリング装置。
【請求項2】入力される固定長のパケットを一時的に蓄積するための動的に変更可能な重みがそれぞれ設定された複数のパケット蓄積手段と、パケット受信時に前記複数のパケット蓄積手段の少なくとも一つにパケットを入力するパケット入力手段と、前記複数のパケット蓄積手段にそれぞれ蓄積されたパケットを読み出す順序を指定するためのスケジューリング情報を該パケット蓄積手段のパケット蓄積数と該パケット蓄積手段に設定された前記重みとに基づいて管理するスケジューリング情報管理手段と、パケット送信時に前記スケジューリング情報管理手段が管理するスケジューリング情報を基に所望の前記パケット蓄積手段から所望のパケットを読み出して出力するパケット出力手段とを有し、前記スケジューリング情報管理手段は、前記複数のパケット蓄積手段にそれぞれ対応したスケジューリング情報の個数を該パケット蓄積手段のパケット蓄積数と該パケット蓄積手段に設定された前記重みのうちの小さい方の値に等しい個数だけ常に保持することを特徴とするパケットスケジューリング装置。
【請求項3】前記スケジューリング情報管理手段は、前記パケットが属するクラス別又は仮想パス別に前記スケジューリング情報を管理することを特徴とする請求項2に記載のパケットスケジューリング装置。
【請求項4】前記スケジューリング情報管理手段は、前記パケットが所属するクラス別または仮想パス別に設定される動的に変更可能な重みに基づいてクラスまたは仮想パスのスケジューリングを行ない、前記クラス別または仮想パス別の重みを前記クラスまたは仮想パス内に収容されるコネクションのパケット蓄積手段内のパケット蓄積数が、0から正の値に変化したときあるいは正の値から0に変化したときに変更することを特徴とする請求項3に記載のパケットスケジューリング装置。
【請求項5】前記スケジューリング情報管理手段は、少なくとも一つのFIFOキューで構成されることを特徴とする請求項1乃至3のいずれか1項に記載のパケットスケジューリング装置。
【請求項6】前記スケジューリング情報管理手段は、少なくとも一つのランダムアウトキューで構成されることを特徴とする請求項1乃至3のいずれか1項に記載のパケットスケジューリング装置。
【請求項1】入力されるパケットを一時的に蓄積するための動的に変更可能な重みがそれぞれ設定された複数のパケット蓄積手段と、パケット受信時に前記複数のパケット蓄積手段の少なくとも一つにパケットを入力するパケット入力手段と、前記複数のパケット蓄積手段にそれぞれ蓄積されたパケットを読み出す順序を指定するためのスケジューリング情報を該パケット蓄積手段のパケット蓄積量と該パケット蓄積手段に設定された前記重みとに基づいて管理するスケジューリング情報管理手段と、パケット送信時に前記スケジューリング情報管理手段が管理するスケジューリング情報を基に所望の前記パケット蓄積手段から所望のパケットを読み出して出力するパケット出力手段とを有し、前記スケジューリング情報管理手段は、前記パケットが所属するクラス別または仮想パス別に設定される動的に変更可能な重みに基づいてクラスまたは仮想パスのスケジューリングを行ない、前記クラス別または仮想パス別の重みを前記クラスまたは仮想パス内に収容されるコネクションのパケット蓄積手段内のパケット蓄積数が、0から正の値に変化したときあるいは正の値から0に変化したときに変更することを特徴とすることを特徴とするパケットスケジューリング装置。
【請求項2】入力される固定長のパケットを一時的に蓄積するための動的に変更可能な重みがそれぞれ設定された複数のパケット蓄積手段と、パケット受信時に前記複数のパケット蓄積手段の少なくとも一つにパケットを入力するパケット入力手段と、前記複数のパケット蓄積手段にそれぞれ蓄積されたパケットを読み出す順序を指定するためのスケジューリング情報を該パケット蓄積手段のパケット蓄積数と該パケット蓄積手段に設定された前記重みとに基づいて管理するスケジューリング情報管理手段と、パケット送信時に前記スケジューリング情報管理手段が管理するスケジューリング情報を基に所望の前記パケット蓄積手段から所望のパケットを読み出して出力するパケット出力手段とを有し、前記スケジューリング情報管理手段は、前記複数のパケット蓄積手段にそれぞれ対応したスケジューリング情報の個数を該パケット蓄積手段のパケット蓄積数と該パケット蓄積手段に設定された前記重みのうちの小さい方の値に等しい個数だけ常に保持することを特徴とするパケットスケジューリング装置。
【請求項3】前記スケジューリング情報管理手段は、前記パケットが属するクラス別又は仮想パス別に前記スケジューリング情報を管理することを特徴とする請求項2に記載のパケットスケジューリング装置。
【請求項4】前記スケジューリング情報管理手段は、前記パケットが所属するクラス別または仮想パス別に設定される動的に変更可能な重みに基づいてクラスまたは仮想パスのスケジューリングを行ない、前記クラス別または仮想パス別の重みを前記クラスまたは仮想パス内に収容されるコネクションのパケット蓄積手段内のパケット蓄積数が、0から正の値に変化したときあるいは正の値から0に変化したときに変更することを特徴とする請求項3に記載のパケットスケジューリング装置。
【請求項5】前記スケジューリング情報管理手段は、少なくとも一つのFIFOキューで構成されることを特徴とする請求項1乃至3のいずれか1項に記載のパケットスケジューリング装置。
【請求項6】前記スケジューリング情報管理手段は、少なくとも一つのランダムアウトキューで構成されることを特徴とする請求項1乃至3のいずれか1項に記載のパケットスケジューリング装置。
【図1】
【図9】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図10】
【図7】
【図8】
【図14】
【図11】
【図12】
【図9】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図10】
【図7】
【図8】
【図14】
【図11】
【図12】
【特許番号】特許第3434642号(P3434642)
【登録日】平成15年5月30日(2003.5.30)
【発行日】平成15年8月11日(2003.8.11)
【国際特許分類】
【出願番号】特願平8−52813
【出願日】平成8年3月11日(1996.3.11)
【公開番号】特開平9−83547
【公開日】平成9年3月28日(1997.3.28)
【審査請求日】平成12年12月13日(2000.12.13)
【出願人】(000003078)株式会社東芝 (54,554)
【参考文献】
【文献】特開 平2−87747(JP,A)
【文献】特開 平4−207543(JP,A)
【文献】特開 平7−240752(JP,A)
【文献】特開 平8−130543(JP,A)
【文献】特開 平5−227194(JP,A)
【文献】特開 平4−336832(JP,A)
【文献】特開 平6−338905(JP,A)
【登録日】平成15年5月30日(2003.5.30)
【発行日】平成15年8月11日(2003.8.11)
【国際特許分類】
【出願日】平成8年3月11日(1996.3.11)
【公開番号】特開平9−83547
【公開日】平成9年3月28日(1997.3.28)
【審査請求日】平成12年12月13日(2000.12.13)
【出願人】(000003078)株式会社東芝 (54,554)
【参考文献】
【文献】特開 平2−87747(JP,A)
【文献】特開 平4−207543(JP,A)
【文献】特開 平7−240752(JP,A)
【文献】特開 平8−130543(JP,A)
【文献】特開 平5−227194(JP,A)
【文献】特開 平4−336832(JP,A)
【文献】特開 平6−338905(JP,A)
[ Back to top ]