JP4199414B2 - Packet scheduler - Google Patents
Packet scheduler Download PDFInfo
- Publication number
- JP4199414B2 JP4199414B2 JP2000374957A JP2000374957A JP4199414B2 JP 4199414 B2 JP4199414 B2 JP 4199414B2 JP 2000374957 A JP2000374957 A JP 2000374957A JP 2000374957 A JP2000374957 A JP 2000374957A JP 4199414 B2 JP4199414 B2 JP 4199414B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- queue
- output time
- packet data
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、パケット・スケジューラに関し、特に、いわゆるルータなどのパケット転送装置においてWFQ(Weighted Fair Queuing)を用いたパケット・スケジューリングを行なうのに好適な、パケット・スケジューラに関する。
【0002】
【従来の技術】
ネットワークにおけるパケットデータ(以下、単に「パケット」という)のフロー、あるいは、フローのアグリゲート(集合;以下、これらを総称してストリームという)のサービス品質(QoS:Quality of Service)を保証するために、IP(Internet Protocol)ルータやATM(Asynchronous Transfer Mode)ルータなどのネットワーク中継装置(パケット転送装置)では、それぞれのストリームに対して帯域を予約し、その予約帯域を保証するようにパケットの送信、即ち、各ストリーム毎のキューに保持されたパケットの読み出し制御(パケット・スケジューリング)を行なう必要がある。なお、上記の各キューは、通常、先入れ先出し(FIFO:First-In First-Out)方式のメモリ(バッファ)で構成される。
【0003】
一方、出力リンク(回線)の帯域を最大限に利用するため、各キューのアクティブ状況によって一時的に生じる剰余帯域をストリーム間で公平に配分する機能、即ち、非アクティブ状態のキュー(ストリーム)に対して設定されている予約帯域をアクティブ状態のキュー(ストリーム)に公平に分配する機能も必要となる。
【0004】
なお、キューの「アクティブ状態」とは送信待ちのパケットがキューに存在している(保持されている)状態を意味し、「非アクティブ状態」とは、送信待ちのパケットがキューに存在しない(保持されていない、つまり空き)状態を意味する。
以上のような機能をもつパケット・スケジューリング手法としては、WFQがよく知られているが、従来のWFQによる処理機能の実現では計算量が多いため、高速リンクに対応する実現が困難となっている。以下、WFQの計算原理について説明する。
【0005】
パケット転送装置において、各ストリームのパケットはそれぞれ対応するキューに保持され、各キューに保持されたパケットはFIFO方式で出力される(先頭パケットが出力されると、次のパケットが先頭パケットとなる)ので、WFQでは、非アクティブ状態のキューの余剰帯域を公平に配分することも考慮した場合、各キューの先頭パケット(最初に出力されるべきパケット)の理想出力時刻Fi,1を次式(1−1)により計算し、得られた各キューの先頭パケットの理想出力時刻Fi,1に基づいて、最優先で出力すべき先頭パケットを次式(1−2)により選択して出力することが行なわれる。
【0006】
【数1】
【0007】
【数2】
【0008】
ここで、上記の式(1−1),(1−2)で使用した各記号の意味を説明する。
まず、式(1−1)の第1項において、Fはパケットの理想出力時刻、Tはパケットの到着時刻の情報をそれぞれ表わし、これらのFやTの添字部分(i,j)は、i番目のキュー(以下、キュー#iと表記する)の先頭からj番目のパケットを指す。即ち、Fi,jはキュー#iの先頭からj番目のパケットについての理想出力時刻(情報)を表わし、Ti,jはキュー#iの先頭からj番目のパケットの到着時刻(情報)を表わすことになる。
【0009】
なお、1つのパケット・スケジューラ(以下、単に「スケジューラ」という)は1〜n番目までのキューの処理を可能とするので、i=1〜nである。また、j=1は、スケジューラで計算を行なっている時に、キュー#iの先頭に位置するパケットを表わし、j=0は直前に出力したパケットの出力時刻を表わす。
つまり、式(1−1)の第1項max{Fi,0,Ti,1}は、直前に出力したキュー#iの先頭パケットの理想出力時刻と、その先頭パケットに続く同じキュー#iのパケットの到着時刻とのうち値の大きい(遅い)方をとることを表わす。これは、先頭パケットの理想出力時刻Fi,1の計算基準となる時刻情報を、直前に出力したキュー#iの先頭パケットの出力時刻Fi,0と、その先頭パケットに続く同じキュー#iのパケットの到着時刻Ti,1とのいずれかに揃えることを意味する。
【0010】
例えば、パケット出力後に次のパケットが到着する状況(次のパケット到着までにスケジューラによる計算が完了している状況)では、パケットの到着時刻Ti,1の方が直前に出力したパケットの出力時刻Fi,0よりも遅いので、次のパケットの到着時刻Ti,1が理想出力時刻Fi,1の計算基準となり、逆に、パケット出力前に次のパケットが到着する状況(スケジューラによる計算途中で次のパケットが到着する状況)では、直前に出力したパケットの出力時刻Fi,0の方が次のパケットの到着時刻Ti,1よりも遅いので、直前に出力したパケットの出力時刻Fi ,1が理想出力時刻Fi,1の計算基準となる。
【0011】
一方、式(1−1)の第2項において、Li,jはキュー#iの先頭からj番目のパケットの長さ、Φiはキュー#iに設定された予約帯域、Φbはアクティブ状態のキュー(以下、単に「アクティブキュー」ともいう)#iについての予約帯域Φiの合計、Rは全キュー#1〜#nの予約帯域Φiの合計をそれぞれ表わす。つまり、式(1−1)の第2項は、空き状態のキュー#iの予約帯域を他のキューへ公平に配分するためのパラメータを表わしていることになる。
【0012】
そして、式(1−2)は、アクティブ状態のキューの中で最も理想出力時刻Fi,1の値が小さいものを選択することを意味する。つまり、理想出力時刻Fi,1が大きい先頭パケットほど、優先して出力すべき先頭パケットとしては選択されにくくなることが分かる。
例えば、或るキュー#iから1回の出力で大きなパケット長Lのパケットを出力した場合には、次のパケット(新たな先頭パケット)についての理想出力時刻Fi,1の値が大きくなるので、そのパケットは出力パケットとして選択されにくくなり、連続出力は行なわれにくくなる。
【0013】
また、同じキュー#iから連続してパケットが出力された場合にも、式(1−1)の第2項の累積により、理想出力時刻Fi,1が増加してゆくので、或る程度連続してパケット出力が行なわれた時点で、そのキュー#iの先頭パケットは出力パケットとしては選択されにくくなる。
逆に、例えば、予約帯域Φiに大きな値が設定されているキュー#iは、他のキュー#iに比べて理想出力時刻Fi,1が小さくなるので、そのキュー#iのパケットが出力パケットとして選択されやすくなる。
【0014】
なお、以下の説明において、便宜上、上記の式(1−1)は次式(1−3)に示すように変形する。
Fi,1=αi,1+βi,1×γ …(1−3)
ただし、αi,1=max{Fi,0,Ti,1}、βi,1=Li,1/Φi、γ=Φb/Rである。また、上記のαi,1は「α」、βi,1は「β」もしくは「βi」とそれぞれ略記する場合がある。同様に、前記のFi,jを「F」もしくは「Fi」、Ti,jを「T」もしくは「Ti」とそれぞれ略記する場合もある。以上の記号は、後述する本発明の実施形態においても同様の意味で使用するものとする。
【0015】
さて、ここで、上述したような計算を実際にハードウェア(パケット・スケジューラ)として実現するには、例えば、図21に示すような構成が考えられる。即ち、この図21に示すように、WFQを用いたパケット・スケジューラ100は、キュー管理部101,計算部102及び最小値選択部103をそなえて構成され、さらに、キュー管理部101は、エンキュー処理部111,キュー記憶部112及びデキュー処理部113をそなえ、計算部102は、γ計算部121,β計算部122,各キュー#i毎の記憶部123−1〜123−n及び各キュー毎のF計算部124−1〜124−nをそなえて構成されている。
【0016】
ここで、キュー管理部101において、キュー記憶部112は、図示しないパケットメモリに格納された到着パケットに関する情報〔パケット長L,到着時刻T(TimeStamp),上記パケットメモリでの格納位置(メモリアドレス;TopPointer)〕を、その到着パケットが属するストリーム対応のキュー#1〜#n毎にFIFO形式で記憶してキュー管理テーブルとして管理するためのものである。
【0017】
また、エンキュー処理部111は、上記のパケットメモリから通知されるエンキュー番号(EnQueueNo)に基づいて、上記の到着パケットの情報を、キュー記憶部112(キュー管理テーブル)の対応するキュー#iに格納(エンキュー)するものであり、デキュー処理部113は、最小値選択部103にて最優先に出力すべきと決定した先頭パケットの属するキュー番号i(デキュー指示;DeQueueNo=i)を受けることにより、そのキュー番号iに対応するキュー#iの先頭パケットの情報(メモリアドレス)をパケットメモリに通知して該当パケットを出力リンク(回線)に送出させるとともに、そのパケットの情報〔パケット長L,到着時刻T(TimeStamp),メモリアドレス(TopPointer)〕を削除するものである。
【0018】
なお、本キュー管理部101では、各キュー#i毎に設定される予約帯域Φiやアクティブキュー#iの合計予約帯域Φb,最小値選択部103で選択された先頭パケットの出力時刻Fi,0なども管理されている。
次に、計算部102において、γ計算部121は、キュー管理部101で管理されているアクティブキュー#iの合計予約帯域Φbを基に前記のγ(=Φb/R)を計算するためのものであり、β計算部122は、キュー管理部101で管理されている情報のうち、パケット長Lと予約帯域Φiとにより上記のβ(=L/Φi)を計算するためのもので、その計算結果βは、キュー番号iに対応する記憶部123−iに記憶されるようになっている。なお、キュー管理部101で管理されている到着時刻T及び出力時刻Fi,0は、β計算部122は経由せずにそのまま対応するキュー番号iの記憶部123−iにて上記の計算結果βと組で記憶される。
【0019】
また、各F計算部124−iは、それぞれ、上記の記憶部123に記憶されている情報(β,T,Fi,0)に基づいて、前記の式(1−3)による計算を行なうことにより、対応するキュー#iの先頭パケットについての理想出力時刻Fを計算するFi,1を計算するためのもので、このために、図21中に示すように、それぞれ、β×γ計算部125,α計算部126及びこれらの各計算部125,126の計算結果を加算することにより理想出力時刻Fi,1を求める加算部127を有して構成されている。
【0020】
そして、上記の最小値選択部103は、上記の各F計算部124−iによって求められた各キュー#i毎の先頭パケットの理想出力時刻Fi,1を、例えば、トーナメント方式などで比較することにより、最小の理想出力時刻Fi,1をもつ先頭パケットの属するキュー#iを選択(決定)するためのもので、そのキュー番号iがデキュー指示としてデキュー処理部113に通知(フィードバック)されることによって、該当するキュー#iの先頭パケットがパケットメモリから読み出されて出力リンクへ転送されるようになっている。なお、このとき選択された理想出力時刻Fi,1も、キュー管理部101に通知され、キュー管理部101にて、次の計算で使用する出力時刻Fi,0として管理されることになる。
【0021】
上述のごとく構成されたパケット・スケジューラ100では、或るストリームからのパケット到着毎に、エンキュー処理部111によって、その到着パケットが属するストリームに対応するキュー#iの状態が更新されてゆく。そして、キュー#iの先頭にパケットが存在する場合、その先頭パケットに関する情報(パケット長Li,1,到着時刻Ti,1),直前に出力された先頭パケットに関する情報(出力時刻Fi,0)及びキュー#i対応の設定情報(1/Φi)がそれぞれキュー管理部101から計算部124に送られる。
【0022】
計算部124−iでは、まず、上述のごとくキュー管理部101から送られてきた情報により、γ計算部121にてγの値が計算されるとともに、β計算部122にてβの値が計算され、βは対応するキュー番号iの記憶部123−iに保持される。なお、βの計算に用いられなかった情報(到着時刻Ti,1,出力時刻Fi,0)は、それぞれ、β計算部122によって得られたβとともに記憶部123−iに保持される。
【0023】
そして、γ計算部121によって求められたγと、記憶部123−iに保持されたβ,Ti,1及びFi,0とは、それぞれ、同じタイミングで対応するキュー番号iのF計算部124−iに入力され、そのF計算部124−iでは、このようにして送られてきた情報(γ,β,Ti,1及びFi,0)を基に、β×γ計算部125にてβ×γの値が計算されるとともに、α計算部126にてαの値が計算され、それらの計算結果が加算部127にて加算されることにより、キュー番号iの先頭パケットについての理想出力時刻Fi,1が求められる。
【0024】
このようにして各F計算部124−iにて求められた各理想出力時刻Fi,1は、それぞれ、同一タイミングで最小値選択部103に入力され、最小値選択部103は、トーナメント方式などによって各理想出力時刻Fi,1を比較して、最もの値の小さい理想出力時刻Fi,1を選択し、そのキュー番号iをデキュー指示としてキュー管理部101のデキュー処理部113に通知する。
【0025】
これにより、デキュー処理部113によって、デキュー番号iのキュー#iの先頭パケットが読み出されて、出力リンクに送出される。以降、同様にして、各キュー#i毎に先頭パケットの理想出力時刻Fi,1が計算されて、最も小さい理想出力時刻Fi,1をもつキュー#iの先頭パケットが最優先に出力すべきパケットとして選択されて、出力リンクへ送出されてゆく。
【0026】
ただし、本パケット・スケジューラ100は、図21中に示すように、キュー管理部101,記憶部123−i(γ計算部121),F計算部124−i及び最小値選択部103が、それぞれ、時間とともに同時に動作し一定時間(一定クロック数)pτ毎に情報を後段へ出力する4段のパイプライン構成になっており、計算部102では、次のデキュー指示が発生するまで、同じ情報に基づいた計算が繰り返し行なわれ、次のデキュー指示が発生すると、パイプライン処理によるそれまでの途中計算結果を破棄する(無効にする)ことで、デキュー指示発生後の新たな情報に基づく計算が開始されるようになっている。
【0027】
また、上述した計算過程において、パケットの入出力によってキュー#iのアクティブ状態に変化があると、合計予約帯域Φbの値が変化する(つまり、アクティブキュー#iに割り当て可能な余剰帯域の値が変化する)ため、式(1−3)の再計算が必要となる。
即ち、空き状態のキュー#iにパケットが新たに格納されてアクティブキュー#iの数が増えたり、1つしかパケットが保持されていないキュー#iからそのパケットが出力されて空き状態のキュー#iが増えたりすると、合計予約帯域Φbの値が変化するため、γ計算部121において、γ(=Φb/R)の再計算が必要になるのである。
【0028】
このため、上記のγ計算部121は、空き状態からアクティブ状態に遷移したキュー#iが生じると上記の合計予約帯域ΦbとしてΦb=Φb+Φiを用いてγの再計算を行ない、逆に、アクティブ状態から空き状態に遷移したキュー#iが生じると上記の合計予約帯域ΦbとしてΦb=Φb−Φiを用いてγの再計算を行なう。
【0029】
以上のようにして、パケット・スケジューラ100は、各キュー#iのアクティブ状況によって一時的に生じる剰余帯域をストリーム間で公平に配分しながら、設定された予約帯域Φiを保証するようにパケットの送信(パケット・スケジューリング)を行なうことが可能である。
【0030】
【発明が解決しようとする課題】
しかしながら、このような従来のパケット・スケジューラ100では、デキュー指示の発生からの一連のパイプライン処理の合計遅延時間が、そのスループットを決定してしまう。例えば、パイプライン段数をm段(図21ではm=4段)とすると、1パイプライン当たりの処理時間(遅延時間)は上記のようにpτなので、上記の合計遅延時間はm×pτと表わせる。
【0031】
ここで、最小パケット長(Lmin)のパケットが連続して入出力するときのスループット(S)は、S=Lmin/(m×pτ)によって求められる。つまり、パケット・スケジューラ100のスループット(S)は、パイプライン処理の総段数(m)によって制限されてしまうのである。
そこで、例えば、m=Lmin/(S×pτ)の時間間隔で各キュー#iの先頭パケットに関する情報をパイプライン処理に入力することで、スループット(S)の向上を図ることも考えられるが、パイプライン処理では、上述したように、同じパケットについてのデキュー指示が重複して発生しないよう、必ず、デキュー指示によってパイプライン処理中のキュー#iの先頭パケットに関する情報を無効にしなければならないので、実際には、同じキュー#iからは連続的に(つまり、pτ間隔で)パケットを出力(デキュー)することができない。
【0032】
即ち、或るキュー#iの先頭パケットに対するデキュー指示が発生した場合、他のキュー#iの先頭パケット(最小値選択部103で選択されなかったキュー#iの先頭パケット)のパイプライン処理による計算途中の情報については有効であるが、デキュー済み先頭パケットについてのパイプライン処理による計算途中の情報については無効にしなければならない。
【0033】
このため、次に同じキュー#iからパケットがデキューされるのは、キュー管理部101から次の先頭パケットについての情報が計算部102に新たに送られて、新たに理想出力時刻Fi,1が求められ、その値が最小値選択部103にて比較・選択されるまでなく、結果として、同じキュー#iからは(m−1)×pτ間隔でしかパケットをデキューすることができず、パケット出力のスループットが低下してしまうのである。
【0034】
本発明は、このような課題に鑑み創案されたもので、パイプライン処理の段数に起因して生じるスループットの低下を回避して、パケット・スケジューリングの大幅な高速化を図れるようにした、パケット・スケジューラを提供することを目的とする。
【0035】
【課題を解決するための手段】
上記の目的を達成するために、本発明のパケット・スケジューラ(請求項1)は、送信待ちのパケットデータをそれぞれ出力保証帯域の設定が可能な複数のキューにより管理し各キュー毎のパケットデータの送信量をそれぞれの出力保証帯域の設定に基づいてスケジューリングするものであって、次の各手段をそなえて構成されていることを特徴としている。
【0036】
(1)上記のパケットデータに関する情報に基づいて、空き状態のキューについての出力保証帯域を余剰帯域としてアクティブ状態の他のキューに公平に配分するための計算を行なう前計算手段
(2)少なくとも、上記の各キューから最初に出力されるべき第1パケットデータの理想出力時刻計算に必要な上記前計算手段での第1計算結果を含む第1中間データと、上記第1パケットデータの次に出力されるべき第2パケットデータについての理想出力時刻計算に必要な上記前計算手段での第2計算結果を含む第2中間データとを記憶する中間計算結果記憶手段
(3)この中間計算結果記憶手段に記憶されている第1中間データに基づいて上記の各キューにおける第1パケットデータについての理想送信時刻情報を計算する後計算手段
(4)この後計算手段によって計算された各理想出力時刻情報に基づいて最優先に送信すべきキューの第1パケットデータを決定する送信パケットデータ決定手段
(5)この送信パケットデータ決定手段で最優先に送信すべきと決定された第1パケットデータと同じキューに属する第2パケットデータについての第2中間データを、そのキューの新たな第1パケットデータについての第1中間データとして他のキューに属する第1パケットデータの第1中間データとともに上記の中間計算結果記憶手段から読み出して後計算手段へ出力する中間計算結果読み出し制御手段
ここで、上記の中間計算結果読み出し制御手段は、上記の中間計算結果記憶手段に記憶されている、上記送信パケットデータ決定手段で最優先に送信すべきと決定された第1パケットデータについての第1計算結果を無効にするように構成されるのが好ましい(請求項2)。
【0037】
また、上記の中間計算結果記憶手段は、上記の第2パケットデータの次に出力されるべき第3パケットデータの理想出力時刻計算に必要な上記前計算手段での第3計算結果を含む第3中間データを、新たな第2パケットについての第2中間データとして記憶するように構成されていていもよい(請求項3)。
さらに、上記の送信パケットデータ決定手段は、次の各手段をそなえて構成されていてもよい(請求項4)。
【0038】
(1)上記の後計算手段によって計算された理想出力時刻情報を比較して最優先に送信すべき第1パケットデータの理想出力時刻情報を選択する理想出力時刻情報選択手段
(2)この理想出力時刻情報選択手段からの理想出力時刻情報と上記の後計算手段からバイパス入力される理想出力時刻情報とを比較して最優先に送信すべき第1パケットデータを決定する合流制御手段
(3)上記の後計算手段において計算された第2パケットデータの理想出力時刻情報を上記のバイパス入力として上記の合流制御手段へ出力するとともに、それ以外の第1パケットデータの理想出力時刻情報を上記の理想出力時刻情報選択手段へ出力するバイパス制御手段
なお、上記のバイパス制御手段は、上記キュー毎のバイパス制御回路をそなえるとともに、これらの各バイパス制御回路が、それぞれ、次の各部をそなえていてもよい(請求項5)。
【0039】
(1)上記の後計算手段によって計算された第1パケットデータの理想出力時刻情報を記憶するメモリ部
(2)このメモリ部に記憶された理想出力時刻情報を上記バイパス入力もしくは上記理想出力時刻情報選択手段への入力として選択的に出力するバイパス選択部
(3)上記の合流制御手段で最優先に送信すべきと決定された第1パケットデータの属するキュー番号が自担当のキュー番号と一致すると上記メモリ部の理想出力時刻情報が該バイパス入力として選択され、上記キュー番号が自担当のキュー番号と異なると上記メモリ部の理想出力時刻情報が上記理想出力時刻情報選択手段への入力として選択されるよう上記バイパス選択部を制御する状態制御部
また、上記のバイパス制御手段は、上記の合流制御手段で最優先に送信すべきと決定した第1パケットデータについての理想出力時刻情報を無効にするように構成されるのが好ましい(請求項6)。
【0040】
さらに、本発明のパケット・スケジューラは、複数のパケットインタフェースについての送信待ちのパケットデータをそれぞれ出力保証帯域の設定が可能な複数のキューにより上記の各パケットインタフェース毎に管理し該キュー毎のパケットデータの送信量を上記出力保証帯域の設定に基づいてスケジューリングするパケット・スケジューラであって、次の各手段をそなえるとともに、これらの各手段が複数のパイプライン処理ステージに分割され、且つ、これらのパイプライン処理ステージが、それぞれ、一定時間毎に異なる上記パケットインタフェースについての処理を行なうように構成されたことを特徴としている(請求項7)。
【0041】
(1)非アクティブ状態となっているキューについての出力保証帯域を余剰帯域としてアクティブ状態の他のキューに公平に配分するための計算を行なう前計算手段
(2)少なくとも、上記の各キューから最初に出力されるべき第1パケットデータの理想出力時刻計算に必要な該前計算手段での第1計算結果を含む第1中間データと、上記第1パケットデータの次に出力されるべき第2パケットデータの理想出力時刻計算に必要な該前計算手段での第2計算結果を含む第2中間データとを記憶する中間計算結果記憶手段
(3)この中間計算結果記憶手段に記憶されている上記第1中間データに基づいて上記の各キューにおける第1パケットデータの理想出力時刻情報を計算する後計算手段
(4)この後計算手段によって計算された各理想出力時刻情報に基づいて最優先に送信すべきキューの第1パケットデータを決定する送信パケットデータ決定手段
(5)この送信パケットデータ決定手段で最優先に送信すべきと決定された第1パケットデータと同じキューに属する第2パケットデータについての第2中間データを、当該キューの新たな第1パケットデータについての第1中間データとして他のキューに属する第1パケットデータについての第1中間データとともに上記の中間計算結果記憶手段から読み出して後計算手段へ出力する中間計算結果読み出し制御手段
【0042】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
(A)一実施形態の説明
図1は本発明の一実施形態としてのパケット・スケジューラの構成を示すブロック図で、この図1に示すパケット・スケジューラ1は、キュー管理部2,前計算部3,中間結果記憶部4,後計算部5及び最小値決定処理部10(バイパス制御部6,最小値選択部7及び合流制御部8)をそなえて構成されている。なお、本パケット・スケジューラ1は、この図1中に示すように、それぞれpτ間隔で後段の処理へ情報を出力する4段のパイプライン構成になっているものとする。
【0043】
ここで、キュー管理部2は、図21により前述したものと同様に、送信待ちのパケットデータ(以下、単に「パケット」という)をそれぞれ予約帯域(出力保証帯域)Φiの設定が可能な複数のキュー#1〜#nにより管理するためのもので、このために、本実施形態では、図1及び図2に示すように、エンキュー処理部21,キュー記憶部22,デキュー処理部23及びエンキュー・デキュー調停部24をそなえて構成されている。なお、図1では、エンキュー・デキュー調停部24の図示は省略している。
【0044】
そして、上記のキュー記憶部22は、本実施形態においても、到着パケットに関する情報〔関連パラメータ;パケット長L,到着時刻T(TimeStamp),図2に示すパケットメモリ9での格納位置(メモリアドレス;TopPointer)〕を、その到着パケットが属するストリーム対応のキュー#1〜#n毎にFIFO形式で記憶してキュー管理テーブル221(図2参照)として管理するためのものである。
【0045】
また、エンキュー処理部21は、パケットメモリ9から通知されるエンキュー番号(EnQueueNo)に基づいて、上記の到着パケットの情報(関連パラメータ)を、キュー管理テーブル221の対応するキュー#iに格納(エンキュー)することにより、パケット到着(パケットメモリ9への書き込み)毎にその状態を更新するものである。
【0046】
ただし、本エンキュー処理部21は、最初の計算では各キュー#iの先頭から1番目のパケットと2番目のパケットの情報をキュー管理テーブル221から読み出してそれぞれ時系列に後段の前計算部3に出力するようになっている。また、上記のパケット情報のうち到着時刻T(TimeStamp)については、図2では、エンキュー処理部21がキュー管理テーブル221に対してエンキューを行なったときのタイマ25でのタイマ値として得られる構成になっている。
【0047】
一方、デキュー処理部23は、後述するデキュー指示(デキュー番号i)を受けることにより、そのデキュー番号iに対応する先頭パケットの情報(メモリアドレス;TopPointer)をキュー管理テーブル221から読み出してパケットメモリ9に通知するもので、これにより、そのメモリアドレスに格納されているパケットがパケットメモリ9から読み出されて出力リンク(回線)に送出されることになる。
【0048】
ただし、本実施形態のデキュー処理部23は、上記のデキュー指示を受けると、デキュー番号iに対応するキュー管理テーブル221に格納されているデキュー済みのパケット情報を削除するとともに、同じキュー#iの3番目のパケット情報をキュー管理テーブル221から読み出して前計算部3に出力する機能も有している。
【0049】
また、エンキュー・デキュー調停部24は、少なくとも、キュー管理テーブル221の同じキュー#iに同一タイミングで上記のエンキュー処理部21及びデキュー処理部23がアクセスしてパケットの情報が消失してしまうようなことを防止するために、エンキュー処理部21及びデキュー処理部23のキュー管理テーブル221に対するアクセスタイミングをそれぞれ調停するためのものである。
【0050】
次に、前計算部3は、上記のキュー管理部101から出力されてくるパケットの情報に基づいて、WFQの計算、即ち、空き状態のキュー#iについての予約帯域Φiを余剰帯域としてアクティブキュー#iに公平に配分するための計算を行なうためのもので、このために、図1に示すように、γ計算部31及びβ計算部32をそなえて構成されている。
【0051】
ここで、γ計算部31は、余剰帯域の配分変数〔γ=Φb×(1/R)〕を計算するためのものである。ただし、パケットの入出力でキュー#iのアクティブ状況が変化した場合には、γ計算部31は、γの再計算を行なう。例えば、Φbがアクティブキューの予約帯域Φiを合計した値で、初期値(全てのキュー#iにパケット情報が存在しないとき)が0であるとすると、空き状態からアクティブ状態に遷移したキュー#iが生じると、Φb=Φb+Φiを計算しそのΦbでγを計算し直す。一方、アクティブ状態から空き状態に遷移したキュー#iが生じると、Φb=Φb−Φiを計算しそのΦbでγを計算し直す。
【0052】
なお、本γ計算部31は、例えば図2に示すように、上記のΦiの代わりに、(Φi/R)を予めRAM311に設定しておけば、その値(Φi/R)をアクティブキュー#j(j∈active)の数だけγ演算器(加算器)312にて累積加算してゆくだけで、Φb×(1/R)を求めることができ、乗算の計算を省略することができる。
【0053】
一方、上記のβ計算部32は、パケット長(L)×予約帯域(1/Φi)の計算により前記のβを求めるもので、例えば図2では、エンキュー処理部21から通知されるキュー番号(QueueNo=i)により、予めRAM321に設定された(1/Φi)を読み出して、その値(1/Φi)と、同じくエンキュー処理部21から通知されるパケット長L(PacketLen)とを乗算器322にて乗算することにより、βを求める構成になっている。
【0054】
次に、中間結果記憶部4は、各キュー#iの先頭と2番目のパケットの情報に対しての中間計算データ(βi,1,Ti,1),(βi,2,Ti,2)と、合流制御部8の出力からフィードバックされてくる、直前に出力した先頭パケットの出力時刻(Fi,0)とをキュー#i毎に保持して後段の後計算部5へ出力するためのものである。なお、以下では、これらの中間計算データ(βi,1,Ti,1),(βi,2,Ti,2)と、直前に出力した先頭パケットの理想出力時刻(Fi,0)とを総称して「中間データ」という場合がある。
【0055】
つまり、上記の中間結果記憶部4は、少なくとも、上記の各キュー#iの先頭パケット(第1パケットデータ)の理想出力時刻計算Fに必要な前計算部31での第1計算結果として上記のβi,1を含む(第1)中間データと、上記先頭パケットの次に出力されるべき2番目のパケット(第2パケットデータ)についての理想出力時刻計算に必要な第2計算結果として上記のβi,2を含む(第2)中間データとを記憶するようになっているのである。
【0056】
このため、本中間結果記憶部4は、図1及び図2に示すように、それぞれ、上記の中間データを記憶するためのキュー毎#iの中間データ記憶部41−1〜41−nと、デキュー指示により上記中間データの読み出し制御を行なう中間データ読み出し制御部42とをそなえて構成されている。なお、図2では、中間データ読み出し制御部42の図示は省略している。
【0057】
具体的に、この中間データ読み出し制御部42は、デキュー指示(DeQueueNo=i)を受けることにより、そのデキュー番号iと対応する中間データ記憶部41−iの2番目のパケット情報(βi,2,Ti,2)と出力時刻(Fi,0)とを読み出して後計算部5へ出力するとともに、中間データ記憶部41−iにおいて、その2番目パケットの情報を先頭パケットの情報として更新し、且つ、合流制御部8の出力からデキュー指示(DeQueueNo=i)とともにフィードバックされてくる出力時刻(Fi,0)を記憶する一方、デキュー指示(DeQueueNo=i)以外のキュー#k(k≠i)については、先頭のパケット情報(βk,1,,Tk,1)を対応する中間データ記憶部41−kから読み出して後計算部5に出力するようになっている。
【0058】
つまり、本中間データ読み出し制御部42は、後述する合流制御部8で最優先に送信(デキュー)すべきと決定された先頭パケットと同じキュー#iに属する2番目のパケットについての中間データを、そのキュー#iの新たな先頭パケットについての中間データとして他のキュー#kに属する先頭パケットの中間データとともに中間計算結果記憶部4から読み出して後計算部5へ出力するようになっているのである。これにより、一定の遅延時間で後段処理のためのデータ出力が可能となり、デキューから次のパケットの計算開始までの遅延時間を短縮することが可能である。
【0059】
なお、上述のごとく2番目パケットの情報を新たな先頭パケットの情報として更新したキュー#iについては、キュー管理部2から送出された3番目のパケットの情報に基づいて前計算部3で計算されたパケット情報(βi,2,Ti,2)と、デキュー指示(DeQueueNo=i)とともに送られてくる直前に出力した先頭パケットについての出力時刻(Fi,0)とが新たな2番目のパケットについての中間データとして中間データ記憶部41−iに記憶される。
【0060】
つまり、本パケット・スケジューラ1は、一定時間間隔pτ毎に、2番目パケットの情報を新たな先頭パケットの情報として更新したことで空きのできた中間データ記憶部41−iに、その次(3番目)のパケットについての中間データを、順次、補填してゆくことで、常に、先頭パケットと2番目のパケットとの2つ分のパケットについての中間データを中間データ記憶部41−iに保持しておくように動作するのである。
【0061】
次に、後計算部5は、パイプライン前段の上記の中間結果記憶部4から入力された、全アクティブキュー#iの中間データに基づいて、各アクティブキュー#i毎に、前記の式(1−3)による演算を行なって、各アクティブキュー#iの先頭パケットの理想出力時刻Fi,1を求めるためのもので、このために、図1及び図2に示すように、キュー#i毎のF計算部51−1〜51−nを有しており、これらの各F計算部51−iに、それぞれ、β×γを計算するβ×γ計算部(乗算器)52と、αi,1=max{Fi,0,Ti,1}を計算するα計算部53と、これらの各計算部52,53の計算結果を加算することにより理想出力時刻Fi,1を求める加算部54とがそなえられている。
【0062】
また、最小値決定処理部(送信パケットデータ決定手段)10は、上記の後計算部5によって計算された各理想出力時刻Fi,1に基づいて最優先に送信すべきキュー#iの先頭パケットを決定(選択)するためのもので、このために、本実施形態では、それぞれ、次のような機能を有する前記バイパス制御部6,最小値選択部7及び合流制御部8がそなえられている。
【0063】
即ち、バイパス制御部6は、各キュー#iと対応して、後計算部5からの計算結果(キュー#i毎の理想出力時刻Fi,1)を最小値選択部7を経由せずに合流制御部8へバイパスするかどうかを示す状態変数Siを有し、この状態変数Siに応じて理想出力時刻Fi,1を最小値選択部7及び合流制御部8のいずれかに選択的に出力するためのもので、例えば、Si=ON状態の場合には、次に後計算部5から入力されてくる理想出力時刻Fi,1を合流制御部8へバイパスし、Si=OFF状態の場合には、バイパスせずに最小値選択部7へ出力するようになっている。
【0064】
このため、本バイパス制御部6には、図2に示すように、各キュー#i毎のバイパス制御回路61−1〜61−nがそなえられており、さらに、これらの各バイパス制御回路61−iには、それぞれ、例えば図3に示すように、一時記憶部62,選択部63及び状態制御部64が設けられている。
ここで、上記の一時記憶部(メモリ部)62は、後計算部5の対応するF計算部51−iから入力される理想出力時刻Fi,1を一時的に記憶しておくためのものであり、選択部(バイパス選択手段)63は、この一時記憶部62に記憶された理想出力時刻Fi,1を合流制御部8へのバイパス入力もしくは最小値選択部7への入力として選択的に出力するためのものである。
【0065】
そして、状態制御部64は、例えば図4に示す状態遷移図に従って状態変数Siを制御することで、選択部63での選択状態を制御するためのものである。即ち、初期状態において状態変数SiはOFF状態(非バイパス状態;状態遷移65−1)であり、OFF状態で、自担当のキュー番号iと一致するデキュー番号iを受けると、状態変数SiはON状態(バイパス状態)に遷移して(状態遷移65−2)、状態制御部64は、一時記憶部62への上書きを許容することで出力待機中の先頭パケットについての理想出力時刻Fi,1を破棄する(無効にする)とともに、次に後計算部5から到着する先頭パケット(元々は2番目のパケット)についての理想出力時刻Fi,1がバイパスされる状態に選択部63を制御する。
【0066】
一方、状態変数Si=OFF状態のときに受けたデキュー番号iが自担当のキュー番号iと一致しない場合は、状態変数SiはOFF状態のまま(状態遷移65−3)で、状態制御部64は、一時記憶部62において待機中の先頭パケットについての理想出力時刻Fi,1が最小値選択部7へ出力されるよう選択部63を制御する。なお、状態変数Si=OFF状態で、理想出力時刻Fi,1が単に入力されてきた場合も、状態変数Siは変化せず(OFF状態のまま)、入力されてきた理想出力時刻Fi,1が一時記憶部62に記憶される(状態遷移65−4)。
【0067】
また、状態変数Si=ON状態のときに受けたデキュー番号iが自担当のキュー番号iと一致した場合は、状態変数Siは変化せず(ON状態のまま)、状態制御部64は、一時記憶部62において待機中の先頭パケットについての理想出力時刻Fi,1がバイパスされるよう選択部63を制御する(状態遷移65−5)。
【0068】
一方、状態変数Si=ON状態のときに受けたデキュー番号iが自担当のキュー番号iと一致しない場合は、状態変数SiはOFF状態に遷移し、状態制御部64は、一時記憶部62において待機中の先頭パケットについての理想出力時刻Fi,1が最小値選択部7へ出力されるよう選択部63を制御する(状態遷移65−6)。
【0069】
また、状態変数Si=ON状態のときに、理想出力時刻Fi,1が入力されてきた場合は、状態変数Siは変化せず(OFF状態のまま)、その理想出力時刻Fi,1がそのまま一時記憶部62に記憶されるとともに、状態制御部64が、その理想出力時刻Fi,1を合流制御部8へバイパスするよう選択部63を制御する(状態遷移65−7)。
【0070】
なお、キュー#iが空き状態となり、処理すべきデータ(理想出力時刻Fi,1)が存在しなくなった場合は、状態変数Si(以下、単に「S」と略記する場合もある)は、元の状態(ON/OFF状態)に関わらず、OFF状態となり、状態制御部64は、最小値選択部7への出力が選択されるよう選択部63を制御する(状態遷移65−8,65−9)。
【0071】
このようにして、本状態制御部64は、自担当のキュー番号iと一致するデキュー番号iのデキュー指示を受けると、次に後計算部5(F計算部51−i)から到着する理想出力時刻Fi,1を合流制御部8へバイパスするよう選択部63を制御し、デキュー番号iが自担当のキュー番号iと一致しなければ、次に後計算部5(F計算部51−i)から到着する理想出力時刻Fi,1をバイパスせずに最小値選択部7へ出力するよう選択部8を制御することが実現されている。
【0072】
従って、バイパス制御部6全体でみると、バイパス制御部6は、デキュー番号iと対応するキュー#iの理想出力時刻Fi,1を廃棄するとともに、それ以外のキュー#k(k≠i)の理想出力時刻Fk,1を最小値選択部7に出力し、且つ、デキュー番号i対応のバイパス状態(Si)をON状態に設定し、デキュー番号i以外のキュー#kに対応するバイパス状態(Sk)をOFF状態に設定していることになる。
【0073】
次に、最小値選択部7は、上記のバイパス制御部6(バイパス制御回路61−i)から入力されてくる理想出力時刻Fi(ただし、合流制御部8へバイパスされたものは除く)の中から、最も値の小さい理想出力時刻Fiのキュー番号iとその値Fiを出力するもので、例えば図2に示すように、それぞれ値の小さい方を選択出力する(n−1)個の比較器71により、トーナメント方式で各理想出力時刻Fiを比較することで、最も値の小さい理想出力時刻Fiを出力するようになっている。
【0074】
そして、合流制御部8は、上記のバイパス制御部6によってバイパスされてくる理想出力時刻Fiと、上記の最小値選択部7で選択された理想出力時刻Fiとを大小比較することにより、値の小さい方の理想出力時刻Fiを選択するもので、選択された理想出力時刻Fiのキュー番号iがデキュー指示としてキュー管理部2(デキュー処理部23),中間結果記憶部4,バイパス制御部6にフィードバックされるとともに、その値Fiが直前に出力した先頭パケットの出力時刻Fi,0(次の計算のための入力値)として中間結果記憶部41(中間データ記憶部41−i)にフィードバックされて記憶されるようになっている。
【0075】
つまり、本実施形態のパケット・スケジューラ1は、或るキュー#iの先頭パケットがデキューされると、パイプライン処理により、それまでに中間結果記憶部4から後計算部5に既に読み出されて後計算部5で計算済みの2番目のパケットについての理想出力時刻Fiをバイパス制御部6によって合流制御部8へバイパスすることで、その理想出力時刻Fiと、デキューされなかった他のキュー#kの先頭パケットについての理想出力時刻Fkとが同じタイミングで合流制御部8に入力されて大小比較されるようにしているのである。
【0076】
これにより、合流制御部8では、同じキュー#iから連続して先頭パケットがデキューされる場合にも、デキューされなかったキュー#kの先頭パケットとデキューされたキュー#iの先頭パケットの次のパケットとの理想出力時刻比較を必ずパイプライン段数1段分の処理時間(pτ)毎に行なうことができる。即ち、同じキュー#iからpτ間隔で連続して先頭パケットをデキューすることが可能となるのである。
【0077】
以下、上述のごとく構成された本実施形態のパケット・スケジューラ1の動作について詳述する。ただし、以下の説明では、説明の簡単化のために、例えば図5に示すように、キュー#iの数(n)が“2”の場合を例にする。なお、この図5において、“Q1”はキュー#1、“Q2”はキュー#2、“P1”は先頭パケットの情報(中間データ)を表わす。即ち、“Q1,P1”はキュー#1の先頭パケットの情報を意味し、“Q2,P1”はキュー#2の先頭パケットの情報を意味する。これらの記号の意味は、以降で使用する図6〜図16においても同様である。
【0078】
(1)初期状態〔パケット出力(デキュー指示)が無い状態〕からデキュー指示(パケット出力)が発生するまでの動作説明(図6〜図8)
まず、図6に示すように、初期状態では、パケットの出力がないので、デキュー指示も発生していない。このとき、バイパス制御部6での各キュー#1,#2に対応するバイパス制御回路61−1,61−2のバイパス状態(状態変数S)は全てOFF状態にリセットされている。
【0079】
かかる状態で、キュー管理部2の各キュー#1,#2にそれぞれ送信待ちのパケットが存在しているとすると、システムクロック〔一定の時間間隔(pτ)〕に従って、キュー管理部2のエンキュー処理部21から各キュー#1,#2の先頭パケットと2番目のパケットの情報が前計算部3に出力され、前計算部3にて、各キュー#1,#2のそれぞれについて、先頭パケットと2番目のパケットに対するβの値が計算されるとともに、先頭パケットについてのγの値が計算される。
【0080】
そして、得られた2パケット分のβの値は、それぞれ、キュー#1,#2毎に、中間結果記憶部4の対応する中間データ記憶部41−1,41−2に、先頭パケット(P1)及び2番目のパケット(P2)についての中間データの一部として一旦保持される。中間結果記憶部4は、各中間データ記憶部41−1,41−2に保持されている2パケット分の中間データのうち先頭パケットについての中間データの組をそれぞれ後段の後計算部5へ送る(符号S1参照)。なお、パケットの無い空き状態のキュー#iについては、パケットが存在しない識別情報を送って、以降の段では処理しない。
【0081】
その後、後計算部5(F計算部51−1,51−2)での計算を経て、各キュー#1,#2の先頭パケットについて求められた理想出力時刻F1,F2の組がバイパス制御部6に到着したとする。ここで、この場合、バイパス制御部6(バイパス制御回路61−1,61−2)における状態変数SiはそれぞれOFF状態であるので、バイパス制御部6は、いずれも、到着した理想出力時刻F1,F2をバイパスしないように制御する(図4に示す状態遷移65−4参照)。
【0082】
即ち、図7に示すように、一定の時間間隔(pτ)をトリガとして、バイパス制御部6は、状態変数Si=OFF状態のキュー#1,#2に対して、到着した理想出力時刻F1,F2をそれぞれ最小値選択部7に出力する(符号S2参照)。一方、このとき、中間結果記憶部4では、デキュー指示が発生していないので、前回送ったものと同じ先頭パケットについての中間データの組をそれぞれ後計算部5へ送る(符号S3参照)。
【0083】
そして、最小値選択部7では、入力してきた理想出力時刻F1,F2のうち、値の小さい方の理想出力時刻F1,F2(仮に、F1とする)を選択して、合流制御部8へ出力する。この処理と平行して、後計算部5からは、図8に示すように、次の中間データの組が出力されて、バイパス制御部6に入力される。このとき、何れのバイパス制御回路61−1,61−2の状態変数SもOFF状態であるので、到着した中間データの組は、それぞれ、対応する一時記憶部62に記憶される(符号S4,図4に示す状態遷移65−4参照)。
【0084】
一方、このとき、合流制御部8では、最小値選択部7の出力とバイパス制御部6の出力とを合流して値の小さい方を選択するが、この場合は、バイパス制御部6からバイパスされてくるデータが無いので、最小値選択部7から入力された理想出力時刻F1をそのまま選択する(符号S5参照)。そして、デキュー指示(DeQueueNo=1)を前段(キュー管理部2,中間結果記憶部3,バイパス制御部6)にフィードバックするとともに、選択した理想出力時刻F1を次の計算のために中間結果記憶部4へフィードバックする。
【0085】
(2)同じキュー#iから連続してパケットが出力される場合の動作説明
次に、以下では、同じキュー#iに対して連続してデキュー指示が発生して、同じキュー#iから2つのパケットが連続して出力される場合の動作について説明する。
まず、図9に示すように、図8により上述したごとく、合流制御部8においてキュー#1の先頭パケットについての理想出力時刻F1が選択されて、デキュー指示(DeQueueNo=1)が、キュー管理部2,中間結果記憶部4及びバイパス制御部6にフィードバックされたとする(キュー#1の先頭パケットが出力リンクに出力されたとする)。
【0086】
すると、図10に示すように、キュー管理部2では、キュー#1から次(3番目)のパケット(P3)の情報をキュー管理テーブル221から読み出して前計算部3に出力する(符号S6参照)。また、中間結果記憶部4では、キュー#1の2番目のパケットについての中間データ(Q1,P2)を新たな先頭パケットについての中間データ(Q1,P1)として読み出して、デキュー指示(DeQueueNo=1)を受けたキュー#1以外のキュー#2の先頭パケットについての中間データ(Q2,P1)と組で、後計算部5に出力する(符号S7参照)。このとき、キュー#1の2番目のパケットについての中間データ(Q1,P2)は、先頭パケットについての中間データ(Q1,P1)として一時記憶部62に記憶される(符号S7′参照)。
【0087】
さらに、バイパス制御部6では、上記のデキュー指示(DeQueueNo=1)により、キュー#1と対応する一時記憶部62に記憶されている理想出力時刻F1を破棄して(無効にして;図9参照)、キュー#1対応の状態変数SをON状態に設定する(図4に示す状態遷移65−2参照)とともに、キュー#1以外の理想出力時刻F2を最小値選択部7に出力する(符号S8参照)。このとき、キュー#1以外の状態変数SはOFF状態のままである(図4に示す状態遷移65−3参照)。
【0088】
その後、図11に示すように、上記の符号S8で示すキュー#2の先頭パケットについての理想出力時刻F2は、最小値選択部7に入力され、最小値選択が行なわれる(符号S9参照)。一方、このとき、後計算部5での処理遅延時間を経て、図10において中間結果記憶部4から読み出された中間データ(符号S7参照)に基づいて求められた理想出力時刻F1,F2がバイパス制御部6の入力に到着する(符号S10参照)。
【0089】
そして、図12に示すように、バイパス制御部6では、キュー#1対応の状態変数S=ON状態であるため、到着した理想出力時刻F1を一時記憶部62に記憶する(符号S11参照)とともに、合流制御部8へバイパスする(符号S12,図4に示す状態遷移65−7参照)。なお、このとき、状態変数S=OFF状態のキュー#2の先頭パケットについての理想出力時刻F2は、バイパスせずに一時記憶部62に記憶する(符号S13,図4に示す状態遷移65−4参照)。
【0090】
合流制御部8では、最小値選択部7から送られてきたキュー#1以外のキュー#2に対応する理想出力時刻F2と、バイパス制御部6からバイパスされてくるキュー#1の先頭パケット(元々は2番目のパケット)についての理想出力時刻F1の中から最小のものを選んで出力する。仮に、キュー#1の先頭パケットについての理想出力時刻F1が選ばれたら、つまり、同じキュー#1に対するデキュー指示(DeQueueNo=1)が連続して発生した場合、そのデキュー指示(DeQueueNo=1)により、以下の処理が行なわれる。
【0091】
即ち、図13に示すように、まず、キュー管理部2では、キュー管理テーブル221からキュー#1の次(3番目)のパケットの情報を読み出して、前計算部3に出力する(符号S15参照)。
一方、中間結果記憶部4では、上記のデキュー指示(DeQueueNo=1)により、中間データ記憶部41−1からキュー#1の2番目のパケットに関する中間データ(Q1,P2)を新たな先頭パケットについての中間データ(Q1,P1)として、他のキュー#2の先頭パケットに関する中間データ(Q2,P1)との組で後計算部5に出力する(符号S16参照)とともに、上記の中間データ(Q1,P2)を新たな先頭パケットについての中間データ(Q1,P1)として記憶する(符号S17参照)。
【0092】
また、バイパス制御部6では、上記のデキュー指示(DeQueueNo=1)により、キュー#1に対応する一時記憶部62の(理想出力時刻F1)を無効にする(符号S18参照)。なお、このとき、キュー#1対応の状態変数SはON状態のままである(図4に示す状態遷移65−5参照)。一方、他のキュー#2の理想出力時刻F2は最小値選択部7に出力される(符号S19参照)。このとき、キュー#2対応の状態変数Sは、デキュー番号が一致しないので、OFF状態のままである(図4に示す状態遷移65−3参照)。
【0093】
以降は、合流制御部8にて他のキュー#2の先頭パケットについての理想出力時刻F2が選択されてデキュー指示(DeQueueNo=2)が発生するまで、図11〜図13により上述したパイプライン処理が繰り返し実施されて、同じキュー#1から連続してパケットがデキューされる。
(3)前回と異なるキュー#iに対するデキュー指示が発生した場合の動作説明
さて、以下では、図12に示す状態において、合流制御部8にて、キュー#1の先頭パケットについての理想出力時刻F1よりもキュー#2の先頭パケットについての理想出力時刻F2の方が小さく、キュー#2に対するデキュー指示(DeQueueNo=2)が発生した場合(符号S14参照)の動作を説明する。
【0094】
即ち、図14に示すように、合流制御部8にて、キュー#2の先頭パケットについての理想出力時刻F2が選ばれて出力されたとする(符号S19′参照)と、キュー#2に対するデキュー指示(DeQueueNo=2)が、キュー管理部2,中間結果記憶部4,バイパス制御部6にそれぞれフィードバックされる。
すると、図15に示すように、キュー管理部2では、上記のデキュー指示(DeQueueNo=2)により、キュー#2から次(3番目)のパケットの情報を読み出して前計算部3に出力する(符号S20参照)。一方、中間結果記憶部4では、キュー#2の2番目のパケットについての中間データをキュー#2の新たな先頭パケットについての中間データとして読み出して、他のキュー#1の先頭パケットについての中間データと組で、後計算部5に出力する(符号S21参照)とともに、キュー#2の先頭パケットについての中間データを先頭パケットについての中間データとして記憶する(符号S22参照)。
【0095】
また、このとき、バイパス制御部6では、上記のデキュー指示(DeQueueNo=2)により、キュー#2に対応するバイパス制御回路61−2の一時記憶部62に保持されているデータ(理想出力時刻F2)を破棄するとともに、キュー#2に対応する状態変数SをON状態に設定する(図4に示す状態遷移65−2参照)。なお、他のキュー#1に対応するバイパス制御回路61−1では、デキュー指示(DeQueueNo=2)によるデキュー番号が一致しないので、状態変数SはOFF状態のままで、一時記憶部62に保持中のデータ(理想出力時刻F1)を最小値選択部7に出力する(符号S23及び図4に示す状態遷移65−5参照)。
【0096】
最小値選択部7では、この場合、バイパス制御部6からの入力が無いので、図16に示すように、キュー#1に対応する理想出力時刻F1を合流制御部8へ出力する(符号S24参照)。一方、このとき、後計算部5での処理遅延時間を経て、中間結果記憶部5から出力されたキュー#1,#2の次のパケットについての理想出力時刻F1,F2の組が、バイパス制御部6の入力に到着する。
【0097】
バイパス制御部6では、キュー#2の状態変数S=ON状態であるため、到着した理想出力時刻F2を合流制御部8へバイパスさせる(符号S25参照)。ただし、このときバイパスした理想出力時刻F2は一時記憶部62に保持しておく(図4に示す状態遷移65−7参照)。また、キュー#2以外の状態変数S=OFF状態のキュー#1に対応する理想出力時刻F1は、バイパスされずに対応する一時記憶部62に保持される(図4に示す状態遷移65−4参照)。
【0098】
そして、合流制御部8では、最小値選択部6からのデータ(理想出力時刻F1)とバイパス制御部6からバイパスされてきたデータ(理想出力時刻F2)の中から最小のものを選んで出力する。なお、仮に、キュー#1に対応する理想出力時刻F1が選ばれたら、次は、図9からの処理が行なわれ、キュー#2に対応する理想出力時刻F2が再度選ばれたら、図14からの処理が行なわれる。
【0099】
ここで、最初にキュー#1に対するデキュー指示(DeQueueNo=2)が発生した後、次に、キュー#2に対するデキュー指示(DeQueueNo=1)が発生する場合の動作をタイムチャートにして表わすと図17のようになる。なお、この図17において、P1はキュー#iの先頭パケットを表わし、(Qi,n)は連続的にみたときのキュー#iのn番目のパケットについてのデータを表わす。
【0100】
即ち、最小値選択部7での比較の結果、キュー#1に対応する理想出力時刻F1が選ばれて、デキュー指示(DeQueueNo=1)が発生したとする(矢印t1,t2参照)。なお、このとき、バイパス制御部6には、後計算部5での処理遅延時間を経て、次の先頭パケットについての中間データの組が既に保持されている(矢印t3参照)。
【0101】
上記のデキュー指示(DeQueueNo=1)は、バイパス制御部6(バイパス制御回路61−1,61−2),中間結果記憶部4(中間データ記憶部41−1,41−2),キュー管理部2のそれぞれにフィードバックされ(矢印t4参照)、まず、バイパス制御部6では、キュー#1に対応する理想出力時刻F1を無効にする(出力しないことで次に到着するデータで上書きさせる)一方、キュー#1以外の理想出力時刻F2を最小値選択部7へ出力する(矢印t5参照)。
【0102】
また、中間結果記憶部4では、上記のデキュー指示(DeQueueNo=1)により、キュー#1については2番目のパケット(P2)の中間データを新たな先頭パケットについての中間データとして後計算部5(F計算部51−1)に出力する(矢印t6参照)一方、その他のキュー#2については再度同じ先頭パケット(P1)についての中間データを後計算部5(F計算部51−2)に出力する(矢印t7参照)。
【0103】
さらに、キュー管理部2では、上記のデキュー指示(DeQueueNo=1)により、キュー#1の3番目のパケット(Q1,P3)の情報がキュー管理テーブル221から読み出されて前計算部3へ出力している(矢印t8参照)。
その後、合流制御部8には、最小値選択部7からのデキュー指示(DeQueueNo=1)の無かったキュー#2に対応する理想出力時刻F2が到着する(矢印t9参照)とともに、後計算部5(F計算部51−1)で求められたキュー#1の2番目のパケットについての理想出力時刻F1が新たな先頭パケットについての理想出力時刻F1としてバイパス制御部6でバイパスされて到着する(矢印t10,t11参照)。
【0104】
このとき、中間結果記憶部4(中間データ記憶部41−1)には、キュー#1の3番目のパケットについての前計算部3による計算結果が到着している(矢印t8′参照)。また、バイパスされなかったキュー#2の先頭パケットの理想出力時刻F2はバイパス制御部6で一時的に保持される(矢印t10′参照)。
そして、合流制御部8は、到着した各理想出力時刻F1,F2の中で最小のものを選んで出力する。仮に、今度は理想出力時刻F2の方が小さかったとすると、デキュー指示(DeQueueNo=2)が発生し(矢印t12参照)、これが再び、バイパス制御部6(バイパス制御回路61−1,61−2),中間結果記憶部4(中間データ記憶部41−1,41−2),キュー管理部2のそれぞれにフィードバックされる(矢印t13参照)。
【0105】
すると、まず、バイパス制御部6では、今度は、キュー#2に対応する理想出力時刻F2を無効にする(出力しないことで次に到着するデータで上書きさせる)一方、キュー#2以外の理想出力時刻F1を最小値選択部7へ出力する(矢印t14参照)。
一方、中間結果記憶部4では、上記のデキュー指示(DeQueueNo=2)により、今度は、キュー#2については2番目のパケット(P2)の中間データを新たな先頭パケットについての中間データとして後計算部5(F計算部51−2)に出力する(矢印t15参照)一方、その他のキュー#1については再度同じ先頭パケット(P1)についての中間データを後計算部5(F計算部51−1)に出力する(矢印t16参照)。
【0106】
また、キュー管理部2では、上記のデキュー指示(DeQueueNo=2)により、キュー#2の3番目のパケット(Q2,P3)の情報がキュー管理テーブル221から読み出されて前計算部3へ出力している(矢印t17参照)。
その後、合流制御部8には、最小値選択部7からのデキュー指示(DeQueueNo=2)の無かったキュー#1に対応する理想出力時刻F1が到着する(矢印t18参照)とともに、後計算部5(F計算部51−2)で求められたキュー#2の2番目のパケットについての理想出力時刻F2が新たな先頭パケットについての理想出力時刻F2としてバイパス制御部6でバイパスされて到着する(矢印t19,t20参照)。
【0107】
このとき、中間結果記憶部4(中間データ記憶部41−2)には、キュー#2の3番目のパケットについての前計算部3による計算結果が到着しており(矢印t17′参照)、バイパス制御部6では、バイパスされなかったキュー#2の先頭パケットの理想出力時刻F2が一時的に保持される(矢印t19′参照)。
そして、合流制御部8は、到着した各理想出力時刻F1,F2の中で最小のものを選んでデキュー指示(DeQueueNo=i)を出力し(矢印t21参照)、以降は、そのデキュー番号に応じて、上記と同様の処理が繰り返されてゆく。
【0108】
以上のように、本実施形態のパケット・スケジューラ1によれば、中間結果記憶部4において常に先頭パケットと2番目のパケットの2つ分のパケットについての中間データが記憶されるようにしておき、デキュー指示の発生したキュー#iの2番目のパケットについての中間データを先頭パケットについての中間データとして後計算部5へ出力するので、デキューされなかったキュー#kの先頭パケットの情報とデキューされたキュー#iの2番目のパケットの情報とを同時に、後段の処理に入力でき、キュー管理部2手段と前計算部3の処理遅延を隠蔽できる。
【0109】
また、デキューされたキュー#iの2番目のパケットについての中間データに基づいて後計算部5で求められたデータ(理想出力時刻Fi)をバイパス制御部6により合流制御部8へバイパスすることにより、常に、各キュー#iの理想出力時刻Fiの比較に有効なデータをパイプライン段数1段分の処理時間pτ間隔で合流制御部8に入力することができるので、最小値選択部7での処理遅延時間を隠蔽できる。
【0110】
従って、異なるキュー#iに対するデキュー指示(DeQueueNo=i)が連続して発生する場合、同じキュー#iに対するデキュー指示(DeQueueNo=i)が連続して発生する場合のいずれの場合においても、合流制御部8では、デキュー指示の無かったキュー#kの先頭パケットと、デキュー指示のあったキュー#iの次のパケットとについて理想出力時刻比較を必ずpτ毎に行なうことができ、常に、約pτ毎にパケットのデキューを実施することができる。
【0111】
この結果、デキュー指示(DeQueueNo=i)により、次の出力パケット算出(決定)までの時間を、従来の約3×pτから約pτの1/3に短縮でき、約3倍のスループットの向上を実現することが可能である。
また、デキュー指示(DeQueueNo=i)が発生したときには、中間結果記憶部4のキュー#iに対応する先頭パケットについての中間データと、バイパス制御部6で保持されているキュー#iに対応する理想出力時刻Fiとをそれぞれ無効にするので、デキュー済みのパケットに対して重複してデキュー指示(DeQueueNo=i)が発生してしまうことを確実に回避することができ、本パケット・スケジューラの信頼性の向上にも大いに寄与する。
【0112】
(B)その他
なお、上述したパケット・スケジューラ1は、図18に示すように、搭載先のネットワーク中継装置(パケット転送装置)11に、複数の異なる転送レートのインタフェース(パケットインタフェース)11−1〜11−6(IF1〜IF6;2.5Gbps×4,10Gbps×2)が装備されている場合、図19に示すように上述した各部2〜8を1τで処理可能な複数のパイプライン処理ステージ(A1〜A4,B1〜B4,C1〜C4)に分割し、図20に示すように、1τ毎のタイムスロットで、IF5→IF1→IF6→IF2→IF5→IF3→IF6→IF4という具合に、共有メモリ9′(図18参照)に保持された異なるインタフェースのパケットについてのパイプライン処理を実施するようにしてもよい。ただし、この場合、各パイプライン処理ステージ間にフリップフロップ(FF)回路などを設けてパイプライン処理の同期制御を行なう必要がある。
【0113】
このようにすれば、1つのパケット・スケジューラ1で、複数の異なる転送レートのインタフェース11−1〜11−6について、上述した実施形態と同様の処理を実現することができるので、ネットワーク中継装置11の大幅な小型化及び性能向上に大きく寄与する。
また、上述した実施形態では、中間結果記憶部4とバイパス制御部6の双方を設けているが、バイパス制御部6を省略した構成にしたとしても、従来(図21参照)に比して約2倍程度の処理速度(スループット)の向上を望める。さらに、上述した実施形態では、中間結果記憶部4に記憶しておくパケット数を“2”としているが、勿論、3以上にしてもよい。
【0114】
そして、本発明は、上述した実施形態に限定されるものではなく、上記以外にも本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0115】
【発明の効果】
以上詳述したように、本発明のパケット・スケジューラによれば、少なくとも、各キューから最初に出力されるべき第1パケットデータの理想出力時刻計算に必要な第1中間データと、その次に出力されるべき第2パケットデータについての理想出力時刻計算に必要な第2中間データとを記憶しておき、最優先に送信すべきと決定された第1パケットデータと同じキューに属する第2パケットデータについての第2中間データを、そのキューの新たな第1パケットデータについての第1中間データとして他のキューに属する第1パケットデータの第1中間データとともに後計算手段へ出力するので、後計算手段での理想出力時刻計算までの処理遅延を隠蔽できて、その処理速度(スループット)を大幅に向上することができる(請求項1)。
【0116】
ここで、上述のごとく最優先に送信すべきと決定された第1パケットデータについての第1中間データは無効にするのが好ましく、このようにすれば、同じ第1パケットデータが重複して最優先に送信すべきパケットデータとして決定されてしまうことを確実に回避することができるので、本パケット・スケジューラの信頼性の向上に大きく寄与する(請求項2)。
【0117】
また、上述のごとく第2パケットデータについての第2中間データを新たな第1パケットデータについての第1中間データとして後計算手段へ出力した場合、上記の第2パケットデータの次に出力されるべき第3パケットデータの理想出力時刻計算に必要な第3中間データを、新たな第2パケットについての第2中間データとして記憶するようにしておけば、次回の理想出力時刻の計算までに必要なデータを確保しておくことができるので、理想出力時刻計算までの処理遅延をさらに効果的に隠蔽できる(請求項3)。
【0118】
さらに、後計算手段において計算された第2パケットデータの理想出力時刻情報をバイパスするバイパス制御手段をそなえることにより、それ以外の第1パケットデータの理想出力時刻情報と同時に上記の第2パケットデータの理想出力時刻情報を合流制御手段へ入力できるようにすることで、異なるキューのパケットデータが最優先に送信されるべきデータとあると連続して決定される場合、同じキューのパケットデータが最優先に送信されるべきデータであると連続して発生する場合のいずれにおいても、理想出力時刻情報の選択を一定時間間隔で行なうことができ、さらに、本パケット・スケジューラの処理速度(スループット)を大幅に向上することができる(請求項4,5)。
【0119】
ここで、上記のバイパス制御手段は、最優先に送信すべきと決定した第1パケットデータについての理想出力時刻情報を無効にするように構成するのが好ましく、このようにすれば、やはり、同じ第1パケットデータが重複して最優先に送信すべきパケットデータとして決定されてしまうことを確実に回避することができるので、本パケット・スケジューラの信頼性の向上に大きく寄与する(請求項6)。
【0120】
ところで、本パケット・スケジューラは、複数のパケットインタフェースについての送信待ちのパケットデータをそれぞれ出力保証帯域の設定が可能な複数のキューにより各パケットインタフェース毎に管理する場合、上記の各手段を複数のパイプライン処理ステージに分割し、これらのパイプライン処理ステージが、それぞれ、一定時間毎に異なるパケットインタフェースについての処理を行なうように構成してもよい。このようにすれば、1つのパケット・スケジューラで、上記と同様の処理を実現することができるので、搭載先装置の大幅な小型化及び性能向上に大きく寄与する(請求項7)。
【図面の簡単な説明】
【図1】本発明の一実施形態としてのパケット・スケジューラの構成を示すブロック図である。
【図2】図1に示すパケット・スケジューラの詳細構成例を示すブロック図である。
【図3】図2に示すバイパス制御回路の構成例を示すブロック図である。
【図4】図3に示す状態制御部の動作を説明するための状態遷移図である。
【図5】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理)を説明するためのブロック図である。
【図6】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;初期状態からデキュー指示が発生するまで)を説明するためのブロック図である。
【図7】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;初期状態からデキュー指示が発生するまで)を説明するためのブロック図である。
【図8】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;初期状態からデキュー指示が発生するまで)を説明するためのブロック図である。
【図9】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;同じキューに対し連続してデキュー指示が発生する場合)を説明するためのブロック図である。
【図10】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;同じキューに対し連続してデキュー指示が発生する場合)を説明するためのブロック図である。
【図11】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;同じキューに対し連続してデキュー指示が発生する場合)を説明するためのブロック図である。
【図12】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;同じキューに対し連続してデキュー指示が発生する場合)を説明するためのブロック図である。
【図13】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;同じキューに対し連続してデキュー指示が発生する場合)を説明するためのブロック図である。
【図14】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;異なるキューに対しデキュー指示が発生する場合)を説明するためのブロック図である。
【図15】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;異なるキューに対しデキュー指示が発生する場合)を説明するためのブロック図である。
【図16】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;異なるキューに対しデキュー指示が発生する場合)を説明するためのブロック図である。
【図17】図1及び図2に示すパケット・スケジューラの動作(パイプライン処理;異なるキューに対しデキュー指示が発生する場合)を説明するためのタイムチャートである。
【図18】本実施形態に係るパケット・スケジューラが適用されるネットワーク中継装置の一例を示すブロック図である。
【図19】図18に示すパケット・スケジューラのパイプライン構成例を示すブロック図である。
【図20】図19に示すパケット・スケジューラの動作を説明するためのタイムスロット割り当て例を示す図である。
【図21】WFQを用いたパケット・スケジューラの一例を示すブロック図である。
【符号の説明】
1 パケット・スケジューラ
2 キュー管理部
3 前計算部
4 中間結果記憶部
5 後計算部
6 バイパス制御部
7 最小値選択部
8 合流制御部
9 パケットメモリ
9′ 共有メモリ
10 最小値決定処理部(送信パケットデータ決定手段)
11 ネットワーク中継装置(パケット転送装置)
11−1〜11−6 パケットインタフェース
21 エンキュー処理部
22 キュー記憶部
23 デキュー処理部
24 エンキュー・デキュー調停部
25 タイマ
31 γ計算部
32 β計算部
41−1〜41−n 中間データ記憶部
42 中間データ読み出し制御部
51−1〜51−n F計算部
52 β×γ計算部
53 α計算部
54 加算部
61−1〜61−n バイパス制御回路
62 一時記憶部(メモリ部)
63 選択部(バイパス選択手段)
64 状態制御部
71 比較器
221 キュー管理テーブル
311,321 RAM
312 γ演算器(加算器)
322 乗算器[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a packet scheduler, and more particularly to a packet scheduler suitable for performing packet scheduling using WFQ (Weighted Fair Queuing) in a packet transfer apparatus such as a so-called router.
[0002]
[Prior art]
To guarantee the quality of service (QoS) of the flow of packet data (hereinafter simply referred to as “packets”) in the network, or the aggregate (collection; hereinafter collectively referred to as a stream) of flows. In a network relay device (packet transfer device) such as an IP (Internet Protocol) router or an ATM (Asynchronous Transfer Mode) router, a bandwidth is reserved for each stream, and packet transmission is performed to guarantee the reserved bandwidth. That is, it is necessary to perform read control (packet scheduling) of packets held in the queue for each stream. Each of the queues is usually configured by a first-in first-out (FIFO) type memory (buffer).
[0003]
On the other hand, in order to make maximum use of the bandwidth of the output link (line), the surplus bandwidth temporarily generated according to the active status of each queue is distributed fairly between the streams, that is, the queue (stream) in an inactive state. On the other hand, a function for evenly distributing the reserved bandwidth set to the queue (stream) in the active state is also required.
[0004]
Note that the “active state” of the queue means that a packet waiting for transmission exists (held) in the queue, and the “inactive state” means that no packet waiting for transmission exists in the queue ( It means that it is not held (that is, free).
WFQ is well known as a packet scheduling method having the above functions. However, since the amount of calculation is large in the realization of the processing function by the conventional WFQ, it is difficult to realize the high speed link. . Hereinafter, the calculation principle of WFQ will be described.
[0005]
In the packet transfer apparatus, each stream packet is held in a corresponding queue, and the packet held in each queue is output by the FIFO method (when the first packet is output, the next packet becomes the first packet). Therefore, in WFQ, when it is also considered that the surplus bandwidth of the inactive queue is allocated fairly, the ideal output time F of the first packet (packet to be output first) of each queue.i, 1Is calculated by the following equation (1-1), and the ideal output time F of the first packet of each queue obtained is calculated.i, 1Based on the above, the head packet to be output with the highest priority is selected and output by the following equation (1-2).
[0006]
[Expression 1]
[0007]
[Expression 2]
[0008]
Here, the meaning of each symbol used in the above formulas (1-1) and (1-2) will be described.
First, in the first term of the expression (1-1), F represents the ideal output time of the packet, T represents the information of the arrival time of the packet, and the subscript part (i, j) of these F and T is i The j-th packet from the head of the th queue (hereinafter referred to as queue #i). That is, Fi, jRepresents the ideal output time (information) for the jth packet from the head of queue #i, and Ti, jRepresents the arrival time (information) of the j-th packet from the head of queue #i.
[0009]
Note that since one packet scheduler (hereinafter simply referred to as “scheduler”) can process
That is, the first term max {F in the equation (1-1).i, 0, Ti, 1} Indicates that the ideal output time of the first packet of queue #i output immediately before and the arrival time of the packet of the same queue #i following the first packet take the larger (late) value. This is the ideal output time F of the first packeti, 1Is the output time F of the first packet of the queue #i output immediately beforei, 0And the arrival time T of the packet in the same queue #i following the first packeti, 1It means to align with either.
[0010]
For example, in a situation where the next packet arrives after the packet is output (a situation where the calculation by the scheduler is completed by the arrival of the next packet), the packet arrival time Ti, 1Output time F of the packet that was output immediately beforei, 0Later than the arrival time T of the next packeti, 1Is the ideal output time Fi, 1Conversely, in the situation where the next packet arrives before the packet is output (the situation where the next packet arrives during the calculation by the scheduler), the output time F of the packet output immediately beforei, 0Is the arrival time T of the next packeti, 1Later than the output time F of the packet output immediately beforei , 1Is the ideal output time Fi, 1It becomes the calculation standard.
[0011]
On the other hand, in the second term of Formula (1-1), Li, jIs the length of the jth packet from the head of queue #i, Φi is the reserved bandwidth set in queue #i, Φb is the reserved bandwidth for queue in active state (hereinafter also referred to simply as “active queue”) #i The total of Φi, R represents the total of reserved bandwidths Φi of all
[0012]
The expression (1-2) is the most ideal output time F in the queue in the active state.i, 1This means that the one with a small value is selected. That is, the ideal output time Fi, 1It can be seen that the first packet having a larger is less likely to be selected as the first packet to be output with priority.
For example, when a packet with a large packet length L is output from a certain queue #i once, the ideal output time F for the next packet (new head packet)i, 1Since the value of becomes larger, the packet is less likely to be selected as an output packet, and continuous output is less likely to be performed.
[0013]
Further, even when packets are continuously output from the same queue #i, the ideal output time F is obtained by the accumulation of the second term of the equation (1-1).i, 1Therefore, when the packet is output continuously to some extent, the head packet of the queue #i is not easily selected as an output packet.
On the other hand, for example, the queue #i in which a large value is set in the reserved bandwidth Φi has an ideal output time F compared to other queues #i.i, 1, The packet of the queue #i is easily selected as the output packet.
[0014]
In the following description, the above formula (1-1) is modified as shown in the following formula (1-3) for convenience.
Fi, 1= Αi, 1+ Βi, 1× γ (1-3)
Where αi, 1= Max {Fi, 0, Ti, 1}, Βi, 1= Li, 1/ Φi, γ = Φb / R. In addition, the above αi, 1Is "α", βi, 1May be abbreviated as “β” or “βi”, respectively. Similarly, the above Fi, jTo "F" or "Fi", Ti, jMay be abbreviated as “T” or “Ti”, respectively. The above symbols are used in the same meaning also in the embodiments of the present invention described later.
[0015]
Now, in order to actually realize the calculation as described above as hardware (packet scheduler), for example, a configuration as shown in FIG. 21 can be considered. That is, as shown in FIG. 21, the
[0016]
Here, in the
[0017]
Further, the
[0018]
In this
Next, in the
[0019]
In addition, each F calculation unit 124-i has information (β, T, F) stored in the storage unit 123.i, 0) To calculate the ideal output time F for the first packet of the corresponding queue #i by performing the calculation according to the above equation (1-3).i, 1For this purpose, as shown in FIG. 21, by adding the calculation results of the β × γ
[0020]
Then, the minimum
[0021]
In the
[0022]
In the calculation unit 124-i, first, the value of γ is calculated by the
[0023]
Then, γ obtained by the
[0024]
In this way, each ideal output time F obtained by each F calculation unit 124-i.i, 1Are input to the minimum
[0025]
As a result, the
[0026]
However, the
[0027]
In addition, in the calculation process described above, when the active state of the queue #i changes due to input / output of a packet, the value of the total reserved bandwidth Φb changes (that is, the value of the surplus bandwidth that can be allocated to the active queue #i is Therefore, recalculation of Formula (1-3) is necessary.
That is, a packet is newly stored in the empty queue #i and the number of active queues #i is increased, or the packet is output from the queue #i in which only one packet is held and the empty queue #i is output. When i increases, the value of the total reserved bandwidth Φb changes, and therefore the
[0028]
For this reason, the above-described
[0029]
As described above, the
[0030]
[Problems to be solved by the invention]
However, in such a
[0031]
Here, the throughput (S) when packets of the minimum packet length (Lmin) are continuously input / output is obtained by S = Lmin / (m × pτ). That is, the throughput (S) of the
Therefore, for example, it may be possible to improve throughput (S) by inputting information about the first packet of each queue #i into the pipeline process at a time interval of m = Lmin / (S × pτ). In the pipeline processing, as described above, the information about the first packet of the queue #i during the pipeline processing must be invalidated by the dequeue instruction so that the dequeue instruction for the same packet is not duplicated. Actually, packets cannot be output (dequeued) continuously (that is, at intervals of pτ) from the same queue #i.
[0032]
That is, when a dequeue instruction for a head packet of a certain queue #i occurs, calculation by pipeline processing of the head packet of another queue #i (head packet of queue #i not selected by the minimum value selection unit 103) Information in the middle is valid, but information in the middle of calculation by pipeline processing for the dequeued first packet must be invalidated.
[0033]
For this reason, the next queue is dequeued from the same queue #i because information about the next leading packet is newly sent from the
[0034]
The present invention has been devised in view of such a problem, and avoids a decrease in throughput caused by the number of stages of pipeline processing, and can greatly increase the packet scheduling speed. An object is to provide a scheduler.
[0035]
[Means for Solving the Problems]
In order to achieve the above object, the packet scheduler (claim 1) of the present invention manages packet data waiting for transmission by a plurality of queues each capable of setting an output guaranteed bandwidth, and stores packet data for each queue. The transmission amount is scheduled based on the setting of each output guaranteed bandwidth, and is characterized by comprising the following means.
[0036]
(1) Based on the information on the packet data, a pre-calculation means for performing a calculation for evenly distributing the guaranteed output bandwidth for the queue in the idle state as a surplus bandwidth to the other queues in the active state
(2) At least first intermediate data including a first calculation result in the pre-calculation means necessary for calculating an ideal output time of the first packet data to be output first from each of the queues, and the first packet Intermediate calculation result storage means for storing second intermediate data including the second calculation result in the previous calculation means necessary for calculating the ideal output time for the second packet data to be output next to the data
(3) Post-calculation means for calculating ideal transmission time information for the first packet data in each queue based on the first intermediate data stored in the intermediate calculation result storage means
(4) Transmission packet data determination means for determining the first packet data of the queue to be transmitted with the highest priority based on each ideal output time information calculated by the calculation means thereafter.
(5) The second intermediate data for the second packet data belonging to the same queue as the first packet data determined to be transmitted with the highest priority by the transmission packet data determining means is used as the new first packet data in the queue. The intermediate calculation result read control means for reading out from the intermediate calculation result storage means together with the first intermediate data of the first packet data belonging to another queue as the first intermediate data for the above and outputting to the post calculation means
Here, the intermediate calculation result read control means stores the first packet data stored in the intermediate calculation result storage means for the first packet data determined to be transmitted with the highest priority by the transmission packet data determination means. Preferably, the calculation result is invalidated (claim 2).
[0037]
The intermediate calculation result storage means includes a third calculation result including the third calculation result in the pre-calculation means necessary for calculating the ideal output time of the third packet data to be output next to the second packet data. The intermediate data may be stored as second intermediate data for a new second packet (claim 3).
Furthermore, the transmission packet data determining means may be configured to include the following means (claim 4).
[0038]
(1) Ideal output time information selection means for selecting ideal output time information of the first packet data to be transmitted with the highest priority by comparing the ideal output time information calculated by the post-calculation means.
(2) A merge for determining the first packet data to be transmitted with the highest priority by comparing the ideal output time information from the ideal output time information selection means and the ideal output time information bypassed from the post-calculation means. Control means
(3) The ideal output time information of the second packet data calculated by the post-calculation means is output to the merging control means as the bypass input, and the other ideal output time information of the first packet data is output. Bypass control means for outputting to the ideal output time information selection means
The bypass control means may include a bypass control circuit for each queue, and each of these bypass control circuits may include the following units (claim 5).
[0039]
(1) A memory unit for storing ideal output time information of the first packet data calculated by the post-calculation means
(2) Bypass selection unit for selectively outputting ideal output time information stored in the memory unit as the bypass input or input to the ideal output time information selection means
(3) The ideal output time information of the memory unit is selected as the bypass input when the queue number to which the first packet data determined to be transmitted with the highest priority by the merge control means matches the queue number of its own charge A state control unit that controls the bypass selection unit so that the ideal output time information of the memory unit is selected as an input to the ideal output time information selection unit when the queue number is different from the queue number in charge
Preferably, the bypass control means is configured to invalidate ideal output time information for the first packet data determined to be transmitted with the highest priority by the merging control means. ).
[0040]
Furthermore, the packet scheduler of the present invention manages packet data waiting for transmission for a plurality of packet interfaces for each of the above-described packet interfaces by a plurality of queues each capable of setting an output guaranteed bandwidth, and packet data for each queue. Is a packet scheduler that schedules the amount of transmission of data based on the setting of the output guaranteed bandwidth, and includes the following means, each of which is divided into a plurality of pipeline processing stages, and these pipes Each of the line processing stages is configured to perform processing for the packet interface that is different at regular time intervals (claim 7).
[0041]
(1) Pre-calculation means for performing a calculation for equally distributing output guaranteed bandwidth for a queue in an inactive state as a surplus bandwidth to other queues in an active state
(2) At least first intermediate data including a first calculation result in the previous calculation means required for calculating an ideal output time of the first packet data to be output first from each queue, and the first packet Intermediate calculation result storage means for storing second intermediate data including the second calculation result in the previous calculation means necessary for calculating the ideal output time of the second packet data to be output next to the data
(3) Post-calculation means for calculating ideal output time information of the first packet data in each queue based on the first intermediate data stored in the intermediate calculation result storage means
(4) Transmission packet data determination means for determining the first packet data of the queue to be transmitted with the highest priority based on each ideal output time information calculated by the calculation means thereafter.
(5) The second intermediate data for the second packet data belonging to the same queue as the first packet data determined to be transmitted with the highest priority by the transmission packet data determining means is used as the new first packet data in the queue. Intermediate calculation result read control means for reading out from the intermediate calculation result storage means together with the first intermediate data for the first packet data belonging to the other queue as the first intermediate data for and outputting to the subsequent calculation means
[0042]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below with reference to the drawings.
(A) Description of one embodiment
FIG. 1 is a block diagram showing a configuration of a packet scheduler as an embodiment of the present invention. The
[0043]
Here, in the same way as described above with reference to FIG. 21, the
[0044]
In the present embodiment, the
[0045]
Further, the
[0046]
However, in the first calculation, the
[0047]
On the other hand, in response to a dequeue instruction (dequeue number i), which will be described later, the
[0048]
However, when the
[0049]
In addition, the enqueue /
[0050]
Next, the
[0051]
Here, the
[0052]
For example, as shown in FIG. 2, the
[0053]
On the other hand, the
[0054]
Next, the intermediate
[0055]
In other words, the intermediate
[0056]
For this reason, as shown in FIGS. 1 and 2, the intermediate
[0057]
Specifically, the intermediate data read
[0058]
That is, the intermediate data read
[0059]
As described above, the queue #i in which the information of the second packet is updated as the information of the new first packet is calculated by the
[0060]
That is, the
[0061]
Next, the
[0062]
In addition, the minimum value determination processing unit (transmission packet data determination means) 10 receives each ideal output time F calculated by the
[0063]
That is, the
[0064]
For this reason, as shown in FIG. 2, the
Here, the temporary storage unit (memory unit) 62 described above is the ideal output time F input from the corresponding F calculation unit 51-i of the
[0065]
And the
[0066]
On the other hand, if the dequeue number i received when the state variable Si = OFF state does not match the queue number i in charge, the state variable Si remains in the OFF state (state transition 65-3), and the
[0067]
When the dequeue number i received when the state variable Si = ON state matches the queue number i in charge, the state variable Si remains unchanged (the ON state), and the
[0068]
On the other hand, when the dequeue number i received when the state variable Si = ON state does not match the queue number i in charge, the state variable Si transitions to the OFF state, and the
[0069]
When the state variable Si = ON, the ideal output time Fi, 1Has been input, the state variable Si does not change (and remains in the OFF state), and its ideal output time Fi, 1Is stored in the
[0070]
Note that queue #i is in an empty state and data to be processed (ideal output time Fi, 1) No longer exists, the state variable Si (hereinafter may be simply abbreviated as “S”) is in the OFF state regardless of the original state (ON / OFF state), and the
[0071]
In this way, when this
[0072]
Accordingly, when the
[0073]
Next, the minimum
[0074]
Then, the merging
[0075]
That is, when the first packet of a certain queue #i is dequeued, the
[0076]
As a result, in the
[0077]
Hereinafter, the operation of the
[0078]
(1) Explanation of operation from the initial state [the state where there is no packet output (dequeue instruction)] until the dequeue instruction (packet output) is generated (FIGS. 6 to 8)
First, as shown in FIG. 6, since no packet is output in the initial state, no dequeue instruction is generated. At this time, all bypass states (state variables S) of the bypass control circuits 61-1 and 61-2 corresponding to the
[0079]
In this state, if there are packets waiting to be transmitted in each of the
[0080]
Then, the obtained β values for two packets are respectively stored in the corresponding intermediate data storage units 41-1 and 41-2 of the intermediate
[0081]
Thereafter, the ideal output time F obtained for the first packet of each of the
[0082]
That is, as shown in FIG. 7, with the constant time interval (pτ) as a trigger, the
[0083]
Then, in the
[0084]
On the other hand, the
[0085]
(2) Explanation of operation when packets are continuously output from the same queue #i
Next, an operation when a dequeue instruction is continuously generated for the same queue #i and two packets are continuously output from the same queue #i will be described.
First, as shown in FIG. 9, as described above with reference to FIG. 8, the ideal output time F for the first packet in
[0086]
Then, as shown in FIG. 10, the
[0087]
Further, in the
[0088]
Thereafter, as shown in FIG. 11, the ideal output time F for the first packet in the
[0089]
Then, as shown in FIG. 12, in the
[0090]
In the
[0091]
That is, as shown in FIG. 13, first, the
On the other hand, in the intermediate
[0092]
Further, the bypass control unit 6 (ideal output time F in the
[0093]
Thereafter, the ideal output time F for the first packet of the
(3) Explanation of operation when a dequeue instruction for queue #i different from the previous one occurs
In the following, in the state shown in FIG. 12, the
[0094]
That is, as shown in FIG. 14, in the
Then, as shown in FIG. 15, the
[0095]
At this time, in the
[0096]
In this case, since there is no input from the
[0097]
In the
[0098]
In the merging
[0099]
Here, when a dequeue instruction (DeQueueNo = 2) for
[0100]
That is, as a result of the comparison in the minimum
[0101]
The dequeue instruction (DeQueueNo = 1) includes a bypass control unit 6 (bypass control circuits 61-1 and 61-2), an intermediate result storage unit 4 (intermediate data storage units 41-1 and 41-2), and a queue management unit. 2 (see arrow t4), first, in the
[0102]
Further, in the intermediate
[0103]
Further, in the
Thereafter, the
[0104]
At this time, the calculation result by the
The merging
[0105]
Then, first, in the
On the other hand, in the intermediate
[0106]
Further, in the
Thereafter, the merging
[0107]
At this time, the calculation result by the
The merging
[0108]
As described above, according to the
[0109]
Further, the
[0110]
Therefore, in the case where dequeue instructions (DeQueueNo = i) for different queues #i are continuously generated and dequeue instructions (DeQueueNo = i) for the same queue #i are continuously generated, merge control is performed. The
[0111]
As a result, by the dequeue instruction (DeQueueNo = i), the time until the next output packet calculation (determination) can be shortened from about 3 × pτ to about 1/3 of about pτ, and the throughput is improved by about 3 times. It is possible to realize.
When a dequeue instruction (DeQueueNo = i) is generated, the intermediate data for the first packet corresponding to the queue #i in the intermediate
[0112]
(B) Other
As shown in FIG. 18, the
[0113]
In this way, the same processing as in the above-described embodiment can be realized for a plurality of interfaces 11-1 to 11-6 having different transfer rates by one
In the above-described embodiment, both the intermediate
[0114]
The present invention is not limited to the above-described embodiment, and can be variously modified and implemented without departing from the spirit of the present invention.
[0115]
【The invention's effect】
As described above in detail, according to the packet scheduler of the present invention, at least the first intermediate data required for calculating the ideal output time of the first packet data to be output first from each queue, and the output next Second intermediate data necessary for calculating the ideal output time for the second packet data to be processed, and second packet data belonging to the same queue as the first packet data determined to be transmitted with the highest priority Is output to the post-calculation means together with the first intermediate data of the first packet data belonging to the other queue as the first intermediate data for the new first packet data in the queue. The processing delay until calculation of the ideal output time can be concealed, and the processing speed (throughput) can be greatly improved.
[0116]
Here, it is preferable to invalidate the first intermediate data for the first packet data determined to be transmitted with the highest priority as described above. In this way, the same first packet data is duplicated and the first packet data is duplicated. Since it can be reliably avoided that the packet data is to be transmitted with priority, this greatly contributes to the improvement of the reliability of the packet scheduler.
[0117]
Further, as described above, when the second intermediate data for the second packet data is output to the post-calculation means as the first intermediate data for the new first packet data, it should be output next to the second packet data. If the third intermediate data necessary for calculating the ideal output time of the third packet data is stored as the second intermediate data for the new second packet, the data required until the next ideal output time is calculated. Therefore, the processing delay until the ideal output time calculation can be more effectively concealed (claim 3).
[0118]
Further, by providing bypass control means for bypassing the ideal output time information of the second packet data calculated by the post-calculation means, the second packet data of the second packet data is simultaneously with the ideal output time information of the other first packet data. By allowing ideal output time information to be input to the merge control means, when it is continuously determined that packet data in different queues should be transmitted with the highest priority, the packet data in the same queue has the highest priority. In any case where data is to be transmitted continuously, ideal output time information can be selected at regular time intervals, and the processing speed (throughput) of this packet scheduler can be greatly increased. (
[0119]
Here, it is preferable that the bypass control means is configured to invalidate the ideal output time information for the first packet data determined to be transmitted with the highest priority. Since it can be reliably avoided that the first packet data is duplicated and determined as the packet data to be transmitted with the highest priority, this greatly contributes to the improvement of the reliability of the packet scheduler. .
[0120]
By the way, when managing packet data waiting for transmission for a plurality of packet interfaces for each packet interface by a plurality of queues each capable of setting an output guaranteed bandwidth, the packet scheduler performs the above-described means for a plurality of pipes. The pipeline processing stage may be divided into line processing stages, and these pipeline processing stages may be configured to perform processing for different packet interfaces at fixed time intervals. In this way, the same processing as described above can be realized with one packet scheduler, which greatly contributes to a significant downsizing and performance improvement of the mounting destination device.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a packet scheduler as an embodiment of the present invention.
FIG. 2 is a block diagram illustrating a detailed configuration example of a packet scheduler illustrated in FIG. 1;
3 is a block diagram illustrating a configuration example of a bypass control circuit illustrated in FIG. 2;
4 is a state transition diagram for explaining the operation of the state control unit shown in FIG. 3; FIG.
5 is a block diagram for explaining the operation (pipeline processing) of the packet scheduler shown in FIGS. 1 and 2. FIG.
6 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; from an initial state until a dequeue instruction is generated). FIG.
7 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; from an initial state until a dequeue instruction is generated). FIG.
8 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; from an initial state until a dequeue instruction is generated). FIG.
9 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when dequeue instructions are continuously generated for the same queue). FIG.
10 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when dequeue instructions are continuously generated for the same queue). FIG.
11 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when dequeue instructions are continuously generated for the same queue). FIG.
12 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when a dequeue instruction is continuously generated for the same queue). FIG.
13 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when dequeue instructions are continuously generated for the same queue). FIG.
14 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when a dequeue instruction is generated for different queues). FIG.
15 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when a dequeue instruction is generated for different queues). FIG.
16 is a block diagram for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when a dequeue instruction is generated for different queues). FIG.
17 is a time chart for explaining the operation of the packet scheduler shown in FIGS. 1 and 2 (pipeline processing; when a dequeue instruction is generated for different queues). FIG.
FIG. 18 is a block diagram illustrating an example of a network relay device to which the packet scheduler according to the present embodiment is applied.
FIG. 19 is a block diagram illustrating a pipeline configuration example of the packet scheduler illustrated in FIG. 18;
20 is a diagram showing a time slot allocation example for explaining the operation of the packet scheduler shown in FIG.
FIG. 21 is a block diagram illustrating an example of a packet scheduler using WFQ.
[Explanation of symbols]
1 Packet scheduler
2 Queue Management Department
3 Previous calculation part
4 Intermediate result storage
5 Post-calculation section
6 Bypass control unit
7 Minimum value selector
8 Merge control unit
9 Packet memory
9 'shared memory
10 Minimum value determination processing unit (transmission packet data determination means)
11 Network relay device (packet transfer device)
11-1 to 11-6 packet interface
21 Enqueue processing section
22 Queue storage
23 Dequeue processor
24 Enqueue / Dequeue Mediation Department
25 timer
31 γ calculator
32 β calculator
41-1 to 41-n Intermediate data storage unit
42 Intermediate data read controller
51-1 to 51-n F calculation unit
52 β × γ calculator
53 α calculator
54 Adder
61-1 to 61-n bypass control circuit
62 Temporary storage unit (memory unit)
63 selection part (bypass selection means)
64 State controller
71 comparator
221 Queue management table
311 321 RAM
312 γ arithmetic unit (adder)
322 multiplier
Claims (7)
該パケットデータに関する情報に基づいて、空き状態のキューについての出力保証帯域を余剰帯域としてアクティブ状態の他のキューに公平に配分するための計算を行なう前計算手段と、
少なくとも、上記の各キューから最初に出力されるべき第1パケットデータの理想出力時刻計算に必要な該前計算手段での第1計算結果を含む第1中間データと、該第1パケットデータの次に出力されるべき第2パケットデータについての理想出力時刻計算に必要な該前計算手段での第2計算結果を含む第2中間データとを記憶する中間計算結果記憶手段と、
該中間計算結果記憶手段に記憶されている該第1中間データに基づいて上記の各キューにおける第1パケットデータについての理想送信時刻情報を計算する後計算手段と、
該後計算手段によって計算された各理想出力時刻情報に基づいて最優先に送信すべきキューの第1パケットデータを決定する送信パケットデータ決定手段と、
該送信パケットデータ決定手段で最優先に送信すべきと決定された第1パケットデータと同じキューに属する第2パケットデータについての第2中間データを、当該キューの新たな第1パケットデータについての第1中間データとして他のキューに属する第1パケットデータの第1中間データとともに該中間計算結果記憶手段から読み出して該後計算手段へ出力する中間計算結果読み出し制御手段とをそなえて構成されたことを特徴とする、パケット・スケジューラ。A packet scheduler for managing packet data waiting for transmission by a plurality of queues each capable of setting an output guaranteed bandwidth, and scheduling a transmission amount of packet data for each queue based on the setting of the output guaranteed bandwidth;
Pre-calculation means for performing a calculation for fairly distributing the output guaranteed bandwidth for the queue in the idle state as a surplus bandwidth to the other queues in the active state based on the information on the packet data;
At least first intermediate data including a first calculation result in the pre-calculation means necessary for calculating an ideal output time of the first packet data to be output first from each of the queues, and subsequent to the first packet data Intermediate calculation result storage means for storing second intermediate data including the second calculation result in the previous calculation means necessary for calculating the ideal output time for the second packet data to be output to
Post-calculation means for calculating ideal transmission time information for the first packet data in each of the queues based on the first intermediate data stored in the intermediate calculation result storage means;
Transmission packet data determining means for determining first packet data of a queue to be transmitted with the highest priority based on each ideal output time information calculated by the post-calculating means;
The second intermediate data for the second packet data belonging to the same queue as the first packet data determined to be transmitted with the highest priority by the transmission packet data determining means is used as the second intermediate data for the new first packet data in the queue. An intermediate calculation result reading control means for reading out from the intermediate calculation result storage means together with the first intermediate data of the first packet data belonging to another queue as one intermediate data and outputting to the subsequent calculation means; Feature packet scheduler.
該中間計算結果記憶手段に記憶されている、該送信パケットデータ決定手段で最優先に送信すべきと決定された第1パケットデータについての第1中間データを無効にするように構成されたことを特徴とする、請求項1記載のパケット・スケジューラ。The intermediate calculation result reading control means
The first intermediate data stored in the intermediate calculation result storage means for the first packet data determined to be transmitted with the highest priority by the transmission packet data determination means is invalidated. The packet scheduler according to claim 1, characterized in that:
該第2パケットデータの次に出力されるべき第3パケットデータの理想出力時刻計算に必要な該前計算手段での第3計算結果を含む第3中間データを、新たな第2パケットについての第2中間データとして記憶するように構成されたことを特徴とする、請求項1又は請求項2に記載のパケット・スケジューラ。The intermediate calculation result storage means
The third intermediate data including the third calculation result in the previous calculation means necessary for calculating the ideal output time of the third packet data to be output next to the second packet data is obtained as the second second packet. The packet scheduler according to claim 1 or 2, wherein the packet scheduler is configured to store the intermediate data as two intermediate data.
該後計算手段によって計算された理想出力時刻情報を比較して最優先に送信すべき第1パケットデータの理想出力時刻情報を選択する理想出力時刻情報選択手段と、
該理想出力時刻情報選択手段からの理想出力時刻情報と該後計算手段からバイパス入力される理想出力時刻情報とを比較して最優先に送信すべき第1パケットデータを決定する合流制御手段と、
該後計算手段において計算された該第2パケットデータの理想出力時刻情報を該バイパス入力として該合流制御手段へ出力するとともに、それ以外の第1パケットデータの理想出力時刻情報を該理想出力時刻情報選択手段へ出力するバイパス制御手段とをそなえて構成されていることを特徴とする、請求項1〜3のいずれか1項に記載のパケット・スケジューラ。The transmission packet data determining means includes
Ideal output time information selection means for comparing the ideal output time information calculated by the post-calculation means and selecting ideal output time information of the first packet data to be transmitted with the highest priority;
A merging control means for comparing the ideal output time information from the ideal output time information selecting means with the ideal output time information bypassed from the post-calculating means to determine first packet data to be transmitted with the highest priority;
The ideal output time information of the second packet data calculated by the post-calculation means is output to the merging control means as the bypass input, and the ideal output time information of the other first packet data is output to the ideal output time information. 4. The packet scheduler according to claim 1, further comprising bypass control means for outputting to the selection means.
該キュー毎のバイパス制御回路をそなえるとともに、
該バイパス制御回路が、それぞれ、
該後計算手段によって計算された該第1パケットデータの理想出力時刻情報を記憶するメモリ部と、
該メモリ部に記憶された該理想出力時刻情報を該バイパス入力もしくは該理想出力時刻情報選択手段への入力として選択的に出力するバイパス選択部と、
該合流制御手段で最優先に送信すべきと決定された第1パケットデータの属するキュー番号が自担当のキュー番号と一致すると該メモリ部の該理想出力時刻情報が該バイパス入力として選択され、該キュー番号が自担当のキュー番号と異なると該メモリ部の該理想出力時刻情報が該理想出力時刻情報選択手段への入力として選択されるよう該バイパス選択部を制御する状態制御部とをそなえて構成されたことを特徴とする、請求項4記載のパケット・スケジューラ。The bypass control means comprises:
With a bypass control circuit for each queue,
The bypass control circuits are respectively
A memory unit for storing ideal output time information of the first packet data calculated by the post-calculation means;
A bypass selection section for selectively outputting the ideal output time information stored in the memory section as an input to the bypass input or the ideal output time information selection means;
When the queue number to which the first packet data determined to be transmitted with the highest priority by the merging control means matches the queue number of its own responsibility, the ideal output time information of the memory unit is selected as the bypass input, A state control unit that controls the bypass selection unit so that the ideal output time information of the memory unit is selected as an input to the ideal output time information selection unit when the queue number is different from the queue number of its own 5. The packet scheduler according to claim 4, wherein the packet scheduler is configured.
該合流制御手段で最優先に送信すべきと決定した第1パケットデータについての理想出力時刻情報を無効にするように構成されたことを特徴とする、請求項4記載のパケット・スケジューラ。The bypass control means comprises:
5. The packet scheduler according to claim 4, wherein the packet scheduler is configured to invalidate ideal output time information for the first packet data determined to be transmitted with the highest priority by the confluence control means.
非アクティブ状態となっているキューについての出力保証帯域を余剰帯域としてアクティブ状態の他のキューに公平に配分するための計算を行なう前計算手段と、
少なくとも、上記の各キューから最初に出力されるべき第1パケットデータの理想出力時刻計算に必要な該前計算手段での第1計算結果を含む第1中間データと、該第1パケットデータの次に出力されるべき第2パケットデータの理想出力時刻計算に必要な該前計算手段での第2計算結果を含む第2中間データとを記憶する中間計算結果記憶手段と、
該中間計算結果記憶手段に記憶されている該第1中間データに基づいて上記の各キューにおける第1パケットデータの理想出力時刻情報を計算する後計算手段と、
該後計算手段によって計算された各理想出力時刻情報に基づいて最優先に送信すべきキューの第1パケットデータを決定する送信パケットデータ決定手段と、該送信パケットデータ決定手段で最優先に送信すべきと決定された第1パケットデータと同じキューに属する第2パケットデータについての第2中間データを、当該キューの新たな第1パケットデータについての第1中間データとして他のキューに属する第1パケットデータについての第1中間データとともに該中間計算結果記憶手段から読み出して該後計算手段へ出力する中間計算結果読み出し制御手段とをそなえるとともに、
上記の各手段を複数のパイプライン処理ステージに分割し、該パイプライン処理ステージが、それぞれ、一定時間毎に異なるパケットインタフェースについての処理を行なうように構成されたことを特徴とする、パケット・スケジューラ。Packet data waiting for transmission for a plurality of packet interfaces is managed for each packet interface by a plurality of queues each capable of setting an output guaranteed bandwidth, and the amount of packet data transmitted for each queue is based on the setting of the output guaranteed bandwidth A packet scheduler for scheduling
Pre-calculation means for performing a calculation for equally distributing the output guaranteed bandwidth for the queue in the inactive state to the other queues in the active state as a surplus bandwidth;
At least first intermediate data including a first calculation result in the pre-calculation means necessary for calculating an ideal output time of the first packet data to be output first from each of the queues, and subsequent to the first packet data Intermediate calculation result storage means for storing second intermediate data including the second calculation result in the previous calculation means necessary for calculating the ideal output time of the second packet data to be output to
Post-calculation means for calculating ideal output time information of the first packet data in each of the queues based on the first intermediate data stored in the intermediate calculation result storage means;
Transmission packet data determining means for determining first packet data of a queue to be transmitted with the highest priority based on each ideal output time information calculated by the post-calculating means, and transmission with the highest priority by the transmission packet data determining means The first packet belonging to another queue as the second intermediate data for the second packet data belonging to the same queue as the first packet data determined to be the first intermediate data for the new first packet data of the queue An intermediate calculation result read control means for reading out from the intermediate calculation result storage means together with the first intermediate data about the data and outputting to the subsequent calculation means;
A packet scheduler characterized in that each of the above means is divided into a plurality of pipeline processing stages, and each of the pipeline processing stages is configured to perform processing for different packet interfaces at regular time intervals. .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000374957A JP4199414B2 (en) | 2000-12-08 | 2000-12-08 | Packet scheduler |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000374957A JP4199414B2 (en) | 2000-12-08 | 2000-12-08 | Packet scheduler |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002185494A JP2002185494A (en) | 2002-06-28 |
JP4199414B2 true JP4199414B2 (en) | 2008-12-17 |
Family
ID=18844046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000374957A Expired - Fee Related JP4199414B2 (en) | 2000-12-08 | 2000-12-08 | Packet scheduler |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4199414B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005020523A1 (en) | 2003-08-20 | 2005-03-03 | Nec Corporation | Session relay device and relay method |
-
2000
- 2000-12-08 JP JP2000374957A patent/JP4199414B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002185494A (en) | 2002-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3872716B2 (en) | Packet output control device | |
JP4327948B2 (en) | Port scheduler and method for scheduling service delivery while guaranteeing hierarchical transfer rate limits when overbooking capability is available | |
US7986706B2 (en) | Hierarchical pipelined distributed scheduling traffic manager | |
US7876763B2 (en) | Pipeline scheduler including a hierarchy of schedulers and multiple scheduling lanes | |
US6785236B1 (en) | Packet transmission scheduling with threshold based backpressure mechanism | |
US7142513B2 (en) | Method and multi-queue packet scheduling system for managing network packet traffic with minimum performance guarantees and maximum service rate control | |
US8000247B2 (en) | Bandwidth management apparatus | |
US8897292B2 (en) | Low pass filter for hierarchical pipelined distributed scheduling traffic manager | |
US20040151197A1 (en) | Priority queue architecture for supporting per flow queuing and multiple ports | |
JP2000512442A (en) | Event-driven cell scheduler in communication network and method for supporting multi-service categories | |
US7272150B2 (en) | System and method for shaping traffic from a plurality of data streams using hierarchical queuing | |
JP2002232470A (en) | Scheduling system | |
US7522620B2 (en) | Method and apparatus for scheduling packets | |
US7426215B2 (en) | Method and apparatus for scheduling packets | |
CN110086728B (en) | Method for sending message, first network equipment and computer readable storage medium | |
US7474662B2 (en) | Systems and methods for rate-limited weighted best effort scheduling | |
JP4199414B2 (en) | Packet scheduler | |
WO2007047864A2 (en) | Traffic shaping and metering scheme for oversubscribed and/or cascaded communication devices | |
US7599381B2 (en) | Scheduling eligible entries using an approximated finish delay identified for an entry based on an associated speed group | |
Jiang | Some properties of length rate quotient shapers | |
EP1774721B1 (en) | Propagation of minimum guaranteed scheduling rates | |
US20070133561A1 (en) | Apparatus and method for performing packet scheduling using adaptation round robin | |
JP2003018208A (en) | Qos controller | |
Lien et al. | Generalized dynamic frame sizing algorithm for finite-internal-buffered networks | |
CN115835402A (en) | Time-sensitive network flow scheduling method and device based on data frame dynamic priority |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060721 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080910 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080916 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081003 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111010 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |