(57)【要約】      （修正有）【課題】子の適格性およびクレジット分配に基づいて通信ネットワークにおける送信のためのデータをスケジューリングするための方法およびシステムを提供する。【解決手段】適格及び不適格なデータソースに各データソースを分類し、利用可能なクレジットのクレジット残高を維持し、適格なデータソースにクレジット残高からのクレジットを割り当て、適格なデータソース毎に個々のクレジット・カウントを維持し、複数の待ち行列を維持し、個々の待ち行列に各データソースを割り当て、データソースが割り当てられる待ち行列の優先度レベルに従って、待ち行列から出すために少なくとも１つのデータソースを選択し、選択されたデータソースのクレジット・カウントからクレジット残高へクレジット数を転送し、適格なデータソースを不適格なデータソースとして再分類し、再分類されたデータソースのクレジット・カウントをクレジット残高へ転送する。【選択図】図６
2015109672.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータソースを有する通信ネットワークにおいて送信のためのデータをスケジューリングする方法であって、
適格なデータソース及び不適格なデータソースのうちの１つに各データソースを分類するステップと、
利用可能なクレジットのクレジット残高を維持するステップと、
適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップと、
適格なデータソース毎に個々のクレジット・カウントを維持するステップと、
複数の待ち行列を維持するステップであって、各待ち行列は、対応するクレジット・カウント要件に従って定義される個々の優先度レベルを有する、ステップと、
個々の待ち行列に各データソースを割り当てるステップであって、前記個々の待ち行列は、前記データソースの前記クレジット・カウントにより満たされるクレジット・カウント要件を有する、ステップと、
前記データソースが割り当てられる待ち行列の優先度レベルに従って、待ち行列から出すために少なくとも１つのデータソースを選択するステップと、
前記少なくとも１つの選択されたデータソースのクレジット・カウントから前記クレジット残高へ、クレジット数を転送するステップであって、前記クレジット数は、待ち行列から出されたデータの量に対応する、ステップと、
適格なデータソースを不適格なデータソースとして再分類するステップと、
前記再分類されたデータソースのクレジット・カウントを前記クレジット残高へ転送するステップと、
を有する方法。
【請求項２】
前記適格なデータソースを再分類するステップは、前記データソースの送信レートが前記データソースに割り当てられたレート制限に達するとき、前記適格なデータソースを不適格なデータソースとして再分類するステップを有する、請求項１に記載の方法。
【請求項３】
前記適格なデータソースを再分類するステップは、前記データソースが送信すべきデータを有しないとき、前記適格なデータソースを不適格なデータソースとして再分類するステップを有する、請求項１に記載の方法。
【請求項４】
各データソースは、個々の重みを割り当てられ、
適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップは、前記データソースの割り当てられた重みにより決定される比で前記データソースにクレジットを割り当てるステップを有する、
請求項１に記載の方法。
【請求項５】
適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップは、
各適格なデータソースに、その個々の重みに従って、ラウンドロビン割り当て方式でエントリ数を割り当てるステップと、
前記ラウンドロビン割り当て方式に従って、適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップと、
を有する、請求項４に記載の方法。
【請求項６】
前記クレジット残高は、各適格なデータソースがそのクレジットの割り当てを受けたとき、正の残高を維持する、請求項５に記載の方法。
【請求項７】
適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップは、前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるステップを有する、請求項４に記載の方法。
【請求項８】
前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるステップは、実質的に通常の送信レートを維持するレートでクレジットを割り当てるステップを有する、請求項７に記載の方法。
【請求項９】
適格なデータソースは、負のクレジット・カウントを有し、
少なくとも１つの待ち行列は、負のクレジット・カウントにより満たされるクレジット・カウント要件を有する、
請求項１に記載の方法。
【請求項１０】
通信ネットワークのデータスケジューラであって、前記通信ネットワークは複数のデータソースを有し、前記スケジューラは、
適格なデータソース及び不適格なデータソースのうちの１つに各データソースを分類するよう構成される分類ロジックを含むプロセッサと、
利用可能なクレジットのクレジット残高を維持するよう構成されるクレジット残高クレジットカウンタと、
適格なデータソースに前記クレジット残高からのクレジットを割り当てるよう構成されるクレジット割り当てロジックと、
適格なデータソース毎に個々のクレジット・カウントを維持するよう構成されるデータソースクレジットカウンタと、
複数の待ち行列を維持するよう構成される待ち行列維持ロジックであって、各待ち行列は、対応するクレジット・カウント要件に従って定義される個々の優先度レベルを有する、待ち行列維持ロジックと、
個々の待ち行列に各データソースを割り当てるよう構成される待ち行列割り当てロジックであって、前記個々の待ち行列は、前記データソースの前記クレジット・カウントにより満たされるクレジット・カウント要件を有する、待ち行列割り当てロジックと、
前記データソースが割り当てられる待ち行列の優先度レベルに従って、待ち行列から出すために少なくとも１つのデータソースを選択するよう構成されるデータソース選択ロジックと、
前記少なくとも１つの選択されたデータソースのクレジット・カウントから前記クレジット残高へ、クレジット数を転送するよう構成されるクレジット転送ロジックであって、前記クレジット数は、待ち行列から出されたデータの量に対応する、クレジット転送ロジックと、
を有し、
前記分類ロジックは、適格なデータソースを不適格なデータソースとして再分類するよう構成され、
前記クレジット転送ロジックは、前記再分類されたデータソースのクレジット・カウントを前記クレジット残高へ転送するよう構成される、
データスケジューラ。
【請求項１１】
前記分類ロジックは、前記データソースの送信レートが前記データソースに割り当てられたレート制限に達するとき、前記適格なデータソースを不適格なデータソースとして再分類するよう構成される、請求項１０に記載のデータスケジューラ。
【請求項１２】
前記分類ロジックは、前記データソースが送信すべきデータを有しないとき、前記適格なデータソースを不適格なデータソースとして再分類するよう構成される、請求項１０に記載のデータスケジューラ。
【請求項１３】
各データソースは、個々の重みを割り当てられ、
前記クレジット割り当てロジックは、前記データソースの割り当てられた重みにより決定される比で前記データソースにクレジットを割り当てるよう構成される、
請求項１０に記載のデータスケジューラ。
【請求項１４】
前記クレジット割り当てロジックは、
各適格なデータソースに、その個々の重みに従って、ラウンドロビン割り当て方式でエントリ数を割り当て、
前記ラウンドロビン割り当て方式に従って、適格なデータソースに前記クレジット残高からのクレジットを割り当てる、
よう構成される、請求項１３に記載のデータスケジューラ。
【請求項１５】
前記クレジット残高クレジットカウンタは、各適格なデータソースがそのクレジットの割り当てを受けたとき、正の残高を維持する、請求項１４に記載のデータスケジューラ。
【請求項１６】
前記クレジット割り当てロジックは、前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるよう構成される、請求項１３に記載のデータスケジューラ。
【請求項１７】
前記クレジット割り当てロジックは、実質的に通常の送信レートを維持するレートでクレジットを割り当てるよう構成される、請求項１６に記載のデータスケジューラ。
【請求項１８】
適格なデータソースは、負のクレジット・カウントを有し、
少なくとも１つの待ち行列は、負のクレジット・カウントにより満たされるクレジット・カウント要件を有する、
請求項１０に記載のデータスケジューラ。
【請求項１９】
パケット・ベースの通信ネットワークのネットワークノードであって、
前記通信ネットワークに結合され前記通信ネットワークを介してパケットを送信するよう構成される少なくとも１つの出力ポートと、
前記通信ネットワークを介して前記ネットワークノードにより送信されるべきパケットをキューイングするよう構成される複数のデータ待ち行列と、
少なくとも１つのスケジューラであって、
前記通信ネットワークを介して次のパケットを送信すべき待ち行列を選択し、
適格なデータソース及び不適格なデータソースのうちの１つとして各データソースを分類し、所定の条件が満たされるとき、適格なデータソースを不適格なデータソースとして再分類し、
利用可能なクレジット残高を維持し、
適格なデータソースに前記クレジット残高からのクレジットを割り当て、
適格なデータソース毎に個々のクレジット・カウントを維持し、
複数の待ち行列を維持し、各待ち行列は、対応するクレジット・カウント要件に従って定義される個々の優先度レベルを有し、
個々の待ち行列に各データソースを割り当て、前記個々の待ち行列は、前記データソースのクレジット・カウントにより満たされるクレジット・カウント要件を有し、
前記データソースが割り当てられる前記待ち行列の前記優先度レベルに従って、待ち行列から出すために少なくとも１つのデータソースを選択し、
前記選択されたデータソースの前記クレジット・カウントから前記クレジット残高へクレジット数を転送し、前記クレジット数は、待ち行列から出されたデータ量に対応し、前記適格なデータソースが不適格なデータソースとして再分類されるとき、前記クレジット残高へ適格なデータソースのクレジット・カウントを転送する、
よう構成される少なくとも１つのスケジューラと、
を有するネットワークノード。
【請求項２０】
前記少なくとも１つのスケジューラは、前記データソースの送信レートが前記データソースに割り当てられたレート制限に達するとき、前記適格なデータソースを不適格なデータソースとして再分類するよう更に構成される、請求項１９に記載のネットワークノード。
【請求項２１】
前記少なくとも１つのスケジューラは、前記データソースが送信すべきデータを有しないとき、前記適格なデータソースを不適格なデータソースとして再分類するよう更に構成される、請求項１９に記載のネットワークノード。
【請求項２２】
各データソースは、個々の重みを割り当てられ、
前記少なくとも１つのスケジューラは、前記データソースの割り当てられた重みにより決定される比で前記データソースにクレジットを割り当てるよう更に構成される、
請求項１９に記載のネットワークノード。
【請求項２３】
前記少なくとも１つのスケジューラは、
各適格なデータソースに、その個々の重みに従って、ラウンドロビン割り当て方式でエントリ数を割り当て、
前記ラウンドロビン割り当て方式に従って、適格なデータソースに前記クレジット残高からのクレジットを割り当てる、
よう更に構成される、請求項２２に記載のネットワークノード。
【請求項２４】
前記少なくとも１つのスケジューラは、各適格なデータソースがそのクレジットの割り当てを受けたとき、正の残高を維持する、請求項２３に記載のネットワークノード。
【請求項２５】
前記少なくとも１つのスケジューラは、前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるよう構成される、請求項２２に記載のネットワークノード。
【請求項２６】
前記少なくとも１つのスケジューラは、実質的に通常の送信レートを維持するレートでクレジットを割り当てるよう更に構成される、請求項２５に記載のネットワークノード。
【請求項２７】
適格なデータソースは、負のクレジット・カウントを有し、
少なくとも１つの待ち行列は、負のクレジット・カウントにより満たされるクレジット・カウント要件を有する、
請求項１９に記載のネットワークノード。
【請求項２８】
前記少なくとも１つのスケジューラは、二次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスを実行するよう更に構成される、請求項１９に記載のネットワークノード。
【請求項２９】
パケット・ベースの通信ネットワークのネットワークノードの作動方法であって、前記ネットワークノードは、
前記通信ネットワークに結合され前記通信ネットワークを介してパケットを送信するよう構成される少なくとも１つの出力ポートと、
前記通信ネットワークを介して前記ネットワークノードにより送信されるべきパケットをキューイングするよう構成される複数のデータ待ち行列と、
前記通信ネットワークを介して次のパケットを送信すべき待ち行列を選択するよう構成される少なくとも１つのスケジューラと、
を有し、前記方法は、前記スケジューラを、
適格なデータソース及び不適格なデータソースのうちの１つとして各データソースを分類し、各データソースの分類は、所定の条件が満たされるとき、適格なデータソースを不適格なデータソースとして再分類することを有し、
利用可能なクレジット残高を維持し、
適格なデータソースに前記クレジット残高からのクレジットを割り当て、
適格なデータソース毎に個々のクレジット・カウントを維持し、
複数の待ち行列を維持し、各待ち行列は、対応するクレジット・カウント要件に従って定義される個々の優先度レベルを有し、
個々の待ち行列に各データソースを割り当て、前記個々の待ち行列は、前記データソースのクレジット・カウントにより満たされるクレジット・カウント要件を有し、
前記データソースが割り当てられる前記待ち行列の前記優先度レベルに従って、待ち行列から出すために少なくとも１つのデータソースを選択し、
前記選択されたデータソースの前記クレジット・カウントから前記クレジット残高へクレジット数を転送し、前記クレジット数は、待ち行列から出されたデータ量に対応し、前記適格なデータソースが不適格なデータソースとして再分類されるとき、前記クレジット残高へ適格なデータソースのクレジット・カウントを転送する、
よう動作させる、方法。
【請求項３０】
前記適格なデータソースを不適格なデータソースとして再分類するステップは、前記データソースの送信レートが前記データソースに割り当てられたレート制限に達するとき、前記適格なデータソースを不適格なデータソースとして再分類するステップを更に有する、請求項２９に記載の方法。
【請求項３１】
前記適格なデータソースを不適格なデータソースとして再分類するステップは、前記データソースが送信すべきデータを有しないとき、前記適格なデータソースを不適格なデータソースとして再分類するステップを更に有する、請求項２９に記載の方法。
【請求項３２】
各データソースは、個々の重みを割り当てられ、
クレジットは、前記データソースにそれらの割り当てられた重みにより決定される比で割り当てられる、
請求項２９に記載の方法。  
【請求項３３】
各適格なデータソースに、その個々の重みに従って、ラウンドロビン割り当て方式でエントリ数を割り当てるステップと、
前記ラウンドロビン割り当て方式に従って、適格なデータソースに前記クレジット残高からのクレジットを割り当てるステップと、
を更に有する請求項３２に記載の方法。
【請求項３４】
各適格なデータソースがそのクレジットの割り当てを受けたとき、正の残高を維持するステップ、
を更に有する請求項３３に記載の方法。
【請求項３５】
前記クレジット残高の中の現在のクレジット・カウントに従って決定されるレートでクレジットを割り当てるステップ、を有する請求項３２に記載の方法。
【請求項３６】
実質的に通常の送信レートを維持するレートでクレジットを割り当てるステップ、を更に有する請求項３５に記載の方法。
【請求項３７】
適格なデータソースは、負のクレジット・カウントを有することができ、
少なくとも１つの待ち行列は、負のクレジット・カウントにより満たされるクレジット・カウント要件を有する、
請求項２９に記載の方法。
【請求項３８】
前記少なくとも１つのスケジューラは、二次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスを実行する、請求項２９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概括的にはレート整形された（rate-shaped）トラフィックの存在における重み付けされた公平な待ち行列管理〔キューイング〕（weighted  fair  queuing）のための方法およびシステムに関し、より詳細には、重み付けされた公平な待ち行列スケジューラ内で競合し合う子に対するレート制限およびレート保証を統合することを許容する、フレーム・ベースのトラフィックについての重み付けされた公平な待ち行列管理を提供する方法およびシステムに関する。
【背景技術】
【０００２】
データ・パケットを転送するどのコンピュータおよび通信ネットワークも、データ・トラフィックが特定のレートでネットワークを通って進行することを保証するために何らかの形のスケジューリングを実装する必要がある。どの所与の時点でも、ネットワークは、該ネットワークを通じた転送を待っているデータ待ち行列を含む数十万またさらには数百万もの接続を有することがありうる。ネットワーク要素がこれらのデータ待ち行列を公平かつ適時な仕方で処理できるようにするために、何らかの形のスケジューリングが必要とされる。
【０００３】
典型的には、スケジューラは、ネットワークを通じたデータの伝送をスケジュールするためにデータ待ち行列と相互作用する。スケジューラは、選択された子もスケジューラであることがあり、そのスケジューラがその子から選ばなければならないという意味で、階層的であることができる。スケジューラは、利用可能な（available）データをもつ適格な（eligible）データ待ち行列または他の適格な子スケジューラから、データ送信の順序を決定する。一般に、データを待ち行列に入れるのは別個のプロセスであるが、該別個のプロセスは、データの利用可能性または子の適格性を宣言する仕方においてスケジューリングに結合されている。スケジューラは定期的に、あるいは要求があったときに、データを送信する元となるべき、利用可能なデータをもつ子を選択する。階層的なスケジューラは選択された待ち行列からのデータの送信を確立する。
【０００４】
図１は、スケジューリング・プロセス１２を含む従来技術のデータ・システム１０を示している。ここで、データ経路は一連のデータ待ち行列１４ａ、１４ｂ、１４ｃ、１４ｄおよび１４ｅ（まとめてデータ待ち行列１４として参照される）ならびにマルチプレクサ１６ａ、１６ｂ（まとめてマルチプレクサ１６として参照される）を含む。図１には物理的なユニットとして示されているが、典型的なスケーラブルな実装では、マルチプレクサは物理的に存在するわけではなく、スケジューラによる、送信すべきデータ待ち行列１４の選択によって含意される。スケジューリング・プロセス１２は、利用可能なデータ（DA:  data  available）をもつデータ待ち行列１４のどれから選択してもよいが、実装の階層的な性質のため、スケジューリング・プロセス１２は子スケジューラ１８にデータ待ち行列１４ｄおよびデータ待ち行列１４ｅから選択をするよう要求しなければならない。すると子スケジューラ１８は適切なデータ待ち行列１４ｄ、１４ｅを選択する。この例では、スケジューリング・プロセス１２はデータ待ち行列１４ａ、１４ｂおよび１４ｃは直接選択してもよい。
【０００５】
一つの従来技術の重み付けされた公平な待ち行列管理プロセスが、Lyonに対して発行された米国特許第7,373,420号（以下「’４２０特許」）に開示されており、その内容全体はここに参照によって組み込まれる。図２は、’４２０特許の重み付けされた公平な待ち行列管理プロセスを示している。これは、どの待ち行列にクレジットを与えるかを決定するために、各データ待ち行列についての割り当てられた重みを使う逆クレジット管理システムを含む。基本的には、逆クレジット管理のある重み付けされた公平な待ち行列管理（WFQ-ICM:  weighted  fair  queuing  with  inverse  credit  management）スケジューラ２０は二つの相補的なプロセスを含む：WFQクレジット分配器２２および送信選択器２４である。送信選択器２４は典型的にはラウンドロビン式に動作し、利用可能なデータおよび正のクレジットをもつ各子が順次データを送信する。
【０００６】
クレジット・プロセス２２は、子に対して、現在のクレジットが該子についての利用可能データ量（ADA:  amount  of  data  available）より少ない場合、クレジットを付与する。任意の所与の時点において各子が集めたクレジット量が子クレジット状態データベース２６において追跡される。子当たりのクレジット量は決してその子のADAを超えることはない。何らかの時点において子がもつクレジットがそのADAより少ない場合、その子はクレジット分配器２２に含められ、そこでより多くのクレジットを求めて競合する。
【０００７】
送信選択器２４は、正のクレジット・カウントをもつ子を、データを送信するよう選択する。子がデータを送信すると、子クレジット状態データベース２６においてクレジットがその現在クレジット量から差し引かれ、クレジット数より大きなADAをもつ他の子への再分配のためにクレジット分配器２２に返される。クレジット分配器２２は、子がクレジットを費やすのと同じレートでクレジットを付与する（すなわち残り残高はない）。よって、WFQ-ICMスケジューラ２０のキーとなる要件は、システムが、あらゆる時点において、各子から送信のために利用可能なデータがどのくらいあるかを厳密に知る必要があるということである。この要件は、子がまだ利用可能なデータがあるときに自らを不適格と見なすことを妨げ、レートに基づいて適格性を決定するオーバーレイ・プロセスを実装することを事実上不可能にする。基本的に、レート制限はデータをもつ子に、送信を止めるまたは親スケジューラに対して利用可能なデータをもたないことを強制することができる。この制限は、階層が何レベルあってもADAがすべての子孫待ち行列を含む階層的スケジューラに対しても重荷となる――複数のスケジューリング・レベルの間で事実上スケジューリング・プロセスを結合するのである。
【０００８】
したがって、必要とされているのは、レート整形されたトラフィックの存在において使用されうる逆クレジット管理のある重み付けされた公平な待ち行列管理のための方法、システムおよび装置である。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、有利には、子の適格性およびクレジット分配に基づいて通信ネットワークにおける送信のためのデータをスケジューリングするための方法およびシステムを提供する。概括的に言って、逆クレジット管理のある重み付けされた公平な待ち行列管理のためのスケジューラがレート整形されたトラフィックの存在において使用されうる。それにより、重み付けされた公平な待ち行列スケジューラの中で競合する複数の子に対するレート制限およびレート保証の統合が可能になる。
【課題を解決するための手段】
【００１０】
本発明のある側面によれば、通信ネットワークにおいて送信のためのデータをスケジューリングするシステムがクレジット分配器および送信選択器を含む。通信ネットワークは複数の子を含む。送信選択器はクレジット分配器に通信上結合される。クレジット分配器は、適格な子および負のクレジット・カウントももつ子のうちの少なくとも一つにクレジットを付与するよう動作する。各クレジットはデータ送信のために使用可能である。クレジット分配器はさらに、利用可能な未分配のクレジットの総量を表すクレジット残高を維持し、付与されたクレジットの比に関して、子の間での公平性に影響し、付与されたクレジットをクレジット残高から控除するよう動作する。送信選択器は、少なくとも一つの適格であり（eligible）かつイネーブル〔有効化〕された（enabled）子を、待ち行列から出すために選択し、適格でありかつイネーブルされた子の選択を、正のクレジットをもつ適格でありかつイネーブルされた子に偏らせ、待ち行列から出すために選択されたデータの量に対応するクレジットをクレジット残高に追加するよう動作する。
【００１１】
本発明のもう一つの側面によれば、通信ネットワークにおいて子にクレジットを分配する方法が提供される。各クレジットは、ある量のデータ送信のために使用可能である。クレジットは、適格なイネーブルされた子および負のクレジット・カウントももつ子のうちの少なくとも一つに対して付与される。利用可能な未分配のクレジットの総量を表すクレジット残高が維持され、付与されたクレジットがクレジット残高から控除される。
【００１２】
本発明のさらにもう一つの側面によれば、通信ネットワークにおける送信のためにデータをスケジューリングする方法が提供される。通信ネットワークは複数の子を含む。複数の送信制御待ち行列が確立され、待ち行列から出していく。各送信制御待ち行列は、対応する適格な子の少なくとも一つの識別子を含むことができ、対応するクレジット・カウント要件に従って定義される優先度レベルを有する。各適格な子は、前記複数の送信制御待ち行列の一つに割り当てられる。各適格な子は、その割り当てられた送信制御待ち行列のためのクレジット・カウント要件を満たすクレジット状態をもつ。少なくとも一つの適格な子が、該適格な子に対応する送信制御待ち行列の優先度レベルに従って、待ち行列から出すために選択される。待ち行列から出されるデータの量に対応するクレジットがクレジット残高に加えられる。各適格でありかつイネーブルされた子は、前記送信制御待ち行列の一つにおいて表現される。
【図面の簡単な説明】
【００１３】
本発明のより完全な理解ならびにその付随する利点および特徴は、以下の詳細な記述を参照し、付属の図面との関連で考慮することによってより容易に理解されるであろう。
【図１】例示的な従来技術のデータ・スケジューリング・プロセスのブロック図である。
【図２】例示的な従来技術の、逆クレジット管理のある重み付けされた公平な待ち行列管理によるデータ・スケジューリング・プロセスのブロック図である。
【図３】本発明の原理に基づいて構築される、例示的な、逆クレジット管理のある重み付けされた公平な待ち行列管理によるデータ・スケジューリング・プロセスのブロック図である。
【図４】本発明に原理に基づいて構築される、例示的なクレジット分配器のブロック図である。
【図５】本発明の原理に基づく、例示的なクレジット分配器プロセスのフローチャートである。
【図６】本発明の原理に基づく、適格性の変化に応答しての例示的なクレジット・プロセスのフローチャートである。
【図７】高い重みの子に対する、例示的な従来技術の、一次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスのブロック図である。
【図８】本発明の原理に基づいて構築される、高い重みの子に対する、例示的な、二次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスのブロック図である。
【図９】本発明の原理に基づいて構築される、四つの優先度レベルをもつ、例示的な、二次元重み付けされたインターリーブ式ラウンドロビンによるスケジューリング・プロセスのブロック図である。
【図１０】本発明の原理に基づいて構築される、例示的な基本的な送信選択器のブロック図である。
【図１１】本発明の原理に基づいて構築される、例示的な進んだ送信選択器のブロック図である。
【図１２】本発明の原理に基づく、重み付けされた公平な待ち行列をなす子についての例示的な送信選択プロセスのフローチャートである。
【図１３】本発明の原理に基づく、増加したクレジットおよび適格性の変化に応答しての、例示的な送信選択プロセスのフローチャートである。
【発明を実施するための形態】
【００１４】
本発明に基づく例示的な実施形態を詳細に説明する前に、それらの実施形態が主として、重み付けされた公平な待ち行列スケジューラ内で競合し合う子に対するレート制限およびレート保証を統合することを許容する、フレーム・ベースのトラフィックについての重み付けされた公平な待ち行列管理を提供するシステムおよび方法の実装に関係した装置コンポーネントおよび処理ステップの組み合わせにあることを注意しておく。よって、システムおよび方法の構成要素は、適切な場合には、図面において通常のシンボルによって表現され、本発明の実施形態を理解するのに重要な個別的詳細のみを示している。本項の記載の恩恵に接する当業者には容易に明白となるであろう詳細をもって本開示をかすませることがないようにするためである。
【００１５】
本項での用法では、「第一」および「第二」、「上」および「下」などといった関係の言辞は、あるエンティティまたは要素を別のエンティティまたは要素から区別するために使っているだけのことがあり、必ずしもそのようなエンティティまたは要素の間の何らかの物理的または論理的な関係や順序を必要とするまたは含意するものではない。「ルート」ノードは、重み付けされた公平な待ち行列管理木における最高レベルのノードまたは階層的な重み付けされた公平な待ち行列管理木のある分枝における最高ノードをいう。特定のノードの「子孫（descendant）」とは、当該ノードより下位のレベルにある任意のノードであって、遡るとその系統が当該ノードまでたどれるものである。同様に、特定のノードの「祖先（ancestor）」とは、当該ノードより上位のレベルにある任意のノードであって、その系統が当該ノードまでたどれるものである。用語「子」〔チャイルド〕または「子ノード」〔チャイルド・ノード〕は、スケジューリング木におけるあるノードの任意の直接的な子孫をいう。一般に、特定のノードとの関係を論じるときには、用語「子」は、当該ノードより１レベル下のノード（スケジューラ・ノードまたは待ち行列）をいう。追加的に、より上位のレベルをもつノードに由来する任意のノードを「子ノード」または「子」と称することがある。
【００１６】
本発明のある実施形態は、有利には、レート整形されたトラフィックの存在において使用されうる逆クレジット管理のある重み付けされた公平な待ち行列管理のためのシステム、方法および装置を提供する。システムおよび方法は、重み付けされた公平な待ち行列スケジューラ内で競合する子に対するレート制限とレート保証の統合を許容する。クレジット残高機構が、子が未使用のクレジットを返すときに、クレジットの保存（conservation）を可能にする。前は、未使用のクレジットは、子がどのくらい長くそのレート制限内に留まり、送信すべきデータを持ち続けるかを知ることなく、未使用のクレジットがクレジット分配システムによって付与されていた。
【００１７】
さらに、従来技術とは異なり、本発明の実施形態では、子がトグル的に適格な状態を出入りすることが許容される。これにより、子の、レート制限との簡単な統合が許容される。
【００１８】
ここで図３を参照するに、本発明の原理に基づいて構築される、改善された逆クレジット管理をもつ例示的な重み付けされた公平な待ち行列管理スケジューラ２８（WFQ-ICM-Plus）が送信選択器３０と、クレジット分配器３２と、子クレジット状態データベース３４とを含む。送信選択器３０は、データを送信するために、適格なすべての子のうちから子を選択する。別個の適格性プロセス３６が、子が送信のための選択について適格であるかどうかを判定する。適格性プロセス３６の動作の詳細は、本発明の範囲外である；重要な考察は、単に、適格性プロセス３６が、どの子が選択される資格があるかを判定するということである。最も単純な形では、適格性プロセスは単に、その子における利用可能なデータである。より複雑な形では、利用可能なデータは、階層構造のさまざまなレベルにおけるレート制限を含んでいてもよい。これは、負のクレジットをもつ子が送信選択器３０によって送信のために選択される潜在的可能性を有するという点において、従来技術とは異なる振る舞いに影響する。さらに、本発明の諸実施形態は、前に適格であった子を別のプロセスがすぐにディセーブル〔無効化〕する（disabling）可能性を許容する。これも従来技術では不可能であった。
【００１９】
クレジット分配器３２は、システムについてのすべての余剰クレジットを含んでいるクレジット残高（CB:  credit  balance）３８を含む。クレジット分配器３２は、クレジット残高３８からのクレジットを、あらゆる適格な子および負のクレジットをもつあらゆる子に付与する重み付けされた公平なプロセスである。クレジット分配器３２は、子クレジット状態データベース３４において、任意の所与の時点までに各子が集めたクレジットの量を追跡する。
【００２０】
従来技術のWFQ-ICMスケジューラとは異なり、本発明の諸実施形態は有利には、どのくらいのデータが利用可能であるかをシステムが精確に知ることは要求しない。その代わり、クレジット分配器３２が知る必要があるのは、子が「適格」であるということだけである。クレジット分配器３２は、クレジットを、いかなる適格な子にも分配しうる。よって、レート整形器（rate  shaper）のような干渉するプロセスは、本発明の諸実施形態との関連で容易に動作しうる。理論的には、子は、該子が現在利用可能な形で有している、あるいは該子が近々送るために適格となるであろうデータの量よりずっと多くのクレジットを受け取ることができる。しかしながら、子が「適格」から「不適格」に遷移するとすぐ、その子がそれまでに獲得したすべてのクレジットは剥奪され、クレジット残高３８に返される。
【００２１】
送信選択器３０は適格な子を、データを送信するよう選択する。一般に、子の選択は、より大きなクレジット・カウントをもつ子を優先する〔バイアスを与える〕。よって、小さな正のクレジット・カウントまたさらには負のクレジット・カウントをもつ子よりも、大きな正のクレジット・カウントをもつ子が送信のために選択される可能性が高い。子がデータを送信すると、子クレジット状態データベース３４において、その現在のクレジット量からクレジットが差し引かれ、他の適格な子および負残高の子への再分配のためにクレジット残高３８に返される。
【００２２】
従来のWFQ-ICMスケジューラは、正のクレジット・カウントのもとで開始されたフレームの送信を完了させるため以外には、負のクレジット・カウントをもつ子からの送信は許容しなかった。しかしながら、この従来技術は、クレジットを獲得したのちに子がディセーブルされるあるいは送信するために不適格であることを許容しなかったので、この機能を必要としていなかった。
【００２３】
図４を参照するに、例示的なクレジット分配器３２の簡略化された実装が示されている。一般に、ラウンドロビン式クレジット分配器４０は、適格な子および負のクレジットをもつ子に対するクレジットの分配を、スケジューラ２８からデータ送信で出ていくのと同じレートで行う。換言すれば、送信選択器３０からの送信機会が、クレジット分配器３２のためのクレジット分配機会をトリガーする。
【００２４】
あるクレジット分配ラウンドの間、適格な子および負のクレジットをもつ子のそれぞれは、その重み値に対応する数のエントリーをそのラウンドにおいて割り当てられる。各子は、そのラウンドにおいて、ラウンドロビン（RR:  round  robin）分配待ち行列４２の先頭に達したときに一つのクレジットを得る。換言すれば、一つのRRラウンドは、各子に一つの「クレジット」を付与する。こうして、一クレジット・ラウンド全体については、各子「i」（子iと表される）はwi個のクレジットを付与される。ここで、「wi」は子iについての重み値である。各子iにwi個のクレジットを分配するために必要とされるRRラウンドの数はwiである。クレジット・ラウンドは、すべての子iがwi個のクレジットを付与されたときに終了する。よって、クレジット・ラウンドの長さは、最大のwiをもつ子によって指定される。子がそのラウンドについてのめいっぱいの〔フルの〕重みを受け取ってしまった場合は、その子は一時的に重み超過待ち行列（weight  exceeded  queue）４４に入れられ、次のクレジット・ラウンドまでその子にはさらなるクレジット分配はなされない。
【００２５】
以前のWFQ-ICMスケジューラでは、クレジット分配は厳密に送信と同じレートで進行するため、クレジット残高３８が残っていることはなかった。分配のために利用可能なクレジットは、送信選択器３０から返されたクレジットである。
【００２６】
これに対し、本発明の諸実施形態は、クレジット分配器３２が、必要であれば正のクレジット残高３２を担持することを許容する。クレジット残高３２は、前に適格だった子が正のクレジットを保持したまま不適格になるため、非常に大きくなることがある。この潜在的に大きなクレジット残高を補償するため、クレジット分配器３２は、送信選択器３０からはいってくる厳密なクレジット・バイト数（「N」として表される）を、子に対して付与されるクレジット・バイト数（「M」として表される）として付与することは要求されない。よって、クレジット残高３８が過剰クレジットを含む（すなわち、CB＞0）とき、クレジット分配器３２は、単にRR分配待ち行列４２のフルのラウンド・ロビン・ラウンドについて付与されるクレジット数を増してM＞Nにすることによって、クレジット分配を加速する。換言すれば、あるRRラウンドについて、クレジット分配器３２はMバイトのクレジットを各子に、その番において分配する。過剰なクレジットがあればそれは次のRRラウンドに持ち越し〔キャリーオーバー〕されてもよい。他方、Mが高められている間にクレジット残高３８が0まで落ちる場合には、分配の頻度（F:  frequency）はM×F＝Nとなるよう減らされてもよい。それにより、当該RRラウンドの終わりまで各子にMバイトのクレジットを付与することを続けることが許容される。RRラウンド全体について付与されるクレジット数を上げることは、子どうしの間の公平さが維持されることを保証する。上げられたMバイトのクレジットの分配におけるいくつかの例外を注意しておく価値がある：Mバイトのクレジットを付与されることによってその重みを超えるであろう子は、その重みの残り分しか付与されないし、送信するために適格でないが0クレジットに戻るためにクレジットを集めている子は、0クレジットに戻るために必要とされるクレジット数より多くを付与されることは決してない。制御待ち行列ベースであれ、ベクトル・ベースであれ、他の何らかの方法であれ、クレジット分配器の他の実施形態も、ここに述べた方法の概念と同様の、クレジット分配の「通常」レートを上げることによって、クレジットの分配を加速することができる。
【００２７】
図５を参照するに、クレジットを分配する機会に応答してクレジット分配器３２によって実行されるステップを記述する例示的な動作フローチャートが与えられる。図５では、クレジット分配器３２は送信選択器３０によって、送信されるデータNバイトについて１回トリガーされる（ステップS100）が、代替的な実装は同じことを達成するために定期的なトリガーをもつことができる。本発明の代替的な諸実施形態では、クレジット分配器３２は全送信バイト・カウントの実際の知識を持っていてもよく、それによりクレジットはNバイトの倍数またはNバイトの一部分（fractions）で分配されてもよいことを注意しておくことが重要である。以下のプロセスはまだ適格性の変化に対応するものではなく、適格性の考察は図５に関係してのちに考慮に入れられることも注意しておくべきである。
【００２８】
クレジット分配器３２がRRラウンドの始まりにない場合（ステップS102）、すなわち、すでに現在のRR待ち行列中のいくつかの子にクレジットが分配されている場合、プロセスはクレジット分配先として、現在のRR待ち行列の先頭にある子iを選択する（ステップS104）。この場合、クレジット付与値Mの、前の状態が使われることになる。しかしながら、クレジット分配器３２が新たなRRラウンドを開始する準備ができている場合（ステップS102）、すなわち前のRRラウンドが完了している場合には、クレジット分配器は、クレジット分配ラウンドが継続されるべきか、あるいは完全に新しいクレジット・ラウンドが必要とされているかを判断する（ステップS106）。これがクレジット・ラウンドの始まりであれば、RR待ち行列がスケジューリングのために選択される（ステップS108）。この時点まで、単一のRR待ち行列をサポートするスケジューリング・プロセスのみを論じてきたので、ステップS108は単にスケジューリング・パラメータをリセットして、再びそのRR待ち行列の子のすべての処理を開始することになる。しかしながら、図８との関連で後述するように、本発明のある例示的な実施形態は、子の複数の優先度を区別する複数のRR待ち行列を許容し、その場合、ステップS108は異なるRR待ち行列を処理のために選択することができる。これがクレジット・ラウンドの始まりでない場合、新しいRR待ち行列は必要とされない。
【００２９】
判断ブロックS106に戻ると、クレジット・ラウンドがちょうど始まるところである場合には、クレジット分配器３２は過剰なクレジット残高が存在するか否かを判定する（ステップS110）。この場合、単一の送信イベントが生成できる（N）よりも多くのクレジットである。過剰なクレジット残高がある場合、クレジット分配器３２は加速されたクレジット分配サイクルにはいる（ステップS112）。ここでは、このクレジット分配イベントおよび現在のRRラウンドにおける残りの諸クレジット分配イベントの間のクレジット分配量（M）が、クレジット分配イベントから次のクレジット分配イベントまでの間に送信されるクレジット（N）を超える。すなわちM＞Nである。そうでなく、残っているクレジット残高がない場合（ステップS114）には、このクレジット分配イベントおよびこのRRラウンドの残りの間に分配されるクレジットの量は、クレジット分配イベント間に典型的に送信されるクレジットの量に等しいように設定される。すなわちM＝Nである（ステップS114）。本発明の他の実施形態は、判断S110においてNについて異なる閾値を使ってもよい。たとえば、クレジット分配を加速する決断にヒステリシスを注入するために使われる静的または動的な数をxとして、CB＞xバイトである。
【００３０】
クレジット分配は、現在のRR待ち行列の先頭にある子iを選択することによって始まる（ステップS104）。クレジット残高が現在のRRラウンドの間に各子に付与されるべきクレジット数以上である（ステップS116）、すなわちCB≧Mである場合には、子iは、そのクレジット・ラウンドにおけるその残りの重みと、そのクレジット・ラウンドの間に付与されるべきクレジット数Mのうちの少ないほうを付与される（ステップS118）。子iに付与されるクレジットの量は、クレジット残高から控除され（ステップS120）、そのRRラウンドはRR待ち行列における次の子に進められる（ステップS122）。
【００３１】
判断ブロックS116に戻ると、クレジット残高が子iについての残りの重みを超えている限り（ステップS124）、子iはその残りのクレジット重みを付与される（ステップS126）。子iに付与されるクレジットの量は、クレジット残高から控除され（ステップS120）、そのRRラウンドはRR待ち行列における次の子に進められる（ステップS122）。しかしながら、子iについての残りの重みがクレジット残高を超える場合（ステップS124）には、クレジットは分配されず、現在のクレジット分配イベントは終了し、子iは次のクレジット分配イベントについてRR待ち行列の先頭に留まる。
【００３２】
ここで図６を参照すると、子の適格性状態の変化に応答してクレジット分配器３２によって実行されるステップを記述する例示的な動作フローチャートが与えられる。クレジット分配器３２は子iについての適格性状態における遷移を検出する（ステップS128）。適格性の遷移は、（スケジューラ内部または外部の）別個のプロセスによって、たとえば遷移する子についてのフラグをセットするまたはクリアする、イベントを送る、またはメッセージを送ることによって、宣告されてもよい。子iが不適格から適格に遷移しており（ステップS130のYES分枝）、子iがすでにクレジット・システム内にある（ステップS132のYES分枝）場合、クレジット分配器３２は単に、子iについてのペンディングの除去フラグをクリアする（ステップS134）。ステップS150を記述する際に後述するように、このペンディングの除去フラグは、正しい状態に戻ったときに子がクレジット分配器３２から除去されることを要求するためにセットされたものである。子iは、その重みおよびRR待ち行列における順位によって決定されるクレジットを受け取ることができるままである。しかしながら、子iが現在、クレジット・システム内になく（ステップS132のNO分枝）、そのクレジット・ラウンドにおいてその重みiを超過するクレジットを受け取っているのでない（ステップS136のNO分枝）場合には、子iは、RR待ち行列の末尾で待ち行列に入れられ（ステップS138）、今のクレジット・ラウンドにおける次の自分の順番においてクレジットを受け取ることになる。子iが今のクレジット・ラウンドにおいてその重みiをすでに超過している場合には（ステップS136のYES分枝）、子iは重み超過待ち行列の末尾で待ち行列に入れられ（ステップS140）、次のクレジット・ラウンドになるまで再びクレジットを受け取ることはない。
【００３３】
判断ブロックS130に戻ると、遷移する子が新たに適格になった子でない場合、子は不適格な状態に遷移していることになる。新たに不適格になった子iが現在、正のクレジットをもつまたはクレジットをもたない（ステップS142）、すなわちクレジットi≧0の場合、過剰なクレジットはもしあればクレジット残高に返され（ステップS144）、子iについてのクレジット・カウントは0に設定される（ステップS146）。次いで子iはクレジット・システムから除去される（ステップS148）。クレジット・システムからの除去は、その子がRR待ち行列の先頭まで進んでいくのを待って、そのRR順番の際に、その子にクレジットを付与する代わりにその子を除去することによって、最も容易に達成されることを注意しておくべきである。この方法は、除去フラグの一つの潜在的な用途である。しかしながら、代替的な諸実施形態は、新たに不適格になった子iが、そのクレジットをクレジット残高に返納した際にすぐシステムから除去されることを許容してもよい。
【００３４】
再び判断ブロックS142に戻ると、新たに不適格になった子が負のクレジットをもつ、すなわちクレジットi＜0である場合、それが除去準備ができていることを示すために、単にその除去フラグがセットされる。しかしながら、負のクレジット残高をもつ新たに不適格になった子は、クレジット残高からその赤字分のクレジットを改めて獲得するまで、クレジット・システムから除去されないことを注意しておくべきである。すなわち、子iはクレジットi＝0となるまで除去されない。
【００３５】
ここで図７に目を転じると、ブロック図が、重みが高い子についての、例示的な従来技術の、一次元の重み付けされたインターリーブ式ラウンドロビン（WIRR:  weighted  interleaved  round  robin）によるスケジューリング・プロセス４６を示している。WIRRスケジューリング・プロセス４６は二つの待ち行列を利用する：ラウンドロビン（「RR」）待ち行列４８と、重み超過待ち行列５０である。そのクレジット・ラウンドにおいてクレジットを受け取るすべての子は最初はRR待ち行列４８内で始まる。図７に示されるような開始条件を想定する。ここで、RR待ち行列には四つの子（たとえばA、B、CおよびD）があり、Aは重み10、Bは重み4、CおよびDはそれぞれ重み2をもつ。一つのクレジット・ラウンドにおけるRRラウンドの数は最高の重みをもつ子によって決まるので、子Aが重み10をもつので、一クレジット・ラウンドに10のRRラウンドがあることができる。
【００３６】
最初のRRラウンドにおいては、クレジットはD、つまりRR待ち行列４８の先頭にある子に与えられ、次いでDはRR待ち行列４８の末尾に移される。同様に、C、BおよびAにクレジットが与えられ、各子はRR待ち行列４８の末尾に移され、Dが待ち行列の先頭に戻る。RRラウンド２においては、Dにクレジットが与えられ、このクレジット・ラウンドの間にDに分配されたクレジットの合計がその重み以上になる。すなわち、クレジットD≧現在のRRとなる。こうして、Dは重み超過待ち行列５０に移され、このクレジット・ラウンドの終わりまで待つ。同様に、Cにクレジットが与えられ、次いでCは重み超過待ち行列５０に移される。最後に、BおよびAにクレジットが与えられ、BおよびAはそれぞれRR待ち行列４８の末尾に移される。ラウンド３の間には、Bには１クレジットが与えられ、Aには１クレジットが与えられる。ラウンド４の間には、やはりBには１クレジットが与えられ、Aに１クレジットが与えられる。しかしながら、子Bは、そのクレジット・ラウンドについてのクレジットのおける重みを受け取ってしまったので、重み超過待ち行列５０の末尾に移され、RR待ち行列４８にはAだけが残る。残りのRRラウンド、たとえばラウンド５〜１０の間には、ラウンド毎に１クレジットが子Aに付与される。
【００３７】
この一次元WIRRについての有効クレジット分配シーケンスは：
DCBA、DCBA、BA、BA、A、A、A、A、A、A
となる。
【００３８】
こうして、クレジット分配シーケンスの１セグメントの間、子Aへの７回の連続した分配のバーストがある。この積み重なったシーケンスは、子Aがクレジットを非常に急速に蓄積することができるので、子Aがデータ切れになる場合、システムに潜在的な安定性の問題を呈する。
【００３９】
本発明のある実施形態は、高い重みをもつ子についてクレジット分配のなめらかなスケジューリングを容易にするために、新たな二次元のWIRRスケジューラを導入することによって、WIRRスケジューリング・プロセスを改善する。図８は、本発明の原理に基づいて構築された、例示的な二次元WIRRスケジューラ５２のブロック図を与えている。二次元WIRRスケジューラ５２は、単一のRR待ち行列に代わって、帯域幅または重みカテゴリーを表す複数のRR待ち行列を実装する。スケジューリングの第一の次元は帯域幅カテゴリー内の次元であり、この次元では、WIRRクレジット・ラウンドは、同じ帯域幅カテゴリー内の子どうしの間の公平さを与える。スケジューリングの第二の次元は帯域幅カテゴリーどうしの間であり、この次元では、第一の次元のスケジューラでサービスするRR待ち行列の間での重み付けされたインターリーブにより、帯域幅カテゴリーに関連付けられた帯域幅乗数（bandwidth  multiplier）を達成する。
【００４０】
二次元WIRRスケジューラ５２は、関連付けられた重み超過待ち行列をもつRR待ち行列の組を、少なくとも二つ含んでいてもよい。ここで、各待ち行列「i」は、帯域幅乗数「ni」をもつ帯域幅カテゴリーとして構成設定される。子らは、RR待ち行列内では、WIRRラウンドで調整された重み（後述）に基づいてインターリーブされ、RR待ち行列間ではフルWIRRラウンドどうしの間で待ち行列にサービスする順序によってインターリーブされる。第二の次元のスケジューラでは、乗数niをもつRR待ち行列iは、かける１（x1として図示される）待ち行列と同数のフルWIRRラウンドでni回実行される。たとえば、図８の二次元WIRRスケジューラ５２において、乗数4をもつ高優先度（HP:  high  priority）RR待ち行列５４、HP重み超過待ち行列５６、乗数1をもつ低優先度（LP:  low  priority）RR待ち行列５８およびLP重み超過待ち行列６０がある。HP待ち行列５４WIRRクレジット・ラウンドは、LP待ち行列のWIRRクレジット・ラウンド実行毎に4回実行される。
【００４１】
RR待ち行列を実行するための固定パターンは、そのパターンが作業保存的（work  conserving）である限り受け容れ可能である。作業保存的とは、RR待ち行列のいくつかが適格な子を含んでいない場合でも有用なスケジューリング決定ができることを意味する。たとえば、x4乗数をもつHP待ち行列５４およびx1乗数をもつLP待ち行列５８を有する二次元WIRRスケジューラ５２について、クレジット分配パターンはHP、HP、HP、HP、LP、以下繰り返し、である。WIRRクレジット・ラウンドについて使用される重みは、第二の次元の乗数によってスケーリングされる。ここで、調整された重みはフルの重みをniで割ったものである。
【００４２】
たとえば、図７に関係する議論において上で使ったのと同じ重みおよび子を使って、図８の二次元WIRRスケジューラ５２において、子はAおよびBがHP待ち行列５４内にあり、CおよびDがLP待ち行列５８内にあるよう、配列されうる。子Aは、調整された重み2.5をもち、それによりそのフルの重みは10のままである（たとえば、調整重み×乗数＝フルの重み；2.5×4＝10）。同様に、Bはそのフルの重み4を反映する調整された重み1をもつ（たとえば、1×4＝4）。LP待ち行列５８についての乗数は1なので、CおよびDはそのもとの重み2を保持する。
【００４３】
二次元WIRRの最初のWIRRクレジット・ラウンドの間は、HP待ち行列５４だけがサービスされる。こうして、WIRRラウンド１の間のクレジット分配器はBに１クレジットを付与し、Aに２クレジットを付与し、子Aについての残り重み0.5を保持する。WIRRラウンド１の間クレジット・ラウンド２の間には、今一度、HP待ち行列５４だけがサービスされるが、今回はBは１クレジット付与され、Aは３クレジット付与される（たとえば、このラウンドについての2.5重み＋0.5の重み残余＝3クレジット）。第三のWIRRラウンドはWIRRラウンド１の反復であり、Bは１クレジットを受け取り、Aは２クレジットを受け取り0.5余る。第四のWIRRラウンドはラウンド２の繰り返しであり、Bは１クレジット付与され、Aは３クレジット付与される。第五および最終WIRRラウンドはLP待ち行列５８にサービスし、子CおよびDはそれぞれ２クレジットを受け取る。こうして、二次元WIRRスケジューラ５２についてのフル・クレジット・ラウンド当たりの有効クレジット付与順序は：
H        H        H        H        L
(BA,A)、(BA,A,A)、(BA,A)、(BA,A,A)、(DC,DC)
となる。最大の連続分配バーストがAへの３の分配まで減らされていることを注意しておくべきである。これは、従来技術の一次元WIRR４６の最大バーストの半分未満である。また、この手順は、同時には一つのRR待ち行列しか使われないので、単一の重み超過待ち行列をもって実装されてもよいことも注意しておくべきである。
【００４４】
非O(1)アルゴリズム、すなわち一般に知られた「ラージO」記法（"big-O"  notation）を使ってO(1)以外の計算量をもつ階層的スケジューラは、第二の次元については、スケーラビリティが必要とされないので、満足いくものでありうる。上に示したように、強いインターリーブは、最高の重みを付けられた子からのバーストの長さを制限する。上ではクレジット分配器のコンテキストにおいて論じているが、本発明の二次元WIRRスケジューラ５２は、送信選択器３０によって送信待ち行列から出すのをスケジューリングするためのプロセスとして使われることができる。
【００４５】
二次元WIRRの概念は、２より多くの優先度レベルをもつシステムを実装するよう拡張されてもよい。図９は、四つの優先度RR待ち行列によって表される四つの優先度レベルをもつWIRRスケジューラ６２のブロック図を与えている。四つの優先度RR待ち行列とは：高優先度（HP）待ち行列６４、中優先度（MP:  medium  priority）待ち行列６６、低優先度（LP）待ち行列６８および超低優先度（VLP:  very  low  priority）待ち行列７０である。待ち行列間の固定乗数は、スケジューリングの大きなダイナミックレンジを与えるよう選択される。たとえば、任意のRR待ち行列における任意の子についての最高の調整された重み値が8であり、最小の調整された重みが1であるとすると、任意の子についての最大総重みは4096（84）である。待ち行列選択は、重みに基づいて計算され、よって、すべての待ち行列が子を含むとき、585スケジューリング・イベント毎に、HP待ち行列６４は512回選択され、MP待ち行列６６は64回選択され、LP待ち行列６８は8回選択され、VL待ち行列７０は1回選択される。WIRRスケジューラ６２は作業保存的であり、よって子を含まない待ち行列は選択されない。計算されたまたは構成設定されたクレジット分配パターンは、より大きな重みの待ち行列のスケジューリング機会を最大限分散させようとするべきである。さらに、フルの標準的なWIRRラウンドが、待ち行列が選択されるたびに実行されるべきである。図９に描かれている待ち行列重みは例示的なものであり、RR待ち行列を重み付けするための唯一の戦略を表すものではない。たとえば、異なる重み付け戦略は、示されている指数的な戦略の代わりに、待ち行列重みを一様に段階変化させる（uniformly  step）ことを選んでもよい。もう一つの戦略は、システムにおいてアクティブであるこの重みに依存して修正される、動的な待ち行列重み（乗数）を実装することができる。
【００４６】
クレジット分配器３２は、0でないクレジット残高に反応して、クレジット分配のレートを上げる。換言すれば、クレジット分配加速（CDA:  credit  distribution  acceleration）である。これは図５ではM＞Nとして描かれている。CDA法は、同じクレジット・ラウンド内の複数のRRラウンドを、RR待ち行列を通す単一の処理パスに組み合わせる。これは、任意の単一の帯域幅カテゴリーのクレジット・ラウンド内で達成され、よって、スケジューリングの第二の次元は明示的には関わってこない。この方法は、RRラウンドの最初と最後の知識を必要とし、各RRラウンドの始まりにおいてCDAまたはMの大きさを評価する。CDAラウンドにおいて組み合わされるRRラウンドの数は典型的には2である（M＝2）。クレジット残高３８が特に大きい場合にはM＝4に上げることも価値があると思われる。クレジット残高３８に対して比較するための閾値として潜在的に構成設定される。
【００４７】
ある代替的な実施形態は、RRラウンドの最大数を単一のパスに組み合わせることを、現在のクレジット・ラウンドにおける各子のフルの残りの重みを割り当て、それによりWIRRクレジット・ラウンドを終わらせることによって行う。さらにもう一つの実装は、RRラウンドに関与する子の数を計算し、加速を、1＋CB/「子の数」に設定し、事実上、現在のRR待ち行列を通す単一のパスにおいてクレジット残高３８をなくす。
【００４８】
CDA法は、クレジットを分配する機会をスキップすることによって、加速されたRRラウンドの途中でクレジット分配レートの通常への復帰を許容する。換言すれば、Mが2であり、クレジット残高３８が0に戻されている場合、１回おきの機会にのみクレジットを分配する。たとえば、M×N×0.5＝Nである。継続される加速のための試験は簡単である――クレジット残高がMと残り重みiとのうちの最小よりも大きければ、RR待ち行列の先頭にある子iがクレジットをサービスされることができる。
【００４９】
クレジット分配加速（「CDA」）は、任意の優先度レベルにおいてRRラウンド毎に実行されてもよい。CDAはRRラウンドの始まりにおいてトリガーする。RRラウンドの始まりにおいて選ばれる加速因子Mは、RRラウンド全体に適用される。子に、1以下の調整された重みを割り当てることは避けるべきである。というのも、調整された重み＞1をもつ子だけがこの形の加速に参加できるからである。クレジット・ラウンドにおける残り重みがCDAによって指定されるクレジットより少ない子は、その残り重みを受け取るだけである（すなわち、加速する機会は失われるまたは部分的に失われる）。
【００５０】
ここでクレジット分配器３２から、本発明の原理に基づいて構築された対応する送信選択器３０に注意を移す。従来の逆クレジット管理（ICM:  inverse  credit  management）スケジューラは、正のクレジットをもつ子だけにサービスする一つだけの送信待ち行列を含んでいた。子は、たとえば、ラウンドロビン順に従って送信のために選択され、送信待ち行列の末尾において待ち行列に入れられた。次いで、待ち行列の先頭にある子が送信のために選択された。
【００５１】
図１０は、本発明の原理に基づいて構築された、例示的な基本的な送信制御構造７２を示している。本発明のある実施形態によれば、基本的な送信制御構造７２は三つの別個の送信制御待ち行列を含む；正の待ち行列７４、負の待ち行列７６および極負の待ち行列７８である。送信するために適格、たとえば利用可能なデータを有し、かつイネーブルされているすべての子は、これらの送信制御待ち行列の一つに存在する。優先度選択器８０は、厳密な優先度システムに基づいて、三つの送信制御待ち行列のうちどれかを、送信元となるよう選択する。換言すれば、子を含んでいる最高の優先度の送信制御待ち行列が常に、より低い優先度の送信制御待ち行列より先に選択される。各送信制御待ち行列内では、子は単純なラウンドロビン方式で選択される。すなわち、重みなしである。送信機会は対応するクレジット分配機会をトリガーする。
【００５２】
子らは、有しているクレジット数に基づいて、送信制御待ち行列中に分類〔ソート〕される。子は、そのクレジット残高が変わるにつれて、送信制御待ち行列間で動的に移される。0より大きなクレジット・カウントをもつ子は、正の待ち行列７４に入れられる。子が不適格になるときに本システムの「クレジット・ダンピング（credit  dumping）」側面がなければ、予期される振る舞いは、正のクレジット待ち行列７４からの子だけが送信するというものであろう。本発明はクレジット・ダンピングを許容するので（ここで、クレジット残高がNより大きい）、すべてのアクティブな子によって保持される全クレジットの和が負になることがありうる。負のクレジット・カウントをもつ子は負の待ち行列７６に入れられる。
【００５３】
標準的な正の送信待ち行列７４および負の送信待ち行列７６は、正常なクレジット・カウントをもつ子を含む。正の送信待ち行列７４内の子は、送信するよりやや多くのクレジットを受け取ったものである。一方、負の送信待ち行列７６内の子は、送信するよりやや少ないクレジットを受け取ったものである。標準的な正の送信待ち行列７４からの送信は、不適格性がクレジット残高３８に対する摂動をトリガーしない場合には、正常動作モードである。しかしながら、送信後は、子のクレジット・カウントがクレジット分配器３２によって復元されることができるまで、子の多くは負の送信待ち行列７６内に保持されることになる。
【００５４】
すべてのアクティブな子によって現在保持されているクレジットの和が負になりうることが予見できる。よって、負のクレジット・カウントをもついくつかの子は時折送信しなければならないことがあり、さらにそのクレジット・カウントを減らす。しかしながら、負の間に多数の送信をもつ子は、瞬間的な不公平さを軽減するために別個に取り出してもよい。こうして、閾値、たとえば送信媒体についての最大送信単位に負号を付けたものが設定され、そのような閾値より下の負のクレジット残高をもつ子は極負の待ち行列（extreme  negative  queue）７８に入れられる。極負の待ち行列７８からの送信は、クレジット分配器３２において非常に大きな余剰クレジット残高３８を示唆し、これは特別な注意を要求することがある。極負の待ち行列７８は、すべての子がスパイラル式に落ちているのでない限り、子が非常に低いクレジット残高にスパイラル式に落ちていくことを妨げる。極負の待ち行列７８からの送信は、システムが不安定となる不健全なクレジット残高３８の指標である。クレジット残高３８がさらなる増大をしないよう保護するために取ることのできる非常措置は、送信クレジット費消レートを下げることである（たとえば、送信のためにNクレジットの代わりにN/4クレジットを費やす）。一部のデータはNのコストで送信され、他のデータはN/4のコストで送信されるので、データ送信のコストにおけるこの不連続は、重み公平さアルゴリズムに誤差を導入する。しかしながら、これはクレジット残高３８の無際限の増大に対して保護する単純な実装である。
【００５５】
さらなる実施形態は、図１１に示されるような、より進んだ送信制御構造８２を用いる。この進んだ送信制御構造８２は、上で論じた三つの送信制御待ち行列を、任意的に利用可能でありうる追加的な待ち行列と組み合わせる。より柔軟なスケジューリングの変更と完全に新しい機能のためである。たとえば、送信制御構造８２は、最高優先度バイパス制御待ち行列８４を通じて、音声データのパケットを含む子のような厳密な優先度の子を、重み付けされた公平な待ち行列の子と、マージしてもよい。進んだ送信制御構造８２および上で論じた方法論は、優先度スケジューリングと重み付けされた公平な待ち行列管理とのこの統合を、最小限のコストで許容する。
【００５６】
他の任意的な送信制御待ち行列は、極正の待ち行列（extreme  positive  queue）８６および未知の子の待ち行列８８を含んでいてもよい。極正の待ち行列８６は、送信システムにおけるブロッキングに起因するクレジット・カウントのスパイクを防止し、それによりクレジット残高の安定性を改善する。極正の待ち行列８６は任意的であるが、優先性のない、重みが高い子が迅速にクレジットを積み増すことができるので、これは非常に望ましい機能を果たす。大きなクレジットの蓄積は、その子が不適格になった場合に突然、クレジットがクレジット残高３８にダンプして戻されるので、システム安定性に対して危険である。何らかの子が大きなクレジット・カウントをもつ場合、送信選択器３０はその子に対してポーリングを行って、その子が上限クレジット閾値に到達する危険があるかどうかを判定するべきである。上限クレジット閾値は、現在のトラフィック・フローのようなパラメータを含む送信媒体の仕様に応じて、システム設計者によって設定されてもよい。その子が上限クレジット閾値を超える場合には、その子は、優先サービスを受けるよう、極正待ち行列８６に移されるべきである。未知の子の待ち行列８８は、子が、現在のスケジューラにまだ吸収されていない（知られていない）親スケジューラに知られている可能性を許容する。現在のスケジューラがスケジューリングのために選択されており、適格な他の子を持たない場合、必要とされる子を、未知の子の待ち行列８８が与える。
【００５７】
図１２を参照するに、重み付けされた公平な待ち行列の子の選択の間に送信選択器３０によって実行されるステップを記述する例示的な動作フローチャートが与えられている。送信選択器３０は、その子が新しい選択であるかどうかを判定する（ステップS152）。そうでなければ、送信選択器３０は前の選択と同じ待ち行列および／または子からフレームを送信することを続ける（ステップS154）。選択が新しいものであれば（ステップS152）、送信選択器３０は、待ち行列から出すための子が存在している、最高の優先度の送信待ち行列を選び（ステップS156）、その送信待ち行列の先頭から、送信のために子iを選択する（ステップS158）。子が送信のために選択されたのち、送信選択器３０は、その子iについての全利用可能クレジット（クレジットi）から送信されるバイトの量（「N」）を控除する（ステップS160）。送信選択器３０が送信の終わりに到達すると（ステップS162）、子iがもはや適格でなければ（ステップS164）、子iは送信システムから除去される（ステップS166）。すなわち、子iはもはや送信選択器３０には見えなくなる。しかしながら、子iが適格のままであれば（ステップS164）、子iは、その子の残りクレジットiの数について適切な送信待ち行列の末尾で再び待ち行列に入れられる。
【００５８】
ここで図１３を参照すると、増加したクレジットおよび適格性の変化に応答して送信選択器３０によって実行されるステップを記述する例示的な動作フローチャートが与えられている。送信選択器３０は、子iが新しい子であるかどうかを判定する（ステップS170）。新しい子であるとは、その子が送信選択器待ち行列システムに現在はいっていないということを意味する。その子iが新しくなく、送信選択器３０が、その子iもはや適格ではないと判定する場合には（ステップS172）、子iが現在データを送信していない場合には（ステップS174）、子iは送信システムから除去される（ステップS176）。そうでなく子iは現在送信している場合には（ステップS174）、送信選択器３０は今は反応しない。反応は、図１２の待ち行列から出す処理の一環として行われることになる。
【００５９】
判断ブロックS172に戻ると、子iが適格であり、クレジットiがその子が優先度レベルを変えるのに十分な新しいクレジットを受け取っていることを示す場合（ステップS178）、その子iが現在送信していない限り（ステップS180）、その子iは現在の送信待ち行列から除去され（ステップS182）、クレジットiの数によって示される送信待ち行列、すなわちより高い優先度の送信待ち行列の末尾に入れられる（ステップS184）。
【００６０】
さらに、判断ブロックS170に戻って参照すると、子iが新しい子である場合、送信選択器３０は単に子iを、クレジットiの数によって示される送信待ち行列の末尾に入れる。
【００６１】
本発明は、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアの組み合わせにおいて実現できる。本稿に記載される方法を実行するよう適応されたいかなる種類のコンピューティング・システムまたは装置も本稿に記載された機能を実行するのに好適である。
【００６２】
ハードウェアおよびソフトウェアの典型的な組み合わせは、一つまたは複数の処理要素および記憶媒体に記憶されたコンピュータ・プログラムを有する特化したまたは汎用のコンピュータ・システムであって、該コンピュータ・プログラムは、ロードおよび実行されたときに、前記コンピュータ・システムを本稿に記載された方法を実行するよう制御する、コンピュータ・システムであることができる。本発明はまた、本稿に記載される方法の実装を可能にするすべての機能を有し、コンピューティング・システムにロードされたときにそれらの方法を実行できる、コンピュータ・プログラム・プロダクトに埋め込まれることもできる。記憶媒体は、任意の揮発性または不揮発性記憶デバイスを指す。
【００６３】
本願のコンテキストにおけるコンピュータ・プログラムまたはアプリケーションは、情報処理機能を有するシステムに特定の機能を実行させるよう意図された命令の組の、任意の言語、コードまたは記法における任意の表現を意味する。そのような命令の組が前記システムに機能を実行させるのは、直接的に、あるいはａ）別の言語、コードまたは記法への変換；ｂ）異なる物質形態での再現の一方または両方のあとであってもよい。
【００６４】
さらに、上記において特に断りのない限り、付属の図面のすべては縮尺通りではない。特に、本発明は、その精神または本質的な属性から外れることなく、他の個別的な形態において具現されることができる。よって、本発明の範囲を示すものとしては、以上の明細書ではなく、付属の請求項を参照すべきである。
【符号の説明】
【００６５】
２８  スケジューラ
３０  送信選択器
３２  クレジット分配機
３４  子クレジット状態
３６  適格性プロセス
４２  ＲＲ待ち行列
４４  重み超過待ち行列
【図１】
2015109672.tif 000003
【図２】
2015109672.tif 000004
【図３】
2015109672.tif 000005
【図４】
2015109672.tif 000006
【図５】
2015109672.tif 000007
【図６】
2015109672.tif 000008
【図７】
2015109672.tif 000009
【図８】
2015109672.tif 000010
【図９】
2015109672.tif 000011
【図１０】
2015109672.tif 000012
【図１１】
2015109672.tif 000013
【図１２】
2015109672.tif 000014
【図１３】
2015109672.tif 000015