(57)【要約】  共有リンクを通じるサービスの待ち行列を選択するための方法。本方法は、複数のイングレス内の待ち行列グループからの各待ち行列を個数「Ｎ」のティアのうちの１つのティアに分類することを含む。数「Ｎ」は２より大きいか等しい。割り当てられる帯域幅に関する情報は、待ち行列の少なくとも幾つかをティアに分類するために使用される。各ティアには、異なる優先順位が割り当てられる。また本方法は、ティアに分類される待ち行列をより下位の優先順位にマッチさせるより前にティアに分類される待ち行列をより高位の優先順位にマッチさせることによって待ち行列を利用可能なエグレスへマッチさせることも含む。【選択図】  図１４
2007512719.tif 000002
【特許請求の範囲】
【請求項１】
共有リンクを介してサービスする待ち行列を選択する方法であって、
複数のイングレス内の待ち行列グループからの各待ち行列を個数「Ｎ」のティアのうちの１つのティアに分類することを含み、上記数「Ｎ」は２より大きいか等しく、上記待ち行列のうちの少なくとも幾つかを上記ティアに分類するために待ち行列状態情報が使用され、待ち行列の各ティアには異なる優先順位が割り当てられ、
より低い優先順位を有するティア内に分類される待ち行列をマッチングすべく試行するより前に、より高い優先順位を有するティア内に分類される待ち行列をマッチングすべく試行することによって待ち行列を利用可能なエグレスにマッチングすることを有することを特徴とする方法。
【請求項２】
上記各待ち行列を分類することは、少なくとも第１のティアと第２のティアとに分類することを含み、上記待ち行列状態情報は上記待ち行列の各々のための保証された帯域幅レートに関する情報を含み、上記第１のティアに分類される待ち行列の各々は上記待ち行列のための保証された帯域幅レートより少ない帯域幅を受信しておりかつ上記第２のティアに分類される待ち行列の各々は上記待ち行列のための保証された帯域幅レートより多い帯域幅を受信しており、上記第１のティアは上記第２のティアより高い優先順位を有することを特徴とする請求項１記載の方法。
【請求項３】
上記待ち行列を利用可能なエグレスにマッチングすることは、
待ち行列の利用可能なエグレスへのマッチングがまだ実行されていない最も高い優先順位を有するティアを選択することと、
上記選択されるティア内の待ち行列のうちの１つを選択することと、
希望されるエグレスが利用可能であれば上記選択される待ち行列をその希望されるエグレスにマッチングし、上記選択される待ち行列が上記希望されるエグレスにマッチングされれば上記希望されるエグレスを利用可能なエグレスのリストから削除することと、
上記選択される待ち行列を考察されるべき待ち行列のリストから削除することと、
上記待ち行列のうちの１つを選択するステップと、上記選択される待ち行列をマッチングするステップと、上記選択される待ち行列を削除するステップとを、上記選択されるティア内の全ての待ち行列が評価されるまで繰り返すこと、を含むことを特徴とする請求項１記載の方法。
【請求項４】
上記待ち行列のうちの１つを選択する行為は、上記選択されるティア内の待ち行列のうちの１つをランダムに選択することを含むことを特徴とする請求項３記載の方法。
【請求項５】
上記分類しかつマッチングする行為は上記共有リンクを介してサービスするための各タイムスロットについて実行される請求項１記載の方法。
【請求項６】
上記分類しかつマッチさせる行為は、利用可能なエグレスに向かうパケットを有しかつその保証された帯域幅レートを受信する第１の待ち行列が、その利用可能なエグレスに向かうパケットを有する第２の待ち行列がその保証された帯域幅レートを受信していなければその利用可能なエグレスにマッチングされないことを保証することによりオーバーロード保護を提供することを特徴とする請求項１記載の方法。
【請求項７】
上記第１の待ち行列は、上記第２の待ち行列が分類されるティアより高い優先順位を有するティアに分類されることを特徴とする請求項６記載の方法。
【請求項８】
各待ち行列における先出しパケットのサイズを確認することと、
任意の待ち行列における上記先出しパケットのサイズが大きすぎて単一のタイムスロットでは上記共有リンクを介して伝送され得なければ、その待ち行列を最も高い優先順位を有するティアに分類することをさらに含むことを特徴とする請求項１記載の方法。
【請求項９】
各待ち行列のキュー・メトリックに関する情報を保持することと、
上記キュー・メトリック情報及び保証された帯域幅量を基礎として各待ち行列の保証レートを計算することと、
上記保証レートを使用して上記待ち行列グループにおける各待ち行列のクレジット値を計算すること、をさらに含み、上記クレジット値は上記待ち行列状態情報であることを特徴とする請求項１記載の方法。
【請求項１０】
上記保証レートを使用して各待ち行列のクレジット値を計算することは、
各待ち行列に関連づけられる上記クレジット値を、
上記待ち行列が所定のタイムスロットにおいてサービスされれば、上記クレジット値をしかるべき量で減分することと、
上記所定のタイムスロットの後、上記クレジット値を上記保証レートを基礎とする量で増分すること、によって調整することを含むことを特徴とする請求項９記載の方法。
【請求項１１】
上記保証された帯域幅の量はエグレスの量を基礎とする請求項１０記載の方法。
【請求項１２】
上記保証された帯域幅の量は待ち行列グループの量を基礎とすることを特徴とする請求項１０記載の方法。
【請求項１３】
上記各待ち行列を分類することは、（ａ）ゼロより大きいクレジット値を有する少なくとも１つの待ち行列を、第２のティアより高い優先順位を有する第１のティアへ分類することと、（ｂ）ゼロより小さいクレジット値を有する少なくとも１つの待ち行列を第２のティアへ分類することを含むことを特徴とする請求項１０記載の方法。
【請求項１４】
上記待ち行列状態情報は上記待ち行列の少なくとも幾つかに関するクレジット値を含み、各クレジット値は各待ち行列の保証された帯域幅レートから導出されることを特徴とする請求項１記載の方法。
【請求項１５】
ゼロより大きいクレジット値は渇望している待ち行列を示し、ゼロより小さいクレジット値は満足している待ち行列を示すことを特徴とする請求項１４記載の方法。
【請求項１６】
渇望している各待ち行列は第２のティアより高い優先順位を有する第１のティアへ分類され、満足している各待ち行列は上記第２のティアへ分類されることを特徴とする請求項１５記載の方法。
【請求項１７】
割り当てられた帯域幅に関する情報は上記待ち行列が空であるかどうかに関する情報を含むことを特徴とする請求項１４記載の方法。
【請求項１８】
空である待ち行列は最も低い優先順位を有するティアへ分類されることを特徴とする請求項１７記載の方法。
【請求項１９】
上記待ち行列状態情報は待ち行列が部分パケットを含むかどうかに関する情報を含み、上記部分パケットは大きすぎて単一のタイムスロットでは上記共有リンクを通して伝送され得ないパケットであることを特徴とする請求項１８記載の方法。
【請求項２０】
部分パケットを含む待ち行列は最も高い優先順位を有するティアへ分類されることを特徴とする請求項１９記載の方法。
【請求項２１】
上記待ち行列状態情報は待ち行列がその処理能力に見合う数のパケットを受信しているかどうかに関する情報を含むことを特徴とする請求項２０記載の方法。
【請求項２２】
その処理能力に見合う数のパケットを受信していない各待ち行列は、最も低い優先順位を有するティアの直ぐ上の優先順位レベルを有するティアへ分類されることを特徴とする請求項２１記載の方法。
【請求項２３】
上記待ち行列状態情報は待ち行列が長期間に渡ってサービスされていないかどうかに関する情報を含み、上記長期間は予め定義されたタイムスロット数であることを特徴とする請求項２１記載の方法。
【請求項２４】
長期間に渡ってサービスされていない各待ち行列は最も高い優先順位を有するティアの直ぐ下の優先順位レベルを有するティアへ分類されることを特徴とする請求項２３記載の方法。
【請求項２５】
上記割り当てられた帯域幅に関する情報は、
上記待ち行列の少なくとも幾つかに関するクレジット値であって、各クレジット値は各待ち行列の保証レートから上記待ち行列のキュー・メトリック情報を基礎として導出されるクレジット値と、
各待ち行列が空であるかどうかに関する情報と、
待ち行列が部分パケットを含むかどうかに関する情報と、
待ち行列がその処理能力に見合う数のパケットを受信しているかどうかに関する情報と、
待ち行列が長期間に渡ってサービスされていないかどうかに関する情報と、のうちの少なくとも２つ以上を含むことを特徴とする請求項１記載の方法。
【請求項２６】
共有リンクを介したアクセスを調停するための方法であって、
待ち行列グループの各待ち行列について待ち行列状態情報を保持することを含み、上記待ち行列状態情報は各待ち行列の保証された帯域幅レート及び各待ち行列が空であるかどうかに関する情報を含み、
上記共有リンクを介してサービスするための各タイムスロットの間に、
上記待ち行列状態情報を使用して、各待ち行列を少なくとも２つのティアより成るグループからのティアにマップし、各ティアは異なる優先順位レベルを有し、かつ、
より低い優先順位を有するティア内の待ち行列をマッチングする前に、より高い優先順位を有するティア内の少なくとも幾つかの待ち行列をマッチングすることにより上記待ち行列の幾つかをエグレスにマッチングすることを含むことを特徴とする方法。
【請求項２７】
上記待ち行列の幾つかをエグレスにマッチングすることは、
最も高い優先順位を有するティアを選択することと、
上記選択されるティア内の待ち行列のうちの１つを選択することと、
上記エグレスが利用可能であれば上記選択される待ち行列をその希望されるエグレスにマッチングし、上記希望するエグレスが利用可能であれば上記エグレスを利用可能なエグレスのリストから削除することと、
上記選択される待ち行列を考察されるべき待ち行列のリストから削除することと、
上記待ち行列のうちの１つを選択するステップと、上記選択される待ち行列をマッチングするステップと、上記選択される待ち行列を削除するステップとを、上記選択されるティア内の全ての待ち行列が評価されるまで繰り返すこと、を含むことを特徴とする請求項２６記載の方法。
【請求項２８】
共有リンクを介してサービスする待ち行列を選択するためのシステムであって、
複数のイングレス内の待ち行列グループからの各待ち行列を個数「Ｎ」のティアのうちの１つのティアに分類するための手段を備え、上記数「Ｎ」は２より大きいか等しく、上記待ち行列のうちの少なくとも幾つかを上記ティアに分類するために待ち行列状態情報が使用され、待ち行列の各ティアには異なる優先順位が割り当てられ、
より低い優先順位を有するティア内に分類される待ち行列をマッチングすべく試行するより前に、より高い優先順位を有するティア内に分類される待ち行列をマッチングすべく試行することによって待ち行列を利用可能なエグレスにマッチングするための手段を有することを特徴とするシステム。
【請求項２９】
共有リンクを介したアクセスを調停するためのシステムであって、
待ち行列グループの各待ち行列について待ち行列状態情報を保持するための手段を備え、上記待ち行列状態情報は各待ち行列の保証された帯域幅レート及び各待ち行列が空であるかどうかに関する情報を含み、
上記共有リンクを介してサービスするための各タイムスロットの間に、上記待ち行列状態情報を使用して各待ち行列を少なくとも２つのティアより成るグループからのティアにマップするための手段を備え、各ティアは異なる優先順位レベルを有し、
上記共有リンクを介してサービスするための各タイムスロットの間に、より低い優先順位を有するティア内の待ち行列をマッチングする前に、より高い優先順位を有するティア内の少なくとも幾つかの待ち行列をマッチングすることにより上記待ち行列の幾つかをエグレスにマッチングするための手段を有することを特徴とするシステム。
【請求項３０】
共有リンクを介してサービスする待ち行列を選択するためのシステムであって、
データ転送のための各タイムスロットの間にイングレス内の少なくとも幾つかの待ち行列のクレジット値を決定する、上記イングレス内のメータリング・モジュールを備え、各クレジット値は所定の待ち行列がその割り当てられた帯域幅を受信したかどうかを表示し、
各タイムスロットの間に、（ａ）各待ち行列を、各々が異なる優先順位レベルを有する少なくとも２つのティアより成るグループからのティアにマップし、（ｂ）より低い優先順位を有するティア内の待ち行列をマッチングする前に、より高い優先順位を有するティア内の少なくとも幾つかの待ち行列をマッチングすることにより上記待ち行列の幾つかをエグレスにマッチングする調停モジュールを有することを特徴とするシステム。
【請求項３１】
何らかの待ち行列グループのキュー・メトリック情報及び保証された帯域幅量を基礎として各待ち行列の保証された帯域幅レートを計算する帯域幅アロケータ・モジュールをさらに備え、上記メータリング・モジュールは上記保証されたレートを使用してクレジット値を決定することを特徴とする請求項３０記載のシステム。
【請求項３２】
共有リンクを介して帯域幅を割り当てるための方法であって、
ある待ち行列グループにおける各待ち行列のキュー・メトリックに関する情報を保持することと、
上記待ち行列グループにおける各待ち行列の保証レートを、上記待ち行列メトリック情報及び保証された帯域幅量を基礎として計算することと、
上記各待ち行列の保証レートを各待ち行列に関連づけられるイングレスへ送ることを含み、各イングレスは上記各待ち行列の保証レートを使用して各待ち行列のクレジット値を計算することが可能であり、
少なくとも１つのイングレスから待ち行列状態情報を受信することを含み、上記待ち行列状態情報は少なくとも１つまたは複数の待ち行列のクレジット値を含み、
上記クレジット値を使用することにより、各待ち行列を少なくとも２つのティアより成るグループからのティアへマップすることを含み、各ティアは異なる優先順位レベルを有し、
より低い優先順位を有するティア内の待ち行列をマッチングすべく試行するより前に、より高い優先順位を有するティア内の少なくとも幾つかの待ち行列をマッチングすべく試行することによって待ち行列の幾つかをエグレスにマッチングすることを有することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して帯域幅を共有リンク上に割り当てるための方法とシステムに関し、より特定的には、プロトコル処理を円滑化しかつサービス処理の保証を維持するような方法とシステムに関する。
【背景技術】
【０００２】
図１は、ネットワーク・バックボーン上の情報パケットのトラフィックを管理するための典型的なスイッチング・システム１０を示す。システム１０は、１つまたは複数の入力イングレスＩ１、Ｉ２、Ｉ３と、１つまたは複数の出力エグレスＥ１、Ｅ２、Ｅ３と、スイッチまたはクロスバー１２とを含む。イングレスＩ１、Ｉ２、Ｉ３は、スイッチ、ルータ、コンピュータまたはパケットがそれを介してスイッチング・システム１０へ入る他のデバイスである。同様に、エグレスＥ１、Ｅ２、Ｅ３はコンピュータ、スイッチ、ルータまたはパケットがそれを介してスイッチング・システム１０を出る他のデバイスである。図１には３つのイングレスＩ１、Ｉ２、Ｉ３及び３つのエグレスＥ１、Ｅ２、Ｅ３が描かれているが、スイッチング・システム１０には任意数のイングレス及びエグレスを接続することができる。データ・パケットは、トラフィック・ソース１４を介してイングレスＩ１、Ｉ２、Ｉ３へ入り、トラフィックの出口１６を介してエグレスＥ１、Ｅ２、Ｅ３から出る。典型的なオペレーションでは、スイッチング・システム１０は、イングレスとエグレスとの間に１対１のマッピングが存在するように所定のイングレスを所定のエグレスへ接続する、または、イングレスとエグレスとの間に１対多数のマッピングが存在するように所定のイングレスを１つまたは複数のエグレスへ接続することができる。言い替えれば、スイッチング・システム１０を介するデータ転送のあらゆるタイムスロットについて、各エグレスは単一のイングレスからのデータしか受信することができない。但し、一つのイングレスは複数のエグレスへデータを送ることができる。さらに、各イングレスＩ１、Ｉ２、Ｉ３はデータ・パケットを格納するための複数の待ち行列を含み、各エグレスＥ１、Ｅ２、Ｅ３は複数のバッファＦＩＦＯ（先入れ先出し）を含む。各タイムスロットで、各イングレス内の単一の待ち行列は１つまたは複数のエグレス内の１つまたは複数のポートへ接続されることが可能である。例えば、所定のタイムスロットの間、イングレスＩ１内の待ち行列Ｑ２はエグレスＥ３内のバッファＦＩＦＯ１に接続されることが可能であり、イングレスＩ２内の待ち行列Ｑ１はエグレスＥ１内のバッファＦＩＦＯ１に接続されることが可能であり、イングレスＩ３内の待ち行列Ｑ１はエグレスＥ２内のバッファＦＩＦＯ３に接続されることが可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
概して、図１のシステム１０等のスイッチング・システムの目的の一つは、その有益な帯域幅（所謂乏しいリソース）が効率的に使用されるようにスイッチまたはクロスバー１２を最大限に利用することにある。スイッチング・システムの第２の目的は、サービス品質（ＱｏＳ）保証に依存して顧客のためのパケットを提供することであると言える。スイッチング・システムの別の目的は、所定のパケットが上記スイッチング・システムにおいて、システム１０を介する送信の前に認容できないほど長時間に渡って待ち行列に入れられないようにすることであると言える。従って、改良された方法及びシステムによりこれらの目的を達成するニーズが存在する。
【０００４】
図１のスイッチング・システム１０におけるスイッチまたはクロスバー１２を介するデータ転送のためのタイムスロットのサイズは、概して単一のタイムスロット内で送信され得るデータ量を決定する。図１のシステム１０等の現時点で実装されているスイッチング・システムでは、一般に、データ転送のタイムスロット・サイズの選択に際して、パケット・サイズが大幅に変わる２つの方法が使用される。第１の方法は、待ち行列内の大部分の情報パケットが所定のタイムスロット間にスイッチまたはクロスバー１２を介して伝送され得るに足る大きさのタイムスロット・サイズを使用するものである。しかしながら、このような方法における問題点は、システム１０の活用度の低さにある。各タイムスロットは部分的に満たされない可能性があり、故に概して高価である利用可能な帯域幅が未使用状態におかれることになる。
【０００５】
タイムスロット・サイズの選択に使用される第２の方法は、上記第１の方法で使用されるものより小さいタイムスロット・サイズを使用するものである。しかし、この場合、各セグメントが単一のタイムスロット内でスイッチング・システム１０に適合するように、タイムスロットより大きいパケットは２つ以上のセグメントに分割されなければならない。この第２の方法は、上述の第１の方法に付随する低活用度の問題を低減させる可能性はあるが、パケットはイングレスＩ１、Ｉ２、Ｉ３において複数のセグメントに分けられ（セグメント化され）、次いでエグレスＥ１、Ｅ２、Ｅ３において再構築（リアッセンブル）されることを必要とする。このようなセグメント化及びリアッセンブルは、スイッチング・システム１０のパフォーマンスを制限する可能性がある。
【０００６】
従って、帯域幅を最大限に活用し、ＱｏＳ保証を確実に行い、かつパケットがスイッチング・システム内でいつまでも待ち行列に入れられることを防止するように帯域幅を適正に割り当てる、リンク上に帯域幅を割り当てるための方法とシステム、並びに上記方法とシステムが「公正」に動作することを保証するというニーズが存在する。最後に、セグメント化及びリアッセンブルの問題点を発生させることなくタイムスロットを最大限に活用してデータ転送を行う方法とシステムに対するニーズが存在する。
【課題を解決するための手段】
【０００７】
本発明の一実施形態は、共有リンクを通して伝送するパケットを選択するための方法に関する。この実施形態では、本方法は、複数のイングレスの各々における複数の待ち行列の各々において先に出すパケットの優先順位を決定することと、特定のエグレスの宛先とされる各イングレスの待ち行列内の先出しパケットの各グループについて、第１の優先順位を有する先出しパケットを選択することと、第１の優先順位を有しかつ特定のエグレスの宛先とされる選択された先出しパケットの各部分集合について、第２の優先順位を有する先出しパケットを選択することと、各イングレスから共有リンクを通して第２の優先順位を有する選択された先出しパケットを伝送することを特徴とする。
【０００８】
本発明の別の実施形態は、複数のイングレス内の各待ち行列について優先順位を決定するように、但し上記優先順位はデータ転送の所定のタイムスロットに関する瞬時的なものであり、かつ特定のエグレスの宛先とされるパケットを有する各イングレス内の待ち行列の各グループについて第１の優先順位を有する待ち行列を選択し、上記特定のエグレスの宛先とされるパケットを有する第１の優先順位を有する選択された待ち行列の各部分集合について第２の優先順位を有する待ち行列を選択し、各部分集合の第２の優先順位を有する選択された待ち行列を所定のタイムスロットにおいて共有リンクを通して提供するようにマイクロプロセッサに指図する命令を格納するコンピュータ読取り可能媒体である。
【０００９】
本発明の別の実施形態は、共有リンクを通して提供する待ち行列を選択するためのシステムに関する。この実施形態において、本システムは、複数のイングレス内の各待ち行列の優先順位を決定するためのエレメントを特徴とし、上記優先順位はデータ転送の所定のタイムスロットに関する瞬時的なものであり、かつ各イングレス内の待ち行列の各グループの第１の優先順位を有する、特定のエグレスの宛先とされるパケットを有する待ち行列を選択するためのエレメントと、第１の優先順位を有しかつ特定のエグレスの宛先とされるパケットを有する選択された待ち行列の各部分集合の第２の優先順位を有する待ち行列を選択するためのエレメントと、各部分集合の第２の優先順位を有する選択された待ち行列を所定のタイムスロットにおいて共有リンクを通して提供するためのエレメントとを特徴とする。
【００１０】
本発明の別の実施形態は、共有リンクを通して提供する待ち行列を選択するための方法に関する。第１に本方法は、複数のイングレス内の待ち行列グループからの各待ち行列を個数［Ｎ」のティアのうちの１つのティアに分類することを含む。各タイムスロットにおいて、またはタイムスロットの部分集合について、各イングレスの仮想出力キュー（ＶＯＱ）のカレント状態（故に各イングレスのカレント状態も）がティアにマッピングされる。言い替えれば、各待ち行列に関する特徴は、その待ち行列を待ち行列のティアへ割り当てるために使用される。ティアの数「Ｎ」は、２より大きいか等しい。各ティアには、異なる優先順位が割り当てられる。第２に本方法は、下位の優先順位を有するティア内に分類される待ち行列をマッチさせる前に上位の優先順位を有するティア内に分類される待ち行列をマッチさせることによって、待ち行列を利用可能なエグレスへマッチさせることを含む。各タイムスロットでは、待ち行列のティア集合を所与として、本発明のこの実施形態はティア当たり最大のマッチングを生み出す。即ち、「Ｎ」個のティアが存在すれば、この実施形態は最高位のティアを始点として、そのティア内に存在するＶＯＱのみを考慮してイングレス及びエグレス間に最大のマッチングを生み出す。次にこの実施形態は、マッチしなかった残りのイングレス−エグレスＶＯＱの中から、次に下位である優先順位のティアにおいて最大のマッチングを生み出す、等々を繰り返す。
【発明を実施するための最良の形態】
【００１１】
Ａ．概説
本発明の実施形態は、データ転送のためのＱｏＳ保証を実装しかつ所定のタイムスロットの間にどの待ち行列を提供するかを公正に決定するために使用され得る設定可能な加重された分散スケジューリング方法及びシステムを規定する。
【００１２】
１．システム・アーキテクチャ
図２は、本発明の一実施形態によるシステム１００のブロック図を示す。図２のシステム１００は、ある実施形態ではチップである幾つかのモジュラ・コンポーネントを含む。図２のシステム１００は、１つまたは複数のイングレス・チップ１０２と、１つまたは複数のエグレス・チップ１０４と、アービタ・チップ１０６と、任意のイングレス１０２を任意のエグレス１０４へパイプライン１１０を使用して接続することができる共有スイッチまたはクロスバー・チップまたはリンク１０８とを含む。さらに各イングレス１０２は、関連の転送エンジンまたは待ち行列マネージャ１１２を有する可能性がある。データ・パケットはトラフィック・ソース１１４からイングレス１０２へ入り、エグレス・チップ１０４からトラフィック出力１１６へ出る。複数のイングレス１０２は、共有リンク１０８上で複数のエグレス１０４へリンクされることが可能である。例えば、ある実施形態では、６４個のイングレス１０２が共有リンク１０８上で６４個のエグレスへリンクされることが可能である。
【００１３】
以下で説明する実施形態は、１つまたは複数のイングレス１０２を１つまたは複数のエグレス１０４へ接続する共有リンク１０８を有するシステムである共有リンク・システムにおいて動作する。システム１００を介するデータ転送のためのあらゆるタイムスロットについて、各エグレス１０４は単一のイングレス１０２にしか接続され得ないが、単一のイングレス１０２は１つまたは複数のエグレス１０４へ接続されることが可能である。従って、本明細書を通じて、「共有リンク・システム」という用語は、１つまたは複数のエグレスが所定のタイムスロットの間にそれを介して単一のイングレスへ接続され得るシステムを指して使用される。同様に「共有リンク」という用語も、この明細書を通じて、データ転送のための各タイムスロットに関して設定可能でありかつ共有リンク・システムにおいてデータ転送のために１つまたは複数のエグレスを単一のイングレスへ接続すべく使用される連結デバイス、スイッチまたはクロスバーを指して使用される。
【００１４】
本発明の分子コンポーネントとしてチップを使用する一実施形態では、各チップは信号処理ユニットとインタフェース・ユニットとを有する集積回路チップであることが可能である。上記信号処理ユニットは、本明細書に記述されているオペレーションを実行するに足る任意の速度で実行されることが可能である。例えばある実施形態では、１ＧＨｚのプロセッサがアービタ・チップ１０６内で使用される。本発明の各モジュールの機能は、ソフトウェアまたはハードウェアで実行されることが可能である。図３Ａはレジスタ・ファイル１５８を有するイングレス・チップ１０２を描いたものであり、このようなイングレス・チップ１０２は内部に本発明の機能を実行するハードウェアまたはファームウェア・モジュールを有することが可能である。
【００１５】
各イングレス１０２へ接続される各トラフィック・ソース１１４及び各エグレス１０４へ接続される各トラフィック出力１１６は、１０Ｇｂｐｓ等の関連の帯域幅レートを有する。ある実施形態では、イングレス１０２またはエグレス１０４を共有リンク１０８へ接続する各パイプライン１１０は、トラフィック・ソース１１４の帯域幅レートまたはトラフィック出力１１６の帯域幅レートより大きい関連の帯域幅レートを有する。従って、パイプライン１１０は高速リンクであることが可能である。例えば、イングレス１０２へ入るトラフィック・ソース１１４の帯域幅レートが１０Ｇｂｐｓであれば、これに関連づけられる共有リンク１０８への接続のためのパイプラインは１０乃至２０Ｇｂｐｓの帯域幅レートを有することが可能である。このような実施形態では、本発明によるシステム１００は、一部にはイングレス１０２へ、またはエグレス１０４からの帯域幅レートに比べてリンク１０８へ／からの高速パイプライン１１０に起因して、共有リンク１０８上で帯域幅保証を実現することができる。他の実施形態では、パイプライン１１０はトラフィック・ソース１１４またはトラフィック出力１１６の帯域幅レートと同じ帯域幅レートを有する。
【００１６】
図３Ａは、本発明の単一のアービタ・チップ１０６、イングレス・チップ１０２及び転送エンジンまたは待ち行列マネージャ１１２を示す一実施形態のブロック図である。ある実施形態では、アービタ・チップ１０６は帯域幅アロケータ・モジュール１５０と、調停モジュール１５２とを含む。図３Ａでは、イングレス１０２内に、優先順位計算モジュール１５６と、レジスタ・ファイル１５８と、メータリング更新モジュール１６０と、待ち行列長さモジュール１６２とを含むメータリング・モジュール１５４が描かれている。ある実施形態では、帯域幅アロケータ・モジュール１５０及び調停モジュール１５２は待ち行列マネージャ１１２が可能であるのと同様にイングレス１０２内に存在する。図２のシステム１００のように共有リンク１０８へ付着される幾つかのイングレス１０２を有するシステムでは、複数のイングレス１０２へサービスを供給すべく単一のアービタ・チップ１０６が使用されるように、帯域幅アロケータ・モジュール１５０及び調停モジュール１５２を別個のアービタ・チップ１０６内に保有することが望ましい可能性がある。以下、各モジュールの機能について説明する。
【００１７】
図３Ａの実施形態は、単一のイングレス１０２と単一のアービタ・チップ１０６とを描いている。但し、より典型的には、単一のアービタ・チップ１０６は、図２のシステム１００のような複数のイングレス１０２を有するシステムにおいて使用される。
【００１８】
システム１００の各イングレス１０２は、複数のバッファ待ち行列を含む。図２は、各々が４つの待ち行列Ｑ１、Ｑ２、Ｑ３、Ｑ４を有するイングレス１０２を描いているが、各イングレス１０２内には任意数の待ち行列が存在することが可能である。ある実施形態では、イングレス・チップ１０２は１０２４個の待ち行列を含んでいる。各待ち行列には、その待ち行列のためのサービス・クラス（ＣＯＳ）が関連づけられる。各ＣＯＳは、そのＣＯＳに関連づけられる待ち行列内のパケットに関する異なるサービス・レベルを指す。例えば、図２の各イングレス１０２における待ち行列Ｑ１はＣＯＳ１を有し、待ち行列Ｑ２はＣＯＳ２を有し、待ち行列Ｑ３はＣＯＳ３を有し、待ち行列Ｑ４はＣＯＳ４を有する。異なるＣＯＳを有する待ち行列内のパケットが異なる速度でサービスを供給されるように、ＣＯＳ１は毎秒１ギガバイト（１Ｇｂｐｓ）の帯域幅レートに関連づけられることが可能であり、ＣＯＳ２は０．２５Ｇｂｐｓの帯域幅レートを有することが可能であり、等々と続く。データ・パケットが各イングレス１０２へ入るに伴って、パケットは、そのパケットのＣＯＳに対応する適切な待ち行列内にバッファされる。より良い（またはより高位の）ＣＯＳを有する待ち行列内のパケットは、より劣る（またはより下位の）ＣＯＳを有する待ち行列内のパケットより高速でサービスを受ける必要がある。待ち行列内の各パケットは、特定の、但し必ずしも同じではない、エグレスを宛先とされる（即ち、上記パケットはそれがそのエグレスへ送られるように希望していることを示すデータを含む）。各イングレス１０２に関連づけられる転送エンジン１１１は、イングレス１０２へ入るデータ・パケットをイングレス１０２内の適切な待ち行列へルーティングすることができる。
【００１９】
システム１００の各エグレス１０３は、概して、共有リンク１０８を介して受信されるパケットを、上記パケットがトラフィック出力１１６を介して送出される前にバッファする幾つかのＦＩＦＯ（先入れ先出し）バッファまたはポートを含む。本発明の一実施形態では、単一のチップがイングレス１０２またはエグレス１０４の何れかとして機能することができる。このようなチップは、後述するようにイングレス１０２の機能を実行することが可能なイングレス側と、エグレス１０４の機能を実行するＦＩＦＯを有するエグレス側とを含むことになる。
【００２０】
図３Ｂは、イングレス１０２の待ち行列内部のパケットの詳細図を示す。図３Ｂは待ち行列Ｑ１、Ｑ２及びＱ３を有する単一のイングレス１０２を示しているが、先に述べたように、イングレス１０２内にはこれより多い数の待ち行列が存在してもよい。図３Ｂが単純化された視覚形態で描いているように、各待ち行列Ｑ１、Ｑ２、Ｑ３は待ち行列内にバッファされた幾つかのパケットを含む。例えば、待ち行列Ｑ１はパケット１７０、１７２及び１７３を含み、待ち行列Ｑ２はパケット１７４、１７６、１７８及び１８０を含み、待ち行列Ｑ３はパケット１８２、１８４、１８６、１８８、１９０及び１９２を含む。待ち行列Ｑ１のヘッドにはパケット１７０が存在し、待ち行列Ｑ２のヘッドにはパケット１７４が存在し、待ち行列Ｑ３のヘッドにはパケット１８２が存在する。この実施形態によれば、本発明のシステム１００の共有リンク１０８上へデータが送られる各タイムスロットにおいて、単一のタイムスロットに適合する各待ち行列のヘッドにおける１つまたは複数のパケット（１つまたは複数の先出しパケット）のみが共有リンク１０８へのアクセスを得るべく競合する資格がある。従って、図３Ｂの描写の場合、次のタイムスロットでは、パケット１７０、１７４及び１８２しか共有リンク１０８へのアクセスを求めて競合することができない。タイムスロットは一定の時間単位であり、各タイムスロットにおいて、共有リンク１０８はデータ転送用に設定されることが可能である。ある実施形態では、タイムスロットは約２００乃至６５０ナノ秒に設定されることが可能であるが、タイムスロットのサイズは異なる実施形態で変わる可能性がある。図示した実施形態では、２００乃至６５０ナノ秒のタイムスロットにおいて、共有リンク１０８上を約４６０乃至１，５００バイトのデータが転送され得る。
【００２１】
図３Ｂはまた、イングレス１０２の待ち行列内の複数のパケットは可変サイズである可能性があり、かつイングレス１０２内の複数の待ち行列のサイズも変わる可能性があることをブロック形式で示している。例えば、待ち行列Ｑ１におけるパケット１７０は待ち行列Ｑ２におけるパケット１７４より大きい、かつまた待ち行列Ｑ３におけるパケット１８２より大きいパケット・サイズを有する。またさらに、待ち行列Ｑ３におけるパケット１８２は待ち行列Ｑ２におけるパケット１７４よりサイズが大きい。このようなパケット・サイズは、バイトまたはビット単位で測定されることが可能である。また図３Ｂは、この実施形態では共有リンク１０８を通じたデータ転送のためである単一のタイムスロットのサイズを示している。パケット１７０は単一のタイムスロットよりサイズが大きいが、パケット１７４及びパケット１８２は共に単一のタイムスロットのサイズより小さいか等しく見える。最後に、図３Ｂは、イングレス１０２内のある特定の瞬間における各待ち行列のサイズ（Ｑ長さ）を描いている。例えば、待ち行列Ｑ１は待ち行列Ｑ２のＱ長さＱ２より大きいが待ち行列Ｑ３のＱ長さＱ３より小さいＱ長さＱ１を有する。図３Ｂは、各待ち行列内に少数のパケットしか存在しない単純化されたイングレス１０２を描いているが、Ｑ長さの概念は示されている。Ｑ長さは、ある特定の瞬間に所定の待ち行列内に格納されているデータ・サイズの尺度であり、よってバイトで測定されることが可能である。但し、図３Ｂに示す実施形態では、パケットのバッファに使用可能な合計長さ（容量）は各待ち行列で同じであるが、他の実施形態では、これらの長さは変わってもよいことに留意されたい。
【００２２】
２．システム・オペレーションの概説
図４Ａは、本発明のオペレーションの一実施形態を示すフローチャートである。概して本発明は、各待ち行列の保証レートを上記待ち行列の待ち行列メトリック情報を基礎として計算することと（ブロック２００）、所定のタイムスロットの間の各待ち行列の優先順位を上記待ち行列の保証レートを基礎として計算することと（ブロック２０２）、所定のタイムスロットの間にサービスする待ち行列を上記各待ち行列の優先順位を基礎として決定すること（ブロック２０４）を含む。
【００２３】
本明細書を通じて使用されるように、「保証レート」は概して、システムにおいて帯域幅を割り当てるために使用される待ち行列の更新レートを指す。このような保証レートの単位は、例えばＧｂｐｓであってもよい。保証レートは、各待ち行列に関連づけられるクレジット値が時間に伴って増大するレートを制御するために使用されることから各待ち行列が利用できる帯域幅を制御する。各イングレスの各待ち行列はそれに関連づけられるクレジット値を有し、上記待ち行列が所定のタイムスロットの間にサービスされなければ、各待ち行列の保証レートは上記待ち行列のクレジット値を上げるために使用されることが可能である。次にクレジット値は、システム内の各待ち行列の優先順位を更新するために使用されることが可能である。本明細書を通じて使用されるように、「優先順位」は、データ転送のためにタイムスロットの間に所定の待ち行列が所定のエグレスとの通信を希望することを指す。従って、概して各タイムスロットの間にサービスされるべき待ち行列は、各タイムスロットの間に各待ち行列について計算される優先順位を基礎として決定される。例えば、所定のエグレスと通信するための高い優先順位を有する待ち行列は、その同じエグレスと通信するための下位の優先順位を有する待ち行列より前にサービスされる。図２の共有リンク１０８は、優先順位を基礎として、イングレス及びエグレス間の１対１のマッピングを割り当てるように各タイムスロットについて再設定される。従って、保証レートは、各待ち行列がサービスされる頻度、或いは待ち行列の部分集合がサービスされる頻度を間接的に制御する。
【００２４】
帯域幅アロケータ・モジュール１５０は、この実施形態では、システム１００内の各待ち行列の保証レートを計算するために使用される（図４Ａのブロック２００）。保証レートは、幾つかの方法により、待ち行列長さモジュール１６２または待ち行列マネージャ１１２から受信される何らかの待ち行列メトリック情報を使用して計算される。保証レートの計算に使用される待ち行列メトリック情報は、待ち行列のＱ長さ（即ちバイト数）または待ち行列へのデータの到着レート（即ち、秒当たりのバイト数）等の待ち行列に関する情報であるが、これらに限定されない。待ち行列マネージャ１１２は待ち行列へのデータの到着レート情報を計算し、または追跡することが可能であり、待ち行列長さモジュール１６２は待ち行列のカレント長さまたはサイズを計算することが可能である。保証レートの計算方法については、図５乃至７Ｂに関連して後に幾つか詳述する。概して、保証レートを計算するために、図３Ａの待ち行列長さモジュール１６２（または待ち行列マネージャ１１２）は対応するイングレス１０２の各待ち行列の待ち行列メトリック情報を測定し、これを帯域幅アロケータ・モジュール１５０へ送る。例えば図３Ａは、待ち行列が帯域幅アロケータ・モジュール１５０へ送られるＱ長さ５０を描いている。後述する帯域幅割当て方法を使用して、帯域幅アロケータ・モジュール１５０は次にシステム１００の各イングレス１０２の各待ち行列の保証レートを計算し、この保証レート５２を対応するイングレス１０２へ送る。これらの保証レートは周期的に（即ち必ずしも各タイムスロットではなく）計算されることが可能であり、次いで対応するイングレス１０２へ周期的に伝達される。
【００２５】
この実施形態では、各イングレス１０２のメータリング・モジュール１５４のメータリング更新モジュール１６０は、次に上記保証レートを使用してイングレス１０２内の各待ち行列のクレジット値を更新する。ある実施形態におけるメータリング更新モジュール１６０は各待ち行列のクレジット値を、共有リンク１０８を通したデータ転送のためのあらゆるタイムスロットの間に更新する。図３Ａは、帯域幅アロケータ・モジュール１５０からレジスタ・ファイル１５８を介して保証レート５２を受信し、次いで更新されたクレジット値５４をレジスタ・ファイル１５８へ送信するメータリング更新モジュール１６０を描いている。この実施形態では、クレジット値５４または上記待ち行列に関する他の情報は、各待ち行列のサービスの優先順位を計算するために使用される。クレジット値はメータリング更新モジュール１６０において、幾つかの方法に従って更新されることが可能である。概して、所定の待ち行列のクレジット値は各タイムスロット後に増加する。クレジット値の増加は待ち行列の対応する優先順位を上げ、よって上記待ち行列が最終的にサービスされるように幾つかのタイムスロットに渡って上記待ち行列の優先順位が増分される。この実施形態では、待ち行列が所定のタイムスロットの間にサービスされれば、上記待ち行列のクレジット値は、共有リンク１０８への接続がいつまでも保持されないように低減される（即ち、上記待ち行列の優先順位は下がる）。待ち行列のクレジット値の更新には幾つかの方法を使用可能であり、そのうちの一方法については後に図８に関連してさらに詳しく論じる。
【００２６】
この実施形態では、イングレス１０２のメータリング・モジュール１５４の優先順位計算モジュール１５６は、クレジット値または待ち行列に関する他の情報を使用して各待ち行列が共有リンク１０８を通してサービスされることを希望する優先順位を計算する（図４Ａのブロック２０２）。図３Ａは、レジスタ・ファイル１５８からイングレス１０２の待ち行列のクレジット値５４を受信し、次に優先順位５６を調停モジュール１５２へ送る優先順位計算モジュール１５６を描いている。ある実施形態では、各待ち行列の優先順位は各待ち行列のクレジット値と同値である可能性がある。但し他の実施形態では、優先順位は各待ち行列のクレジット値の縮尺版であり、また優先順位は、後に詳述するように、他の特徴に依存して単なる縮尺を超えて変更される場合もある。
【００２７】
この実施形態では、所定のイングレス１０２からの優先順位５６のあるものは、図３Ａに示すように調停モジュール１５２へ送られる。さらに、各エグレス１０４はそのＦＩＦＯの充足状態に関する情報を調停モジュール１５２へ送る。調停モジュール１５２は次に、所定のタイムスロットの間に各エグレス１０４へ接続されるイングレス１０２を決定する（図４Ａのブロック２０４）。調停モジュール１５２は、図３Ａで分るように出力５８を優先順位計算モジュール１５６へ送り返す。出力５８は、イングレス１０２が所定のタイムスロットの間にどのエグレス１０４へのアクセスを有するかを示す単なる指定であることが可能である。次にメータリング・モジュール１５４は、イングレス１０２が上記タイムスロットの間にアクセスを有するエグレス１０４を基礎として上記イングレス１０２内のどの待ち行列にサービスするかを決定することができる。
【００２８】
調停モジュール１５２における各エグレス１０４のためのイングレス１０２の選択は優先順位を基礎とし、この選択プロセスは調停と呼ばれることが可能である。概して、優先順位５６は、所定のタイムスロットの間にどのイングレス１０２をどのエグレス１０４へ接続するか、及びそのタイムスロットの間にイングレス内のどの待ち行列にサービスするかを決定する。ある実施形態では、タイムスロットの間に所定のエグレス１０４へ接続するものとして、最上位の優先順位を有する所定のエグレス１０４を希望している待ち行列を有するイングレス１０２が選ばれる。さらに、選択されたイングレス１０２内のエグレス１０４を希望しかつ最上位の優先順位を有する待ち行列は、イングレス１０２内の上記タイムスロット間にサービスされる待ち行列である。本発明の様々な実施形態において待ち行列の選択に使用される幾つかの方法については、さらに図９乃至１１に関連して後に論じる。何れにしても、イングレス１０２からエグレス１０４へのマッピングによるタイムスロットのための共有リンク１０の設定は、調停に従う。従って、命令（図示されていない）を含むメッセージは各タイムスロットで共有リンク１０８へ送られ、共有リンク１０８が生成すべきイングレス／エグレス間のマッピングが指示される。共有リンク１０８は次に、上記命令に従って上記タイムスロットのためのイングレス／エグレス間の接続を確立する。
【００２９】
本発明の一実施形態では、最優先レベルは、単一のタイムスロットより大きいパケットをその内部に含む待ち行列のために留保される。例えば図３Ｂは、パケット１７０が所定のタイムスロットより大きいサイズを有することを示している。本発明の一実施形態では、システム１００の共有リンク１０８上の接続は、単一のタイムスロットより大きいパケット全体が共有リンク１０８上で中断されることなく連続して転送され得るように十分な時間期間に渡って維持される。このようにして維持される接続は、パケットがイングレス１０２において複数のパケットにセグメント化されかつパケット・セグメントが全て共有リンク１０８上で転送された後にエグレス１０４でリアッセンブルされる必要のないことを保証する。このようなシステムは、タイムスロットのサイズが適切な時間長に設定されることを許容することによって共有リンク１０８の活用度を最大化する。即ち、データ転送のためのタイムスロット・サイズは、共有リンク１０８の活用度を高くするに足る低レベルに設定される。それでもこの本発明方法は、単一のタイムスロットより大きいパケットを転送すべく共有リンク１０８上の１つまたは複数の接続を維持することによってセグメント化及びリアッセンブルの問題を解決する。
【００３０】
本発明のシステムは、部分パケット変数を使用して、大きすぎて単一のタイムスロットでは共有リンクを通して転送できないようなパケットを示すことができる。このような部分パケット変数は、待ち行列内のサービスされるべきカレント・パケットが大きすぎて単一のタイムスロットではサービスされ得ないことと、パケット全体を転送するに足る数のタイムスロットについて共有リンク１０８上に接続が維持されるべきであることを表示する。従って、所定の時間にこのような部分パケット変数が待ち行列に関連づけられれば、その待ち行列には最優先レベルが割り当てられることが可能である。
【００３１】
図３Ａの待ち行列マネージャ１１２は概して待ち行列にサービスし、所定のタイムスロットの間に発生するイベントに依存して待ち行列の状態に関する更新されたメッセージを送る。例えば待ち行列マネージャ１１２は、待ち行列からパケットが送られるとメータリング更新モジュール１６０へデキュー通知６４を送る。これは、デキュー・イベントである。また待ち行列マネージャ１１２は、パケットが受信されて所定の待ち行列内へバッファされるとメータリング更新モジュール１６０へエンキュー通知６２を送る。これは、エンキュー・イベントである。図３Ａは、優先順位計算モジュール１５６から待ち行列マネージャ１１２へ送られるデキュー要求６０も描いている。このデキュー要求６０は、調停プロセスを基礎として所定のタイムスロットにおいてサービスされるべき待ち行列を指示する。従って待ち行列マネージャ１１２は、デキュー要求６０に従って上記待ち行列にサービスすることができる。
【００３２】
従って、待ち行列マネージャ１１２によって発生されるイベントは先に論じた一連の計算を開始し、待ち行列のクレジット値及びおそらくはＱ長さを更新させる。次に、上記クレジット値または上記待ち行列に関連づけられる部分パケット変数等の他の情報を基礎として各待ち行列の優先順位が決定される。各イングレスが各エグレスを希望する優先順位は、優先順位計算モジュール１５６及び調停モジュール１５２を使用して決定される。これらの優先順位は、概して、所定のタイムスロットに関して各エグレスに関連づけられるべきイングレスを決定する。
【００３３】
メータリング・モジュール１５４及び待ち行列マネージャ１１２の機能がハードウェアにおいて実行される実施形態では、約２００ナノ秒のタイムスロット・サイズの場合、先に述べた機能のタイミングは下記のようなものである可能性がある。リンク１０８の調停及び設定は、共に一定のタイムスロットを基礎として実行される。但し好適には、リンク１０８の調停は、システムにおける待ち時間に起因して少数のタイムスロット分だけ設定に先行する。従って、調停モジュール１５２はタイムスロットの最初の約１００ナノ秒間で調停を実行することが可能であり、次に各イングレス１０２へ、特定のタイムスロットでそれが通信するエグレス１０４を表示するメッセージを送信することができる。上記送信は、メッセージの送信後約３００乃至５００ナノ秒で発生することが可能である。次に各イングレス１０２は、アービタ・チップ１０６に更新された優先順位情報で応答する。さらに、各エグレス１０４はそのＦＩＦＯの充足状態に関する情報を送ることができる。例えば図２は、このような充足状態情報を送ることができるエグレス１０４とアービタ・チップ１０６との接続を描いている。従って、リンク１０８及びパケット転送の実際の設定は、イングレスのためのエグレスを含むメッセージがイングレス１０２によって受信された後、短時間で（この実施形態では３００乃至５００ナノ秒後）発生する。
【００３４】
本発明の一実施形態では、各待ち行列の優先順位はあらゆるタイムスロットで更新され、各待ち行列の保証レートはこれより低い頻度で更新される。例えば、保証レートは１００個のタイムスロット毎に更新されることが可能である。システムのＱｏＳ保証は２つ以上のタイムスロットより成る何らかの識別可能な時間期間に渡って決定され、よって保証レートを使用して制御される帯域幅割当ては、１つの、または数個のタイムスロットではなく平均して所定の複数のタイムスロットに渡って十分なものである必要がある。
【００３５】
図３Ａは、本発明の一実施形態によるオペレーションの間にシステム１００のモジュール間を流れるデータを描いている。データは、先に記述した情報を表すメッセージまたは信号である。先に述べたように、モジュール間で送信されるメッセージは先行タイムスロットにおいて送られた情報からの更新情報しか包含せず、よって二重のデータ転送が排除されかつモジュール間を転送される情報の量が低減される。さらに、イングレス１０２からアービタ・チップ１０６へは、図３Ａに示すような別々のメッセージではなく、Ｑ長さ５０及び優先順位５６を含む単一のメッセージが送られる。さらに、アービタ・チップ１０６からイングレス１０２へは、図３Ａに示すような別々のメッセージではなく、出力エグレス５８及び更新された保証レート５２を含む単一のメッセージが送信され得る。
【００３６】
図４Ｂは、本発明の上記オペレーションの一実施形態を再考するために図４Ａをさらに詳しく示したフローチャートである。この実施形態では、帯域幅アロケータ１５０はブロック４０２でＱ長さ情報を受信する。ブロック４０４では、帯域幅アロケータ１５０は待ち行列の保証レートを決定し、これらの保証レートをイングレス・チップ１０２へ送る。この実施形態では、各待ち行列の保証レートは帯域幅アロケータ１５０において計算され、１００個のタイムスロット毎に一度イングレス・チップ１０２へ送られてもよい。ブロック４０６において、メータリング更新モジュール１６０は上記各待ち行列の保証レートを使用して上記待ち行列のクレジット値を更新する。この実施形態では、クレジット値のこの更新はあらゆるタイムスロットで発生する場合もある。ブロック４０８では、優先順位計算モジュール１５６は上記クレジット値または部分パケットが存在するかどうか等の上記待ち行列に関する他の情報を基礎として優先順位を計算する。この優先順位の計算は、あらゆるタイムスロットで発生する場合もある。ブロック４１０において、優先順位計算モジュール１５６はイングレスがシステムの各エグレスとの通信を希望する優先順位を決定し、または他の実施形態では、優先順位計算モジュール１５６は各エグレスについて最も高い優先順位を有する可能性のある複数の待ち行列を選択する。何れにしても、調停モジュール１５２にはこれらの優先順位を表示する情報が送られる。この行為は、各タイムスロットで発生することが可能である。ブロック４１２では、調停モジュール１５２は上記優先順位を使用して各エグレスのためのイングレスを決定し、このような決定はあらゆるタイムスロットで実行される。ブロック４１４では、優先順位計算モジュール１５６はイングレスのために選択されたエグレスに従ってあらゆるタイムスロットで待ち行列マネージャ１１２へデキュー要求を送り、待ち行列マネージャは適切な待ち行列にサービスを供給する。ブロック４１６では、待ち行列マネージャ１１２はメータリング更新モジュール１６０へエンキュー／デキュー情報を送り、ブロック４０２におけるプロセスの開始が繰り返される。
【００３７】
Ｂ．保証レートの計算方法
システム１００のイングレス１０２の待ち行列に関する保証レートの計算に際しては、本発明の範囲内で幾つかの方法を使用可能である。概して、保証レートは帯域幅を割り当てる、故にＱｏＳ保証を維持するために使用される。ここでは、帯域幅を保証する４方法、即ち（１）単一の待ち行列について帯域幅を保証する方法、（２）エグレスについて帯域幅を保証する方法、（３）イングレスについて帯域幅を保証する方法及び（４）待ち行列グループについて帯域幅を保証する方法について論じる。図５は、帯域幅を保証するこれらの方法のうちの最初の３方法を描いたものである。
【００３８】
１．待ち行列の帯域幅の保証
イングレス内の特定の待ち行列Ｑの帯域幅を保証するために、上記待ち行列の保証レートは、幾つかのタイムスロットに関して一定のままであることが可能な適切な値ｇｑに設定される。このような定値ｇｑは、待ち行列へ入るフローが少なくともｇｑに等しい到着レートを有するという条件で、任意の妥当な長い時間期間に渡って上記待ち行列が取得する平均帯域幅はｇｑであることを保証する。例えば、ある例では、０．２５Ｇｂｐｓの帯域幅レートを妥当に長い時間期間に渡って待ち行列へ割り当てるために、値ｇｑは０．２５Ｇｂｐｓに設定されることが可能である。図５は、ブロック５０２における値ｇｑの設定行為を描いている。
【００３９】
ハードウェアにおいて保証レートを計算する一実施形態では、帯域幅アロケータ・モジュール１５０は単に、任意の所定の待ち行列に関して帯域幅を保証する適切な値をレート・レジスタに設定する。帯域幅アロケータ・モジュール１５０はレートの値ｇｑを特定の待ち行列の到着レート以下であるように限定することが可能であり、これにより、実行待ちの待ち行列が不当に大きいクレジットを蓄積して帯域幅を浪費する可能性のないことが保証される。
【００４０】
２．エグレスにおける帯域幅の保証
図６Ａは、特定のエグレスＥ１の帯域幅を保証する一実施形態を例示している。このような実施形態では、単一のエグレスＥ１の帯域幅は、任意の１つまたは複数のイングレスＩ１、Ｉ２からのパケットがエグレスＥ１へ送信され得るように保証される。図６ＡのイングレスＩ１は３つの待ち行列、即ち待ち行列Ｑ１、Ｑ２、Ｑ３を含み、各待ち行列は所定のＣＯＳ及び所定のエグレスに関連づけられる。例えば、この実施形態において、パケットは、パケットのＣＯＳだけでなく、パケットの宛先であるエグレスにも依存して待ち行列内にバッファされる。例えば、図６Ａの待ち行列Ｑ１はエグレスＥ１に関連づけられ、かつＣＯＳ１を有する。待ち行列Ｑ２はエグレスＥ２に関連づけられてＣＯＳ１を有し、待ち行列Ｑ３はエグレスＥ３に関連づけられてＣＯＳ３を有する。イングレスＩ２及びＩ３も同様に、イングレスＩ１内の待ち行列と同じ関係を有する３つの待ち行列Ｑ１、Ｑ２、Ｑ３でセットアップされる。
【００４１】
本発明のこの実施形態では、保証レートを計算するために、同じエグレスＥ１に関連づけられかつ同じＣＯＳを有する待ち行列は帯域幅アロケータ・モジュール１５０へＱ長さを伝達する。例えば図６Ａでは、イングレスＩ１、Ｉ２及びＩ３における待ち行列Ｑ１は各々、帯域幅アロケータ・モジュール１５０へＱ長さを伝達する。次に、これらの３待ち行列の保証レートが１つの部分集合またはグループとして決定される。上記待ち行列の保証レートを決定するために、エグレスｊ（即ちエグレスＥ１、Ｅ２またはＥ３）へと方向づけられているイングレスｉ（即ちイングレスＩ１、Ｉ２またはＩ３）における待ち行列Ｑの保証レートをｇij,qで表す。このレートｇij,qは、時間と共に変化することが可能である。本方法は、何らかのエグレスｊについて一定の時間期間に渡って平均されるＦj,q＝Σi:inputsｇij,q(t)に等しい帯域幅を保証することにより、エグレス・リンクの帯域幅を保証することができる。この例では、ｉは全てのイングレスまたはイングレスの部分集合に渡って変わる可能性がある。各ｇij,q(t)は、時間ｔにおいてエグレスｊに方向づけられているデータを有する関連の待ち行列Ｑへ割り当てられる、かつイングレスｉの各々に、もしあれば各待ち行列Ｑを含む帯域幅に対応する。本システムは、Ｆj,qが任意の所定時間に異なるイングレス上へ配分される（即ち、各イングレス内の待ち行列Ｑに割り当てられる）エグレス帯域幅に値することを保証する。
【００４２】
イングレスｉにおける、エグレスｊに方向づけられている待ち行列ＱのＱ長さは、Ｌij,q(t)で表すことができる。これらのＱ長さの値は、周期的に帯域幅アロケータ・モジュール１５０へ伝達される。Ｆj,qがエグレスｊにおいて待ち行列Ｑに対応するＣＯＳに関して保証される帯域幅であれば、保証レートｇij,q(t)はＦj,q／Ｎとなるように初期設定されることが可能である。但し、Ｎはこのような待ち行列Ｑを有するイングレスの数である（この実施形態では、各イングレス内に存在する上記エグレス向けでありかつＣＯＳを有する待ち行列は１つであるが、他の実施形態では上記エグレス向けのデータを有しかつＣＯＳを有する２つ以上の待ち行列Ｑを使用可能である）。保証レートｇij,q(t)は、後続のタイムスロットにおいて測定されるＱ長さＬij,q(t)に依存して、下記のようにリセットまたは再計算されることが可能である。
【００４３】
全てのｉについて、
2007512719.tif 000003
【００４４】
この例における入力は、イングレスの数Ｎである。Σk:inputsＬkj,q(t)が０（即ち、全ての待ち行列Ｑが空）であれば、保証レートｇij,q(t)は待ち行列Ｑを有する全てのイングレスｉについてＦj,q／Ｎに設定される。更新された各保証レートｇij,q(t)は、次に対応するイングレスｉへ伝達し返される。ハードウェアの実施形態では、待ち行列Ｑのレート・レジスタが次に更新される。ソフトウェアの実施形態では、待ち行列Ｑの保証レート変数ｇij,q(t)が更新される。
【００４５】
図６Ａの実施形態を使用する特定の一例として、イングレスＩ１における待ち行列Ｑ１のＱ長さＬij,q(t)が２００バイトであり、エグレスの帯域幅レートＦj,qが０．２Ｇｂｐｓでありかつ２０００バイトに等しい合計Ｑ長さΣk:inputsＬkj,q(t)を有する待ち行列を有する３つのイングレスが存在するものと仮定する。この例において、待ち行列Ｑ１の保証レートｇij,q(t)は、
2007512719.tif 000004
である。
【００４６】
図５は、ブロック５０４における検査でΣk:inputsＬkj,q(t)が０であれば、ブロック５０６において各イングレスの保証レートを等値に設定する行為を描いている。ブロック５０８は、Σk:inputsＬkj,q(t)が非ゼロであれば、各イングレスの保証レートを個々の計算値に設定する行為を描いている。
【００４７】
図６Ｂに描いた別の実施形態では、各イングレス内の２つ以上の待ち行列が所定のＣＯＳを有し、かつ同じエグレスへ向かうデータを有する。例えば、図６Ｂの待ち行列Ｑ１はエグレスＥ１に関連づけられ、かつＣＯＳ１を有する。待ち行列Ｑ５は、イングレスＩ１内でエグレスＥ１に関連づけられかつＣＯＳ１を有する第２の待ち行列である。同様にイングレスＩ２も、イングレスＩ１内の待ち行列と同じ連関を有する５つの待ち行列Ｑ１、Ｑ２、Ｑ３、Ｑ４、Ｑ５でセットアップされる。このような場合、上述の数Ｎは、所定のＣＯＳを有しかつ同一のエグレスを行先とする待ち行列の数になる。例えば図６Ｂでは、４つの待ち行列がＣＯＳ１を有しかつエグレスＥ１を行先としている（イングレスＩ１に２つ、及びイングレスＩ２に２つ）。このような実施形態では、Ｎ＝４（所望されるパラメータを有する待ち行列の数）であってＮ＝２（イングレスの数）ではない。
【００４８】
図６Ｂは、イングレスＩ１、Ｉ２が同じエグレスを行先とするが異なるＣＯＳを有するパケットを有する待ち行列を保有し得ることも示している。例えば図６Ｂは、待ち行列Ｑ１及び待ち行列Ｑ２が共にエグレスＥ１を行先とする（エグレスＥ１に方向づけられているパケットを有する）ものの、異なるＣＯＳ、即ち待ち行列Ｑ１ではＣＯＳ１及び待ち行列Ｑ２ではＣＯＳ２、を有することを示している。上述の計算には、同じＣＯＳを有する待ち行列からの情報のみが使用される。従って、図６Ｂでは、ＣＯＳ１でエグレスＥ１を行先とする待ち行列の計算（Σk:inputsＬkj,q(t)）における入力の数Ｎは４、即ちイングレスＩ１及びＩ２の各々における待ち行列Ｑ１及びＱ５、である。各イングレスＩ１、Ｉ２における待ち行列Ｑ２は、異なるＣＯＳに起因して上述の計算には使用されない。従って、エグレスの出力帯域幅Ｆj,qはＣＯＳ１にも関連づけられ、別のエグレスの出力帯域幅の量がＣＯＳ２に関連づけられることが可能である。
【００４９】
上述の方法は、保証レートを計算するためにＱ長さを使用しているが、保証レートの計算には到着レートも使用され得ることは留意されるべきである。このような実施形態では、保証レートを計算するために、到着レート変数が上述のＱ長さ変数の方程式及び計算に代入される。このような実施形態では、到着レートの情報は、待ち行列マネージャ１１２（図３Ａ）からアービタ・チップ１０６へ送られることが可能である。
【００５０】
３．イングレスにおける帯域幅の保証
図７Ａは、特定のイングレスＩ１の帯域幅を保証する一実施形態を例示している。このような実施形態では、単一のイングレスＩ１の帯域幅は、イングレスＩ１内の待ち行列からのパケットがエグレスＥ１、Ｅ２、Ｅ３のうちの任意のものへ伝達され得るように保証される。図７ＡのイングレスＩ１は６つの待ち行列、即ち待ち行列Ｑ１、Ｑ２、Ｑ３、Ｑ４、Ｑ５、Ｑ６を含み、各待ち行列は所定のＣＯＳに関連づけられる。例えば、図７Ａの待ち行列Ｑ１はＣＯＳ１に関連づけられる。待ち行列Ｑ２はＣＯＳ２に関連づけられ、等々と続く。帯域幅を保証するこの実施形態では、各イングレスＩ１、Ｉ２、Ｉ３の待ち行列Ｑ１、Ｑ２、Ｑ３は単一のエグレスに関連づけられる必要はない。例えば、ＣＯＳ１を有する待ち行列Ｑ１は、システムの任意のエグレスに方向づけられているパケットを保有することが可能である。図７Ａは、待ち行列Ｑ１におけるエグレスＥ１を行先とするパケットを描いているが、待ち行列Ｑ１における次のパケットは異なるエグレスに方向づけられている可能性もある。しかしながら別の実施形態では、待ち行列Ｑは、待ち行列Ｑ内にバッファされるパケットの全てがそのエグレスに方向づけられるように所定のエグレスに関連づけられる場合もある。
【００５１】
この実施形態におけるシステム及び方法は、特定のイングレスの帯域幅を保証する。このケースでは、イングレスｉ（または所定のＣＯＳを有するイングレス内の待ち行列の部分集合）について何らかの時間ｔに渡って平均されるＥiq＝Σj:outputsｇij,q(t)に等しい帯域幅が保証される。この実施形態では、あるイングレスについてＥiqに等しい帯域幅が保証され、このような帯域幅Ｅiqは異なる複数のエグレスｊに渡って均一または不均一に配分されることが可能である。対応する待ち行列の保証レートｇij,q(t)は、特定の待ち行列が任意の所定時間において１つのエグレスに方向づけられているデータ・パケットを保有する場合もあれば保有しない場合もあることから、合計がＥiqになる定数には設定され得ない。図７Ａにおいて、全てＣＯＳ１を有する待ち行列Ｑ１、Ｑ３及びＱ５は帯域幅アロケータ・モジュール１５０へＱ長さを送り、次いでこれらの待ち行列の各々のレートがグループまたは部分集合として決定され、イングレスＩ１へ送り返される。
【００５２】
この実施形態では、保証レートは、エグレス帯域幅の実施形態の場合のようにＱ長さを基礎として設定される。Ｑ長さＬij,q(t)は、所定のイングレスＩ１におけるエグレスｊに対応する所定のＣＯＳにおける各待ち行列について決定される。この実施形態では、これらのＬij,q(t)は、エグレスの帯域幅を保証する方法の場合とは異なり、単一のイングレス内で局部的に利用可能であり得る。保証レートｇij,q(t)は、Ｅiq／Ｍに初期化されることが可能である。但し、Ｍは所定のＣＯＳを有する待ち行列の数である。ある実施形態では、単一のイングレス内に、各々が所定のエグレスに関連づけられかつ所定のＣＯＳを有する複数の待ち行列が存在することが可能である。別の実施形態では、１つのイングレス内に、所定のエグレスに関連づけられかつ所定のＣＯＳを有する単一の待ち行列Ｑしか存在することができない。さらに他の実施形態では、イングレス内の待ち行列は各々関連づけられたＣＯＳを有することが可能であるが、これらの待ち行列は特定のエグレスに関連づけられなくてもよい。何れにしても、保証レートｇij,q(t)は後続のタイムスロットにおけるＱ長さＬij,q(t)に依存して、下記のようにリセットまたは計算されることが可能である。
【００５３】
全てのｊについて、
2007512719.tif 000005
【００５４】
Σk:outputsＬik,q(t)が０であれば、ｇij,q(t)は全ての待ち行列についてＥiq／Ｍに設定される。更新された各保証レートｇij,q(t)は次に、対応するイングレスｉへ伝達し返される。ハードウェアの実施形態では、待ち行列Ｑのレート・レジスタが次に更新される。ソフトウェアの実施形態では、待ち行列Ｑの保証レート変数ｇij,q(t)が更新される。
【００５５】
図７Ａの実施形態に関する特定の一例として、Ｑ長さＬij,q(t)が１００バイトであり、イングレスの帯域幅レートが０．５ＧｂｐｓでありかつイングレスＩ１におけるＣＯＳ１を有する３つの待ち行列が１０００バイトに等しい合計Ｑ長さΣk:intputsＬik,q(t)を有するものと仮定する。この例において、待ち行列Ｑの保証レートｇij,q(t)は、
2007512719.tif 000006
である。
【００５６】
図７Ａを使用するこの例では、イングレスＩ１はＣＯＳ１を有する３つの待ち行列Ｑ１、Ｑ３、Ｑ５を有するが、各待ち行列Ｑ１、Ｑ３、Ｑ５は異なるエグレスに関連づけられる。例えば、待ち行列Ｑ１はエグレスＥ１に関連づけられ、待ち行列Ｑ３はエグレスＥ２に関連づけられる。但し、別の実施形態では、イングレスＩ１は同じＣＯＳを有しかつ同じエグレスに関連づけられる複数の待ち行列を有することも可能である。さらに別の実施形態では、イングレスＩ１内の待ち行列は特定のエグレスに関連づけられなくてもよいが、関連のＣＯＳを保有してもよい。
【００５７】
図５は、ブロック５１０で検査されたΣk:outputsＬik,q(t)が０であれば、ブロック５１２において各エグレスの保証レートを等値に設定する行為を描いている。ブロック５１４は、Σk:intputsＬik,q(t)が非ゼロであれば、各待ち行列の保証レートを個々の計算値に設定する行為を描いている。
【００５８】
上述の方法は、保証レートを計算するためにＱ長さを使用しているが、保証レートの計算には到着レートも使用され得ることは留意されるべきである。このような実施形態では、保証レートを計算するために、到着レート変数が上述のＱ長さ変数の方程式及び計算に代入される。このような実施形態では、到着レートの情報は、待ち行列マネージャ１１２（図３Ａ）からアービタ・チップ１０６へ送られることが可能である。
【００５９】
４．待ち行列グループの帯域幅の保証
図７Ｂは、任意の待ち行列グループであることが可能な待ち行列グループの帯域幅を保証する一実施形態を例示している。このような実施形態では、待ち行列が異なるイングレス内に存在しかつ異なるエグレスに方向づけられているパケットを有する可能性があるような待ち行列グループの帯域幅を保証することができる。さらに、グループ内の待ち行列は同じＣＯＳを有する場合も、異なるＣＯＳを有する場合もある。帯域幅の合計量は、待ち行列のＱ長さを基礎として、または他の実施形態ではデータの待ち行列までの到着レートを基礎としてこれらの待ち行列に分配されることが可能である。
【００６０】
この実施形態の一例として図７Ｂを参照すると、帯域幅が保証される待ち行列グループは、イングレスＩ１における待ち行列Ｑ１及びＱ３と、イングレスＩ２における待ち行列Ｑ１、Ｑ４及びＱ６とを含む。このグループにおける待ち行列は同じエグレスを行先とせず、同じＣＯＳを保有しない。例えば、イングレスＩ１における待ち行列Ｑ１はエグレスＥ１のポート１を行先としかつＣＯＳ１を有するデータを含み、イングレスＩ１における待ち行列Ｑ３はエグレスＥ２のポート１を行先としかつＣＯＳ３を有するデータを含む。イングレスＩ２における待ち行列Ｑ１はエグレスＥ１のポート１を行先としかつＣＯＳ１を有するデータを含む。同じく上記待ち行列グループ内に存在するイングレスＩ２における待ち行列Ｑ４及びＱ６も、この実施形態では任意の特徴を有する。
【００６１】
本発明のこの実施形態では、保証レートを計算するために、任意の待ち行列グループに関連づけられる待ち行列は帯域幅アロケータ・モジュール１５０へＱ長さを伝達する。例えば図７Ｂでは、イングレスＩ１における待ち行列Ｑ１及びＱ３及びイングレスＩ２における待ち行列Ｑ１、Ｑ４及びＱ６は各々、帯域幅アロケータ・モジュール１５０へＱ長さを伝達する。次に、これらの５待ち行列の保証レートが１つの部分集合またはグループとして決定される。各待ち行列の保証レートを決定するために、Ｎ個の待ち行列より成るグループにおける待ち行列Ｑの保証レートをｇiqで表す。このレートｇiqは、時間と共に変化することが可能である。本方法は、一定の時間期間に渡って平均されるＦARB＝Σi:intputsｇiq(t)に等しい帯域幅を保証することにより、待ち行列グループの帯域幅を保証することができる。この例では、ｉはＮ個の待ち行列より成るグループにおける待ち行列の各々に渡って変わる。各ｇiq(t)は、時間ｔにおいて関連の待ち行列Ｑへ割り当てられる帯域幅に対応する。本システムは、ＦARBが任意の所定時間にＮ個の待ち行列より成るグループにおける異なる待ち行列上へ配分される帯域幅に値することを保証する。
【００６２】
Ｎ個の待ち行列より成るグループにおける待ち行列ＱのＱ長さは、Ｌiq(t)で表すことができる。これらのＱ長さの値は、周期的に帯域幅アロケータ・モジュール１５０へ伝達される。ＦARBがＮ個の待ち行列より成るグループに関して保証される帯域幅であれば、保証レートｇiq(t)）はＦARB／Ｎとなるように初期設定されることが可能である。但し、Ｎは待ち行列グループにおける待ち行列の数である。保証レートｇiq(t)は、後続のタイムスロットにおいて測定されるＱ長さＬiq(t)に依存して、下記のようにリセットまたは再計算されることが可能である。
【００６３】
各待ち行列について、
2007512719.tif 000007
【００６４】
この例における入力は、グループ内の待ち行列の数Ｎに渡って変わる。Σi:intputsＬiq(t)が０（即ち、グループ内の全ての待ち行列Ｑが空）であれば、保証レートｇiq(t)はグループ内の全ての待ち行列についてＦARB／Ｎに設定される。更新された各保証レートｇiq(t)は次に、図７Ｂが描くように待ち行列に対応するイングレスへ伝達し返される。ハードウェアの実施形態では、待ち行列Ｑのレート・レジスタが次に更新される。ソフトウェアの実施形態では、待ち行列Ｑの保証レート変数ｇiq(t)が更新される。
【００６５】
図７Ｂの実施形態を使用する特定の一例として、イングレスＩ１における待ち行列Ｑ１のＱ長さＬiq(t)が８００バイトであり、待ち行列グループの帯域幅レートＦARBが０．８Ｇｂｐｓでありかつ上記グループには２０００バイトに等しい合計Ｑ長さΣi:intputsＬiq(t)を有する５つの待ち行列が存在するものと仮定する。この例において、イングレスＩ１における待ち行列Ｑ１の保証レートｇiq(t)は、
2007512719.tif 000008
である。
【００６６】
上述の方法は、保証レートを計算するためにＱ長さを使用しているが、保証レートの計算には到着レートも使用され得ることは留意されるべきである。このような実施形態では、保証レートを計算するために、到着レート変数が上述のＱ長さ変数の方程式及び計算に代入される。このような実施形態では、到着レートの情報は、待ち行列マネージャ１１２（図３Ａ）からアービタ・チップ１０６へ送られることが可能である。
【００６７】
Ｃ．クレジット値の更新方法
図８には、本発明の一実施形態による、所定の待ち行列のクレジット値を更新するための一方法がブロック形式で描かれている。先に述べたように、サービスされない待ち行列のクレジット値は概して各タイムスロット後に増加し、よってこれらの待ち行列の優先順位は上がる。同様に、サービスされる待ち行列はそれがサービスされるタイムスロット後には低減された関連のクレジット値を有し、よってその待ち行列の優先順位は下がる。ある実施形態では、本発明のオペレーションより前の各クレジット値の初期値は０であることが可能である。イングレスの各待ち行列のクレジット値は、概してタイムスロット毎に更新される。従って、１つの待ち行列がサービスされた後、クレジット値はそのカレント値（最初は０であるが、オペレーションの開始後、クレジット値のカレント値は大規模な正の数または負の数になる可能性がある）から減らされる可能性がある。クレジット値は、メータリング・モジュール１５４のメータリング更新モジュール１６０において、帯域幅アロケータ・モジュール１５０から受信される待ち行列の保証レート５２を使用して更新されることが可能である。定常状態のシステムでは、全ての待ち行列のクレジット値は合計０になるが、これは、これらの待ち行列が平均して所望される帯域幅レートを受信していることを表す。
【００６８】
図８は、本発明の一実施形態において所定のタイムスロットの間にイングレス内の単一の待ち行列について発生し得る３つの可能イベント８００を描いている。発生する可能性のあるエンキュー・イベントは、データ・パケットが待ち行列に入ることを意味する。発生する可能性のあるデキュー・イベントは、待ち行列がサービスされてパケットが上記待ち行列から共有リンクへ送られたことを意味する。第３のイベントは増分イベントであり、この実施形態では各タイムスロットの間に発生する。単一のタイムスロットの間、１つの待ち行列について図８における３つのイベントの各々が発生する可能性がある。この実施形態における増分イベントの場合、クレジット値は、図８のブロック８０２に示すように待ち行列の保証レートをカレント・クレジット値へ加算することによって増分される。ブロック８０４及び８０６に示すように、新しいクレジット値が待ち行列の最大限度（上記待ち行列のＣＯＳを基礎とする可能性がある）より大きければ、クレジット値は上記待ち行列の最大限度にリセットされる。ある実施形態では、増分イベントは各タイムスロット間に発生し、よって各待ち行列は各タイムスロット後にその関連のクレジット値だけ増分される。
【００６９】
待ち行列のクレジット値の最大限度は、低いＣＯＳを有する待ち行列のクレジット値が大きくなりすぎないように防止する。従って、これらの待ち行列の優先順位もキャップされることが可能である。これは、低いＣＯＳを有する待ち行列がより大きいＣＯＳを有する待ち行列と同じレートでサービスされないことを保証する。
【００７０】
イベントがデキュー・イベントであれば、この実施形態では待ち行列のＱ長さが小さくなり、よって待ち行列のＱ長さは、ブロック８１０に示すように更新されることが可能である。サービス待ち行列の先頭には１つまたは複数の新しいパケットが入り、ブロック８１２に示すように上記１つまたは複数のパケットのサイズは更新されることが可能である。さらに、新しいパケットが所定のタイムスロットより大きければ、ブロック８１４に示すように部分パケット変数が更新される。部分パケット変数は、共有リンク１０８への通信が一旦開始されると、それは単一のタイムスロットより大きいパケットが中断されることなく共有リンク１０８を通して転送され得るようにその待ち行列に渡って持続されなければならないことを表示する。次に、待ち行列のクレジット値は、ブロック８１６に示すように減らされることが可能である。ある実施形態では、クレジット値は送られるパケット数（即ち、１つのタイムスロットの間に２つ以上のパケットが送られれば）、または上記タイムスロットの間に送られるバイト数の関数だけ減らされる。別の実施形態では、クレジット値は単一のタイムスロットにおいて送られることが可能なデータ量（即ちバイト数またはビット数）だけ減らされることが可能である。こうしてクレジット値は、帯域幅が他の待ち行列に配分し直され得るように適切に減らされる。この実施形態では、タイムスロット後は増分イベントも発生し、よってクレジット値はデキュー・イベントで（例えば）単一のタイムスロット間に送信され得るバイト数だけ減らされ、次に増分イベントで待ち行列の保証レート分が増分される。ブロック８１８における検査で更新されるクレジット値が、待ち行列のＣＯＳを基礎とすることが可能な待ち行列の最小限度より小さければ、クレジット値はブロック８２０で上記待ち行列の最小限度にリセットされる。
【００７１】
最低クレジット値は、所定のＣＯＳを有する待ち行列の優先順位が小さくなりすぎないことを保証するために使用される。これは、待ち行列が十分な頻度でサービスされないことを防止する。
【００７２】
イベントがエンキュー・イベントであれば、待ち行列のＱ長さがゼロであると表示されていたかどうかの決定が下される（ブロック８３０）。待ち行列のカレントＱ長さがゼロであれば、先行するタイムスロットの間には上記待ち行列内にパケットが存在していない。エンキュー・イベントの間、待ち行列にはパケットが入っていることから、上記待ち行列のパケット・サイズは、上記待ち行列の部分パケット変数と共に更新される必要がある（ブロック８３２及び８３４）。Ｑ長さが非ゼロであれば、上記待ち行列の先頭にパケットが存在し（かつ先行するタイムスロットにも存在していた）、パケット・サイズ及び部分パケット変数は先行するタイムスロットの間に既に設定されている。図８のブロック８３６は、エンキューされるデータ・パケットを基礎としてＱ長さを更新する行為を表示している。増分イベントは、デキュー・イベントがそうである可能性があると同様に、エンキュー・イベントと同じタイムスロットの間に発生することが可能である。
【００７３】
Ｄ．待ち行列優先順位の決定方法
待ち行列のクレジット値が更新された後、各イングレスにおける各待ち行列のエグレスとの接続の必要性を表示する優先順位が決定される。先に説明しかつ後に詳述する通り、これらの優先順位はイングレスとエグレスとの間の共有リンク１０８のマッピングを計算するために使用されることが可能である。
【００７４】
ある実施形態では、待ち行列の優先順位は０から１５までの１６のポイント・レベルでスケーリングされることが可能である。この実施形態では、待ち行列の優先順位はこのスケーリング・レベルで待ち行列のクレジット値から決定される。例えば、所定の待ち行列のクレジット値が１Ｇｂｐｓのレベルにまで増えていれば、上記待ち行列の優先順位はレベル５に設定されることが可能であり、第２の待ち行列のクレジット値が２Ｇｂｐｓであれば、第２の待ち行列の優先順位はレベル１０に設定されることが可能である。この実施形態では、負のクレジット値は０または１等の低い優先順位に設定される。このような実施形態では、最大の優先順位を有する待ち行列は所定のタイムスロットの間にサービスされる待ち行列である。クレジット値の優先順位への変換は、イングレス１０２からアービタ・チップ１０６へ送られるデータ量を最小限に抑えることができる。例えば、クレジット値の大きさは１，０００，０００，０００を超える場合があるが、このようなクレジットに相当する優先順位は１０にすることができる。優先順位が１６のポイント・スケールでスケーリングされれば、ハードウェアの実施形態では優先順位に４ビット・レジスタの使用が可能である。
【００７５】
クレジット値の更新に関連して先に述べたように、所定の待ち行列のクレジット値は上記待ち行列のＣＯＳに依存して制限されることが可能である。例えば、ＣＯＳ１を有する待ち行列は、１６ポイント・スケールでの最小優先レベル５に相当し得る所定の最小クレジット値に制限されることが可能である。同様に、ＣＯＳ８を有する待ち行列は、１６ポイント・スケールでの最大優先レベル１２に相当し得る所定の最大クレジット値に制限されることが可能である。
【００７６】
０乃至１５の１６ポイント優先順位スケールを使用する実施形態では、優先順位０は空の待ち行列のために留保され、よって共有リンク１０８上で転送するパケットを保有しない。同様に、最大優先順位１５は部分パケットのために留保されることが可能である。先に説明したように、パケットが大きすぎて共有リンク１０８上を単一のタイムスロットで転送することができなければ、上記待ち行列に部分パケット変数が関連づけられる。上記パケットを有する待ち行列が最終的に共有リンク１０８への接続を達成すると、上記待ち行列が引き続き共有リンク１０８へ接続されかつ上記パケットがセグメント化及びリアッセンブルなしに共有リンク１０８上で継続して転送され得るように、その待ち行列には次のタイムスロットにおいて最大の優先順位が設定される。
【００７７】
下記の表１は、待ち行列のクレジット値から優先順位への変換の別の実施形態を示す。この実施形態では、クレジット値から優先順位への変換はクレジット値から優先順位への単一のスケーリングを超えるスケーリングを包含する可能性がある。他に、待ち行列が空であるかどうか、及び待ち行列が過剰にサービスされているかどうか等の待ち行列情報も考慮されることが可能である。従って、表１は、幾つかの条件及びこれらの条件のうちの１つが満たされれば待ち行列に割り当てることができる優先順位を含んでいる。この実施形態では、各待ち行列は、先に述べたようにそれに関連づけられるクレジット値Ｃ（ｑ）を有する。スケーリング係数Ｓは、より大きいクレジット値をより小さい優先順位へスケーリングするために使用される定数である。
【００７８】
【表１】
2007512719.tif 000009
【００７９】
表１における条件１が示すように、この実施形態では、待ち行列におけるパケットが先行するタイムスロットからの部分パケットであれば、待ち行列の優先順位は最大優先順位ＭＡＸＰＲＩに設定される。０乃至１５の１６ポイント・スケールでは、ＭＡＸＰＲＩは１５である。このようにＭＡＸＰＲＩを割り当てられる部分パケットは、ある実施形態ではそれに関連づけられる部分パケット変数を有する。逆に、空である待ち行列には、表１の条件５が示すように優先順位０が割り当てられる。これは、優先順位０を有する待ち行列はその所定のタイムスロットではサービスされないことを保証する最小の優先順位である。
【００８０】
表１の条件５は、当てはまれば優先順位０（または最小優先順位）を設定する第２の条件を有する。クレジット値Ｃ（ｑ）が待ち行列のシェーピング限界Ｓlimitより小さければ、優先順位は０に設定される。シェーピング限界Ｓlimitは、ある時間期間に渡って待ち行列が過大な帯域幅を受信しないように優先順位をスケーリングするために使用されるパラメータである。例えば、保証レートは待ち行列が受信すべき最小レートＦminである。これに対して最大レートＦmaxは、待ち行列が受信すべき最大レートであると言える。当然ながら、これらのレートが達成されるかどうかを決定するために、単一のタイムスロットを超える識別可能な時間長に渡って受信される帯域幅が測定されなければならない。例えば、５０マイクロ秒の時間期間が最小レートＦminを達成すべき時間期間である可能性があり、最大レートＦmaxは超過されるべきではない。例えば５０マイクロ秒の時間期間は、各々が５００ナノ秒である１００個のタイムスロットに等しい可能性がある。この実施形態では、シェーピング限界Ｓlimitは、
Ｓlimit＝（Ｆmin−Ｆmax）＊時間期間
となるように設定されることが可能である。
【００８１】
ＦminはＦmaxより小さくなることから、シェーピング限界Ｓlimitは概して負の数になる。クレジット値は、その待ち行列が最近サービスされ、よって上記待ち行列が既にその時間ポイントにおけるその保証された帯域幅より多くを受信している場合にのみ負になる。負のクレジット値の大きさが大きいほど、対応する待ち行列はより多くをサービスされていて、上記待ち行列はその保証された帯域幅をより多く超過している。このような場合には、表１の条件５が示すように、待ち行列の優先順位はシェーピング限界Ｓlimitを使用して０にされることが可能である。時間期間当たりのバイト数に変換されたクレジット値Ｃ（ｑ）がシェーピング限界Ｓlimitより小さければ、この実施形態では優先順位が０に設定され、よって上記待ち行列は後続のタイムスロットにおいてサービスされないことが保証される。変換されたクレジット値Ｃ（ｑ）がシェーピング限界Ｓlimitより小さければ、上記待ち行列は既にその時間期間に渡って許容される最大帯域幅を超過しており、故に優先順位は０に設定される。このようにして、待ち行列について達成されることが可能な最大帯域幅は、所定の時間期間に渡って制限されることが可能である。但し、ある時間期間に渡って待ち行列にその最大帯域幅を超過させることが所望されれば、上記待ち行列のクレジット値は、規模の大きい負のクレジット値が上記待ち行列に対する頻繁なサービスを防止しないように周期的に０に設定されることが可能である。
【００８２】
表１の条件２に関して言えば、イングレスは優先転送待ち行列である待ち行列によってセットアップされることが可能である。このような待ち行列は、クレジット値に関わらず上記イングレスの他の待ち行列より前にサービスされる待ち行列である。優先転送待ち行列は、イングレスにおいて、所定のパケットが可能な限り迅速に転送されることを保証するために使用されることが可能である。このような場合、パケットは優先転送待ち行列内にバッファされる。条件２に関して表１が示すように、このような優先転送待ち行列には、それがパケットを含んでいれば（即ち、上記待ち行列が空でなければ）優先順位ＭＡＸＰＲＩ−１が設定される。優先順位ＭＡＸＰＲＩ−１は、同じエグレスを希望する待ち行列が優先順位ＭＡＸＰＲＩを保有しない限り上記待ち行列がサービスされる可能性のあることを保証する。同様に、２つの待ち行列がＭＡＸＰＲＩ−１を有することがあるが、この場合は、後述するようにこれらの２待ち行列間の繋がりを断つ必要がある。ＭＡＸＰＲＩ−１は、０乃至１５の１６ポイント・スケールでは１４である。
【００８３】
表１の条件３は、クレジット値が優先順位にスケーリングされる典型的な条件を示している。概して、待ち行列が部分パケットを保有しなければ、上記待ち行列は優先転送待ち行列ではなく、かつ上記待ち行列のクレジット値Ｃ（ｑ）は負ではないため、上記待ち行列の優先順位は、上記待ち行列のクレジット値Ｃ（ｑ）をスケーリング係数Ｓで除することによって計算されることが可能である。優先順位はスケーリング係数で除したクレジット値Ｃ（ｑ）を四捨五入したものにすることが可能であり、よって数字６．４は四捨五入により優先順位６となる。スケーリング係数Ｓの使用は、線形スケーリングを含意する。但し、スケーリングが線形である必要はなく、非線形であってもよい。さらに、ルックアップ表または一連の「ｉｆ，ｔｈｅｎ」判定は、クレジット値を基礎として優先順位を決定するために使用されることが可能である。優先順位を確立されたスケール（０乃至１５スケール等）の限度内に維持するために、待ち行列の優先順位は、それが部分パケットを含んでいなければ最大レベルＭＡＸＰＲＩ−１に設定されることが可能である。従って、表１の条件３は、このような待ち行列の優先順位としてＭＡＸＰＲＩ−１またはＣ（ｑ）／Ｓの小さい方を取ることを指示している。
【００８４】
表１の条件４は、待ち行列が空でありかつ条件５が当てはまらなければ（即ち、クレジット値Ｃ（ｑ）がシェーピング限界Ｓlimitより小さくなければ）、待ち行列の優先順位は最小優先順位になることを示している。表１は、この最小優先順位を１であるとしている。当然ながら、待ち行列の優先順位は、条件３が示すようにクレジット値Ｃ（ｑ）が正であればより大きくなる可能性がある。但し、待ち行列が空でなく、しかも条件５が存在しなければ、条件４は最小優先順位が設定されることを示す。
【００８５】
待ち行列のクレジット値は、大幅に変わる可能性がある。これは、何千万である場合もあれば、何千万規模の負の量である場合もある。クレジット値から優先順位への変換の一例として、待ち行列の保証レートは０．０００５Ｇｂｐｓまたは毎秒５００，０００バイト（ｂｐｓ）であるものと仮定する。従って、待ち行列がサービスされないタイムスロットが経過する毎に、上記待ち行列に関連づけられるクレジット値は５００，０００ｂｐｓずつ増える。この例では、スケーリング係数Ｓは１，０００，０００である。従って、待ち行列のクレジット値が１２，０００，０００の値まで増えれば、上記待ち行列の優先順位は１２に設定される（上記待ち行列が優先転送待ち行列でなく、かつ上記待ち行列が部分パケットを含まないものと仮定した場合）。待ち行列のクレジット値が−５，０００，０００であれば、上記待ち行列の優先順位は１に設定される（表１の条件１、２または５に当てはまらない場合）。
【００８６】
Ｅ．待ち行列サービスの選択方法
各待ち行列の優先順位が決定されると、複数の優先順位を使用して、あるタイムスロットのイングレス及びエグレス間の共有リンク１０８上のマッピングが計算される。図９は、所定のタイムスロットの間にサービスされる待ち行列を選択する単純化された一実施形態を示す。図９は、その各々が４つの待ち行列を有する２つのイングレスＩ１、Ｉ２を描いている。各待ち行列Ｑ１、Ｑ２、Ｑ３、Ｑ４内には、待ち行列のＣＯＳ及び待ち行列の先頭におけるパケットが描かれている。待ち行列の先頭におけるパケットの各々は、任意の所定のタイムスロットの間に共有リンク１０８へのアクセスを求めて競合する。例えば図９では、エグレスＥ１に方向づけられているパケットが各待ち行列Ｑ１の先頭に存在し、エグレスＥ１に方向づけられているパケットが各待ち行列Ｑ２の先頭にも存在し、かつエグレスＥ２に方向づけられているパケットが待ち行列Ｑ３及び待ち行列Ｑ４の各々の先頭に存在する。
【００８７】
図９は、待ち行列Ｑ１、Ｑ２、Ｑ３、Ｑ４の各々について優先順位Ｐ１１、Ｐ１２、Ｐ２１及びＰ２２が計算済みであることを示している。ある実施形態では、優先順位の計算及び待ち行列の選択はタイムスロット毎に行われる。従って、任意の所定の瞬間における待ち行列先頭の（１つまたは複数の）パケットの優先順位は、所定のタイムスロットの間に共有リンク１０８へのアクセスを求めて競合するものは待ち行列の先頭における（１つまたは複数の）パケットだけであることから上記待ち行列自体の優先順位に似ている。従って、本明細書を通じて、ある待ち行列の瞬間的優先順位は、上記待ち行列の先頭における（１つまたは複数の）パケットの優先順位と同義と考えることができる。さらに、「瞬間的」である優先順位は、何らかの有限持続時間を有する時間における瞬間である所定のタイムスロットの優先順位を指すが、この優先順位は上記所定のタイムスロットに続くタイムスロットにおいて変わる場合もあれば、変わらない場合もある。
【００８８】
図９において、各々が４つの待ち行列Ｑ１、Ｑ２、Ｑ３、Ｑ４を有する２つのイングレスＩ１、Ｉ２は共有リンク１０８上でエグレスＥ１及びＥ２へ接続可能である。イングレス及びエグレス間のマッピングを選択するための２レベル・プロセスは、下記のように使用されることが可能である。第１のレベルでは、特定のエグレスを行先とする各イングレス内の各待ち行列グループについて、第１の瞬間的優先順位が選択される。この第１の選択レベルは、イングレス内部で優先順位計算モジュール１５６（図３Ａ）によって実行されることが可能である。例えば、図９のイングレスＩ１の場合、待ち行列Ｑ１及び待ち行列Ｑ２は共にエグレスＥ１を行先とするパケットを含んでいる。これらの２待ち行列Ｑ１、Ｑ２の優先順位を基礎として、これらの待ち行列のうちの第１の優先順位を有する一方が選択される。例えばある実施形態では、関連づけられるより高い優先順位を有する待ち行列が選択される。同様に、イングレスＩ２においても待ち行列Ｑ１及びＱ２は共にエグレスＥ１を行先とするパケットを含み、これらの２待ち行列から同じく第１の優先順位を有する待ち行列が選択される。待ち行列の選択に際しては、ある実施形態では待ち行列のＣＯＳは無視される点に留意することには意義がある。恐らく待ち行列のＣＯＳは、上記待ち行列の優先順位を決定する際に既に使用されている。また図９は、各イングレスＩ１、Ｉ２におけるエグレスＥ２に方向づけられているパケットを有する（第１の優先順位を有する）待ち行列の選択を描いている。図９に示すように、待ち行列の番号、イングレスの番号及び第１のレベルにおいて第１の優先順位を有する選択された各待ち行列の優先順位レベルの表示は、アービタ・チップ１０６の調停モジュール１５２へ送られる。
【００８９】
２レベル・プロセスにおける待ち行列選択の第２のレベルは、調停モジュール１５２内で発生する。この第２のレベルでは、イングレスＩ１、Ｉ２から受信された、第１の優先順位を有する待ち行列の部分集合から第２の優先順位を有する待ち行列が選択される。この第２の選択レベルは、各イングレスが各エグレスとの接続を希望する優先順位を再検討し、各イングレスのためのエグレスを選択する。一例として、図９を使用し、待ち行列Ｑ１がイングレスＩ１において優先順位Ｐ１１＝１２を有し、エグレスＥ１に関する第１の選択レベルにおいてイングレスＩ１内で選択されるものと仮定する。同様に、待ち行列Ｑ２がイングレスＩ２において優先順位Ｐ１２＝７を有し、エグレスＥ１に関する第１の選択レベルにおいてイングレスＩ２内で選択されるものと仮定する。これらの２つの待ち行列、優先順位及び所望されるエグレスは、調停モジュール１５２へ伝達される。待ち行列選択の第２のレベルでは、調停モジュール１５２がこれらの待ち行列（共にエグレスＥ１に方向づけられているパケットを含む）から第２の優先順位を有する待ち行列を選択する。例えば、ある実施形態では、上記エグレスに対して最も高い優先順位を有する待ち行列が選択される。例えばこの例では、イングレスＩ１からの待ち行列Ｑ１はエグレスＥ１に対してイングレスＩ２からの待ち行列Ｑ２よりも高い優先順位を有する（即ち、優先順位１２は優先順位７より高い）。従って、この第２のレベルが、所定のタイムスロットの間に各イングレスが接続されるエグレスを決定する。
【００９０】
従って、調停モジュール１５２ではＮ×Ｍ行列の優先順位が使用されることが可能である。但し、Ｎはイングレスの数であり、Ｍはエグレスの数である。例えば、調停モジュール１５２は各イングレスから、第１の選択レベルにおいて決定された、イングレスが各エグレスを希望する最大優先順位を受信することができる。次にこれらの優先順位は、第２の選択レベルにおいて各エグレスに対するイングレスを選択できるようにＮ×Ｍ行列を満たす。図９が描くように、各イングレスにはメッセージが送られ、そのイングレスに、もしあればそれがタイムスロットの間にアクセスを有することになるエグレスが通知される。イングレスは次に、決定されたエグレスのために自らが選択した待ち行列をパケット転送のための共有リンク１０８へ接続することができる。
【００９１】
この第２の待ち行列選択レベルの間は、単一のイングレスが、異なるエグレスに方向づけられていてこれらのエグレスに対して最も高い優先順位を有するパケットを有する２つ以上の待ち行列を含むことができる点に留意すべきである。実施形態によっては、あるイングレスの単一の待ち行列はタイムスロットの間に単一のエグレスにしか接続され得ないことから（本発明のこの実施形態における物理的限定）、共有リンク１０８へアクセスするためにこれらの待ち行列が選択されることはない。このような状況においては、イングレス内の複数の待ち行列から最も高い優先順位を有する待ち行列が選択され、その待ち行列に対するエグレスはその最も高い優先順位に従って決定される。これで上記イングレスは、少なくともそのタイムスロットに関しては他のエグレスとの接続に使用できなくなり、このイングレスからの優先順位は、このタイムスロットのための第２の選択レベルにおける残りの待ち行列選択に関して無視される可能性がある。図９からの一例として、イングレスＩ１からの待ち行列Ｑ１が優先順位Ｐ１１＝１２を有し、かつ調停モジュール１５２内の全てのイングレスでエグレスＥ１に対し最も高い優先順位であるものと仮定する。さらに、イングレスＩ１からの待ち行列Ｑ３が優先順位Ｐ２１＝１０を有し、かつ全てのイングレスでエグレスＥ２に対し最も高い優先順位であるものと仮定する。この例では、イングレスＩ１からの待ち行列Ｑ１はイングレスＩ１からの待ち行列Ｑ３より高い優先順位を有し（１２は１０より大きい）、故にエグレスＥ１とのアクセスにはイングレスＩ１からの待ち行列Ｑ１が選択されることになる。イングレスＩ１からの残りの待ち行列は、その所定のタイムスロットの間は共有リンク１０８への接続を利用することができなくなる。従って、イングレスＩ１からの待ち行列Ｑ３は上記所定のタイムスロットを利用できなくなり、エグレスＥ２に対しては異なるイングレスからの異なる待ち行列が選択されなければならなくなる。
【００９２】
１つのイングレスまたは調停モジュール１５２の何れかで２つ以上の優先順位が等しい場合には、繋がりを絶つ方法が必要とされる可能性がある。このようなタイ・ブレーキングは、ランダムな選択、ラウンドロビン選択を使用して、または他の実施形態ではサービスされる頻度が最も低い待ち行列を使用して実行されることが可能である。図９を使用する一例として、イングレスＩ１内の待ち行列Ｑ１がエグレスＥ１に対する優先順位Ｐ１１＝１０を有し、イングレスＩ１内の待ち行列Ｑ２も同じくエグレスＥ１に対する優先順位Ｐ１２＝１０を有するものと仮定する。サービスされる頻度が最も低い待ち行列を使用するタイ・ブレーキング手順では、最低頻度でサービスされている待ち行列Ｑ１またはＱ２が選ばれる。調停モジュール１５２では、エグレスに対するイングレスからの優先順位のタイ・ブレーキングに際して類似の手順が辿られる可能性がある。このような場合には、例えば、エグレスへ接続されている頻度が最も低いイングレスがサービスされ、または別の実施形態では、サービスされている頻度が最も低い何れかのイングレスが選択される。
【００９３】
図９は、各エグレスＥ１、Ｅ２内のＦＩＦＯの状態を含むメッセージが回線１１０ａ上でアービタ・チップ１０６へ送られる様を描いている。エグレスのＦＩＦＯの充足状態の示度である可能性のあるＦＩＦＯの状態は、調停モジュール１５２内でイングレスとエグレスとのマッピングに使用されることが可能である。待ち行列の優先順位は、上記待ち行列が通信相手として希望するエグレス内のＦＩＦＯが満杯であれば下げられる可能性がある。言い替えれば、エグレスのＦＩＦＯが満杯であれば、上記ＦＩＦＯにパケットは送られず、かつエグレスの全てのＦＩＦＯが満杯であれば、そのタイムスロットにおいて上記エグレスにパケットは送られず、そのエグレスを希望するパケットを有する待ち行列の優先順位は、上記待ち行列が次のタイムスロットの間に共有リンク１０８へのアクセスを取得しないように相応に下げられる。この実施形態では、満杯のＦＩＦＯを有するエグレスを行先とする待ち行列の優先順位はアービタ・チップ１０６上の調停モジュール１５２内で下げられることが可能であるが、別の実施形態では、ＦＩＦＯ状態もイングレスへ送信されることが可能である。別の実施形態では、満杯のＦＩＦＯを有するエグレスを行先とするパケットを有する待ち行列の優先順位は実際には下げられないが、代わりに、ＦＩＦＯ状態は単に、エグレスのＦＩＦＯが満杯である間は上記エグレスへパケットが送信されないことを保証するために使用されることが可能である。言い替えれば、満杯のＦＩＦＯを有するエグレスは無視され、かつ満杯であるエグレスのＦＩＦＯポートも無視される。この実施形態では、上記所定のタイムスロットの間にイングレスは満杯のＦＩＦＯを有するエグレスへのアクセスを取得しない。
【００９４】
サービスする待ち行列を選択するための別の実施形態は、イングレスとエグレスとの間のマッピングを選択するための３レベル・プロセスを包含することが可能である。３レベルの待ち行列選択プロセスは、データ・パケットが接続先として希望するエグレス及び上記エグレス内のポートを指定する場合に使用されることが可能である。例えば図９は、エグレスＥ１及びＥ２の各々の内部のポートＦＩＦＯ１及びＦＩＦＯ２を描いている。イングレス内のデータ・パケットは各々、通信先として希望する特定のエグレス及び上記エグレス内の特定のポートを指定することができる。
【００９５】
図１０は、３レベルの待ち行列選択プロセスにおける選択レベルを示す決定木のブロック図である。上記３レベルの待ち行列選択プロセスにおける第１の選択レベルは、各イングレス内で、各待ち行列グループから特定のエグレスの特定のポートを行先とする待ち行列を選択することを含む。言い替えれば、イングレス内の同じエグレスの同じポートを行先とする複数の待ち行列から第１の優先順位を有する待ち行列が選択され、上記第１の優先順位は上記待ち行列グループの最も高い優先順位である可能性がある。この選択は、異なるＣＯＳを有する複数の待ち行列の中からである場合もある。
【００９６】
図１０は、各々が４つの待ち行列を有する２つのイングレスＩ１、Ｉ２を示し、本図における各待ち行列は同じエグレスを行先とするパケットを有する。例えばイングレスＩ１内のブロック１００２は、待ち行列Ｑ１が優先順位Ｐ１を有していてエグレスＥ１のポート１との通信を求めていることを示す。同様に、ブロック１００４は、待ち行列Ｑ２が優先順位Ｐ２を有していて同じくエグレスＥ１のポート１との通信を求めていることを示す。待ち行列Ｑ１及びＱ２は、これらに関連づけられる異なるＣＯＳを有する可能性があることに留意されたい。例えば図１０は、待ち行列Ｑ１ではＣＯＳ１を、待ち行列Ｑ２ではＣＯＳ２を記している。この例では、第１の選択レベルにおいて、待ち行列Ｑ１または待ち行列Ｑ２（共に同じエグレスの同じポートを行先とする）がブロック１０１８で選択される。具体的にはこの実施形態の場合、この第１のレベルにおいて、最も高い優先順位を有する待ち行列が選択される。図１０では、これは待ち行列Ｑ１である（ブロック１０２６がこの選択を示している）。図１０は、イングレスＩ１において共に同じエグレスのポート２との通信を求めている待ち行列Ｑ３及び待ち行列Ｑ４（ブロック１０２０）から、ブロック１０２８において待ち行列Ｑ４が選択される同様の決定木を記している。図１０には、イングレスＩ２内の類似の決定木が記されている。具体的に言えば、イングレスＩ２内の第１のレベルにおいて、ブロック１０３０及び１０３２で待ち行列Ｑ２及びＱ３が選択される。
【００９７】
３レベル・プロセスにおける第２の選択レベルは、各イングレス内または調停モジュール１５２内で、第１のレベルにおいて選択された待ち行列の中から、即ち第１の優先順位を有する待ち行列から第２の優先順位を有する待ち行列を選択することを含む。言い替えれば、第２のレベルは、同じエグレスの異なるポートとの通信を求める待ち行列から各イングレスにつき１つの待ち行列を選択することを含む。この第２のレベルが調停モジュール１５２内で実行されれば、満杯のＦＩＦＯとの接続を求める待ち行列が選択されないように、ＦＩＦＯの充足状態を使用することができる。図１０は、イングレスＩ１については、第１のレベルで同じエグレスのポート１を行先とする待ち行列Ｑ１（ブロック１０２６）及びポート２を行先とする待ち行列Ｑ４（ブロック１０２８）が選択されたことを示している。本システムは次に、第２のレベルにおけるブロック１０３４で、これらの２待ち行列間で両者の待ち行列の優先順位を基礎とする選択を行い、図１０は、この第２のレベルにおけるブロック１０３８でポート１を行先とする待ち行列Ｑ１が選択されたことを記している。具体的に言えば、待ち行列Ｑ１は、待ち行列Ｑ１の優先順位Ｐ１が待ち行列Ｑ４の優先順位Ｐ４より高いという理由で選択される。同様に、第２のレベルにおけるブロック１０４０では、ブロック１０３６における待ち行列Ｑ２と待ち行列Ｑ３との比較からイングレスＩ２内の待ち行列Ｑ３が選択される。
【００９８】
３レベル・プロセスにおける第３にして最後のレベルは、各エグレスに対して、エグレスが２つ以上のイングレスへ接続されないように（第２の優先順位を有する待ち行列から）１つのイングレスを選択することを含む。このような第３のレベルは、各イングレスが各エグレスを希望する優先順位が存在し得るように調停モジュール１５２内で実行され、イングレス内では行われない。言い替えれば、第２の優先順位を有しかつ特定のエグレスを行先としている待ち行列の各グループについて、各エグレスが唯一つのイングレスへ接続されるような待ち行列が選択される。ある実施形態では、最も高い優先順位を優先順位待ち行列が選択される。
【００９９】
図１０を参照すると、第２のレベルにおけるブロック１０３８及び１０４０でイングレスＩ１内の待ち行列Ｑ１及びイングレスＩ２内の待ち行列Ｑ３が選択されている。選択は、ブロック１０４２において、これらの２待ち行列の優先順位（優先順位Ｐ１と優先順位Ｐ３）の比較を基礎として行われる。図１０では、この第３のレベルにおけるブロック１０４４で待ち行列Ｑ３が選択されている。待ち行列Ｑ３はイングレスＩ２内にあることから、この実施形態ではエグレスにイングレスＩ２が接続され、待ち行列Ｑ３がサービスされる待ち行列となる。図１０が記している手順は、２つのイングレスしか存在せず、記されている待ち行列は全て同じエグレスを行先とする単純化されたものである点は留意されるべきである。より一般的には、例えば第３の選択レベルでは、複数のエグレスの各々についてイングレスが選択される。また、単一のイングレスは２つ以上のエグレスに対する最も高い優先順位を有する２つ以上の待ち行列を保有することが可能であることから、このイングレスからはエグレスに通信するものとして最も高い優先順位を有する待ち行列が選択され、そのイングレス内の他の待ち行列は後続のタイムスロットにおける通信を得るために競合させられる。
【０１００】
また図１０は、３つの選択レベルの何れにおいても繋がりを断つために使用され得る情報を示している。図１０の各待ち行列は、最長未使用（ＬＲＵ）数を関連づけている。ＬＲＵ数は、その待ち行列が最後にサービスされた後の経過時間を示す変数であり、または概してサービスされた時点以降の上記待ち行列のサービス状態継続時間を示すスケーリングされた数である。ＬＲＵ数は、全体的な順序づけにおける待ち行列の位置を表す場合もある。但し、上記順序づけは、各待ち行列が最後にサービスされた時点からの増加する時間長を基礎としている。例えば、イングレスＩ１の待ち行列Ｑ１はＬＲＵ１を有し（ブロック１００２）、待ち行列Ｑ２はＬＲＵ２を有する（ブロック１００４）。ブロック１０１８において、待ち行列Ｑ１の優先順位Ｐ１が待ち行列Ｑ２の優先順位Ｐ２と同じであれば、これらのＬＲＵ数は、この選択レベルにおいて繋がりを断つために使用されることが可能である。従って、ブロック１０１８における待ち行列Ｑ１からのＬＲＵ１と待ち行列Ｑ２からのＬＲＵ２との比較により、待ち行列Ｑ１の方がサービスされた時点からの経過時間が長いことが示されれば、第１の選択レベルにおいて待ち行列Ｑ１が選択される。またＬＲＵ数は、調停モジュール１５２において最長未使用（ＬＲＵ）情報を使用して繋がりが断たれ得るように、第２のレベルで選択された各待ち行列及び優先順位と共にイングレスから調停モジュール１５２へ送られることが可能である。また調停モジュール１５２は、どのエグレス・ポートが選択されかつ各イングレスが各エグレスへいつ接続されたかに関するその固有のＬＲＵ情報を格納することができる。
【０１０１】
図１１は、本発明の一実施形態によるシステム１００のブロック図を使用する、待ち行列選択手順の別の実施形態を示す。本発明のこの実施形態では、イングレス内の１つの待ち行列が２つ以上のエグレスを行先とするパケットのために留保されることが可能である。本明細書では、このようなパケットを「マルチキャスト」パケットと称し、かつこれらのパケットを含む待ち行列を「マルチキャスト」キューと称する場合がある。例えば、図１１におけるイングレスＩ１、Ｉ２及びＩ３の各々における待ち行列Ｑ２は、エグレスＥ１、Ｅ２及びＥ３を行先としている。従って、待ち行列Ｑ２に入れられるパケットはエグレスＥ１、Ｅ２及びＥ３のうちの２つ以上を行先とすることになる。待ち行列Ｑ２における１つのパケットはエグレスＥ１、Ｅ２及びＥ３を行先とすることが可能であるが、待ち行列Ｑ２における別のパケットはエグレスＥ１及びＥ３を行先とすることが可能である。図１１の実施形態では、共有リンク１０８上で通信するために２つ以上のエグレスを行先とするパケットを有する待ち行列が選択されれば、その待ち行列は単一のタイムスロットの間に２つ以上のエグレスへ接続されることが可能である。従ってこの実施形態では、共有リンク１０８は、あるタイムスロットにおいて単一のイングレスを２つ以上のエグレスへマッピングすることができる。イングレスの数がエグレスの数と等しければ、上記イングレスのうちの少なくとも１つはそのタイムスロットにおいて共有リンク１０８へ接続されない。
【０１０２】
マルチキャスト・キューが使用される場合には、選択スキームが変わる可能性がある。ある実施形態では、イングレス内のマルチキャスト・パケットを有する待ち行列は、上記待ち行列が上記マルチキャスト・キューに関連づけられる各エグレスの最大優先順位を有する場合にのみ共有リンク１０８を通した通信のために選択される。例えばこのような実施形態では、図１１のイングレスＩ１における待ち行列Ｑ２はエグレスＥ１及びＥ２に対する最大優先順位を有する可能性があるが、待ち行列Ｑ２はエグレスＥ３に対する最大優先順位を保有しないことから、未だ共有リンク１０８を通した通信のためには選択されない。別の実施形態では、イングレスのエグレスへのマッピングに際して待ち行列の先頭にいるパケットしか検討されない。例えば、図１１のイングレスＩ１における待ち行列Ｑ２が上記待ち行列の先頭にエグレスＥ１及びＥ２のみを行先とするパケットを含んでいるとすると、待ち行列Ｑ２は、エグレスＥ３に対する待ち行列Ｑ２の優先順位が最大優先順位であるかどうかに関わらず、それがエグレスＥ１及びＥ２に対する最大優先順位を有していれば選択される。その他、それが単一のエグレスに対してのみ最大優先順位を保有していれば、マルチキャスト・キューが情報転送のために選択される実施形態も存在する可能性がある。但しこの実施形態は、待ち行列が各エグレスに対する最大優先順位を保有せず、複数のエグレスに対して選択されると思われることから、帯域幅を効率的に使用しない可能性がある。
【０１０３】
図１１を参照すれば、マルチキャスト・パケットを使用する待ち行列選択スキームの一例を説明することができる。図１１では、図９及び１０に関連して先に述べたように、２つまたは３つの選択ラウンドを使用可能である。３レベルの選択スキームでは、第１の選択レベルは各イングレス内で実行されることが可能であり、第２のレベルは各イングレス内または調停モジュール１５２内で実行されることが可能であり、第３の選択レベルは調停モジュール１５２内で実行されることが可能である。図１１の各イングレスＩ１、Ｉ２、Ｉ３は、同じタイプの待ち行列を含んでいる。各イングレス内での第１の選択レベルは、特定のエグレスの特定のポートを行先とする各待ち行列グループから１つの待ち行列を選ぶことができる。調停モジュール１５２内での第２の選択レベルは、各イングレスについて、同じエグレスの異なるポートとの通信を求める複数の待ち行列から１つの待ち行列を選ぶことを包含することが可能である。次に、調停モジュール１５２内で実行される第３にして最後の選択レベルは、各エグレスに対するイングレスの選択を含むことが可能である。
【０１０４】
図１１は、２レベルの選択スキームを描いている。図１１のイングレスＩ１の場合、待ち行列Ｑ１、Ｑ２及びＱ３は各々、エグレスＥ１を行先とするパケットを含むことが可能である。従って、最大優先順位を有する待ち行列は、これらの３待ち行列から選ばれる。同様に、待ち行列Ｑ２、Ｑ３及びＱ４はエグレスＥ２を行先とするパケットを含むことが可能であり、よって最大優先順位を有する待ち行列はこれらの待ち行列から選択される。さらに、待ち行列Ｑ３及びＱ５はエグレスＥ３を行先とするパケットを含むことが可能であり、よって最大優先順位はこれらの待ち行列から選択される。同様の選択が、イングレスＩ２及びＩ３の各々について実行される。次に調停モジュール１５２は、各エグレスについてイングレスを選択することができる。例えば、ある実施形態では、イングレスＩ１はエグレスＥ１、Ｅ２及びＥ３の各々について選択されることが可能である。そうなれば、その所定のタイムスロットの間はイングレスＩ１及びＩ２はアイドル状態になる。従って、この実施形態では、イングレスＩ１における待ち行列Ｑ２またはＱ３がエグレスＥ１、Ｅ２及びＥ３の各々に接続されることが可能である。第２の実施形態では、イングレスＩ１はエグレスＥ１及びＥ２へ接続されることが可能であってイングレスＩ２がアイドル状態になり、イングレスＩ３は所定のタイムスロットの間にエグレスＥ３へ接続されることが可能である。
【０１０５】
ある実施形態では、マルチキャスト・キューは、上記マルチキャスト・キューが通信のために選択されると、上記１つまたは複数のパケットがエグレスの各々に方向づけられているかどうかに関わらず、それが関連づけられる待ち行列の各々へ１つまたは複数のパケットを送ることができる。例えば図１１において、イングレスＩ２の待ち行列Ｑ３は、エグレスＥ１、Ｅ２及びＥ３の各々への情報転送に選択されることが可能である。但し、イングレスＩ２の待ち行列Ｑ３における１パケットは、エグレスＥ１及びＥ２しか行先とすることができない。ある実施形態では、このパケットは３つのエグレスＥ１、Ｅ２及びＥ３の各々へ送られるが、エグレスＥ３は、上記パケットがエグレスＥ３に属することを示すヘッダ情報を含まないことからこのパケットを無視する。
【０１０６】
Ｆ．帯域幅の保証とオーバーロード保護の供給
１．はじめに
本発明の別の実施形態は、共有リンクを通したイングレスからエグレスへの接続を、帯域幅保証の形式のサービス品質（ＱｏＳ）要件が満たされることを可能にするような方法で効率的にスケーリングするための装置と方法に関する。本発明のこの実施形態は、オーバーロード保護を供給すると同時に帯域幅を保証することができる。
【０１０７】
図１に示すようなスイッチング・システムにおける各イングレス及びエグレスは、パケットがスイッチング・システムに到達しかつそこから離れることができる最大レートを決定する関連の回線レートを有する。効率的なスイッチ・スケジューリングにおける１つの問題点は、エグレスに対する競合によって発生する。即ち、複数のパケットは同じタイムスロットにおいて異なるイングレスに到達する可能性があるが、これらは全て同じエグレスへ送られる必要がある。しかしながら、クロスバーの制約に起因して、任意の所定のタイムスロットにおいてこの共通して希望されるエグレスへ送られることが可能なパケットは、最大でこれらのうちの１つである。従って、パケット損失が発生する可能性を回避するように注意しなければならない。
【０１０８】
実際のオペレーションでは、特に高速時において、スイッチ調停機能が幾つかの目的を達成することが望ましいと言える。第１に、これは、イングレスとエグレスとを可能な限り迅速にマッチさせることができるように高速である必要がある。第２に、これは、リンク帯域幅の浪費を避けるために任意のタイムスロット内でマッチされるイングレス−エグレス対の数が多いことを保証する必要がある。第３に、これは、データの到着がスイッチの特定リンクの容量をオーバーロードする場合であっても、システム内の待ち行列上で行われる任意のＱｏＳ（レート）保証が達成されることを確実にする必要がある。図１におけるレート保証の一例として、イングレスＩ１からのエグレスＥ１を行先とするパケットは毎秒８ギガビット（Ｇｂｐｓ）の保証レートを有する可能性があり、イングレスＩ２からエグレスＥ１へは２Ｇｂｐｓの保証レートを有する可能性があり、イングレスＩ２からエグレスＥ３へは５Ｇｂｐｓの保証レートを有する可能性があり、イングレスＩ３からエグレスＥ２へは４Ｇｂｐｓの保証レートを有する可能性があり、イングレスＩ３からエグレスＥ３へは５Ｇｂｐｓの保証レートを有する可能性がある。これらは、各イングレス及びエグレスが１０Ｇｂｐｓの最大可能レートを有する設定における保証レートであるとも言える。本発明のこの実施形態は、これらの目的を達成するために使用されることが可能である。
【０１０９】
従って、本発明のこの実施形態を使用すれば、目標であるＱｏＳを帯域幅保証の形態で達成することができる。帯域幅は、個々の待ち行列及び待ち行列グループに対して保証されることが可能である。さらに、本発明のこの実施形態を使用すれば、オーバーロードを防止することができる。スイッチは、著しいトラフィック・オーバーロードが発生する場合でも正常に作動しかつ帯域幅保証を達成することが望ましい。このようなトラフィック・オーバーロードは、例えばサービス拒絶（ＤｏＳ）攻撃、ウォームにトリガされるトラフィック・フラッド及び急激な人気サービスに対するトラフィックのフラッシュ・クラウドに起因して発生する可能性がある。
【０１１０】
パケット損失の発生を低減させながらこれらの問題点を解決するために、２つのタイプのソリューションが提案されている。第１のタイプでは、パケットはパケット損失を回避するためにイングレスにおいてバッファされることが可能であり、各タイムスロットにおいて、１つのエグレスに向かってバッファされた複数のパケットを有するイングレスの集合がそれへのアクセスを求めて競争する。第２のタイプでは、スイッチはスピードアップを利用することができる。スピードアップＳを有するスイッチは、ビットに値するＳ個までのセルが同じタイムスロットにおいて１つのイングレスと１つまたは複数のエグレスとの間で転送されることを許容する。多くのシステムはスピードアップ２を有し、即ちパケットがスイッチを介して流れることができるレートは回線レートの２倍である。ファブリックのスピードアップが整数である必要はなく、例えばこれは１．５であってもよい。後述する本発明の実施形態を使用すれば、オーバーロードの存在下で１以上の任意のスピードアップを可能にするレート保証を供給することができる。
【０１１１】
典型的には、各イングレスには、異なるエグレスに方向づけられているパケットのためのエグレス毎の待ち行列が存在する。これは、そうでなければ１つのエグレスに方向づけられているパケットが同じ待ち行列における他のパケットの転送を「ブロック」すると発生する可能性のある「ヘッドオブライン（ＨＯＬ）ブロッキング」問題を回避することができる。仮想出力キューイング（ＶＯＱ）は、エグレス毎の待ち行列を有するイングレスのセットアップに与えられる名称である。例えば、システム内に３つのエグレスが存在すれば、各イングレスは３つの待ち行列を有する可能性があり、各待ち行列は３つのエグレスのうちの１つだけに方向づけられているパケットを含む。また、各イングレスに同じエグレスに方向づけられているパケットを含む幾つかの異なる待ち行列が存在することも可能である。これは、ＱｏＳに異なるサービス・クラスを実装する上で有益である可能性がある。その場合、同じエグレスに向かうパケットを有する各待ち行列は、所定のトラフィック・クラスのパケットを含む。
【０１１２】
全ルータ・コスト及び電力損を決定する際の重要な一要素は、パケット・バッファに関するメモリ容量及び帯域幅要件である。パケット・バッファ容量は、典型的にはリンク速度に伴って線形的に増加し、マルチギガビット速度では、リンク毎にほぼ数ギガバイトが必要である。データ・ネットワークにおけるネットワーク・スイッチの大部分の現行設計は、何らかの形態の組合わせ入力／出力キューイング（ＣＩＯＱ）を使用している。伝統的なＣＩＯＱスイッチは、イングレス及びエグレス回線カードの双方に大型のパケット・バッファを有する。２段階のバッファリングは、１段階のみのバッファリングを有するルータに比べてコスト及び消費電力が増加し、転送待ち時間も増す。
【０１１３】
２．帯域幅を保証しかつオーバーロード保護を供給する実施形態
本発明のこの実施形態は、スイッチ・クロスバーを従来のＣＩＯＱスイッチの場合より慎重にスケジューリングするために、ネットワーク・スイッチに帯域幅保証及びオーバーロード保護を供給することに関する。この実施形態では、クロスバーを帯域幅要件に関係なくスケジュールする代わりに、待ち行列がそれらに割り当てられた帯域幅レートを受信しているかどうかに関する情報が考慮される。さらに、イングレスをエグレスにマッチさせる際には、動的な段階的最大マッチング戦略が使用される。この実施形態は、入力待ち行列の優先順位を決定しかつこれらの優先順位を帯域幅の割当てに使用するための方法及びシステムである。
【０１１４】
概して、本発明のこの実施形態は２つの部分を含む。第１に、各タイムスロットにおいて、またはタイムスロットの部分集合に関して、各イングレスＶＯＱのカレント状態（よって各イングレスのカレント状態）がティアにマッピングされる。言い替えれば、待ち行列に関する情報を使用して、待ち行列が待ち行列ティアに割り当てられる。ティアの数は典型的には２より大きいか等しく、これらのティアは後にさらに詳述するように異なる方法で定義されることが可能である。第２に、各タイムスロットにおいて、本発明のこの実施形態は待ち行列ティアの集合を所与としてティア毎の最大マッチングを生成する。即ち、Ｒ（２より大きいか等しい数）個のティアが存在すれば、本発明は最上位のティアを始点とし、このティアに存在するＶＯＱのみを考慮してイングレスとエグレスとの間の最大マッチングを生成する。次に、マッチしていない残りのイングレス−エグレスＶＯＱの中から、この実施形態は次の下位ティア（Ｒ−１）における最大マッチングを生成し、全てのティアが検討されるまで、またはそのタイムスロットの間に利用可能なエグレスがなくなるまでこれを繰り返す。ある実施形態では、待ち行列をティアにマッピングする第１の部分は各イングレス・チップ内で実行され、待ち行列（よってイングレスも）をエグレスにマッチングする第２の部分はアービタ・チップ内で実行される。
【０１１５】
イングレスのエグレスへのマッチングは、より大きいマッチングを生成するためにそのマッチングに他のイングレス−エグレス・ペアを追加することができなければ最大になる。例えば図１２において、イングレスからエグレスへの矢印はどのイングレスがどのエグレスに関するデータを有するかを指示するものと仮定すると、イングレスＩ１はエグレスＥ１に関するデータのみを有し、イングレスＩ２はエグレスＥ１及びＥ３に関するデータを有し（Ｅ２のデータは保有しない）、イングレスＩ３はエグレスＥ２及びＥ３に関するデータを有する（Ｅ１のデータは保有しない）。イングレスＩ２がエグレスＥ３にマッチされ、イングレスＩ３がエグレスＥ２にマッチされかつイングレスＩ１がマッチされなければ、イングレス−エグレス・ペアＩ１、Ｅ１がこのマッチングへ追加されてより大きいマッチングを生成することは可能であることから、これは最大マッチングではない。これに対して、イングレスＩ１がエグレスＥ１にマッチされ、かつイングレスＩ３がエグレスＥ３にマッチされれば、イングレスＩ２はエグレスＥ２にマッチされ得ない（エグレスＥ２に関するデータを保有しない）ことからこのマッチは最大マッチングになる。
【０１１６】
この段階的最大マッチング戦略の結果は、スイッチ全体の最大マッチングである。従って、動的なティア毎の最大マッチングを使用すれば、ＶＯＱのティアへの適切な動的割当てによって帯域幅保証及びオーバーロード保護を供給することができる。例えば、図２を参照すると、イングレスＩ１におけるエグレスＥ１に関するデータを有する待ち行列は未だその帯域幅保証を達成していないが、イングレスＩ３におけるエグレスＥ１に関するデータを有する待ち行列がそれを達成していれば、上記イングレスＩ１におけるエグレスＥ１に関するデータを有する待ち行列は、上記イングレスＩ３からの待ち行列に優先してデータを送ることを許容されるべきである。これらの待ち行列間におけるこの優先性または重要さの概念は、動的である。即ち、各待ち行列は、トラフィックの到着、スイッチを介するトラフィック・サービス及び帯域幅保証を基礎として、達成されている、または達成されていない保証に対応する状態間を遷移する。
【０１１７】
待ち行列をティアへグループ分けする１つの方法は、各イングレスにアービタ（即ち、図２及び３Ａのアービタ・チップ１０６または具体的にはアービタ・チップ１０６の調停モジュール１５２）へ各待ち行列の割当てレートが未だ達成されていないかどうかを通知させることによって始まり、達成されていなければ、待ち行列は「渇望している」とされる。待ち行列の割当てレートが達成されていれば、上記待ち行列は「満足している」とされる。これは、ティアが２つしかない単純な例である。この実施形態は、待ち行列に関するこの割当て帯域幅情報を待ち行列のティアへの割当てに使用することができる。待ち行列がティアへ割り当てられると、ティアは、各タイムスロットにおいてイングレスとエグレスの争いのないマッチングを生成すべく連続して評価される。アービタはまず、渇望している待ち行列に最大マッチングを行い、次に満足している待ち行列へ移行する。
【０１１８】
より実際的なシナリオでは、上述の例の場合のように、様々なタイプの待ち行列に対応するために３つ以上のティアを使用可能である。例えば、タイムスロット全体を利用しない「部分的な」パケットを含むＶＯＱ、より少ない遅延を要求するＶＯＱまたは空である待ち行列に対して、別々のティアを使用することもできる。各待ち行列は、待ち行列へのトラフィックの到着、待ち行列のトラフィック・サービス、待ち行列の帯域幅保証、遅延要件及び他の待ち行列状態情報等の、但しこれらに限定されない様々なタイプの待ち行列状態情報を基礎としてティアへ動的に割り当てられることが可能である。Ｒ個のティアが予め定義されるが、Ｒは２より大きいか等しい。本方法は、待ち行列を（それらの特徴に依存して）これらの予め定義されたティアへ動的に（例えば、タイムスロット毎に、またはｋ番目のタイムスロット毎に、但しｋ≧１）または静的に分類することによって動作する。
【０１１９】
動的なティア割当て及び段階的な最大マッチングである２つのメカニズムは共に、トラフィック・オーバーロードが存在しても帯域幅保証が達成され得るようにイングレス−エグレス待ち行列ペアのマッチングを供給する。帯域幅保証は、任意のスピードアップＳ≧１について達成されることが可能である。スピードアップがＳであれば、各イングレス（エグレス）で帯域幅に値するイングレス（エグレス）回線レートのＳ／２倍を保証することができる。回線レートの（１−Ｓ／２）倍の追加トラフィックは、ベストエフォート式に供給されることが可能である。
【０１２０】
図１３は、本発明による一実施形態の動作を示すフローチャートである。概して、上述の２つの機能が実行され、即ち各待ち行列がティアにマッピングされ、ティア毎の最大マッチングが実行される。これらの２機能の組合わせにより、待ち行列（故にイングレスも）とエグレスとの最大マッチングが生じる。
【０１２１】
図１３を参照すると、ステップ１３０２でスイッチング・システム１００（図２）の待ち行列の様々な特徴（ディテール）が達成される。これらの特徴は、例えば図２及び３Ａのアービタ・チップ１０６等のアービタまたはより特定的にはアービタ・チップ１０６の調停モジュール１５２において収集されることが可能である。他の実施形態では、これらの特徴は、アービタ・チップ１０６へ送られる情報量を減らすためにイングレス・チップ１０２内で収集されて解析されることが可能である。ステップ１３０２で取得されることが可能な幾つかの特徴、または待ち行列状態情報は、（１）各待ち行列の長さ、（２）各待ち行列の保証レート、（３）各待ち行列に関連づけられるクレジット値及び（４）各待ち行列の「エイジ」である。待ち行列のこの特徴リストは例示的であり、異なる追加的なタイプの特徴も本発明のコンテキストの範囲内で使用されることが可能である。ある実施形態では、アービタに最後に送られた情報から変化がなければ、アービタに待ち行列の待ち行列状態情報を知らせる必要がない。言い替えれば、この実施形態では、新規または異なる待ち行列状態情報のみがアービタへ送られる。
【０１２２】
再度図１３を参照すると、ブロック１３０４において、待ち行列は、上述の特徴（ブロック１３０２で取得できたもの）または予め決められた任意の分類法を基礎として「Ｎ」個のティアへ分類される。ティアの個数「Ｎ」は、達成されるべきＱｏＳ保証に依存して定義される。概して、ティアは、図１５に関連して後にさらに詳述する方法で事前に定義される。各タイムスロットについて、待ち行列はティアへ分類されることが可能である。従って、待ち行列はティアへ動的に割り当てられる。各待ち行列は、タイムスロット毎に１つのティアへ属することができる。概して、ティアはまずどの待ち行列がエグレスとマッチされるべきかを指示するために使用され、より上位のティアにおける待ち行列はより下位のティアにおけるものより前にエグレスへマッチされる。従って、他の待ち行列より緊急にサービスを必要とする待ち行列は、所定のタイムスロットのより高位のティアへ分類されることが可能である。ある待ち行列がサービスされると、実施形態によっては、これは、次のタイムスロットではサービスされることのないように、より下位のティアへ分類されることが可能である。図１５は、待ち行列の７個のティアへの分割を例示するものであり、これについては後に詳述する。
【０１２３】
図１３のブロック１３０６において、ティアは優先順位を与えられ、各ティアは概して異なる優先順位を有する。この優先順位は、イングレスとエグレスとのマッチングの間に待ち行列を選択するために使用される。ティアの個数「Ｎ」に一致する値を有する可能性のある最も高い優先順位は、「特殊な」ティア、即ち待ち行列が何らかの理由でサービスを要求するティアに属することが決定される待ち行列のために留保されることが可能である。このような理由の一例は、先に「部分的な」パケットを有する待ち行列として述べている。他のティアは全て、この最も高い優先順位より低い優先順位を割り当てられる。例えば、「優先転送」ティアは、値「Ｎ−１」を有する可能性のある２番目に高い優先順位に関連づけられる可能性がある。従って、各優先転送待ち行列には、それが空でなければ優先順位「Ｎ−１」を割り当てられる。表１に関連して先に述べたように、イングレスは、優先転送待ち行列である待ち行列でセットアップされることが可能である。このような待ち行列は、クレジット値に関わらずイングレス内の他の待ち行列より前にサービスされる待ち行列である。優先転送待ち行列は、イングレスにおいて、所定のパケットが可能な限り迅速に転送されることを保証するために使用可能である。このような場合、パケットは優先転送待ち行列においてバッファされる。空の待ち行列は、典型的には優先順位「０」を割り当てられ、それらの割当て帯域幅を超過している待ち行列も同様である可能性がある。先に述べたように、図１５は待ち行列の７個のティアへの分割を例示するものであり、これについては後に詳述する。
【０１２４】
図１３のブロック１３０８において、変数「ｉ」の値がティアの個数「Ｎ」に等しい値に設定される。この変数ｉは、図１３に記されているようにかつ後述のように、「Ｎ」個のティアの各々について最大マッチングが実行されるべく減分カウンタとして使用される。
【０１２５】
図１３のブロック１３１０において、スイッチング・システム１００は最大マッチングを使用して最新の優先順位を有する待ち行列をエグレスにマッチさせる。最大マッチングを実行するために、まずは評価されるべき待ち行列が選択される。ティア内の最初に評価されるべき待ち行列は、ランダムに、予め決められた順序で、所与の加重により確率的に、または他の何らかの方法を使用して決定されることが可能である。ある実施形態では、より公正な割当てを達成するために、待ち行列のランダムな選択が望ましい可能性がある。ティア内の待ち行列が選択されると、最大マッチングはその待ち行列（故にその待ち行列が位置決めされるイングレスも）と接続に関する上記待ち行列による最初の選択であるエグレスとのマッチング（または接続）を試行する。例えば、希望されたエグレスが既にマッチされているという理由でこれが不可能であれば、上記ティア内の別の待ち行列が選択され、接続に関する上記待ち行列による最初の選択であるエグレスとの接続に関して評価される。このプロセスは、所定の優先順位レベルにおける（即ち、所定のティア内の）待ち行列が全て評価されるまで同様にして継続される。最大マッチングについては、図１４に関連してさらに詳しく論じる。
【０１２６】
イングレスとエグレスとの最大マッチングにより、本発明のこの実施形態は、ＱｏＳ保証が達成されるように、あるタイムスロットにおける特定のイングレスと特定のエグレスとのマッチングが、そのイングレスまたはエグレスと別のエグレスまたはイングレスとのより緊急的にペアリングを必要とする可能性のある異なるマッチングを犠牲にして行われないことを保証する。最大マッチングは高速であって大量の処理電力を必要とせず、よって多額の費用をかけることなくスイッチング・システムに実装されることが可能である。
【０１２７】
図１３のブロック１３１２では、変数「ｉ」の値（最新の優先順位または最大マッチングのために評価されているティア・レベル）が１を減分される。ブロック１３１４では、変数ｉの値がチェックされ、全ての優先順位レベルが評価されているかどうかが決定される。全ての優先順位レベルが評価されていれば、ｉ＝０であり、図１３におけるフローの実行は終了して待ち行列とエグレスとのマッチングは完了する。ｉ＞０であれば、ステップ１３１０が実行され、最新の優先順位（即ち、ティア）レベルについて最大マッチングが実行される。このプロセスは、全ての優先順位レベル（またはティア）が評価されるまで繰り返される。
【０１２８】
図１４は、待ち行列リストに対する最大マッチングの動作を示すフローチャートである。この最大マッチング手順は、図１３のブロック１３１０で最大マッチングを実行するために使用されることが可能である。図１４のブロック１４０２において、本プロセスは入力として利用可能なイングレスのリスト、利用可能なエグレスのリスト及びエグレスとのマッチングについて考察される予定の待ち行列のリストを採用する。待ち行列（故にイングレスも）のリストは、現行評価されている優先順位レベルまたはティア内の待ち行列より成る。
【０１２９】
図１４のブロック１４０４において、考察されるべき待ち行列のリストから１つの待ち行列が選ばれる。先に述べたように、ティア内の最初に評価されるべき待ち行列は、ランダムに、予め決められた順序で、所与の加重により確率的に、または他の何らかの方法を使用して決定されることが可能である。ブロック１４０６では、この待ち行列にとって希望されるエグレスが利用可能であるかどうかが決定される。利用可能なエグレスが存在すれば、ブロック１４０８が実行される。ブロック１４０８では、考察されている待ち行列を含むイングレスがブロック１４０６でチェックされたエグレスとマッチされる。次にこのイングレスの待ち行列は全て、マッチングに利用可能な待ち行列リストから削除される。さらに、待ち行列にマッチされるエグレスも、マッチングに利用可能なエグレス・リストから削除される。次に、ブロック１４１２が実行される。
【０１３０】
ブロック１４０６で、エグレスが待ち行列への接続に利用できなければ、ブロック１４１０が実行される。ブロック１４１０では、考察されている待ち行列がマッチされるべき待ち行列リストから削除される。次には、ブロック１４１２が実行される。ブロック１４１２では、評価されているティア内に未だマッチングに利用可能である追加的な待ち行列が存在するかどうかが決定される。そのティア内にマッチングに利用可能である追加的な待ち行列が存在しなければ、その所定のティアに関する最大マッチングの実行は終了し、図１３のプロセスが続けられる（即ち、これにより、より下位のティアが存在すれば次の下位ティアについて最大マッチングを実行可能である）。上記ティア内に考察されるべき待ち行列がさらに存在すれば、ブロック１４０４が実行され、考察されるべき待ち行列リストから別の待ち行列が選ばれる。このプロセスは、上記ティア内に考察されるべき追加的な待ち行列が存在しなくなるまで継続される。
【０１３１】
図１５は、本発明の一実施形態による、様々な性質またはパラメータを基礎とする待ち行列の７つのティアへの分類を示す表である。後の説明を含む図１５の例は、先の図１３におけるブロック１３０４の記述にあるように待ち行列を「Ｎ」個のティアへ分類する一例である。先に述べたように、ティアは、イングレスとエグレスとのマッチングが判断される順序の決定に使用され得る異なる優先順位レベルを決定するために使用される。
【０１３２】
概してティアは、待ち行列への到着履歴、待ち行列のサービス履歴、待ち行列状態、保証レート及び待ち時間またはジッタに依存して定義される。到着履歴は、各パケットがその待ち行列に到着した時点、即ちそのパケットがどのタイムスロットで到着したか、に対応する情報である。同様に、待ち行列のサービス履歴は、その待ち行列がサービスされたタイムスロット及びどのパケット及び幾つのパケットがサービスされたか、に関する情報である。待ち行列のティアへの割当てには、部分パケットを有する待ち行列または優先転送待ち行列等の所定のタイプの待ち行列に関する他の情報も使用される。
【０１３３】
図１５は、６種の異なる性質またはパラメータを基礎とする待ち行列の７個のティア（所定のタイムスロットの間、各ティアはその内部に０乃至多数の待ち行列を含むことができる）への分類を示している。これらの性質またはパラメータは、広義に待ち行列状態情報と呼ぶことができる。
【０１３４】
図１５における第１のパラメータは、待ち行列が「特殊」であるかどうか、である。例えば、待ち行列が先に詳述した「部分的な」パケットを含んでいれば、それは「特殊」である。概して待ち行列は、何らかの理由で連続するタイムスロットでの接続を要求していれば特殊である。待ち行列が特殊であれば、その待ち行列（即ち、部分パケットに関して）を即座にサービスすることが望ましい。従って、図１５におけるティア「Ｓ」は特殊な待ち行列のためのティアである。「特殊な」パケットまたは「特殊な」待ち行列に関連するパラメータは、待ち行列を「特殊な」ティア「Ｓ」へ割り当てることができるようにアービタへ送られることが可能である。
【０１３５】
待ち行列のティアへの分類に際して考察される可能性がある別のパラメータは、待ち行列が空であるかどうか、である。その待ち行列が空であるかどうかを決定するためには、待ち行列の長さを調べることができる。図１５は、空の待ち行列のためのティア「Ｆ」を含んでいる。先に「Ｑ長さ」と称した各待ち行列の長さは、特定の瞬間に所定の待ち行列内へ格納されるデータ・サイズの尺度であり、よってバイトで測定することができる。その値は、０乃至許容された最大値の範囲である。図２及び３Ａを参照すると、待ち行列マネージャ１１２は待ち行列へのデータの到着レート情報を計算または追跡することが可能であり、待ち行列長さモジュール１６２は待ち行列のカレント長またはサイズを計算することが可能である。Ｑ長さの値は、待ち行列に新しいパケットが到着する度にそのパケットのサイズだけ増分される。同様に、Ｑ長さの値は、パケットが待ち行列を離れる度にそのパケットのサイズだけ減分される。
【０１３６】
待ち行列のティアへの分類に際して考察される可能性がある別のパラメータは、「エイジ」という因子である。待ち行列のエイジ因子は、その待ち行列が最後にサービスされた時点からの経過時間を示す値である。このエイジ因子は、一定間隔で１だけ増分される。例えば、エイジ因子は、所定の待ち行列がサービスされないタイムスロットが経過する度に１だけ増分されることが可能である。さらに、パケットが所定の待ち行列を離れる度に、エイジ因子はその待ち行列に関してゼロにリセットされることが可能である。このパラメータの値が所定のしきい値または予め定義されたタイムスロット数（例えば１，０００等）を超えると、その待ち行列は「熟成している」と見なされる。従って、待ち行列が長い間サービスされていなければ、そのエイジ因子は、その待ち行列が「熟成している」と見なされるに足る十分な大きさになっている可能性がある。図１５が記しているティア「Ａ」は、空でなく熟成した待ち行列のためのティアである。
【０１３７】
待ち行列が「弱体」であるか否かもまた、各待ち行列をティアの１つへ分類する際に考察される可能性がある。待ち行列がその処理能力に見合う数のパケットを受信していなければ、またはその処理能力を遙かに下回る数のパケットを受信していれば、それは弱体として分類されることが可能である。待ち行列が弱体として分類されれば、それはパケットを有する他の全てのティアが考察されるまでマッチングされないティアにグループ分けされることが可能である。例えば図１５は、弱体である待ち行列を有するものとしてティア「Ｅ」を記している。ティア「Ｅ」は、空の待ち行列を含むティアのすぐ上の下位から２番目のティアである。
【０１３８】
待ち行列が「渇望」状態であるか否かもまた、待ち行列をティアへ分類する際に考察される可能性がある。待ち行列がその保証された帯域幅より少ない帯域幅を受信していれば、それは渇望状態にあるとされる可能性がある。同様に、その保証された帯域幅より多くの帯域幅を受信している待ち行列は、「満足している」または渇望状態でない、とされる可能性がある。図１５は、渇望していない待ち行列を含むものとしてティア「Ｄ」を記し、渇望状態にある待ち行列を有するものとしてティア「Ｂ」及び「Ｃ」を記している。概して、ティア「Ｂ」及び「Ｃ」にある待ち行列（即ち、渇望状態の待ち行列）はティア「Ｄ」にある待ち行列（即ち、満足している待ち行列）より前にエグレスとマッチされるべきである。従って、ティア「Ｄ」はティア「Ｂ」及び「Ｃ」より低い優先順位を有する。
【０１３９】
概して、待ち行列が弱体であるか、渇望状態であるか、満足しているかどうかを決定するためには、各待ち行列の保証レート及びクレジット値を考察することができる。概して保証レートは、その待ち行列に対して保証されているレートである。これはその待ち行列が利用可能な帯域幅を決定し、典型的には「１秒当たりのビット数」で表示される。このパラメータは、一定間隔で更新される（通常はタイムスロット当たり１回ではなく、先に述べたようにタイムスロット・ブロック当たり１回）。保証レートを計算する幾つかの方法については幾つかの図（図５等）に関連して先に述べており、図３Ａでは保証レートが数字５２で記されている。
【０１４０】
また、各待ち行列にはクレジット値も関連づけられる。概して所定の待ち行列のクレジット値は、待ち行列がサービスされない各タイムスロットの後に増加されることが可能である。所定のタイムスロットの間に待ち行列がサービスされれば、その待ち行列のクレジット値は減らされることが可能である。待ち行列のクレジット値の決定については、先に図８に関連して詳述している。先に詳述したように、待ち行列のクレジット値は、各待ち行列の保証レートを使用して増分されることが可能である（待ち行列が所定のタイムスロットの間にサービスされなかった場合）。
【０１４１】
典型的には、待ち行列のクレジット値が０より小さければ、それは、その待ち行列がその保証された帯域幅により指定される帯域幅より多くのサービスを受信していることを含意する。このような待ち行列は、「満足している」（または図１５においてティア「Ｄ」で示されるように渇望状態でない）とされる可能性がある。同様に、待ち行列のクレジット値が０より大きければ、それは、その待ち行列がその保証された帯域幅より少ないサービスを受信していることを含意する。このような待ち行列は、図１５においてティア「Ｂ」及び「Ｃ」で示されるように渇望しているとされる可能性がある。最後に、待ち行列のクレジット値が０であれば、それは、その待ち行列がその保証された帯域幅を受信していることを含意する。このような待ち行列は、ある実施形態では渇望状態でないとされ、別の実施形態では渇望しているとされる可能性がある。実施形態によっては、クレジット値の大きさ（正または負）はキャップされる場合がある。
【０１４２】
待ち行列のティアへの分類に際して考察される可能性がある待ち行列に関する別種のパラメータは、待ち行列のタイプである。待ち行列によっては、優先転送待ち行列または確実な転送待ち行列として分類され得るものがある。優先転送待ち行列は、概してクレジット値に関わりなくイングレスの他の待ち行列より前にサービスされる待ち行列である。図１５の実施形態では、「熟成した」待ち行列（及び部分パケットを有する待ち行列）は優先転送待ち行列より上位のティアに置かれ、よって優先転送待ち行列より前にサービスされるが、この通りである必要はない。例えば、優先転送待ち行列は「熟成した」待ち行列の上のティアに置かれる可能性もある。確実な転送待ち行列は、同じく概して他の待ち行列より前に、但し優先転送待ち行列より後でサービスされる待ち行列である。従って、図１５は優先転送待ち行列のためにティア「Ｂ」を、確実な転送待ち行列のためにティア「Ｃ」を使用している。
【０１４３】
図１５に記したティア分類は、単なる例示である。ティアは、本発明の範囲内でさらに多い、または少ない数を使用可能である。例えばある実施形態では、「熟成した」待ち行列のためのティアは存在しない場合もある。別の実施形態では、確実な転送待ち行列のためのティアは存在しない場合もある。さらに別の実施形態では、ティアが追加される場合がある。例えば、図１５のティアが全て、渇望状態にあるが優先転送待ち行列または確実な転送待ち行列のためのティアには適合しない待ち行列のための別のティアと共に使用されることもある。また例えば、図１５のティア「Ｃ」と「Ｄ」の間に渇望状態にある待ち行列のためのティアが存在する場合もある。ティアのこのようなグループ分けは、図１５に記されている７個ではなく８個のティアを有することになる。
【０１４４】
図１５の実施形態では、最も高い優先順位値６は特殊なティア「Ｓ」に属する待ち行列に割り当てられる。２番目に高い優先順位値５は、ティア「Ａ」に属する待ち行列に割り当てられる。３番目に高い優先順位値４は、ティア「Ｂ」に属する待ち行列に割り当てられる。４番目に高い優先順位値３は、ティア「Ｃ」に属する待ち行列に割り当てられる。５番目に高い優先順位値２はティア「Ｄ」に属する待ち行列に割り当てられ、６番目に高い優先順位値１はティア「Ｅ」に属する待ち行列に割り当てられる。最終的に、最後（７番目）の優先順位値０は、ティア「Ｆ」に属する待ち行列に割り当てられる。
【０１４５】
このようにして、待ち行列はまずそれらのタイプ及び／または要件または特徴に従って分類されて優先順位を割り当てられ、次に所定の優先順位の各待ち行列リストについて、エグレスとのマッチングを実行すべく降順の優先順位で最大マッチングが実行される。高位の優先順位待ち行列に関するイングレスとエグレスの最大マッチングを下位の優先順位待ち行列より前に行うことにより、本発明は、ＱｏＳ保証が達成されるべく、あるタイムスロットにおける特定のイングレスとエグレスとのマッチングが、そのイングレスまたはエグレスと別のエグレスまたはイングレスとのより緊急的にペアリングを必要とする可能性のある異なるマッチングを犠牲にして行われないことを保証する。従って、本方法は、スイッチ内の様々なスピードアップによるトラフィック・オーバーロードの存在する中でＱｏＳ保証を維持することができる。
【０１４６】
本明細書に記述した方法は、図５に関連して先に詳述したもの等の様々な帯域幅割当て戦略と共に使用されることが可能である。本発明による一シナリオでは、段階的な最大マッチングが関連の割当てレートを有するタイムスロット毎に各仮想出力キュー（ＶＯＱ）に使用される。ＶＯＱグループに集合的な保証レートが割り当てられるシナリオは、より一般的である。帯域幅アロケータは、あらゆる時間期間でＶＯＱグループ内の各待ち行列の個々のレートを動的に決定する。但し、「時間期間」は何十ものタイムスロットから何百万ものタイムスロットまたはそれ以上にまで変化する可能性がある。従って、段階的な最大マッチングは個々のタイムスロットについてスケジュール決定を行い、帯域幅アロケータは幾つかのタイムスロット（または時間期間）ブロックについて帯域幅割当てを決定する。
【０１４７】
より大きい及びより小さい、前及び後、右及び左、上及び下、上位及び下位及び水平及び垂直の言及は何れも説明上の便宜的なものであり、本発明またはそのコンポーネントを何らかの相関的、位置的または空間的方向づけに限定しようとするものではない。添付の図面におけるコンポーネントのサイズは全て、本発明の範囲を逸脱することなく本発明の実施形態の潜在的設計及び意図された使用に伴って変わる可能性がある。
【０１４８】
本発明をその幾つかの実施形態を参照して説明したが、当業者には、請求範囲に記載された発明の精神及び範囲を逸脱することなく実行され得る様々な変更が認識されるであろう。従って、本発明は図面が示すもの及び明細書に記載された内容に限定されるものではなく、その内容は唯一添付の請求の範囲に示されている。
【図面の簡単な説明】
【０１４９】
【図１】先行技術によるスイッチング・システムを示すブロック図である。
【図２】本発明システムの一実施形態を示すブロック図である。
【図３Ａ】本発明のアービタ・チップ、イングレス・チップ及び待ち行列マネージャの一実施形態を示すブロック図である。
【図３Ｂ】イングレスの待ち行列内のデータ・パケットを示すブロック図である。
【図４Ａ】本発明方法の一実施形態を示すフローチャートである。
【図４Ｂ】本発明方法の一実施形態を図４Ａよりさらに詳しく示すフローチャートである。
【図５】異なる３タイプの帯域幅割当てに関する帯域幅レートの計算の一実施形態を示すフローチャートである。
【図６Ａ】単一のエグレスにおける帯域幅割当ての一実施形態を示すブロック図である。
【図６Ｂ】単一のエグレスにおける帯域幅割当ての第２の実施形態を示すブロック図である。
【図７Ａ】単一のイングレスにおける帯域幅割当ての一実施形態を示すブロック図である。
【図７Ｂ】待ち行列グループの帯域幅割当ての一実施形態を示すブロック図である。
【図８】本発明の一実施形態において帯域幅割当てに使用されるクレジット値の調整を示すフローチャートである。
【図９】本発明の待ち行列選択スキームの一実施形態を示すブロック図である。
【図１０】待ち行列選択方法の第２の実施形態を示すフローチャートである。
【図１１】待ち行列選択スキームの別の実施形態を示すブロック図である。
【図１２】図示されているイングレスが図示されているエグレスの所定のものへ送るデータを保有している例示的なシナリオを示すブロック図である。
【図１３】動的なティア当たりの最大マッチングを使用する本発明の別の実施形態を示すフローチャートである。
【図１４】待ち行列リストの最大マッチングの一実施形態を示すフローチャートである。
【図１５】図１３の本発明の実施形態による、様々な性質を基礎とする待ち行列の５ティアへの分類を示す表である。
【図１】
2007512719.tif 000010
【図２】
2007512719.tif 000011
【図３Ａ】
2007512719.tif 000012
【図３Ｂ】
2007512719.tif 000013
【図４Ａ】
2007512719.tif 000014
【図４Ｂ】
2007512719.tif 000015
【図５】
2007512719.tif 000016
【図６Ａ】
2007512719.tif 000017
【図６Ｂ】
2007512719.tif 000018
【図７Ａ】
2007512719.tif 000019
【図７Ｂ】
2007512719.tif 000020
【図８】
2007512719.tif 000021
【図９】
2007512719.tif 000022
【図１０】
2007512719.tif 000023
【図１１】
2007512719.tif 000024
【図１２】
2007512719.tif 000025
【図１３】
2007512719.tif 000026
【図１４】
2007512719.tif 000027
【図１５】
2007512719.tif 000028