(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2015-109672(P2015-109672A)
(43)【公開日】2015年6月11日
(54)【発明の名称】重み付けされた公平な待ち行列管理のための方法およびシステム
(51)【国際特許分類】
H04L 12/865 20130101AFI20150515BHJP
【FI】
H04L12/865
【審査請求】有
【請求項の数】38
【出願形態】OL
【全頁数】23
(21)【出願番号】特願2015-333(P2015-333)
(22)【出願日】2015年1月5日
(62)【分割の表示】特願2011-530340(P2011-530340)の分割
【原出願日】2009年10月13日
(31)【優先権主張番号】12/250,681
(32)【優先日】2008年10月14日
(33)【優先権主張国】US
(71)【出願人】
【識別番号】390023157
【氏名又は名称】ノーテル・ネットワークス・リミテッド
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】ブラッドリー ディー ヴェナブレス
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030KX18
5K030LC01
(57)【要約】 (修正有)
【課題】子の適格性およびクレジット分配に基づいて通信ネットワークにおける送信のためのデータをスケジューリングするための方法およびシステムを提供する。
【解決手段】適格及び不適格なデータソースに各データソースを分類し、利用可能なクレジットのクレジット残高を維持し、適格なデータソースにクレジット残高からのクレジットを割り当て、適格なデータソース毎に個々のクレジット・カウントを維持し、複数の待ち行列を維持し、個々の待ち行列に各データソースを割り当て、データソースが割り当てられる待ち行列の優先度レベルに従って、待ち行列から出すために少なくとも1つのデータソースを選択し、選択されたデータソースのクレジット・カウントからクレジット残高へクレジット数を転送し、適格なデータソースを不適格なデータソースとして再分類し、再分類されたデータソースのクレジット・カウントをクレジット残高へ転送する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
複数のデータソースを有する通信ネットワークにおいて送信のためのデータをスケジューリングする方法であって、
適格なデータソース及び不適格なデータソースのうちの1つに各データソースを分類するステップと、
利用可能なクレジットのクレジット残高を維持するステップと、
適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップと、
適格なデータソース毎に個々のクレジット・カウントを維持するステップと、
複数の待ち行列を維持するステップであって、各待ち行列は、対応するクレジット・カウント要件に従って定義される個々の優先度レベルを有する、ステップと、
個々の待ち行列に各データソースを割り当てるステップであって、前記個々の待ち行列は、前記データソースの前記クレジット・カウントにより満たされるクレジット・カウント要件を有する、ステップと、
前記データソースが割り当てられる待ち行列の優先度レベルに従って、待ち行列から出すために少なくとも1つのデータソースを選択するステップと、
前記少なくとも1つの選択されたデータソースのクレジット・カウントから前記クレジット残高へ、クレジット数を転送するステップであって、前記クレジット数は、待ち行列から出されたデータの量に対応する、ステップと、
適格なデータソースを不適格なデータソースとして再分類するステップと、
前記再分類されたデータソースのクレジット・カウントを前記クレジット残高へ転送するステップと、
を有する方法。
【請求項2】
前記適格なデータソースを再分類するステップは、前記データソースの送信レートが前記データソースに割り当てられたレート制限に達するとき、前記適格なデータソースを不適格なデータソースとして再分類するステップを有する、請求項1に記載の方法。
【請求項3】
前記適格なデータソースを再分類するステップは、前記データソースが送信すべきデータを有しないとき、前記適格なデータソースを不適格なデータソースとして再分類するステップを有する、請求項1に記載の方法。
【請求項4】
各データソースは、個々の重みを割り当てられ、
適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップは、前記データソースの割り当てられた重みにより決定される比で前記データソースにクレジットを割り当てるステップを有する、
請求項1に記載の方法。
【請求項5】
適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップは、
各適格なデータソースに、その個々の重みに従って、ラウンドロビン割り当て方式でエントリ数を割り当てるステップと、
前記ラウンドロビン割り当て方式に従って、適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップと、
を有する、請求項4に記載の方法。
【請求項6】
前記クレジット残高は、各適格なデータソースがそのクレジットの割り当てを受けたとき、正の残高を維持する、請求項5に記載の方法。
【請求項7】
適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップは、前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるステップを有する、請求項4に記載の方法。
【請求項8】
前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるステップは、実質的に通常の送信レートを維持するレートでクレジットを割り当てるステップを有する、請求項7に記載の方法。
【請求項9】
適格なデータソースは、負のクレジット・カウントを有し、
少なくとも1つの待ち行列は、負のクレジット・カウントにより満たされるクレジット・カウント要件を有する、
請求項1に記載の方法。
【請求項10】
通信ネットワークのデータスケジューラであって、前記通信ネットワークは複数のデータソースを有し、前記スケジューラは、
適格なデータソース及び不適格なデータソースのうちの1つに各データソースを分類するよう構成される分類ロジックを含むプロセッサと、
利用可能なクレジットのクレジット残高を維持するよう構成されるクレジット残高クレジットカウンタと、
適格なデータソースに前記クレジット残高からのクレジットを割り当てるよう構成されるクレジット割り当てロジックと、
適格なデータソース毎に個々のクレジット・カウントを維持するよう構成されるデータソースクレジットカウンタと、
複数の待ち行列を維持するよう構成される待ち行列維持ロジックであって、各待ち行列は、対応するクレジット・カウント要件に従って定義される個々の優先度レベルを有する、待ち行列維持ロジックと、
個々の待ち行列に各データソースを割り当てるよう構成される待ち行列割り当てロジックであって、前記個々の待ち行列は、前記データソースの前記クレジット・カウントにより満たされるクレジット・カウント要件を有する、待ち行列割り当てロジックと、
前記データソースが割り当てられる待ち行列の優先度レベルに従って、待ち行列から出すために少なくとも1つのデータソースを選択するよう構成されるデータソース選択ロジックと、
前記少なくとも1つの選択されたデータソースのクレジット・カウントから前記クレジット残高へ、クレジット数を転送するよう構成されるクレジット転送ロジックであって、前記クレジット数は、待ち行列から出されたデータの量に対応する、クレジット転送ロジックと、
を有し、
前記分類ロジックは、適格なデータソースを不適格なデータソースとして再分類するよう構成され、
前記クレジット転送ロジックは、前記再分類されたデータソースのクレジット・カウントを前記クレジット残高へ転送するよう構成される、
データスケジューラ。
【請求項11】
前記分類ロジックは、前記データソースの送信レートが前記データソースに割り当てられたレート制限に達するとき、前記適格なデータソースを不適格なデータソースとして再分類するよう構成される、請求項10に記載のデータスケジューラ。
【請求項12】
前記分類ロジックは、前記データソースが送信すべきデータを有しないとき、前記適格なデータソースを不適格なデータソースとして再分類するよう構成される、請求項10に記載のデータスケジューラ。
【請求項13】
各データソースは、個々の重みを割り当てられ、
前記クレジット割り当てロジックは、前記データソースの割り当てられた重みにより決定される比で前記データソースにクレジットを割り当てるよう構成される、
請求項10に記載のデータスケジューラ。
【請求項14】
前記クレジット割り当てロジックは、
各適格なデータソースに、その個々の重みに従って、ラウンドロビン割り当て方式でエントリ数を割り当て、
前記ラウンドロビン割り当て方式に従って、適格なデータソースに前記クレジット残高からのクレジットを割り当てる、
よう構成される、請求項13に記載のデータスケジューラ。
【請求項15】
前記クレジット残高クレジットカウンタは、各適格なデータソースがそのクレジットの割り当てを受けたとき、正の残高を維持する、請求項14に記載のデータスケジューラ。
【請求項16】
前記クレジット割り当てロジックは、前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるよう構成される、請求項13に記載のデータスケジューラ。
【請求項17】
前記クレジット割り当てロジックは、実質的に通常の送信レートを維持するレートでクレジットを割り当てるよう構成される、請求項16に記載のデータスケジューラ。
【請求項18】
適格なデータソースは、負のクレジット・カウントを有し、
少なくとも1つの待ち行列は、負のクレジット・カウントにより満たされるクレジット・カウント要件を有する、
請求項10に記載のデータスケジューラ。
【請求項19】
パケット・ベースの通信ネットワークのネットワークノードであって、
前記通信ネットワークに結合され前記通信ネットワークを介してパケットを送信するよう構成される少なくとも1つの出力ポートと、
前記通信ネットワークを介して前記ネットワークノードにより送信されるべきパケットをキューイングするよう構成される複数のデータ待ち行列と、
少なくとも1つのスケジューラであって、
前記通信ネットワークを介して次のパケットを送信すべき待ち行列を選択し、
適格なデータソース及び不適格なデータソースのうちの1つとして各データソースを分類し、所定の条件が満たされるとき、適格なデータソースを不適格なデータソースとして再分類し、
利用可能なクレジット残高を維持し、
適格なデータソースに前記クレジット残高からのクレジットを割り当て、
適格なデータソース毎に個々のクレジット・カウントを維持し、
複数の待ち行列を維持し、各待ち行列は、対応するクレジット・カウント要件に従って定義される個々の優先度レベルを有し、
個々の待ち行列に各データソースを割り当て、前記個々の待ち行列は、前記データソースのクレジット・カウントにより満たされるクレジット・カウント要件を有し、
前記データソースが割り当てられる前記待ち行列の前記優先度レベルに従って、待ち行列から出すために少なくとも1つのデータソースを選択し、
前記選択されたデータソースの前記クレジット・カウントから前記クレジット残高へクレジット数を転送し、前記クレジット数は、待ち行列から出されたデータ量に対応し、前記適格なデータソースが不適格なデータソースとして再分類されるとき、前記クレジット残高へ適格なデータソースのクレジット・カウントを転送する、
よう構成される少なくとも1つのスケジューラと、
を有するネットワークノード。
【請求項20】
前記少なくとも1つのスケジューラは、前記データソースの送信レートが前記データソースに割り当てられたレート制限に達するとき、前記適格なデータソースを不適格なデータソースとして再分類するよう更に構成される、請求項19に記載のネットワークノード。
【請求項21】
前記少なくとも1つのスケジューラは、前記データソースが送信すべきデータを有しないとき、前記適格なデータソースを不適格なデータソースとして再分類するよう更に構成される、請求項19に記載のネットワークノード。
【請求項22】
各データソースは、個々の重みを割り当てられ、
前記少なくとも1つのスケジューラは、前記データソースの割り当てられた重みにより決定される比で前記データソースにクレジットを割り当てるよう更に構成される、
請求項19に記載のネットワークノード。
【請求項23】
前記少なくとも1つのスケジューラは、
各適格なデータソースに、その個々の重みに従って、ラウンドロビン割り当て方式でエントリ数を割り当て、
前記ラウンドロビン割り当て方式に従って、適格なデータソースに前記クレジット残高からのクレジットを割り当てる、
よう更に構成される、請求項22に記載のネットワークノード。
【請求項24】
前記少なくとも1つのスケジューラは、各適格なデータソースがそのクレジットの割り当てを受けたとき、正の残高を維持する、請求項23に記載のネットワークノード。
【請求項25】
前記少なくとも1つのスケジューラは、前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるよう構成される、請求項22に記載のネットワークノード。
【請求項26】
前記少なくとも1つのスケジューラは、実質的に通常の送信レートを維持するレートでクレジットを割り当てるよう更に構成される、請求項25に記載のネットワークノード。
【請求項27】
適格なデータソースは、負のクレジット・カウントを有し、
少なくとも1つの待ち行列は、負のクレジット・カウントにより満たされるクレジット・カウント要件を有する、
請求項19に記載のネットワークノード。
【請求項28】
前記少なくとも1つのスケジューラは、二次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスを実行するよう更に構成される、請求項19に記載のネットワークノード。
【請求項29】
パケット・ベースの通信ネットワークのネットワークノードの作動方法であって、前記ネットワークノードは、
前記通信ネットワークに結合され前記通信ネットワークを介してパケットを送信するよう構成される少なくとも1つの出力ポートと、
前記通信ネットワークを介して前記ネットワークノードにより送信されるべきパケットをキューイングするよう構成される複数のデータ待ち行列と、
前記通信ネットワークを介して次のパケットを送信すべき待ち行列を選択するよう構成される少なくとも1つのスケジューラと、
を有し、前記方法は、前記スケジューラを、
適格なデータソース及び不適格なデータソースのうちの1つとして各データソースを分類し、各データソースの分類は、所定の条件が満たされるとき、適格なデータソースを不適格なデータソースとして再分類することを有し、
利用可能なクレジット残高を維持し、
適格なデータソースに前記クレジット残高からのクレジットを割り当て、
適格なデータソース毎に個々のクレジット・カウントを維持し、
複数の待ち行列を維持し、各待ち行列は、対応するクレジット・カウント要件に従って定義される個々の優先度レベルを有し、
個々の待ち行列に各データソースを割り当て、前記個々の待ち行列は、前記データソースのクレジット・カウントにより満たされるクレジット・カウント要件を有し、
前記データソースが割り当てられる前記待ち行列の前記優先度レベルに従って、待ち行列から出すために少なくとも1つのデータソースを選択し、
前記選択されたデータソースの前記クレジット・カウントから前記クレジット残高へクレジット数を転送し、前記クレジット数は、待ち行列から出されたデータ量に対応し、前記適格なデータソースが不適格なデータソースとして再分類されるとき、前記クレジット残高へ適格なデータソースのクレジット・カウントを転送する、
よう動作させる、方法。
【請求項30】
前記適格なデータソースを不適格なデータソースとして再分類するステップは、前記データソースの送信レートが前記データソースに割り当てられたレート制限に達するとき、前記適格なデータソースを不適格なデータソースとして再分類するステップを更に有する、請求項29に記載の方法。
【請求項31】
前記適格なデータソースを不適格なデータソースとして再分類するステップは、前記データソースが送信すべきデータを有しないとき、前記適格なデータソースを不適格なデータソースとして再分類するステップを更に有する、請求項29に記載の方法。
【請求項32】
各データソースは、個々の重みを割り当てられ、
クレジットは、前記データソースにそれらの割り当てられた重みにより決定される比で割り当てられる、
請求項29に記載の方法。
【請求項33】
各適格なデータソースに、その個々の重みに従って、ラウンドロビン割り当て方式でエントリ数を割り当てるステップと、
前記ラウンドロビン割り当て方式に従って、適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップと、
を更に有する請求項32に記載の方法。
【請求項34】
各適格なデータソースがそのクレジットの割り当てを受けたとき、正の残高を維持するステップ、
を更に有する請求項33に記載の方法。
【請求項35】
前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるステップ、を有する請求項32に記載の方法。
【請求項36】
実質的に通常の送信レートを維持するレートでクレジットを割り当てるステップ、を更に有する請求項35に記載の方法。
【請求項37】
適格なデータソースは、負のクレジット・カウントを有することができ、
少なくとも1つの待ち行列は、負のクレジット・カウントにより満たされるクレジット・カウント要件を有する、
請求項29に記載の方法。
【請求項38】
前記少なくとも1つのスケジューラは、二次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスを実行する、請求項29に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は概括的にはレート整形された(rate-shaped)トラフィックの存在における重み付けされた公平な待ち行列管理〔キューイング〕(weighted fair queuing)のための方法およびシステムに関し、より詳細には、重み付けされた公平な待ち行列スケジューラ内で競合し合う子に対するレート制限およびレート保証を統合することを許容する、フレーム・ベースのトラフィックについての重み付けされた公平な待ち行列管理を提供する方法およびシステムに関する。
【背景技術】
【0002】
データ・パケットを転送するどのコンピュータおよび通信ネットワークも、データ・トラフィックが特定のレートでネットワークを通って進行することを保証するために何らかの形のスケジューリングを実装する必要がある。どの所与の時点でも、ネットワークは、該ネットワークを通じた転送を待っているデータ待ち行列を含む数十万またさらには数百万もの接続を有することがありうる。ネットワーク要素がこれらのデータ待ち行列を公平かつ適時な仕方で処理できるようにするために、何らかの形のスケジューリングが必要とされる。
【0003】
典型的には、スケジューラは、ネットワークを通じたデータの伝送をスケジュールするためにデータ待ち行列と相互作用する。スケジューラは、選択された子もスケジューラであることがあり、そのスケジューラがその子から選ばなければならないという意味で、階層的であることができる。スケジューラは、利用可能な(available)データをもつ適格な(eligible)データ待ち行列または他の適格な子スケジューラから、データ送信の順序を決定する。一般に、データを待ち行列に入れるのは別個のプロセスであるが、該別個のプロセスは、データの利用可能性または子の適格性を宣言する仕方においてスケジューリングに結合されている。スケジューラは定期的に、あるいは要求があったときに、データを送信する元となるべき、利用可能なデータをもつ子を選択する。階層的なスケジューラは選択された待ち行列からのデータの送信を確立する。
【0004】
図1は、スケジューリング・プロセス12を含む従来技術のデータ・システム10を示している。ここで、データ経路は一連のデータ待ち行列14a、14b、14c、14dおよび14e(まとめてデータ待ち行列14として参照される)ならびにマルチプレクサ16a、16b(まとめてマルチプレクサ16として参照される)を含む。
図1には物理的なユニットとして示されているが、典型的なスケーラブルな実装では、マルチプレクサは物理的に存在するわけではなく、スケジューラによる、送信すべきデータ待ち行列14の選択によって含意される。スケジューリング・プロセス12は、利用可能なデータ(DA: data available)をもつデータ待ち行列14のどれから選択してもよいが、実装の階層的な性質のため、スケジューリング・プロセス12は子スケジューラ18にデータ待ち行列14dおよびデータ待ち行列14eから選択をするよう要求しなければならない。すると子スケジューラ18は適切なデータ待ち行列14d、14eを選択する。この例では、スケジューリング・プロセス12はデータ待ち行列14a、14bおよび14cは直接選択してもよい。
【0005】
一つの従来技術の重み付けされた公平な待ち行列管理プロセスが、Lyonに対して発行された米国特許第7,373,420号(以下「’420特許」)に開示されており、その内容全体はここに参照によって組み込まれる。
図2は、’420特許の重み付けされた公平な待ち行列管理プロセスを示している。これは、どの待ち行列にクレジットを与えるかを決定するために、各データ待ち行列についての割り当てられた重みを使う逆クレジット管理システムを含む。基本的には、逆クレジット管理のある重み付けされた公平な待ち行列管理(WFQ-ICM: weighted fair queuing with inverse credit management)スケジューラ20は二つの相補的なプロセスを含む:WFQクレジット分配器22および送信選択器24である。送信選択器24は典型的にはラウンドロビン式に動作し、利用可能なデータおよび正のクレジットをもつ各子が順次データを送信する。
【0006】
クレジット・プロセス22は、子に対して、現在のクレジットが該子についての利用可能データ量(ADA: amount of data available)より少ない場合、クレジットを付与する。任意の所与の時点において各子が集めたクレジット量が子クレジット状態データベース26において追跡される。子当たりのクレジット量は決してその子のADAを超えることはない。何らかの時点において子がもつクレジットがそのADAより少ない場合、その子はクレジット分配器22に含められ、そこでより多くのクレジットを求めて競合する。
【0007】
送信選択器24は、正のクレジット・カウントをもつ子を、データを送信するよう選択する。子がデータを送信すると、子クレジット状態データベース26においてクレジットがその現在クレジット量から差し引かれ、クレジット数より大きなADAをもつ他の子への再分配のためにクレジット分配器22に返される。クレジット分配器22は、子がクレジットを費やすのと同じレートでクレジットを付与する(すなわち残り残高はない)。よって、WFQ-ICMスケジューラ20のキーとなる要件は、システムが、あらゆる時点において、各子から送信のために利用可能なデータがどのくらいあるかを厳密に知る必要があるということである。この要件は、子がまだ利用可能なデータがあるときに自らを不適格と見なすことを妨げ、レートに基づいて適格性を決定するオーバーレイ・プロセスを実装することを事実上不可能にする。基本的に、レート制限はデータをもつ子に、送信を止めるまたは親スケジューラに対して利用可能なデータをもたないことを強制することができる。この制限は、階層が何レベルあってもADAがすべての子孫待ち行列を含む階層的スケジューラに対しても重荷となる――複数のスケジューリング・レベルの間で事実上スケジューリング・プロセスを結合するのである。
【0008】
したがって、必要とされているのは、レート整形されたトラフィックの存在において使用されうる逆クレジット管理のある重み付けされた公平な待ち行列管理のための方法、システムおよび装置である。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は、有利には、子の適格性およびクレジット分配に基づいて通信ネットワークにおける送信のためのデータをスケジューリングするための方法およびシステムを提供する。概括的に言って、逆クレジット管理のある重み付けされた公平な待ち行列管理のためのスケジューラがレート整形されたトラフィックの存在において使用されうる。それにより、重み付けされた公平な待ち行列スケジューラの中で競合する複数の子に対するレート制限およびレート保証の統合が可能になる。
【課題を解決するための手段】
【0010】
本発明のある側面によれば、通信ネットワークにおいて送信のためのデータをスケジューリングするシステムがクレジット分配器および送信選択器を含む。通信ネットワークは複数の子を含む。送信選択器はクレジット分配器に通信上結合される。クレジット分配器は、適格な子および負のクレジット・カウントももつ子のうちの少なくとも一つにクレジットを付与するよう動作する。各クレジットはデータ送信のために使用可能である。クレジット分配器はさらに、利用可能な未分配のクレジットの総量を表すクレジット残高を維持し、付与されたクレジットの比に関して、子の間での公平性に影響し、付与されたクレジットをクレジット残高から控除するよう動作する。送信選択器は、少なくとも一つの適格であり(eligible)かつイネーブル〔有効化〕された(enabled)子を、待ち行列から出すために選択し、適格でありかつイネーブルされた子の選択を、正のクレジットをもつ適格でありかつイネーブルされた子に偏らせ、待ち行列から出すために選択されたデータの量に対応するクレジットをクレジット残高に追加するよう動作する。
【0011】
本発明のもう一つの側面によれば、通信ネットワークにおいて子にクレジットを分配する方法が提供される。各クレジットは、ある量のデータ送信のために使用可能である。クレジットは、適格なイネーブルされた子および負のクレジット・カウントももつ子のうちの少なくとも一つに対して付与される。利用可能な未分配のクレジットの総量を表すクレジット残高が維持され、付与されたクレジットがクレジット残高から控除される。
【0012】
本発明のさらにもう一つの側面によれば、通信ネットワークにおける送信のためにデータをスケジューリングする方法が提供される。通信ネットワークは複数の子を含む。複数の送信制御待ち行列が確立され、待ち行列から出していく。各送信制御待ち行列は、対応する適格な子の少なくとも一つの識別子を含むことができ、対応するクレジット・カウント要件に従って定義される優先度レベルを有する。各適格な子は、前記複数の送信制御待ち行列の一つに割り当てられる。各適格な子は、その割り当てられた送信制御待ち行列のためのクレジット・カウント要件を満たすクレジット状態をもつ。少なくとも一つの適格な子が、該適格な子に対応する送信制御待ち行列の優先度レベルに従って、待ち行列から出すために選択される。待ち行列から出されるデータの量に対応するクレジットがクレジット残高に加えられる。各適格でありかつイネーブルされた子は、前記送信制御待ち行列の一つにおいて表現される。
【図面の簡単な説明】
【0013】
本発明のより完全な理解ならびにその付随する利点および特徴は、以下の詳細な記述を参照し、付属の図面との関連で考慮することによってより容易に理解されるであろう。
【
図1】例示的な従来技術のデータ・スケジューリング・プロセスのブロック図である。
【
図2】例示的な従来技術の、逆クレジット管理のある重み付けされた公平な待ち行列管理によるデータ・スケジューリング・プロセスのブロック図である。
【
図3】本発明の原理に基づいて構築される、例示的な、逆クレジット管理のある重み付けされた公平な待ち行列管理によるデータ・スケジューリング・プロセスのブロック図である。
【
図4】本発明に原理に基づいて構築される、例示的なクレジット分配器のブロック図である。
【
図5】本発明の原理に基づく、例示的なクレジット分配器プロセスのフローチャートである。
【
図6】本発明の原理に基づく、適格性の変化に応答しての例示的なクレジット・プロセスのフローチャートである。
【
図7】高い重みの子に対する、例示的な従来技術の、一次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスのブロック図である。
【
図8】本発明の原理に基づいて構築される、高い重みの子に対する、例示的な、二次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスのブロック図である。
【
図9】本発明の原理に基づいて構築される、四つの優先度レベルをもつ、例示的な、二次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスのブロック図である。
【
図10】本発明の原理に基づいて構築される、例示的な基本的な送信選択器のブロック図である。
【
図11】本発明の原理に基づいて構築される、例示的な進んだ送信選択器のブロック図である。
【
図12】本発明の原理に基づく、重み付けされた公平な待ち行列をなす子についての例示的な送信選択プロセスのフローチャートである。
【
図13】本発明の原理に基づく、増加したクレジットおよび適格性の変化に応答しての、例示的な送信選択プロセスのフローチャートである。
【発明を実施するための形態】
【0014】
本発明に基づく例示的な実施形態を詳細に説明する前に、それらの実施形態が主として、重み付けされた公平な待ち行列スケジューラ内で競合し合う子に対するレート制限およびレート保証を統合することを許容する、フレーム・ベースのトラフィックについての重み付けされた公平な待ち行列管理を提供するシステムおよび方法の実装に関係した装置コンポーネントおよび処理ステップの組み合わせにあることを注意しておく。よって、システムおよび方法の構成要素は、適切な場合には、図面において通常のシンボルによって表現され、本発明の実施形態を理解するのに重要な個別的詳細のみを示している。本項の記載の恩恵に接する当業者には容易に明白となるであろう詳細をもって本開示をかすませることがないようにするためである。
【0015】
本項での用法では、「第一」および「第二」、「上」および「下」などといった関係の言辞は、あるエンティティまたは要素を別のエンティティまたは要素から区別するために使っているだけのことがあり、必ずしもそのようなエンティティまたは要素の間の何らかの物理的または論理的な関係や順序を必要とするまたは含意するものではない。「ルート」ノードは、重み付けされた公平な待ち行列管理木における最高レベルのノードまたは階層的な重み付けされた公平な待ち行列管理木のある分枝における最高ノードをいう。特定のノードの「子孫(descendant)」とは、当該ノードより下位のレベルにある任意のノードであって、遡るとその系統が当該ノードまでたどれるものである。同様に、特定のノードの「祖先(ancestor)」とは、当該ノードより上位のレベルにある任意のノードであって、その系統が当該ノードまでたどれるものである。用語「子」〔チャイルド〕または「子ノード」〔チャイルド・ノード〕は、スケジューリング木におけるあるノードの任意の直接的な子孫をいう。一般に、特定のノードとの関係を論じるときには、用語「子」は、当該ノードより1レベル下のノード(スケジューラ・ノードまたは待ち行列)をいう。追加的に、より上位のレベルをもつノードに由来する任意のノードを「子ノード」または「子」と称することがある。
【0016】
本発明のある実施形態は、有利には、レート整形されたトラフィックの存在において使用されうる逆クレジット管理のある重み付けされた公平な待ち行列管理のためのシステム、方法および装置を提供する。システムおよび方法は、重み付けされた公平な待ち行列スケジューラ内で競合する子に対するレート制限とレート保証の統合を許容する。クレジット残高機構が、子が未使用のクレジットを返すときに、クレジットの保存(conservation)を可能にする。前は、未使用のクレジットは、子がどのくらい長くそのレート制限内に留まり、送信すべきデータを持ち続けるかを知ることなく、未使用のクレジットがクレジット分配システムによって付与されていた。
【0017】
さらに、従来技術とは異なり、本発明の実施形態では、子がトグル的に適格な状態を出入りすることが許容される。これにより、子の、レート制限との簡単な統合が許容される。
【0018】
ここで
図3を参照するに、本発明の原理に基づいて構築される、改善された逆クレジット管理をもつ例示的な重み付けされた公平な待ち行列管理スケジューラ28(WFQ-ICM-Plus)が送信選択器30と、クレジット分配器32と、子クレジット状態データベース34とを含む。送信選択器30は、データを送信するために、適格なすべての子のうちから子を選択する。別個の適格性プロセス36が、子が送信のための選択について適格であるかどうかを判定する。適格性プロセス36の動作の詳細は、本発明の範囲外である;重要な考察は、単に、適格性プロセス36が、どの子が選択される資格があるかを判定するということである。最も単純な形では、適格性プロセスは単に、その子における利用可能なデータである。より複雑な形では、利用可能なデータは、階層構造のさまざまなレベルにおけるレート制限を含んでいてもよい。これは、負のクレジットをもつ子が送信選択器30によって送信のために選択される潜在的可能性を有するという点において、従来技術とは異なる振る舞いに影響する。さらに、本発明の諸実施形態は、前に適格であった子を別のプロセスがすぐにディセーブル〔無効化〕する(disabling)可能性を許容する。これも従来技術では不可能であった。
【0019】
クレジット分配器32は、システムについてのすべての余剰クレジットを含んでいるクレジット残高(CB: credit balance)38を含む。クレジット分配器32は、クレジット残高38からのクレジットを、あらゆる適格な子および負のクレジットをもつあらゆる子に付与する重み付けされた公平なプロセスである。クレジット分配器32は、子クレジット状態データベース34において、任意の所与の時点までに各子が集めたクレジットの量を追跡する。
【0020】
従来技術のWFQ-ICMスケジューラとは異なり、本発明の諸実施形態は有利には、どのくらいのデータが利用可能であるかをシステムが精確に知ることは要求しない。その代わり、クレジット分配器32が知る必要があるのは、子が「適格」であるということだけである。クレジット分配器32は、クレジットを、いかなる適格な子にも分配しうる。よって、レート整形器(rate shaper)のような干渉するプロセスは、本発明の諸実施形態との関連で容易に動作しうる。理論的には、子は、該子が現在利用可能な形で有している、あるいは該子が近々送るために適格となるであろうデータの量よりずっと多くのクレジットを受け取ることができる。しかしながら、子が「適格」から「不適格」に遷移するとすぐ、その子がそれまでに獲得したすべてのクレジットは剥奪され、クレジット残高38に返される。
【0021】
送信選択器30は適格な子を、データを送信するよう選択する。一般に、子の選択は、より大きなクレジット・カウントをもつ子を優先する〔バイアスを与える〕。よって、小さな正のクレジット・カウントまたさらには負のクレジット・カウントをもつ子よりも、大きな正のクレジット・カウントをもつ子が送信のために選択される可能性が高い。子がデータを送信すると、子クレジット状態データベース34において、その現在のクレジット量からクレジットが差し引かれ、他の適格な子および負残高の子への再分配のためにクレジット残高38に返される。
【0022】
従来のWFQ-ICMスケジューラは、正のクレジット・カウントのもとで開始されたフレームの送信を完了させるため以外には、負のクレジット・カウントをもつ子からの送信は許容しなかった。しかしながら、この従来技術は、クレジットを獲得したのちに子がディセーブルされるあるいは送信するために不適格であることを許容しなかったので、この機能を必要としていなかった。
【0023】
図4を参照するに、例示的なクレジット分配器32の簡略化された実装が示されている。一般に、ラウンドロビン式クレジット分配器40は、適格な子および負のクレジットをもつ子に対するクレジットの分配を、スケジューラ28からデータ送信で出ていくのと同じレートで行う。換言すれば、送信選択器30からの送信機会が、クレジット分配器32のためのクレジット分配機会をトリガーする。
【0024】
あるクレジット分配ラウンドの間、適格な子および負のクレジットをもつ子のそれぞれは、その重み値に対応する数のエントリーをそのラウンドにおいて割り当てられる。各子は、そのラウンドにおいて、ラウンドロビン(RR: round robin)分配待ち行列42の先頭に達したときに一つのクレジットを得る。換言すれば、一つのRRラウンドは、各子に一つの「クレジット」を付与する。こうして、一クレジット・ラウンド全体については、各子「i」(子
iと表される)はw
i個のクレジットを付与される。ここで、「w
i」は子
iについての重み値である。各子iにw
i個のクレジットを分配するために必要とされるRRラウンドの数はw
iである。クレジット・ラウンドは、すべての子
iがw
i個のクレジットを付与されたときに終了する。よって、クレジット・ラウンドの長さは、最大のw
iをもつ子によって指定される。子がそのラウンドについてのめいっぱいの〔フルの〕重みを受け取ってしまった場合は、その子は一時的に重み超過待ち行列(weight exceeded queue)44に入れられ、次のクレジット・ラウンドまでその子にはさらなるクレジット分配はなされない。
【0025】
以前のWFQ-ICMスケジューラでは、クレジット分配は厳密に送信と同じレートで進行するため、クレジット残高38が残っていることはなかった。分配のために利用可能なクレジットは、送信選択器30から返されたクレジットである。
【0026】
これに対し、本発明の諸実施形態は、クレジット分配器32が、必要であれば正のクレジット残高32を担持することを許容する。クレジット残高32は、前に適格だった子が正のクレジットを保持したまま不適格になるため、非常に大きくなることがある。この潜在的に大きなクレジット残高を補償するため、クレジット分配器32は、送信選択器30からはいってくる厳密なクレジット・バイト数(「N」として表される)を、子に対して付与されるクレジット・バイト数(「M」として表される)として付与することは要求されない。よって、クレジット残高38が過剰クレジットを含む(すなわち、CB>0)とき、クレジット分配器32は、単にRR分配待ち行列42のフルのラウンド・ロビン・ラウンドについて付与されるクレジット数を増してM>Nにすることによって、クレジット分配を加速する。換言すれば、あるRRラウンドについて、クレジット分配器32はMバイトのクレジットを各子に、その番において分配する。過剰なクレジットがあればそれは次のRRラウンドに持ち越し〔キャリーオーバー〕されてもよい。他方、Mが高められている間にクレジット残高38が0まで落ちる場合には、分配の頻度(F: frequency)はM×F=Nとなるよう減らされてもよい。それにより、当該RRラウンドの終わりまで各子にMバイトのクレジットを付与することを続けることが許容される。RRラウンド全体について付与されるクレジット数を上げることは、子どうしの間の公平さが維持されることを保証する。上げられたMバイトのクレジットの分配におけるいくつかの例外を注意しておく価値がある:Mバイトのクレジットを付与されることによってその重みを超えるであろう子は、その重みの残り分しか付与されないし、送信するために適格でないが0クレジットに戻るためにクレジットを集めている子は、0クレジットに戻るために必要とされるクレジット数より多くを付与されることは決してない。制御待ち行列ベースであれ、ベクトル・ベースであれ、他の何らかの方法であれ、クレジット分配器の他の実施形態も、ここに述べた方法の概念と同様の、クレジット分配の「通常」レートを上げることによって、クレジットの分配を加速することができる。
【0027】
図5を参照するに、クレジットを分配する機会に応答してクレジット分配器32によって実行されるステップを記述する例示的な動作フローチャートが与えられる。
図5では、クレジット分配器32は送信選択器30によって、送信されるデータNバイトについて1回トリガーされる(ステップS100)が、代替的な実装は同じことを達成するために定期的なトリガーをもつことができる。本発明の代替的な諸実施形態では、クレジット分配器32は全送信バイト・カウントの実際の知識を持っていてもよく、それによりクレジットはNバイトの倍数またはNバイトの一部分(fractions)で分配されてもよいことを注意しておくことが重要である。以下のプロセスはまだ適格性の変化に対応するものではなく、適格性の考察は
図5に関係してのちに考慮に入れられることも注意しておくべきである。
【0028】
クレジット分配器32がRRラウンドの始まりにない場合(ステップS102)、すなわち、すでに現在のRR待ち行列中のいくつかの子にクレジットが分配されている場合、プロセスはクレジット分配先として、現在のRR待ち行列の先頭にある子
iを選択する(ステップS104)。この場合、クレジット付与値Mの、前の状態が使われることになる。しかしながら、クレジット分配器32が新たなRRラウンドを開始する準備ができている場合(ステップS102)、すなわち前のRRラウンドが完了している場合には、クレジット分配器は、クレジット分配ラウンドが継続されるべきか、あるいは完全に新しいクレジット・ラウンドが必要とされているかを判断する(ステップS106)。これがクレジット・ラウンドの始まりであれば、RR待ち行列がスケジューリングのために選択される(ステップS108)。この時点まで、単一のRR待ち行列をサポートするスケジューリング・プロセスのみを論じてきたので、ステップS108は単にスケジューリング・パラメータをリセットして、再びそのRR待ち行列の子のすべての処理を開始することになる。しかしながら、
図8との関連で後述するように、本発明のある例示的な実施形態は、子の複数の優先度を区別する複数のRR待ち行列を許容し、その場合、ステップS108は異なるRR待ち行列を処理のために選択することができる。これがクレジット・ラウンドの始まりでない場合、新しいRR待ち行列は必要とされない。
【0029】
判断ブロックS106に戻ると、クレジット・ラウンドがちょうど始まるところである場合には、クレジット分配器32は過剰なクレジット残高が存在するか否かを判定する(ステップS110)。この場合、単一の送信イベントが生成できる(N)よりも多くのクレジットである。過剰なクレジット残高がある場合、クレジット分配器32は加速されたクレジット分配サイクルにはいる(ステップS112)。ここでは、このクレジット分配イベントおよび現在のRRラウンドにおける残りの諸クレジット分配イベントの間のクレジット分配量(M)が、クレジット分配イベントから次のクレジット分配イベントまでの間に送信されるクレジット(N)を超える。すなわちM>Nである。そうでなく、残っているクレジット残高がない場合(ステップS114)には、このクレジット分配イベントおよびこのRRラウンドの残りの間に分配されるクレジットの量は、クレジット分配イベント間に典型的に送信されるクレジットの量に等しいように設定される。すなわちM=Nである(ステップS114)。本発明の他の実施形態は、判断S110においてNについて異なる閾値を使ってもよい。たとえば、クレジット分配を加速する決断にヒステリシスを注入するために使われる静的または動的な数をxとして、CB>xバイトである。
【0030】
クレジット分配は、現在のRR待ち行列の先頭にある子
iを選択することによって始まる(ステップS104)。クレジット残高が現在のRRラウンドの間に各子に付与されるべきクレジット数以上である(ステップS116)、すなわちCB≧Mである場合には、子
iは、そのクレジット・ラウンドにおけるその残りの重みと、そのクレジット・ラウンドの間に付与されるべきクレジット数Mのうちの少ないほうを付与される(ステップS118)。子
iに付与されるクレジットの量は、クレジット残高から控除され(ステップS120)、そのRRラウンドはRR待ち行列における次の子に進められる(ステップS122)。
【0031】
判断ブロックS116に戻ると、クレジット残高が子
iについての残りの重みを超えている限り(ステップS124)、子
iはその残りのクレジット重みを付与される(ステップS126)。子
iに付与されるクレジットの量は、クレジット残高から控除され(ステップS120)、そのRRラウンドはRR待ち行列における次の子に進められる(ステップS122)。しかしながら、子
iについての残りの重みがクレジット残高を超える場合(ステップS124)には、クレジットは分配されず、現在のクレジット分配イベントは終了し、子
iは次のクレジット分配イベントについてRR待ち行列の先頭に留まる。
【0032】
ここで
図6を参照すると、子の適格性状態の変化に応答してクレジット分配器32によって実行されるステップを記述する例示的な動作フローチャートが与えられる。クレジット分配器32は子
iについての適格性状態における遷移を検出する(ステップS128)。適格性の遷移は、(スケジューラ内部または外部の)別個のプロセスによって、たとえば遷移する子についてのフラグをセットするまたはクリアする、イベントを送る、またはメッセージを送ることによって、宣告されてもよい。子
iが不適格から適格に遷移しており(ステップS130のYES分枝)、子
iがすでにクレジット・システム内にある(ステップS132のYES分枝)場合、クレジット分配器32は単に、子
iについてのペンディングの除去フラグをクリアする(ステップS134)。ステップS150を記述する際に後述するように、このペンディングの除去フラグは、正しい状態に戻ったときに子がクレジット分配器32から除去されることを要求するためにセットされたものである。子
iは、その重みおよびRR待ち行列における順位によって決定されるクレジットを受け取ることができるままである。しかしながら、子
iが現在、クレジット・システム内になく(ステップS132のNO分枝)、そのクレジット・ラウンドにおいてその重み
iを超過するクレジットを受け取っているのでない(ステップS136のNO分枝)場合には、子
iは、RR待ち行列の末尾で待ち行列に入れられ(ステップS138)、今のクレジット・ラウンドにおける次の自分の順番においてクレジットを受け取ることになる。子
iが今のクレジット・ラウンドにおいてその重み
iをすでに超過している場合には(ステップS136のYES分枝)、子
iは重み超過待ち行列の末尾で待ち行列に入れられ(ステップS140)、次のクレジット・ラウンドになるまで再びクレジットを受け取ることはない。
【0033】
判断ブロックS130に戻ると、遷移する子が新たに適格になった子でない場合、子は不適格な状態に遷移していることになる。新たに不適格になった子
iが現在、正のクレジットをもつまたはクレジットをもたない(ステップS142)、すなわちクレジット
i≧0の場合、過剰なクレジットはもしあればクレジット残高に返され(ステップS144)、子
iについてのクレジット・カウントは0に設定される(ステップS146)。次いで子
iはクレジット・システムから除去される(ステップS148)。クレジット・システムからの除去は、その子がRR待ち行列の先頭まで進んでいくのを待って、そのRR順番の際に、その子にクレジットを付与する代わりにその子を除去することによって、最も容易に達成されることを注意しておくべきである。この方法は、除去フラグの一つの潜在的な用途である。しかしながら、代替的な諸実施形態は、新たに不適格になった子
iが、そのクレジットをクレジット残高に返納した際にすぐシステムから除去されることを許容してもよい。
【0034】
再び判断ブロックS142に戻ると、新たに不適格になった子が負のクレジットをもつ、すなわちクレジット
i<0である場合、それが除去準備ができていることを示すために、単にその除去フラグがセットされる。しかしながら、負のクレジット残高をもつ新たに不適格になった子は、クレジット残高からその赤字分のクレジットを改めて獲得するまで、クレジット・システムから除去されないことを注意しておくべきである。すなわち、子
iはクレジット
i=0となるまで除去されない。
【0035】
ここで
図7に目を転じると、ブロック図が、重みが高い子についての、例示的な従来技術の、一次元の重み付けされたインターリーブ式ラウンドロビン(WIRR: weighted interleaved round robin)によるスケジューリング・プロセス46を示している。WIRRスケジューリング・プロセス46は二つの待ち行列を利用する:ラウンドロビン(「RR」)待ち行列48と、重み超過待ち行列50である。そのクレジット・ラウンドにおいてクレジットを受け取るすべての子は最初はRR待ち行列48内で始まる。
図7に示されるような開始条件を想定する。ここで、RR待ち行列には四つの子(たとえばA、B、CおよびD)があり、Aは重み10、Bは重み4、CおよびDはそれぞれ重み2をもつ。一つのクレジット・ラウンドにおけるRRラウンドの数は最高の重みをもつ子によって決まるので、子Aが重み10をもつので、一クレジット・ラウンドに10のRRラウンドがあることができる。
【0036】
最初のRRラウンドにおいては、クレジットはD、つまりRR待ち行列48の先頭にある子に与えられ、次いでDはRR待ち行列48の末尾に移される。同様に、C、BおよびAにクレジットが与えられ、各子はRR待ち行列48の末尾に移され、Dが待ち行列の先頭に戻る。RRラウンド2においては、Dにクレジットが与えられ、このクレジット・ラウンドの間にDに分配されたクレジットの合計がその重み以上になる。すなわち、クレジット
D≧現在のRRとなる。こうして、Dは重み超過待ち行列50に移され、このクレジット・ラウンドの終わりまで待つ。同様に、Cにクレジットが与えられ、次いでCは重み超過待ち行列50に移される。最後に、BおよびAにクレジットが与えられ、BおよびAはそれぞれRR待ち行列48の末尾に移される。ラウンド3の間には、Bには1クレジットが与えられ、Aには1クレジットが与えられる。ラウンド4の間には、やはりBには1クレジットが与えられ、Aに1クレジットが与えられる。しかしながら、子Bは、そのクレジット・ラウンドについてのクレジットのおける重みを受け取ってしまったので、重み超過待ち行列50の末尾に移され、RR待ち行列48にはAだけが残る。残りのRRラウンド、たとえばラウンド5〜10の間には、ラウンド毎に1クレジットが子Aに付与される。
【0037】
この一次元WIRRについての有効クレジット分配シーケンスは:
DCBA、DCBA、BA、BA、A、A、A、A、A、A
となる。
【0038】
こうして、クレジット分配シーケンスの1セグメントの間、子Aへの7回の連続した分配のバーストがある。この積み重なったシーケンスは、子Aがクレジットを非常に急速に蓄積することができるので、子Aがデータ切れになる場合、システムに潜在的な安定性の問題を呈する。
【0039】
本発明のある実施形態は、高い重みをもつ子についてクレジット分配のなめらかなスケジューリングを容易にするために、新たな二次元のWIRRスケジューラを導入することによって、WIRRスケジューリング・プロセスを改善する。
図8は、本発明の原理に基づいて構築された、例示的な二次元WIRRスケジューラ52のブロック図を与えている。二次元WIRRスケジューラ52は、単一のRR待ち行列に代わって、帯域幅または重みカテゴリーを表す複数のRR待ち行列を実装する。スケジューリングの第一の次元は帯域幅カテゴリー内の次元であり、この次元では、WIRRクレジット・ラウンドは、同じ帯域幅カテゴリー内の子どうしの間の公平さを与える。スケジューリングの第二の次元は帯域幅カテゴリーどうしの間であり、この次元では、第一の次元のスケジューラでサービスするRR待ち行列の間での重み付けされたインターリーブにより、帯域幅カテゴリーに関連付けられた帯域幅乗数(bandwidth multiplier)を達成する。
【0040】
二次元WIRRスケジューラ52は、関連付けられた重み超過待ち行列をもつRR待ち行列の組を、少なくとも二つ含んでいてもよい。ここで、各待ち行列「i」は、帯域幅乗数「n
i」をもつ帯域幅カテゴリーとして構成設定される。子らは、RR待ち行列内では、WIRRラウンドで調整された重み(後述)に基づいてインターリーブされ、RR待ち行列間ではフルWIRRラウンドどうしの間で待ち行列にサービスする順序によってインターリーブされる。第二の次元のスケジューラでは、乗数n
iをもつRR待ち行列
iは、かける1(x1として図示される)待ち行列と同数のフルWIRRラウンドでn
i回実行される。たとえば、
図8の二次元WIRRスケジューラ52において、乗数4をもつ高優先度(HP: high priority)RR待ち行列54、HP重み超過待ち行列56、乗数1をもつ低優先度(LP: low priority)RR待ち行列58およびLP重み超過待ち行列60がある。HP待ち行列54WIRRクレジット・ラウンドは、LP待ち行列のWIRRクレジット・ラウンド実行毎に4回実行される。
【0041】
RR待ち行列を実行するための固定パターンは、そのパターンが作業保存的(work conserving)である限り受け容れ可能である。作業保存的とは、RR待ち行列のいくつかが適格な子を含んでいない場合でも有用なスケジューリング決定ができることを意味する。たとえば、x4乗数をもつHP待ち行列54およびx1乗数をもつLP待ち行列58を有する二次元WIRRスケジューラ52について、クレジット分配パターンはHP、HP、HP、HP、LP、以下繰り返し、である。WIRRクレジット・ラウンドについて使用される重みは、第二の次元の乗数によってスケーリングされる。ここで、調整された重みはフルの重みをn
iで割ったものである。
【0042】
たとえば、
図7に関係する議論において上で使ったのと同じ重みおよび子を使って、
図8の二次元WIRRスケジューラ52において、子はAおよびBがHP待ち行列54内にあり、CおよびDがLP待ち行列58内にあるよう、配列されうる。子Aは、調整された重み2.5をもち、それによりそのフルの重みは10のままである(たとえば、調整重み×乗数=フルの重み;2.5×4=10)。同様に、Bはそのフルの重み4を反映する調整された重み1をもつ(たとえば、1×4=4)。LP待ち行列58についての乗数は1なので、CおよびDはそのもとの重み2を保持する。
【0043】
二次元WIRRの最初のWIRRクレジット・ラウンドの間は、HP待ち行列54だけがサービスされる。こうして、WIRRラウンド1の間のクレジット分配器はBに1クレジットを付与し、Aに2クレジットを付与し、子Aについての残り重み0.5を保持する。WIRRラウンド1の間クレジット・ラウンド2の間には、今一度、HP待ち行列54だけがサービスされるが、今回はBは1クレジット付与され、Aは3クレジット付与される(たとえば、このラウンドについての2.5重み+0.5の重み残余=3クレジット)。第三のWIRRラウンドはWIRRラウンド1の反復であり、Bは1クレジットを受け取り、Aは2クレジットを受け取り0.5余る。第四のWIRRラウンドはラウンド2の繰り返しであり、Bは1クレジット付与され、Aは3クレジット付与される。第五および最終WIRRラウンドはLP待ち行列58にサービスし、子CおよびDはそれぞれ2クレジットを受け取る。こうして、二次元WIRRスケジューラ52についてのフル・クレジット・ラウンド当たりの有効クレジット付与順序は:
H H H H L
(BA,A)、(BA,A,A)、(BA,A)、(BA,A,A)、(DC,DC)
となる。最大の連続分配バーストがAへの3の分配まで減らされていることを注意しておくべきである。これは、従来技術の一次元WIRR46の最大バーストの半分未満である。また、この手順は、同時には一つのRR待ち行列しか使われないので、単一の重み超過待ち行列をもって実装されてもよいことも注意しておくべきである。
【0044】
非O(1)アルゴリズム、すなわち一般に知られた「ラージO」記法("big-O" notation)を使ってO(1)以外の計算量をもつ階層的スケジューラは、第二の次元については、スケーラビリティが必要とされないので、満足いくものでありうる。上に示したように、強いインターリーブは、最高の重みを付けられた子からのバーストの長さを制限する。上ではクレジット分配器のコンテキストにおいて論じているが、本発明の二次元WIRRスケジューラ52は、送信選択器30によって送信待ち行列から出すのをスケジューリングするためのプロセスとして使われることができる。
【0045】
二次元WIRRの概念は、2より多くの優先度レベルをもつシステムを実装するよう拡張されてもよい。
図9は、四つの優先度RR待ち行列によって表される四つの優先度レベルをもつWIRRスケジューラ62のブロック図を与えている。四つの優先度RR待ち行列とは:高優先度(HP)待ち行列64、中優先度(MP: medium priority)待ち行列66、低優先度(LP)待ち行列68および超低優先度(VLP: very low priority)待ち行列70である。待ち行列間の固定乗数は、スケジューリングの大きなダイナミックレンジを与えるよう選択される。たとえば、任意のRR待ち行列における任意の子についての最高の調整された重み値が8であり、最小の調整された重みが1であるとすると、任意の子についての最大総重みは4096(8
4)である。待ち行列選択は、重みに基づいて計算され、よって、すべての待ち行列が子を含むとき、585スケジューリング・イベント毎に、HP待ち行列64は512回選択され、MP待ち行列66は64回選択され、LP待ち行列68は8回選択され、VL待ち行列70は1回選択される。WIRRスケジューラ62は作業保存的であり、よって子を含まない待ち行列は選択されない。計算されたまたは構成設定されたクレジット分配パターンは、より大きな重みの待ち行列のスケジューリング機会を最大限分散させようとするべきである。さらに、フルの標準的なWIRRラウンドが、待ち行列が選択されるたびに実行されるべきである。
図9に描かれている待ち行列重みは例示的なものであり、RR待ち行列を重み付けするための唯一の戦略を表すものではない。たとえば、異なる重み付け戦略は、示されている指数的な戦略の代わりに、待ち行列重みを一様に段階変化させる(uniformly step)ことを選んでもよい。もう一つの戦略は、システムにおいてアクティブであるこの重みに依存して修正される、動的な待ち行列重み(乗数)を実装することができる。
【0046】
クレジット分配器32は、0でないクレジット残高に反応して、クレジット分配のレートを上げる。換言すれば、クレジット分配加速(CDA: credit distribution acceleration)である。これは
図5ではM>Nとして描かれている。CDA法は、同じクレジット・ラウンド内の複数のRRラウンドを、RR待ち行列を通す単一の処理パスに組み合わせる。これは、任意の単一の帯域幅カテゴリーのクレジット・ラウンド内で達成され、よって、スケジューリングの第二の次元は明示的には関わってこない。この方法は、RRラウンドの最初と最後の知識を必要とし、各RRラウンドの始まりにおいてCDAまたはMの大きさを評価する。CDAラウンドにおいて組み合わされるRRラウンドの数は典型的には2である(M=2)。クレジット残高38が特に大きい場合にはM=4に上げることも価値があると思われる。クレジット残高38に対して比較するための閾値として潜在的に構成設定される。
【0047】
ある代替的な実施形態は、RRラウンドの最大数を単一のパスに組み合わせることを、現在のクレジット・ラウンドにおける各子のフルの残りの重みを割り当て、それによりWIRRクレジット・ラウンドを終わらせることによって行う。さらにもう一つの実装は、RRラウンドに関与する子の数を計算し、加速を、1+CB/「子の数」に設定し、事実上、現在のRR待ち行列を通す単一のパスにおいてクレジット残高38をなくす。
【0048】
CDA法は、クレジットを分配する機会をスキップすることによって、加速されたRRラウンドの途中でクレジット分配レートの通常への復帰を許容する。換言すれば、Mが2であり、クレジット残高38が0に戻されている場合、1回おきの機会にのみクレジットを分配する。たとえば、M×N×0.5=Nである。継続される加速のための試験は簡単である――クレジット残高がMと残り重み
iとのうちの最小よりも大きければ、RR待ち行列の先頭にある子
iがクレジットをサービスされることができる。
【0049】
クレジット分配加速(「CDA」)は、任意の優先度レベルにおいてRRラウンド毎に実行されてもよい。CDAはRRラウンドの始まりにおいてトリガーする。RRラウンドの始まりにおいて選ばれる加速因子Mは、RRラウンド全体に適用される。子に、1以下の調整された重みを割り当てることは避けるべきである。というのも、調整された重み>1をもつ子だけがこの形の加速に参加できるからである。クレジット・ラウンドにおける残り重みがCDAによって指定されるクレジットより少ない子は、その残り重みを受け取るだけである(すなわち、加速する機会は失われるまたは部分的に失われる)。
【0050】
ここでクレジット分配器32から、本発明の原理に基づいて構築された対応する送信選択器30に注意を移す。従来の逆クレジット管理(ICM: inverse credit management)スケジューラは、正のクレジットをもつ子だけにサービスする一つだけの送信待ち行列を含んでいた。子は、たとえば、ラウンドロビン順に従って送信のために選択され、送信待ち行列の末尾において待ち行列に入れられた。次いで、待ち行列の先頭にある子が送信のために選択された。
【0051】
図10は、本発明の原理に基づいて構築された、例示的な基本的な送信制御構造72を示している。本発明のある実施形態によれば、基本的な送信制御構造72は三つの別個の送信制御待ち行列を含む;正の待ち行列74、負の待ち行列76および極負の待ち行列78である。送信するために適格、たとえば利用可能なデータを有し、かつイネーブルされているすべての子は、これらの送信制御待ち行列の一つに存在する。優先度選択器80は、厳密な優先度システムに基づいて、三つの送信制御待ち行列のうちどれかを、送信元となるよう選択する。換言すれば、子を含んでいる最高の優先度の送信制御待ち行列が常に、より低い優先度の送信制御待ち行列より先に選択される。各送信制御待ち行列内では、子は単純なラウンドロビン方式で選択される。すなわち、重みなしである。送信機会は対応するクレジット分配機会をトリガーする。
【0052】
子らは、有しているクレジット数に基づいて、送信制御待ち行列中に分類〔ソート〕される。子は、そのクレジット残高が変わるにつれて、送信制御待ち行列間で動的に移される。0より大きなクレジット・カウントをもつ子は、正の待ち行列74に入れられる。子が不適格になるときに本システムの「クレジット・ダンピング(credit dumping)」側面がなければ、予期される振る舞いは、正のクレジット待ち行列74からの子だけが送信するというものであろう。本発明はクレジット・ダンピングを許容するので(ここで、クレジット残高がNより大きい)、すべてのアクティブな子によって保持される全クレジットの和が負になることがありうる。負のクレジット・カウントをもつ子は負の待ち行列76に入れられる。
【0053】
標準的な正の送信待ち行列74および負の送信待ち行列76は、正常なクレジット・カウントをもつ子を含む。正の送信待ち行列74内の子は、送信するよりやや多くのクレジットを受け取ったものである。一方、負の送信待ち行列76内の子は、送信するよりやや少ないクレジットを受け取ったものである。標準的な正の送信待ち行列74からの送信は、不適格性がクレジット残高38に対する摂動をトリガーしない場合には、正常動作モードである。しかしながら、送信後は、子のクレジット・カウントがクレジット分配器32によって復元されることができるまで、子の多くは負の送信待ち行列76内に保持されることになる。
【0054】
すべてのアクティブな子によって現在保持されているクレジットの和が負になりうることが予見できる。よって、負のクレジット・カウントをもついくつかの子は時折送信しなければならないことがあり、さらにそのクレジット・カウントを減らす。しかしながら、負の間に多数の送信をもつ子は、瞬間的な不公平さを軽減するために別個に取り出してもよい。こうして、閾値、たとえば送信媒体についての最大送信単位に負号を付けたものが設定され、そのような閾値より下の負のクレジット残高をもつ子は極負の待ち行列(extreme negative queue)78に入れられる。極負の待ち行列78からの送信は、クレジット分配器32において非常に大きな余剰クレジット残高38を示唆し、これは特別な注意を要求することがある。極負の待ち行列78は、すべての子がスパイラル式に落ちているのでない限り、子が非常に低いクレジット残高にスパイラル式に落ちていくことを妨げる。極負の待ち行列78からの送信は、システムが不安定となる不健全なクレジット残高38の指標である。クレジット残高38がさらなる増大をしないよう保護するために取ることのできる非常措置は、送信クレジット費消レートを下げることである(たとえば、送信のためにNクレジットの代わりにN/4クレジットを費やす)。一部のデータはNのコストで送信され、他のデータはN/4のコストで送信されるので、データ送信のコストにおけるこの不連続は、重み公平さアルゴリズムに誤差を導入する。しかしながら、これはクレジット残高38の無際限の増大に対して保護する単純な実装である。
【0055】
さらなる実施形態は、
図11に示されるような、より進んだ送信制御構造82を用いる。この進んだ送信制御構造82は、上で論じた三つの送信制御待ち行列を、任意的に利用可能でありうる追加的な待ち行列と組み合わせる。より柔軟なスケジューリングの変更と完全に新しい機能のためである。たとえば、送信制御構造82は、最高優先度バイパス制御待ち行列84を通じて、音声データのパケットを含む子のような厳密な優先度の子を、重み付けされた公平な待ち行列の子と、マージしてもよい。進んだ送信制御構造82および上で論じた方法論は、優先度スケジューリングと重み付けされた公平な待ち行列管理とのこの統合を、最小限のコストで許容する。
【0056】
他の任意的な送信制御待ち行列は、極正の待ち行列(extreme positive queue)86および未知の子の待ち行列88を含んでいてもよい。極正の待ち行列86は、送信システムにおけるブロッキングに起因するクレジット・カウントのスパイクを防止し、それによりクレジット残高の安定性を改善する。極正の待ち行列86は任意的であるが、優先性のない、重みが高い子が迅速にクレジットを積み増すことができるので、これは非常に望ましい機能を果たす。大きなクレジットの蓄積は、その子が不適格になった場合に突然、クレジットがクレジット残高38にダンプして戻されるので、システム安定性に対して危険である。何らかの子が大きなクレジット・カウントをもつ場合、送信選択器30はその子に対してポーリングを行って、その子が上限クレジット閾値に到達する危険があるかどうかを判定するべきである。上限クレジット閾値は、現在のトラフィック・フローのようなパラメータを含む送信媒体の仕様に応じて、システム設計者によって設定されてもよい。その子が上限クレジット閾値を超える場合には、その子は、優先サービスを受けるよう、極正待ち行列86に移されるべきである。未知の子の待ち行列88は、子が、現在のスケジューラにまだ吸収されていない(知られていない)親スケジューラに知られている可能性を許容する。現在のスケジューラがスケジューリングのために選択されており、適格な他の子を持たない場合、必要とされる子を、未知の子の待ち行列88が与える。
【0057】
図12を参照するに、重み付けされた公平な待ち行列の子の選択の間に送信選択器30によって実行されるステップを記述する例示的な動作フローチャートが与えられている。送信選択器30は、その子が新しい選択であるかどうかを判定する(ステップS152)。そうでなければ、送信選択器30は前の選択と同じ待ち行列および/または子からフレームを送信することを続ける(ステップS154)。選択が新しいものであれば(ステップS152)、送信選択器30は、待ち行列から出すための子が存在している、最高の優先度の送信待ち行列を選び(ステップS156)、その送信待ち行列の先頭から、送信のために子
iを選択する(ステップS158)。子が送信のために選択されたのち、送信選択器30は、その子
iについての全利用可能クレジット(クレジット
i)から送信されるバイトの量(「N」)を控除する(ステップS160)。送信選択器30が送信の終わりに到達すると(ステップS162)、子
iがもはや適格でなければ(ステップS164)、子
iは送信システムから除去される(ステップS166)。すなわち、子
iはもはや送信選択器30には見えなくなる。しかしながら、子
iが適格のままであれば(ステップS164)、子
iは、その子の残りクレジット
iの数について適切な送信待ち行列の末尾で再び待ち行列に入れられる。
【0058】
ここで
図13を参照すると、増加したクレジットおよび適格性の変化に応答して送信選択器30によって実行されるステップを記述する例示的な動作フローチャートが与えられている。送信選択器30は、子
iが新しい子であるかどうかを判定する(ステップS170)。新しい子であるとは、その子が送信選択器待ち行列システムに現在はいっていないということを意味する。その子
iが新しくなく、送信選択器30が、その子
iもはや適格ではないと判定する場合には(ステップS172)、子
iが現在データを送信していない場合には(ステップS174)、子
iは送信システムから除去される(ステップS176)。そうでなく子
iは現在送信している場合には(ステップS174)、送信選択器30は今は反応しない。反応は、
図12の待ち行列から出す処理の一環として行われることになる。
【0059】
判断ブロックS172に戻ると、子
iが適格であり、クレジット
iがその子が優先度レベルを変えるのに十分な新しいクレジットを受け取っていることを示す場合(ステップS178)、その子
iが現在送信していない限り(ステップS180)、その子
iは現在の送信待ち行列から除去され(ステップS182)、クレジット
iの数によって示される送信待ち行列、すなわちより高い優先度の送信待ち行列の末尾に入れられる(ステップS184)。
【0060】
さらに、判断ブロックS170に戻って参照すると、子
iが新しい子である場合、送信選択器30は単に子
iを、クレジット
iの数によって示される送信待ち行列の末尾に入れる。
【0061】
本発明は、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアの組み合わせにおいて実現できる。本稿に記載される方法を実行するよう適応されたいかなる種類のコンピューティング・システムまたは装置も本稿に記載された機能を実行するのに好適である。
【0062】
ハードウェアおよびソフトウェアの典型的な組み合わせは、一つまたは複数の処理要素および記憶媒体に記憶されたコンピュータ・プログラムを有する特化したまたは汎用のコンピュータ・システムであって、該コンピュータ・プログラムは、ロードおよび実行されたときに、前記コンピュータ・システムを本稿に記載された方法を実行するよう制御する、コンピュータ・システムであることができる。本発明はまた、本稿に記載される方法の実装を可能にするすべての機能を有し、コンピューティング・システムにロードされたときにそれらの方法を実行できる、コンピュータ・プログラム・プロダクトに埋め込まれることもできる。記憶媒体は、任意の揮発性または不揮発性記憶デバイスを指す。
【0063】
本願のコンテキストにおけるコンピュータ・プログラムまたはアプリケーションは、情報処理機能を有するシステムに特定の機能を実行させるよう意図された命令の組の、任意の言語、コードまたは記法における任意の表現を意味する。そのような命令の組が前記システムに機能を実行させるのは、直接的に、あるいはa)別の言語、コードまたは記法への変換;b)異なる物質形態での再現の一方または両方のあとであってもよい。
【0064】
さらに、上記において特に断りのない限り、付属の図面のすべては縮尺通りではない。特に、本発明は、その精神または本質的な属性から外れることなく、他の個別的な形態において具現されることができる。よって、本発明の範囲を示すものとしては、以上の明細書ではなく、付属の請求項を参照すべきである。
【符号の説明】
【0065】
28 スケジューラ
30 送信選択器
32 クレジット分配機
34 子クレジット状態
36 適格性プロセス
42 RR待ち行列
44 重み超過待ち行列