JP2007512719A - ネットワーク・スイッチにおいて帯域幅を保証しかつオーバーロードを防止する方法と装置 - Google Patents

ネットワーク・スイッチにおいて帯域幅を保証しかつオーバーロードを防止する方法と装置 Download PDF

Info

Publication number
JP2007512719A
JP2007512719A JP2006523205A JP2006523205A JP2007512719A JP 2007512719 A JP2007512719 A JP 2007512719A JP 2006523205 A JP2006523205 A JP 2006523205A JP 2006523205 A JP2006523205 A JP 2006523205A JP 2007512719 A JP2007512719 A JP 2007512719A
Authority
JP
Japan
Prior art keywords
queue
queues
egress
tier
ingress
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006523205A
Other languages
English (en)
Inventor
バラクリッシナン,ハリー
デバダス,シュリニヴァス
ミサル,アーバンド
Original Assignee
サンドバースト コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by サンドバースト コーポレーション filed Critical サンドバースト コーポレーション
Publication of JP2007512719A publication Critical patent/JP2007512719A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/43Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6255Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3045Virtual queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/101Packet switching elements characterised by the switching fabric construction using crossbar or matrix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

共有リンクを通じるサービスの待ち行列を選択するための方法。本方法は、複数のイングレス内の待ち行列グループからの各待ち行列を個数「N」のティアのうちの1つのティアに分類することを含む。数「N」は2より大きいか等しい。割り当てられる帯域幅に関する情報は、待ち行列の少なくとも幾つかをティアに分類するために使用される。各ティアには、異なる優先順位が割り当てられる。また本方法は、ティアに分類される待ち行列をより下位の優先順位にマッチさせるより前にティアに分類される待ち行列をより高位の優先順位にマッチさせることによって待ち行列を利用可能なエグレスへマッチさせることも含む。
【選択図】 図14

Description

本発明は、概して帯域幅を共有リンク上に割り当てるための方法とシステムに関し、より特定的には、プロトコル処理を円滑化しかつサービス処理の保証を維持するような方法とシステムに関する。
図1は、ネットワーク・バックボーン上の情報パケットのトラフィックを管理するための典型的なスイッチング・システム10を示す。システム10は、1つまたは複数の入力イングレスI1、I2、I3と、1つまたは複数の出力エグレスE1、E2、E3と、スイッチまたはクロスバー12とを含む。イングレスI1、I2、I3は、スイッチ、ルータ、コンピュータまたはパケットがそれを介してスイッチング・システム10へ入る他のデバイスである。同様に、エグレスE1、E2、E3はコンピュータ、スイッチ、ルータまたはパケットがそれを介してスイッチング・システム10を出る他のデバイスである。図1には3つのイングレスI1、I2、I3及び3つのエグレスE1、E2、E3が描かれているが、スイッチング・システム10には任意数のイングレス及びエグレスを接続することができる。データ・パケットは、トラフィック・ソース14を介してイングレスI1、I2、I3へ入り、トラフィックの出口16を介してエグレスE1、E2、E3から出る。典型的なオペレーションでは、スイッチング・システム10は、イングレスとエグレスとの間に1対1のマッピングが存在するように所定のイングレスを所定のエグレスへ接続する、または、イングレスとエグレスとの間に1対多数のマッピングが存在するように所定のイングレスを1つまたは複数のエグレスへ接続することができる。言い替えれば、スイッチング・システム10を介するデータ転送のあらゆるタイムスロットについて、各エグレスは単一のイングレスからのデータしか受信することができない。但し、一つのイングレスは複数のエグレスへデータを送ることができる。さらに、各イングレスI1、I2、I3はデータ・パケットを格納するための複数の待ち行列を含み、各エグレスE1、E2、E3は複数のバッファFIFO(先入れ先出し)を含む。各タイムスロットで、各イングレス内の単一の待ち行列は1つまたは複数のエグレス内の1つまたは複数のポートへ接続されることが可能である。例えば、所定のタイムスロットの間、イングレスI1内の待ち行列Q2はエグレスE3内のバッファFIFO1に接続されることが可能であり、イングレスI2内の待ち行列Q1はエグレスE1内のバッファFIFO1に接続されることが可能であり、イングレスI3内の待ち行列Q1はエグレスE2内のバッファFIFO3に接続されることが可能である。
概して、図1のシステム10等のスイッチング・システムの目的の一つは、その有益な帯域幅(所謂乏しいリソース)が効率的に使用されるようにスイッチまたはクロスバー12を最大限に利用することにある。スイッチング・システムの第2の目的は、サービス品質(QoS)保証に依存して顧客のためのパケットを提供することであると言える。スイッチング・システムの別の目的は、所定のパケットが上記スイッチング・システムにおいて、システム10を介する送信の前に認容できないほど長時間に渡って待ち行列に入れられないようにすることであると言える。従って、改良された方法及びシステムによりこれらの目的を達成するニーズが存在する。
図1のスイッチング・システム10におけるスイッチまたはクロスバー12を介するデータ転送のためのタイムスロットのサイズは、概して単一のタイムスロット内で送信され得るデータ量を決定する。図1のシステム10等の現時点で実装されているスイッチング・システムでは、一般に、データ転送のタイムスロット・サイズの選択に際して、パケット・サイズが大幅に変わる2つの方法が使用される。第1の方法は、待ち行列内の大部分の情報パケットが所定のタイムスロット間にスイッチまたはクロスバー12を介して伝送され得るに足る大きさのタイムスロット・サイズを使用するものである。しかしながら、このような方法における問題点は、システム10の活用度の低さにある。各タイムスロットは部分的に満たされない可能性があり、故に概して高価である利用可能な帯域幅が未使用状態におかれることになる。
タイムスロット・サイズの選択に使用される第2の方法は、上記第1の方法で使用されるものより小さいタイムスロット・サイズを使用するものである。しかし、この場合、各セグメントが単一のタイムスロット内でスイッチング・システム10に適合するように、タイムスロットより大きいパケットは2つ以上のセグメントに分割されなければならない。この第2の方法は、上述の第1の方法に付随する低活用度の問題を低減させる可能性はあるが、パケットはイングレスI1、I2、I3において複数のセグメントに分けられ(セグメント化され)、次いでエグレスE1、E2、E3において再構築(リアッセンブル)されることを必要とする。このようなセグメント化及びリアッセンブルは、スイッチング・システム10のパフォーマンスを制限する可能性がある。
従って、帯域幅を最大限に活用し、QoS保証を確実に行い、かつパケットがスイッチング・システム内でいつまでも待ち行列に入れられることを防止するように帯域幅を適正に割り当てる、リンク上に帯域幅を割り当てるための方法とシステム、並びに上記方法とシステムが「公正」に動作することを保証するというニーズが存在する。最後に、セグメント化及びリアッセンブルの問題点を発生させることなくタイムスロットを最大限に活用してデータ転送を行う方法とシステムに対するニーズが存在する。
本発明の一実施形態は、共有リンクを通して伝送するパケットを選択するための方法に関する。この実施形態では、本方法は、複数のイングレスの各々における複数の待ち行列の各々において先に出すパケットの優先順位を決定することと、特定のエグレスの宛先とされる各イングレスの待ち行列内の先出しパケットの各グループについて、第1の優先順位を有する先出しパケットを選択することと、第1の優先順位を有しかつ特定のエグレスの宛先とされる選択された先出しパケットの各部分集合について、第2の優先順位を有する先出しパケットを選択することと、各イングレスから共有リンクを通して第2の優先順位を有する選択された先出しパケットを伝送することを特徴とする。
本発明の別の実施形態は、複数のイングレス内の各待ち行列について優先順位を決定するように、但し上記優先順位はデータ転送の所定のタイムスロットに関する瞬時的なものであり、かつ特定のエグレスの宛先とされるパケットを有する各イングレス内の待ち行列の各グループについて第1の優先順位を有する待ち行列を選択し、上記特定のエグレスの宛先とされるパケットを有する第1の優先順位を有する選択された待ち行列の各部分集合について第2の優先順位を有する待ち行列を選択し、各部分集合の第2の優先順位を有する選択された待ち行列を所定のタイムスロットにおいて共有リンクを通して提供するようにマイクロプロセッサに指図する命令を格納するコンピュータ読取り可能媒体である。
本発明の別の実施形態は、共有リンクを通して提供する待ち行列を選択するためのシステムに関する。この実施形態において、本システムは、複数のイングレス内の各待ち行列の優先順位を決定するためのエレメントを特徴とし、上記優先順位はデータ転送の所定のタイムスロットに関する瞬時的なものであり、かつ各イングレス内の待ち行列の各グループの第1の優先順位を有する、特定のエグレスの宛先とされるパケットを有する待ち行列を選択するためのエレメントと、第1の優先順位を有しかつ特定のエグレスの宛先とされるパケットを有する選択された待ち行列の各部分集合の第2の優先順位を有する待ち行列を選択するためのエレメントと、各部分集合の第2の優先順位を有する選択された待ち行列を所定のタイムスロットにおいて共有リンクを通して提供するためのエレメントとを特徴とする。
本発明の別の実施形態は、共有リンクを通して提供する待ち行列を選択するための方法に関する。第1に本方法は、複数のイングレス内の待ち行列グループからの各待ち行列を個数[N」のティアのうちの1つのティアに分類することを含む。各タイムスロットにおいて、またはタイムスロットの部分集合について、各イングレスの仮想出力キュー(VOQ)のカレント状態(故に各イングレスのカレント状態も)がティアにマッピングされる。言い替えれば、各待ち行列に関する特徴は、その待ち行列を待ち行列のティアへ割り当てるために使用される。ティアの数「N」は、2より大きいか等しい。各ティアには、異なる優先順位が割り当てられる。第2に本方法は、下位の優先順位を有するティア内に分類される待ち行列をマッチさせる前に上位の優先順位を有するティア内に分類される待ち行列をマッチさせることによって、待ち行列を利用可能なエグレスへマッチさせることを含む。各タイムスロットでは、待ち行列のティア集合を所与として、本発明のこの実施形態はティア当たり最大のマッチングを生み出す。即ち、「N」個のティアが存在すれば、この実施形態は最高位のティアを始点として、そのティア内に存在するVOQのみを考慮してイングレス及びエグレス間に最大のマッチングを生み出す。次にこの実施形態は、マッチしなかった残りのイングレス−エグレスVOQの中から、次に下位である優先順位のティアにおいて最大のマッチングを生み出す、等々を繰り返す。
A.概説
本発明の実施形態は、データ転送のためのQoS保証を実装しかつ所定のタイムスロットの間にどの待ち行列を提供するかを公正に決定するために使用され得る設定可能な加重された分散スケジューリング方法及びシステムを規定する。
1.システム・アーキテクチャ
図2は、本発明の一実施形態によるシステム100のブロック図を示す。図2のシステム100は、ある実施形態ではチップである幾つかのモジュラ・コンポーネントを含む。図2のシステム100は、1つまたは複数のイングレス・チップ102と、1つまたは複数のエグレス・チップ104と、アービタ・チップ106と、任意のイングレス102を任意のエグレス104へパイプライン110を使用して接続することができる共有スイッチまたはクロスバー・チップまたはリンク108とを含む。さらに各イングレス102は、関連の転送エンジンまたは待ち行列マネージャ112を有する可能性がある。データ・パケットはトラフィック・ソース114からイングレス102へ入り、エグレス・チップ104からトラフィック出力116へ出る。複数のイングレス102は、共有リンク108上で複数のエグレス104へリンクされることが可能である。例えば、ある実施形態では、64個のイングレス102が共有リンク108上で64個のエグレスへリンクされることが可能である。
以下で説明する実施形態は、1つまたは複数のイングレス102を1つまたは複数のエグレス104へ接続する共有リンク108を有するシステムである共有リンク・システムにおいて動作する。システム100を介するデータ転送のためのあらゆるタイムスロットについて、各エグレス104は単一のイングレス102にしか接続され得ないが、単一のイングレス102は1つまたは複数のエグレス104へ接続されることが可能である。従って、本明細書を通じて、「共有リンク・システム」という用語は、1つまたは複数のエグレスが所定のタイムスロットの間にそれを介して単一のイングレスへ接続され得るシステムを指して使用される。同様に「共有リンク」という用語も、この明細書を通じて、データ転送のための各タイムスロットに関して設定可能でありかつ共有リンク・システムにおいてデータ転送のために1つまたは複数のエグレスを単一のイングレスへ接続すべく使用される連結デバイス、スイッチまたはクロスバーを指して使用される。
本発明の分子コンポーネントとしてチップを使用する一実施形態では、各チップは信号処理ユニットとインタフェース・ユニットとを有する集積回路チップであることが可能である。上記信号処理ユニットは、本明細書に記述されているオペレーションを実行するに足る任意の速度で実行されることが可能である。例えばある実施形態では、1GHzのプロセッサがアービタ・チップ106内で使用される。本発明の各モジュールの機能は、ソフトウェアまたはハードウェアで実行されることが可能である。図3Aはレジスタ・ファイル158を有するイングレス・チップ102を描いたものであり、このようなイングレス・チップ102は内部に本発明の機能を実行するハードウェアまたはファームウェア・モジュールを有することが可能である。
各イングレス102へ接続される各トラフィック・ソース114及び各エグレス104へ接続される各トラフィック出力116は、10Gbps等の関連の帯域幅レートを有する。ある実施形態では、イングレス102またはエグレス104を共有リンク108へ接続する各パイプライン110は、トラフィック・ソース114の帯域幅レートまたはトラフィック出力116の帯域幅レートより大きい関連の帯域幅レートを有する。従って、パイプライン110は高速リンクであることが可能である。例えば、イングレス102へ入るトラフィック・ソース114の帯域幅レートが10Gbpsであれば、これに関連づけられる共有リンク108への接続のためのパイプラインは10乃至20Gbpsの帯域幅レートを有することが可能である。このような実施形態では、本発明によるシステム100は、一部にはイングレス102へ、またはエグレス104からの帯域幅レートに比べてリンク108へ/からの高速パイプライン110に起因して、共有リンク108上で帯域幅保証を実現することができる。他の実施形態では、パイプライン110はトラフィック・ソース114またはトラフィック出力116の帯域幅レートと同じ帯域幅レートを有する。
図3Aは、本発明の単一のアービタ・チップ106、イングレス・チップ102及び転送エンジンまたは待ち行列マネージャ112を示す一実施形態のブロック図である。ある実施形態では、アービタ・チップ106は帯域幅アロケータ・モジュール150と、調停モジュール152とを含む。図3Aでは、イングレス102内に、優先順位計算モジュール156と、レジスタ・ファイル158と、メータリング更新モジュール160と、待ち行列長さモジュール162とを含むメータリング・モジュール154が描かれている。ある実施形態では、帯域幅アロケータ・モジュール150及び調停モジュール152は待ち行列マネージャ112が可能であるのと同様にイングレス102内に存在する。図2のシステム100のように共有リンク108へ付着される幾つかのイングレス102を有するシステムでは、複数のイングレス102へサービスを供給すべく単一のアービタ・チップ106が使用されるように、帯域幅アロケータ・モジュール150及び調停モジュール152を別個のアービタ・チップ106内に保有することが望ましい可能性がある。以下、各モジュールの機能について説明する。
図3Aの実施形態は、単一のイングレス102と単一のアービタ・チップ106とを描いている。但し、より典型的には、単一のアービタ・チップ106は、図2のシステム100のような複数のイングレス102を有するシステムにおいて使用される。
システム100の各イングレス102は、複数のバッファ待ち行列を含む。図2は、各々が4つの待ち行列Q1、Q2、Q3、Q4を有するイングレス102を描いているが、各イングレス102内には任意数の待ち行列が存在することが可能である。ある実施形態では、イングレス・チップ102は1024個の待ち行列を含んでいる。各待ち行列には、その待ち行列のためのサービス・クラス(COS)が関連づけられる。各COSは、そのCOSに関連づけられる待ち行列内のパケットに関する異なるサービス・レベルを指す。例えば、図2の各イングレス102における待ち行列Q1はCOS1を有し、待ち行列Q2はCOS2を有し、待ち行列Q3はCOS3を有し、待ち行列Q4はCOS4を有する。異なるCOSを有する待ち行列内のパケットが異なる速度でサービスを供給されるように、COS1は毎秒1ギガバイト(1Gbps)の帯域幅レートに関連づけられることが可能であり、COS2は0.25Gbpsの帯域幅レートを有することが可能であり、等々と続く。データ・パケットが各イングレス102へ入るに伴って、パケットは、そのパケットのCOSに対応する適切な待ち行列内にバッファされる。より良い(またはより高位の)COSを有する待ち行列内のパケットは、より劣る(またはより下位の)COSを有する待ち行列内のパケットより高速でサービスを受ける必要がある。待ち行列内の各パケットは、特定の、但し必ずしも同じではない、エグレスを宛先とされる(即ち、上記パケットはそれがそのエグレスへ送られるように希望していることを示すデータを含む)。各イングレス102に関連づけられる転送エンジン111は、イングレス102へ入るデータ・パケットをイングレス102内の適切な待ち行列へルーティングすることができる。
システム100の各エグレス103は、概して、共有リンク108を介して受信されるパケットを、上記パケットがトラフィック出力116を介して送出される前にバッファする幾つかのFIFO(先入れ先出し)バッファまたはポートを含む。本発明の一実施形態では、単一のチップがイングレス102またはエグレス104の何れかとして機能することができる。このようなチップは、後述するようにイングレス102の機能を実行することが可能なイングレス側と、エグレス104の機能を実行するFIFOを有するエグレス側とを含むことになる。
図3Bは、イングレス102の待ち行列内部のパケットの詳細図を示す。図3Bは待ち行列Q1、Q2及びQ3を有する単一のイングレス102を示しているが、先に述べたように、イングレス102内にはこれより多い数の待ち行列が存在してもよい。図3Bが単純化された視覚形態で描いているように、各待ち行列Q1、Q2、Q3は待ち行列内にバッファされた幾つかのパケットを含む。例えば、待ち行列Q1はパケット170、172及び173を含み、待ち行列Q2はパケット174、176、178及び180を含み、待ち行列Q3はパケット182、184、186、188、190及び192を含む。待ち行列Q1のヘッドにはパケット170が存在し、待ち行列Q2のヘッドにはパケット174が存在し、待ち行列Q3のヘッドにはパケット182が存在する。この実施形態によれば、本発明のシステム100の共有リンク108上へデータが送られる各タイムスロットにおいて、単一のタイムスロットに適合する各待ち行列のヘッドにおける1つまたは複数のパケット(1つまたは複数の先出しパケット)のみが共有リンク108へのアクセスを得るべく競合する資格がある。従って、図3Bの描写の場合、次のタイムスロットでは、パケット170、174及び182しか共有リンク108へのアクセスを求めて競合することができない。タイムスロットは一定の時間単位であり、各タイムスロットにおいて、共有リンク108はデータ転送用に設定されることが可能である。ある実施形態では、タイムスロットは約200乃至650ナノ秒に設定されることが可能であるが、タイムスロットのサイズは異なる実施形態で変わる可能性がある。図示した実施形態では、200乃至650ナノ秒のタイムスロットにおいて、共有リンク108上を約460乃至1,500バイトのデータが転送され得る。
図3Bはまた、イングレス102の待ち行列内の複数のパケットは可変サイズである可能性があり、かつイングレス102内の複数の待ち行列のサイズも変わる可能性があることをブロック形式で示している。例えば、待ち行列Q1におけるパケット170は待ち行列Q2におけるパケット174より大きい、かつまた待ち行列Q3におけるパケット182より大きいパケット・サイズを有する。またさらに、待ち行列Q3におけるパケット182は待ち行列Q2におけるパケット174よりサイズが大きい。このようなパケット・サイズは、バイトまたはビット単位で測定されることが可能である。また図3Bは、この実施形態では共有リンク108を通じたデータ転送のためである単一のタイムスロットのサイズを示している。パケット170は単一のタイムスロットよりサイズが大きいが、パケット174及びパケット182は共に単一のタイムスロットのサイズより小さいか等しく見える。最後に、図3Bは、イングレス102内のある特定の瞬間における各待ち行列のサイズ(Q長さ)を描いている。例えば、待ち行列Q1は待ち行列Q2のQ長さQ2より大きいが待ち行列Q3のQ長さQ3より小さいQ長さQ1を有する。図3Bは、各待ち行列内に少数のパケットしか存在しない単純化されたイングレス102を描いているが、Q長さの概念は示されている。Q長さは、ある特定の瞬間に所定の待ち行列内に格納されているデータ・サイズの尺度であり、よってバイトで測定されることが可能である。但し、図3Bに示す実施形態では、パケットのバッファに使用可能な合計長さ(容量)は各待ち行列で同じであるが、他の実施形態では、これらの長さは変わってもよいことに留意されたい。
2.システム・オペレーションの概説
図4Aは、本発明のオペレーションの一実施形態を示すフローチャートである。概して本発明は、各待ち行列の保証レートを上記待ち行列の待ち行列メトリック情報を基礎として計算することと(ブロック200)、所定のタイムスロットの間の各待ち行列の優先順位を上記待ち行列の保証レートを基礎として計算することと(ブロック202)、所定のタイムスロットの間にサービスする待ち行列を上記各待ち行列の優先順位を基礎として決定すること(ブロック204)を含む。
本明細書を通じて使用されるように、「保証レート」は概して、システムにおいて帯域幅を割り当てるために使用される待ち行列の更新レートを指す。このような保証レートの単位は、例えばGbpsであってもよい。保証レートは、各待ち行列に関連づけられるクレジット値が時間に伴って増大するレートを制御するために使用されることから各待ち行列が利用できる帯域幅を制御する。各イングレスの各待ち行列はそれに関連づけられるクレジット値を有し、上記待ち行列が所定のタイムスロットの間にサービスされなければ、各待ち行列の保証レートは上記待ち行列のクレジット値を上げるために使用されることが可能である。次にクレジット値は、システム内の各待ち行列の優先順位を更新するために使用されることが可能である。本明細書を通じて使用されるように、「優先順位」は、データ転送のためにタイムスロットの間に所定の待ち行列が所定のエグレスとの通信を希望することを指す。従って、概して各タイムスロットの間にサービスされるべき待ち行列は、各タイムスロットの間に各待ち行列について計算される優先順位を基礎として決定される。例えば、所定のエグレスと通信するための高い優先順位を有する待ち行列は、その同じエグレスと通信するための下位の優先順位を有する待ち行列より前にサービスされる。図2の共有リンク108は、優先順位を基礎として、イングレス及びエグレス間の1対1のマッピングを割り当てるように各タイムスロットについて再設定される。従って、保証レートは、各待ち行列がサービスされる頻度、或いは待ち行列の部分集合がサービスされる頻度を間接的に制御する。
帯域幅アロケータ・モジュール150は、この実施形態では、システム100内の各待ち行列の保証レートを計算するために使用される(図4Aのブロック200)。保証レートは、幾つかの方法により、待ち行列長さモジュール162または待ち行列マネージャ112から受信される何らかの待ち行列メトリック情報を使用して計算される。保証レートの計算に使用される待ち行列メトリック情報は、待ち行列のQ長さ(即ちバイト数)または待ち行列へのデータの到着レート(即ち、秒当たりのバイト数)等の待ち行列に関する情報であるが、これらに限定されない。待ち行列マネージャ112は待ち行列へのデータの到着レート情報を計算し、または追跡することが可能であり、待ち行列長さモジュール162は待ち行列のカレント長さまたはサイズを計算することが可能である。保証レートの計算方法については、図5乃至7Bに関連して後に幾つか詳述する。概して、保証レートを計算するために、図3Aの待ち行列長さモジュール162(または待ち行列マネージャ112)は対応するイングレス102の各待ち行列の待ち行列メトリック情報を測定し、これを帯域幅アロケータ・モジュール150へ送る。例えば図3Aは、待ち行列が帯域幅アロケータ・モジュール150へ送られるQ長さ50を描いている。後述する帯域幅割当て方法を使用して、帯域幅アロケータ・モジュール150は次にシステム100の各イングレス102の各待ち行列の保証レートを計算し、この保証レート52を対応するイングレス102へ送る。これらの保証レートは周期的に(即ち必ずしも各タイムスロットではなく)計算されることが可能であり、次いで対応するイングレス102へ周期的に伝達される。
この実施形態では、各イングレス102のメータリング・モジュール154のメータリング更新モジュール160は、次に上記保証レートを使用してイングレス102内の各待ち行列のクレジット値を更新する。ある実施形態におけるメータリング更新モジュール160は各待ち行列のクレジット値を、共有リンク108を通したデータ転送のためのあらゆるタイムスロットの間に更新する。図3Aは、帯域幅アロケータ・モジュール150からレジスタ・ファイル158を介して保証レート52を受信し、次いで更新されたクレジット値54をレジスタ・ファイル158へ送信するメータリング更新モジュール160を描いている。この実施形態では、クレジット値54または上記待ち行列に関する他の情報は、各待ち行列のサービスの優先順位を計算するために使用される。クレジット値はメータリング更新モジュール160において、幾つかの方法に従って更新されることが可能である。概して、所定の待ち行列のクレジット値は各タイムスロット後に増加する。クレジット値の増加は待ち行列の対応する優先順位を上げ、よって上記待ち行列が最終的にサービスされるように幾つかのタイムスロットに渡って上記待ち行列の優先順位が増分される。この実施形態では、待ち行列が所定のタイムスロットの間にサービスされれば、上記待ち行列のクレジット値は、共有リンク108への接続がいつまでも保持されないように低減される(即ち、上記待ち行列の優先順位は下がる)。待ち行列のクレジット値の更新には幾つかの方法を使用可能であり、そのうちの一方法については後に図8に関連してさらに詳しく論じる。
この実施形態では、イングレス102のメータリング・モジュール154の優先順位計算モジュール156は、クレジット値または待ち行列に関する他の情報を使用して各待ち行列が共有リンク108を通してサービスされることを希望する優先順位を計算する(図4Aのブロック202)。図3Aは、レジスタ・ファイル158からイングレス102の待ち行列のクレジット値54を受信し、次に優先順位56を調停モジュール152へ送る優先順位計算モジュール156を描いている。ある実施形態では、各待ち行列の優先順位は各待ち行列のクレジット値と同値である可能性がある。但し他の実施形態では、優先順位は各待ち行列のクレジット値の縮尺版であり、また優先順位は、後に詳述するように、他の特徴に依存して単なる縮尺を超えて変更される場合もある。
この実施形態では、所定のイングレス102からの優先順位56のあるものは、図3Aに示すように調停モジュール152へ送られる。さらに、各エグレス104はそのFIFOの充足状態に関する情報を調停モジュール152へ送る。調停モジュール152は次に、所定のタイムスロットの間に各エグレス104へ接続されるイングレス102を決定する(図4Aのブロック204)。調停モジュール152は、図3Aで分るように出力58を優先順位計算モジュール156へ送り返す。出力58は、イングレス102が所定のタイムスロットの間にどのエグレス104へのアクセスを有するかを示す単なる指定であることが可能である。次にメータリング・モジュール154は、イングレス102が上記タイムスロットの間にアクセスを有するエグレス104を基礎として上記イングレス102内のどの待ち行列にサービスするかを決定することができる。
調停モジュール152における各エグレス104のためのイングレス102の選択は優先順位を基礎とし、この選択プロセスは調停と呼ばれることが可能である。概して、優先順位56は、所定のタイムスロットの間にどのイングレス102をどのエグレス104へ接続するか、及びそのタイムスロットの間にイングレス内のどの待ち行列にサービスするかを決定する。ある実施形態では、タイムスロットの間に所定のエグレス104へ接続するものとして、最上位の優先順位を有する所定のエグレス104を希望している待ち行列を有するイングレス102が選ばれる。さらに、選択されたイングレス102内のエグレス104を希望しかつ最上位の優先順位を有する待ち行列は、イングレス102内の上記タイムスロット間にサービスされる待ち行列である。本発明の様々な実施形態において待ち行列の選択に使用される幾つかの方法については、さらに図9乃至11に関連して後に論じる。何れにしても、イングレス102からエグレス104へのマッピングによるタイムスロットのための共有リンク10の設定は、調停に従う。従って、命令(図示されていない)を含むメッセージは各タイムスロットで共有リンク108へ送られ、共有リンク108が生成すべきイングレス/エグレス間のマッピングが指示される。共有リンク108は次に、上記命令に従って上記タイムスロットのためのイングレス/エグレス間の接続を確立する。
本発明の一実施形態では、最優先レベルは、単一のタイムスロットより大きいパケットをその内部に含む待ち行列のために留保される。例えば図3Bは、パケット170が所定のタイムスロットより大きいサイズを有することを示している。本発明の一実施形態では、システム100の共有リンク108上の接続は、単一のタイムスロットより大きいパケット全体が共有リンク108上で中断されることなく連続して転送され得るように十分な時間期間に渡って維持される。このようにして維持される接続は、パケットがイングレス102において複数のパケットにセグメント化されかつパケット・セグメントが全て共有リンク108上で転送された後にエグレス104でリアッセンブルされる必要のないことを保証する。このようなシステムは、タイムスロットのサイズが適切な時間長に設定されることを許容することによって共有リンク108の活用度を最大化する。即ち、データ転送のためのタイムスロット・サイズは、共有リンク108の活用度を高くするに足る低レベルに設定される。それでもこの本発明方法は、単一のタイムスロットより大きいパケットを転送すべく共有リンク108上の1つまたは複数の接続を維持することによってセグメント化及びリアッセンブルの問題を解決する。
本発明のシステムは、部分パケット変数を使用して、大きすぎて単一のタイムスロットでは共有リンクを通して転送できないようなパケットを示すことができる。このような部分パケット変数は、待ち行列内のサービスされるべきカレント・パケットが大きすぎて単一のタイムスロットではサービスされ得ないことと、パケット全体を転送するに足る数のタイムスロットについて共有リンク108上に接続が維持されるべきであることを表示する。従って、所定の時間にこのような部分パケット変数が待ち行列に関連づけられれば、その待ち行列には最優先レベルが割り当てられることが可能である。
図3Aの待ち行列マネージャ112は概して待ち行列にサービスし、所定のタイムスロットの間に発生するイベントに依存して待ち行列の状態に関する更新されたメッセージを送る。例えば待ち行列マネージャ112は、待ち行列からパケットが送られるとメータリング更新モジュール160へデキュー通知64を送る。これは、デキュー・イベントである。また待ち行列マネージャ112は、パケットが受信されて所定の待ち行列内へバッファされるとメータリング更新モジュール160へエンキュー通知62を送る。これは、エンキュー・イベントである。図3Aは、優先順位計算モジュール156から待ち行列マネージャ112へ送られるデキュー要求60も描いている。このデキュー要求60は、調停プロセスを基礎として所定のタイムスロットにおいてサービスされるべき待ち行列を指示する。従って待ち行列マネージャ112は、デキュー要求60に従って上記待ち行列にサービスすることができる。
従って、待ち行列マネージャ112によって発生されるイベントは先に論じた一連の計算を開始し、待ち行列のクレジット値及びおそらくはQ長さを更新させる。次に、上記クレジット値または上記待ち行列に関連づけられる部分パケット変数等の他の情報を基礎として各待ち行列の優先順位が決定される。各イングレスが各エグレスを希望する優先順位は、優先順位計算モジュール156及び調停モジュール152を使用して決定される。これらの優先順位は、概して、所定のタイムスロットに関して各エグレスに関連づけられるべきイングレスを決定する。
メータリング・モジュール154及び待ち行列マネージャ112の機能がハードウェアにおいて実行される実施形態では、約200ナノ秒のタイムスロット・サイズの場合、先に述べた機能のタイミングは下記のようなものである可能性がある。リンク108の調停及び設定は、共に一定のタイムスロットを基礎として実行される。但し好適には、リンク108の調停は、システムにおける待ち時間に起因して少数のタイムスロット分だけ設定に先行する。従って、調停モジュール152はタイムスロットの最初の約100ナノ秒間で調停を実行することが可能であり、次に各イングレス102へ、特定のタイムスロットでそれが通信するエグレス104を表示するメッセージを送信することができる。上記送信は、メッセージの送信後約300乃至500ナノ秒で発生することが可能である。次に各イングレス102は、アービタ・チップ106に更新された優先順位情報で応答する。さらに、各エグレス104はそのFIFOの充足状態に関する情報を送ることができる。例えば図2は、このような充足状態情報を送ることができるエグレス104とアービタ・チップ106との接続を描いている。従って、リンク108及びパケット転送の実際の設定は、イングレスのためのエグレスを含むメッセージがイングレス102によって受信された後、短時間で(この実施形態では300乃至500ナノ秒後)発生する。
本発明の一実施形態では、各待ち行列の優先順位はあらゆるタイムスロットで更新され、各待ち行列の保証レートはこれより低い頻度で更新される。例えば、保証レートは100個のタイムスロット毎に更新されることが可能である。システムのQoS保証は2つ以上のタイムスロットより成る何らかの識別可能な時間期間に渡って決定され、よって保証レートを使用して制御される帯域幅割当ては、1つの、または数個のタイムスロットではなく平均して所定の複数のタイムスロットに渡って十分なものである必要がある。
図3Aは、本発明の一実施形態によるオペレーションの間にシステム100のモジュール間を流れるデータを描いている。データは、先に記述した情報を表すメッセージまたは信号である。先に述べたように、モジュール間で送信されるメッセージは先行タイムスロットにおいて送られた情報からの更新情報しか包含せず、よって二重のデータ転送が排除されかつモジュール間を転送される情報の量が低減される。さらに、イングレス102からアービタ・チップ106へは、図3Aに示すような別々のメッセージではなく、Q長さ50及び優先順位56を含む単一のメッセージが送られる。さらに、アービタ・チップ106からイングレス102へは、図3Aに示すような別々のメッセージではなく、出力エグレス58及び更新された保証レート52を含む単一のメッセージが送信され得る。
図4Bは、本発明の上記オペレーションの一実施形態を再考するために図4Aをさらに詳しく示したフローチャートである。この実施形態では、帯域幅アロケータ150はブロック402でQ長さ情報を受信する。ブロック404では、帯域幅アロケータ150は待ち行列の保証レートを決定し、これらの保証レートをイングレス・チップ102へ送る。この実施形態では、各待ち行列の保証レートは帯域幅アロケータ150において計算され、100個のタイムスロット毎に一度イングレス・チップ102へ送られてもよい。ブロック406において、メータリング更新モジュール160は上記各待ち行列の保証レートを使用して上記待ち行列のクレジット値を更新する。この実施形態では、クレジット値のこの更新はあらゆるタイムスロットで発生する場合もある。ブロック408では、優先順位計算モジュール156は上記クレジット値または部分パケットが存在するかどうか等の上記待ち行列に関する他の情報を基礎として優先順位を計算する。この優先順位の計算は、あらゆるタイムスロットで発生する場合もある。ブロック410において、優先順位計算モジュール156はイングレスがシステムの各エグレスとの通信を希望する優先順位を決定し、または他の実施形態では、優先順位計算モジュール156は各エグレスについて最も高い優先順位を有する可能性のある複数の待ち行列を選択する。何れにしても、調停モジュール152にはこれらの優先順位を表示する情報が送られる。この行為は、各タイムスロットで発生することが可能である。ブロック412では、調停モジュール152は上記優先順位を使用して各エグレスのためのイングレスを決定し、このような決定はあらゆるタイムスロットで実行される。ブロック414では、優先順位計算モジュール156はイングレスのために選択されたエグレスに従ってあらゆるタイムスロットで待ち行列マネージャ112へデキュー要求を送り、待ち行列マネージャは適切な待ち行列にサービスを供給する。ブロック416では、待ち行列マネージャ112はメータリング更新モジュール160へエンキュー/デキュー情報を送り、ブロック402におけるプロセスの開始が繰り返される。
B.保証レートの計算方法
システム100のイングレス102の待ち行列に関する保証レートの計算に際しては、本発明の範囲内で幾つかの方法を使用可能である。概して、保証レートは帯域幅を割り当てる、故にQoS保証を維持するために使用される。ここでは、帯域幅を保証する4方法、即ち(1)単一の待ち行列について帯域幅を保証する方法、(2)エグレスについて帯域幅を保証する方法、(3)イングレスについて帯域幅を保証する方法及び(4)待ち行列グループについて帯域幅を保証する方法について論じる。図5は、帯域幅を保証するこれらの方法のうちの最初の3方法を描いたものである。
1.待ち行列の帯域幅の保証
イングレス内の特定の待ち行列Qの帯域幅を保証するために、上記待ち行列の保証レートは、幾つかのタイムスロットに関して一定のままであることが可能な適切な値gqに設定される。このような定値gqは、待ち行列へ入るフローが少なくともgqに等しい到着レートを有するという条件で、任意の妥当な長い時間期間に渡って上記待ち行列が取得する平均帯域幅はgqであることを保証する。例えば、ある例では、0.25Gbpsの帯域幅レートを妥当に長い時間期間に渡って待ち行列へ割り当てるために、値gqは0.25Gbpsに設定されることが可能である。図5は、ブロック502における値gqの設定行為を描いている。
ハードウェアにおいて保証レートを計算する一実施形態では、帯域幅アロケータ・モジュール150は単に、任意の所定の待ち行列に関して帯域幅を保証する適切な値をレート・レジスタに設定する。帯域幅アロケータ・モジュール150はレートの値gqを特定の待ち行列の到着レート以下であるように限定することが可能であり、これにより、実行待ちの待ち行列が不当に大きいクレジットを蓄積して帯域幅を浪費する可能性のないことが保証される。
2.エグレスにおける帯域幅の保証
図6Aは、特定のエグレスE1の帯域幅を保証する一実施形態を例示している。このような実施形態では、単一のエグレスE1の帯域幅は、任意の1つまたは複数のイングレスI1、I2からのパケットがエグレスE1へ送信され得るように保証される。図6AのイングレスI1は3つの待ち行列、即ち待ち行列Q1、Q2、Q3を含み、各待ち行列は所定のCOS及び所定のエグレスに関連づけられる。例えば、この実施形態において、パケットは、パケットのCOSだけでなく、パケットの宛先であるエグレスにも依存して待ち行列内にバッファされる。例えば、図6Aの待ち行列Q1はエグレスE1に関連づけられ、かつCOS1を有する。待ち行列Q2はエグレスE2に関連づけられてCOS1を有し、待ち行列Q3はエグレスE3に関連づけられてCOS3を有する。イングレスI2及びI3も同様に、イングレスI1内の待ち行列と同じ関係を有する3つの待ち行列Q1、Q2、Q3でセットアップされる。
本発明のこの実施形態では、保証レートを計算するために、同じエグレスE1に関連づけられかつ同じCOSを有する待ち行列は帯域幅アロケータ・モジュール150へQ長さを伝達する。例えば図6Aでは、イングレスI1、I2及びI3における待ち行列Q1は各々、帯域幅アロケータ・モジュール150へQ長さを伝達する。次に、これらの3待ち行列の保証レートが1つの部分集合またはグループとして決定される。上記待ち行列の保証レートを決定するために、エグレスj(即ちエグレスE1、E2またはE3)へと方向づけられているイングレスi(即ちイングレスI1、I2またはI3)における待ち行列Qの保証レートをgi j,qで表す。このレートgi j,qは、時間と共に変化することが可能である。本方法は、何らかのエグレスjについて一定の時間期間に渡って平均されるFj,q=Σi:inputsi j,q(t)に等しい帯域幅を保証することにより、エグレス・リンクの帯域幅を保証することができる。この例では、iは全てのイングレスまたはイングレスの部分集合に渡って変わる可能性がある。各gi j,q(t)は、時間tにおいてエグレスjに方向づけられているデータを有する関連の待ち行列Qへ割り当てられる、かつイングレスiの各々に、もしあれば各待ち行列Qを含む帯域幅に対応する。本システムは、Fj,qが任意の所定時間に異なるイングレス上へ配分される(即ち、各イングレス内の待ち行列Qに割り当てられる)エグレス帯域幅に値することを保証する。
イングレスiにおける、エグレスjに方向づけられている待ち行列QのQ長さは、Li j,q(t)で表すことができる。これらのQ長さの値は、周期的に帯域幅アロケータ・モジュール150へ伝達される。Fj,qがエグレスjにおいて待ち行列Qに対応するCOSに関して保証される帯域幅であれば、保証レートgi j,q(t)はFj,q/Nとなるように初期設定されることが可能である。但し、Nはこのような待ち行列Qを有するイングレスの数である(この実施形態では、各イングレス内に存在する上記エグレス向けでありかつCOSを有する待ち行列は1つであるが、他の実施形態では上記エグレス向けのデータを有しかつCOSを有する2つ以上の待ち行列Qを使用可能である)。保証レートgi j,q(t)は、後続のタイムスロットにおいて測定されるQ長さLi j,q(t)に依存して、下記のようにリセットまたは再計算されることが可能である。
全てのiについて、

Figure 2007512719
この例における入力は、イングレスの数Nである。Σk:inputsk j,q(t)が0(即ち、全ての待ち行列Qが空)であれば、保証レートgi j,q(t)は待ち行列Qを有する全てのイングレスiについてFj,q/Nに設定される。更新された各保証レートgi j,q(t)は、次に対応するイングレスiへ伝達し返される。ハードウェアの実施形態では、待ち行列Qのレート・レジスタが次に更新される。ソフトウェアの実施形態では、待ち行列Qの保証レート変数gi j,q(t)が更新される。
図6Aの実施形態を使用する特定の一例として、イングレスI1における待ち行列Q1のQ長さLi j,q(t)が200バイトであり、エグレスの帯域幅レートFj,qが0.2Gbpsでありかつ2000バイトに等しい合計Q長さΣk:inputsk j,q(t)を有する待ち行列を有する3つのイングレスが存在するものと仮定する。この例において、待ち行列Q1の保証レートgi j,q(t)は、

Figure 2007512719
である。
図5は、ブロック504における検査でΣk:inputsk j,q(t)が0であれば、ブロック506において各イングレスの保証レートを等値に設定する行為を描いている。ブロック508は、Σk:inputsk j,q(t)が非ゼロであれば、各イングレスの保証レートを個々の計算値に設定する行為を描いている。
図6Bに描いた別の実施形態では、各イングレス内の2つ以上の待ち行列が所定のCOSを有し、かつ同じエグレスへ向かうデータを有する。例えば、図6Bの待ち行列Q1はエグレスE1に関連づけられ、かつCOS1を有する。待ち行列Q5は、イングレスI1内でエグレスE1に関連づけられかつCOS1を有する第2の待ち行列である。同様にイングレスI2も、イングレスI1内の待ち行列と同じ連関を有する5つの待ち行列Q1、Q2、Q3、Q4、Q5でセットアップされる。このような場合、上述の数Nは、所定のCOSを有しかつ同一のエグレスを行先とする待ち行列の数になる。例えば図6Bでは、4つの待ち行列がCOS1を有しかつエグレスE1を行先としている(イングレスI1に2つ、及びイングレスI2に2つ)。このような実施形態では、N=4(所望されるパラメータを有する待ち行列の数)であってN=2(イングレスの数)ではない。
図6Bは、イングレスI1、I2が同じエグレスを行先とするが異なるCOSを有するパケットを有する待ち行列を保有し得ることも示している。例えば図6Bは、待ち行列Q1及び待ち行列Q2が共にエグレスE1を行先とする(エグレスE1に方向づけられているパケットを有する)ものの、異なるCOS、即ち待ち行列Q1ではCOS1及び待ち行列Q2ではCOS2、を有することを示している。上述の計算には、同じCOSを有する待ち行列からの情報のみが使用される。従って、図6Bでは、COS1でエグレスE1を行先とする待ち行列の計算(Σk:inputsk j,q(t))における入力の数Nは4、即ちイングレスI1及びI2の各々における待ち行列Q1及びQ5、である。各イングレスI1、I2における待ち行列Q2は、異なるCOSに起因して上述の計算には使用されない。従って、エグレスの出力帯域幅Fj,qはCOS1にも関連づけられ、別のエグレスの出力帯域幅の量がCOS2に関連づけられることが可能である。
上述の方法は、保証レートを計算するためにQ長さを使用しているが、保証レートの計算には到着レートも使用され得ることは留意されるべきである。このような実施形態では、保証レートを計算するために、到着レート変数が上述のQ長さ変数の方程式及び計算に代入される。このような実施形態では、到着レートの情報は、待ち行列マネージャ112(図3A)からアービタ・チップ106へ送られることが可能である。
3.イングレスにおける帯域幅の保証
図7Aは、特定のイングレスI1の帯域幅を保証する一実施形態を例示している。このような実施形態では、単一のイングレスI1の帯域幅は、イングレスI1内の待ち行列からのパケットがエグレスE1、E2、E3のうちの任意のものへ伝達され得るように保証される。図7AのイングレスI1は6つの待ち行列、即ち待ち行列Q1、Q2、Q3、Q4、Q5、Q6を含み、各待ち行列は所定のCOSに関連づけられる。例えば、図7Aの待ち行列Q1はCOS1に関連づけられる。待ち行列Q2はCOS2に関連づけられ、等々と続く。帯域幅を保証するこの実施形態では、各イングレスI1、I2、I3の待ち行列Q1、Q2、Q3は単一のエグレスに関連づけられる必要はない。例えば、COS1を有する待ち行列Q1は、システムの任意のエグレスに方向づけられているパケットを保有することが可能である。図7Aは、待ち行列Q1におけるエグレスE1を行先とするパケットを描いているが、待ち行列Q1における次のパケットは異なるエグレスに方向づけられている可能性もある。しかしながら別の実施形態では、待ち行列Qは、待ち行列Q内にバッファされるパケットの全てがそのエグレスに方向づけられるように所定のエグレスに関連づけられる場合もある。
この実施形態におけるシステム及び方法は、特定のイングレスの帯域幅を保証する。このケースでは、イングレスi(または所定のCOSを有するイングレス内の待ち行列の部分集合)について何らかの時間tに渡って平均されるEi q=Σj:outputsi j,q(t)に等しい帯域幅が保証される。この実施形態では、あるイングレスについてEi qに等しい帯域幅が保証され、このような帯域幅Ei qは異なる複数のエグレスjに渡って均一または不均一に配分されることが可能である。対応する待ち行列の保証レートgi j,q(t)は、特定の待ち行列が任意の所定時間において1つのエグレスに方向づけられているデータ・パケットを保有する場合もあれば保有しない場合もあることから、合計がEi qになる定数には設定され得ない。図7Aにおいて、全てCOS1を有する待ち行列Q1、Q3及びQ5は帯域幅アロケータ・モジュール150へQ長さを送り、次いでこれらの待ち行列の各々のレートがグループまたは部分集合として決定され、イングレスI1へ送り返される。
この実施形態では、保証レートは、エグレス帯域幅の実施形態の場合のようにQ長さを基礎として設定される。Q長さLi j,q(t)は、所定のイングレスI1におけるエグレスjに対応する所定のCOSにおける各待ち行列について決定される。この実施形態では、これらのLi j,q(t)は、エグレスの帯域幅を保証する方法の場合とは異なり、単一のイングレス内で局部的に利用可能であり得る。保証レートgi j,q(t)は、Ei q/Mに初期化されることが可能である。但し、Mは所定のCOSを有する待ち行列の数である。ある実施形態では、単一のイングレス内に、各々が所定のエグレスに関連づけられかつ所定のCOSを有する複数の待ち行列が存在することが可能である。別の実施形態では、1つのイングレス内に、所定のエグレスに関連づけられかつ所定のCOSを有する単一の待ち行列Qしか存在することができない。さらに他の実施形態では、イングレス内の待ち行列は各々関連づけられたCOSを有することが可能であるが、これらの待ち行列は特定のエグレスに関連づけられなくてもよい。何れにしても、保証レートgi j,q(t)は後続のタイムスロットにおけるQ長さLi j,q(t)に依存して、下記のようにリセットまたは計算されることが可能である。
全てのjについて、
Figure 2007512719
Σk:outputsi k,q(t)が0であれば、gi j,q(t)は全ての待ち行列についてEi q/Mに設定される。更新された各保証レートgi j,q(t)は次に、対応するイングレスiへ伝達し返される。ハードウェアの実施形態では、待ち行列Qのレート・レジスタが次に更新される。ソフトウェアの実施形態では、待ち行列Qの保証レート変数gi j,q(t)が更新される。
図7Aの実施形態に関する特定の一例として、Q長さLi j,q(t)が100バイトであり、イングレスの帯域幅レートが0.5GbpsでありかつイングレスI1におけるCOS1を有する3つの待ち行列が1000バイトに等しい合計Q長さΣk:intputsi k,q(t)を有するものと仮定する。この例において、待ち行列Qの保証レートgi j,q(t)は、
Figure 2007512719
である。
図7Aを使用するこの例では、イングレスI1はCOS1を有する3つの待ち行列Q1、Q3、Q5を有するが、各待ち行列Q1、Q3、Q5は異なるエグレスに関連づけられる。例えば、待ち行列Q1はエグレスE1に関連づけられ、待ち行列Q3はエグレスE2に関連づけられる。但し、別の実施形態では、イングレスI1は同じCOSを有しかつ同じエグレスに関連づけられる複数の待ち行列を有することも可能である。さらに別の実施形態では、イングレスI1内の待ち行列は特定のエグレスに関連づけられなくてもよいが、関連のCOSを保有してもよい。
図5は、ブロック510で検査されたΣk:outputsi k,q(t)が0であれば、ブロック512において各エグレスの保証レートを等値に設定する行為を描いている。ブロック514は、Σk:intputsi k,q(t)が非ゼロであれば、各待ち行列の保証レートを個々の計算値に設定する行為を描いている。
上述の方法は、保証レートを計算するためにQ長さを使用しているが、保証レートの計算には到着レートも使用され得ることは留意されるべきである。このような実施形態では、保証レートを計算するために、到着レート変数が上述のQ長さ変数の方程式及び計算に代入される。このような実施形態では、到着レートの情報は、待ち行列マネージャ112(図3A)からアービタ・チップ106へ送られることが可能である。
4.待ち行列グループの帯域幅の保証
図7Bは、任意の待ち行列グループであることが可能な待ち行列グループの帯域幅を保証する一実施形態を例示している。このような実施形態では、待ち行列が異なるイングレス内に存在しかつ異なるエグレスに方向づけられているパケットを有する可能性があるような待ち行列グループの帯域幅を保証することができる。さらに、グループ内の待ち行列は同じCOSを有する場合も、異なるCOSを有する場合もある。帯域幅の合計量は、待ち行列のQ長さを基礎として、または他の実施形態ではデータの待ち行列までの到着レートを基礎としてこれらの待ち行列に分配されることが可能である。
この実施形態の一例として図7Bを参照すると、帯域幅が保証される待ち行列グループは、イングレスI1における待ち行列Q1及びQ3と、イングレスI2における待ち行列Q1、Q4及びQ6とを含む。このグループにおける待ち行列は同じエグレスを行先とせず、同じCOSを保有しない。例えば、イングレスI1における待ち行列Q1はエグレスE1のポート1を行先としかつCOS1を有するデータを含み、イングレスI1における待ち行列Q3はエグレスE2のポート1を行先としかつCOS3を有するデータを含む。イングレスI2における待ち行列Q1はエグレスE1のポート1を行先としかつCOS1を有するデータを含む。同じく上記待ち行列グループ内に存在するイングレスI2における待ち行列Q4及びQ6も、この実施形態では任意の特徴を有する。
本発明のこの実施形態では、保証レートを計算するために、任意の待ち行列グループに関連づけられる待ち行列は帯域幅アロケータ・モジュール150へQ長さを伝達する。例えば図7Bでは、イングレスI1における待ち行列Q1及びQ3及びイングレスI2における待ち行列Q1、Q4及びQ6は各々、帯域幅アロケータ・モジュール150へQ長さを伝達する。次に、これらの5待ち行列の保証レートが1つの部分集合またはグループとして決定される。各待ち行列の保証レートを決定するために、N個の待ち行列より成るグループにおける待ち行列Qの保証レートをgi qで表す。このレートgi qは、時間と共に変化することが可能である。本方法は、一定の時間期間に渡って平均されるFARB=Σi:intputsi q(t)に等しい帯域幅を保証することにより、待ち行列グループの帯域幅を保証することができる。この例では、iはN個の待ち行列より成るグループにおける待ち行列の各々に渡って変わる。各gi q(t)は、時間tにおいて関連の待ち行列Qへ割り当てられる帯域幅に対応する。本システムは、FARBが任意の所定時間にN個の待ち行列より成るグループにおける異なる待ち行列上へ配分される帯域幅に値することを保証する。
N個の待ち行列より成るグループにおける待ち行列QのQ長さは、Li q(t)で表すことができる。これらのQ長さの値は、周期的に帯域幅アロケータ・モジュール150へ伝達される。FARBがN個の待ち行列より成るグループに関して保証される帯域幅であれば、保証レートgi q(t))はFARB/Nとなるように初期設定されることが可能である。但し、Nは待ち行列グループにおける待ち行列の数である。保証レートgi q(t)は、後続のタイムスロットにおいて測定されるQ長さLi q(t)に依存して、下記のようにリセットまたは再計算されることが可能である。
各待ち行列について、

Figure 2007512719
この例における入力は、グループ内の待ち行列の数Nに渡って変わる。Σi:intputsi q(t)が0(即ち、グループ内の全ての待ち行列Qが空)であれば、保証レートgi q(t)はグループ内の全ての待ち行列についてFARB/Nに設定される。更新された各保証レートgi q(t)は次に、図7Bが描くように待ち行列に対応するイングレスへ伝達し返される。ハードウェアの実施形態では、待ち行列Qのレート・レジスタが次に更新される。ソフトウェアの実施形態では、待ち行列Qの保証レート変数gi q(t)が更新される。
図7Bの実施形態を使用する特定の一例として、イングレスI1における待ち行列Q1のQ長さLi q(t)が800バイトであり、待ち行列グループの帯域幅レートFARBが0.8Gbpsでありかつ上記グループには2000バイトに等しい合計Q長さΣi:intputsi q(t)を有する5つの待ち行列が存在するものと仮定する。この例において、イングレスI1における待ち行列Q1の保証レートgi q(t)は、
Figure 2007512719
である。
上述の方法は、保証レートを計算するためにQ長さを使用しているが、保証レートの計算には到着レートも使用され得ることは留意されるべきである。このような実施形態では、保証レートを計算するために、到着レート変数が上述のQ長さ変数の方程式及び計算に代入される。このような実施形態では、到着レートの情報は、待ち行列マネージャ112(図3A)からアービタ・チップ106へ送られることが可能である。
C.クレジット値の更新方法
図8には、本発明の一実施形態による、所定の待ち行列のクレジット値を更新するための一方法がブロック形式で描かれている。先に述べたように、サービスされない待ち行列のクレジット値は概して各タイムスロット後に増加し、よってこれらの待ち行列の優先順位は上がる。同様に、サービスされる待ち行列はそれがサービスされるタイムスロット後には低減された関連のクレジット値を有し、よってその待ち行列の優先順位は下がる。ある実施形態では、本発明のオペレーションより前の各クレジット値の初期値は0であることが可能である。イングレスの各待ち行列のクレジット値は、概してタイムスロット毎に更新される。従って、1つの待ち行列がサービスされた後、クレジット値はそのカレント値(最初は0であるが、オペレーションの開始後、クレジット値のカレント値は大規模な正の数または負の数になる可能性がある)から減らされる可能性がある。クレジット値は、メータリング・モジュール154のメータリング更新モジュール160において、帯域幅アロケータ・モジュール150から受信される待ち行列の保証レート52を使用して更新されることが可能である。定常状態のシステムでは、全ての待ち行列のクレジット値は合計0になるが、これは、これらの待ち行列が平均して所望される帯域幅レートを受信していることを表す。
図8は、本発明の一実施形態において所定のタイムスロットの間にイングレス内の単一の待ち行列について発生し得る3つの可能イベント800を描いている。発生する可能性のあるエンキュー・イベントは、データ・パケットが待ち行列に入ることを意味する。発生する可能性のあるデキュー・イベントは、待ち行列がサービスされてパケットが上記待ち行列から共有リンクへ送られたことを意味する。第3のイベントは増分イベントであり、この実施形態では各タイムスロットの間に発生する。単一のタイムスロットの間、1つの待ち行列について図8における3つのイベントの各々が発生する可能性がある。この実施形態における増分イベントの場合、クレジット値は、図8のブロック802に示すように待ち行列の保証レートをカレント・クレジット値へ加算することによって増分される。ブロック804及び806に示すように、新しいクレジット値が待ち行列の最大限度(上記待ち行列のCOSを基礎とする可能性がある)より大きければ、クレジット値は上記待ち行列の最大限度にリセットされる。ある実施形態では、増分イベントは各タイムスロット間に発生し、よって各待ち行列は各タイムスロット後にその関連のクレジット値だけ増分される。
待ち行列のクレジット値の最大限度は、低いCOSを有する待ち行列のクレジット値が大きくなりすぎないように防止する。従って、これらの待ち行列の優先順位もキャップされることが可能である。これは、低いCOSを有する待ち行列がより大きいCOSを有する待ち行列と同じレートでサービスされないことを保証する。
イベントがデキュー・イベントであれば、この実施形態では待ち行列のQ長さが小さくなり、よって待ち行列のQ長さは、ブロック810に示すように更新されることが可能である。サービス待ち行列の先頭には1つまたは複数の新しいパケットが入り、ブロック812に示すように上記1つまたは複数のパケットのサイズは更新されることが可能である。さらに、新しいパケットが所定のタイムスロットより大きければ、ブロック814に示すように部分パケット変数が更新される。部分パケット変数は、共有リンク108への通信が一旦開始されると、それは単一のタイムスロットより大きいパケットが中断されることなく共有リンク108を通して転送され得るようにその待ち行列に渡って持続されなければならないことを表示する。次に、待ち行列のクレジット値は、ブロック816に示すように減らされることが可能である。ある実施形態では、クレジット値は送られるパケット数(即ち、1つのタイムスロットの間に2つ以上のパケットが送られれば)、または上記タイムスロットの間に送られるバイト数の関数だけ減らされる。別の実施形態では、クレジット値は単一のタイムスロットにおいて送られることが可能なデータ量(即ちバイト数またはビット数)だけ減らされることが可能である。こうしてクレジット値は、帯域幅が他の待ち行列に配分し直され得るように適切に減らされる。この実施形態では、タイムスロット後は増分イベントも発生し、よってクレジット値はデキュー・イベントで(例えば)単一のタイムスロット間に送信され得るバイト数だけ減らされ、次に増分イベントで待ち行列の保証レート分が増分される。ブロック818における検査で更新されるクレジット値が、待ち行列のCOSを基礎とすることが可能な待ち行列の最小限度より小さければ、クレジット値はブロック820で上記待ち行列の最小限度にリセットされる。
最低クレジット値は、所定のCOSを有する待ち行列の優先順位が小さくなりすぎないことを保証するために使用される。これは、待ち行列が十分な頻度でサービスされないことを防止する。
イベントがエンキュー・イベントであれば、待ち行列のQ長さがゼロであると表示されていたかどうかの決定が下される(ブロック830)。待ち行列のカレントQ長さがゼロであれば、先行するタイムスロットの間には上記待ち行列内にパケットが存在していない。エンキュー・イベントの間、待ち行列にはパケットが入っていることから、上記待ち行列のパケット・サイズは、上記待ち行列の部分パケット変数と共に更新される必要がある(ブロック832及び834)。Q長さが非ゼロであれば、上記待ち行列の先頭にパケットが存在し(かつ先行するタイムスロットにも存在していた)、パケット・サイズ及び部分パケット変数は先行するタイムスロットの間に既に設定されている。図8のブロック836は、エンキューされるデータ・パケットを基礎としてQ長さを更新する行為を表示している。増分イベントは、デキュー・イベントがそうである可能性があると同様に、エンキュー・イベントと同じタイムスロットの間に発生することが可能である。
D.待ち行列優先順位の決定方法
待ち行列のクレジット値が更新された後、各イングレスにおける各待ち行列のエグレスとの接続の必要性を表示する優先順位が決定される。先に説明しかつ後に詳述する通り、これらの優先順位はイングレスとエグレスとの間の共有リンク108のマッピングを計算するために使用されることが可能である。
ある実施形態では、待ち行列の優先順位は0から15までの16のポイント・レベルでスケーリングされることが可能である。この実施形態では、待ち行列の優先順位はこのスケーリング・レベルで待ち行列のクレジット値から決定される。例えば、所定の待ち行列のクレジット値が1Gbpsのレベルにまで増えていれば、上記待ち行列の優先順位はレベル5に設定されることが可能であり、第2の待ち行列のクレジット値が2Gbpsであれば、第2の待ち行列の優先順位はレベル10に設定されることが可能である。この実施形態では、負のクレジット値は0または1等の低い優先順位に設定される。このような実施形態では、最大の優先順位を有する待ち行列は所定のタイムスロットの間にサービスされる待ち行列である。クレジット値の優先順位への変換は、イングレス102からアービタ・チップ106へ送られるデータ量を最小限に抑えることができる。例えば、クレジット値の大きさは1,000,000,000を超える場合があるが、このようなクレジットに相当する優先順位は10にすることができる。優先順位が16のポイント・スケールでスケーリングされれば、ハードウェアの実施形態では優先順位に4ビット・レジスタの使用が可能である。
クレジット値の更新に関連して先に述べたように、所定の待ち行列のクレジット値は上記待ち行列のCOSに依存して制限されることが可能である。例えば、COS1を有する待ち行列は、16ポイント・スケールでの最小優先レベル5に相当し得る所定の最小クレジット値に制限されることが可能である。同様に、COS8を有する待ち行列は、16ポイント・スケールでの最大優先レベル12に相当し得る所定の最大クレジット値に制限されることが可能である。
0乃至15の16ポイント優先順位スケールを使用する実施形態では、優先順位0は空の待ち行列のために留保され、よって共有リンク108上で転送するパケットを保有しない。同様に、最大優先順位15は部分パケットのために留保されることが可能である。先に説明したように、パケットが大きすぎて共有リンク108上を単一のタイムスロットで転送することができなければ、上記待ち行列に部分パケット変数が関連づけられる。上記パケットを有する待ち行列が最終的に共有リンク108への接続を達成すると、上記待ち行列が引き続き共有リンク108へ接続されかつ上記パケットがセグメント化及びリアッセンブルなしに共有リンク108上で継続して転送され得るように、その待ち行列には次のタイムスロットにおいて最大の優先順位が設定される。
下記の表1は、待ち行列のクレジット値から優先順位への変換の別の実施形態を示す。この実施形態では、クレジット値から優先順位への変換はクレジット値から優先順位への単一のスケーリングを超えるスケーリングを包含する可能性がある。他に、待ち行列が空であるかどうか、及び待ち行列が過剰にサービスされているかどうか等の待ち行列情報も考慮されることが可能である。従って、表1は、幾つかの条件及びこれらの条件のうちの1つが満たされれば待ち行列に割り当てることができる優先順位を含んでいる。この実施形態では、各待ち行列は、先に述べたようにそれに関連づけられるクレジット値C(q)を有する。スケーリング係数Sは、より大きいクレジット値をより小さい優先順位へスケーリングするために使用される定数である。
Figure 2007512719
表1における条件1が示すように、この実施形態では、待ち行列におけるパケットが先行するタイムスロットからの部分パケットであれば、待ち行列の優先順位は最大優先順位MAXPRIに設定される。0乃至15の16ポイント・スケールでは、MAXPRIは15である。このようにMAXPRIを割り当てられる部分パケットは、ある実施形態ではそれに関連づけられる部分パケット変数を有する。逆に、空である待ち行列には、表1の条件5が示すように優先順位0が割り当てられる。これは、優先順位0を有する待ち行列はその所定のタイムスロットではサービスされないことを保証する最小の優先順位である。
表1の条件5は、当てはまれば優先順位0(または最小優先順位)を設定する第2の条件を有する。クレジット値C(q)が待ち行列のシェーピング限界Slimitより小さければ、優先順位は0に設定される。シェーピング限界Slimitは、ある時間期間に渡って待ち行列が過大な帯域幅を受信しないように優先順位をスケーリングするために使用されるパラメータである。例えば、保証レートは待ち行列が受信すべき最小レートFminである。これに対して最大レートFmaxは、待ち行列が受信すべき最大レートであると言える。当然ながら、これらのレートが達成されるかどうかを決定するために、単一のタイムスロットを超える識別可能な時間長に渡って受信される帯域幅が測定されなければならない。例えば、50マイクロ秒の時間期間が最小レートFminを達成すべき時間期間である可能性があり、最大レートFmaxは超過されるべきではない。例えば50マイクロ秒の時間期間は、各々が500ナノ秒である100個のタイムスロットに等しい可能性がある。この実施形態では、シェーピング限界Slimitは、
limit=(Fmin−Fmax)*時間期間
となるように設定されることが可能である。
minはFmaxより小さくなることから、シェーピング限界Slimitは概して負の数になる。クレジット値は、その待ち行列が最近サービスされ、よって上記待ち行列が既にその時間ポイントにおけるその保証された帯域幅より多くを受信している場合にのみ負になる。負のクレジット値の大きさが大きいほど、対応する待ち行列はより多くをサービスされていて、上記待ち行列はその保証された帯域幅をより多く超過している。このような場合には、表1の条件5が示すように、待ち行列の優先順位はシェーピング限界Slimitを使用して0にされることが可能である。時間期間当たりのバイト数に変換されたクレジット値C(q)がシェーピング限界Slimitより小さければ、この実施形態では優先順位が0に設定され、よって上記待ち行列は後続のタイムスロットにおいてサービスされないことが保証される。変換されたクレジット値C(q)がシェーピング限界Slimitより小さければ、上記待ち行列は既にその時間期間に渡って許容される最大帯域幅を超過しており、故に優先順位は0に設定される。このようにして、待ち行列について達成されることが可能な最大帯域幅は、所定の時間期間に渡って制限されることが可能である。但し、ある時間期間に渡って待ち行列にその最大帯域幅を超過させることが所望されれば、上記待ち行列のクレジット値は、規模の大きい負のクレジット値が上記待ち行列に対する頻繁なサービスを防止しないように周期的に0に設定されることが可能である。
表1の条件2に関して言えば、イングレスは優先転送待ち行列である待ち行列によってセットアップされることが可能である。このような待ち行列は、クレジット値に関わらず上記イングレスの他の待ち行列より前にサービスされる待ち行列である。優先転送待ち行列は、イングレスにおいて、所定のパケットが可能な限り迅速に転送されることを保証するために使用されることが可能である。このような場合、パケットは優先転送待ち行列内にバッファされる。条件2に関して表1が示すように、このような優先転送待ち行列には、それがパケットを含んでいれば(即ち、上記待ち行列が空でなければ)優先順位MAXPRI−1が設定される。優先順位MAXPRI−1は、同じエグレスを希望する待ち行列が優先順位MAXPRIを保有しない限り上記待ち行列がサービスされる可能性のあることを保証する。同様に、2つの待ち行列がMAXPRI−1を有することがあるが、この場合は、後述するようにこれらの2待ち行列間の繋がりを断つ必要がある。MAXPRI−1は、0乃至15の16ポイント・スケールでは14である。
表1の条件3は、クレジット値が優先順位にスケーリングされる典型的な条件を示している。概して、待ち行列が部分パケットを保有しなければ、上記待ち行列は優先転送待ち行列ではなく、かつ上記待ち行列のクレジット値C(q)は負ではないため、上記待ち行列の優先順位は、上記待ち行列のクレジット値C(q)をスケーリング係数Sで除することによって計算されることが可能である。優先順位はスケーリング係数で除したクレジット値C(q)を四捨五入したものにすることが可能であり、よって数字6.4は四捨五入により優先順位6となる。スケーリング係数Sの使用は、線形スケーリングを含意する。但し、スケーリングが線形である必要はなく、非線形であってもよい。さらに、ルックアップ表または一連の「if,then」判定は、クレジット値を基礎として優先順位を決定するために使用されることが可能である。優先順位を確立されたスケール(0乃至15スケール等)の限度内に維持するために、待ち行列の優先順位は、それが部分パケットを含んでいなければ最大レベルMAXPRI−1に設定されることが可能である。従って、表1の条件3は、このような待ち行列の優先順位としてMAXPRI−1またはC(q)/Sの小さい方を取ることを指示している。
表1の条件4は、待ち行列が空でありかつ条件5が当てはまらなければ(即ち、クレジット値C(q)がシェーピング限界Slimitより小さくなければ)、待ち行列の優先順位は最小優先順位になることを示している。表1は、この最小優先順位を1であるとしている。当然ながら、待ち行列の優先順位は、条件3が示すようにクレジット値C(q)が正であればより大きくなる可能性がある。但し、待ち行列が空でなく、しかも条件5が存在しなければ、条件4は最小優先順位が設定されることを示す。
待ち行列のクレジット値は、大幅に変わる可能性がある。これは、何千万である場合もあれば、何千万規模の負の量である場合もある。クレジット値から優先順位への変換の一例として、待ち行列の保証レートは0.0005Gbpsまたは毎秒500,000バイト(bps)であるものと仮定する。従って、待ち行列がサービスされないタイムスロットが経過する毎に、上記待ち行列に関連づけられるクレジット値は500,000bpsずつ増える。この例では、スケーリング係数Sは1,000,000である。従って、待ち行列のクレジット値が12,000,000の値まで増えれば、上記待ち行列の優先順位は12に設定される(上記待ち行列が優先転送待ち行列でなく、かつ上記待ち行列が部分パケットを含まないものと仮定した場合)。待ち行列のクレジット値が−5,000,000であれば、上記待ち行列の優先順位は1に設定される(表1の条件1、2または5に当てはまらない場合)。
E.待ち行列サービスの選択方法
各待ち行列の優先順位が決定されると、複数の優先順位を使用して、あるタイムスロットのイングレス及びエグレス間の共有リンク108上のマッピングが計算される。図9は、所定のタイムスロットの間にサービスされる待ち行列を選択する単純化された一実施形態を示す。図9は、その各々が4つの待ち行列を有する2つのイングレスI1、I2を描いている。各待ち行列Q1、Q2、Q3、Q4内には、待ち行列のCOS及び待ち行列の先頭におけるパケットが描かれている。待ち行列の先頭におけるパケットの各々は、任意の所定のタイムスロットの間に共有リンク108へのアクセスを求めて競合する。例えば図9では、エグレスE1に方向づけられているパケットが各待ち行列Q1の先頭に存在し、エグレスE1に方向づけられているパケットが各待ち行列Q2の先頭にも存在し、かつエグレスE2に方向づけられているパケットが待ち行列Q3及び待ち行列Q4の各々の先頭に存在する。
図9は、待ち行列Q1、Q2、Q3、Q4の各々について優先順位P11、P12、P21及びP22が計算済みであることを示している。ある実施形態では、優先順位の計算及び待ち行列の選択はタイムスロット毎に行われる。従って、任意の所定の瞬間における待ち行列先頭の(1つまたは複数の)パケットの優先順位は、所定のタイムスロットの間に共有リンク108へのアクセスを求めて競合するものは待ち行列の先頭における(1つまたは複数の)パケットだけであることから上記待ち行列自体の優先順位に似ている。従って、本明細書を通じて、ある待ち行列の瞬間的優先順位は、上記待ち行列の先頭における(1つまたは複数の)パケットの優先順位と同義と考えることができる。さらに、「瞬間的」である優先順位は、何らかの有限持続時間を有する時間における瞬間である所定のタイムスロットの優先順位を指すが、この優先順位は上記所定のタイムスロットに続くタイムスロットにおいて変わる場合もあれば、変わらない場合もある。
図9において、各々が4つの待ち行列Q1、Q2、Q3、Q4を有する2つのイングレスI1、I2は共有リンク108上でエグレスE1及びE2へ接続可能である。イングレス及びエグレス間のマッピングを選択するための2レベル・プロセスは、下記のように使用されることが可能である。第1のレベルでは、特定のエグレスを行先とする各イングレス内の各待ち行列グループについて、第1の瞬間的優先順位が選択される。この第1の選択レベルは、イングレス内部で優先順位計算モジュール156(図3A)によって実行されることが可能である。例えば、図9のイングレスI1の場合、待ち行列Q1及び待ち行列Q2は共にエグレスE1を行先とするパケットを含んでいる。これらの2待ち行列Q1、Q2の優先順位を基礎として、これらの待ち行列のうちの第1の優先順位を有する一方が選択される。例えばある実施形態では、関連づけられるより高い優先順位を有する待ち行列が選択される。同様に、イングレスI2においても待ち行列Q1及びQ2は共にエグレスE1を行先とするパケットを含み、これらの2待ち行列から同じく第1の優先順位を有する待ち行列が選択される。待ち行列の選択に際しては、ある実施形態では待ち行列のCOSは無視される点に留意することには意義がある。恐らく待ち行列のCOSは、上記待ち行列の優先順位を決定する際に既に使用されている。また図9は、各イングレスI1、I2におけるエグレスE2に方向づけられているパケットを有する(第1の優先順位を有する)待ち行列の選択を描いている。図9に示すように、待ち行列の番号、イングレスの番号及び第1のレベルにおいて第1の優先順位を有する選択された各待ち行列の優先順位レベルの表示は、アービタ・チップ106の調停モジュール152へ送られる。
2レベル・プロセスにおける待ち行列選択の第2のレベルは、調停モジュール152内で発生する。この第2のレベルでは、イングレスI1、I2から受信された、第1の優先順位を有する待ち行列の部分集合から第2の優先順位を有する待ち行列が選択される。この第2の選択レベルは、各イングレスが各エグレスとの接続を希望する優先順位を再検討し、各イングレスのためのエグレスを選択する。一例として、図9を使用し、待ち行列Q1がイングレスI1において優先順位P11=12を有し、エグレスE1に関する第1の選択レベルにおいてイングレスI1内で選択されるものと仮定する。同様に、待ち行列Q2がイングレスI2において優先順位P12=7を有し、エグレスE1に関する第1の選択レベルにおいてイングレスI2内で選択されるものと仮定する。これらの2つの待ち行列、優先順位及び所望されるエグレスは、調停モジュール152へ伝達される。待ち行列選択の第2のレベルでは、調停モジュール152がこれらの待ち行列(共にエグレスE1に方向づけられているパケットを含む)から第2の優先順位を有する待ち行列を選択する。例えば、ある実施形態では、上記エグレスに対して最も高い優先順位を有する待ち行列が選択される。例えばこの例では、イングレスI1からの待ち行列Q1はエグレスE1に対してイングレスI2からの待ち行列Q2よりも高い優先順位を有する(即ち、優先順位12は優先順位7より高い)。従って、この第2のレベルが、所定のタイムスロットの間に各イングレスが接続されるエグレスを決定する。
従って、調停モジュール152ではN×M行列の優先順位が使用されることが可能である。但し、Nはイングレスの数であり、Mはエグレスの数である。例えば、調停モジュール152は各イングレスから、第1の選択レベルにおいて決定された、イングレスが各エグレスを希望する最大優先順位を受信することができる。次にこれらの優先順位は、第2の選択レベルにおいて各エグレスに対するイングレスを選択できるようにN×M行列を満たす。図9が描くように、各イングレスにはメッセージが送られ、そのイングレスに、もしあればそれがタイムスロットの間にアクセスを有することになるエグレスが通知される。イングレスは次に、決定されたエグレスのために自らが選択した待ち行列をパケット転送のための共有リンク108へ接続することができる。
この第2の待ち行列選択レベルの間は、単一のイングレスが、異なるエグレスに方向づけられていてこれらのエグレスに対して最も高い優先順位を有するパケットを有する2つ以上の待ち行列を含むことができる点に留意すべきである。実施形態によっては、あるイングレスの単一の待ち行列はタイムスロットの間に単一のエグレスにしか接続され得ないことから(本発明のこの実施形態における物理的限定)、共有リンク108へアクセスするためにこれらの待ち行列が選択されることはない。このような状況においては、イングレス内の複数の待ち行列から最も高い優先順位を有する待ち行列が選択され、その待ち行列に対するエグレスはその最も高い優先順位に従って決定される。これで上記イングレスは、少なくともそのタイムスロットに関しては他のエグレスとの接続に使用できなくなり、このイングレスからの優先順位は、このタイムスロットのための第2の選択レベルにおける残りの待ち行列選択に関して無視される可能性がある。図9からの一例として、イングレスI1からの待ち行列Q1が優先順位P11=12を有し、かつ調停モジュール152内の全てのイングレスでエグレスE1に対し最も高い優先順位であるものと仮定する。さらに、イングレスI1からの待ち行列Q3が優先順位P21=10を有し、かつ全てのイングレスでエグレスE2に対し最も高い優先順位であるものと仮定する。この例では、イングレスI1からの待ち行列Q1はイングレスI1からの待ち行列Q3より高い優先順位を有し(12は10より大きい)、故にエグレスE1とのアクセスにはイングレスI1からの待ち行列Q1が選択されることになる。イングレスI1からの残りの待ち行列は、その所定のタイムスロットの間は共有リンク108への接続を利用することができなくなる。従って、イングレスI1からの待ち行列Q3は上記所定のタイムスロットを利用できなくなり、エグレスE2に対しては異なるイングレスからの異なる待ち行列が選択されなければならなくなる。
1つのイングレスまたは調停モジュール152の何れかで2つ以上の優先順位が等しい場合には、繋がりを絶つ方法が必要とされる可能性がある。このようなタイ・ブレーキングは、ランダムな選択、ラウンドロビン選択を使用して、または他の実施形態ではサービスされる頻度が最も低い待ち行列を使用して実行されることが可能である。図9を使用する一例として、イングレスI1内の待ち行列Q1がエグレスE1に対する優先順位P11=10を有し、イングレスI1内の待ち行列Q2も同じくエグレスE1に対する優先順位P12=10を有するものと仮定する。サービスされる頻度が最も低い待ち行列を使用するタイ・ブレーキング手順では、最低頻度でサービスされている待ち行列Q1またはQ2が選ばれる。調停モジュール152では、エグレスに対するイングレスからの優先順位のタイ・ブレーキングに際して類似の手順が辿られる可能性がある。このような場合には、例えば、エグレスへ接続されている頻度が最も低いイングレスがサービスされ、または別の実施形態では、サービスされている頻度が最も低い何れかのイングレスが選択される。
図9は、各エグレスE1、E2内のFIFOの状態を含むメッセージが回線110a上でアービタ・チップ106へ送られる様を描いている。エグレスのFIFOの充足状態の示度である可能性のあるFIFOの状態は、調停モジュール152内でイングレスとエグレスとのマッピングに使用されることが可能である。待ち行列の優先順位は、上記待ち行列が通信相手として希望するエグレス内のFIFOが満杯であれば下げられる可能性がある。言い替えれば、エグレスのFIFOが満杯であれば、上記FIFOにパケットは送られず、かつエグレスの全てのFIFOが満杯であれば、そのタイムスロットにおいて上記エグレスにパケットは送られず、そのエグレスを希望するパケットを有する待ち行列の優先順位は、上記待ち行列が次のタイムスロットの間に共有リンク108へのアクセスを取得しないように相応に下げられる。この実施形態では、満杯のFIFOを有するエグレスを行先とする待ち行列の優先順位はアービタ・チップ106上の調停モジュール152内で下げられることが可能であるが、別の実施形態では、FIFO状態もイングレスへ送信されることが可能である。別の実施形態では、満杯のFIFOを有するエグレスを行先とするパケットを有する待ち行列の優先順位は実際には下げられないが、代わりに、FIFO状態は単に、エグレスのFIFOが満杯である間は上記エグレスへパケットが送信されないことを保証するために使用されることが可能である。言い替えれば、満杯のFIFOを有するエグレスは無視され、かつ満杯であるエグレスのFIFOポートも無視される。この実施形態では、上記所定のタイムスロットの間にイングレスは満杯のFIFOを有するエグレスへのアクセスを取得しない。
サービスする待ち行列を選択するための別の実施形態は、イングレスとエグレスとの間のマッピングを選択するための3レベル・プロセスを包含することが可能である。3レベルの待ち行列選択プロセスは、データ・パケットが接続先として希望するエグレス及び上記エグレス内のポートを指定する場合に使用されることが可能である。例えば図9は、エグレスE1及びE2の各々の内部のポートFIFO1及びFIFO2を描いている。イングレス内のデータ・パケットは各々、通信先として希望する特定のエグレス及び上記エグレス内の特定のポートを指定することができる。
図10は、3レベルの待ち行列選択プロセスにおける選択レベルを示す決定木のブロック図である。上記3レベルの待ち行列選択プロセスにおける第1の選択レベルは、各イングレス内で、各待ち行列グループから特定のエグレスの特定のポートを行先とする待ち行列を選択することを含む。言い替えれば、イングレス内の同じエグレスの同じポートを行先とする複数の待ち行列から第1の優先順位を有する待ち行列が選択され、上記第1の優先順位は上記待ち行列グループの最も高い優先順位である可能性がある。この選択は、異なるCOSを有する複数の待ち行列の中からである場合もある。
図10は、各々が4つの待ち行列を有する2つのイングレスI1、I2を示し、本図における各待ち行列は同じエグレスを行先とするパケットを有する。例えばイングレスI1内のブロック1002は、待ち行列Q1が優先順位P1を有していてエグレスE1のポート1との通信を求めていることを示す。同様に、ブロック1004は、待ち行列Q2が優先順位P2を有していて同じくエグレスE1のポート1との通信を求めていることを示す。待ち行列Q1及びQ2は、これらに関連づけられる異なるCOSを有する可能性があることに留意されたい。例えば図10は、待ち行列Q1ではCOS1を、待ち行列Q2ではCOS2を記している。この例では、第1の選択レベルにおいて、待ち行列Q1または待ち行列Q2(共に同じエグレスの同じポートを行先とする)がブロック1018で選択される。具体的にはこの実施形態の場合、この第1のレベルにおいて、最も高い優先順位を有する待ち行列が選択される。図10では、これは待ち行列Q1である(ブロック1026がこの選択を示している)。図10は、イングレスI1において共に同じエグレスのポート2との通信を求めている待ち行列Q3及び待ち行列Q4(ブロック1020)から、ブロック1028において待ち行列Q4が選択される同様の決定木を記している。図10には、イングレスI2内の類似の決定木が記されている。具体的に言えば、イングレスI2内の第1のレベルにおいて、ブロック1030及び1032で待ち行列Q2及びQ3が選択される。
3レベル・プロセスにおける第2の選択レベルは、各イングレス内または調停モジュール152内で、第1のレベルにおいて選択された待ち行列の中から、即ち第1の優先順位を有する待ち行列から第2の優先順位を有する待ち行列を選択することを含む。言い替えれば、第2のレベルは、同じエグレスの異なるポートとの通信を求める待ち行列から各イングレスにつき1つの待ち行列を選択することを含む。この第2のレベルが調停モジュール152内で実行されれば、満杯のFIFOとの接続を求める待ち行列が選択されないように、FIFOの充足状態を使用することができる。図10は、イングレスI1については、第1のレベルで同じエグレスのポート1を行先とする待ち行列Q1(ブロック1026)及びポート2を行先とする待ち行列Q4(ブロック1028)が選択されたことを示している。本システムは次に、第2のレベルにおけるブロック1034で、これらの2待ち行列間で両者の待ち行列の優先順位を基礎とする選択を行い、図10は、この第2のレベルにおけるブロック1038でポート1を行先とする待ち行列Q1が選択されたことを記している。具体的に言えば、待ち行列Q1は、待ち行列Q1の優先順位P1が待ち行列Q4の優先順位P4より高いという理由で選択される。同様に、第2のレベルにおけるブロック1040では、ブロック1036における待ち行列Q2と待ち行列Q3との比較からイングレスI2内の待ち行列Q3が選択される。
3レベル・プロセスにおける第3にして最後のレベルは、各エグレスに対して、エグレスが2つ以上のイングレスへ接続されないように(第2の優先順位を有する待ち行列から)1つのイングレスを選択することを含む。このような第3のレベルは、各イングレスが各エグレスを希望する優先順位が存在し得るように調停モジュール152内で実行され、イングレス内では行われない。言い替えれば、第2の優先順位を有しかつ特定のエグレスを行先としている待ち行列の各グループについて、各エグレスが唯一つのイングレスへ接続されるような待ち行列が選択される。ある実施形態では、最も高い優先順位を優先順位待ち行列が選択される。
図10を参照すると、第2のレベルにおけるブロック1038及び1040でイングレスI1内の待ち行列Q1及びイングレスI2内の待ち行列Q3が選択されている。選択は、ブロック1042において、これらの2待ち行列の優先順位(優先順位P1と優先順位P3)の比較を基礎として行われる。図10では、この第3のレベルにおけるブロック1044で待ち行列Q3が選択されている。待ち行列Q3はイングレスI2内にあることから、この実施形態ではエグレスにイングレスI2が接続され、待ち行列Q3がサービスされる待ち行列となる。図10が記している手順は、2つのイングレスしか存在せず、記されている待ち行列は全て同じエグレスを行先とする単純化されたものである点は留意されるべきである。より一般的には、例えば第3の選択レベルでは、複数のエグレスの各々についてイングレスが選択される。また、単一のイングレスは2つ以上のエグレスに対する最も高い優先順位を有する2つ以上の待ち行列を保有することが可能であることから、このイングレスからはエグレスに通信するものとして最も高い優先順位を有する待ち行列が選択され、そのイングレス内の他の待ち行列は後続のタイムスロットにおける通信を得るために競合させられる。
また図10は、3つの選択レベルの何れにおいても繋がりを断つために使用され得る情報を示している。図10の各待ち行列は、最長未使用(LRU)数を関連づけている。LRU数は、その待ち行列が最後にサービスされた後の経過時間を示す変数であり、または概してサービスされた時点以降の上記待ち行列のサービス状態継続時間を示すスケーリングされた数である。LRU数は、全体的な順序づけにおける待ち行列の位置を表す場合もある。但し、上記順序づけは、各待ち行列が最後にサービスされた時点からの増加する時間長を基礎としている。例えば、イングレスI1の待ち行列Q1はLRU1を有し(ブロック1002)、待ち行列Q2はLRU2を有する(ブロック1004)。ブロック1018において、待ち行列Q1の優先順位P1が待ち行列Q2の優先順位P2と同じであれば、これらのLRU数は、この選択レベルにおいて繋がりを断つために使用されることが可能である。従って、ブロック1018における待ち行列Q1からのLRU1と待ち行列Q2からのLRU2との比較により、待ち行列Q1の方がサービスされた時点からの経過時間が長いことが示されれば、第1の選択レベルにおいて待ち行列Q1が選択される。またLRU数は、調停モジュール152において最長未使用(LRU)情報を使用して繋がりが断たれ得るように、第2のレベルで選択された各待ち行列及び優先順位と共にイングレスから調停モジュール152へ送られることが可能である。また調停モジュール152は、どのエグレス・ポートが選択されかつ各イングレスが各エグレスへいつ接続されたかに関するその固有のLRU情報を格納することができる。
図11は、本発明の一実施形態によるシステム100のブロック図を使用する、待ち行列選択手順の別の実施形態を示す。本発明のこの実施形態では、イングレス内の1つの待ち行列が2つ以上のエグレスを行先とするパケットのために留保されることが可能である。本明細書では、このようなパケットを「マルチキャスト」パケットと称し、かつこれらのパケットを含む待ち行列を「マルチキャスト」キューと称する場合がある。例えば、図11におけるイングレスI1、I2及びI3の各々における待ち行列Q2は、エグレスE1、E2及びE3を行先としている。従って、待ち行列Q2に入れられるパケットはエグレスE1、E2及びE3のうちの2つ以上を行先とすることになる。待ち行列Q2における1つのパケットはエグレスE1、E2及びE3を行先とすることが可能であるが、待ち行列Q2における別のパケットはエグレスE1及びE3を行先とすることが可能である。図11の実施形態では、共有リンク108上で通信するために2つ以上のエグレスを行先とするパケットを有する待ち行列が選択されれば、その待ち行列は単一のタイムスロットの間に2つ以上のエグレスへ接続されることが可能である。従ってこの実施形態では、共有リンク108は、あるタイムスロットにおいて単一のイングレスを2つ以上のエグレスへマッピングすることができる。イングレスの数がエグレスの数と等しければ、上記イングレスのうちの少なくとも1つはそのタイムスロットにおいて共有リンク108へ接続されない。
マルチキャスト・キューが使用される場合には、選択スキームが変わる可能性がある。ある実施形態では、イングレス内のマルチキャスト・パケットを有する待ち行列は、上記待ち行列が上記マルチキャスト・キューに関連づけられる各エグレスの最大優先順位を有する場合にのみ共有リンク108を通した通信のために選択される。例えばこのような実施形態では、図11のイングレスI1における待ち行列Q2はエグレスE1及びE2に対する最大優先順位を有する可能性があるが、待ち行列Q2はエグレスE3に対する最大優先順位を保有しないことから、未だ共有リンク108を通した通信のためには選択されない。別の実施形態では、イングレスのエグレスへのマッピングに際して待ち行列の先頭にいるパケットしか検討されない。例えば、図11のイングレスI1における待ち行列Q2が上記待ち行列の先頭にエグレスE1及びE2のみを行先とするパケットを含んでいるとすると、待ち行列Q2は、エグレスE3に対する待ち行列Q2の優先順位が最大優先順位であるかどうかに関わらず、それがエグレスE1及びE2に対する最大優先順位を有していれば選択される。その他、それが単一のエグレスに対してのみ最大優先順位を保有していれば、マルチキャスト・キューが情報転送のために選択される実施形態も存在する可能性がある。但しこの実施形態は、待ち行列が各エグレスに対する最大優先順位を保有せず、複数のエグレスに対して選択されると思われることから、帯域幅を効率的に使用しない可能性がある。
図11を参照すれば、マルチキャスト・パケットを使用する待ち行列選択スキームの一例を説明することができる。図11では、図9及び10に関連して先に述べたように、2つまたは3つの選択ラウンドを使用可能である。3レベルの選択スキームでは、第1の選択レベルは各イングレス内で実行されることが可能であり、第2のレベルは各イングレス内または調停モジュール152内で実行されることが可能であり、第3の選択レベルは調停モジュール152内で実行されることが可能である。図11の各イングレスI1、I2、I3は、同じタイプの待ち行列を含んでいる。各イングレス内での第1の選択レベルは、特定のエグレスの特定のポートを行先とする各待ち行列グループから1つの待ち行列を選ぶことができる。調停モジュール152内での第2の選択レベルは、各イングレスについて、同じエグレスの異なるポートとの通信を求める複数の待ち行列から1つの待ち行列を選ぶことを包含することが可能である。次に、調停モジュール152内で実行される第3にして最後の選択レベルは、各エグレスに対するイングレスの選択を含むことが可能である。
図11は、2レベルの選択スキームを描いている。図11のイングレスI1の場合、待ち行列Q1、Q2及びQ3は各々、エグレスE1を行先とするパケットを含むことが可能である。従って、最大優先順位を有する待ち行列は、これらの3待ち行列から選ばれる。同様に、待ち行列Q2、Q3及びQ4はエグレスE2を行先とするパケットを含むことが可能であり、よって最大優先順位を有する待ち行列はこれらの待ち行列から選択される。さらに、待ち行列Q3及びQ5はエグレスE3を行先とするパケットを含むことが可能であり、よって最大優先順位はこれらの待ち行列から選択される。同様の選択が、イングレスI2及びI3の各々について実行される。次に調停モジュール152は、各エグレスについてイングレスを選択することができる。例えば、ある実施形態では、イングレスI1はエグレスE1、E2及びE3の各々について選択されることが可能である。そうなれば、その所定のタイムスロットの間はイングレスI1及びI2はアイドル状態になる。従って、この実施形態では、イングレスI1における待ち行列Q2またはQ3がエグレスE1、E2及びE3の各々に接続されることが可能である。第2の実施形態では、イングレスI1はエグレスE1及びE2へ接続されることが可能であってイングレスI2がアイドル状態になり、イングレスI3は所定のタイムスロットの間にエグレスE3へ接続されることが可能である。
ある実施形態では、マルチキャスト・キューは、上記マルチキャスト・キューが通信のために選択されると、上記1つまたは複数のパケットがエグレスの各々に方向づけられているかどうかに関わらず、それが関連づけられる待ち行列の各々へ1つまたは複数のパケットを送ることができる。例えば図11において、イングレスI2の待ち行列Q3は、エグレスE1、E2及びE3の各々への情報転送に選択されることが可能である。但し、イングレスI2の待ち行列Q3における1パケットは、エグレスE1及びE2しか行先とすることができない。ある実施形態では、このパケットは3つのエグレスE1、E2及びE3の各々へ送られるが、エグレスE3は、上記パケットがエグレスE3に属することを示すヘッダ情報を含まないことからこのパケットを無視する。
F.帯域幅の保証とオーバーロード保護の供給
1.はじめに
本発明の別の実施形態は、共有リンクを通したイングレスからエグレスへの接続を、帯域幅保証の形式のサービス品質(QoS)要件が満たされることを可能にするような方法で効率的にスケーリングするための装置と方法に関する。本発明のこの実施形態は、オーバーロード保護を供給すると同時に帯域幅を保証することができる。
図1に示すようなスイッチング・システムにおける各イングレス及びエグレスは、パケットがスイッチング・システムに到達しかつそこから離れることができる最大レートを決定する関連の回線レートを有する。効率的なスイッチ・スケジューリングにおける1つの問題点は、エグレスに対する競合によって発生する。即ち、複数のパケットは同じタイムスロットにおいて異なるイングレスに到達する可能性があるが、これらは全て同じエグレスへ送られる必要がある。しかしながら、クロスバーの制約に起因して、任意の所定のタイムスロットにおいてこの共通して希望されるエグレスへ送られることが可能なパケットは、最大でこれらのうちの1つである。従って、パケット損失が発生する可能性を回避するように注意しなければならない。
実際のオペレーションでは、特に高速時において、スイッチ調停機能が幾つかの目的を達成することが望ましいと言える。第1に、これは、イングレスとエグレスとを可能な限り迅速にマッチさせることができるように高速である必要がある。第2に、これは、リンク帯域幅の浪費を避けるために任意のタイムスロット内でマッチされるイングレス−エグレス対の数が多いことを保証する必要がある。第3に、これは、データの到着がスイッチの特定リンクの容量をオーバーロードする場合であっても、システム内の待ち行列上で行われる任意のQoS(レート)保証が達成されることを確実にする必要がある。図1におけるレート保証の一例として、イングレスI1からのエグレスE1を行先とするパケットは毎秒8ギガビット(Gbps)の保証レートを有する可能性があり、イングレスI2からエグレスE1へは2Gbpsの保証レートを有する可能性があり、イングレスI2からエグレスE3へは5Gbpsの保証レートを有する可能性があり、イングレスI3からエグレスE2へは4Gbpsの保証レートを有する可能性があり、イングレスI3からエグレスE3へは5Gbpsの保証レートを有する可能性がある。これらは、各イングレス及びエグレスが10Gbpsの最大可能レートを有する設定における保証レートであるとも言える。本発明のこの実施形態は、これらの目的を達成するために使用されることが可能である。
従って、本発明のこの実施形態を使用すれば、目標であるQoSを帯域幅保証の形態で達成することができる。帯域幅は、個々の待ち行列及び待ち行列グループに対して保証されることが可能である。さらに、本発明のこの実施形態を使用すれば、オーバーロードを防止することができる。スイッチは、著しいトラフィック・オーバーロードが発生する場合でも正常に作動しかつ帯域幅保証を達成することが望ましい。このようなトラフィック・オーバーロードは、例えばサービス拒絶(DoS)攻撃、ウォームにトリガされるトラフィック・フラッド及び急激な人気サービスに対するトラフィックのフラッシュ・クラウドに起因して発生する可能性がある。
パケット損失の発生を低減させながらこれらの問題点を解決するために、2つのタイプのソリューションが提案されている。第1のタイプでは、パケットはパケット損失を回避するためにイングレスにおいてバッファされることが可能であり、各タイムスロットにおいて、1つのエグレスに向かってバッファされた複数のパケットを有するイングレスの集合がそれへのアクセスを求めて競争する。第2のタイプでは、スイッチはスピードアップを利用することができる。スピードアップSを有するスイッチは、ビットに値するS個までのセルが同じタイムスロットにおいて1つのイングレスと1つまたは複数のエグレスとの間で転送されることを許容する。多くのシステムはスピードアップ2を有し、即ちパケットがスイッチを介して流れることができるレートは回線レートの2倍である。ファブリックのスピードアップが整数である必要はなく、例えばこれは1.5であってもよい。後述する本発明の実施形態を使用すれば、オーバーロードの存在下で1以上の任意のスピードアップを可能にするレート保証を供給することができる。
典型的には、各イングレスには、異なるエグレスに方向づけられているパケットのためのエグレス毎の待ち行列が存在する。これは、そうでなければ1つのエグレスに方向づけられているパケットが同じ待ち行列における他のパケットの転送を「ブロック」すると発生する可能性のある「ヘッドオブライン(HOL)ブロッキング」問題を回避することができる。仮想出力キューイング(VOQ)は、エグレス毎の待ち行列を有するイングレスのセットアップに与えられる名称である。例えば、システム内に3つのエグレスが存在すれば、各イングレスは3つの待ち行列を有する可能性があり、各待ち行列は3つのエグレスのうちの1つだけに方向づけられているパケットを含む。また、各イングレスに同じエグレスに方向づけられているパケットを含む幾つかの異なる待ち行列が存在することも可能である。これは、QoSに異なるサービス・クラスを実装する上で有益である可能性がある。その場合、同じエグレスに向かうパケットを有する各待ち行列は、所定のトラフィック・クラスのパケットを含む。
全ルータ・コスト及び電力損を決定する際の重要な一要素は、パケット・バッファに関するメモリ容量及び帯域幅要件である。パケット・バッファ容量は、典型的にはリンク速度に伴って線形的に増加し、マルチギガビット速度では、リンク毎にほぼ数ギガバイトが必要である。データ・ネットワークにおけるネットワーク・スイッチの大部分の現行設計は、何らかの形態の組合わせ入力/出力キューイング(CIOQ)を使用している。伝統的なCIOQスイッチは、イングレス及びエグレス回線カードの双方に大型のパケット・バッファを有する。2段階のバッファリングは、1段階のみのバッファリングを有するルータに比べてコスト及び消費電力が増加し、転送待ち時間も増す。
2.帯域幅を保証しかつオーバーロード保護を供給する実施形態
本発明のこの実施形態は、スイッチ・クロスバーを従来のCIOQスイッチの場合より慎重にスケジューリングするために、ネットワーク・スイッチに帯域幅保証及びオーバーロード保護を供給することに関する。この実施形態では、クロスバーを帯域幅要件に関係なくスケジュールする代わりに、待ち行列がそれらに割り当てられた帯域幅レートを受信しているかどうかに関する情報が考慮される。さらに、イングレスをエグレスにマッチさせる際には、動的な段階的最大マッチング戦略が使用される。この実施形態は、入力待ち行列の優先順位を決定しかつこれらの優先順位を帯域幅の割当てに使用するための方法及びシステムである。
概して、本発明のこの実施形態は2つの部分を含む。第1に、各タイムスロットにおいて、またはタイムスロットの部分集合に関して、各イングレスVOQのカレント状態(よって各イングレスのカレント状態)がティアにマッピングされる。言い替えれば、待ち行列に関する情報を使用して、待ち行列が待ち行列ティアに割り当てられる。ティアの数は典型的には2より大きいか等しく、これらのティアは後にさらに詳述するように異なる方法で定義されることが可能である。第2に、各タイムスロットにおいて、本発明のこの実施形態は待ち行列ティアの集合を所与としてティア毎の最大マッチングを生成する。即ち、R(2より大きいか等しい数)個のティアが存在すれば、本発明は最上位のティアを始点とし、このティアに存在するVOQのみを考慮してイングレスとエグレスとの間の最大マッチングを生成する。次に、マッチしていない残りのイングレス−エグレスVOQの中から、この実施形態は次の下位ティア(R−1)における最大マッチングを生成し、全てのティアが検討されるまで、またはそのタイムスロットの間に利用可能なエグレスがなくなるまでこれを繰り返す。ある実施形態では、待ち行列をティアにマッピングする第1の部分は各イングレス・チップ内で実行され、待ち行列(よってイングレスも)をエグレスにマッチングする第2の部分はアービタ・チップ内で実行される。
イングレスのエグレスへのマッチングは、より大きいマッチングを生成するためにそのマッチングに他のイングレス−エグレス・ペアを追加することができなければ最大になる。例えば図12において、イングレスからエグレスへの矢印はどのイングレスがどのエグレスに関するデータを有するかを指示するものと仮定すると、イングレスI1はエグレスE1に関するデータのみを有し、イングレスI2はエグレスE1及びE3に関するデータを有し(E2のデータは保有しない)、イングレスI3はエグレスE2及びE3に関するデータを有する(E1のデータは保有しない)。イングレスI2がエグレスE3にマッチされ、イングレスI3がエグレスE2にマッチされかつイングレスI1がマッチされなければ、イングレス−エグレス・ペアI1、E1がこのマッチングへ追加されてより大きいマッチングを生成することは可能であることから、これは最大マッチングではない。これに対して、イングレスI1がエグレスE1にマッチされ、かつイングレスI3がエグレスE3にマッチされれば、イングレスI2はエグレスE2にマッチされ得ない(エグレスE2に関するデータを保有しない)ことからこのマッチは最大マッチングになる。
この段階的最大マッチング戦略の結果は、スイッチ全体の最大マッチングである。従って、動的なティア毎の最大マッチングを使用すれば、VOQのティアへの適切な動的割当てによって帯域幅保証及びオーバーロード保護を供給することができる。例えば、図2を参照すると、イングレスI1におけるエグレスE1に関するデータを有する待ち行列は未だその帯域幅保証を達成していないが、イングレスI3におけるエグレスE1に関するデータを有する待ち行列がそれを達成していれば、上記イングレスI1におけるエグレスE1に関するデータを有する待ち行列は、上記イングレスI3からの待ち行列に優先してデータを送ることを許容されるべきである。これらの待ち行列間におけるこの優先性または重要さの概念は、動的である。即ち、各待ち行列は、トラフィックの到着、スイッチを介するトラフィック・サービス及び帯域幅保証を基礎として、達成されている、または達成されていない保証に対応する状態間を遷移する。
待ち行列をティアへグループ分けする1つの方法は、各イングレスにアービタ(即ち、図2及び3Aのアービタ・チップ106または具体的にはアービタ・チップ106の調停モジュール152)へ各待ち行列の割当てレートが未だ達成されていないかどうかを通知させることによって始まり、達成されていなければ、待ち行列は「渇望している」とされる。待ち行列の割当てレートが達成されていれば、上記待ち行列は「満足している」とされる。これは、ティアが2つしかない単純な例である。この実施形態は、待ち行列に関するこの割当て帯域幅情報を待ち行列のティアへの割当てに使用することができる。待ち行列がティアへ割り当てられると、ティアは、各タイムスロットにおいてイングレスとエグレスの争いのないマッチングを生成すべく連続して評価される。アービタはまず、渇望している待ち行列に最大マッチングを行い、次に満足している待ち行列へ移行する。
より実際的なシナリオでは、上述の例の場合のように、様々なタイプの待ち行列に対応するために3つ以上のティアを使用可能である。例えば、タイムスロット全体を利用しない「部分的な」パケットを含むVOQ、より少ない遅延を要求するVOQまたは空である待ち行列に対して、別々のティアを使用することもできる。各待ち行列は、待ち行列へのトラフィックの到着、待ち行列のトラフィック・サービス、待ち行列の帯域幅保証、遅延要件及び他の待ち行列状態情報等の、但しこれらに限定されない様々なタイプの待ち行列状態情報を基礎としてティアへ動的に割り当てられることが可能である。R個のティアが予め定義されるが、Rは2より大きいか等しい。本方法は、待ち行列を(それらの特徴に依存して)これらの予め定義されたティアへ動的に(例えば、タイムスロット毎に、またはk番目のタイムスロット毎に、但しk≧1)または静的に分類することによって動作する。
動的なティア割当て及び段階的な最大マッチングである2つのメカニズムは共に、トラフィック・オーバーロードが存在しても帯域幅保証が達成され得るようにイングレス−エグレス待ち行列ペアのマッチングを供給する。帯域幅保証は、任意のスピードアップS≧1について達成されることが可能である。スピードアップがSであれば、各イングレス(エグレス)で帯域幅に値するイングレス(エグレス)回線レートのS/2倍を保証することができる。回線レートの(1−S/2)倍の追加トラフィックは、ベストエフォート式に供給されることが可能である。
図13は、本発明による一実施形態の動作を示すフローチャートである。概して、上述の2つの機能が実行され、即ち各待ち行列がティアにマッピングされ、ティア毎の最大マッチングが実行される。これらの2機能の組合わせにより、待ち行列(故にイングレスも)とエグレスとの最大マッチングが生じる。
図13を参照すると、ステップ1302でスイッチング・システム100(図2)の待ち行列の様々な特徴(ディテール)が達成される。これらの特徴は、例えば図2及び3Aのアービタ・チップ106等のアービタまたはより特定的にはアービタ・チップ106の調停モジュール152において収集されることが可能である。他の実施形態では、これらの特徴は、アービタ・チップ106へ送られる情報量を減らすためにイングレス・チップ102内で収集されて解析されることが可能である。ステップ1302で取得されることが可能な幾つかの特徴、または待ち行列状態情報は、(1)各待ち行列の長さ、(2)各待ち行列の保証レート、(3)各待ち行列に関連づけられるクレジット値及び(4)各待ち行列の「エイジ」である。待ち行列のこの特徴リストは例示的であり、異なる追加的なタイプの特徴も本発明のコンテキストの範囲内で使用されることが可能である。ある実施形態では、アービタに最後に送られた情報から変化がなければ、アービタに待ち行列の待ち行列状態情報を知らせる必要がない。言い替えれば、この実施形態では、新規または異なる待ち行列状態情報のみがアービタへ送られる。
再度図13を参照すると、ブロック1304において、待ち行列は、上述の特徴(ブロック1302で取得できたもの)または予め決められた任意の分類法を基礎として「N」個のティアへ分類される。ティアの個数「N」は、達成されるべきQoS保証に依存して定義される。概して、ティアは、図15に関連して後にさらに詳述する方法で事前に定義される。各タイムスロットについて、待ち行列はティアへ分類されることが可能である。従って、待ち行列はティアへ動的に割り当てられる。各待ち行列は、タイムスロット毎に1つのティアへ属することができる。概して、ティアはまずどの待ち行列がエグレスとマッチされるべきかを指示するために使用され、より上位のティアにおける待ち行列はより下位のティアにおけるものより前にエグレスへマッチされる。従って、他の待ち行列より緊急にサービスを必要とする待ち行列は、所定のタイムスロットのより高位のティアへ分類されることが可能である。ある待ち行列がサービスされると、実施形態によっては、これは、次のタイムスロットではサービスされることのないように、より下位のティアへ分類されることが可能である。図15は、待ち行列の7個のティアへの分割を例示するものであり、これについては後に詳述する。
図13のブロック1306において、ティアは優先順位を与えられ、各ティアは概して異なる優先順位を有する。この優先順位は、イングレスとエグレスとのマッチングの間に待ち行列を選択するために使用される。ティアの個数「N」に一致する値を有する可能性のある最も高い優先順位は、「特殊な」ティア、即ち待ち行列が何らかの理由でサービスを要求するティアに属することが決定される待ち行列のために留保されることが可能である。このような理由の一例は、先に「部分的な」パケットを有する待ち行列として述べている。他のティアは全て、この最も高い優先順位より低い優先順位を割り当てられる。例えば、「優先転送」ティアは、値「N−1」を有する可能性のある2番目に高い優先順位に関連づけられる可能性がある。従って、各優先転送待ち行列には、それが空でなければ優先順位「N−1」を割り当てられる。表1に関連して先に述べたように、イングレスは、優先転送待ち行列である待ち行列でセットアップされることが可能である。このような待ち行列は、クレジット値に関わらずイングレス内の他の待ち行列より前にサービスされる待ち行列である。優先転送待ち行列は、イングレスにおいて、所定のパケットが可能な限り迅速に転送されることを保証するために使用可能である。このような場合、パケットは優先転送待ち行列においてバッファされる。空の待ち行列は、典型的には優先順位「0」を割り当てられ、それらの割当て帯域幅を超過している待ち行列も同様である可能性がある。先に述べたように、図15は待ち行列の7個のティアへの分割を例示するものであり、これについては後に詳述する。
図13のブロック1308において、変数「i」の値がティアの個数「N」に等しい値に設定される。この変数iは、図13に記されているようにかつ後述のように、「N」個のティアの各々について最大マッチングが実行されるべく減分カウンタとして使用される。
図13のブロック1310において、スイッチング・システム100は最大マッチングを使用して最新の優先順位を有する待ち行列をエグレスにマッチさせる。最大マッチングを実行するために、まずは評価されるべき待ち行列が選択される。ティア内の最初に評価されるべき待ち行列は、ランダムに、予め決められた順序で、所与の加重により確率的に、または他の何らかの方法を使用して決定されることが可能である。ある実施形態では、より公正な割当てを達成するために、待ち行列のランダムな選択が望ましい可能性がある。ティア内の待ち行列が選択されると、最大マッチングはその待ち行列(故にその待ち行列が位置決めされるイングレスも)と接続に関する上記待ち行列による最初の選択であるエグレスとのマッチング(または接続)を試行する。例えば、希望されたエグレスが既にマッチされているという理由でこれが不可能であれば、上記ティア内の別の待ち行列が選択され、接続に関する上記待ち行列による最初の選択であるエグレスとの接続に関して評価される。このプロセスは、所定の優先順位レベルにおける(即ち、所定のティア内の)待ち行列が全て評価されるまで同様にして継続される。最大マッチングについては、図14に関連してさらに詳しく論じる。
イングレスとエグレスとの最大マッチングにより、本発明のこの実施形態は、QoS保証が達成されるように、あるタイムスロットにおける特定のイングレスと特定のエグレスとのマッチングが、そのイングレスまたはエグレスと別のエグレスまたはイングレスとのより緊急的にペアリングを必要とする可能性のある異なるマッチングを犠牲にして行われないことを保証する。最大マッチングは高速であって大量の処理電力を必要とせず、よって多額の費用をかけることなくスイッチング・システムに実装されることが可能である。
図13のブロック1312では、変数「i」の値(最新の優先順位または最大マッチングのために評価されているティア・レベル)が1を減分される。ブロック1314では、変数iの値がチェックされ、全ての優先順位レベルが評価されているかどうかが決定される。全ての優先順位レベルが評価されていれば、i=0であり、図13におけるフローの実行は終了して待ち行列とエグレスとのマッチングは完了する。i>0であれば、ステップ1310が実行され、最新の優先順位(即ち、ティア)レベルについて最大マッチングが実行される。このプロセスは、全ての優先順位レベル(またはティア)が評価されるまで繰り返される。
図14は、待ち行列リストに対する最大マッチングの動作を示すフローチャートである。この最大マッチング手順は、図13のブロック1310で最大マッチングを実行するために使用されることが可能である。図14のブロック1402において、本プロセスは入力として利用可能なイングレスのリスト、利用可能なエグレスのリスト及びエグレスとのマッチングについて考察される予定の待ち行列のリストを採用する。待ち行列(故にイングレスも)のリストは、現行評価されている優先順位レベルまたはティア内の待ち行列より成る。
図14のブロック1404において、考察されるべき待ち行列のリストから1つの待ち行列が選ばれる。先に述べたように、ティア内の最初に評価されるべき待ち行列は、ランダムに、予め決められた順序で、所与の加重により確率的に、または他の何らかの方法を使用して決定されることが可能である。ブロック1406では、この待ち行列にとって希望されるエグレスが利用可能であるかどうかが決定される。利用可能なエグレスが存在すれば、ブロック1408が実行される。ブロック1408では、考察されている待ち行列を含むイングレスがブロック1406でチェックされたエグレスとマッチされる。次にこのイングレスの待ち行列は全て、マッチングに利用可能な待ち行列リストから削除される。さらに、待ち行列にマッチされるエグレスも、マッチングに利用可能なエグレス・リストから削除される。次に、ブロック1412が実行される。
ブロック1406で、エグレスが待ち行列への接続に利用できなければ、ブロック1410が実行される。ブロック1410では、考察されている待ち行列がマッチされるべき待ち行列リストから削除される。次には、ブロック1412が実行される。ブロック1412では、評価されているティア内に未だマッチングに利用可能である追加的な待ち行列が存在するかどうかが決定される。そのティア内にマッチングに利用可能である追加的な待ち行列が存在しなければ、その所定のティアに関する最大マッチングの実行は終了し、図13のプロセスが続けられる(即ち、これにより、より下位のティアが存在すれば次の下位ティアについて最大マッチングを実行可能である)。上記ティア内に考察されるべき待ち行列がさらに存在すれば、ブロック1404が実行され、考察されるべき待ち行列リストから別の待ち行列が選ばれる。このプロセスは、上記ティア内に考察されるべき追加的な待ち行列が存在しなくなるまで継続される。
図15は、本発明の一実施形態による、様々な性質またはパラメータを基礎とする待ち行列の7つのティアへの分類を示す表である。後の説明を含む図15の例は、先の図13におけるブロック1304の記述にあるように待ち行列を「N」個のティアへ分類する一例である。先に述べたように、ティアは、イングレスとエグレスとのマッチングが判断される順序の決定に使用され得る異なる優先順位レベルを決定するために使用される。
概してティアは、待ち行列への到着履歴、待ち行列のサービス履歴、待ち行列状態、保証レート及び待ち時間またはジッタに依存して定義される。到着履歴は、各パケットがその待ち行列に到着した時点、即ちそのパケットがどのタイムスロットで到着したか、に対応する情報である。同様に、待ち行列のサービス履歴は、その待ち行列がサービスされたタイムスロット及びどのパケット及び幾つのパケットがサービスされたか、に関する情報である。待ち行列のティアへの割当てには、部分パケットを有する待ち行列または優先転送待ち行列等の所定のタイプの待ち行列に関する他の情報も使用される。
図15は、6種の異なる性質またはパラメータを基礎とする待ち行列の7個のティア(所定のタイムスロットの間、各ティアはその内部に0乃至多数の待ち行列を含むことができる)への分類を示している。これらの性質またはパラメータは、広義に待ち行列状態情報と呼ぶことができる。
図15における第1のパラメータは、待ち行列が「特殊」であるかどうか、である。例えば、待ち行列が先に詳述した「部分的な」パケットを含んでいれば、それは「特殊」である。概して待ち行列は、何らかの理由で連続するタイムスロットでの接続を要求していれば特殊である。待ち行列が特殊であれば、その待ち行列(即ち、部分パケットに関して)を即座にサービスすることが望ましい。従って、図15におけるティア「S」は特殊な待ち行列のためのティアである。「特殊な」パケットまたは「特殊な」待ち行列に関連するパラメータは、待ち行列を「特殊な」ティア「S」へ割り当てることができるようにアービタへ送られることが可能である。
待ち行列のティアへの分類に際して考察される可能性がある別のパラメータは、待ち行列が空であるかどうか、である。その待ち行列が空であるかどうかを決定するためには、待ち行列の長さを調べることができる。図15は、空の待ち行列のためのティア「F」を含んでいる。先に「Q長さ」と称した各待ち行列の長さは、特定の瞬間に所定の待ち行列内へ格納されるデータ・サイズの尺度であり、よってバイトで測定することができる。その値は、0乃至許容された最大値の範囲である。図2及び3Aを参照すると、待ち行列マネージャ112は待ち行列へのデータの到着レート情報を計算または追跡することが可能であり、待ち行列長さモジュール162は待ち行列のカレント長またはサイズを計算することが可能である。Q長さの値は、待ち行列に新しいパケットが到着する度にそのパケットのサイズだけ増分される。同様に、Q長さの値は、パケットが待ち行列を離れる度にそのパケットのサイズだけ減分される。
待ち行列のティアへの分類に際して考察される可能性がある別のパラメータは、「エイジ」という因子である。待ち行列のエイジ因子は、その待ち行列が最後にサービスされた時点からの経過時間を示す値である。このエイジ因子は、一定間隔で1だけ増分される。例えば、エイジ因子は、所定の待ち行列がサービスされないタイムスロットが経過する度に1だけ増分されることが可能である。さらに、パケットが所定の待ち行列を離れる度に、エイジ因子はその待ち行列に関してゼロにリセットされることが可能である。このパラメータの値が所定のしきい値または予め定義されたタイムスロット数(例えば1,000等)を超えると、その待ち行列は「熟成している」と見なされる。従って、待ち行列が長い間サービスされていなければ、そのエイジ因子は、その待ち行列が「熟成している」と見なされるに足る十分な大きさになっている可能性がある。図15が記しているティア「A」は、空でなく熟成した待ち行列のためのティアである。
待ち行列が「弱体」であるか否かもまた、各待ち行列をティアの1つへ分類する際に考察される可能性がある。待ち行列がその処理能力に見合う数のパケットを受信していなければ、またはその処理能力を遙かに下回る数のパケットを受信していれば、それは弱体として分類されることが可能である。待ち行列が弱体として分類されれば、それはパケットを有する他の全てのティアが考察されるまでマッチングされないティアにグループ分けされることが可能である。例えば図15は、弱体である待ち行列を有するものとしてティア「E」を記している。ティア「E」は、空の待ち行列を含むティアのすぐ上の下位から2番目のティアである。
待ち行列が「渇望」状態であるか否かもまた、待ち行列をティアへ分類する際に考察される可能性がある。待ち行列がその保証された帯域幅より少ない帯域幅を受信していれば、それは渇望状態にあるとされる可能性がある。同様に、その保証された帯域幅より多くの帯域幅を受信している待ち行列は、「満足している」または渇望状態でない、とされる可能性がある。図15は、渇望していない待ち行列を含むものとしてティア「D」を記し、渇望状態にある待ち行列を有するものとしてティア「B」及び「C」を記している。概して、ティア「B」及び「C」にある待ち行列(即ち、渇望状態の待ち行列)はティア「D」にある待ち行列(即ち、満足している待ち行列)より前にエグレスとマッチされるべきである。従って、ティア「D」はティア「B」及び「C」より低い優先順位を有する。
概して、待ち行列が弱体であるか、渇望状態であるか、満足しているかどうかを決定するためには、各待ち行列の保証レート及びクレジット値を考察することができる。概して保証レートは、その待ち行列に対して保証されているレートである。これはその待ち行列が利用可能な帯域幅を決定し、典型的には「1秒当たりのビット数」で表示される。このパラメータは、一定間隔で更新される(通常はタイムスロット当たり1回ではなく、先に述べたようにタイムスロット・ブロック当たり1回)。保証レートを計算する幾つかの方法については幾つかの図(図5等)に関連して先に述べており、図3Aでは保証レートが数字52で記されている。
また、各待ち行列にはクレジット値も関連づけられる。概して所定の待ち行列のクレジット値は、待ち行列がサービスされない各タイムスロットの後に増加されることが可能である。所定のタイムスロットの間に待ち行列がサービスされれば、その待ち行列のクレジット値は減らされることが可能である。待ち行列のクレジット値の決定については、先に図8に関連して詳述している。先に詳述したように、待ち行列のクレジット値は、各待ち行列の保証レートを使用して増分されることが可能である(待ち行列が所定のタイムスロットの間にサービスされなかった場合)。
典型的には、待ち行列のクレジット値が0より小さければ、それは、その待ち行列がその保証された帯域幅により指定される帯域幅より多くのサービスを受信していることを含意する。このような待ち行列は、「満足している」(または図15においてティア「D」で示されるように渇望状態でない)とされる可能性がある。同様に、待ち行列のクレジット値が0より大きければ、それは、その待ち行列がその保証された帯域幅より少ないサービスを受信していることを含意する。このような待ち行列は、図15においてティア「B」及び「C」で示されるように渇望しているとされる可能性がある。最後に、待ち行列のクレジット値が0であれば、それは、その待ち行列がその保証された帯域幅を受信していることを含意する。このような待ち行列は、ある実施形態では渇望状態でないとされ、別の実施形態では渇望しているとされる可能性がある。実施形態によっては、クレジット値の大きさ(正または負)はキャップされる場合がある。
待ち行列のティアへの分類に際して考察される可能性がある待ち行列に関する別種のパラメータは、待ち行列のタイプである。待ち行列によっては、優先転送待ち行列または確実な転送待ち行列として分類され得るものがある。優先転送待ち行列は、概してクレジット値に関わりなくイングレスの他の待ち行列より前にサービスされる待ち行列である。図15の実施形態では、「熟成した」待ち行列(及び部分パケットを有する待ち行列)は優先転送待ち行列より上位のティアに置かれ、よって優先転送待ち行列より前にサービスされるが、この通りである必要はない。例えば、優先転送待ち行列は「熟成した」待ち行列の上のティアに置かれる可能性もある。確実な転送待ち行列は、同じく概して他の待ち行列より前に、但し優先転送待ち行列より後でサービスされる待ち行列である。従って、図15は優先転送待ち行列のためにティア「B」を、確実な転送待ち行列のためにティア「C」を使用している。
図15に記したティア分類は、単なる例示である。ティアは、本発明の範囲内でさらに多い、または少ない数を使用可能である。例えばある実施形態では、「熟成した」待ち行列のためのティアは存在しない場合もある。別の実施形態では、確実な転送待ち行列のためのティアは存在しない場合もある。さらに別の実施形態では、ティアが追加される場合がある。例えば、図15のティアが全て、渇望状態にあるが優先転送待ち行列または確実な転送待ち行列のためのティアには適合しない待ち行列のための別のティアと共に使用されることもある。また例えば、図15のティア「C」と「D」の間に渇望状態にある待ち行列のためのティアが存在する場合もある。ティアのこのようなグループ分けは、図15に記されている7個ではなく8個のティアを有することになる。
図15の実施形態では、最も高い優先順位値6は特殊なティア「S」に属する待ち行列に割り当てられる。2番目に高い優先順位値5は、ティア「A」に属する待ち行列に割り当てられる。3番目に高い優先順位値4は、ティア「B」に属する待ち行列に割り当てられる。4番目に高い優先順位値3は、ティア「C」に属する待ち行列に割り当てられる。5番目に高い優先順位値2はティア「D」に属する待ち行列に割り当てられ、6番目に高い優先順位値1はティア「E」に属する待ち行列に割り当てられる。最終的に、最後(7番目)の優先順位値0は、ティア「F」に属する待ち行列に割り当てられる。
このようにして、待ち行列はまずそれらのタイプ及び/または要件または特徴に従って分類されて優先順位を割り当てられ、次に所定の優先順位の各待ち行列リストについて、エグレスとのマッチングを実行すべく降順の優先順位で最大マッチングが実行される。高位の優先順位待ち行列に関するイングレスとエグレスの最大マッチングを下位の優先順位待ち行列より前に行うことにより、本発明は、QoS保証が達成されるべく、あるタイムスロットにおける特定のイングレスとエグレスとのマッチングが、そのイングレスまたはエグレスと別のエグレスまたはイングレスとのより緊急的にペアリングを必要とする可能性のある異なるマッチングを犠牲にして行われないことを保証する。従って、本方法は、スイッチ内の様々なスピードアップによるトラフィック・オーバーロードの存在する中でQoS保証を維持することができる。
本明細書に記述した方法は、図5に関連して先に詳述したもの等の様々な帯域幅割当て戦略と共に使用されることが可能である。本発明による一シナリオでは、段階的な最大マッチングが関連の割当てレートを有するタイムスロット毎に各仮想出力キュー(VOQ)に使用される。VOQグループに集合的な保証レートが割り当てられるシナリオは、より一般的である。帯域幅アロケータは、あらゆる時間期間でVOQグループ内の各待ち行列の個々のレートを動的に決定する。但し、「時間期間」は何十ものタイムスロットから何百万ものタイムスロットまたはそれ以上にまで変化する可能性がある。従って、段階的な最大マッチングは個々のタイムスロットについてスケジュール決定を行い、帯域幅アロケータは幾つかのタイムスロット(または時間期間)ブロックについて帯域幅割当てを決定する。
より大きい及びより小さい、前及び後、右及び左、上及び下、上位及び下位及び水平及び垂直の言及は何れも説明上の便宜的なものであり、本発明またはそのコンポーネントを何らかの相関的、位置的または空間的方向づけに限定しようとするものではない。添付の図面におけるコンポーネントのサイズは全て、本発明の範囲を逸脱することなく本発明の実施形態の潜在的設計及び意図された使用に伴って変わる可能性がある。
本発明をその幾つかの実施形態を参照して説明したが、当業者には、請求範囲に記載された発明の精神及び範囲を逸脱することなく実行され得る様々な変更が認識されるであろう。従って、本発明は図面が示すもの及び明細書に記載された内容に限定されるものではなく、その内容は唯一添付の請求の範囲に示されている。
先行技術によるスイッチング・システムを示すブロック図である。 本発明システムの一実施形態を示すブロック図である。 本発明のアービタ・チップ、イングレス・チップ及び待ち行列マネージャの一実施形態を示すブロック図である。 イングレスの待ち行列内のデータ・パケットを示すブロック図である。 本発明方法の一実施形態を示すフローチャートである。 本発明方法の一実施形態を図4Aよりさらに詳しく示すフローチャートである。 異なる3タイプの帯域幅割当てに関する帯域幅レートの計算の一実施形態を示すフローチャートである。 単一のエグレスにおける帯域幅割当ての一実施形態を示すブロック図である。 単一のエグレスにおける帯域幅割当ての第2の実施形態を示すブロック図である。 単一のイングレスにおける帯域幅割当ての一実施形態を示すブロック図である。 待ち行列グループの帯域幅割当ての一実施形態を示すブロック図である。 本発明の一実施形態において帯域幅割当てに使用されるクレジット値の調整を示すフローチャートである。 本発明の待ち行列選択スキームの一実施形態を示すブロック図である。 待ち行列選択方法の第2の実施形態を示すフローチャートである。 待ち行列選択スキームの別の実施形態を示すブロック図である。 図示されているイングレスが図示されているエグレスの所定のものへ送るデータを保有している例示的なシナリオを示すブロック図である。 動的なティア当たりの最大マッチングを使用する本発明の別の実施形態を示すフローチャートである。 待ち行列リストの最大マッチングの一実施形態を示すフローチャートである。 図13の本発明の実施形態による、様々な性質を基礎とする待ち行列の5ティアへの分類を示す表である。

Claims (32)

  1. 共有リンクを介してサービスする待ち行列を選択する方法であって、
    複数のイングレス内の待ち行列グループからの各待ち行列を個数「N」のティアのうちの1つのティアに分類することを含み、上記数「N」は2より大きいか等しく、上記待ち行列のうちの少なくとも幾つかを上記ティアに分類するために待ち行列状態情報が使用され、待ち行列の各ティアには異なる優先順位が割り当てられ、
    より低い優先順位を有するティア内に分類される待ち行列をマッチングすべく試行するより前に、より高い優先順位を有するティア内に分類される待ち行列をマッチングすべく試行することによって待ち行列を利用可能なエグレスにマッチングすることを有することを特徴とする方法。
  2. 上記各待ち行列を分類することは、少なくとも第1のティアと第2のティアとに分類することを含み、上記待ち行列状態情報は上記待ち行列の各々のための保証された帯域幅レートに関する情報を含み、上記第1のティアに分類される待ち行列の各々は上記待ち行列のための保証された帯域幅レートより少ない帯域幅を受信しておりかつ上記第2のティアに分類される待ち行列の各々は上記待ち行列のための保証された帯域幅レートより多い帯域幅を受信しており、上記第1のティアは上記第2のティアより高い優先順位を有することを特徴とする請求項1記載の方法。
  3. 上記待ち行列を利用可能なエグレスにマッチングすることは、
    待ち行列の利用可能なエグレスへのマッチングがまだ実行されていない最も高い優先順位を有するティアを選択することと、
    上記選択されるティア内の待ち行列のうちの1つを選択することと、
    希望されるエグレスが利用可能であれば上記選択される待ち行列をその希望されるエグレスにマッチングし、上記選択される待ち行列が上記希望されるエグレスにマッチングされれば上記希望されるエグレスを利用可能なエグレスのリストから削除することと、
    上記選択される待ち行列を考察されるべき待ち行列のリストから削除することと、
    上記待ち行列のうちの1つを選択するステップと、上記選択される待ち行列をマッチングするステップと、上記選択される待ち行列を削除するステップとを、上記選択されるティア内の全ての待ち行列が評価されるまで繰り返すこと、を含むことを特徴とする請求項1記載の方法。
  4. 上記待ち行列のうちの1つを選択する行為は、上記選択されるティア内の待ち行列のうちの1つをランダムに選択することを含むことを特徴とする請求項3記載の方法。
  5. 上記分類しかつマッチングする行為は上記共有リンクを介してサービスするための各タイムスロットについて実行される請求項1記載の方法。
  6. 上記分類しかつマッチさせる行為は、利用可能なエグレスに向かうパケットを有しかつその保証された帯域幅レートを受信する第1の待ち行列が、その利用可能なエグレスに向かうパケットを有する第2の待ち行列がその保証された帯域幅レートを受信していなければその利用可能なエグレスにマッチングされないことを保証することによりオーバーロード保護を提供することを特徴とする請求項1記載の方法。
  7. 上記第1の待ち行列は、上記第2の待ち行列が分類されるティアより高い優先順位を有するティアに分類されることを特徴とする請求項6記載の方法。
  8. 各待ち行列における先出しパケットのサイズを確認することと、
    任意の待ち行列における上記先出しパケットのサイズが大きすぎて単一のタイムスロットでは上記共有リンクを介して伝送され得なければ、その待ち行列を最も高い優先順位を有するティアに分類することをさらに含むことを特徴とする請求項1記載の方法。
  9. 各待ち行列のキュー・メトリックに関する情報を保持することと、
    上記キュー・メトリック情報及び保証された帯域幅量を基礎として各待ち行列の保証レートを計算することと、
    上記保証レートを使用して上記待ち行列グループにおける各待ち行列のクレジット値を計算すること、をさらに含み、上記クレジット値は上記待ち行列状態情報であることを特徴とする請求項1記載の方法。
  10. 上記保証レートを使用して各待ち行列のクレジット値を計算することは、
    各待ち行列に関連づけられる上記クレジット値を、
    上記待ち行列が所定のタイムスロットにおいてサービスされれば、上記クレジット値をしかるべき量で減分することと、
    上記所定のタイムスロットの後、上記クレジット値を上記保証レートを基礎とする量で増分すること、によって調整することを含むことを特徴とする請求項9記載の方法。
  11. 上記保証された帯域幅の量はエグレスの量を基礎とする請求項10記載の方法。
  12. 上記保証された帯域幅の量は待ち行列グループの量を基礎とすることを特徴とする請求項10記載の方法。
  13. 上記各待ち行列を分類することは、(a)ゼロより大きいクレジット値を有する少なくとも1つの待ち行列を、第2のティアより高い優先順位を有する第1のティアへ分類することと、(b)ゼロより小さいクレジット値を有する少なくとも1つの待ち行列を第2のティアへ分類することを含むことを特徴とする請求項10記載の方法。
  14. 上記待ち行列状態情報は上記待ち行列の少なくとも幾つかに関するクレジット値を含み、各クレジット値は各待ち行列の保証された帯域幅レートから導出されることを特徴とする請求項1記載の方法。
  15. ゼロより大きいクレジット値は渇望している待ち行列を示し、ゼロより小さいクレジット値は満足している待ち行列を示すことを特徴とする請求項14記載の方法。
  16. 渇望している各待ち行列は第2のティアより高い優先順位を有する第1のティアへ分類され、満足している各待ち行列は上記第2のティアへ分類されることを特徴とする請求項15記載の方法。
  17. 割り当てられた帯域幅に関する情報は上記待ち行列が空であるかどうかに関する情報を含むことを特徴とする請求項14記載の方法。
  18. 空である待ち行列は最も低い優先順位を有するティアへ分類されることを特徴とする請求項17記載の方法。
  19. 上記待ち行列状態情報は待ち行列が部分パケットを含むかどうかに関する情報を含み、上記部分パケットは大きすぎて単一のタイムスロットでは上記共有リンクを通して伝送され得ないパケットであることを特徴とする請求項18記載の方法。
  20. 部分パケットを含む待ち行列は最も高い優先順位を有するティアへ分類されることを特徴とする請求項19記載の方法。
  21. 上記待ち行列状態情報は待ち行列がその処理能力に見合う数のパケットを受信しているかどうかに関する情報を含むことを特徴とする請求項20記載の方法。
  22. その処理能力に見合う数のパケットを受信していない各待ち行列は、最も低い優先順位を有するティアの直ぐ上の優先順位レベルを有するティアへ分類されることを特徴とする請求項21記載の方法。
  23. 上記待ち行列状態情報は待ち行列が長期間に渡ってサービスされていないかどうかに関する情報を含み、上記長期間は予め定義されたタイムスロット数であることを特徴とする請求項21記載の方法。
  24. 長期間に渡ってサービスされていない各待ち行列は最も高い優先順位を有するティアの直ぐ下の優先順位レベルを有するティアへ分類されることを特徴とする請求項23記載の方法。
  25. 上記割り当てられた帯域幅に関する情報は、
    上記待ち行列の少なくとも幾つかに関するクレジット値であって、各クレジット値は各待ち行列の保証レートから上記待ち行列のキュー・メトリック情報を基礎として導出されるクレジット値と、
    各待ち行列が空であるかどうかに関する情報と、
    待ち行列が部分パケットを含むかどうかに関する情報と、
    待ち行列がその処理能力に見合う数のパケットを受信しているかどうかに関する情報と、
    待ち行列が長期間に渡ってサービスされていないかどうかに関する情報と、のうちの少なくとも2つ以上を含むことを特徴とする請求項1記載の方法。
  26. 共有リンクを介したアクセスを調停するための方法であって、
    待ち行列グループの各待ち行列について待ち行列状態情報を保持することを含み、上記待ち行列状態情報は各待ち行列の保証された帯域幅レート及び各待ち行列が空であるかどうかに関する情報を含み、
    上記共有リンクを介してサービスするための各タイムスロットの間に、
    上記待ち行列状態情報を使用して、各待ち行列を少なくとも2つのティアより成るグループからのティアにマップし、各ティアは異なる優先順位レベルを有し、かつ、
    より低い優先順位を有するティア内の待ち行列をマッチングする前に、より高い優先順位を有するティア内の少なくとも幾つかの待ち行列をマッチングすることにより上記待ち行列の幾つかをエグレスにマッチングすることを含むことを特徴とする方法。
  27. 上記待ち行列の幾つかをエグレスにマッチングすることは、
    最も高い優先順位を有するティアを選択することと、
    上記選択されるティア内の待ち行列のうちの1つを選択することと、
    上記エグレスが利用可能であれば上記選択される待ち行列をその希望されるエグレスにマッチングし、上記希望するエグレスが利用可能であれば上記エグレスを利用可能なエグレスのリストから削除することと、
    上記選択される待ち行列を考察されるべき待ち行列のリストから削除することと、
    上記待ち行列のうちの1つを選択するステップと、上記選択される待ち行列をマッチングするステップと、上記選択される待ち行列を削除するステップとを、上記選択されるティア内の全ての待ち行列が評価されるまで繰り返すこと、を含むことを特徴とする請求項26記載の方法。
  28. 共有リンクを介してサービスする待ち行列を選択するためのシステムであって、
    複数のイングレス内の待ち行列グループからの各待ち行列を個数「N」のティアのうちの1つのティアに分類するための手段を備え、上記数「N」は2より大きいか等しく、上記待ち行列のうちの少なくとも幾つかを上記ティアに分類するために待ち行列状態情報が使用され、待ち行列の各ティアには異なる優先順位が割り当てられ、
    より低い優先順位を有するティア内に分類される待ち行列をマッチングすべく試行するより前に、より高い優先順位を有するティア内に分類される待ち行列をマッチングすべく試行することによって待ち行列を利用可能なエグレスにマッチングするための手段を有することを特徴とするシステム。
  29. 共有リンクを介したアクセスを調停するためのシステムであって、
    待ち行列グループの各待ち行列について待ち行列状態情報を保持するための手段を備え、上記待ち行列状態情報は各待ち行列の保証された帯域幅レート及び各待ち行列が空であるかどうかに関する情報を含み、
    上記共有リンクを介してサービスするための各タイムスロットの間に、上記待ち行列状態情報を使用して各待ち行列を少なくとも2つのティアより成るグループからのティアにマップするための手段を備え、各ティアは異なる優先順位レベルを有し、
    上記共有リンクを介してサービスするための各タイムスロットの間に、より低い優先順位を有するティア内の待ち行列をマッチングする前に、より高い優先順位を有するティア内の少なくとも幾つかの待ち行列をマッチングすることにより上記待ち行列の幾つかをエグレスにマッチングするための手段を有することを特徴とするシステム。
  30. 共有リンクを介してサービスする待ち行列を選択するためのシステムであって、
    データ転送のための各タイムスロットの間にイングレス内の少なくとも幾つかの待ち行列のクレジット値を決定する、上記イングレス内のメータリング・モジュールを備え、各クレジット値は所定の待ち行列がその割り当てられた帯域幅を受信したかどうかを表示し、
    各タイムスロットの間に、(a)各待ち行列を、各々が異なる優先順位レベルを有する少なくとも2つのティアより成るグループからのティアにマップし、(b)より低い優先順位を有するティア内の待ち行列をマッチングする前に、より高い優先順位を有するティア内の少なくとも幾つかの待ち行列をマッチングすることにより上記待ち行列の幾つかをエグレスにマッチングする調停モジュールを有することを特徴とするシステム。
  31. 何らかの待ち行列グループのキュー・メトリック情報及び保証された帯域幅量を基礎として各待ち行列の保証された帯域幅レートを計算する帯域幅アロケータ・モジュールをさらに備え、上記メータリング・モジュールは上記保証されたレートを使用してクレジット値を決定することを特徴とする請求項30記載のシステム。
  32. 共有リンクを介して帯域幅を割り当てるための方法であって、
    ある待ち行列グループにおける各待ち行列のキュー・メトリックに関する情報を保持することと、
    上記待ち行列グループにおける各待ち行列の保証レートを、上記待ち行列メトリック情報及び保証された帯域幅量を基礎として計算することと、
    上記各待ち行列の保証レートを各待ち行列に関連づけられるイングレスへ送ることを含み、各イングレスは上記各待ち行列の保証レートを使用して各待ち行列のクレジット値を計算することが可能であり、
    少なくとも1つのイングレスから待ち行列状態情報を受信することを含み、上記待ち行列状態情報は少なくとも1つまたは複数の待ち行列のクレジット値を含み、
    上記クレジット値を使用することにより、各待ち行列を少なくとも2つのティアより成るグループからのティアへマップすることを含み、各ティアは異なる優先順位レベルを有し、
    より低い優先順位を有するティア内の待ち行列をマッチングすべく試行するより前に、より高い優先順位を有するティア内の少なくとも幾つかの待ち行列をマッチングすべく試行することによって待ち行列の幾つかをエグレスにマッチングすることを有することを特徴とする方法。
JP2006523205A 2003-08-12 2004-07-22 ネットワーク・スイッチにおいて帯域幅を保証しかつオーバーロードを防止する方法と装置 Pending JP2007512719A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/639,269 US7724760B2 (en) 2001-07-05 2003-08-12 Method and apparatus for bandwidth guarantee and overload protection in a network switch
PCT/US2004/023758 WO2005019975A2 (en) 2003-08-12 2004-07-22 Method and apparatus for bandwidth guarantee and overload protection in a network switch

Publications (1)

Publication Number Publication Date
JP2007512719A true JP2007512719A (ja) 2007-05-17

Family

ID=32230628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006523205A Pending JP2007512719A (ja) 2003-08-12 2004-07-22 ネットワーク・スイッチにおいて帯域幅を保証しかつオーバーロードを防止する方法と装置

Country Status (6)

Country Link
US (1) US7724760B2 (ja)
EP (1) EP1654616A4 (ja)
JP (1) JP2007512719A (ja)
KR (1) KR100933917B1 (ja)
CA (1) CA2535545A1 (ja)
WO (1) WO2005019975A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014042237A (ja) * 2012-08-06 2014-03-06 Renesas Electronics Europe Ltd ハードウェア回路、クレジットに基づくトラフィックシェイパー、装置、およびハードウェアによる実現方法

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850965B2 (en) * 1998-11-17 2005-02-01 Arthur Douglas Allen Method for connection acceptance and rapid determination of optimal multi-media content delivery over network
US7334044B1 (en) 1998-11-17 2008-02-19 Burst.Com Method for connection acceptance control and optimal multi-media content delivery over networks
US7415539B2 (en) * 2001-09-28 2008-08-19 Siebel Systems, Inc. Method and apparatus for detecting insufficient memory for data extraction processes
US20030103453A1 (en) * 2001-12-05 2003-06-05 Broadweb Corporation System and method for managing flow bandwidth utilization in a packet communication environment
US7385997B2 (en) * 2002-04-08 2008-06-10 International Business Machines Corporation Priority based bandwidth allocation within real-time and non-real-time traffic streams
US7227866B2 (en) * 2002-10-21 2007-06-05 Tropic Networks Inc. Fast work-conserving round robin scheduling
AU2002368389A1 (en) * 2002-11-21 2004-06-18 Wei-Han Lien Advanced telecommunications router and crossbar switch controller
US7734805B2 (en) * 2003-04-15 2010-06-08 Alcatel-Lucent Usa Inc. Method for scheduling transmissions in communication systems
US8199764B2 (en) * 2003-08-25 2012-06-12 Cisco Technology, Inc. Scalable approach to large scale queuing through dynamic resource allocation
US9065741B1 (en) * 2003-09-25 2015-06-23 Cisco Technology, Inc. Methods and apparatuses for identifying and alleviating internal bottlenecks prior to processing packets in internal feature modules
US20050174958A1 (en) * 2004-02-11 2005-08-11 Phonex Broadband Corporation Method and system for prioritazation and dynamic channel allocation within a communication system
US20060101469A1 (en) * 2004-11-10 2006-05-11 International Business Machines (Ibm) Corporation Method, controller, program product and services for managing resource element queues
US8125486B2 (en) * 2006-02-23 2012-02-28 Los Alamos National Security, Llc Combining multi-layered bitmap files using network specific hardware
US8553684B2 (en) * 2006-04-24 2013-10-08 Broadcom Corporation Network switching system having variable headers and addresses
US7733781B2 (en) * 2006-04-24 2010-06-08 Broadcom Corporation Distributed congestion avoidance in a network switching system
US7801164B2 (en) * 2006-04-27 2010-09-21 Agere Systems Inc. Two dimensional timeout table mechanism with optimized delay characteristics
US8005041B2 (en) 2006-05-08 2011-08-23 Ipwireless, Inc. Wireless communication system, apparatus for supporting data flow and method therefor
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7961745B2 (en) * 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7773621B2 (en) * 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7760748B2 (en) 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
GB0619519D0 (en) * 2006-10-04 2006-11-15 Siemens Ag Packet scheduling
WO2009051533A1 (en) * 2007-10-19 2009-04-23 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for scheduling data packets in a communication network system
US8040901B1 (en) * 2008-02-06 2011-10-18 Juniper Networks, Inc. Packet queueing within ring networks
US8625624B1 (en) * 2008-06-13 2014-01-07 Cisco Technology, Inc. Self-adjusting load balancing among multiple fabric ports
CN101621460B (zh) * 2008-06-30 2011-11-30 中兴通讯股份有限公司 一种分组调度方法和装置
US8005087B2 (en) * 2008-09-16 2011-08-23 Alcatel Lucent Application-level processing for default LTE bearer
GB2464310B (en) * 2008-10-10 2012-10-17 Micron Technology Inc Switching device
US8687639B2 (en) * 2009-06-04 2014-04-01 Nvidia Corporation Method and system for ordering posted packets and non-posted packets transfer
US8526452B1 (en) * 2009-07-13 2013-09-03 Viasat, Inc. Quality of service packet scheduler design
US8811407B1 (en) * 2009-11-30 2014-08-19 Cox Communications, Inc. Weighted data packet communication system
US8532098B2 (en) * 2009-11-30 2013-09-10 Nvidia Corporation System and method for virtual channel communication
US9331869B2 (en) * 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
CN102857442B (zh) * 2011-06-30 2017-11-21 马维尔国际贸易有限公司 传送队列状态的方法、网络设备及其产品
GB201111106D0 (en) * 2011-06-30 2011-08-10 Xelerated Ab Method, network device, computer program and computer program product for communication queue state
US9590820B1 (en) 2011-09-02 2017-03-07 Juniper Networks, Inc. Methods and apparatus for improving load balancing in overlay networks
US9998400B2 (en) * 2011-09-30 2018-06-12 British Telecommunications Public Limited Company Attribution of congestion contributions
WO2013073639A1 (ja) * 2011-11-15 2013-05-23 日本電気株式会社 ネットワーク通信装置、及び転送フレーム優先的帯域制限方法
JP2013118486A (ja) * 2011-12-02 2013-06-13 Nec Corp 回線中継装置、tdm回線迂回システムおよびtdm回線迂回制御方法
US8953449B2 (en) * 2012-03-22 2015-02-10 Fujitsu Limited Virtual subport data traffic management
US9331929B1 (en) * 2012-03-29 2016-05-03 Juniper Networks, Inc. Methods and apparatus for randomly distributing traffic in a multi-path switch fabric
WO2014032960A1 (en) * 2012-08-29 2014-03-06 Universiteit Gent Method and device for scheduling data traffic
US20140105218A1 (en) * 2012-10-12 2014-04-17 Prashant H. Anand Queue monitoring to filter the trend for enhanced buffer management and dynamic queue threshold in 4g ip network/equipment for better traffic performance
US9154438B2 (en) * 2013-01-24 2015-10-06 Cisco Technology, Inc. Port-based fairness protocol for a network element
US9582440B2 (en) * 2013-02-10 2017-02-28 Mellanox Technologies Ltd. Credit based low-latency arbitration with data transfer
WO2015012811A1 (en) 2013-07-23 2015-01-29 Hewlett-Packard Development Company, L.P. Work conserving bandwidth guarantees using priority
US9641465B1 (en) 2013-08-22 2017-05-02 Mellanox Technologies, Ltd Packet switch with reduced latency
ES2650498T3 (es) 2013-09-09 2018-01-18 Intercapital Services North America Llc Método y aparato para entrada de órdenes en un sistema de negociación electrónico
US9590914B2 (en) 2013-11-05 2017-03-07 Cisco Technology, Inc. Randomized per-packet port channel load balancing
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US10469404B1 (en) * 2014-05-12 2019-11-05 Google Llc Network multi-level rate limiter
US9900253B2 (en) 2014-08-28 2018-02-20 Cavium, Inc. Phantom queue link level load balancing system, method and device
US9813327B2 (en) 2014-09-23 2017-11-07 Cavium, Inc. Hierarchical hardware linked list approach for multicast replication engine in a network ASIC
US9760418B2 (en) 2014-09-23 2017-09-12 Cavium, Inc. Session based packet mirroring in a network ASIC
US9729338B2 (en) 2014-09-23 2017-08-08 Cavium, Inc. Fast hardware switchover in a control path in a network ASIC
US10291540B2 (en) 2014-11-14 2019-05-14 Cavium, Llc Method and apparatus for performing a weighted queue scheduling using a set of fairness factors
US10447608B2 (en) 2014-11-14 2019-10-15 Marvell Semiconductor, Inc. Packet scheduling using hierarchical scheduling process with priority propagation
US10110515B2 (en) 2014-11-14 2018-10-23 Cavium, Inc. Packet scheduling using hierarchical scheduling process
CN105991188B (zh) 2015-02-16 2019-09-10 阿里巴巴集团控股有限公司 一种检测共享风险链路组的方法及装置
WO2016133508A1 (en) * 2015-02-18 2016-08-25 Intel Corporation Traffic class arbitration based on priority and bandwidth allocation
US10419571B2 (en) 2015-03-24 2019-09-17 Cavium, Llc Packet processor forwarding database cache
US10305819B2 (en) * 2015-05-13 2019-05-28 Cisco Technology, Inc. Dynamic protection of shared memory used by output queues in a network device
US9866401B2 (en) 2015-05-13 2018-01-09 Cisco Technology, Inc. Dynamic protection of shared memory and packet descriptors used by output queues in a network device
US9990240B2 (en) * 2015-12-11 2018-06-05 Successfactors, Inc. Event handling in a cloud data center
EP3400687A4 (en) * 2016-01-08 2019-06-12 Inspeed Networks, Inc. BIDIRECTIONAL DATA TRAFFIC CONTROL
CN108234350B (zh) * 2016-12-21 2021-08-03 华为技术有限公司 一种调度方法及客户驻地设备
US11134021B2 (en) * 2016-12-29 2021-09-28 Intel Corporation Techniques for processor queue management
US10735221B2 (en) 2017-03-28 2020-08-04 Marvell International Ltd. Flexible processor of a port extender device
CN109104382B (zh) * 2017-06-20 2022-05-24 华为技术有限公司 一种动态调度方法、装置及***
CN107612846A (zh) * 2017-11-01 2018-01-19 北京天创凯睿科技有限公司 一种业务数据自适应传输方法及装置
US11343358B2 (en) 2019-01-29 2022-05-24 Marvell Israel (M.I.S.L) Ltd. Flexible header alteration in network devices
US11943149B2 (en) * 2019-10-15 2024-03-26 Hewlett Packard Enterprise Development Lp Arbiter with random tie breaking
US20210279192A1 (en) * 2020-03-06 2021-09-09 Infineon Technologies Ag Distribution of interconnect bandwidth among master agents

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10243000A (ja) * 1997-02-19 1998-09-11 Telefon Ab L M Ericsson スイッチングフロー制御
JP2001298477A (ja) * 2000-04-11 2001-10-26 Nec Corp パケット交換装置およびパケット交換方法
JP2002237841A (ja) * 2001-02-09 2002-08-23 Nec Corp パケット転送レート監視制御装置、方法、及びプログラム
WO2003005227A1 (en) * 2001-07-05 2003-01-16 Sandburst Corporation Method and apparatus for allocating link bandwidth
JP2003249952A (ja) * 2002-01-14 2003-09-05 Fujitsu Network Communications Inc クレジット履歴を利用する重み付けクレジット調停

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064677A (en) 1996-06-27 2000-05-16 Xerox Corporation Multiple rate sensitive priority queues for reducing relative data transport unit delay variations in time multiplexed outputs from output queued routing mechanisms
US6064651A (en) * 1996-06-27 2000-05-16 Xerox Corporation Rate shaping in per-flow output queued routing mechanisms for statistical bit rate service
US5963557A (en) 1997-04-11 1999-10-05 Eng; John W. High capacity reservation multiple access network with multiple shared unidirectional paths
JP3276341B2 (ja) 1999-02-23 2002-04-22 日本電信電話株式会社 パケット転送装置及びパケット転送方法
EP1161817B1 (en) 1999-03-17 2006-10-25 Broadcom Corporation Network switch
AU3752000A (en) * 1999-03-17 2000-10-04 Broadcom Corporation Method for managing congestion in a network switch
JP3319723B2 (ja) 1999-04-02 2002-09-03 日本電気株式会社 スイッチ及びそのスケジューラ並びにスイッチスケジューリング方法
JP2001016206A (ja) 1999-06-28 2001-01-19 Nec Corp 帯域共有制御装置
US6901452B1 (en) 2000-03-02 2005-05-31 Alcatel Selectable prioritization for data communication switch
JP4879382B2 (ja) * 2000-03-22 2012-02-22 富士通株式会社 パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置
US6862265B1 (en) * 2000-04-13 2005-03-01 Advanced Micro Devices, Inc. Weighted fair queuing approximation in a network switch using weighted round robin and token bucket filter
US6915372B2 (en) * 2000-08-31 2005-07-05 Tellabs Operations, Inc. Methods and apparatus for managing traffic through a buffered crossbar switch fabric
JP2002135269A (ja) 2000-10-20 2002-05-10 Nec Corp 優先制御装置および優先制御方法
JP3698079B2 (ja) * 2001-08-22 2005-09-21 日本電気株式会社 データ転送方法、データ転送装置及びプログラム
EP1573950B1 (en) * 2002-06-27 2017-10-18 Coriant Operations, Inc. Apparatus and method to switch packets using a switch fabric with memory
US7852829B2 (en) * 2003-06-19 2010-12-14 Polytechnic University Packet reassembly and deadlock avoidance for use in a packet switch

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10243000A (ja) * 1997-02-19 1998-09-11 Telefon Ab L M Ericsson スイッチングフロー制御
JP2001298477A (ja) * 2000-04-11 2001-10-26 Nec Corp パケット交換装置およびパケット交換方法
JP2002237841A (ja) * 2001-02-09 2002-08-23 Nec Corp パケット転送レート監視制御装置、方法、及びプログラム
WO2003005227A1 (en) * 2001-07-05 2003-01-16 Sandburst Corporation Method and apparatus for allocating link bandwidth
JP2003249952A (ja) * 2002-01-14 2003-09-05 Fujitsu Network Communications Inc クレジット履歴を利用する重み付けクレジット調停

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014042237A (ja) * 2012-08-06 2014-03-06 Renesas Electronics Europe Ltd ハードウェア回路、クレジットに基づくトラフィックシェイパー、装置、およびハードウェアによる実現方法

Also Published As

Publication number Publication date
US7724760B2 (en) 2010-05-25
WO2005019975A3 (en) 2009-05-07
WO2005019975A2 (en) 2005-03-03
US20040090974A1 (en) 2004-05-13
KR20060064627A (ko) 2006-06-13
EP1654616A2 (en) 2006-05-10
EP1654616A4 (en) 2010-10-20
KR100933917B1 (ko) 2009-12-23
CA2535545A1 (en) 2005-03-03

Similar Documents

Publication Publication Date Title
JP2007512719A (ja) ネットワーク・スイッチにおいて帯域幅を保証しかつオーバーロードを防止する方法と装置
US7415477B2 (en) Method and apparatus for allocating link bandwidth
US9112786B2 (en) Systems and methods for selectively performing explicit congestion notification
US8520522B1 (en) Transmit-buffer management for priority-based flow control
US6654343B1 (en) Method and system for switch fabric flow control
JP4879382B2 (ja) パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置
US7245586B2 (en) Buffer management based on buffer sharing across ports and per-port minimum buffer guarantee
US20020178282A1 (en) Methods and systems providing fair queuing and priority scheduling to enhance quality of service in a network
US9608927B2 (en) Packet exchanging device, transmission apparatus, and packet scheduling method
US20100172363A1 (en) Systems and methods for congestion control using random early drop at head of buffer
WO2002098080A1 (en) System and method for scheduling traffic for different classes of service
US9197570B2 (en) Congestion control in packet switches
US8665719B2 (en) Variable packet-size backplanes for switching and routing systems
EP2134037B1 (en) Method and apparatus for scheduling data packet flows
WO2015061357A1 (en) Enabling concurrent operation of tail-drop and priority-based flow control in network devices
WO2002098047A2 (en) System and method for providing optimum bandwidth utilization
US7619971B1 (en) Methods, systems, and computer program products for allocating excess bandwidth of an output among network users
WO2021143913A1 (zh) 拥塞控制方法、装置及***、存储介质
US7623456B1 (en) Apparatus and method for implementing comprehensive QoS independent of the fabric system
US7324536B1 (en) Queue scheduling with priority and weight sharing
Benet et al. Providing in-network support to coflow scheduling
KR100745679B1 (ko) 적응 라운드 로빈을 이용한 패킷 스케쥴링 방법 및 장치
JP4104756B2 (ja) 電気通信網においてデータパケットをスケジューリングする方法およびシステム
Oladeji et al. CWRR: A Scheduling Algorithm for Maximizing the Performance of Quality of Service Network Router

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070703

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070703

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100907