(57)【特許請求の範囲】
【請求項１】
（ａ）コンピュータ・ネットワーク内のキューを介して移動する複数のパケットのフローを制御するステップと、
（ｂ）前記キューのキュー・レベルを判定するステップと、
（ｃ）前記キューへの前記複数のパケットの提供速度を判定するステップと、
（ｄ）前記キュー・レベルが少なくとも第１キュー・レベルと第２キュー・レベルとの間にある場合に、前記キューへの前記複数のパケットの伝送率および前記キュー・レベルについてそれら値の増減の繰り返しである発振が減衰するように、前記伝送率を制御するステップとを含み、
前記伝送率は、時間に関する前記伝送率の変化を第１量に第２量をかけたものに等しくセットされ、前記第２量が、第１定数から、第２定数に前記伝送率をかけたものを引き、更に前記キュー・レベルを最大の可能なキュー・レベルによって割ったものを引いたものであり、前記第１量が、前記提供速度を４倍したものを、前記最大の可能なキュー・レベルに前記第２定数の二乗を掛けたもので割ったものである、
方法。
【請求項２】
前記キュー・レベルが繰り返し所定の閾値未満である場合は、前記最大の可能なキュー・レベルの値をとり、前記キュー・レベルが繰り返し前記所定の閾値を超える場合は、前記最大の可能なキュー・レベルよりも小さい値をとるものとして仮想的最大キュー・レベルを定義し、
前記伝送率の変化をセットする際に、前記最大の可能なキュー・レベルとして前記仮想最大キュー・レベルを使用する、請求項１に記載の方法。
【請求項３】
前記キューが、さらに、ハードウェア・メモリ・リソースを含む、請求項１に記載の方法。
【請求項４】
前記伝送率を制御するステップ（ｄ）が、
（ｄ１）前記複数のパケットの各パケットの前記伝送速度および優先順位に基づいて、前記複数のパケットの一部をドロップするステップ
をさらに含む、請求項１に記載の方法。
【請求項５】
前記伝送率を制御するステップ（ｄ）が、
（ｄ１）前記キュー・レベルが最小閾値未満の場合に、前記伝送率に１をセットするステップと、
（ｄ２）前記キュー・レベルが最大閾値を超える場合に、前記伝送率に０または０に近い小さい値セットするステップと、
（ｄ３）前記キューレベルが、前記最小閾値と前記最大閾値との間にある場合に、前記伝送率および前記キュー・レベルについて前記発振が減衰されるように、前記伝送率を制御するステップと
をさらに含む、請求項１に記載の方法。
【請求項６】
（ａ）キューを使用する複数のパイプであって、該複数のパイプの各パイプのフローが、各パイプが前記キューにそのトラフックを提供する速度である提供速度に、前記キューに伝送される前記各パイプの前記トラフィックの伝送率をかけたものである、複数のパイプを定義するステップと、
（ｂ）前記複数のパイプのそれぞれの最小フローおよび最大フローをセットするステップと、
（ｃ）キュー・レベルが減少したか０である場合に過剰帯域幅が存在するとし、そうでない場合に過剰帯域幅が存在しないとすることにより、前記キューについて過剰帯域幅が存在するかどうかを判定するステップと、
（ｄ）前記キュー・レベルが減ったか０である場合に、１になるように瞬間過剰帯域幅信号をセットし、そうでない場合に、０になるように前記瞬間過剰帯域幅信号をセットするステップと、
（ｅ）前記瞬間過剰帯域幅信号の指数関数的加重平均になるように過剰帯域幅信号をセットするステップと、
前記キューを介する前記トラフィックが安定するようにするために
（ｆ）前記過剰帯域幅が存在する場合、第１定数に前記過剰帯域幅信号をかけたものである第１量を前の伝送率に加えたものになるように前記フローの伝送率をセットするステップと、
（ｇ）前記過剰帯域幅が存在しない場合に、前のフローに第２定数をかけたものである第２量を前記前の伝送率から引いたものになるように前記伝送率をセットするステップと、
を含む方法。
【請求項７】
前記複数のパイプが、複数のbehaviour aggregate flowである、請求項６に記載の方法。
【請求項８】
前記ステップ（ｆ）または前記ステップ（ｇ）が、前記複数のパイプのそれぞれについて実行される、請求項６に記載の方法。
【請求項９】
前記第１定数および前記第２定数が、前記パイプの前記最小フローに依存する、請求項６に記載の方法。
【請求項１０】
前記第１定数が、重みに第３量をかけたものであり、前記第３量が、前記キューが当該キューから項目を出力できる、定義された速度であるキュー・サービス速度に前記パイプの前記最小フローを加え、前記複数のパイプのそれぞれの前記最小フローの合計に前記キュー・サービス速度をかけたものを引いたものである、請求項６に記載の方法。
【請求項１１】
（ａ）キューを使用する複数のパイプであって、該複数のパイプの各パイプのフローが、各パイプが前記キューにそのトラフックを提供する速度である提供速度に、前記キューに伝送される前記各パイプの前記トラフィックの伝送率をかけたものである、複数のパイプを定義するステップと、
（ｂ）前記複数のパイプのそれぞれの最小フローおよび最大フローをセットするステップと、
（ｃ）キュー・レベルが減少したか０である場合に過剰帯域幅が存在するとし、そうでない場合に過剰帯域幅が存在しないとすることにより、前記キューについて過剰帯域幅が存在するかどうかを判定するステップと、
（ｄ）前記キュー・レベルが減ったか０である場合に、１になるように瞬間過剰帯域幅信号をセットし、そうでない場合に、０になるように前記瞬間過剰帯域幅信号をセットするステップと、
（ｅ）前記瞬間過剰帯域幅信号の指数関数的加重平均になるように過剰帯域幅信号をセットするステップと、
前記キューを介する前記トラフィックが安定するようにするために
（ｆ１）前記複数のパイプからの複数のフローの合計が、第１キュー・レベルより大きい場合に、前記フローの前記伝送率に１未満の第１定数をセットするステップと、
（ｆ２）前記パイプの前記フローが前記パイプの前記最小フロー以下である場合に、１と、前記パイプの前の伝送率に前記第１定数を加えたものとの最小値になるように前記パイプの前記伝送率をセットするステップと、
（ｆ３）前記パイプの前記フローが前記パイプの前記最大フローを超える場合に、前記パイプの前記前の伝送率に第２定数をかけたものになるように前記伝送率をセットするステップであって、前記第２定数が、１未満である、ステップと、
（ｆ４)それ以外の場合に、グローバル伝送率と第１量との最小値になるように前記パイプの前記伝送率をセットするステップであって、前記第１量が、過剰帯域幅が存在する場合に前記前の伝送率に第２量を加えたものであり、前記第１量が、過剰帯域幅が存在しない場合に前記前の伝送率から第３量を引いたものであり、前記第２量が、第３定数に過剰帯域幅信号をかけたものであり、前記第３定数が、前記最小フローに依存し、前記第３量が、前記最小フローに依存する第４定数に前記前のフローをかけたものであり、前記グローバル伝送率が、１と第１値との最小値であり、前記第１値が、第５定数と第２値との最大値であり、前記第２値が、前のグローバル伝送率に第３値を加えたものであり、前記第３値が、第４値に第５値をかけたものであり、前記第４値が、第６定数に前の乗数をかけ、前記グローバル提供速度をかけ、時間間隔をかけ、最大キュー・レベルによって割ったものであり、前記第５値が、第７定数から、第８定数に前記前の乗数をかけ、前記キュー・レベルをかけ、前記最大キュー・レベルで割ったものを引いたものであり、前記乗数が、前のキュー・レベルが閾値未満の場合に第１レベルに近づき、前記前のキュー・レベルが前記閾値を超える場合に第２レベルに近づく指数関数的加重平均である、ステップと、
を含む、方法。
【請求項１２】
コンピュータ・ネットワークを介して移動する複数のパケットのフローの一部を保管するキューと、
前記キュー・レベルが少なくとも第１キュー・レベルと第２キュー・レベルとの間にある場合に前記キューへの前記複数のパケットの伝送率および前記キュー・レベルの各値の増減の繰り返しである発振が減衰するように、前記伝送率を制御し、かつ、前記複数のパケットの提供速度を受け取る前記キューに結合されたエンキュー機構とを含み、
前記伝送率は、時間に関する前記伝送率の変化を第１量に第２量をかけたものに等しくセットされ、前記第２量が、第１定数から、第２定数に前記伝送率をかけたものを引き、更に前記キュー・レベルを最大の可能なキュー・レベルによって割ったものを引いたものであり、前記第１量が、前記提供速度を４倍したものを、前記最大の可能なキュー・レベルに前記第２定数の二乗を掛けたもので割ったものである、
装置。
【請求項１３】
前記エンキュー機構が、前記キュー・レベルが繰り返し所定の閾値未満である場合は、前記最大の可能なキュー・レベルの値をとり、前記キュー・レベルが繰り返し前記所定の閾値を超える場合は、前記最大の可能なキュー・レベルよりも小さい値をとるものとして仮想的最大キュー・レベルを定義し、前記伝送率の変化をセットする際に、前記最大の可能なキュー・レベルとして前記仮想最大キュー・レベルを使用する、請求項１２に記載の装置。
【請求項１４】
前記キューが、さらに、ハードウェア・メモリ・リソースを含む、請求項１２に記載の装置。
【請求項１５】
前記エンキュー機構が、さらに、前記複数のパケットの各パケットの前記伝送速度および優先順位に基づいて、前記複数のパケットの一部を破棄する、請求項１２に記載の装置。
【請求項１６】
コンピュータ・ネットワークを介して移動する複数のパケットのフローの一部を保管するキューと、
前記キューを使用する複数のパイプであって、該複数のパイプの各パイプのフローが、各パイプが前記キューにそのトラフックを提供する速度である提供速度に、前記キューに伝送される前記各パイプの前記トラフィックの伝送率をかけたものである、前記複数のパイプと、
前記伝送率を制御する、前記キューに結合されたエンキュー機構とを含み、
前記エンキュー機構が、（ａ）ユーザによって前記複数のパイプのそれぞれについてセットされる最大フローおよび最小フローを使用し、（ｂ）キュー・レベルが減少したか０である場合に過剰帯域幅が存在するとし、そうでない場合に過剰帯域幅が存在しないとすることにより、前記キューについて過剰帯域幅が存在するかどうかを判定し、（ｃ）前記キュー・レベルが減ったか０である場合に１になるように瞬間過剰帯域幅信号をセットし、そうでない場合に０になるように前記瞬間過剰帯域幅信号をセットし、（ｄ）前記瞬間過剰帯域幅信号の指数関数的加重平均になるように前記過剰帯域幅信号をセットすることによって、前記過剰帯域幅が存在することを示し、前記キューを介する前記トラフィックが安定するようにするために、（ｅ１）前記過剰帯域幅が存在する場合、第１定数に前記過剰帯域幅信号をかけたものである第１量を前の伝送率に加えたものになるように前記伝送率をセットし、（ｅ２）前記過剰帯域幅が存在しない場合に、前記前の伝送率に第２定数をかけたものである第２量を前記前の伝送率から引いたものになるように前記伝送率をセットする、
装置。
【請求項１７】
前記複数のパイプが、複数のbehaviour aggregate flowである、請求項１６に記載の装置。
【請求項１８】
前記第１定数および前記第２定数が、前記パイプの前記最小フローに依存する、請求項１６に記載の装置。
【請求項１９】
前記第１定数が．１２５であり、前記第２定数が．８７５である、請求項１８に記載の装置。
【請求項２０】
前記第１定数が、重みに第３量をかけたものであり、前記第３量が、前記キューが当該キューから項目を出力できる、定義された速度であるキュー・サービス速度に前記パイプの前記最小フローを加え、前記複数のパイプのそれぞれの前記最小フローの合計に前記キュー・サービス速度をかけたものを引いたものである、請求項１８に記載の装置。
【請求項２１】
コンピュータ・ネットワークを介して移動する複数のパケットのフローの一部を保管するキューと、
前記キューを使用する複数のパイプであって、該複数のパイプの各パイプのフローが、各パイプが前記キューにそのトラフックを提供する速度である提供速度に、前記キューに伝送される前記各パイプの前記トラフィックの伝送率をかけたものである、前記複数のパイプと、
前記伝送率を制御する、前記キューに結合されたエンキュー機構とを含み、
前記エンキュー機構が、（ａ）ユーザによって前記複数のパイプのそれぞれについてセットされる最大フローおよび最小フローを使用し、（ｂ）キュー・レベルが減少したか０である場合に過剰帯域幅が存在するとし、そうでない場合に過剰帯域幅が存在しないとすることにより、前記キューについて過剰帯域幅が存在するかどうかを判定し、（ｃ）前記キュー・レベルが減ったか０である場合に１になるように瞬間過剰帯域幅信号をセットし、そうでない場合に０になるように前記瞬間過剰帯域幅信号をセットし、（ｄ）前記瞬間過剰帯域幅信号の指数関数的加重平均になるように前記過剰帯域幅信号をセットすることによって、前記過剰帯域幅が存在することを示し、前記キューを介する前記トラフィックが安定するようにするために、（ｅ１）前記複数のパイプからの複数のフローの合計が、第１キュー・レベルより大きい場合に、前記伝送率に１未満の第１定数をセットすることと、前記パイプの前記フローが前記パイプの前記最小フロー以下である場合に、１と、前記パイプの前の伝送率に前記第１定数を加えたものとの最小値になるように前記パイプの前記伝送率をセットすることと、前記パイプの前記フローが前記パイプの前記最大フローを超える場合に、前記パイプの前記前の伝送率に１未満の第２定数をかけたものになるように前記伝送率をセットすることと、それ以外の場合に、グローバル伝送率と第１量との最小値になるように前記パイプの前記伝送率をセットすることとによって前記フローを増やすか減らし、前記第１量が、過剰帯域幅が存在する場合に前記前の伝送率に第２量を加えたものであり、前記第１量が、過剰帯域幅が存在しない場合に前記前の伝送率から第３量を引いたものであり、前記第２量が、前記最小フローに依存する第３定数に前記過剰帯域幅信号をかけたものであり、前記第３量が、前記最小フローに依存する第４定数に前記前の伝送率をかけたものであり、前記グローバル伝送率が、１と第１値との最小値であり、前記第１値が、第５定数と第２値との最大値であり、前記第２値が、前のグローバル伝送率に第３値を加えたものであり、前記第３値が、第４値に第５値をかけたものであり、前記第４値が、第６定数に前の乗数をかけ、グローバル提供速度をかけ、時間間隔をかけ、最大キュー・レベルによって割ったものであり、前記第５値が、第７定数から、第８定数に前記前の乗数をかけ、前記キュー・レベルをかけ、前記最大キュー・レベルで割ったものを引いたものであり、前記乗数が、前のキュー・レベルが閾値未満の場合に第１レベルに近づき、前記前のキュー・レベルが前記閾値を超える場合に第２レベルに近づく指数関数的加重平均である、装置。
【請求項２２】
前記装置が、複数のブレードに対応する複数のプロセッサを含み、前記複数のプロセッサのそれぞれが、複数のポートを有し、前記キューが、前記複数のプロセッサのプロセッサのためのものである、請求項１６又は２１に記載の装置。
【請求項２３】
（ａ）それを介してコンピュータ・ネットワーク内を流れる複数のパケットが渡されるキューのキュー・レベルを判定する命令と、
（ｂ）前記キューへの前記複数のパケットの提供速度を判定する命令と、
（ｃ）前記キュー・レベルが少なくとも第１キュー・レベルと第２キュー・レベルとの間にある場合に、前記キューへの前記複数のパケットの伝送率および前記キュー・レベルの各値の増減の繰り返しである発振が減衰するように、前記伝送率を制御する命令とを含み、
前記伝送率は、時間に関する前記伝送率の変化を第１量に第２量をかけたものに等しくセットされ、前記第２量が、第１定数から、第２定数に前記伝送率をかけたものを引き、更に前記キュー・レベルを最大の可能なキュー・レベルによって割ったものを引いたものであり、前記第１量が、前記提供速度を４倍したものを、前記最大の可能なキュー・レベルに前記第２定数の二乗を掛けたもので割ったものである、
コンピュータ実行可能プログラムを含むコンピュータ可読媒体。
【請求項２４】
前記キュー・レベルが繰り返し所定の閾値未満である場合は、前記最大の可能なキュー・レベルの値をとり、前記キュー・レベルが繰り返し前記所定の閾値を超える場合は、前記最大の可能なキュー・レベルよりも小さい値をとるものとして仮想的最大キュー・レベルを定義し、
前記伝送率の変化のセットにおいて、前記最大の可能なキュー・レベルとして前記仮想最大キュー・レベルを使用する、請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
前記伝送率を制御する命令（ｃ）が、
（ｃ１）前記複数のパケットの各パケットの前記伝送速度および優先順位に基づいて、前記複数のパケットの一部を破棄する命令をさらに含む、請求項２３に記載のコンピュータ可読媒体。
【請求項２６】
（ａ）キューを使用する複数のパイプであって、該複数のパイプの各パイプのフローが、各パイプが前記キューにそのトラフックを提供する速度である提供速度に、前記キューに伝送される前記各パイプの前記トラフィックの伝送率をかけたものである、複数のパイプを定義する命令と、
（ｂ）前記複数のパイプのそれぞれの最小フローおよび最大フローをセットするステップと、
（ｃ）キュー・レベルが減少したか０である場合に過剰帯域幅が存在するとし、そうでない場合に過剰帯域幅が存在しないとすることにより、前記キューについて過剰帯域幅が存在するかどうかを判定する命令と、
（ｄ）前記キュー・レベルが減ったか０である場合に、１になるように瞬間過剰帯域幅信号をセットし、そうでない場合に、０になるように前記瞬間過剰帯域幅信号をセットする命令と、
（ｅ）前記瞬間過剰帯域幅信号の指数関数的加重平均になるように過剰帯域幅信号をセットする命令と、
前記キューを介する前記トラフィックが安定するようにするために
（ｆ）前記過剰帯域幅が存在する場合、第１定数に前記過剰帯域幅信号をかけたものである第１量を前の伝送率に加えたものになるように前記フローの伝送率をセットする命令と、
（ｇ）前記過剰帯域幅が存在しない場合に、前のフローに第２定数をかけたものである第２量を前記前の伝送率から引いたものになるように前記伝送率をセットする命令と、
を含むコンピュータ可読媒体。
【請求項２７】
（ａ）キューを使用する複数のパイプであって、該複数のパイプの各パイプのフローが、各パイプが前記キューにそのトラフックを提供する速度である提供速度に、前記キューに伝送される前記各パイプの前記トラフィックの伝送率をかけたものである、複数のパイプを定義する命令と、
（ｂ）前記複数のパイプのそれぞれの最小フローおよび最大フローをセットする命令と、
（ｃ）キュー・レベルが減少したか０である場合に過剰帯域幅が存在するとし、そうでない場合に過剰帯域幅が存在しないとすることにより、前記キューについて過剰帯域幅が存在するかどうかを判定する命令と、
（ｄ）前記キュー・レベルが減ったか０である場合に、１になるように瞬間過剰帯域幅信号をセットし、そうでない場合に、０になるように前記瞬間過剰帯域幅信号をセットする命令と、
（ｅ）前記瞬間過剰帯域幅信号の指数関数的加重平均になるように過剰帯域幅信号をセットする命令と、
前記キューを介する前記トラフィックが安定するようにするために
（ｆ１）前記複数のパイプからの複数のフローの合計が、第１キュー・レベルより大きい場合に、前記フローの前記伝送率に１未満の第１定数をセットする命令と、
（ｆ２）前記パイプの前記フローが前記パイプの前記最小フロー以下である場合に、１と、前記パイプの前の伝送率に前記第１定数を加えたものとの最小値になるように前記パイプの前記伝送率をセットする命令と、
（ｆ３）前記パイプの前記フローが前記パイプの前記最大フローを超える場合に、前記パイプの前記前の伝送率に第２定数をかけたものになるように前記伝送率をセットするステップであって、前記第２定数が、１未満である、命令と、
（ｆ４)それ以外の場合に、グローバル伝送率と第１量との最小値になるように前記パイプの前記伝送率をセットする命令であって、前記第１量が、過剰帯域幅が存在する場合に前記前の伝送率に第２量を加えたものであり、前記第１量が、過剰帯域幅が存在しない場合に前記前の伝送率から第３量を引いたものであり、前記第２量が、第３定数に過剰帯域幅信号をかけたものであり、前記第３定数が、前記最小フローに依存し、前記第３量が、前記最小フローに依存する第４定数に前記前のフローをかけたものであり、前記グローバル伝送率が、１と第１値との最小値であり、前記第１値が、第５定数と第２値との最大値であり、前記第２値が、前のグローバル伝送率に第３値を加えたものであり、前記第３値が、第４値に第５値をかけたものであり、前記第４値が、第６定数に前の乗数をかけ、前記グローバル提供速度をかけ、時間間隔をかけ、最大キュー・レベルによって割ったものであり、前記第５値が、第７定数から、第８定数に前記前の乗数をかけ、前記キュー・レベルをかけ、前記最大キュー・レベルで割ったものを引いたものであり、前記乗数が、前のキュー・レベルが閾値未満の場合に第１レベルに近づき、前記前のキュー・レベルが前記閾値を超える場合に第２レベルに近づく指数関数的加重平均である、命令と、
を含むコンピュータ可読媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・ネットワークに関し、具体的には、コンピュータ・ネットワーク内でのデータの破棄の制御、したがって、データの伝送の制御の方法およびシステムに関する。
【０００２】
【従来の技術】
コンピュータ・ネットワークは、インターネットを用いるものなどの、さまざまなネットワーク・アプリケーションの使用の増加に起因して、関心が高まっている。スイッチは、ネットワークの一部またはネットワークを結合するのにしばしば使用される。図１に、コンピュータ・ネットワークで使用することができるスイッチ１０の単純化されたブロック図を示す。スイッチ１０には、ブレード７、８、および９に結合されたスイッチ・ファブリック３が含まれる。各ブレード７、８、および９は、一般に、回路ボードであり、少なくとも、ポート４に結合されたネットワーク・プロセッサ２を含む。ポート４は、ホスト（図示せず）に、直接にまたはさまざまなネットワーク・ノードを介して間接的に結合される。ブレード７、８、および９は、スイッチ・ファブリック３にトラフィックを供給し、スイッチ・ファブリック３からトラフィックを受け入れることができる。したがって、ブレード７、８、または９の１つに接続されたホストは、同一のまたは別のブレード７、８、または９に接続された別のホストと通信することができる。
【０００３】
図２に、図１に示されたネットワーク・プロセッサ２として有用なプログラマブル・ネットワーク・プロセッサの実施形態の高水準ブロック図を示す。図からわかるように、ネットワーク・プロセッサ２には、入スイッチ・インターフェース（入ＳＷＩ）１１、入エンキュー／デキュー／スケジューリング・ロジック（入ＥＤＳ）１２、組込プロセッサ複合体（ＥＰＣ）１３、入物理ＭＡＣマルチプレクサ（入ＰＭＭ）１４、出物理ＭＡＣマルチプレクサ（出ＰＭＭ）１５、出エンキュー／デキュー／スケジューリング・ロジック（出ＥＤＳ）１６、および出スイッチ・インターフェース（出ＳＷＩ）１７が含まれる。ネットワーク・プロセッサ２に、他の記憶装置および処理装置も含めることができる。ＥＰＣ１３には、複数のプロトコル・プロセッサおよびコプロセッサが含まれる。入ＥＤＳ１２および出ＥＤＳ１６は、それぞれ、イーサネット（Ｒ）・デバイスなどのデバイスからスイッチ・ファブリックに移動するトラフィックおよびスイッチ・ファブリックからデバイスに移動するトラフィックの、あるエンキュー機能、デキュー機能、およびスケジューリング機能を実行することができる。入ＳＷＩ１１および出ＳＷＩ１７は、別のネットワーク・プロセッサまたはスイッチ（図２に図示せず）などの他のデバイスへの接続用のリンクを提供する。スイッチ・ファブリックと共に使用される入ＳＷＩ１１および出ＳＷＩ１７は、スイッチ１０のスイッチ・ファブリック３（図１）と結合される。入ＰＭＭ１４および出ＰＭＭ１５は、それぞれ物理層デバイスからトラフィックを受け取り、物理層デバイスにトラフィックを送出する。ここで説明するプログラマブル・ネットワーク・プロセッサのアーキテクチャおよび動作は、本明細書に開示される発明とは別の保護の対象である。いくつかの応用例で、本明細書でスイッチ・ファブリックと１つまたは複数のネットワーク・プロセッサの組合せによって達成されるものとして説明される機能を、単一のネットワーク・プロセッサまたはネットワーク・プロセッサの結合された対によって、スイッチ・ファブリックの提供とは別に達成することができる。
【０００４】
図３に、ネットワーク・プロセッサ２によって実行される機能の一部を異なる形で示す、スイッチ１０の代替の単純化されたブロック図を示す。機能の一部が、図１に示されたものと同一のコンポーネントによって実行されるが、これらのコンポーネントに、異なる符号が付される場合がある。たとえば、スイッチ１０を介するトラフィックのパスを説明するために、図１のスイッチ・ファブリック３が、図３ではスイッチ・ファブリック２６として示されている。スイッチ１０は、ポートＡ１８に接続されたホスト（図示せず）を、ポートＢ３６に接続されたホスト（図示せず）に結合する。したがって、スイッチ１０を用いると、データのパケットをソースから宛先に転送できるようになる。データ・パケットに、複数の異なるタイプのデータ・パケットを含めることができる。たとえば、イーサネット（Ｒ）・パケット（通常はフレームと称する）、ＡＴＭパケット（通常はセルと称する）、およびＩＰパケット（通常はパケットと称する）のすべてを、本明細書ではパケットと称する。
【０００５】
スイッチ１０は、スイッチ１０に供給されるデータ・パケットの分類、スイッチ１０を介するデータ・パケットの伝送、およびパケットの再組立を含むさまざまな機能を実行する。これらの機能は、それぞれ、クラシファイヤ２２、スイッチ・ファブリック２６、およびリアセンブラ３０によって提供される。クラシファイヤ２２は、それに供給されるパケットを分類し、各パケットを、本明細書でセルと称する都合のよいサイズの部分に分割する。スイッチ・ファブリック２６は、接続のマトリックスであり、これを介して、セルがスイッチ１０を介して伝送される。リアセンブラ３０は、セルを適当なパケットに再組立する。その後、パケットをポートＢ３６の適当なポートに供給し、宛先ホストに出力することができる。クラシファイヤ２２は、あるネットワーク・プロセッサ１の一部とすることができ、リアセンブラ３０は、他のネットワーク・プロセッサ５の一部とすることができる。図示されたネットワーク・プロセッサ１およびネットワーク・プロセッサ５の諸部分は、それぞれ、ポートＡ１８から移動するトラフィックおよびポートＢ３６に移動するトラフィックに関する機能を実行する。しかし、ネットワーク・プロセッサ１および５は、それぞれ、ポートＡ１８から移動するトラフィックおよびポートＢ３６に移動するトラフィックに関する機能も実行する。しかし、ネットワーク・プロセッサ１および５は、それぞれ、ポートＢ３６から移動するトラフィックおよびポートＡ１８に移動するトラフィックに関する機能も実行する。したがって、各ネットワーク・プロセッサ１および５は、分類機能および再組立機能を実行することができる。さらに、各ネットワーク・プロセッサ１および５は、図１および２に示されたネットワーク・プロセッサとすることができる。
【０００６】
スイッチ１０を介するトラフィックの転送のボトルネックに起因して、データ・パケットが、分類機能、伝送機能、および再組立機能の実行の前に、待つことが必要になる場合がある。その結果、キュー２０、２４、２８、および３４が設けられる場合がある。キュー２０、２４、２８、および３４に結合されるのが、エンキュー機構１９、２３、２７、および３２である。エンキュー機構は、パケットまたはセルを対応するキューに置き、そのパケットが発したホストに送り返される通知を提供することができる。分類機能、エンキュー機能、およびスケジューリング機能は、図２に示されたネットワーク・プロセッサ内の入ＥＤＳ１２および出ＥＤＳ１６によって提供されることが好ましい。エンキュー機構１９および２３と、キュー２０および２４と、クラシファイヤ２２と、スケジューラ２１および２５が、入ＥＤＳ１２を使用して制御される。同様に、エンキュー機構２７および３２と、キュー２８および３４と、リアセンブラ３０と、スケジューラ２９および３５は、出ＥＤＳ１６を使用して制御される。
【０００７】
図３には、スケジューラ２１、２５、２９、および３５も示されている。スケジューラは、それぞれ、キュー２０、２４、２８、および３４から出る予定の個々のパケットのスケジューリングを制御する。一般に、下でより明瞭になるように、本明細書の関心事は、図２の出ＰＭＭ１５、出ＥＤＳ１６、および出ＳＷＩ１７によって示されるネットワーク・プロセッサ２の出部分である。本発明の例示的な焦点の１つに、ポートＢ３６へのトラフィックを制御するスケジューラ３５が含まれる。明瞭にするために、スケジューラの機能を、スケジューラ３５およびキュー３４に関して説明する。通常、スケジューラ３５は、キュー３４内の各パケットに関する情報を与えられる。この情報には、伝送の時間が重要であるリアルタイム・パケットまたは伝送の速度が重要でないデータ・パケットなどのパケットのタイプを含めることができる。この情報および供給される他の情報に基づいて、スケジューラ３５は、キュー３４内の各個々のパケットをキューから除去し、その宛先に送ることを決定する。たとえば、スケジューラ３５に、それぞれが複数の位置を含む１つまたは複数のカレンダと、もう１つの複数の位置を含む加重公平キューイング・リングを含めることができる。スケジューラ３５は、あるパケットをカレンダに置き、他のパケットをリングに置くことができる。スケジューラは、カレンダの各位置に、ある長さの時間を割り振る。カレンダ内の各位置は、通常は識別子によって表される単一のパケットを有することができ、また、空にすることができる。スケジューラが、ある位置に達した時に、その位置に置かれたパケットが、キューから取り出され、その宛先に送られる。しかし、カレンダ内の位置が空である場合には、スケジューラ３５は、特定の長さの時間が経過するまで待ち、その後、カレンダ内の次の位置に移る。同様に、スケジューラ３５は、スケジューラ３５の加重公平キューイング・リングの位置に他のパケットを置く。加重公平キューイング・リング内の位置も、単一のパケットによって占められるか空のいずれかとすることができる。位置が占められる場合に、スケジューラ３５は、その位置に達した時にその位置のパケットを送出する。位置が占められていない場合には、スケジューラ３５は、次の占められている位置にスキップする。スケジューラ３５を使用してキュー３４を出る個々のパケットを制御することによって、トラフィックが、スイッチ１０を介して流れられるようになる。
【０００８】
キュー２０、２４、２８、および３４が、別々に図示されているが、当業者は、これらのキューの一部またはすべてを、同一の物理メモリ・リソースの一部とすることができることを容易に諒解するであろう。
【０００９】
スイッチ１０を介して流れるトラフィックを制御し、これによって、そのスイッチが使用されるネットワークの性能を改善するための方法が開発されてきた。具体的に言うと、ＲＥＤ（random early discard or detection）と称する方法を、キューなどのメモリ関連メモリ・リソースが過負荷でないことを保証する試みに使用することができる。図４に、ＲＥＤで使用される方法を示す。方法ＲＥＤは、通常は、エンキュー機構１９、２３、２７、および３２の１つによって、それぞれ対応するキュー２０、２４、２８、および３４を介するトラフィックを制御するのに使用される。明瞭にするために、方法ＲＥＤを、エンキュー機構１９およびキュー２０に関して説明する。
【００１０】
エポックと称する短い時間の期間の終りに、ステップ４１を介して、そのエポックのキュー２０のキュー・レベルが、エンキュー機構１９によって判定される。判定されるキュー・レベルが、そのエポックの平均キュー・レベルであることに留意されたい。さらに、判定されるキュー・レベルを、キュー２０がその一部であるメモリ・リソースの総レベルとすることができる。その後、ステップ４２を介して、キュー・レベルが最小閾値を超えるかどうかが判定される。キュー・レベルが、最小閾値を超えない場合には、ステップ４３を介して、通常の伝送率に１をセットする。また、ステップ４３では、破棄率に０をセットする。伝送率によって、パケットのうちで次のエポックに伝送される部分が決定される。破棄率によって、パケットのうちでドロップされる部分が決定される。したがって、従来の破棄率は、１から従来の伝送率を引いた値に等しい。したがって、１の伝送率は、すべてのパケットを伝送しなければならず、どのパケットもドロップしてはならないことを示す。
【００１１】
ステップ４２で、キュー・レベルが最小閾値を超えると判定される場合には、次に、ステップ４４を介して、エポックのキュー・レベルが最大閾値を超えるかどうかを判定する。キュー・レベルが最大閾値を超えると判定される場合には、ステップ４５を介して、通常の伝送率に０をセットし、通常の破棄率に１をセットする。キュー・レベルが最大閾値を超えない場合には、ステップ４６を介して、通常の破棄率を、前のエポックのキュー・レベルを最大の可能なキュー・レベルで割った値、または、代替案として、キュー・レベルの他の線形関数に比例してセットする。したがって、従来の破棄率は、キュー２０のうちの占められた部分またはキュー・レベルの他の線形関数に比例する。したがって、ステップ４６で、従来の伝送率も、１から従来の破棄率を引いたものに比例してセットされる。
【００１２】
ステップ４３、４５、または４６でセットされた従来の伝送率および従来の破棄率が、ステップ４７を介して、次のエポックでランダムにパケットを破棄するのに使用される。したがって、キュー・レベルが最小閾値未満の時には、すべてのパケットが、次のエポック中にエンキュー機構１９によってキュー２０に伝送される。キュー・レベルが最大閾値を超える時には、すべてのパケットが、次のエポック中にエンキュー機構１９によって破棄されるか、破棄キューにエンキューされる。キュー・レベルが、最小閾値と最大閾値の間である時には、パケットのうちでエンキュー機構１９によって破棄される部分が、キュー２０のうちで占められた部分またはキュー・レベルの他の線形関数に比例する。したがって、キュー・レベルが高いほど、パケットのうちで破棄される部分が多くなる。さらに、破棄されるパケットの送信側に通知を供給することができ、これによって、送信側が、ある時間期間の間追加パケットの送出を中断することになる。
【００１３】
破棄のために選択される個々のパケットを、ランダムに選択することもできる。たとえば、パケットごとに、エンキュー機構１９が、０と１の間の乱数を生成することができる。この乱数を、従来の破棄率と比較する。乱数が、従来の破棄率以下である場合には、そのパケットをドロップする。そうでない場合には、そのパケットをキュー２０に送る。伝送率に基づいてパケットを破棄するこの処理は、ステップ４８を介してエポックが終了したと判定されるまで継続される。エポックが終わった時に、方法ＲＥＤは、ステップ４１でもう一度開始されて、次のエポックについて従来の伝送率を判定し、次のエポック中に従来の伝送率に従ってパケットをドロップする。
【００１４】
パケットを、キュー・レベルに基づいて破棄することができるので、方法ＲＥＤを用いると、スイッチ１０を介するトラフィックに対するある程度の制御が可能になる。その結果、キュー２０が満杯になる前にパケットを破棄する機構を有しないスイッチよりも、droptailに起因してドロップされるパケットを少なくすることができる。droptailが発生するのは、キューが満杯になったのでパケットをドロップしなければならない時である。その結果、パケットをドロップするかどうかを判定する際に、パケットの優先順位を考慮する機会がない。さらに、いくつかの情況で、方法ＲＥＤによって、スイッチ１０にパケットを送るホストの同期化が低下する可能性がある。これが発生するのは、キュー・レベルが最大キュー・レベルまたはその近くである時にすべてのパケットをドロップするのではなく、従来の伝送率に基づいてパケットがランダムにドロップされる可能性があるからである。したがって、スイッチ１０の性能は、方法ＲＥＤを使用しないスイッチすなわち、バッファ・リソースが枯渇した時に次に到着するパケットを単純にドロップするスイッチに対して改善される。
【００１５】
方法ＲＥＤによって、スイッチ１０の動作が改善されるが、当業者は、多くの情況で、この方法がスイッチ１０を介するトラフィックを適当に制御できなくなる可能性があることを容易に理解するであろう。パケットまたはセルを、キューが満杯になる前にドロップすることができるという事実にもかかわらず、ホストは、いくつかの情況で同期化される傾向を有する。これは、スイッチ１０のトラフィックの適度なまたは高いレベルの輻輳について特にそうである。従来の伝送率は、キュー・レベルに基づく。しかし、キュー・レベルは、スイッチの状態を示していない場合がある。たとえば、最小閾値未満のキュー・レベルが、スイッチ１０内の低いレベルのトラフィック（スイッチを通過するパケットの数が少ない）に起因する可能性がある。しかし、低いキュー・レベルが、スイッチ１０を通る高いトラフィックが原因の前のエポックでの多数の破棄に起因する可能性もある。低いキュー・レベルが、低いトラフィック・レベルに起因する場合には、従来の伝送率を増やすことが適当である。低いキュー・レベルが、高い破棄率に起因する場合には、従来の伝送率を増やすことが望ましくない可能性がある。方法ＲＥＤは、これらの情況を区別しない。その結果、伝送率が、そうすべきでない時に増やされる場合がある。これが行われた時には、キューが急速に満たされる可能性がある。その後、伝送率が下げられ、キュー・レベルが減る。キュー・レベルが下がった時に、伝送率が増やされ、キューが再び急速に満たされる。したがって、スイッチ１０は、キュー満杯とキュー空の間で発振し始める。その結果、スイッチ１０の平均使用量が、非常に低くなり、スイッチ１０を使用するネットワークの性能が低下する。
【００１６】
図５に、米国ニューヨーク州アーモンクのInternational Business Machines, Inc.社の従業員によってより最近に開発された方法の流れ図を示す。この方法を、ＢＬＵＥと称する。方法ＢＬＵＥは、キュー・レベルだけではなく、伝送速度および提供速度も考慮に入れる。提供速度とは、パケットまたはセルがエンキュー機構に提供されて対応するキューに供給される速度である。方法ＲＥＤと同様に、方法ＢＬＵＥを、エンキュー機構１９およびキュー２０を使用して説明する。ステップ５２を介して、キュー２０のキュー・レベル、エンキュー機構１９によってキュー２０に供給される伝送率、および提供速度が、終了したばかりのエポックについて判定される。提供速度は、パケットがエンキュー機構１９に供給される速度である。したがって、提供速度は、ポートＡ１８の１つまたは複数によって供給されるトラフィックのフローから来る可能性がある。
【００１７】
その後、ステップ５４を介して、パケット・ロスまたはある閾値を超えるキュー・レベルがあったかどうかを判定する。どちらのイベントも、破棄率を増やさなければならないことを示す。そうである場合には、ステップ５６を介して、経験的に決定することができる第１定数量だけ破棄率を増分する。ステップ５６で、１から破棄率を引いた値である伝送率を減らす。ステップ５４で、破棄率を増やしてはならないことが示される場合には、ステップ５８を介して、破棄率を減らさなければならないかどうかを判定する。キュー・レベルが低いか、提供速度が低い場合に、破棄率を減らさなければならない。破棄率を減らさなければならない場合には、ステップ６０を介して、やはり経験的に決定することができる第２定数量を引くことによって、これが達成される。ステップ６２を介して、変更される場合にステップ５６または６０で決定された破棄率、または古い破棄率を使用して、次のエポック中にキュー２０に伝送されるパケットの分数を決定する。ステップ６２で、パケットを、ランダムに、または各パケットの優先順位も考慮することによって、破棄することができる。したがって、正しい破棄率、したがって正しい伝送率が維持されることが保証される。その後、ステップ６４を介して、エポックが終わったかどうかを判定する。そうである場合には、ステップ５２に戻る。そうでない場合には、方法ＢＬＵＥは、ステップ６２での開始を繰り返す。ＢＬＵＥに関するさらなる詳細については、ウェブサイトhttp://www.eecs.umich.edu/usuchang/blue/を参照されたい。
【００１８】
方法ＢＬＵＥは、その初期の目的に関して良好に動作し、方法ＲＥＤに対する改良であるが、当業者は、方法ＢＬＵＥが、安定状態に達するのに比較的長い時間を要する可能性があることを容易に理解するであろう。したがって、性能は方法ＲＥＤに対して改善されるが、ネットワークの性能は、まだ所望の性能より低い可能性がある。
【００１９】
スイッチを介するトラフィックを制御するもう１つの方法では、たとえばサービスについて顧客が支払う料金に基づいて、顧客に異なるサービスを提供する。消費者は、より高速の応答を保証するため、または、他の顧客のトラフィックが輻輳に起因してドロップされる時であっても自分のためのトラフィックが伝送されることを保証するために、より多くを支払うことを望む場合がある。したがって、差異化サービスの概念が展開された。差異化サービスは、異なるレベルのサービスまたはネットワークを介するトラフィックのフローを、異なる顧客に提供することができる。
【００２０】
DiffServは、差異化サービスを提供するための、新しいInternet Engineering Task Force（ＩＥＴＦ）標準規格である（ＩＥＴＦ  ＲＦＣ  ２４７５および関連ＲＦＣを参照されたい）。DiffServは、behaviour aggregate flowに基づく。behaviour aggregate flowは、ネットワークの一端からネットワークの他端へのパイプラインとみなすことができる。各behaviour aggregate flow内に、個々のホストの間の数百のセッションがある可能性がある。しかし、DiffServは、behaviour aggregate flow内のセッションに関するものではない。そうではなく、DiffServは、behaviour aggregate flowの間の帯域幅の割振りに関する。DiffServによれば、過剰帯域幅が、behaviour aggregate flowの間で公平に割り振られる。さらに、DiffServは、下で説明する、各behaviour aggregate flowに提供されるサービスのレベルを測定する判断基準を提供する。
【００２１】
異なるレベルのサービスを提供する機構の１つでは、重みとキュー・レベルの組合せを使用して、異なるレベルのサービスを提供する。図６に、そのような方法を示す。ステップ７２を介して、キュー・レベル閾値および重みをセットする。通常、キュー・レベル閾値は、ステップ７２で、ネットワーク管理者によってセットされる。重みは、特定のキュー、スイッチ１０、またはネットワーク・プロセッサ１または５を介する、異なるパイプまたはフローについてセットすることができる。したがって、重みは、通常、異なるbehaviour aggregate flowについてセットされる。ステップ７４を介して、瞬間キュー・レベル、平均キュー・レベル、瞬間パイプ・フロー速度、または平均パイプ・フロー速度を、通常はエポックの終わりと称する時間の期間の終りに、観察する。その後、ステップ７６を介して、キュー・レベルがキュー・レベル閾値にどれほど匹敵するかと重みとに基づいて、パイプのフローを変更する。ステップ７６で、より大きい重みを有するパイプのフローが、より大きい変化をうける。パイプのキュー値またはパイプ・フロー速度によって、パイプによってキュー３４などのキューに提供されるトラフィックのどれほどが、エンキュー機構３２などの対応するエンキュー機構によってキュー３４に送られるかが決定される。したがって、ステップ７８を介して、トラフィックが、フローに基づいて、キューに伝送されるかドロップされる。その後、ステップ８０を介して、ネットワーク管理者が、所望のサービスのレベルが満たされているかどうかを判定する。そうである場合には、ネットワーク管理者の作業が完了する。しかし、所望のサービスのレベルが達成されていない場合には、ステップ７２を介して、キュー・レベルまたはパイプ・フロー・レベルの閾値とおそらくは重みが、リセットされ、この方法が繰り返される。
【００２２】
ここで説明したDiffServ方法は、機能するが、当業者は、キュー・レベル閾値の変更がネットワークを通る特定のパイプにどのような影響を有するかを判定することが困難であることを容易に理解するであろう。したがって、この方法を使用するネットワーク管理者は、異なる顧客またはコンピュータ内のパイプ（behaviour aggregate flow）について所望のフロー速度に達する前に、大量の経験を積む必要が生じる可能性がある。
【００２３】
さらに、この方法は、サービスの品質を測定するのに通常使用されるパラメータに対して間接的に動作する。キュー・レベルは、サービスに関して通常使用される判断基準の直接の尺度ではない。通常、たとえばDiffServ（ＩＥＴＦ  ＲＦＣ  ２４７５および関連ＲＦＣを参照されたい）では、サービスのレベルが、４つのパラメータすなわち、ドロップ率、帯域幅、待ち時間、およびジッタによって測定される。ドロップ率は、トラフィックのうちでスイッチを介して流れる際にドロップされるものの比率である。behaviour aggregate flowの帯域幅は、スイッチを横切って宛先に達するbehaviour aggregate flowのトラフィックの量の尺度である。待ち時間は、ネットワークを介してトラフィックを送る際にこうむる遅延である。ジッタは、経時的な待ち時間の変動である。キュー・レベルは、サービスの品質の直接の尺度とみなされない。したがって、この方法は、サービスの品質の判断基準のいずれにも直接には対処せず、ネットワーク管理者が異なるレベルのサービスを提供するのにこの方法を使用することが、より困難になっている。
【００２４】
方法ＲＥＤまたは方法ＢＬＵＥを使用する時であっても、スケジューラ３５などのスケジューラに、所与の時間内に達成できる量より多い量の作業が与えられる場合がある。具体的に言うと、特定の長さの時間であまりに大量のパケットがキュー３４から除去されることが所望される場合に、スケジューラが、スイッチ１０を通るトラフィックに対処できなくなる可能性がある。たとえば、スケジューラ３５が、キュー３４から除去されるパケットが、ターゲット・ポートなどのその第１の宛先に、第１の速度で転送されることを保証することができる場合がある。この第１の速度は、ターゲット・ポートがトラフィックを受け入れる能力などのさまざまな要因によって制限される可能性がある。方法ＲＥＤおよびＢＬＵＥでは、パケットを、第２の速度でキューから除去できる場合がある。第２の速度が、第１の速度より高い場合に、パケットが、スケジューラ３５内でバック・アップされ始める。たとえば、スケジューラ３５に、カレンダと加重公平キューイング・リングが含まれる場合に、カレンダ内および加重公平キューイング・リング内のすべての位置が、最終的に占められる可能性がある。したがって、パケットは、スケジューラ３５内のカレンダまたは加重公平キューイング・リング内の位置が空くまで、キュー３４から出ることができなくなる。その結果、スイッチ１０を介して移動するパケットの待ち時間が増え、トラフィックが遅くなり、スイッチ１０が、望まれるほど効率的に機能しなくなる。
【００２５】
【発明が解決しようとする課題】
上の議論を念頭において、当業者は、スイッチを介するトラフィックをよりよく制御するシステムおよび方法が必要であることを諒解するであろう。本発明は、そのような必要に対処する。
【００２６】
【課題を解決するための手段】
本発明は、コンピュータ・ネットワーク内で複数のパケットのフローを制御できるようにする方法、装置、およびコンピュータ可読媒体を提供する。コンピュータ・ネットワークに、キューが含まれる。この方法および装置には、キューのキュー・レベルを判定することと、キューへの複数のパケットの提供速度を判定することが含まれる。この方法および装置には、キュー・レベルが少なくとも第１キュー・レベルと第２キュー・レベルの間である場合に伝送率およびキュー・レベルが臨界減衰（本明細書で定義する）されるように、キューへの複数のパケットの伝送率を、キュー・レベルおよび提供速度に基づいて制御することも含まれる。言い換えると、キュー・レベルが少なくとも第１キュー・レベルと第２キュー・レベルとの間にある場合に、伝送率およびキュー・レベルの各値の増減の繰り返しである発振が減衰するように、伝送率を制御することが含まれる。
伝送率は、時間に関する伝送率の変化を第１量に第２量をかけたものに等しくセットされる。ここで、第２量は、第１定数から、第２定数に伝送率をかけたものを引き、キュー・レベルを最大の可能なキュー・レベルによって割ったものを引いたものである。第１量は、提供速度を４倍したものを、最大の可能なキュー・レベルに第２定数の二乗を掛けたもので割ったものである。
またこの方法および装置には、キューを使用する複数のパイプであって、該複数のパイプの各パイプのフローが、提供速度に伝送率をかけたものである複数のパイプを定義することと、複数のパイプのそれぞれの最小フローおよび最大フローをセットすることと、キュー・レベルが減少したか０である場合に過剰帯域幅が存在するとし、そうでない場合に過剰帯域幅が存在しないとすることにより、キューについて過剰帯域幅が存在するかどうかを判定することと、キュー・レベルが減ったか０である場合に、１になるように瞬間過剰帯域幅信号をセットし、そうでない場合に、０になるように瞬間過剰帯域幅信号をセットすることと、そして、瞬間過剰帯域幅信号の指数関数的加重平均になるように過剰帯域幅信号をセットすることとが含まれる。
この場合、１つには、キューを介するトラフィックが安定するようにするために、過剰帯域幅が存在する場合、第１定数に過剰帯域幅信号をかけたものである第１量を前の伝送率に加えたものになるようにフローの伝送率をセットし、過剰帯域幅が存在しない場合に、前のフローに第２定数をかけたものである第２量を前の伝送率から引いたものになるように伝送率をセットする。
また１つには、複数のパイプからの複数のフローの合計が、第１キュー・レベルより大きい場合に、フローの前記伝送率に１未満の第１定数をセットすることと、パイプのフローが前記パイプの前記最小フロー以下である場合に、１と、パイプの前の伝送率に第１定数を加えたものとの最小値になるようにパイプの伝送率をセットすることと、パイプのフローがパイプの最大フローを超える場合に、前パイプの前の伝送率に１未満である第２定数をかけたものになるように伝送率をセットすることと、それ以外の場合に、グローバル伝送率と第１量との最小値になるようにパイプの伝送率をセットすることとが含まれる。
ここで、第１量は、過剰帯域幅が存在する場合に前の伝送率に第２量を加えたものであり、第１量が、過剰帯域幅が存在しない場合に前の伝送率から第３量を引いたものであり、第２量が、第３定数に過剰帯域幅信号をかけたものであり、第３定数が、最小フローに依存第３量が、最小フローに依存する第４定数に前のフローをかけたものであり、グローバル伝送率が、１と第１値との最小値であり、第１値が、第５定数と第２値との最大値であり、第２値が、前のグローバル伝送率に第３値を加えたものであり、第３値が、第４値に第５値をかけたものであり、第４値が、第６定数に前の乗数をかけ、グローバル提供速度をかけ、時間間隔をかけ、最大キュー・レベルによって割ったものであり、第５値が、第７定数から、第８定数に前の乗数をかけ、キュー・レベルをかけ、最大キュー・レベルで割ったものを引いたものであり、乗数が、前のキュー・レベルが閾値未満の場合に第１レベルに近づき、前のキュー・レベルが閾値を超える場合に第２レベルに近づく指数関数的加重平均である。
【００２７】
本明細書で開示される方法、装置、および媒体によれば、本発明は、伝送率を提供し、したがって、パケットをドロップし、その結果、コンピュータ・ネットワークが安定するだけではなく平衡にすばやく達するようにする機構を提供する。
【００２８】
【発明の実施の形態】
本発明は、コンピュータ・ネットワークでのトラフィックの制御の改良に関する。以下の説明は、当業者が本発明のさまざまな実施形態を作り、使用することができるようにするために提示され、特許出願およびその要件の文脈で提供される。好ましい実施形態に対するさまざまな修正形態が、当業者に容易に明白になり、本明細書に記載の包括的な原理が、他の実施形態に適用可能である。したがって、本発明は、示される実施形態に制限されることを意図されたものではなく、本明細書に記載の原理および特徴との一貫性を有する最も広い範囲に従う。
【００２９】
コンピュータ・ネットワークで使用されるスイッチには、通常はキューが含まれ、このキューは、同一のメモリ・リソースの論理キュー部分または別のメモリ・リソースとすることができ、このキューに、パケットまたはセルと称するパケットより小さいサイズの片が一時的に置かれる。パケットをキューに置くエンキュー機構は、スイッチを介するトラフィックを制御し、ネットワークの動作を改善するために、パケットを破棄する機構も有することができる。たとえば、上で図４の方法で説明したrandom early discard or detection（ＲＥＤ）は、キュー・レベルに基づいていくつかのパケットを破棄する。ＲＥＤは、いくつかの情況で機能するが、多くのネットワークで、ＲＥＤは、ネットワーク性能を改善できない。たとえば、スイッチが適度なまたは高いトラフィック量のトラフィックを有するネットワークは、まだ発振しやすい。したがって、そのようなネットワークは、そのようなネットワークが設計された容量と比較して非常に少ない量のトラフィックしか搬送できない。
【００３０】
本発明は、コンピュータ・ネットワーク内で複数のパケットのフローを制御する方法、装置、および命令を担持する媒体を提供する。コンピュータ・ネットワークに、キューが含まれる。本発明の方法、装置、および媒体には、キューのキュー・レベルを判定することと、キューへの複数のパケットの提供速度を判定することが含まれる。本発明の方法、装置、および媒体には、キューへの複数のパケットの伝送率を制御することも含まれる。伝送率は、キュー・レベルが少なくとも第１キュー・レベルと第２キュー・レベルの間である場合に伝送率およびキュー・レベルが臨界減衰されるように、キュー・レベルおよび提供速度に基づいて制御される。
【００３１】
本発明を、特定のシステムおよび特定のコンポーネントに関して説明する。しかし、当業者は、これらの方法およびシステムが、コンピュータ・ネットワーク内の他のコンポーネントに関して効率的に動作することを容易に理解するであろう。また、本発明を、キューに関して説明する。しかし、当業者は、キューが単一メモリ・リソース内の論理キューである時、またはキューが別のメモリ・リソースの一部である時に、本発明が効率的に機能することを容易に理解するであろう。また、本発明を、系の臨界減衰に関して説明する。しかし、当業者は、本発明が、エポックにまたがって一般的に動作することを容易に理解するであろう。したがって、提供される減衰は、動作の各瞬間での瞬間臨界減衰でない可能性がある。また、本発明を、特定の動作の実行の前または後に使用されるパケットおよびキューに関して説明する。しかし、当業者は、この方法およびシステムが、セルなどのトラフィックの他の部分について、他のキューについて、および他の動作の実行の前または後に、効率的に動作することを容易に理解するであろう。また、本発明を、パケットの事前破棄によるネットワーク・フローの制御に関して説明する。しかし、当業者は、この方法およびシステムが、キューに到着するパケットの速度を制御することと、ソースに送られ、ソースで保持されるほかのものと共に送られるパケットの分数を指示する信号が、効果的であることを、容易に理解するであろう。したがって、伝送率の制御は、たとえば１つまたは複数のソースによってパケットが提供される速度の類似する制御である。
【００３２】
本発明による方法およびシステムをより具体的に示すために、本発明による方法９０の１実施形態を示す図７を参照されたい。方法９０は、図１に示されたスイッチ１０と共に使用することができる。明瞭にするために、方法９０を、図３に示されたキュー２０およびエンキュー機構１９に関して説明する。しかし、方法９０は、キュー２４、２８、および３４などの他のキューと共に使用することができる。方法９０は、エンキュー機構２３、２７、および３２などの他のエンキュー機構と共に使用することもできる。好ましい実施形態では、方法９０は、複数のキューが同一のメモリ・リソースの一部であるシステムで使用される。しかし、方法９０を、各キューが別々のメモリ・リソースを有する別のシステムで使用することを妨げるものはない。
【００３３】
図７を参照すると、ステップ９２を介して、前のエポックのキュー・レベルおよび提供速度が判定される。好ましい実施形態では、キュー・レベルが、前のエポックの終りに判定され、メモリ・リソースのレベルである。また、好ましい実施形態では、ステップ９２で判定される提供速度が、前のエポック中にメモリ・リソースに提供された総入力である。好ましい実施形態では、前のエポックの伝送率も、ステップ９２で判定される。代替実施形態では、方法９０のキュー・レベルの判定に、エンキュー機構１９に対応するキュー２０のレベルを判定することが含まれる。また、好ましい実施形態では、伝送率が、１エポックについて一定であり、したがって、前のエポック中のいつでも判定することができるが、方法９０を使用する、前のエポックの開始時に判定されることが好ましい。
【００３４】
その後、ステップ９４を介して、伝送率およびキュー・レベルがキュー・レベルの範囲にわたって臨界減衰するように、伝送率を制御する。伝送率は、キュー・レベルと入力分数に基づいて制御される。好ましい実施形態では、伝送率が、前の伝送率にも基づいて制御される。好ましい実施形態では、ステップ９４で、臨界減衰に望ましい伝送率を供給するために前のエポック以降の伝送率の変化を計算し、伝送率の変化を、前のエポックの伝送率に加算する。伝送率がそのように制御されるキュー・レベルの範囲を、すべての可能なキュー・レベルに拡張することができる。しかし、好ましい実施形態では、臨界減衰のために伝送率が制御される範囲が、０以上の最小キュー・レベルと、最大の可能なキュー・レベル以下の最大キュー・レベルの間である。その後、ステップ９６を介して、伝送率を使用してパケットを破棄し、その結果、スイッチ機能が維持されるようにする。伝送率が、１から破棄率を引いた値と等しいので、伝送率を使用して、パケットの適当な部分を破棄することができる。上で述べたように、破棄率は、パケットのうちで破棄される部分である。１実施形態では、パケットがランダムに破棄される。しかし、もう１つの実施形態では、パケットが、パケットの優先順位に部分的に基づいて破棄される。また、好ましい実施形態では、ステップ９６でのパケットの破棄によって、送信側ホストへの、パケットが破棄されたことの通知も供給される。その結果、ホストが、スイッチ１０へのトラフィックを一時的に中断することができる。
【００３５】
上で述べたように、伝送率は、ステップ９４で、伝送率およびキュー・レベルによって記述される系の臨界減衰をもたらすように制御される。これによって、キュー２０を介する、したがってスイッチ１０を介するトラフィックが、すばやく安定状態に達することが可能になる。臨界減衰がもたらされるので、キュー・レベルおよび伝送率によって記述されるキュー２０を介するトラフィックは、最小限の時間で安定状態に達しなければならない。臨界減衰に必要な伝送率および伝送率とキュー・レベルの間の関係を、下記のようにさまざまな理論によって記述することができる。
【００３６】
キュー・レベルおよび破棄率は、キュー２０の状態を記述する変数とみなすことができる。キュー・レベルを増やす時に、キュー２０が満杯にならないようにするために、破棄率を増やさなければならない。しかし、破棄率を増やす場合には、キュー・レベルを減らさなければならない。したがって、キューは、キュー・レベルと破棄率の間の負帰還ループまたは負帰還関係を有するものとみなすことができる。この関係は、通常の系で発振を引き起こすことができるものである。本発明は、破棄率に摩擦を加え、その結果、破棄率が、ＲＥＤなどのトラフィックを制御する従来の方法のようにすばやくキュー・レベルに伴って変化しないようにすることとみなすことができる。その結果、発振を、減衰させるか防止することができる。
【００３７】
本発明は、安定性理論を使用して説明することもできる。しかし、説明を単純にするために、破棄率ではなく伝送速度を使用する。キュー・レベルは、伝送速度、提供速度、および出力速度を使用して記述することができる。出力速度は、項目がキューまたはメモリ・リソースから送出される速度である。時間に関するキュー・レベルの変化は、伝送速度に提供速度をかけ、出力速度を引いた値によって与えられる。したがって、時間に関するキュー・レベルの変化は、項目がキューに入力される速度から、項目がキューから出力される速度を引いた値に等しい。これを、次のように説明することができる。
ｄＱ（ｔ）／ｄｔ＝Ｉ（ｔ）×Ｔ（ｔ）−Ｏ（ｔ）
ただし、
Ｑ（ｔ）＝キュー・レベル
Ｉ（ｔ）＝項目（パケットなど）がエンキュー機構に提供される速度
Ｔ（ｔ）＝伝送率
＝たとえばエンキュー機構に提供される項目のキューに送出される  部分
Ｏ（ｔ）＝項目がキューから出力される速度
また、
Ｄ（ｔ）＝１−Ｔ（ｔ）
ただし、
Ｄ（ｔ）＝破棄率
であることに留意されたい。
【００３８】
さらに、Ｑ（ｔ）、Ｉ（ｔ）、およびＯ（ｔ）が、本来非負であり、Ｔ（ｔ）が、［０、１］の範囲の値を有することに留意されたい。
【００３９】
キュー・レベルの変化の時間速度と伝送率の間の関係は、キュー２０の特性によって設定される。同様に、破棄率と伝送率の間の関係は、それらの特性によって設定される。しかし、伝送率自体は、事実上すべての所望の量とすることができる。さらに、伝送率を、望み通りに変更することができる。したがって、伝送率は、臨界減衰がもたらされることを保証するように設定することができる。好ましい実施形態では、伝送率を、下記によって記述されるものになるように選択する。
ｄＴ（ｔ）／ｄｔ＝κ（ｔ）×（β−αＴ（ｔ）−Ｑ／Ｑmax）
ただし、
κ（ｔ）＝時間に依存するものとすることができる数
α＝定数
β＝定数
Ｑmax＝最大の可能なキュー・レベル
【００４０】
伝送率に課せられる物理的制約は、それが０と１の間であること以外にはないので、α、およびβを、任意に選択することができる。
【００４１】
上で述べたように、伝送率の目標は、臨界減衰をもたらし、系ができる限り早く安定性に到達できるようにすることである。臨界減衰の説明を簡単にするために、提供速度Ｉ（ｔ）および出力速度Ｏ（ｔ）が、平衡すなわち安定状態で一定であると仮定する。しかし、ネットワークについて一般的にそうであるように、Ｉ（ｔ）およびＯ（ｔ）が変化し続ける場合であっても、この分析は真である。
【００４２】
平衡では、時間に関するキュー・レベルの変化の速度と、時間に関する伝送の変化の速度は、出力速度および提供速度が一定であるならば、０にならなければならない。言い換えると、平衡では、下記が成り立つ。
０＝Ｉ（ｔ）×Ｔ（ｔ）−Ｏ（ｔ）
０＝κ（ｔ）×（β−αＴ（ｔ）−Ｑ／Ｑmax）
Ｉ（ｔ）＝Ｉ
＝定数
Ｏ（ｔ）＝Ｏ
＝定数
結果として、平衡では、下記が成り立つ
Ｔ＝  Ｏ／Ｉ
α×Ｔ＝β−Ｑ／Ｑmax
【００４３】
わかりやすくするために、最低限で、Ｑ／Ｑmaxが、０．２５などの定数であると仮定する。安定性の領域内で許容されるＩ／Ｏの最大比が、１．６であると決定され、このＩ／Ｏ比で、ＱがＱmaxに達し、Ｔ＝５／８になる。同様に、Ｑmax／４以下のＱで、Ｔが１と等しくならなければならないことが決定された。したがって、この２つの極端な平衡で、
０＝β−α×５／８−１
０＝β−α−１／４
になる。これらの前提から、αおよびβの数値を、それぞれ２および２．２５に決定することができる。Ｑ／ＱmaxおよびＩ／Ｏの他の許容範囲を設けて、αおよびβの他の数値を得ることができることに留意されたい。したがって、αおよびβを、平衡条件およびスイッチ１０が動作することを望まれる範囲に関するいくつかの仮定に基づいて決定することができる。
【００４４】
安定性に関して、キュー・レベルおよび伝送率系の線形近似行列を、偏導関数をとることによって決定することができる。したがって、この系を記述する行列は、次のようになる。
【数１】
0004195221.tif 000002
【００４５】
この行列の固有値は、負の実数部を有する。したがって、キュー・レベルおよび伝送率によって記述されるこの系の軌跡は、安定である。すなわち、スイッチを介するトラフィックを、したがって、レベルの範囲にわたって安定するように制御することができる。さらに、固有値は、正確に（ｔ）＝Ｉ／Ｑmax（臨界減衰の条件）である場合に、等しい。微分方程式の理論から、臨界減衰は、この系の行列の軌跡の自乗が、４に行列式をかけたものと等しい時にもたらされる。言い換えると、
α2×κ2（ｔ）＝４×κ（ｔ）×Ｉ／Ｑmax  すなわち
κ（ｔ）＝４×Ｉ／（Ｑmax×α2）
＝Ｉ（ｔ）／Ｑmax  （上の前提について）
したがって、この系が動作することを望まれる値で臨界減衰をもたらす伝送率をもたらすようにｊ  （ｔ）、α、およびβを選択することができる。上の式を使用して、臨界減衰をもたらすことが望まれる伝送率を、スイッチ１０について提供することができる。たとえば、Ｑ／ＱmaxおよびＩ／Ｏに関する上の仮定を使用すると、伝送率およびキュー・レベルによって記述された系は、次のようになる。
Ｑ（ｔ＋Ｄｔ）＝Ｑ（ｔ）＋［Ｉ（ｔ）×Ｔ（ｔ）−Ｏ（ｔ）］×Ｄｔ
Ｔ（ｔ＋Ｄｔ）＝Ｔ（ｔ）＋（Ｉ（ｔ）×Ｄｔ／Ｑmax）×（２．２５−２×Ｔ（ｔ）−Ｑ（ｔ）／Ｑmax）
ただし、
Ｄｔ＝ＱとＴの計算の間の時間間隔
＝エポックの時間
Ｑ（ｔ）／Ｑmaxは、０．２５以上である
Ｉ（ｔ）／Ｏ（ｔ）は、１．６以下である
【００４６】
Ｑ（ｔ）、Ｉ（ｔ）、およびＯ（ｔ）の上の条件に違反する情況を考慮に入れるために、伝送率を、キュー・レベルに基づいて変更することができる。たとえば、Ｑ／Ｑmaxが０．２５未満の時に、伝送率を１にすることができる。同様に、Ｉ（ｔ）／Ｏ（ｔ）が１．６を超える時には、キューが、所望よりすばやく満たされ始める。その結果、キューが、最大値またはその近くのレベルに達した時に、伝送率に０または小さい値をセットすることができる。
【００４７】
上で述べたように、上の分析は、提供速度Ｉ（ｔ）および出力速度Ｏ（ｔ）が、平衡のときに一定であると仮定して説明されたが、臨界減衰の分析は、平衡でＩ（ｔ）およびＯ（ｔ）が一定でない時にもあてはまる。したがって、やはり臨界減衰をもたらすことができ、伝送率をキュー・レベルの変化にすばやく対応させ、したがって、提供速度および出力速度の変化にすばやく対応させることができる。
【００４８】
本発明による方法およびシステムをより明瞭に説明するために、図８を参照されたい。図８は、スイッチを介するトラフィックを制御する方法１００のより詳細な実施形態を示す図である。わかりやすくするために、スイッチ１０のエンキュー機構１９およびキュー２０を使用する際の方法１００を説明する。したがって、エンキュー機構１９が、方法１００を実行する。しかし、方法１００を、別のエンキュー機構によって使用することができる。さらに、エンキュー機構１９に対するキュー・レベルおよび提供速度に言及するが、判定されるキュー・レベルを、メモリ・リソース全体に関するものとすることができ、提供速度を、メモリ・リソース全体に関するものとすることができる。
【００４９】
ステップ１０２を介して、前のエポックについてキュー・レベルおよび提供速度を判定する。キュー・レベルは、エポックの終りに、最小キュー・レベルＱminおよび最大キュー・レベルＱmaxに対して相対的に判定されることが好ましい。ステップ１０２で、前のエポックの伝送率も使用可能になる。一般に、伝送率は、方法１００を使用して判定されており、したがって、簡単に使用可能になる。しかし、まだ使用可能でない場合には、伝送率を判定することができる。
【００５０】
ステップ１０４を介して、キュー・レベルがＱminを超えるかどうかを判定する。そうでない場合には、ステップ１０６を介して、伝送率に１をセットする。したがって、ステップ１０６で、キュー・レベルが十分に低い場合に、すべてのパケットがエンキュー機構１９によってキュー２０に伝送されることが保証される。ステップ１０４で、キュー・レベルがＱminを超えると判定される場合には、ステップ１０８を介して、キュー・レベルがＱmaxを超えるかどうかを判定する。キュー・レベルがＱmaxを超える場合には、ステップ１１０を介して、伝送率に０をセットする。したがって、ステップ１１０で、キュー・レベルが高すぎる場合に、すべてのパケットが破棄されることが保証される。
【００５１】
キュー・レベルが、Ｑmin未満でもＱmax超でもない場合には、ステップ１１２で、臨界減衰に関して伝送率を制御する。好ましい実施形態では、伝送率が、上で述べた式を使用してセットされる。したがって、伝送率は、前のエポックからのキュー・レベル、提供速度、および伝送率、ならびにエポックの長さに基づいて、臨界減衰に関してセットされる。ステップ１０６、１１０、または１１２でセットされた伝送率を使用して、エンキュー機構１９によってパケットを伝送または破棄し（ステップ１１４）、その結果、パケットのうちでキュー２０に供給される部分が、伝送率と等しくなるようにする。パケットは、図４に関して上で述べた従来のＲＥＤで使用されるものに似た形で、ランダムに破棄されることが好ましい。しかし、図８に戻って、パケットを、その優先順位に基づいて破棄することもできる。さらに、破棄されるパケットを送出したホストに通知を送り返し、その結果、ホストがスイッチへのトラフィックを一時的に中断できるようにすることが好ましい。その後、ステップ１１６を介して、現在のエポックが完了したかどうかを判定する。これは、伝送率の計算が完了してから特定の時間が経過したかどうかを判定することによって達成することができる。エポックが完了していない場合には、ステップ１１４を継続する。エポックが完了した場合には、ステップ１０２に戻る。
【００５２】
したがって、伝送率を、方法９０または方法１００を使用して、臨界減衰のためにセットすることができる。臨界減衰は、キュー・レベルの所望の範囲内でのみ発生することが好ましい。この範囲の外では、臨界減衰計算に関してキュー・レベルが高すぎるまたは低すぎるのどちらであると判定されるかに応じて、伝送率に０または１をセットする。パケットは、ランダムにまたは少なくとも部分的にその優先順位に基づいて破棄されるので、スイッチ１０にトラフィックを送るホストの同期化を防ぐことができる。臨界減衰がもたらされるので、方法９０または１００は、方法ＲＥＤよりよいシステムの安定性を提供することができる。また、臨界減衰がもたらされるので、方法９０および１００は、方法ＢＬＵＥよりすばやく平衡に達する。その結果、方法９０または１００を使用するスイッチ１０を使用するネットワークの性能が、改善される。
【００５３】
方法９０または１００を使用することによる性能の改善は、実験によって調べることができる。ボトルネック・リンクが存在するネットワークをモデル化した。さらに、このネットワークに、約３０％の超過を得るのに十分なトラフィックを与えた。したがって、このネットワークは、約３０％のトラフィックが破棄されなければならなくなるように、意図的に管理された。実験中に、方法ＲＥＤでは、droptailによって約２００００フレームまたはパケットが破棄された（最大キュー・レベルに起因して、その次のパケットをドロップしなければならなかった）。前に述べたように、droptailによるフレームの破棄は、単にキューが満杯なのでフレームが破棄される時に発生する。droptailによる破棄は、キューが満杯である時にフレームが破棄されるので、望ましくない。droptailによるパケットの破棄は、ネットワークの安定性を下げ、パケットの優先順位に従って動作することができない。
【００５４】
同一の実験で、本発明は、droptailによるフレームの破棄がなかった。したがって、本発明は、破棄を実行するか否かを判定する時に、パケットの優先順位を考慮に入れることができた。さらに、本発明によって伝送されたフレームの総数は、方法ＲＥＤの総数より多かった。その結果、方法９０および１００は、高い超過がある時であっても、ネットワークのトラフィックをよりよく管理することができる。本明細書で開示する実施形態では、本発明が、少なくとも５０％までの超過について良好に動作する。上で述べたように、臨界減衰がもたらされるので、方法９０および１００は、方法ＢＬＵＥよりもすばやく平衡に達する。
【００５５】
図９に示された本発明のもう１つの実施形態（１２０）では、ステップ１２２を介して、前のエポックのキュー・レベルと提供速度を判定する。好ましい実施形態では、キュー・レベルが、前のエポックの終りに判定され、メモリ・リソースのレベルである。また、好ましい実施形態では、ステップ１２２で判定される提供速度が、前のエポック中にメモリ・リソースに提供された総入力である。好ましい実施形態では、ステップ１２２で、前のエポックの伝送率も判定される。代替実施形態では、方法１２０のキュー・レベルの判定に、エンキュー機構１９に対応するキュー２０のレベルを判定することが含まれる。また、好ましい実施形態では、伝送率が、１エポックにわたって一定であり、したがって、前のエポック中にいつでも判定することができるが、前のエポックの始めに判定されることが好ましい。
【００５６】
ステップ１２４を介して、前のエポックからのキュー・レベルを使用して、キュー２０の仮想最大キュー・レベルを判定する。仮想最大キュー・レベルは、スイッチ１０が輻輳していると判定される時に減らされる。仮想最大キュー・レベルは、スイッチが輻輳していないと判定される時に、可能な最大キュー・レベル以下とすることができる最大値までの範囲で増やされる。これは、キュー・レベルが可能な最大のキュー・レベル未満の閾値を超えることを判定することによって達成されることが好ましい。言い換えると、スイッチ１０は、キュー２０が満たされる前に輻輳していると判定される。仮想最大キュー・レベルが、伝送率の判定に使用されるので、キュー２０の使用可能なメモリ・リソースが、メモリ・リソースの実際のサイズより小さいかのように、伝送率を計算することができる。その結果、高い輻輳の発生中に、伝送率を、それ以外の場合の伝送率より小さい値にセットすることができる。その結果、スイッチ１０が、高トラフィックの情況によりよく対処できるようになる。
【００５７】
その後、ステップ１２６を介して、キュー・レベル、提供速度、および仮想最大キュー・レベルに基づいて、伝送率を制御する。また、好ましい実施形態では、仮想最大キューレベルが判定された後に伝送率およびキュー・レベルによって記述される系が臨界減衰されるように、伝送率が制御される。好ましい実施形態では、伝送率が、前の伝送率にも基づいて制御される。伝送率がそのように制御されるキュー・レベルの範囲を、すべての可能なキュー・レベルに拡張することができる。しかし、好ましい実施形態では、伝送率が臨界減衰のために制御される範囲が、０以上の最小キュー・レベルと、最大の可能なキュー・レベル以下の最大キュー・レベルの間である。伝送率は、キュー・レベルが仮想最大キュー・レベルを超えないようにも制御されることが好ましい。その後、ステップ１２８を介して、伝送率を使用してパケットを破棄し、その結果、スイッチ機能が維持されるようにする。伝送率が、１から破棄率を引いた値と等しいので、伝送率を使用して、パケットの適当な部分を破棄することができる。上で述べたように、破棄率は、パケットのうちで破棄される部分である。１実施形態では、パケットが、ランダムに破棄される。しかし、もう１つの実施形態では、パケットが、そのパケットの優先順位に部分的に基づいて破棄される。また、好ましい実施形態では、ステップ１２８でのパケットの破棄によって、パケットが破棄されたことの通知が、送信側ホストに供給される。その結果、ホストが、スイッチ１０へのトラフィックを一時的に中断することができる。
【００５８】
図１０は、図９の方法１２０のステップ１２４で仮想最大キュー・レベルを判定するための、方法１３０の好ましい実施形態を示す流れ図である。好ましい実施形態では、仮想最大キュー・レベルを更新する方法１３０が、方法１２０のステップ１２６での伝送率の更新と並列に実行される。図１０を参照すると、ステップ１３２を介して、キュー・レベルが閾値以上であるかどうかが判定される。閾値は、最大キュー・レベルの分数であることが好ましい。この分数は、０と１の間の任意の値とすることができるが、１／２と３１／３２の間であることが好ましい。閾値は、最大の可能なキュー・レベルの３１／３２であることが好ましい。しかし、１２７／１４８、７／８、３／４、および１／２を含む、最大の可能なキュー・レベルの他の分数を使用することができる。しかし、スループットの低下と引き換えに、キュー・レベルを最大の可能なキュー・レベルより小さくすることができることに留意されたい。キュー・レベルが、閾値以上である場合に、ステップ１３４を介して、乗数をセットする。ステップ１３４では、乗数が、次の関数に従ってセットされることが好ましい。
Ｍ（ｔ＋Ｄｔ）＝ｍｉｎｉｍｕｍ｛１、ａ×Ｍ（ｔ）＋ｂ｝
ただし、
Ｍ（ｔ）＝前のエポックで計算された乗数
ａ＝１未満の正の定数、好ましくは３１／３２
ｂ＝（１−ａ）以上で、１未満の正の定数、好ましくは１／４
【００５９】
したがって、好ましい実施形態では、乗数は、ステップ１３２でキュー・レベルが閾値を超えると繰り返して判定される時に、第１の量、好ましい実施形態では１に近づく。
【００６０】
キュー・レベルが閾値未満である場合には、ステップ１３６を介して乗数をセットする。ステップ１３６では、乗数が、次の関数に従ってセットされることが好ましい。
Ｍ（ｔ＋Ｄｔ）＝ｃＭ（ｔ）＋ｄ
ただし、
Ｍ（ｔ）＝前のエポックで計算された乗数
ｃ＝１未満の正の定数、好ましくは３１／３２
ｄ＝（１−ｃ）以下の正の定数、好ましくは１／６４
したがって、好ましい実施形態では、乗数は、ステップ１３２でキュー・ベルが閾値未満であると繰り返して判定される時に、第２の量すなわち１／２に近づく。
【００６１】
したがって、ステップ１３４および１３６で、１を上限とする前の乗数の指数関数的加重平均である乗数が決定される。さらに、輻輳が繰り返される場合に、キュー・レベルが繰り返して閾値より高くなる時に、乗数が、指数関数的に第１の値、好ましくは１に近づく。輻輳が繰り返して回避される時に、キュー・レベルが繰り返して閾値より低くなる時に、乗数が、指数関数的に第２の値、好ましくは１／２に近づく。
【００６２】
仮想バッファ容量または仮想最大キュー・レベルは、次のように定義される。繰り返して輻輳がない場合に、キューが繰り返して閾値未満になる時に、仮想バッファ容量は、Ｑmaxと表される物理バッファ容量と同一である。繰り返して輻輳がある場合に、キュー・レベルが繰り返して閾値を超える時に、仮想バッファ容量は、物理バッファ容量の１／２またはＱmax／２である。当業者は、１／２以外の分数も、繰り返される輻輳の場合の間の仮想バッファ容量の定義に十分であることを諒解するであろう。
【００６３】
上で説明したフロー制御アルゴリズムの一部では、バッファにエンキューされるデータの量が、最大バッファ容量Ｑmaxの分数として表される。したがって、Ｑmaxが、いくつかの式に分母として現れ、たとえば、Ｑmaxによって除算されるキュー・レベルＱ（ｔ）すなわちＱ／Ｑmaxとして現れる。仮想バッファ容量の所望の定義は、したがって、量２×Ｍ×Ｑ／Ｑmaxの使用と同等である。すなわち、繰り返して輻輳がない場合に、Ｍが１／２または１／２に近い時に、式２×Ｍ×Ｑ／Ｑmaxが、単にＱ／Ｑmaxになる。繰り返して輻輳が発生する場合に、Ｍが１または１に近い時に、式２×Ｍ×Ｑ／Ｑmaxが、単に２×Ｑ／ＱmaxまたはＱ／（Ｑmax／２）になる。したがって、キュー占有分数Ｑ／Ｑmaxに乗数Ｍの２倍をかけることは、Ｑを仮想バッファ容量または仮想最大キュー・レベルと比較するという効果を有する。
【００６４】
複数スイッチ・モデルを用いるシミュレーションで、乗数Ｍの上の定義および使用が、８対１輻輳までの厳しい輻輳の場合に、破棄率の計算を安定させることが実証された。そのような輻輳は、複数の着信ソースが、１つの発信シンクに関するトラフィックを有する時に、スイッチの動作で瞬間的に生じる可能性がある。
【００６５】
図１１は、ネットワークのトラフィックを制御する、本発明による方法１４０のより詳細な流れ図である。方法１４０は、図１および３に示されたスイッチ１０と共に使用することができる。明瞭にするために、方法１４０を、図３に示されたキュー２０およびエンキュー機構１９に関して説明する。しかし、方法１４０は、他のキューおよび他のエンキュー機構と共に使用することができる。好ましい実施形態では、方法１４０が、複数のキューが同一のメモリ・リソースの一部であるシステムで使用される。しかし、方法１４０を、各キューが別々のメモリ・リソースを有する別のシステムで使用することを妨げるものはない。
【００６６】
ステップ１４２を介して、前のエポックのキュー・レベルおよび提供速度を判定する。さらに、ステップ１４２で、前のエポックの伝送率および乗数も使用可能にされることが好ましい。というのは、これらの量が、好ましくは前のエポックについて計算されたからである。しかし、前のエポックの伝送率および乗数が使用可能でない場合には、ステップ１４２でこれらの量を判定することが好ましい。その後、ステップ１４４を介して、キュー・レベルが最小閾値以上であるかどうかを判定する。好ましい実施形態では、最小閾値が、最大キュー・レベルの１／４である。キュー・レベルが最小閾値以上でない場合には、伝送率に１をセットする（ステップ１４６）。
【００６７】
キュー・レベルが最小閾値を超える場合には、ステップ１４８を介して、キュー・レベルが最大閾値を超えるかどうかを判定する。好ましい実施形態では、ステップ１４８に、キュー・レベルが仮想最大キュー・レベルを超えるかどうかを判定することが含まれる。
【００６８】
キュー・レベルが最大閾値を超えると判定される場合には、ステップ１５０を介して、伝送率に０または０に近い値をセットする。しかし、キュー・レベルが最大閾値を超えないと判定される場合には、ステップ１５２を介して、前のエポックの乗数、キュー・レベル、前の伝送率、提供速度、および最大キュー・レベルを使用して、伝送率を決定する。好ましい実施形態では、伝送率が、次式によって与えられる。
Ｔ（ｔ＋Ｄｔ）＝ｍｉｎｉｍｕｍ｛１、ｍａｘｉｍｕｍ（１／８、Ｔ（ｔ）＋（２×Ｉ（ｔ）×Ｍ（ｔ）×Ｄｔ／Ｑmax）×（９／４−２×Ｔ（ｔ）−２×Ｍ（ｔ）×Ｑ（ｔ）／Ｑmax））］
ただし、
Ｍ（ｔ）＝前のエポックの乗数
Ｄｔ＝適当な時間単位でのエポックの長さ
【００６９】
Ｔ（ｔ＋Ｄｔ）の式に乗数Ｍ（ｔ）が現れることに留意されたい。ＴとＭの両方が、Ｄｔ時間単位ごとに同時に更新される。さらに、乗数Ｍ（ｔ）がＴ（ｔ＋Ｄｔ）の式に２回現れることに留意されたい。これは、上で説明したように、項２×Ｍ（ｔ）×Ｑ（ｔ）／Ｑmaxに現れる。その効果は、輻輳が繰り返される場合に、バッファ容量を２で割ることである。乗数Ｍ（ｔ）は、２×Ｍ（ｔ）×Ｉ（ｔ）×Ｄｔ／Ｑmaxにも現れる。ここで、時間間隔Ｄｔにキュー系に提供されるビット数が、Ｉ（ｔ）×Ｄｔである。この量をＱmaxと比較して、分数Ｉ（ｔ）×Ｄｔ／Ｑmaxがもたらされる。この分数に、２×Ｍ（ｔ）をかける。やはり、その効果は、輻輳の場合にバッファ容量を２で割ることである。
【００７０】
好ましい実施形態では、ステップ１５４を介して、伝送率の計算と並列に、乗数を更新する。好ましい実施形態では、乗数が、図１０に示された方法１３０を使用して更新される。しかし、乗数を伝送率と直列に更新することを妨げるものがないことに留意されたい。さらに、現在のエポックの伝送率の計算に現在のエポックの乗数を使用することを妨げるものはない。しかし、その場合には、図１１のステップ１５２の伝送率の数式が異なるものになる。
【００７１】
ステップ１４６、ステップ１５０、またはステップ１５２でセットされた伝送率を使用して、ステップ１５６を介して、エンキュー機構１９が、スイッチ１０の機能を維持するためにパケットを事前に破棄する。ステップ１５８を介して、エポックが終わったかどうかを判定する。そうでない場合には、ステップ１５６に戻る。終わった場合には、ステップ１４２を繰り返す。
【００７２】
方法１２０および１４０は、安定しており、スイッチ１０でトラフィックを制御できるようになる。さらに、方法１２０または１４０を使用すると、仮想最大キュー・レベルまたは乗数を使用することによって、大量のトラフィックを計上することができる。したがって、方法１２０または１４０の１実施形態を使用するスイッチ１０は、８００％の超過に対処することができ、非常に超過している時であってもキューまたはメモリ・リソースを満たさずに機能し継ける。さらに、方法１５０を使用することによって、乗数が既にセットされているか、他の形で減衰決定のために定数とみなされると仮定すると、伝送機能およびキュー・レベルが臨界減衰される。キュー・レベルおよび伝送率が臨界減衰されるので、スイッチ１０は、できる限りすばやく平衡に達する。
【００７３】
本発明が、コンピュータ・ネットワーク内の複数のパイプを制御する方法およびシステムを提供することも企図されている。上で開示したように、コンピュータ・ネットワークには、スイッチ用の少なくとも１つのプロセッサが含まれる。少なくとも１つのプロセッサは、キューを有する。複数のパイプは、スイッチを介するトラフィックの伝送にキューを使用する。この方法およびシステムには、最小フローおよび最大フローを複数のパイプのそれぞれについてセットできるようにすることと、キューに過剰帯域幅が存在するかどうかを判定することが含まれる。この方法およびシステムには、過剰帯域幅が存在する場合と、複数のパイプのうちのパイプのフローがそのパイプの最大フロー未満である場合に、最小フローまたは最大フローに基づいて、複数のパイプのうちのそのパイプのフローを線形に増やすことも含まれる。この方法およびシステムには、過剰帯域幅が存在せず、フローがパイプの最小フローを超える場合に、最小フローまたは最大フローに基づいて、複数のパイプのうちのパイプのフローを指数関数的に減らすことも含まれる。したがって、キューを介するトラフィックが安定する。
【００７４】
本発明を、キューを介するそのようなパイプまたはキューに供給されるフローに関して説明する。しかし、当業者は、パイプを、異なるクラスまたは同一のクラスの、もしくはストレージにキューを使用する特定のコンポーネントへの任意の提供速度の、behaviour aggregate flowとすることができることを容易に理解するであろう。
【００７５】
本発明による方法およびシステムをより具体的に示すために、本発明による方法１６０の１実施形態を示す図１２を参照されたい。方法１６０は、図１および３のスイッチ１０と共に使用することができる。したがって、方法１６０を、複数のブレード７、８、および９と各ブレード７、８、および９上の複数のポートを有するスイッチ１０内で実行することができる。明瞭にするために、方法１６０を、図３に示されたキュー２０およびエンキュー機構１９に関して説明する。しかし、方法１６０は、キュー２４、２８、および３４などの他のキューと共に使用することができる。方法１６０は、エンキュー機構２３、２７、および３２などの他のエンキュー機構と共に使用することもできる。好ましい実施形態では、方法１６０が、複数のキューが同一のメモリ・リソースの一部であるシステムで使用される。しかし、方法１６０を、各キューが別々のメモリ・リソースを有する別のシステムで使用することを妨げるものはない。
【００７６】
図３および１２を参照すると、ステップ１６２を介して、キュー２０にトラフィックを供給するパイプの最小フローおよび最大フローがセットされる。パイプは、ポートＡ１８のいずれかからエンキュー機構１９に来る可能性がある。好ましい実施形態では、当該のパイプが、behaviour aggregate flowである。したがって、ステップ１６２で、当該のbehaviour aggregate flowの最小帯域幅および最大帯域幅がセットされることが好ましい。さらに、パイプの最小フローの合計が、共用されるキュー・プロセッサのサービス速度Ｓ以下でなければならない。これは、フローが、キュー２０がサービスできるトラフィックの総量の分数として定義されるからである。あるパイプの最小フローを、０にすることができる。通常、キュー２０は、定義されたサービス速度すなわち、キュー２０がキューから項目を出力できる速度を有する。好ましい実施形態では、最小フロー速度の合計が、サービス速度Ｓの１／２未満である。また、好ましい実施形態では、各パイプの最大フローが、サービス速度以下である。好ましい実施形態では、キュー２０によってサービスされるパイプの最大個数が、１０２４以下であるが、制御されるパイプの個数に対する実際の上限はない。さらに、各パイプは、キュー２０に提供速度Ｉi（ｔ）でトラフィックを提供し、このｉは、ｉ番目のパイプを表す。異なる要因に応じて、トラフィックの一部をドロップすることができる。ｉ番目のパイプの伝送率Ｔi（ｔ）は、キュー２０に伝送されるｉ番目のパイプからのトラフィックの分数である。したがって、ｉ番目のパイプの瞬間フローは、ｆi（ｔ）＝Ｉi（ｔ）×Ｔi（ｔ）である。好ましい実施形態では、方法１６０は、それを流れるトラフィックを有するパイプが、少なくともその最小フローを有することを保証することもできる。
【００７７】
ステップ１６４を介して、キュー２０が使用可能な過剰帯域幅を有するかどうかを判定する。好ましい実施形態では、キュー・レベルが増加中である場合には、過剰帯域幅が存在しないと判定される。また、好ましい実施形態では、キュー２０が空である場合、またはキュー２０のキュー・レベルが減少中である場合に、ステップ１６４で過剰帯域幅が存在すると判定される。したがって、ステップ１６４に、キュー・レベルを判定することと、そのキュー・レベルを前のキュー・レベルと比較することが含まれることが好ましい。また、好ましい実施形態では、キュー・レベルが０でも減少中でもない場合に、過剰帯域幅が存在しないと判定される。しかし、過剰帯域幅が存在するかどうかを判定する他の判断基準の使用を妨げるものはない。
【００７８】
ステップ１６４で、過剰帯域幅が存在すると判定される場合には、ステップ１６６を介して、パイプのフローを線形に増やす。ステップ１６６が、パイプのそれぞれの伝送率を線形に増やすことによって達成されることが好ましい。パイプに関する線形の増加は、最小フロー、最大フロー、または重みに基づくものとすることができる。したがって、パイプに関する線形の増加は、パイプの最小フローだけ、最大フローだけ、最小フローと重みの何らかの組合せ、最大フローと重みの何らかの組合せ、または最小フロー、最大フロー、および重みの何らかの組合せに基づくものとすることができる。しかし、好ましい実施形態では、パイプに関する線形の増加が、そのパイプの最小フローに基づく。
【００７９】
ステップ１６４で、過剰帯域幅が存在しないと判定される場合には、ステップ１６８を介して、パイプのフォローを指数関数的に減らす。ステップ１６８が、パイプのそれぞれの伝送率を指数関数的に減らすことによって達成されることが好ましい。パイプに関する指数関数的な減少は、最小フローまたは最大フローに基づくものとすることができる。したがって、パイプに関する指数関数的な減少は、パイプの最小フローだけ、最大フローだけ、または最小フローと最大フローの何らかの組合せに基づくものとすることができる。しかし、好ましい実施形態では、パイプに関する指数関数的な減少が、そのパイプの最小フローに基づく。減少が性質において指数関数的なので、減少は、パイプの現在のフローまたは伝送率にも基づく。
【００８０】
方法１６０では、フローを線形に増やし、フローを指数関数的に減らすので、方法１６０では、一般に、パイプを介するキュー２０へのトラフィックが、自動的に漸近的に安定性に達することができることが保証される。フローは、キュー２０が過剰帯域幅を有するかどうかに応じて増減される。安定性に達した時に、フローは、過剰帯域幅が存在する限り線形に増加し、その後、過剰帯域幅がなくなったことに起因して、過剰帯域幅が再び使用可能になるまで指数関数的に減る。この振る舞いが繰り返される。言い換えると、パイプからのトラフィックが、極限閉軌道と称する定常循環状態にとどまることができる。したがって、パイプを介するトラフィックが開始される状態に無関係に、この系は、安定した循環挙動に向かう。この安定した挙動は、増加と減少の別の組合せを用いて達成することはできない。たとえば、指数関数的増加および線形減少または指数関数的増加および指数関数的減少は、安定した挙動をもたらすことができない。さらに、各パイプのフローの増減が、そのパイプの最小フローまたは最大フローと、そのパイプの前のフローに依存する。したがって、異なるパイプが、異なるレベルのフローまたはサービスを有することができる。その結果、方法１６０は、安定した挙動をもたらすだけではなく、差異化サービスを提供し、キュー２０の過剰帯域幅を公平に割り振ることもできる。ネットワーク管理者または他のユーザが行わなければならないことは、特定の顧客に望ましいサービスのレベルに応じて異なる形で、顧客の最大フローおよび最小フローをセットすることである。したがって、方法１６０は、DiffServを使用するネットワークなどのさまざまな応用分野で、異なる顧客に対してまたは異なる媒体に関して、異なるレベルのサービスを提供することを望むインターネット・サービス・プロバイダが使用することができる。これは、方法１６０のパイプに対応する、behaviour aggregate flow、顧客、媒体、クラス、または他のフローについて、単に最大フローおよび最小フローをセットできるようにすることによって達成される。
【００８１】
図１３に、図１および３に示されたスイッチ１０を用いて差異化サービスを提供する、本発明による方法１７０のより詳細な流れ図を示す。したがって、方法１７０を、複数のブレード７、８、および９と各ブレード７、８、および９上の複数のポートを有するスイッチ１０で実行することができる。明瞭にするために、方法１７０を、図３に示されたキュー２０およびエンキュー機構１９に関して説明する。しかし、方法１７０は、キュー２４、２８、および３４などの他のキューと共に使用することができる。方法１７０は、エンキュー機構２３、２７、および３２などの他のエンキュー機構と共に使用することもできる。好ましい実施形態では、方法１７０が、複数のキューが同一のメモリ・リソースの一部であるシステムで使用される。しかし、方法１７０を、各キューが別々のメモリ・リソースを有する別のシステムで使用することを妨げるものはない。さらに、方法１７０を、パイプに関して説明するが、方法１７０は、パイプに対応する、behaviour aggregate flowを含む、さまざまなコンポーネントに関して使用することができる。
【００８２】
方法１７０は、たとえばネットワーク管理者によって、制御されるパイプのそれぞれの最小フローおよび最大フローがセットされた後に開始される。ステップ１７２を介して、パイプの最小フローおよび最大フローに基づいて、パイプのそれぞれについて定数を計算する。パイプｉのそれぞれについて、ステップ１７２で、定数Ｃiおよび定数Ｄiを計算する。定数Ｃiは、下で説明するように、パイプｉのフローを線形に増やすのに使用される。同様に、定数Ｄiは、下で説明するように、パイプｉのフローを指数関数的に減らすのに使用される。好ましい実施形態では、定数ＣiおよびＤiの両方が、最小フローに基づく。代替実施形態では、異なるパイプの重みも設けることができる。その場合には、定数ＣiおよびＤiを、設けられた重みにも基づいて計算することができる。
【００８３】
定数を決定した後に、ステップ１７４を介して、トラフィックが、パイプを介してキュー２０に流れることを許可される。ステップ１７６を介して、キュー・レベル、瞬間過剰帯域幅信号Ｂ、および過剰帯域幅信号Ｅが、まだ使用可能でない場合に、前のエポックについて判定される。好ましい実施形態では、前のエポックのフローも、ステップ１７６で使用可能にされる。言い換えると、ステップ１７６では、方法１７０でシステムを更新するのに必要な量を判定する。その後、ステップ１７８を介して、過剰帯域幅が存在するかどうかを判定する。好ましい実施形態では、キュー２０のキュー・レベルが０であるか減少中である場合に限って、過剰帯域幅が存在すると判定される。それ以外の場合には、過剰帯域幅が存在しないと判定される。しかし、過剰帯域幅が存在するかどうかを判定する別の判断基準の使用を妨げるものはない。好ましい実施形態では、判定されるキュー・レベルが、メモリ・リソース全体のレベルである。しかし、キュー・レベルが論理キューまたはサブキューについて判定されることを妨げるものはない。過剰帯域幅が存在しない場合には、ステップ１８０を介して、瞬間過剰帯域幅信号Ｂに０をセットする。信号Ｂを瞬間と呼ぶのは、これが、キュー・レベルの単一の測定と、キュー・レベルの変化の単一の判定に基づくからである。ステップ１８２を介して、過剰帯域幅信号Ｅに、定数に前の過剰帯域幅信号をかけた値をセットする。定数が、３１／３２であることが好ましく、定数は、一般に１未満でなければならない。好ましい実施形態では、過剰帯域幅信号が、瞬間過剰帯域幅信号の指数関数的加重平均である。過剰帯域幅信号の値は、ステップ１８２では適当にセットされる。というのは、瞬間過剰帯域幅信号が０であるからである。
【００８４】
ステップ１７８で、過剰帯域幅が存在すると判定される場合には、ステップ１８４を介して、瞬間過剰帯域幅信号に１をセットする。ステップ１８６を介して、過剰帯域幅信号に、瞬間過剰帯域幅信号の指数関数的加重平均をセットする。したがって、好ましい実施形態では、過剰帯域幅信号が、まず、第１定数に前の過剰帯域幅信号をかけたものと第２定数に瞬間過剰帯域幅信号をかけたものの和になる。第１定数および第２定数の両方を、それぞれ１未満とすることができ、好ましくは３１／３２と１／３２である。
【００８５】
好ましい実施形態では、各パイプｉの伝送率が、ステップ１８８を介して、ステップ１７８から１８６と並列にセットされる。しかし、代替実施形態では、伝送率を、瞬間過剰帯域幅信号および過剰帯域幅信号と直列に更新することができる。前の瞬間過剰帯域幅信号Ｂが１（過剰帯域幅が使用可能）であった場合には、ステップ１８８で、前の伝送率、定数Ｃi、および過剰帯域幅信号に基づいて各パイプｉの伝送率をセットする。ステップ１８８で前に存在した過剰帯域幅に関してセットされる伝送率は、次式であることが好ましい。
Ｔi（ｔ＋Ｄｔ）＝Ｔi（ｔ）＋Ｃi×Ｅ（ｔ）
ただし、
Ｄｔ＝エポックの長さ（伝送率が最後に計算された時からの時間）
【００８６】
フロー単位は、Ｄｔおよび最大の可能なキュー・レベルＱmaxが１になるようにセットされることが好ましい。したがって、伝送率が、線形に減少する。さらに、伝送率は、過剰帯域幅が存在し続ける限り、線形に増加し続ける。前のエポックに過剰帯域幅が存在しなかった（Ｂが０であった）場合には、ステップ１８８で、各パイプｉの伝送率Ｔi（ｔ＋Ｄｔ）が、パイプの前の伝送率Ｔi（ｔ）、Ｄi、およびパイプの前のフローｆi（ｔ）に基づいてセットされる。過剰帯域幅が前に存在しなかった時の伝送率は、次式によって与えられることが好ましい。
Ｔi（ｔ＋Ｄｔ）＝Ｔi（ｔ）−Ｄi×ｆi（ｔ）
【００８７】
したがって、ステップ１８８でセットされる伝送率によって、過剰帯域幅が存在しないままである限り、伝送率が、したがってフローが、指数関数的に減少することが保証される。定数ＣiおよびＤiは、最小フロー値に基づくことが好ましい。定数ＣiおよびＤiの正確な好ましい値は、図１４に関して下で説明する。
【００８８】
図１３に戻って、ステップ１８８で計算された伝送率を使用して、ステップ１９０を介して、スイッチ１０を通過するパケットが、エポック中に転送されるかドロップされる。好ましい実施形態では、パケットは、それが流れているパイプの伝送率だけではなく、各パケットの優先順位にも基づいてドロップされる。もう１つの実施形態では、パケットがランダムにドロップされる。ステップ１９２を介して、エポックが完了したかどうかを判定する。そうでない場合には、ステップ１９０を介して、トラフィックが、同一の伝送率に基づいて転送され続ける。エポックが終了した場合には、この方法は、ステップ１７６での開始を繰り返す。
【００８９】
方法１７０は、フローを線形に増やし、フローを指数関数的に減らすので、方法１６０に似た形で機能し、同一の利益の多くを提供する。したがって、方法１７０では、パイプを介するキュー２０へのトラフィックが自動的に漸近的に安定性に達することができることを保証することができる。パイプからのトラフィックは、極限閉軌道と称する定常循環状態にとどまることができる。したがって、パイプを介するトラフィックが開始される状態に無関係に、この系は、安定した循環挙動に向かう。さらに、各パイプのフローの増減が、そのパイプの最小フローとそのパイプの前のフローに依存する。したがって、異なるパイプが、異なるレベルのフローまたはサービスを有することができる。その結果、方法１７０は、安定した挙動を生じ、キュー２０の過剰帯域幅を公平に割り振り、差異化サービスを提供することができる。ネットワーク管理者または他のユーザが行わなければならないことは、特定の顧客に望ましいサービスのレベルに応じて異なる形で、顧客の最小フローおよび最大フローをセットすることである。したがって、方法１７０は、DiffServを使用するネットワークなどのさまざまな応用分野で、異なる顧客に対してまたは異なる媒体に関して、異なるレベルのサービスを提供することを望むインターネット・サービス・プロバイダが使用することができる。これは、方法１７０のパイプに対応する、behaviour aggregate flow、顧客、クラス、媒体、または他のフローについて、単に最小フローおよび最大フローをセットできるようにすることによって達成される。
【００９０】
さらに、伝送率からのフロー速度の減少が十分に速い場合に、パイプのフローを記述する曲線の下の面積が、フローの線形増加の傾斜に比例する。フローの曲線の下の面積は、パイプを介してキュー２０に流れる毎秒のビット数を示す。パイプを介するフローを、１エポックにわたって計算し、パイプを介する正確なフローを示すこともできる。したがって、フローまたはDiffServで定義される帯域幅が、調整される。
【００９１】
図１４に、差異化サービスを提供する方法２００の好ましい実施形態のより詳細な流れ図を示す。方法２００は、上で開示した発明を組み込まれることが好ましい。一般に、これから開示する方法では、上で開示した発明を使用して、必要な時に高いレベルで伝送率を制御し、そうでない時には、前に開示した方法に類似する方法を使用する。
【００９２】
方法２００は、図１および３に示されたスイッチ１０と共に使用することができる。したがって、方法２００を、複数のブレード７、８、および９と各ブレード７、８、および９上の複数のポートを有するスイッチ１０内で実行することができる。明瞭にするために、方法２００を、図３に示されたキュー２０およびエンキュー機構１９に関して説明する。しかし、方法２００は、キュー２４、２８、および３４などの他のキューと共に使用することができる。方法２００は、エンキュー機構２３、２７、および３２などの他のエンキュー機構と共に使用することもできる。好ましい実施形態では、方法２００が、複数のキューが同一のメモリ・リソースの一部であるシステムで使用される。しかし、方法２００を、各キューが別々のメモリ・リソースを有する別のシステムで使用することを妨げるものはない。さらに、方法２００を、パイプに関して説明するが、方法２０は、パイプに対応する、behaviour aggregate flowを含む、さまざまなコンポーネントに関して使用することができる。
【００９３】
方法２００は、パイプのそれぞれの最小フローおよび最大フローと、使用される場合に重みが、セットされた後に、開始されることが好ましい。前に述べたように、最小フローの合計が、１未満でなければならず、キュー２０のサービス速度の半分未満であることが好ましい。また、好ましい実施形態では、最小フローと最大フローのそれぞれが、サービス速度未満である。好ましい実施形態では、フローの数が、６４以下である。好ましい実施形態では、各パイプの重みが、１であり、したがって、スイッチ１０の挙動に影響しない。上で述べたように、パイプのフローｆi（ｔ）を得るために、パイプによるキューへの提供速度Ｉi（ｔ）に、パイプの伝送率Ｔi（ｔ）をかける。
【００９４】
ステップ２０２を介して、パイプのフローを増減するための定数を、最小フローと、使用される時に重みとに基づいて決定する。パイプのフローを増やすための定数Ｃiおよびフローを減らすための定数Ｄiは、次のように計算されることが好ましい。
【数２】
0004195221.tif 000003
好ましい実施形態の場合のように、すべての重みが１と等しい場合には、
【数３】
0004195221.tif 000004
である。ただし、
Ｎ＝帯域幅が割り振られるフローの数
Ｗi＝ｉ番目のパイプの重みであり、範囲［０、１］内であることが好ましい
Ｗ＝Ｎ個の重みすべての合計
ｆimin＝ｉ番目のパイプの最小フロー
さらに、フロー単位は、やはり、Ｄｔが１になり、Ｑmaxが１になるように選択される。
【００９５】
ステップ２０４を介して、パイプのフローおよびキュー２０のキュー・レベルを判定する。エポックが完了したばかりである場合には、前のエポックのフローおよびキュー・レベルを判定する。フローはエポック全体にわたって判定されるが、キュー・レベルは、エポックの終りのキュー・レベルであることが好ましい。好ましい実施形態では、キュー・レベルが、キュー２０がその一部であるメモリ・リソース全体のレベルである。しかし、もう１つの実施形態では、キュー・レベルを、論理キューまたはサブキューに関するものとすることができる。好ましい実施形態では、瞬間過剰帯域幅信号Ｂと、過剰帯域幅信号Ｅが、前のエポックについて既に判定されてはいない場合に、使用可能にされる。したがって、これから行われる計算に必要な情報が使用可能になる。
【００９６】
ステップ２０６を介して、キュー２０について過剰帯域幅が存在するかどうかを判定する。好ましい実施形態では、ステップ２０６に、キュー・レベルが０または減少中であるかどうかを判定することが含まれる。しかし、過剰帯域幅が存在するかどうかを判定する別の判断基準の使用を妨げるものはない。キュー・レベルが減少中または０である場合に、ステップ２０６で、過剰帯域幅が存在すると判定される。そうでない場合には、過剰帯域幅が存在しないと判定される。過剰帯域幅が存在する場合には、ステップ２０８を介して、瞬間過剰帯域幅信号に１をセットする。そうでない場合には、ステップ２１０を介して、瞬間過剰帯域幅信号に０をセットする。
【００９７】
ステップ２１２を介して、過剰帯域幅信号に瞬間過剰帯域幅信号の指数関数的加重平均をセットする。好ましい実施形態では、指数関数的加重平均が、次式によってセットされる。
Ｅ（ｔ＋Ｄｔ）＝（３１／３２）×Ｅ（ｔ）＋Ｂ（ｔ＋Ｄｔ）／３２
ただし、
Ｅ（ｔ＋Ｄｔ）＝現在のエポックの過剰帯域幅信号
Ｅ（ｔ）＝前のエポックの過剰帯域幅信号
Ｂ（ｔ＋Ｄｔ）＝現在のエポックの瞬間過剰帯域幅信号
【００９８】
ステップ２０６から２１２の瞬間過剰帯域幅信号と過剰帯域幅信号の更新と並列に、ステップ２１４を介して、現在のエポックの伝送率が更新される。伝送率は、ステップ２１４で、可能な時にアクティブ・パイプのそれぞれに最小フローが供給され、各パイプのフローが最大値を超えず、キュー２０（または対応するメモリ・リソース）が所望のレベルを超えず、必要である限り、フローが線形に増やされ、指数関数的に減らされ、キュー・レベルおよびグローバル伝送率によって記述される系が、臨界減衰され、より高い超過速度を考慮することができるように伝送率がセットされるように、セットされる。臨界減衰は、キュー・レベルおよびグローバル伝送率によって記述される系が、できる限り早く平衡に達することを意味する。好ましい実施形態では、各パイプの伝送率が、下記のようにセットされる。
Ｔi（ｔ＋Ｄｔ）＝時刻ｔの提供速度の合計が定数Ｄ以上である場合にＡ
＝ｆi（ｔ）がｆimin以下の場合にｍｉｎ｛１、Ｔi（ｔ）＋Ｆ｝
＝ｆi（ｔ）がｆimaxを超える場合にＧ×Ｔi（ｔ）
＝それ以外の場合に、Ｂ（ｔ）＝１の場合はｍｉｎ｛Ｔ（ｔ）、Ｔi（ｔ）＋Ｃi×Ｅ（ｔ）｝、Ｂ（ｔ）＝０の場合はｍｉｎ｛Ｔ（ｔ）、Ｔi（ｔ）−Ｄi×ｆi（ｔ）｝
ただし、
Ａ＝１未満の定数、好ましくは．１２５
Ｄ＝１未満の定数、好ましくは．２５
Ｆ＝１未満の定数、好ましくは．１２５
Ｇ＝１未満の定数、好ましくは．８７５
Ｔ（ｔ）＝グローバル伝送率
グローバル伝送率は、次式によって与えられることが好ましい。
Ｔ（ｔ）＝ｍｉｎｉｍｕｍ｛１、ｍａｘｉｍｕｍ（１／８、Ｔ（ｔ−Ｄｔ）＋２×Ｉ（ｔ−Ｄｔ）×Ｍ（ｔ−Ｄｔ）×Ｄｔ／Ｑmax）×（９／４−２×Ｔ（ｔ）−２×Ｍ（ｔ）×Ｑ（ｔ）／Ｑmax））｝
ただし、
Ｍ（ｔ−Ｄｔ）＝前のエポックからの乗数
＝乗数は、好ましい実施形態では、キュー・レベルが閾値を超えると繰り返して判定される時に１に近づき、キュー・レベルが閾値を超えないと繰り返して判定される時に１／２に近づく
Ｄｔ＝適当な時間単位でのエポックの長さ
【００９９】
したがって、グローバル伝送率によって、キュー・レベルおよびグローバル伝送率が臨界減衰されることと、超過を考慮に入れることができることが保証される。
【０１００】
ステップ２１４で決定された伝送率に基づいて、パイプのパケットまたはトラフィックの一部が、ステップ２１６を介して伝送またはドロップされる。好ましい実施形態では、ステップ２１６で、特定のパケットをドロップするかどうかを決定する時に、パケットの優先順位が考慮される。もう１つの実施形態では、個々のパケットをランダムにドロップして、計算された伝送率を維持する。
【０１０１】
その後、ステップ２１８を介して、エポックが完了したかどうかを判定する。そうでない場合には、ステップ２１６を介してパケットのドロップまたは伝送を続ける。エポックが終了した場合には、次のエポックについて値を更新するために、ステップ２０２に戻る。
【０１０２】
方法２００は、差異化サービスを安定した形で提供でき、過剰帯域幅を公平に割り振ることができるという点で、方法１６０および１７０とほぼ同一の利益をもたらす。これは、単にパイプの最小フローおよび最大フローをセットすることによって、ユーザによる最小の労力で達成される。方法２００は、DiffServを使用するネットワークなどのさまざまな応用分野で、異なる顧客、クラス、behaviour aggregate flows、または異なる媒体に異なるレベルのサービスを提供することを望むインターネット・サービス・プロバイダが使用することもできる。これは、方法２００のパイプに対応する、behaviour aggregate flow、顧客、体、または他のフローについて、単に最小フローおよび最大フローをセットできるようにすることによって達成される。したがって、サービスのDiffServ判断基準であるパイプを介するフローを、望み通りに調整することができる。
【０１０３】
さらに、方法２００は、上で説明した２つの方法の追加の利益を利用する。グローバル伝送率を使用することができるので、方法２００では、より高い輻輳を効率的な形で考慮することができる。キュー２０が繰り返して閾値を超えるに連れて減少する仮想最大キュー・レベルに対応する乗数の使用によって、スイッチが広範囲の超過に対して安定を保てることが保証される。１実施形態では、８００％までの超過を考慮に入れることができる。さらに、グローバル伝送率が、ある意味で臨界減衰されるので、キュー・レベルおよびグローバル伝送率によって記述される系は、素早く安定状態に達する。その結果、方法２００は、平衡に関する所望の伝送速度を素早く達成することを可能にする。
【０１０４】
一般に、方法２００のうちで方法１６０および１７０に対応する部分をスイッチ１０で使用することが想定されている。したがって、パイプは、一般に、安定した極限閉軌道が達成されるように調整される。好ましい実施形態では、パイプを介するフローが、キュー・レベルがもはや減少しなくなるまで増やされ、キュー・レベルが減少中または０になるまで減らされる。これは、通常モードの動作であると思われる。しかし、クリティカルな場合に、たとえば複数のパイプが突然アクティブになり、その最小フローを所望するか、キュー・レベルが閾値を超えたので、別の方法がアクティブになる可能性がある。たとえば、グローバル伝送率を使用して、キュー２０が満杯にならないことを保証することを試みることができる。クリティカルであり、通常は一時的な状態を考慮に入れた時には、安定した極限閉軌道をもたらす伝送率が、使用される。したがって、方法２００を使用するスイッチは、より広範囲の超過に対して効果的に動作することができる。
【０１０５】
本発明では、複数のパイプの１パイプのフローの伝送率がグローバル伝送率と差分伝送率の最小値になるようにセットすることを含む方法およびシステムも企図されている。過剰帯域幅が存在し、パイプのフローがそのパイプについてセットされた最大フロー未満である場合に、差分伝送率によって、最小フローまたは最大フローに基づいてフローを線形に増やすことができる。過剰帯域幅が存在せず、フローがパイプについてセットされた最小フローを超える場合に、差分伝送率によって、最小フローまたは最大フローに基づいて、パイプのフローを指数関数的に減らすこともできる。したがって、キューを介するトラフィックが安定する。この方法およびシステムには、伝送率に基づいてキューへのトラフィックの伝送を制御することと、キューからのトラフィックを制御するためにスケジューラを使用することも含まれる。スケジューラは、１つのポリシまたはポリシの組合せをイネーブルすることができる。たとえば、スケジューラは、先入れ先出し、優先順位キューイング、カスタム・キューイング、加重公平キューイング、クラス・ベース加重公平キューイング、多目的インターフェース・プロセッサ加重公平キューイング、ラウンド・ロビン、加重ラウンド・ロビン、または他の既知のキューイング・ポリシの１つまたは組合せを使用することができる。
【０１０６】
本発明による追加の方法およびシステムをより具体的に示すために、本発明による方法２２０の１実施形態を示す図１５および１６を参照されたい。方法２２０は、図１および３のスイッチ１０と共に使用することができる。したがって、方法２２０を、複数のブレード７、８、および９と各ブレード７、８、および９上の複数のポートを有するスイッチ１０内で実行することができる。明瞭にするために、方法２２０を、図３に示されたキュー３４およびエンキュー機構３２に関して説明する。好ましい実施形態では、方法２２０が、スイッチ１０の出側で使用され、したがって、ネットワーク・プロセッサ５の出側で使用される。したがって、方法２２０は、エンキュー機構３２、キュー３４、およびスケジューラ３５と共に使用されることが好ましい。しかし、方法２００を、キュー２０、２４、２８などの他のキュー、エンキュー機構１９、２３、２７などの他のエンキュー機構、および他のスケジューラと共に使用することを妨げるものはない。好ましい実施形態では、方法２２０が、複数のキューが同一のメモリ・リソースの一部であるシステムで使用される。しかし、方法２２０を各キューが別々のメモリ・リソースを有する別のシステムで使用することを妨げるものはない。
【０１０７】
ステップ２２２を介して、キュー３４にトラフィックを供給するパイプの最小フローおよび最大フローをセットする。パイプは、ポートＡ１８のいずれかからエンキュー機構３２に来る可能性がある。好ましい実施形態では、当該のパイプが、behaviour aggregate flowである。したがって、ステップ２２２で、当該のbehaviour aggregate flowの最小帯域幅および最大帯域幅をセットすることが好ましい。さらに、出ポートのそれぞれについて、パイプの最小保証フローの合計が、そのポートの送出容量Ｓ未満でなければならず、好ましい実施形態では、ポートの送出容量Ｓの１／２未満である。これは、フローが、キュー３４がサービスできるトラフィックの総量の分数として定義されるからである。パイプの最小フローを、０にすることができる。通常、キュー３４は、定義されたサービス速度すなわち、キュー３４がキューから項目を出力できる速度を有する。好ましい実施形態では、キュー３４によってサービスされるパイプの最大個数が、２２４８以下であるが、制御されるパイプの数に対する実際の上限はない。さらに、各パイプが、提供速度Ｉi（ｔ）でキュー３４にトラフィックを提供し、このｉは、ｉ番目のパイプを表す。異なる要因に応じて、トラフィックの一部をドロップすることができる。ｉ番目のパイプの伝送率Ｔi（ｔ）は、キュー３４に伝送される、ｉ番目のパイプからのトラフィックの分数である。したがって、ｉ番目のパイプの瞬間的なフローは、ｆi（ｔ）＝Ｉi（ｔ）×Ｔi（ｔ）である。好ましい実施形態では、方法２２０によって、それを通って流れるトラフィックを有するパイプが少なくともその最小フローを有することを保証することもできる。
【０１０８】
パイプの最小フローおよび最大フローをセットした後に、ステップ２２４を介して、組込プロセッサ複合体が、スイッチ１０を介するトラフィックの制御を開始することができる。それぞれステップ２２６および２２８を介して、前のエポックのキュー・レベルおよび提供速度を判定する。好ましい実施形態では、キュー・レベルが、前のエポックの終りに判定され、メモリ・リソースのレベルである。また、好ましい実施形態では、ステップ２２８で判定される提供速度が、前のエポック中にメモリ・リソースに提供された総入力である。好ましい実施形態では、前のエポックの伝送率および、下で説明するグローバル伝送率も、ステップ２２６またはステップ２２８で判定される。代替実施形態では、方法２０のキュー・レベルの判定に、エンキュー機構３２に対応するキュー３４のレベルの判定が含まれる。また、好ましい実施形態では、伝送率およびグローバル伝送率が、１エポックにわたって一定であり、したがって前のエポック中にいつでも判定できるが、前のエポックの始めに判定されることが好ましい。
【０１０９】
ステップ２３０を介して、グローバル伝送率が使用される場合に、グローバル伝送率を制御し、その結果、グローバル伝送率およびキュー・レベルが、キュー・レベルのある範囲にわたって臨界減衰されるようにする。グローバル伝送率は、キュー・レベルおよび提供される入力に基づいて制御される。好ましい実施形態では、グローバル伝送率が、前のグローバル伝送率にも基づいて制御される。好ましい実施形態では、ステップ２３０で、臨界減衰のために望ましいグローバル伝送率を提供するために前のエポック以降のグローバル伝送率の変化を計算し、このグローバル伝送率の変化を、前のエポックのグローバル伝送率に加算する。グローバル伝送率がそのように制御されるキュー・レベルの範囲を、すべての可能なキュー・レベルに拡張することができる。しかし、好ましい実施形態では、臨界減衰のためにグローバル伝送率が制御される範囲が、０以上の最小キュー・レベルと、最大の可能なキュー・レベル以下の最大キュー・レベルとの間である。
【０１１０】
ステップ２３２（図１６）を介して、キュー３４が使用可能な過剰帯域幅を有するかどうかを判定する。好ましい実施形態では、キュー・レベルが増加中である場合に、過剰帯域幅が存在しないと判定される。また、好ましい実施形態では、ステップ２３２で、キュー３４が空である場合、またはキュー３４のキュー・レベルが０である、低い、または減少中である場合に、過剰帯域幅が存在すると判定される。したがって、ステップ２３２に、キュー・レベルを判定することと、そのキュー・レベルを前のキュー・レベルと比較することが含まれることが好ましい。また、好ましい実施形態では、キュー・レベルが０でなく、減少中でもない場合に、過剰帯域幅が存在しないと判定される。しかし、過剰帯域幅が存在するかどうかを判定する別の判断基準の使用を妨げるものはない。
【０１１１】
ステップ２３２で、過剰帯域幅が存在すると判定される場合には、ステップ２３４を介して、パイプの差分伝送率をセットして、パイプのフローを線形に増やせるようにする。ステップ２３４が、パイプのそれぞれの差分伝送率を線形に増やすことによって達成されることが好ましい。パイプに関する線形増加は、最小フロー、最大フロー、または重みに基づくものとすることができる。したがって、パイプに関する線形増加は、そのパイプの最小フローだけ、最大フローだけ、最小フローと重みのなんらかの組合せ、最大フローと重みの何らかの組合せ、または最小フローと最大フローと重みのなんらかの組合せに基づくものとすることができる。しかし、好ましい実施形態では、パイプに関する線形増加が、パイプの最小フローに基づく。
【０１１２】
ステップ２３２で、過剰帯域幅が存在しないと判定される場合には、ステップ２３６を介して、差分伝送率をセットして、パイプのフローを指数関数的に減らせるようにする。ステップ２３６は、各パイプの差分伝送率を指数関数的に減らすことによって達成されることが好ましい。パイプに関する指数関数的減少は、最小フローまたは最大フローに基づくものとすることができる。したがって、パイプに関する指数関数的減少は、パイプの最小フローだけ、最大フローだけ、または最小フローと最大フローの何らかの組合せに基づくものとすることができる。しかし、好ましい実施形態では、パイプに関する指数関数的減少が、パイプの最小フローに基づく。減少が、性質において指数関数的なので、減少は、パイプの現在のフローにも基づく。
【０１１３】
ステップ２３８を介して、伝送率に、ステップ２３０で判定されたグローバル伝送率と、ステップ２３４または２３６のいずれかで判定された差分伝送率の最小値をセットする。１実施形態では、ステップ２３８を、前のエポックについて判定されたグローバル伝送率および差分伝送率を使用して実行することができる。その場合には、ステップ２３８を、ステップ２２６から２３６と並列に実行することができる。
【０１１４】
ステップ２４０を介して、キュー３４へのトラフィックを、伝送率に基づいて制御する。好ましい実施形態では、ステップ２４０に、ランダムにまたはパケット優先順位などの他の要因に基づいてのいずれかでパケットを破棄して、ステップ２３８でセットされた伝送率が維持されることを保証することが含まれる。もう１つの実施形態では、伝送率ではなく、破棄率を使用することができる。通常、破棄率は、１から伝送率を引いた値である。
【０１１５】
ステップ２４２を介して、スケジューラ３５を使用して、パケットの最終宛先に向けて送るために、キューからの個々のパケットの除去をスケジューリングする。したがって、スケジューラ３５は、キュー３４を出るパケットのための帯域幅を割り振る。言い換えると、スケジューラ３５は、フレームがキュー３４から送られる機会を割り振る。スケジューラ３５は、ステップ２４０でキュー３４に入ることを許可されたパケットを、キュー３４から除去し、その最終宛先に向けて送出する時を決定する。したがって、スケジューラ３５は、スイッチ１０を介するトラフィックの制御のもう１つのレベルを提供する。
【０１１６】
好ましい実施形態では、スケジューラ３５が、スケジューラ３５に提示されたパケットの特性ならびにターゲット・ポート（たとえばポートＢ３６の１つ）などの後続リソースの使用可能帯域幅に基づいて、ステップ２４２を実行する。したがって、スケジューラ３５は、各パケットがそのパケットの要件との一貫性がある形で送信されるように、各パケットをスケジューリングする。たとえば、スケジューラ３５に、リアルタイム・パケットが与えられる場合がある。音声データのパケットなどのリアルタイム・パケットは、伝送の速度ならびに伝送のジッタに関係する可能性がある。さらに、スケジューラ３５は、パケットを送出するか受け取るクライアントが支払ったサービスのタイプを考慮に入れることができる。サービスのタイプは、パケットが来たパイプの最小フローおよび最大フローによって、またはパケット自体のタイプによって表すことができる。リアルタイム・パケットについて、スケジューラ３５は、高優先順位の形でパケットをスケジューリングし、その結果、そのパケットが、所望の時間フレーム内で到達できるようにする。しかし、スケジューラ３５に、たとえばその宛先に到達するのに単にベストエフォートだけを必要とするパケットなどの、データ・パケットが与えられる場合もある。ベストエフォートは、単にパケットをその宛先に送る際にネットワークのベストエフォートが使用されることだけを必要とする、安価な低レベルのサービスである。スケジューラ３５は、そのようなパケットを、はるかに低い優先順位でスケジューリングし、その結果、そのパケットが、スイッチ１０にそのパケットを転送するのに十分な帯域幅がある時に限ってそのパケットが先に送られるようにすることができる。
【０１１７】
ステップ２３０でセットされたグローバル伝送率およびステップ２３４または２３６でセットされた差分伝送率を使用して、ステップ２４２でスケジューラの使用に関連する伝送率を判定することには、３つの利点がある。第１に、方法２２０は、伝送率としてのグローバル伝送率の使用を介して、キュー３４が満杯にならないことを保証することができる。キュー３４が満たされると、キュー３４に置かれるそれ以降のパケットのドロップが必要になるが、これは望ましくない。グローバル伝送率は、キュー３４のキュー・レベルが、キュー３４が満杯になる可能性があるという懸念を引き起こすのに十分に高い時に、伝送率としてステップ２３８で選択される可能性がある。したがって、グローバル伝送率は、ステップ２３８で伝送率としてセットされることが希であることが好ましい。
【０１１８】
グローバル伝送率が、伝送率として使用される時には、伝送率およびキュー・レベルによって記述される系の臨界減衰がもたらされる。これによって、キュー３４を介する、したがってスイッチ１０を介するトラフィックが、素早く安定状態に達することが可能になる。この安定状態は、最小の所望のキュー・レベルと最大の所望のキュー・レベルの間のキュー・レベルであり、このレベルは、キュー・レベルが、絶対に、キュー３４が満杯になる危険性が生じるのに十分に高くならないことを保証するようにセットすることができる。臨界減衰がもたらされるので、キュー・レベルおよび伝送率によって記述される、キュー３４を介するトラフィックは、グローバル伝送率が使用される時に最短の時間で安定状態に達しなければならない。
【０１１９】
方法２２０を用いると、差異化サービスを安定した形で提供できるようになる。ステップ２３８を介して、キュー・レベルが最大の所望のキュー・レベルを超える危険がない場合に、差分伝送率が使用される。言い換えると、ステップ２３４または２３６でセットされる差分伝送率は、一般に、ステップ２３８で伝送率を提供するのに使用される。差分伝送率は、フローを線形に増やし、フローを指数関数的に減らすので、差分伝送率によって、一般に、パイプを介するキュー３４へのトラフィックが、自動的に漸近的に安定性に達することができることが保証される。フローは、キュー３４が過剰帯域幅を有するかどうかに応じて増減される。安定性に達した時に、フローは、過剰帯域幅が存在する限り線形に増やされ、その後、過剰帯域幅がないことに起因して、過剰帯域幅がもう一度使用可能になるまで、指数関数的に減らされる。この挙動が繰り返される。言い換えると、パイプからのトラフィックは、極限閉軌道と称する定常循環状態にとどまることができる。したがって、パイプを介するトラフィックが開始される状態に無関係に、この系は、安定した循環挙動に向かう。この安定した挙動は、増加と減少の別の組合せを用いて達成することができない。たとえば、指数関数的増加および線形減少または指数関数的増加および指数関数的減少は、安定した挙動をもたらすことができない。さらに、各パイプのフローの増減が、そのパイプの最小フローまたは最大フローとそのパイプの前のフローに依存する。したがって、異なるパイプが、異なるレベルのフローまたはサービスを有することができる。その結果、差分伝送率は、安定した挙動を生じる割り振るだけではなく、差異化サービスを提供し、キュー３４の過剰帯域幅を公平に割り振ることもできる。ネットワーク管理者または他のユーザが行わなければならないことは、特定の顧客に望ましいサービスのレベルに応じて異なる形で、顧客の最小フローおよび最大フローをセットすることである。したがって、方法２２０は、DiffServを使用するネットワークなどのさまざまな応用分野で、異なる顧客に対してまたは異なる媒体に関して異なるレベルのサービスを提供することを望むインターネット・サービス・プロバイダが使用することができる。これは、方法２２０のパイプに対応する、behaviour aggregate flow、顧客、媒体、クラス、または他のフローについて、単に最小フローおよび最大フローをセットできるようにすることによって達成される。したがって、方法２２０は、キュー・レベルが安定した形で制御されることを保証するだけではなく、安定した形で差異化サービスを提供することもする。
【０１２０】
方法２２０の第３の利点は、ステップ２４２でのスケジューラ３５の使用にある。伝送率が、ステップ２３８でグローバル伝送率と差分伝送率の最小値になるようにセットされるので、キュー３４に提供されるトラフィックの量を制御することができる。その結果、スケジューラ３５に、実行可能な量の作業を与えることができ、スケジューラ３５は、その作業を所望の速度で達成することができる。言い換えると、方法２２０は、スケジューラ３５が処理できる速度より高い速度でスケジューラ３５にキューからトラフィックが提示されないようにすることができる。これによって、スケジューラ３５が満杯にならなくなる。その結果、スケジューラ３５に起因して導入される待ち時間を、減らすかなくすことができる。これによって、待ち時間、ロス、帯域幅割振り、およびジッタに対する予測不能な効果を有する、スケジューラ３５の上流でのパケットのバックログの形成が、防止される。
【０１２１】
図１７の符号２５０に、キュー・レベルおよび提供速度に基づいてグローバル伝送率を制御する、ステップ２３０のより詳細な実施形態を示す。ステップ２３０は、前のエポックのグローバル伝送率、キュー・レベル、および提供速度が判定された後に開始される。好ましい実施形態では、前のエポックのグローバル伝送率が、方法２２０の前の反復で判定される。しかし、伝送率がまだ使用可能でない場合には、伝送率を判定することができる。キュー・レベルは、エポックの終りに、最小キュー・レベルＱminおよび最大キュー・レベルＱmaxに対して相対的に判定されることが好ましい。
【０１２２】
ステップ２５２を介して、キュー・レベルがＱminを超えるかどうかを判定する。そうでない場合には、ステップ２５４を介して、グローバル伝送率に１をセットする。したがって、ステップ２５４によって、キュー・レベルが十分に低い場合に、すべてのパケットがエンキュー機構３２によってキュー３４に伝送されることが保証される。ステップ２５２で、キュー・レベルがＱminを超えると判定される場合には、ステップ２５６を介して、キュー・レベルがＱmaxを超えるかどうかを判定する。キュー・レベルがＱmaxを超える場合には、ステップ２５８を介して、グローバル伝送率に０をセットする。したがって、ステップ２５８によって、キュー・レベルが高すぎる場合に、すべてのパケットが破棄されることが保証される。
【０１２３】
キュー・レベルが、Ｑmin未満でなく、Ｑmaxを超えない場合には、ステップ２６０を介して、臨界減衰のためにグローバル伝送率を制御する。グローバル伝送率としての設定をより明瞭に説明するために、キュー３４への提供速度Ｉ（ｔ）およびキュー３４からの出力速度Ｏ（ｔ）が、平衡すなわち安定状態で一定であると仮定する。しかし、この分析は、ネットワークで一般的にそうであるように、Ｉ（ｔ）およびＯ（ｔ）が変化し続ける場合にもあてはまる。
【０１２４】
平衡で、時間に関するキュー・レベルの変化の速度と、時間に関する伝送の変化の速度は、出力速度および提供速度が一定であるならば０でなければならない。言い換えると、平衡では、下記が成り立つ。
０＝Ｉ（ｔ）×ｇＴ（ｔ）−Ｏ（ｔ）
０＝κ（ｔ）×（β−αγＴ（ｔ）−Ｑ／Ｑmax）
Ｉ（ｔ）＝Ｉ
＝定数
Ｏ（ｔ）＝Ｏ
＝定数
ｇＴ（ｔ）＝グローバル伝送率
その結果、平衡では、下記が成り立つ。
ｇＴ＝Ｏ／Ｉ
α×ｇＴ＝β−Ｑ／Ｑmax
わかりやすくするために、最低限で、Ｑ／Ｑmaxが、０．２５などの定数であると仮定する。安定性の領域内で許容されるＩ／Ｏの最大比が、１．６であると決定され、このＩ／Ｏ比で、ＱがＱmaxに達し、Ｔ＝５／８になる。同様に、Ｑmax／４以下のＱで、ｇＴが１と等しくならなければならないことが決定された。したがって、この２つの極端な平衡で、
０＝β−α×５／８−１  かつ
＝β−α−１／４
である。これらの前提から、αおよびβの数値を、それぞれ２および２．２５に決定することができる。Ｑ／ＱmaxおよびＩ／Ｏの他の許容範囲を設けて、αおよびβの他の数値を得ることができることに留意されたい。したがって、αおよびβを、平衡条件およびスイッチ１０が動作することを望まれる範囲に関するいくつかの仮定に基づいて決定することができる。安定性に関して、下記を示すことができる。
α2×κ（ｔ）2＝４×κ（ｔ）×Ｉ／Ｑmax  すなわち
κ（ｔ）＝４×Ｉ／（Ｑmax×α2）
＝Ｉ（ｔ）／Ｑmax  上で設けた仮定に関して
したがって、κ（ｔ）、α、およびβを選択して、系が動作することを望まれる値で臨界減衰をもたらす伝送率をもたらすことができる。上の式を使用して、臨界減衰をもたらすために所望される伝送率を、スイッチ１０について提供することができる。たとえば、Ｑ／ＱmaxおよびＩ／Ｏに関する仮定を使用すると、伝送率およびキュー・レベルによって記述される系は、次のようになる。
Ｑ（ｔ＋Ｄｔ）＝Ｑ（ｔ）＋［Ｉ（ｔ）×ｇＴ（ｔ）−Ｏ（ｔ）］×Ｄｔ  ｇＴ（ｔ＋Ｄｔ）＝ｇＴ（ｔ）＋（Ｉ（ｔ）×Ｄｔ／Ｑmax）×（２．２５−２×ｇＴ（ｔ）−Ｑ（ｔ）／Ｑmax）×Ｄｔ
ただし、
Ｄｔ＝ＱおよびｇＴの計算の間の時間間隔
＝エポックの時間
Ｑ（ｔ）／Ｑmaxは、０．２５以上
Ｉ（ｔ）／Ｏ（ｔ）は、１．６以下
Ｑ（ｔ）、Ｉ（ｔ）、およびＯ（ｔ）の上の条件に違反する情況を考慮に入れるために、伝送率を、キュー・レベルに基づいて変更することができる。たとえば、Ｑ／Ｑmaxが０．２５未満の時に、伝送率を１にすることができる。同様に、Ｉ（ｔ）／Ｏ（ｔ）が１．６を超える時には、キューが、所望よりすばやく満たされ始める。その結果、キューが、最大値またはその近くのレベルに達した時に、伝送率に０または小さい値をセットすることができる。
【０１２５】
したがって、グローバル伝送率は、前のエポックのキュー・レベル、提供速度、および伝送率ならびにエポックの長さに基づいて、臨界減衰のためにセットされる。グローバル伝送率が、伝送率として使用される場合に、パケットが、エンキュー機構３２によって伝送または破棄され、その結果、パケットのうちでキュー３４に供給される分数が、伝送率と等しくなる。パケットは、方法ＲＥＤで使用されるものに類似する形でランダムに破棄されることが好ましい。しかし、パケットを、その優先順位に基づいて破棄することもできる。さらに、破棄されるパケットを送るホストに通知を送り返し、その結果、そのホストがスイッチ１０へのトラフィックを一時的に中断できるようにすることが好ましい。
【０１２６】
したがって、グローバル伝送率を、方法２５０を使用して臨界減衰のためにセットすることができる。臨界減衰が、キュー・レベルの所望の範囲内でのみ発生できることが好ましい。この範囲の外では、グローバル伝送率に、キュー・レベルが臨界減衰計算について高すぎるまたは低すぎるのどちらと判定されるかに応じて、０または１がセットされる。パケットを、ランダムにまたはその優先順位に少なくとも部分的に基づいて破棄することができるので、スイッチ１０にトラフィックを送るホストの同期化を防ぐことができる。臨界減衰がもたらされるので、方法２２０および２５０は、方法ＲＥＤよりよい系の安定性をもたらすことができる。また、臨界減衰がもたらされるので、方法２２０および２５０は、方法ＢＬＵＥより素早く平衡に達する。その結果、方法２２０または２５０を使用するスイッチ１０を使用するネットワークの性能が、改善される。
【０１２７】
図１８に、差分伝送率を提供する、本発明による方法２７０のより詳細な流れ図を示す。方法２７０は、図１５および１６に示された方法２２０のステップ２３２、２３４、および２３６を実行するのに使用することができる。図１８を参照すると、キュー・レベル、瞬間過剰帯域幅信号Ｂ、および過剰帯域幅値Ｅが、好ましくは方法２７０の前の反復から、既に使用可能であると仮定する。しかし、使用可能でない場合には、これらの値を計算しなければならない。好ましい実施形態では、前のエポックのフローも使用可能でなければならない。
【０１２８】
方法２７０は、たとえばネットワーク管理者によって、制御されるパイプのそれぞれの最小フローおよび最大フローがセットされた後に開始される。ステップ２７２を介して、パイプの最小フローおよび最大フローに基づいて、パイプのそれぞれについて定数を計算する。パイプｉのそれぞれについて、ステップ２７２で、定数Ｃiおよび定数Ｄiを計算する。定数Ｃiは、下で説明するように、パイプｉのフローを線形に増やすのに使用される。同様に、定数Ｄiは、下で説明するように、パイプｉのフローを指数関数的に減らすのに使用される。好ましい実施形態では、定数Ｃiおよび定数Ｄiの両方が、最小フローに基づく。代替実施形態では、異なるパイプの重みも提供することができる。その場合には、定数ＣiおよびＤiを、提供される重みにも基づいて計算することができる。
【０１２９】
パイプのフローを増減するための定数は、最小フローと、使用される場合に重みとに基づいて決定される。パイプのフローを増やす定数Ｃiおよびフローを減らす定数Ｄiが、下記のように計算されることが好ましい。
【数４】
0004195221.tif 000005
好ましい実施形態の場合のように、すべての重みが１と等しい場合には、
【数５】
0004195221.tif 000006
ただし、
Ｗi＝ｉ番目のパイプの重みであり、範囲［０、１］内であることが好ましい
Ｗ＝Ｎ個すべての重みの合計
ｆimin＝ｉ番目のパイプの最小フロー
さらに、フローの単位は、やはり、Ｄｔが１になり、Ｑmaxが１になるように選択される。
【０１３０】
定数を判定した後に、トラフィックが、パイプを介してキュー３４に流れることを許可される。ステップ２７４を介して、過剰帯域幅が存在するかどうかを判定する。好ましい実施形態では、キュー３４のキュー・レベルが０であるか減少中である場合に限って、過剰帯域幅が存在すると判定される。それ以外の場合には、過剰帯域幅が存在しないと判定される。しかし、過剰帯域幅が存在するかどうかを判定する別の判断基準の使用を妨げるものはない。好ましい実施形態では、判定されるキュー・レベルが、メモリ・リソース全体のレベルである。しかし、キュー・レベルが論理キューまたはサブキューについて判定されることを妨げるものはない。過剰帯域幅が存在しない場合には、ステップ２８０を介して、瞬間過剰帯域幅信号Ｂに０をセットする。信号Ｂを瞬間と呼ぶのは、これが、キュー・レベルの単一の測定と、キュー・レベルの変化の単一の判定に基づくからである。ステップ２８２を介して、過剰帯域幅値Ｅに、好ましくは３１／３２である定数に過剰帯域幅値の前の値をかけたものと、１から同一の定数を引いた値、好ましくは１／３２にＢをかけた値の和をセットする。したがって、好ましい実施形態では、過剰帯域幅値Ｅが、瞬間過剰帯域幅信号Ｂの指数関数的加重平均である。過剰帯域幅値は、ステップ２８２では適当にセットされる。というのは、瞬間過剰帯域幅信号が０であるからである。
【０１３１】
ステップ２７４で、過剰帯域幅が存在すると判定される場合には、ステップ２７６を介して、瞬間過剰帯域幅信号に１をセットする。ステップ２７８を介して、過剰帯域幅値Ｅに、瞬間過剰帯域幅信号の指数関数的加重平均をセットする。したがって、好ましい実施形態では、過剰帯域幅値が、第１定数に前の過剰帯域幅値をかけた値と、第２定数に瞬間過剰帯域幅信号をかけた値の和になる。第１定数および第２定数は、両方とも１未満とすることができ、好ましくはそれぞれ３１／３２および１／３２である。好ましい実施形態では、指数関数的加重帯域幅値に、次の値がセットされる。
Ｅ（ｔ＋Ｄｔ）＝（３１／３２）×Ｅ（ｔ）＋Ｂ（ｔ）／３２
ただし、
Ｅ（ｔ＋Ｄｔ）＝現在のエポックの過剰帯域幅値
Ｅ（ｔ）＝前のエポックの過剰帯域幅値
Ｂ（ｔ）＝前のエポックの瞬間過剰帯域幅信号
【０１３２】
好ましい実施形態では、ステップ２８４を介して、ステップ２７４から２８２と並列に、各パイプｉの差分伝送率がセットされる。しかし、代替実施形態では、差分伝送率を、瞬間過剰帯域幅信号および過剰帯域幅値と直列に更新することができる。前の瞬間過剰帯域幅信号Ｂが１（過剰帯域幅が使用可能）であった場合には、ステップ２８４で、前の差分伝送率、定数Ｃi、および過剰帯域幅値に基づいて、各パイプｉの差分伝送率がセットされる。ステップ２８４で前に存在した過剰帯域幅についてセットされる差分伝送率は、次式であることが好ましい。
Ｔi（ｔ＋Ｄｔ）＝Ｔi（ｔ）＋Ｃi×Ｅ（ｔ)
ただし、
Ｄｔ＝エポックの長さ（伝送率が最後に計算されてからの時間）
Ｔi（ｔ）＝ｉ番目のパイプの前のエポック（時刻ｔ）の差分伝送率  フロー単位は、Ｄｔおよび最大の可能なキュー・レベルＱmaxが１になるようにセットされることが好ましい。したがって、差分伝送率は、線形に増加する。さらに、差分伝送率は、過剰帯域幅が存在し続ける限り、線形に増加し続ける。前のエポックに過剰帯域幅が存在しなかった（Ｂが０であった）場合には、ステップ２８４で、各パイプｉの差分伝送率Ｔi（ｔ＋Ｄｔ）が、そのパイプの前の差分伝送率Ｔi（ｔ）、Ｄi、およびそのパイプの前のフローｆi（ｔ）に基づいてセットされる。過剰帯域幅が前に存在しなかった時の差分伝送率は、次式によって与えられることが好ましい。
Ｔi（ｔ＋Ｄｔ）＝Ｔi（ｔ）−Ｄi×ｆi（ｔ）
したがって、ステップ２８４でセットされる差分伝送率によって、差分伝送率が、したがってフローが、過剰帯域幅が存在しない状態が続く限り、指数関数的に減少することが保証される。
【０１３３】
図１９に、本発明と共に使用されるスケジューラ２９０の好ましい実施形態を示す。したがって、スケジューラ２９０は、スケジューラ２１、２５、２９、および３５、特にスケジューラ３５として使用されることが好ましい。スケジューラ２９０には、カレンダ２９２、２９４、および２９６ならびに加重公平キューイング・リング（「リング」）２９８が含まれる。しかし、他のスケジューラ（図示せず）を、本発明と共に使用できることに留意されたい。たとえば、スケジューラ２９０より単純な、１つまたは複数のＦＩＦＯを使用することができる。もう１つの実施形態では、各パケットの締切を再検討し、最も早い締切を有するパケットを最初に送信されるようにするＥＤＦ（earliest deadline first）スケジューラを使用することができる。同様に、もう１つの実施形態では、別のスケジューラを使用することができる。一般に、どのスケジューラが使用されるにせよ、スケジューラが、次に送出されるパケットを繰り返し選択することによって、ある所望のポリシまたはポリシの組合せを繰り返して達成すると仮定することができる。好ましい実施形態の１つでは、ポリシを単純にすることができ、スケジューリングを、２つのＦＩＦＯ機構（一方は絶対優先順位を有するリアルタイム・トラフィック用、他方は第１ＦＩＦＯが空の時に限ってサービスされる他のすべてのトラフィック用）によって達成することができる。その代わりに、代替の好ましい実施形態では、持続送出速度、ピーク送出速度、最大バースト・サイズ、およびジッタ限界を含む複数のポリシを、洗練されたスケジューラによって実施することができる。どの場合でも、スケジューラ自体は、フロー制御すなわち、輻輳中の低価値パケットの意図的なドロップを実行しない。その代わりに、上で説明した、グローバル伝送率および差分伝送率を使用する上流のフロー制御機構が、フロー制御を提供すると同時に、単純さ、堅牢性、安定性、公平な帯域幅割振り、低いドロップ率、低いバッファ占有、および高い使用率という競合する目標の要求を満たす。
【０１３４】
各カレンダ２９２、２９４、および２９６は、前に述べたように機能する。したがって、各カレンダ２９２、２９４、および２９６は、特定の個数の位置を有する。１つのカレンダ２９２、２９４、または２９６内の位置の数を、別のカレンダ２９２、２９４、または２９６の位置の数と異なるものとすることができることに留意されたい。各位置が、正確に０個または１個の送出されるパケットを保持することができる。この開示に関して、スケジューラ２９０などのスケジューラ、カレンダ２９２、２９４、または２９６、またはリング２９８を、１つのパケットを有するものとして説明する。しかし、スケジューラ２９０、カレンダ２９２、２９４、または２９６、およびリング２９８は、パケット自体ではなく、パケットの識別子を使用することが好ましい。
【０１３５】
各カレンダ２９２、２９４、および２９６は、各位置で特定の長さの時間を費やす。好ましい実施形態では、カレンダ２９２が、低待ち時間カレンダであり、したがって、カレンダ２９２、２９４、および２９６のうちで最高の優先順位を有する。カレンダ２９４は、通常の待ち時間のカレンダであり、したがって、カレンダ２９２、２９４、および２９６のうちで２番目に高い優先順位を有する。カレンダ２９６は、ピーク速度カレンダであり、したがって、カレンダ２９２、２９４、および２９６のうちで最低の優先順位を有する。したがって、好ましい実施形態では、カレンダ２９２の各位置で費やされる時間が、カレンダ２９４の各位置で費やされる時間より短い。同様に、カレンダ２９４の各位置で費やされる時間は、カレンダ２９６の各位置で費やされる時間より短い。したがって、カレンダ２９２、２９４、および２９６は、最高、普通、および最低の優先順位のパケットのスケジューリングに使用される。カレンダ２９２、２９４、および２９６のそれぞれの位置をトラバースすることによって、スケジューラ２９０は、パケットが、パケットの優先順位との一貫性を有する形でキュー２０などの対応するキューから送出されることを保証する。
【０１３６】
リング２９８は、最低の優先順位のパケットのスケジューリングに使用されることが好ましい。したがって、リング２９８に置かれたパケットは、カレンダ２９２、２９４、および２９６の１つに置かれたパケットより低い優先順位を有する。リング２９８は、作業保存的であることが好ましい。したがって、特定の長さの時間の間に、リング２９８は、リング２９８が空でない限り、一定の量の作業を行う。リング２９８も、特定の数の位置を有する。リング２９８の各位置は、正確に０個または１個のパケットを保持することができる。しかし、リング２９８がトラバースされる時に、リング２９８は、占められていないすべての位置をスキップして、次の占められている位置に直接に進む。その結果、リング２９８が、作業保存的になる。
【０１３７】
図２０に、スケジューラ２９０を使用するパケットのスケジューリングの方法３００の１実施形態の単純化された流れ図を示す。ステップ３０２を介して、スケジューリングされるパケットの、タイプなどの特性を判定する。スケジューリングされるパケットのタイプは、たとえばビデオなどのリアル・タイム・データ対電子メールなどの純データなど、パケットによって搬送されるデータの種類に部分的に基づくものとすることができる。さらに、パケットがそこから来るパイプのタイプも、考慮することができる。たとえば、１実施形態では、一般に使用可能なパイプのタイプが、expedited forwarding（ＥＦ）、ベストエフォート（ＢＥ）、およびassured forwarding（ＡＦ）である。通常、ＥＦパイプは、リアル・タイム・トラフィックを搬送する。ＥＦパイプを用いると、トラフィックが、保証された最大フロー速度まで流れることができ、したがって、高い、比較的高価なレベルのサービスがもたらされる。ＥＦパイプによって搬送される、保証された最大フロー速度を超えるトラフィックは、破棄される場合がある。したがって、ＥＦパイプのトラフィックは、カレンダ２９２などの高優先順位カレンダにマッピングされる可能性が高いが、カレンダ２９４および２９６にマッピングされる場合もある。ＢＥは、通常は、データ・パケットなどの低優先順位トラフィックを搬送する。ＢＥパイプは、通常は、より高い優先順位のトラフィックが少なくともその最小帯域幅を割り振られた後で使用可能であるネットワークのリソースを使用してトラフィックを搬送する。したがって、ＢＥパイプのトラフィックを、リング２９８にマッピングすることができる。ＡＦパイプは、保証された最小速度を有し、これに対して、顧客が通常は特別料金を支払う。しかし、ＡＦパイプは、ネットワーク内で使用可能な過剰なリソースまたは帯域幅のある部分を割り振られる場合がある。したがって、ＡＦパイプのトラフィックを、カレンダ２９２、２９４、および２９６とリング２９８のある組合せにマッピングすることができる。
【０１３８】
好ましい実施形態では、スケジューリングされるパケットと同一のパイプ（対応するパイプ）からの前のパケットの、タイプなどの特性も、ステップ３０４を介して判定される。その後、ステップ３０６を介して、スケジューリングされるパケットが最高の優先順位であるかどうかを判定する。ステップ３０６で考慮される「最高の優先順位」は、高い優先順位の範囲とすることができる。さらに、パケットの優先順位の判定で、前のパケットの優先順位および対応するパイプのフロー速度を考慮に入れることができる。たとえば、あるパケットが、リアル・タイム・パケットなどの高い優先順位を有するが、対応するパイプが保証された速度より高いフローを有することが示される場合に、そのパケットが、最高の優先順位を有すると見なされない場合がある。パケットが、最高の優先順位である場合に、ステップ３０８を介して、そのパケットがカレンダ２９２のある位置に置かれる。１実施形態では、パケットが置かれる位置が、カレンダ２９２内のある個数の他のパケットの優先順位を考慮に入れたものである。１実施形態では、パケットが、カレンダ２９２内の空き位置に置かれる。しかし、代替実施形態では、パケットを、占められている位置に置くことができ、その占められていた位置からのパケットが、別の位置に移動される。
【０１３９】
パケットが、最高優先順位でない場合には、ステップ３１０を介して、パケットが２番目に高い優先順位であるかどうかを判定する。ステップ３１０で考慮される「２番目に高い優先順位」は、優先順位の範囲とすることができる。さらに、パケットの優先順位の判定で、前のパケットの優先順位および対応するパイプのフロー速度を考慮に入れることができる。パケットが２番目に高い優先順位である場合には、ステップ３１２を介して、パケットを、２番目に高い優先順位を有するカレンダ２９４のある位置に置く。１実施形態では、パケットが置かれる位置が、カレンダ２９４内のある個数の他のパケットの優先順位を考慮に入れたものである。１実施形態では、パケットが、カレンダ２９４の空き位置に置かれる。しかし、代替実施形態では、パケットを、占められている位置に置くことができ、その占められていた位置からのパケットが、別の位置に移動される。
【０１４０】
パケットが、２番目に高い優先順位でない場合には、ステップ３１４を介して、パケットが３番目に高い優先順位であるかどうかを判定する。ステップ３１４で考慮される「３番目に高い優先順位」は、優先順位の範囲とすることができる。さらに、パケットの優先順位の判定で、前のパケットの優先順位および対応するパイプのフロー速度を考慮に入れることができる。パケットが３番目に高い優先順位である場合には、ステップ３１６を介して、パケットを、３番目に高い優先順位を有するカレンダ２９６のある位置に置く。他の実施形態では、パケットが置かれる位置が、カレンダ２９６内のある個数の他のパケットの優先順位を考慮に入れたものである。１実施形態では、パケットが、カレンダ２９６の空き位置に置かれる。しかし、代替実施形態では、パケットを、占められている位置に置くことができ、その占められていた位置からのパケットが、別の位置に移動される。
【０１４１】
パケットが３番目に高い優先順位でない場合には、ステップ３１８を介して、そのパケットをリング２９８のある位置に置く。１実施形態では、パケットが置かれる位置が、リング２９８内のある個数の他のパケットの優先順位を考慮に入れたものである。１実施形態では、パケットが、リング２９８の空き位置に置かれる。しかし、代替実施形態では、パケットを、占められている位置に置くことができ、その占められていた位置からのパケットが、別の位置に移動される。好ましい実施形態では、ステップ３１８で、リング２９８にパケットを置く際に、同一のパイプからの前のパケットのサイズを考慮に入れる。たとえば、前のパケットが存在しない場合には、パケットを、リング２９８の最も離れた占められていない位置に置くことが好ましい。しかし、同一のパイプからの前のパケットが大きい場合には、パケットを、より離れた占められていない位置に置くことが好ましい。同一のパイプからの前のパケットが小さい場合には、パケットを、リング２９８内でより近い占められていない位置に置くことが好ましい。したがって、より大きいパケットを送出するパイプは、リング２９８のトラーバサルのそれぞれで、より少ない機会（位置）を有する。パケットの配置は、リング２９８がほぼ同一の割合で異なるパイプに作用することを保証するために、同一のパイプからの前のパケットのサイズに部分的に基づくことが好ましい。
【０１４２】
図２１は、カレンダ２９２、２９４、および２９６とリング２９８のパケットの位置に基づいて対応するキューからパケットを送出する方法３２０の１実施形態を示す流れ図である。一般に、スケジューラ２９０は、カレンダ２９４からよりもすばやくカレンダ２９２からパケットを送出する。また、スケジューラ２９０は、カレンダ２９６からよりもすばやくカレンダ２９４からパケットを送出する。また、スケジューラ２９０は、リング２９８からよりもすばやくカレンダ２９６からパケットを送出する。したがって、カレンダ２９２、２９４、および２９６を使用してスケジューリングされるパケットは、リング２９８内でスケジューリングされるパケットの前に送出されることが好ましい。
【０１４３】
ステップ３２２を介して、最高優先順位のカレンダ２９２内の現在位置が空であるかどうかを判定する。現在位置が空でない場合には、ステップ３２４を介して、カレンダ２９２の現在位置のパケットを、キューから除去し、スイッチの次の部分に送出する。カレンダ２９２の現在位置が空である場合には、ステップ３２６を介して、２番目に高い優先順位のカレンダ２９４の現在位置が空であるかどうかを判定する。カレンダ２９４の現在位置が空でない場合には、ステップ３２８を介して、その位置のパケットを、キューから除去し、スイッチの次の部分に送出する。カレンダ２９４の現在位置が空である場合には、ステップ３３０を介して、３番目に高い優先順位のカレンダ２９６の現在位置が空であるかどうかを判定する。カレンダ２９６の現在位置が占められている場合には、ステップ３３２を介して、カレンダ２９６のパケットを、キューから除去し、スイッチの次の部分に送出する。カレンダ２９６の現在位置が占められていない場合には、リング２９８の現在位置が空であるかどうかを判定する（ステップ３３４）。そうでない場合には、カレンダ２９２、２９４、または２９６の１つの次の位置に移動する時になるまで、リング２９８の位置に対応するパケットを、キューから除去し、スイッチの次の部分に送出する（ステップ３３６）。カレンダの次の位置への移動は、カレンダ２９２の次の位置が現在位置になる時に行われることが好ましい。これは、最高優先順位のカレンダ２９２が、各位置で最短の時間を費やすことが好ましいからである。
【０１４４】
ステップ３３８を介して、１つまたは複数のカレンダの次の位置を、そのカレンダの現在位置にする。スケジューラ２９０のどの部分からパケットが送出されるかに無関係に、少なくとも１つのカレンダを進める。好ましい実施形態では、ステップ３３８で、少なくともカレンダ２９２が、次の位置に進められる。また、好ましい実施形態では、カレンダ２９４および２９６が、カレンダ２９２が次の位置に複数回進められた時に、次の位置に進められる。たとえば、１実施形態では、カレンダ２９４は、カレンダ２９２が次の位置に５１２回進められるたびに次の位置に進められる。したがって、好ましい実施形態では、ステップ３３８で、複数のカレンダ２９２、２９４、および２９６が次の位置に進められる場合がある。その後、方法３２０を繰り返すことができる。したがって、方法３００および３２０を使用して、トラフィックのフロー、持続速度、ピーク速度、およびバースト・サイズが、扱われる望まれる。トラフィックのフローの速度が、持続速度以下である場合に、パケットが、規則的なインターバルで最高優先順位のカレンダ２９２に入ることを許可される。トラフィックのフローの速度が、持続速度を超えるがピーク速度未満である場合には、バースト・サイズによって決定される時間の間、パケットが、より高い優先順位のカレンダ２９２、２９４、および２９６でスケジューリングされる。トラフィックが、長時間にわたって持続速度を超えるがピーク速度未満にとどまる場合には、パケットが、リング２９８に入れられ、これによって、パケットの送出にベストエフォートだけが使用されることが保証される。その後、フローが、保証された速度または持続速度以下に落ちた場合に、パケットを、もう一度高い優先順位のカレンダにスケジューリングすることができる。その後、パケットは、カレンダ２９２、２９４、および２９６およびリング２９８と方法３２０を使用して、キューから除去される。
【０１４５】
したがって、スケジューラ２９０は、パケットの特性ならびに、パイプからの前のパケットの特性などの、パケットが来たパイプの特性に基づいて、キュー３４などのキューからの、異なるパイプからの個々のパケットの除去をスケジューリングする。その結果、スケジューラ２９０は、スイッチを介するトラフィックを微細に制御することができる。
【０１４６】
したがって、上で説明した方法を使用して、トラフィックを介してスイッチ１０を制御することができる。たとえばグローバル伝送率の使用を介して、スイッチのメモリ・リソースを使い果たさないことを保証することができる。具体的に言うと、特定のメモリ・リソースのキュー・レベルを、ほとんどの情況で低いレベルに駆動することができる。低いキュー・レベルは、キューが使い果たされないことだけではなく、満杯またはほぼ満杯のキューに部分的に起因するジッタおよび他の望ましくない現象を減らせるか回避できることも保証する。さらに、たとえば差分伝送率の使用を介して、差異化サービスを提供することができる。したがって、異なる顧客に、異なるレベルのサービスを提供することができる。さらに、スケジューラは、トラフィックがパケット・レベルで制御されることを保証することができる。さらに、説明したスケジューラおよび方法を使用することによって、達成が可能な量の作業がスケジューラに与えられることを保証することができる。したがって、スケジューラに起因する追加の待ち時間を、減らすかなくすことができる。
【０１４７】
ネットワークを介するトラフィックを制御する方法およびシステムを開示した。本発明を実施するために記述されたソフトウェアは、メモリ、ＣＤ−ＲＯＭなどの何らかの形のコンピュータ可読媒体に保管されるか、ネットワークを介して伝送され、プロセッサによって実行される。その代わりに、本発明の一部またはすべてを、ハードウェアで実施することができる。本発明を、図示の実施形態によって説明したが、当業者は、これらの実施形態に対する変形形態が可能であり、これらの変形形態が、本発明の趣旨および範囲に含まれることを容易に認識するであろう。したがって、請求項の趣旨および範囲から逸脱せずに、当業者が多数の修正形態を作ることができる。
【図面の簡単な説明】
【図１】  コンピュータ・ネットワークで有用なスイッチの単純化されたブロック図である。
【図２】  コンピュータ・ネットワークで有用であり、いくつかのアプリケーションでスイッチとして機能することができる、プログラマブル・ネットワーク・プロセッサの単純化されたブロック図である。
【図３】  コンピュータ・ネットワーク内で有用なスイッチの代替の単純化されたブロック図である。
【図４】  スイッチを介するトラフィックを制御する方法ＲＥＤを示す流れ図である。
【図５】  スイッチを介するトラフィックを制御する方法ＢＬＵＥを示す流れ図である。
【図６】  スイッチを介するトラフィックを制御するDiffServ方法を示す流れ図である。
【図７】  図１から３などのスイッチを介するトラフィックを制御する、本発明による方法のいくつかの特性を示す単純化された流れ図である。
【図８】  図７の方法の実施形態の単純化された流れ図である。
【図９】  本発明によるもう１つの方法の特性を示す、図７に類似する図である。
【図１０】  図９の方法に有用ないくつかの方法ステップの単純化された流れ図である。
【図１１】  図９の方法の実施形態の単純化された流れ図である。
【図１２】  本発明によるもう１つの方法の特性を示す、図７および９に類似する図である。
【図１３】  図１２の方法の実施形態の単純化された流れ図である。
【図１４】  図１２の方法のもう１つの実施形態の単純化された流れ図である。
【図１５】  図１６と共に、本発明の方法のもう１つの実施形態の単純化された流れ図を構成する図である。
【図１６】  図１５と共に、本発明の方法のもう１つの実施形態の単純化された流れ図を構成する図である。
【図１７】  図１５および１６の方法に有用ないくつかの方法ステップの単純化された流れ図である。
【図１８】  図１５および１６の方法に有用ないくつかの方法ステップの単純化された流れ図である。
【図１９】  図１から３のスイッチに存在するスケジューラの概略図である。
【図２０】  本発明による方法で有用な、図１９のスケジューラを作動させるいくつかの方法ステップの流れ図である。
【図２１】  本発明による方法で有用な、図１９のスケジューラを作動させるいくつかの方法ステップの流れ図である。
【図１】
0004195221.tif 000007
【図２】
0004195221.tif 000008
【図３】
0004195221.tif 000009
【図４】
0004195221.tif 000010
【図５】
0004195221.tif 000011
【図６】
0004195221.tif 000012
【図７】
0004195221.tif 000013
【図８】
0004195221.tif 000014
【図９】
0004195221.tif 000015
【図１０】
0004195221.tif 000016
【図１１】
0004195221.tif 000017
【図１２】
0004195221.tif 000018
【図１３】
0004195221.tif 000019
【図１４】
0004195221.tif 000020
【図１５】
0004195221.tif 000021
【図１６】
0004195221.tif 000022
【図１７】
0004195221.tif 000023
【図１８】
0004195221.tif 000024
【図１９】
0004195221.tif 000025
【図２０】
0004195221.tif 000026
【図２１】
0004195221.tif 000027