JP4199414B2 - Packet scheduler - Google Patents

Packet scheduler Download PDF

Info

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
Application number
JP2000374957A
Other languages
Japanese (ja)
Other versions
JP2002185494A (en
Inventor
炎 許
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2000374957A priority Critical patent/JP4199414B2/en
Publication of JP2002185494A publication Critical patent/JP2002185494A/en
Application granted granted Critical
Publication of JP4199414B2 publication Critical patent/JP4199414B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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】

Figure 0004199414
【0007】
【数2】
Figure 0004199414
【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)に示すように変形する。
i,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]
Figure 0004199414
[0007]
[Expression 2]
Figure 0004199414
[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 queues 1 to n, i = 1 to n. Further, j = 1 represents a packet located at the head of queue #i when calculation is performed by the scheduler, and j = 0 represents an output time of a packet output immediately before.
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 queues # 1 to #n. That is, the second term of the equation (1-1) represents a parameter for fairly distributing the reserved bandwidth of the queue #i in the empty state to other queues.
[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 packet scheduler 100 using WFQ includes a queue management unit 101, a calculation unit 102, and a minimum value selection unit 103. Further, the queue management unit 101 includes an enqueue process. Unit 111, queue storage unit 112, and dequeue processing unit 113. The calculation unit 102 includes a γ calculation unit 121, a β calculation unit 122, storage units 123-1 to 123-n for each queue #i, and each queue. F calculation units 124-1 to 124-n are provided.
[0016]
Here, in the queue management unit 101, the queue storage unit 112 includes information on arrival packets stored in a packet memory (not shown) [packet length L, arrival time T (TimeStamp), storage location in the packet memory (memory address; TopPointer)] is stored in the FIFO format for each queue corresponding to the stream # 1 to #n to which the arrival packet belongs and is managed as a queue management table.
[0017]
Further, the enqueue processing unit 111 stores the information on the arrival packet in the corresponding queue #i of the queue storage unit 112 (queue management table) based on the enqueue number (EnQueueNo) notified from the packet memory. The dequeue processing unit 113 receives the queue number i (dequeue instruction; DeQueueNo = i) to which the head packet determined to be output with the highest priority by the minimum value selection unit 103 is received. Information (memory address) of the first packet in queue #i corresponding to the queue number i is notified to the packet memory and the corresponding packet is sent to the output link (line), and the packet information [packet length L, arrival time T (TimeStamp), memory address (TopPointer)] is deleted.
[0018]
In this queue management unit 101, the reserved bandwidth Φi set for each queue #i, the total reserved bandwidth Φb of the active queue #i, and the output time F of the first packet selected by the minimum value selection unit 103i, 0Etc. are also managed.
Next, in the calculation unit 102, the γ calculation unit 121 calculates γ (= Φb / R) based on the total reserved bandwidth Φb of the active queue #i managed by the queue management unit 101. The β calculator 122 is for calculating the above β (= L / Φi) based on the packet length L and the reserved bandwidth Φi among the information managed by the queue manager 101. The result β is stored in the storage unit 123-i corresponding to the queue number i. The arrival time T and output time F managed by the queue management unit 101i, 0Is stored as a set together with the calculation result β in the storage unit 123-i of the corresponding queue number i without going through the β calculation unit 122.
[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 β × γ calculation unit 125, the α calculation unit 126 and the calculation units 125 and 126, respectively. Ideal output time Fi, 1It has the addition part 127 which calculates | requires.
[0020]
Then, the minimum value selection unit 103 performs the ideal output time F of the head packet for each queue #i obtained by each F calculation unit 124-i.i, 1For example, by the tournament method, the minimum ideal output time Fi, 1Is selected (determined), and the queue number i is notified (feedback) to the dequeue processing unit 113 as a dequeue instruction, whereby the first packet of the corresponding queue #i Are read from the packet memory and transferred to the output link. The ideal output time F selected at this timei, 1Is also notified to the queue management unit 101, and the queue management unit 101 uses the output time F used in the next calculation.i, 0Will be managed as
[0021]
In the packet scheduler 100 configured as described above, every time a packet arrives from a certain stream, the enqueue processing unit 111 updates the state of the queue #i corresponding to the stream to which the arrival packet belongs. If there is a packet at the head of queue #i, information about the head packet (packet length Li, 1, Arrival time Ti, 1), Information on the first packet output immediately before (output time Fi, 0) And setting information (1 / Φi) corresponding to the queue #i are sent from the queue management unit 101 to the calculation unit 124, respectively.
[0022]
In the calculation unit 124-i, first, the value of γ is calculated by the γ calculation unit 121 and the value of β is calculated by the β calculation unit 122 based on the information sent from the queue management unit 101 as described above. Β is held in the storage unit 123-i of the corresponding queue number i. Note that information that was not used in the calculation of β (arrival time Ti, 1, Output time Fi, 0) Are respectively stored in the storage unit 123-i together with β obtained by the β calculation unit 122.
[0023]
Then, γ obtained by the γ calculation unit 121 and β, T held in the storage unit 123-i.i, 1And Fi, 0Are respectively input to the F calculation unit 124-i of the corresponding queue number i at the same timing, and the F calculation unit 124-i transmits the information (γ, β, T) thus transmitted.i, 1And Fi, 0), The β × γ calculation unit 125 calculates the value of β × γ, the α calculation unit 126 calculates the value of α, and the calculation result is added by the addition unit 127. Thus, the ideal output time F for the first packet of queue number ii, 1Is required.
[0024]
In this way, each ideal output time F obtained by each F calculation unit 124-i.i, 1Are input to the minimum value selection unit 103 at the same timing, and the minimum value selection unit 103 receives each ideal output time F by a tournament method or the like.i, 1And the ideal output time F with the smallest valuei, 1And the queue number i is notified to the dequeue processing unit 113 of the queue management unit 101 as a dequeue instruction.
[0025]
As a result, the dequeue processing unit 113 reads the first packet in the queue #i with the dequeue number i and sends it to the output link. Thereafter, in the same manner, the ideal output time F of the first packet for each queue #ii, 1Is calculated, and the smallest ideal output time Fi, 1Is selected as a packet to be output with the highest priority, and is sent to the output link.
[0026]
However, the packet scheduler 100 includes a queue management unit 101, a storage unit 123-i (γ calculation unit 121), an F calculation unit 124-i, and a minimum value selection unit 103, as shown in FIG. It has a four-stage pipeline structure that operates simultaneously with time and outputs information to a subsequent stage every constant time (a constant number of clocks) pτ, and the calculation unit 102 is based on the same information until the next dequeue instruction is generated. When the next dequeue instruction occurs and the next dequeue instruction is generated, the calculation based on new information after the dequeue instruction is started by discarding (invalidating) the intermediate calculation results up to that point. It has become so.
[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 γ calculation unit 121 needs to recalculate γ (= Φb / R).
[0028]
For this reason, the above-described γ calculation unit 121 re-calculates γ using Φb = Φb + Φi as the total reserved bandwidth Φb when the queue #i transitioned from the idle state to the active state occurs, and conversely, the active state When queue #i that has transitioned from a free state to a free state occurs, γ is recalculated using Φb = Φb−Φi as the total reserved bandwidth Φb.
[0029]
As described above, the packet scheduler 100 transmits packets so as to guarantee the set reserved bandwidth Φi while fairly distributing the surplus bandwidth temporarily generated according to the active state of each queue #i among the streams. (Packet scheduling) can be performed.
[0030]
[Problems to be solved by the invention]
However, in such a conventional packet scheduler 100, the total delay time of a series of pipeline processing from the occurrence of the dequeue instruction determines the throughput. For example, if the number of pipeline stages is m (m = 4 in FIG. 21), the processing time (delay time) per pipeline is pτ as described above, so the total delay time can be expressed as m × pτ. The
[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 packet scheduler 100 is limited by the total number of pipeline processes (m).
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 queue management unit 101 to the calculation unit 102, and a new ideal output time Fi, 1Until the value is compared and selected by the minimum value selection unit 103. As a result, packets can be dequeued from the same queue #i only at intervals of (m−1) × pτ, Packet output throughput is reduced.
[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 packet scheduler 1 shown in FIG. 1 includes a queue management unit 2, a pre-calculation unit 3, an intermediate result storage unit 4, and a post- A calculation unit 5 and a minimum value determination processing unit 10 (bypass control unit 6, minimum value selection unit 7 and merging control unit 8) are provided. As shown in FIG. 1, the packet scheduler 1 is assumed to have a four-stage pipeline configuration that outputs information to subsequent processes at intervals of pτ.
[0043]
Here, in the same way as described above with reference to FIG. 21, the queue management unit 2 has a plurality of packet data (hereinafter simply referred to as “packets”) waiting to be transmitted, each of which can set a reserved bandwidth (output guaranteed bandwidth) Φi. For this purpose, in this embodiment, as shown in FIGS. 1 and 2, an enqueue processing unit 21, a queue storage unit 22, a dequeue processing unit 23, an enqueue A dequeue arbitration unit 24 is provided. In FIG. 1, the enqueue / dequeue arbitration unit 24 is not shown.
[0044]
In the present embodiment, the queue storage unit 22 also includes information relating to the arrival packet [related parameters; packet length L, arrival time T (TimeStamp), storage location (memory address; TopPointer)] is stored in a FIFO format for each stream-corresponding queue # 1 to #n to which the arrival packet belongs and managed as a queue management table 221 (see FIG. 2).
[0045]
Further, the enqueue processing unit 21 stores the information (related parameter) of the arrival packet in the corresponding queue #i of the queue management table 221 based on the enqueue number (EnQueueNo) notified from the packet memory 9 (enqueue). ), The state is updated every time a packet arrives (write to the packet memory 9).
[0046]
However, in the first calculation, the enqueue processing unit 21 reads the information of the first packet and the second packet from the head of each queue #i from the queue management table 221, and each of them is sent to the preceding calculation unit 3 in the subsequent stage in time series. It is designed to output. Further, in FIG. 2, the arrival time T (TimeStamp) in the packet information is obtained as a timer value in the timer 25 when the enqueue processing unit 21 enqueues the queue management table 221. It has become.
[0047]
On the other hand, in response to a dequeue instruction (dequeue number i), which will be described later, the dequeue processing unit 23 reads information (memory address; TopPointer) of the top packet corresponding to the dequeue number i from the queue management table 221 and reads the packet memory 9. Thus, the packet stored in the memory address is read from the packet memory 9 and sent to the output link (line).
[0048]
However, when the dequeue processing unit 23 of the present embodiment receives the above dequeue instruction, the dequeue processing unit 23 deletes the dequeued packet information stored in the queue management table 221 corresponding to the dequeue number i and stores the same queue #i. It also has a function of reading the third packet information from the queue management table 221 and outputting it to the pre-calculation unit 3.
[0049]
In addition, the enqueue / dequeue arbitration unit 24 accesses at least the same queue #i of the queue management table 221 at the same timing, and the above-described enqueue processing unit 21 and dequeue processing unit 23 lose packet information. In order to prevent this, the access timing to the queue management table 221 of the enqueue processing unit 21 and the dequeue processing unit 23 is arbitrated.
[0050]
Next, the pre-calculation unit 3 calculates the WFQ based on the packet information output from the queue management unit 101, that is, sets the reserved bandwidth Φi for the empty queue #i as the surplus bandwidth. This is for performing a calculation for fair distribution to #i. For this purpose, as shown in FIG. 1, a γ calculating section 31 and a β calculating section 32 are provided.
[0051]
Here, the γ calculating unit 31 is for calculating an allocation variable [γ = Φb × (1 / R)] of the surplus band. However, when the active status of the queue #i changes due to input / output of a packet, the γ calculation unit 31 recalculates γ. For example, if Φb is the total value of the reserved bandwidths Φi of the active queue and the initial value (when no packet information exists in all queues #i) is 0, the queue #i that has transitioned from the free state to the active state Occurs, Φb = Φb + Φi is calculated, and γ is recalculated with Φb. On the other hand, when a queue #i that has transitioned from the active state to the empty state is generated, Φb = Φb−Φi is calculated, and γ is recalculated with Φb.
[0052]
For example, as shown in FIG. 2, the γ calculation unit 31 sets (Φi / R) in advance in the RAM 311 instead of the above Φi, and sets the value (Φi / R) as the active queue #. Φb × (1 / R) can be obtained simply by accumulating as many as j (jεactive) in the γ arithmetic unit (adder) 312 and the calculation of multiplication can be omitted.
[0053]
On the other hand, the β calculator 32 obtains the β by calculating packet length (L) × reserved bandwidth (1 / Φi). For example, in FIG. 2, the queue number ( QueueNo = i) reads (1 / Φi) preset in the RAM 321, and multiplies the value (1 / Φi) and the packet length L (PacketLen) notified from the enqueue processing unit 21 by the multiplier 322. Is obtained by multiplying by.
[0054]
Next, the intermediate result storage unit 4 stores intermediate calculation data (β for the information of the first and second packets of each queue #i.i, 1, Ti, 1), (Βi, 2, Ti, 2) And the output time (F) of the first packet output immediately before that is fed back from the output of the merge control unit 8i, 0) For each queue #i and output to the post-calculation unit 5 in the subsequent stage. In the following, these intermediate calculation data (βi, 1, Ti, 1), (Βi, 2, Ti, 2) And the ideal output time of the first packet output immediately before (Fi, 0) May be collectively referred to as “intermediate data”.
[0055]
In other words, the intermediate result storage unit 4 includes at least the above-described first calculation result in the previous calculation unit 31 necessary for the ideal output time calculation F of the first packet (first packet data) of each queue #i. βi, 1As the second calculation result necessary for calculating the ideal output time for the (first) intermediate data including the first data and the second packet (second packet data) to be output next to the first packet, βi, 2(Second) intermediate data including the data is stored.
[0056]
For this reason, as shown in FIGS. 1 and 2, the intermediate result storage unit 4 includes the intermediate data storage units 41-1 to 41-n for each queue #i for storing the intermediate data, respectively. An intermediate data read control unit 42 that controls the reading of the intermediate data in response to a dequeue instruction is provided. In FIG. 2, the intermediate data read control unit 42 is not shown.
[0057]
Specifically, the intermediate data read control unit 42 receives the dequeue instruction (DeQueueNo = i), and thereby receives the second packet information (β of the intermediate data storage unit 41-i corresponding to the dequeue number i.i, 2, Ti, 2) And output time (Fi, 0) And output to the post-calculation unit 5, the intermediate data storage unit 41-i updates the information of the second packet as the information of the first packet, and dequeue instruction ( Output time fed back with DeQueueNo = i (Fi, 0) For the queue #k (k ≠ i) other than the dequeue instruction (DeQueueNo = i), the first packet information (βk, 1,, Tk, 1) From the corresponding intermediate data storage unit 41-k and output to the post-calculation unit 5.
[0058]
That is, the intermediate data read control unit 42 stores the intermediate data for the second packet belonging to the same queue #i as the first packet determined to be transmitted (dequeued) with the highest priority by the merge control unit 8 described later. The intermediate data of the first packet belonging to the other queue #k is read from the intermediate calculation result storage unit 4 as intermediate data for the new first packet of the queue #i and output to the post-calculation unit 5. . As a result, data output for subsequent processing can be performed with a certain delay time, and the delay time from the dequeue to the start of calculation of the next packet can be shortened.
[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 pre-calculation unit 3 based on the information of the third packet sent from the queue management unit 2. Packet information (βi, 2, Ti, 2) And the output time (F for the first packet output immediately before being sent together with the dequeue instruction (DeQueueNo = i)i, 0) Is stored in the intermediate data storage unit 41-i as intermediate data for the new second packet.
[0060]
That is, the packet scheduler 1 updates the second packet information to the intermediate data storage unit 41-i that has become free as a result of updating the information of the second packet as information of the new first packet at a certain time interval pτ. ), The intermediate data for the two packets of the first packet and the second packet are always held in the intermediate data storage unit 41-i. It works to keep you up.
[0061]
Next, the post-calculation unit 5 performs the above-described expression (1) for each active queue #i based on the intermediate data of all active queues #i input from the intermediate result storage unit 4 in the preceding stage of the pipeline. -3), the ideal output time F of the first packet of each active queue #ii, 1For this purpose, as shown in FIG. 1 and FIG. 2, F calculation units 51-1 to 51-n are provided for each queue #i, and each of these F calculation units 51- i is a β × γ calculating section (multiplier) 52 for calculating β × γ, and α isi, 1= Max {Fi, 0, Ti, 1}, And an ideal output time F by adding the calculation results of these calculation units 52 and 53.i, 1And an adder 54 for obtaining the above.
[0062]
In addition, the minimum value determination processing unit (transmission packet data determination means) 10 receives each ideal output time F calculated by the post-calculation unit 5 described above.i, 1For this reason, in the present embodiment, the bypass control unit 6 having the following functions, respectively, is determined (selected). A minimum value selector 7 and a merging controller 8 are provided.
[0063]
That is, the bypass control unit 6 corresponds to each queue #i, and the calculation result from the post-calculation unit 5 (ideal output time F for each queue #ii, 1) Has a state variable Si indicating whether or not to bypass the merging control unit 8 without passing through the minimum value selection unit 7, and an ideal output time F according to the state variable Si.i, 1Is selectively output to either the minimum value selection unit 7 or the merging control unit 8. For example, when Si = ON, the ideal output time input from the post-calculation unit 5 next time Fi, 1Is output to the minimum value selection unit 7 without being bypassed when Si = OFF.
[0064]
For this reason, as shown in FIG. 2, the bypass control unit 6 is provided with bypass control circuits 61-1 to 61-n for each queue #i, and each of these bypass control circuits 61- Each i is provided with a temporary storage unit 62, a selection unit 63, and a state control unit 64, for example, as shown in FIG.
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 post-calculation unit 5.i, 1Is temporarily stored, and the selection unit (bypass selection means) 63 is configured to output the ideal output time F stored in the temporary storage unit 62.i, 1Is selectively output as a bypass input to the merging control unit 8 or an input to the minimum value selection unit 7.
[0065]
And the state control part 64 is for controlling the selection state in the selection part 63 by controlling the state variable Si according to the state transition diagram shown, for example in FIG. That is, in the initial state, the state variable Si is in the OFF state (non-bypass state; state transition 65-1). When the dequeue number i that matches the queue number i in charge is received in the OFF state, the state variable Si is turned on. After transitioning to a state (bypass state) (state transition 65-2), the state control unit 64 allows an overwrite to the temporary storage unit 62, thereby allowing an ideal output time F for the first packet waiting for output.i, 1Is discarded (invalidated) and the ideal output time F for the first packet (originally the second packet) that arrives from the post-calculation unit 5 next timei, 1The selection unit 63 is controlled so as to be bypassed.
[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 state control unit 64 Is the ideal output time F for the first packet waiting in the temporary storage unit 62.i, 1The selection unit 63 is controlled so as to be output to the minimum value selection unit 7. Note that the ideal output time F in the state variable Si = OFF state.i, 1Is simply input, the state variable Si does not change (still in the OFF state) and the input ideal output time F is input.i, 1Is stored in the temporary storage unit 62 (state transition 65-4).
[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 state control unit 64 temporarily Ideal output time F for the first packet waiting in the storage unit 62i, 1Is controlled so as to be bypassed (state transition 65-5).
[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 state control unit 64 Ideal output time F for the first packet waitingi, 1Is controlled to be output to the minimum value selection unit 7 (state transition 65-6).
[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 temporary storage unit 62 as it is, and the state control unit 64 receives the ideal output time Fi, 1Is controlled so as to be bypassed to the merge control unit 8 (state transition 65-7).
[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 state control unit 64 Then, the selector 63 is controlled so that the output to the minimum value selector 7 is selected (state transitions 65-8 and 65-9).
[0071]
In this way, when this state control unit 64 receives a dequeue instruction of the dequeue number i that matches the queue number i in charge of itself, the ideal output that arrives from the post-calculation unit 5 (F calculation unit 51-i) next time. Time Fi, 1If the dequeue number i does not match the queue number i in charge, the next arrival from the post-calculation unit 5 (F calculation unit 51-i) is controlled. Output time Fi, 1It is realized that the selection unit 8 is controlled to output to the minimum value selection unit 7 without bypassing.
[0072]
Accordingly, when the bypass control unit 6 is viewed as a whole, the bypass control unit 6 determines that the ideal output time F of the queue #i corresponding to the dequeue number i.i, 1And the ideal output time F of the other queue #k (k ≠ i)k, 1Is output to the minimum value selection unit 7, the bypass state (Si) corresponding to the dequeue number i is set to the ON state, and the bypass state (Sk) corresponding to the queue #k other than the dequeue number i is set to the OFF state. Will be.
[0073]
Next, the minimum value selection unit 7 is in the ideal output time Fi (excluding those bypassed to the merge control unit 8) input from the bypass control unit 6 (bypass control circuit 61-i). 2 outputs the queue number i of the ideal output time Fi having the smallest value and its value Fi. For example, as shown in FIG. 2, (n-1) comparators that selectively output the smaller value respectively. By comparing the ideal output times Fi with the tournament method 71, the ideal output time Fi having the smallest value is output.
[0074]
Then, the merging control unit 8 compares the ideal output time Fi bypassed by the bypass control unit 6 with the ideal output time Fi selected by the minimum value selection unit 7, thereby comparing the values. The smaller ideal output time Fi is selected, and the queue number i of the selected ideal output time Fi is sent to the queue management unit 2 (dequeue processing unit 23), intermediate result storage unit 4, and bypass control unit 6 as a dequeue instruction. Feedback time and output time F of the first packet whose value Fi was output immediately beforei, 0It is fed back and stored as (input value for the next calculation) in the intermediate result storage unit 41 (intermediate data storage unit 41-i).
[0075]
That is, when the first packet of a certain queue #i is dequeued, the packet scheduler 1 of the present embodiment has already been read from the intermediate result storage unit 4 to the post-calculation unit 5 by the pipeline processing. By bypassing the ideal output time Fi for the second packet calculated by the post-calculation unit 5 to the merge control unit 8 by the bypass control unit 6, the ideal output time Fi and other queues #k that have not been dequeued The ideal output time Fk for the first packet is input to the merging control unit 8 at the same timing so as to be compared in magnitude.
[0076]
As a result, in the merge control unit 8, even when the first packet is continuously dequeued from the same queue #i, the next packet after the first packet of the queue #k that has not been dequeued and the first packet of the queue #i that has been dequeued. The ideal output time comparison with the packet can always be performed every processing time (pτ) corresponding to one pipeline stage number. That is, it is possible to dequeue the first packet continuously from the same queue #i at the interval pτ.
[0077]
Hereinafter, the operation of the packet scheduler 1 of the present embodiment configured as described above will be described in detail. However, in the following description, for the sake of simplification of the description, for example, as shown in FIG. In FIG. 5, “Q1” represents queue # 1, “Q2” represents queue # 2, and “P1” represents information (intermediate data) of the head packet. That is, “Q1, P1” means information on the first packet in queue # 1, and “Q2, P1” means information on the first packet in queue # 2. The meanings of these symbols are the same in FIGS. 6 to 16 used later.
[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 queues # 1 and # 2 in the bypass control unit 6 are reset to the OFF state.
[0079]
In this state, if there are packets waiting to be transmitted in each of the queues # 1 and # 2 of the queue management unit 2, the enqueue processing of the queue management unit 2 is performed according to the system clock [certain time interval (pτ)]. The information of the first packet and the second packet of each queue # 1, # 2 is output from the unit 21 to the previous calculation unit 3, and the previous calculation unit 3 The value of β for the second packet is calculated, and the value of γ for the first packet is calculated.
[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 result storage unit 4 for each queue # 1 and # 2, respectively. ) And the second packet (P2) as a part of intermediate data. The intermediate result storage unit 4 sends a set of intermediate data for the first packet among the intermediate data for two packets held in each of the intermediate data storage units 41-1 and 41-2 to the subsequent calculation unit 5 in the subsequent stage. (See symbol S1). Note that for queue #i in an empty state where there is no packet, identification information indicating that there is no packet is sent and is not processed in the subsequent stages.
[0081]
Thereafter, the ideal output time F obtained for the first packet of each of the queues # 1 and # 2 through the calculation in the post-calculation unit 5 (F calculation units 51-1 and 51-2).1, F2Suppose that a set of arriving at the bypass control unit 6. Here, in this case, since the state variables Si in the bypass control unit 6 (bypass control circuits 61-1 and 61-2) are each in the OFF state, the bypass control unit 6 determines whether the ideal output time F arrived.1, F2(See state transition 65-4 shown in FIG. 4).
[0082]
That is, as shown in FIG. 7, with the constant time interval (pτ) as a trigger, the bypass control unit 6 arrives at the ideal output time F arrived at the queues # 1 and # 2 in the state variable Si = OFF state.1, F2Are respectively output to the minimum value selection unit 7 (see S2). On the other hand, since no dequeue instruction is generated in the intermediate result storage unit 4 at this time, a set of intermediate data for the same top packet as that sent last time is sent to the post-calculation unit 5 (see S3).
[0083]
Then, in the minimum value selector 7, the input ideal output time F1, F2Of these, the smaller ideal output time F1, F2(Temporarily, F1And output to the merge control unit 8. In parallel with this processing, the post-calculation unit 5 outputs the next set of intermediate data and inputs it to the bypass control unit 6 as shown in FIG. At this time, since the state variable S of any of the bypass control circuits 61-1 and 61-2 is in the OFF state, the arrived intermediate data sets are respectively stored in the corresponding temporary storage units 62 (reference numerals S4 and S4). (See state transition 65-4 shown in FIG. 4).
[0084]
On the other hand, the merge control unit 8 merges the output of the minimum value selection unit 7 and the output of the bypass control unit 6 and selects the smaller value. In this case, the merge control unit 8 is bypassed from the bypass control unit 6. Since there is no data coming, the ideal output time F input from the minimum value selection unit 71Is selected as it is (see S5). The dequeue instruction (DeQueueNo = 1) is fed back to the preceding stage (queue management unit 2, intermediate result storage unit 3, bypass control unit 6), and the selected ideal output time F1Are fed back to the intermediate result storage unit 4 for the next calculation.
[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 queue # 1 in the merge control unit 8.1Is selected, and the dequeue instruction (DeQueueNo = 1) is fed back to the queue management unit 2, the intermediate result storage unit 4, and the bypass control unit 6 (assuming that the first packet of queue # 1 is output to the output link) .
[0086]
Then, as shown in FIG. 10, the queue management unit 2 reads the information of the next (third) packet (P3) from the queue # 1 from the queue management table 221 and outputs it to the pre-calculation unit 3 (see S6). ). Further, the intermediate result storage unit 4 reads the intermediate data (Q1, P2) for the second packet of the queue # 1 as the intermediate data (Q1, P1) for the new head packet, and dequeue instruction (DeQueueNo = 1) ) And the intermediate data (Q2, P1) for the first packet of the queue # 2 other than the queue # 1 is output to the post-calculation unit 5 (see S7). At this time, the intermediate data (Q1, P2) for the second packet in the queue # 1 is stored in the temporary storage unit 62 as the intermediate data (Q1, P1) for the head packet (see S7 ').
[0087]
Further, in the bypass control unit 6, the ideal output time F stored in the temporary storage unit 62 corresponding to the queue # 1 in accordance with the dequeue instruction (DeQueueNo = 1).1(Invalidate; see FIG. 9), the state variable S corresponding to the queue # 1 is set to the ON state (see the state transition 65-2 shown in FIG. 4), and the ideal output time other than the queue # 1 F2Is output to the minimum value selector 7 (see S8). At this time, the state variables S other than the queue # 1 remain in the OFF state (see the state transition 65-3 shown in FIG. 4).
[0088]
Thereafter, as shown in FIG. 11, the ideal output time F for the first packet in the queue # 2 indicated by the above-described symbol S8.2Is input to the minimum value selection unit 7 and the minimum value is selected (see S9). On the other hand, at this time, the ideal output time F obtained based on the intermediate data (see reference numeral S7) read from the intermediate result storage unit 4 in FIG. 10 through the processing delay time in the post-calculation unit 5.1, F2Arrives at the input of the bypass control unit 6 (see S10).
[0089]
Then, as shown in FIG. 12, in the bypass control unit 6, since the state variable S corresponding to the queue # 1 is in the ON state, the arrived ideal output time F1Is stored in the temporary storage unit 62 (see reference numeral S11) and bypassed to the merging control unit 8 (refer to reference numeral S12, state transition 65-7 shown in FIG. 4). At this time, the ideal output time F for the first packet of the queue # 2 in the state variable S = OFF state2Is stored in the temporary storage unit 62 without bypassing (see reference numeral S13, state transition 65-4 shown in FIG. 4).
[0090]
In the merge control unit 8, the ideal output time F corresponding to the queue # 2 other than the queue # 1 sent from the minimum value selection unit 7.2And the ideal output time F for the first packet (originally the second packet) of the queue # 1 bypassed from the bypass control unit 61Select the smallest one of the items to output. Temporary output time F for the first packet in queue # 11Is selected, that is, when the dequeue instruction (DeQueueNo = 1) for the same queue # 1 is continuously generated, the following processing is performed according to the dequeue instruction (DeQueueNo = 1).
[0091]
That is, as shown in FIG. 13, first, the queue management unit 2 reads the information of the next (third) packet of the queue # 1 from the queue management table 221 and outputs it to the pre-calculation unit 3 (see S15). ).
On the other hand, in the intermediate result storage unit 4, the intermediate data (Q1, P2) relating to the second packet in the queue # 1 is transferred from the intermediate data storage unit 41-1 to the new first packet by the dequeue instruction (DeQueueNo = 1). As intermediate data (Q1, P1) in combination with intermediate data (Q2, P1) relating to the first packet of other queue # 2 (see S16) and the intermediate data (Q1) , P2) is stored as intermediate data (Q1, P1) for the new head packet (see S17).
[0092]
Further, the bypass control unit 6 (ideal output time F in the temporary storage unit 62 corresponding to the queue # 1 in accordance with the dequeue instruction (DeQueueNo = 1) described above.1) Is invalidated (see S18). At this time, the state variable S corresponding to the queue # 1 remains in the ON state (see state transition 65-5 shown in FIG. 4). On the other hand, the ideal output time F of the other queue # 22Is output to the minimum value selector 7 (see S19). At this time, since the dequeue number does not match, the state variable S corresponding to the queue # 2 remains in the OFF state (see state transition 65-3 shown in FIG. 4).
[0093]
Thereafter, the ideal output time F for the first packet of the other queue # 2 in the merge control unit 82Until the dequeue instruction (DeQueueNo = 2) is generated, the pipeline processing described above with reference to FIGS. 11 to 13 is repeatedly performed, and packets are continuously dequeued from the same queue # 1.
(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 merge control unit 8 performs the ideal output time F for the first packet in the queue # 1.1Than the ideal output time F for the first packet in queue # 22The operation when the dequeue instruction (DeQueueNo = 2) for queue # 2 is generated (see S14) will be described.
[0094]
That is, as shown in FIG. 14, in the merge control unit 8, the ideal output time F for the first packet in the queue # 22Is selected and output (see S19 ′), a dequeue instruction (DeQueueNo = 2) for the queue # 2 is fed back to the queue management unit 2, the intermediate result storage unit 4, and the bypass control unit 6, respectively.
Then, as shown in FIG. 15, the queue management unit 2 reads the information of the next (third) packet from the queue # 2 according to the dequeue instruction (DeQueueNo = 2) and outputs it to the precalculation unit 3 ( Reference S20). On the other hand, the intermediate result storage unit 4 reads the intermediate data for the second packet of the queue # 2 as the intermediate data for the new first packet of the queue # 2, and the intermediate data for the first packet of the other queue # 1. Are output to the post-calculation unit 5 (see S21), and the intermediate data for the first packet in the queue # 2 is stored as intermediate data for the first packet (see S22).
[0095]
At this time, in the bypass control unit 6, the data (ideal output time F) held in the temporary storage unit 62 of the bypass control circuit 61-2 corresponding to the queue # 2 by the dequeue instruction (DeQueueNo = 2).2) And the state variable S corresponding to the queue # 2 is set to the ON state (see the state transition 65-2 shown in FIG. 4). In the bypass control circuit 61-1 corresponding to the other queue # 1, since the dequeue numbers according to the dequeue instruction (DeQueueNo = 2) do not match, the state variable S remains in the OFF state and is held in the temporary storage unit 62. Data (ideal output time F1) To the minimum value selection unit 7 (see S23 and state transition 65-5 shown in FIG. 4).
[0096]
In this case, since there is no input from the bypass control unit 6 in the minimum value selection unit 7, the ideal output time F corresponding to the queue # 1 as shown in FIG.1Is output to the merging control unit 8 (see S24). On the other hand, at this time, after the processing delay time in the post-calculation unit 5, the ideal output time F for the next packet in the queues # 1 and # 2 output from the intermediate result storage unit 51, F2Arrives at the input of the bypass controller 6.
[0097]
In the bypass control unit 6, since the state variable S of the queue # 2 is in the ON state, the arrived ideal output time F2Is bypassed to the merging controller 8 (see S25). However, the ideal output time F bypassed at this time2Is stored in the temporary storage unit 62 (see state transition 65-7 shown in FIG. 4). Also, the ideal output time F corresponding to the queue # 1 in the state variable S = OFF state other than the queue # 21Is stored in the corresponding temporary storage unit 62 without being bypassed (see state transition 65-4 shown in FIG. 4).
[0098]
In the merging control unit 8, data from the minimum value selecting unit 6 (ideal output time F1) And data bypassed from the bypass control unit 6 (ideal output time F)2) Select the smallest one from among) and output. Note that the ideal output time F corresponding to the queue # 1 is assumed.1Next, the processing from FIG. 9 is performed, and the ideal output time F corresponding to the queue # 2 is processed.2Is selected again, the processing from FIG. 14 is performed.
[0099]
Here, when a dequeue instruction (DeQueueNo = 2) for queue # 1 is first generated and then a dequeue instruction (DeQueueNo = 1) for queue # 2 is generated, the operation in a time chart is shown in FIG. become that way. In FIG. 17, P1 represents the head packet of queue #i, and (Qi, n) Represents the data for the nth packet in queue #i when viewed continuously.
[0100]
That is, as a result of the comparison in the minimum value selection unit 7, the ideal output time F corresponding to the queue # 11Is selected and a dequeue instruction (DeQueueNo = 1) is generated (see arrows t1 and t2). At this time, the bypass control unit 6 already holds a set of intermediate data for the next head packet after the processing delay time in the post-calculation unit 5 (see arrow t3).
[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 bypass control unit 6, the ideal output time F corresponding to the queue # 11Is invalidated (it is overwritten with the data that arrives next by not outputting), while the ideal output time F other than queue # 12Is output to the minimum value selector 7 (see arrow t5).
[0102]
Further, in the intermediate result storage unit 4, in accordance with the dequeue instruction (DeQueueNo = 1), the intermediate data of the second packet (P2) for the queue # 1 is set as intermediate data for the new first packet, and the post-calculation unit 5 ( Output to the F calculation unit 51-1) (see arrow t6), while for the other queue # 2, the intermediate data for the same first packet (P1) is output to the subsequent calculation unit 5 (F calculation unit 51-2) (See arrow t7).
[0103]
Further, in the queue management unit 2, the information of the third packet (Q 1, P 3) of the queue # 1 is read from the queue management table 221 and output to the pre-calculation unit 3 in accordance with the dequeue instruction (DeQueueNo = 1). (See arrow t8).
Thereafter, the confluence control unit 8 has an ideal output time F corresponding to the queue # 2 for which there was no dequeue instruction (DeQueueNo = 1) from the minimum value selection unit 7.2Arrives (see arrow t9) and the ideal output time F for the second packet in queue # 1 obtained by the post-calculation unit 5 (F calculation unit 51-1).1Is the ideal output time F for the new first packet.1And bypassed by the bypass control unit 6 (see arrows t10 and t11).
[0104]
At this time, the calculation result by the previous calculation unit 3 for the third packet in queue # 1 has arrived at the intermediate result storage unit 4 (intermediate data storage unit 41-1) (see arrow t8 '). Also, the ideal output time F of the first packet of queue # 2 that is not bypassed2Is temporarily held by the bypass control unit 6 (see arrow t10 ').
The merging control unit 8 then arrives at each ideal output time F arrived.1, F2Select the smallest one of and output. This time, the ideal output time F2Is smaller, a dequeue instruction (DeQueueNo = 2) is generated (see arrow t12), and this is again performed by the bypass control unit 6 (bypass control circuits 61-1 and 61-2) and the intermediate result storage unit 4 (intermediate). The data storage units 41-1 and 41-2) and the queue management unit 2 are fed back (see arrow t13).
[0105]
Then, first, in the bypass control unit 6, this time, the ideal output time F corresponding to the queue # 2 is set.2Is invalidated (it is overwritten with the data that arrives next by not outputting), while the ideal output time F other than queue # 21Is output to the minimum value selector 7 (see arrow t14).
On the other hand, in the intermediate result storage unit 4, in accordance with the above dequeue instruction (DeQueueNo = 2), the intermediate data of the second packet (P2) for the queue # 2 is now post-calculated as intermediate data for the new first packet. On the other hand, for the other queue # 1, intermediate data for the same first packet (P1) is again transmitted to the post-calculation unit 5 (F-calculation unit 51-1). ) (See arrow t16).
[0106]
Further, in the queue management unit 2, the information of the third packet (Q 2, P 3) of the queue # 2 is read from the queue management table 221 and output to the pre-calculation unit 3 in accordance with the dequeue instruction (DeQueueNo = 2). (See arrow t17).
Thereafter, the merging control unit 8 has an ideal output time F corresponding to the queue # 1 for which there was no dequeue instruction (DeQueueNo = 2) from the minimum value selecting unit 7.1Arrives (see arrow t18) and the ideal output time F for the second packet in queue # 2 obtained by the post-calculation unit 5 (F calculation unit 51-2).2Is the ideal output time F for the new first packet.2And bypassed by the bypass control unit 6 (see arrows t19 and t20).
[0107]
At this time, the calculation result by the previous calculation unit 3 for the third packet in the queue # 2 has arrived at the intermediate result storage unit 4 (intermediate data storage unit 41-2) (see arrow t17 '), and bypassing is performed. In the control unit 6, the ideal output time F of the first packet of the queue # 2 that is not bypassed2Is temporarily held (see arrow t19 ').
The merging control unit 8 then arrives at each ideal output time F arrived.1, F2The smallest one is selected and a dequeue instruction (DeQueueNo = i) is output (see arrow t21). Thereafter, the same processing as described above is repeated according to the dequeue number.
[0108]
As described above, according to the packet scheduler 1 of the present embodiment, the intermediate result storage unit 4 always stores intermediate data for two packets of the first packet and the second packet, Since the intermediate data for the second packet of queue #i in which the dequeue instruction has occurred is output to the post-calculation unit 5 as intermediate data for the first packet, the information of the first packet of queue #k that has not been dequeued is dequeued The information of the second packet in queue #i can be input to the subsequent processing at the same time, and the processing delay of the queue management unit 2 and the previous calculation unit 3 can be hidden.
[0109]
Further, the bypass controller 6 bypasses the data (ideal output time Fi) obtained by the post-calculator 5 based on the intermediate data for the second packet of the dequeued queue #i to the merge controller 8. Since the data effective for comparing the ideal output times Fi of the respective queues #i can always be input to the merge control unit 8 at the processing time pτ interval corresponding to one pipeline stage number, the minimum value selection unit 7 Processing delay time can be hidden.
[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 unit 8 can always compare the ideal output time for every pτ for the first packet of the queue #k that has not been dequeued and the next packet of the queue #i that has been dequeued. The packet can be dequeued.
[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 result storage unit 4 and the ideal corresponding to the queue #i held in the bypass control unit 6 are displayed. Since each of the output times Fi is invalidated, it is possible to reliably avoid the occurrence of a dequeue instruction (DeQueueNo = i) with respect to a dequeued packet, and the reliability of this packet scheduler. It greatly contributes to the improvement.
[0112]
(B) Other
As shown in FIG. 18, the packet scheduler 1 described above has a plurality of interfaces (packet interfaces) 11-1 to 11-6 (packet interfaces) having different transfer rates to the network relay device (packet transfer device) 11 as the installation destination. When equipped with IF1 to IF6; 2.5 Gbps × 4, 10 Gbps × 2), as shown in FIG. 19, a plurality of pipeline processing stages (A1 to A4) capable of processing the above-described units 2 to 8 with 1τ. B1 to B4, C1 to C4) and, as shown in FIG. 20, in the time slot every 1τ, the shared memory 9 ′ (IF5 → IF1 → IF6 → IF2 → IF5 → IF3 → IF6 → IF4 etc. Pipeline processing may be performed on packets of different interfaces held in FIG. However, in this case, it is necessary to provide a flip-flop (FF) circuit or the like between the pipeline processing stages to control the pipeline processing synchronously.
[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 packet scheduler 1. Greatly contributes to the miniaturization and performance improvement.
In the above-described embodiment, both the intermediate result storage unit 4 and the bypass control unit 6 are provided. An improvement in processing speed (throughput) of about twice can be expected. Furthermore, in the above-described embodiment, the number of packets stored in the intermediate result storage unit 4 is “2”, but may be three or more.
[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. (Claims 4 and 5).
[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. .
JP2000374957A 2000-12-08 2000-12-08 Packet scheduler Expired - Fee Related JP4199414B2 (en)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005020523A1 (en) 2003-08-20 2005-03-03 Nec Corporation Session relay device and relay method

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