JP3673025B2 - Packet transfer device - Google Patents
Packet transfer device Download PDFInfo
- Publication number
- JP3673025B2 JP3673025B2 JP21356996A JP21356996A JP3673025B2 JP 3673025 B2 JP3673025 B2 JP 3673025B2 JP 21356996 A JP21356996 A JP 21356996A JP 21356996 A JP21356996 A JP 21356996A JP 3673025 B2 JP3673025 B2 JP 3673025B2
- Authority
- JP
- Japan
- Prior art keywords
- cell
- output
- buffer
- class
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、例えば、ATM通信網におけるセル多重化装置およびセルバッファ装置に関する。
【0002】
また、セルスイッチはセル多重化装置が複数個重ね合わされていることから、本発明のセル多重化装置の構成をセルスイッチのひとつの出力ポートに対応する構成としてセルスイッチに適用することが可能である。
【0003】
本発明のセルバッファ装置は、セルに限らず一般的なバッファ装置にも適用可能である。
【0004】
さらに、本発明はATM通信網のみならず、パケット交換網にも適用可能である。
【0005】
【従来の技術】
現在、ATM(Asynchronous Transfer Mode)通信方式に関する研究が、世界中の通信技術の研究者らによって精力的に行なわれている。ATM通信方式は情報をセルという固定長のパケットにより伝送交換する。ATM通信方式ではスイッチノード内のハードウェアによるセルスイッチにより、高速なセルの交換が可能で単位時間当たりの情報転送能力は既存の通信網を越えるものを実現可能である。
【0006】
ATM通信方式は、セルのヘッダのVPI(Virtual Path Identifier)とVCI(Virtual Channel Identifier)と呼ばれる識別情報により、ひとつの物理伝送路に論理的に複数のコネクション(Virtual Connection:VC)を設定することができる。網内の各スイッチノードにおいては、各VCに対して予めルートが定められており、スイッチノードはセルのコネクション識別子VPIとVCIからセルを出力すべき出方路を求める。VPIとVCIは、スイッチノード間の物理伝送路で一意に割り当てられるため、スイッチノードは、通過するセルのVPIとVCIの値を書き換える能力を持つ。
【0007】
これまで、ATM網において品質を保証されたVCは、CBR(Con− stant Bit Rate:固定ビットレート)コネクションかVBR (Variable Bit Rate:可変ビットレート)コネクションが中心であった。CBRコネクションは、セルの伝送速度(セルレートまたは帯域ともいう。単位時間当たりの伝送セル数)が一定で予めわかっているトラヒックを伝送するVCであり、VBRコネクションはセルの伝送速度が一定ではないが、その最大値(ピークレート)と平均値(平均レート)などのトラヒックの性質が予めわかっているVCである。
【0008】
基本的には、1本の物理伝送路に複数のVCを十分な品質を保ちつつ多重化する場合には、全てのVCのピークレートの和が物理伝送路の帯域以下になっていればよい。この手法をピークレート割り当てと呼ぶ。CBRコネクションのみをピークレート割り当てした場合には、物理伝送路の十分に高い利用効率が達成可能である。VBRコネクションの場合には、ピークレート割り当てでは、物理伝送路の利用効率を高くできない。そこで予め分かっているトラヒックの性質より、統計的多重化効果を用いて品質を保ちつつ利用効率を上げる技術がさかんに検討されている。
【0009】
ところが、計算機間のATM通信を考えると、平均レートを始めとしたトラヒックの性質が予め予測できないという性質や、瞬間的に大量のセルを送信するが、送信しないときには全くセルを送信しないというバースト性と呼ばれる性質がある。そのため、CBRやVBRの様に品質を保証しつつ網の利用効率を上げることは難しい。つまり計算機間で転送されるデータは、ピークレート割り当てなどで品質を保証しようとすると網の利用効率が著しく低下し、VBRの様に統計的多重化効果を用いるとトラヒックのバースト性のためにセルスイッチのある出力ポートに同時に大量のセルが到着し、セルスイッチのバッファ量が十分でないと、バッファ溢れによるセル廃棄が発生してしまう。また、セル廃棄が発生すると複数のセルで構成されているパケット単位で再送が発生し、これにより、実効的なスループットが低下する。
【0010】
そこで近年、端末とスイッチノード間でフロー制御をかけて、セルの転送品質(特にセル廃棄に関する品質)を保証し、かつ、網の利用効率を上げるABR (Available Bit Rate)というサービスクラスが提案され、検討が進んでいる。ABRコネクションは、経由するスイッチノードがセル輻輳におちいりそうになった場合には、スイッチノードがセル輻輳の発生前に、送信端末にセルの送出を迎えるように要求する。端末へのトラヒック制御情報は、主にRMセル(リソース管理セル)と呼ばれるセルを用いて行なう。ABRにおけるスイッチノードから送信端末へのトラヒック制御には無視できない遅延時間が存在する。そのため、トラヒック制御が有効に作用するまでセルを廃棄しないようにセルスイッチは大容量のバッファを実装する必要がある。
【0011】
CBR、VBR、ABRの他のサービスクラスとして、UBR (Unspecified Bit Rate)というサービスクラスが存在する。このクラスは、端末が出力するトラヒック特性を詳細に網に申告することを必要としない。そのかわり、網はその転送品質について一切の保証をしない、いわゆるベストエフォート(Best Effort)サービスのクラスである。
【0012】
前述したように、計算機間のデータはバースト性を持っているため、UBRコネクションのセル廃棄率を満足できるものとするためにはセルスイッチに大容量のセルバッファを実装する必要があると考えられている。
【0013】
幸いなことに計算機間のトラヒックは転送の遅延時間、遅延揺らぎに関しての要求がCBRやVBRと比較して厳しくはない場合が多い。容量の大きなバッファをセルスイッチに実装することによりセルの伝送遅延時間、遅延揺らぎが増大するが、それを許容できるアプリケーションは決して少なくないと考えられる。
【0014】
特にABR、UBRサービスの場合、網の輻輳を回避する手段が必要となると考えられる。輻輳回避手段のひとつとして、EFCI(Explicit Forward Congestion Indication)と呼ばれる方法がある。セルのヘッダ内に、そのセルの輻輳経験を書き込むEFCIビットがあり、網内のセルスイッチは、その輻輳状況に応じてEFCIをマークする。端末はその情報を利用することにより輻輳を回避することが可能となる。
【0015】
次に、VC間公平キューイングについて説明する。
【0016】
まず、ABRサービスにおける耐故障性から要求されるVC間公平キューイングについて述べる。
【0017】
ABRサービスは、網からのトラヒック制御情報に従って送信端末がセルの送出を制御することによって成立する。もし、ある端末が故障し(もしくは故意に)、網からのトラヒック制御情報を無視すれば、網の輻輳からの脱出が困難になるおそれがある。
【0018】
このような問題は、セル多重化装置またはセルスイッチにおいてVC間で公平なキューイングを行ない、VC間の公平なセル多重化スケジューリングとVC間の公平なバッファ割り当てを実現することにより解決できる。VC間公平キューイングを行なえばVC間の相互作用は最小限に抑えられ、もしトラヒック制御情報を無視するVCがあっても、そのVCのみが輻輳におちいり、その他のVCにおよぼす影響を低減できるからである。
【0019】
また、UBRサービスにおける公平性からもVC間公平キューイングが要求される。
【0020】
図48に、UBRサービスにおける不公平な帯域割り当ての例を示す。この例では網に端末A、B、C、Dの4つの端末と、ひとつのファイルサーバが存在し、それぞれがセルスイッチ(またはセル多重化装置)X、Y、Zとリンク1、2、3、4、5、6、7により接続されている。
【0021】
ここで、各セルスイッチが入力リンクに設定されているVC数に関わらずセルを多重化したとすると、各セルスイッチは入力ポートを平等に扱う。例えば、セルスイッチXは、リンク2とリンク3からのセルをリンク1へ多重化する場合に、両方のリンクを平等に扱うため、リンク1の帯域を1.0とすると、リンク2とリンク3にそれぞれ0.5の帯域を与える。
【0022】
同様に考えていくと最終的に各端末に与えられる帯域は、端末Aが最も大きく0.5、端末C、Dは最も少なく0.125である。全ての端末が平等にファイルサーバにアクセスすることが理想だとすれば、これは理想とはほど遠い。
【0023】
またさらに、網が輻輳に陥った場合、網は端末に帯域を小さくするようにEFCI情報を送信する。このとき、網内にEFCI情報に忠実に従う端末と、無視する端末が存在する場合、EFCIに忠実な端末のみがセルの送出を抑制するため、EFCIを無視する端末は不当に多くの帯域資源を確保することになってしまうという問題点もある。
【0024】
これらの問題は、セルスイッチが入力リンクに多重されているVC数を無視して各入力リンクを平等に扱っていることによる。セルスイッチがVC間公平キューイングを行ない、VC数に応じた帯域の分配を行なうことにより、各端末は公平にファイルサーバーにアクセスすることが可能となる。
【0025】
次に、クラス間の優先制御を行なうセル多重化装置について説明する。
【0026】
図49に従来のクラス間の優先制御を行なうセル多重化装置の構成を示す。
【0027】
図49は、N本の入力ポートから入力したセルを1本の出力ポートに多重化するセル多重化装置である。
【0028】
出力バッファは、内部のクラス毎のセル蓄積部にクラス毎にセルを蓄積し、出力ポートへはクラスの優先度に応じてセルをセル選択部が選択し出力する。
【0029】
出力バッファの各蓄積部に蓄積しているセル数としきい値とを比較してバックプレッシャ信号を生成する。入力バッファもまたクラス毎のセル蓄積部が設けられており、バックプレッシャ信号により出力が許可されているクラスの中からクラスの優先度に応じてセルを出力バッファへ転送する。
【0030】
この構成では出力バッファに複数のクラス毎セル蓄積部を設ける必要があるため、クラス数が多くなると出力バッファの実現が困難になるという欠点があった。特に、出力バッファの入力速度は入力ポートの速度のN倍(Nは入力ポート数)である必要があり、クラス数、入力ポート数が大きな場合は、この様な複雑な機能を実現することは困難であった。
【0031】
図49を、セルスイッチの各出力ポートに関する部分と考えると、入力ポートにバッファを持つセルスイッチについても同じ問題点が存在する。
【0032】
次に、セル多重化装置について説明する。
【0033】
図50に示すような入力バッファを持つセル多重化装置の問題点を説明する。
【0034】
図50は、N本の入力ポートから入力されたセルを1本の出力ポートに多重化するセル多重化装置である。
【0035】
出力バッファは、入力ポートからのセルを一時的に蓄積し、出力ポートの速度に応じてセルを出力する。
【0036】
出力バッファに蓄積しているセル数としきい値とを比較してバックプレッシャ信号を生成する。入力バッファは出力ポートに対応してひとつのキューを持ち、バックプレッシャ信号により出力が許可されているときのみセルを出力バッファへ転送する。
【0037】
この様なセル多重化装置は設定されているVC数に関わらず各入力バッファを公平に扱ってしまうため、ABRサービスにおける耐故障性や、UBRサービスにおける公平性に問題があった。
【0038】
図50を、セルスイッチの各出力ポートに関する部分と考えると、入力ポートにバッファを持つセルスイッチについても同じ問題点が存在する。
【0039】
次に、VC間公平キューイングについて説明する。
【0040】
図51にVC間公平キューイングの実現方法であるVC毎のFIFOの構成を示す。
【0041】
図51は、入力リンクより入力したセルのコネクション識別情報をバッファポインタ管理部に通知し、バッファポインタ管理部よりセルの書き込み位置を示す書き込みポインタを得てセルを一時的にセルバッファに蓄積し、バッファポインタ管理部からの、読みだしセルを示す読みだしポインタに基づいてセルをセルバッファから読みだし出力リンクへ出力するセルバッファ装置である。バッファポインタ管理部は、蓄積しているセルのセルバッファ上の位置を示すバッファポインタを管理する。
【0042】
バッファポインタ管理部はVCテーブルによりバッファポインタをVC毎に管理する。図51は広く知られているポインタチェーンによる管理方法を示している。
【0043】
セルが入力すると空きチェーンの先頭からバッファポインタを書き込みポインタとして一つ取りだし、入力セルに対応するVCのチェーンの末尾につける。セルを出力する時は、セルを蓄積しているVCを公平に選択し、その先頭のバッファポインタを読みだしポインタとして取りだす。セル出力時にVCを公平に選択する方法として、ラウンドロビンが知られている。
【0044】
VCをラウンドロビンで選択するためには、VCテーブル上で、前回出力したVCの次から、バッファに蓄積しているセルがあるかどうかを順に検索しなければならない。検索は、多い場合にはほぼ全てのVCを1セル周期で行なう必要があるが、設定すべきVC数は数千以上に及ぶ場合があり、実現は困難であった。
次に、キュー長監視について説明する。
【0045】
図52に、例えば図50の様な、入力バッファを持つセル多重化装置における、入力バッファのキュー長の変化の一例を示す。
【0046】
横軸は時間、縦軸は上が入力バッファのキュー長、下がバックプレッシャ信号である。バックプレッシャ信号が出力禁止を指示しているとき(Tup)、入力バッファからの出力スループットはゼロであるためキュー長はバッファの入力レート(Ri )で増加する。バックプレッシャ信号が出力可能を指示しているとき、入力バッファからの出力スループットは最大であり、通常キュー長は減少する。
【0047】
この様にキュー長はバックプレッシャ信号に同期して振動する。従来、バッファにセルが到着したとき、キュー長がしきい値を越えていれば入力したセルを受け付けず廃棄し、越えていなければ受け付けることが広く行なわれている。この方法は通常のバッファでは問題ないが、この様にバッファの出力がバックプレッシャ信号に制御されている場合に問題となる。キュー長の最大値は入力レート (Ri )とバックプレッシャ信号が出力禁止を指示している時間(Tup)によって決定され、特にバックプレッシャ信号の出力禁止時間(Tup)は、他の入力バッファへの入力トラヒックなどに大きく影響されるからである。
【0048】
バックプレッシャ信号により制御されるバッファ装置の場合は、単純にキュー長としきい値と比較してセルの廃棄を決定する方法では外部条件によりセルの廃棄が過敏に影響され安定したセルの廃棄が困難であった。キュー長から輻輳を判断する場合にも同じ問題点があった。
【0049】
次に、優先制御を行うセルバッファ装置について説明する。
【0050】
図53に、優先制御を行なうセルバッファ装置の構成を示す。
【0051】
遅延に関して低優先のセルを一時的に蓄積する、クラス1セル蓄積部と、高優先のセルを一時的に蓄積するクラス2セル蓄積部とあって、それぞれの出力はクラス多重化FIFOにより多重化される。クラス管理部は、クラス2セル蓄積部セル数Na およびクラス多重化FIFOセル数Nb を入力し、どちらかのクラスへ転送指示を与える。転送指示を受けたクラスのセル蓄積部は1セルだけクラス多重化FIFOへ転送する。
【0052】
このセルバッファ装置の優先制御の性能を高めるためにはクラス多重化FIFOの蓄積セル数を少なくすることが必要であるが、スループットを低下させないためには、クラス多重化FIFOを努めて空にしない(=アンダフローしない)ように転送を指示する必要がある。さらに、どちらか一方のセル蓄積部が空になっている時に、空のセル蓄積部に対して転送を指示してしまった場合(空指示と呼ぶ)にはアンダフローしてしまう可能性があるため、転送指示は蓄積セルが存在するセル蓄積部に対して行なう必要がある。
【0053】
以上の方針から、クラス管理部がクラス2セル蓄積部へ転送指示を行なう条件は、
(Nb ≦1)and(Na >1)
で与えられる。クラス1セル蓄積部への転送指示は、
(Nb ≦1)and(Na ==0)
である。
【0054】
ここで、クラス毎のセル蓄積部やクラス多重化FIFOからクラス管理部へのセル数情報の伝送や、クラス管理部からクラス毎セル蓄積部への転送指示情報の伝送、さらにはクラス毎セル蓄積部からセル多重化FIFOへのセル転送に遅延時間が存在する場合を考える。このとき従来は次のような問題点が存在していた。
【0055】
これらの遅延時間により、クラス多重化FIFOがアンダフローするかどうかがクラス管理部で正確に判定できなかった。そこでクラス多重化FIFO内セル数をこの遅延時間に応じた大きめのしきい値と比較してアンダフローしないための条件としていた。この結果、クラス多重化FIFOの平均キュー長が大きくなり優先制御の性能が低下した。
【0056】
また、高優先であるクラス2セル蓄積部情報の伝送が遅れることにより、クラス2セル蓄積部が空になったことを正確に判断できない。したがって空になっているのに空でないと誤り、空指示をしてしまうか、空でないのに空であると誤り、高優先であるクラス2のセルよりも低優先のクラス1のセルが優先して出力してしまうような指示を行なってしまっていた。結果としてセルバッファ装置のスループットが低下したり優先制御機能の性能が低下する問題点があった。
【0057】
以上、図53の優先制御を行なうセルバッファ装置に関して問題点を述べた。この問題はこの様な優先制御を行なうセルバッファ装置のみならず、さまざまなセルバッファ装置において発生し得る。
【0058】
つまり、複数のバッファ間のセルの転送を管理部が指示するセルバッファ装置において、管理部へのバッファ情報の伝送、管理部からバッファへの転送指示情報の伝送、バッファ間のセルの伝送に遅延時間が存在する場合、セルバッファ装置の性能やスループットが低下してしまうという問題点があった。
【0059】
【発明が解決しようとする課題】
以上述べたように、従来のセル多重化装置には次のような第1、第2の2つの問題点があった。
【0060】
まず、出力バッファに複数のクラス毎セル蓄積部を設ける必要があるため、クラス数が多くなると出力バッファの実現が困難になるという欠点があった。特に、出力バッファの入力速度は入力ポートの速度のN倍(Nは入力ポート数)である必要があり、クラス数、入力ポート数が大きな場合は、この様な複雑な機能を実現することは困難であった。
【0061】
次に、設定されているVC数に関わらず各入力バッファを公平に扱ってしまうため、ABRサービスにおける耐故障性や、UBRサービスにおける公平性に問題があった。
【0062】
また、従来のセルバッファ装置には次のような第3、第4の2つの問題点があった。
【0063】
まず、VCをラウンドロビンで選択するためには、VCテーブル上で、前回出力したVCの次から、バッファに蓄積しているセルがあるかどうかを順に検索しなければならない。検索は、多い場合にはほぼ全てのVCを1セル周期で行なう必要があるが、設定すべきVC数は数千以上に及ぶ場合があり、実現は困難であった。
【0064】
これに対し近年、”Efficient Fair Queueing Deficit Round Robin”(pp.231−242、ACM SIGCOMM ’95、1995年8月)に記載されているようなアルゴリズムが提案されている。この文献で提案されているDRRというアルゴリズムはアクティブリストという概念を用いてセルを蓄積しているVCを管理するため、セル出力時のVCテーブルの検索が不要である。従って、設定すべきVC数が増えても高速にVC間公平キューイングの為の出力すべきセルの選択が実現できる。しかしながら、このDRRアルゴリズムでは、パケットを各VC毎に分類して蓄積するため各VCに設定された重みの値に応じた量のパケットが一度に出力されてしまい、その出力トラヒックのバースト性が非常に高くなってしまうという欠点があった。
【0065】
次に、バックプレッシャ信号により制御されるバッファ装置の場合は、単純にキュー長としきい値と比較してセルの廃棄を決定する方法では外部条件によりセルの廃棄が過敏に影響され安定したセルの廃棄が困難であった。キュー長から輻輳を判断する場合にも同じ問題点があった。
【0066】
さらに、複数のバッファ間のセルの転送を管理部が指示するセルバッファ装置においては、次にような第5の問題点があった。すなわち、管理部へのバッファ情報の伝送、管理部からバッファへの転送指示情報の伝送、バッファ間のセルの伝送に遅延時間が存在する場合、セルバッファ装置の性能やスループットが低下してしまうという問題点があった。
【0067】
本発明は、上述の点に鑑みてなされたもので、その目的とするところは、入力ポート数が大きな場合においても実現が容易なクラス間の優先制御を行なうセル多重化装置を提供することにある。
【0068】
本発明の他の目的は、ABRサービスにおける耐故障性や、UBRサービスにおける公平性を実現するVC毎公平キューイングを行なうことができるセル多重化装置を提供することにある。
【0069】
本発明の別の目的は、設定可能なVC数の上限に依存することなく容易に実現することのできるVC間公平キューイングを行なうセル多重化装置を提供することにある。
【0070】
本発明のさらに別の目的は、キュー長の監視結果が外部条件の影響を受け難く、安定したキュー長の監視が容易であるセル多重化装置を提供することにある。
【0071】
本発明のもう一つの目的は、複数のバッファ間のセルの転送を管理部が指示する際に、管理部へのバッファ情報の伝送、管理部からバッファへの転送指示情報の伝送、バッファ間のセルの伝送に遅延時間が存在する場合においても、従来のように性能やスループットが低下しないセル多重化装置を提供することにある。
【0072】
【課題を解決するための手段】
本発明のパケット転送装置(請求項1〜4)は、入力されたパケットを一時的に蓄積する複数の入力バッファと、これら入力バッファを制御する制御手段と、前記各入力バッファから出力されるパケットを転送する少なくとも1つの出力ポートを具備したパケット転送装置であって、
前記各入力バッファは、
入力したパケットを一時的にクラス毎に蓄積するクラス毎の蓄積手段と、
前記制御手段から指示されたクラスのパケットを前記蓄積手段から前記出力ポートへ向けて出力する出力手段とを具備し、
前記制御手段は、
前記蓄積手段の複数の入力バッファ全体における蓄積状況をクラス毎に把握し、この蓄積状況に基づいてパケットを出力すべきクラスを決定し、この決定したクラスの指定を含む指示を前記複数の入力バッファに送信することにより、
制御部が複数の入力バッファ全体の状況を把握して(少なくとも全体の状況を把握していればよいが、個々の入力バッファ毎に把握していても構わない)指示を出すため、各入力バッファのクラス毎の蓄積状況の違いによりクラス間の優先関係が崩れてしまうことが生じず、また、入力ポートの数すなわち入力バッファの数が増えても容易にクラス間の優先制御を実現できる。
【0073】
また、本発明のパケット転送装置(請求項5、6)は、複数の入力バッファと、これら入力バッファを制御する制御手段と、前記各入力バッファから出力されるパケットを転送する少なくとも1つの出力ポートを具備したパケット転送装置であって、
前記各入力バッファは、
入力したパケットを一時的に蓄積する蓄積手段と、
前記制御手段からの指示を受けて、次のフェーズで前記蓄積手段から前記出力ポートへ向けて出力すべきパケットを選択する選択手段と、
この選択手段で選択されたパケットを前記出力ポートに向けて出力する出力手段とを具備し、
前記制御手段は、
前記複数の入力バッファ全体における前記選択手段で選択されたパケットの出力状況を把握し、この出力状況に基づいて新たなパケットを選択するよう前記複数の入力バッファに指示することにより、
あるフェーズ(その時間的長さは不定)内で出力されるべきパケット集合(カゴ)という概念を導入し、このパケット集合に入れるパケットの選択と、このパケット集合に入っているパケットのみを出力する(その他のパケットは出力が許可されない)という処理を各入力バッファが分担し、パケット集合に新たなパケットを入れるタイミングを指示する処理を制御部(カゴ管理部)が分担することにより、例えば、入力バッファ方式のセルスイッチにおいて、VC間公平キューイングを容易に実現できる。
【0074】
また、本発明のパケット転送装置(請求項7、8)は、入力したパケットを一時的に蓄積するバッファと、このバッファを制御する制御手段と、前記バッファから出力されたパケットを転送するパケット転送装置であって、
前記制御手段は、
前記バッファ内に蓄積されたパケットを複数の集合に分けて管理する管理手段と、
前記バッファに入力したパケットを各パケットの属するフロー間で公平になるように前記複数の集合のいずれか1つに振り分ける振り分け手段と、
前記管理手段で管理されている前記複数の集合のうちの1つの集合に属するパケットを出力するよう前記バッファに対し指示する指示手段と、
を具備することにより、制御手段(バッファポインタ管理部)でパケットが入力されたときに複数の集合への振り分けが行われており、パケットを出力するときには1つの集合に属するポインタを出すだけで済むので、設定すべきVC数が増えても高速にVC間公平キューイングのための出力すべきパケットの選択が実現できる。また、本発明の前記指示手段により、請求項5の選択手段の動作を実現することができる。さらに、本発明は、出力バッファ方式のセルスイッチでVC間公平キューイングをする際の出力バッファとして用いることができる。
【0077】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照して説明する。
【0078】
0. 用語の定義
以下、本発明の実施の形態を説明する上で用いられる用語の定義を行う。
【0079】
(1) パケットとは、固定長のセルを含む概念で、セルの上位概念と解することができる。また、以下の説明でパケットというときは、可変長、固定長を問わない。また、セルに限定して説明している場合でも、それは単に説明を簡単にするためのもので、特に、これに限るものではない。
【0080】
(2) パケット(セル)多重化装置とパケット(セル)バッファ装置の違い:
パケットバッファ装置:一つの以上の入力ポートと一つ以上の出力ポート及び一つ以上のバッファを具備し、入力ポートから入力されたパケットを必要に応じて一時的にバッファに蓄積し、出力ポートへ出力する装置。特にパケットを宛先に応じた出力ポートへ出力するパケットバッファ装置は、パケットスイッチと呼ばれる。
【0081】
パケット多重化装置:パケットバッファ装置の中でも特にパケットの出力ポートが一つのものをパケット多重化装置と呼ぶ(パケットバッファ装置を出力ポート毎に分けて考えると、入力ポートが共通な複数のパケット多重化装置の重ね合わせてとして見ることができる)。以下の説明において、パケット多重化装置について述べていることは、パケットバッファ装置にも容易に適用できる。
【0082】
(3)パケット転送装置:パケットバッファ装置と、その一種であるパケット多重化装置の双方を含む。また、以下の説明において、多重化装置あるいはバッファ装置を例にとり説明している場合も、特にこれに限るものではなく、広くパケット転送装置として適用できる。
【0083】
1. クラス間優先制御(第1の実施形態、第2の実施形態)
まず、本発明に係るクラス間の優先制御を行なうセル多重化装置の実施形態について説明する。
【0084】
1.1 第1の実施形態
図1に、第1の実施形態に係るクラス間の優先制御を行なうセル多重化装置の構成例を示す。
【0085】
図1のセル多重化装置は、入力ポート#1〜#Nのそれぞれに対応して設けられ、各入力ポート#1〜#Nから入力したセルを一時的に蓄積する複数の入力バッファ10と、入力バッファ10の出力したセルを多重化し出力ポートへ出力する出力バッファ11と、全ての入力バッファを管理するクラス管理部12とを備える。
【0086】
入力バッファ10は、入力したセルをクラス(クラス1〜クラス3)毎に蓄積するクラスのセル蓄積部13(クラス1セル蓄積部13a、クラス2セル蓄積部13b、クラス3セル蓄積部13c)と、セル蓄積部13から出力したセルを多重化し出力バッファ11へ出力するクラス多重化FIFO14を備えている。
【0087】
クラス管理部12は、セル蓄積部13のクラス毎セル蓄積部セル数と、クラス多重化FIFO14のクラス多重化FIFOセル数を得て、予め定められたアルゴリズムより転送クラス指示を決定して全ての入力バッファ10へ同報する。
【0088】
入力バッファ10に同報された転送クラス指示で指示されたクラスのセル蓄積部13は、セルをクラス多重化FIFO14へ転送し、クラス多重化FIFO14は、出力バッファ11内の輻輳状態に応じたバックプレッシャ信号の制御に従って出力バッファ11へセルを出力する。
【0089】
クラス毎セル蓄積部13は通常はFIFO(First In First Out)メモリで構成される。
【0090】
図1は3クラス(クラス1〜クラス3)の場合を示したが、第1の実施形態はクラス数に関わらず有効に作用する。
【0091】
また、図1を、セルスイッチの、各出力ポートに関する部分と考えるとセルスイッチについても第1の実施形態を適用できる。
【0092】
図1の出力バッファ11は、単段のFIFO15から構成されているが、どんな状況においてもクラス多重化FIFO14のセルをある有限の時間内で出力ポートに出力できることを保証できれば、どんな形態でもよい。
【0093】
例えば、バッファを全く持たずにクラス多重化FIFO14のセルを調停して出力ポートに出力する構成でもよい。また例えば、後述の図3または図4に示す構成でもかまわない。
【0094】
図3に示した出力バッファ16は、FIFOが複数段(図3では2段)に構成されており、それぞれ前段のFIFOにバックプレッシャ信号が接続される。
【0095】
すなわち、図3の出力バッファ16は、入力側(前段)の複数のFIFO18に、入力バッファ10の各出力に対応して設けられる入力リンク#1〜#Nが接続され、それらFIFO18の各出力が出力側(後段)のFIFO19に接続されて構成され、後段のFIFO19から、その輻輳状態に応じて出力されるバックプレッシャ信号は、前段の複数のFIFO18のそれぞれに接続され、前段の複数のFIFO18のそれぞれから、その輻輳状態に応じて出力されるバックプレッシャ信号は、複数のクラス多重化FIFO14のそれぞれに接続される。
【0096】
図4に示した出力バッファ17は、図3と同様にFIFOが複数段(図4では2段)に構成されている。図3と異なるのは、入力側の複数のFIFO18のキュー長情報(または全てのFIFOのキュー長情報でもよい)をバックプレッシャ生成部20へ転送し、バックプレッシャ生成部20はキュー長情報からバックプレッシャ信号を生成し、全ての入力リンクへ同報することである。
【0097】
例えば、キュー長を全て合計してしきい値と比較し、しきい値を越えていればバックプレッシャ信号により出力バッファへの入力を禁止する。バックプレッシャ生成部20はクラス管理部12に存在しても良い。
【0098】
第1の実施形態のクラス間の優先制御を行うセル多重化装置によれば、高いスループットが必要な出力バッファにてクラスを識別する必要がないため、容易に実現することが可能となる。入力バッファはクラス毎にセルを管理する必要があるが、入力バッファに必要なスループットは低いため実現が容易となる。
【0099】
図1のセル多重化装置の構成をさらに詳細に説明する。
【0100】
クラス管理部12に入力されるクラス毎セル蓄積部セル数は、クラス毎に、全ての入力バッファ10のクラス毎セル蓄積部セル数の合計でよい。また、クラス多重化FIFOセル数も、全ての入力バッファ10の合計でよい。
【0101】
合計の演算はクラス管理部12の内部で行なっても良いし、クラス管理部12の外部で行なっても良い。
【0102】
セル数情報はクラス管理部12において比較的小さなしきい値と大小を判定する。しきい値が固定値であるか動的に変化する値であるかはクラス管理部12のアルゴリズムに依存するが、もししきい値がある固定値の場合はセル数の代わりにその比較結果をクラス管理部に入力してもよい。または、ある値以上はどのような値でもクラス管理部12の処理に影響を与えないのなら、それを利用してその値以上は一つの符号に符号化して入力しても良い。例えば4ビットで、セル数を(0000)=0、(0001)=1、(0010)=2、(0011)=3、…、(1101)=13、(1110)=14、(1111)=15以上、という16段階に符号化するなどとしてもよい。これによりクラス管理部12への入力情報を圧縮することができ、実装が容易になるという利点がある。
【0103】
セル数の合計を扱うことにより、クラス管理部12の実装を簡単化することができる。転送クラス指示も全ての入力バッファに同じ情報を同報することから、クラス管理部は入力バッファを個々に認識する必要がない。よって入力ポート数が多くなっても本質的な実装の困難度は変化しないという利点がある。
【0104】
クラス管理部12が転送指示を決定するアルゴリズムは例えば次のようなものである。
【0105】
1.クラス多重化FIFOセル数より、クラス多重化FIFOがアンダフローしないかどうかを判断し、アンダフローする可能性があると判断した場合のみアンダフローしないように転送指示を行なう。アンダフローとは、クラス多重化FIFOセル数がゼロになり、本来出力できるはずのクラス毎セル蓄積部のセルが有効に出力できない状態をいう。
【0106】
2.クラス毎セル蓄積部セル数より、入力バッファ10にセルが蓄積されているクラスを転送指示の候補とする。
【0107】
3.転送指示を行なうことができる場合に、転送指示の候補となっているクラスの中で最も優先度の高いクラスを求め、そのクラスの転送を指示する。
【0108】
クラス管理部12は出力バッファの状態とバックプレッシャ信号を直接考慮せずに転送クラス指示を行なう。そのため、転送クラス指示によるセルの転送スループットが、入力バッファ10からのセル出力スループットを、上回ることがあり、その差を一時的に吸収するためにクラス多重化FIFO14が用意されている。クラス管理部12はクラス多重化FIFOセル数を知ることで、転送クラス指示によるセル転送のスループットが、入力バッファ10からのセル出力スループットを、長時間連続して越えないように制御する。
【0109】
クラス毎セル蓄積部13からクラス多重化FIFO14へ実際に転送したセルを全ての入力バッファ10で合計したセル数(クラス毎転送セル数)をクラス管理部12が知ることにより、より詳細なクラス間の優先制御を行なうことができる。
【0110】
この場合、クラス管理部12が転送指示を決定するアルゴリズムは例えば次のようなものである。
【0111】
1.クラス多重化FIFO内セル数より、クラス多重化FIFOがアンダフローしないかどうかを判断し、アンダフローする可能性があると判断した場合のみアンダフローしないように転送指示を行なう。アンダフローとは、クラス多重化FIFOセル数がゼロになり、本来出力できるはずのクラス毎セル蓄積部13のセルが有効に出力できない状態をいう。
【0112】
2.クラス毎セル蓄積部セル数より、入力バッファにセルが蓄積されているクラスを転送指示の候補とする。
【0113】
3.クラス毎転送セル数より、クラス毎に予め定められたスループット以上のスループットを得ているクラスは、その程度に応じて転送指示する優先度を下げる。または転送指示の候補としない。
【0114】
4.クラス毎転送セル数より、クラス毎に予め定められたスループット以下のスループットしか得ていないクラスは、その程度に応じて転送指示する優先度を上げる。
【0115】
5.転送指示を行なうことができる場合に、転送指示の候補となっているクラスの中で最も優先度の高いクラスを求め、そのクラスの転送を指示する。
【0116】
1.2 第2の実施形態
次に、第2の実施形態について説明する。
【0117】
図2に、第2の実施形態に係るクラス間の優先制御を行なうセル多重化装置の他の構成例を示す。
【0118】
図2のセル多重化装置は、入力ポート#1〜#Nのそれぞれに対応して設けられ、各入力ポート#1〜#Nから入力したセルを一時的に蓄積する複数の入力バッファ100と、入力バッファ100の出力したセルを多重化し出力ポートへ出力する出力バッファ111と、全ての入力バッファ100を管理するクラス管理部112とを備える。
【0119】
入力バッファ100は、入力したセルをクラス(クラス1〜クラス3)毎に蓄積するクラス毎のセル蓄積部113(クラス1セル蓄積部113a、クラス2セル蓄積部113b、クラス3セル蓄積部113c)と、セル蓄積部113から出力したセルを多重化し出力バッファ111へ出力するクラス多重化FIFO114を備えている。
【0120】
クラス管理部112は、セル蓄積部113のクラス毎セル蓄積部セル数と、出力バッファ内セル数を得て、予め定められたアルゴリズムより転送クラス指示を決定して全ての入力バッファ100へ同報する。
【0121】
入力バッファ100に同報された転送クラス指示で指示されたクラスのセル蓄積部113は、セルをクラス多重化FIFO114へ転送し、クラス多重化FIFO114は、出力バッファ111内の輻輳状態に応じたバックプレッシャ信号の制御に従って出力バッファ111へセルを出力する。
【0122】
クラス毎セル蓄積部113は通常はFIFOで構成される。
【0123】
図2は3クラス(クラス1〜クラス3)の場合を示したが、第2の実施形態はクラス数に関わらず有効に作用する。
【0124】
図2を、セルスイッチの、各出力ポートに関する部分と考えるとセルスイッチについても第2の実施形態を適用できる。
【0125】
図2の出力バッファ111は、どんな状況においてもクラス多重化FIFOのセルをある有限の時間内で出力ポートに出力できることを保証できれば、どんな形態でもよい。
【0126】
例えば、図4に示す構成でもかまわない。
【0127】
なお、この場合、バックプレッシャ生成部20はクラス管理部112に存在してもよい。出力バッファ内セル数Nmは、バックプレッシャ生成部20にて加算し、図2のクラス管理部112へ出力する。
【0128】
第2の実施形態のクラス間の優先制御を行うセル多重化装置によれば、高いスループットが必要な出力バッファにてクラスを識別する必要がないため、容易に実現することが可能である。入力バッファ100はクラス毎にセルを管理する必要があるが、入力バッファ100に必要なスループットは低いため実現が容易である。
【0129】
図2のセル多重化装置の構成をさらに詳細に説明する。
【0130】
クラス管理部112に入力されるクラス毎セル蓄積部セル数は、クラス毎に、全ての入力バッファ100のクラス毎セル蓄積セル数の合計でよい。
【0131】
合計の演算はクラス管理部112の内部で行なっても良いし、クラス管理部112の外部で行なっても良い。
【0132】
セル数情報はクラス管理部112において比較的小さなしきい値と大小を判定する。しきい値が固定値であるか動的に変化する値であるかはクラス管理部112のアルゴリズムに依存するが、もししきい値がある固定値の場合はセル数の代わりにその比較結果をクラス管理部112に入力してもよい。または、ある値以上はどのような値でもクラス管理部112の処理に影響を与えないのなら、それを利用してその値以上は一つの符号に符号化して入力しても良い。例えば4ビットで、セル数を(0000)=0、(0001)=1、(0010)=2、(0011)=3、…、(1101)=13、(1110)=14、(1111)=15以上、という16段階に符号化するなどとしてもよい。これによりクラス管理部への入力情報を圧縮することができ、実装が容易になるという利点がある。
【0133】
セル数の合計を扱うことにより、クラス管理部112の実装を簡単化することができる。転送クラス指示も全ての入力バッファ100に同じ情報を同報することから、クラス管理部112は入力バッファ100を個々に認識する必要がない。よって入力ポート数が多くなっても本質的な実装の困難度は変化しないという利点がある。
【0134】
クラス管理部112が転送指示を決定するアルゴリズムは例えば次のようなものである。
【0135】
1.出力バッファ111内セル数より、出力バッファ111がアンダフローしないかどうかを判断し、アンダフローする可能性があると判断した場合のみアンダフローしないように転送指示を行なう。アンダフローとは、出力バッファセル数がゼロになり、本来出力できるはずのクラス毎セル蓄積部113のセルが有効に出力できない状態をいう。
【0136】
2.クラス毎セル蓄積部セル数より、入力バッファ100にセルが蓄積されているクラスを転送指示の候補とする。
【0137】
3.転送指示を行なうことができる場合に、転送指示の候補となっているクラスの中で最も優先度の高いクラスを求め、そのクラスの転送を指示する。
【0138】
クラス管理部112は出力バッファ111の状態を直接考慮して転送クラス指示を行なう。そのため出力バッファ111のバッファ量を十分用意すれば、バックプレッシャ信号が入力バッファからのセル出力を抑制することがなく、クラス多重化FIFO114は基本的に不要である。クラス管理部112は出力バッファ内セル数を知ることで、転送クラス指示によるセル転送のスループットが、出力バッファ111からのセル出力スループットを、長時間連続して越えないように制御する。
【0139】
このように入力バッファ100へのバックプレッシャ信号およびクラス多重化FIFO114は基本的に不要であるが、出力バッファ111のバッファ量が十分でない場合には有効に作用する。これらを備えていれば無い場合に比べ出力バッファ111のバッファ量を少なくできる。
【0140】
クラス毎セル蓄積部113からクラス多重化FIFO114へ実際に転送したセルを全ての入力バッファで合計したセル数(クラス毎転送セル数)をクラス管理部112が知ることにより、より詳細なクラス間の優先制御を行なうことができる。
【0141】
この場合、クラス管理部112が転送指示を決定するアルゴリズムは例えば次のようなものである。
【0142】
1.出力バッファ111内セル数より、出力バッファ111がアンダフローしないかどうかを判断し、アンダフローする可能性があると判断した場合のみアンダフローしないように転送指示を行なう。アンダフローとは、出力バッファセル数がゼロになり、本来出力できるはずのクラス毎セル蓄積部113のセルが有効に出力できない状態をいう。
【0143】
2.クラス毎セル蓄積部セル数より、入力バッファ100にセルが蓄積されているクラスを転送指示の候補とする。
【0144】
3.クラス毎転送セル数より、クラス毎に予め定められたスループット以上のスループットを得ているクラスは、その程度に応じて転送指示する優先度を下げる。または転送指示の候補としない。
【0145】
4.クラス毎転送セル数より、クラス毎に予め定められたスループット以下のスループットしか得ていないクラスは、その程度に応じて転送指示する優先度を上げる。
【0146】
5.転送指示を行なうことができる場合に、転送指示の候補となっているクラスの中で最も優先度の高いクラスを求め、そのクラスの転送を指示する。
【0147】
1.3 第1、第2の実施形態に係るセル多重化装置の利点
以上、説明したように、上記第1、第2の実施形態のクラス間の優先制御を行なうセル多重化装置によれば、高いスループットが必要な出力バッファにてクラスを識別する必要がないため、入力ポート数が大きな場合においても実現が容易であるという利点がある。
【0148】
2. 公平キューイング(第3〜第7の実施形態)
次に、本発明に係るVC間公平キューイングを行なうセル多重化装置の実施形態について説明する。
【0149】
2.1 第3の実施形態(出力バッファ型のセル多重化装置)
図5に、第3の実施形態に係るVC間公平キューイングを行なうセル多重化装置の構成例を示す。
【0150】
図5のセル多重化装置は、出力バッファ型と呼ばれ、入力ポート#1〜#Nのそれぞれに対応して設けられ、入力ポート#1〜#Nから入力したセルを、入力ポート数N倍の速度に速度変換する複数の速度変換回路200と、速度変換回路200の出力したセルを一時的に蓄積し出力ポートへ出力する出力バッファ201とを備える。
【0151】
出力バッファ201は、入力したセルをVC毎に分離するVC分離部201aと、各VC毎に設けられる複数のVC毎FIFO201bと、複数のVC毎FIFO201bのそれぞれから出力されるセルを選択して出力ポートへ出力するセル選択部201cを備えている。
【0152】
VC毎FIFO201bは十分良好なセル廃棄率を得るためには大容量でなければならない。またノンブロッキング条件より、VC毎FIFO201bの入力速度は入力ポートのN倍でなければならない。入力ポートの速度が大きい場合や、入力ポート数が多い場合は、この様なスループットを満足する高速大容量のメモリは安価ではなく、かつ、この様なスループットを満足しつつ複雑なVC毎のキュー管理を行なうことも困難である。
【0153】
2.2 第4の実施形態(「カゴ」という概念を用いたセル多重化装置)
次に、第4の実施形態について説明する。
【0154】
図6に、第4の実施形態に係るカゴと呼ぶ概念を用いたセル多重化装置の構成例を示す。
【0155】
図6に示したセル多重化装置は、入力ポート#1〜#Nのそれぞれに対応して設けられ、入力ポート#1〜#Nから入力したセルを一時的に蓄積する複数の入力バッファ210と、各入力バッファ210の出力したセルを多重化し出力ポートへ出力する出力バッファ211とを備え、出力バッファ211内の輻輳状態に応じてバックプレッシャ信号により各入力バッファ210のセル出力を制御する。
【0156】
このセル多重化装置は、出力許可済セル集合を管理するカゴ管理部212を備える。
【0157】
入力バッファ210に蓄積されているセルのうち、出力を許可されたセルの集合(出力許可済セル集合)をカゴと呼ぶ。入力バッファ210から出力するセルはカゴ213から選択する。
【0158】
カゴ管理部212は、カゴ213に含まれるセル数を入力し、予め定められたアルゴリズムよりカゴ213へのセル転送指示を決定して全ての入力バッファ210へ同報する。
【0159】
入力バッファ210は、セル転送指示により、カゴ213として確定されたセル以外の入力バッファ210に蓄積されているセルで、同一の時刻までに出力すべきセルの集合214をカゴ213に加える。
【0160】
図6を、セルスイッチの、各出力ポートに関する部分と考えるとセルスイッチについても第4の実施形態を適用できる。
【0161】
図6の出力バッファ211は、どんな状況においてもカゴのセルをある有限の時間内で出力ポートに出力できることを保証できれば、どんな形態でもよい。
【0162】
例えば、バッファを全く持たずにカゴ213のセルを調停して出力ポートに出力する構成でもよい。また例えば図3または図4に示す構成でもかまわない。
【0163】
なお、図4において、バックプレッシャ生成部20はカゴ管理部212に存在しても良い。
【0164】
第4の実施形態のVC間公平キューイングを行なうセル多重化装置によれば、高いスループットが必要な出力バッファは簡単な構成になっているため、容易に実現することが可能である。入力バッファはカゴによりセルを管理する必要があるが、入力バッファに必要なスループットは低いため、実現の容易性は高い。
【0165】
図6のセル多重化装置の構成をさらに詳細に説明する。
【0166】
カゴ管理部212に入力されるカゴ内セル数は、全ての入力バッファ210のカゴ内セル数の合計でよい。
【0167】
合計の演算はカゴ管理部212の内部で行なっても良いし、カゴ管理部212の外部で行なっても良い。
【0168】
セル数情報はカゴ管理部212において比較的小さなしきい値と大小を判定する。しきい値が固定値であるか動的に変化する値であるかはカゴ管理部212のアルゴリズムに依存するが、もししきい値がある固定値の場合はセル数の代わりにその比較結果をカゴ管理部212に入力してもよい。または、ある値以上はどのような値でもカゴ管理部212の処理に影響を与えないのなら、それを利用してその値以上は一つの符号に符号化して入力しても良い。例えば4ビットで、セル数を(0000)=0、(0001)=1、(0010)=2、(0011)=3、…、(1101)=13、(1110)=14、(1111)=15以上、という16段階に符号化するなどとしてもよい。これによりカゴ管理部212への入力情報を圧縮することができ、実装が容易になるという利点がある。
【0169】
セル数の合計を扱うことにより、カゴ管理部212の実装を簡単化することができる。カゴへのセル転送指示も全ての入力バッファ210に同じ情報を同報することから、カゴ管理部212は入力バッファ210を個々に認識する必要がない。よって入力ポート数が多くなっても本質的な実装の困難度は変化しないという利点がある。
【0170】
カゴ管理部212がカゴ213へのセル転送指示を決定するアルゴリズムは例えば次のようなものである。
【0171】
すなわち、カゴ内セル数Nkより、カゴ213内のセル数がアンダフローしないかどうかを判断し、アンダフローする可能性があると判断した場合のみアンダフローしないように転送指示を行なう。アンダフローとは、カゴ内セル数Nkがゼロになり、本来出力できるはずの入力バッファ210のセルが有効に出力できない状態をいう。
【0172】
入力バッファ210は、カゴ213へのセル転送指示に応じて、同一の時刻までに出力すべきセルの集合214をカゴ213に加える。例えばVC毎に設定する値Nx で重み付けされたVC間公平キューイングを行なう場合において、同一の時刻までに出力すべきセルとは、各入力バッファ210内のカゴ213に入っていないセルでVC毎に最も古いNx 個のセルを集めたものである。
【0173】
転送指示は全ての入力バッファ210に同報されるため、カゴ213には複数の入力バッファ210を通してVC間で公平にセルが入る。カゴ213のセルをカゴ213の外のセルよりも優先して出力バッファ211に転送することにより、複数の入力バッファ210を通してVC間で公平にセルを出力バッファ211へ転送することが可能である。
【0174】
出力バッファ211が、カゴ213から入力したセルをどんな場合でもある時間内に出力できる構成になっていれば、VC間で公平にカゴ213へ転送されたセルはその時間の遅延揺らぎを持って、出力ポートから出力される。
【0175】
図6は、例として、入力ポート#1、#2、#Nの入力バッファ210にそれぞれ2本、1本、3本のVCがキューイングされている状態を示している。全てのVCの重みが同じ時、VC間公平キューイングを行なえば、各入力バッファ210からの出力は2対1対3の割合になる必要がある。本実施形態のセル多重化装置は、カゴ管理部212から全ての入力バッファ210へ同報されるカゴ213へのセル転送指示によって、カゴ213内のセル数は各入力バッファで2対1対3の割合になり、結果的に出力バッファからの出力も2対1対3の割合になる。
【0176】
カゴ213へのセルの入力方法には2通りの方法がある。ここでは、転送を指示されたとき、各VC毎に最も古いNx 個(VC毎に設定する値)のセルをカゴに入れる場合を例にとって説明する。
【0177】
ひとつの方法は、入力バッファ210に入力したセルがカゴ213に入れる条件を満たしていても最初はカゴ213の中へ入れない方法である。セルはカゴ管理部212からセル転送が指示された場合にのみカゴ213に転送される。これにより、カゴ内セル数はカゴ管理部212がセル転送を指示した場合以外は減少する。
【0178】
別の方法は、入力バッファ210に入力したセルがカゴ213に入れる条件を満たしている時には最初からカゴ213の中へ入れてしまう方法である。つまり転送指示の時点でNx 個のセルをカゴ213に転送したVCは次の転送指示があるまでセルをカゴ213に入れることができないが、転送指示の時点でセルをカゴ213に全く転送しなかったVC、または転送セル数がNx 個に満たないVCは、Nx 個になるまで入力セルを転送指示がなくてもカゴに213入れることができる。これにより、カゴ内セル数は転送指示と転送指示の間においても増加することがあるが、ほぼ全てのアクティブなVCがNx 個のセルを転送した段階で減少する。なお、本実施形態はどちらの方法においても有効に作用する。
【0179】
第4の実施形態のセル多重化装置の輻輳状態の判断は、VC毎に、トラヒックにより変動する情報を予め定められた方法により監視すれば良い。そして、この輻輳判断を元にVC毎に端末にトラヒック制御情報を通知すればよい。
【0180】
監視すべき変動する情報は、例えば蓄積セル数、一定時間あたりの入力セル数とその目標値との関係、一定個数のセルが入力する時間とその目標値との関係である。蓄積セル数が多いVC、一定時間あたりの入力セル数が目標値からかけ離れて多いVC、一定個数のセルが入力する時間がその目標値からかけ離れて短いVCを輻輳しているVCと判断する。
【0181】
輻輳しているVCのセルのヘッダにあるEFCIをマークすることや、通過するRMセルを書き換えることにより、端末にトラヒック制御情報を通知することができる。
【0182】
2.3 第5の実施形態(「カゴ」という概念を用いたセル多重化装置の他の実施形態)
次に、第5の実施形態について説明する。
【0183】
図7に、第5の実施形態に係るカゴと呼ぶ概念を用いたセル多重化装置の他の構成例を示す。
【0184】
図7に示したセル多重化装置は、入力ポート#1〜#Nのそれぞれに対応して設けられ、各入力ポート#1〜#Nから入力したセルを一時的に蓄積する複数の入力バッファ220と、入力バッファ220の出力したセルを多重化し出力ポートへ出力する出力バッファ221とを備え、出力バッファ221内の輻輳状態に応じてバックプレッシャ信号により入力バッファ220のセル出力を制御する。
【0185】
このセル多重化装置は、出力許可済セル集合を管理するカゴ管理部222を備える。
【0186】
入力バッファ220に蓄積されているセルのうち、出力を許可されたセルの集合(出力許可済セル集合)をカゴと呼ぶ。入力バッファから出力するセルはカゴ223から選択する。
【0187】
カゴ管理部222は、出力バッファ内セル数を入力し、予め定められたアルゴリズムよりカゴ223へのセル転送指示を決定して全ての入力バッファ220へ同報する。
【0188】
入力バッファ220は、セル転送指示により、カゴ223以外の入力バッファ220に蓄積されているセルで同一の時刻までに出力すべきセルの集合224をカゴ223に加える。
【0189】
図7を、セルスイッチの、各出力ポートに関する部分と考えるとセルスイッチについても本実施形態を適用できる。
【0190】
図7の出力バッファ221は、どんな状況においてもカゴ223のセルをある有限の時間内で出力ポートに出力できることを保証できれば、どんな形態でもよい。
【0191】
例えば、図4に示す構成でもかまわない。この場合、バックプレッシャ生成部20はカゴ管理部222に存在しても良い。出力バッファ内セル数はバックプレッシャ生成部20にて加算し、カゴ管理部222へ出力する。
【0192】
第5の実施形態に係るVC間公平キューイングを行なうセル多重化装置によれば、高いスループットが必要な出力バッファは簡単な構成になっているため、容易に実現することが可能である。入力バッファはカゴによりセルを管理する必要があるが、入力バッファに必要なスループットは低いため、実現の容易性は高い。
【0193】
図7のセル多重化装置の構成をさらに詳細に説明する。
【0194】
セル数情報はカゴ管理部222において比較的小さなしきい値と大小を判定する。しきい値が固定値であるか動的に変化する値であるかはカゴ管理部222のアルゴリズムに依存するが、もししきい値がある固定値の場合はセル数の代わりにその比較結果をカゴ管理部222に入力してもよい。または、ある値以上はどのような値でもカゴ管理部222の処理に影響を与えないのなら、それを利用してその値以上は一つの符号に符号化して入力しても良い。例えば4ビットで、セル数を(0000)=0、(0001)=1、(0010)=2、(0011)=3、…、(1101)=13、(1110)=14、(1111)=15以上、という16段階に符号化するなどとしてもよい。これによりカゴ管理部222への入力情報を圧縮することができ、実装が容易になるという利点がある。
【0195】
カゴ管理部222がカゴ223へのセル転送指示を決定するアルゴリズムは例えば次のようなものである。
【0196】
すなわち、出力バッファ内セル数より、出力バッファ221内のセル数がアンダフローしないかどうかを判断し、アンダフローする可能性があると判断した場合のみアンダフローしないように転送指示を行なう。アンダフローとは、出力バッファ内セル数がゼロになり、本来出力できるはずの入力バッファ220のセルが有効に出力できない状態をいう。
【0197】
入力バッファ220は、カゴ223へのセル転送指示に応じて、同一の時刻までに出力すべきセルの集合224をカゴ223に加える。例えばVC毎に設定する値Nx で重み付けされたVC間公平キューイングを行なう場合において、同一の時刻までに出力すべきセルの集合とは、各入力バッファ内のカゴ223に入っていないセルでVC毎に最も古いNx 個のセルを集めたものである。
【0198】
転送指示は全ての入力バッファに同報されるため、カゴ223には複数の入力バッファを通してVC間で公平にセルが入る。カゴ223のセルをカゴの外のセルよりも優先して出力バッファ221に転送することにより、複数の入力バッファ220を通してVC間で公平にセルを出力バッファ221へ転送することが可能である。出力バッファ221が、カゴ223から入力したセルをどんな場合でもある時間内に出力できる構成になっていれば、VC間で公平にカゴ223へ転送されたセルはその時間の遅延揺らぎを持って、出力ポートから出力される。
【0199】
図7は、例として、入力ポート#1、#2、#Nの入力バッファ220にそれぞれ2本、1本、3本のVCがキューイングされている状態を示している。全てのVCの重みが同じ時、VC間公平キューイングを行なえば、各入力バッファ220からの出力は2対1対3の割合になる必要がある。
【0200】
図7のセル多重化装置は、カゴ管理部222から全ての入力バッファ220へ同報されるカゴ223へのセル転送指示によって、カゴ内のセル数は各入力バッファで2対1対3の割合になり、結果的に出力バッファ221からの出力も2対1対3の割合になる。
【0201】
カゴ223へのセルの入力方法には2通りの方法がある。ここでは、転送を指示されたとき、各VC毎に最も古いNx 個(VC毎に設定する値)のセルをカゴに入れる場合を例にとって説明する。
【0202】
ひとつの方法は、入力バッファ220に入力したセルがカゴ223に入れる条件を満たしていても最初はカゴの中へ入れない方法である。セルはカゴ管理部222からセル転送が指示された場合にのみカゴ223に転送される。これにより、カゴ内セル数はカゴ管理部222がセル転送を指示した場合以外は減少する。
【0203】
別の方法は、入力バッファ220に入力したセルがカゴ223に入れる条件を満たしている時には最初からカゴ223の中へ入れてしまう方法がある。つまり転送指示の時点でNx 個のセルをカゴ223に転送したVCは次の転送指示があるまでセルをカゴ223に入れることができないが、転送指示の時点でセルをカゴ223に全く転送しなかったVC、または転送セル数がNx 個に満たないVCは、Nx 個になるまで入力セルを転送指示がなくてもカゴ223に入れることができる。これにより、カゴ内セル数は転送指示と転送指示の間においても増加することがあるが、ほぼ全てのアクティブなVCがNx 個のセルを転送した段階で減少する。なお、本実施形態はどちらの方法においても有効に作用する。
【0204】
第5の実施形態のセル多重化装置の輻輳状態の判断は、VC毎に、トラヒックにより変動する情報を予め定められた方法により監視すれば良い。そして、セル多重化装置は、この輻輳判断を元にVC毎に端末にトラヒック制御情報を通知すればよい。
【0205】
監視すべき変動する情報は、例えば蓄積セル数、一定時間あたりの入力セル数とその目標値との関係、一定個数のセルが入力する時間とその目標値との関係である。蓄積セル数が多いVC、一定時間あたりの入力セル数が目標値からかけ離れて多いVC、一定個数のセルが入力する時間がその目標値からかけ離れて短いVCを輻輳しているVCと判断する。
【0206】
輻輳しているVCのセルのヘッダにあるEFCIをマークすることや、通過するRMセルを書き換えることにより、端末にトラヒック制御情報を通知することができる。
【0207】
2.4 第4、第5の実施形態に係るセル多重化装置の利点
以上説明したように、上記第4〜第5の実施形態に係る出力許可済セル集合 (カゴ)の概念を用いたセル多重化装置によれば、出力許可済セル集合に入れるセルを制御することにより各入力バッファの出力スループットを調整するため、VC間公平キューイングを行なうことができ、ABRサービスにおける耐故障性や、UBRサービスにおける公平性を実現することが可能である。
【0208】
2.5 第6の実施形態(セルグループFIFOを用いたセルバッファ装置)次に、本発明に係るVC間公平キューイングを行なうセルバッファ装置の実施形態について説明する。
【0209】
図8に、第6の実施形態に係るセルグループFIFOを用いたセルバッファ装置の構成例を示す。
【0210】
図8は、入力リンクより入力したセルのコネクション識別情報をバッファポインタ管理部230に通知し、バッファポインタ管理部230よりセルの書き込み位置を示す書き込みポインタを得てセルを一時的にセルバッファ231に蓄積し、バッファポインタ管理部230からの、読みだしセルを示す読みだしポインタに基づいてセルをセルバッファ231から読みだし出力リンクへ出力するセルバッファ装置である。
【0211】
バッファポインタ管理部230は、蓄積しているセルのセルバッファ231上の位置を示すバッファポインタを管理する。
【0212】
バッファポインタ管理部230は、バッファポインタの集合である複数のセルグループをFIFO管理するセルグループFIFO232aと、出力待ちセルグループFIFO232bと、セルグループ選択部233と、空きバッファポインタ管理部234からなる。
【0213】
バッファポインタ管理部230は、セル入力時には、空きバッファポインタ管理部234より空きのバッファポインタを得て前記書き込みポインタとするとともに、セルグループ選択部233がコネクション識別情報より書き込みポインタをセルグループFIFO232aの先頭のセルグループより順にVC毎に予め定められた重みに従って決定される数だけ入るようにセルグループ指示を行ない、セルグループFIFO232aはセルグループ指示に従って書き込みポインタを指示されたセルグループに入力する。
【0214】
セル出力時には、セルグループFIFO232aの先頭よりセルグループを出力し、さらにそのセルグループよりバッファポインタを出力して前記読みだしポインタとするとともに、その読みだしポインタを空きバッファポインタ管理部234に戻す。
【0215】
図8では、セルグループFIFO232aから出力され、出力を待っているセルグループが複数になる可能性がある場合の構成を示している。これらのセルグループFIFO232aから出力されたセルグループは出力待ちセルグループFIFO232bに入力される。
【0216】
出力待ちセルグループFIFO232bのセルグループは、セルバッファ231の外部の何らかの管理部により出力を許可されたセルグループである。例えば、図6のカゴ231に相当する。
【0217】
読みだしポインタは、出力待ちセルグループFIFO232bの先頭のセルグループから出力されたバッファポインタである。
【0218】
例えば全てのVCの重みを同じとする。セルグループFIFO232aの先頭のセルグループのセルは、各VCのキューを考えるとキューの先頭(ただし出力待ちセルグループFIFO232b内のセルは除く)のセルである。セルグループFIFO232aの先頭から2番目のセルグループのセルは、各VCのキューの2番目のセルである。3番目以降のセルグループのセルも同様である。これらのセルを出力する場合はセルグループFIFO232aの先頭のセルグループから順に出力するためVC間で公平に出力することになる。
【0219】
今まで全く到着していなかったVCのセルが新たにこのバッファ装置に到着した場合は、セルグループFIFO232aの先頭のセルグループに入力され、他のVCのキューの2番目以降のセルよりも優先して出力される。
【0220】
この様に、第6の実施形態に係るセルバッファ装置によれば、VC間で公平にキューイングを行なうことが可能でありながらセルの入力、出力時に図50に示した従来例のように検索動作が不要であるという利点がある。
【0221】
第6の実施形態に係るセルバッファ装置のセルグループFIFO232aの実現方法は、例えばポインタチェーンによる方式やリングバッファによる方式が考えられる。
【0222】
2.6 第7の実施形態(セルグループFIFOを用いたセルバッファ装置の他の実施形態)
次に、第7の実施形態について説明する。
【0223】
図9に、第7の実施形態に係るセルグループFIFOを用いたセルバッファ装置の他の構成例を示す。
【0224】
図9は、入力リンクより入力したセルのコネクション識別情報をバッファポインタ管理部240に通知し、バッファポインタ管理部240よりセルの書き込み位置を示す書き込みボインタを得てセルを一時的にセルバッファ241に蓄積し、バッファポインタ管理部240からの、読みだしセルを示す読みだしポインタに基づいてセルをセルバッファ241から読みだし出力リンクへ出力するセルバッファ装置である。
【0225】
バッファポインタ管理部240は、蓄積しているセルのセルバッファ241上の位置を示すバッファポインタを管理する。
【0226】
バッファポインタ管理部240は、バッファポインタの集合であるセルグループをFIFO管理するセルグループFIFO242と、セルグループ選択部243と、空きバッファポインタ管理部244からなる。
【0227】
バッファポインタ管理部240は、セル入力時には、空きバッファポインタ管理部244より空きのバッファポインタを得て前記書き込みポインタとするとともに、セルグループ選択部243がコネクション識別情報より書き込みポインタをセルグループFIFO242の先頭のセルグループより順にVC毎に予め定められた重みに従って決定される数だけ入るようにセルグループ指示を行ない、セルグループFIFO242はセルグループ指示に従って書き込みボインタを指示されたセルグループに入力する。
【0228】
セル出力時には、セルグループFIFO242の先頭のセルグループよりバッファポインタを出力して前記読みだしポインタとするとともに、その読みだしポインタを空きバッファポインタ管理部244に戻す。
【0229】
図9では、セルグループFIFO242内で出力を待っているセルグループを出力待ちセルグループFIFO242bとして記してある。
【0230】
出力待ちセルグループFIFO242bのセルグループは、セルバッファ241の外部の何らかの管理部により出力を許可されたセルグループである。例えば、図6のカゴに相当する。
【0231】
読みだしポインタは、出力待ちセルグループFIFO242bの先頭のセルグループから出力されたバッファポインタである。
【0232】
例えば全てのVCの重みを同じとする。セルグループFIFO242の先頭のセルグループ(すなわち、出力待ちセルグループFIFO242b内のセルグループ)のセルは、各VCのキューを考えるとキューの先頭のセルである。セルグループFIFO242の先頭から2番目のセルグループのセルは、各VCのキューの2番目のセルである。3番目以降のセルグループのセルも同様である。これらのセルを出力する場合はセルグループFIFO242の先頭のセルグループから順に出力するためVC間で公平に出力することになる。
【0233】
今まで全く到着していなかったVCのセルが新たにこのバッファ装置に到着した場合は、セルグループFIFO242の先頭のセルグループに入力され、他のVCのキューの2番目以降のセルよりも優先して出力される。
【0234】
この様に、第7の実施形態に係るセルバッファ装置によれば、VC間で公平にキューイングを行なうことが可能でありながらセルの入力、出力時に図51に示した従来例のように検索動作が不要であるという利点がある。
【0235】
第7の実施形態に係るセルバッファ装置のセルグループFIFO242の実現方法は、例えばポインタチェーンによる方式やリングバッファによる方式が考えられる。
【0236】
2.7 第6の実施形態に係るセルバッファ装置で用いられるデータ構造
次に、第6の実施形態に係るセルバッファ装置(図8参照)で用いられるデータの構造について説明する。
【0237】
図10、図11に、図8で説明したバッファ装置をポインタチェーン方式で実現した場合のデータ構造の一例を示す。
【0238】
大きく分けて、図10に示すように、VCテーブル250、セルグループFIFO232a、出力待ちセルグループFIFO232b、空きバッファポインタチェーン251、また、図11に示すように、空きセルグループチェーン252で構成される。
【0239】
セルグループFIFO232aには、それを管理するセルグループFIFO管理データ253、出力待ちセルグループFIFO232bには、それを管理する出力待ちセルグループFIFO管理データ254がある。
【0240】
セルグループと空きバッファポインタチェーン251は、バッファポインタのチェーンであり、セルグループFIFO232aと空きセルグループチェーン252はセルグループ管理データ255のチェーンである。
【0241】
出力待ちセルグループFIFO232bは、出力待ちセルグループFIFO管理データ254にセルグループを指すポインタのリスト(Ptr1、Ptr2、Ptr3、…)がある。
【0242】
セルグループFIFO232a、出力待ちセルグループFIFO232bはリングバッファ方式でもかまわない。
【0243】
セルが入力した場合、空きバッファポインタチェーン251から取り出した書き込みポインタをどのセルグループに入力するかを決定しなければならない。そのため、まずVCテーブル250の該当する領域を読み出す。VCテーブル250のNx はそのVCの重み、Nc は作業変数、Qlen はそのVCの蓄積セル数、PtrはそのVCのセルが蓄積されているセルグループの末尾へのポインタである。
【0244】
はじめに、Qlen をチェックして、そのVCのセルが現在バッファ装置に蓄積されているかどうかを調べる。もし、Qlen がゼロの場合は、セルグループFIFO232aの先頭のセルグループに入れる。Qlen が1以上の場合でも、Ptrが出力待ちセルグループFIFO232b内のセルグループを指している場合は、セルグループFIFO232aの先頭のセルグループに入れる。
【0245】
その他の場合はNc に1.0を加えNx と比較し、Nx の方が大きければPtrで指しているセルグループに入れ、そうでない場合は、Ptrで指しているセルグループの次のセルグループに入れる。
【0246】
ここで、セルが入力した時のNc の更新手順について説明する。前述のように、そのVCに関してセルグループFIFO232aの先頭のセルグループに初めてバッファポインタを入力する場合は、Nc :=1.0とする。その他の場合は、Nc をNc :=Nc +1.0と更新する。その結果、もしNx >Nc ならば、そのセルグループにバッファポインタを入れる。逆に、もしNx <Nc ならば、セルグループFIFO232aの次のセルグループにバッファポインタを入れると同時に、Nc :=Nc −Nx と書き変える(つまり、0<Nc <Nx である)。
【0247】
もし、セルグループFIFO232aの最後のセルグループの次のセルグループにバッファポインタを入れる必要があれば、空きセルグループチェーン252の先頭よりセルグループ管理データ255をとりだし、セルグループFIFO232aの末尾に入れ、そのセルグループにバッファポインタを入れれば良い。 出力待ちセルグループFIFO管理データ254は、セルグループを指すポインタPtr1、Ptr2、Ptr3、…がシフトレジスタになっている。Ptr1の示すセルグループがFIFOの先頭であり、このセルグループから出力したバッファボインタが読みだしポインタとなる。読みだしポインタは空きバッファポインタチェーン251の末尾に入力する。Ptr1の示すセルグループのバッファポインタが空になったら、そのセルグループは空きセルグループチェーン252の末尾に入力する。そしてn>2の全てのnについてポインタPtr(n)をPtr(n−1)にシフトし、新しいPtr1の指すセルグループからバッファポインタを出力する。
【0248】
前述したように、セルの入力時にVCテーブル250のPtrが出力待ちのセルグループを指しているかどうか判定しなければならない。したがって出力待ちセルグループFIFO管理データ254は、検索が容易に可能な構成であることが必要である。
【0249】
セルグループFIFO232aから出力待ちセルグループFIFO232bに新たにセルグループを転送する場合には、出力待ちセルグループFIFO管理データ254のセルグループ数をインクリメントして(mとする)、Ptr(m)がセルグループFIFO232aから出力したセルグループを指すようにする。
【0250】
なお、第6の実施形態に係るセルバッファ装置は、図6や図7に示すようなカゴの概念を用いた入力バッファに容易に適用することができる。その場合、出力待ちセルグループFIFO232bがカゴに相当する。また、図5の出力バッファにも適用することができる。
【0251】
2.8 第7の実施形態に係るセルバッファ装置で用いれるデータ構造
次に、第7の実施形態に係るセルバッファ装置(図9参照)で用いられるデータの構造について説明する。
【0252】
図12、図13に、図9で説明したバッファ装置をポインタチェーン方式で実現した場合のデータ構造の一例を示す。
【0253】
大きく分けて、図12に示すように、VCテーブル260、セルグループFIFO242、空きバッファポインタチェーン261、また、図13に示すように、空きセルグループチェーン262で構成される。
【0254】
セルグループFIFO242の内部には、出力待ちセルグループFIFO242bが存在し、セルグループFIFO242を管理するセルグループFIFO管理データ263、出力待ちセルグループFIFO242bを管理する出力待ちセルグループFIFO管理データ264がある。
【0255】
セルグループと空きバッファポインタチェーン261は、バッファポインタのチェーンであり、セルグループFIFO242と空きセルグループチェーン262はセルグループ管理データ265のチェーンである。
【0256】
出力待ちセルグループFIFO242bは、セルグループFIFO242の先頭のいくつかのセルグループである。つまり図12において、セルグループFIFO管理データ263の先頭ポインタが指すセルグループから出力待ちセルグループFIFO管理データ264の末尾ポインタが指すセルグループまでが出力待ちセルグループFIFO242である。
【0257】
セルグループFIFO242、出力待ちセルグループFIFO242bはリングバッファ方式でもかまわない。
【0258】
セルが入力した場合、空きバッファポインタチェーン261から取り出した書き込みポインタをどのセルグループに入力するかを決定しなければならない。そのため、まずVCテーブル260の該当する領域を読み出す。VCテーブル260のNx はそのVCの重み、Nc は作業変数、Qlen はそのVCの蓄積セル数、PtrはそのVCのセルが蓄積されているセルグループの末尾へのポインタである。
【0259】
はじめに、Qlen をチェックして、そのVCのセルが現在バッファ装置に蓄積されているかどうかを調べる。もし、Qlen がゼロの場合は、セルグループFIFO242の先頭のセルグループに入れる。
【0260】
その他の場合はNc に1.0を加えNx と比較し、Nx の方が大きければPtrで指しているセルグループに入れ、そうでない場合は、Ptrで指しているセルグループの次のセルグループに入れる。
【0261】
ここで、セルが入力した時のNc の更新手順について説明する。前述のように、そのVCに関してセルグループFIFO242の先頭のセルグループに初めてバッファポインタを入力する場合は、Nc :=1.0とする。その他の場合は、Nc をNc :=Nc +1.0と更新する。その結果、もしNx >Nc ならば、そのセルグループにバッファポインタを入れる。逆に、もしNx <Nc ならば、セルグループFIFO242の次のセルグループにバッファポインタを入れると同時に、Nc :=Nc −Nx と書き変える(つまり、0<Nc <Nx である)。
【0262】
セルが入力した時、セルグループがセルグループFIFO242になかった場合、もし、セルグループFIFO242の最後のセルグループの次のセルグループにバッファポインタを入れる必要があれば、空きセルグループチェーン262の先頭よりセルグループ管理データ265をとりだし、セルグループFIFO242の末尾に入れ、そのセルグループにバッファポインタを入れれば良い。
【0263】
出力待ちセルグループFIFO管理データ264は、出力待ちセルグループFIFO242bの末尾を示すポインタを持っている。先頭はセルグループFIFO管理データ263の先頭のセルグループと同じである。
【0264】
出力待ちセルグループFIFO242bの先頭のセルグループ(セルグループFIFOの先頭と同じセルグループ)からバッファポインタを出力し、このバッファポインタが読みだしポインタとなる。読みだしポインタは空きバッファポインタチェーン261の末尾に入力する。
【0265】
セルグループFIFO242の先頭のセルグループのバッファポインタが空になったら、セルグループFIFO242からセルグループ管理データ265を出力し、空きセルグループチェーン262の末尾に入力する。
【0266】
出力待ちセルグループFIFO242bに新たにセルグループを転送する場合には、出力待ちセルグループFIFO管理データ264の末尾を示すポインタをセルグループFIFO242上の次のセルグループを指すように変更する。
【0267】
なお、第7の実施形態に係るセルバッファ装置は、図6や図7に示すようなカゴの概念を用いた入力バッファに容易に適用することができる。その場合、出力待ちセルグループFIFO242bがカゴに相当する。また、図5の出力バッファにも適用することができる。
【0268】
2.9 第6、第7の実施形態に係るセルバッファ装置の利点
以上説明したように、上記第6〜第7の実施形態に係るVC間公平キューイングを行なうセルバッファ装置によれば、VCテーブルを検索する処理が必要なく、したがって設定可能なVC数の上限に依存することなく容易に実現することができる。
【0269】
2.10 フロー間重み付き公平キューイング
以上のVC間公平キューイングを行なうセルバッファ装置は、固定長のパケットであるセルを扱う場合を例にあげて説明した。異なる長さのパケットを同時に扱うことが可能なパケットバッファ装置にも以下に説明するように入力したパケットをフロー毎に定めた重みに基づいて公平に出力することができる。
【0270】
ここでのフローとは、以下の例に示すようにある基準によって識別されるパケットの集合である。
【0271】
・IP網のいわゆるフロー(送信元アドレス、送信元レポート、宛先アドレス、宛先ポートの組で識別)、もしくはATM網のVCCまたはVPC。
【0272】
・IP網のサービスクラス(guaranteed、controlled−load、best−effortなど)、もしくはATM網のサービスカテゴリ(CBR、VBR、ABRなど)の違い。
【0273】
・プロトコルの違い(TCP/IP、DECnet、SNA、AppleTalkなど)
・アプリケーションの違い(ftp、telnetなど)
・同じバケットバッファ装置を共用する異なった組織(企業別など)
これらを本発明のパケットバッファ装置で異なったフローとして扱うことによりトラヒックを互いに分離することができる。
【0274】
はじめに、図14を用いて、一般的なフロー間重み付き公平キューイングを説明する。このパケットバッファ装置の目的は、装置に蓄積しているパケットをそのフローの重みに従って公平に出力することである。その動作は図14のようなフロー毎のFIFOを考えるとわかりやすい。図には、フロー1、フロー2、フロー3の3つのフローのキュー(FIFO)があり、それぞれのキューにはいろいろな長さのパケットが蓄積されている。図中のパケットに添えられている数字は、バイト数で表したそのパケットの長さである。
【0275】
このパケットバッファ装置にパケットが入力した場合の処理は、入力したパケットが属するフローを判定しフロー毎のキューに蓄積することである。
【0276】
一方パケットの出力については、フロー間で公平に行なうことが必要であり、どのキューのパケットをどの順で出力するかが重要である。ひとつの方法を図14の状況に合わせて説明する。説明を簡単にするためここでは各フローの重みを同じとしている。また公平の単位をここでは仮に500バイトと定めた。
【0277】
まずフロー1のキューの先頭から300バイトの長さのパケットと200バイトの長さのパケットの合わせて500バイト分のパケットを出力する。次にフロー2のキューの先頭から250バイトの長さのパケットを2個続けて出力する。そしてフロー3のキューの先頭から500バイトの長さのパケットをひとつ出力する。このように出力すると、この時点では各フローバイトの長さのパケットをひとつ出力する。このような出力にすると、この時点では各フローから等しく500バイトずつのパケットを出力しているので公平に出力したといってよい。続いて再びフロー1から順に各フローから500バイトずつパケットを出力することを繰り返せばよい。この様にすればパケットはフロー間で公平に出力される。
【0278】
以上の方法では500バイトを単位として公平になっているが、それより小さな単位では必ずしも公平になっていない。しかし厳密な公平性の実現はパケットバッファ装置に非常に大きな処理能力を要求することが知られており、現実問題として上述の程度の公平性で十分と判断される場合が多い。
【0279】
さて、上述の説明ではフローの数が3つであったが、パケットバッファ装置が莫大な数のフローを扱う場合、キューにパケットを蓄積しているフローをどの様に探索し、公平にパケットを出力するのかが課題になる。本発明は、パケットグループという概念を用いてこの課題を解決する。
【0280】
本発明は、前述の図14のZ、A、B、C、Dの様に全てのフローのキューを一定の長さに区切る。このとき、各区切りを単位としてパケットを出力することで公平なパケット出力を実現できることに着目する。本発明はこれらの区切り毎にパケットをグループ化して管理する。この各グループをパケットグループと呼ぶ。ひとつのパケットグループには複数のフローのパケットが混在する。パケットの出力はまず出力側に最も近いパケットグループZのパケットを出力し、次にパケットグループAのパケットを出力する。さらにB、C、Dというように順にパケットグループのパケットを出力することにより、本発明のパケットバッファ装置はフロー間で公平にパケットを出力できる。
【0281】
ところで図14において区切りBのフロー3を見ると、400バイトのパケットの次に350バイトのパケットが蓄積されている。図では同じ区切りに属するパケットは合計500バイトを上限としているため、パケットをパケットバッファ装置内部で分割しないとする400バイトのパケットと350バイトのパケットの両方を区切り、Bに入れることはできない。そうかといって、後からパケットバッファ装置に到着した350バイトのパケットを区切りBに入れなければ区切りBには100バイトのすき間が発生してしまう。この様な場合の扱いは後で述べる。
【0282】
以上本発明のパケットグループという概念について説明した。
【0283】
続いて本発明のパケットバッファ装置の一例を図15を用いてより具体的に説明する。
【0284】
本発明の構成要素として、パケットグループ、パケットグループFIFO、フローテーブル、出力待ちパケットグループがある。
【0285】
パケットグループは前述した様に蓄積しているパケットをグループ化したものである。図15ではA、B、C、Dがパケットグループである。各パケットグループに属するパケットには順序がついており、パケットグループはいわばFIFO構造になっている。
【0286】
本発明は図15のように、パケットのFIFOであるパケットグループをさらにFIFOで管理する。このパケットグループのFIFOをパケットグループFIFOと呼ぶ。
【0287】
フローテーブルはフロー毎の情報を記憶する。フローテーブルのNx はそのフローの重みの設定値、Nc は作業変数、蓄積量はそのフローの蓄積パケットの合計量、Ptrはそのフローの最後に到着したパケットが属するパケットグループへのポインタである。蓄積量はパケットバッファ装置がそのフローのパケットを蓄積しているかどうかを示す目的を持ち、例えばパケット入力時に入力パケット長を加え、パケット出力時に出力パケット長を引く変数とすることによりフロー毎に蓄積パケットの合計バイト数を保持する。
【0288】
出力待ちパケットグループは、パケットグループFIFOから出力されたパケットグループである(図ではパケットグループZ)。パケットバッファ装置からパケットを出力する場合、出力待ちパケットグループに属するパケットを出力する。
【0289】
パケットが入力した場合、そのパケットをどのパケットグループに入れるかを決定しなけらばならない。
【0290】
まずはじめに、そのフローのパケットが現在バッファ装置に蓄積されているかどうかを調べる。フロー識別情報よりフローテーブルのそのフローの蓄積量を参照し、それがゼロかどうかで判断できる。現在蓄積されていなければ、パケットグループFIFOの先頭のパケットグループ(図15のパケットグループA)に入力パケットを入れる。
【0291】
蓄積量がゼロより大きな場合でも、Ptrが出力待ちパケットグループ(図15のパケットグループZ)を指している場合は、やはりパケットグループFIFOの先頭のパケットグループAに入力パケットを入れる。
【0292】
その他の場合は、入力パケット長と、Nx 、Nc 、Ptrによって決定する。
【0293】
各フローのNx は、そのフローについて、ひとつのパケットグループが管理する平均的なパケットの量を示している。Nx はそのフローの最大パケット長よりも大きな値に設定する。
【0294】
Nc は、Nx −Nc を計算することにより、Ptrで示しているパケットグループに、そのフローが今後入れることのできる残りの量を示す。もしNx −Nc ≧(入力パケット長)ならば、Ptrで指しているパケットグループに入力パケットを入れ、逆にNx −Nc <(入力パケット長)ならば、パケットグループFIFO上で、Ptrが目指すパケットグループの次のパケットグループに入力パケットを入れる。
【0295】
パケットグループが決定すると、次にNc とPtrの値を更新する。パケットグループFIFOの先頭のパケットグループに、そのフローに関して1つめのパケットを入れた場合は、Nc :=(入力パケット長)とする。その他の場合は、まず、Nc :=Nc +(入力パケット長)とし、その結果もしNx <Nc ならさらにNc :=Nc −Nx と書き変える(つまり、0<Nc ≦Nx である)。Ptrはその入力パケットを入れたパケットグループへのポインタを書き込む。
【0296】
本発明では、ひとつのパケットをふたつのパケットグループが管理することはない。そのため入力パケットの長さがNx −Nc を越えている場合には、入力パケットをPtrの指すパケットグループに入れず次のパケットグループに入れる。しかしNc の計算上ではひとつのパケットをふたつのパケットグループに分割して入れる。つまり、Nc :=Nc +(入力パケット長)とし、Nx を越えた部分があれば、そのNc −Nx を次のパケットグループのNc とする。このアルゴリズムにより平均的に、ひとつのパケットグループあたりNx のパケットが属することになる。
【0297】
図15を用いてパケット入力動作を具体的に説明する。図15はフロー1で長さ250バイトのパケットがパケットバッファ装置に到着した場面である。このときフロー1のPtrはパケットグループBを指している。フローテーブルの更新は、上述の手続にしたがってNc をNc :=Nc +(入力パケット長)=200+250=450とする。この値はNx 以下のなので、この入力パケットはPtrが指しているパケットグループBに入れる。
【0298】
もし、仮にフロー1の入力パケット長が250ではなく350であった場合はNc :=200+350=550となりNx を越える。したがってさらに、Nc :=Nc −Nx =550−500=50と更新し、この入力パケットをパケットグループBの次のパケットグループCに入れる。PtrはパケットグループCに変更する。
【0299】
パケットグループFIFOは先入れ先だしのキューであり、キューイングしているパケットグループ数を必要なだけ増やすことができる。例えば、図15においてフロー2でパケット長が400のパケットが到着したと仮定すると、空きのパケットグループ(パケットグループE)がパケットグループDの次に追加され、入力パケットはそのパケットグループEに入れることになる。
【0300】
以上のようにパケット入力時の処理は、フローテーブルの該当箇所を変更することと、パケットグループにパケットを入れることと、必要があればパケットグループFIFOに空きのパケットグループを追加することでよい。フローテーブルを複数のフローに渡って検索することなく入力時の処理を行なうことが可能であり、フロー数が大きくなっても処理の複雑さは変化しない。
【0301】
一方、パケットの出力時に必要な処理はさらに簡単である。つまり出力待ちパケットグループからパケットを出力すればよい。必要に応じてパケットグループFIFOからパケットグループを出力することをその前に行なう。これらの処理もフローテーブルを複数のフローに渡って検索することなく可能であり、フロー数が大きくなっても処理の複雑さは変化しない。
【0302】
前述したように各フローの重みNx は、そのフローに関してひとつのパケットグループあたりの平均的なパケットの量を示している。そして本発明のパケットバッファ装置はパケットグループを単位としてパケットを出力するため、各フローの出力スリープットはNx に比例する。
【0303】
このパケットバッファ装置によれば、フローテーブルを検索する処理が必要なく、したがって設定可能なフロー数の上限に依存することなく容易に可変長パケットを扱い重み付き公平なパケットバッファ装置を実現することができる。
【0304】
本発明の各パケットグループはパケットを到着順に管理する。つまり同じパケットグループに属するパケットの出力順位は全てのフローを通して到着順になるということである。この性質はパケットの遅延揺らぎを低減する効果がある。
【0305】
また、本発明のパケットバッファ装置は、従来の技術で説明したDRRというアルゴリズムと比較すると、VC数が増えても高速にVC間公平キューイングの為の出力セルの選択が実現できるうえ、重みの値が大きくなっても出力トラヒックのバースト性が増加することがない。本発明でバースト性が増加しないのは、入力したパケットを複数の集合(パケットグループ)に振り分け管理する際に、ひとつの集合内ではパケットをフロー(VC)とは無関係に管理し、パケットをその集合(パケットグループ)から出力する際はフロー(VC)とは無関係に出力するからである。
【0306】
3. バックプレッシャを考慮したキュー監視(第8の実施形態)
次に、本発明の第8の実施形態に係るバックプレッシャを考慮したキュー監視を行うセルバッファ装置について説明する。
【0307】
図16に、例えば、前述の第1、第2、第4、第5の実施形態で説明したような入力バッファにおけるキュー長の変化の一例を示す。
【0308】
第8の実施形態に係るセルバッファ装置は、バックプレッシャ信号により出力が出力可能と出力禁止の2状態に制御されているセルバッファ装置であって、バックプレッシャ信号が出力可能から出力禁止に変化した時から次に出力可能から出力禁止に変化するまでの間で、最初のセル入力時の蓄積セル数のみを監視することを特徴とする。
【0309】
監視の目的は、輻輳の判定や、ひとつのバッファ領域を複数のキューが共用する場合においてバッファ領域の独占を防ぐための入力セル廃棄の判定などである。
【0310】
図17にバックプレッシャ考慮のキュー監視部を持つセルバッファ装置の構成例を示す。図17において、セルバッファ装置は、複数のキューQi(i=1〜N)、キューテーブル記憶部280、バックプレッシャ識別子(BPID)記憶部281、キュー監視部282から構成される。
【0311】
キューテーブル記憶部280に記憶されるキューテーブルのQlen i はそのキューの蓄積セル数、Cnti は輻輳判定変数(初期値ゼロ)、BPIDt i は最後のセル入力時のバックプレッシャ識別子(BPID)である。
【0312】
セルがキューに入力すると入力セル情報がキュー監視部282に転送される。また、BPIDはバックプレッシャ信号が出力可能から出力禁止に変化した時に図16の様にインクリメントされる。キュー監視部282はキュー長の監視を図18に示すアルゴリズムに基づいて行なう。
【0313】
図18にバックプレッシャを考慮したバッファのキュー長監視アルゴリズムの一例を示す。これはキュー長を監視して輻輳の有無を判断する例を示している。
【0314】
キューQiにセルが入力されて、セル入力処理が開始されると、まず、Qlen i をインクリメントする(ステップS1)。
【0315】
次に、BPIDとBPIDt i を比較することにより、キュー長を監視すべきかそうでないかを判断する(ステップS2)。すなわち、バックプレッシャ信号により変動するキュー長が短くなった時に監視する。
【0316】
BPID≠BPIDt i の場合、キュー長を監視すべきであり、まず、Cnti >1であるか否かを判断する(ステップS3)。このとき、Cnti >1場合は直前まで輻輳状態だと判断し、輻輳状態か否かを判断するためのしきい値Qthにヒステリシスを持たせた値(Qth−H)とQlen i 比較する(ステップS4)。
【0317】
一方、Cnti >1でない場合は、Qlen i >Qthを判定する(ステップS5)。 ステップS4、ステップS5でキュー長Qlen i をQth−HあるいはQthと比較した結果、これらのしきい値を越えているとき(すなわち、Qlen i >Qth−H、あるいは、Qlen i >Qthであるとき)、Cnti :=Qlen i −Qth+Hを行ない(ステップS6、ステップS7)、そうでなければCnti :=0とする(ステップS8、ステップS9)。さらに、ステップS10に進む。
【0318】
ステップS2で、BPID==BPIDt i の場合、キュー長を監視すべきではなく、そのままステップS10に進む。
【0319】
ステップS10では、Cnti >1を判定する。もし、そうであれば輻輳状態であり、ステップS11に進み、Cnti から「1」を減算し(Cnti :=Cnti −1)、入力セルを廃棄するなら(ステップS12)Qlen i から「1」を減算する(Qlen i := Qlen i −1)。Cnti >1でないなら(ステップS10)輻輳状態ではない。
【0320】
最後に、BPIDt i にBPIDの値を代入し、BPIDt i を更新する(ステップS13)。
【0321】
このように、図18に示したフローチャートによれば、バックプレッシャー信号が出力可能から出力禁止に変化した時から、次に、出力可能から出力禁止に変化する時までの最初のセル入力時の蓄積数のみを監視していることになる。
【0322】
なお、Hは、ヒステリシスに関するパラメタを示す。ヒステリシスはキュー長を監視して行なわれるセル廃棄や輻輳状態などの判定結果の振動を低減する作用がある。0<H<Qthであり、ヒステリシスが不要である場合はゼロに設定する。
【0323】
図18では、しきい値QthとヒステリシスパラメタHは全てのキューで同じ値を用いる場合を示しているが、キュー毎に異なる値を設定してもかまわない。
【0324】
ここで、しきい値Qthの決定方法を述べる。まず、バックプレッシャ信号によって制御されていないバッファを考える。このバッファは一定レートRi で入力し、一定レートR0 で出力するとする。Ri >R0 のとき、この負荷(Ri −RO )が加わってもtT 時間廃棄を起こさないために必要なバッファ量Qthは、Qth=(Ri −RO )×tT により求められる。
【0325】
これに対し、この第8の実施形態では、図16に示すように、入力レートはRi で一定であるが、入力バッファからの出力レートはTup時間(入力バッファからの出力禁止時間)についてはゼロ、Tdn時間(入力バッファからの出力可能時間)についてはRe である。Tup、Tdnの変化が少ないと仮定すると、先ほどと同じく、この負荷が加わってもtT 時間廃棄を起こさないために必要なバッファ量Qthは、
【数1】
【0326】
となる。ここで、出力ポートからの平均の出力レートR′0 は、
【数2】
【0327】
であるから、Qth=( Ri −R′O )×tT となり、この第8の実施形態のセルバッファ装置は、バックプレッシャのない単純なバッファ装置の場合のしきい値と同じしきい値を設定することにより、ほぼ同様の効果を得られると考えられる。
【0328】
なお、輻輳状態を判定する代わりに、セルの廃棄判定を行なう場合でも全く同じアルゴリズムが適用できる。
【0329】
以上説明したように、上記第8の実施形態に係るバックプレッシャ信号を考慮するセルバッファ装置によれば、キュー長の監視結果が外部条件の影響を受け難く、安定したキュー長の監視が容易である。
【0330】
4. 遅延を考慮したセル数情報の修正(第9の実施形態)
次に、本発明に係るセル数情報を修正するセルバッファ装置の実施形態について説明する。
【0331】
4.1 第9の実施形態(遅延を考慮したセルバッファ装置)
図19に、第9の実施形態に係る遅延を考慮したセルバッファ装置の構成を示す。
【0332】
図19に示したセルバッファ装置は、大きく分けて、ひとつ以上のセルバッファB(Ba、Bb、…)を複数段(図19では2段)接続してなるセルバッファ網300と、各セルバッファBのセル数を入力してセルバッファBへ転送指示を行なう管理部301とから構成される。
【0333】
管理部301は、転送指示の履歴302を保持し、新たな転送指示を決定する際にこの転送指示履歴302を使用することを特徴とする。
【0334】
前記管理部301は、セルバッファBがセル数を管理部301へ送信した時刻から、管理部が決定する転送指示がそのセルバッファBに作用する時刻までに、そのセルバッファBに作用する転送指示の回数を前記転送指示履歴302より求め、その転送指示の回数とセル数から転送指示を決定する。
【0335】
図20は、本発明の遅延を考慮したセルバッファ装置におけるセル数情報の修正原理を説明する図である。
【0336】
入力リンク#1、#2から入力したセルは、それぞれ前段のセルバッファBa1、Ba2に一時的に蓄積される。管理部301の転送指示に従いセルはセルバッファBb に転送され、セルバッファBb はセルを出力リンクへ出力する。
【0337】
管理部301には、Ba2のセル数Na2と、Bb のセル数Nb が伝送され、Ba1、Ba2に対して転送指示を出力する。
【0338】
今、Ba2からセル数情報が管理部301に到着し、その情報から転送指示を決定してBa2に転送を指示して、この転送指示によりBa2のセル数が変化するまでの遅延時間をDセル周期とする。また、Bb からセル数情報が管理部に到着し、その情報から転送指示を決定してBa1、Ba2に転送を指示して、この転送指示によりBa1またはBa2からBb へセルが転送されBb のセル数が変化するまでの遅延時間も、説明を簡単にするため同じDセル周期であるとする。
【0339】
ここで、図20を、セルバッファBa1、Ba2が図53のクラス1セル蓄積部、クラス2セル蓄積部に相当し、セルバッファBb がセル多重化FIFOに相当する優先制御を行なうセルバッファ装置と考える。Ba1、Ba2、Bb のセルバッファ間のセル転送の方針は図53と同じである。つまりBb の蓄積セル数を少なくすることが必要であるが、Bb を努めて空にしない(=アンダフローしない)ように転送指示をする。さらに、転送指示は空指示をしないように行なう(Ba2に蓄積セルが存在する場合にのみBa2に対して転送指示を行なう)。
【0340】
さて、時刻t2 でBa2から出力されたセル数情報Na2が管理部301へ到着し、時刻t3 に管理部301が転送指示を行なって時刻t4 にその転送指示によりBa2からセルが出力したとする。管理部301が知りたい情報は、転送指示が実際にBa2に作用する時刻t4 におけるBa2のセル数である。この時点を図20に白丸で示した。
【0341】
Ba2が時刻t2 からt4 の時間(=Dセル周期)でMa2回の転送指示を受け付けたとすると、この間にBa2はMa2セル出力したことになり、時刻t4 におけるBa2のセル数はNa2−Ma2である(Ba2へセルが入力しなかった場合)。
【0342】
通常、管理部301からBa2までの転送指示の伝送遅延は一定だから、Ba2が受信する転送指示回数Ma2は、t4 −t2 =D=t3 −t1 となるようなt1 とt3 間で管理部301が出力した転送指示の回数と等しい。従って、転送指示履歴302より転送指示回数Ma2を知ることにより、時刻t2 からt4 におけるBa2の減少セル数を正確に求めることができる。
【0343】
Bb に関しても同様に考えることができ、時刻t2 からt4 におけるBb のセル数の増加量(Ba2からの転送セルによる増加量)を正確に求めることができる。
【0344】
時刻t2 からt4 でのBa2への入力セル数は、管理部301は知ることができない。Ba2に対して空指示しないようにするためには、Ba2のセル数を少なめに見積もればよい。従って、入力リンクからBa2へのセル入力は、時刻t2 からt4 においてなかったと仮定する。
【0345】
また時刻t2 からt4 でのBb からのセル出力は、管理部301は知ることができない。Bb がアンダフローしないようにするためには、Bb のセル数を少なめに見積もる必要がある。従って、Bb からのセル出力は、時刻t2 からt4 において常に出力し続けたと仮定する(Dセル周期であるので、Dセルと仮定する)。さらに、Ba1からの入力セルもゼロと仮定する。
【0346】
まとめると、修正されたNa2、Nb をそれぞれN′a2、N′b とすると、
N′a2=Na2+0−Ma2
N′b =Nb +Ma2−D
である。よって管理部301がBa2へ転送指示を行なう条件は、
(N′b ≦Th)and(N′a >0)
で与えられる。Ba1への転送指示は、
(N′b ≦Th)and(N′a ≦0)
の条件で行なう。Thは通常は「1」である。以上のようにセル数を修正することにより、アンダフローや空指示を努めて少なくしつつ転送を指示することができる。
【0347】
4.2 一般的なバッファ網におけるセル数の修正方法
次に、一般的なバッファ網におけるセル数の修正方法について説明する。
【0348】
基本原理の説明には図21を用いる。図21には、すでに述べたようにセルバッファ網300と管理部301がある。セルバッファ網300は、着目しているセルバッファBx を含む。セルバッファBxは物理的には複数のバッファであっても良い。管理部はこのセルバッファBxからセル数情報を得て転送指示を与える。まず本発明を説明する際に使用する用語の定義を行う。
【0349】
4.2.1. 用語の定義
時刻は、特に断らない限り現在時刻をゼロとする相対時刻とし、セル周期経過毎に1ずつ増加するものとする。このような時刻の定義は他の表現方法に変換可能であり一般性がある。また、ある時刻t1からある時刻t2までの期間をpなどと表すことがあり、これをp=[t1、t2)と表す。この期間pは時刻t1を含み、t2は含まない。
【0350】
セルバッファBxの蓄積セル数をNxで表す。Nxは現在時刻(t=0)に管理部301に到着した蓄積セル数である。
【0351】
セルバッファBxに対し管理部301が時刻t(t<0)に出力した転送指示をIx(t)で表す。転送を指示した場合はIx(t)=1であり、転送を指示しない場合はIx(t)=0である。
【0352】
時刻t(t<0)に管理部301に到着したセルバッファBxのHOLセル数をHx(t)で表す。
【0353】
HOLセル数とは、1回の転送指示でセルバッファから一度に転送される可能性のあるセル数である。特に、現在時刻に管理部301に到着したHOLセル数情報HxをHx(0)と表す。
【0354】
本発明の管理部301は、時刻t(t<0)において得たセルバッファBxのHOLセル数Hx(t)および自らがセルバッファBxへ出力した転送指示Ix(t)を履歴として記憶する。
【0355】
ある期間pに管理部がセルバッファBxに転送を指示した回数をSmx(p)と表す。p=[t1、t2)のとき、Mx[t1、t2)とも表す。つまり、
【数3】
【0356】
図23に、セルバッファBxから管理部301へのセル数情報の流れと、管理部301からセルバッファBxへの転送指示の流れを表したタイムチャートを示す。
【0357】
この図の様に、時刻tf、tt、thを定める。時刻tfにおけるセルバッファBxの蓄積セル数Nxおよび時刻thにおけるセルバッファBxのHOLセル数Hxは、管理部301が現在時刻においてセルバッファBxに関し直接知り得る最新の情報であるとする。このとき管理部301は、時刻ttにおけるセルバッファBxの蓄積セル数を予測したいものとする。
【0358】
時刻tf、tt、thに対して、時刻t1、t3、t2を定める。時刻t1に管理部301が出力した転送指示がセルバッファBxに届く時刻をtfとし、時刻t2に管理部301が出力した転送指示がセルバッファBxに届く時刻をttとする。同様に時刻t3に管理部301が出力した転送指示がセルバッファBxに届く時刻をthとする。
【0359】
時刻t1、t2、t3は現在時刻より過去の時刻であるとする。つまり、t1<t2<0、t3<0とする。
【0360】
4.2.2. 基本原理
ここで本発明の基本原理を説明する。本発明の管理部301は転送指示の履歴から蓄積セル数の変化を予測する。前述のセルバッファBxについて、時刻ttの蓄積セル数を求めたい場合、それより過去にの時刻tfにおける蓄積セル数Nxに対して、転送指示の履歴を用いてこの期間に転送指示により転送されたセル数を予測して修正する。修正は、1回の転送指示により転送されるセル数が1以上であることに基づく。特に時刻th以降の最初の転送指示により転送されるセル数についてはHOLセル数Hx以上であることに基づく。
【0361】
4.2.3. 3つの関数
以上の基本原理より修正に使用する3つの関数、f( )、g( )、Sc()を定める。これらの関数は、時刻tfから時刻ttにおいてセルバッファBxが転送指示によるセルの転送でどのくらい変化するかを求めるものである。tf、ttと比較してthがどのような値であるかにより3通りの場合に分類でき、適用する関数が異なる。
【0362】
(1) 関数f( )
関数f( )は、th=tf<ttの場合に使用する。この時のタイムチャートを図22に示す。p1[t1、t2)とする。Hx≠0かつSmx(p1)≠0のときは、期間p1の最初の転送指示ではHxセル転送され、それ以降の転送指示では1セルずつ転送されると考える。時刻tfから時刻ttにおいて変化するセルバッファBxのセル数を計算する関数f( )は、Hxと期間p1の転送指示回数Smx(p1)を引数として、次のように求めることができる。
【0363】
【数4】
【0364】
(2) 関数g( )
関数g( )は、th<tf<ttの場合に使用する。この時のタイムチャートを図23に示す。p1=[t1、t2)とし、p2=[t3、t1)とする。
【0365】
この場合、時刻th以降に到着した初めての転送指示が期間p2に管理部301から出力されたか否かで場合分けが必要である。期間p2に管理部301から転送指示が出力されていないから、期間p1においてHxの値を用いることができる。時刻tfから時刻ttにおいて変化するセルバッファBxのセル数を計算する関数g( )は、Hxと期間p1、p2の転送指示回数Smx(p1)、Smx(p2)を引数として、次のように求めることができる。
【0366】
【数5】
【0367】
(3) 関数Sc( )
関数Sc( )は、tf<tt=thの場合に使用する。この時のタイムチャートを図24に示す。p1=[t1、t2)とする。管理部301が知り得る最新の蓄積セル数は時刻tfのときの値であるが、この場合はHOLセル数に関しては時刻tfから時刻ttまでの全ての期間における情報が管理部301にすでに到着している。
【0368】
転送指示がセルバッファBxへ到着した時点のHOLセル数がわかれば、転送されるセル数もわかることから、時刻tfから時刻ttにおいて変化するセルバッファのセル数を計算する関数Sc( )は、Ix(t)、Hx(t)を用い、期間p1を引数として、次のように求めることができる。
【0369】
【数6】
【0370】
以上説明してきたようなセル数の修正方法を、例えば、図1に示したようなクラス間の優先制御を行なうセル多重化装置に適用することは容易である。
【0371】
さらに、例えば、図6に示したようなVC間公平キューイングを行なうセル多重化装置に、セル数の修正方法を適用することも容易である。
【0372】
4.3 第9の実施形態に係るセルバッファ装置の利点
以上説明したように、上記第9の実施形態によれば、セルバッファとセルバッファを管理する管理部との間に遅延のあるセルバッファ装置は、転送指示を決定する際に転送指示の履歴を用いて、セルバッファから伝送されてきたセル数を、転送指示がセルバッファに作用する時刻のセル数に修正するため、遅延時間を原因とした性能の劣化が少ない。
【0373】
5.セルスイッチ(第10の実施形態)
5.1 第10の実施形態(セルスイッチ)
次に、第10の実施形態として、ここまで説明してきた本発明に係るセル多重化装置、セルバッファ装置を組み合わせたセルスイッチについて説明する。
【0374】
図25は、複数の入力ポート#i(i=1〜N)から入力したセルを一時的に蓄積し、バックプレッシャに応じて出力する複数の入力バッファIBと、内部の輻輳状態に応じてバックプレッシャ信号を出力するバックプレッシャ付きセルスイッチ400と、入力バッファIBとの間で情報を転送するカゴ管理部KMとからなる。
【0375】
この構成例において扱うセルは、大きくは高優先セル、低優先セルの2つの優先度を持ち、さらに低優先クラスは複数のクラスにわかれている。通常はCBR、VBRなどのリアルタイム情報を伝送するセルを高優先セルとし、ABR、UBRなどのノンリアルタイム情報を伝送するセルを低優先セルとする。
【0376】
まず、バックプレッシャ付きセルスイッチについて説明する。
【0377】
カゴスイッチの特徴は入力バッファIBとカゴ管理部KMにある。バックプレッシャ付きセルスイッチ400は入力したセルをある定められた時間内に出力できればよく、そのアーキテクチャは以下に示すものだけではない。例えば、電子情報通信学会技術報告SSE93−6“バッファ容量拡張可能なATMスイッチ:XATOM”にて示されているATMスイッチでもよい。
【0378】
図25に示すバックプレッシャ付きセルスイッチ400を一例として説明する。1段目単位スイッチSE1、2段目単位スイッチSE2、出力バッファOBからなり、SE1とSE2を並列リンクにて2段デルタ網接続し、SE2の出力したセルをOBへ転送して出力ポートへ出力する。SE1からOBの間はk倍速で動作する。kの値はセルスイッチがノンブロッキングになるように定める。例えばSE1、SE2が8入力8出力の時、全体で16入力16出力とする場合にはk=2とすればよい。
【0379】
図25のバックプレッシャ付きセルスイッチ400は、高優先セルと低優先セルの2段階の優先度を扱う構成である。
【0380】
低優先セルの交換にのみ着目すると基本構成は1995年電子情報通信学会総合大会B−589“ATM2段スイッチ網のバッファ容量拡張法”にて示されているものとほぼ等しい。低優先セルは、SE1、SE2で交換、コピーされる。
【0381】
低優先セルがOBで輻輳した場合には低優先セル用バックプレッシャ信号を用いてIBのその出力ポート行きのセル出力を抑制する。このバックプレッシャ信号により基本的にはOBおよびSE2のバッファを溢れさせないようにすることが可能である。しかし、マルチキャストセルの影響のためこれらのバッファが溢れそうになる場合があり、それに備えて低優先セル用オーバーフローバックプレッシャ信号がOBからSE2へ出力し、低優先セル非常用バックプレッシャ信号がSE2からIBへ出力する。IBが低優先セルを蓄積するのでSE2、OBでは廃棄されない。
【0382】
OBは、低優先セル用オーバーフローバックプレッシャ信号をSE2へ出力する代わりに、これを低優先セル非常用バックプレッシャ信号としてIBへ出力する構成でもよい。この場合は、SE2が低優先セル非常用バックプレッシャ信号を出力する必要はない。しかし、先に説明したように、低優先セル非常用バックプレッシャ信号をSE2から出力した方がSE2内でのバッファ共用化効果を有効に活用できるという利点がある。
【0383】
高優先セルは、低優先セルと同様、SE1、SE2で交換、コピーされる。高優先セルに関してはバックプレッシャ付きセルスイッチからIBへのバックプレッシャ信号はない。OBはその高優先セルの輻輳を反映した高優先セル用バックプレッシャ信号によりSE2のセル出力を制御する。IBは高優先セルを蓄積しない。SE2内に空きバッファが無ければ廃棄されることがある。
【0384】
次に、出力バッファについて説明する。
【0385】
図26に、カゴスイッチの出力バッファOBの構成例を示す。
【0386】
SE2からOBへ転送されたセルは識別部410にて優先度を識別され各優先度に対応したキューに入れられる。各キューのセルは選択部411により優先度に従って選択され出力ポートへ出力される。OBは、低優先セルのキュー長があるしきい値を越えた場合に低優先セル用バックプレッシャ信号を用いてIBの低優先セルの、そのOB行きの出力を止める。高優先セルのキュー長があるしきい値を越えた場合に高優先セル用バックプレッシャ信号を用いてSE2の高優先セルの、そのOB行きの出力を止める。低優先セルのマルチキャストセルの影響により低優先セルのキュー長が伸び続けた場合に備えて低優先セル用オーバーフローバックプレッシャ信号を用いてSE2の低優先セルの、そのOB行きの出力を止める。
【0387】
次に、単位スイッチについて説明する。
【0388】
図27に、カゴスイッチに用いる1段目単位スイッチSE1の構成例を示す。SE1は一般的によく知られているスイッチLSIである。入力リンクより入力したセルに対し、そのセルヘッダを識別部415で識別して所定の交換処理を行い出力リンクへ出力する。スイッチ全体がk倍速で動作していることから内部のセルバッファの蓄積セル数は多くならない。これについては1994年電子情報通信学会秋季大会B−439“並列リンクのあるスイッチ網の検討”にて知られている。
【0389】
図28に、カゴスイッチに用いる2段目単位スイッチSE2の構成例を示す。SE2は内部のキューが出力リンク毎に優先度毎のキューになっている。各優先度毎のキューの出力は選択部421により選択される。高優先セルが存在するときには、低優先セルの有無に関わらずその出力リンクに高優先セルを出力する。ただし、選択部421に入力している高優先セル用バックプレッシャ信号が、高優先セルの出力の禁止を指示している場合は高優先セルを出力せず、低優先セルを出力しても良い。低優先セルは低優先セル用オーバーフローバックプレッシャ信号により出力が禁止される場合がある。
【0390】
SE2は、複数の優先度、複数の出力リンク間で物理的なバッファ領域を共有することにより、SE2内部のバッファを効率的に使用することが可能である。バッファ状態管理部422は各キュー毎のキュー長、および優先度毎に全ての出力リンク行きのキュー長を合計した結果などをモニタする。
【0391】
例えば、高優先セル用キューは各キュー毎にしきい値を持ち、そのしきい値を越えた場合にそのキューの入力セルを廃棄する。低優先セル用キューは全てのキュー長の合計をモニタし、しきい値を越えた場合は低優先セル非常用バックプレッシャ信号により低優先セルの入力を禁止するようにIBに伝える。
【0392】
SE1はSE2と同じ単位スイッチを使用してもかまわない。
【0393】
図25のバックブレッシャ付きセルスイッチ400は2段の単位スイッチSE1とSE2によりセルを交換するが、内部の経路は各入力ポートと出力ポートのペアにひとつずつしか定めない。そのため各単位スイッチはセルヘッダを見てセルをコピーしつつ交換する際に複雑な経路の選択アルゴリズムは必要ない。出力ポート数が32ポート程度以下であるなら、セルのヘッダに出力ポートのビットマップ情報を付加することが容易に可能である。SE1、SE2はそのビットマップ情報に基づいてセルを交換する。
【0394】
次に、入力バッファIBについて説明する。
【0395】
図29に、カゴスイッチの入力バッファIBの構成例を示す。
【0396】
IBに入力した高優先セルは、ユニキャスト、マルチキャストとも優先的にSE1へ出力する。そのため高優先セルのセル遅延揺らぎは非常に小さい。またIBに高優先セル用のバッファは存在しない。
【0397】
本発明の特徴は低優先セルの処理方法にある。以降、低優先セルについてのみ説明する。
【0398】
図29において、入力バッファIBは、主に、入力したユニキャストセルを一時的にそのセルの出力ポート毎に蓄積する複数の出力ポート毎ユニキャストセル管理部430と、入力したマルチキャストセルを一時的に蓄積するマルチキャストセル管理部431、およびこれらの管理部のセルを選択して入力バッファから出力する出力ポート選択スケジューラ432を持つ。
【0399】
出力ポート毎ユニキャストセル管理部430は、入力したセルを一時的にそのセルのクラス毎に蓄積する複数のクラス毎ユニキャストセル管理部433と、そのクラス毎ユニキャストセル管理部433から出力したセルを多重化するクラス多重化FIFO434を持つ。
【0400】
マルチキャストセル管理部431は、入力したセルを一時的にそのセルのクラス毎に蓄積する複数のクラス毎マルチキャストセル管理部435と、そのクラス毎マルチキャストセル管理部435から出力したセルを多重化するクラス多重化FIFO436を持つ。
【0401】
出力ポート毎ユニキャストセル管理部430、マルチキャストセル管理部431のそれぞれのクラス多重化FIFO434、436より出力するセルは出力ポート選択スケジューラ432により選択され、入力バッファIBから出力される。
【0402】
出力ポート選択スケジューラ432は外部からの低優先セル用バックプレッシャ信号、低優先セル非常用バックプレッシャ信号を考慮してセルを選択する。
【0403】
クラス毎ユニキャストセル管理部433は、蓄積されているセルのうち、カゴ管理部KMから出力を許可されたセルの集合を管理するカゴと呼ばれるキュー (カゴ440)と、それ以外のセルを管理する前カゴと呼ばれるキュー(前カゴ441)を持つ。
【0404】
前カゴ441に入ったセルは単位カゴという単位で管理される。図29において前カゴ441、カゴ440内の縦一列が単位カゴを示す。入力したセルは単位カゴ毎にVC(CG)間で公平に管理される。前カゴ441のセルはカゴ管理部KMの指示により、単位カゴを単位としてカゴ440に転送される。
【0405】
カゴ440のセルはカゴ管理部KMの指示により、セルを単位として転送されクラス多重化FIFO434で多重化される。
【0406】
クラス毎マルチキャストセル管理部435の動作は後述する。
【0407】
IBの全ての出力ポート、全てのクラスのキューでセルバッファを共有することにより、有限のバッファ量を有効に活用することが可能である。
【0408】
IBに到着したセルがIBから出力されるためには、セルが到着したことをIBからKMへ通知し、KMがIBからの出力を指示することが必要である。従ってIBとKMの間の情報伝送に遅延がある場合はその遅延時間だけIBからのセルの出力が遅延する。しかし遅延時間の大きさは数セル周期程度と考えられるため、トラヒック特性に及ぼす影響は少ないと考えられる。
【0409】
ユニキャストセルを出力ポート毎に優先制御するために、IBには出力ポート毎に、クラス毎ユニキャストセル管理部433とクラス多重化FIFO434がある。図1のセル多重化装置で説明した優先制御と基本的に同じ方法を使用する。
【0410】
図1はセル多重化装置であるが、カゴスイッチはセルスイッチでありIBはセルスイッチの入力バッファである。そのためクラス多重化FIFOはひとつのIBに全ての出力ポートに対応して複数存在し、そのセルは出力ポート選択スケジューラ434により選択されSE1へ出力される。
【0411】
図1のセル多重化装置のクラス毎セル蓄積部13は、図29のIBのクラス毎ユニキャストセル管理部433に相当し、図1のセル多重化装置のクラス多重化FIFO14は、図29のIBのクラス多重化FIFO434に相当する。
【0412】
図1のセル多重化装置のクラス管理部12は、図25のKMに対応する。クラス毎ユニキャストセル管理部433からクラス多重化FIFO434へのセルの転送をカゴ管理部KMが指示することにより優先制御を行なうことができる。
【0413】
マルチキャストセルの優先制御は後述する。
【0414】
ユニキャストセルをクラス毎にVC間公平キューイングするために、クラス毎ユニキャストセル管理部433に前カゴ441とカゴ440がある。図6のセル多重化装置で説明したVC間公平キューイングと基本的に同じ方法を使用する。
【0415】
図6はセル多重化装置であり、かつクラスも存在しないが、IBはセルスイッチの入力バッファでありクラスも存在する。前カゴ441、カゴ440は各IBについて、全ての出力ポート、全てのクラスに対応して存在し、そのセルはクラス多重化FIFO434により多重化された後、出力ポート選択スケジューラ432により選択されSE1へ出力される。
【0416】
図6のセル多重化装置のカゴ213は、図29のIBのカゴ440に相当し、図6のセル多重化装置の同一の時刻までに出力すべきセル集合214が、図29のIBの単位カゴに相当する。図6のセル多重化装置のカゴ管理部12は、図25のカゴ管理部KMに相当する。図29の前カゴ441からカゴ440への単位カゴの転送をカゴ管理部KMが指示することによりVC間公平キューイングを行なうことができる。
【0417】
マルチキャストセルのVC間公平キューイングは後述する。
【0418】
ユニキャストセルをIB内でVC間公平キューイングするために、クラス毎ユニキャストセル管理部433に前カゴ441とカゴ440がある。図10のセルグループFIFO232aのポインタチェーンによるデータ構造例で説明した方法と基本的に同じ方法を使用する。
【0419】
図10のセルグループFIFO232aが、図29のIBの前カゴ441に相当し、図10の出力待ちセルグループFIFO232bが、図29のIBのカゴ440に相当する。また、図10のセルグループは図29のIBの単位カゴに相当する。
【0420】
次に、図30を参照して、入力バッファIBのキューイング処理について説明する。
【0421】
セルは、まず前カゴ441に蓄積され、その後単位カゴを単位としてカゴ440に転送される。カゴ440のセルはセルを単位としてカゴ440から出力される。それぞれのきっかけについてはカゴ管理部KMが指示を行なう。
【0422】
この構成例では、全てのVCは、あるコネクショングループ(CG)に所属する。コネクショングループの概念を持つことにより複数のVCにひとつのリソース(帯域やセルバッファ)を共有させることが可能となる。例えば、離れたふたりのユーザ間の通信に対して1本のVC分の課金しか行なわないときに、そのふたりのユーザ間に複数のVCを設定する自由度を与えることが可能となる。もしくは、VC数に応じて公平な帯域の割当を行なう網において、あるふたりのユーザが多数のVCを設定して不当に大きな帯域を得ようとすることを防止することが可能となる。
【0423】
前カゴ441においてセルをどの単位カゴにいれるかを決定するためにVCテーブルとCGテーブルを使用する。
【0424】
VCテーブルを用いて入力したセルのコネクション識別子(例えばVC4)からコネクショングループ識別子(例えばCG5)を知ることができる。CGテーブルを用いてコネクションクループ識別子からCG毎に定められた値を知ることができる。この構成例におけるCG毎の値はNx 、Nc 、Ptr、Qlen 、Cnt1、Cnt2、Cnt3、BPIDt である。
【0425】
Nx 、Nc 、Ptr、Qlen は、図10のセルグループFIFOのポインタチェーンによるデータ構造例で説明した。Nx はそのCGの重み、Nc は作業変数、Qlen はそのCGの蓄積セル数、PtrはそのCGのセルが蓄積されている単位カゴの末尾へのポインタである。
【0426】
一方、Qlen 、Cnt1、Cnt2、Cnt3、BPIDt は、図15および図16のバックプレッシャ考慮キュー監視部を持つセルバッファ装置で説明した。
【0427】
Qlen はそのCGの蓄積セル数、Cnt1は廃棄すべきセル数、BPIDt は最後のセル入力時のバックプレッシャ識別子である。よりきめの細かいキュー監視を行なうためCnt1と同じ機能を持つ変数Cnt2、Cnt3が存在する。それぞれキュー長監視のしきい値が異なる。Cnt2はセルヘッダ内にあるCLP(Cell Loss Priority:セル廃棄優先)ビットが低優先(CLP=1)であるセル用の廃棄すべきセル数、Cnt3はこのキュー長監視において輻輳かどうかを判定するために使用する値である。輻輳かどうかの情報は、例えばセルヘッダ内にあるEFCIをマークするかどうかや、RMセルの輻輳表示ビットをマークするかどうかを決定するために用いる。
【0428】
あるクラスでVC間公平キューイングを行なわない設定をすることも可能である。その場合は、そのVCが所属するCGのNx を十分大きな値に設定すればよい。
【0429】
さて、図25に示すバックプレッシャ付きセルスイッチは、IBからOBまでのセル伝送の遅延時間が大きいことなどの影響により、低優先セル用バックプレッシャ信号が出力可能と出力禁止を繰り返す周期が比較的大きい。従ってIBのCG毎のキュー長Qlen を観測すると、主に低優先セルバックプレッシャ信号に同期して図14の様に振動を繰り返す。この様に、バックプレッシャ信号により振動するキュー長の監視には、図15、図16で説明したバックプレッシャ考慮キュー長監視アルゴリズムが適している。
【0430】
前カゴ441のとカゴ440に蓄積されているセルのクラス全体の合計セル数についてもバックプレッシャ考慮キュー長監視により入力セルの廃棄やEFCIのマークなどを行なって、一部のクラスがIBのバッファ領域の大半を独占することを防ぐことが可能である。
【0431】
図31に、カゴスイッチに用いる入力バッファIBのカゴ管理部KMとのインタフェースの一例を示す。
【0432】
KMから各出力ポートのそれぞれに対し、以下に示すような各出力ポート毎の情報が入力される。
【0433】
−ABR入力セル数
−指示クラス
−前カゴからカゴへ単位カゴの転送指示(図31の転送指示T1)
−カゴからクラス多重化FIFOへセルの転送指示(図31の転送指示T2)ABR入力セル数はABR処理部450へ転送される。ABR処理部450は、ABR入力セル数を知ることによりそのIBとペアの出力ポートに流入するトラヒックをモニタすることができる。その情報を用いてIBを通過するRMセルのペイロードの書き換えなどを行なう。
【0434】
カゴ440からクラス多重化FIFO434へセルの転送をKMから指示されると、IBは指示クラスのユニキャストのカゴ440からセルをひとつ取りだしクラス多重化FIFO434に転送する。また前カゴ441からカゴ440へ単位カゴの転送指示があると、IBは指示クラスのユニキャストの前カゴ441から単位カゴをひとつ取りだしカゴ440に転送するとともに、カゴ440からセルをひとつ取りだしクラス多重化FIFO434に転送する。
【0435】
単位カゴの転送指示をそのクラスのセルの転送指示を行なう時のみに限定することにより、転送指示の情報量を減らし、より容易に実装することができる。
【0436】
IB内で前カゴ441、カゴ440、クラス多重化FIFO434のセル数が変化するのは、IBへセルが入力した時、KMが転送指示を行なった時、IBからセルが出力した時である。従って、それに応じてセル数情報をKMへ出力する。ひとつのIBがKMへ出力する情報は、以下のものである。
【0437】
各出力ポート毎に、入力したセルについて(ユニキャストの場合はひとつの出力ポートについてのみ出力)、
−入力セルの有無とクラス
各出力ポート毎に、転送の指示クラスについて、
−(転送後の)前カゴセル数(図31のCE1)
−(転送後の)カゴセル数(図31のCE2)
−クラス多重化FIFOへの転送セル数(図31のCE3)
各出力ポート毎に、ユニキャストのみの、
−クラス多重化FIFOセル数(図31のCE4)
図31を用いて説明する。入力したセルの情報はIBからKMへ入力セルの有無とクラスとして伝送される。また、ユニキャストとマルチキャストの前カゴセル数が加算され、クラス選択部L5により転送の指示クラスで選択されたものが前カゴセル数として伝送される。さらに、ユニキャストとマルチキャストのカゴセル数が加算され、クラス選択部L6において指示クラスで選択されたものがカゴセル数となり伝送される。そして転送指示によりカゴからクラス多重化FIFO434へ移動したセル数はユニキャストとマルチキャストとが加算され、クラス選択部L7において指示クラスで選択されて伝送される。クラス多重化FIFOセル数はユニキャストについてのみKMへ伝送される。マルチキャストのクラス多重化FIFOセル数は、クラス毎マルチキャストセル管理部435からのセルの出力を制御するためのバックプレッシャ信号として使用する。
【0438】
マルチキャストのクラス多重化FIFO436は複数の出力バッファOBからのバックプレッシャ信号により出力が制御されていることなどから、クラス多重化FIFOセル数がゼロでなくともセルスイッチの出力ポートがアンダフローする可能性がある。ユニキャストセルがその影響を受けてアンダフローしないように、この構成例ではユニキャストのクラス多重化FIFOセル数とは加算していない。
【0439】
ここで、マルチキャストセルの優先制御およびVC間公平キューイングについて説明する。
【0440】
マルチキャストVCをスループットの視点で考える。一般的に、ある時点のセルスイッチの状態を考えると、その複数の出力ポートには、輻輳している出力ポートもあれば、負荷が低い出力ポートもある。つまり、VCが使用できるスループットは出力ポートによって異なることになる。マルチキャストVCは、ひとつの入力ポートから複数の出力ポートへ同じスループットが同時に出力されるから、そのマルチキャストVCが得ることのできるスループットは出力先の中で最も輻輳している出力ポートのスループットになるのがよい。従って、IBからマルチキャストセルを出力する場合は、最も輻輳している出力ポートのスループットで出力することが望ましい。
【0441】
ある出力ポートのあるクラスに与えられるVC(CG)あたりのスループットを、IBは前カゴ441からカゴ440への単位カゴの転送指示の頻度より知ることができる。また、ある出力ポートのあるクラスに与えられるスループットを、IBはカゴ440からクラス多重化FIFO434へのセルの転送指示の頻度より知ることができる。さらにある出力ポートに与えられるスループットを、IBは低優先セル用バックプレッシャ信号の頻度より知ることができる。これらの転送指示やバックプレッシャ信号は出力ポート毎に与えられる。
【0442】
最も輻輳している出力ポートのスループットで出力するためには、マルチキャストセルを、そのセルの出力ポートの全てに関してこれらの信号が指示または許可した時点で転送すればよい。複数の出力ポートへの指示または許可は同時である必要はない。
【0443】
IBにおいて、低優先マルチキャストVCを管理する場合、本来そのクラス毎かつ出力ポートパターン毎に管理することが望ましいのであるが、一般的にはその組合せの数は大きく、また通信中にその出力ポート数が増減する可能性があるため、その様な実装は現実的ではない。図25に示すようなカゴスイッチでは全てのマルチキャストコネクションをクラス毎にのみ管理し、出力ポートパターン毎での管理はしない。ある程度のHOL(Head Of Line)ブロッキングが発生することになる。
【0444】
図32は、クラス毎マルチキャストセル管理部435を説明するための図である。この管理部は、出力ポート表、VC間公平キュー、単位カゴセル数、カゴセル数、出力許可済みセル数を保持し、管理するものである。
【0445】
クラス毎ユニキャストセル管理部433が前カゴとカゴでセルを管理していたのに対して、クラス毎マルチキャストセル管理部435は前カゴに相当するVC間公平キュー460のみによりセルを管理する。ただ本発明のクラス毎マルチキャストセル管理部435は、管理の計算上では前カゴ、カゴの概念を用いてユニキャストと同様のセル管理を行なう。
【0446】
クラス毎マルチキャストセル管理部435は、出力ポート毎に次の情報を入力する。
【0447】
・前カゴからカゴへの単位カゴ転送指示
・カゴからクラス多重化FIFOへのセル転送指示
また出力ポート毎に次の情報を出力する。
【0448】
・前カゴセル数
・カゴセル数
・転送セル数
VC間公平キュー460は単位カゴのFIFOである。VC間公平キュー460に入力したセルは、各VC(CG)についてひとつの単位カゴに予め定められた数までしか入力できない。この構成は図30で説明したユニキャストの前カゴの構成と同様である。クラス多重化FIFO436からバックプレッシャ信号が入力しており、状況によってVC間公平キュー460からのセル出力を禁止する。
【0449】
出力ポート表は、出力ポート別に、前カゴセル数と先頭単位カゴへのポインタを記憶する。前カゴセル数は単位カゴセル数の合計、先頭単位カゴは計算上の前カゴの先頭の単位カゴへのポインタである。
【0450】
単位カゴセル数はVC間公平キュー460の単位カゴに対応して出力ポート毎のデータを記憶する。基本的には対応する単位カゴに蓄積しているマルチキャストセルの出力ポート毎のセル数を記憶する。例えば、図32のVC間公平キュー460の先頭の単位カゴには5セル蓄積されている。そのうち、ポート#1とポート#Nに出力するセルが3セル、ポート#1とポート#2に出力するセルが2セルあるので、単位カゴセル数のポート#1には5、ポート#2には2、ポート#Nには3が記憶される。
【0451】
カゴセル数は計算上のカゴのセル数である。また、出力許可済みセル数は計算上の出力を許可されたセル数である。
【0452】
ある出力ポートに対して単位カゴ転送を指示された場合、その出力ポートの先頭単位カゴの単位カゴセル数をカゴセル数に加算し、単位カゴセル数をゼロにする。さらにその出力ポートのカゴセル数から1を減算して出力許可済みセル数に1を加算する。そして出力ポート表の先頭単位カゴのポインタをVC間公平キュー460の次の単位カゴへひとつ進める。このときの転送セル数は1セルである。
【0453】
先頭単位カゴのポインタを進めることにより、ポインタはVC間公平キュー460の先頭の単位カゴから離れていく。この距離に上限を設け、ある距離になったら単位カゴ転送指示を無視してポインタを進めないように制御する。これは、単位カゴの転送が指示された時刻と実際にセルを出力する時刻との差を大きくしないようにする効果がある。
【0454】
ある出力ポートに対してKMからセル転送が指示された場合、その出力ポートのカゴセル数から1を減算して出力許可済みセル数に1を加算する。このときの転送セル数は1セルである。
【0455】
クラス多重化FIFO436からのバックプレッシャ信号が出力を許可している時、セルをVC間公平キュー460から出力することができる。その際、そのセルの全ての出力ポートについて出力許可済みセル数を1ずつ減算する。出力許可済みセル数がゼロの出力ポートが存在する場合は減算できないので、そのセルはまだ出力できない。
【0456】
出力許可済みセル数は単位カゴ転送指示およびセル転送指示により増加する。ある出力ポートの出力許可済みセル数がある値以上になった場合には、その出力ポートについて、クラス毎マルチキャストセル管理部435から出力する前カゴセル数とカゴセル数をゼロとし、単位カゴ転送指示とセル転送指示を無視する。これは実際のセルの転送スループット以上の転送指示を無視する効果がある。
【0457】
次に、図33〜図39を参照して、クラス毎マルチキャストセル管理部の動作について説明する。
【0458】
図32の状態から、出力ポート#1に対して単位カゴの転送をKMから指示された場合の動作を図33に示す。ポート#1の先頭単位カゴの単位カゴセル数をカゴセル数に加算し、単位カゴセル数ゼロにする。さらにポート#1のカゴセル数から1を減算して出力許可済みセル数に1を加算する。KMへの転送セル数は出力ポート#1に関して1セルである。
【0459】
出力ポート表の先頭単位カゴのポインタをVC間公平キュー460の次の単位カゴへひとつ進める。
【0460】
さらに、出力ポート#1に対してセルの転送をKMから指示された場合の動作を図34に示す。ポート#1のカゴセル数から1を減算して出力許可済みセル数に1を加算する。KMへの転送セル数は出力ポート#1に関して1セルである。
【0461】
図34のVC間公平キュー460の先頭のセルの出力ポートは#1と#Nである。出力許可済みセル数は出力ポート#1に関してはゼロでない(=2)が、出力ポート#Nに関してはゼロであるのでまだセルを出力することはできない。
【0462】
セルが到着した時の動作を図35に示す。到着したセルの出力ポートは#1と#Nである。またこのセルは今までにVC間公平キュー460に蓄積していなかったVCのセルであるとする。この場合セルはVC間公平キュー460の先頭の単位カゴに入力される。
【0463】
セルを入力したとき、そのセルの全ての出力ポートの単位カゴセル数を1ずつ加算する。加算する単位カゴは出力ポート毎に決定する。基本的にはセルを入力した単位カゴに1を加えるが、出力ポート表の先頭単位カゴがセルを入力した単位カゴよりも後ろにある場合は出力ポート表の先頭単位カゴが指している単位カゴセル数に1を加える。従って、図35では出力ポート#1については先頭単位カゴが指している2番目の単位カゴの単位カゴセル数に1を加算する。出力ポート#Nについてはセルを入力した単位カゴである1番目の単位カゴの単位カゴセル数に1を加算する。
【0464】
さらに、またセルが到着した時の動作を図36に示す。新たに到着したセルの出力ポートは#1と#2である。またこのセルは現在VC間公平キュー460にセルが蓄積しているVCのセルであるとする。図36の場合このセルはVC間公平キュー460の末尾に新たに単位カゴを設け、その単位カゴに入力した。
【0465】
さらに、図37に出力ポート#Nに対して単位カゴの転送をKMから指示された場合の動作を示す。ポート#Nの先頭単位カゴの単位カゴセル数をカゴセル数に加算し、単位カゴセル数ゼロにする。さらにポート#Nのカゴセル数から1を減算して出力許可済みセル数に1を加算する。KMへの転送セル数は出力ポート#Nに関して1である。出力ポート表の先頭単位カゴのポインタをVC間公平キュー460の次の単位カゴへひとつ進める。
【0466】
VC間公平キュー460の先頭のセルの出力ポートが#1と#Nであり、その#1と#Nの出力許可済みセル数がそれぞれ1以上(具体的には2と1)になったため、クラス多重化FIFO436が許可すればそのセルを出力できる。
【0467】
図38にセルを出力した場合の状態を示す。出力セルの出力ポートに対応する出力許可済みセル数を1ずつ減算する。
【0468】
図39に、以上のようにして連続して単位カゴ、カゴの転送が指示され、合計6セル出力したときの状態を示す。VC間公平キュー460の先頭の単位カゴはこの時点で空になり、その単位カゴおよび単位カゴセル数は消滅する。必然的に出力ポート表の先頭単位カゴがこの消失した単位カゴを指していることはない。次に、図40を参照して、出力ポート選択スケジューラ432について説明する。
【0469】
出力ポート選択スケジューラ432に入力する、出力ポート毎のユニキャスト出力待ちセルとマルチキャスト出力待ちセルをセル選択部470が選択して出力ポート選択スケジューラ432から出力する。セル選択部470の選択の候補となるセルは、出力待ちセルのうち許可されたセルである。
【0470】
ユニキャストセルは、ユニキャストセル出力許可信号生成部471が出力するユニキャストセル出力許可信号により出力が許可される。
【0471】
ユニキャストセル出力許可信号生成部471には、バックプレッシャ信号と非常用バックプレッシャ信号が入力する。
【0472】
バックプレッシャ信号は出力ポート毎である。また非常用バックプレッシャ信号は対応するバックプレッシャ信号が予め定まっている。図25の場合は、非常用バックプレッシャ信号はSE2から出力しており、そのSE2の出力リンクに接続する出力バッファOBからのバックプレッシャ信号に対応している。
【0473】
バックプレッシャ信号が出力禁止を示している時、ユニキャストセル出力許可信号はその出力ポートのセルの出力を許可しない。非常用バックプレッシャ信号が出力禁止を示している場合は、その非常用バックプレッシャ信号に対応するバックプレッシャ信号が全て出力禁止を示しているものと見なして出力を許可しない。
【0474】
マルチキャストセルは、マルチキャストセル出力許可信号生成部472が出力するマルチキャストセル出力許可信号により出力が許可される。
【0475】
マルチキャストセル出力許可信号生成部472には、ユニキャストセル出力許可信号とマルチキャストセル用クラス多重化FIFO436の先頭のセルの出力ポート情報が入力する。
【0476】
マルチキャストセル出力許可信号生成部472は、マルチキャストセルの出力ポートが全て(同時にでなくてもよい)許可されたかどうかを監視する。どれかの出力ポートが許可されていない場合はマルチキャストセル出力許可信号を出力禁止とする。マルチキャストセルの全ての出力ポートが許可された時、最後に許可された出力ポートのユニキャストセル出力許可信号が出力可能を示している時間はマルチキャストセルの出力を許可する。その時間内にそのマルチキャストセルがセル選択部470により選択されなかった場合、およびマルチキャストセルがセル選択部470により選択され出力して新しいマルチキャストセルの出力ポート情報が到着した場合は、再び最初から出力ポートが全て許可されたかどうかを監視する。
【0477】
セル選択部470は、こうして出力が許可された出力待ちセルを公平に選択する。
【0478】
上述したように、マルチキャストセルはその出力ポートの全てのバックプレッシャ信号が同時に出力を許可していなくても出力される。すなわち、そのマルチキャストセルの出力時には、そのセルの出力ポートのバックプレッシャ信号のいくつかが出力禁止を示している可能性がある。この様な状況においてもSE2のバッファが溢れないように低優先セル非常用バックプレッシャ信号が有効に作用する。
【0479】
上述の構成においては、低優先セル非常用バックプレッシャ信号は出力禁止を示した場合、対応する出力ポート行きのユニキャストセルおよびマルチキャストセルの両方の出力を禁止する。他の構成としては、マルチキャストセル出力許可信号生成部472において、ある出力ポートが一度許可されても低優先セル非常用バックプレッシャ信号が出力禁止を指示した時に許可を取り消す処理を行うなどとしてもよい。また、簡単には、低優先非常用バックプレッシャ信号が出力禁止と指示した場合は、全ての低優先マルチキャストセルの出力を禁止する構成でもよい。
【0480】
本発明の入力バッファIBは、図15で説明したバックプレッシャ考慮キュー監視を行なう。この監視は、バックプレッシャ信号によりバックプレッシャ識別子を更新し、その値に基づいて動作する。ユニキャストセルの出力ポート毎のバックプレッシャ識別子は出力ポート選択スケジューラ432のユニキャストセル出力許可信号により更新し、マルチキャストセルのバックプレッシャ識別子は出力ポート選択スケジューラ432のマルチキャストセル出力許可信号により更新する。
【0481】
次に、図41を参照して、図25に示したカゴスイッチに用いるカゴ管理部KMについて説明する。
【0482】
図41は、カゴ管理部KMの構成例を示したものである。
【0483】
KMは出力ポート毎に、
・ABR入力セル数合計。
【0484】
・クラス毎に、前カゴセル数合計、カゴセル数合計、転送セル数。
【0485】
・クラス多重化FIFOセル数合計。
【0486】
といった情報を保持し、さらに、出力ポート毎に、転送指示履歴管理部480、クラス選択スケジューラ481を具備している。
【0487】
ABR入力セル数合計は、ABRクラスについて各出力ポート行きの全IBの合計入力セル数である。一定時間内で積算し、その周期毎にその出力ポートとペアとなるIBへ伝送する。所定の一定時間に達する前にABR入力セル数合計があるしきい値以上になった場合は割り込み的にIBへその旨を通知する構成でもかまわない。
【0488】
前カゴセル数合計は、IBへ入力したセルの有無とクラスの情報より、前カゴに入力したセルの合計を加算する。またKMが転送を指示したクラスの前カゴセル数を全てのIBについて合計したもので更新する。そのクラスはKMの転送指示履歴管理部480が記憶している。
【0489】
カゴセル数合計は、KMが転送を指示したクラスのカゴセル数を全てのIBについて合計したもので更新する。転送を指示したクラスはKMの転送指示履歴管理部480が記憶している。
【0490】
転送セル数は、KMが転送を指示したクラスのクラス多重化FIFOへの転送セル数を全てのIBについて合計したもので更新する。転送を指示したクラスはKMの転送指示履歴管理部480が記憶している。
【0491】
クラス多重化FIFOセル数合計は、クラス多重化FIFOセル数を全てのIBについて合計したもので更新する。
【0492】
クラス選択スケジューラ381は、前カゴセル数合計、カゴセル数合計、転送セル数合計、クラス多重化FIFOセル数合計などの情報よりIBに転送指示を行なう。過去の転送指示の履歴は転送指示履歴管理部480が記憶し、またクラス選択スケジューラ481はその履歴を利用して上記のセル数情報を修正する。
【0493】
図42、図43、図44に、カゴ管理部KMのクラス選択スケジューラ481で実行するスケジューリングアルゴリズムの一例を示す。このアルゴリズムは、クラスの最大帯域を制限し最小帯域を保証しつつ優先度による優先制御を行なうものである。
【0494】
グローバルな変数として、現在時刻を示す変数nowがある。各クラスiについて、最小帯域1/Di 、出力義務時刻Tdi 、Tdi の上限を与えるパラメタDxi 、および最大帯域1/Ui 、出力禁止時刻Tui 、Tui の下限を与えるパラメタUxi を設定する(図42のステップS100)。
【0495】
各クラスiについて、出力すべき場合は現在時刻nowがTdi <nowである時であり、出力が禁止される場合は現在時刻nowがnow<Tui である時である。また優先順位に従って出力すべき場合は現在時刻nowがTui <now<Tdi である時である。Tdi はその上限値を定められており、Tdi <now+Dxi である。またTui はその下限値を定められており、now−Uxi <Tui である。ただしUxi >0、Dxi >Di である。
【0496】
初期設定は、nowをゼロに設定し、各クラスiに対してTdi をDi −Ui とし、Tui をnowつまりゼロにする(図42のステップS101)。
【0497】
このアルゴリズムはセル周期毎に次の処理を行なう。
【0498】
まず、クラスがアクティブになった時の処理を行なう。具体的にはセルが無かったクラスiにセルが到着したとき、Tdi をnowとTdi の大きい方に更新し、Tui をnowとTui の大きい方に更新する(図43のステップS102)。
【0499】
次にセルを転送してもよいかどうかを判定して(図43のステップS103)、もしそうであれば転送クラス選択および転送クラス指示を行なう(図43のステップS104)。
【0500】
転送クラス選択は次のような処理である。
【0501】
転送すべきセルがある各クラスiの中で、
1.Tdi <nowとなっているクラスがあれば、その中で最もnow−Tdi の大きいクラスを選択する(同じ値の場合は優先度で判断)。
【0502】
2.Tdi <nowとなっているクラスがなければ、Tui <now<Tdi を満足するクラスの中から優先度の最も高いクラスを選択する。
【0503】
選択されたクラスをjとすると、図44のステップS105に進み、次のような転送クラス指示の処理を行なう。
【0504】
1.クラスjの転送指示を行なう。
【0505】
2.Tuj をmax(Tuj 、now−Uxj )と更新。
【0506】
3.Tdj をTdj +Dj と更新。
【0507】
4.Tuj をTuj +Uj と更新。
【0508】
5.Tdj をmin(Tdj 、now+Dxj )と更新。
【0509】
最後に、転送セル流量モニタの処理を行なった後(図44のステップS106)、nowをインクリメントして(図44のステップS107)、セル周期毎の処理を終了する。
【0510】
図44のステップS106の転送セル流量モニタの処理は、クラスjの転送セル数がxj の時、クラスjに関して次の処理を行なう。
【0511】
1.Tuj をmax(Tuj 、now−Uxj )と更新。
【0512】
2.Tdj をTdj +(xj −1)Dj と更新。
【0513】
3.Tuj をTuj +(xj −1)Uj と更新。
【0514】
4.Tdj をmin(Tdj 、now+Dxj )と更新。
【0515】
図43のステップS103のセルを転送指示してもよいかどうかの判定は、クラス多重化FIFOセル数合計が、あるしきい値以下かどうかで行なう。あるしきい値とは通常は「1」である。このクラス多重化FIFOセル数合計は転送指示履歴管理部480の転送指示履歴により修正された値である。
【0516】
図43のステップS104における、クラスに転送すべきセルがあるかどうかの判定は、前カゴセル数合計またはカゴセル数合計のどちらか一方がゼロでないことを判定して行なう。この前カゴセル数合計とカゴセル数合計は転送指示履歴管理部480の転送指示履歴により修正された値である。
【0517】
転送指示はカゴ440からクラス多重化FIFO434へのセルの転送指示 (図31の転送指示T2)である。その際に前カゴからカゴへの単位カゴの転送指示を同時に行なうかどうかの判定は、前カゴセル数合計がゼロでなく、かつ、カゴセル数合計があるしきい値以下かどうかを判定して行なう。あるしきい値とは通常は1である。この前カゴセル数合計とカゴセル数合計は転送指示履歴管理部480の転送指示履歴により修正された値である。
【0518】
本アルゴリズムは、Di を大きな数に設定することにより、最小保証帯域をゼロに近付けることができる。例えば全てのクラスのDi を大きな数に設定すれば全てのクラスを完全優先で優先制御することができる。
【0519】
また、クラスのひとつを、優先度は最も低いが最小保証帯域を持つIC (Idle Cell)クラスとすることにより、出力ポートの使用率を制御することができる。IBはICクラスの転送指示があった場合にアイドルセルをクラス多重化FIFOへ挿入する(このIBはひとつだけでよい)。
【0520】
アイドルセルは他のセルと同様にセルスイッチの出力ポートに向けて交換され、そこでUnassigned Cellに置き換えられる。KMは、ICクラスはいつも転送すべきセルがある状態と考えスケジューリングを行なえば良い。
【0521】
ところで、図42〜図44に示したアルゴリズムでは説明を簡単にするために、変数now、Tdi 、Tui といった時刻を示す変数は、表現できる値が上限を持たないとしている。実装時にはこれらの変数は有限のビット長を持つレジスタなどで表現するため長時間経過すると同じ時刻が循環して現われる。アルゴリズムを正常に動作させるためには次のようなことを行なえば良い。これらの周期をMaxとする。Maxは十分大きい必要がある。
【0522】
このとき、x:=f(x)などの計算は、
x:=f(x ) mod Max
と置き換える。つまりMaxでモジュロをとる。また、y<zの比較演算は、
(z<y−Max/2)or((y<z)and(z<y+Max/2))
に置き換え比較する。
【0523】
例えば、now:=now+1という計算は、
now:=(now+1) mod Max
と置き換える。Tdi <nowという比較演算は、
(now <Tdi −Max/2) or ((Tdi <now) and (now <Tdi +Max/2)) に置き換え比較すれば良い。
【0524】
時刻の変数は周期的に監視し、必要に応じてnowからMax/2以上離れ過ぎないように調整を行なうことが必要であるが、Maxを大きくとることによって監視の周期を長くとることができ、実装が容易となる。
【0525】
さらに、他のクラス選択スケジューリングとしては次のようなものを有効である。
【0526】
すでに説明したように、CG毎(VC毎)に設定された重みに従ってVC間公平キューイングを行ったセルバッファ装置は、入力バッファIBのCGテーブル(図30)またはVCテーブルのNx に重みを書き込む。
【0527】
ここでは、クラス選択スケジューリングを併用することによって、そのクラスに設定されているVC毎の重みを係数倍できることを説明する。
【0528】
クラスA、クラスBがあり、クラスAに設定されているあるVCの重みNxaとし、クラスBに設定されているあるVCの重みをNxbとする。このとき双方のクラスに出力待ちセルが存在するときにクラス選択スケジューリングにより単位カゴの転送指示回数をクラスXとクラスYでRa 対Rb の比になるようにスケジューリングすることにより、それぞれの重みを Nxa×Ra 、Nxb×Rb と係数倍することが可能である。3クラス以上の場合も同様である。所望の比になるように、スケジューリングを行うアルゴリズムとして例えば、SCFQ(Self−Clocked Fair Queueing)などが知られている。
【0529】
具体的な例で説明する。例えば、VC1からVC7の7本のVCに重みをそれぞれ1.24、3.72、2.18、934、562、1370、4360に設定したいとする。クラスAにVC1、2を設定し、Nx をそれぞれ1.24、3.72とする。クラスBにVC3を設定し、Nx を2.18とする。クラスCにVC4、5を設定し、Nx をそれぞれ9.34、5.62とする。クラスDにVC6、7を設定し、Nx をそれぞれ1.37、4.36とする。単位カゴの転送指示回数を出力待ちセルが存在するクラス間でクラスA:クラスB:クラスC:クラスD=1:1:100:1000の比になるようにクラス選択スケジューリングを行えば、目的の重み1.24:3.72:2.18:934:562:1370:4360でセルが出力ポートに多重化される。この方法はNx の値として大きな数値を設定するとVC間公平キューイングのセル遅延揺らぎが増大してしまうという現象を回避する効果がある。
【0530】
図42〜図44に示したようなクラス選択スケジューリングのアルゴリズムでは、各クラスの転送セル流量をモニタしていた。これを利用して階層的なクラス選択スケジューリングを行うことが可能である。
【0531】
クラスA1、A2、A3、…からなるクラス群Ga と、別のクラスB1、B2、B3、…からなるクラス群Gb とがあるとき、出力待ちセルが存在するクラス群間で転送セル流量の比をRa 対Rb と設定してクラス選択スケジューリングを行う。クラス群が3以上の場合も同様である。各クラス群内のクラス選択スケジューリングと、クラス群間の選択スケジューリングとは独立である。
【0532】
これにより、あるクラス群間の剰余帯域は、そのクラス群内のクラスのみが使用することになり、別のクラス群が使用できることを防止できる。別のクラス群がこの剰余帯域を使用できるのは、あるクラス群の出力待ちセルが一つも存在しない場合だけである。この様な階層的なクラス選択スケジューリングは。例えば、企業毎にクラス群を割り当てるなどの応用が考えられる。
【0533】
5.2 優先制御およびVC間公平キューイングを行うセルスイッチのセル数修正方法
次に、優先制御およびVC間公平キューイングを行うセルスイッチ(カゴスイッチ)(図25、図29、図31)のカゴ管理部KMにおけるセル数の修正方法を図45を参照して説明する。
【0534】
修正の原理は、図19、図20などを用いて説明したカゴスイッチの場合も同じ方法でセル数を修正することにより優先制御の性能や出力ポートのスループットの向上などを実現することができる。
【0535】
本発明のセル数修正方法の一応用例として、図45に示すカゴスイッチに適用する。カゴスイッチでは、管理部301がクラスiの前カゴ(Bpi)へ転送を指示すると、そのクラスの前カゴのセルがカゴ(Bki)へ転送されるとともに、その一部がクラス多重化FIFO(Bm )へ転送される。管理部301がクラスiのカゴからクラス多重化FIFOへ転送を指示すると、そのクラスのカゴのセルがクラス多重化FIFOへ転送される。
【0536】
図45の様に各セルバッファのセル数情報および遅延時間を定める。
【0537】
Hpiは転送指示Ipiにより前カゴからカゴへ転送されるHOL数、Hpmi は同じく転送指示Ipiにより前カゴからクラス多重化FIFOへ転送されるHOLセル数である。
【0538】
ここで一例として、各遅延時間の値が等しい場合について考える。つまり、DOp =DIk =DOk =DIm =Dipm=D、および、DTpm=DTkmとする。またp=[−D、0)とする。このとき、クラスiの前カゴとカゴの修正されたセル数(N′pi、N′ki)、およびクラス多重化FIFOの修正されたセル数 (N′m )は次のように計算できる。
【0539】
【数7】
【0540】
5.3 第10の実施形態に係るセルスイッチの説明の続き
図46に、カゴスイッチの入力バッファIBとカゴ管理部KMとの接続例を示す。
【0541】
ここでは、例えば、クラス数を62クラス、セルスイッチサイズを16入力16出力とする。
【0542】
クラス番号は、{0、1、2、…、60、61、UC、IC}と6ビットにコーディングする。
【0543】
クラスUCは非割り当てセル(Unassigned Cell)、ICはアイドルセル(Idle Cell)を示し、これらの使い方は以下に記述する。
【0544】
前カゴセル数、カゴセル数、クラス多重化FIFOセル数は、{0、1、2、…、13、14、15以上}と4ビットにコーディングする。
【0545】
入力バッファIBからカゴ管理部KMへの転送情報を以下に示す。
【0546】
(1)入力セル 出力ポート毎に、入力したセルについて(ユニキャストの場合はひとつの出力ポートについてのみ出力する)、
・入力セルの有無とクラス…6ビット
(入力セルがない場合はクラスUCを送信する)
(3)転送指示クラス 出力ポート毎に転送の指示クラスについて、
・転送後の前カゴセル数…4ビット
・転送後のカゴセル数…4ビット
・クラス多重化FIFOへの転送セル数…2ビット
(最大でユニキャストとマルチキャストの2セルが転送される)
(4)クラス多重化FIFO 出力ポート毎にユニキャストのみの、
・クラス多重化FIFOセル数…4ビット
合計すると、ひとつの出力ポートに関する情報は20ビットである。
【0547】
カゴ管理部KMから全ての入力バッファIBへ同報する転送情報を以下に示す。
【0548】
(2)出力ポート毎に、
・前カゴからカゴへ単位カゴの転送指示(下記のクラスについて)…1ビット
・カゴからクラス多重化FIFOへセルの転送指示と、指示クラス…6ビット
(転送指示をしない場合はUCクラスを指定。ICクラスが指定された場合はIBはアイドルセルを転送(挿入)する。アイドルセルは他のクラスのセルと同様に出力ポートへ交換転送され、セルスイッチからの出力時にUnassigned Cellに置き換えられるスループット調整用のセルである。)
合計すると、ひとつの出力ポートに関する情報は7ビットである。
【0549】
KMは、ABRトラヒック制御のため出力ポート毎に、対応するIBへ次の信号を送信する。
【0550】
(5)全IBの入力セルのうち、各出力ポート行きのABR入力セル数…5ビット
(16入力16出力のセルスイッチの場合)
ひとつの出力ポートに関する情報は5ビットである。
【0551】
図46は、カゴ管理部KMをふたつのLSIにて実現する構成例を示したものである。ふたつのLSIのうち一方は出力ポート#1から#8を管理し、もう一方は出力ポート#9から#16を管理する。
【0552】
IBからKMへの転送情報(前述の(1)(3)(4))は、1出力ポートあたり20ビットであるから、8ポート分で160ビットである。高速差動伝送を2ペア用いてパラレル伝送を行なえば1セル周期に80ビットの伝送速度でよい。
【0553】
KMからIBへの同報情報(前述の(2))は、1出力ポートあたり7ビットであるから、8ポート分で56ビットである。通常の伝送ドライバを用いて、8本のパラレル伝送を行なえば1セル周期に7ビットの伝送速度でよい。
【0554】
KMからIBへのABRトラヒック制御のための情報(前述の(5))は、1出力ポートあたり5ビットである。
【0555】
セル伝送速度が622Mbpsであるセルスイッチを考えても、これらの伝送速度は現在の技術において十分実現可能である。
【0556】
IBはKMへセル数情報をLSB(最下位桁)から伝送することにより、セル数の加算の回路規模を少なくすることができる。加算回路は全てのIBから伝送されてくるセル数情報を(出力ポート毎クラス毎に)下位桁から順に加算することができるためである。より具体的には、加算回路は入力した桁の数字とそれまでに計算した下位桁からの桁上がりの和を計算して、加算結果のその桁の値を得ることができる。加えて次の桁の計算のための桁上がりを保持する。
【0557】
IBからKMへの信号の中にクラス多重化FIFOセル数がある。バックプレッシャ付きセルスイッチが出力ポート毎の蓄積セル数(図25の出力バッファOBのセル数)を出力できる場合には、KMは、クラス多重化FIFOセル数の代わりにこの出力ポート毎蓄積セル数を用いても良い。
【0558】
これは、図2のクラス間の優先制御を行なうセル多重化装置や、図7のVC間公平キューイングを行なうセル多重化装置と同じ効果を持つ。
【0559】
図47に、ABRサービスを実現するための情報の経路を示す。
【0560】
図47は、ポート#1からポート#Nに入力するABRクラスのセルが、バックプレッシャ付きセルスイッチ400によりポート#iに交換多重化される部分について特に抜き出して示してある。実際は全ての出力ポートに関して、この図の#iと同じ構成になっている。
【0561】
ABRサービスは、セルスイッチの出力ポートに使用可能な帯域があれば、その帯域をABRクラスのVCで公平に分配して使用するサービスクラスである。トラヒック制御には受信端末から送信端末へ伝送されるRMセルを用いる。
【0562】
セルスイッチ400は、出力ポート#iにおいてABRが使用可能な帯域を知っており、それと現在のABRの入力トラヒックとの比(または差)を知ることにより、送信端末に対してトラヒック制御を行なうことができる。現在のABRトラヒックは図47に示したポート#i行きの入力セル数の一定周期毎の合計から知ることができる。入力セル数から入力帯域を求め、これが出力ポートにおいてABRが使用可能な帯域を越えていれば過負荷であるから、ポート#iに入力するRMセルにVCの帯域を減らす指示を書き込めばよい。逆に、ポート#i行きの入力セル数から求めた入力帯域が、出力ポートにおいてABRが使用可能な帯域を下回っていれば、低負荷であるから、ポート#iに入力するRMセルにVCの帯域を増やす指示を書き込めばよい。入力帯域と出力帯域の比または差を知ることにより、過負荷、低負荷の程度を知ることができ、細やかな制御を行なうことが可能である。
【0563】
この処理により輻輳に陥る確率は少なくなるが、さらにIBにおいてキュー長を監視して輻輳を検出した場合はEFCIをマークしたり、RMセルを書き換えたりすることにより、より安全にトラヒックを制御することが可能である。特にマルチキャストの場合は、入力帯域が出力帯域より小さくとも過負荷となる可能性があり、その場合はキュー長監視によるトラヒック制御が重要になる。
【0564】
このように、第10の実施形態に係るカゴスイッチは、VC間公平キューイングを行なうため、キュー長監視によるトラヒック制御においてもVC間で公平な帯域分配を実現することが可能である。
【0565】
【発明の効果】
以上説明したように、本発明のクラス間の優先制御を行なうパケット転送装置(第1、第2の実施形態(請求項1、2、3、4、))によれば、制御部(クラス管理部)が複数の入力バッファ全体の状況を把握して(少なくとも全体の状況を把握していればよいが、個々の入力バッファ毎に把握していても構わない)指示を出すため、各入力バッファのクラス毎の蓄積状況の違いによりクラス間の優先関係が崩れてしまうことが生じず、また、入力ポートの数すなわち入力バッファの数が増えても容易にクラス間の優先制御を実現できる。
【0566】
また、複数の入力バッファにまたがってVC(フロー)間公平キューイングをするために、例えば、制御手段が全ての入力バッファの全てのVC(フロー)について、その入力ポート番号とVC番号、パケットの到着状況、出力状況等を把握してパケットの出力順序を制御するのでは、装置構成が複雑になり、スループットの向上が難しい。そこで、本発明のパケット転送装置(第3、第4、第5の実施形態(請求項5、6))によれば、あるフェーズ(その時間的長さは不定)内で出力されるべきパケット集合(カゴ)という概念を導入し、このパケット集合に入れるパケットの選択と、このパケット集合に入っているパケットのみを出力する(その他のパケットは出力が許可されない)という処理を各入力バッファが分担し、パケット集合に新たなパケットを入れるタイミングを指示する処理をカゴ管理部が分担することにより、例えば、入力バッファ方式のセルスイッチにおいて、VC(フロー)間公平キューイングを容易に実現できる。
【0567】
また、本発明のパケット転送装置(第6、第7の実施形態(請求項7、8))によれば、制御手段(バッファポインタ管理部)がパケットが入力されたときに複数の集合への振り分けが行われており、パケットを出力するときには1つの集合に属するポインタを出すだけで済むので、例えば設定すべきVC数が増えても高速にVC(フロー)間公平キューイングのための出力すべきパケットの選択が実現できる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係るクラス間の優先制御を行なうセル多重化装置の構成例を示した図。
【図2】本発明の第2の実施形態に係るクラス間の優先制御を行なうセル多重化装置の他の構成例を示した図。
【図3】出力バッファの他の構成例を示した図。
【図4】出力バッファのさらに他の構成例を示した図。
【図5】本発明の第3の実施形態に係るVC毎FIFOを備えた出力バッファ型セル多重化装置の構成例を示した図。
【図6】本発明の第4の実施形態に係る:VC間公平キューイングを行なうセル多重化装置の構成例を示した図。
【図7】本発明の第5の実施形態に係るVC間公平キューイングを行なうセル多重化装置の構成例を示した図。
【図8】本発明の第6の実施形態に係るセルグループFIFOを用いるセルバッファ装置の構成例を示した図。
【図9】本発明の第7の実施形態に係るセルグループFIFOを用いるセルバッファ装置の構成例を示した図。
【図10】第6の実施形態に係るセルグループFIFOのポインタチェーンによるデータ構造例を説明するための図。
【図11】第6の実施形態に係るセルグループFIFOのポインタチェーンによるデータ構造例を説明するための図で、空きセルグループチェーンの構成を示している。
【図12】第7の実施形態に係るセルグループFIFOのポインタチェーンによるデータ構造例を説明するための図。
【図13】第7の実施形態に係るセルグループFIFOのポインタチェーンによるデータ構造例を説明するための図で、空きセルグループチェーンの構成を示している。
【図14】パケットグループを用いたフロー間公平キューイングを説明するための図。
【図15】パケットグループを用いたフロー間公平キューイングを用いたパケットバッファ装置の動作を説明するための図。
【図16】本発明の第8の実施形態にかかるバックプレッシャ考慮キュー監視を説明する図である。
【図17】第8の実施形態に係るバックプレッシャ考慮キュー監視部を持つセルバッファ装置の構成例を示した図。
【図18】第8の実施形態に係るバックプレッシャ考慮キュー監視アルゴリズムを示したフローチャート。
【図19】本発明の第9の実施形態に係る遅延を考慮したセルバッファ装置の構成例を示した図。
【図20】遅延を考慮したセル数情報の修正方法の基本原理を説明するための図。
【図21】セル数修正方法の他の基本原理を説明するための図。
【図22】図21のセル数修正方法に用いる基本的な関数f()を説明するための図。
【図23】図21のセル数修正方法に用いる基本的な関数g()を説明するための図。
【図24】図21のセル数修正方法に用いる基本的な関数Sc()を説明するための図。
【図25】本発明の第10の実施形態に係るカゴスイッチの全体の構成例を示した図。
【図26】図25の出力バッファの構成例を示した図。
【図27】図25の1段目単位スイッチの構成例を示した図。
【図28】図25の2段目単位スイッチの構成例を示した図。
【図29】図25の入力バッファの構成例を示した図。
【図30】入力バッファのキューイング処理を説明するための図。
【図31】図25の入力バッファのカゴ管理部とのインタフェースを示した図。
【図32】図29のクラス毎マルチキャストセル管理部の動作を説明するための図。
【図33】図29のクラス毎マルチキャストセル管理部の動作を説明するための図。
【図34】図29のクラス毎マルチキャストセル管理部の動作を説明するための図。
【図35】図29のクラス毎マルチキャストセル管理部の動作を説明するための図。
【図36】図29のクラス毎マルチキャストセル管理部の動作を説明するための図。
【図37】図29のクラス毎マルチキャストセル管理部の動作を説明するための図。
【図38】図29のクラス毎マルチキャストセル管理部の動作を説明するための図。
【図39】図29のクラス毎マルチキャストセル管理部の動作を説明するための図。
【図40】図29の出力ポート選択スケジューラの構成例を示した図。
【図41】図25のカゴ管理部の構成例を示した図。
【図42】図41のカゴ管理部のクラス選択スケジューラで実行する、最大帯域を制限し最小帯域を保証するスケジューリングアルゴリズムの具体例を示したフローチャート。
【図43】図41のカゴ管理部のクラス選択スケジューラで実行する、最大帯域を制限し最小帯域を保証するスケジューリングアルゴリズムの具体例を示したフローチャート。
【図44】図41のカゴ管理部のクラス選択スケジューラで実行する、最大帯域を制限し最小帯域を保証するスケジューリングアルゴリズムの具体例を示したフローチャート。
【図45】セル数情報の修正方法の応用例であるカゴスイッチの動作を説明するための図。
【図46】図25の入力バッファとカゴ管理部との接続の具体例を示した図。
【図47】ABRサービスのための情報の経路の具体例を示した図。
【図48】従来のUBRサービスにおける不公平な帯域割り当てについて説明するための図。
【図49】従来のクラス間の優先制御を行うセル多重化装置の構成を説明するための図。
【図50】従来の入力バッファを持つセル多重化装置の構成を説明するための図。
【図51】従来のVCテーブルの検索が必要なセルバッファ装置の構成を説明するための図。
【図52】図50に示すような従来の入力バッファを持つセル多重化装置における入力バッファのキュー長の変化について説明するための図。
【図53】従来の優先制御を行うセル多重化装置の構成を説明するための図。
【符号の説明】
10…入力バッファ、11…出力バッファ、12…クラス管理部、212、222…カゴ管理部、230、240…バッファポインタ管理部、282…キュー監視部、302…転送指示履歴、KM…カゴ管理部、400…バックプレッシャ付きセルスイッチ。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a cell multiplexing device and a cell buffer device in an ATM communication network, for example.
[0002]
In addition, since a plurality of cell multiplexers are stacked in the cell switch, the configuration of the cell multiplexer of the present invention can be applied to the cell switch as a configuration corresponding to one output port of the cell switch. is there.
[0003]
The cell buffer device of the present invention is applicable not only to cells but also to general buffer devices.
[0004]
Furthermore, the present invention can be applied not only to an ATM communication network but also to a packet switching network.
[0005]
[Prior art]
Currently, research on ATM (Asynchronous Transfer Mode) communication systems is being actively conducted by researchers of communication technologies around the world. In the ATM communication system, information is exchanged by a fixed-length packet called a cell. In the ATM communication system, cell switching by hardware in the switch node enables high-speed cell exchange, and the information transfer capability per unit time can exceed that of an existing communication network.
[0006]
In the ATM communication method, a plurality of connections (Virtual Connection: VC) are logically set in one physical transmission line by identification information called VPI (Virtual Path Identifier) and VCI (Virtual Channel Identifier) in a cell header. Can do. In each switch node in the network, a route is determined in advance for each VC, and the switch node obtains an outgoing route to output a cell from the connection identifiers VPI and VCI of the cell. Since the VPI and VCI are uniquely assigned in the physical transmission path between the switch nodes, the switch node has the ability to rewrite the values of the VPI and VCI of the passing cell.
[0007]
Until now, VCs whose quality has been guaranteed in ATM networks have been centered on CBR (Con-stant Bit Rate) or VBR (Variable Bit Rate) connections. A CBR connection is a VC that transmits traffic that is known in advance with a constant cell transmission rate (also referred to as a cell rate or bandwidth; the number of transmission cells per unit time), and a VBR connection is a cell transmission rate that is not constant. In this VC, the traffic characteristics such as the maximum value (peak rate) and the average value (average rate) are known in advance.
[0008]
Basically, when a plurality of VCs are multiplexed on a single physical transmission line while maintaining sufficient quality, the sum of the peak rates of all VCs should be less than or equal to the bandwidth of the physical transmission line. . This method is called peak rate allocation. When only the CBR connection is assigned the peak rate, sufficiently high utilization efficiency of the physical transmission path can be achieved. In the case of the VBR connection, the use efficiency of the physical transmission path cannot be increased by the peak rate allocation. Therefore, a technique for increasing the utilization efficiency while maintaining the quality by using the statistical multiplexing effect is being studied from the known traffic characteristics.
[0009]
However, when considering ATM communication between computers, the nature of traffic characteristics such as the average rate cannot be predicted in advance, and the burst nature of transmitting a large number of cells instantaneously but not transmitting any cells when not transmitting. There is a nature called. For this reason, it is difficult to increase the network utilization efficiency while guaranteeing quality as in CBR and VBR. In other words, if the quality of data transferred between computers is guaranteed by peak rate allocation or the like, the use efficiency of the network is remarkably reduced. If the statistical multiplexing effect such as VBR is used, the traffic burstiness is increased. If a large number of cells arrive at the output port of the switch at the same time and the buffer amount of the cell switch is not sufficient, cell discard due to buffer overflow occurs. In addition, when cell discard occurs, retransmission occurs in units of packets made up of a plurality of cells, thereby reducing the effective throughput.
[0010]
Therefore, in recent years, a service class called ABR (Available Bit Rate) has been proposed in which flow control is performed between a terminal and a switch node to guarantee cell transfer quality (particularly quality related to cell discard) and to improve network utilization efficiency. Study is progressing. The ABR connection requests that the switch node greets the transmitting terminal to send a cell before the occurrence of the cell congestion when the switch node through which the ABR connection is likely to be congested. Traffic control information to the terminal is mainly performed using cells called RM cells (resource management cells). There is a non-negligible delay time in traffic control from a switch node to a transmission terminal in ABR. Therefore, it is necessary to mount a large-capacity buffer in the cell switch so that the cell is not discarded until the traffic control works effectively.
[0011]
As another service class of CBR, VBR, and ABR, there is a service class called UBR (Unspecified Bit Rate). This class does not require detailed declaration of the traffic characteristics output by the terminal to the network. Instead, the network is a class of so-called Best Effort service that makes no guarantees about its transfer quality.
[0012]
As described above, since the data between computers has a burst property, it is considered that a large capacity cell buffer must be installed in the cell switch in order to satisfy the cell discard rate of the UBR connection. ing.
[0013]
Fortunately, for traffic between computers, there are many cases in which the requirements regarding the transfer delay time and delay fluctuation are not as strict as those of CBR and VBR. Although a cell transmission delay time and delay fluctuation are increased by mounting a buffer with a large capacity in a cell switch, it is considered that there are many applications that can tolerate this.
[0014]
Particularly in the case of ABR and UBR services, it is considered that a means for avoiding network congestion is required. As one of congestion avoiding means, there is a method called EFCI (Explicit Forward Congestion Indication). There is an EFCI bit in the cell header that writes the congestion experience of the cell, and the cell switch in the network marks the EFCI according to the congestion status. The terminal can avoid congestion by using the information.
[0015]
Next, inter-VC fair queuing will be described.
[0016]
First, the fair queuing between VCs required for fault tolerance in the ABR service will be described.
[0017]
The ABR service is established when the transmitting terminal controls cell transmission according to traffic control information from the network. If a certain terminal breaks down (or deliberately) and ignores traffic control information from the network, it may be difficult to escape from network congestion.
[0018]
Such a problem can be solved by performing fair queuing between VCs in a cell multiplexing apparatus or cell switch to realize fair cell multiplexing scheduling between VCs and fair buffer allocation between VCs. By performing fair queuing between VCs, the interaction between VCs can be minimized, and even if there is a VC that ignores traffic control information, only that VC can be congested and the impact on other VCs can be reduced. Because.
[0019]
Also, fair queuing between VCs is required for fairness in UBR service.
[0020]
FIG. 48 shows an example of unfair bandwidth allocation in the UBR service. In this example, there are four terminals A, B, C, and D in the network, and one file server, each of which is a cell switch (or cell multiplexer) X, Y, Z and
[0021]
Here, assuming that each cell switch multiplexes cells regardless of the number of VCs set as input links, each cell switch treats input ports equally. For example, when the cells from
[0022]
Considering the same, the bandwidth finally given to each terminal is 0.5 for terminal A, and 0.125 for terminals C and D, the smallest. If it is ideal that all terminals have equal access to the file server, this is far from ideal.
[0023]
Furthermore, when the network is congested, the network transmits EFCI information so as to reduce the bandwidth to the terminal. At this time, if there are a terminal that faithfully follows the EFCI information and a terminal that ignores the EFCI information in the network, only the terminal that is faithful to the EFCI suppresses cell transmission. There is also a problem that it will be secured.
[0024]
These problems are due to the cell switch treating each input link equally, ignoring the number of VCs multiplexed on the input link. When the cell switch performs fair queuing between VCs and distributes bandwidth according to the number of VCs, each terminal can access the file server fairly.
[0025]
Next, a cell multiplexing apparatus that performs priority control between classes will be described.
[0026]
FIG. 49 shows a configuration of a conventional cell multiplexing apparatus that performs priority control between classes.
[0027]
FIG. 49 shows a cell multiplexing apparatus that multiplexes cells input from N input ports into one output port.
[0028]
The output buffer stores cells for each class in a cell storage unit for each internal class, and the cell selection unit selects and outputs cells to the output port according to the priority of the class.
[0029]
A back pressure signal is generated by comparing the number of cells stored in each storage unit of the output buffer with a threshold value. The input buffer is also provided with a cell storage unit for each class, and transfers cells to the output buffer in accordance with the class priority from the classes permitted to be output by the back pressure signal.
[0030]
In this configuration, since it is necessary to provide a plurality of cell storage units for each class in the output buffer, there is a drawback that it becomes difficult to realize the output buffer when the number of classes increases. In particular, the input speed of the output buffer must be N times the speed of the input port (N is the number of input ports). If the number of classes and the number of input ports is large, such complex functions cannot be realized. It was difficult.
[0031]
Considering FIG. 49 as a part related to each output port of the cell switch, the same problem exists for a cell switch having a buffer at the input port.
[0032]
Next, the cell multiplexing apparatus will be described.
[0033]
Problems of the cell multiplexing apparatus having an input buffer as shown in FIG. 50 will be described.
[0034]
FIG. 50 shows a cell multiplexing apparatus that multiplexes cells input from N input ports into one output port.
[0035]
The output buffer temporarily accumulates cells from the input port and outputs cells according to the speed of the output port.
[0036]
A back pressure signal is generated by comparing the number of cells stored in the output buffer with a threshold value. The input buffer has one queue corresponding to the output port, and transfers cells to the output buffer only when output is permitted by the back pressure signal.
[0037]
Since such a cell multiplexing apparatus treats each input buffer fairly regardless of the number of set VCs, there is a problem in fault tolerance in the ABR service and fairness in the UBR service.
[0038]
If FIG. 50 is considered as a part related to each output port of the cell switch, the same problem exists also in the cell switch having a buffer at the input port.
[0039]
Next, inter-VC fair queuing will be described.
[0040]
FIG. 51 shows the configuration of a FIFO for each VC, which is a method for realizing fair queuing between VCs.
[0041]
51 notifies the buffer pointer management unit of cell connection identification information input from the input link, obtains a write pointer indicating the cell write position from the buffer pointer management unit, temporarily stores the cell in the cell buffer, This is a cell buffer device that reads a cell from a cell buffer based on a read pointer indicating a read cell from a buffer pointer management unit and outputs the cell to an output link. The buffer pointer management unit manages a buffer pointer indicating the position of the accumulated cell on the cell buffer.
[0042]
The buffer pointer management unit manages the buffer pointer for each VC using the VC table. FIG. 51 shows a management method using a widely known pointer chain.
[0043]
When a cell is input, one buffer pointer is taken out from the head of the empty chain as a write pointer, and is attached to the end of the VC chain corresponding to the input cell. When outputting a cell, the VC storing the cell is selected fairly, and the leading buffer pointer is read out and taken out as a pointer. Round robin is known as a method for selecting a VC fairly at the time of cell output.
[0044]
In order to select a VC by round robin, it is necessary to search on the VC table in order from the next to the previously output VC whether there is a cell stored in the buffer. In the case of a large number of searches, it is necessary to perform almost all the VCs in one cell cycle, but the number of VCs to be set may reach several thousand or more, which is difficult to realize.
Next, queue length monitoring will be described.
[0045]
FIG. 52 shows an example of a change in the queue length of the input buffer in the cell multiplexing apparatus having the input buffer as shown in FIG.
[0046]
The horizontal axis represents time, the vertical axis represents the queue length of the input buffer, and the bottom represents the back pressure signal. When the back pressure signal indicates output prohibition (Tup), the output throughput from the input buffer is zero, so the queue length increases at the buffer input rate (Ri). When the back pressure signal indicates that output is possible, the output throughput from the input buffer is maximum and the normal queue length decreases.
[0047]
In this way, the queue length vibrates in synchronization with the back pressure signal. Conventionally, when a cell arrives at a buffer, if the queue length exceeds a threshold value, the input cell is not accepted but discarded, and if not, it is widely accepted. This method has no problem with a normal buffer, but becomes a problem when the output of the buffer is controlled by the back pressure signal in this way. The maximum value of the queue length is determined by the input rate (Ri) and the time (Tup) when the back pressure signal instructs to inhibit output. In particular, the output inhibition time (Tup) of the back pressure signal is set to other input buffers. This is because it is greatly influenced by input traffic and the like.
[0048]
In the case of a buffer device controlled by a back pressure signal, simply discarding cells by comparing them with the queue length and threshold value makes it difficult to stably discard cells because the cell discards are sensitively affected by external conditions. Met. The same problem exists when judging congestion from the queue length.
[0049]
Next, a cell buffer device that performs priority control will be described.
[0050]
FIG. 53 shows the configuration of a cell buffer device that performs priority control.
[0051]
There is a
[0052]
In order to improve the priority control performance of the cell buffer device, it is necessary to reduce the number of cells stored in the class multiplexing FIFO. However, in order not to reduce the throughput, the class multiplexing FIFO is not emptied. It is necessary to instruct transfer so that (= no underflow). Furthermore, when either one of the cell storage units is empty, if there is an instruction for transfer to the empty cell storage unit (referred to as an empty instruction), an underflow may occur. Therefore, it is necessary to give a transfer instruction to the cell storage unit in which the storage cell exists.
[0053]
From the above policy, the condition for the class management unit to instruct the transfer to the
(Nb ≤ 1) and (Na > 1)
Given in. The transfer instruction to the
(Nb ≤ 1) and (Na == 0)
It is.
[0054]
Here, transmission of cell number information from the cell storage unit for each class or class multiplexing FIFO to the class management unit, transmission of transfer instruction information from the class management unit to the class cell storage unit, and cell storage for each class Consider a case where there is a delay time in cell transfer from the cell to the cell multiplexing FIFO. Conventionally, the following problems existed at this time.
[0055]
Due to these delay times, the class manager cannot accurately determine whether or not the class multiplexing FIFO underflows. Therefore, the number of cells in the class multiplexed FIFO is set as a condition for preventing underflow by comparing with a larger threshold value corresponding to the delay time. As a result, the average queue length of the class multiplexing FIFO is increased and the priority control performance is degraded.
[0056]
In addition, it is impossible to accurately determine that the
[0057]
The problems with the cell buffer device performing priority control in FIG. 53 have been described above. This problem can occur not only in cell buffer devices that perform such priority control, but also in various cell buffer devices.
[0058]
In other words, in the cell buffer device in which the management unit instructs the transfer of cells between a plurality of buffers, the transmission of buffer information to the management unit, the transmission of transfer instruction information from the management unit to the buffer, and the transmission of cells between the buffers are delayed. When time exists, there is a problem that the performance and throughput of the cell buffer device are lowered.
[0059]
[Problems to be solved by the invention]
As described above, the conventional cell multiplexing apparatus has the following first and second problems.
[0060]
First, since it is necessary to provide a plurality of cell storage units for each class in the output buffer, there is a drawback that it becomes difficult to realize the output buffer when the number of classes increases. In particular, the input speed of the output buffer must be N times the speed of the input port (N is the number of input ports). If the number of classes and the number of input ports is large, such complex functions cannot be realized. It was difficult.
[0061]
Next, since each input buffer is treated fairly regardless of the set number of VCs, there is a problem in fault tolerance in the ABR service and fairness in the UBR service.
[0062]
Further, the conventional cell buffer device has the following third and fourth problems.
[0063]
First, in order to select a VC by round robin, it is necessary to sequentially search the VC table for whether or not there is a cell accumulated in the buffer from the next output VC. In the case of a large number of searches, it is necessary to perform almost all the VCs in one cell cycle, but the number of VCs to be set may reach several thousand or more, which is difficult to realize.
[0064]
On the other hand, in recent years, an algorithm as described in “Efficient Fair queuing Defect Round Robin” (pp. 231-242, ACM SIGCOMM '95, August 1995) has been proposed. Since the algorithm called DRR proposed in this document manages VCs that store cells using the concept of active lists, it is not necessary to search the VC table when cells are output. Therefore, even if the number of VCs to be set increases, selection of cells to be output for fair VC queuing can be realized at high speed. However, in this DRR algorithm, since packets are classified and stored for each VC, an amount of packets corresponding to the weight value set for each VC is output at one time, and the burstiness of the output traffic is extremely high. There was a drawback that it would be expensive.
[0065]
Next, in the case of a buffer device controlled by a back pressure signal, the method of determining cell discard simply by comparing the queue length with a threshold value is sensitive to cell discard due to external conditions. Disposal was difficult. The same problem exists when judging congestion from the queue length.
[0066]
Furthermore, the cell buffer device in which the management unit instructs cell transfer between a plurality of buffers has the following fifth problem. That is, if there is a delay time in the transmission of buffer information to the management unit, the transmission of transfer instruction information from the management unit to the buffer, and the transmission of cells between buffers, the performance and throughput of the cell buffer device will be reduced. There was a problem.
[0067]
The present invention has been made in view of the above points, and an object of the present invention is to provide a cell multiplexing apparatus that performs priority control between classes that is easy to realize even when the number of input ports is large. is there.
[0068]
Another object of the present invention is to provide a cell multiplexing apparatus capable of performing per-VC fair queuing for realizing fault tolerance in an ABR service and fairness in a UBR service.
[0069]
Another object of the present invention is to provide a cell multiplexing apparatus that performs inter-VC fair queuing that can be easily realized without depending on the upper limit of the number of settable VCs.
[0070]
Still another object of the present invention is to provide a cell multiplexing apparatus in which the queue length monitoring result is not easily affected by external conditions, and stable queue length monitoring is easy.
[0071]
Another object of the present invention is to transmit buffer information to the management unit, to transmit transfer instruction information from the management unit to the buffer, between buffers when the management unit instructs cell transfer between a plurality of buffers. It is an object of the present invention to provide a cell multiplexing apparatus in which performance and throughput are not lowered as in the prior art even when there is a delay time in cell transmission.
[0072]
[Means for Solving the Problems]
The packet transfer apparatus according to the present invention (claims 1 to 4) includes a plurality of input buffers for temporarily storing input packets, a control means for controlling these input buffers, and a packet output from each input buffer. A packet transfer apparatus comprising at least one output port for transferring
Each of the input buffers is
Accumulation means for each class that temporarily accumulates input packets for each class;
Output means for outputting packets of the class instructed by the control means from the storage means to the output port;
The control means includes
The storage status of all of the plurality of input buffers of the storage means is grasped for each class, a class to which a packet is to be output is determined based on the storage status, and an instruction including designation of the determined class is given to the plurality of input buffers By sending to
Each input buffer is used for the control unit to grasp the status of the entire plurality of input buffers (at least to know the overall status, but may be grasped for each individual input buffer). The priority relationship between classes does not collapse due to the difference in the storage status of each class, and priority control between classes can be easily realized even if the number of input ports, that is, the number of input buffers is increased.
[0073]
The packet transfer apparatus according to the present invention (
Each of the input buffers is
Storage means for temporarily storing input packets;
In response to an instruction from the control unit, a selection unit that selects a packet to be output from the storage unit to the output port in the next phase;
Output means for outputting the packet selected by the selection means to the output port;
The control means includes
By grasping the output status of the packet selected by the selection means in the entire plurality of input buffers, and instructing the plurality of input buffers to select a new packet based on the output status,
Introduce the concept of a packet set (cage) to be output within a phase (the time length is indefinite), select packets to be included in this packet set, and output only the packets in this packet set Each input buffer shares the process (output of other packets is not permitted), and the control unit (basket management unit) shares the process of instructing the timing of inserting a new packet into the packet set. In a buffered cell switch, fair queuing between VCs can be easily realized.
[0074]
The packet transfer apparatus according to the present invention (claims 7 and 8) includes a buffer for temporarily storing input packets, a control means for controlling the buffer, and packet transfer for transferring packets output from the buffer. A device,
The control means includes
Management means for managing the packets accumulated in the buffer by dividing them into a plurality of sets;
Distribution means for distributing the packets input to the buffer to any one of the plurality of sets so as to be fair among the flows to which the packets belong;
Instruction means for instructing the buffer to output a packet belonging to one of the plurality of sets managed by the management means;
Thus, when a packet is input by the control means (buffer pointer management unit), distribution to a plurality of sets is performed, and when a packet is output, it is only necessary to output a pointer belonging to one set. Therefore, even when the number of VCs to be set increases, selection of a packet to be output for the fair queuing between VCs can be realized. Further, the operation of the selection means of
[0077]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below with reference to the drawings.
[0078]
0. Definition of terms
Hereinafter, terms used for describing the embodiments of the present invention will be defined.
[0079]
(1) A packet is a concept including a fixed-length cell, and can be understood as a superordinate concept of a cell. In the following description, a packet is not limited to a variable length or a fixed length. Further, even when the description is limited to the cell, it is merely for the purpose of simplifying the description and is not particularly limited thereto.
[0080]
(2) Difference between packet (cell) multiplexer and packet (cell) buffer device:
Packet buffer device: One or more input ports, one or more output ports, and one or more buffers are provided. Packets input from the input ports are temporarily stored in the buffers as necessary, and then sent to the output ports. Output device. In particular, a packet buffer device that outputs a packet to an output port corresponding to a destination is called a packet switch.
[0081]
Packet multiplexer: A packet multiplexer that has a single packet output port is called a packet multiplexer (multiple packet multiplexers with a common input port when the packet buffer is divided into output ports) Can be seen as a stack of devices). In the following description, the description of the packet multiplexing device can be easily applied to the packet buffer device.
[0082]
(3) Packet transfer device: Includes both a packet buffer device and a packet multiplexing device which is a kind thereof. Also, in the following description, the case where a multiplexing device or a buffer device is described as an example is not particularly limited to this, and can be widely applied as a packet transfer device.
[0083]
1. Inter-class priority control (first embodiment, second embodiment)
First, an embodiment of a cell multiplexing apparatus that performs priority control between classes according to the present invention will be described.
[0084]
1.1 First embodiment
FIG. 1 shows a configuration example of a cell multiplexing apparatus that performs priority control between classes according to the first embodiment.
[0085]
The cell multiplexer of FIG. 1 is provided corresponding to each of the
[0086]
The
[0087]
The
[0088]
The
[0089]
The
[0090]
Although FIG. 1 shows the case of three classes (
[0091]
Further, when FIG. 1 is considered to be a part related to each output port of the cell switch, the first embodiment can be applied to the cell switch.
[0092]
The
[0093]
For example, the configuration may be such that the cell of the class multiplexed
[0094]
The
[0095]
That is, in the
[0096]
The
[0097]
For example, all the queue lengths are summed and compared with a threshold value, and if the threshold value is exceeded, input to the output buffer is prohibited by the back pressure signal. The back
[0098]
According to the cell multiplexing apparatus that performs priority control between classes according to the first embodiment, it is not necessary to identify a class in an output buffer that requires high throughput, and therefore it can be easily realized. The input buffer needs to manage cells for each class. However, since the throughput required for the input buffer is low, implementation is easy.
[0099]
The configuration of the cell multiplexing apparatus in FIG. 1 will be described in more detail.
[0100]
The number of cell storage units by class input to the
[0101]
The total calculation may be performed inside the
[0102]
In the cell number information, the
[0103]
By handling the total number of cells, the implementation of the
[0104]
The algorithm by which the
[0105]
1. Based on the number of class multiplexed FIFO cells, it is determined whether the class multiplexed FIFO does not underflow, and a transfer instruction is issued so as not to underflow only when it is determined that there is a possibility of underflow. Underflow refers to a state in which the number of class multiplexed FIFO cells becomes zero, and the cells in the cell storage unit for each class that should originally be output cannot be output effectively.
[0106]
2. Based on the number of cells per class, the class in which cells are stored in the
[0107]
3. When the transfer instruction can be performed, the class having the highest priority among the classes that are candidates for the transfer instruction is obtained, and the transfer of the class is instructed.
[0108]
The
[0109]
The
[0110]
In this case, the algorithm by which the
[0111]
1. Based on the number of cells in the class multiplexed FIFO, it is determined whether or not the class multiplexed FIFO will underflow, and only when it is determined that there is a possibility of underflow, a transfer instruction is given so as not to cause an underflow. Underflow refers to a state in which the number of class multiplexed FIFO cells becomes zero and the cells of the class-by-class
[0112]
2. Based on the number of cells per class, the class in which cells are stored in the input buffer is determined as a transfer instruction candidate.
[0113]
3. A class that obtains a throughput that is equal to or higher than a predetermined throughput for each class, based on the number of transfer cells for each class, lowers the priority for instructing transfer according to the degree. Or it is not a candidate for transfer instruction.
[0114]
4). From the number of transfer cells for each class, a class that obtains only a throughput equal to or lower than the throughput predetermined for each class increases the priority for instructing transfer according to the degree.
[0115]
5. When the transfer instruction can be performed, the class having the highest priority among the classes that are candidates for the transfer instruction is obtained, and the transfer of the class is instructed.
[0116]
1.2 Second Embodiment
Next, a second embodiment will be described.
[0117]
FIG. 2 shows another configuration example of the cell multiplexing apparatus that performs priority control between classes according to the second embodiment.
[0118]
The cell multiplexing apparatus of FIG. 2 is provided corresponding to each of the
[0119]
The
[0120]
The
[0121]
The cell storage unit 113 of the class designated by the transfer class instruction broadcast to the
[0122]
The cell storage unit 113 for each class is usually composed of a FIFO.
[0123]
FIG. 2 shows the case of three classes (
[0124]
If FIG. 2 is considered as a part regarding each output port of the cell switch, the second embodiment can be applied also to the cell switch.
[0125]
The output buffer 111 of FIG. 2 may take any form as long as it can guarantee that the cell of the class multiplexed FIFO can be output to the output port within a finite time in any situation.
[0126]
For example, the configuration shown in FIG. 4 may be used.
[0127]
In this case, the back
[0128]
According to the cell multiplexing apparatus that performs priority control between classes according to the second embodiment, since it is not necessary to identify a class in an output buffer that requires high throughput, it can be easily realized. The
[0129]
The configuration of the cell multiplexing apparatus in FIG. 2 will be described in further detail.
[0130]
The number of cell storage units per class input to the
[0131]
The total calculation may be performed inside the
[0132]
In the cell number information, the
[0133]
By handling the total number of cells, the implementation of the
[0134]
For example, the
[0135]
1. Based on the number of cells in the output buffer 111, it is determined whether the output buffer 111 does not underflow, and only when it is determined that there is a possibility of underflow, a transfer instruction is given so as not to underflow. Underflow refers to a state in which the number of output buffer cells becomes zero and the cells in the class-by-class cell storage unit 113 that should originally be output cannot be effectively output.
[0136]
2. Based on the number of cells in each class cell storage unit, a class in which cells are stored in the
[0137]
3. When the transfer instruction can be performed, the class having the highest priority among the classes that are candidates for the transfer instruction is obtained, and the transfer of the class is instructed.
[0138]
The
[0139]
Thus, the back pressure signal to the
[0140]
The
[0141]
In this case, the algorithm by which the
[0142]
1. Based on the number of cells in the output buffer 111, it is determined whether the output buffer 111 does not underflow, and only when it is determined that there is a possibility of underflow, a transfer instruction is given so as not to underflow. Underflow refers to a state in which the number of output buffer cells becomes zero and the cells in the class-by-class cell storage unit 113 that should originally be output cannot be effectively output.
[0143]
2. Based on the number of cells in each class cell storage unit, a class in which cells are stored in the
[0144]
3. A class that obtains a throughput that is equal to or higher than a predetermined throughput for each class, based on the number of transfer cells for each class, lowers the priority for instructing transfer according to the degree. Or it is not a candidate for transfer instruction.
[0145]
4). From the number of transfer cells for each class, a class that obtains only a throughput equal to or lower than the throughput predetermined for each class increases the priority for instructing transfer according to the degree.
[0146]
5. When the transfer instruction can be performed, the class having the highest priority among the classes that are candidates for the transfer instruction is obtained, and the transfer of the class is instructed.
[0147]
1.3 Advantages of the cell multiplexing apparatus according to the first and second embodiments
As described above, according to the cell multiplexing apparatus that performs priority control between classes of the first and second embodiments, it is not necessary to identify a class in an output buffer that requires high throughput. There is an advantage that it is easy to realize even when the number of input ports is large.
[0148]
2. Fair queuing (third to seventh embodiments)
Next, an embodiment of a cell multiplexing apparatus that performs inter-VC fair queuing according to the present invention will be described.
[0149]
2.1 Third Embodiment (Output Buffer Type Cell Multiplexer)
FIG. 5 shows a configuration example of a cell multiplexing apparatus that performs fair VC queuing according to the third embodiment.
[0150]
The cell multiplexing apparatus of FIG. 5 is called an output buffer type and is provided corresponding to each of the
[0151]
The
[0152]
The per-VC FIFO 201b must have a large capacity in order to obtain a sufficiently good cell discard rate. In addition, due to the non-blocking condition, the input speed of the per-VC FIFO 201b must be N times the input port. When the input port speed is high or the number of input ports is large, a high-speed and large-capacity memory that satisfies such a throughput is not cheap, and a complex queue for each VC while satisfying such a throughput. Management is also difficult.
[0153]
2.2 Fourth Embodiment (Cell Multiplexer Using the Concept of “Kago”)
Next, a fourth embodiment will be described.
[0154]
FIG. 6 shows a configuration example of a cell multiplexing apparatus using a concept called a basket according to the fourth embodiment.
[0155]
The cell multiplexing apparatus shown in FIG. 6 is provided corresponding to each of the
[0156]
This cell multiplexing apparatus includes a
[0157]
Among the cells stored in the
[0158]
The
[0159]
The
[0160]
If FIG. 6 is considered as a part regarding each output port of the cell switch, the fourth embodiment can be applied also to the cell switch.
[0161]
The output buffer 211 in FIG. 6 may take any form as long as it can guarantee that a car cell can be output to the output port within a finite time in any situation.
[0162]
For example, a configuration may be employed in which the cell of the
[0163]
In FIG. 4, the back
[0164]
According to the cell multiplexing apparatus that performs inter-VC fair queuing according to the fourth embodiment, an output buffer that requires high throughput has a simple configuration and can be easily realized. The input buffer needs to manage cells by a cage, but since the throughput required for the input buffer is low, it is easy to implement.
[0165]
The configuration of the cell multiplexing apparatus in FIG. 6 will be described in further detail.
[0166]
The number of cells in the car that is input to the
[0167]
The total calculation may be performed inside the
[0168]
The number-of-cells information is determined by the
[0169]
By handling the total number of cells, the implementation of the
[0170]
An example of an algorithm for determining the cell transfer instruction to the
[0171]
That is, it is determined whether or not the number of cells in the
[0172]
The
[0173]
Since the transfer instruction is broadcast to all the input buffers 210, cells enter the
[0174]
If the output buffer 211 is configured to be able to output a cell input from the
[0175]
FIG. 6 shows, as an example, a state where two, one, and three VCs are queued in the input buffers 210 of the
[0176]
There are two methods for inputting cells into the
[0177]
One method is a method in which a cell input to the
[0178]
Another method is a method in which a cell input to the
[0179]
The determination of the congestion state of the cell multiplexing apparatus of the fourth embodiment may be performed by monitoring information that varies depending on traffic for each VC by a predetermined method. Based on this congestion determination, the traffic control information may be notified to the terminal for each VC.
[0180]
The fluctuating information to be monitored is, for example, the number of stored cells, the relationship between the number of input cells per fixed time and the target value, and the relationship between the time input by a certain number of cells and the target value. A VC having a large number of accumulated cells, a VC having a large number of input cells per fixed time far from the target value, and a short VC having a time of inputting a certain number of cells far from the target value are determined to be a congested VC.
[0181]
The traffic control information can be notified to the terminal by marking the EFCI in the header of the congested VC cell or rewriting the passing RM cell.
[0182]
2.3 Fifth Embodiment (Another Embodiment of Cell Multiplexing Device Using the Concept of “Kago”)
Next, a fifth embodiment will be described.
[0183]
FIG. 7 shows another configuration example of the cell multiplexing apparatus using the concept called the basket according to the fifth embodiment.
[0184]
The cell multiplexing apparatus shown in FIG. 7 is provided corresponding to each of the
[0185]
This cell multiplexing apparatus includes a
[0186]
Of the cells stored in the
[0187]
The
[0188]
In response to the cell transfer instruction, the
[0189]
If FIG. 7 is considered as a part related to each output port of the cell switch, this embodiment can be applied to the cell switch.
[0190]
The output buffer 221 shown in FIG. 7 may take any form as long as it can guarantee that the cells of the
[0191]
For example, the configuration shown in FIG. 4 may be used. In this case, the back
[0192]
According to the cell multiplexing apparatus that performs inter-VC fair queuing according to the fifth embodiment, an output buffer that requires high throughput has a simple configuration and can be easily realized. The input buffer needs to manage cells by a cage, but since the throughput required for the input buffer is low, it is easy to implement.
[0193]
The configuration of the cell multiplexing apparatus in FIG. 7 will be described in further detail.
[0194]
For the cell number information, the
[0195]
An example of the algorithm used by the
[0196]
That is, it is determined whether or not the number of cells in the output buffer 221 does not underflow based on the number of cells in the output buffer, and a transfer instruction is issued so as not to underflow only when it is determined that there is a possibility of underflow. Underflow refers to a state in which the number of cells in the output buffer becomes zero, and the cells of the
[0197]
The
[0198]
Since the transfer instruction is broadcast to all the input buffers, cells enter the
[0199]
FIG. 7 shows, as an example, a state where two, one, and three VCs are queued in the input buffers 220 of the
[0200]
In the cell multiplexing apparatus of FIG. 7, the number of cells in the car is a ratio of 2 to 1: 3 in each input buffer according to the cell transfer instruction sent to the
[0201]
There are two methods for inputting cells into the
[0202]
One method is a method in which a cell input to the
[0203]
As another method, there is a method in which a cell input to the
[0204]
The determination of the congestion state of the cell multiplexing apparatus of the fifth embodiment may be performed by monitoring information that varies depending on traffic for each VC by a predetermined method. Then, the cell multiplexing apparatus may notify the traffic control information to the terminal for each VC based on this congestion determination.
[0205]
The fluctuating information to be monitored is, for example, the number of stored cells, the relationship between the number of input cells per fixed time and the target value, and the relationship between the time input by a certain number of cells and the target value. A VC having a large number of accumulated cells, a VC having a large number of input cells per fixed time far from the target value, and a short VC having a time of inputting a certain number of cells far from the target value are determined to be a congested VC.
[0206]
The traffic control information can be notified to the terminal by marking the EFCI in the header of the congested VC cell or rewriting the passing RM cell.
[0207]
2.4 Advantages of cell multiplexing apparatus according to fourth and fifth embodiments
As explained above, according to the cell multiplexing apparatus using the concept of the output permitted cell set (cage) according to the fourth to fifth embodiments, the cells to be included in the output permitted cell set are controlled. In order to adjust the output throughput of each input buffer, fair queuing between VCs can be performed, and fault tolerance in the ABR service and fairness in the UBR service can be realized.
[0208]
2.5 Sixth Embodiment (Cell Buffer Device Using Cell Group FIFO) Next, an embodiment of a cell buffer device that performs fair VC queuing according to the present invention will be described.
[0209]
FIG. 8 shows a configuration example of a cell buffer device using a cell group FIFO according to the sixth embodiment.
[0210]
8 notifies the buffer
[0211]
The buffer
[0212]
The buffer
[0213]
At the time of cell input, the buffer
[0214]
At the time of cell output, the cell group is output from the head of the cell group FIFO 232a, and a buffer pointer is further output from the cell group as the read pointer, and the read pointer is returned to the empty buffer
[0215]
FIG. 8 shows a configuration in the case where there is a possibility that a plurality of cell groups are output from the cell group FIFO 232a and waiting for output. The cell groups output from the cell group FIFO 232a are input to the output waiting
[0216]
The cell group of the output waiting
[0217]
The read pointer is a buffer pointer output from the head cell group of the output waiting
[0218]
For example, all VCs have the same weight. The cell of the first cell group of the cell group FIFO 232a is the cell at the head of the queue (except for the cells in the output waiting
[0219]
When a VC cell that has not arrived at all until this time arrives at this buffer device, it is input to the first cell group of the cell group FIFO 232a, and has priority over the second and subsequent cells of the other VC queues. Is output.
[0220]
As described above, according to the cell buffer device of the sixth embodiment, it is possible to perform fair queuing between VCs while searching for cells as in the conventional example shown in FIG. There is an advantage that no operation is required.
[0221]
As a method for realizing the cell group FIFO 232a of the cell buffer device according to the sixth embodiment, for example, a pointer chain method or a ring buffer method may be considered.
[0222]
2.6 Seventh Embodiment (Another Embodiment of Cell Buffer Device Using Cell Group FIFO)
Next, a seventh embodiment will be described.
[0223]
FIG. 9 shows another configuration example of the cell buffer device using the cell group FIFO according to the seventh embodiment.
[0224]
FIG. 9 notifies the buffer
[0225]
The buffer
[0226]
The buffer
[0227]
At the time of cell input, the buffer
[0228]
At the time of cell output, a buffer pointer is output from the first cell group of the
[0229]
In FIG. 9, the cell group waiting for output in the
[0230]
The cell group of the output waiting
[0231]
The read pointer is a buffer pointer output from the head cell group of the output waiting
[0232]
For example, all VCs have the same weight. The cell of the head cell group of the cell group FIFO 242 (that is, the cell group in the output waiting
[0233]
When a VC cell that has never arrived at this time arrives at this buffer device, it is input to the first cell group of the
[0234]
As described above, according to the cell buffer device of the seventh embodiment, a search can be performed as in the conventional example shown in FIG. 51 at the time of cell input and output while being able to perform queuing fairly between VCs. There is an advantage that no operation is required.
[0235]
As a method for realizing the
[0236]
2.7 Data structure used in cell buffer device according to sixth embodiment
Next, the data structure used in the cell buffer device (see FIG. 8) according to the sixth embodiment will be described.
[0237]
10 and 11 show an example of the data structure when the buffer device described in FIG. 8 is realized by the pointer chain method.
[0238]
Broadly divided, as shown in FIG. 10, a VC table 250, a cell group FIFO 232a, an output waiting
[0239]
The cell group FIFO 232a has cell group
[0240]
The cell group and empty
[0241]
The output waiting
[0242]
The cell group FIFO 232a and the output waiting
[0243]
When a cell is input, it must be determined to which cell group the write pointer extracted from the empty
[0244]
First, Qlen is checked to see if the VC cell is currently stored in the buffer device. If Qlen is zero, it is put in the first cell group of the cell group FIFO 232a. Even when Qlen is 1 or more, if Ptr indicates a cell group in the output waiting
[0245]
In other cases, 1.0 is added to Nc and compared with Nx, and if Nx is larger, it is put in the cell group pointed to by Ptr, otherwise it is put in the cell group next to the cell group pointed to by Ptr. Put in.
[0246]
Here, a procedure for updating Nc when a cell is input will be described. As described above, when a buffer pointer is input to the first cell group of the cell group FIFO 232a for the VC for the first time, Nc: = 1.0. In other cases, Nc is updated to Nc: = Nc + 1.0. As a result, if Nx > If Nc, a buffer pointer is put into the cell group. Conversely, if Nx <Nc, the buffer pointer is inserted into the cell group next to the cell group FIFO 232a, and at the same time, Nc: = Nc−Nx is rewritten (that is, 0 <Nc). < Nx).
[0247]
If it is necessary to put a buffer pointer in the cell group next to the last cell group of the cell group FIFO 232a, the cell
[0248]
As described above, it is necessary to determine whether or not Ptr in the VC table 250 indicates a cell group waiting for output when a cell is input. Therefore, the output waiting cell group
[0249]
When a new cell group is transferred from the cell group FIFO 232a to the output wait
[0250]
Note that the cell buffer device according to the sixth embodiment can be easily applied to an input buffer using the concept of a cage as shown in FIGS. In this case, the output waiting
[0251]
2.8 Data structure used in the cell buffer device according to the seventh embodiment
Next, the data structure used in the cell buffer device (see FIG. 9) according to the seventh embodiment will be described.
[0252]
12 and 13 show an example of the data structure when the buffer device described in FIG. 9 is realized by the pointer chain method.
[0253]
Broadly divided, as shown in FIG. 12, a VC table 260, a
[0254]
The
[0255]
The cell group and empty
[0256]
The output waiting
[0257]
The
[0258]
When a cell is input, it must be determined to which cell group the write pointer extracted from the empty
[0259]
First, Qlen is checked to see if the VC cell is currently stored in the buffer device. If Qlen is zero, it is put in the first cell group of the
[0260]
In other cases, 1.0 is added to Nc and compared with Nx, and if Nx is larger, it is put in the cell group pointed to by Ptr, otherwise it is put in the cell group next to the cell group pointed to by Ptr. Put in.
[0261]
Here, a procedure for updating Nc when a cell is input will be described. As described above, when the buffer pointer is input to the first cell group of the
[0262]
When a cell is input, if the cell group is not in the
[0263]
The output waiting cell group
[0264]
A buffer pointer is output from the head cell group of the output waiting
[0265]
When the buffer pointer of the head cell group of the
[0266]
When a cell group is newly transferred to the output waiting
[0267]
Note that the cell buffer device according to the seventh embodiment can be easily applied to an input buffer using the concept of a cage as shown in FIGS. In this case, the output waiting
[0268]
2.9 Advantages of cell buffer device according to sixth and seventh embodiments
As described above, according to the cell buffer device that performs inter-VC fair queuing according to the sixth to seventh embodiments, there is no need to search the VC table, so that the upper limit of the settable number of VCs is reached. It can be easily realized without dependence.
[0269]
2.10 Weighted fair queuing between flows
The above-described cell buffer device that performs fair queuing between VCs has been described by taking as an example the case of handling cells that are fixed-length packets. A packet buffer apparatus capable of simultaneously handling packets of different lengths can output the input packets fairly based on the weights determined for each flow as described below.
[0270]
The flow here is a set of packets identified by a certain standard as shown in the following example.
[0271]
A so-called flow in the IP network (identified by a combination of source address, source report, destination address, destination port), or VCC or VPC in the ATM network.
[0272]
Differences in IP network service classes (guaranted, controlled-load, best-effort, etc.) or ATM network service categories (CBR, VBR, ABR, etc.).
[0273]
・ Protocol differences (TCP / IP, DECnet, SNA, AppleTalk, etc.)
・ Application differences (ftp, telnet, etc.)
・ Different organizations sharing the same bucket buffer device (by company, etc.)
By treating these as different flows in the packet buffer device of the present invention, traffic can be separated from each other.
[0274]
First, general inter-flow weighted fair queuing will be described with reference to FIG. The purpose of this packet buffer device is to output packets stored in the device fairly according to the weight of the flow. The operation is easy to understand when considering a FIFO for each flow as shown in FIG. In the figure, there are three flow queues (FIFOs) of
[0275]
Processing when a packet is input to the packet buffer device is to determine a flow to which the input packet belongs and store it in a queue for each flow.
[0276]
On the other hand, it is necessary to output packets fairly between flows, and it is important to output packets in which queue and in which order. One method will be described in accordance with the situation of FIG. In order to simplify the description, the weights of the flows are assumed to be the same here. Here, the unit of fairness is assumed to be 500 bytes.
[0277]
First, a packet of 500 bytes in total including a packet having a length of 300 bytes and a packet having a length of 200 bytes is output from the head of the queue of
[0278]
Although the above method is fair in units of 500 bytes, it is not always fair in smaller units. However, it is known that strict fairness requires a very large processing capacity for the packet buffer device, and as a practical problem, it is often judged that the above-mentioned degree of fairness is sufficient.
[0279]
In the above description, the number of flows is three. However, when the packet buffer device handles an enormous number of flows, how to search for a flow in which packets are accumulated in a queue, The issue is whether to output. The present invention solves this problem using the concept of packet groups.
[0280]
In the present invention, the queues of all flows are divided into fixed lengths as in Z, A, B, C, and D in FIG. At this time, attention is paid to that a fair packet output can be realized by outputting a packet in units of each delimiter. In the present invention, packets are grouped and managed for each of these breaks. Each group is called a packet group. A packet group includes a plurality of flow packets. As for the output of the packet, the packet of the packet group Z closest to the output side is output first, and then the packet of the packet group A is output. Further, by outputting the packets of the packet group in order of B, C, and D, the packet buffer device of the present invention can output the packets fairly between the flows.
[0281]
By the way, looking at the
[0282]
The concept of the packet group of the present invention has been described above.
[0283]
Next, an example of the packet buffer device of the present invention will be described more specifically with reference to FIG.
[0284]
The constituent elements of the present invention include a packet group, a packet group FIFO, a flow table, and an output waiting packet group.
[0285]
The packet group is a group of accumulated packets as described above. In FIG. 15, A, B, C, and D are packet groups. Packets belonging to each packet group are ordered, and the packet group has a FIFO structure.
[0286]
In the present invention, as shown in FIG. 15, a packet group which is a FIFO of a packet is further managed by the FIFO. This FIFO of the packet group is called a packet group FIFO.
[0287]
The flow table stores information for each flow. In the flow table, Nx is a set value of the weight of the flow, Nc is a work variable, an accumulated amount is a total amount of accumulated packets of the flow, and Ptr is a pointer to a packet group to which a packet arriving at the end of the flow belongs. The accumulation amount has the purpose of indicating whether or not the packet buffer device is accumulating packets for the flow. For example, the accumulation amount is accumulated for each flow by adding the input packet length when inputting the packet and subtracting the output packet length when outputting the packet. Holds the total number of bytes in the packet.
[0288]
The output waiting packet group is a packet group output from the packet group FIFO (packet group Z in the figure). When outputting a packet from the packet buffer device, a packet belonging to the output waiting packet group is output.
[0289]
If a packet comes in, you must decide which packet group to put the packet.
[0290]
First, it is checked whether or not the packet of the flow is currently stored in the buffer device. By referring to the accumulated amount of the flow in the flow table from the flow identification information, it can be determined whether it is zero or not. If it is not currently stored, the input packet is put into the first packet group (packet group A in FIG. 15) of the packet group FIFO.
[0291]
Even if the accumulation amount is larger than zero, if Ptr points to the output waiting packet group (packet group Z in FIG. 15), the input packet is also put into the first packet group A of the packet group FIFO.
[0292]
In other cases, it is determined by the input packet length and Nx, Nc, Ptr.
[0293]
Nx of each flow indicates the average amount of packets managed by one packet group for the flow. Nx is set to a value larger than the maximum packet length of the flow.
[0294]
Nc indicates the remaining amount that the flow can enter the packet group indicated by Ptr by calculating Nx-Nc. If Nx−Nc ≧ (input packet length), the input packet is put into the packet group pointed to by Ptr. Conversely, if Nx−Nc <(input packet length), the packet targeted by Ptr on the packet group FIFO Put the input packet in the next packet group of the group.
[0295]
When the packet group is determined, the values of Nc and Ptr are updated. If the first packet of the flow is put in the first packet group of the packet group FIFO, Nc: = (input packet length). In other cases, first, Nc: = Nc + (input packet length), and if Nx <Nc, the result is further rewritten as Nc: = Nc−Nx (that is, 0 <Nc ≦ Nx). Ptr writes a pointer to the packet group containing the input packet.
[0296]
In the present invention, one packet is not managed by two packet groups. Therefore, when the length of the input packet exceeds Nx−Nc, the input packet is put into the next packet group without being put into the packet group pointed to by Ptr. However, in calculating Nc, one packet is divided into two packet groups. That is, Nc: = Nc + (input packet length), and if there is a portion exceeding Nx, that Nc-Nx is set as Nc of the next packet group. By this algorithm, on average, Nx packets belong to one packet group.
[0297]
The packet input operation will be specifically described with reference to FIG. FIG. 15 shows a scene in which a packet having a length of 250 bytes arrives at the packet buffer device in the
[0298]
If the input packet length of
[0299]
The packet group FIFO is a first-in first-out queue, and the number of queued packet groups can be increased as necessary. For example, assuming that a packet having a packet length of 400 arrives in
[0300]
As described above, the processing at the time of packet input may be performed by changing the corresponding part of the flow table, putting the packet into the packet group, and adding an empty packet group to the packet group FIFO if necessary. It is possible to perform processing at the time of input without searching the flow table across a plurality of flows, and the complexity of processing does not change even if the number of flows increases.
[0301]
On the other hand, the processing required when outputting a packet is even simpler. That is, a packet may be output from the output waiting packet group. If necessary, a packet group is output from the packet group FIFO before that. These processes are also possible without searching the flow table across a plurality of flows, and the complexity of the process does not change even if the number of flows increases.
[0302]
As described above, the weight Nx of each flow indicates the average amount of packets per packet group for the flow. Since the packet buffer device of the present invention outputs packets in units of packet groups, the output sleep of each flow is proportional to Nx.
[0303]
According to this packet buffer device, it is possible to realize a weighted and fair packet buffer device that can easily handle variable-length packets without depending on the upper limit of the number of flows that can be set, without requiring processing for searching a flow table. it can.
[0304]
Each packet group of the present invention manages packets in the order of arrival. In other words, the output order of packets belonging to the same packet group is in the order of arrival through all the flows. This property has an effect of reducing packet delay fluctuation.
[0305]
Further, the packet buffer device of the present invention can realize the selection of output cells for fair queuing between VCs at a high speed even when the number of VCs increases as compared with the algorithm called DRR described in the prior art. Even if the value increases, the burstiness of output traffic does not increase. The burstiness does not increase in the present invention because when an input packet is distributed and managed to a plurality of sets (packet groups), the packets are managed independently of the flow (VC) in one set, and This is because when outputting from a set (packet group), it is output regardless of the flow (VC).
[0306]
3. Queue monitoring considering back pressure (eighth embodiment)
Next, a cell buffer device that performs queue monitoring in consideration of back pressure according to an eighth embodiment of the present invention will be described.
[0307]
FIG. 16 shows an example of a change in the queue length in the input buffer as described in the first, second, fourth, and fifth embodiments, for example.
[0308]
The cell buffer device according to the eighth embodiment is a cell buffer device that is controlled in two states of output enabling and output prohibiting by a back pressure signal, and the back pressure signal has changed from output enabling to output prohibiting. From the time until the next change from possible output to prohibited output, only the number of stored cells at the time of the first cell input is monitored.
[0309]
The purpose of monitoring is determination of congestion, determination of discard of input cells to prevent monopolization of the buffer area when a plurality of queues share one buffer area, and the like.
[0310]
FIG. 17 shows a configuration example of a cell buffer device having a queue monitoring unit taking back pressure into consideration. In FIG. 17, the cell buffer device includes a plurality of queues Qi (i = 1 to N), a queue
[0311]
Qlen i of the queue table stored in the queue
[0312]
When the cell enters the queue, the input cell information is transferred to the
[0313]
FIG. 18 shows an example of a buffer queue length monitoring algorithm in consideration of back pressure. This shows an example in which the queue length is monitored to determine the presence or absence of congestion.
[0314]
When a cell is input to the queue Qi and cell input processing is started, first, Qlen i is incremented (step S1).
[0315]
Next, it is determined whether or not the queue length should be monitored by comparing BPID and BPIDt i (step S2). That is, monitoring is performed when the queue length that fluctuates due to the back pressure signal becomes shorter.
[0316]
If BPID ≠ BPIDt i, the queue length should be monitored. > It is determined whether or not 1 (step S3). At this time, Cnti > In the case of 1, it is determined that the state is congested until immediately before, and Qlen i is compared with a value (Qth−H) obtained by adding hysteresis to the threshold value Qth for determining whether or not the state is congested (step S4).
[0317]
Meanwhile, Cnti > If not 1, Qlen i> Qth is determined (step S5). When the queue length Qlen i is compared with Qth−H or Qth in step S4 and step S5, these threshold values are exceeded (that is, when Qlen i> Qth−H or Qlen i> Qth. ), Cnti: = Qlen i −Qth + H is performed (step S6, step S7), otherwise Cnti: = 0 is set (step S8, step S9). Further, the process proceeds to step S10.
[0318]
If BPID == BPIDt i in step S2, the queue length should not be monitored, and the process directly proceeds to step S10.
[0319]
In step S10, Cnti > 1 is determined. If so, it is in a congested state, and the process proceeds to step S11, where “1” is subtracted from Cnti (Cnti: = Cnti−1), and the input cell is discarded (step S12). Subtract (Qlen i: = Qlen i −1). Cnti > If it is not 1 (step S10), it is not a congestion state.
[0320]
Finally, the value of BPID is substituted into BPIDt i to update BPIDt i (step S13).
[0321]
As described above, according to the flowchart shown in FIG. 18, the accumulation at the time of the first cell input from when the back pressure signal changes from output possible to output prohibition until the next time when output possible changes to output prohibition. Only the number is monitored.
[0322]
H represents a parameter relating to hysteresis. Hysteresis has the effect of reducing the vibration of determination results such as cell discard and congestion that are performed by monitoring the queue length. 0 < If H <Qth and hysteresis is not required, set to zero.
[0323]
In FIG. 18, the threshold value Qth and the hysteresis parameter H show the case where the same value is used for all the queues, but different values may be set for each queue.
[0324]
Here, a method for determining the threshold value Qth will be described. First, consider a buffer that is not controlled by a backpressure signal. The buffer is input at a constant rate Ri and output at a constant rate R0. When Ri> R0, the buffer amount Qth necessary to prevent discarding for the time tT even if this load (Ri-RO) is applied is obtained by Qth = (Ri-RO) * tT.
[0325]
On the other hand, in the eighth embodiment, as shown in FIG. 16, the input rate is constant at Ri, but the output rate from the input buffer is zero for the Tup time (output inhibition time from the input buffer). , Tdn time (time available for output from the input buffer) is Re. Assuming that changes in Tup and Tdn are small, the buffer amount Qth necessary to prevent discarding for the time tT even when this load is applied is as follows.
[Expression 1]
[0326]
It becomes. Here, the average output rate R′0 from the output port is
[Expression 2]
[0327]
Therefore, Qth = (Ri-R'O) * tT, and the cell buffer device of the eighth embodiment sets the same threshold as that in the case of a simple buffer device without back pressure. By doing so, it is considered that almost the same effect can be obtained.
[0328]
Note that the same algorithm can be applied even when cell discard determination is performed instead of determining the congestion state.
[0329]
As described above, according to the cell buffer device considering the back pressure signal according to the eighth embodiment, the monitoring result of the queue length is hardly affected by the external condition, and the stable monitoring of the queue length is easy. is there.
[0330]
4). Correction of cell number information in consideration of delay (9th embodiment)
Next, an embodiment of a cell buffer device for correcting cell number information according to the present invention will be described.
[0331]
4.1 Ninth Embodiment (Cell Buffer Device Considering Delay)
FIG. 19 shows the configuration of a cell buffer device considering delay according to the ninth embodiment.
[0332]
The cell buffer device shown in FIG. 19 is roughly divided into a
[0333]
The
[0334]
The
[0335]
FIG. 20 is a diagram for explaining the principle of correcting the cell number information in the cell buffer device considering delay according to the present invention.
[0336]
Cells input from the input links # 1 and # 2 are temporarily stored in the cell buffers Ba1 and Ba2 in the previous stage, respectively. The cell is transferred to the cell buffer Bb according to the transfer instruction of the
[0337]
Ba2 cell number Na2 and Bb cell number Nb are transmitted to
[0338]
Now, the cell number information arrives at the
[0339]
Here, FIG. 20 shows a cell buffer device for performing priority control in which cell buffers Ba1 and Ba2 correspond to the
[0340]
Assume that the cell number information Na2 output from Ba2 at time t2 arrives at the
[0341]
Assuming that Ba2 has received a transfer instruction Ma2 times during the period from time t2 to t4 (= D cell period), Ba2 has output Ma2 cells during this period, and the number of cells of Ba2 at time t4 is Na2-Ma2. (When no cell is input to Ba2).
[0342]
Normally, since the transmission delay of the transfer instruction from the
[0343]
The same applies to Bb, and the amount of increase in the number of Bb cells from time t2 to t4 (the amount of increase due to transfer cells from Ba2) can be accurately obtained.
[0344]
The
[0345]
Further, the
[0346]
In summary, if the revised Na2 and Nb are N'a2 and N'b, respectively,
N'a2 = Na2 + 0-Ma2
N'b = Nb + Ma2-D
It is. Therefore, the condition for the
(N'b ≤ Th) and (N'a> 0)
Given in. The transfer instruction to Ba1 is
(N'b ≤ Th) and (N'a ≤ 0)
Perform under the following conditions. Th is normally “1”. By correcting the number of cells as described above, transfer can be instructed while reducing underflow and empty instructions.
[0347]
4.2 Method for correcting the number of cells in a general buffer network
Next, a method for correcting the number of cells in a general buffer network will be described.
[0348]
FIG. 21 is used to explain the basic principle. FIG. 21 shows the
[0349]
4.2.1. Definition of terms
Unless otherwise specified, the time is a relative time with the current time being zero, and is incremented by 1 every time the cell period elapses. Such a definition of time can be converted into other representation methods and is general. In addition, a period from a certain time t1 to a certain time t2 may be expressed as p, which is expressed as p = [t1, t2). This period p includes time t1, and does not include t2.
[0350]
The number of cells stored in the cell buffer Bx is represented by Nx. Nx is the number of storage cells that have arrived at the
[0351]
For the cell buffer Bx, the
[0352]
Time t (t < 0), the number of HOL cells in the cell buffer Bx arriving at the
[0353]
The number of HOL cells is the number of cells that may be transferred from the cell buffer at a time by one transfer instruction. In particular, the HOL cell number information Hx that has arrived at the
[0354]
The
[0355]
The number of times the management unit has instructed transfer to the cell buffer Bx during a certain period p is represented as Smx (p). When p = [t1, t2), it is also expressed as Mx [t1, t2). That means
[Equation 3]
[0356]
FIG. 23 is a time chart showing the flow of cell number information from the cell buffer Bx to the
[0357]
As shown in this figure, times tf, tt, and th are determined. It is assumed that the number Nx of accumulated cells in the cell buffer Bx at the time tf and the number of HOL cells Hx in the cell buffer Bx at the time th are the latest information that the
[0358]
Times t1, t3, and t2 are determined for times tf, tt, and th. The time at which the transfer instruction output from the
[0359]
It is assumed that the times t1, t2, and t3 are past times from the current time. That is, t1 <t2 < 0, t3 < 0.
[0360]
4.2.2. Basic principle
Here, the basic principle of the present invention will be described. The
[0361]
4.2.3. Three functions
Based on the above basic principle, three functions f (), g (), and Sc () used for correction are determined. These functions are used to determine how much the cell buffer Bx changes due to transfer of a cell according to a transfer instruction from time tf to time tt. It can be classified into three cases depending on what value th is compared with tf and tt, and different functions are applied.
[0362]
(1) Function f ()
The function f () is used when th = tf <tt. A time chart at this time is shown in FIG. Let p1 [t1, t2). When Hx ≠ 0 and Smx (p1) ≠ 0, it is considered that Hx cell transfer is performed in the first transfer instruction in the period p1, and one cell is transferred in subsequent transfer instructions. The function f () for calculating the number of cells in the cell buffer Bx that changes from time tf to time tt can be obtained as follows using Hx and the number of transfer instructions Smx (p1) in the period p1 as arguments.
[0363]
[Expression 4]
[0364]
(2) Function g ()
The function g () is used when th <tf <tt. A time chart at this time is shown in FIG. p1 = [t1, t2) and p2 = [t3, t1).
[0365]
In this case, it is necessary to distinguish between cases depending on whether or not the first transfer instruction arriving after time th is output from the
[0366]
[Equation 5]
[0367]
(3) Function Sc ()
The function Sc () is used when tf <tt = th. A time chart at this time is shown in FIG. Let p1 = [t1, t2). The latest number of stored cells that can be known by the
[0368]
If the number of HOL cells at the time when the transfer instruction arrives at the cell buffer Bx is known, the number of cells to be transferred can also be known. Therefore, the function Sc () for calculating the number of cells in the cell buffer that changes from time tf to time tt is: Using Ix (t) and Hx (t) and using the period p1 as an argument, it can be obtained as follows.
[0369]
[Formula 6]
[0370]
The method of correcting the number of cells as described above can be easily applied to, for example, a cell multiplexing apparatus that performs priority control between classes as shown in FIG.
[0371]
Further, for example, the cell number correction method can be easily applied to a cell multiplexing apparatus that performs inter-VC fair queuing as shown in FIG.
[0372]
4.3 Advantages of cell buffer device according to ninth embodiment
As described above, according to the ninth embodiment, the cell buffer device having a delay between the cell buffer and the management unit that manages the cell buffer stores the transfer instruction history when determining the transfer instruction. The number of cells transmitted from the cell buffer is corrected to the number of cells at the time when the transfer instruction acts on the cell buffer, so that the performance degradation due to the delay time is small.
[0373]
5. Cell switch (tenth embodiment)
5.1 Tenth Embodiment (Cell Switch)
Next, as a tenth embodiment, a cell switch in which the cell multiplexing device and the cell buffer device according to the present invention described so far are combined will be described.
[0374]
FIG. 25 shows a plurality of input buffers IB that temporarily store cells input from a plurality of input ports #i (i = 1 to N) and output them according to back pressure, and a back that corresponds to an internal congestion state. The
[0375]
The cells handled in this configuration example generally have two priorities, a high priority cell and a low priority cell, and the low priority class is divided into a plurality of classes. Normally, a cell that transmits real-time information such as CBR and VBR is a high-priority cell, and a cell that transmits non-real-time information such as ABR and UBR is a low-priority cell.
[0376]
First, a cell switch with back pressure will be described.
[0377]
The features of the basket switch are the input buffer IB and the basket management unit KM. The
[0378]
The back-pressured
[0379]
The
[0380]
Focusing only on the replacement of the low-priority cells, the basic configuration is almost the same as that shown in the 1995 IEICE General Conference B-589 “A method for expanding the buffer capacity of an ATM two-stage switch network”. The low priority cell is exchanged and copied in SE1 and SE2.
[0381]
When the low-priority cell is congested by OB, the cell output to the output port of the IB is suppressed using the low-pressure cell back pressure signal. This back pressure signal basically prevents the OB and SE2 buffers from overflowing. However, these buffers may overflow due to the influence of the multicast cell. In preparation for this, an overflow back pressure signal for low priority cells is output from OB to SE2, and an emergency back pressure signal for low priority cells is output from SE2. Output to IB. Since IB accumulates low priority cells, SE2 and OB are not discarded.
[0382]
Instead of outputting the low-priority cell overflow backpressure signal to SE2, the OB may output this to the IB as a low-priority cell emergency backpressure signal. In this case, SE2 does not need to output a low priority cell emergency backpressure signal. However, as described above, the output of the low-priority cell emergency backpressure signal from SE2 has an advantage that the buffer sharing effect in SE2 can be effectively utilized.
[0383]
The high priority cell is exchanged and copied at SE1 and SE2 in the same manner as the low priority cell. For high priority cells, there is no backpressure signal from the cell switch with backpressure to the IB. The OB controls the cell output of SE2 by a high-priority cell back pressure signal reflecting the congestion of the high-priority cell. The IB does not accumulate high priority cells. If there is no empty buffer in SE2, it may be discarded.
[0384]
Next, the output buffer will be described.
[0385]
FIG. 26 shows a configuration example of the output buffer OB of the basket switch.
[0386]
The cells transferred from SE2 to OB are identified in priority by the
[0387]
Next, the unit switch will be described.
[0388]
FIG. 27 shows a configuration example of the first stage unit switch SE1 used for the basket switch. SE1 is a generally well-known switch LSI. With respect to the cell input from the input link, the
[0389]
FIG. 28 shows a configuration example of the second stage unit switch SE2 used for the basket switch. In SE2, the internal queue is a queue for each priority for each output link. The output of the queue for each priority is selected by the
[0390]
SE2 can efficiently use the buffer in SE2 by sharing a physical buffer area among a plurality of priorities and a plurality of output links. The buffer
[0390]
For example, the high priority cell queue has a threshold value for each queue, and when the threshold value is exceeded, the input cell of the queue is discarded. The low-priority cell queue monitors the total of all queue lengths, and if the threshold value is exceeded, informs the IB to prohibit the input of low-priority cells by a low-priority cell emergency backpressure signal.
[0392]
SE1 may use the same unit switch as SE2.
[0393]
In the
[0394]
Next, the input buffer IB will be described.
[0395]
FIG. 29 shows a configuration example of the input buffer IB of the cage switch.
[0396]
The high priority cell input to the IB is preferentially output to SE1 for both unicast and multicast. Therefore, the cell delay fluctuation of the high priority cell is very small. There is no buffer for high priority cells in the IB.
[0397]
A feature of the present invention resides in a method for processing low priority cells. Hereinafter, only the low priority cell will be described.
[0398]
In FIG. 29, the input buffer IB mainly includes a plurality of output port unicast
[0399]
The unicast
[0400]
The multicast
[0401]
Cells output from the
[0402]
The output
[0403]
The unicast
[0404]
The cells that have entered the
[0405]
The cells of the
[0406]
The operation of the multicast
[0407]
By sharing the cell buffer among all the output ports of the IB and the queues of all classes, it is possible to effectively use a finite buffer amount.
[0408]
In order for a cell that has arrived at the IB to be output from the IB, it is necessary for the IB to notify the KM that the cell has arrived and to instruct the output from the IB. Therefore, if there is a delay in information transmission between the IB and the KM, the cell output from the IB is delayed by the delay time. However, since the delay time is considered to be about several cell cycles, the influence on the traffic characteristics is considered to be small.
[0409]
In order to preferentially control the unicast cell for each output port, the IB has a unicast cell management unit for each
[0410]
Although FIG. 1 shows a cell multiplexing apparatus, the cage switch is a cell switch and IB is an input buffer of the cell switch. Therefore, a plurality of class multiplexing FIFOs exist in one IB corresponding to all output ports, and the cells are selected by the output
[0411]
The cell-by-class
[0412]
The
[0413]
Multicast cell priority control will be described later.
[0414]
In order to perform fair queuing between VCs for each class of unicast cells, the unicast
[0415]
FIG. 6 shows a cell multiplexing apparatus and no class, but IB is an input buffer of a cell switch and also has a class. For each IB, the
[0416]
6 corresponds to the
[0417]
Inter-VC fair queuing of multicast cells will be described later.
[0418]
There is a
[0419]
The cell group FIFO 232a in FIG. 10 corresponds to the IB
[0420]
Next, the queuing process of the input buffer IB will be described with reference to FIG.
[0421]
The cell is first accumulated in the
[0422]
In this configuration example, all VCs belong to a certain connection group (CG). By having the concept of a connection group, a plurality of VCs can share one resource (bandwidth or cell buffer). For example, when only one VC is charged for communication between two distant users, it is possible to give a degree of freedom to set a plurality of VCs between the two users. Alternatively, it is possible to prevent two users from setting a large number of VCs to obtain an unreasonably large band in a network that allocates a fair band according to the number of VCs.
[0423]
The VC table and the CG table are used to determine in which unit car the cell is placed in the
[0424]
The connection group identifier (for example, CG5) can be known from the connection identifier (for example, VC4) of the input cell using the VC table. A value determined for each CG can be known from the connection group identifier using the CG table. The values for each CG in this configuration example are Nx, Nc, Ptr, Qlen, Cnt1, Cnt2, Cnt3, and BPIDt.
[0425]
Nx, Nc, Ptr, and Qlen have been described in the data structure example by the pointer chain of the cell group FIFO in FIG. Nx is the weight of the CG, Nc is the work variable, Qlen is the number of cells stored in the CG, and Ptr is a pointer to the end of the unit basket in which the CG cells are stored.
[0426]
On the other hand, Qlen, Cnt1, Cnt2, Cnt3, and BPIDt have been described in the cell buffer device having the back pressure consideration queue monitoring unit shown in FIGS.
[0427]
Qlen is the number of cells stored in the CG, Cnt1 is the number of cells to be discarded, and BPIDt is a back pressure identifier at the time of the last cell input. There are variables Cnt2 and Cnt3 having the same function as Cnt1 in order to perform finer queue monitoring. Each queue length monitoring threshold is different. Cnt2 is the number of cells to be discarded for a cell whose CLP (Cell Loss Priority) bit in the cell header has a low priority (CLP = 1), and Cnt3 is used to determine whether there is congestion in this queue length monitoring. The value to use for. The information on whether or not congestion is used, for example, to determine whether or not to mark EFCI in the cell header and whether to mark the congestion indication bit of the RM cell.
[0428]
It is possible to set not to perform fair queuing between VCs in a certain class. In that case, the Nx of the CG to which the VC belongs may be set to a sufficiently large value.
[0429]
Now, the cell switch with back pressure shown in FIG. 25 has a relatively low cycle for repeating the output prohibition and the output prohibition for the low-priority cell back pressure signal due to the influence of the delay time of cell transmission from IB to OB. large. Accordingly, when the queue length Qlen for each CG of the IB is observed, the oscillation repeats mainly as shown in FIG. 14 in synchronization with the low priority cell back pressure signal. As described above, the back pressure-considered queue length monitoring algorithm described with reference to FIGS. 15 and 16 is suitable for monitoring the queue length that is vibrated by the back pressure signal.
[0430]
Regarding the total number of cells in the entire class of cells stored in the
[0431]
FIG. 31 shows an example of an interface with the basket management unit KM of the input buffer IB used for the basket switch.
[0432]
Information for each output port as shown below is input from the KM to each output port.
[0433]
-Number of ABR input cells
-Instruction class
-Transfer instruction of unit basket from previous basket to basket (transfer instruction T1 in FIG. 31)
-Cell transfer instruction from basket to class multiplexing FIFO (transfer instruction T2 in FIG. 31) The number of ABR input cells is transferred to the
[0434]
When the KM is instructed to transfer a cell from the
[0435]
By limiting the unit basket transfer instruction only to the transfer instruction of the cell of the class, the amount of information of the transfer instruction can be reduced and mounting can be performed more easily.
[0436]
The number of cells in the
[0437]
For each input port, for input cells (only one output port in case of unicast),
-Presence and class of input cells
For each output port, the transfer instruction class
-Number of previous basket cells (after transfer) (CE1 in FIG. 31)
-Number of kago cells (after transfer) (CE2 in FIG. 31)
-Number of transfer cells to class multiplexing FIFO (CE3 in FIG. 31)
For each output port, only unicast,
Number of class multiplexed FIFO cells (CE4 in FIG. 31)
This will be described with reference to FIG. Input cell information is transmitted from the IB to the KM as the presence and class of the input cell. In addition, the number of previous basket cells of unicast and multicast is added, and the class selected by the class selection unit L5 in the transfer instruction class is transmitted as the number of previous basket cells. Furthermore, the number of unicast and multicast basket cells is added, and the number selected by the instruction class in the class selection unit L6 is transmitted as the number of basket cells. Then, unicast and multicast are added to the number of cells moved from the basket to the
[0438]
Since the output of the multicast
[0439]
Here, multicast cell priority control and inter-VC fair queuing will be described.
[0440]
Consider a multicast VC from the viewpoint of throughput. In general, considering the state of a cell switch at a certain point in time, the plurality of output ports include a congested output port and an output port with a low load. That is, the throughput that the VC can use varies depending on the output port. Multicast VCs simultaneously output the same throughput from one input port to multiple output ports, so the throughput that the multicast VC can obtain is the throughput of the most congested output port among the output destinations. Is good. Therefore, when outputting a multicast cell from the IB, it is desirable to output at the throughput of the most congested output port.
[0441]
The IB can know the throughput per VC (CG) given to a certain class of a certain output port from the frequency of the unit basket transfer instruction from the
[0442]
In order to output at the throughput of the most congested output port, the multicast cell may be transferred when these signals indicate or permit all the output ports of the cell. Instructions or permissions to multiple output ports need not be simultaneous.
[0443]
When managing low-priority multicast VCs in IB, it is desirable to manage them for each class and for each output port pattern. In general, however, the number of combinations is large, and the number of output ports during communication is also large. Such an implementation is not realistic. In the cage switch as shown in FIG. 25, all multicast connections are managed only for each class, and are not managed for each output port pattern. A certain amount of HOL (Head Of Line) blocking occurs.
[0444]
FIG. 32 is a diagram for explaining the class-by-class multicast
[0445]
Whereas the per-class unicast
[0446]
The class-specific multicast
[0447]
・ Unit basket transfer instruction from previous basket to basket
-Cell transfer instruction from basket to class multiplexing FIFO
The following information is output for each output port.
[0448]
・ Number of previous kago cells
・ Number of Kagocel
・ Number of transfer cells
The inter-VC
[0449]
The output port table stores the number of previous basket cells and a pointer to the head unit basket for each output port. The number of previous baskets is the total number of unit baskets, and the head unit basket is a pointer to the head unit basket of the previous basket in calculation.
[0450]
The number of unit basket cells stores data for each output port corresponding to the unit basket of the VC
[0451]
The number of basket cells is the calculated number of basket cells. The number of output-permitted cells is the number of cells permitted to be output in calculation.
[0452]
When a unit basket transfer is instructed to a certain output port, the number of unit basket cells of the head unit basket of that output port is added to the number of basket cells, and the number of unit basket cells is made zero. Further, 1 is subtracted from the number of basket cells of the output port, and 1 is added to the number of cells permitted to output. Then, the pointer of the head unit basket in the output port table is advanced by one to the next unit basket in the
[0453]
By advancing the pointer of the head unit basket, the pointer moves away from the head unit basket of the
[0454]
When cell transfer is instructed to a certain output port from the KM, 1 is subtracted from the number of basket cells of that output port, and 1 is added to the number of output-permitted cells. The number of transfer cells at this time is one cell.
[0455]
When the back pressure signal from the
[0456]
The number of output-permitted cells is increased by unit basket transfer instruction and cell transfer instruction. When the number of output-permitted cells of a certain output port exceeds a certain value, the number of the previous and the number of basket cells output from the multicast
[0457]
Next, with reference to FIGS. 33 to 39, the operation of the multicast cell management unit for each class will be described.
[0458]
FIG. 33 shows the operation when the KM instructs the
[0459]
The pointer of the head unit basket in the output port table is advanced by one to the next unit basket of the VC
[0460]
Furthermore, FIG. 34 shows the operation when the KM instructs the
[0461]
The output ports of the first cell of the inter-VC
[0462]
The operation when the cell arrives is shown in FIG. The output ports of the arrived cells are # 1 and #N. It is also assumed that this cell is a VC cell that has not been stored in the inter-VC
[0463]
When a cell is input, the number of unit basket cells of all output ports of the cell is incremented by one. The unit basket to be added is determined for each output port. Basically, 1 is added to the unit basket in which the cell is input, but if the first unit basket in the output port table is behind the unit basket in which the cell is input, the unit basket cell pointed to by the first unit basket in the output
[0464]
Furthermore, FIG. 36 shows the operation when a cell arrives. The output ports of newly arrived cells are # 1 and # 2. This cell is a VC cell currently stored in the inter-VC
[0465]
Further, FIG. 37 shows an operation when the KM is instructed to transfer the unit basket to the output port #N. The number of unit basket cells of the head unit basket of port #N is added to the number of basket cells to make the number of unit basket cells zero. Further, 1 is subtracted from the number of cargo cells of port #N, and 1 is added to the number of output-permitted cells. The number of cells transferred to KM is 1 for output port #N. The pointer of the head unit basket in the output port table is advanced by one to the next unit basket of the VC
[0466]
Since the output ports of the leading cells of the inter-VC
[0467]
FIG. 38 shows a state when cells are output. The number of output permitted cells corresponding to the output port of the output cell is subtracted by one.
[0468]
FIG. 39 shows a state in which unit baskets and basket transfers are instructed continuously as described above, and a total of 6 cells are output. The head unit basket of the inter-VC
[0469]
The
[0470]
The output of the unicast cell is permitted by the unicast cell output permission signal output from the unicast cell output permission
[0471]
The unicast cell output permission
[0472]
The back pressure signal is for each output port. In addition, the back pressure signal corresponding to the emergency back pressure signal is determined in advance. In the case of FIG. 25, the emergency back pressure signal is output from SE2, and corresponds to the back pressure signal from the output buffer OB connected to the output link of SE2.
[0473]
When the back pressure signal indicates prohibition of output, the unicast cell output permission signal does not permit the output of the cell at the output port. When the emergency back pressure signal indicates that output is prohibited, it is assumed that all back pressure signals corresponding to the emergency back pressure signal indicate that output is prohibited, and output is not permitted.
[0474]
The multicast cell is permitted to be output by the multicast cell output permission signal output from the multicast cell output permission
[0475]
The multicast cell output permission
[0476]
The multicast cell output permission
[0477]
The
[0478]
As described above, the multicast cell is output even if all the back pressure signals of the output port do not permit the output at the same time. That is, at the time of output of the multicast cell, some back pressure signals at the output port of the cell may indicate output prohibition. Even in such a situation, the low-priority cell emergency back pressure signal works effectively so that the SE2 buffer does not overflow.
[0479]
In the above configuration, when the output of the low priority cell emergency back pressure signal indicates prohibition, the output of both the unicast cell and the multicast cell for the corresponding output port is prohibited. As another configuration, the multicast cell output permission
[0480]
The input buffer IB of the present invention performs back pressure consideration queue monitoring described with reference to FIG. This monitoring is performed based on the value of the back pressure identifier updated by the back pressure signal. The back pressure identifier for each output port of the unicast cell is updated by the unicast cell output permission signal of the output
[0481]
Next, with reference to FIG. 41, the basket management unit KM used for the basket switch shown in FIG. 25 will be described.
[0482]
FIG. 41 shows a configuration example of the basket management unit KM.
[0483]
KM for each output port
-Total number of ABR input cells.
[0484]
-For each class, the total number of previous basket cells, the total number of basket cells, and the number of transferred cells.
[0485]
• Total number of class multiplexed FIFO cells.
[0486]
And a transfer instruction
[0487]
The total number of ABR input cells is the total number of input cells of all IBs for each output port for the ABR class. Integration is performed within a certain period of time, and transmitted to the IB paired with the output port for each cycle. If the total number of ABR input cells exceeds a certain threshold before reaching a predetermined fixed time, a configuration may be used in which the IB is notified interruptively.
[0488]
The total number of previous basket cells is obtained by adding the total number of cells input to the previous basket based on the presence / absence of cells input to the IB and the class information. In addition, the number of previous baskets in the class to which KM has instructed transfer is updated with the sum of all IBs. The class is stored in the transfer instruction
[0489]
The total number of basket cells is updated with the total number of basket cells of all classes for which the KM has instructed transfer. The transfer instruction
[0490]
The number of transfer cells is updated by adding the number of transfer cells to the class multiplexed FIFO of the class to which KM has instructed transfer for all IBs. The transfer instruction
[0491]
The total number of class multiplexed FIFO cells is updated by adding the number of class multiplexed FIFO cells for all IBs.
[0492]
The class selection scheduler 381 issues a transfer instruction to the IB based on information such as the total number of previous basket cells, the total number of basket cells, the total number of transfer cells, and the total number of class multiplexed FIFO cells. The history of past transfer instructions is stored in the transfer instruction
[0493]
42, 43, and 44 show an example of a scheduling algorithm executed by the class selection scheduler 481 of the basket management unit KM. This algorithm performs priority control based on priority while limiting the maximum bandwidth of a class and guaranteeing the minimum bandwidth.
[0494]
As a global variable, there is a variable now indicating the current time. For each class i, a parameter Dxi that gives the upper limit of the
[0495]
For each class i, if it should be output, the current time now is Tdi < This is the time when the output is prohibited, and when the current time now is now <Tui. If output is to be performed according to priority, the current time now is Tui. < This is when now <Tdi. Tdi has an upper limit, and Tdi < now + Dxi. Tui has a lower limit, and now-Uxi. < Tui. However, Uxi > 0, Dxi > Di.
[0496]
In the initial setting, now is set to zero, Tdi is set to Di-Ui for each class i, and Tu is set to now, that is, zero (step S101 in FIG. 42).
[0497]
This algorithm performs the following processing for each cell period.
[0498]
First, the process when the class becomes active is performed. Specifically, when a cell arrives at class i where there is no cell, Tdi is updated to the greater of now and Tdi, and Tu is updated to the greater of now and Tui (step S102 in FIG. 43).
[0499]
Next, it is determined whether or not the cell can be transferred (step S103 in FIG. 43). If so, transfer class selection and transfer class instruction are performed (step S104 in FIG. 43).
[0500]
The transfer class selection is the following process.
[0501]
Within each class i where there are cells to be transferred,
1. Tdi < If there is a class that is now, the class with the largest now-Tdi is selected (if it is the same value, it is determined by the priority).
[0502]
2. Tdi < If there is no class that is now, Tui < The class having the highest priority is selected from the classes satisfying now <Tdi.
[0503]
If the selected class is j, the process proceeds to step S105 in FIG. 44, and the following transfer class instruction process is performed.
[0504]
1. Instruct transfer of class j.
[0505]
2. Update Tuj to max (Tuj, now-Uxj).
[0506]
3. Update Tdj to Tdj + Dj.
[0507]
4). Updated Tuj to Tuj + Uj.
[0508]
5. Tdj is updated to min (Tdj, now + Dxj).
[0509]
Finally, after performing the transfer cell flow rate monitoring process (step S106 in FIG. 44), the value of “now” is incremented (step S107 in FIG. 44), and the process for each cell cycle is completed.
[0510]
The transfer cell flow rate monitor process in step S106 of FIG. 44 performs the following process for class j when the number of transfer cells of class j is xj.
[0511]
1. Update Tuj to max (Tuj, now-Uxj).
[0512]
2. Update Tdj to Tdj + (xj -1) Dj.
[0513]
3. Update Tuj to Tuj + (xj-1) Uj.
[0514]
4). Tdj is updated to min (Tdj, now + Dxj).
[0515]
The determination in step S103 in FIG. 43 as to whether or not to instruct transfer of cells is made based on whether or not the total number of class multiplexed FIFO cells is equal to or less than a certain threshold value. A certain threshold is usually “1”. The total number of class multiplexed FIFO cells is a value corrected by the transfer instruction history of the transfer instruction
[0516]
In step S104 in FIG. 43, whether or not there is a cell to be transferred to the class is determined by determining that either the total number of previous basket cells or the total number of basket cells is not zero. The total number of previous basket cells and the total number of basket cells are values corrected by the transfer instruction history of the transfer instruction
[0517]
The transfer instruction is a cell transfer instruction from the
[0518]
This algorithm can bring the minimum guaranteed bandwidth closer to zero by setting Di to a large number. For example, if Di of all classes is set to a large number, priority control of all classes can be performed with complete priority.
[0519]
Further, by using one of the classes as an IC (Idle Cell) class having the lowest priority but the minimum guaranteed bandwidth, the usage rate of the output port can be controlled. The IB inserts an idle cell into the class multiplexing FIFO when there is an IC class transfer instruction (only one IB is required).
[0520]
The idle cell is exchanged towards the output port of the cell switch like the other cells, where it is replaced with the Unassigned Cell. The KM may perform scheduling assuming that the IC class always has a cell to be transferred.
[0521]
Incidentally, in the algorithms shown in FIGS. 42 to 44, for the sake of simplicity of explanation, it is assumed that variables that represent time such as variables now, Tdi, and Tui do not have upper limits. At the time of implementation, these variables are expressed by a register having a finite bit length, so that the same time appears cyclically after a long time. In order to operate the algorithm normally, the following may be performed. Let these cycles be Max. Max needs to be large enough.
[0522]
At this time, calculation such as x: = f (x) is
x: = f (x) mod Max
Replace with In other words, take modulo with Max. Y < The comparison operation of z is
(Z < y-Max / 2) or ((y < z) and (z < y + Max / 2))
Replace with and compare.
[0523]
For example, the calculation now: = now + 1 is
now: = (now + 1) mod Max
Replace with Tdi < The comparison operation now is
(Now < Tdi −Max / 2) or ((Tdi < now) and (now < Compare with Tdi + Max / 2)).
[0524]
It is necessary to periodically monitor the time variable and adjust it so that it is not too far from Max / 2 or more as needed. However, by increasing Max, the monitoring cycle can be extended. Easy to implement.
[0525]
Further, as the other class selection scheduling, the following is effective.
[0526]
As already described, the cell buffer device that has performed inter-VC fair queuing according to the weight set for each CG (each VC) writes the weight to the CG table (FIG. 30) of the input buffer IB or Nx of the VC table. .
[0527]
Here, it is explained that the weight for each VC set in the class can be multiplied by a coefficient by using the class selection scheduling together.
[0528]
There are class A and class B, and the weight Nxa of a certain VC set to class A is set to Nxb. At this time, when there are output waiting cells in both classes, the number of unit basket transfer instructions is scheduled to be the ratio of Ra to Rb in class X and class Y by class selection scheduling. It is possible to multiply the coefficient by × Ra and Nxb × Rb. The same applies to three or more classes. For example, SCFQ (Self-Clocked Fair Queuing) is known as an algorithm for performing scheduling so as to obtain a desired ratio.
[0529]
A specific example will be described. For example, assume that weights are set to 1.24, 3.72, 2.18, 934, 562, 1370, and 4360 for seven VCs from VC1 to VC7, respectively. VC1 and 2 are set in class A, and Nx is 1.24 and 3.72, respectively. VC3 is set for class B, and Nx is 2.18. VC4 and 5 are set in class C, and Nx is set to 9.34 and 5.62, respectively. VC6 and 7 are set in class D, and Nx is set to 1.37 and 4.36, respectively. If class selection scheduling is performed so that the number of unit basket transfer instructions is in a ratio of class A: class B: class C: class D = 1: 1: 100: 1000 between classes in which output waiting cells exist, Cells are multiplexed to the output port with weights 1.24: 3.72: 2.18: 934: 562: 1370: 4360. This method has an effect of avoiding the phenomenon that the cell delay fluctuation of the inter-VC fair queuing increases when a large numerical value is set as the value of Nx.
[0530]
In the class selection scheduling algorithm as shown in FIGS. 42 to 44, the transfer cell flow rate of each class is monitored. It is possible to perform hierarchical class selection scheduling using this.
[0531]
When there is a class group Ga consisting of classes A1, A2, A3,... And a class group Gb consisting of other classes B1, B2, B3,. Is set as Ra vs. Rb, and class selection scheduling is performed. The same applies when the class group is 3 or more. Class selection scheduling within each class group and selection scheduling between class groups are independent.
[0532]
As a result, the surplus bandwidth between certain class groups is used only by the classes in the class group, and it can be prevented that another class group can be used. Another class group can use this surplus bandwidth only when there is no output waiting cell of a certain class group. This kind of hierarchical class selection scheduling. For example, an application such as assigning a class group for each company can be considered.
[0533]
5.2 Method of correcting the number of cells in a cell switch that performs priority control and fair queuing between VCs
Next, a method for correcting the number of cells in the cage management unit KM of the cell switch (cage switch) (FIGS. 25, 29, and 31) that performs priority control and fair queuing between VCs will be described with reference to FIG.
[0534]
As for the principle of correction, in the case of the cage switch described with reference to FIGS. 19, 20, etc., it is possible to improve the performance of priority control and the throughput of the output port by correcting the number of cells by the same method.
[0535]
As an application example of the cell number correction method of the present invention, the present invention is applied to the car switch shown in FIG. In the basket switch, when the
[0536]
As shown in FIG. 45, the cell number information and delay time of each cell buffer are determined.
[0537]
Hpi is the number of HOLs transferred from the previous basket to the basket by the transfer instruction Ipi, and Hpmi is the number of HOL cells transferred from the previous basket to the class multiplexing FIFO by the transfer instruction Ipi.
[0538]
Here, as an example, consider the case where the values of the delay times are equal. That is, DOp = DIk = DOk = DIm = Dipm = D and DTpm = DTkm. Further, p = [− D, 0). At this time, the number of cells before the class i and the modified number of cells (N′pi, N′ki) of the basket and the number of modified cells (N′m) of the class multiplexing FIFO can be calculated as follows.
[0539]
[Expression 7]
[0540]
5.3 Continuation of description of cell switch according to tenth embodiment
FIG. 46 shows a connection example between the input buffer IB of the basket switch and the basket management unit KM.
[0541]
Here, for example, the number of classes is 62 classes, and the cell switch size is 16 inputs and 16 outputs.
[0542]
The class number is coded in {0, 1, 2,..., 60, 61, UC, IC} and 6 bits.
[0543]
Class UC indicates an unassigned cell, IC indicates an idle cell, and usage thereof will be described below.
[0544]
The previous number of basket cells, the number of basket cells, and the number of class multiplexed FIFO cells are coded as {0, 1, 2,..., 13, 14, 15 or more} and 4 bits.
[0545]
The transfer information from the input buffer IB to the basket management unit KM is shown below.
[0546]
(1) Input cell For each output port, for the input cell (in the case of unicast, output only for one output port),
・ Presence / absence of input cell and class: 6 bits
(If there is no input cell, send class UC)
(3) Transfer instruction class For transfer instruction class for each output port,
-Number of previous Kago cells after transfer ... 4 bits
・ Number of Kago cells after transfer: 4 bits
-Number of cells transferred to class multiplexing FIFO: 2 bits
(Up to two unicast and multicast cells are transferred)
(4) Class multiplexing FIFO Only unicast for each output port.
Class multiplexed FIFO cell count: 4 bits
In total, the information about one output port is 20 bits.
[0547]
The transfer information broadcast from the basket management unit KM to all the input buffers IB is shown below.
[0548]
(2) For each output port,
・ Instruction for transferring the unit basket from the previous basket to the basket (for the following classes): 1 bit
-Cell transfer instruction from basket to class multiplexing FIFO, instruction class ... 6 bits
(If no transfer instruction is given, the UC class is specified. If the IC class is specified, the IB transfers (inserts) an idle cell. The idle cell is exchanged and transferred to the output port in the same manner as other classes of cells. (It is a cell for throughput adjustment that is replaced with an Unassigned Cell at the time of output from the switch.)
In total, the information about one output port is 7 bits.
[0549]
The KM transmits the next signal to the corresponding IB for each output port for ABR traffic control.
[0550]
(5) Out of all IB input cells, the number of ABR input cells for each output port: 5 bits
(In the case of 16
Information about one output port is 5 bits.
[0551]
FIG. 46 shows a configuration example in which the basket management unit KM is realized by two LSIs. One of the two LSIs manages
[0552]
Since the transfer information from the IB to the KM (the above (1), (3) and (4)) is 20 bits per output port, it is 160 bits for 8 ports. If parallel transmission is performed using two pairs of high-speed differential transmission, a transmission rate of 80 bits per cell period is sufficient.
[0553]
Broadcast information from the KM to the IB (the above-mentioned (2)) is 7 bits per output port, so it is 56 bits for 8 ports. If a normal transmission driver is used to perform 8 parallel transmissions, a transmission rate of 7 bits per cell period is sufficient.
[0554]
The information for the ABR traffic control from the KM to the IB (the above (5)) is 5 bits per output port.
[0555]
Even considering a cell switch with a cell transmission rate of 622 Mbps, these transmission rates are sufficiently realizable with current technology.
[0556]
The IB transmits the cell number information to the KM from the LSB (least significant digit), thereby reducing the circuit scale for adding the number of cells. This is because the adder circuit can add information on the number of cells transmitted from all IBs in order from the lower digit (for each class for each output port). More specifically, the addition circuit can calculate the sum of the digits of the input digit and the carry from the lower digits calculated so far, and obtain the value of that digit of the addition result. In addition, it holds the carry for the next digit calculation.
[0557]
Among the signals from IB to KM is the number of class multiplexed FIFO cells. When the cell switch with back pressure can output the number of accumulated cells per output port (number of cells in the output buffer OB in FIG. 25), the KM stores the number of accumulated cells per output port instead of the number of class multiplexed FIFO cells. May be used.
[0558]
This has the same effect as the cell multiplexing apparatus that performs priority control between classes in FIG. 2 and the cell multiplexing apparatus that performs fair VC queuing in FIG.
[0559]
FIG. 47 shows a path of information for realizing the ABR service.
[0560]
FIG. 47 particularly shows a part where the ABR class cell input from
[0561]
The ABR service is a service class in which, if there is a band that can be used at the output port of the cell switch, the band is distributed and used fairly by the ABR class VC. An RM cell transmitted from the receiving terminal to the transmitting terminal is used for traffic control.
[0562]
The
[0563]
This process reduces the probability of congestion, but if the congestion is detected by monitoring the queue length in the IB, the traffic can be controlled more safely by marking the EFCI or rewriting the RM cell. Is possible. In particular, in the case of multicast, there is a possibility of overload even if the input bandwidth is smaller than the output bandwidth. In this case, traffic control by monitoring queue length becomes important.
[0564]
As described above, since the cage switch according to the tenth embodiment performs fair queuing between VCs, it is possible to achieve fair bandwidth distribution among VCs even in traffic control based on queue length monitoring.
[0565]
【The invention's effect】
As described above, according to the packet transfer apparatus (first and second embodiments (
[0566]
Further, in order to perform fair queuing between VCs (flows) across a plurality of input buffers, for example, the control means for all VCs (flows) of all input buffers, the input port numbers, VC numbers, and packet Controlling the output order of packets by grasping the arrival status, output status, and the like complicates the device configuration and makes it difficult to improve throughput. Therefore, according to the packet transfer apparatus (third, fourth, and fifth embodiments (
[0567]
Further, according to the packet transfer apparatus of the present invention (sixth and seventh embodiments (
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration example of a cell multiplexing apparatus that performs priority control between classes according to a first embodiment of the present invention;
FIG. 2 is a diagram showing another configuration example of a cell multiplexing apparatus that performs priority control between classes according to the second embodiment of the present invention;
FIG. 3 is a diagram showing another configuration example of the output buffer.
FIG. 4 is a diagram showing still another configuration example of the output buffer.
FIG. 5 is a diagram showing a configuration example of an output buffer type cell multiplexing apparatus including a per-VC FIFO according to a third embodiment of the present invention.
FIG. 6 is a diagram showing a configuration example of a cell multiplexing apparatus that performs inter-VC fair queuing according to the fourth embodiment of the present invention.
FIG. 7 is a diagram showing a configuration example of a cell multiplexing apparatus that performs inter-VC fair queuing according to the fifth embodiment of the present invention;
FIG. 8 is a diagram showing a configuration example of a cell buffer device using a cell group FIFO according to a sixth embodiment of the present invention.
FIG. 9 is a diagram showing a configuration example of a cell buffer device using a cell group FIFO according to a seventh embodiment of the present invention.
FIG. 10 is a diagram for explaining an example of a data structure using a pointer chain of a cell group FIFO according to the sixth embodiment.
FIG. 11 is a diagram for explaining an example of a data structure using a pointer chain of a cell group FIFO according to the sixth embodiment, showing a configuration of an empty cell group chain.
FIG. 12 is a diagram for explaining an example of a data structure using a pointer chain of a cell group FIFO according to the seventh embodiment.
FIG. 13 is a diagram for explaining an example of a data structure using a pointer chain of a cell group FIFO according to the seventh embodiment, and shows a configuration of an empty cell group chain.
FIG. 14 is a diagram for explaining inter-flow fair queuing using a packet group;
FIG. 15 is a diagram for explaining the operation of the packet buffer device using fair queuing between flows using a packet group;
FIG. 16 is a diagram illustrating back pressure consideration queue monitoring according to an eighth embodiment of the present invention.
FIG. 17 is a diagram showing a configuration example of a cell buffer device having a back pressure consideration queue monitoring unit according to an eighth embodiment.
FIG. 18 is a flowchart showing a back pressure consideration queue monitoring algorithm according to the eighth embodiment.
FIG. 19 is a diagram showing a configuration example of a cell buffer device considering delay according to a ninth embodiment of the present invention.
FIG. 20 is a diagram for explaining a basic principle of a cell number information correction method considering delay.
FIG. 21 is a diagram for explaining another basic principle of the cell number correction method;
FIG. 22 is a diagram for explaining a basic function f () used in the cell number correction method of FIG. 21;
FIG. 23 is a diagram for explaining a basic function g () used in the cell number correction method of FIG. 21;
FIG. 24 is a diagram for explaining a basic function Sc () used in the cell number correction method of FIG. 21;
FIG. 25 is a diagram showing an example of the overall configuration of a basket switch according to a tenth embodiment of the present invention.
26 is a diagram showing a configuration example of the output buffer in FIG. 25. FIG.
27 is a diagram showing a configuration example of a first stage unit switch in FIG. 25. FIG.
28 is a diagram showing a configuration example of the second stage unit switch of FIG. 25. FIG.
29 is a diagram showing a configuration example of the input buffer in FIG. 25. FIG.
FIG. 30 is a diagram for explaining queuing processing of an input buffer;
FIG. 31 is a diagram showing an interface with the basket management unit of the input buffer of FIG. 25;
32 is a diagram for explaining the operation of the multicast cell management unit for each class in FIG. 29;
33 is a diagram for explaining the operation of the class-specific multicast cell management unit of FIG. 29;
34 is a diagram for explaining the operation of the class-specific multicast cell management unit of FIG. 29;
FIG. 35 is a diagram for explaining the operation of the class-by-class multicast cell management unit in FIG. 29;
36 is a diagram for explaining the operation of the class-by-class multicast cell management unit in FIG. 29;
FIG. 37 is a diagram for explaining the operation of the class-specific multicast cell management unit of FIG. 29;
38 is a view for explaining the operation of the class-by-class multicast cell management unit in FIG. 29;
FIG. 39 is a diagram for explaining the operation of the class-by-class multicast cell management unit in FIG. 29;
40 is a diagram showing a configuration example of an output port selection scheduler in FIG. 29. FIG.
41 is a diagram showing a configuration example of a basket management unit in FIG. 25. FIG.
42 is a flowchart showing a specific example of a scheduling algorithm for limiting the maximum bandwidth and guaranteeing the minimum bandwidth, which is executed by the class selection scheduler of the basket management unit in FIG. 41. FIG.
43 is a flowchart showing a specific example of a scheduling algorithm for limiting the maximum bandwidth and guaranteeing the minimum bandwidth, which is executed by the class selection scheduler of the basket management unit in FIG. 41. FIG.
44 is a flowchart showing a specific example of a scheduling algorithm for limiting the maximum bandwidth and guaranteeing the minimum bandwidth, which is executed by the class selection scheduler of the basket management unit in FIG. 41. FIG.
FIG. 45 is a diagram for explaining an operation of a basket switch that is an application example of the cell number information correction method;
46 is a diagram showing a specific example of connection between the input buffer and the basket management unit in FIG. 25;
FIG. 47 is a diagram showing a specific example of an information path for an ABR service.
FIG. 48 is a diagram for explaining unfair bandwidth allocation in a conventional UBR service.
FIG. 49 is a diagram for explaining the configuration of a conventional cell multiplexing apparatus that performs priority control between classes.
FIG. 50 is a diagram for explaining the configuration of a conventional cell multiplexing apparatus having an input buffer.
FIG. 51 is a diagram for explaining a configuration of a cell buffer device that needs to search a conventional VC table;
FIG. 52 is a diagram for explaining a change in queue length of the input buffer in the cell multiplexing apparatus having the conventional input buffer as shown in FIG. 50;
FIG. 53 is a diagram for explaining the configuration of a conventional cell multiplexing apparatus that performs priority control.
[Explanation of symbols]
DESCRIPTION OF
Claims (8)
前記各入力バッファは、入力したパケットを一時的にクラス毎に蓄積するクラス毎の蓄積手段と、
前記制御手段から指示されたクラスのパケットを前記蓄積手段から前記出力ポートへ向けて出力する出力手段とを具備し、
前記制御手段は、
前記蓄積手段の複数の入力バッファ全体における蓄積状況をクラス毎に把握し、この蓄積状況に基づいてパケットを出力すべきクラスを決定し、この決定したクラスの指定を含む指示を前記複数の入力バッファに送信することを特徴とするパケット転送装置。A packet transfer apparatus comprising a plurality of input buffers for temporarily storing input packets, control means for controlling the input buffers, and at least one output port for transferring packets output from the input buffers. There,
Each input buffer includes a storage unit for each class that temporarily stores input packets for each class;
Output means for outputting packets of the class instructed by the control means from the storage means to the output port;
The control means includes
The storage status of all of the plurality of input buffers of the storage means is grasped for each class, a class to which a packet is to be output is determined based on the storage status, and an instruction including designation of the determined class is given to the plurality of input buffers A packet transfer apparatus for transmitting to a packet.
前記出力手段は、前記出力バッファ内部のパケットの蓄積状況に応じてパケットを前記出力ポートへ向けて出力することを特徴とすることを特徴とする請求項1記載のパケット転送装置。The output port includes an output buffer for temporarily storing packets output from the input buffer,
2. The packet transfer apparatus according to claim 1, wherein the output means outputs a packet toward the output port in accordance with an accumulation state of the packet in the output buffer.
前記制御手段は、前記蓄積状況に加えて、前記多重化手段の複数の入力バッファ全体における多重化状況を把握し、前記蓄積状況および前記多重化状況に基づいてパケットを出力すべきクラスを決定することを特徴とする請求項1記載のパケット転送装置。The output means comprises multiplexing means for multiplexing the packets output from the storage means and outputting the multiplexed packets to the output port;
In addition to the accumulation status, the control means grasps the multiplexing status in the entire plurality of input buffers of the multiplexing means, and determines a class to output a packet based on the accumulation status and the multiplexing status. The packet transfer apparatus according to claim 1.
前記各入力バッファは、
入力したパケットを一時的に蓄積する蓄積手段と、
前記制御手段からの指示を受けて、次のフェーズで前記蓄積手段から前記出力ポートへ向けて出力すべきパケットを選択する選択手段と、
この選択手段で選択されたパケットを前記出力ポートに向けて出力する出力手段とを具備し、
前記制御手段は、
前記複数の入力バッファ全体における前記選択手段で選択されたパケットの出力状況を把握し、この出力状況に基づいて新たなパケットを選択するよう前記複数の入力バッファに指示することを特徴とするパケット転送装置。A packet transfer apparatus comprising a plurality of input buffers for temporarily storing input packets, control means for controlling the input buffers, and at least one output port for transferring packets output from the input buffers. There,
Each of the input buffers is
Storage means for temporarily storing input packets;
In response to an instruction from the control unit, a selection unit that selects a packet to be output from the storage unit to the output port in the next phase;
Output means for outputting the packet selected by the selection means to the output port;
The control means includes
Packet transfer characterized by grasping the output status of the packet selected by the selecting means in the whole of the plurality of input buffers and instructing the plurality of input buffers to select a new packet based on the output status apparatus.
各パケットの属する各仮想コネクション間でパケットの転送が公平になるように前記蓄積手段から出力するパケットを選択することを特徴とする請求項5記載のパケット転送装置。The selection means of each input buffer is respectively
6. The packet transfer apparatus according to claim 5, wherein a packet to be output from the storage means is selected so that packet transfer is fair between virtual connections to which each packet belongs.
前記制御手段は、
前記バッファ内に蓄積されたパケットを複数の集合に分けて管理する管理手段と、
前記バッファに入力したパケットを各パケットの属するフロー間で公平になるように前記複数の集合のいずれか1つに振り分ける振り分け手段と、
前記管理手段で管理されている前記複数の集合のうちの1つの集合に属するパケットを前記出力ポートに向けて出力するよう前記バッファに対し指示する指示手段と、
を具備したことを特徴とするパケット転送装置。A packet transfer apparatus comprising: a buffer for temporarily storing input packets; a control means for controlling the buffer; and at least one output port for transferring packets output from the buffer.
The control means includes
Management means for managing the packets accumulated in the buffer by dividing them into a plurality of sets;
Distribution means for distributing the packets input to the buffer to any one of the plurality of sets so as to be fair among the flows to which the packets belong;
Instruction means for instructing the buffer to output a packet belonging to one of the plurality of sets managed by the management means to the output port;
A packet transfer apparatus comprising:
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21356996A JP3673025B2 (en) | 1995-09-18 | 1996-08-13 | Packet transfer device |
US10/190,577 US6934296B2 (en) | 1995-09-18 | 2002-07-09 | Packet transfer device and packet transfer method adaptive to a large number of input ports |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7-238867 | 1995-09-18 | ||
JP23886795 | 1995-09-18 | ||
JP21356996A JP3673025B2 (en) | 1995-09-18 | 1996-08-13 | Packet transfer device |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005089214A Division JP3906231B2 (en) | 1995-09-18 | 2005-03-25 | Packet transfer device |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09149051A JPH09149051A (en) | 1997-06-06 |
JP3673025B2 true JP3673025B2 (en) | 2005-07-20 |
Family
ID=26519867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21356996A Expired - Fee Related JP3673025B2 (en) | 1995-09-18 | 1996-08-13 | Packet transfer device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3673025B2 (en) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3304068B2 (en) * | 1998-08-20 | 2002-07-22 | 日本電信電話株式会社 | User network accommodating method and apparatus |
JP3221407B2 (en) * | 1998-08-27 | 2001-10-22 | 日本電気株式会社 | ATM cell multiplexing method and apparatus |
JP3439373B2 (en) | 1999-05-12 | 2003-08-25 | 日本電気通信システム株式会社 | Competitive priority control circuit |
CA2388348A1 (en) * | 1999-10-06 | 2001-04-12 | Tenor Networks, Inc. | Hierarchical output-queued packet-buffering system and method |
JP3584859B2 (en) | 2000-06-29 | 2004-11-04 | 日本電気株式会社 | Packet scheduling device |
EP1505779A1 (en) * | 2002-05-15 | 2005-02-09 | Mitsubishi Denki Kabushiki Kaisha | Packet scheduling system and packet scheduling method |
JPWO2003103234A1 (en) * | 2002-05-30 | 2005-10-06 | 松下電器産業株式会社 | Packet transfer circuit and packet transfer method |
JP4234134B2 (en) * | 2003-07-10 | 2009-03-04 | 三菱電機株式会社 | Hierarchical scheduling device |
WO2005060185A1 (en) * | 2003-12-17 | 2005-06-30 | Mitsubishi Denki Kabushiki Kaisha | Data transferring apparatus, cell multiplexing apparatus, and cell switch |
WO2005079016A1 (en) * | 2004-02-18 | 2005-08-25 | Mitsubishi Denki Kabushiki Kaisha | Switch device |
JP4557911B2 (en) * | 2006-03-07 | 2010-10-06 | 株式会社東芝 | Communication apparatus and communication method |
US7990860B2 (en) | 2006-06-16 | 2011-08-02 | Harris Corporation | Method and system for rule-based sequencing for QoS |
US8064464B2 (en) | 2006-06-16 | 2011-11-22 | Harris Corporation | Method and system for inbound content-based QoS |
US8516153B2 (en) | 2006-06-16 | 2013-08-20 | Harris Corporation | Method and system for network-independent QoS |
US7916626B2 (en) * | 2006-06-19 | 2011-03-29 | Harris Corporation | Method and system for fault-tolerant quality of service |
US8730981B2 (en) | 2006-06-20 | 2014-05-20 | Harris Corporation | Method and system for compression based quality of service |
US8300653B2 (en) | 2006-07-31 | 2012-10-30 | Harris Corporation | Systems and methods for assured communications with quality of service |
JP4574600B2 (en) * | 2006-08-25 | 2010-11-04 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | Gateway device, data aggregation device, data aggregation system, data transmission method, and program |
JP4582180B2 (en) * | 2008-04-03 | 2010-11-17 | パナソニック株式会社 | Data transmission equipment |
EP2493128A1 (en) | 2009-10-19 | 2012-08-29 | Nec Corporation | Communication system, flow control apparatus, flow table updating method and program |
-
1996
- 1996-08-13 JP JP21356996A patent/JP3673025B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09149051A (en) | 1997-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6490248B1 (en) | Packet transfer device and packet transfer method adaptive to a large number of input ports | |
JP3673025B2 (en) | Packet transfer device | |
US5732087A (en) | ATM local area network switch with dual queues | |
US6205118B1 (en) | Adaptive time slot scheduling apparatus and method for end-points in an ATM network | |
EP1239637B1 (en) | Time based packet scheduling and sorting system | |
US7027457B1 (en) | Method and apparatus for providing differentiated Quality-of-Service guarantees in scalable packet switches | |
US6532213B1 (en) | Guaranteeing data transfer delays in data packet networks using earliest deadline first packet schedulers | |
AU736406B2 (en) | Method for providing bandwidth and delay guarantees in a crossbar switch with speedup | |
US5949757A (en) | Packet flow monitor and control system | |
EP1329058B1 (en) | Allocating priority levels in a data flow | |
KR100328642B1 (en) | Arrangement and method relating to packet flow control | |
JP4395280B2 (en) | Fair disposal system | |
US20110019544A1 (en) | Systems for scheduling the transmission of data in a network device | |
JPH1188374A (en) | Large capacity multi-class core atm switch architecture | |
US6396843B1 (en) | Method and apparatus for guaranteeing data transfer rates and delays in data packet networks using logarithmic calendar queues | |
WO1996000487A1 (en) | System and method for providing multiple loss and service priorities | |
CA2238795A1 (en) | Er information acceleration in abr traffic | |
US6246687B1 (en) | Network switching system supporting guaranteed data rates | |
EP0973304A2 (en) | Apparatus and method for bandwidth management | |
US8107372B1 (en) | Collision compensation in a scheduling system | |
JP3906231B2 (en) | Packet transfer device | |
US6363069B1 (en) | Complete packet discarding | |
EP1584164A2 (en) | System and method for providing quality of service in asynchronous transfer mode cell transmission | |
US9363186B2 (en) | Hierarchical shaping of network traffic | |
EP0604538B1 (en) | Method and apparatus for asynchronous transfer mode (atm) network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050201 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050325 |
|
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: 20050419 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050421 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080428 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |