JP3872716B2 - パケット出力制御装置 - Google Patents
パケット出力制御装置 Download PDFInfo
- Publication number
- JP3872716B2 JP3872716B2 JP2002129149A JP2002129149A JP3872716B2 JP 3872716 B2 JP3872716 B2 JP 3872716B2 JP 2002129149 A JP2002129149 A JP 2002129149A JP 2002129149 A JP2002129149 A JP 2002129149A JP 3872716 B2 JP3872716 B2 JP 3872716B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- output
- queue
- output line
- dequeue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
- H04L49/505—Corrective measures
- H04L49/508—Head of Line Blocking Avoidance
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
- H04L49/505—Corrective measures
- H04L49/506—Backpressure
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の属する技術分野】
本発明は、パケットを格納する複数のキューをそなえたパケット出力制御装置に関し、特に、各キューに格納された先頭パケットの中から最も早く転送を完了することのできるパケットを効率良く選出して出力するパケット出力制御装置に関する。
【0002】
【従来の技術】
近年のADSL,CATV,FTTH等の急速な普及により、専用線をもたない一般家庭や企業まで高速なインターネット環境が提供されるようになり、従来の電子メールやファイル転送だけでなく、映画やニュース等の大容量の情報量をもったコンテンツの配信もインターネット上で広く行なわれるようになってきた。
【0003】
今後も、更に様々なアプリケーションが、IP(Internet Protocol)ネットワーク上に統合され、サービスが提供されていくものと思われる。このようなLANやインターネットを背景に、IPネットワークの中核を成すルータ装置(L3スイッチ)の市場規模は、今後さらに拡大していくと思われ、情報量の大容量化とともにその処理能力の向上も求められている。
【0004】
また、電子メール,FTP(File Transfer Protocol)によるファイル転送や動画・音声配信など、要求されるトラフィック特性(許容廃棄率や遅延等)の異なる種々のサービスをIPネットワークでストレスなく提供するためには、それぞれの品質を劣化させないように、ルータ機器等にてトラフィクフロー(ユーザが転送要求する複数の連続したパケット)に応じた優先制御や帯域制御を行なうQoS(Quality of Service)制御が必要である。
【0005】
例えば、FTPデータやWWW(World Wide Web)データのようなトラフィックデータに対しては、各フローのデータを最大限のリソース(主に、帯域幅)を利用し、高速且つ公平に転送することが重要視され、ルータ装置には、これらのフロー(あるいはフローの集合)毎に予約された帯域幅を、各フローに割り当てて保証するとともに、出力回線(出力リンク)において余ったリソースを、これらの各フロー間で公平に再配分する制御を、高速出力リンクに応じて高速処理することが要求される。
【0006】
これに対し、VoIP(Voice over IP)のような音声トラフィックデータに対しては、リンクの帯域幅を最大限且つ公平に利用するよりも、固定の転送レートを保証し、遅延ジッタを最小にすることが重要である。
ここで、QoS制御の仕組みを図45に示す。即ち、この図45に示すように、既存のQoS制御では、下記に示す各処理(1)〜(4)(図45中では、丸付き数字で示す)が実行される。
【0007】
(1)入力したIPパケットのIPアドレスやMAC(Media Access Control)アドレス及びToS(Type of Service)フィールドを参照して、入力パケットをアプリケーション毎のフローに分類(識別)する。
(2)識別したフロー番号に従って、入力パケットをキューに振り分ける(キューイング)。
【0008】
(3)各キューに設定された優先度や帯域に従って、キュー先頭のパケットの長さやキューイング時刻などを基に各キューの先頭パケットをデキューする順序やタイミングを計算(スケジューリング)する。
(4)スケジューリング結果に従って、各キューの先頭パケットをキューから読み出す(デキュー)。
【0009】
以上の処理により、キューに振り分けたフロー毎のQoS制御が可能となる。
さて、パケットスケジューリングに関しては様々なアルゴリズムがあるが、WFQ(Weighted Fair Queuing)やWRR(Weighted Round Robin)等が代表的であり、これらのうちWFQは可変長パケットに対して公平な帯域分配を行なう手法としては最適と考えられている。以下、このWFQのアルゴリズムについて説明する。
【0010】
或る固定帯域が予約されたキューの帯域制御の概念を図46に示す。ここで、キューの設定(予約)帯域をφ、スケジューリング対象となるキューの先頭パケットのパケット長をLとすると、そのパケットの送出完了に必要な時間はL/φで求められる。帯域制御は、このL/φによりパケットの出力完了予定時刻(スケジューリング評価値)Fを求め、タイマが示す現時刻Trが出力完了予定時刻Fを超えた時に、次のパケットの出力を許可するというものである。なお、送信完了予定時刻Fは以下の式(1)によって求められる。
【0011】
【数1】
【0012】
ここで、この式(1)において、Tiはフロー番号kのi番目のパケット到着時刻、Liはフロー番号kのi番目のパケット長を示し、max[Fi-1, Ti]は、前パケット送信完了予定時刻Fi-1とパケット到着時刻Tiとを比較し、大きい方を選択する処理を示す。
したがって、式(1)は、パケット到着時刻Ti<前パケット送信完了予定時刻Fi-1の場合は、図46中に丸付き数字1で示すように、パケット送信完了予定時刻FiがFi-1を基準に計算され、逆に、パケット到着時刻Ti ≧ 前パケット送信完了予定時刻Fi-1の場合は、図46中に丸付き数字2で示すように、パケット送信完了予定時刻Fiがパケット到着時刻Tiを基準に計算されることを意味する。
【0013】
そして、WFQでは、パケット到着時に、キューの先頭に存在する全てのフロー番号kのi番目のパケットに対して、以下の式(2)を計算し、スケジューリング評価値Fを算出する。
【0014】
【数2】
【0015】
ここで、この式(2)において、φkはフローkの予約帯域、φbはアクティブ状態のWFQのφkの合計(Σφk)、RはWFQの合計帯域をそれぞれ示す。なお、説明を簡単にするために、上記の式(2)を以下の式(3)に置き換える。
【0016】
【数3】
【0017】
そして、この式(3)におけるアクティブ状態キューの先頭パケットのα値を、常時、現タイマ値Trと比較し、Tr≧αとなるパケットの集合から最も小さなスケジューリング評価値(以下、単に「評価値」ともいう)Fをもつパケットを選択し出力する。したがって、直前パケットの転送に長時間を要したキューや、転送に長時間を要する先頭パケットのキューに対しては、パケット出力(デキュー)の優先順位が下がることになる。
【0018】
このようにして、WFQでは、パケット送信完了予定時刻Fiによるパケット出力順序の重み付け制御を行なって、キュー間の公平なパケット出力を実現するとともに、非アクティブキューに割り当てられている余剰帯域をアクティブキューに公平に割り当てて、リソースの有効利用を図り、アクティブキューのパケットをより高速に転送してサービスの向上を図っている。
【0019】
なお、上記のアクティブ状態とは、キューに少なくとも1つパケットが存在している状態を意味し、このように少なくとも1つパケットが存在するキューをアクティブキューと呼ぶ。そして、上記の式(3)におけるγ値はかかるアクティブ状態の変化によって、逐次、変化することになる。このため、評価値Fは、アクティブ状態が変化する度に、全てのキューについて評価値Fの再計算を行なう必要がある。
【0020】
例えば、図47に示すように、5本のキューに対してそれぞれ100Mbpsの帯域が予約され、それら5本中3本のキューにパケットが存在している場合(3本のキューのみがアクティブ状態の場合)、残り2本の空きキューに予約されている余剰帯域200Mbps分は3本のアクティブキューへ公平に分配され、それぞれ約167Mbpsとなり、その帯域に従った再スケジューリングが行なわれて出力回線へパケットが出力(デキュー)されることになる。
【0021】
【発明が解決しようとする課題】
従来、上述したWFQにおけるスケジューリング評価値の演算は、プロセッサを用いたソフトウェアによる処理が主流であった。しかし、ソフトウェアによる処理では、シーケンシャルな処理しか行なえず、特に、リアルタイムに変化するγ値を反映させる再計算に非常に時間がかかり、同一出力回線や同一キューの連続パケットを処理する能力(スループット)が出ないという課題があった。
【0022】
一方、スループット向上のために、ハードウェアによりスケジューリング評価値の演算を実現しようとすると、前記の式(2)に除算と乗算の演算が含まれるために、乗算器,除算器を用いる必要があり、回路規模が増大し、LSIやFPGA(Field Programmable Gate Array)への実装が困難であった。そのため、ハードウェアによりWFQを実現する場合でも、実装可能なキューの数が出力回線当たり数本程度に制限されてきた。
【0023】
また、出力回線が複数存在する場合には、それらの出力回線毎に専用のスケジューラを設け、出力回線毎に使用するスケジューラを選択して動作させるという構成を採ることが考えられるが、これをハードウェアにより実現しようとすると、さらに回路規模が増大し、LSIやFPGAへの実装は略不可能となってしまう。そこで、従来は、上記γ値による再計算を行なわないバーチャルクロック等のWFQの派生アルゴリズムを用いることで、前記γ値の再計算の演算量を削減する手法も考えられている。
【0024】
しかしながら、かかるバーチャルクロック等の派生アルゴリズムを導入すると、例えば特開2000-101637号公報にも記載されているとおり、パケット送信完了予定時刻Fの時間軸が実時間とは異なる独自のものとなってしまうので、パケットの出力順序制御を行なうスケジューラを、サービス(QoS)に応じて複数設けた場合、各スケジューラ間での最優先出力パケットの選択処理等、スケジューラ間の連携が困難になる。
【0025】
上記の特開2000-101637号公報により提案されている技術は、かかるバーチャルクロック等の派生アルゴリズムを導入することなく、前記γの再計算の演算量を削減できるようにしたものであるが、本公知技術を用いたとしても、複数の出力回線をもつ装置におけるWFQ(スケジューラ)を、装置規模を増大させることなく、LSIやFPGAへの実装が可能なものとして実現するのは困難であった。
【0026】
即ち、上記公知技術では、前記β値に大きな差の無いパケット同士の送信完了予定時刻Fは前記γ値が変動したとしてもそれらの大小関係が入れ替わる確率が低く、仮に入れ替わってもその時刻差は微小であることに鑑み、前記β値に大きな差の無い評価値Fの集合をクラスタとしてクラスタリングし、γ値の変動についてはクラスタの先頭ポインタが示す評価値Fに対してのみ反映させることで、γ値の変動による評価値Fの再計算をクラスタ数(M)分だけに抑えて演算量を削減することが行なわれる。
【0027】
しかし、かかるクラスタリングによるWFQは、β値の格差が比較的小さく、クラスタ数M<<キュー個数Nであるときに演算量を削減するには有効であるが、サービス別に数十kbps〜数百kbps又は数Gbpsとφの値が変化する場合には、β値の変動幅の自由度が制限される、もしくは、そのβ値の変動幅に対応させてクラスタ数を変更する必要がある。
【0028】
しかも、クラスタ内のγ値の変動は無視されるため、サービス品質に対してその誤差を許容できるクラスタ数の考察も必要になる。また、クラスタ内のポインタ管理のレイテンシがパケット長最小の連続パケット入力時におけるスケジューリングのボトルネックとなる。さらに、上記クラスタリングにより演算量を或る程度削減できたとしても、出力回線数が増えると、この場合も、スケジューラ数を増やす必要があるので、結局、LSIやFPGAへの実装は困難である。
【0029】
本発明は、以上のような課題に鑑み創案されたもので、多様化,大容量化するインターネットサービス等に対して、多くのサービス毎にクラス分けして制御可能であるキューの本数と高精度の帯域制御、及びスループットの飛躍的な向上が可能であり、且つ、ハードウェアによる実装が可能である、小型で処理能力に優れたパケット出力制御装置を提供することを目的とする。
【0030】
【課題を解決するための手段】
上記の目的を達成するために、本発明のパケット出力制御装置は、複数の出力回線毎に設けられた複数のキューと、入力されたパケットを当該パケットのフローに応じて該キューのいずれかにエンキューするエンキュー手段と、エンキュー手段により上記の各キューにエンキューされた各パケットについてのデキュー指示をスケジュールするパケットスケジューラと、パケットスケジューラからのデキュー指示によって指示されたキューからパケットをデキューするデキュー手段とをそなえるとともに、上記パケットスケジューラが、下記の各手段をそなえたことを特徴としている。
【0031】
(1)同一出力回線に属する各キューにエンキューされた先頭パケットに関する少なくとも到着時刻情報及びパケットサイズ情報を含む所定のパラメータに基づいて当該先頭パケットの送信完了予定時刻を示す評価値をそれぞれ所定の評価値演算式により並列演算する並列演算手段
(2)並列演算手段での演算対象とする出力回線を選択的(時分割)に指定して同一出力回線に属する各キューの先頭パケットについてのパラメータを該並列演算手段に入力させる演算制御手段
(3)並列演算手段で求められた同一出力回線に属する各キューの先頭パケットの評価値に基づいて優先出力すべき先頭パケットの評価値を選出する同一出力回線内キュー間調停手段
(4)同一出力回線内キュー間調停手段で選出された評価値を該出力回線毎に保持し、該出力回線毎の評価値と該出力回線の設定帯域とに基づいて優先出力すべき先頭パケットを決定する出力回線間調停手段
(5)出力回線間調停手段で決定した先頭パケットについてのデキュー指示を該デキュー手段に与えるデキュー制御手段
ここで、上記の演算制御手段は、上記の各出力回線の設定帯域に応じた割合で時分割に該並列演算手段での演算対象とする出力回線を指定する時分割演算回線指定部をそなえて構成されていてもよい。
【0032】
また、上記のパケットスケジューラは、入力パケットのパラメータに基づいて上記評価値演算式中で繰り返し演算が不要な項を予め全キューで共通化された前処理として演算し、当該演算結果を該並列演算手段での演算に用いられる中間変数として該並列演算手段に入力する前処理部をそなえていてもよい。
【0033】
さらに、上記のパケットスケジューラは、同一出力回線に属する各キューうちパケットの存在しないキューに割り当てられている帯域を、パケットの存在する同一出力回線に属する他のキューに配分する帯域配分率を算出する帯域配分率算出手段をさらにそなえ、上記の並列演算手段が、上記の帯域配分率算出手段で算出された同じ帯域配分率に基づいて、上記の各評価値を再計算するように構成されていてもよい。
【0034】
また、上記のパケットスケジューラは、上記複数の出力回線のうち同一パケットを配信すべき複数の出力回線を指定する配信先情報を保持する配信先情報保持手段と、この配信先情報保持手段に保持された配信先情報によって指定されている出力回線が上記演算制御手段によって指定される毎に、上記の並列演算手段で求められる同一キューについての評価値が、上記出力回線間調停手段での選定候補として当該出力回線間調停手段に入力されるように出力制御する配信制御手段とをそなえていてもよい。
【0035】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
(A)本発明の一実施形態の説明
図1は本発明の一実施形態としてのパケット出力制御装置の全体構成を示すブロック図で、この図1に示すパケット出力制御装置1は、フレームメモリ2,変換テーブル3,キュー管理部4,パケットスケジューラ5,メモリ制御部6及びタイムスタンプ部7をそなえて構成されている。
【0036】
ここで、フレームメモリ2(以下、単に「メモリ2」と略記することがある)は、キューを構成する物理メモリで、キューイングするパケットデータの本体が本メモリ2に格納されるようになっている。また、変換テーブル3は、入力パケットの宛先IPアドレス等のヘッダ情報を基にフロー識別を行ない、その識別結果に応じて入力パケットを適切なキューへ振り分けるためのもので、一般的に、CAM(Content Addressable Memory)等を用いて構成される。
【0037】
さらに、キュー管理部4は、キュー毎にパケット情報を論理的にリンクし、パケットデータのフレームメモリ2内でのポインタを決定・管理するとともに、エンキューポインタ及びデキューポインタをメモリ制御部6に与えて、入力パケットのエンキュー及びデキューを制御するものである。
パケットスケジューラ(以下、単に「スケジューラ」ともいう)5は、キューの先頭パケットのスケジュールパラメータ(後述)に基づいて、デキューすべきパケットの順番及びタイミングを計算(スケジュール)するもので、そのスケジュール結果に従って次にデキューすべき先頭パケットのキュー番号がキュー管理部4に通知されるようになっている。
【0038】
メモリ制御部6は、キュー管理部4からエンキュー又はデキューするパケットのポインタ(アドレス)を受信し、そのポインタが示すフレームメモリ2のアドレスに対するパケットの書き込み/読み出し制御を行なうためのものである。
つまり、このメモリ制御部6と上記のキュー管理部4とで、入力パケットをそのパケットのフローに応じて複数のキューのいずれかにエンキューするエンキュー手段と、パケットスケジューラ5からのデキュー指示によって指示されたキューからパケットをデキューするデキュー手段としての機能が実現されていることになる。
【0039】
タイムスタンプ部7は、キューにエンキューするパケット毎に、その到着時刻を付加するためのものである。
上述のごとく構成されたパケット出力制御装置1での処理の流れは、次のようになる。
(1)入力パケットに、タイムスタンプ部7が到着時刻を付加する。
【0040】
(2)入力パケットのヘッダ情報,パケットサイズ,到着時刻を変換テーブル3に入力してフロー識別を行ない、適切なキュー番号を得る。
(3)キュー管理部4にてパケット情報を指定キューにリンクし、エンキューパケット本体のフレームメモリ2への格納(エンキュー)ポインタをメモリ制御部6に出力して書き込み指示を与える。
【0041】
(4)メモリ制御部6は、キュー管理部4から受信したエンキューポインタが示すフレームメモリ2のアドレスに入力パケットデータ本体を書き込む。
(5)キュー管理部4は、エンキューしたパケットがキューの先頭であった場合、そのパケットのスケジュールパラメータをスケジューラ5へ入力する。
(6)スケジューラ5は、各キューの先頭パケットのスケジュールパラメータを基に、スケジューリング処理(スケジューリング評価値Fの演算)を行ない、デキューすべきパケットの順序およびタイミングを決定して、デキューすべきキュー番号をキュー管理部4に出力する。
【0042】
(7)キュー管理部4は、スケジューラ5から受信したキュー番号の先頭パケットが存在するポインタ(デキューポインタ)をメモリ制御部6に出力してパケットの読み出し指示を与える。
(8)この際、キュー管理部4は、パケット情報のリンク構造の操作(更新)を行ない、当該キューにおいてデキューされるパケットに続いてパケットが存在する場合は、そのパケットを新たな先頭パケットとみなして、そのパケットのスケジュールパラメータをスケジューラ5へ送出する。
【0043】
(9)メモリ制御部6は、キュー管理部4から受信したデキューポインタが示すメモリ2のアドレスに書き込まれているパケットデータを読み出す。
以上のようにして、パケット出力制御装置1においても、スケジューラ5にて、各キューの先頭パケットについてそれぞれスケジューリング評価値Fの演算を行ない、その評価値Fを基にデキューすべきパケットの順序及びタイミングがスケジュールされるわけであるが、1000本を超えるような膨大な数のキューに対応した全並列化は実質不可能なので、本実施形態のスケジューラ5では、評価値演算対象の出力回線を時分割に切り替えることで、同一出力回線に属する各キューの先頭パケットについての評価値Fの並列演算を、全出力回線間で共通に行なえるようになっている。
【0044】
(A1)パケットスケジューラの詳細説明
以下、本実施形態の要部であるスケジューラ5の詳細について説明する。
図2及び図3はいずれも上記のパケットスケジューラ5の構成を示すブロック図であるが、これらの図2及び図3に示すように、本実施形態のスケジューラ5は、前処理部51,演算制御部52,先頭パケットメモリ53,γ演算部54,並列演算部55,選択部56,シェーピング部57,ポート間調停部58,デキュー制御部59及びタイマ60等をそなえて構成されている。
【0045】
また、先頭パケットメモリ53には、複数の出力回線(ポート)#1〜#M毎にそれぞれ複数のフロー(ここでは、n)に対応して設けられたキュー#j−1〜#j−n(ただし、jは1〜M)が設けられ、並列演算部55には、各キュー#j−1〜#j−nに対応して複数のスケジューリング評価値演算器55−1〜55−nが設けられ、シェーピング部57には、出力回線#1〜#Mに対応して複数の出力回線シェーピング回路57−1〜57−Mが設けられている。
【0046】
そして、この図2及び図3に示すスケジューラ5では、概略して、次のような処理が実行される。
即ち、まず、前処理部51において、スケジュール演算の中間変数βが求められ、これがキュー#j−k(k=1〜n)毎に先頭パケットメモリ53に他のスケジュールパラメータ(到着時刻Ti等)と共に格納される。そして、演算制御部52において所定のタイムスロット毎にスケジューリングを行なう演算対象の出力回線#jが決定され、それに従って先頭パケットメモリ53から同一出力回線#jに属する各キューの先頭パケットについてのスケジュールパラメータの組が同時(並列)に読み出されて、並列演算部55の各スケジューリング評価値演算器(以下、単に「演算器」という)55−1〜55−nへ入力される。
【0047】
各演算器55−1〜55−nでは、スケジューリング評価値F1〜Fnがパイプライン制御で求められ、後述する評価値有効フラグと共に選択部56へ出力される。選択部56は、有効な演算器55−kの出力の中からスケジューリング評価値の最小値(当該出力回線#jへ優先出力すべきパケット)を選出して、シェーピング部57の出力回線シェーピング回路57−jに出力回線#j別に格納する。
【0048】
そして、シェーピング部57は、出力回線シェーピング回路57−jでの後述するシェーピング処理により、出力回線#jの設定帯域に応じた処理オーバーフロー及びパケットバースト出力制御のための評価値の補正を行なった上で、補正後の評価値をポート間調停部58へ出力し、ポート間調停部58では、出力回線#j間での評価値の最小値選択を行なってデキュー制御部59に出力する。
【0049】
これにより、デキュー制御部59は、ポート間調停部58で選出された評価値に対応するキュー#j−kに対するデキュー指示を発生してキュー管理部4へ出力するとともに、そのキュー番号をキュー識別信号として前処理部51,演算制御部52,並列演算部55,シェーピング部57,ポート間調停部58及びデキュー制御部59へそれぞれフィードバックする。なお、このフィードバック信号は、後述するようにパイプライン処理上の同一評価値更新に用いられる。
【0050】
以下、上述した各部の機能についてより詳細に説明する。
まず、先頭パケットメモリ53は、図3に示すように、キュー管理部4から受信される、入力パケットのパケットサイズ情報や到着時刻情報等のスケジュールパラメータを上述のごとく出力回線(ポート)#1〜#M毎にそれぞれ複数のフローに対応して設けられたキュー#j−1〜#j−nにより保持・管理するものである。
【0051】
そして、この先頭パケットメモリ53は、本実施形態では、図8により後述するように、各演算器55−1〜55−n用の先頭パケットメモリ53−1〜53−nをそなえて構成され、これらの先頭パケットメモリ53−1〜53−nに、出力回線#1〜#M別に各キュー#j−kのスケジュールデータが格納されるようになっている。
【0052】
なお、これらの先頭パケットメモリ53−1〜53−nには、後述するように、先頭パケットを含む連続する複数パケットについてのスケジュールパラメータが格納される。また、本先頭パケットメモリ53(53−1〜53−n)は、例えば、RAM等を用いて構成される。
また、並列演算部55は、各キュー#j−1〜#j−nと1対1に対応付けられたn個の演算器55−1〜55−nにより、同一出力回線#j内の全キュー#j−1〜#j−nのスケジューリング評価値F1〜Fnを、それぞれ、下記に示すWFQ演算式(4)により、所定の1タイムスロット内で同時に(並列に)演算するようになっている。
【0053】
【数4】
【0054】
つまり、本実施形態のスケジューラ5は、所定のタイムスロットによって演算対象とする出力回線#jを切り替える、つまり、先頭パケットメモリ53から読み出す各キュー#j−1〜#j−nの先頭パケットのスケジュールパラメータの組を切り替えることで、各出力回線#1〜#M間で各演算器55−1〜55−nを共有する構成になっているのである。
【0055】
そして、上記のタイムスロットの割り当て、即ち、スケジュールパラメータ読み出し対象の出力回線#jの時分割指定(以下、「時分割演算回線指定」ともいう)を制御するのが、上記の演算制御部(時分割演算回線指定部)52であり、本実施形態では、例えば、図5に示すような演算出力回線テーブル521に基づいて上記時分割演算回線指定が行なわれるようになっている。
【0056】
即ち、回線組み合わせ毎の16ステップ〔タイムスロット(TS)〕を1サイクル(所定周期)とした場合、演算制御部52は、例えば、図5中に丸付き数字1で示す1Gbps x16本(回線#1〜#16:図5では単に回線1〜16と表記している)の出力回線設定であれば全出力回線に対する割り当ての機会は同じであるので、デキュー制御部59からのフィードバック情報(デキュー識別信号:デキュー指示が発生したキューを識別するための情報)を受信する毎に、1タイムスロット(TS)=1回線の割合で演算ポートを決定することになる。
【0057】
これに対し、図5中に丸付き数字2で示す1Gbps×8本(回線#1〜回線#8),10Gbps×1本(回線#9)の組み合わせでは、8Gbps:10Gbps=4:5であるが、簡略化して、回線#1:回線#2:回線#3:回線#4:回線#5:回線#6:回線#7:回線#8:回線#9=1:1:1:1:1:1:1:1:8の割合で演算ポートが演算制御部52によって決定されることになる。同様に、図5中に丸付き数字3〜5で示す設定の場合も、出力回線#jの設定帯域が大きいものほど、その設定帯域に応じて1サイクル内でのタイムスロット割り当ての機会が多くなるように、演算ポートが演算制御部52によって決定される。
【0058】
なお、この演算ポートの割り当てにおいて、演算制御部52は、例えば図6に示すように、出力回線#j毎に、先頭パケットメモリ53からのパケット有無判定フラグ(図4参照)によってアクティブ回線/ノンアクティブ回線の判定を行ない、次ステップの回線#j+1がノンアクティブである場合にはアクティブな回線#jまで遷移して、演算ポートを指定する処理を行なう。
【0059】
以上のような出力回線#j毎の設定帯域に応じた演算ポート切り替えを行なうことで、設定帯域の大きな出力回線#jに属するキュー#j−k(k=1〜n)に対するデキュー指示を出力できる間隔を、設定帯域の小さな他の出力回線#p(ただし、p=1〜Mで、p≠j)に属するキュー#p−kに対するデキュー指示の間隔よりも狭くすることができ、設定帯域の大きな出力回線#jほど、スループットを向上することができる。
【0060】
例えば図7に示すように、(1)(図7中では、(1)〜(7)を丸付き数字で示す)回線A,B,Cの出力帯域比をA:B:C=2:1:1として演算ポート切り替えを行なったとすると、(2)先頭パケットメモリ53からのスケジュールパラメータ読出,演算器55−kでの(3)α値選択及びβ×γ演算処理,(4)評価値F(α+β×γ)の有効判定処理,(5)選択部56での最小評価値Fの選出処理及び(6)シェーピング部57でのシェーピング処理から成るパイプライン処理上に存在するパケット情報の割合が、出力回線帯域が大きいほど多くなり、その結果、(7)ポート間調停部58でのデキューバスシェーピング処理では、回線Aに属するキューに対するデキュー指示の発生間隔が、回線Cに属するキューに対するデキュー指示の発生間隔よりも短くなり、回線Aのスループットが向上するのである。
【0061】
ところで、上記の各演算器55−kの構成であるが、前記の評価値演算式(4)による演算機能を実現するために、例えば図4に示すような構成を有している。即ち、各演算器55−kは、α選択回路551,出力判定回路552,セレクタ553,乗算器554及び加算器555をそなえて構成されている。なお、この図4において、61は前回の評価値演算結果Fi-1を出力回線#j毎に保持する前評価値メモリを示すが、図2及び図3においてはその図示を省略している。
【0062】
ここで、α選択回路551は、先頭パケットメモリ53から読み出されたパケット到着時刻Tiと、前評価値メモリ61に出力回線#j毎に保持された前回の評価値演算結果Fi-1とを比較して、値の大きい方を選出することにより、前記の評価値演算式(4)におけるmax{Fi-1, Ti}(フロー番号kを表す添え字は省略)を求めるものである。なお、前評価値メモリ61からの前回の評価値演算結果Fi-1の読み出しは、演算制御部52が演算ポート指定信号を読み出しアドレスとして指定することによって行なわれる。
【0063】
また、出力判定回路552は、デキュー制御部59によるデキュー指示の発生毎に、先頭パケットメモリ53から上述した演算ポート切り替えに併せて出力回線#j毎の状態(パケットの有無)を表すパケット有無フラグと、タイマ60からの現時刻情報Trとに基づいて、最終的に加算器555で求められる評価値Fiの有効/無効を判定して、その判定結果を出力するもので、ここでは、タイマ60の現在時刻Tr>評価値Fiであれば「有効」を表すフラグが出力されるようになっている。なお、この評価値有効フラグが「無効」を示している評価値Fiは後段の選択部56での調停対象外となる。
【0064】
さらに、セレクタ553(帯域配分率選択手段)は、WFQ/固定切り替え設定に応じて、γ演算部54で求められた前記の評価値演算式(4)におけるγ値(余剰帯域の帯域再配分率)と固定値〔固定帯域配分率(γ=1)〕とを選択的に出力するもので、WFQによる帯域制御(余剰帯域の再配分)を行なう場合にはγ演算部54の出力を選択し、余剰帯域の再配分を行なわない固定帯域制御を行なう場合には固定値γ=1を選択して、乗算器554へ出力するようになっている。なお、上記の評価値演算式(4)においてγ=1とすると、
【0065】
【数5】
【0066】
となる。また、上記の固定値γ=1は、レジスタ等(固定帯域制御手段)に設定・保持される。
このように、演算器55−k毎に、WFQ/固定帯域キューの設定を行なうことにより、出力回線#j毎に、WFQによる帯域制御と固定帯域制御との構成比を任意に変更することが可能となり、出力回線#j毎に様々な帯域制御が可能となる。なお、かかるWFQ/固定帯域キューの設定は、例えば図35に示すように、各演算器55−kに、出力回線#j毎にWFQ/固定帯域キューの設定情報を保持する設定レジスタ556をもたせ、演算制御部52からの出力回線指定に従って該当設定情報をWFQ/固定帯域キュー切り替え信号としてセレクタ553に入力することで行なえる。
【0067】
例えば、回線A,B,C,Dの4回線について設定レジスタ556に「固定帯域制御」の設定情報を設定したとすると、図36に示すように、回線A,B,C,Dが演算対象として演算制御部52により指定された場合は、γ=1がセレクタ553により選択され、それ以外の回線についてはγ演算部54で再計算されたγ値が選択されることになる。
【0068】
次に、図4に示す乗算器554は、上記セレクタ553の出力と先頭パケットメモリ53から読み出された中間変数βとを乗算することにより、前記の評価値演算式(4)におけるβ×γの項を求めるものであり、加算器555は、この乗算器554で求められたβ×γと、上述したα選択回路551で選択されたαとを加算することにより、前記の評価値演算式(4)で表される評価値Fi(=α+β×γ)を求めるものである。
【0069】
なお、上記の中間変数β(=Li/φi)は、パケット長Liとキュー#j−kの設定帯域φiによって求まり、設定帯域φiは時間による変化がないものと定義すると、デキュー指示発生毎の繰り返し演算は不要である。そこで、本実施形態においては、前処理部51において、中間変数βを前処理として各キュー#j−kに共通で演算し、その結果を、同一出力回線#jの各キュー#j−kの先頭パケットに関するスケジュールパラメータ(到着時刻Ti,パケット長Li)とともに同一タイムスロットで読み出されるように先頭パケットメモリ53に保持させるようにする。
【0070】
即ち、例えば図8に示すように、先頭パケットメモリ53を、それぞれ出力回線#j別に各キュー#j−kの先頭パケットを保持する演算器53−k用の先頭パケットメモリ53−1〜53−nにより構成し、前処理部511において、キュー#j−k毎に予め設定帯域φiが保持されたφ設定テーブル511から、キュー管理部4から通知されるキュー番号をアドレスとして該当キュー#j−kの設定帯域φiを読み出し、この設定帯域φiを除算器512にて同じくキュー管理部4から通知されるパケット長Liで除算することにより中間変数βを求め、これを、同一出力回線#jに属する各キュー#j−kの先頭パケットについての中間変数として各演算器53−kに保持させるようにするのである。このようにして、中間変数βの演算を前処理部51で出力回線#j間で共通に行なうようにすることで、回路規模の削減を図ることが可能である。
【0071】
さて次に、図2及び図4に示すγ演算部(帯域配分率算出手段)54は、前記の評価値演算式(4)におけるγを求めるものであるが、本実施形態では、得られたγ値を各演算器55−kでの同一出力回線#jに属する各キュー#j−kについての評価値演算に同時に反映させるようになっている。そして、その構成は、例えば図9に示すように、γ演算制御部541,φ設定テーブル542,φ加減算器543,セレクタ544,R設定テーブル545,セレクタ546及び除算器547をそなえて構成されている。
【0072】
ここで、上記のφ設定テーブル542は、キュー#j−k毎の設定帯域φiを保持するものであり、φ加減算器543は、γ演算制御部1からの加減算指示信号に従って、このφ設定テーブル542から読み出されるφi値によりそれまでのφi値の累積値φb(アクティブキューの設定帯域の合計)についての加減算処理を出力回線(以下、単に「回線」ともいう)#j別に行なうもので、このために、図10及び図11に示すように、それぞれ加減算器5431とレジスタ5432とをそなえて成る回線#j毎のφb累積器543−1〜543−Mを有して構成されている。
【0073】
また、セレクタ544は、演算制御部52からの演算タイムスロット割り当てにより演算対象である回線#jについて上記φ加減算器543(累積器543−j)で求められた累積値φbを選択出力するものであり、R設定テーブル545は、出力回線#j毎の設定帯域R(=同一出力回線#j内キュー#j−kの設定帯域φiの合計)を保持するものであり、セレクタ545は、セレクタ544と同様に、演算制御部52からの演算タイムスロット割り当てにより演算対象である回線#jについてのR値を選択出力するものである。
【0074】
さらに、除算器547は、セレクタ544で選択されたφbを、セレクタ546で選択されたR値で除算することによりγ値を求めるもので、このようにして得られたγ値が回線#j毎の余剰帯域の再配分率として各演算器55−kに入力されて、そのγ値(再配分率)による前記評価値演算式(4)の再計算が演算対象回線#jの全キュー#j−kに対して同時に行なわれ、各キュー#j−kの先頭パケットについての評価値Fiに同時に反映される。
【0075】
そして、γ演算制御部541は、エンキュー又はデキューのイベント発生毎に、該当キュー#j−kのパケット有無判定(つまり、アクティブキュー/ノンアクティブキューの判定)を行ない、φ加減算器543に対して、図12に示すフローチャートに従った回線#j毎の加減算指示信号を出力することにより、エンキュー及びデキュー発生毎に、そのときのアクティブキュー数に応じた累積値φb(アクティブキューの合計予約帯域)の更新を行なうものである。
【0076】
なお、各キュー#j−kのパケット有無判定は、本実施形態では、キュー管理部4がそなえるパケット数カウンタ(図示省略)ではなく、先頭パケットメモリ53(53−k)におけるパケットの有無により判定を行なう。これは、図25〜図30により後述するようなキュー管理部4による連続パケットの管理により、常に、先頭パケットメモリ53にパケットが存在するようになっているため、先頭パケットメモリ53の状態を監視すれば、キュー#j−k上のパケット有無判定が可能なためである。
【0077】
さて、γ演算制御部541の動作であるが、γ演算制御部541は、スケジューラ5に入力があるか否かを監視するとともに(ステップS1)、デキュー制御部59によりデキュー指示が発生したか否かを監視しており(ステップS6)、例えば、スケジューラ5にキュー番号の入力があると(ステップS1でYESと判定されると)、φ設定テーブル542に対してφiの読み出しアドレスを与えて、入力キュー番号に対応する演算対象のキュー#j−kについてのφiを読み出す(ステップS2)。
【0078】
そして、γ演算制御部541は、該当キュー#j−kの先頭パケットメモリ53(53−k)が空き状態であるか否かを確認し(ステップS3)、空き状態であれば(ステップS3でYESと判定されれば)、デキュー制御部59による同一キュー#j−kへのデキュー指示が同時発生しているか否かをさらに確認し(ステップS4)、デキュー指示が同時発生していなければ(ステップS4でNOと判定されれば)、エンキュー指示の発生であるから、エンキュー指示の発生した回線#j−kの累積器543−jの加減算器5431に対して設定帯域φiの加算指示を与えて、レジスタ5432に保持されている累積値φbにφ設定テーブル542から読み出されたφi値を加算させる(ステップS5)。
【0079】
なお、上記の処理において、スケジューラ5への入力が無い場合(ステップS1でNOの場合)や、該当キュー#j−kの先頭パケットメモリ53(53−k)が空き状態でない場合(ステップS3でNOの場合)、γ演算制御部541は、引き続き、スケジューラ5への入力の有無,デキュー指示の発生の有無の監視を行なう。また、同一キュー#j−kに対するエンキュー指示とデキュー指示とが同時発生した場合(ステップS4でYESの場合)も、当該キュー#j−kのパケット数に変わりがないから、γ演算制御部541は、監視動作を継続する。
【0080】
これに対して、デキュー制御部59によるデキュー指示が発生した場合(ステップS6でYESの場合)、γ演算制御部541は、上記のステップS2と同様に、入力キュー番号に対応する演算対象のキュー#j−kについての設定帯域φiを読み出し(ステップS7)、そのキュー番号に対応する先頭パケットメモリ53(53−k)に格納されているパケットが残り1パケットであるか否かを確認する(ステップS8)。
【0081】
その結果、パケットが残り1パケットであると(ステップS8でYESと判定されると)、γ演算制御部541は、さらに、同一キュー#j−kに対するエンキュー指示が同時発生しているか否かを確認し(ステップS9)、エンキュー指示が発生していなければ(ステップS9でNOと判定されれば)、デキュー指示の発生した回線#j−kに対応する累積器543−jの加減算器5431に対して設定帯域φiの減算指示を与えて、レジスタ5432に保持されている累積値φbにφ設定テーブル542から読み出されたφi値を減算させる(ステップS10)。
【0082】
なお、この場合も、デキュー指示が発生していない場合(ステップS6でNOの場合)や、該当キュー#j−kの先頭パケットメモリ53(53−k)に2以上のパケットが残っている場合(ステップS8でNOの場合)、γ演算制御部541は、監視動作を継続する。また、同一キュー#j−kに対するデキュー指示とエンキュー指示とが同時発生した場合(ステップS9でYESの場合)も、当該キュー#j−kのパケット数に変わりがないから、γ演算制御部541は、監視動作を継続する。
【0083】
以上のようにして、γ演算部54では、エンキュー及びデキューの発生毎に、そのエンキュー及びデキューのキュー番号情報を基に、該当キュー#j−kの設定帯域φiがφ設定テーブル542から読み出されて、その設定帯域φiによる累積値φbの更新が行なわれ、更新後の累積値φbに基づいてγ値が再計算される。そして、このγ値が各演算器55−kにそれぞれ入力されることにより、同一出力回線#jに属する各キュー#j−kの先頭パケットについての評価値Fiに同時に反映されるのである。
【0084】
このように、γ値(再配分率)の計算を回線#j間で共通化することにより、回路規模の削減を図ることが可能である。
さて次に、図2及び図3に示す選択部(同一出力回線内キュー間調停手段)56は、上述した各演算器55−1〜55−nで求められた各評価値F1〜Fnの中から最小の評価値(優先出力すべき評価値)を選出するものである。例えば図13に示すように、キューa,b,c,dの先頭パケットの到着時刻がそれぞれTai,Tbj,Tck,Tdm(Tai<Tbj<Tck<Tdm)であり、キューa,b,c,dの前回の先頭パケットについての評価値(送信完了予定時刻)がそれぞれ、Fai-1(<Tai),Fbj-1(<Tbj),Fck-1(<Tck),Fdk-1(>Tdk)であったとする。
【0085】
すると、この場合、キューa,b,cについては、それぞれ、前回の送信完了予定時刻よりも到着時刻の方が遅い(Fai-1<Tai,Fbj-1<Tbj,Fck-1<Tckの関係にある)ので、前記のα値はそれぞれ到着時刻Tai,Tbj,Tckが基準となり、キューdについては、逆に、前回の送信完了予定時刻よりも到着時刻の方が早い(Fdk-1>Tdkの関係にある)ので、前記のα値は前回の送信完了予定時刻Fdk-1が基準となって、それぞれについての今回の送信完了予定時刻Fai,Fbj,Fck,Fdm(Fai<Fbj<Fck<Fdm)が演算器55−kで求められることになる。
【0086】
したがって、図13の場合、キューa≧キューb≧キューc≧キューdの優先順位で選出が行なわれることになる。ただし、この図13の場合、キューdについてのα値がタイマ60の計時値(Timer値)よりも大きい(α<Timer値)ので、キューdについての出力は許可されない。つまり、この場合は、キューa,b,c間でのみ出力調停が行なわれ、Fai<Fbj<Fckであるので、キューa≧キューb≧キューcの優先順位で選出が行なわれることになる。
【0087】
なお、本選択部56の調停アルゴリズムは、図20(A)及び図20(B)により後述するポート間調停部58の調停アルゴリズムと同様である。
次に、シェーピング部57の出力回線シェーピング回路57−jは、それぞれ、上述のごとく選択部56により選出された評価値Fを出力回線シェーピング回路57−1〜57−Mにより出力回線#j別にバッファリングして、各出力回線#jの設定帯域に応じたシェーピング処理を行なうもので、本実施形態では、例えば図14に示すように、シェーピング制御部571とパケット情報レジスタ572とをそなえて構成され、シェーピング制御部571は、例えば図15に示すように、さらに、出力判定値演算回路571−1,出力判定回路571−2及びバースト制御回路571−3をそなえて構成されている。
【0088】
ここで、上記のシェーピング制御部571は、回線#j毎の設定帯域に応じた出力帯域のシェーピング制御を行なうものであり、パケット情報レジスタ572は、同一回線#jに属する各キュー#j−kの先頭パケットについてのスケジューリング結果(評価値F)を保持するものである。
そして、シェーピング制御部571において、出力判定値演算回路571−1は、デキュー制御部59による出力回線#jのデキュー発生時に、下記式(6)によって、出力判定値Ci(評価値Fの補正値)の演算を行なうものである。
【0089】
【数6】
【0090】
なお、この式(6)において、Ci はパケット出力完了予定時刻、Ci-1は前パケット出力完了予定時刻、SEL{Ci-1,Timer}はCi-1とTimer値のいずれかの選択、Li はデキューパケット長、Rは出力回線設定帯域をそれぞれ表す。
このため、本出力判定値演算回路571−1は、例えば図16に示すように、セレクタ5711,除算器5712,加算器5713及びレジスタ(R)5714をそなえて構成され、セレクタ5711により上記式(6)の第1項〔SEL{Ci-1,Timer}〕の機能が実現され、除算器5712により上記式(6)の第2項(Li/R)の演算が実現され、加算器5713により上記式(6)の第1項及び第2項の加算機能が実現されている。なお、レジスタ5714は、セレクタ5711の出力をラッチするためのものである。
【0091】
そして、出力判定回路571−2は、上記の出力判定値Ci<Timer値となった時に、次パケットについての出力判定(許可)信号をアサートする処理を行なうものである。この出力判定信号により出力許可されていない(ディゼーブルの)出力判定値Ciは、後段でのポート間調停部58での最小値選択処理から除外されることになる。なお、上記出力判定信号は、出力パケットが無い場合と、後述するデキュー制御部59からのフィードバック出力(マスク指示信号)によってもディセーブルされる。
【0092】
図17にシェーピング処理の概念を示す。或る先頭パケット(パケット番号“0”)についてデキューが発生した場合、まず、出力判定値演算回路571により、下記に示す式(7)により、出力判定値C0が演算される。
【0093】
【数7】
【0094】
ただし、ここでは、パケット番号“0”のパケットは前パケットが無効であるか、もしくは、後述するバースト制御回路571−3によるバースト制御により、デキュー時のTimer値(D0)がSEL{Ci-1,Timer}の項(セレクタ5711)において選択されているものとする。
そして、タイマ60のTimer値(現在時刻)<C0である時は、次パケットの出力が出力回線シェーピング回路57−j(パケット情報レジスタ572)にバッファリングされていてもそのデータ出力は許可されず(該当回線#jの出力判定フラグが「無効」)、図17に示すように、Timer値≧C0の条件で、次パケットについてのデータ出力が許可(該当回線#jの出力判定フラグが「有効」)される。
【0095】
このようにして、出力回線#j毎に、出力回線帯域設定に応じた出力判定フラグによる出力調停を行なうことにより、前出力完了時刻の早いパケットから優先的にデキューを発生させることができるので、同一出力回線#j内のキュー#j−k単位の出力帯域の取り戻し制御を効果的に行なうことができる。また、調停回路の簡素化も可能である。
【0096】
ところで、この場合、上記の出力判定値と実際のデキュー処理時刻との差(D‐C)が処理レイテンシ及びデキューバス上の輻輳等の影響により大きくなった場合、次パケット以降の出力がバースト的に行なわれ、デキューバス上の輻輳及びフレームメモリ2上での処理の破綻を招くおそれがある。
そこで、その保護のために、本実施形態では、図15に示すバースト制御回路571−3により、上記の差の監視によるバースト出力制御を行なう。図18にバースト制御の概念を示す。なお、この図18において、Bはバースト出力を許可する制限値を表し、各出力回線シェーピング回路57−jに設定される。
【0097】
そして、図18の(1)(図18中では、(1),(2)を丸付き数字で示す)に示す場合は、デキュー発生時にTimer値‐C<Bであるから、上記の式(7)のSEL{Ci-1,Timer}の項においてCi-1が選択され、次パケット出力のバースト出力が許可される。
これに対し、図18の(2)に示す場合は、デキュー発生時にTimer値‐C≧Bであるから、上記の式(7)のSEL{Ci-1,Timer}の項においてTimer値が選択され、次パケットのバースト出力は許可されない。
【0098】
このように、出力回線#j毎のバースト出力制御を行なうことにより、出力回線#j内のキュー#j−k単位の帯域の取り戻しを許可しながら、出力回線#j毎のデキューによるオーバーフローを回避することが可能になる。
次に、図2及び図3に示すポート間調停部58は、上述したシェーピング部57から出力される出力判定フラグと出力判定値Ciとを基に、出力回線#j間のパケット出力の調停(有効な出力判定値Ciの中からの最小値選択)を行ない、これにより選択された出力回線#jのキュー#j−kについての判定値をデキュー制御部59へ出力するものである。
【0099】
このポート間調停制御部58による調停制御の概念を図19に示す。この図19に示す場合、現在時刻(Timer値)において、回線A〜Dについてのシェーピング部57での出力判定フラグの状態は、回線Dについては出力完了予定時刻C≧Timer値であるのでディゼーブル(「無効」)、他の回線A,B,Cについては出力完了予定時刻C<Timer値であるのでイネーブル(「有効」)となっている。
【0100】
従って、ポート間調停部58では、回線Dを除く回線A,B,Cの中で、デキュー制御部59への出力回線#jを決定することになる。ここで、回線A,B,Cについてのパケット出力完了予定時刻Cai,Cbj,Cckの関係は、Cbj>Cai>Cckとなっているが、回線Cについてはシェーピング部57での上記バースト制御によってバースト制限値を超えているために出力完了予定時刻Cckは無効となり、その代わりにシェーピング部57への入力時刻Sck+1が基準となる。
【0101】
これにより、ポート間調停部58は、Cbj>Sck+1>Caiの関係から、回線A≧回線C≧回線Bの優先順位でデキュー制御部59へデータ出力することになる。つまり、上記のシェーピング部57及びポート間調停部58は、選択部56で選出された評価値を出力回線#j毎に保持し、それらの評価値と出力回線#jの設定帯域とに基づいて優先出力すべき先頭パケットを決定する出力回線間調停手段としての機能を果たしているのである。
【0102】
なお、以上の調停アルゴリズムをC言語のような記述で表現したものを図20(B)に示す。なお、この図20(B)に示す調停アルゴリズムは、図20(A)に示すように、4ポート分の出力判定値(Sa,Sb,Sc,Sd)と、それぞれの判定フラグ(Valid_Sa,Valid_Sb,Valid_Sc,Valid_Sd)とを入力した場合のアルゴリズムを示している。
【0103】
次に、図2に示すデキュー制御部59は、ポート間調停部58の出力をバッファリングし、デキューバスの設定帯域に応じたシェーピング処理を行なうもので、前述した出力回線シェーピング回路57−jの構成(図14及び図15参照)と同様に構成され、例えば図21に示すように、デキューバスの設定帯域に応じた出力帯域のシェーピング処理を制御するシェーピング制御部(デキューバスシェーピング制御部)591と、ポート間調停部58による調停結果を保持するパケット情報レジスタ592とをそなえている。
【0104】
さらに、シェーピング制御部591には、図22に示すように、出力判定値演算回路591−1,出力判定回路591−2及びバースト制御部(デキューバスバースト制御部)591−3がそなえられている。
そして、シェーピング制御部591の出力判定値演算回路591は、出力判定回路591−2のからのデキューイネーブルアサートタイミング毎に、下記の式(8)による出力判定値演算を行なうものである。
【0105】
【数8】
【0106】
なお、この式(8)において、Ciはパケット出力完了予定時刻、Ci-1は前パケット出力完了予定時刻、SEL{Ci-1,Timer}はCi-1とTimer値のいずれかの選択、Liはデキューパケット長、DRはデキューバス設定帯域をそれぞれ表す。
また、出力判定回路591−2は、上記の出力判定値演算回路591による演算結果Ciがタイマ60のTimer値よりも小さい(Timer値>Ci)となった場合に、次パケットの出力許可信号(デキューイネーブル信号)のアサート処理(キュー管理部4へのデキュー指示)を行なうものである。
【0107】
これらの出力判定値演算回路591−1及び出力判定回路591−2によって、デキューバスの設定帯域(DR)に応じたシェーピング処理が可能となる。図23にシェーピング処理の概念を示す。シェーピング処理自体は、前述した出力回線シェーピング回路57−jにおける処理と同様であり、この場合も、或る先頭パケット(パケット番号“0”)のデキューが発生した場合、まず、出力判定値演算回路591−1にて、以下の式(9)が演算される。
【0108】
【数9】
【0109】
ただし、この場合も、パケット番号“0”のパケットは前パケットが無効であるか、もしくは、後述するバースト制御部591−3によるバースト制御によりデキュー発生時のTimer値(D0) が選択されているものと仮定する。
そして、上記の式(9)による演算結果C0がタイマ60のTimer値よりも大きい(Timer値<C0)場合は、出力判定回路591−2によりデキューイネーブル信号はディゼーブルされデキュー指示は発生しない。これに対し、Timer値≧C0の場合、出力判定回路591−2は、その時に有効なデータがパケット情報レジスタ592に格納されていれば、デキューイネーブル信号をアサートし、キュー管理部4へデキューパケット番号を通知する。
【0110】
なお、このデキューパケット番号は、パイプライン処理上の同一評価値更新(同一パケットの重複出力防止)のために、前処理部51,演算制御部52,並列演算部55,シェーピング部57,シェーピング制御部591内の出力判定回路591−1及びバースト制御部591−3にそれぞれフィードバックされる。
このようにして、デキュー制御部59においても、デキューバスの設定帯域に応じたシェーピング処理を行なうことにより、前出力完了時刻の早いパケットから優先的にデキューを発生させることができるので、デキューバス内における出力回線単位の帯域の取り戻し制御を効果的に行なうことができる。また、調停回路の簡素化も可能である。
【0111】
ところで、この場合も、出力判定値演算回路591−1による演算結果と実際のデキュー時刻との差(D‐C)が処理レイテンシ及びデキューバス上の輻輳などにより大きくなった場合、次パケット以降の出力がバースト的に行なわれ、デキューバス上の輻輳及びフレームメモリ2上での処理の破綻を招くおそれがある。
そこで、その保護のために、本デキュー制御部59においても、出力回線シェーピング回路57−jと同様に、図22に示すバースト制御回路591−3によって、上記差の監視によるバースト制御を行なう。図24にバースト制御の概念を示す。なお、この図24において、Bは、バースト出力を許可する制限値を表す。
【0112】
即ち、図24の(1)(図24中では、(1),(2)を丸付き数字で示す)で示す場合は、デキュー発生時にTimer値‐C<Bであるから、上記の式(9)におけるSEL{Ci-1,Timer}の項においてCi-1が選択され、次パケットのバースト出力が許可されることになる。これに対し図24の(2)で示す場合は、デキュー発生時にTimer値‐C≧Bであるから、上記SEL{Ci-1,Timer}の項においてTimer値が選択され、次パケットのバースト出力は許可されないことになる。
【0113】
かかるバースト制御により、デキューバスにおける出力回線#j単位の帯域の取り戻しを許可しながら、その帯域制御に伴うデキューバスのオーバーフローを有効に回避することが可能となる。
次に、以下では、上述したキュー管理部4でのキュー管理の詳細について説明する。
【0114】
図25に示すように、本実施形態のキュー管理部4は、パラメータメモリ41、次ポインタテーブルメモリ42,第3(3th)パラメータメモリ43,パケットカウンタメモリ44及びポインタテーブルメモリ45をそなえている。
ここで、パラメータメモリ41は、図1に示すフレームメモリ2と同じワード数の記憶容量を有しており、ここに、図1に示す変換テーブル3から入力される各キュー#j−kの先頭パケットについてのスケジュールパラメータ〔パケット長,タイムスタンプ(到着時刻),ビットマップ情報等〕が順次格納されるようになっている。なお、上記の「ビットマップ情報」は後述する変形例においてパケットのマルチキャストを行なう際に指定される情報であり、マルチキャストを行なわない場合には不要な情報である。
【0115】
また、次ポインタテーブルメモリ42も、このパラメータメモリ41と同じワード数の記憶容量を有しているが、ここには、パラメータメモリ41と同じポインタ上に、次パケットのポインタが格納されるようになっている。したがって、この次ポインタテーブルメモリ42を検索することにより、パラメータメモリ41からパラメータを連続的に取り出すことが可能になる。
【0116】
さらに、第3パラメータメモリ43は、キュー#j−kの先頭から3番目のパケットについてのスケジュールパラメータ〔第3(3th)パラメータ〕をキュー#j−k別に保持するものである。つまり、この場合、第3パラメータは、パラメータメモリ41と第3パラメータメモリ43の双方に格納されるようになっている。したがって、キュー番号のアドレスを基に先頭から3番目のパケットにつてのパラメータを、次ポインタテーブルメモリ42を検索することなく即時出力することが可能となる。
【0117】
また、パケットカウンタメモリ44は、キュー#j−kに格納されているパケット数をキュー#j−k別に保持するものであり、ポインタテーブルメモリ45は、先頭(Top)ポインタメモリ451,第4(4th)ポインタメモリ452及び最終(End)ポインタメモリ453により、キュー#j−kの先頭パケット,4番目のパケット及び最終パケットのパラメータメモリ41上の格納位置を指すポインタを、キュー#j−k別に保持するもので、これにより、キュー番号のアドレスを基に、キュー#j−kの先頭パケット,4番目のパケット及び最終パケットを検索することが可能である。
【0118】
具体的に、例えば、或るキュー#j−kに7個のパケットa,b,c,d,e,f,gがパケットaを先頭パケットとして連続して格納されている場合を考えると、上記のパラメータメモリ41、次ポインタテーブルメモリ42,第3(3th)パラメータメモリ43,パケットカウンタメモリ44及びポインタテーブルメモリ45の上記ポインタによるデータリンク構造は図26に示すようになる。
【0119】
即ち、図26に示すように、或るキュー#j−kにエンキューされたパケットa,b,c,d,e,f,gのパラメータがそれぞれパラメータメモリ41に格納された場合、次ポインタテーブルメモリ42においては、パラメータメモリ41と同じポインタ上にそれぞれ次パケットb,c,d,e,f,gのポインタが格納される。また、先頭から3番目のパケットcについてのパラメータは、パラメータメモリ41とは別に、第3パラメータメモリ43にも格納される。
【0120】
そして、ポインタテーブルメモリ45においては、各ポインタメモリ451,452,453の該当キュー番号が示すアドレスに、先頭パケットaについてのポインタ,4番目のパケットdについてのポインタ,最終パケットgについてのポインタがそれぞれ格納される。
以下、上述したリンク構造によりキュー管理を行なうキュー管理部4のエンキュー及びデキュー時の動作についてそれぞれ詳述する。
【0121】
(1)エンキュー時の動作
まず、キュー管理部4は、図27に示すように、図1に示す変換テーブル3からのエンキュー指示の有無を監視しており(ステップS11のNOルート)、エンキュー指示を受けると(ステップS11でYESの場合)、エンキュー指示されたキュー番号のパケット数をパケットカウンタメモリ44から読み出して現在のパケット数を識別し(ステップS12)、そのパケット数に応じて、スケジューラ5へのパラメータ出力と、キュー管理部4内部のポインタ制御(ポインタリンク構造の更新)とを次のようにして実行する。
【0122】
即ち、識別したパケット数が0個で該当キュー#j−kの状態が空の場合(ステップS13でYESの場合)、キュー管理部4は、図28に示す処理(1)(図28中では、(1)〜(5)を丸付き数字で示す)を実行して、入力パラメータをそのままスケジューラ5へ出力するとともに、ポインタリンク構造を更新し(ステップS18)、パケットカウンタメモリ44の該当キュー#j−kのパケット数をインクリメント(+1)する(ステップS24)。
【0123】
識別したパケット数が1個の場合(ステップS13でNO,ステップS14でYESの場合)、キュー管理部4は、図28に示す処理(2)を実行して、入力パラメータを先頭から2番目のパケットについてのパラメータとしてスケジューラ5へ送出するとともに、ポインタリンク構造を更新し(ステップS19)、パケットカウンタメモリ44の該当キュー#j−kのパケット数をインクリメント(+1)する(ステップS24)。
【0124】
識別したパケット数が2個の場合(ステップS13及びS14でNO,ステップS15でYESの場合)、キュー管理部4は、図28に示す処理(3)を実行して、入力パラメータを先頭から3番目のパケットについてのパラメータとして第3パラメータメモリ43に格納するとともに、ポインタリンク構造を更新し(ステップS20)、パケットカウンタメモリ44の該当キュー#j−kのパケット数をインクリメント(+1)する(ステップS24)。
【0125】
識別したパケット数が3個の場合(ステップS13〜S15でそれぞれNO,ステップS16でYESの場合)、キュー管理部4は、図28に示す処理(4)を実行して、先頭から4番目のパケットについてのポインタが第4ポインタメモリ452に格納するとともに、ポインタリンク構造を更新し(ステップS21)、パケットカウンタメモリ44の該当キュー#j−kのパケット数をインクリメント(+1)する(ステップS24)。
【0126】
識別したパケット数が4個以上の場合(ステップS13〜S16でそれぞれNO,ステップS17でYESの場合)は、キュー管理部4は、図28に示す処理(5)を実行して、最終ポインタの更新のみを行ない(ステップS22)、パケットカウンタメモリ44の該当キュー#j−kのパケット数をインクリメント(+1)する(ステップS24)。
【0127】
ただし、本実施形態においてパケットのカウンタ値の最大値は5としており、識別したパケット数が既に5以上である場合は、図28に示す処理(5)の後、カウンタ値のインクリメントは行なわれない(パケットカウンタメモリ44の該当カウンタ値には5が固定的に設定される)(ステップS23)。
(2)デキュー時の動作
これに対し、デキュー時には、キュー管理部4は、図29に示すフローチャート(ステップS31〜S45)に従って動作する。即ち、キュー管理部4は、スケジューラ5からのデキュー指示の受信を監視しており(ステップS31のNOルート)、デキュー指示を受けると(ステップS31でYESの場合)、キュー管理部4は、該当キュー#j−kのパケット数をパケットカウンタメモリ44から読み出して、現在の該当キュー#j−kのパケット数を識別し(ステップS32)、その識別結果に応じて、スケジューラ5へのパラメータ出力と、キュー管理部4内部のポインタ制御(ポインタリンク構造の更新)とを次のようにして実行する。
【0128】
まず、識別したパケット数が5個以上の場合(ステップS33でYESの場合)、キュー管理部4は、図30に示す処理(1)(図30中では、(1)〜(5)を丸付き数字で示す)を実行して、該当キュー#j−kの先頭ポインタをデキューポインタとしてメモリ制御部6へ出力するとともに、3番目のパケットについてのパラメータをスケジューラ5に送出し、ポインタリンク構造を更新する(ステップS38)。
【0129】
そして、キュー管理部4は、この更新により、第4ポインタが最終ポインタと等しくなったか否かを確認し(ステップS44)、等しければパケットカウンタメモリ44の該当カウンタ値を固定値(4)に設定し(ステップS44のYESルートからステップS45)、等しくなければ次のデキュー指示の監視動作に入る(ステップS44のNOルート)。
【0130】
さて次に、識別したパケット数が4個の場合(ステップS33でNO,ステップS34でYESの場合)、キュー管理部4は、図30に示す処理(2)を実行して、該当キュー#j−kの先頭ポインタをデキューポインタとしてメモリ制御部6へ出力するとともに第3パラメータメモリ43上の3番目のパケットについてのパラメータをスケジューラ5に送出し、ポインタリンク構造を更新したのち(ステップS39)、パケットカウンタ値をデクリメント(−1)する(ステップS43)。
【0131】
同様に、識別したパケット数が3個の場合(ステップS33及びS34でそれぞれNO,ステップS35でYESの場合)、キュー管理部4は、図30に示す処理(3)を実行して、該当キュー#j−kの先頭ポインタをデキューポインタとしてメモリ制御部6へ出力するとともに第3パラメータメモリ43上の3番目のパケットについてのパラメータをスケジューラ5に送出し、ポインタリンク構造を更新しのたち(ステップS40)、パケットカウンタ値をデクリメント(−1)する(ステップS43)。
【0132】
これに対して、識別したパケット数が2個の場合(ステップS33〜S35でそれぞれNO,ステップS36でYESの場合)、キュー管理部4は、図30に示す処理(4)を実行して、該当キュー#j−kの先頭ポインタをデキューポインタとしてメモリ制御部6へ出力するとともに先頭ポインタの更新を行ない(スケジューラ5へパラメータは送出しない)(ステップS41)、パケットカウンタ値をデクリメント(−1)する(ステップS43)。
【0133】
識別したパケット数が1個の場合(ステップS33〜S36でそれぞれNO,ステップS37でYESの場合)、キュー管理部4は、図30に示す処理(5)を実行することにより、メモリ制御部6への先頭ポインタ(デキューポインタ)の出力のみを行ない(ステップS42)、パケットカウンタ値をデクリメント(−1)する(ステップS43)。
【0134】
つまり、キュー管理部4は、キュー#j−kのパケット数が3個以上である場合には、第3パラメータメモリ43上のパラメータ(3番目のパケットについてのパラメータ)をスケジューラ5へ出力し、ポインタリンク構造の更新を行ない、パケット数が2個以下である場合には、先頭ポインタのメモリ制御部6への出力を行ない、スケジューラ5へのパラメータ出力は行なわないのである。
【0135】
なお、上記のエンキュー及びデキュー処理は、図31に示すように、互いに相反する位相で動作することにより、お互いが競合しないよう制御されている。
以上のようなキュー管理(ポインタリンク構造の更新)により、同一キュー#j−kにおける連続する2個分のパケットについてのパラメータがスケジューラ5へ送出されて、先頭パケットメモリ53に2個分のパケットについてのパラメータ(ただし、本実施形態では前処理部51による前処理後のパラメータ)が保持されることになる。
【0136】
ここで、図32に示すように、スケジューラ5の入力から先頭パケットメモリ53への格納までのレイテンシをAサイクル、スケジューラ5出力のデキュー指示による先頭パケットメモリ53のデータ更新から更新データのスケジューラ5出力までの処理レイテンシをBサイクル、スケジューラ5の出力のデキュー指示から次パケット出力までのキュー管理部4の処理レイテンシをCサイクルとする。
【0137】
仮に、スケジューラ5が先頭パケットについてのパラメータのみを処理するのであれば、同一キュー#j−k上の最短デキュー間隔は図32に示すループ(1)(図32中では、(1),(2)を丸付き数字で示す)の処理に依存し、(A+B+C)サイクルとなる。しかし、上述したように先頭パケットメモリ53にキュー#j−kの先頭2個分のパラメータを格納することにより、同一キュー#j−k上の最短デキュー間隔は、図32に示すループ(2)の処理レイテンシ(Bサイクル)にできる。ただし、最短のデキュー間隔をBサイクルで行なうためには、B≧(A+C)である必要がある。B<(A+C)であれば、デキューの更新間隔は(A+C)サイクルに依存するようになる。
【0138】
したがって、例えば図33に示すように、或るキュー#j−kに5つのパケット“1”〜“5”の入力があり、それらがいずれも最短デキュー間隔で出力可能なパケット長の短いものであり、且つ、B≧(A+C)を満足する場合、デキュー発生によりキュー管理部4及び先頭パケットメモリ53への次パケットの出力要求が同時に発生することになり、パケット“1”〜“5”は最短保証間隔であるBサイクルで連続してパケットをデキューすることが可能となる。
【0139】
その結果、連続パケット出力のボトルネックとなっていた処理レイテンシが大幅に削減され、5Gbpsや10Gbps等の高速帯域をもつ回線#jやキュー#j−kに対する帯域制御の精度を高めて、設定帯域の保証を行なうことができる。
なお、上記のデキュー発生時には、キュー管理部4へのデキューイネーブル信号のアサートとともに、同一パケットの重複出力をマスクするために、スケジューラ5内部におけるパイプライン処理上の同一パケットについてのパラメータ対するマスク処理が行なわれる。
【0140】
即ち、図2中に示すように、デキュー発生時には、デキュー情報(デキュー識別信号:FB1,FB2,FB3,FB4)が、それぞれ、演算制御部52,並列演算部55の各演算器55−kの出力判定回路552,シェーピング部57における各出力回線シェーピング回路57−jの出力判定回路571−2,デキュー制御部59の出力判定回路591−2へそれぞれフィードバックされる。
【0141】
そして、演算制御部52では、上記デキュー情報(FB1)の受信により、デキューパケットの出力回線#jを次サイクルの演算出力回線として指定し、上記デキュー情報(FB2)により識別される演算器55−kの出力判定回路552では、出力判定フラグをディセーブルにして、同一出力回線#jの同一キュー#j−kについての演算結果出力をマスクする。
【0142】
また、上記デキュー情報(FB3)により識別される出力回線シェーピング回路57−jの出力判定回路571−2においても、出力判定フラグをディセーブルにして、判定値出力をマスクし、デキュー制御部59の出力判定回路591−2においても、上記デキュー情報(FB4)の受信により、判定値出力をマスクして次サイクルの全出力をマスクする。
【0143】
以上のマスク処理により、同一パケットの重複出力防止と、それに伴うキュー#j−kの帯域制御精度の低下を防止することができる。
ここで、例えば図34に示すように、或る回線Aのキュー(演算器)番号nのキューについてのデキューイベントがサイクルtで発生した場合を考える。この場合、デキュー情報(FB4)により次サイクルの全出力がマスクされ、デキューバスの出力は停止する。また、デキュー情報(FB3)により回線Aのシェーピング部57の出力に対してt+2サイクルまでマスク処理が働く。この処理によりt+2サイクル目からは、回線A以外の回線のデキュー処理が行なえることになる。
【0144】
さらに、デキュー情報(FB2)により、演算器55−kの出力に対してt+3サイクルまでマスク処理が働く。ただし、このポイントでは、回線A以外の回線についてのデータをマスクしないように、当該ポイントのデータの回線識別処理を行ない、回線Aについてのデータのみをマスクする。この処理により、t+3サイクル目からは、演算器番号n以外の回線Aについてのデキュー出力が行なえることになる。また、デキュー情報(FB1)により、先頭パケットメモリ53から次パケットデータの更新を行なうため演算回線がAに指定される。
【0145】
以上のようにして、全パイプライン処理上のデキューパケットによる更新処理が行われる。このように複数ポイントでデータのマスク処理を行なうことにより、他回線についてのパケットは最低2サイクル、同一回線内のパケットについては最低4サイクル間隔でのデキュー処理が可能になる。また、同一キューについても、本実施形態では、先頭パケットメモリ53に先頭パケットについてのパラメータを常に2個をもたせているので、8サイクル間隔でのデキュー処理が可能になる。
【0146】
以上のように、上述した実施形態におけるパケット出力制御装置1によれば、WFQの評価値演算対象の回線#jを時分割に指定し、指定された回線#jに属する各キュー#j−kの先頭パケットについての評価値並列演算を各回線#jに共通の演算器55−kで実行するように構成したので、スケジューラ5の回路規模をキュー本数に対して大幅に削減することができる。
【0147】
したがって、従来困難であった多数キューについてのWFQスケジューリング演算をハードウェア化することができて、その演算能力を大幅に向上することができ、精度の高いWFQスケジューリングが実現可能である。
特に、上述した実施形態では、前処理部51やγ演算部54等の演算回路の共通化を図っているので、多数のキューをもつスケジューラについても、LSIやFPGAでの実装が可能になる。また、このような演算器共有構成を活かして、WFQをベースにした固定帯域キューや優先制御キューによるQoS制御を容易に実現することもできる。
【0148】
さらに、シェーピング部57での出力回線#j毎のシェーピング処理により、キュー単位で発生する出力帯域の取り戻しの総和による出力回線#jの輻輳を回避することができ、また、デキュー制御部59でのデキューバスについてのシェーピング処理により、キュー#j−k単位又は出力回線#j単位に発生する出力帯域の取り戻しの総和によるデキューバスの輻輳を回避することができる。
【0149】
また、演算回線の指定やパケットデキュー時の複数ポイントでのフィードバック処理(マスク処理)により、各キュー#j−k及び各回線#jにおける高いスループットも実現できる。
(A2)第1変形例の説明
次に、以下では、パケットスケジューラ5の第1変形例について説明する。
【0150】
図37は上述したパケットスケジューラ5の第1変形例を示すブロック図で、この図37に示すパケットスケジューラ5は、図4に示す構成に比して、1タイムスロット当たりの演算対象であるn本のキュー#j−1〜#j−nに帯域制御の優先度を与えてキュー#j−1〜#j−n間で帯域の優先制御を行なう場合に、それらのキュー(以下、優先制御キューという)#j−1〜#j−nに対応する各演算器55−kについて、優先制御回路55a−1〜55a−nが設けられている点が異なる。なお、以下において、既述の符号と同一符号を付したものは、特に断らない限り、それぞれ既述のものと同一もしくは同様のものを示す。
【0151】
そして、これらの優先制御回路(優先制御手段)55a−kは、例えば図39に示すように、それぞれ、先頭パケットメモリ53(53−1〜53−n)のパケット有無状態を判定するパケット有無判定回路551aをそなえており、その出力(自キュー#j−kのパケット有無状態)が優先度の高いものから順に、論理和(OR)回路551bを介して、優先度の低い優先制御回路にカスケードに接続されている。
【0152】
また、最も優先度の高い優先制御回路55a−1を除く優先制御回路55a−2〜55a−nには、それぞれ、上位の優先制御回路におけるパケット有無判定回路551aの反転出力と、自優先制御回路55a−2〜55a−nにおけるパケット有無判定回路551aの出力との論理積(AND)をとる1入力反転型の論理積(AND)回路551cが設けられている。なお、各優先制御回路55a−kの出力はデータ有効フラグとして対応する演算器55−kの出力判定回路552に接続されている。
【0153】
つまり、本変形例のスケジューラ5は、優先制御回路55a−1〜55a−kによって、出力回線#j別に上位キューの状態と自キューのパケット有無状態を監視し、優先度の高いキューにパケットが存在していることがパケット有無判定回路551aで検出されている場合には、それよりも優先度の低いキューにパケットが存在していたとしても、対応する演算器55−kにデータ有効フラグを出力しない(ディゼーブルする)ことにより、そのキューについての演算器55−kの演算結果(評価値)をマスクするのである。
【0154】
これにより、例えば図38(A)に示すように、パケットがa→b→c→d→e→・・・・の順にエンキューされ、それらを2段階の優先度をもって出力制御を行なう場合、図38(B)に示すように、各入力パケットを高優先制御キューと低優先制御キューとにそれぞれ振り分け〔この図38(B)では、パケットa,d,eが高優先側、残りのパケットc,bが低優先側に振り分けられている〕、高優先側から低優先側にパケット有無状態を伝達し、高優先側のパケットの出力完了によって高優先側のパケットが無い状態の時にのみ、低優先側の出力が許可されることになる。その結果、上記の各入力パケットa,b,c,d,eは、図38(A)に示すように、パケットa→d→e→b→cの順に出力されることになる。
【0155】
したがって、例えば、画像や音声データ等のリアルタイム性の高いキューのデータを優先的に出力させるようにすることが可能となる。なお、この構成において、前評価値メモリ61において複数優先制御キュー#j間で前評価値(パケット出力完了予定時刻)Fi-1 を共有することにより、複数優先制御キュー#jを単一のキューとして帯域制御することができる。
【0156】
例えば図40に示すように、2つのキューa,b間で帯域共有を行なう場合を考える。この場合、2つのキュー間には共通の設定帯域φが設定されており、優先度はキューa>キューbと仮定する。これにより、下位のキューbは、上位のキューaにパケットが存在する時には、上述したように出力がマスクされ、上位キューaのパケットの出力完了と上位キューaのパケット無しとの条件により出力が許可される。したがって、下位のキューbにエンキューされたパケットは、上位のキューaについての空き帯域を使って出力されるようになる。
【0157】
なお、上述した優先制御キューは、勿論、全てのキューではなく一部のキューで構成してもよい。
(A3)第2変形例の説明
上述したように、出力回線#j間で演算器55−kを共用する構造により、複数回線#jに対して同一処理経路をもつため、スケジューラ5は、複数出力回線#jへの同一パケットのコピー処理(マルチキャスト配信)を容易に行なうことができる。
【0158】
図41はこのようなマルチキャスト配信を実現するパケットスケジューラ5の構成(第2変形例)を示すブロック図で、この図41に示すスケジューラ5は、図4に示す構成に比して、一部あるいは全ての演算器55−kについて、ビットマップ制御部62とマルチキャスト先頭パケットメモリ63とがそなえられている点が異なる。なお、以下において、既述の符号と同一符号を付したものは、特に断らない限り、既述のものと同一もしくは同様のものを示す。
【0159】
ここで、ビットマップ制御回路62は、演算制御部52からの演算タイムスロット指定に応じて、マルチキャスト先頭パケットメモリ63に格納されているマルチキャストパケットについてのスケジュールパラメータ出力の有効/無効を制御するもので、例えば図41及び図42に示すように、ビットマップ(Bitmap)レジスタ621,ビットマップ制御回路622,データ有効判定回路623及び最終パケット判定回路624をそなえて構成されている。
【0160】
ビットマップレジスタ(配信先情報保持手段)621は、どの出力回線#jについてマルチキャスト配信を行なうかを指定する配信先回線ビットマップ情報〔例えば図44(A)に示すように、マルチキャスト配信を行なう場合は“1”、そうでない場合は“0”が設定される〕を保持するものである。なお、上記の配信先回線ビットマップ情報は、例えば図1に示す変換テーブル3からのスケジュールパラメータとともに受信される。
【0161】
ビットマップ制御回路(配信制御手段)622は、デキュー制御部59からフィードバックされてくるデキュー情報に基づいて、上記ビットマップレジスタ621に格納された配信先回線ビットマップ情報(以下、単に「ビットマップ情報」という)の更新/クリアを制御するものであり、データ有効判定回路623は、演算制御部52から演算ポート指定される毎に、マルチキャスト先頭パケットメモリ63から読み出されるマルチキャスト配信用の先頭パケットについてのスケジュールパラメータが有効であることを示すフラグを演算器55−kの出力判定回路552に出力するものである。
【0162】
最終パケット判定回路624は、現在のマルチキャスト配信対象の回線#jが最終回線であるか否かを監視するもので、最終回線#jであれば、ビットマップ制御回路622が、その旨(最終パケットフラグのイネーブル)を受けて、最終回線#jに対するマルチキャストパケットのデキューによりビットマップレジスタ621の内容を次のマルチキャストパケットについてのビットマップ情報に更新するようになっている。
【0163】
以上の構成により、本第2変形例のスケジューラ5では、マルチキャストパケットについてのスケジュールパラメータがマルチキャスト先頭パケットメモリ63に格納されるとともに、ビットマップ情報がビットマップ制御部62のビットマップレジスタ621に格納される。
そして、前述した実施形態及び第1変形例のユニキャストキューにおいては、先頭パケットの有無判定により、演算器55−kに入力されるパラメータの有効判定が行なわれるが、本第2変形例では、それに加えてビットマップ制御によるデータの有効判定がデータ有効判定回路623によって行なわれる。
【0164】
即ち、データ有効判定回路623は、ビットマップがアサート(“1”に設定)されている回線#jに演算タイムスロットが演算制御部52から指定された時に、演算器55−k出力の有効フラグをイネーブルにする〔例えば図44(B)参照〕。
そして、図43に示すように、マルチキャストパケットがデキューされた回線#j順に、ビットマップレジスタ621のビットマップ情報がビットマップ制御回路622によってクリアされてゆき、ビットマップ情報で指定された最後の回線#jへのマルチキャストパケットがデキューされた時点で、最終パケット判定回路624からビットマップ制御回路622への最終パケットフラグ(イネーブル)が出力され、これにより、次のマルチキャストパケットについてのビットマップにビットマップレジスタ621の内容が更新される。
【0165】
このように、本第2変形例のスケジューラ5では、出力回線#j間で演算器55−kが共用され、複数回線#jに対して同一処理経路をもつことを利用して、複数出力回線の配信先情報をもったパケットをその配信先情報で指定された出力回線#jの演算タイムスロット指定時に、そのパケットについての演算器55−kによる演算結果を有効にするという簡単な制御で、指定された複数出力回線#jへのパケット配信(マルチキャスト)を実現することができる。
【0166】
(B)付記
(付記1) 複数の出力回線毎に設けられた複数のキューと、
入力されたパケットを当該パケットのフローに応じて該キューのいずれかにエンキューするエンキュー手段と、
該エンキュー手段により上記の各キューにエンキューされた各パケットについてのデキュー指示をスケジュールするパケットスケジューラと、
該パケットスケジューラからのデキュー指示によって指示されたキューからパケットをデキューするデキュー手段とをそなえるとともに、
該パケットスケジューラが、
同一出力回線に属する各キューにエンキューされた先頭パケットに関する少なくとも到着時刻情報及びパケットサイズ情報を含む所定のパラメータに基づいて当該先頭パケットの送信完了予定時刻を示す評価値をそれぞれ所定の評価値演算式により並列演算する並列演算手段と、
該並列演算手段での演算対象とする出力回線を選択的に指定して同一出力回線に属する各キューの先頭パケットについてのパラメータを該並列演算手段に入力させる演算制御手段と、
該並列演算手段で求められた同一出力回線に属する各キューの先頭パケットの評価値に基づいて優先出力すべき先頭パケットの評価値を選出する同一出力回線内キュー間調停手段と、
該同一出力回線内キュー間調停手段で選出された評価値を該出力回線毎に保持し、該出力回線毎の評価値と該出力回線の設定帯域とに基づいて優先出力すべき先頭パケットを決定する出力回線間調停手段と、
該出力回線間調停手段で決定した先頭パケットについてのデキュー指示を該デキュー手段に与えるデキュー制御手段とをそなえたことを特徴とする、パケット出力制御装置。
【0167】
(付記2) 該演算制御手段が、上記の各出力回線の設定帯域に応じた割合で時分割に該並列演算手段での演算対象とする出力回線を指定する時分割演算回線指定部をそなえて構成されたことを特徴とする、付記1記載のパケット出力制御装置。
(付記3) 該パケットスケジューラが、
入力パケットの該パラメータに基づいて該評価値演算式中で繰り返し演算が不要な項を予め全キューで共通化された前処理として演算し、当該演算結果を該並列演算手段での演算に用いられる中間変数として該並列演算手段に入力する前処理部をそなえたことを特徴とする、付記1又は付記2に記載のパケット出力制御装置。
【0168】
(付記4) 該パケットスケジューラが、
同一出力回線に属する各キューうちパケットの存在しないキューに割り当てられている帯域を、パケットの存在する同一出力回線に属する他のキューに配分する帯域配分率を算出する帯域配分率算出手段をさらにそなえ、
該並列演算手段が、
該帯域配分率算出手段で算出された同じ帯域配分率に基づいて、上記の各評価値を再計算するように構成されたことを特徴とする、付記1〜3のいずれか1項に記載のパケット出力制御装置。
【0169】
(付記5) 該パケットスケジューラが、
該出力回線毎に、予め決められた固定帯域配分率を出力する固定帯域制御手段をさらにそなえ、
該並列演算手段が、
該固定帯域制御手段からの該固定帯域配分率に基づいて、上記の各評価値を計算するように構成されたことを特徴とする、付記1〜3のいずれか1項に記載のパケット出力制御装置。
【0170】
(付記6) 該パケットスケジューラが、
同一出力回線に属する各キューうちパケットの存在しないキューに割り当てられている帯域を、パケットの存在する同一出力回線に属する他のキューに配分する帯域配分率を算出する帯域配分率算出手段と、
該出力回線毎に、予め決められた固定帯域配分率を出力する固定帯域制御手段とをそなえるとともに、
該並列演算手段が、
同一出力回線に属するキュー毎に、該帯域配分率算出手段からの該帯域配分率と該固定帯域制御手段からの該固定帯域配分率のいずれか一方を選択する帯域配分率選択手段をそなえ、
該帯域配分率選択手段で選択された帯域配分率に基づいて該評価値を計算するように構成されたことを特徴とする、付記1〜3のいずれか1項に記載のパケット出力制御装置。
【0171】
(付記7) 該パケットスケジューラが、
同一出力回線に属する複数のキューに対して優先順位を与え、優先順位の高いキューにパケットが存在する場合に、当該キューよりも優先順位の低いキューについて該並列演算手段で求められる該評価値をマスク制御する優先制御手段をさらにそなえたことを特徴とする、付記1〜6のいずれか1項に記載のパケット出力制御装置。
【0172】
(付記8) 該パケットスケジューラが、
該優先順位の与えられた複数のキュー(以下、優先制御キューという)について該並列演算手段での前回の演算で求められた評価値を該優先制御キュー間で共通に保持する前評価値メモリをさらにそなえ、
該並列演算手段が、
該前評価値メモリに保持された評価値に基づいて新たな評価値の演算を行なうことにより、該複数の優先制御キューを単一のキューとみなして帯域制御を行なうように構成されたことを特徴とする、付記7記載のパケット出力制御装置。
【0173】
(付記9) 該パケットスケジューラが、
該複数の出力回線のうち同一パケットを配信すべき複数の出力回線を指定する配信先情報を保持する配信先情報保持手段と、
該配信先情報保持手段に保持された配信先情報によって指定されている出力回線が該演算制御手段によって指定される毎に、該並列演算手段で求められる同一キューについての該評価値を有効に制御する配信制御手段とをそなえたことを特徴とする、付記1記載のパケット出力制御装置。
【0174】
(付記10) 該出力回線間調停手段が、
該出力回線毎に該同一出力回線内キュー間調停手段で選択された評価値を保持するレジスタと、
該評価値と該出力回線毎に予め設定された帯域情報とに基づいて、該出力回線の設定帯域を考慮した該評価値の出力制御を行なうことにより、該出力回線の帯域制御を行なう出力回線シェーピング制御部とをそなえたことを特徴とする、付記1記載のパケット出力制御装置。
【0175】
(付記11) 該出力回線シェーピング制御部が、
該帯域制御において他の出力回線に属するキューの先頭パケットについての評価値との競合により出力が待たされた分の評価値出力を制御してパケットのバースト出力を制御する出力回線バースト制御部を有することを特徴とする、付記10記載のパケット出力制御装置。
【0176】
(付記12) 該パケットスケジューラが、
同一出力回線に属する各キューの先頭パケットを含む複数の連続するパケットについてのパラメータを保持する複数先頭パケットメモリをそなえ、
該演算制御手段が、
該先頭パケットについてのデキュー指示を契機に当該先頭パケットに続く次パケットについてのパラメータを該先頭パケットメモリから読み出して該並列演算手段に入力させるように構成されたことを特徴とする、付記1記載のパケット出力制御装置。
【0177】
(付記13) 該時分割演算回線指定部が、
上記の各出力回線の設定帯域の比率に応じて所定周期内で時分割指定する同一出力回線の割合を設定するように構成されたことを特徴とする、付記2記載のパケット出力制御装置。
(付記14) 該デキュー制御手段が、
該出力回線毎に該同一出力回線内キュー間調停手段で選択された評価値を保持するレジスタと、
該評価値とデキューバスに予め設定された帯域情報とに基づいて、該デキューバスの設定帯域に応じた該評価値の出力制御を行なうことにより、該出力回線の帯域制御を行なうデキューバスシェーピング制御部とをそなえたことを特徴とする、付記1又は付記10に記載のパケット出力制御装置。
【0178】
(付記15) 該デキューバスシェーピング制御部が、
該帯域制御において出力が待たされた分の評価値出力を制御してパケットのバースト出力を制御するデキューバスバースト制御部を有することを特徴とする、付記14記載のパケット出力制御装置。
(付記16) 該デキュー制御手段が、
該デキュー指示を契機に、上記の演算制御手段,並列演算手段及び出力回線間調停手段に対して、同一先頭パケットについての評価値をマスクするための制御信号を与えるマスク信号出力部をそなえたことを特徴とする、付記1記載のパケット出力制御装置。
【0179】
【発明の効果】
以上詳述したように、本発明のパケットスケジュール出力制御装置によれば、次のような効果ないし利点が得られる。
(1)評価値演算対象の出力回線を選択的に指定し、指定された出力回線に属する各キューの先頭パケットについての評価値を並列演算するので、パケットスケジューラの回路規模をキュー本数に対して大幅に削減することができる。したがって、従来困難であった多数キューについての評価値演算をハードウェア化することができて、その演算能力を大幅に向上することができ、精度の高いWFQスケジューリングが実現可能である。
【0180】
(2)また、評価値演算式中の繰り返し演算が不要な項を前処理部により予め全キューで共通化された前処理として演算したり、キューのパケット有無の変化に伴って再計算される同じ帯域配分率に基づいて評価値の再計算を行なったりして、演算回路の共通化を図ることにより多数のキューをもつスケジューラについても、例えば、LSIやFPGAでの実装が可能になる。
【0181】
(3)さらに、このような並列演算構成を活かして、WFQをベースにした固定帯域キューや優先制御キューによるQoS制御,マルチキャスト配信等の制御を容易に実現することもできる。
(4)さらに、シェーピング部での出力回線毎のシェーピング処理(バースト制御)により、キュー単位で発生する出力帯域の取り戻しの総和による出力回線の輻輳を回避することができ、また、デキュー制御部でのデキューバスについてのシェーピング処理(バースト制御)により、キュー単位又は出力回線単位に発生する出力帯域の取り戻しの総和によるデキューバスの輻輳を回避することができる。
【0182】
(5)また、演算制御手段による演算回線の指定やパケットデキュー時の複数ポイントでのフィードバック処理(マスク処理)により、重複パケット出力を防止することができ、また、各キュー及び各出力回線の帯域制御精度の低下を防止して高いスループットも実現できる。
(6)演算制御手段が、各出力回線の設定帯域に応じた割合で時分割に上記並列演算対象とする出力回線を指定することにより、上述のごとく出力回線間で並列演算を共通化することによる演算精度の低下を防止することができる。
【0183】
(7)さらに、上記の評価値演算に際して、出力回線別に帯域再配分を行なうか否かを設定するようにすることもできるので、出力回線毎に固定帯域キューとWFQによるキューとの構成比を任意に設定することができ、自由度の高いパケットスケジューラ5を提供することができる。
(8)また、同一出力回線に属する各キューの先頭パケットを含む複数の連続するパケットについてのパラメータを保持しておき、上記先頭パケットについてのデキュー指示を契機にその先頭パケットに続く次パケットについてのパラメータを先頭パケットメモリから読み出して並列演算手段に入力させることで、同一キューの連続パケットについてのパラメータ更新の処理レイテンシを短縮することができるので、高速出力回線に対する帯域制御の精度を向上して、設定帯域の保証を行なうことができる。
【0184】
(9)デキュー指示を契機に、同一先頭パケットについての評価値をマスクするので、同一パケットが重複出力されることを防止することができ、キューの帯域制御精度の低下を防止することができる
【図面の簡単な説明】
【図1】本発明の一実施形態としてのパケット出力制御装置の全体構成を示すブロック図である。
【図2】図1に示すパケットスケジューラの構成を示すブロック図である。
【図3】図1に示すパケットスケジューラの構成を示すブロック図である。
【図4】図2及び図3に示すスケジューリング評価値演算器の構成に着目したパケットスケジューラの要部構成を示すブロック図である。
【図5】図2及び図3に示す演算制御部で用いられる演算回線テーブルの一例を示す図である。
【図6】図2及び図3に示す演算制御部での演算回線決定動作を説明するための状態遷移図である。
【図7】図2及び図3に示すパケットスケジューラによる演算回線指定と回線スループットを説明するためのタイムチャートである。
【図8】図2及び図3に示す前処理部及び先頭パケットメモリの構成を示すブロック図である。
【図9】図2及び図3に示すγ演算部の構成を示すブロック図である。
【図10】図9に示すφ加減算器の構成を示すブロック図である。
【図11】図10に示すφ累積器の構成を示すブロック図である。
【図12】図9に示すγ演算部でのφ加減算処理を説明するためのフローチャートである。
【図13】図2及び図3に示す選択部によるキュー間出力調停動作を説明するための図である。
【図14】図2及び図3に示すシェーピング部における出力回線シェーピング回路の構成を示すブロック図である。
【図15】図14に示すシェーピング制御の構成を示すブロック図である。
【図16】図15に示す出力判定値演算回路の構成を示すブロック図である。
【図17】図14に示す出力回線シェーピング回路による回線シェーピング処理概念を説明するための図である。
【図18】図14に示す出力回線シェーピング回路による回線シェーピング処理及びバースト制御概念を説明するための図である。
【図19】図2及び図3に示すポート間調停部による出力回線間調停動作を説明するための図である。
【図20】(A)及び(B)は図2及び図3に示すポート間調停部を実現するソフトウェアアルゴリズムの一例を示す図である。
【図21】図2に示すデキュー制御部の構成を示すブロック図である。
【図22】図21に示すシェーピング制御部の構成を示すブロック図である。
【図23】図21及び図22に示すデキュー制御部によるデキューバス・シェーピング処理概念を説明するための図である。
【図24】図21及び図22に示すデキュー制御部によるデキューバス・バースト制御概念を説明するための図である。
【図25】図1に示すキュー管理部のメモリ構成を示すブロック図である。
【図26】図25に示すキュー管理部のメモリ構成におけるポインタリンク構造例を示す図である。
【図27】図1に示すキュー管理部のエンキュー処理時の動作を説明するためのフローチャートである。
【図28】図27に示す各処理の詳細を示す図である。
【図29】図1に示すキュー管理部のデキュー処理時の動作を説明するためのフローチャートである。
【図30】図29に示す各処理の詳細を示す図である。
【図31】図1に示すキュー管理部でのエンキュー/デキュー処理位相を説明するための図である。
【図32】図1に示すキュー管理部及びパケットスケジューラ間での処理レイテンシを説明するための図である。
【図33】図32に示すキュー管理部及びパケットスケジューラによる処理レイテンシとデキュースループットを説明するための図である。
【図34】図2及び図3に示すデキュー制御部によるデキュー情報のフィードバックによるマスク処理を説明するための図である。
【図35】図4に示すスケジューリング評価値演算器におけるセレクタに対するWFQ/固定帯域切り替え設定情報を保持するレジスタの構成を示すブロック図である。
【図36】図2及び図3に示す演算制御部によるWFQ/固定帯域切り替え制御を説明するためのタイムチャートである。
【図37】図4に示すパケットスケジューラの第1変形例を示すブロック図である。
【図38】(A)及び(B)は優先制御キューによるパケット出力動作を説明するための図である。
【図39】図37に示す優先制御回路の構成を示すブロック図である。
【図40】図37及び図39に示す優先制御回路による優先制御キューにおける評価値の共有を説明するための図である。
【図41】図4に示すパケットスケジューラの第2変形例を示すブロック図である。
【図42】図41に示すビットマップ制御部の構成を示すブロック図である。
【図43】 図41及び図42に示すビットマップ制御部によるマルチキャスト配信制御を説明するためのタイムチャートである。
【図44】 (A)及び(B)は図41及び図42に示すビットマップ制御部によるマルチキャスト配信制御を説明するための図である。
【図45】QoS制御の仕組みを説明するための図である。
【図46】WFQによる帯域制御概念を説明するための図である。
【図47】WFQによる帯域制御概念を説明するための図である。
【符号の説明】
1 パケット出力制御装置
2 フレームメモリ
3 変換テーブル
4 キュー管理部
41 パラメータメモリ
42 次ポインタメモリ
43 第3パラメータメモリ
44 パケットカウンタメモリ
45 ポインタテーブル
451 先頭ポインタメモリ
452 第4ポインタメモリ
453 最終ポインタメモリ
5 パケットスケジューラ
6 メモリ制御部
7 タイムスタンプ部
51 前処理部
52 演算制御部(時分割演算回線指定部)
521 演算出力回線テーブル
53,53−1〜53−n 先頭パケットメモリ
54 γ演算部(帯域配分率算出手段)
541 γ演算制御部
542 φ設定テーブル
543 φ加減算器
543−1〜543〜M φ累積器
5431 加減算器
5432 レジスタ
544,546 セレクタ
545 R設定テーブル
547 除算器
55 並列演算部
55−1〜55−n スケジューリング評価値演算器
551 α選択回路
552 出力判定回路
553 セレクタ(帯域配分率選択手段)
554 乗算器
555 加算器
556 設定レジスタ
55a−1〜55a−n 優先制御回路
551a パケット有無判定回路
551b 論理和(OR)回路
551c 1入力反転型の論積(AND)回路
56 選択部(同一出力回線内キュー間調停手段)
57 シェーピング部
57−1〜57−M 出力回線シェーピング回路
571 シェーピング制御部(出力回線シェーピング制御部)
571−1 出力判定値演算回路
571−2 出力判定回路
571−3 バースト制御部(出力回線バースト制御部)
5711 セレクタ
5712 除算器
5713 加算器
5714 レジスタ(R)
572 パケット情報レジスタ
57−1〜57−M 出力回線シェーピング回路
58 ポート間調停部(出力回線間調停手段)
59 デキュー制御部
591 シェーピング制御部(デキューバスシェーピング制御部)
591−1 出力判定値演算回路
591−2 出力判定回路
591−3 バースト制御部(デキューバスバースト制御部)
592 パケット情報レジスタ
60 タイマ
61 前評価値メモリ
62 ビットマップ制御部
621 ビットマップレジスタ
622 ビットマップ制御回路
623 データ有効判定回路
624 最終パケット判定回路
63 マルチキャスト先頭パケットメモリ
Claims (6)
- 複数の出力回線毎に設けられた複数のキューと、
入力されたパケットを当該パケットのフローに応じて該キューのいずれかにエンキューするエンキュー手段と、
該エンキュー手段により上記の各キューにエンキューされた各パケットについてのデキュー指示をスケジュールするパケットスケジューラと、
該パケットスケジューラからのデキュー指示によって指示されたキューからパケットをデキューするデキュー手段とをそなえるとともに、
該パケットスケジューラが、
同一出力回線に属する各キューにエンキューされた先頭パケットに関する少なくとも到着時刻情報及びパケットサイズ情報を含む所定のパラメータに基づいて当該先頭パケットの送信完了予定時刻を示す評価値をそれぞれ所定の評価値演算式により並列演算する並列演算手段と、
該並列演算手段での演算対象とする出力回線を時分割に指定して同一出力回線に属する各キューの先頭パケットについてのパラメータを該並列演算手段に入力させる演算制御手段と、
該並列演算手段で求められた同一出力回線に属する各キューの先頭パケットの評価値に基づいて優先出力すべき先頭パケットの評価値を選出する同一出力回線内キュー間調停手段と、
該同一出力回線内キュー間調停手段で選出された評価値を該出力回線毎に保持し、該出力回線毎の評価値と該出力回線の設定帯域とに基づいて優先出力すべき先頭パケットを決定する出力回線間調停手段と、
該出力回線間調停手段で決定した先頭パケットについてのデキュー指示を該デキュー手段に与えるデキュー制御手段とをそなえたことを特徴とする、パケット出力制御装置。 - 該演算制御手段が、上記の各出力回線の設定帯域に応じた割合で時分割に該並列演算手段での演算対象とする出力回線を指定する時分割演算回線指定部をそなえて構成されたことを特徴とする、請求項1記載のパケット出力制御装置。
- 複数の出力回線毎に設けられた複数のキューと、
入力されたパケットを当該パケットのフローに応じて該キューのいずれかにエンキューするエンキュー手段と、
該エンキュー手段により上記の各キューにエンキューされた各パケットについてのデキュー指示をスケジュールするパケットスケジューラと、
該パケットスケジューラからのデキュー指示によって指示されたキューからパケットをデキューするデキュー手段とをそなえるとともに、
該パケットスケジューラが、
同一出力回線に属する各キューにエンキューされた先頭パケットに関する少なくとも到着時刻情報及びパケットサイズ情報を含む所定のパラメータに基づいて当該先頭パケットの送信完了予定時刻を示す評価値をそれぞれ所定の評価値演算式により並列演算する並列演算手段と、
該並列演算手段での演算対象とする出力回線を選択的に指定して同一出力回線に属する各キューの先頭パケットについてのパラメータを該並列演算手段に入力させる演算制御手段と、
該並列演算手段で求められた同一出力回線に属する各キューの先頭パケットの評価値に基づいて優先出力すべき先頭パケットの評価値を選出する同一出力回線内キュー間調停手段と、
該同一出力回線内キュー間調停手段で選出された評価値を該出力回線毎に保持し、該出力回線毎の評価値と該出力回線の設定帯域とに基づいて優先出力すべき先頭パケットを決定する出力回線間調停手段と、
該出力回線間調停手段で決定した先頭パケットについてのデキュー指示を該デキュー手段に与えるデキュー制御手段とをそなえ、
該演算制御手段が、
上記の各出力回線の設定帯域に応じた割合で時分割に該並列演算手段での演算対象とする出力回線を指定する時分割演算回線指定部をそなえて構成されたことを特徴とする、パケット出力制御装置。 - 該パケットスケジューラが、
入力パケットの該パラメータに基づいて該評価値演算式中で繰り返し演算が不要な項を予め全キューで共通化された前処理として演算し、当該演算結果を該並列演算手段での演算に用いられる中間変数として該並列演算手段に入力する前処理部をそなえたことを特徴とする、請求項1〜3のいずれか1項に記載のパケット出力制御装置。 - 該パケットスケジューラが、
同一出力回線に属する各キューうちパケットの存在しないキューに割り当てられている帯域を、パケットの存在する同一出力回線に属する他のキューに配分する帯域配分率を算出する帯域配分率算出手段をさらにそなえ、
該並列演算手段が、
該帯域配分率算出手段で算出された同じ帯域配分率に基づいて、上記の各評価値を再計算するように構成されたことを特徴とする、請求項1〜4のいずれか1項に記載のパケット出力制御装置。 - 該パケットスケジューラが、
該複数の出力回線のうち同一パケットを配信すべき複数の出力回線を指定する配信先情報を保持する配信先情報保持手段と、
該配信先情報保持手段に保持された配信先情報によって指定されている出力回線が該演算制御手段によって指定される毎に、該並列演算手段で求められる同一キューについての該評価値が、該出力回線間調停手段での選定候補として当該出力回線間調停手段に入力されるように出力制御する配信制御手段とをそなえたことを特徴とする、請求項1又は3に記載のパケット出力制御装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002129149A JP3872716B2 (ja) | 2002-04-30 | 2002-04-30 | パケット出力制御装置 |
US10/281,366 US7190674B2 (en) | 2002-04-30 | 2002-10-25 | Apparatus for controlling packet output |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002129149A JP3872716B2 (ja) | 2002-04-30 | 2002-04-30 | パケット出力制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003324471A JP2003324471A (ja) | 2003-11-14 |
JP3872716B2 true JP3872716B2 (ja) | 2007-01-24 |
Family
ID=29243923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002129149A Expired - Fee Related JP3872716B2 (ja) | 2002-04-30 | 2002-04-30 | パケット出力制御装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7190674B2 (ja) |
JP (1) | JP3872716B2 (ja) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7181701B2 (en) * | 2003-01-03 | 2007-02-20 | Microsoft Corporation | Glanceable information system and method |
US7792121B2 (en) * | 2003-01-03 | 2010-09-07 | Microsoft Corporation | Frame protocol and scheduling system |
JPWO2004066570A1 (ja) * | 2003-01-17 | 2006-05-18 | 富士通株式会社 | ネットワークスイッチ装置およびネットワークスイッチ方法 |
US7369491B1 (en) * | 2003-05-14 | 2008-05-06 | Nortel Networks Limited | Regulating data-burst transfer |
US7751312B2 (en) * | 2003-06-13 | 2010-07-06 | International Business Machines Corporation | System and method for packet switch cards re-synchronization |
US7391777B2 (en) * | 2003-11-03 | 2008-06-24 | Alcatel Lucent | Distance-sensitive scheduling of TDM-over-packet traffic in VPLS |
US7876763B2 (en) * | 2004-08-05 | 2011-01-25 | Cisco Technology, Inc. | Pipeline scheduler including a hierarchy of schedulers and multiple scheduling lanes |
US7593755B2 (en) | 2004-09-15 | 2009-09-22 | Microsoft Corporation | Display of wireless data |
US7643493B1 (en) * | 2004-09-29 | 2010-01-05 | Altera Corporation | Method and apparatus for priority-provisioned arbitration scheduling for a switch fabric |
US7545815B2 (en) * | 2004-10-18 | 2009-06-09 | At&T Intellectual Property Ii, L.P. | Queueing technique for multiple sources and multiple priorities |
JP4483535B2 (ja) * | 2004-11-05 | 2010-06-16 | 株式会社日立製作所 | ネットワーク装置 |
US8289972B2 (en) * | 2004-11-10 | 2012-10-16 | Alcatel Lucent | Gigabit passive optical network strict priority weighted round robin scheduling mechanism |
US7606249B1 (en) * | 2004-12-21 | 2009-10-20 | Extreme Networks, Inc. | Methods and systems for caching packets to be written to or read from packet memory |
US7489690B2 (en) * | 2005-08-12 | 2009-02-10 | Cellco Partnership | Integrated packet latency aware QoS scheduling algorithm using proportional fairness and weighted fair queuing for wireless integrated multimedia packet services |
JP4833685B2 (ja) * | 2006-02-24 | 2011-12-07 | 富士通テレコムネットワークス株式会社 | Lanシステム及び帯域自動割当方法 |
JP4878185B2 (ja) * | 2006-03-17 | 2012-02-15 | 株式会社リコー | データ通信回路および調停方法 |
TW200816719A (en) * | 2006-08-23 | 2008-04-01 | Matsushita Electric Ind Co Ltd | Communication equipment |
WO2008153193A1 (ja) * | 2007-06-15 | 2008-12-18 | Nec Corporation | アドレス変換装置及びアドレス変換方法 |
US8141080B2 (en) * | 2007-08-30 | 2012-03-20 | International Business Machines Corporation | Asynchronous data structure pull application programming interface (API) for stream systems |
US8165033B1 (en) | 2007-08-30 | 2012-04-24 | Altera Corporation | Method and apparatus for performing generalized processor sharing scheduling |
US8861514B1 (en) * | 2007-09-27 | 2014-10-14 | Marvell International Ltd. | Method and apparatus for egress jitter pacer |
JP5088145B2 (ja) * | 2008-01-10 | 2012-12-05 | 富士通株式会社 | パケット中継装置、制御方法およびパケット中継プログラム |
US8345691B2 (en) | 2008-05-15 | 2013-01-01 | Cellco Partnership | Scheduling with quality of service support in wireless system |
JP5237841B2 (ja) * | 2009-01-27 | 2013-07-17 | アラクサラネットワークス株式会社 | 帯域制御装置および通信制御半導体 |
JP5263394B2 (ja) * | 2009-06-16 | 2013-08-14 | 富士通オプティカルコンポーネンツ株式会社 | 光通信装置及び光通信装置の節電制御方法 |
US8631213B2 (en) | 2010-09-16 | 2014-01-14 | Apple Inc. | Dynamic QoS upgrading |
US8510521B2 (en) | 2010-09-16 | 2013-08-13 | Apple Inc. | Reordering in the memory controller |
US8314807B2 (en) | 2010-09-16 | 2012-11-20 | Apple Inc. | Memory controller with QoS-aware scheduling |
US8909764B2 (en) * | 2011-07-28 | 2014-12-09 | Xyratex Technology Limited | Data communication method and apparatus |
JP5907763B2 (ja) * | 2012-03-13 | 2016-04-26 | 三菱電機株式会社 | 集線装置および優先制御システム |
US9258245B2 (en) * | 2012-09-12 | 2016-02-09 | Broadcom Corporation | Multiple cell dequeue for high speed queueing |
US20140149715A1 (en) * | 2012-11-28 | 2014-05-29 | Los Alamos National Security, Llc | Scalable and programmable computer systems |
US9053058B2 (en) | 2012-12-20 | 2015-06-09 | Apple Inc. | QoS inband upgrade |
US9229896B2 (en) | 2012-12-21 | 2016-01-05 | Apple Inc. | Systems and methods for maintaining an order of read and write transactions in a computing system |
JP6036310B2 (ja) * | 2013-01-09 | 2016-11-30 | 富士通株式会社 | パケット交換装置、伝送装置、及びパケットスケジューリング方法 |
US11038819B2 (en) * | 2017-06-29 | 2021-06-15 | Intel Corporation | Technologies for extracting extrinsic entropy for workload distribution |
JP6982250B2 (ja) * | 2018-07-31 | 2021-12-17 | 日本電信電話株式会社 | パケット転送装置、方法、及びプログラム |
CN110830380A (zh) * | 2018-08-09 | 2020-02-21 | 华为技术有限公司 | 确定报文出队的速率的方法及装置 |
US12224942B2 (en) * | 2020-03-05 | 2025-02-11 | Nippon Telegraph And Telephone Corporation | Network management systems, edge devices, network management devices, and programs |
EP4282152A4 (en) * | 2021-01-19 | 2024-11-27 | Dejero Labs Inc. | SYSTEMS AND METHODS FOR PUSH DATA COMMUNICATIONS |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9520807D0 (en) * | 1995-10-11 | 1995-12-13 | Newbridge Networks Corp | Fair queue servicing using dynamic weights |
US5859835A (en) * | 1996-04-15 | 1999-01-12 | The Regents Of The University Of California | Traffic scheduling system and method for packet-switched networks |
US6487212B1 (en) * | 1997-02-14 | 2002-11-26 | Advanced Micro Devices, Inc. | Queuing structure and method for prioritization of frames in a network switch |
JP3306705B2 (ja) | 1998-09-22 | 2002-07-24 | 富士通株式会社 | パケット転送制御装置及びそのスケジューリング方法 |
JP3438651B2 (ja) * | 1999-05-31 | 2003-08-18 | 日本電気株式会社 | パケット多重装置 |
US6891834B1 (en) * | 1999-09-09 | 2005-05-10 | Avici Systems | Apparatus and method for packet scheduling |
US7039013B2 (en) * | 2001-12-31 | 2006-05-02 | Nokia Corporation | Packet flow control method and device |
US7110411B2 (en) * | 2002-03-25 | 2006-09-19 | Erlang Technology, Inc. | Method and apparatus for WFQ scheduling using a plurality of scheduling queues to provide fairness, high scalability, and low computation complexity |
-
2002
- 2002-04-30 JP JP2002129149A patent/JP3872716B2/ja not_active Expired - Fee Related
- 2002-10-25 US US10/281,366 patent/US7190674B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7190674B2 (en) | 2007-03-13 |
US20030202517A1 (en) | 2003-10-30 |
JP2003324471A (ja) | 2003-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3872716B2 (ja) | パケット出力制御装置 | |
Stephens et al. | Implementing scheduling algorithms in high-speed networks | |
US6477144B1 (en) | Time linked scheduling of cell-based traffic | |
US7876763B2 (en) | Pipeline scheduler including a hierarchy of schedulers and multiple scheduling lanes | |
US6134217A (en) | Traffic scheduling system and method for packet-switched networks with fairness and low latency | |
CN111512602B (zh) | 一种发送报文的方法、设备和系统 | |
US20040151197A1 (en) | Priority queue architecture for supporting per flow queuing and multiple ports | |
EP1867112B1 (en) | Assigning resources to items such as processing contexts for processing packets | |
US20100278190A1 (en) | Hierarchical pipelined distributed scheduling traffic manager | |
US20130003755A1 (en) | Priority-aware hierarchical communication traffic scheduling | |
US7529224B2 (en) | Scheduler, network processor, and methods for weighted best effort scheduling | |
US7522609B2 (en) | Propagation of minimum guaranteed scheduling rates among scheduling layers in a hierarchical schedule | |
JP2000295228A (ja) | スイッチ及びそのスケジューラ並びにスイッチスケジューリング方法 | |
US10110515B2 (en) | Packet scheduling using hierarchical scheduling process | |
US8879578B2 (en) | Reducing store and forward delay in distributed systems | |
CN109729013A (zh) | 一种流量整形中添加令牌的方法、装置及计算机可读存储介质 | |
US7116680B1 (en) | Processor architecture and a method of processing | |
WO2016082603A1 (zh) | 一种调度器及调度器的动态复用方法 | |
US7065091B2 (en) | Method and apparatus for scheduling and interleaving items using quantum and deficit values including but not limited to systems using multiple active sets of items or mini-quantum values | |
KR20120055946A (ko) | 공평한 대역 할당 기반 패킷 스케줄링 방법 및 장치 | |
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 | |
JP3575688B2 (ja) | パケットスイッチ | |
JPH10135957A (ja) | トラヒックシェイパー装置 | |
US7474662B2 (en) | Systems and methods for rate-limited weighted best effort scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041124 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060620 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060627 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060825 |
|
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: 20061010 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061020 |
|
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 |