(57)【特許請求の範囲】
【請求項１】
それぞれ異なる出力ポートに対応するＫ個の出力ポートキューと、該Ｋ個の出力ポートキューの間で共有されるセルＢ個分の容量のバッファと、を有し、動的キューしきい値方式を用いるＡＴＭスイッチにおいて、
前記Ｋ個の出力ポートキューに対して共通のしきい値が動的に設定され、
前記共通のしきい値は、新しいセルが前記Ｋ個の出力ポートキューのうちの任意の１つに到着した時に古い値から新しい値に変更され、
前記新しい値は、全キュー長がプリセット値（０より大きい）のＢ倍より小さい時には前記任意の１つの出力ポートキューの長さに１を加えた値と前記古い値とのうちの最大値であり、全キュー長が前記プリセット値のＢ倍以上の時には前記古い値から１を引いた値と統計的に設定された最小バッファしきい値とのうちの最大値である、
ことを特徴とするＡＴＭスイッチ。
【請求項２】
前記Ｋ個の出力ポートキューのそれぞれの出力ポートキューの長さは、入力トラフィック負荷と、該出力ポートキューに割り当てられたサービス帯域との変動に基づいて変化することを特徴とする請求項１記載のＡＴＭスイッチ。
【請求項３】
新しいセルが特定のキューに受容されるのは、該特定のキューの長さが前記新しい値より小さく、且つ、全キュー長がＢより小さいときであることを特徴とする請求項１記載のＡＴＭスイッチ。
【請求項４】
前記統計的に設定された最小バッファしきい値はデフォルトでは０に等しいことを特徴とする請求項１記載のＡＴＭスイッチ。
【請求項５】
前記バッファの予め定められたメモリを、予め定められた目的のセルに対して割り当てることを特徴とする請求項１記載のＡＴＭスイッチ。
【請求項６】
前記バッファのメモリは、さらに動的キューしきい値方式を用いて、前記１つの出力ポートキュー内のＶＣに割り当てられることを特徴とする請求項１記載のＡＴＭスイッチ。
【請求項７】
動的キューしきい値方式は、ポートレベルとその下位レベルとに対するバッファメモリ割り当てに適用されることを特徴とする請求項１記載のＡＴＭスイッチ。
【請求項８】
それぞれ異なる出力ポートに対応するＫ個のキューと、該Ｋ個のキューの間で共有されるセルＢ個分の容量のバッファと、を有し、ｋ＝１，２，...，Ｋとして前記Ｋ個のキューはそれぞれ時刻ｔにおいてキュー長Ｑk（ｔ）を有し、キュー長Ｑk（ｔ）は入力トラフィック負荷及び出力ポートｋに割り当てられるサービス帯域とともに変動するＡＴＭスイッチにおける前記Ｋ個のキューに対して共通のしきい値Ｔ（ｔ）を動的に設定する方法において、
時刻ｔにおける全キュー長をＱ（ｔ）、０＜α≦１、統計的に設定された最小バッファしきい値をＴm、Ｔ（ｔ）の古い値をＴold、Ｔ（ｔ）の新しい値をＴnew（ｔ）として、任意のｋに対して動的しきい値Ｔ（ｔ）を、
Ｑ（ｔ）＜α×Ｂの時、Ｔnew（ｔ）＝ｍａｘ（Ｑk（ｔ）＋１，Ｔold）、
Ｑ（ｔ）≧α×Ｂの時、Ｔnew（ｔ）＝ｍａｘ（Ｔold−１，Ｔm）、
により設定するステップと、
Ｔnew（ｔ）を更新するステップと、
Ｑk（ｔ）＜Ｔnew（ｔ）かつＱ（ｔ）＜Ｂならば時刻ｔで出力ポートｋに新たに到着するセルを受容し、それ以外の場合には該新たに到着するセルを拒絶するステップと、
からなることを特徴とする、ＡＴＭスイッチのキューに対して共通のしきい値を動的に設定する方法。
【請求項９】
それぞれ異なる出力ポートに対応するＫ個のキューと、該Ｋ個のキューの間で共有されるセルＢ個分の容量のバッファと、を有し、ｋ＝１，２，...，Ｋとして前記Ｋ個のキューはそれぞれ時刻ｔにおいてキュー長Ｑk（ｔ）を有し、キュー長Ｑk（ｔ）は入力トラフィック負荷及び出力ポートｋに割り当てられるサービス帯域とともに変動し、各キューはＬk個のＶＣを有し、ｌ＝１，２，...，Ｌkとしてポートｋの各ＶＣキューはキュー長Ｑkl（ｔ）を有するＡＴＭスイッチのＫ個のキューに対して共通のしきい値ＴＰ（ｔ）を動的に設定する方法において、
時刻ｔにおける全キュー長をＱ（ｔ）、０＜α≦１、統計的に設定された最小バッファしきい値をＴm、ＴＰ（ｔ）の古い値をＴＰold、ＴＰ（ｔ）の新しい値をＴＰnew（ｔ）として、任意のｋに対して各出力キューに対する動的しきい値ＴＰ（ｔ）を、
Ｑ（ｔ）＜α×Ｂの時、ＴＰnew（ｔ）＝ｍａｘ（Ｑk（ｔ）＋１，ＴＰold）、
Ｑ（ｔ）≧α×Ｂの時、ＴＰnew（ｔ）＝ｍａｘ（ＴＰold−１，Ｔm）、
により設定するステップと、
０＜β≦１、キューｋに割り当てられた各ＶＣに対する動的しきい値をＴＶk（ｔ）、ＴＶk（ｔ）の古い値をＴＶkold、ＴＶk（ｔ）の新しい値をＴＶknew（ｔ）として、任意ｌに対して
Ｑ（ｔ）＜β×ＴＰ（ｔ）の時、ＴＶknew（ｔ）＝ｍａｘ（Ｑkl（ｔ）＋１，ＴＶkold）、
Ｑ（ｔ）≧β×ＴＰ（ｔ）の時、ＴＶknew（ｔ）＝ｍａｘ（ＴＶkold−１，Ｔm）、
により設定するステップと、
ＴＰ（ｔ）及びＴＶk（ｔ）を更新するステップと、
Ｑk（ｔ）＜ＴＰ（ｔ）且つＱkl（ｔ）＜ＴＶk（ｔ）且つＱ（ｔ）＜Ｂならば時刻ｔで出力ポートｋに新たに到着するセルを受容し、それ以外の場合には該新たに到着するセルを拒絶するステップと、
からなることを特徴とする、ＡＴＭスイッチのキューに対して共通のしきい値を動的に設定する方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＡＴＭスイッチのバッファ管理方式に係り、特に、動的キュー長を用いたＡＴＭスイッチの最適バッファ管理方式に関する。本発明は、動的キューしきい値を用いたＡＴＭスイッチ、及び、ＡＴＭスイッチのキューに対して共通のしきい値を動的に設定する方法として実現される。
【０００２】
【従来の技術】
従来、ＡＴＭスイッチアーキテクチャは、帯域の競合やスイッチ内の一時的輻輳によるサービスの遅延を受けたセルに対処するためにバッファリングを用いている（Ｅ．  Ｗ．  Ｚｅｇｕｒａ，  ”Ａｒｃｈｉｔｅｃｔｕｒｅｓ  ｆｏｒ  ＡＴＭ  Ｓｗｉｔｃｈｉｎｇ  Ｓｙｓｔｅｍｓ”，  ＩＥＥＥ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｍａｇａｚｉｎｅ，  ｐｐ．２８−３７，  Ｆｅｂｒｕａｒｙ，  １９９３、参照）。このようなアーキテクチャのうちで、共有バッファメモリスイッチは、効率的にバッファを利用するため好ましい。例えばすべての出力ポートの間でバッファを共有し、入力トラフィックの統計多重を利用することにより、共有バッファＡＴＭスイッチは、ポートあたりのバッファサイズを小さくしても、同じセル遅延及び損失パフォーマンスを達成することができる。このようなバッファサイズの節減効果は、トラフィックがバースト的でありトラフィック負荷が不均一であるときには特に重要である。
【０００３】
ＡＴＭスイッチでは、バッファメモリは通常、いくつかの異なるレベルで共有される。例えば、バッファは、異なるサービスクラス（例えば、ＣＢＲ、ＶＢＲ、ＡＢＲ、ＵＢＲなど）によって論理的に分割され共有されることが可能である。上記のように、バッファは、異なる出力ポートに対応するキューどうしの間で共有することができる。ＶＣごとのキューイングを採用する場合、バッファは、異なるＶＣに対応するキューどうしの間で共有することができる。
【０００４】
しかし、バッファ管理手続きのない共有メモリスイッチは、過負荷条件下ではうまく動作しない（Ｍ．  Ｉ．  Ｉｒｌａｎｄ，  ”Ｂｕｆｆｅｒ  ｍａｎａｇｅｍｅｎｔ  ｉｎ  ａ  ｐａｃｋｅｔ  ｓｗｉｔｃｈ”，  ＩＥＥＥ  Ｔｒａｎｓ．  Ｃｏｍｍｕｎ．，  ｖｏｌ．ＣＯＭ−２６，  ｐｐ．３２８−３３７，  Ｍａｒ．  １９７８、参照）。重要な問題点は、複数の出力ポートの間の公平性である。バッファメモリの統計的共有は、小さい出力ポートグループがメモリのほとんどを消費する可能性を引き起こす。このような、一部のポートによる過大なメモリ使用により、あまり利用されていないポート宛のセルが公平なメモリのシェアを得ることができない。最悪の場合、アクセスさえも妨げられる。
【０００５】
このような問題点に対する１つの従来の解決法は、ポートが使用することができるバッファリングの量に対して制限を設けることである。すなわち、各キューは、最小メモリ量が保証されるとともに、アクセスすることができる最大メモリ量のしきい値を有する。
【０００６】
別のしきい値設定方法が、Ｆ．  Ｋａｍｏｕｎ  ａｎｄ  Ｌ．  Ｋｌｅｉｎｒｏｃｋ，  ”Ａｎａｌｙｓｉｓ  ｏｆ  Ｓｈａｒｅｄ  Ｆｉｎｉｔｅ  Ｓｔｏｒａｇｅ  ｉｎ  ａ  Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋ  Ｎｏｄｅ  Ｅｎｖｉｒｏｎｍｅｎｔ  Ｕｎｄｅｒ  Ｇｅｎｅｒａｌ  Ｔｒａｆｆｉｃ  Ｃｏｎｄｉｔｉｏｎｓ”，  ＩＥＥＥ  Ｔｒａｎｓ．  Ｃｏｍｍｕｎ．，  ｖｏｌ．ＣＯＭ−２８，  Ｎｏ．７，  ｐｐ．９９２−１００３，  Ｊｕｌｙ，  １９８０、に提案され解析されている。一般に、キューしきい値を設定する２つの方式がある。
【０００７】
第１の方式は、静的しきい値（ＳＴ：ｓｔａｔｉｃ  ｔｈｒｅｓｈｏｌｄ）法と呼ばれる。この方法では、バッファしきい値は、ネットワーク管理システム（ＮＭＳ：ｎｅｔｗｏｒｋ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）によって、各キューごとにあらかじめ設定される。到着セルは、対応するキュー長が、与えられたしきい値より小さいときに限り受容される。ＳＴ法は、実装が簡単であり、対応するキューカウンタと１つのコンパレータ（比較器）しか必要としない。複数のキューに対して静的しきい値を選択する際に、ＮＭＳは、トラフィックの特性及び統計を知る必要がある。キューに到着するトラフィックは、そのキューの記述と一致している必要がある。従って、ＳＴ法は、クラスレベル（例えば、ＣＢＲ、ＶＢＲ及びＵＢＲ）のトラフィックに適している。この場合、トラフィックは、異なるポートキュー及びクラス内の個々のコネクションに関してはかなり変動するけれども、１つのクラス全体では予測可能性が高いからである。
【０００８】
第２の方式は、動的しきい値（ＤＴ：ｄｙｎａｍｉｃ  ｔｈｒｅｓｈｏｌｄ）法と呼ばれる。この方法では、バッファしきい値は、変化するトラフィック負荷に従って動的に調整される。ＤＴ法によれば、キューがメモリの公平なシェア（すなわち、動的しきい値）を超過していない限り、過負荷トラフィックがメモリにアクセスすることが可能である。従って、良好な動的しきい値法は、複数のキューの間でバッファメモリの公平な共有を保証しながら、全体のスイッチ帯域利用率を改善するはずである。一般に、ＤＴ方式は、より多くの処理パワーを必要とし、ポートまたはＶＣのレベルでのバッファ管理に適している。これらのレベルでは、トラフィック負荷変動は複数のキューの間でかなり変化する（ほとんどは短い時間しか持続しないが）可能性がある。ポート及びＶＣのレベルでのトラフィック負荷変動に関する比較的短い時間スケールのために、ＤＴ方式は、実装が単純であることが要求される。
【０００９】
上記の２つの方式に対して、さまざまなトラフィック条件におけるパフォーマンスが、包括的なシミュレーション研究を通じて比較されている（Ａ．  Ｋ．  Ｃｈｏｕｄｈｕｒｙ  ａｎｄ  Ｅ．  Ｌ．  Ｈａｈｎｅ，  “Ｄｙｎａｍｉｃ  Ｑｕｅｕｅ  Ｌｅｎｇｔｈ  Ｔｈｒｅｓｈｏｌｄｓ  ｉｎ  ａ  Ｓｈａｒｅｄ−Ｍｅｍｏｒｙ  Ｐａｃｋｅｔ  Ｓｗｉｔｃｈ”，  ＩＥＥＥ／ＡＣＭ  Ｔｒａｎｓ．  Ｎｅｔｗｏｒｋｉｎｇ，  Ｖｏｌ．６，  ｐｐ．１３０−１４０，  Ａｐｒｉｌ，  １９９８、参照）。具体的には、この文献では、ある量のバッファを未割当てにして、バッファメモリの公平な共有を保証する単純でエレガントなＤＴ方式が提案されている。しかし、この方式では、少数のキューのみが過負荷のときに、バッファメモリ利用率が低い。
【００１０】
【発明が解決しようとする課題】
従来の方法における問題点を克服するため、本発明の目的は、過負荷キューの数にかかわらず、空きメモリを効率的に利用する動的キューしきい値方式を使用するＡＴＭスイッチを提供することである。
【００１１】
本発明のもう１つの目的は、ＳＴアルゴリズム及びＤＴアルゴリズムを用いた階層的バッファ管理方式を提供することである。さらにもう１つの目的は、バッファ利用率を改善する新規な動的キューしきい値アルゴリズムを提供することである。
【００１２】
【課題を解決するための手段】
本発明の目的を実現するために、本発明によれば、動的キューしきい値方式を用いたＡＴＭスイッチは、Ｋ個の出力ポートキューと、該Ｋ個の出力ポートキューを共有するＢ個のセルのバッファとを有し、前記Ｋ個の出力ポートキューに対して共通のしきい値が動的に設定される。前記共通のしきい値は、新しいセルが前記Ｋ個の出力ポートキューのうちの１つの出力ポートキューに到着したときに古い値から新しい値に変更され、前記新しい値は、全キュー長が０より大きい所定値のＢ倍より小さいときは前記１つの出力ポートキューの長さに１を加えた値と前記古い値とのうちの最大値であり、全キュー長が前記所定値のＢ倍以上のときは前記古い値から１を引いた値と統計的に設定された最小バッファしきい値とのうちの最大値である。
【００１３】
好ましくは、前記Ｋ個の出力ポートキューのそれぞれの出力ポートキューの長さは、入力トラフィック負荷と、該出力ポートキューに割り当てられたサービス帯域との変動に基づいて変化する。
【００１４】
好ましくは、新しいセルが特定のキューに受容されるのは、該特定のキューの長さが前記新しい値より小さく、且つ、全キュー長がＢより小さいときである。
【００１５】
好ましくは、前記統計的に設定された最小バッファしきい値はデフォルトでは０に等しい。
【００１６】
好ましくは、少量のバッファＢが、ある所定の動作に対して割り当てられる。
【００１７】
好ましくは、バッファメモリは、さらに動的キューしきい値方式を用いて、前記１つの出力ポートキュー内のＶＣに割り当てられる。
【００１８】
好ましくは、動的キューしきい値方式は、複数レベルの動的バッファに適用される。
【００１９】
本発明のもう１つの特徴によれば、Ｋ個のキューと、該Ｋ個のキューによって共有されるＢ個のセルのバッファとを有するＡＴＭスイッチのＫ個のキューに対して共通のしきい値Ｔ（ｔ）を動的に設定する方法において、ｋ＝１，２，．．．，Ｋとして、前記Ｋ個のキューはそれぞれ、時刻ｔにおいてキュー長Ｑｋ（ｔ）を有し、Ｑｋ（ｔ）は、入力トラフィック負荷及び出力ポートｋに割り当てられるサービス帯域とともに変動する。前記方法は、
時刻ｔにおける全キュー長をＱ（ｔ）とし、０＜α≦１とし、統計的に設定された最小バッファしきい値をＴｍとし、Ｔ（ｔ）の古い値をＴｏｌｄとし、Ｔ（ｔ）の新しい値をＴｎｅｗ（ｔ）として、動的しきい値Ｔ（ｔ）を、
Ｑ（ｔ）＜α×Ｂのとき、Ｔｎｅｗ（ｔ）＝ｍａｘ（Ｑｋ（ｔ）＋１，Ｔｏｌｄ）、
Ｑ（ｔ）≧α×Ｂのとき、Ｔｎｅｗ（ｔ）＝ｍａｘ（Ｔｏｌｄ−１，Ｔｍ）、
により設定するステップと、
Ｔｎｅｗ（ｔ）を更新するステップと、
Ｑｋ（ｔ）＜Ｔｎｅｗ（ｔ）かつＱ（ｔ）＜Ｂならば時刻ｔで出力ポートｋに新たに到着するセルを受容し、それ以外の場合には該新たに到着するセルを拒絶するステップとからなる。
【００２０】
本発明のさらにもう１つの特徴によれば、Ｋ個のキューと、該Ｋ個のキューによって共有されるＢ個のセルのバッファとを有するＡＴＭスイッチのＫ個のキューに対して共通のしきい値ＴＰ（ｔ）を動的に設定する方法において、ｋ＝１，２，．．．，Ｋとして、前記Ｋ個のキューはそれぞれ、時刻ｔにおいてキュー長Ｑｋ（ｔ）を有し、Ｑｋ（ｔ）は、入力トラフィック負荷及び出力ポートｋに割り当てられるサービス帯域とともに変動し、各キューは、Ｌｋ個のＶＣを有し、ｌ＝１，２，．．．，Ｌｋとして、ポートｋの各ＶＣキューは、キュー長Ｑｋｌ（ｔ）を有する。前記方法は、
時刻ｔにおける全キュー長をＱ（ｔ）とし、０＜α≦１とし、統計的に設定された最小バッファしきい値をＴｍとし、ＴＰ（ｔ）の古い値をＴＰｏｌｄとし、ＴＰ（ｔ）の新しい値をＴＰｎｅｗ（ｔ）として、各出力キューに対する動的しきい値ＴＰ（ｔ）を、
Ｑ（ｔ）＜α×Ｂのとき、ＴＰｎｅｗ（ｔ）＝ｍａｘ（Ｑｋ（ｔ）＋１，ＴＰｏｌｄ）、
Ｑ（ｔ）≧α×Ｂのとき、ＴＰｎｅｗ（ｔ）＝ｍａｘ（ＴＰｏｌｄ−１，Ｔｍ）、
により設定するステップと、
０＜β≦１とし、キューｋに割り当てられた各ＶＣに対する動的しきい値をＴＶｋ（ｔ）とし、ＴＶｋ（ｔ）の古い値をＴＶｋｏｌｄとし、ＴＶｋ（ｔ）の新しい値をＴＶｋｎｅｗ（ｔ）として、
Ｑ（ｔ）＜β×ＴＰ（ｔ）のとき、ＴＶｋｎｅｗ（ｔ）＝ｍａｘ（Ｑｋｌ（ｔ）＋１，ＴＶｋｏｌｄ）、
Ｑ（ｔ）≧β×ＴＰ（ｔ）のとき、ＴＶｋｎｅｗ（ｔ）＝ｍａｘ（ＴＶｋｏｌｄ−１，Ｔｍ）、
により設定するステップと、
ＴＰ（ｔ）及びＴＶｋ（ｔ）を更新するステップと、
Ｑｋ（ｔ）＜ＴＰ（ｔ）かつＱｋｌ（ｔ）＜ＴＶｋ（ｔ）かつＱ（ｔ）＜Ｂならば時刻ｔで出力ポートｋに新たに到着するセルを受容し、それ以外の場合には該新たに到着するセルを拒絶するステップとからなる。
【００２１】
【発明の実施の形態】
［Ａ．ＡＴＭスイッチにおけるバッファ管理］
ＡＴＭスイッチにおいて、バッファメモリは、
・異なるトラフィッククラスに属するキュー間、
・異なる出力ポート宛のキュー間、
・ＶＣごとのキューイングを採用する場合は異なるＶＣのキュー間、
などのいくつかの方法で分割され共有される。
図１は、入力及び出力でキューイングを行うＡＴＭスイッチのアーキテクチャレイアウトを示す図である。この実施例において、スイッチは、同様の構造及び機能を有するＫ個の入力モジュールＩＸＢとＫ個の出力モジュールＯＸＢとを有する。各入力モジュールにおいて、バッファメモリは共有され、図２に示すように階層的な方法で論理的に分割される。
【００２２】
図２に示すように、入力モジュールにおける全バッファメモリはセルＢ個分の容量であり、Ｎ個のトラフィッククラスがある。このＮ個のトラフィッククラスは、ＣＢＲ、ＶＢＲ（リアルタイム及び非リアルタイム）、ＡＢＲ及びＵＢＲなどからなる。各トラフィッククラスは、Ｍ個（Ｍ＜Ｎ）のグループのうちの１つに属する。各グループは、同様の統計的特性のトラフィッククラスからなる。例えば、すべての非リアルタイムＶＢＲクラスは１つのグループに属する。全バッファＢは、各グループに分割され専用される。グループｍ（ｍ＝１，２，...，Ｍ）には専用メモリＢＧmが割り当てられ、
【数１】
0003567828.tif 000002
である。
【００２３】
グループ間にはメモリの共有はなく、ＢＧｍは、ネットワーク管理システムによって選択され調整された静的グループバッファしきい値である。グループｍに割り当てられる複数のトラフィッククラスは、次のようにグループメモリＢＧｍを共有することができる。即ち、クラスｉ（ただし、クラスｉはグループｍに割り当てられる）が使用可能な最大バッファが、ＢＣｉ（ｉ＝１，２，．．．，Ｎ）及び
【数２】
0003567828.tif 000003
によっても制限されるように、グループメモリＢＧｍを共有することができる。
【００２４】
これは、グループ内での完全な共有によってバッファ利用率を最大にしながら、グループ内のいずれのクラスによるバッファメモリの過大な消費もないことを保証する。バッファ割当てＢＣｉの各トラフィッククラスｉごとに、相異なる損失あるいは遅延優先度のＪ個のサブクラスが存在することも可能である。サブクラスｊのバッファしきい値はＴＣｉｊ（ｊ＝１，２，．．．，Ｊ）に設定される。ＴＣｉｊの選択は、何らかのキューイングモデルを適用することによってなされる（Ｆ．  Ｋａｍｏｕｎ  ａｎｄ  Ｌ．  Ｋｌｅｉｎｒｏｃｋ，  “Ａｎａｌｙｓｉｓ  ｏｆ  Ｓｈａｒｅｄ  Ｆｉｎｉｔｅ  Ｓｔｏｒａｇｅ  ｉｎ  ａ  Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋ  Ｎｏｄｅ  Ｅｎｖｉｒｏｎｍｅｎｔ  Ｕｎｄｅｒ  Ｇｅｎｅｒａｌ  Ｔｒａｆｆｉｃ  Ｃｏｎｄｉｔｉｏｎｓ”，  ＩＥＥＥ  Ｔｒａｎｓ．  Ｃｏｍｍｕｎ．，  Ｖｏｌ．ＣＯＭ−２８，  Ｎｏ．７，  ｐｐ．９９２−１００３，  Ｊｕｌｙ，  １９８０、参照）。
【００２５】
グループレベルの割当てＢＧｍと同様に、クラス及びサブクラスのレベルのバッファしきい値（ＢＣｉ及びＴＣｉｊ）は、ネットワーク管理システムによって静的に選択され調整される。各クラス内で、バッファ管理はさらに２つのレベルに分類される。
・Ｋ個の出力ポートへのセルに対するキューがあり、ＴＰｉで全Ｋ個のキューに対する共通のしきい値を表す。
・ＶＣごとのキューイングを採用する場合、各出力ポートごとに異なるＶＣに対するキューがあり、ＴＶｉｋで出力ポートｋ（ｋ＝１，２，．．．，Ｋ）宛のすべてのＶＣに対する共通のしきい値を表す。
【００２６】
グループ及びクラスのレベルでのバッファ割当てとは異なり、ポート及びＶＣのレベルでのキューしきい値（ＴＰｉ及びＴＶｉｋ）は、変化するトラフィック条件とともに動的に更新される。ポート及びＶＣのレベルのバッファ管理に動的しきい値を使用する理由は、これらのレベルではトラフィック負荷の変動が大きくなる傾向があり、動的しきい値は、静的しきい値よりもずっと良好にトラフィック負荷の過渡的挙動に対処することができるからである。従来の静的しきい値方式では、ポートキューしきい値は次のように設定される（Ｆ．  Ｋａｍｏｕｎ  ａｎｄ  Ｌ．  Ｋｌｅｉｎｒｏｃｋ，  “Ａｎａｌｙｓｉｓ  ｏｆ  Ｓｈａｒｅｄ  Ｆｉｎｉｔｅ  Ｓｔｏｒａｇｅ  ｉｎ  ａ  Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋ  Ｎｏｄｅ  Ｅｎｖｉｒｏｎｍｅｎｔ  Ｕｎｄｅｒ  Ｇｅｎｅｒａｌ  Ｔｒａｆｆｉｃ  Ｃｏｎｄｉｔｉｏｎｓ”，  ＩＥＥＥ  Ｔｒａｎｓ．  Ｃｏｍｍｕｎ．，  Ｖｏｌ．ＣＯＭ−２８，  Ｎｏ．７，  ｐｐ．９９２−１００３，  Ｊｕｌｙ，  １９８０、参照）。
【数３】
0003567828.tif 000004
【００２７】
次のセクションでは、本発明による新規な動的しきい値方式の実施例について説明する。この方法は、バッファメモリの公平で最適な共有を実現する。この実施例はポートあるいはＶＣのレベルのキュー長しきい値に関して説明されるが、当業者には直ちに明らかなように、この方式はバッファメモリの動的な公平共有を必要とする任意の問題に直接に適用することができる。
【００２８】
［Ｂ．動的キューしきい値方式］
ここで説明する実施例はＡＴＭスイッチである。本実施例では、ＡＴＭスイッチはＫ個の出力ポートと、対応するＫ個の出力キューによって共有されるＢ個のセルのバッファを有すると仮定する。Ｑｋ（ｔ）は、時刻ｔにおける出力キューｋ（ｋ＝１，２，．．．，Ｋ）のキュー長である。好ましい実施例では、Ｑｋ（ｔ）は、出力ポートｋの入力トラフィック負荷と、出力ポートｋに割り当てられるサービス帯域の変化に応じて変動する可能性がある。Ｋ個の出力キューがすべて等しく扱われる場合、バッファ空間Ｂの公平共有を保証するには、各キューは、過負荷になったとき、少なくともＢ／Ｋのバッファメモリ（公平なシェア）にアクセスすることができなければならない。他方、バッファを効率的に利用するため、すなわち、最大バッファ共有を達成するためには、個々の過負荷キューは、他のキューによって使用されていないあるいは要求されていない空きバッファメモリを使用する。
【００２９】
上記２つの目標は、Ｋ個のすべてのキューに対して共通のしきい値Ｔ（ｔ）を動的に設定することによって達成される。この方式では、次のアルゴリズムがＴ（ｔ）を動的に設定する。
時刻ｔにおいて出力ポートｋへのセルが到着したとき、
【数４】
0003567828.tif 000005
とする。ここで、
【数５】
0003567828.tif 000006
であり、時刻ｔにおける全キュー長を表し、０＜α≦１である。Ｔｍは、各キューごとに統計的に設定される最小バッファしきい値を表す。デフォルトではＴｍ＝０である。従って、出力ポートｋに到着するセルは、時刻ｔにおいて、Ｑｋ（ｔ）＜Ｔｎｅｗ（ｔ）かつＱ（ｔ）＜Ｂの場合にｋ番目のキューに受容され、それ以外の場合に、このセルは拒絶される。いずれの場合でも、その後、共通しきい値Ｔｏｌｄの値はＴｎｅｗ（ｔ）の値によって更新される。
【００３０】
なお、式（１）において、パラメータαは、共有されるべきメモリの量を制御する。完全なバッファ共有の場合にはαは１に設定され、その場合、キューが過負荷のとき、メモリが複数の異なるキューの間で公平に共有されつつ１００％のバッファ利用率を達成することができる。好ましい実施例では、式（１）におけるパラメータα及びＴｍを調整することによって、少量のバッファを何らかの動作（例えば、ＲＭセル挿入やｅｎｄ−ｏｆ−ｍｅｓｓａｇｅセル挿入）のために特に残しておくことも可能である。
【００３１】
［Ｃ．マルチレベル動的キューしきい値］
前のセクションでは、本発明の動的キューしきい値方式を用いて出力ポートレベルで複数のキューに対してバッファメモリを効率的かつ公平に管理する実施例について説明した。Ｋ個の出力ポートキューのそれぞれへのバッファメモリ割当ては式（１）によって動的にＴｎｅｗ（ｔ）に設定される。しかし、ＡＴＭスイッチでは、バッファメモリは、ポートレベルの下でさらに分割されることが必要となることがある。例えば、前述のように、出力キューは多くのＶＣからなることがある。ＶＣごとのキューイングを採用する場合、バッファメモリは、各ＶＣキューに論理的に割り当てることも必要になる。
【００３２】
もう１つの実施例について説明する。この実施例では、各出力ポートｋはＬｋ（ｋ＝１，２，．．．，Ｋ）個のＶＣを有する。出力キューｋの各ＶＣの時刻ｔにおけるキュー長をＱｋｌ（ｔ）で表す（ｌ＝１，２，．．．，Ｌｋ）。広く採用されているバッファ管理ポリシーは、まず、バッファメモリが、複数の出力キューの間で公平に共有されることを要求する（前のセクションで行われたように）。次に、各出力キュー内で、割り当てられたメモリを、この出力ポートへのすべてのＶＣ間でさらに公平に共有する。これが、マルチレベルバッファ管理問題である。この好ましい実施例では、本発明の方式を用いてマルチレベル動的キューしきい値方式を実現し、上記の基準を満たしながらバッファ利用率を最大にする。
【００３３】
ＴＰ（ｔ）は、各出力キューの動的キューしきい値であり、ＴＶｋ（ｔ）は、出力ポートｋ（ｋ＝１，２，．．．，Ｋ）宛の各ＶＣキューの動的キューしきい値である。ＶＣｌのセルが出力ポートｋに到着したとき、動的キューしきい値ＴＰ（ｔ）及びＴＶｋ（ｔ）は次の２段階アルゴリズムで計算される。
１．ポートキューｋに対して、
【数６】
0003567828.tif 000007
２．ポートｋのＶＣキューｌに対して、
【数７】
0003567828.tif 000008
ここで、
【数８】
0003567828.tif 000009
である。パラメータβは、αと同じ目的で用いられ、０＜β≦１である。
【００３４】
Ｑｋ（ｔ）＜ＴＰ（ｔ）かつＱｋｌ（ｔ）＜ＴＶｋ（ｔ）かつＱ（ｔ）＜Ｂの場合に到着セルは受容される。それ以外の場合、セルは拒絶される。その後、セルが受容されるか廃棄されるかに拘わらず、ＴＰ（ｔ）及びＴＶｋ（ｔ）によって、しきい値ＴＰｏｌｄ及びＴＶｋｏｌｄがそれぞれ更新される。
【００３５】
上記のアルゴリズムは、２つの異なるレベル、すなわち、ポートレベルとＶＣレベルにおける、バッファ管理のための動的バッファ割当て方式を提供する。これは、２つの異なるレベルで、即ち、まずポートレベルで、次にポート内のＶＣレベルで、バッファメモリの公平で最適な共有を保証する。詳細にいえば、Ｋ個の出力キューのうちのｍ個が過負荷（オーバーロード。すなわち、できるだけ多くのバッファを要求している状態）であり、残りの出力キューはアンダーロード（すなわち、今のところバッファは不要の状態）であると仮定する。過負荷の出力キューｋに対して、ｎｋ個（ｎｋ≦Ｌｋ）の過負荷のＶＣがある。α＝β＝１に設定することで、バッファメモリＢの完全共有を提供する。その場合、式（２）及び（３）のアルゴリズムによって、ｍ個の過負荷出力キューのそれぞれに対するバッファ割当てはＢ／ｍであり、ポートｋのｎｋ個の過負荷ＶＣのそれぞれに対するバッファ割当てはＢ／（ｍ×ｎｋ）である。
【００３６】
２レベルバッファ管理のための方式のみについて説明したが、当業者には認識されるように、上記アルゴリズムは、マルチレベル動的バッファ割当て問題を扱うように容易に拡張することができる（実際には２レベルの場合が普通であるが）。他方、出力キューどうしの間の公平性に関係なく、すべてのＶＣが同じ公平なバッファ割当てを要求する場合、上記アルゴリズムを直接にすべてのＶＣに適用することによって、方式は単純化される。
【００３７】
［Ｄ．パフォーマンス比較及びシミュレーション結果］
このセクションでは、動的しきい値方式及びその他のバッファ管理方式のパフォーマンスを、いくつかの例を通して比較する。
【００３８】
Ｃｈｏｕｄｈｕｒｙ及びＨａｈｎｅによる論文（Ａ．  Ｋ．  Ｃｈｏｕｄｈｕｒｙ  ａｎｄ  Ｅ．  Ｌ．  Ｈａｈｎｅ，  “Ｄｙｎａｍｉｃ  Ｑｕｅｕｅ  Ｌｅｎｇｔｈ  Ｔｈｒｅｓｈｏｌｄｓ  ｉｎ  ａ  Ｓｈａｒｅｄ−Ｍｅｍｏｒｙ  Ｐａｃｋｅｔ  Ｓｗｉｔｃｈ”，  ＩＥＥＥ／ＡＣＭ  Ｔｒａｎｓ．  Ｎｅｔｗｏｒｋｉｎｇ，  Ｖｏｌ．６，  ｐｐ．１３０−１４０，  Ａｐｒｉｌ，  １９９８）に記載された動的しきい値方式では、定常状態において、次式で定まるある量のバッファメモリΘが未割当てのまま残される。これは彼らの方式で本質的であるからである。
Θ＝αＢ／（１＋θ・Ｓ）
ここで、Ｓは過負荷キューの数であり、θは乗数パラメータである。多くの過負荷キューがある場合あるいはパラメータθが非常に大きい値である場合には、未割当てのまま残されるメモリは無視できるかもしれないが、彼らは前掲論文で、θの値が非常に大きいと動的制御が無効になることを示している。他方、適当なトラフィックポリシング、帯域割当て及びその他の制御メカニズムにより、多くのキュー（それぞれ異なる出力ポート又はラインへ行く）が同時に輻輳する可能性は低くなる。従って、場合によっては、Θにおける未利用のメモリ量は大きくなる。例えば、完全共有のα＝１でθ＝１（通常は良好な選択）の場合、ただ１つの過負荷キューがあるときに、メモリの半分が割り当てられないことになる。
【００３９】
第１の例では、１２０セルのバッファメモリが、４個の出力ポートに対応するキューによって共有される。容量６００Ｍｂｐｓのサーバが、ラウンドロビン方式で４個のポートキューにサービスする。別のソース（ＶＣ）が、各ポートキューにセルを供給する。第１のＶＣは、到着レートが３１０ＭｂｐｓのＣＢＲソースである。残りは、ピークレートが３１０Ｍｂｐｓで、相異なるオンとオフの周期を有する「オン／オフ」ＶＢＲソースであり、システム全体は安定であるが、２個以上のソースがアクティブにセルを送信しているときには過負荷が発生するようになっている。しかし、アクティブで過負荷のＶＣが１個のみの場合には、Ｃｈｏｕｄｈｕｒｙ  ｅｔ  ａｌ．に記載のアルゴリズムによれば、ＶＣは、すべての空きバッファメモリ（１２０セル）をとる。
図３から分かるように、本発明のＤＴ方式を用いると、各キューごとの定常状態キュー占有量は、２個、３個及び４個のＶＣがアクティブのときそれぞれ６０セル、４０セル及び３０セルである。これは、１２０セルのバッファメモリ全体が使用されている場合にＣｈｏｕｄｈｕｒｙ  ｅｔ  ａｌ．のアルゴリズムによって計算されたバッファメモリの公平シェアと厳密に一致する。Ｃｈｏｕｄｈｕｒｙ  ｅｔ  ａｌ．のＤＴアルゴリズムを用いると、バッファメモリの公平シェアは、それぞれ６０セル、４０セル、３０セル及び２４セルとなる。この結果、未使用バッファはそれぞれ５０％、３３％、２５％及び２０％となる。
【００４０】
各ポートキューのしきい値を６０セルとした静的しきい値方式では、過負荷ソースが１個だけのときにバッファは５０％未使用であり、第３及び第４のソースは、アクティブになったときに、メモリの公平シェアが得られない。
【００４１】
第２の例では、同じ１２０セルのバッファメモリが、２個の出力ポート宛の４個のＶＣキューによって共有される。各ＶＣキューは相異なるソースによってセルが供給される。第１のＶＣは出力ポート＃１宛であり、ピークレートが３１０Ｍｂｐｓの「オン／オフ」ＶＢＲソースである。他の３個の統計的に同一のＶＣはすべて出力ポート＃２宛であり、ピークレートが３１０ＭｂｐｓのＣＢＲソースである。従って、出力ポート＃２へのＶＣは常に過負荷状態を生じ、できるだけ多くの空きバッファメモリを必要とする。動的バッファ共有ポリシーは次の２つのレベルを有する。
（ｉ）２個のポートはポートレベルでバッファの公平シェアを有する。
（ｉｉ）各ポートバッファシェア内では、複数のＶＣが公平シェアを有する。
式（２）及び（３）に記載した本発明の動的キューしきい値方式が適用される。図４から明らかなように、ポート＃２への３個のＶＣがｔ＝５００（セル時間）でアクティブになると、システムは過負荷になり、ポート＃１へのＶＣは、ポートレベルメモリ割当てで６０セルの公平シェアを獲得し、ポート＃２へのＶＣは全体で残りの６０セルを獲得し、それらの３個のＶＣはそれぞれ、ＶＣレベルのメモリ割当てで２０セルずつの公平シェアを有する。ポート＃１へのＶＣがｔ＝３５００（セル時間）付近でインアクティブになると、その６０セルのメモリ割当てが空きになる。ここで、ポート＃２への３個のアクティブなＶＣはポートレベルで全部で１２０セルのメモリをとり、各ＶＣはＶＣレベルで４０セルずつの公平シェアを有する。その後、ポート＃１へのＶＣが再びアクティブになると、ポートレベルの公平シェアとして６０セルを再び獲得する。
【００４２】
【発明の効果】
以上、共有メモリＡＴＭスイッチのための新規な動的バッファ管理方式について説明した。Ｃｈｏｕｄｈｕｒｙ  ｅｔ  ａｌ．で提案されたバッファ管理方式と同じ考え方で、本発明は、オンデマンドのトラフィック負荷に対して公平なバッファメモリ共有を行うことによって、変化するキュー条件に適応することが示された。動的キューしきい値を計算するのには最小限の処理パワーしか必要としないため、実装はむしろ単純である。さらに、本発明は、バッファメモリの利用率を最大にする。式（１）のパラメータαを調整することによって、メモリ共有の程度を制御することができる。また、マルチレベルバッファ管理方式を実現するために本発明の動的キューしきい値アルゴリズムをどのようにして適用することができるかも示した。
【００４３】
動的しきい値とともに、階層的バッファメモリ分割方式も示した。この方式は、複数のレベルでバッファメモリを論理的に分割し割り当てる。この方式は、グループ及びクラスのレベルではトラフィックの統計的特性及びサービスのＱｏＳを考慮し、ポート及びＶＣのレベルでは、変化するトラフィック条件に対するバッファメモリの公平で最適な割当てを保証する。
【００４４】
上記では本発明のいくつかの実施例のみについて説明したが、当業者には明らかなように、上記の説明に基づいて、本発明の技術思想及び技術的範囲から離れることなく、本発明のさまざまな変形例を考えることが可能である。
【図面の簡単な説明】
【図１】入力及び出力キューイングモジュールを有するＡＴＭスイッチの図である。
【図２】異なるレベル、すなわち、グループ、クラス、サブクラス、ポート／ライン、ＶＣでの階層的なバッファメモリ割当て方式を示す図である。
【図３】各ＶＣが異なるポートを宛先とする、ポートレベルでの動的バッファ割当てを示す図である。
【図４】ポート及びＶＣのレベルでの動的バッファ割当てを示す図である。
【図１】
0003567828.tif 000010
【図２】
0003567828.tif 000011
【図３】
0003567828.tif 000012
【図４】
0003567828.tif 000013