JP2004507160A - パケットをポート・コントローラからスイッチ・ファブリックへ転送するためのシステムおよび方法 - Google Patents
パケットをポート・コントローラからスイッチ・ファブリックへ転送するためのシステムおよび方法 Download PDFInfo
- Publication number
- JP2004507160A JP2004507160A JP2002520483A JP2002520483A JP2004507160A JP 2004507160 A JP2004507160 A JP 2004507160A JP 2002520483 A JP2002520483 A JP 2002520483A JP 2002520483 A JP2002520483 A JP 2002520483A JP 2004507160 A JP2004507160 A JP 2004507160A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- switch fabric
- port
- switch
- memory
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/33—Flow control; Congestion control using forward notification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9021—Plurality of buffers per packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/101—Packet switching elements characterised by the switching fabric construction using crossbar or matrix
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/205—Quality of Service based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3018—Input queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/351—Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/351—Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
- H04L49/352—Gigabit ethernet switching [GBPS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
パケットをポート・コントローラからスイッチ・ファブリック・システムにおけるスイッチ・ファブリックへ転送するためのシステム、方法および製造品を提供する。パケットがポート・コントローラにおいて処理されたことを指示する通知が受信される(1502)。処理されたパケットが出力優先待ち行列に割り当てられ、リンクされる(1504)。その後、パケットが、リンクを介して検索され、ポート・コントローラからスイッチ・ファブリックへ送信される(1510)。
Description
【0001】
(関連出願の相互参照)
本願は、2000年8月11日出願の「GIGABIT ETHERNET IP SWITCH CHIPSET」という名称の米国仮特許出願第60/225034号の利点を主張するものであり、これは全体としてあらゆる目的のために参照により本明細書に組み込まれる。
【0002】
(発明の分野)
本発明は一般にデータ・ルーティング・システムに関し、より詳細には、ネットワーク・スイッチを介したパケットのルーティングに関する。
【0003】
(発明の背景)
イーサネットは、幅広く導入されているローカル・エリア・ネットワーク技術である。米国電気電子学会(IEEE)802.3の規格において指定されたイーサネットは当初、Xeroxによって開発され、次いでさらにXerox、DECおよびIntelによって開発された。イーサネットLANは通常、同軸ケーブルまたは特殊なグレードのツイスト・ペア線を使用する。一般に導入されたイーサネット・システムは10BASE−Tと呼ばれ、最大10Mbpsの伝送速度を提供する。デバイスがケーブルに接続され、キャリア検知多重アクセス衝突検出(CSMA/CD)プロトコルを使用して、アクセスのために競争する。ファスト・イーサネットまたは100BASE−Tは最大100メガビット毎秒の伝送速度を提供し、LANバックボーン・システムのために使用することができ、10BASE−Tカードを有するワークステーションをサポートする。ギガビット・イーサネットは、さらにより高レベルのバックボーン・サポートを1000メガビット毎秒(1ギガビットまたは10億ビット毎秒)で提供する。
【0004】
ファスト・イーサネットはローカル・エリア・ネットワーク伝送規格であり、100メガビット毎秒のデータ率を提供する(「100BASE−T」と呼ばれる)。既存の10メガビット毎秒(10BASE−T)のイーサネット・カードを有するワークステーションを、ファスト・イーサネット・ネットワークに接続することができる。(100メガビット毎秒は共有データ率であり、各ワークステーションへの入力は10Mbpsカードによって制約される)。ギガビット・イーサネットはローカル・エリア・ネットワーク伝送規格であり、10億ビット毎秒(1ギガビット)のデータ率を提供する。ギガビット・イーサネットはIEEE802.3規格において定義されている。ギガビット・イーサネットは、エンタープライズ・バックボーンとして使用することができる。ギガビット・イーサネットを、光ファイバにおいて搬送することができる(銅媒体上では非常に短い距離が可能)。10および100Mbpsカードを有する既存のイーサネットLANは、ギガビット・イーサネット・バックボーンに送り込まれることが可能である。
【0005】
データを、パケット交換網を介して、デジタル信号を使用して送信することができる。パケット交換網では、ユーザが同じパスを同時に共有することができ、データ・ユニットが移動するルートは、状態が変化すると変わる可能性がある。パケット交換では、メッセージがパケットに分割され、これらはある数のバイトのユニットである。送信側および宛先のネットワーク・アドレスがパケットに追加される。各ネットワーク・ポイントがパケットを見て、これを次にどこへ送信するべきかを調べる。同じメッセージにおけるパケットは異なるルートを移動する可能性があり、それらが送信された順序と同じ順序で到着しない可能性がある。宛先では、メッセージにおけるパケットが収集され、元のメッセージに再び組み立てられる。
【0006】
階層化は、プログラミングを別々のステップに編成することであり、これらは順次実行され、特定のインターフェイスによって、各ステップの結果を次のプログラムまたは層へ、ある量の情報の送信または受信などの全体の機能が完了するまで渡すために、定義される。通信プログラムはしばしば階層化される。通信プログラムのための参照モデル、開放型システム間相互接続(OSI)は、階層化されたプロトコルのセットであり、これにおいては2つのプログラムが通信交換の両側にあり、等しいセットの層を使用する。OSIは7つの層を含み、それぞれが、プログラム対プログラムの通信をコンピュータの間で行うために実行されなければならない異なる機能を反映する。伝送制御プロトコルおよびインターネット・プロトコル(TCP/IP)は、2層セットのプログラムの一例であり、インターネット通信のためのトランスポートおよびネットワーク・アドレス機能を提供するものである。
【0007】
スイッチはインターネットワーキング・デバイスであり、データのユニットをその次の宛先へ送信するためのパスまたは回路を選択する。スイッチはルータの機能も含み、ルート、および特に、何の隣接ネットワーク・ポイントにデータが送信されるべきであるかを決定することもできる。階層化の開放型システム間相互接続(OSI)通信モデルに関して、スイッチをデータ・リンク層−レイヤ2に関連付けることができる。スイッチは、ネットワーク層−レイヤ3のルーティング機能を実行可能にすることもできる。レイヤ3スイッチは時としてIPスイッチとも呼ばれる。
【0008】
OSIのデータ・リンク層−レイヤ2は、データをネットワークにおいて物理リンクに渡って移動させることに関係する。ネットワークでは、スイッチを、データ・メッセージをレイヤ2レベルでリダイレクトするデバイスにすることができ、これは媒体アクセス制御(MAC)アドレスを使用して、どこにメッセージをダイレクトするべきであるかを決定する。データリンク層は2つのサブレイヤを含み、これらはIEEE−802のLAN規格において記載されており、すなわち媒体アクセス制御(MAC)および論理リンク制御(LLC)である。データ・リンク層は、最初の接続がセット・アップされていることを確かめ、出力データをデータ・フレームに分割し、受信側からの、データがうまく到着したという応答を処理する。これはまた、入力データがうまく受信されたことも保証し、これは、フレームにおける特殊な場所でのビット・パターンを解析することによって行う。
【0009】
OSIのネットワーク層−レイヤ3は、ネットワークにおける隣接ノードのアドレスを知ること、ルートおよびサービス品質を選択すること、およびローカル・ホスト・ドメインのための入力メッセージを認識し、かつトランスポート層へ転送することに関係する。スイッチをレイヤ3デバイスにすることができ、これはレイヤ3の機能を実行することができる。IPアドレスはレイヤ3アドレスである。
【0010】
交換は、その本質により、一時データ・フローを含む。ギガビット速度で、これらの一時的なものは非常に高速に、かつ非常にランダムな方法において発生する。過去においては、十分に高速な速度で、スイッチ・データ・フローのどのコンポーネントがダイレクトされるべきであるかを決定して、スイッチを通過するデータ・フローを最大限にし、かつスイッチにおいて妨害となるトラフィックを低減することは困難であった。
【0011】
(発明の概要)
パケットをポート・コントローラからスイッチ・ファブリック・システムにおけるスイッチ・ファブリックへ転送するためのシステム、方法および製造品を提供する。パケットがポート・コントローラにおいて処理されたことを指示する通知が受信される。処理されたパケットが出力優先待ち行列に割り当てられ、リンクされる。その後、パケットが、リンクを介して検索され、ポート・コントローラからスイッチ・ファブリックへ送信される。
本発明の一態様では、パケットを、リンクされたリストにおいて割り当てられた出力優先待ち行列にリンクすることができる。
【0012】
本発明の一実施形態では、後に処理されたパケットを、同じ出力優先待ち行列に割り当て、リンクすることができる。オプションとして、ポインタがパケットを、後に処理されたパケットにリンクすることができる。本発明の別の実施形態では、パケットをメモリに格納し、メモリから検索することができる。さらなるオプションとして、パケットをメモリに、複数のリンクされたセルにおいて格納することができる。
本発明の別の態様では、処理されたパケットが、スイッチ・ファブリックを介してアクセス可能なパケットのための1つまたは複数の宛先を指示する宛先ベクトルを含むことができる。
【0013】
本発明はまた、パケットをポート・コントローラのメモリに格納するためのデータ構造も含むことができる。データ構造は複数の待ち行列を含むことができ、各待ち行列はそれに関連付けられたヘッド/開始アドレスを有する。1つまたは複数のパケットがメモリに格納され、各パケットは待ち行列のうち1つに割り当てられる。各待ち行列について、開始アドレスが、待ち行列におけるパケットの最初のものへのリンクを有することができ、待ち行列における各パケットは、待ち行列における次の後続のパケットへのリンクを有することができる。一態様では、各パケットをメモリに、複数のリンクされたセルにおいて格納することができる。好ましい実施形態では、ポインタがパケットのセルを、パケットの後続のセルへリンクし、パケットの最後のセルはヌル・ポインタを有する。
【0014】
以上および他の特徴、態様、および利点は、以下の詳細な説明、添付の請求項、および添付の図面から、より良く理解される。
【0015】
(詳細な説明)
イーサネット・スイッチ・ファブリック・チップセット・システムは、スイッチ・ファブリック・トポロジ、および、32ギガビットのイーサネット・データ・ストリームのワイヤスピード、ノンブロッキング、レイヤ2およびレイヤ3のスイッチングを支持することができるマルチプロセッサ・ポート・コントローラを使用して開示されている。これは、ネットワーク・プロセッサとして当技術分野で知られているものに拡張することができる。スイッチング技術の基本的な理解のために、読者は、Rich Seifert(John Wiley&Sons,Inc.2000)によるThe Switch Book:the complete guide to LAN switching technologyを指示される。これは、あらゆる目的のために、参考文献によって完全に本明細書に組み込まれている。
【0016】
本明細書に記述したシステムにより、どのスイッチ・ファブリック構成要素の過渡的なデータ・フローを向けることができるかに関する決定は、他のデータ・フロー・トラフィックによるブロッキングを防止しながら、スイッチ・ファブリック・システムを通るデータ・フローを最大にするのに十分な速さで実施することが可能である。これは、過渡現象が生じる前に可能な限り多くの決定を実施し、かつ、考慮の決定を、スイッチ・ファブリックを通る経路全体ではなく、単に経路の次のスイッチ・ファブリック構成要素とすることによって、達成される。この解決法の一部として、スイッチ・ファブリックを通して状況と制御の情報を送り返すことに備え、かつ、制御経路における初期接続手順の必要性を軽減または排除することを支援するために、データ経路の他に、分離制御経路を提供することが可能である。この解決法の他の一部として、制御経路を使用して更新することができる各スイッチ・ファブリック構成要素の内側に、スイッチング・テーブルを提供することが可能である。
【0017】
(システム構成)
図1は、本発明の実施形態による、マルチポート・スイッチ・アーキテクチャ100の概略的なブロック図である。一般に、このマルチポート・スイッチ・アーキテクチャ100は、スイッチ・ファブリック104を介して互いに相互接続された複数のポート・コントローラ(例示した実施形態では32のポート・コントローラ)102、ポート・コントローラ102に接続されたネットワーク制御プロセッサ106、およびスイッチ・ファブリック104を備える。図1に示したように、要素間の接続(例えば108、110、112)は、双方向である。
【0018】
さらに図1を参照すると、このマルチポート・スイッチ・アーキテクチャ100の特定の実施形態では、スイッチ・ファブリックは、クロス・ネットワーク構成/トポロジとして知られているものにおいて双方向コンジット(例えばコンジット110)を介して共に接続されている複数のスイッチ・ファブリック構成要素(例示した実施形態では12のスイッチ・ファブリック構成要素)104a、104b、104c、104d、104e、104f、104g、104h、104i、104j、104k、104lを備えることが可能である。図1に示した特定の構成は、スイッチ・ファブリック構成要素(104a、104b、104c、104dおよび104i、104j、104k、104l)の外側ステージの対を接続するスイッチ・ファブリック構成要素(104e、104f、104g、104h)の中間ステージを有する3つのステージまたは層のクロス・ネットワーク・トポロジとして知られている。
【0019】
スイッチ・ファブリック104のクロス・ネットワーク・トポロジにより、各外側ステージのスイッチ・ファブリック構成要素104a、104b、104c、104dおよび104i、104j、104k、104lは、独立したコンジットを介して、中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hの各々に直接結合される。例えば、図1では、スイッチ・ファブリック構成要素104aは、それを4つの中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hに結合する4つのコンジットを有する。逆に、スイッチ・ファブリック104のクロス・ネットワーク・トポロジにより、中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hの各々は、独立したコンジットを介して、外側ステージのスイッチ・ファブリック構成要素104a、104b、104c、104d、104i、104j、104k、104lの各々に直接結合される。したがって、図1に示した実施形態では、中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hは、外側ステージのスイッチ・ファブリック構成要素104a、104b、104c、104d、104i、104j、104k、104lの各々への直接的で独立した接続を有する。
【0020】
また、スイッチ・ファブリックを横切る単一のパケットのために、単一の外側ステージのスイッチ/ファブリック構成要素を備える入力ステージ、中間ステージのスイッチ・ファブック構成要素を備える中間ステージ、および、スイッチ・ファブリック構成要素間の双方向の接続性のために残りの外側ステージのスイッチ・ファブリック構成要素を備える外側ステージを有するような、図1に示した特定の実施形態を考慮することが可能であることに留意されたい。
【0021】
各外層のスイッチ・ファブリック構成要素104a、104b、104c、104d、104i、104j、104k、104lは、直接それに結合/接続された複数のポート・コントローラを有する。図1に示した実施形態では、外層のスイッチ・ファブリック構成要素の各々は、1つのコンジット(例えばコンジット108)が各ポート・コントローラに対応する、4つのコンジットによってそれに結合された4つのポート・コントローラを有する。例えば、スイッチ・ファブリック104aは、4つの別々の双方向コンジットによってそれに結合されたポート・コントローラ102a、102b、102c、102dを有する。この実施形態の一態様では、ポート・コントローラ102は、すべて、ギガビットのポート・コントローラを備えることが可能である。
【0022】
スイッチ・ファブリックのクロス・ネットワーク・トポロジの特徴は、ノンブロッキング・トポロジであるということである。各ポート・コントローラから、中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hのそれぞれを通る同じスイッチ・ファブリック構成要素に直接結合されていない他のすべてのポート・コントローラまで、経路が存在する。例えば、スイッチ・ファブリック構成要素104aに接続されたポート・コントローラ102a、102b、102c、102dは、中間ステージのスイッチ・ファブック構成要素104e、104f、104g、104hの各々を介して、他の外側ステージのスイッチ・ファブリック構成要素104b、104c、104d、104i、104j、104k、104lのすべてに結合されたポート・コントローラに接続されている。
【0023】
図1に示した構成100の好ましい実施形態では、全体で32ギガビットのイーサネット・ポート・コントローラのためのスイッチ・ファブリック構成要素の各外側ステージに提供された、16ギガビットのイーサネット・ポート・コントローラが存在することが可能である。この好ましい実施形態では、16ギガビットのイーサネット・ポート・コントローラの各セットからの最大スループットの要求は、16×2(2倍)ギガビット・イーサネット・データ・ストリーム=32Gbps+[(32Gbps+オーバーヘッド)+(32Gbps+オーバーヘッド)]の両方向における最大スループットの要求に対するオーバーヘッド=64Gbps+オーバーヘッドとなることが可能である。そのような好ましい実施形態では、32ギガビットのイーサネット・ポート構成におけるスイッチ・ファブリック構成要素の各々は、16Gbpsにオーバーヘッドを加えたスループット能力を有する変更された8ポートのクロスバー・スイッチ・ファブリックとすることが可能である。スイッチ・ファブリックの中間ステージは、これらのデバイスの4つを備えるので、中間ステージのスループットは、全体で64Gbpsにオーバーヘッドを加えたものとすることが可能である。
【0024】
図2は、本発明の実施形態による、他のマルチポート・スイッチ・アーキテクチャ200の概略的なブロック図である。この実施形態では、マルチポート・スイッチ・アーキテクチャ200は、単一のスイッチ・ファブリック構成要素204を備えるスイッチ・ファブリックを介して共に相互接続された4つのポート・コントローラ202a、202b、202c、202dを備える。そのような実施形態の一態様では、ポート・コントローラ202a、202b、202c、202dは、図1に示したポート・コントローラのアーキテクチャと同様のアーキテクチャを有するファスト・イーサネット・ポート・コントローラを備えることが可能である。
【0025】
図3は、本発明の実施形態による、ギガビット・アップリンキング300の概略的なブロック図である。アップリンキング300は、双方向に一緒に結合された第1ポート・コントローラ302aと第2ポート・コントローラ302bを備える。そのような実施形態の一態様では、ポート・コントローラの一方は、図2に示したマルチポート・スイッチ・アーキテクチャ200で使用したタイプのようなファスト・イーサネット・ポート・コントローラ302aを備えることが可能であり、他のポート・コントローラ302bは、図1に示したマルチ・ポート・スイッチ・アーキテクチャ100で使用したタイプのようなギガビット・ポート・コントローラを備えることが可能である。
【0026】
(ポート・コントローラ)
各ポート・コントローラは、パイプライン処理と呼ばれる技術を実施する。パイプライン処理は、複数の命令が実行の際に部分的に重なる実施技術である。パイプラインは、一連のステージとして定義することができ、各ステージで何らかの作業が行われる。一般にポート・コントローラは、物理インターフェイス(PHY)からイーサネット・パケットを受け取り、それらを処理し、スイッチ・ファブリックに送るための、第1のパイプラインを有する。ポート・コントローラはまた、類似するが複雑さのより低い第2のパイプラインも有し、これはスイッチ・ファブリックからイーサネット・パケットを受け取り、それらを物理インターフェイス(PHY)に送るためのものである。
【0027】
一般に、ポート・コントローラの好ましいバージョンが少なくとも2つあるものとすることができる。第1の好ましいバージョンは、単一(二重)ギガビット・イーサネット・ラインに対してワイヤ速度のパケット処理およびその他のポート・コントローラ機能を提供することができる。第2の好ましいバージョンは、8本のファスト・イーサネット(またはイーサネット)・ラインに対して同じ機能を提供することができる。これらのデバイスは、スイッチ・ファブリックによって構成して、32本のギガビット・イーサネット・ラインまで、または256本のファスト・イーサネット・ラインまでのワイヤ速度レイヤ2/3切換えを実現することができる。
【0028】
図4は、本発明の一実施形態によるポート・コントローラ400のアーキテクチャの概略ブロック図である。ポート・コントローラ400は、メディア・アクセス制御(MAC)ユニット402、入口ダイレクト・メモリ・アクセス(入口DMAまたはIDMA)ユニット404、ヘッダ待ち行列406、パケット・プロセッサ・ユニット408、ダイナミック・ランダム・アクセス・メモリ(DRAM)コントローラ410、出力向けスケジューラ412、インターフェイス・トランスミッタ414、フリー・セル・マネージャ416、同期スタティック・ランダム・アクセス・メモリ(SSRAM)コントローラ418、インターフェイス・レシーバ420、出口コントローラ422、出口バッファ424、およびネットワーク・インターフェイス426を備える。DRAMコントローラ410は、外部パケット・バッファ/メモリと呼ばれる第1メモリに結合されるが、このメモリは、同期DRAM(SDRAM)など何らかの種類のダイナミック・ランダム・アクセス・メモリであることが好ましい。DRAMコントローラ410は、第1メモリ/外部パケット・バッファを制御し、外部パケット・バッファに対してデータの読取りおよび書込みを行う。SSRAMコントローラ418は、ポート・コントローラの第2メモリに結合されるが、このメモリは、何らかの種類の同期スタティック・ランダム・アクセス・メモリ(SSRAM)であることが好ましい。
【0029】
MACインターフェイス402は、データ・パケットを送受信するためにイーサネット物理層インターフェイス(PHY)に接続可能である。一実施形態では、MACインターフェイス402は、GMIIインターフェイスを備えたギガビットMACを含むことができる。MACインターフェイス402は、入口DMA404に結合されて、MACインターフェイスによって受信された入力データ・パケットを入口DMA404に送ることができるようにする。
【0030】
入口DMA404は、ヘッダ待ち行列406、DRAMコントローラ410、およびフリー・セル・マネージャ416に結合されている。入力データ・パケットをMACインターフェイス402から受け取ると、入口DMA404は、パケットの本体部分からパケットのヘッダ部分を分離する。次いで、パケットのヘッダ部分は、入口DMA404からヘッダ待ち行列406に転送され、パケットの本体部分は、外部パケット・バッファにリンク・リストで記憶されるようにDRAMコントローラ410に転送される。入口DMA404はまた、パケット・プロセッサ408によって処理されているヘッダ部分に対して、メモリ中の予約された空間へのリンクを定義することも担い、このリンクは、ヘッダ部分が処理された後で入口DMAが処理済みヘッダ部分をメモリに記憶するのに使用する。入口DMAはまた、パケットの記憶が完了したときに出力向けスケジューラ412に通知することも担う。
【0031】
ヘッダ待ち行列406は、パケット・プロセッサ・ユニット408に結合されている。好ましい一実施形態では、ヘッダ待ち行列406は、パケット・プロセッサ・ユニット408によって先入れ先出し(FIFO)処理されるように、入口DMA404から受け取ったヘッダを記憶する。
【0032】
パケット・プロセッサ・ユニット408は、パケットを分析および処理する働きをする。一実施形態では、パケット・プロセッサは複数のパケット・プロセッサを含む。図4に示す実施形態では、パケット・プロセッサ・ユニットは2つのパケット・プロセッサP0およびP1、408aおよび408bを含み、これらは、ヘッダ待ち行列406中のヘッダを処理する際に交互になる。
【0033】
パケット・プロセッサ408は、入力パケットのヘッダ部分をどのように処理するか決定する。パケット・プロセッサ408によるヘッダ部分の処理は、ルックアップ・アドレス・テーブルを利用することによってパケットの宛先を決定し、パケットのヘッダ部分に内部タグ(宛先ベクトルを含む)を付け、次いで処理の完了をヘッダ待ち行列406に通知することを含む。アドレス・ルックアップは、外部SSRAMに記憶された外部アドレス・テーブルにアクセスする(SSRAMコントローラ418を介して)ことによって行う(このSSRAMは、他の必要情報を記憶するのにも使用される)。
【0034】
出力向けスケジューラ412は、パケットが処理されたときに入口DMAから通知を受け取る。出力向けスケジューラ412はまた、DRAMコントローラ410を介して外部パケット・バッファから処理済みパケットをリトリーブできるように、DRAMコントローラ410に結合されている。処理済みパケットをパケット・バッファからリトリーブすると、出力向けスケジューラ412は、ポート・コントローラ400の外に送るために、リトリーブしたパケットをインターフェイス・トランスミッタ414(または定義された優先順位に応じてネットワーク・インターフェイス426)に転送する。
【0035】
DRAMコントローラ410は、入口DMA404から外部パケット・バッファにデータを書き込むための書込みコマンドを実行する。DRAMコントローラ410はまた、出力向けスケジューラ412から読取りコマンドを受け取ると、パケット・バッファから出力向けスケジューラ412へのデータの読取りおよび転送も実行する。
【0036】
インターフェイス・トランスミッタ414は、出力向けスケジューラ412に結合されている。インターフェイス・トランスミッタは、別のポート・コントローラまたはスイッチ・ファブリック・コンポーネントへの接続を可能にする外部入出力を有する。出力向けスケジューラ412は、処理済みパケットをインターフェイス・トランスミッタ414から外部入出力を介してスイッチ・ファブリック・コンポーネントまたは別のポート・コントローラに送ることができるようにするために、処理済みパケットをインターフェイス・トランスミッタ414に送る。
【0037】
フリー・セル・マネージャ416は、入口DMA404および出力向けスケジューラ412に結合されており、それによりDRAMコントローラ410と通信することができる。フリー・セル・マネージャ416は、外部パケット・バッファ空間を管理し、データ記憶に利用可能なメモリ中の空間について入口DMA404に通知し、データ(すなわち処理済みパケット)が出力向けスケジューラ412によってリトリーブされた後でメモリ空間を開放する。
【0038】
インターフェイス・レシーバ420は、スイッチ・ファブリック・コンポーネントまたは別のポート・コントローラに接続可能な外部入出力を有し、スイッチ・ファブリック・コンポーネントまたは他のポート・コントローラからパケットを受け取ることを可能にする。出口コントローラ422は、インターフェイス・レシーバ420に結合されている。出口コントローラ422には、出口バッファ424およびMACインターフェイス402が結合されている。出口コントローラ422は、インターフェイス・レシーバから受け取った送信パケットを出口バッファ424に一時的に記憶し、次いでその後、PHYに送られるように、記憶したパケットを出口バッファ424からMACインターフェイス402に転送する。
【0039】
ネットワーク・インターフェイス・ユニット426は、外部入出力または内部チャネルを介してホスト・プロセッサとデータを交換する。ネットワーク・インターフェイス・ユニット426は、ホスト・プロセッサによって作成された制御パケットを分析し、内部レジスタを読み取り、ルックアップ・テーブルの内容を変更する。好ましい一実施形態では、ポート・コントローラのあらゆる内部ユニットをホスト・プロセッサによってネットワーク・インターフェイス・ユニット426を介して制御できるように、あらゆる内部ユニットはネットワーク・インターフェイス(NPI)バスに接続される。
【0040】
SSRAMコントローラ4018は、第2メモリ(SSRAM)に結合され、SSRAMへのアクセスを制御する。ネットワーク・インターフェイス・ユニット4026およびパケット処理ユニット408がSSRAMコントローラに結合され、したがってSSRAMにアクセスする。SSRAMコントローラ4018は、ネットワーク・インターフェイス・ユニットおよびパケット処理ユニットからの要求を調停する。
【0041】
(パケット処理)
ポート・コントローラ400中では、パケットは、受信された順序に従ってパケット・メモリ/バッファに保存することができる。しかし、本発明の好ましい一実施形態では、入力パケットのヘッダ・フィールドと本体フィールドとの保存順序を変更することのできる、よりフレキシブルなパケット・ソーティング構成を利用することができる。
【0042】
通常、イーサネット・ヘッダおよびTCP/IPヘッダを有するパケットを処理するときは、従来型のスイッチ中でイーサネット・フィールドまたはIPフィールドだけを使用して、切換え方向を決定することができる。対照的に、本明細書で述べるスイッチ・ファブリック・システムの実施形態では、イーサネットとIPフィールドの両方、ならびにTCPフィールドを使用して切換え方向を決定することができる。しかし、このような処理能力を用いると、このような逐次的なパケット保存順序ルーチンは、ヘッダの処理に十分な時間および/または効率を提供することが不可能(または非実際的)であることにより、パケット処理中に獲得できる情報の量を制限する恐れがある。ヘッダ・フィールドと本体フィールドの保存順序を変更することにより、処理中により多くの情報を獲得することができ、それにより、本体フィールドの保存中にヘッダ・フィールドを処理するための追加のタイミング余裕がもたらされ、効率を最大限にしてメモリ・オーバヘッドを縮小することができる。
【0043】
図5は、本発明の一実施形態による、スイッチ・ファブリックを介して送信するためのデータグラムを作成するプロセス500のフローチャートである。まず動作502で、ヘッダ部分および本体部分を有するデータグラムを受信する。動作504および506で、ヘッダ部分を本体部分から分離し、次いで処理のために転送する。動作508で、分離した本体部分をメモリに記憶する。動作510および512で、ヘッダ部分を処理後に受け取り、メモリに記憶する。
【0044】
本発明の一実施形態では、本体部分をメモリに記憶する前に、ヘッダ部分を記憶するためにメモリ中の空間を予約することができ、予約済み空間を突き止めるための、予約済み空間へのリンクもまた生成される。このような実施形態におけるオプションとして、処理済みヘッダを記憶することはさらに、リンクを利用して予約済み空間を突き止め、次いで処理済みヘッダを予約済み空間に記憶することを含むこともできる。
【0045】
本発明の一態様では、本体部分を複数のセルに分割することができる。このような態様では、本体部分をメモリに記憶することはさらに、各セルを逐次的にメモリに記憶し、逐次的に記憶したセル間のリンクを生成することを含むことができる。本発明の別の態様では、処理済みヘッダ部分は、パケットのルーティング先となるスイッチ・ファブリック・システム中の宛先を示す宛先ベクトルを含むことができる。このような態様の好ましい一実施形態では、宛先ベクトルは32ビットのデータを含むことができる。
【0046】
本発明の別の実施形態では、後でスイッチ・ファブリックを介して送信するために、データグラムを出力優先順位待ち行列に割り当てることができる。
【0047】
図6は、本発明の一実施形態による例示的なパケット600の概略図である。パケットは、パケット交換ネットワーク上の発信源と宛先との間でルーティングされるデータの単位として定義することができる。パケット600は、ヘッダ部分またはフィールド(「ヘッダ」)602と、本体部分またはフィールド(「本体」)604を含む。ヘッダ部分602は、切換に使用される制御情報を含み、本体604は一般に、パケットの残りを含む。
【0048】
図6に示す例示的なパケット中では、ヘッダ部分602は処理済みであり、パケットの宛先を示す宛先ベクトル606と、パケットのソースを示すソース・ベクトル608と、パケットの長さを示す長さベクトル610(これらは総称して「内部タグ」または「内部タグ・フィールド」とも呼ばれる)を含む。ヘッダ部分602は、パケットのMAC/TCP/IPおよび何らかのアプリケーション・データも含むことができる。
【0049】
図7は、本発明の一実施形態による、パケット600を処理するプロセス700のフローチャートである。動作702で、入力パケットを受信する。入力パケットは、ヘッダ部分および本体部分を含む。動作704で、パケットのヘッダ部分を本体部分から分離する。次いで動作706で、分離した本体部分をメモリに記憶する。動作2308で、好ましくは動作2306と同時に、ヘッダ部分を処理する。動作2310で、後続の(または第2の)パケットを受信し、この第2のパケットに対してプロセス700を繰り返す。第1の入力パケットのヘッダ部分を処理すると、次いで動作712で、処理済みヘッダ部分をメモリに記憶する。
【0050】
図8は、本発明の一実施形態による、図7で述べたパケット処理プロセス700をポート・コントローラ400中で示した第1の概略流れ図である。入力パケット600が、MACインターフェイス402を介してポート・コントローラの中に受信され、MACインターフェイス402は、パケットを入口DMA404にルーティングする(矢印802参照)。入口DMA404中で、パケットのヘッダ部分602がパケットの本体604から分離される(動作704参照)。次いで入口DMA404は、ヘッダ部分602を処理のためにヘッダ待ち行列406に転送し(矢印806参照)、本体部分604を、DMAコントローラ410を介してメモリ(「パケット・メモリ」)804に記憶する(矢印808および動作706参照)。
【0051】
ヘッダ部分602を処理するために(動作708参照)、ヘッダ待ち行列406は、パッケージ・プロセッサ・ユニット408中の利用可能なパッケージ・プロセッサにヘッダ部分602を転送する(矢印810参照)。ヘッダ部分がパケット・プロセッサ・ユニット408によって処理された後、処理済みヘッダ部分はヘッダ待ち行列406に戻される(矢印812参照)。
【0052】
図9は、本発明の一実施形態による、図7で述べたパケット処理プロセス700をポート・コントローラ400中で示した第2の概略流れ図である。処理済みヘッダ部分は、ヘッダ待ち行列406に戻った後、続いて入口DMA404およびDRAMコントローラ410を介してパケット・メモリ804に記憶される(矢印902参照)。
【0053】
入口DMA404は、処理済みヘッダ部分を記憶すると、パケットの送信準備が今やできたことを出力向けスケジューラ412に通知し、パケットをパケット・メモリ804からリトリーブするための情報を出力向けスケジューラに提供する(矢印904参照)。出力向けスケジューラ412は、パケットを送信する準備ができたとき、パケットをパケット・メモリ8046からリトリーブして、インターフェイス・トランスミッタ414に転送する。インターフェイス・トランスミッタ414は、ポート・コントローラ400からパケットを出力する(矢印906参照)。
【0054】
図10は、本発明の一実施形態による、ポート・コントローラに入力される複数の入力パケットの処理および記憶の一例を示す概略図である。この図では、第1の入力パケット1002はポート・コントローラのイングレスDMA404によって受信され、その後に第2のパケット1004、第3のパケット1008、第4のパケット1008が続く。上記の通り、各パケットはヘッダ部分(1002a、1004a、1006a、1008a)と本体部分(1002b、1004b、1006b、1008b)から構成される。各パケットが受信される際、イングレスDMA404によって本体部分からヘッダ部分が分離される。次いで分離された本体部分はパケット・メモリ804に記憶され、一方、ヘッダ部分はパケット・プロセッサ・ユニット408による処理のために送られる(注意:簡約化のため、図10ではヘッダ・キュー406は省略した)。ヘッダ部分のそれぞれの処理が完了すると、そのヘッダ部分のそれぞれはイングレスDMA404を介してパケット・メモリ804に記憶される(簡約化のため、図10ではDRAMコントローラ410も省略したことに注意されたい)。
【0055】
図10に示すように、本体部分と処理済みヘッダ部分は、イングレスDMAによって受信された順番にパケット・メモリに記憶される。例えば、第1のパケット1002のヘッダ部分と本体部分を受信し分離する際、第1の本体部分1002bはメモリ804に記憶され、一方、第1のヘッダ部分1002aはパケット・プロセッサ・ユニット408による処理のために転送される。第1のヘッダ部分1002aが処理されている間、イングレスDMA404は第2のパケット1004を受信し、第2のパケットのヘッダ部分と本体部分とを分離する。次いで第2の本体部分1004bはメモリに記憶され、第2のヘッダ部分1004aは処理のために送られる。この時点で、第1のヘッダ部分1002aの処理は完了しており、処理済みの第1のヘッダ部分は処理から転送されてメモリ804に記憶される。
【0056】
次に、第2のヘッダ部分1004aが処理されている間、イングレスDMAは第3のパケット1006を受信し、第3のパケットのヘッダ部分と本体部分とを分離する。次いで第3の本体部分1006bはメモリに記憶され、一方、第3のヘッダ部分1006aは処理のために送られる。この時点までに、第2のヘッダ部分1004aの処理は完了しており、その処理済みヘッダ部分は処理から転送されて、メモリに記憶される。第3のヘッダ部分1006aが処理されている間、イングレスDMAは第4のパケット1008を受信し、第4のパケットのヘッダ部分と本体部分とを分離する。次いで第4の本体部分1008bはパケット・メモリに記憶され、一方、第4のヘッダ部分1008aは処理のために送られる。この時点までに、第3のヘッダ部分1006aの処理は完了しており、その処理済みの第3のヘッダ部分は処理から転送されて、メモリに記憶される。最後に、第4のヘッダ部分1008aの処理が完了すると、これもまた処理から転送されて、メモリに記憶される。
【0057】
図11は、本発明の一実施形態による、パケットの本体部分からヘッダ部分を分離するプロセス704の流れ図である。オペレーションA4302では、入力パケットは受信された際にセルに分割される。入力パケットの第1のセルには、ヘッダ部分が含まれる。このヘッダ部分は、1つまたは複数のMAC/IP/TCPヘッダならびにアプリケーション・データを含むことができる。好ましい一実施形態では、各セルは128バイトのサイズを有することができる。オペレーション1104では、ヘッダ部分(すなわち、第1のセル)のためにメモリに空間が予約される。次いで、オペレーション1106でメモリ内の予約済み空間を指し示すポインタが生成される。次いでこのヘッダ部分は、オペレーション1108の処理に送られる。
【0058】
図12は、本発明の一実施形態による、パケットの本体部分をヘッダ部分からの分離後にメモリに記憶するプロセス706を示す流れ図である。オペレーション1202では、パケットの本体部分の第1の受信されたセル(すなわち、入力パケットの第2のセル)がメモリに記憶される。オペレーション1204では、そのセルをヘッダ部分(すなわち、パケットの第1のセル用に予約された空間)のために予約された空間にリンクするためのポインタが生成される。入力パケットの後続の各入力セルも、記憶されているセルのそれぞれを総合的にリンクするために、新たに記憶されたセルから前回記憶されたセルへのポインタと共にメモリに記憶される(判断1206およびオペレーション1208および1210を参照のこと)。
【0059】
図13は、本発明の一実施形態による、メモリにパケットの処理済みヘッダ部分を記憶するプロセス712を示す流れ図である。オペレーション1302で、処理済みヘッダ部分が受信される。オペレーション1304では、処理済みヘッダ部分のためにメモリに予約された空間が、その予約済み空間を指し示すポインタを用いて捜し出される(オペレーション1204を参照のこと)。次いで処理済みヘッダは、オペレーション1306で予約済みの空間に記憶される。
【0060】
図14は、本発明の一実施形態による、入力パケットのセルのメモリへの記憶を示す概略図である。入力パケット1400は、イングレスDMA404によって受信された際に複数のセル(C01402、C11404、C21406、C31408、C41410)に分割される(図11のオペレーション1102を参照のこと)。図14に示すように、第1のセルC01402はパケットのヘッダ部分を含んでおり、一方、残りのセルC11404、C21406、C31408、C41410はパケットの本体部分を含んでいる。
【0061】
パケット・メモリ1412では、空間1414がそのヘッダを含んでいるので第1のセルC01402のために予約されており、その予約済み空間を指し示すポインタが生成される(図11のオペレーション1104および1106を参照のこと)。一実施形態では、予約済み空間のサイズは、処理中にそのヘッダ部分に追加される可能性のある任意の追加データに対して十分な空間を提供するために、予約済みの第1のセルC01402のサイズよりも大きい場合がある(図7の708を参照のこと)。次いで予約済み空間1414を指し示すポインタ1416が生成され、その結果、現在処理されているヘッダ部分を含んでいる第1のセルC01402が予約済み空間に引き続いて記憶することができる(図11のオペレーション1106を参照のこと)。
【0062】
次に、入力パケット1400の本体部分の第1のセグメントを含んでいる第2の受信されたセルC11404が、パケット・メモリ1412に記憶され(図12のオペレーション1202を参照のこと)、記憶されているセルC11404を予約済み空間にリンクするためのポインタ1418が生成される(図12のオペレーション1204を参照のこと)。第3のセルC21406が受信されると、これもまたパケット・メモリ1412に記憶することができ、記憶されているセルC21406を前回記憶されたセルC11404にリンクするためのポインタ1420が生成される(図12のオペレーション1206、1208、および1210を参照のこと)。同じ要領で、第4と第5のセルC31408、C41410が受信される際に、これらはそれぞれパケット・メモリ1412に記憶されることができ、ポインタ1422、1424を生成させて、セルC3をC2に、また、セルC4をセルC3にそれぞれリンクする。図12に示すプロセスによれば、第5のセルC41410はパケット1400の最終セルなので、第5のセルC4はポインタを含んでいる(1426を参照のこと)。
【0063】
図15は、本発明の一実施形態による、ポート・コントローラからスイッチ・ファブリック・システムのスイッチ・ファブリックにパケットを転送するプロセス1500の流れ図である。オペレーション1502で、パケットがポート・コントローラで既に処理済みであることを示す通知が受信される。この処理済みパケットはオペレーション1504および1506で出力優先順位キューに割り当てられ、リンクされる。その後、オペレーション1508でそのパケットはリンクを介して取り出され、オペレーション1510でポート・コントローラからスイッチ・ファブリックに転送される。
【0064】
本発明の一態様では、パケットは、リンクされたリスト内の割り当てられた出力優先順位キューにリンクすることができる。
【0065】
本発明の一実施形態では、後続の処理されるパケットを同じ出力優先順位キューに割り当て、リンクすることができる。任意選択で、ポインタは、そのパケットを後続の処理されるパケットにリンクすることができる。本発明の別の実施形態では、そのパケットはメモリに記憶し、また、メモリから取り出すことができる。さらなる任意選択として、パケットを複数のリンクされたセルでメモリに記憶することができる。
【0066】
本発明の別の態様では、処理済みパケットは、スイッチ・ファブリックを介してアクセス可能なパケットに対する1つまたは複数の宛先を示す宛先ベクトルを含むことができる。
【0067】
本発明は、ポート・コントローラのメモリにパケットを記憶するためのデータ構造を含むこともできる。このデータ構造は、複数のキューから構成することができ、各キューはそれ自体に関連付けられたヘッド/開始アドレスを有する。各パケットをそのキューのうちの1つに割り当てて、1つまたは複数のパケットをメモリに記憶することができる。キューごとに、開始アドレスはそのキューの第1のパケットへのリンクを有することができ、そのキュー内の各パケットは、そのキュー内の次の後続パケットへのリンクを有することができる。一態様では、各パケットは、複数のリンクされたセルでメモリに記憶することができる。好ましい一実施形態では、ポインタは、パケットのセルをそのパケットの後続セルにリンクし、パケットの最終セルはヌル・ポインタを有する。
【0068】
図16は、本発明の一実施形態による、エグレスのためにキューに入れられたパケットのリンクされたリストを生成するプロセス1600の流れ図である。オペレーション1602では、イングレスDMA404は、出力指向スケジューラ412にパケットのヘッダ部分が既に処理済みであることを通知する。その後、イングレスDMAは、オペレーション1984で、出力指向スケジューラから戻されてきた、パケットがどの出力キュー(ポート・コントローラからのエグレス用)に割り当てられているかに関する情報を受信する。オペレーション1606で、ポインタが生成され、パケット・メモリに現在記憶されているヘッダ部分を割り当てられた出力キューにリンクする。割り当てられたキューが、既にそれに割り当てられている別のパケットを有しない場合、ポインタは、処理されたヘッダ部分を割り当てられたキューの開始アドレスにリンクする。
【0069】
一方、割り当てられたキューが、それに割り当てられた1つまたは複数の別のパケットを既に有している場合、ポインタは、処理済みヘッダ部分をそのキュー内のそれの直前に配置されているもう1つのパケットの記憶されたヘッダ部分にリンクする。オペレーション3802、3804および3806は、ポート・コントローラによって処理される各ヘッダ部分に対して反復される(オペレーション1608を参照のこと)。
【0070】
図17は、本発明の一実施形態により、パケット・メモリ804に記憶されているパケットをそれらの割り当てられている出力優先順位キューにリンクすることを示す概略図である。出力指向スケジューラ412は、例示の実施形態では4つのキューから成る、複数の出力優先順位キュー1702、1704、1706、1708を有する。好ましい一実施形態では、出力指向スケジューラとイングレスDMAのどちらも各キューの開始アドレスを認識している。
【0071】
各優先順位キューにはパケット・メモリに記憶されている複数のパケットが割り当てられており、特定キューに割り当てられている複数のパケットは、それらが割り当てられているキューの下に示される。各キューは先入れ先出し(FIFO)なので、記憶されている各パケットは、特定キュー内の1つのパケットから同じ割り当てられたキュー内の次に続くパケットの開始へのリンクを提供する次のパケット・ポインタ(「NPP」)を有する。補足的な矢印は、次のセルが保存されているアドレスを各セルがどのように指し示すかを示している。例えば、図17のキュー01702を参照すると、キュー01702に割り当てられたパケット・メモリに記憶されている第1のパケット1710は、キュー内の次の記憶されているパケット1714の開始を指し示すポインタ1712を有し、パケット1714は、そのキュー内の第3の記憶されているパケット1718の開始を指し示すポインタ1716を有する、という具合である。
【0072】
図18は、本発明の一実施形態による、図17に示されるパケット・メモリに記憶される例示的パケット1710を示す概略図である。例示的パケット1710は、第1のセル1802がパケットの処理済みヘッダ部分を含み、残りのセル1804、1806、1808、1810がパケットの本体を含むように、複数のセルに分割される。セル1802、1804、1806、1808は、それぞれに、次に続くセルの開始を指し示す次のセル・ポインタ(「NCP」)1812、1814、1816、1818を有する。各NCPは、パケットの最終セルの最後の1つを除いて、次のセルを指し示す。最後のNCPは、いかなる値をも有することができるが、これは出力指向スケジューラによって無効であるとみなされる可能性がある。何故ならば、出力指向スケジューラは、内部タグ情報からパケットのサイズを認識しているからである。
【0073】
一実施形態では、イングレスDMA404は、リンク/ポインタの生成に応答可能である。好ましい一実施形態では、ポインタのサイズは16ビット(2バイト)であってよい。
【0074】
上記の通り、第1のセル1802は、パケットのサイズと、そのパケットがスイッチ・ファブリック・システムから出力される宛先ポートを示すことのできる内部タグを含む処理済みヘッダ部分を有する。また、第1のセル1802は、キュー01702内の次に記憶されているパケット1714を指し示す次のパケット・ポインタ1712を含む。
【0075】
各キューは先入れ先出し(FIFO)であってよい。出力指向スケジューラ412が、そのFIFOキューのうちの1つに割り当てられたパケットをパケット・メモリから取り出す準備ができると、出力指向スケジューラは、パケットの次のセルを探すために各セルのNCPを読み取ることができる。一実施形態では、最終セルのNCPは、出力指向スケジューラが取り出しているパケットのサイズの知識に基づいてその出力指向スケジューラから無視される場合がある。
【0076】
図19は、本発明の一実施形態による、ポート・コントローラ400を介してスイッチ・システムから抜けようとしているパケットを処理するプロセスを示す概略的な流れ図である。このプロセスでは、パケットは、ポート・コントローラ400によって受信される前に既に処理が完了している。抜けようとしているパケットがインターフェイス・レシーバ420によって最初にポート・コントローラ内に受信される。インターフェイス・レシーバ420は、そのパケットをエグレス・コントローラ422に送り、次いでエグレス・コントローラ422は、そのパケットをエグレス・バッファ424に転送することができる。エグレス・コントローラが、抜けようとしているパケットをポート・コントローラから送出する準備ができると、エグレス・コントローラ422は、エグレス・バッファ424からパケットを取り出し、そのパケットを、ポート・コントローラから送出するためにMACインターフェイス402に転送する(矢印1904を参照のこと)。
【0077】
(スイッチ・ファブリック)
図20は、本発明の一実施形態によるスイッチ・ファブリック構成要素2000のアーキテクチャを示す概略的ブロック図である。スイッチ・ファブリック構成要素2000には、インターフェイス・レシーバ2002、スイッチ・マトリックス2004、インターフェイス・トランスミッタ2006、中央コントローラ2008、フリー・セル・マネージャ2010、キュー・マネージャ2012、および外部インターフェイス2014が含まれる。
【0078】
より明瞭かつ容易に理解できるように、図20には1つのインターフェイス・レシーバ2002と1つのインターフェイス・トランスミッタ2006しか示さない。しかし、スイッチ・ファブリック構成要素が複数のインターフェイス・レシーバと複数のインターフェイス・トランスミッタを含むことができるということを理解されたい。例えば、図1に示されている8×8のスイッチ・ファブリック構成要素(例えば104a)では、各スイッチ・ファブリック構成要素は8つのインターフェイス・レシーバと8つのインターフェイス・トランスミッタとを有する。同様に、図2に示されているスイッチ・ファブリック構成要素204は、4つのインターフェイス・レシーバと4つのインターフェイス・トランスミッタとを含んでいる。
【0079】
インターフェイス・レシーバ2002は、パケットを受信するように働く。このインターフェイス・レシーバは、別のスイッチ・ファブリック構成要素のインターフェイス・トランスミッタ、またはポート・コントローラのインターフェイス・トランスミッタ4014への1つの接続用外部I/Oを有する。このインターフェイス・レシーバは、受信したパケットをインターフェイス・レシーバ2002からスイッチ・マトリックス2004に転送することを可能にするために、スイッチ・マトリックス2004に結合されている。インターフェイス・レシーバ2002の機能は、ポート・コントローラのインターフェイス・レシーバ420の機能と類似である。インターフェイス・レシーバ2002は、外部I/Oによってリンクを構成し、制御のために中央コントローラ2008と対話する。
【0080】
スイッチ・マトリックス2004は、スイッチ・ファブリック構成要素内のパケットへのデータ・パスを提供する。スイッチ・マトリックスは、1つまたは複数のインターフェイス・レシーバ2002と1つまたは複数のインターフェイス・トランスミッタ2006とに結合されている。スイッチ・マトリックスは、インターフェイス・レシーバからデータ(すなわち、パケット)を受信する。各入力パケットは、スイッチ・ファブリック構成要素からの送出のためにパケットをインターフェイス・トランスミッタ2006に転送できるようになるまでは、スイッチ・マトリックスのメモリ内に記憶される。好ましい一実施形態では、スイッチ・マトリックスは64Kバイトのメモリを有する。
【0081】
上記の通り、インターフェイス・トランスミッタ2006は、スイッチ・マトリックス2004に結合されている。インターフェイス・トランスミッタは、別のスイッチ・ファブリック構成要素のインターフェイス・レシーバまたは外部I/Oを介したポート・コントローラのインターフェイス・レシーバに接続可能である。インターフェイス・トランスミッタ2006は、スイッチ・マトリックスからのパケットをスイッチ・ファブリック構成要素から送出する。各インターフェイス・トランスミッタ2006は、別のスイッチ・ファブリック構成要素のインターフェイス・レシーバまたはポート・コントローラに外部的に接続されることができ、外部I/Oによってリンクを構成することができる。各インターフェイス・トランスミッタ2006は、制御のために中央コントローラ2008と対話する。
【0082】
中央コントローラ2008は、スイッチ・ファブリック構成要素の全てのユニットに接続されており、それを制御する。中央コントローラ2008は、イングレス・ユニット2008a、マトリックス・ユニット2008b、およびエグレス・ユニット2008cの3つの構成要素を含むことができる。中央コントローラ2008は、フリー・セル・マネージャ2010によって提供されるフリー・セル・アドレスに従って、スイッチング・マトリックスのメモリ内の入力パケットを記憶すること管理する。中央コントローラ2008は、また、パケットの宛先ベクトルから宛先ポートを読み取り、そのパケットをキュー・マネージャ2012によってキューに記憶する。さらに、中央コントローラは、キュー・マネージャ2012の情報に従ってパケットをスイッチ・マトリックスからインターフェイス・トランスミッタ2006に転送するための信号を生成することもできる。
【0083】
フリー・セル・マネージャ2010は、中央コントローラとキュー・マネージャ2012に結合されている。フリー・セル・マネージャ2010は、中央コントローラ2008を介して提供された情報に基づいてスイッチング・マトリックスのメモリ内のフリー・セルを管理する。具体的には、フリー・セル・マネージャ2010は、スイッチ・マトリックス内の占有されたセルとフリー・セルに関する情報を表形式で維持し、この情報を中央コントローラ2008とキュー・マネージャ2012に提供する。
【0084】
キュー・マネージャ2012は、中央コントローラ2008とフリー・セル・マネージャ2010とに結合されている。キュー・マネージャ2012は、入力パケットに関する情報を受信し、出力ポートに従ってFIFOでリンクされるリストとしてその情報を記憶する。キュー・マネージャ2012は、抜けようとしているパケットのキューも管理する。
【0085】
外部インターフェイス2014は、中央コントローラとスイッチ・マトリックスに接続されている。外部インターフェイスの機能は、ポート・コントローラのネットワーク・インターフェイスと同様である。外部インターフェイスは、制御パケットを外部I/Oを介して内部チャネルと交換し、次いでスイッチ・ファブリック構成要素の内部レジスタを維持するためにこれらのパケットを分析する。
【0086】
図21は、本発明の一実施形態による、スイッチ・ファブリックを介してデータグラムを送信するプロセス2100の流れ図である。受信したデータグラムから宛先ベクトルが抽出される(オペレーション2102および2104を参照のこと)。宛先ベクトルは、データグラムの1つまたは複数の宛先(すなわち、単一キャストまたはマルチキャスト)を示す。オペレーション2106で、宛先ベクトルに基づいてデータグラムに対してポート・ビットマップが生成される。オペレーション2108では、このデータグラムは引き続いてポート・ビットマップを利用して宛先に向けて送信される。
【0087】
本発明の一態様では、宛先ベクトルは32ビットのデータを含むことができる。本発明の別の態様では、ポート・ビットマップは8ビットのデータを含むことができる。
【0088】
本発明の一実施形態では、ポート・ビットマップを生成することは、宛先ベクトルからデータグラムの全ての宛先を獲得すること、および、次いでそのデータグラムが宛先に到達するにはそのスイッチ・ファブリック構成要素のどのスイッチ・ポートを介して経路指定することができるかを決定するためにスイッチング・テーブルを利用することを含むことができる。次いでデータグラムがその対象とする宛先に到達するために、そこを介するように経路指定することができる全ての決定されたスイッチ・ポートを示すためにポート・ビットマップを生成することができる。
【0089】
本発明の別の実施形態では、データグラムを転送することは、ポート・ビットマップに基づいてマスクを作成するスこと、および、データグラムの送信に際してマスクを用いてポート・ビットマップを変更することを含むことができる。このような一実施形態では、マスクを用いてポート・ビットマップを変更するステップは、データグラムがそこに向けて送信されている宛先に関連付けられたデータのポート・ビットマップをクリアすることも含むことができる。
【0090】
本発明のさらなる実施形態では、データグラムが宛先に到達するためにそこを介してデータグラムを経路指定することができるスイッチ・ポートの可用性を判定することもできる。次いでデータグラムは使用可能と判定されたスイッチ・ポートを介して送信することができる。
【0091】
図22は、本発明の実施形態によるスイッチ・ファブリックを介してパケットを経路指定するためのスイッチング・テーブルの実施を示す8行8列のスイッチ・ファブリック構成要素を含むスイッチ・ファブリック2200の概略ブロック図である。この実施形態の下で議論される基礎となっている原理は、本明細書によるいかなるスイッチ・ファブリックにおいても利用することが可能である。この議論のため、スイッチ・ファブリックおよびスイッチ・ファブリック構成要素は、すべて双方向であることに留意することが重要である。
【0092】
図22に示すとおり、スイッチ・ファブリック2200は、SF1 2202a、SF2 2202b、SF3 2202c、SF4 2202dとして示される8行8列のスイッチ・ファブリック構成要素を含む。各スイッチ・ファブリック構成要素は、8つのポート(「スイッチ・ポート」)を有する。例えば、図22では、SF1 2202aの8つのスイッチ・ポートが、1/1、2/1、3/1、4/1、5/1、6/1、7/1、8/1(「1の1、1の2、1の3...」等)として示される。SF2、SF3、SF4の8つのスイッチ・ポートも同様に、図22で示される。例えば、SF2 2202bのポートは、n/2(ただし、nは、1から8までの整数)を使用して示され、SF3 2202cのポートは、n/3を使用して示され、またSF4 2202dのポートは、n/4(ただし、nは、1から8までの整数)を使用して示される。
【0093】
図22の示されているスイッチ・ファブリックでは、各スイッチ・ファブリック構成要素が、2つの隣接するスイッチ・ファブリック構成要素に結合された2つのポートを有している。例えば、SF1 2202aのポート5/1および6/1は、それぞれ、SF2 2202bのポート2/2および1/2に結合され、またSF1 2202aのポート7/1および8/1は、それぞれ、SF3 2202cの4/3および3/3に結合される。
【0094】
図22の参照を続けると、スイッチ・ファブリック2200は、複数のデバイス・ポートも含む。この議論では、デバイス・ポートは、外部デバイス(例えば、ポート・コントローラなど)に結合することができ、スイッチ・ファブリック内の別のスイッチ・ファブリック構成要素に結合されていないスイッチ・ファブリック構成要素のポートと定義することができる。図22に示す例としての実施形態では、スイッチ・ファブリックは、十六(16)のデバイス・ポート(これらには、図22で1ないし16の番号が付けられている)を有し、各スイッチ・ファブリック構成要素は、4つのデバイス・ポートを有している。例えば、SF1 2202aは、デバイス・ポート1、2、3、4を有し、SF2 2202bは、デバイス・ポート5、6、7、8を有し、SF3 2202cは、デバイス・ポート9、10、11、12を有し、またSF4 2202dは、デバイス・ポート13、14、15、16を有する。
【0095】
(スイッチング・テーブル)
本発明の実施形態では、スイッチング・テーブルを利用して、スイッチ・ファブリックの柔軟性を高めるのを促進することができる。スイッチング・テーブルを各スイッチ・ファブリック構成要素に関連付けて、スイッチ・ファブリック構成要素の各ポートを介してどのデバイスに到達できるかを記録することができる。言い換えれば、各スイッチング・テーブルは、特定のスイッチ・ファブリック構成要素のどのポートを使用して(すなわち、アクセス可能であって)当該の特定のスイッチ・ファブリック構成要素からパケットを伝送することができるかに関する情報を提供する。
【0096】
図23、24、25、26は、本発明の実施形態による図22に描いたスイッチ・ファブリック2200に関する例としてのスイッチング・テーブルを示す概略図である。詳細には、図23に示す例としてのスイッチング・テーブル2300は、スイッチ・ファブリック構成要素SF1 2202aに対するものであり、図24に示す例としてのスイッチング・テーブル2400は、スイッチ・ファブリック構成要素SF2 2202bに関するものであり、図25に示す例としてのスイッチング・テーブル2500は、スイッチ・ファブリック構成要素SF3 2202cに対するものであり、また図26に示す例としてのスイッチング・テーブル2600は、スイッチ・ファブリック構成要素SF4 2202dに対するものである。
【0097】
各スイッチング・テーブルは、スイッチ・ファブリックのデバイス・ポートに対する複数の列2302、および特定のスイッチ・ファブリック構成要素のポートに対する複数の行2304を有する格子(例えば、複数のビットマップ・アレイ)として表すことができる。列と行は一緒に、スイッチング・テーブルのビットマップ・アレイを形成する。この格子の表現では、ビットマップ・アレイは、スイッチング・テーブル格子の列と行によって形成された1行のボックスを含む。各格子の列と行によって形成されたボックス内には、1および0がある。ボックス内の「1」は、特定のデバイス・ポートが、特定の行のポートを介してアクセス可能であることを示し、一方、ボックス内の「0」は、特定のデバイス・ポートが、特定の行のポートを介してアクセス可能ではないことを示す。そのような表現を使用して、特定のポートに関連付けられたアレイに基づいてビットマップ、スイッチ・ファブリック構成要素のポートを生成することができる。
【0098】
例えば、スイッチ・ファブリック構成要素SF1 2202aに対するスイッチング・テーブル2300を表す図23を参照すると、ポート1/1に対して指定された一番上の行を見ることにより、ポート1/1に対するビットマップ・アレイを確認することができる。このアレイでは、デバイス・ポート1に対する列の下のボックス内に「1」が存在し、また残りの列の下のボックスのそれぞれの中に「0」が存在する。このことは、デバイス・ポート1だけが、SF1 2202aのポート1/1を介してアクセス可能であることを示す(すなわち、デバイス・ポート1を通る伝送を介してその宛先がアクセス可能であるSF1のパケットは、ポート1/1を介するように経路指定しなければならない)。同様に、ポート5/1に対して指定された行(すなわち、アレイ)を参照すると、デバイス・ポート5、6、7、8、9、10に対する列の下のボックスのそれぞれの中に「1」が存在し、またデバイス・ポート1、2、3、4、11、12、13、14、15、16の列の下のボックスのそれぞれの中に「0」が存在する。このことは、デバイス・ポート5、6、7、8、9、10が、SF1 2202aのポート5/1を介するSF1内のパケットに関してアクセス可能であることを示す。
【0099】
図22および23−dに示す例としての実施形態では、スイッチング・テーブルが、スイッチ・ファブリック構成要素のどのポートからのアクセスも、6つのデバイス・ポート未満に制限するように生成されていることに留意されたい。これは、図22のスイッチ・ファブリック2200を介してパケットの伝達の理解を簡単にするのを助けるために行っている。図22のスイッチ・ファブリック2200の場合、スイッチ・ファブリック構成要素のポートは、最高で12のポートに対するアクセスを有するのが可能である(例えば、ポート5/1を介して伝送されるSF1内のパケットは、スイッチング・テーブルがそのように生成された場合、デバイス・ポート5ないし16に対するアクセスを有するのが可能である)ことを理解されたい。
【0100】
また、図23−dに示すスイッチング・テーブルのそれぞれは、最高で32デバイス・ポートに対する列が含まれる好ましい実施形態に従って生成されていることにも留意されたい。スイッチング・テーブルのこの好ましい実施形態は、32のポート・コントローラが接続された32のデバイス・ポートを備えたスイッチ・ファブリックを有する図1に示すスイッチ・ファブリックの好ましい実施形態におけるスイッチング・テーブルの使用を可能にするのを助けることである。図22に示す例としてのスイッチ・ファブリック2200は、16だけのデバイス・ポートを有する(例えば、16のポート・コントローラをそこに接続して)ので、列17ないし32内のボックスはすべて、4つのスイッチング・テーブル23−dのそれぞれの中に「0」を含む。
【0101】
図27は、本発明の実施形態によるスイッチ・ファブリック構成要素を介するパケットを処理するための処理2700に関する流れ図である。オペレーション2702で、パケットが、スイッチ・ファブリック構成要素によって受信される。オペレーション2704で、宛先ベクトルが、受信されたパケットから抽出される。次に、オペレーション2706で、スイッチ・ファブリック構成要素のスイッチング・テーブルに基づき、抽出された宛先ベクトルからポート・ビットマップが生成される。オペレーション2708で、スイッチ・ファブリック構成要素の論理が、ポート・ビットマップ内に示されたスイッチ・ファブリック構成要素のポートのどれかがアイドルであるかどうかを検査して判定する。ポート・ビットマップによって示されるポートのどれかが、アイドルであると判明した場合には、オペレーション2710で、ポート・ビットマップに基づき、識別されたアイドルなポートのためのマスクが作成される。オペレーション2712で、次に、スイッチ・ファブリックの識別されたアイドルなポートを介して発信パケットが伝送され、パケットがそれを介して伝送されたばかりのポートに関連する情報が、ポート・ビットマップから消去される。消去プロセスは、識別されたポートにおける発信パケットの宛先ベクトルに対しても実行されて、発信パケットの宛先ベクトルが変更される。判定2714で、ポート・ビットマップ内に別の宛先が含まれると判定された場合には、追加の宛先のそれぞれに対してオペレーション2710および2712が反復される。
【0102】
パケットがスイッチ・ファブリック構成要素に入った際、パケットの宛先ベクトルおよびスイッチ・ファブリック構成要素のスイッチング・テーブルを使用して、スイッチ・ファブリック構成要素のどのポートを介してパケットが出るべきかが判定される。一実施形態では、判定結果をリンクされたリストとして記憶することが可能である。一態様では、判定結果は、ポート・ビットマップを含むことが可能である。別の態様では、判定結果は、宛先ベクトルを含むことが可能である。
【0103】
図28は、本発明の実施形態による、判定結果がポート・ビットマップを含むスイッチ・ファブリック構成要素を介してパケットを処理するためのプロセス2800を示す概略図である。スイッチ・ファブリック構成要素内へのイングレスに先立ち、ポート・コントローラ2804においてパケットの処理中にパケット2802内にタグが挿入される。タグは、パケットが宛先とする1つまたは複数のデバイス・ポートを示す宛先ベクトル2806を含む。好ましい実施形態では、宛先ベクトル2806は、32ビットの長さ(すなわち、「32ビットの宛先ベクトル」)を有することが可能である。ポート・コントローラは、スイッチ・ファブリック構成要素2808のデバイス・ポートに結合されて、挿入されたタグを有するパケットをスイッチ・ファブリック構成要素に転送することを可能にする。
【0104】
スイッチ・ファブリック構成要素2808内へのパケット(挿入されたタグを有する)2802のイングレスの後、タグが抽出されて宛先ベクトル2806が獲得される。次に、宛先ベクトル2806およびスイッチ・ファブリック構成要素2808のスイッチング・テーブル2812に基づき、ポート・ビットマップ2810が生成される。好ましい実施形態では、ポート・ビットマップは、8ビットの長さ(すなわち、「8ビットのポート・ビットマップ」)を有する。次に、パケットが、スイッチ・ファブリック構成要素のスイッチ・マトリックスのメモリ内のセルの中に記憶される。生成されたポート・ビットマップ2810を使用して、リンクされたリスト2814の中でパケットが中に記憶されたメモリのセルがリンクされる。また、ポート・ビットマップ2810も、スイッチ・ファブリック構成要素2808内のリンクされたリスト2814の中で記憶される。
【0105】
適切な出力ポートが、利用可能であると判定されたとき、パケットは、出力ポートを介してスイッチ・ファブリック構成要素を出ることができる。適切な出力ポートが利用可能であると判定された後、適切なセルに関する情報(ポート・ビットマップを含む)が、リンクされたリスト2814から読み取られてポート・ビットマップ2810が獲得される。次に、スイッチング・テーブル2812を使用して、イグレスのポートのためのマスク2816が生成される。好ましい実施形態では、マスク2816は、8ビットの長さ(すなわち、「8ビットのビット・マスク」)を有する。次に、マスク2816を使用してポート・ビットマップ2810が変更され、出力ポートを介するパケットの送信に関連する情報が、ポート・ビットマップから除去されるようにする。次に、変更されたポート・ビットマップ1018が、リンクされたリストの中に記憶される。変更されたポート・ビットマップ2818が、すべて「0」のビット(すなわち、「1」が全くない)を含む場合には、スイッチ・マトリックス内の対応するメモリ・セルが、解放されている。そのような実施形態の好ましい態様では、リンクされたリストは、ポート・ビットマップを記憶するための縦8ビット/語、横256語のメモリを含むことが可能である。そのような実施形態の別の好ましい態様では、スイッチング・テーブルは、マスクを生成する論理(すなわち、回路)を含むことが可能である。この実施形態のさらに別の好ましい態様では、スイッチング・テーブルの行は、互いに排他的であることが可能である。
【0106】
図28に示すプロセス2800に対する好ましいオプションとして、パケットがスイッチ・ファブリック構成要素の発信ポートを出る際にパケットから宛先ベクトルを消去することができる。そのようなオプションを実施することの利点は、図22に描いたスイッチ・ファブリック2200を使用する以下の実施例で見ることができる。この実施例では、スイッチ・ファブリック2200に入るパケットが、SF1 2202a内のデバイス・ポート2およびSF2 2202b内のデバイス・ポート7という2つの宛先を有するものと想定する。図30は、本実施例に従ってデバイス・ポート1からSF1 2202に入り、SF1 2202a内のデバイス・ポート2およびSF2 2202b内のデバイス・ポート7という宛先を有するパケットに関する宛先ベクトル3000(詳細には、32ビットの宛先ベクトル)を示す概略図である。
【0107】
(ポート・ビットマップ)
図29は、本発明の実施形態によるスイッチ・ファブリック構成要素内のポート・ビットマップ(詳細には、8ビットのポート・ビットマップ)の例としての利用を示す概略図である。この例は、図22に示す例としてのスイッチ・ファブリック2200に基づき、スイッチ・ファブリック構成要素SF1 2202a内で生じる。この例では、パケットが、デバイス・ポート1に結合されたポート・コントローラを介してSF1によって受信され、(1)デバイス・ポート2(SF1 2202aにある)および(2)デバイス・ポート9(SF4 2202dにある)という2つの宛先を有する。
【0108】
SF1 2202a内で、パケットから宛先ベクトルが抽出される。図29に示すとおり、抽出された宛先ベクトル2902は、パケットが目指す宛先ポート(デバイス・ポート2および9)を示すビット2 2904内およびビット9 2906内に「1」を有する。抽出された宛先ベクトル2902の情報に基づき、スイッチ・ファブリック構成要素は、スイッチング・テーブルを使用して、パケットが目指す宛先に着信するのに、そのスイッチ・ポートのどれを介するようにパケットを経路指定することができるかを判定する。図23に示すスイッチ・ファブリック構成要素SF1に対するスイッチング・テーブル2300を参照すると、デバイス・ポート2は、SF1のスイッチ・ポート2/1を介してアクセスすることができ(行2/1参照)、またデバイス・ポート9は、SF1のスイッチ・ポート5/1および6/1を介してアクセスできる(行5/1および6/1参照)ことが分かる。
【0109】
ポート・ビットマップは、スイッチ・ファブリック構成要素によって受信されたパケットの抽出された宛先ベクトルからの情報および情報、スイッチ・ファブリック構成要素のスイッチング・テーブルに基づいてスイッチ・ファブリック構成要素によって生成されるビットマップである。好ましくは、ポート・ビットマップは、スイッチ・ファブリック構成要素の中央コントローラによって生成される。ポート・ビットマップは、パケットが目指す宛先(すなわち、デバイス・ポート)に着信するため、スイッチ・ファブリック構成要素のスイッチ・ポートのどれを介するように経路指定される必要があるかを示す。ポート・ビットマップは、複数のビットを含み、各ビットは、関連スイッチ・ファブリック構成要素の対応するスイッチ・ポートに関連付けられている。例えば、4つのスイッチ・ポートを有するスイッチ・ファブリック構成要素では、そのスイッチ・ファブリックに対するポート・ビットマップは、(少なくとも)4ビットを有し、各ビットは、スイッチ・ファブリック構成要素の4つのスイッチ・ポートのどれかに関連付けられている。別の例として、図22に示す実施形態では、スイッチ・ファブリック構成要素のそれぞれが、8つのスイッチ・ポートを有する。したがって、各スイッチ・ファブリック構成要素に対して生成されるポート・ビットマップは、少なくとも8ビットを有し、8ビットのそれぞれは、それぞれのスイッチ・ファブリック構成要素の対応するスイッチ・ポートに関連付けられている。好ましい実施形態では、ポート・ビットマップは、八(8)ビットを含む。
【0110】
ポート・ビットマップのビットは、それぞれ、「1」または「0」を含むことが可能である。一実施形態では、ポート・ビットマップのあるビットが「1」を含む場合には、そのことは、その特定のビットに関連するスイッチ・ポートが、スイッチ・ファブリック構成要素からパケットを出力するためのポートとして働くことができるのを示す。反対に、ポート・ビットマップのあるビットが「0」を含む場合には、そのことは、その特定のビットに関連するスイッチ・ポートが、スイッチ・ファブリック構成要素からパケットを出力するためのポートとして働くことができないのを示す。
【0111】
再び図29を参照すると、受信されたパケットのスイッチ・ファブリック要素SF1により、抽出された宛先ベクトル2902およびスイッチ・ファブリック要素SF1の切換えテーブル2300に基づいて生成することのできるポート・ビットマップ2908が示されている。このポート・ビットマップ2908は、それぞれ、SF1のスイッチ・ポート2/1、5/1、および6/1に関連するビット2、5、および6 2910、2912、2914に「1」を含む。
【0112】
この例では、スイッチ・ポート5/1または6/1がスイッチ・ポート2/1よりも前に利用可能になる(すなわち、アイドル状態になる)と判定されるものと仮定する。この場合、この例ではまず、パケットがスイッチ・ポート5/1または6/1を介して装置ポートの所期の宛先に向かって(SF2を介し、次いでSF4を介して)出力される。図27に示されたフローチャートに示されているように、引き続き図29を参照するとわかるように、第1のマスク2916は、ポート・ビットマップおよび出力スイッチ・ポートに基づいて生成される。この例では、この第1のマスクは、パケットがスイッチ・ポート5/1または6/1を介して出力されるときにポート・ビットマップにおける処理されるビットを示すビット5および6 2918、2920に「1」を含む。
【0113】
引き続きこの例で説明する。次に、第1のマスク2916を使用して、処理されるビットがポート・ビットマップから削除される。一般に、削除では、ポート・ビットマップ内の、「1」を含むビットが削除され、この場合、マスクの対応するビットも「1」を含む。言い換えれば、削除では、ポート・ビットマップ内の、「1」を含むビットが「1」から「0」に変化しれ、この場合、マスクの対応するビットも「1」を含む。たとえば、図29には、処理されるビットが、第1のマスクを使用して削除された後の(修正された)ポート・ビットマップ2908’のビットが示されている。図示のように、修正されたポート・ビットマップにおいて、「1」はビット2 2910にのみ残っており、「0」はビット6 2912、2914にあり、ビット2は除去されておらず(すなわち、スイッチ・ポート2/1はまだ処理されていない)、ビット5および6が除去されている(すなわち、スイッチ・ポート5/1または6/1が処理されている)ことがわかる。
【0114】
次に、スイッチ・ポート2/1が利用可能である(すなわち、アイドル状態である)と判定されると、スイッチ・ポート2/1の処理に基づいてポート・ビットマップ用の第2のマスク2916が生成される。このマスクはビット2 2922に「1」を有し、スイッチ・ポート2/1を介したパケットの出力を示している。この場合、スイッチ・ポート2/1(すなわち、装置ポート2)からパケットが出力されるとき、第2のマスク2916を使用してポート・ビットマップを除去することができる。図13Aには、第2のマスク2916によって削除された後の修正されたポート・ビットマップ2908”が示されている。図29に示されているように、修正されたポート・ビットマップ2906”のすべてのビットが「0」を含み、それにより、ポート・ビットマップには、パケットを出力する宛先が残っていないことがわかる。
【0115】
図30は、本発明の実施形態による例示的な宛先ベクトル3000、宛先ベクトルの発信マスク3002、および修正された宛先ベクトル3004の概略図である。図30に示されているように、この例では、装置ポート2 3006、3008のビットは「1」を含み、それにより、関連するパケットについての装置2および7の宛先を示している。SF1において、パケットは(装置ポート7に到達するように)2/1(すなわち、装置ポート2)を介し、また5/1または6/1を介してSF2に送信される。次に、SF2に送信されたパケットが、宛先ベクトル3000を修正せずに送信された場合、SF2は、修正されていない宛先ベクトル3000を抽出し、SF2の宛先の1つが装置ポート2である場合と同様にパケットを処理し、したがって、パケットのコピーを、装置ポート2を通して送信できるようにSF1に送り返す。
【0116】
この問題を解消するには、スイッチ・ファブリック要素の各出力ポートの端部に削除プロセスを挿入することができる。削除プロセスでは、発信ポートを通して到達できる装置に対応するビットを除いて、発信パケットの宛先ベクトルのすべてのビットが削除される。この削除プロセスでは、発信マスク3002が生成され、次いで発信マスク3002を使用して発信パケットの宛先ベクトルが修正される。発信マスク3002は、特定の発信ポートを通してアクセスできるすべてのビットに「1」を含む(残りのビットは「0」である)。引き続きこの例で説明すると、SF1におけるパケットは、SF1のいずれかのポート5/1または6/1から装置ポート7に到達することができる(図23のSF1の切換えテーブルを参照されたい)。図23に示されているSF1の切換えテーブルを参照すると、ポート5/1または5/6を介して到達できる装置ポートは装置ポート5〜10であることがわかる。したがって、生成された発信マスク3002は、図30に示されているように、ビット5から10に「1」を含み、残りのビットに「0」を含む。次いで、この発信マスクを使用し、発信マスクの「1」でカバーされていないビット内の任意の「1」の宛先ベクトルを削除することにより、ポート5/1または6/1からSF2に向かうパケットの宛先を修正することができる。したがって、図30に示されているこの例の修正された宛先ベクトル3004は、装置ポート2用のビットの「1」が発信マスクの「1」によってマスクされていないので装置ポート7 3010用のビットに1つの「1」を有するに過ぎない。このような削除プロセスを用いた場合、修正された宛先ベクトルは、SF2に、パケットのコピーを、装置ポート2に送信されるようにSF1に送り返させる情報を含まない。好ましい実施形態では、スイッチ・ファブリック要素の各出力ポートの発信マスクが、それぞれの各ポートに対応する切換えテーブルの関連する行と同じであってよいことに留意されたい。このような好ましい実施形態の一態様では、スイッチ・ファブリック要素の各出力ポートは、それぞれの切換え要素の切換えテーブルの関連する行と同じ内容を含むレジスタを有してよい。
【0117】
図31は、本発明に実施形態によって判定結果が宛先ベクトルを含む、スイッチ・ファブリック要素を通してパケットを処理する他のプロセス3100を示す概略図である。図28に示されている実施形態と同様に、パケット3102が、スイッチ・ファブリック要素に着信する前に、スイッチ・ファブリック要素に結合されたポート・コントローラで処理されている間に、宛先ベクトル(好ましくは、32ビット宛先ベクトル)を示すタグがパケット3102に挿入される。パケット3102がスイッチ・ファブリック要素に着信すると、タグが抽出され、宛先ベクトル3104が得られる。図28に示されたプロセス2800と同様に、次いで、宛先ベクトル3104およびスイッチ・ファブリック要素3100の切換えテーブル3108に基づいてポート・ビットマップ3106が生成される。好ましい実施形態では、ポート・ビットマップ3106は8ビット・ポート・ビットマップを備える。生成されたポート・ビットマップ3106は、連係リスト3110内で、パケットが記憶されているメモリのセルをリンクするために使用される。しかし、8ビット・ポート・ビットマップ3106は、連係リスト3110には格納されない。その代わり、(32ビット)宛先ベクトル3104が連係リスト3110に格納される。
【0118】
引き続き図31を参照するとわかるように、パケットの発信にあたって適切な出力ポートが利用可能であることが判定されると、連係リスト3110からセル情報が読み取られ、宛先ベクトル3104が得られる。切換えテーブルを使用して、発信ポートの宛先マスク3112が生成される。宛先マスクの長さは32ビットである(すなわち、「32ビット宛先マスク」)ことが好ましい。一態様では、32ビット宛先マスクは、発信ポートに対応する切換えテーブルの行を含む。次に、宛先マスク3112を使用して宛先ベクトル3114が修正され、宛先ベクトル3114はその後、連係リスト3110に格納される。図28の修正されたポート・マスク2818と同様に、修正された宛先ベクトル3114がすべての「0」ビットを含む場合、対応するメモリ・セルが解放される。
【0119】
このような実施形態3100の好ましい態様では、連係リストは、宛先ベクトル3104を格納するための32ビット/語x256語メモリを含んでよい。このような実施形態の他の好ましい態様では、図28に示されている実施形態の切換えテーブル2812とは異なり、宛先マスクが切換えテーブル3108の行に過ぎないので、切換えテーブル3108が、宛先マスクを生成する論理(すなわち、回路)を含む必要はない。この実施形態の他の好ましい態様では、切換えテーブルの行が互いに排他的である必要はない。
【0120】
(後方伝搬)
図32は、本発明の実施形態によるスイッチ・ファブリック中の切換えテーブルを更新するプロセス3200のフローチャートである。動作3202において、送信側のソースと受信側のスイッチ・ファブリック要素との間のハンドシェーキングなしで、スイッチ・ファブリック要素によって1つまたは複数のパケットが受信される。各ステータス・パケットは、出力ポートのステータスに関する情報を含む。次いで、動作3204において、受信されたステータス・パケットのステータス情報に基づいて切換えテーブルが更新される。
【0121】
本発明の態様では、スイッチ・ファブリック・システムによるイーサネット・パケットの送信専用のパスとは別の、ステータス・パケットの送信専用のパス/チャネル/コンジットを介してステータス・パケットを受信することができる。本発明の他の態様では、ステータス・パケットを定期的に受信することができ、切換えテーブルをリアルタイムで更新することができる。
【0122】
本発明の実施形態では、受信されたステータス・パケットの組み合わされたステータス情報に基づいて、組み合わされたステータス・パケットを生成することができる。
【0123】
次いで、組み合わされたステータス・パケットを他のスイッチ・ファブリック要素に送信することができる。このような実施形態の一態様では、組み合わされたステータス・パケットを外側層スイッチ・ファブリック要素から中央層スイッチ・ファブリック要素に送信することができる。
【0124】
本発明の一態様では、受信されるステータス・パケットをポート・コントローラから生成することができる。本発明の他の態様では、受信されるステータス・パケットをスイッチ・ファブリック要素から生成することができる。本発明の他の態様では、ステータス・パケットは、各ビットがスイッチ・ファブリック要素のポートに関連する32ビットのデータを含んでよい。
【0125】
一実施形態において、スイッチ・ファブリック・ポート・コントローラを備えるスイッチ・システムは、パケットがスイッチ・ファブリックを通って宛先ポート・コントローラに至るパスを、ハンドシェーキング・プロトコルを使用して判定する。しかし、ハンドシェーキング・プロトコルを使用すると、(1)各着信パケットから、スイッチ・ファブリックを通るパスを判定しなければならず、(2)ハンドシェーキング・プロトコルが、パケットがスイッチ・ファブリックを通って伝搬するのと同じチャネルまたはコンジットを使用して実行されるため、スイッチ・システムの帯域幅が小さくなる可能性がある。
【0126】
図33は、本発明の実施形態によるスイッチ・ファブリックにおけるステータス情報および制御情報の後方伝搬の例示的な構成3300を示す概略図である。図33に示されている例示的なスイッチ・ファブリック3300は、図1に示されているマルチポート・スイッチ・アーキテクチャ100のClosネットワーク・トポロジに配置することが好ましい12個のスイッチ・ファブリック要素(SF1からSF12)を備えている。例示的なスイッチ・ファブリック3300は、32個のポート・コントローラ(PC01からPC32)と、外側層スイッチ・ファブリック要素(SF1〜4およびSF9〜12)のそれぞれに結合された4つのポート・コントローラとをさらに有している。
【0127】
後方伝搬機構3300において、各ポート・コントローラは、それぞれのポート・コントローラを、関連する、外側層スイッチ・ファブリック要素に結合する専用コンジット(たとえば、3302)を有している。同様に、各外側層スイッチ・ファブリック要素(SF1〜4およびSF9〜12)は、それぞれの外側層スイッチ・ファブリック要素を各中央層スイッチ・ファブリック要素に結合する専用コンジット(たとえば、3304)を有している。SF1が各ポート・コントローラからステータス情報をどのように受信するかの観点から後方伝搬プロセスを説明するうえで図を明確にするために、図33には、外側層スイッチ・ファブリック要素SF2〜4およびSF9〜12からの専用コンジットしか示されていない。外側スイッチ・ファブリック要素(すなわち、SF1〜4およびSF9〜12)がそれぞれ、各中央スイッチ・ファブリック要素(すなわち、SF5〜8)の専用コンジットを有することに留意されたい。各中央スイッチ・ファブリック要素(すなわち、SF5〜8)は、それぞれの中央スイッチ・ファブリック要素を各外側スイッチ・ファブリック要素(すなわち、SF1〜4およびSF9〜12)に結合する専用コンジット(たとえば、3306)を有している。この場合も、SF1が各ポート・コントローラからステータス情報をどのように受信するかに関して後方伝搬プロセスを説明するうえで図を明確にするために、中央スイッチ・ファブリック要素SF5から外側層スイッチ・ファブリック要素SF1への専用コンジット3306しか示されていない。しかし、外側層スイッチ・ファブリック要素が、図33の例で説明したのと同様に各中央層スイッチ・ファブリック要素からステータス情報を受信できることを認識されたい。
【0128】
引き続き図33を参照するとわかるように、専用コンジット(たとえば、3302、3304、3306)を介すことにより、パケット(および他の制御情報)を受信するポート・コントローラの可用性に関するステータス情報をスイッチ・ファブリックを通して伝搬させることができる。専用コンジット3302、3304、3306の矢印は、スイッチ・システム全体からスイッチ・ファブリック要素SF1へのステータス情報の伝搬を示している。好ましい実施形態では、専用パスはそれぞれ、1サイクル当たり2ビットの情報を送信できるようにする帯域幅を有してよい。このような好ましい実施形態では、帯域幅の1ビットを制御情報の送信に使用し、他のビットを、スイッチ・システムのポート・コントローラの可用性に関するステータス情報の送信に使用してよい。
【0129】
図33には、SF5を介してステータス情報を受信するように中央層スイッチ・ファブリック要素SF5に結合されたスイッチ・ファブリック要素SF1が示されているが、中央層スイッチ・ファブリック要素SF6、SF7、およびSF8はそれぞれ、ステータス情報をSF1に与えるようにSF1に結合された専用コンジットを有してよい。この冗長性は、SF5がステータス情報をSF1に送信できない場合でもポート・コントローラに関する情報を引き続き受信することができるので有利である。
【0130】
一般に、出力ポート・ステータスは、スイッチ・ファブリックを通して伝播するときにスイッチ・ファブリックのローカル出力ポート・ステータスと併合され、それによってスイッチ・ファブリックの全体的なパケット・ステータスに関する与えられた情報を蓄積することができる。したがって、このような機構を用いた場合、スイッチ・システム内の各要素はポートのリアルタイムに更新されたパケット・ステータスを維持し、このローカル情報を使用して、スイッチ・システムへのパケットの入口点とスイッチ・システム内のパケットの宛先との間のハンドシェーキング・プロセスなしにパケットの流れを制御することができる。
【0131】
図34は、本発明の実施形態による、スイッチ・ファブリック・システム内の切換えテーブルを更新するプロセス3400のフローチャートである。好ましい実施形態では、このプロセスは、明細書の、図33に関する部分に記載された後方処理専用コンジットを有するスイッチ・システムで実行される。図34に示されているように、プロセスの一部は、スイッチ・ファブリック・システムのポート・コントローラで実行され、他の部分は、外側層スイッチ・ファブリック要素および中央層スイッチ・ファブリック要素で実行される。
【0132】
動作3402において、ポート・コントローラでステータス・パケットが実行される。ステータス・パケットは、発信パケットの受信に関するポート・コントローラの現在のステータス/可用性を示す情報を含む。生成されたステータス・パケットは、動作3404で、ポート・コントローラに関連する外側層スイッチ・ファブリック要素に送信される。たとえば、図33を参照するとわかるように、ポート・コントローラP32−08はスイッチ・ファブリック要素SF2に関連付けされている。したがって、ポート・コントローラP32−08は、生成したステータス・パケットをスイッチ・ファブリック要素SF2に送信する。好ましい実施形態では、ポート・コントローラは、ステータス・パケットを、関連する外側層スイッチ・ファブリック要素に、該ポート・コントローラと該スイッチ・ファブリック要素を連結する専用コンジット(たとえば、専用コンジット3302)を介して送信する。
【0133】
動作3406で、外側層スイッチ・ファブリック要素は、関連するポート・コントローラから着信ステータス・パケットを受信し収集する。受信されたステータス・パケットからの情報は、次いで動作3408で、外側層スイッチ・ファブリック要素によって生成されたステータス・パケットにおいて組み合わされる。動作3410で組み合わされたステータス・パケットは、次いで中央層スイッチ・ファブリック要素に送信される。外側層スイッチ・ファブリック要素は、組み合わされたステータス・パケットを中央層スイッチ・ファブリック要素に、これらのスイッチ・ファブリック要素を連結する専用コンジット(たとえば、SF2とSF5を連結する専用コンジット3304)を介して送信することが好ましい。外側層スイッチ・ファブリック要素はさらに、ポート・コントローラから受信したステータス・パケットの情報を使用して、それ自体の切換えステータスを更新する(動作3412参照)。
【0134】
中央層スイッチ・ファブリック要素は、動作3414で、外側層スイッチ・ファブリック要素によって送信されたステータス・パケットを受信し収集する。たとえば、図33に示されている例示的な機構を参照する。動作3416で、中央層スイッチ・ファブリック要素は、外側層スイッチ・ファブリック要素から受信されたステータス・パケットに含まれるステータス情報を組み合わせたステータス・パケットを生成する。たとえば、図33に示されている例示的な実施形態では、中央層スイッチ・ファブリック要素SF5は、各パケットがそれぞれの各スイッチ・ファブリック要素に関連するポート・コントローラについてのステータス情報を持つステータス・パケットを外側層スイッチ・ファブリック要素SF2〜SF12から受信する(たとえば、スイッチ・ファブリック要素SF2からのステータス・パケットは、ポート・コントローラP32−08に関する情報を有し、他のパケットについても同様である)。
【0135】
動作3418で、中央層スイッチ・ファブリック要素によって生成されたステータス・パケットは、受信側の外側層ファブリック要素(たとえば、図33に示されている例では、スイッチ・ファブリック要素SF1)に送信される。中央層スイッチ・ファブリック要素は、それが生成した組み合わされたステータス・パケットを受信側の外側層スイッチ・ファブリック要素に、これらのスイッチ・ファブリック要素を連結する専用コンジット(SF5とSF1を連結する専用コンジット3306)を介して送信するのが好ましい。さらに、中央層スイッチ・ファブリック要素は、(ポート・コントローラのステータスに関する)外側層スイッチ・ファブリック要素から受信したステータス・パケットの情報を使用して、それ自体の切換えテーブルを更新する(動作3420参照)。
【0136】
受信側の外側層スイッチ・ファブリック要素(たとえば、図33に示されている例ではスイッチ・ファブリック要素SF1)は、動作3422で、中央層スイッチ・ファブリック要素からステータス・パケットを受信した後、受信されたステータス・パケットに含まれるステータス情報に基づいて、動作3424で、切換えテーブルを更新する。
【0137】
したがって、図33および図34に示されている後方伝搬機構および手順の下では、パケットの受信および出力に関するすべての装置ポートの可用性(すなわち、出力ステータス)を定期的かつ/または連続的に(好ましくはリアルタイムで)通知する専用コンジットを設けてよい。さらに、この後方伝搬機構は、ステータス情報をすべてのスイッチ・ファブリック要素に送信するにあたって必ずしもハンドシェーキング・プロトコルを使用しなくてもよい。
【0138】
図35は、本発明の好ましい実施形態による、図34に示されているプロセスで使用できるステータス・パケット3500の概略図である。このステータス・パケットは複数のビットを含み、好ましい実施形態では、32ビット含んでよい。ステータス・パケットの各ビットは、スイッチ・システムの特定のポート・コントローラと関連付けることができる。たとえば、図33に示されているスイッチ・システムに基づいて、ステータス・パケットのビット01 3502をポート・コントローラPC01と関連付けし、ステータス・パケットのビット02 3504をポート・コントローラP5と関連付けし、他のビットについても同様に関連付けすることができる。ステータス・パケットの各ビットは、スイッチ・システムを通して送信されるパケットの受信/出力に関する、該ビットに関連するポート・コントローラの可用性(すなわち、ステータス)を示すために使用することができる。
【0139】
一例として、「1」を含むビットは、関連するポート・コントローラが、パケットの受信/出力に利用できる(すなわち、このポート・コントローラのステータスは「利用可能」である)ことを示すことができる。逆に、「0」を含むビットは、関連するポート・コントローラが、パケットの受信/出力に利用できない(すなわち、このポート・コントローラのステータスは「利用不能」である)ことを示すことができる。したがって、図35に示されている例示的なステータス・パケット3500において、ビット01および02 3502、3504に含まれる「1」は、ポート・コントローラPC01およびP5が利用可能であることを示し、一方、ビット09、16、および17 3506、3508、3510に含まれる「0」は、ポート・コントローラPC09、PC16、PC17が利用不能であることを示す。
【0140】
(マルチバンク・バッファ)
図36は、スイッチ・ファブリックのスイッチ・マトリクスに、入力データグラムを保存するためのプロセス3600のフローチャートである。スイッチ・マトリクスは、各バッファが1組の部分を有する1組のバッファを有する。データグラムのデータは動作3602に受信され、バッファ部分は、動作3604においてデータで連続的に満たされる。動作3606において、周期的に、データの転送は、バッファからスイッチ・マトリクスに可能になる。バッファ部分が満たされるシーケンスにおいて、データの転送が可能になる各周期において、バッファ部分の1つにおけるデータは、動作3608において、スイッチ・マトリクスに転送されてもよい。
【0141】
本発明の1つの態様において、バッファ部分が、データで満たされている、または、データグラムの終端(すなわち、データグラムのテールまたは最終バイト)を含んでいる場合、バッファ部分におけるデータは、スイッチ・マトリックスに転送されるだけでよい。本発明の他の態様において、スイッチ・マトリクスは、転送されたデータを保存するための複数のメモリ・バンクで構成することもできる。このような実施形態において、メモリ・バンクは、バッファ部分から転送されたデータを受信する際に交替することができる。
【0142】
本発明のさらなる態様において、バッファ部分は、受信したデータを保存するために同等の保存容量をそれぞれ有することができる。好ましい実施形態において、各バッファ部分は、入来データを保存するために、16バイトの保存容量を有する。他の好ましい態様において、データの転送は、16サイクル毎に可能としてもよい。
【0143】
図37は、本発明の実施形態によるスイッチ・ファブリック・コンポーネント3700内のパケット(すなわち、データグラム)3702の入来および保存を示す模式的ダイヤグラムである。上記に検討したように、スイッチ・ファブリック・コンポーネント3700は、Vユニット1〜9として示される8個の入来レシーバ(例えば、図1および22に示すスイッチ・ファブリック・コンポーネントのような)を有する図示された実施形態を備えた、複数のインターフェイス・レシーバ3704を含むことができる。
【0144】
各入来レシーバは、スイッチ・マトリクス3706に接続され、これにより、特定の入来レシーバから、スイッチ・マトリクス3706への入来パケットの転送を可能にする。特に、入来レシーバは、関連するセットの入力バッファに結合されている。一実施形態において、入力バッファの各セットは、2つの入力バッファ3708、37100から構成される。一実施形態において、各入力バッファは、少なくとも16バイトの保存容量を有することができる。好ましい実施形態において、各入力バッファは、32バイトの保存容量を有することができる。好ましい選択肢として、各入力バッファは、2つの部分(例えば、入力バッファ3710の2つの部分3712、3714)に分割してもよい。このような選択肢について、各入力バッファの2つの部分3712、3714が、同等のデータ保持容量(例えば、32バイト容量の好ましい実施形態におけるもの)を有することが好ましい。
【0145】
中央制御装置3716は、入力バッファに保存されたデータのスイッチ・マトリクスのメモリ3718への転送を制御する。一実施形態において、スイッチ・マトリクスのメモリは、内部の複数のメモリ・バンクから構成することができる。図37に示すように、各入力バッファが2つの部分から構成されている好ましい実施形態において、スイッチ・マトリクスのメモリは、各メモリ・バンクが、各入力バッファの2つの部分の1つからデータを受信するための専用であること(例えば、メモリ・バンク3720が、入力バッファ部分3712の専用であり、メモリ・バンク3722が入力バッファ部分3714の専用であるなど)が好ましい、2つのメモリ・バンク3720、3722で構成することができる。
【0146】
図38は、本発明の実施形態による、1組の2部分入力バッファ3708、3710、および、2メモリ・バンク・スイッチ・マトリクス3706を有するスイッチ・ファブリック・コンポーネント3700内のパケットの入来と保存を示すシナリオの模式的ダイヤグラムである。2つのうちの第1の入力バッファ3708は、1組の部分(「部分A」3802および「部分B」3804)から構成される一方、第2の入力バッファ3710は、他の1組の部分(「部分C」3712および「部分D」3714)から構成される。各入力バッファ3708、3710は、32バイトの容量を有し、各部分3712、3714、3802、3804は、16バイトの容量を有している。図38を参照すると、バッファの各々における各バイトは、矩形で表される。黒い矩形は、特定のバイトがデータで満たされていることを表す。
【0147】
入来レシーバ3704は、各サイクルの入力バッファの1つのバイトに、それが受信中の入来パケットの1バイトを転送することができる。このデータ転送の間、入来レシーバは、入力バッファのバイトを連続的に満たす。同様に、入力バッファの部分から、メモリへのデータの転送を可能にするために、中央制御装置は、周期的に、16サイクル・カウント毎に(メモリ・バンク1 3720またはメモリ・バンク2 3722のいずれかの)メモリにアクセスすることを許可する。このシナリオにおいて、メモリのアクセスは、先ず、サイクル・カウント7で可能になり、続いて、サイクル・カウント23、39、55、71、87、103、119、135、151などで可能になる。さらに、入力バッファからメモリ・バンクへのデータの転送は、入力バッファの部分がデータで完全に満たされた(すなわち、16バイトのデータ)、または、パケットの終端バイト(すなわち、パケットの最終バイト)を含む場合にのみ行われる。
【0148】
さらに、メモリ・バンクは、入力バッファからのパケット・データの受信中に交替する。例えば、第1のメモリ・アクセスにおいて、データはメモリ・バンク1に転送してもよく、第2のメモリ・アクセスにおいて、データはメモリ・バンク2に転送してもよく、また、第3のメモリ・アクセスにおいて、データはメモリ・バンク3に転送してもよい、などである。
【0149】
図38に示すシナリオにおいて、97バイトの長さを有する第1の入来パケット3806は、スイッチ・ファブリック3700の入来レシーバ3704に転送されており、この後、4バイトのスペース3808が続き、その後、97バイトの長さを有する第2の入来パケット3810が続く。サイクル・カウント1では、第1のパケットの第1のバイトは、入来レシーバによって受信され、第1の入力バッファの部分A3802の第1のバイト3812を満たすために転送される。
【0150】
サイクル7において、部分A3812の16バイトのうちの7つは、第1パケット3806のデータの最初の7バイトで満たされ、中央制御装置は、このシナリオにおいて初めてメモリ・バンクへのアクセスを許可する。しかし、入力バッファのどの部分も完全に満たされていず、それらのどれもパケットの終端バイトを含んでいないため、サイクル7において、入力バッファとメモリ・バンクとの間では、パケット・データの転送はない。
【0151】
サイクル・カウント16において、第1の入力バッファの部分A3812の全ての16のバイトは、パケット1の最初の16入来バイトで満たされている。しかし、この時点において、次のメモリ・アクセスは、サイクル・カウント23まで行われない。
【0152】
図P11は、本発明の実施形態によるサイクル・カウント23における図38に示すシナリオの模式的ダイヤグラムである。サイクル・カウント23までに、パケット1のさらに7つのバイトが、入力バッファ1の部分B3804に転送されている。同様に、図P11に示すように、サイクル・カウント23において、メモリ・アクセスが中央制御装置によって可能となり、入力バッファ1の部分Aが(サイクル・カウント16以来)満たされているため、部分A3802に含まれるデータの16バイトはメモリ・バンク1 3720に読み出され、書き込まれ(矢印P1102を参照)、続いて、部分A3802から消去される。
【0153】
サイクル・カウント39における次のメモリ・アクセスの時までに、入力バッファ1の部分Bの全ては、パケット1からのデータで(サイクル・カウント32以来)満たされており、パケット1のバイト33〜39は、入力バッファ2 3710の部分C3712に転送されている。したがって、サイクル・カウント39において、部分Bのデータのバイトの全てがメモリ・バンク2 3722に転送される(すなわち、読み出しと書き込みの機能を実行する)。
【0154】
サイクル・カウント55における次のメモリ・アクセスの時に、入力バッファ2の部分Cの全ては、パケット1からのデータで(サイクル・カウント48以来)満たされており、パケット1のバイト49〜55は、入力バッファ2 3710の部分D3714に転送されている。したがって、サイクル・カウント55において、部分Cのデータのバイトの全ては、メモリ・バンク1 3720に(メモリ・バンクがデータの受信に対する利用可能性において交替するため)転送される(すなわち、読み出しと書き込みの機能を実行する)。
【0155】
サイクル・カウント71における次のメモリ・アクセスの時に、入力バッファ2の部分Dの全ては、パケット1からのデータで(サイクル・カウント64以来)満たされており、パケット1のバイト65〜71は、入力バッファ1 3708の部分A3802に転送されている。同様に、サイクル・カウント71において、部分Dのデータのバイトの全ては、メモリ・バンク2 3722に転送される。
【0156】
次のメモリ・アクセスは、サイクル・カウント87において行われ、この時、入力バッファ1の部分Aの全ては、パケット1からのデータで(サイクル・カウント80以来)満たされており、パケット1のバイト81〜87は入力バッファ1 3708の部分B3804に転送されている。同様に、部分Aのデータのバイトの全ては、サイクル・カウント87でメモリ・バンク1 3720に転送される。
【0157】
図40は、本発明の実施形態によるサイクル・カウント103における図38に示すシナリオの模式的ダイヤグラムである。図40は、サイクル・カウント88とサイクル・カウント103との間のシナリオにおいて、何が起こるかについての以下の検討のために使用される。サイクル・カウント96において、入力バッファ1の部分Bの全ては、パケット1のバイト81〜96で満たされている。サイクル・カウント97において、パケット1の最終バイト(バイト97)は、入力バッファBの部分Cの第1のバイト4002に転送される。パケット1のバイト97はパケット1の終端バイトであるため、中央制御装置は、入力バッファ2をデータで満たすことを終了する。
【0158】
サイクル98、99、100、101の間、パケット1と2の間の4バイトのスペースのために、データは入来レシーバによって受信されない。サイクル・カウント102において、パケット2の第1のバイトは、入来レシーバによって受信され、入力バッファ1の部分Aの第1のバイトに転送される。この時点で、入力バッファ1の部分Bがパケット1のバイト81〜96を未だに含んでいることを念頭に置くことは重要である。入力バッファ1に転送された、サイクル・カウント102において受信されたパケット1の入来バイトは、同じく入力バッファ1に同時に保存されているパケット1からのデータのいずれをも上書きしない。これは、パケット2 4002の第1の入来バイトが、入力バッファ1の部分Aに保存される一方、パケット1の保存されたバイト(バイト81〜96)は、入力バッファ1の部分Bに保存されるためである。
【0159】
サイクル・カウント103において、次のメモリ・アクセスが行われる。パケット1のバイト81〜96は、メモリ・バンク2 3722に転送され、入力バッファ1の部分Bは消去される。同様に、サイクル・カウント103において、パケット2の第2の入来バイト4006は、入力バッファ1の部分Bに転送される。パケット1 4002のバイト97は、入力バッファ2の部分C4002に未だに残っている。サイクル・カウント119において、続く次のメモリ・アクセスが中央制御装置によって許可される。この時点において、バイト97がパケットの終端バイトであるため、パケット1 4002のバイト97は、メモリ・バンク1に転送される。同様に、サイクル・カウント119においてメモリ・バンク1に転送されるものは、サイクル・カウント117において部分Aを満たすことを完了した、パケット2の最初の16バイトである。
【0160】
図41は、本発明の実施形態による図38で使用されているデュアルの2部分バッファの代わりに、小さなデュアル入力バッファ4102、4104が使用されている図38に示すシナリオに類似する流れ4100の模式図である。同様に、このシナリオ4100において、単一のバンク・メモリ4106は、デュアル・メモリ・バンクの代わりにスイッチ・マトリクスに設けられている。図38に示すシナリオにおけるように、各入力バッファ4102、4104は、それぞれのバッファ内に矩形で示す各バイトを備えた32バイトを保持するための容量を有する。黒い矩形は、特定のバイトがデータで満たされていることを示す。中央制御装置は、同様に、周期的に、入力バッファからメモリ・バンクへのデータの転送を可能にするために、(ちょうど図38のシナリオにあるように)このシナリオP800において、16サイクル・カウント毎にアクセスを許可する。この現在のシナリオにおいて、メモリ・アクセスも、同様に、先ず、サイクル・カウント7で可能となり、続いて、サイクル・カウント23、39、55、71、87、103、119、135、151などで可能となる。入力バッファが、データ(すなわち、32バイトのデータ)で完全に満たされているか、パケットの終端バイト(すなわち、パケットの最終バイト)を含んでいる場合にのみ、さらに、このシナリオ4100において、入力バッファからメモリ・バッファへのデータの転送が行われる。
【0161】
さらに、図38に示すシナリオにおけるように、このシナリオ4100において、97バイトの長さを有する第1の入来パケット3806は、入来レシーバに転送され、次に、4バイトのスペースが続き、次に、97バイトの長さを有する第2の入来パケットが続く。サイクル・カウント1で、第1パケットの第1バイトは、入来レシーバによって受信され、第1入力バッファ4102を満たすために転送される。
【0162】
図38に示す配置と比較する時、この配置に生じる問題としては、小さなデュアル入力バッファが、様々な大きさの入来パケットを扱えないことである。この問題は、サイクル・カウント102におけるシナリオ4100の状況を示す図41に示す。サイクル・カウント96において、第1の入力バッファ4102は、第1の入来パケットのバイト65〜96で完全に満たされている。第1入力バッファが満たされていず、パケットの終端バイトを含んでいなかったため、第1の入力バッファ4102のデータの転送は、サイクル・カウント71および87において、メモリ・アクセスで可能とされた。サイクル・カウント97において、第1の入来パケットの最終バイト(バイト97)4108が受信され、第2の入力バッファ4104の第1のバイトに転送される。しかし、次のメモリ・アクセスは、サイクル・カウント103において可能となる。したがって、第1の入力バッファの第1のパケットのデータは、サイクル・カウント103まで転送することができない。
【0163】
サイクル・カウント98〜101において、入来パケット間にスペースが発生し、そのため、これらのサイクルの間には入力バッファへの伝送されるデータはない。サイクル・カウント102において、第2のパケットの第1のバイト4110は、入来レシーバによって受信され、(標準パケット転送プロトコルに従って)第1の入力バッファに転送され、したがって、第1の入力バッファに保存された第1のパケットのバイト4112(バイト65)を上書きし、これによって、第1のパケットのデータを、これがメモリ・バンク4106に転送される前に、損傷する。第1のパケットのデータをそのような状態に損傷する問題を回避するための1つの選択肢は、第3の入力バッファを追加することである。他の選択肢は、図38に示すデュアルの2部分入力バッファ配置を使用することである。デュアルの2部分入力バッファ配置を使用することによって、スイッチ・マトリクス/スイッチ・ファブリック・コンポーネントの全チップ面積のハードウェア面での削減を達成することができる。
【0164】
図42は、本発明の実施形態によるスイッチ・マトリクス・メモリ・バンクのためのメモリ・アクセスのサイズを示す模式的ダイヤグラムである。入力バッファ4204への入力パケット(すなわち、データグラム)4202に対するデータ伝送速度(「Rx速度」)は、R(ビット/秒)と表すことができる。メモリ4206へのアクセスは、各入力バッファ(および、各出力バッファに対しても同じであってもよい)に対してT(秒)毎に許可される。本発明の実施形態によれば、メモリに対する最小メモリ・アクセス・サイズは、RT(ビット)である。好ましい実施形態において、様々な大きさのパケットを扱うために十分なメモリ・アクセス・サイズは、2RT(ビット)である。
【0165】
本発明によるシステムの一実施形態は、IBM互換のパーソナル・コンピュータ、Apple Macintoshコンピュータ、または、UNIXベースのワーク・ステーションなどのコンピュータの流れにおいて実施することができる。代表的なハードウェア・コンフィギュレーションは、図43に示し、この図は、マイクロプロセッサなどの中央処理ユニット4310、および、システム・バス4312を介して相互接続されたいくつかの他のユニットを有する実施形態によるワーク・ステーションの典型的なハードウェア・コンフィギュレーションを示す。このワーク・ステーションは、さらに、ランダム・アクセス・メモリ(RAM)4314、リード・オンリー・メモリ(ROM)4316、ディスク記憶ユニット4320などの周辺機器をバス4312に接続するためのI/Oアダプタ4318、キーボード4324を接続するためのユーザ・インターフェイス・アダプタ4322、マウス4326、スピーカ4328、マイクロフォン4332、および/または、バス4312へのタッチ・スクリーン(図示せず)などの他のユーザ・インターフェイス・デバイス、ワーク・ステーションを(例えば、データ処理ネットワークなどの)通信ネットワーク4335へ接続するための通信アダプタ4334、および、バス4312をディスプレー・デバイス4338に接続するためのディスプレー・アダプタ4336をさらに含む。ワーク・ステーションは、これに常駐で、Microsoft WindowsNTまたはWindows/95のオペレーティング・システム(OS)、IBM OS/2オペレーティング・システム、MAC OS、または、UNIXオペレーティング・システムを典型的に有する。当業者には、本発明の実施形態が、上述したもの以外のプラットフォームおよびオペレーティング・システム上に実装することもできることを理解する。実施形態は、JAVA、C、および、C++言語を使用して書くこともでき、オブジェクト志向のプログラミング方法論を利用することもできる。
【0166】
様々な実施形態が上記に説明された一方、それらが実施例の方法でのみ提示され、限定とはならないことが理解される。したがって、好ましい実施形態の柔軟性および範囲は、上記に説明された実施形態のいずれによっても限定されるべきではないが、冒頭の特許請求の範囲およびそれに同等のものに従ってのみ定義されるべきである。
【図面の簡単な説明】
【図1】
本発明の実施形態による、マルチポート・スイッチ・アーキテクチャの概略的なブロック図である。
【図2】
本発明の実施形態による、他のマルチ・ポート・スイッチ・アーキテクチャの概略的なブロック図である。
【図3】
本発明の実施形態による、ギガビット・アップリンキングの概略的なブロック図である。
【図4】
本発明の実施形態による、ポート・コントローラのアーキテクチャの概略的なブロック図である。
【図5】
本発明の実施形態による、スイッチ・ファブリックを通る送信のデータグラムを準備するプロセスのフローチャートである。
【図6】
本発明の実施形態による、例示的なパケットの概略的な表示である。
【図7】
本発明の実施形態による、パケットを処理するプロセスのフローチャートである。
【図8】
本発明の実施形態による、ポート・コントローラにおいて図7に示したパケットを処理するプロセスを示す第1の概略的な流れ図である。
【図9】
本発明の実施形態による、ポート・コントローラにおいて図7に示したパケットを処理するプロセスを示す第2の概略的な流れ図である。
【図10】
本発明の実施形態による、ポート・コントローラに入る複数の入力パケットの処理および記憶の例を表す概略図である。
【図11】
本発明の実施形態による、パケットのボディ部分からヘッダ部分を分離するプロセスのフローチャートである。
【図12】
本発明の実施形態による、ヘッダ部分から分離した後、パケットのボディ部分をメモリに記憶するプロセスのフローチャートである。
【図13】
本発明の実施形態による、パケットの処理したヘッダ部分をメモリに記憶するプロセスのフローチャートである。
【図14】
本発明の実施形態による、入力パケットのセルをメモリに記憶することを表す概略図である。
【図15】
本発明の実施形態による、スイッチ・ファブリック・システムにおいて、ポート・コントローラからスイッチ・ファブリックまでパケットを転送するプロセスのフローチャートである。
【図16】
本発明の実施形態による、エグレスのためにキューに入れたパケットの連結リストを生成するプロセスのフローチャートである。
【図17】
本発明の実施形態による、パケット・メモリに記憶されたパケットを割り当てられた出力優先キューに連結することを示す概略図である。
【図18】
本発明の実施形態による、図17に示したパケット・メモリに記憶された例示的なパケットを示す概略図である。
【図19】
本発明の実施形態による、ポート・コントローラを介してスイッチ・システムを出るパケットを処理するプロセスを示す概略的な流れ図である。
【図20】
本発明の実施形態による、スイッチ・ファブリック構成要素のアーキテクチャの概略的なブロック図である。
【図21】
本発明の実施形態による、スイッチ・ファブリックを通るデータグラムを送信するプロセスのフローチャートである。
【図22】
本発明の実施形態による、スイッチ・ファブリックを通るパケットを経路指定するスイッチング・テーブルの実装を示すための、4つの8×8のスイッチ・ファブリック構成要素を備えるスイッチ・ファブリックの概略的なブロック図である。
【図23、図24、図25、図26】
本発明の実施形態による、図22に示したスイッチ・ファブリックのための例示的なスイッチング・テーブルの概略図である。
【図27】
本発明の実施形態による、スイッチ・ファブリック構成要素を通るパケットを処理するプロセスのフローチャートである。
【図28】
本発明の実施形態による、決定結果がポート・ビットマップを備えるスイッチ・ファブリック構成要素を通るパケットを処理するプロセスを示す概略図である。
【図29】
本発明の実施形態による、スイッチ・ファブリック構成要素におけるポート・ビットマップ(特に、8ビットのポート・ビットマップ)の例示的な使用を示す概略図である。
【図30】
本発明の実施形態による、例示的な宛先ベクトル、宛先ベクトルのためのエグレス・マスク、および変更した宛先ベクトルの概略図である。
【図31】
本発明の実施形態による、決定結果が宛先ベクトルを備えるスイッチ・ファブリック構成要素を通るパケットを処理する他のプロセスを示す概略図である。
【図32】
本発明の実施形態による、スイッチ・ファブリックのスイッチング・テーブルを更新するプロセスのフローチャートである。
【図33】
本発明の実施形態による、スイッチ・ファブリックにおける状況と制御の情報の後方伝播のための例示的な構成を示す概略図である。
【図34】
本発明の実施形態による、スイッチ・ファブリック・システムにおいてスイッチング・テーブルを更新するプロセスのフローチャートである。
【図35】
本発明の好ましい実施形態による、図34に記述したプロセスにおいて使用することが可能である状況パケットの概略図である。
【図36】
本発明の実施形態による、入力データグラムをスイッチ・ファブリックのスイッチ・マトリックスに記憶するプロセスのフローチャートである。
【図37】
本発明の実施形態による、スイッチ・ファブリック構成要素におけるパケットのイングレスと記憶(すなわち、データグラム)を示す概略図である。
【図38】
本発明の実施形態による、2つの部分の入力バッファと2つのメモリ・バンクのスイッチ・マトリックスの対を有するスイッチ・ファブリック構成要素におけるパケットのイングレスと記憶を示すシナリオの概略図である。
【図39】
本発明の実施形態による、サイクル・カウント23における図38に記述したシナリオの概略図である。
【図40】
本発明の実施形態による、サイクル・カウント103における図38に記述したシナリオの概略図である。
【図41】
本発明の実施形態による、図38で使用した二重の2つの部分のバッファの代わりにトリビアルな二重入力バッファを使用した、図38に提示したシナリオに類似のシナリオの概略図である。
【図42】
本発明の実施形態による、スイッチ・マトリックス・メモリ・バンクに対するメモリ・アクセス・サイズを示す概略図である。
【図43】
本発明の一実施形態のハードウエア実装に関する概略図である。
(関連出願の相互参照)
本願は、2000年8月11日出願の「GIGABIT ETHERNET IP SWITCH CHIPSET」という名称の米国仮特許出願第60/225034号の利点を主張するものであり、これは全体としてあらゆる目的のために参照により本明細書に組み込まれる。
【0002】
(発明の分野)
本発明は一般にデータ・ルーティング・システムに関し、より詳細には、ネットワーク・スイッチを介したパケットのルーティングに関する。
【0003】
(発明の背景)
イーサネットは、幅広く導入されているローカル・エリア・ネットワーク技術である。米国電気電子学会(IEEE)802.3の規格において指定されたイーサネットは当初、Xeroxによって開発され、次いでさらにXerox、DECおよびIntelによって開発された。イーサネットLANは通常、同軸ケーブルまたは特殊なグレードのツイスト・ペア線を使用する。一般に導入されたイーサネット・システムは10BASE−Tと呼ばれ、最大10Mbpsの伝送速度を提供する。デバイスがケーブルに接続され、キャリア検知多重アクセス衝突検出(CSMA/CD)プロトコルを使用して、アクセスのために競争する。ファスト・イーサネットまたは100BASE−Tは最大100メガビット毎秒の伝送速度を提供し、LANバックボーン・システムのために使用することができ、10BASE−Tカードを有するワークステーションをサポートする。ギガビット・イーサネットは、さらにより高レベルのバックボーン・サポートを1000メガビット毎秒(1ギガビットまたは10億ビット毎秒)で提供する。
【0004】
ファスト・イーサネットはローカル・エリア・ネットワーク伝送規格であり、100メガビット毎秒のデータ率を提供する(「100BASE−T」と呼ばれる)。既存の10メガビット毎秒(10BASE−T)のイーサネット・カードを有するワークステーションを、ファスト・イーサネット・ネットワークに接続することができる。(100メガビット毎秒は共有データ率であり、各ワークステーションへの入力は10Mbpsカードによって制約される)。ギガビット・イーサネットはローカル・エリア・ネットワーク伝送規格であり、10億ビット毎秒(1ギガビット)のデータ率を提供する。ギガビット・イーサネットはIEEE802.3規格において定義されている。ギガビット・イーサネットは、エンタープライズ・バックボーンとして使用することができる。ギガビット・イーサネットを、光ファイバにおいて搬送することができる(銅媒体上では非常に短い距離が可能)。10および100Mbpsカードを有する既存のイーサネットLANは、ギガビット・イーサネット・バックボーンに送り込まれることが可能である。
【0005】
データを、パケット交換網を介して、デジタル信号を使用して送信することができる。パケット交換網では、ユーザが同じパスを同時に共有することができ、データ・ユニットが移動するルートは、状態が変化すると変わる可能性がある。パケット交換では、メッセージがパケットに分割され、これらはある数のバイトのユニットである。送信側および宛先のネットワーク・アドレスがパケットに追加される。各ネットワーク・ポイントがパケットを見て、これを次にどこへ送信するべきかを調べる。同じメッセージにおけるパケットは異なるルートを移動する可能性があり、それらが送信された順序と同じ順序で到着しない可能性がある。宛先では、メッセージにおけるパケットが収集され、元のメッセージに再び組み立てられる。
【0006】
階層化は、プログラミングを別々のステップに編成することであり、これらは順次実行され、特定のインターフェイスによって、各ステップの結果を次のプログラムまたは層へ、ある量の情報の送信または受信などの全体の機能が完了するまで渡すために、定義される。通信プログラムはしばしば階層化される。通信プログラムのための参照モデル、開放型システム間相互接続(OSI)は、階層化されたプロトコルのセットであり、これにおいては2つのプログラムが通信交換の両側にあり、等しいセットの層を使用する。OSIは7つの層を含み、それぞれが、プログラム対プログラムの通信をコンピュータの間で行うために実行されなければならない異なる機能を反映する。伝送制御プロトコルおよびインターネット・プロトコル(TCP/IP)は、2層セットのプログラムの一例であり、インターネット通信のためのトランスポートおよびネットワーク・アドレス機能を提供するものである。
【0007】
スイッチはインターネットワーキング・デバイスであり、データのユニットをその次の宛先へ送信するためのパスまたは回路を選択する。スイッチはルータの機能も含み、ルート、および特に、何の隣接ネットワーク・ポイントにデータが送信されるべきであるかを決定することもできる。階層化の開放型システム間相互接続(OSI)通信モデルに関して、スイッチをデータ・リンク層−レイヤ2に関連付けることができる。スイッチは、ネットワーク層−レイヤ3のルーティング機能を実行可能にすることもできる。レイヤ3スイッチは時としてIPスイッチとも呼ばれる。
【0008】
OSIのデータ・リンク層−レイヤ2は、データをネットワークにおいて物理リンクに渡って移動させることに関係する。ネットワークでは、スイッチを、データ・メッセージをレイヤ2レベルでリダイレクトするデバイスにすることができ、これは媒体アクセス制御(MAC)アドレスを使用して、どこにメッセージをダイレクトするべきであるかを決定する。データリンク層は2つのサブレイヤを含み、これらはIEEE−802のLAN規格において記載されており、すなわち媒体アクセス制御(MAC)および論理リンク制御(LLC)である。データ・リンク層は、最初の接続がセット・アップされていることを確かめ、出力データをデータ・フレームに分割し、受信側からの、データがうまく到着したという応答を処理する。これはまた、入力データがうまく受信されたことも保証し、これは、フレームにおける特殊な場所でのビット・パターンを解析することによって行う。
【0009】
OSIのネットワーク層−レイヤ3は、ネットワークにおける隣接ノードのアドレスを知ること、ルートおよびサービス品質を選択すること、およびローカル・ホスト・ドメインのための入力メッセージを認識し、かつトランスポート層へ転送することに関係する。スイッチをレイヤ3デバイスにすることができ、これはレイヤ3の機能を実行することができる。IPアドレスはレイヤ3アドレスである。
【0010】
交換は、その本質により、一時データ・フローを含む。ギガビット速度で、これらの一時的なものは非常に高速に、かつ非常にランダムな方法において発生する。過去においては、十分に高速な速度で、スイッチ・データ・フローのどのコンポーネントがダイレクトされるべきであるかを決定して、スイッチを通過するデータ・フローを最大限にし、かつスイッチにおいて妨害となるトラフィックを低減することは困難であった。
【0011】
(発明の概要)
パケットをポート・コントローラからスイッチ・ファブリック・システムにおけるスイッチ・ファブリックへ転送するためのシステム、方法および製造品を提供する。パケットがポート・コントローラにおいて処理されたことを指示する通知が受信される。処理されたパケットが出力優先待ち行列に割り当てられ、リンクされる。その後、パケットが、リンクを介して検索され、ポート・コントローラからスイッチ・ファブリックへ送信される。
本発明の一態様では、パケットを、リンクされたリストにおいて割り当てられた出力優先待ち行列にリンクすることができる。
【0012】
本発明の一実施形態では、後に処理されたパケットを、同じ出力優先待ち行列に割り当て、リンクすることができる。オプションとして、ポインタがパケットを、後に処理されたパケットにリンクすることができる。本発明の別の実施形態では、パケットをメモリに格納し、メモリから検索することができる。さらなるオプションとして、パケットをメモリに、複数のリンクされたセルにおいて格納することができる。
本発明の別の態様では、処理されたパケットが、スイッチ・ファブリックを介してアクセス可能なパケットのための1つまたは複数の宛先を指示する宛先ベクトルを含むことができる。
【0013】
本発明はまた、パケットをポート・コントローラのメモリに格納するためのデータ構造も含むことができる。データ構造は複数の待ち行列を含むことができ、各待ち行列はそれに関連付けられたヘッド/開始アドレスを有する。1つまたは複数のパケットがメモリに格納され、各パケットは待ち行列のうち1つに割り当てられる。各待ち行列について、開始アドレスが、待ち行列におけるパケットの最初のものへのリンクを有することができ、待ち行列における各パケットは、待ち行列における次の後続のパケットへのリンクを有することができる。一態様では、各パケットをメモリに、複数のリンクされたセルにおいて格納することができる。好ましい実施形態では、ポインタがパケットのセルを、パケットの後続のセルへリンクし、パケットの最後のセルはヌル・ポインタを有する。
【0014】
以上および他の特徴、態様、および利点は、以下の詳細な説明、添付の請求項、および添付の図面から、より良く理解される。
【0015】
(詳細な説明)
イーサネット・スイッチ・ファブリック・チップセット・システムは、スイッチ・ファブリック・トポロジ、および、32ギガビットのイーサネット・データ・ストリームのワイヤスピード、ノンブロッキング、レイヤ2およびレイヤ3のスイッチングを支持することができるマルチプロセッサ・ポート・コントローラを使用して開示されている。これは、ネットワーク・プロセッサとして当技術分野で知られているものに拡張することができる。スイッチング技術の基本的な理解のために、読者は、Rich Seifert(John Wiley&Sons,Inc.2000)によるThe Switch Book:the complete guide to LAN switching technologyを指示される。これは、あらゆる目的のために、参考文献によって完全に本明細書に組み込まれている。
【0016】
本明細書に記述したシステムにより、どのスイッチ・ファブリック構成要素の過渡的なデータ・フローを向けることができるかに関する決定は、他のデータ・フロー・トラフィックによるブロッキングを防止しながら、スイッチ・ファブリック・システムを通るデータ・フローを最大にするのに十分な速さで実施することが可能である。これは、過渡現象が生じる前に可能な限り多くの決定を実施し、かつ、考慮の決定を、スイッチ・ファブリックを通る経路全体ではなく、単に経路の次のスイッチ・ファブリック構成要素とすることによって、達成される。この解決法の一部として、スイッチ・ファブリックを通して状況と制御の情報を送り返すことに備え、かつ、制御経路における初期接続手順の必要性を軽減または排除することを支援するために、データ経路の他に、分離制御経路を提供することが可能である。この解決法の他の一部として、制御経路を使用して更新することができる各スイッチ・ファブリック構成要素の内側に、スイッチング・テーブルを提供することが可能である。
【0017】
(システム構成)
図1は、本発明の実施形態による、マルチポート・スイッチ・アーキテクチャ100の概略的なブロック図である。一般に、このマルチポート・スイッチ・アーキテクチャ100は、スイッチ・ファブリック104を介して互いに相互接続された複数のポート・コントローラ(例示した実施形態では32のポート・コントローラ)102、ポート・コントローラ102に接続されたネットワーク制御プロセッサ106、およびスイッチ・ファブリック104を備える。図1に示したように、要素間の接続(例えば108、110、112)は、双方向である。
【0018】
さらに図1を参照すると、このマルチポート・スイッチ・アーキテクチャ100の特定の実施形態では、スイッチ・ファブリックは、クロス・ネットワーク構成/トポロジとして知られているものにおいて双方向コンジット(例えばコンジット110)を介して共に接続されている複数のスイッチ・ファブリック構成要素(例示した実施形態では12のスイッチ・ファブリック構成要素)104a、104b、104c、104d、104e、104f、104g、104h、104i、104j、104k、104lを備えることが可能である。図1に示した特定の構成は、スイッチ・ファブリック構成要素(104a、104b、104c、104dおよび104i、104j、104k、104l)の外側ステージの対を接続するスイッチ・ファブリック構成要素(104e、104f、104g、104h)の中間ステージを有する3つのステージまたは層のクロス・ネットワーク・トポロジとして知られている。
【0019】
スイッチ・ファブリック104のクロス・ネットワーク・トポロジにより、各外側ステージのスイッチ・ファブリック構成要素104a、104b、104c、104dおよび104i、104j、104k、104lは、独立したコンジットを介して、中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hの各々に直接結合される。例えば、図1では、スイッチ・ファブリック構成要素104aは、それを4つの中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hに結合する4つのコンジットを有する。逆に、スイッチ・ファブリック104のクロス・ネットワーク・トポロジにより、中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hの各々は、独立したコンジットを介して、外側ステージのスイッチ・ファブリック構成要素104a、104b、104c、104d、104i、104j、104k、104lの各々に直接結合される。したがって、図1に示した実施形態では、中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hは、外側ステージのスイッチ・ファブリック構成要素104a、104b、104c、104d、104i、104j、104k、104lの各々への直接的で独立した接続を有する。
【0020】
また、スイッチ・ファブリックを横切る単一のパケットのために、単一の外側ステージのスイッチ/ファブリック構成要素を備える入力ステージ、中間ステージのスイッチ・ファブック構成要素を備える中間ステージ、および、スイッチ・ファブリック構成要素間の双方向の接続性のために残りの外側ステージのスイッチ・ファブリック構成要素を備える外側ステージを有するような、図1に示した特定の実施形態を考慮することが可能であることに留意されたい。
【0021】
各外層のスイッチ・ファブリック構成要素104a、104b、104c、104d、104i、104j、104k、104lは、直接それに結合/接続された複数のポート・コントローラを有する。図1に示した実施形態では、外層のスイッチ・ファブリック構成要素の各々は、1つのコンジット(例えばコンジット108)が各ポート・コントローラに対応する、4つのコンジットによってそれに結合された4つのポート・コントローラを有する。例えば、スイッチ・ファブリック104aは、4つの別々の双方向コンジットによってそれに結合されたポート・コントローラ102a、102b、102c、102dを有する。この実施形態の一態様では、ポート・コントローラ102は、すべて、ギガビットのポート・コントローラを備えることが可能である。
【0022】
スイッチ・ファブリックのクロス・ネットワーク・トポロジの特徴は、ノンブロッキング・トポロジであるということである。各ポート・コントローラから、中間ステージのスイッチ・ファブリック構成要素104e、104f、104g、104hのそれぞれを通る同じスイッチ・ファブリック構成要素に直接結合されていない他のすべてのポート・コントローラまで、経路が存在する。例えば、スイッチ・ファブリック構成要素104aに接続されたポート・コントローラ102a、102b、102c、102dは、中間ステージのスイッチ・ファブック構成要素104e、104f、104g、104hの各々を介して、他の外側ステージのスイッチ・ファブリック構成要素104b、104c、104d、104i、104j、104k、104lのすべてに結合されたポート・コントローラに接続されている。
【0023】
図1に示した構成100の好ましい実施形態では、全体で32ギガビットのイーサネット・ポート・コントローラのためのスイッチ・ファブリック構成要素の各外側ステージに提供された、16ギガビットのイーサネット・ポート・コントローラが存在することが可能である。この好ましい実施形態では、16ギガビットのイーサネット・ポート・コントローラの各セットからの最大スループットの要求は、16×2(2倍)ギガビット・イーサネット・データ・ストリーム=32Gbps+[(32Gbps+オーバーヘッド)+(32Gbps+オーバーヘッド)]の両方向における最大スループットの要求に対するオーバーヘッド=64Gbps+オーバーヘッドとなることが可能である。そのような好ましい実施形態では、32ギガビットのイーサネット・ポート構成におけるスイッチ・ファブリック構成要素の各々は、16Gbpsにオーバーヘッドを加えたスループット能力を有する変更された8ポートのクロスバー・スイッチ・ファブリックとすることが可能である。スイッチ・ファブリックの中間ステージは、これらのデバイスの4つを備えるので、中間ステージのスループットは、全体で64Gbpsにオーバーヘッドを加えたものとすることが可能である。
【0024】
図2は、本発明の実施形態による、他のマルチポート・スイッチ・アーキテクチャ200の概略的なブロック図である。この実施形態では、マルチポート・スイッチ・アーキテクチャ200は、単一のスイッチ・ファブリック構成要素204を備えるスイッチ・ファブリックを介して共に相互接続された4つのポート・コントローラ202a、202b、202c、202dを備える。そのような実施形態の一態様では、ポート・コントローラ202a、202b、202c、202dは、図1に示したポート・コントローラのアーキテクチャと同様のアーキテクチャを有するファスト・イーサネット・ポート・コントローラを備えることが可能である。
【0025】
図3は、本発明の実施形態による、ギガビット・アップリンキング300の概略的なブロック図である。アップリンキング300は、双方向に一緒に結合された第1ポート・コントローラ302aと第2ポート・コントローラ302bを備える。そのような実施形態の一態様では、ポート・コントローラの一方は、図2に示したマルチポート・スイッチ・アーキテクチャ200で使用したタイプのようなファスト・イーサネット・ポート・コントローラ302aを備えることが可能であり、他のポート・コントローラ302bは、図1に示したマルチ・ポート・スイッチ・アーキテクチャ100で使用したタイプのようなギガビット・ポート・コントローラを備えることが可能である。
【0026】
(ポート・コントローラ)
各ポート・コントローラは、パイプライン処理と呼ばれる技術を実施する。パイプライン処理は、複数の命令が実行の際に部分的に重なる実施技術である。パイプラインは、一連のステージとして定義することができ、各ステージで何らかの作業が行われる。一般にポート・コントローラは、物理インターフェイス(PHY)からイーサネット・パケットを受け取り、それらを処理し、スイッチ・ファブリックに送るための、第1のパイプラインを有する。ポート・コントローラはまた、類似するが複雑さのより低い第2のパイプラインも有し、これはスイッチ・ファブリックからイーサネット・パケットを受け取り、それらを物理インターフェイス(PHY)に送るためのものである。
【0027】
一般に、ポート・コントローラの好ましいバージョンが少なくとも2つあるものとすることができる。第1の好ましいバージョンは、単一(二重)ギガビット・イーサネット・ラインに対してワイヤ速度のパケット処理およびその他のポート・コントローラ機能を提供することができる。第2の好ましいバージョンは、8本のファスト・イーサネット(またはイーサネット)・ラインに対して同じ機能を提供することができる。これらのデバイスは、スイッチ・ファブリックによって構成して、32本のギガビット・イーサネット・ラインまで、または256本のファスト・イーサネット・ラインまでのワイヤ速度レイヤ2/3切換えを実現することができる。
【0028】
図4は、本発明の一実施形態によるポート・コントローラ400のアーキテクチャの概略ブロック図である。ポート・コントローラ400は、メディア・アクセス制御(MAC)ユニット402、入口ダイレクト・メモリ・アクセス(入口DMAまたはIDMA)ユニット404、ヘッダ待ち行列406、パケット・プロセッサ・ユニット408、ダイナミック・ランダム・アクセス・メモリ(DRAM)コントローラ410、出力向けスケジューラ412、インターフェイス・トランスミッタ414、フリー・セル・マネージャ416、同期スタティック・ランダム・アクセス・メモリ(SSRAM)コントローラ418、インターフェイス・レシーバ420、出口コントローラ422、出口バッファ424、およびネットワーク・インターフェイス426を備える。DRAMコントローラ410は、外部パケット・バッファ/メモリと呼ばれる第1メモリに結合されるが、このメモリは、同期DRAM(SDRAM)など何らかの種類のダイナミック・ランダム・アクセス・メモリであることが好ましい。DRAMコントローラ410は、第1メモリ/外部パケット・バッファを制御し、外部パケット・バッファに対してデータの読取りおよび書込みを行う。SSRAMコントローラ418は、ポート・コントローラの第2メモリに結合されるが、このメモリは、何らかの種類の同期スタティック・ランダム・アクセス・メモリ(SSRAM)であることが好ましい。
【0029】
MACインターフェイス402は、データ・パケットを送受信するためにイーサネット物理層インターフェイス(PHY)に接続可能である。一実施形態では、MACインターフェイス402は、GMIIインターフェイスを備えたギガビットMACを含むことができる。MACインターフェイス402は、入口DMA404に結合されて、MACインターフェイスによって受信された入力データ・パケットを入口DMA404に送ることができるようにする。
【0030】
入口DMA404は、ヘッダ待ち行列406、DRAMコントローラ410、およびフリー・セル・マネージャ416に結合されている。入力データ・パケットをMACインターフェイス402から受け取ると、入口DMA404は、パケットの本体部分からパケットのヘッダ部分を分離する。次いで、パケットのヘッダ部分は、入口DMA404からヘッダ待ち行列406に転送され、パケットの本体部分は、外部パケット・バッファにリンク・リストで記憶されるようにDRAMコントローラ410に転送される。入口DMA404はまた、パケット・プロセッサ408によって処理されているヘッダ部分に対して、メモリ中の予約された空間へのリンクを定義することも担い、このリンクは、ヘッダ部分が処理された後で入口DMAが処理済みヘッダ部分をメモリに記憶するのに使用する。入口DMAはまた、パケットの記憶が完了したときに出力向けスケジューラ412に通知することも担う。
【0031】
ヘッダ待ち行列406は、パケット・プロセッサ・ユニット408に結合されている。好ましい一実施形態では、ヘッダ待ち行列406は、パケット・プロセッサ・ユニット408によって先入れ先出し(FIFO)処理されるように、入口DMA404から受け取ったヘッダを記憶する。
【0032】
パケット・プロセッサ・ユニット408は、パケットを分析および処理する働きをする。一実施形態では、パケット・プロセッサは複数のパケット・プロセッサを含む。図4に示す実施形態では、パケット・プロセッサ・ユニットは2つのパケット・プロセッサP0およびP1、408aおよび408bを含み、これらは、ヘッダ待ち行列406中のヘッダを処理する際に交互になる。
【0033】
パケット・プロセッサ408は、入力パケットのヘッダ部分をどのように処理するか決定する。パケット・プロセッサ408によるヘッダ部分の処理は、ルックアップ・アドレス・テーブルを利用することによってパケットの宛先を決定し、パケットのヘッダ部分に内部タグ(宛先ベクトルを含む)を付け、次いで処理の完了をヘッダ待ち行列406に通知することを含む。アドレス・ルックアップは、外部SSRAMに記憶された外部アドレス・テーブルにアクセスする(SSRAMコントローラ418を介して)ことによって行う(このSSRAMは、他の必要情報を記憶するのにも使用される)。
【0034】
出力向けスケジューラ412は、パケットが処理されたときに入口DMAから通知を受け取る。出力向けスケジューラ412はまた、DRAMコントローラ410を介して外部パケット・バッファから処理済みパケットをリトリーブできるように、DRAMコントローラ410に結合されている。処理済みパケットをパケット・バッファからリトリーブすると、出力向けスケジューラ412は、ポート・コントローラ400の外に送るために、リトリーブしたパケットをインターフェイス・トランスミッタ414(または定義された優先順位に応じてネットワーク・インターフェイス426)に転送する。
【0035】
DRAMコントローラ410は、入口DMA404から外部パケット・バッファにデータを書き込むための書込みコマンドを実行する。DRAMコントローラ410はまた、出力向けスケジューラ412から読取りコマンドを受け取ると、パケット・バッファから出力向けスケジューラ412へのデータの読取りおよび転送も実行する。
【0036】
インターフェイス・トランスミッタ414は、出力向けスケジューラ412に結合されている。インターフェイス・トランスミッタは、別のポート・コントローラまたはスイッチ・ファブリック・コンポーネントへの接続を可能にする外部入出力を有する。出力向けスケジューラ412は、処理済みパケットをインターフェイス・トランスミッタ414から外部入出力を介してスイッチ・ファブリック・コンポーネントまたは別のポート・コントローラに送ることができるようにするために、処理済みパケットをインターフェイス・トランスミッタ414に送る。
【0037】
フリー・セル・マネージャ416は、入口DMA404および出力向けスケジューラ412に結合されており、それによりDRAMコントローラ410と通信することができる。フリー・セル・マネージャ416は、外部パケット・バッファ空間を管理し、データ記憶に利用可能なメモリ中の空間について入口DMA404に通知し、データ(すなわち処理済みパケット)が出力向けスケジューラ412によってリトリーブされた後でメモリ空間を開放する。
【0038】
インターフェイス・レシーバ420は、スイッチ・ファブリック・コンポーネントまたは別のポート・コントローラに接続可能な外部入出力を有し、スイッチ・ファブリック・コンポーネントまたは他のポート・コントローラからパケットを受け取ることを可能にする。出口コントローラ422は、インターフェイス・レシーバ420に結合されている。出口コントローラ422には、出口バッファ424およびMACインターフェイス402が結合されている。出口コントローラ422は、インターフェイス・レシーバから受け取った送信パケットを出口バッファ424に一時的に記憶し、次いでその後、PHYに送られるように、記憶したパケットを出口バッファ424からMACインターフェイス402に転送する。
【0039】
ネットワーク・インターフェイス・ユニット426は、外部入出力または内部チャネルを介してホスト・プロセッサとデータを交換する。ネットワーク・インターフェイス・ユニット426は、ホスト・プロセッサによって作成された制御パケットを分析し、内部レジスタを読み取り、ルックアップ・テーブルの内容を変更する。好ましい一実施形態では、ポート・コントローラのあらゆる内部ユニットをホスト・プロセッサによってネットワーク・インターフェイス・ユニット426を介して制御できるように、あらゆる内部ユニットはネットワーク・インターフェイス(NPI)バスに接続される。
【0040】
SSRAMコントローラ4018は、第2メモリ(SSRAM)に結合され、SSRAMへのアクセスを制御する。ネットワーク・インターフェイス・ユニット4026およびパケット処理ユニット408がSSRAMコントローラに結合され、したがってSSRAMにアクセスする。SSRAMコントローラ4018は、ネットワーク・インターフェイス・ユニットおよびパケット処理ユニットからの要求を調停する。
【0041】
(パケット処理)
ポート・コントローラ400中では、パケットは、受信された順序に従ってパケット・メモリ/バッファに保存することができる。しかし、本発明の好ましい一実施形態では、入力パケットのヘッダ・フィールドと本体フィールドとの保存順序を変更することのできる、よりフレキシブルなパケット・ソーティング構成を利用することができる。
【0042】
通常、イーサネット・ヘッダおよびTCP/IPヘッダを有するパケットを処理するときは、従来型のスイッチ中でイーサネット・フィールドまたはIPフィールドだけを使用して、切換え方向を決定することができる。対照的に、本明細書で述べるスイッチ・ファブリック・システムの実施形態では、イーサネットとIPフィールドの両方、ならびにTCPフィールドを使用して切換え方向を決定することができる。しかし、このような処理能力を用いると、このような逐次的なパケット保存順序ルーチンは、ヘッダの処理に十分な時間および/または効率を提供することが不可能(または非実際的)であることにより、パケット処理中に獲得できる情報の量を制限する恐れがある。ヘッダ・フィールドと本体フィールドの保存順序を変更することにより、処理中により多くの情報を獲得することができ、それにより、本体フィールドの保存中にヘッダ・フィールドを処理するための追加のタイミング余裕がもたらされ、効率を最大限にしてメモリ・オーバヘッドを縮小することができる。
【0043】
図5は、本発明の一実施形態による、スイッチ・ファブリックを介して送信するためのデータグラムを作成するプロセス500のフローチャートである。まず動作502で、ヘッダ部分および本体部分を有するデータグラムを受信する。動作504および506で、ヘッダ部分を本体部分から分離し、次いで処理のために転送する。動作508で、分離した本体部分をメモリに記憶する。動作510および512で、ヘッダ部分を処理後に受け取り、メモリに記憶する。
【0044】
本発明の一実施形態では、本体部分をメモリに記憶する前に、ヘッダ部分を記憶するためにメモリ中の空間を予約することができ、予約済み空間を突き止めるための、予約済み空間へのリンクもまた生成される。このような実施形態におけるオプションとして、処理済みヘッダを記憶することはさらに、リンクを利用して予約済み空間を突き止め、次いで処理済みヘッダを予約済み空間に記憶することを含むこともできる。
【0045】
本発明の一態様では、本体部分を複数のセルに分割することができる。このような態様では、本体部分をメモリに記憶することはさらに、各セルを逐次的にメモリに記憶し、逐次的に記憶したセル間のリンクを生成することを含むことができる。本発明の別の態様では、処理済みヘッダ部分は、パケットのルーティング先となるスイッチ・ファブリック・システム中の宛先を示す宛先ベクトルを含むことができる。このような態様の好ましい一実施形態では、宛先ベクトルは32ビットのデータを含むことができる。
【0046】
本発明の別の実施形態では、後でスイッチ・ファブリックを介して送信するために、データグラムを出力優先順位待ち行列に割り当てることができる。
【0047】
図6は、本発明の一実施形態による例示的なパケット600の概略図である。パケットは、パケット交換ネットワーク上の発信源と宛先との間でルーティングされるデータの単位として定義することができる。パケット600は、ヘッダ部分またはフィールド(「ヘッダ」)602と、本体部分またはフィールド(「本体」)604を含む。ヘッダ部分602は、切換に使用される制御情報を含み、本体604は一般に、パケットの残りを含む。
【0048】
図6に示す例示的なパケット中では、ヘッダ部分602は処理済みであり、パケットの宛先を示す宛先ベクトル606と、パケットのソースを示すソース・ベクトル608と、パケットの長さを示す長さベクトル610(これらは総称して「内部タグ」または「内部タグ・フィールド」とも呼ばれる)を含む。ヘッダ部分602は、パケットのMAC/TCP/IPおよび何らかのアプリケーション・データも含むことができる。
【0049】
図7は、本発明の一実施形態による、パケット600を処理するプロセス700のフローチャートである。動作702で、入力パケットを受信する。入力パケットは、ヘッダ部分および本体部分を含む。動作704で、パケットのヘッダ部分を本体部分から分離する。次いで動作706で、分離した本体部分をメモリに記憶する。動作2308で、好ましくは動作2306と同時に、ヘッダ部分を処理する。動作2310で、後続の(または第2の)パケットを受信し、この第2のパケットに対してプロセス700を繰り返す。第1の入力パケットのヘッダ部分を処理すると、次いで動作712で、処理済みヘッダ部分をメモリに記憶する。
【0050】
図8は、本発明の一実施形態による、図7で述べたパケット処理プロセス700をポート・コントローラ400中で示した第1の概略流れ図である。入力パケット600が、MACインターフェイス402を介してポート・コントローラの中に受信され、MACインターフェイス402は、パケットを入口DMA404にルーティングする(矢印802参照)。入口DMA404中で、パケットのヘッダ部分602がパケットの本体604から分離される(動作704参照)。次いで入口DMA404は、ヘッダ部分602を処理のためにヘッダ待ち行列406に転送し(矢印806参照)、本体部分604を、DMAコントローラ410を介してメモリ(「パケット・メモリ」)804に記憶する(矢印808および動作706参照)。
【0051】
ヘッダ部分602を処理するために(動作708参照)、ヘッダ待ち行列406は、パッケージ・プロセッサ・ユニット408中の利用可能なパッケージ・プロセッサにヘッダ部分602を転送する(矢印810参照)。ヘッダ部分がパケット・プロセッサ・ユニット408によって処理された後、処理済みヘッダ部分はヘッダ待ち行列406に戻される(矢印812参照)。
【0052】
図9は、本発明の一実施形態による、図7で述べたパケット処理プロセス700をポート・コントローラ400中で示した第2の概略流れ図である。処理済みヘッダ部分は、ヘッダ待ち行列406に戻った後、続いて入口DMA404およびDRAMコントローラ410を介してパケット・メモリ804に記憶される(矢印902参照)。
【0053】
入口DMA404は、処理済みヘッダ部分を記憶すると、パケットの送信準備が今やできたことを出力向けスケジューラ412に通知し、パケットをパケット・メモリ804からリトリーブするための情報を出力向けスケジューラに提供する(矢印904参照)。出力向けスケジューラ412は、パケットを送信する準備ができたとき、パケットをパケット・メモリ8046からリトリーブして、インターフェイス・トランスミッタ414に転送する。インターフェイス・トランスミッタ414は、ポート・コントローラ400からパケットを出力する(矢印906参照)。
【0054】
図10は、本発明の一実施形態による、ポート・コントローラに入力される複数の入力パケットの処理および記憶の一例を示す概略図である。この図では、第1の入力パケット1002はポート・コントローラのイングレスDMA404によって受信され、その後に第2のパケット1004、第3のパケット1008、第4のパケット1008が続く。上記の通り、各パケットはヘッダ部分(1002a、1004a、1006a、1008a)と本体部分(1002b、1004b、1006b、1008b)から構成される。各パケットが受信される際、イングレスDMA404によって本体部分からヘッダ部分が分離される。次いで分離された本体部分はパケット・メモリ804に記憶され、一方、ヘッダ部分はパケット・プロセッサ・ユニット408による処理のために送られる(注意:簡約化のため、図10ではヘッダ・キュー406は省略した)。ヘッダ部分のそれぞれの処理が完了すると、そのヘッダ部分のそれぞれはイングレスDMA404を介してパケット・メモリ804に記憶される(簡約化のため、図10ではDRAMコントローラ410も省略したことに注意されたい)。
【0055】
図10に示すように、本体部分と処理済みヘッダ部分は、イングレスDMAによって受信された順番にパケット・メモリに記憶される。例えば、第1のパケット1002のヘッダ部分と本体部分を受信し分離する際、第1の本体部分1002bはメモリ804に記憶され、一方、第1のヘッダ部分1002aはパケット・プロセッサ・ユニット408による処理のために転送される。第1のヘッダ部分1002aが処理されている間、イングレスDMA404は第2のパケット1004を受信し、第2のパケットのヘッダ部分と本体部分とを分離する。次いで第2の本体部分1004bはメモリに記憶され、第2のヘッダ部分1004aは処理のために送られる。この時点で、第1のヘッダ部分1002aの処理は完了しており、処理済みの第1のヘッダ部分は処理から転送されてメモリ804に記憶される。
【0056】
次に、第2のヘッダ部分1004aが処理されている間、イングレスDMAは第3のパケット1006を受信し、第3のパケットのヘッダ部分と本体部分とを分離する。次いで第3の本体部分1006bはメモリに記憶され、一方、第3のヘッダ部分1006aは処理のために送られる。この時点までに、第2のヘッダ部分1004aの処理は完了しており、その処理済みヘッダ部分は処理から転送されて、メモリに記憶される。第3のヘッダ部分1006aが処理されている間、イングレスDMAは第4のパケット1008を受信し、第4のパケットのヘッダ部分と本体部分とを分離する。次いで第4の本体部分1008bはパケット・メモリに記憶され、一方、第4のヘッダ部分1008aは処理のために送られる。この時点までに、第3のヘッダ部分1006aの処理は完了しており、その処理済みの第3のヘッダ部分は処理から転送されて、メモリに記憶される。最後に、第4のヘッダ部分1008aの処理が完了すると、これもまた処理から転送されて、メモリに記憶される。
【0057】
図11は、本発明の一実施形態による、パケットの本体部分からヘッダ部分を分離するプロセス704の流れ図である。オペレーションA4302では、入力パケットは受信された際にセルに分割される。入力パケットの第1のセルには、ヘッダ部分が含まれる。このヘッダ部分は、1つまたは複数のMAC/IP/TCPヘッダならびにアプリケーション・データを含むことができる。好ましい一実施形態では、各セルは128バイトのサイズを有することができる。オペレーション1104では、ヘッダ部分(すなわち、第1のセル)のためにメモリに空間が予約される。次いで、オペレーション1106でメモリ内の予約済み空間を指し示すポインタが生成される。次いでこのヘッダ部分は、オペレーション1108の処理に送られる。
【0058】
図12は、本発明の一実施形態による、パケットの本体部分をヘッダ部分からの分離後にメモリに記憶するプロセス706を示す流れ図である。オペレーション1202では、パケットの本体部分の第1の受信されたセル(すなわち、入力パケットの第2のセル)がメモリに記憶される。オペレーション1204では、そのセルをヘッダ部分(すなわち、パケットの第1のセル用に予約された空間)のために予約された空間にリンクするためのポインタが生成される。入力パケットの後続の各入力セルも、記憶されているセルのそれぞれを総合的にリンクするために、新たに記憶されたセルから前回記憶されたセルへのポインタと共にメモリに記憶される(判断1206およびオペレーション1208および1210を参照のこと)。
【0059】
図13は、本発明の一実施形態による、メモリにパケットの処理済みヘッダ部分を記憶するプロセス712を示す流れ図である。オペレーション1302で、処理済みヘッダ部分が受信される。オペレーション1304では、処理済みヘッダ部分のためにメモリに予約された空間が、その予約済み空間を指し示すポインタを用いて捜し出される(オペレーション1204を参照のこと)。次いで処理済みヘッダは、オペレーション1306で予約済みの空間に記憶される。
【0060】
図14は、本発明の一実施形態による、入力パケットのセルのメモリへの記憶を示す概略図である。入力パケット1400は、イングレスDMA404によって受信された際に複数のセル(C01402、C11404、C21406、C31408、C41410)に分割される(図11のオペレーション1102を参照のこと)。図14に示すように、第1のセルC01402はパケットのヘッダ部分を含んでおり、一方、残りのセルC11404、C21406、C31408、C41410はパケットの本体部分を含んでいる。
【0061】
パケット・メモリ1412では、空間1414がそのヘッダを含んでいるので第1のセルC01402のために予約されており、その予約済み空間を指し示すポインタが生成される(図11のオペレーション1104および1106を参照のこと)。一実施形態では、予約済み空間のサイズは、処理中にそのヘッダ部分に追加される可能性のある任意の追加データに対して十分な空間を提供するために、予約済みの第1のセルC01402のサイズよりも大きい場合がある(図7の708を参照のこと)。次いで予約済み空間1414を指し示すポインタ1416が生成され、その結果、現在処理されているヘッダ部分を含んでいる第1のセルC01402が予約済み空間に引き続いて記憶することができる(図11のオペレーション1106を参照のこと)。
【0062】
次に、入力パケット1400の本体部分の第1のセグメントを含んでいる第2の受信されたセルC11404が、パケット・メモリ1412に記憶され(図12のオペレーション1202を参照のこと)、記憶されているセルC11404を予約済み空間にリンクするためのポインタ1418が生成される(図12のオペレーション1204を参照のこと)。第3のセルC21406が受信されると、これもまたパケット・メモリ1412に記憶することができ、記憶されているセルC21406を前回記憶されたセルC11404にリンクするためのポインタ1420が生成される(図12のオペレーション1206、1208、および1210を参照のこと)。同じ要領で、第4と第5のセルC31408、C41410が受信される際に、これらはそれぞれパケット・メモリ1412に記憶されることができ、ポインタ1422、1424を生成させて、セルC3をC2に、また、セルC4をセルC3にそれぞれリンクする。図12に示すプロセスによれば、第5のセルC41410はパケット1400の最終セルなので、第5のセルC4はポインタを含んでいる(1426を参照のこと)。
【0063】
図15は、本発明の一実施形態による、ポート・コントローラからスイッチ・ファブリック・システムのスイッチ・ファブリックにパケットを転送するプロセス1500の流れ図である。オペレーション1502で、パケットがポート・コントローラで既に処理済みであることを示す通知が受信される。この処理済みパケットはオペレーション1504および1506で出力優先順位キューに割り当てられ、リンクされる。その後、オペレーション1508でそのパケットはリンクを介して取り出され、オペレーション1510でポート・コントローラからスイッチ・ファブリックに転送される。
【0064】
本発明の一態様では、パケットは、リンクされたリスト内の割り当てられた出力優先順位キューにリンクすることができる。
【0065】
本発明の一実施形態では、後続の処理されるパケットを同じ出力優先順位キューに割り当て、リンクすることができる。任意選択で、ポインタは、そのパケットを後続の処理されるパケットにリンクすることができる。本発明の別の実施形態では、そのパケットはメモリに記憶し、また、メモリから取り出すことができる。さらなる任意選択として、パケットを複数のリンクされたセルでメモリに記憶することができる。
【0066】
本発明の別の態様では、処理済みパケットは、スイッチ・ファブリックを介してアクセス可能なパケットに対する1つまたは複数の宛先を示す宛先ベクトルを含むことができる。
【0067】
本発明は、ポート・コントローラのメモリにパケットを記憶するためのデータ構造を含むこともできる。このデータ構造は、複数のキューから構成することができ、各キューはそれ自体に関連付けられたヘッド/開始アドレスを有する。各パケットをそのキューのうちの1つに割り当てて、1つまたは複数のパケットをメモリに記憶することができる。キューごとに、開始アドレスはそのキューの第1のパケットへのリンクを有することができ、そのキュー内の各パケットは、そのキュー内の次の後続パケットへのリンクを有することができる。一態様では、各パケットは、複数のリンクされたセルでメモリに記憶することができる。好ましい一実施形態では、ポインタは、パケットのセルをそのパケットの後続セルにリンクし、パケットの最終セルはヌル・ポインタを有する。
【0068】
図16は、本発明の一実施形態による、エグレスのためにキューに入れられたパケットのリンクされたリストを生成するプロセス1600の流れ図である。オペレーション1602では、イングレスDMA404は、出力指向スケジューラ412にパケットのヘッダ部分が既に処理済みであることを通知する。その後、イングレスDMAは、オペレーション1984で、出力指向スケジューラから戻されてきた、パケットがどの出力キュー(ポート・コントローラからのエグレス用)に割り当てられているかに関する情報を受信する。オペレーション1606で、ポインタが生成され、パケット・メモリに現在記憶されているヘッダ部分を割り当てられた出力キューにリンクする。割り当てられたキューが、既にそれに割り当てられている別のパケットを有しない場合、ポインタは、処理されたヘッダ部分を割り当てられたキューの開始アドレスにリンクする。
【0069】
一方、割り当てられたキューが、それに割り当てられた1つまたは複数の別のパケットを既に有している場合、ポインタは、処理済みヘッダ部分をそのキュー内のそれの直前に配置されているもう1つのパケットの記憶されたヘッダ部分にリンクする。オペレーション3802、3804および3806は、ポート・コントローラによって処理される各ヘッダ部分に対して反復される(オペレーション1608を参照のこと)。
【0070】
図17は、本発明の一実施形態により、パケット・メモリ804に記憶されているパケットをそれらの割り当てられている出力優先順位キューにリンクすることを示す概略図である。出力指向スケジューラ412は、例示の実施形態では4つのキューから成る、複数の出力優先順位キュー1702、1704、1706、1708を有する。好ましい一実施形態では、出力指向スケジューラとイングレスDMAのどちらも各キューの開始アドレスを認識している。
【0071】
各優先順位キューにはパケット・メモリに記憶されている複数のパケットが割り当てられており、特定キューに割り当てられている複数のパケットは、それらが割り当てられているキューの下に示される。各キューは先入れ先出し(FIFO)なので、記憶されている各パケットは、特定キュー内の1つのパケットから同じ割り当てられたキュー内の次に続くパケットの開始へのリンクを提供する次のパケット・ポインタ(「NPP」)を有する。補足的な矢印は、次のセルが保存されているアドレスを各セルがどのように指し示すかを示している。例えば、図17のキュー01702を参照すると、キュー01702に割り当てられたパケット・メモリに記憶されている第1のパケット1710は、キュー内の次の記憶されているパケット1714の開始を指し示すポインタ1712を有し、パケット1714は、そのキュー内の第3の記憶されているパケット1718の開始を指し示すポインタ1716を有する、という具合である。
【0072】
図18は、本発明の一実施形態による、図17に示されるパケット・メモリに記憶される例示的パケット1710を示す概略図である。例示的パケット1710は、第1のセル1802がパケットの処理済みヘッダ部分を含み、残りのセル1804、1806、1808、1810がパケットの本体を含むように、複数のセルに分割される。セル1802、1804、1806、1808は、それぞれに、次に続くセルの開始を指し示す次のセル・ポインタ(「NCP」)1812、1814、1816、1818を有する。各NCPは、パケットの最終セルの最後の1つを除いて、次のセルを指し示す。最後のNCPは、いかなる値をも有することができるが、これは出力指向スケジューラによって無効であるとみなされる可能性がある。何故ならば、出力指向スケジューラは、内部タグ情報からパケットのサイズを認識しているからである。
【0073】
一実施形態では、イングレスDMA404は、リンク/ポインタの生成に応答可能である。好ましい一実施形態では、ポインタのサイズは16ビット(2バイト)であってよい。
【0074】
上記の通り、第1のセル1802は、パケットのサイズと、そのパケットがスイッチ・ファブリック・システムから出力される宛先ポートを示すことのできる内部タグを含む処理済みヘッダ部分を有する。また、第1のセル1802は、キュー01702内の次に記憶されているパケット1714を指し示す次のパケット・ポインタ1712を含む。
【0075】
各キューは先入れ先出し(FIFO)であってよい。出力指向スケジューラ412が、そのFIFOキューのうちの1つに割り当てられたパケットをパケット・メモリから取り出す準備ができると、出力指向スケジューラは、パケットの次のセルを探すために各セルのNCPを読み取ることができる。一実施形態では、最終セルのNCPは、出力指向スケジューラが取り出しているパケットのサイズの知識に基づいてその出力指向スケジューラから無視される場合がある。
【0076】
図19は、本発明の一実施形態による、ポート・コントローラ400を介してスイッチ・システムから抜けようとしているパケットを処理するプロセスを示す概略的な流れ図である。このプロセスでは、パケットは、ポート・コントローラ400によって受信される前に既に処理が完了している。抜けようとしているパケットがインターフェイス・レシーバ420によって最初にポート・コントローラ内に受信される。インターフェイス・レシーバ420は、そのパケットをエグレス・コントローラ422に送り、次いでエグレス・コントローラ422は、そのパケットをエグレス・バッファ424に転送することができる。エグレス・コントローラが、抜けようとしているパケットをポート・コントローラから送出する準備ができると、エグレス・コントローラ422は、エグレス・バッファ424からパケットを取り出し、そのパケットを、ポート・コントローラから送出するためにMACインターフェイス402に転送する(矢印1904を参照のこと)。
【0077】
(スイッチ・ファブリック)
図20は、本発明の一実施形態によるスイッチ・ファブリック構成要素2000のアーキテクチャを示す概略的ブロック図である。スイッチ・ファブリック構成要素2000には、インターフェイス・レシーバ2002、スイッチ・マトリックス2004、インターフェイス・トランスミッタ2006、中央コントローラ2008、フリー・セル・マネージャ2010、キュー・マネージャ2012、および外部インターフェイス2014が含まれる。
【0078】
より明瞭かつ容易に理解できるように、図20には1つのインターフェイス・レシーバ2002と1つのインターフェイス・トランスミッタ2006しか示さない。しかし、スイッチ・ファブリック構成要素が複数のインターフェイス・レシーバと複数のインターフェイス・トランスミッタを含むことができるということを理解されたい。例えば、図1に示されている8×8のスイッチ・ファブリック構成要素(例えば104a)では、各スイッチ・ファブリック構成要素は8つのインターフェイス・レシーバと8つのインターフェイス・トランスミッタとを有する。同様に、図2に示されているスイッチ・ファブリック構成要素204は、4つのインターフェイス・レシーバと4つのインターフェイス・トランスミッタとを含んでいる。
【0079】
インターフェイス・レシーバ2002は、パケットを受信するように働く。このインターフェイス・レシーバは、別のスイッチ・ファブリック構成要素のインターフェイス・トランスミッタ、またはポート・コントローラのインターフェイス・トランスミッタ4014への1つの接続用外部I/Oを有する。このインターフェイス・レシーバは、受信したパケットをインターフェイス・レシーバ2002からスイッチ・マトリックス2004に転送することを可能にするために、スイッチ・マトリックス2004に結合されている。インターフェイス・レシーバ2002の機能は、ポート・コントローラのインターフェイス・レシーバ420の機能と類似である。インターフェイス・レシーバ2002は、外部I/Oによってリンクを構成し、制御のために中央コントローラ2008と対話する。
【0080】
スイッチ・マトリックス2004は、スイッチ・ファブリック構成要素内のパケットへのデータ・パスを提供する。スイッチ・マトリックスは、1つまたは複数のインターフェイス・レシーバ2002と1つまたは複数のインターフェイス・トランスミッタ2006とに結合されている。スイッチ・マトリックスは、インターフェイス・レシーバからデータ(すなわち、パケット)を受信する。各入力パケットは、スイッチ・ファブリック構成要素からの送出のためにパケットをインターフェイス・トランスミッタ2006に転送できるようになるまでは、スイッチ・マトリックスのメモリ内に記憶される。好ましい一実施形態では、スイッチ・マトリックスは64Kバイトのメモリを有する。
【0081】
上記の通り、インターフェイス・トランスミッタ2006は、スイッチ・マトリックス2004に結合されている。インターフェイス・トランスミッタは、別のスイッチ・ファブリック構成要素のインターフェイス・レシーバまたは外部I/Oを介したポート・コントローラのインターフェイス・レシーバに接続可能である。インターフェイス・トランスミッタ2006は、スイッチ・マトリックスからのパケットをスイッチ・ファブリック構成要素から送出する。各インターフェイス・トランスミッタ2006は、別のスイッチ・ファブリック構成要素のインターフェイス・レシーバまたはポート・コントローラに外部的に接続されることができ、外部I/Oによってリンクを構成することができる。各インターフェイス・トランスミッタ2006は、制御のために中央コントローラ2008と対話する。
【0082】
中央コントローラ2008は、スイッチ・ファブリック構成要素の全てのユニットに接続されており、それを制御する。中央コントローラ2008は、イングレス・ユニット2008a、マトリックス・ユニット2008b、およびエグレス・ユニット2008cの3つの構成要素を含むことができる。中央コントローラ2008は、フリー・セル・マネージャ2010によって提供されるフリー・セル・アドレスに従って、スイッチング・マトリックスのメモリ内の入力パケットを記憶すること管理する。中央コントローラ2008は、また、パケットの宛先ベクトルから宛先ポートを読み取り、そのパケットをキュー・マネージャ2012によってキューに記憶する。さらに、中央コントローラは、キュー・マネージャ2012の情報に従ってパケットをスイッチ・マトリックスからインターフェイス・トランスミッタ2006に転送するための信号を生成することもできる。
【0083】
フリー・セル・マネージャ2010は、中央コントローラとキュー・マネージャ2012に結合されている。フリー・セル・マネージャ2010は、中央コントローラ2008を介して提供された情報に基づいてスイッチング・マトリックスのメモリ内のフリー・セルを管理する。具体的には、フリー・セル・マネージャ2010は、スイッチ・マトリックス内の占有されたセルとフリー・セルに関する情報を表形式で維持し、この情報を中央コントローラ2008とキュー・マネージャ2012に提供する。
【0084】
キュー・マネージャ2012は、中央コントローラ2008とフリー・セル・マネージャ2010とに結合されている。キュー・マネージャ2012は、入力パケットに関する情報を受信し、出力ポートに従ってFIFOでリンクされるリストとしてその情報を記憶する。キュー・マネージャ2012は、抜けようとしているパケットのキューも管理する。
【0085】
外部インターフェイス2014は、中央コントローラとスイッチ・マトリックスに接続されている。外部インターフェイスの機能は、ポート・コントローラのネットワーク・インターフェイスと同様である。外部インターフェイスは、制御パケットを外部I/Oを介して内部チャネルと交換し、次いでスイッチ・ファブリック構成要素の内部レジスタを維持するためにこれらのパケットを分析する。
【0086】
図21は、本発明の一実施形態による、スイッチ・ファブリックを介してデータグラムを送信するプロセス2100の流れ図である。受信したデータグラムから宛先ベクトルが抽出される(オペレーション2102および2104を参照のこと)。宛先ベクトルは、データグラムの1つまたは複数の宛先(すなわち、単一キャストまたはマルチキャスト)を示す。オペレーション2106で、宛先ベクトルに基づいてデータグラムに対してポート・ビットマップが生成される。オペレーション2108では、このデータグラムは引き続いてポート・ビットマップを利用して宛先に向けて送信される。
【0087】
本発明の一態様では、宛先ベクトルは32ビットのデータを含むことができる。本発明の別の態様では、ポート・ビットマップは8ビットのデータを含むことができる。
【0088】
本発明の一実施形態では、ポート・ビットマップを生成することは、宛先ベクトルからデータグラムの全ての宛先を獲得すること、および、次いでそのデータグラムが宛先に到達するにはそのスイッチ・ファブリック構成要素のどのスイッチ・ポートを介して経路指定することができるかを決定するためにスイッチング・テーブルを利用することを含むことができる。次いでデータグラムがその対象とする宛先に到達するために、そこを介するように経路指定することができる全ての決定されたスイッチ・ポートを示すためにポート・ビットマップを生成することができる。
【0089】
本発明の別の実施形態では、データグラムを転送することは、ポート・ビットマップに基づいてマスクを作成するスこと、および、データグラムの送信に際してマスクを用いてポート・ビットマップを変更することを含むことができる。このような一実施形態では、マスクを用いてポート・ビットマップを変更するステップは、データグラムがそこに向けて送信されている宛先に関連付けられたデータのポート・ビットマップをクリアすることも含むことができる。
【0090】
本発明のさらなる実施形態では、データグラムが宛先に到達するためにそこを介してデータグラムを経路指定することができるスイッチ・ポートの可用性を判定することもできる。次いでデータグラムは使用可能と判定されたスイッチ・ポートを介して送信することができる。
【0091】
図22は、本発明の実施形態によるスイッチ・ファブリックを介してパケットを経路指定するためのスイッチング・テーブルの実施を示す8行8列のスイッチ・ファブリック構成要素を含むスイッチ・ファブリック2200の概略ブロック図である。この実施形態の下で議論される基礎となっている原理は、本明細書によるいかなるスイッチ・ファブリックにおいても利用することが可能である。この議論のため、スイッチ・ファブリックおよびスイッチ・ファブリック構成要素は、すべて双方向であることに留意することが重要である。
【0092】
図22に示すとおり、スイッチ・ファブリック2200は、SF1 2202a、SF2 2202b、SF3 2202c、SF4 2202dとして示される8行8列のスイッチ・ファブリック構成要素を含む。各スイッチ・ファブリック構成要素は、8つのポート(「スイッチ・ポート」)を有する。例えば、図22では、SF1 2202aの8つのスイッチ・ポートが、1/1、2/1、3/1、4/1、5/1、6/1、7/1、8/1(「1の1、1の2、1の3...」等)として示される。SF2、SF3、SF4の8つのスイッチ・ポートも同様に、図22で示される。例えば、SF2 2202bのポートは、n/2(ただし、nは、1から8までの整数)を使用して示され、SF3 2202cのポートは、n/3を使用して示され、またSF4 2202dのポートは、n/4(ただし、nは、1から8までの整数)を使用して示される。
【0093】
図22の示されているスイッチ・ファブリックでは、各スイッチ・ファブリック構成要素が、2つの隣接するスイッチ・ファブリック構成要素に結合された2つのポートを有している。例えば、SF1 2202aのポート5/1および6/1は、それぞれ、SF2 2202bのポート2/2および1/2に結合され、またSF1 2202aのポート7/1および8/1は、それぞれ、SF3 2202cの4/3および3/3に結合される。
【0094】
図22の参照を続けると、スイッチ・ファブリック2200は、複数のデバイス・ポートも含む。この議論では、デバイス・ポートは、外部デバイス(例えば、ポート・コントローラなど)に結合することができ、スイッチ・ファブリック内の別のスイッチ・ファブリック構成要素に結合されていないスイッチ・ファブリック構成要素のポートと定義することができる。図22に示す例としての実施形態では、スイッチ・ファブリックは、十六(16)のデバイス・ポート(これらには、図22で1ないし16の番号が付けられている)を有し、各スイッチ・ファブリック構成要素は、4つのデバイス・ポートを有している。例えば、SF1 2202aは、デバイス・ポート1、2、3、4を有し、SF2 2202bは、デバイス・ポート5、6、7、8を有し、SF3 2202cは、デバイス・ポート9、10、11、12を有し、またSF4 2202dは、デバイス・ポート13、14、15、16を有する。
【0095】
(スイッチング・テーブル)
本発明の実施形態では、スイッチング・テーブルを利用して、スイッチ・ファブリックの柔軟性を高めるのを促進することができる。スイッチング・テーブルを各スイッチ・ファブリック構成要素に関連付けて、スイッチ・ファブリック構成要素の各ポートを介してどのデバイスに到達できるかを記録することができる。言い換えれば、各スイッチング・テーブルは、特定のスイッチ・ファブリック構成要素のどのポートを使用して(すなわち、アクセス可能であって)当該の特定のスイッチ・ファブリック構成要素からパケットを伝送することができるかに関する情報を提供する。
【0096】
図23、24、25、26は、本発明の実施形態による図22に描いたスイッチ・ファブリック2200に関する例としてのスイッチング・テーブルを示す概略図である。詳細には、図23に示す例としてのスイッチング・テーブル2300は、スイッチ・ファブリック構成要素SF1 2202aに対するものであり、図24に示す例としてのスイッチング・テーブル2400は、スイッチ・ファブリック構成要素SF2 2202bに関するものであり、図25に示す例としてのスイッチング・テーブル2500は、スイッチ・ファブリック構成要素SF3 2202cに対するものであり、また図26に示す例としてのスイッチング・テーブル2600は、スイッチ・ファブリック構成要素SF4 2202dに対するものである。
【0097】
各スイッチング・テーブルは、スイッチ・ファブリックのデバイス・ポートに対する複数の列2302、および特定のスイッチ・ファブリック構成要素のポートに対する複数の行2304を有する格子(例えば、複数のビットマップ・アレイ)として表すことができる。列と行は一緒に、スイッチング・テーブルのビットマップ・アレイを形成する。この格子の表現では、ビットマップ・アレイは、スイッチング・テーブル格子の列と行によって形成された1行のボックスを含む。各格子の列と行によって形成されたボックス内には、1および0がある。ボックス内の「1」は、特定のデバイス・ポートが、特定の行のポートを介してアクセス可能であることを示し、一方、ボックス内の「0」は、特定のデバイス・ポートが、特定の行のポートを介してアクセス可能ではないことを示す。そのような表現を使用して、特定のポートに関連付けられたアレイに基づいてビットマップ、スイッチ・ファブリック構成要素のポートを生成することができる。
【0098】
例えば、スイッチ・ファブリック構成要素SF1 2202aに対するスイッチング・テーブル2300を表す図23を参照すると、ポート1/1に対して指定された一番上の行を見ることにより、ポート1/1に対するビットマップ・アレイを確認することができる。このアレイでは、デバイス・ポート1に対する列の下のボックス内に「1」が存在し、また残りの列の下のボックスのそれぞれの中に「0」が存在する。このことは、デバイス・ポート1だけが、SF1 2202aのポート1/1を介してアクセス可能であることを示す(すなわち、デバイス・ポート1を通る伝送を介してその宛先がアクセス可能であるSF1のパケットは、ポート1/1を介するように経路指定しなければならない)。同様に、ポート5/1に対して指定された行(すなわち、アレイ)を参照すると、デバイス・ポート5、6、7、8、9、10に対する列の下のボックスのそれぞれの中に「1」が存在し、またデバイス・ポート1、2、3、4、11、12、13、14、15、16の列の下のボックスのそれぞれの中に「0」が存在する。このことは、デバイス・ポート5、6、7、8、9、10が、SF1 2202aのポート5/1を介するSF1内のパケットに関してアクセス可能であることを示す。
【0099】
図22および23−dに示す例としての実施形態では、スイッチング・テーブルが、スイッチ・ファブリック構成要素のどのポートからのアクセスも、6つのデバイス・ポート未満に制限するように生成されていることに留意されたい。これは、図22のスイッチ・ファブリック2200を介してパケットの伝達の理解を簡単にするのを助けるために行っている。図22のスイッチ・ファブリック2200の場合、スイッチ・ファブリック構成要素のポートは、最高で12のポートに対するアクセスを有するのが可能である(例えば、ポート5/1を介して伝送されるSF1内のパケットは、スイッチング・テーブルがそのように生成された場合、デバイス・ポート5ないし16に対するアクセスを有するのが可能である)ことを理解されたい。
【0100】
また、図23−dに示すスイッチング・テーブルのそれぞれは、最高で32デバイス・ポートに対する列が含まれる好ましい実施形態に従って生成されていることにも留意されたい。スイッチング・テーブルのこの好ましい実施形態は、32のポート・コントローラが接続された32のデバイス・ポートを備えたスイッチ・ファブリックを有する図1に示すスイッチ・ファブリックの好ましい実施形態におけるスイッチング・テーブルの使用を可能にするのを助けることである。図22に示す例としてのスイッチ・ファブリック2200は、16だけのデバイス・ポートを有する(例えば、16のポート・コントローラをそこに接続して)ので、列17ないし32内のボックスはすべて、4つのスイッチング・テーブル23−dのそれぞれの中に「0」を含む。
【0101】
図27は、本発明の実施形態によるスイッチ・ファブリック構成要素を介するパケットを処理するための処理2700に関する流れ図である。オペレーション2702で、パケットが、スイッチ・ファブリック構成要素によって受信される。オペレーション2704で、宛先ベクトルが、受信されたパケットから抽出される。次に、オペレーション2706で、スイッチ・ファブリック構成要素のスイッチング・テーブルに基づき、抽出された宛先ベクトルからポート・ビットマップが生成される。オペレーション2708で、スイッチ・ファブリック構成要素の論理が、ポート・ビットマップ内に示されたスイッチ・ファブリック構成要素のポートのどれかがアイドルであるかどうかを検査して判定する。ポート・ビットマップによって示されるポートのどれかが、アイドルであると判明した場合には、オペレーション2710で、ポート・ビットマップに基づき、識別されたアイドルなポートのためのマスクが作成される。オペレーション2712で、次に、スイッチ・ファブリックの識別されたアイドルなポートを介して発信パケットが伝送され、パケットがそれを介して伝送されたばかりのポートに関連する情報が、ポート・ビットマップから消去される。消去プロセスは、識別されたポートにおける発信パケットの宛先ベクトルに対しても実行されて、発信パケットの宛先ベクトルが変更される。判定2714で、ポート・ビットマップ内に別の宛先が含まれると判定された場合には、追加の宛先のそれぞれに対してオペレーション2710および2712が反復される。
【0102】
パケットがスイッチ・ファブリック構成要素に入った際、パケットの宛先ベクトルおよびスイッチ・ファブリック構成要素のスイッチング・テーブルを使用して、スイッチ・ファブリック構成要素のどのポートを介してパケットが出るべきかが判定される。一実施形態では、判定結果をリンクされたリストとして記憶することが可能である。一態様では、判定結果は、ポート・ビットマップを含むことが可能である。別の態様では、判定結果は、宛先ベクトルを含むことが可能である。
【0103】
図28は、本発明の実施形態による、判定結果がポート・ビットマップを含むスイッチ・ファブリック構成要素を介してパケットを処理するためのプロセス2800を示す概略図である。スイッチ・ファブリック構成要素内へのイングレスに先立ち、ポート・コントローラ2804においてパケットの処理中にパケット2802内にタグが挿入される。タグは、パケットが宛先とする1つまたは複数のデバイス・ポートを示す宛先ベクトル2806を含む。好ましい実施形態では、宛先ベクトル2806は、32ビットの長さ(すなわち、「32ビットの宛先ベクトル」)を有することが可能である。ポート・コントローラは、スイッチ・ファブリック構成要素2808のデバイス・ポートに結合されて、挿入されたタグを有するパケットをスイッチ・ファブリック構成要素に転送することを可能にする。
【0104】
スイッチ・ファブリック構成要素2808内へのパケット(挿入されたタグを有する)2802のイングレスの後、タグが抽出されて宛先ベクトル2806が獲得される。次に、宛先ベクトル2806およびスイッチ・ファブリック構成要素2808のスイッチング・テーブル2812に基づき、ポート・ビットマップ2810が生成される。好ましい実施形態では、ポート・ビットマップは、8ビットの長さ(すなわち、「8ビットのポート・ビットマップ」)を有する。次に、パケットが、スイッチ・ファブリック構成要素のスイッチ・マトリックスのメモリ内のセルの中に記憶される。生成されたポート・ビットマップ2810を使用して、リンクされたリスト2814の中でパケットが中に記憶されたメモリのセルがリンクされる。また、ポート・ビットマップ2810も、スイッチ・ファブリック構成要素2808内のリンクされたリスト2814の中で記憶される。
【0105】
適切な出力ポートが、利用可能であると判定されたとき、パケットは、出力ポートを介してスイッチ・ファブリック構成要素を出ることができる。適切な出力ポートが利用可能であると判定された後、適切なセルに関する情報(ポート・ビットマップを含む)が、リンクされたリスト2814から読み取られてポート・ビットマップ2810が獲得される。次に、スイッチング・テーブル2812を使用して、イグレスのポートのためのマスク2816が生成される。好ましい実施形態では、マスク2816は、8ビットの長さ(すなわち、「8ビットのビット・マスク」)を有する。次に、マスク2816を使用してポート・ビットマップ2810が変更され、出力ポートを介するパケットの送信に関連する情報が、ポート・ビットマップから除去されるようにする。次に、変更されたポート・ビットマップ1018が、リンクされたリストの中に記憶される。変更されたポート・ビットマップ2818が、すべて「0」のビット(すなわち、「1」が全くない)を含む場合には、スイッチ・マトリックス内の対応するメモリ・セルが、解放されている。そのような実施形態の好ましい態様では、リンクされたリストは、ポート・ビットマップを記憶するための縦8ビット/語、横256語のメモリを含むことが可能である。そのような実施形態の別の好ましい態様では、スイッチング・テーブルは、マスクを生成する論理(すなわち、回路)を含むことが可能である。この実施形態のさらに別の好ましい態様では、スイッチング・テーブルの行は、互いに排他的であることが可能である。
【0106】
図28に示すプロセス2800に対する好ましいオプションとして、パケットがスイッチ・ファブリック構成要素の発信ポートを出る際にパケットから宛先ベクトルを消去することができる。そのようなオプションを実施することの利点は、図22に描いたスイッチ・ファブリック2200を使用する以下の実施例で見ることができる。この実施例では、スイッチ・ファブリック2200に入るパケットが、SF1 2202a内のデバイス・ポート2およびSF2 2202b内のデバイス・ポート7という2つの宛先を有するものと想定する。図30は、本実施例に従ってデバイス・ポート1からSF1 2202に入り、SF1 2202a内のデバイス・ポート2およびSF2 2202b内のデバイス・ポート7という宛先を有するパケットに関する宛先ベクトル3000(詳細には、32ビットの宛先ベクトル)を示す概略図である。
【0107】
(ポート・ビットマップ)
図29は、本発明の実施形態によるスイッチ・ファブリック構成要素内のポート・ビットマップ(詳細には、8ビットのポート・ビットマップ)の例としての利用を示す概略図である。この例は、図22に示す例としてのスイッチ・ファブリック2200に基づき、スイッチ・ファブリック構成要素SF1 2202a内で生じる。この例では、パケットが、デバイス・ポート1に結合されたポート・コントローラを介してSF1によって受信され、(1)デバイス・ポート2(SF1 2202aにある)および(2)デバイス・ポート9(SF4 2202dにある)という2つの宛先を有する。
【0108】
SF1 2202a内で、パケットから宛先ベクトルが抽出される。図29に示すとおり、抽出された宛先ベクトル2902は、パケットが目指す宛先ポート(デバイス・ポート2および9)を示すビット2 2904内およびビット9 2906内に「1」を有する。抽出された宛先ベクトル2902の情報に基づき、スイッチ・ファブリック構成要素は、スイッチング・テーブルを使用して、パケットが目指す宛先に着信するのに、そのスイッチ・ポートのどれを介するようにパケットを経路指定することができるかを判定する。図23に示すスイッチ・ファブリック構成要素SF1に対するスイッチング・テーブル2300を参照すると、デバイス・ポート2は、SF1のスイッチ・ポート2/1を介してアクセスすることができ(行2/1参照)、またデバイス・ポート9は、SF1のスイッチ・ポート5/1および6/1を介してアクセスできる(行5/1および6/1参照)ことが分かる。
【0109】
ポート・ビットマップは、スイッチ・ファブリック構成要素によって受信されたパケットの抽出された宛先ベクトルからの情報および情報、スイッチ・ファブリック構成要素のスイッチング・テーブルに基づいてスイッチ・ファブリック構成要素によって生成されるビットマップである。好ましくは、ポート・ビットマップは、スイッチ・ファブリック構成要素の中央コントローラによって生成される。ポート・ビットマップは、パケットが目指す宛先(すなわち、デバイス・ポート)に着信するため、スイッチ・ファブリック構成要素のスイッチ・ポートのどれを介するように経路指定される必要があるかを示す。ポート・ビットマップは、複数のビットを含み、各ビットは、関連スイッチ・ファブリック構成要素の対応するスイッチ・ポートに関連付けられている。例えば、4つのスイッチ・ポートを有するスイッチ・ファブリック構成要素では、そのスイッチ・ファブリックに対するポート・ビットマップは、(少なくとも)4ビットを有し、各ビットは、スイッチ・ファブリック構成要素の4つのスイッチ・ポートのどれかに関連付けられている。別の例として、図22に示す実施形態では、スイッチ・ファブリック構成要素のそれぞれが、8つのスイッチ・ポートを有する。したがって、各スイッチ・ファブリック構成要素に対して生成されるポート・ビットマップは、少なくとも8ビットを有し、8ビットのそれぞれは、それぞれのスイッチ・ファブリック構成要素の対応するスイッチ・ポートに関連付けられている。好ましい実施形態では、ポート・ビットマップは、八(8)ビットを含む。
【0110】
ポート・ビットマップのビットは、それぞれ、「1」または「0」を含むことが可能である。一実施形態では、ポート・ビットマップのあるビットが「1」を含む場合には、そのことは、その特定のビットに関連するスイッチ・ポートが、スイッチ・ファブリック構成要素からパケットを出力するためのポートとして働くことができるのを示す。反対に、ポート・ビットマップのあるビットが「0」を含む場合には、そのことは、その特定のビットに関連するスイッチ・ポートが、スイッチ・ファブリック構成要素からパケットを出力するためのポートとして働くことができないのを示す。
【0111】
再び図29を参照すると、受信されたパケットのスイッチ・ファブリック要素SF1により、抽出された宛先ベクトル2902およびスイッチ・ファブリック要素SF1の切換えテーブル2300に基づいて生成することのできるポート・ビットマップ2908が示されている。このポート・ビットマップ2908は、それぞれ、SF1のスイッチ・ポート2/1、5/1、および6/1に関連するビット2、5、および6 2910、2912、2914に「1」を含む。
【0112】
この例では、スイッチ・ポート5/1または6/1がスイッチ・ポート2/1よりも前に利用可能になる(すなわち、アイドル状態になる)と判定されるものと仮定する。この場合、この例ではまず、パケットがスイッチ・ポート5/1または6/1を介して装置ポートの所期の宛先に向かって(SF2を介し、次いでSF4を介して)出力される。図27に示されたフローチャートに示されているように、引き続き図29を参照するとわかるように、第1のマスク2916は、ポート・ビットマップおよび出力スイッチ・ポートに基づいて生成される。この例では、この第1のマスクは、パケットがスイッチ・ポート5/1または6/1を介して出力されるときにポート・ビットマップにおける処理されるビットを示すビット5および6 2918、2920に「1」を含む。
【0113】
引き続きこの例で説明する。次に、第1のマスク2916を使用して、処理されるビットがポート・ビットマップから削除される。一般に、削除では、ポート・ビットマップ内の、「1」を含むビットが削除され、この場合、マスクの対応するビットも「1」を含む。言い換えれば、削除では、ポート・ビットマップ内の、「1」を含むビットが「1」から「0」に変化しれ、この場合、マスクの対応するビットも「1」を含む。たとえば、図29には、処理されるビットが、第1のマスクを使用して削除された後の(修正された)ポート・ビットマップ2908’のビットが示されている。図示のように、修正されたポート・ビットマップにおいて、「1」はビット2 2910にのみ残っており、「0」はビット6 2912、2914にあり、ビット2は除去されておらず(すなわち、スイッチ・ポート2/1はまだ処理されていない)、ビット5および6が除去されている(すなわち、スイッチ・ポート5/1または6/1が処理されている)ことがわかる。
【0114】
次に、スイッチ・ポート2/1が利用可能である(すなわち、アイドル状態である)と判定されると、スイッチ・ポート2/1の処理に基づいてポート・ビットマップ用の第2のマスク2916が生成される。このマスクはビット2 2922に「1」を有し、スイッチ・ポート2/1を介したパケットの出力を示している。この場合、スイッチ・ポート2/1(すなわち、装置ポート2)からパケットが出力されるとき、第2のマスク2916を使用してポート・ビットマップを除去することができる。図13Aには、第2のマスク2916によって削除された後の修正されたポート・ビットマップ2908”が示されている。図29に示されているように、修正されたポート・ビットマップ2906”のすべてのビットが「0」を含み、それにより、ポート・ビットマップには、パケットを出力する宛先が残っていないことがわかる。
【0115】
図30は、本発明の実施形態による例示的な宛先ベクトル3000、宛先ベクトルの発信マスク3002、および修正された宛先ベクトル3004の概略図である。図30に示されているように、この例では、装置ポート2 3006、3008のビットは「1」を含み、それにより、関連するパケットについての装置2および7の宛先を示している。SF1において、パケットは(装置ポート7に到達するように)2/1(すなわち、装置ポート2)を介し、また5/1または6/1を介してSF2に送信される。次に、SF2に送信されたパケットが、宛先ベクトル3000を修正せずに送信された場合、SF2は、修正されていない宛先ベクトル3000を抽出し、SF2の宛先の1つが装置ポート2である場合と同様にパケットを処理し、したがって、パケットのコピーを、装置ポート2を通して送信できるようにSF1に送り返す。
【0116】
この問題を解消するには、スイッチ・ファブリック要素の各出力ポートの端部に削除プロセスを挿入することができる。削除プロセスでは、発信ポートを通して到達できる装置に対応するビットを除いて、発信パケットの宛先ベクトルのすべてのビットが削除される。この削除プロセスでは、発信マスク3002が生成され、次いで発信マスク3002を使用して発信パケットの宛先ベクトルが修正される。発信マスク3002は、特定の発信ポートを通してアクセスできるすべてのビットに「1」を含む(残りのビットは「0」である)。引き続きこの例で説明すると、SF1におけるパケットは、SF1のいずれかのポート5/1または6/1から装置ポート7に到達することができる(図23のSF1の切換えテーブルを参照されたい)。図23に示されているSF1の切換えテーブルを参照すると、ポート5/1または5/6を介して到達できる装置ポートは装置ポート5〜10であることがわかる。したがって、生成された発信マスク3002は、図30に示されているように、ビット5から10に「1」を含み、残りのビットに「0」を含む。次いで、この発信マスクを使用し、発信マスクの「1」でカバーされていないビット内の任意の「1」の宛先ベクトルを削除することにより、ポート5/1または6/1からSF2に向かうパケットの宛先を修正することができる。したがって、図30に示されているこの例の修正された宛先ベクトル3004は、装置ポート2用のビットの「1」が発信マスクの「1」によってマスクされていないので装置ポート7 3010用のビットに1つの「1」を有するに過ぎない。このような削除プロセスを用いた場合、修正された宛先ベクトルは、SF2に、パケットのコピーを、装置ポート2に送信されるようにSF1に送り返させる情報を含まない。好ましい実施形態では、スイッチ・ファブリック要素の各出力ポートの発信マスクが、それぞれの各ポートに対応する切換えテーブルの関連する行と同じであってよいことに留意されたい。このような好ましい実施形態の一態様では、スイッチ・ファブリック要素の各出力ポートは、それぞれの切換え要素の切換えテーブルの関連する行と同じ内容を含むレジスタを有してよい。
【0117】
図31は、本発明に実施形態によって判定結果が宛先ベクトルを含む、スイッチ・ファブリック要素を通してパケットを処理する他のプロセス3100を示す概略図である。図28に示されている実施形態と同様に、パケット3102が、スイッチ・ファブリック要素に着信する前に、スイッチ・ファブリック要素に結合されたポート・コントローラで処理されている間に、宛先ベクトル(好ましくは、32ビット宛先ベクトル)を示すタグがパケット3102に挿入される。パケット3102がスイッチ・ファブリック要素に着信すると、タグが抽出され、宛先ベクトル3104が得られる。図28に示されたプロセス2800と同様に、次いで、宛先ベクトル3104およびスイッチ・ファブリック要素3100の切換えテーブル3108に基づいてポート・ビットマップ3106が生成される。好ましい実施形態では、ポート・ビットマップ3106は8ビット・ポート・ビットマップを備える。生成されたポート・ビットマップ3106は、連係リスト3110内で、パケットが記憶されているメモリのセルをリンクするために使用される。しかし、8ビット・ポート・ビットマップ3106は、連係リスト3110には格納されない。その代わり、(32ビット)宛先ベクトル3104が連係リスト3110に格納される。
【0118】
引き続き図31を参照するとわかるように、パケットの発信にあたって適切な出力ポートが利用可能であることが判定されると、連係リスト3110からセル情報が読み取られ、宛先ベクトル3104が得られる。切換えテーブルを使用して、発信ポートの宛先マスク3112が生成される。宛先マスクの長さは32ビットである(すなわち、「32ビット宛先マスク」)ことが好ましい。一態様では、32ビット宛先マスクは、発信ポートに対応する切換えテーブルの行を含む。次に、宛先マスク3112を使用して宛先ベクトル3114が修正され、宛先ベクトル3114はその後、連係リスト3110に格納される。図28の修正されたポート・マスク2818と同様に、修正された宛先ベクトル3114がすべての「0」ビットを含む場合、対応するメモリ・セルが解放される。
【0119】
このような実施形態3100の好ましい態様では、連係リストは、宛先ベクトル3104を格納するための32ビット/語x256語メモリを含んでよい。このような実施形態の他の好ましい態様では、図28に示されている実施形態の切換えテーブル2812とは異なり、宛先マスクが切換えテーブル3108の行に過ぎないので、切換えテーブル3108が、宛先マスクを生成する論理(すなわち、回路)を含む必要はない。この実施形態の他の好ましい態様では、切換えテーブルの行が互いに排他的である必要はない。
【0120】
(後方伝搬)
図32は、本発明の実施形態によるスイッチ・ファブリック中の切換えテーブルを更新するプロセス3200のフローチャートである。動作3202において、送信側のソースと受信側のスイッチ・ファブリック要素との間のハンドシェーキングなしで、スイッチ・ファブリック要素によって1つまたは複数のパケットが受信される。各ステータス・パケットは、出力ポートのステータスに関する情報を含む。次いで、動作3204において、受信されたステータス・パケットのステータス情報に基づいて切換えテーブルが更新される。
【0121】
本発明の態様では、スイッチ・ファブリック・システムによるイーサネット・パケットの送信専用のパスとは別の、ステータス・パケットの送信専用のパス/チャネル/コンジットを介してステータス・パケットを受信することができる。本発明の他の態様では、ステータス・パケットを定期的に受信することができ、切換えテーブルをリアルタイムで更新することができる。
【0122】
本発明の実施形態では、受信されたステータス・パケットの組み合わされたステータス情報に基づいて、組み合わされたステータス・パケットを生成することができる。
【0123】
次いで、組み合わされたステータス・パケットを他のスイッチ・ファブリック要素に送信することができる。このような実施形態の一態様では、組み合わされたステータス・パケットを外側層スイッチ・ファブリック要素から中央層スイッチ・ファブリック要素に送信することができる。
【0124】
本発明の一態様では、受信されるステータス・パケットをポート・コントローラから生成することができる。本発明の他の態様では、受信されるステータス・パケットをスイッチ・ファブリック要素から生成することができる。本発明の他の態様では、ステータス・パケットは、各ビットがスイッチ・ファブリック要素のポートに関連する32ビットのデータを含んでよい。
【0125】
一実施形態において、スイッチ・ファブリック・ポート・コントローラを備えるスイッチ・システムは、パケットがスイッチ・ファブリックを通って宛先ポート・コントローラに至るパスを、ハンドシェーキング・プロトコルを使用して判定する。しかし、ハンドシェーキング・プロトコルを使用すると、(1)各着信パケットから、スイッチ・ファブリックを通るパスを判定しなければならず、(2)ハンドシェーキング・プロトコルが、パケットがスイッチ・ファブリックを通って伝搬するのと同じチャネルまたはコンジットを使用して実行されるため、スイッチ・システムの帯域幅が小さくなる可能性がある。
【0126】
図33は、本発明の実施形態によるスイッチ・ファブリックにおけるステータス情報および制御情報の後方伝搬の例示的な構成3300を示す概略図である。図33に示されている例示的なスイッチ・ファブリック3300は、図1に示されているマルチポート・スイッチ・アーキテクチャ100のClosネットワーク・トポロジに配置することが好ましい12個のスイッチ・ファブリック要素(SF1からSF12)を備えている。例示的なスイッチ・ファブリック3300は、32個のポート・コントローラ(PC01からPC32)と、外側層スイッチ・ファブリック要素(SF1〜4およびSF9〜12)のそれぞれに結合された4つのポート・コントローラとをさらに有している。
【0127】
後方伝搬機構3300において、各ポート・コントローラは、それぞれのポート・コントローラを、関連する、外側層スイッチ・ファブリック要素に結合する専用コンジット(たとえば、3302)を有している。同様に、各外側層スイッチ・ファブリック要素(SF1〜4およびSF9〜12)は、それぞれの外側層スイッチ・ファブリック要素を各中央層スイッチ・ファブリック要素に結合する専用コンジット(たとえば、3304)を有している。SF1が各ポート・コントローラからステータス情報をどのように受信するかの観点から後方伝搬プロセスを説明するうえで図を明確にするために、図33には、外側層スイッチ・ファブリック要素SF2〜4およびSF9〜12からの専用コンジットしか示されていない。外側スイッチ・ファブリック要素(すなわち、SF1〜4およびSF9〜12)がそれぞれ、各中央スイッチ・ファブリック要素(すなわち、SF5〜8)の専用コンジットを有することに留意されたい。各中央スイッチ・ファブリック要素(すなわち、SF5〜8)は、それぞれの中央スイッチ・ファブリック要素を各外側スイッチ・ファブリック要素(すなわち、SF1〜4およびSF9〜12)に結合する専用コンジット(たとえば、3306)を有している。この場合も、SF1が各ポート・コントローラからステータス情報をどのように受信するかに関して後方伝搬プロセスを説明するうえで図を明確にするために、中央スイッチ・ファブリック要素SF5から外側層スイッチ・ファブリック要素SF1への専用コンジット3306しか示されていない。しかし、外側層スイッチ・ファブリック要素が、図33の例で説明したのと同様に各中央層スイッチ・ファブリック要素からステータス情報を受信できることを認識されたい。
【0128】
引き続き図33を参照するとわかるように、専用コンジット(たとえば、3302、3304、3306)を介すことにより、パケット(および他の制御情報)を受信するポート・コントローラの可用性に関するステータス情報をスイッチ・ファブリックを通して伝搬させることができる。専用コンジット3302、3304、3306の矢印は、スイッチ・システム全体からスイッチ・ファブリック要素SF1へのステータス情報の伝搬を示している。好ましい実施形態では、専用パスはそれぞれ、1サイクル当たり2ビットの情報を送信できるようにする帯域幅を有してよい。このような好ましい実施形態では、帯域幅の1ビットを制御情報の送信に使用し、他のビットを、スイッチ・システムのポート・コントローラの可用性に関するステータス情報の送信に使用してよい。
【0129】
図33には、SF5を介してステータス情報を受信するように中央層スイッチ・ファブリック要素SF5に結合されたスイッチ・ファブリック要素SF1が示されているが、中央層スイッチ・ファブリック要素SF6、SF7、およびSF8はそれぞれ、ステータス情報をSF1に与えるようにSF1に結合された専用コンジットを有してよい。この冗長性は、SF5がステータス情報をSF1に送信できない場合でもポート・コントローラに関する情報を引き続き受信することができるので有利である。
【0130】
一般に、出力ポート・ステータスは、スイッチ・ファブリックを通して伝播するときにスイッチ・ファブリックのローカル出力ポート・ステータスと併合され、それによってスイッチ・ファブリックの全体的なパケット・ステータスに関する与えられた情報を蓄積することができる。したがって、このような機構を用いた場合、スイッチ・システム内の各要素はポートのリアルタイムに更新されたパケット・ステータスを維持し、このローカル情報を使用して、スイッチ・システムへのパケットの入口点とスイッチ・システム内のパケットの宛先との間のハンドシェーキング・プロセスなしにパケットの流れを制御することができる。
【0131】
図34は、本発明の実施形態による、スイッチ・ファブリック・システム内の切換えテーブルを更新するプロセス3400のフローチャートである。好ましい実施形態では、このプロセスは、明細書の、図33に関する部分に記載された後方処理専用コンジットを有するスイッチ・システムで実行される。図34に示されているように、プロセスの一部は、スイッチ・ファブリック・システムのポート・コントローラで実行され、他の部分は、外側層スイッチ・ファブリック要素および中央層スイッチ・ファブリック要素で実行される。
【0132】
動作3402において、ポート・コントローラでステータス・パケットが実行される。ステータス・パケットは、発信パケットの受信に関するポート・コントローラの現在のステータス/可用性を示す情報を含む。生成されたステータス・パケットは、動作3404で、ポート・コントローラに関連する外側層スイッチ・ファブリック要素に送信される。たとえば、図33を参照するとわかるように、ポート・コントローラP32−08はスイッチ・ファブリック要素SF2に関連付けされている。したがって、ポート・コントローラP32−08は、生成したステータス・パケットをスイッチ・ファブリック要素SF2に送信する。好ましい実施形態では、ポート・コントローラは、ステータス・パケットを、関連する外側層スイッチ・ファブリック要素に、該ポート・コントローラと該スイッチ・ファブリック要素を連結する専用コンジット(たとえば、専用コンジット3302)を介して送信する。
【0133】
動作3406で、外側層スイッチ・ファブリック要素は、関連するポート・コントローラから着信ステータス・パケットを受信し収集する。受信されたステータス・パケットからの情報は、次いで動作3408で、外側層スイッチ・ファブリック要素によって生成されたステータス・パケットにおいて組み合わされる。動作3410で組み合わされたステータス・パケットは、次いで中央層スイッチ・ファブリック要素に送信される。外側層スイッチ・ファブリック要素は、組み合わされたステータス・パケットを中央層スイッチ・ファブリック要素に、これらのスイッチ・ファブリック要素を連結する専用コンジット(たとえば、SF2とSF5を連結する専用コンジット3304)を介して送信することが好ましい。外側層スイッチ・ファブリック要素はさらに、ポート・コントローラから受信したステータス・パケットの情報を使用して、それ自体の切換えステータスを更新する(動作3412参照)。
【0134】
中央層スイッチ・ファブリック要素は、動作3414で、外側層スイッチ・ファブリック要素によって送信されたステータス・パケットを受信し収集する。たとえば、図33に示されている例示的な機構を参照する。動作3416で、中央層スイッチ・ファブリック要素は、外側層スイッチ・ファブリック要素から受信されたステータス・パケットに含まれるステータス情報を組み合わせたステータス・パケットを生成する。たとえば、図33に示されている例示的な実施形態では、中央層スイッチ・ファブリック要素SF5は、各パケットがそれぞれの各スイッチ・ファブリック要素に関連するポート・コントローラについてのステータス情報を持つステータス・パケットを外側層スイッチ・ファブリック要素SF2〜SF12から受信する(たとえば、スイッチ・ファブリック要素SF2からのステータス・パケットは、ポート・コントローラP32−08に関する情報を有し、他のパケットについても同様である)。
【0135】
動作3418で、中央層スイッチ・ファブリック要素によって生成されたステータス・パケットは、受信側の外側層ファブリック要素(たとえば、図33に示されている例では、スイッチ・ファブリック要素SF1)に送信される。中央層スイッチ・ファブリック要素は、それが生成した組み合わされたステータス・パケットを受信側の外側層スイッチ・ファブリック要素に、これらのスイッチ・ファブリック要素を連結する専用コンジット(SF5とSF1を連結する専用コンジット3306)を介して送信するのが好ましい。さらに、中央層スイッチ・ファブリック要素は、(ポート・コントローラのステータスに関する)外側層スイッチ・ファブリック要素から受信したステータス・パケットの情報を使用して、それ自体の切換えテーブルを更新する(動作3420参照)。
【0136】
受信側の外側層スイッチ・ファブリック要素(たとえば、図33に示されている例ではスイッチ・ファブリック要素SF1)は、動作3422で、中央層スイッチ・ファブリック要素からステータス・パケットを受信した後、受信されたステータス・パケットに含まれるステータス情報に基づいて、動作3424で、切換えテーブルを更新する。
【0137】
したがって、図33および図34に示されている後方伝搬機構および手順の下では、パケットの受信および出力に関するすべての装置ポートの可用性(すなわち、出力ステータス)を定期的かつ/または連続的に(好ましくはリアルタイムで)通知する専用コンジットを設けてよい。さらに、この後方伝搬機構は、ステータス情報をすべてのスイッチ・ファブリック要素に送信するにあたって必ずしもハンドシェーキング・プロトコルを使用しなくてもよい。
【0138】
図35は、本発明の好ましい実施形態による、図34に示されているプロセスで使用できるステータス・パケット3500の概略図である。このステータス・パケットは複数のビットを含み、好ましい実施形態では、32ビット含んでよい。ステータス・パケットの各ビットは、スイッチ・システムの特定のポート・コントローラと関連付けることができる。たとえば、図33に示されているスイッチ・システムに基づいて、ステータス・パケットのビット01 3502をポート・コントローラPC01と関連付けし、ステータス・パケットのビット02 3504をポート・コントローラP5と関連付けし、他のビットについても同様に関連付けすることができる。ステータス・パケットの各ビットは、スイッチ・システムを通して送信されるパケットの受信/出力に関する、該ビットに関連するポート・コントローラの可用性(すなわち、ステータス)を示すために使用することができる。
【0139】
一例として、「1」を含むビットは、関連するポート・コントローラが、パケットの受信/出力に利用できる(すなわち、このポート・コントローラのステータスは「利用可能」である)ことを示すことができる。逆に、「0」を含むビットは、関連するポート・コントローラが、パケットの受信/出力に利用できない(すなわち、このポート・コントローラのステータスは「利用不能」である)ことを示すことができる。したがって、図35に示されている例示的なステータス・パケット3500において、ビット01および02 3502、3504に含まれる「1」は、ポート・コントローラPC01およびP5が利用可能であることを示し、一方、ビット09、16、および17 3506、3508、3510に含まれる「0」は、ポート・コントローラPC09、PC16、PC17が利用不能であることを示す。
【0140】
(マルチバンク・バッファ)
図36は、スイッチ・ファブリックのスイッチ・マトリクスに、入力データグラムを保存するためのプロセス3600のフローチャートである。スイッチ・マトリクスは、各バッファが1組の部分を有する1組のバッファを有する。データグラムのデータは動作3602に受信され、バッファ部分は、動作3604においてデータで連続的に満たされる。動作3606において、周期的に、データの転送は、バッファからスイッチ・マトリクスに可能になる。バッファ部分が満たされるシーケンスにおいて、データの転送が可能になる各周期において、バッファ部分の1つにおけるデータは、動作3608において、スイッチ・マトリクスに転送されてもよい。
【0141】
本発明の1つの態様において、バッファ部分が、データで満たされている、または、データグラムの終端(すなわち、データグラムのテールまたは最終バイト)を含んでいる場合、バッファ部分におけるデータは、スイッチ・マトリックスに転送されるだけでよい。本発明の他の態様において、スイッチ・マトリクスは、転送されたデータを保存するための複数のメモリ・バンクで構成することもできる。このような実施形態において、メモリ・バンクは、バッファ部分から転送されたデータを受信する際に交替することができる。
【0142】
本発明のさらなる態様において、バッファ部分は、受信したデータを保存するために同等の保存容量をそれぞれ有することができる。好ましい実施形態において、各バッファ部分は、入来データを保存するために、16バイトの保存容量を有する。他の好ましい態様において、データの転送は、16サイクル毎に可能としてもよい。
【0143】
図37は、本発明の実施形態によるスイッチ・ファブリック・コンポーネント3700内のパケット(すなわち、データグラム)3702の入来および保存を示す模式的ダイヤグラムである。上記に検討したように、スイッチ・ファブリック・コンポーネント3700は、Vユニット1〜9として示される8個の入来レシーバ(例えば、図1および22に示すスイッチ・ファブリック・コンポーネントのような)を有する図示された実施形態を備えた、複数のインターフェイス・レシーバ3704を含むことができる。
【0144】
各入来レシーバは、スイッチ・マトリクス3706に接続され、これにより、特定の入来レシーバから、スイッチ・マトリクス3706への入来パケットの転送を可能にする。特に、入来レシーバは、関連するセットの入力バッファに結合されている。一実施形態において、入力バッファの各セットは、2つの入力バッファ3708、37100から構成される。一実施形態において、各入力バッファは、少なくとも16バイトの保存容量を有することができる。好ましい実施形態において、各入力バッファは、32バイトの保存容量を有することができる。好ましい選択肢として、各入力バッファは、2つの部分(例えば、入力バッファ3710の2つの部分3712、3714)に分割してもよい。このような選択肢について、各入力バッファの2つの部分3712、3714が、同等のデータ保持容量(例えば、32バイト容量の好ましい実施形態におけるもの)を有することが好ましい。
【0145】
中央制御装置3716は、入力バッファに保存されたデータのスイッチ・マトリクスのメモリ3718への転送を制御する。一実施形態において、スイッチ・マトリクスのメモリは、内部の複数のメモリ・バンクから構成することができる。図37に示すように、各入力バッファが2つの部分から構成されている好ましい実施形態において、スイッチ・マトリクスのメモリは、各メモリ・バンクが、各入力バッファの2つの部分の1つからデータを受信するための専用であること(例えば、メモリ・バンク3720が、入力バッファ部分3712の専用であり、メモリ・バンク3722が入力バッファ部分3714の専用であるなど)が好ましい、2つのメモリ・バンク3720、3722で構成することができる。
【0146】
図38は、本発明の実施形態による、1組の2部分入力バッファ3708、3710、および、2メモリ・バンク・スイッチ・マトリクス3706を有するスイッチ・ファブリック・コンポーネント3700内のパケットの入来と保存を示すシナリオの模式的ダイヤグラムである。2つのうちの第1の入力バッファ3708は、1組の部分(「部分A」3802および「部分B」3804)から構成される一方、第2の入力バッファ3710は、他の1組の部分(「部分C」3712および「部分D」3714)から構成される。各入力バッファ3708、3710は、32バイトの容量を有し、各部分3712、3714、3802、3804は、16バイトの容量を有している。図38を参照すると、バッファの各々における各バイトは、矩形で表される。黒い矩形は、特定のバイトがデータで満たされていることを表す。
【0147】
入来レシーバ3704は、各サイクルの入力バッファの1つのバイトに、それが受信中の入来パケットの1バイトを転送することができる。このデータ転送の間、入来レシーバは、入力バッファのバイトを連続的に満たす。同様に、入力バッファの部分から、メモリへのデータの転送を可能にするために、中央制御装置は、周期的に、16サイクル・カウント毎に(メモリ・バンク1 3720またはメモリ・バンク2 3722のいずれかの)メモリにアクセスすることを許可する。このシナリオにおいて、メモリのアクセスは、先ず、サイクル・カウント7で可能になり、続いて、サイクル・カウント23、39、55、71、87、103、119、135、151などで可能になる。さらに、入力バッファからメモリ・バンクへのデータの転送は、入力バッファの部分がデータで完全に満たされた(すなわち、16バイトのデータ)、または、パケットの終端バイト(すなわち、パケットの最終バイト)を含む場合にのみ行われる。
【0148】
さらに、メモリ・バンクは、入力バッファからのパケット・データの受信中に交替する。例えば、第1のメモリ・アクセスにおいて、データはメモリ・バンク1に転送してもよく、第2のメモリ・アクセスにおいて、データはメモリ・バンク2に転送してもよく、また、第3のメモリ・アクセスにおいて、データはメモリ・バンク3に転送してもよい、などである。
【0149】
図38に示すシナリオにおいて、97バイトの長さを有する第1の入来パケット3806は、スイッチ・ファブリック3700の入来レシーバ3704に転送されており、この後、4バイトのスペース3808が続き、その後、97バイトの長さを有する第2の入来パケット3810が続く。サイクル・カウント1では、第1のパケットの第1のバイトは、入来レシーバによって受信され、第1の入力バッファの部分A3802の第1のバイト3812を満たすために転送される。
【0150】
サイクル7において、部分A3812の16バイトのうちの7つは、第1パケット3806のデータの最初の7バイトで満たされ、中央制御装置は、このシナリオにおいて初めてメモリ・バンクへのアクセスを許可する。しかし、入力バッファのどの部分も完全に満たされていず、それらのどれもパケットの終端バイトを含んでいないため、サイクル7において、入力バッファとメモリ・バンクとの間では、パケット・データの転送はない。
【0151】
サイクル・カウント16において、第1の入力バッファの部分A3812の全ての16のバイトは、パケット1の最初の16入来バイトで満たされている。しかし、この時点において、次のメモリ・アクセスは、サイクル・カウント23まで行われない。
【0152】
図P11は、本発明の実施形態によるサイクル・カウント23における図38に示すシナリオの模式的ダイヤグラムである。サイクル・カウント23までに、パケット1のさらに7つのバイトが、入力バッファ1の部分B3804に転送されている。同様に、図P11に示すように、サイクル・カウント23において、メモリ・アクセスが中央制御装置によって可能となり、入力バッファ1の部分Aが(サイクル・カウント16以来)満たされているため、部分A3802に含まれるデータの16バイトはメモリ・バンク1 3720に読み出され、書き込まれ(矢印P1102を参照)、続いて、部分A3802から消去される。
【0153】
サイクル・カウント39における次のメモリ・アクセスの時までに、入力バッファ1の部分Bの全ては、パケット1からのデータで(サイクル・カウント32以来)満たされており、パケット1のバイト33〜39は、入力バッファ2 3710の部分C3712に転送されている。したがって、サイクル・カウント39において、部分Bのデータのバイトの全てがメモリ・バンク2 3722に転送される(すなわち、読み出しと書き込みの機能を実行する)。
【0154】
サイクル・カウント55における次のメモリ・アクセスの時に、入力バッファ2の部分Cの全ては、パケット1からのデータで(サイクル・カウント48以来)満たされており、パケット1のバイト49〜55は、入力バッファ2 3710の部分D3714に転送されている。したがって、サイクル・カウント55において、部分Cのデータのバイトの全ては、メモリ・バンク1 3720に(メモリ・バンクがデータの受信に対する利用可能性において交替するため)転送される(すなわち、読み出しと書き込みの機能を実行する)。
【0155】
サイクル・カウント71における次のメモリ・アクセスの時に、入力バッファ2の部分Dの全ては、パケット1からのデータで(サイクル・カウント64以来)満たされており、パケット1のバイト65〜71は、入力バッファ1 3708の部分A3802に転送されている。同様に、サイクル・カウント71において、部分Dのデータのバイトの全ては、メモリ・バンク2 3722に転送される。
【0156】
次のメモリ・アクセスは、サイクル・カウント87において行われ、この時、入力バッファ1の部分Aの全ては、パケット1からのデータで(サイクル・カウント80以来)満たされており、パケット1のバイト81〜87は入力バッファ1 3708の部分B3804に転送されている。同様に、部分Aのデータのバイトの全ては、サイクル・カウント87でメモリ・バンク1 3720に転送される。
【0157】
図40は、本発明の実施形態によるサイクル・カウント103における図38に示すシナリオの模式的ダイヤグラムである。図40は、サイクル・カウント88とサイクル・カウント103との間のシナリオにおいて、何が起こるかについての以下の検討のために使用される。サイクル・カウント96において、入力バッファ1の部分Bの全ては、パケット1のバイト81〜96で満たされている。サイクル・カウント97において、パケット1の最終バイト(バイト97)は、入力バッファBの部分Cの第1のバイト4002に転送される。パケット1のバイト97はパケット1の終端バイトであるため、中央制御装置は、入力バッファ2をデータで満たすことを終了する。
【0158】
サイクル98、99、100、101の間、パケット1と2の間の4バイトのスペースのために、データは入来レシーバによって受信されない。サイクル・カウント102において、パケット2の第1のバイトは、入来レシーバによって受信され、入力バッファ1の部分Aの第1のバイトに転送される。この時点で、入力バッファ1の部分Bがパケット1のバイト81〜96を未だに含んでいることを念頭に置くことは重要である。入力バッファ1に転送された、サイクル・カウント102において受信されたパケット1の入来バイトは、同じく入力バッファ1に同時に保存されているパケット1からのデータのいずれをも上書きしない。これは、パケット2 4002の第1の入来バイトが、入力バッファ1の部分Aに保存される一方、パケット1の保存されたバイト(バイト81〜96)は、入力バッファ1の部分Bに保存されるためである。
【0159】
サイクル・カウント103において、次のメモリ・アクセスが行われる。パケット1のバイト81〜96は、メモリ・バンク2 3722に転送され、入力バッファ1の部分Bは消去される。同様に、サイクル・カウント103において、パケット2の第2の入来バイト4006は、入力バッファ1の部分Bに転送される。パケット1 4002のバイト97は、入力バッファ2の部分C4002に未だに残っている。サイクル・カウント119において、続く次のメモリ・アクセスが中央制御装置によって許可される。この時点において、バイト97がパケットの終端バイトであるため、パケット1 4002のバイト97は、メモリ・バンク1に転送される。同様に、サイクル・カウント119においてメモリ・バンク1に転送されるものは、サイクル・カウント117において部分Aを満たすことを完了した、パケット2の最初の16バイトである。
【0160】
図41は、本発明の実施形態による図38で使用されているデュアルの2部分バッファの代わりに、小さなデュアル入力バッファ4102、4104が使用されている図38に示すシナリオに類似する流れ4100の模式図である。同様に、このシナリオ4100において、単一のバンク・メモリ4106は、デュアル・メモリ・バンクの代わりにスイッチ・マトリクスに設けられている。図38に示すシナリオにおけるように、各入力バッファ4102、4104は、それぞれのバッファ内に矩形で示す各バイトを備えた32バイトを保持するための容量を有する。黒い矩形は、特定のバイトがデータで満たされていることを示す。中央制御装置は、同様に、周期的に、入力バッファからメモリ・バンクへのデータの転送を可能にするために、(ちょうど図38のシナリオにあるように)このシナリオP800において、16サイクル・カウント毎にアクセスを許可する。この現在のシナリオにおいて、メモリ・アクセスも、同様に、先ず、サイクル・カウント7で可能となり、続いて、サイクル・カウント23、39、55、71、87、103、119、135、151などで可能となる。入力バッファが、データ(すなわち、32バイトのデータ)で完全に満たされているか、パケットの終端バイト(すなわち、パケットの最終バイト)を含んでいる場合にのみ、さらに、このシナリオ4100において、入力バッファからメモリ・バッファへのデータの転送が行われる。
【0161】
さらに、図38に示すシナリオにおけるように、このシナリオ4100において、97バイトの長さを有する第1の入来パケット3806は、入来レシーバに転送され、次に、4バイトのスペースが続き、次に、97バイトの長さを有する第2の入来パケットが続く。サイクル・カウント1で、第1パケットの第1バイトは、入来レシーバによって受信され、第1入力バッファ4102を満たすために転送される。
【0162】
図38に示す配置と比較する時、この配置に生じる問題としては、小さなデュアル入力バッファが、様々な大きさの入来パケットを扱えないことである。この問題は、サイクル・カウント102におけるシナリオ4100の状況を示す図41に示す。サイクル・カウント96において、第1の入力バッファ4102は、第1の入来パケットのバイト65〜96で完全に満たされている。第1入力バッファが満たされていず、パケットの終端バイトを含んでいなかったため、第1の入力バッファ4102のデータの転送は、サイクル・カウント71および87において、メモリ・アクセスで可能とされた。サイクル・カウント97において、第1の入来パケットの最終バイト(バイト97)4108が受信され、第2の入力バッファ4104の第1のバイトに転送される。しかし、次のメモリ・アクセスは、サイクル・カウント103において可能となる。したがって、第1の入力バッファの第1のパケットのデータは、サイクル・カウント103まで転送することができない。
【0163】
サイクル・カウント98〜101において、入来パケット間にスペースが発生し、そのため、これらのサイクルの間には入力バッファへの伝送されるデータはない。サイクル・カウント102において、第2のパケットの第1のバイト4110は、入来レシーバによって受信され、(標準パケット転送プロトコルに従って)第1の入力バッファに転送され、したがって、第1の入力バッファに保存された第1のパケットのバイト4112(バイト65)を上書きし、これによって、第1のパケットのデータを、これがメモリ・バンク4106に転送される前に、損傷する。第1のパケットのデータをそのような状態に損傷する問題を回避するための1つの選択肢は、第3の入力バッファを追加することである。他の選択肢は、図38に示すデュアルの2部分入力バッファ配置を使用することである。デュアルの2部分入力バッファ配置を使用することによって、スイッチ・マトリクス/スイッチ・ファブリック・コンポーネントの全チップ面積のハードウェア面での削減を達成することができる。
【0164】
図42は、本発明の実施形態によるスイッチ・マトリクス・メモリ・バンクのためのメモリ・アクセスのサイズを示す模式的ダイヤグラムである。入力バッファ4204への入力パケット(すなわち、データグラム)4202に対するデータ伝送速度(「Rx速度」)は、R(ビット/秒)と表すことができる。メモリ4206へのアクセスは、各入力バッファ(および、各出力バッファに対しても同じであってもよい)に対してT(秒)毎に許可される。本発明の実施形態によれば、メモリに対する最小メモリ・アクセス・サイズは、RT(ビット)である。好ましい実施形態において、様々な大きさのパケットを扱うために十分なメモリ・アクセス・サイズは、2RT(ビット)である。
【0165】
本発明によるシステムの一実施形態は、IBM互換のパーソナル・コンピュータ、Apple Macintoshコンピュータ、または、UNIXベースのワーク・ステーションなどのコンピュータの流れにおいて実施することができる。代表的なハードウェア・コンフィギュレーションは、図43に示し、この図は、マイクロプロセッサなどの中央処理ユニット4310、および、システム・バス4312を介して相互接続されたいくつかの他のユニットを有する実施形態によるワーク・ステーションの典型的なハードウェア・コンフィギュレーションを示す。このワーク・ステーションは、さらに、ランダム・アクセス・メモリ(RAM)4314、リード・オンリー・メモリ(ROM)4316、ディスク記憶ユニット4320などの周辺機器をバス4312に接続するためのI/Oアダプタ4318、キーボード4324を接続するためのユーザ・インターフェイス・アダプタ4322、マウス4326、スピーカ4328、マイクロフォン4332、および/または、バス4312へのタッチ・スクリーン(図示せず)などの他のユーザ・インターフェイス・デバイス、ワーク・ステーションを(例えば、データ処理ネットワークなどの)通信ネットワーク4335へ接続するための通信アダプタ4334、および、バス4312をディスプレー・デバイス4338に接続するためのディスプレー・アダプタ4336をさらに含む。ワーク・ステーションは、これに常駐で、Microsoft WindowsNTまたはWindows/95のオペレーティング・システム(OS)、IBM OS/2オペレーティング・システム、MAC OS、または、UNIXオペレーティング・システムを典型的に有する。当業者には、本発明の実施形態が、上述したもの以外のプラットフォームおよびオペレーティング・システム上に実装することもできることを理解する。実施形態は、JAVA、C、および、C++言語を使用して書くこともでき、オブジェクト志向のプログラミング方法論を利用することもできる。
【0166】
様々な実施形態が上記に説明された一方、それらが実施例の方法でのみ提示され、限定とはならないことが理解される。したがって、好ましい実施形態の柔軟性および範囲は、上記に説明された実施形態のいずれによっても限定されるべきではないが、冒頭の特許請求の範囲およびそれに同等のものに従ってのみ定義されるべきである。
【図面の簡単な説明】
【図1】
本発明の実施形態による、マルチポート・スイッチ・アーキテクチャの概略的なブロック図である。
【図2】
本発明の実施形態による、他のマルチ・ポート・スイッチ・アーキテクチャの概略的なブロック図である。
【図3】
本発明の実施形態による、ギガビット・アップリンキングの概略的なブロック図である。
【図4】
本発明の実施形態による、ポート・コントローラのアーキテクチャの概略的なブロック図である。
【図5】
本発明の実施形態による、スイッチ・ファブリックを通る送信のデータグラムを準備するプロセスのフローチャートである。
【図6】
本発明の実施形態による、例示的なパケットの概略的な表示である。
【図7】
本発明の実施形態による、パケットを処理するプロセスのフローチャートである。
【図8】
本発明の実施形態による、ポート・コントローラにおいて図7に示したパケットを処理するプロセスを示す第1の概略的な流れ図である。
【図9】
本発明の実施形態による、ポート・コントローラにおいて図7に示したパケットを処理するプロセスを示す第2の概略的な流れ図である。
【図10】
本発明の実施形態による、ポート・コントローラに入る複数の入力パケットの処理および記憶の例を表す概略図である。
【図11】
本発明の実施形態による、パケットのボディ部分からヘッダ部分を分離するプロセスのフローチャートである。
【図12】
本発明の実施形態による、ヘッダ部分から分離した後、パケットのボディ部分をメモリに記憶するプロセスのフローチャートである。
【図13】
本発明の実施形態による、パケットの処理したヘッダ部分をメモリに記憶するプロセスのフローチャートである。
【図14】
本発明の実施形態による、入力パケットのセルをメモリに記憶することを表す概略図である。
【図15】
本発明の実施形態による、スイッチ・ファブリック・システムにおいて、ポート・コントローラからスイッチ・ファブリックまでパケットを転送するプロセスのフローチャートである。
【図16】
本発明の実施形態による、エグレスのためにキューに入れたパケットの連結リストを生成するプロセスのフローチャートである。
【図17】
本発明の実施形態による、パケット・メモリに記憶されたパケットを割り当てられた出力優先キューに連結することを示す概略図である。
【図18】
本発明の実施形態による、図17に示したパケット・メモリに記憶された例示的なパケットを示す概略図である。
【図19】
本発明の実施形態による、ポート・コントローラを介してスイッチ・システムを出るパケットを処理するプロセスを示す概略的な流れ図である。
【図20】
本発明の実施形態による、スイッチ・ファブリック構成要素のアーキテクチャの概略的なブロック図である。
【図21】
本発明の実施形態による、スイッチ・ファブリックを通るデータグラムを送信するプロセスのフローチャートである。
【図22】
本発明の実施形態による、スイッチ・ファブリックを通るパケットを経路指定するスイッチング・テーブルの実装を示すための、4つの8×8のスイッチ・ファブリック構成要素を備えるスイッチ・ファブリックの概略的なブロック図である。
【図23、図24、図25、図26】
本発明の実施形態による、図22に示したスイッチ・ファブリックのための例示的なスイッチング・テーブルの概略図である。
【図27】
本発明の実施形態による、スイッチ・ファブリック構成要素を通るパケットを処理するプロセスのフローチャートである。
【図28】
本発明の実施形態による、決定結果がポート・ビットマップを備えるスイッチ・ファブリック構成要素を通るパケットを処理するプロセスを示す概略図である。
【図29】
本発明の実施形態による、スイッチ・ファブリック構成要素におけるポート・ビットマップ(特に、8ビットのポート・ビットマップ)の例示的な使用を示す概略図である。
【図30】
本発明の実施形態による、例示的な宛先ベクトル、宛先ベクトルのためのエグレス・マスク、および変更した宛先ベクトルの概略図である。
【図31】
本発明の実施形態による、決定結果が宛先ベクトルを備えるスイッチ・ファブリック構成要素を通るパケットを処理する他のプロセスを示す概略図である。
【図32】
本発明の実施形態による、スイッチ・ファブリックのスイッチング・テーブルを更新するプロセスのフローチャートである。
【図33】
本発明の実施形態による、スイッチ・ファブリックにおける状況と制御の情報の後方伝播のための例示的な構成を示す概略図である。
【図34】
本発明の実施形態による、スイッチ・ファブリック・システムにおいてスイッチング・テーブルを更新するプロセスのフローチャートである。
【図35】
本発明の好ましい実施形態による、図34に記述したプロセスにおいて使用することが可能である状況パケットの概略図である。
【図36】
本発明の実施形態による、入力データグラムをスイッチ・ファブリックのスイッチ・マトリックスに記憶するプロセスのフローチャートである。
【図37】
本発明の実施形態による、スイッチ・ファブリック構成要素におけるパケットのイングレスと記憶(すなわち、データグラム)を示す概略図である。
【図38】
本発明の実施形態による、2つの部分の入力バッファと2つのメモリ・バンクのスイッチ・マトリックスの対を有するスイッチ・ファブリック構成要素におけるパケットのイングレスと記憶を示すシナリオの概略図である。
【図39】
本発明の実施形態による、サイクル・カウント23における図38に記述したシナリオの概略図である。
【図40】
本発明の実施形態による、サイクル・カウント103における図38に記述したシナリオの概略図である。
【図41】
本発明の実施形態による、図38で使用した二重の2つの部分のバッファの代わりにトリビアルな二重入力バッファを使用した、図38に提示したシナリオに類似のシナリオの概略図である。
【図42】
本発明の実施形態による、スイッチ・マトリックス・メモリ・バンクに対するメモリ・アクセス・サイズを示す概略図である。
【図43】
本発明の一実施形態のハードウエア実装に関する概略図である。
Claims (2)
- パケットをポート・コントローラからスイッチ・システムにおけるスイッチ・ファブリックへ転送するための方法であって、
(a)パケットが前記ポート・コントローラにおいて処理されたという通知を受信すること、
(b)前記処理されたパケットを出力優先待ち行列に割り当てること、
(c)前記パケットを前記割り当てられた出力優先待ち行列にリンクすること、
(d)前記パケットを、前記リンクを介して検索すること、および
(e)前記検索されたパケットを前記ポート・コントローラから前記スイッチ・ファブリックへ送信することを含む方法。 - パケットをスイッチ・ファブリック・システムにおいて転送するためのシステムであって、
出力向きスケジューラ、イングレス・ダイレクト・メモリ・アクセスおよびメモリを有するポート・コントローラを含み、
前記イングレスDMAは、前記パケットをメモリに格納するための論理を有し、
前記出力向きスケジューラは、前記イングレスDMAおよび前記メモリに結合され、パケットが処理されたという通知を前記イングレスDMAから受信するための論理、前記処理されたパケットを出力優先待ち行列に割り当てるための論理、前記パケットを前記割り当てられた出力優先待ち行列にリンクするための論理、および前記パケットを前記メモリから、前記リンクを介して検索するための論理を有し、さらに、
前記ポート・コントローラに結合されたスイッチ・ファブリックを含み、前記ポート・コントローラは、前記検索されたパケットを前記スイッチ・ファブリックへ送信するための論理を有するシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22503400P | 2000-08-11 | 2000-08-11 | |
US09/669,290 US6724759B1 (en) | 2000-08-11 | 2000-09-25 | System, method and article of manufacture for transferring a packet from a port controller to a switch fabric in a switch fabric chipset system |
PCT/US2001/025088 WO2002015484A1 (en) | 2000-08-11 | 2001-08-09 | System and method for transferring a packet from a port controller to a switch fabric |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004507160A true JP2004507160A (ja) | 2004-03-04 |
JP2004507160A5 JP2004507160A5 (ja) | 2005-01-20 |
Family
ID=26919241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002520483A Pending JP2004507160A (ja) | 2000-08-11 | 2001-08-09 | パケットをポート・コントローラからスイッチ・ファブリックへ転送するためのシステムおよび方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6724759B1 (ja) |
EP (1) | EP1226686A1 (ja) |
JP (1) | JP2004507160A (ja) |
AU (1) | AU2001283262A1 (ja) |
WO (1) | WO2002015484A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013207507A (ja) * | 2012-03-28 | 2013-10-07 | Hitachi Ltd | ネットワークノード及びネットワークノードの設定方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7002982B1 (en) * | 1998-07-08 | 2006-02-21 | Broadcom Corporation | Apparatus and method for storing data |
US7227862B2 (en) * | 2000-09-20 | 2007-06-05 | Broadcom Corporation | Network switch having port blocking capability |
US7016299B2 (en) * | 2001-07-27 | 2006-03-21 | International Business Machines Corporation | Network node failover using path rerouting by manager component or switch port remapping |
US7362751B2 (en) * | 2001-10-03 | 2008-04-22 | Topside Research, Llc | Variable length switch fabric |
CN100592701C (zh) * | 2002-09-06 | 2010-02-24 | 因芬奈昂技术股份有限公司 | 可配置的快速以太网和吉比特以太网数据端口 |
KR100489685B1 (ko) * | 2003-02-20 | 2005-05-17 | 삼성전자주식회사 | 패킷 제어기와 네트워크 프로세서간의 패킷 전송을 위한패킷 송수신 장치와 그 방법 |
US7894426B2 (en) * | 2005-02-04 | 2011-02-22 | Hewlett-Packard Development Company, L.P. | Conduit port for network chips |
US7779287B2 (en) * | 2005-08-22 | 2010-08-17 | Intel Corporation | Reducing power consumption in multiprocessor systems |
US7590137B1 (en) * | 2005-11-22 | 2009-09-15 | Xilinx, Inc. | Parameterizable compact network processor for low-level communication with an integrated circuit |
US7991926B1 (en) * | 2006-02-22 | 2011-08-02 | Marvell Israel (M.I.S.L) Ltd. | Scalable memory architecture for high speed crossbars using variable cell or packet length |
US7917671B2 (en) * | 2007-12-18 | 2011-03-29 | Nvidia Corporation | Scalable port controller architecture supporting data streams of different speeds |
US8099528B2 (en) * | 2008-09-30 | 2012-01-17 | Apple Inc. | Data filtering using central DMA mechanism |
US8787368B2 (en) * | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Crossbar switch with primary and secondary pickers |
EP2742653A4 (en) * | 2011-08-08 | 2015-04-15 | Hewlett Packard Development Co | SWITCHING MATRIX CHIP WITH PORT RESOLUTION MODULE |
US9003369B2 (en) | 2011-08-31 | 2015-04-07 | Nvidia Corporation | HDMI-muxed debug port methods and apparatuses |
US9384139B2 (en) * | 2014-04-30 | 2016-07-05 | Mellanox Technologies Ltd. | Maintaining a system state cache |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3220622A1 (de) | 1982-06-01 | 1983-12-15 | M.A.N.- Roland Druckmaschinen AG, 6050 Offenbach | Dateneingabeeinrichtung an druckmaschinen |
US4998242A (en) | 1988-12-09 | 1991-03-05 | Transwitch Corp. | Virtual tributary cross connect switch and switch network utilizing the same |
US5119370A (en) | 1989-09-28 | 1992-06-02 | Northern Telecom Limited | Switching node for a communications switching network |
US5068916A (en) | 1990-10-29 | 1991-11-26 | International Business Machines Corporation | Coordination of wireless medium among a plurality of base stations |
US5276445A (en) | 1990-11-30 | 1994-01-04 | Sony Corporation | Polling control system for switching units in a plural stage switching matrix |
US5408469A (en) | 1993-07-22 | 1995-04-18 | Synoptics Communications, Inc. | Routing device utilizing an ATM switch as a multi-channel backplane in a communication network |
DE69428186T2 (de) * | 1994-04-28 | 2002-03-28 | Hewlett Packard Co | Mehrfachsendeeinrichtung |
US5619646A (en) * | 1994-09-27 | 1997-04-08 | International Business Machines Corporation | Method and system for dynamically appending a data block to a variable length transmit list while transmitting another data block over a serial bus |
CA2230233A1 (en) | 1995-09-01 | 1997-03-13 | General Datacomm, Inc. | Atm network switch having enhanced call setup capability |
US5732087A (en) | 1996-05-10 | 1998-03-24 | Mitsubishi Electric Information Technology Center America, Inc. | ATM local area network switch with dual queues |
US6212567B1 (en) * | 1996-09-12 | 2001-04-03 | Compaq Computer Corporation | Method and apparatus for performing raw cell status report frequency mitigation on receive in a network node |
US5831980A (en) | 1996-09-13 | 1998-11-03 | Lsi Logic Corporation | Shared memory fabric architecture for very high speed ATM switches |
FI103312B (fi) | 1996-11-06 | 1999-05-31 | Nokia Telecommunications Oy | Kytkentämatriisi |
US5835491A (en) | 1996-11-21 | 1998-11-10 | Xerox Corporation | Method for supporting multicast capabilities in switching networks with a reservation ring |
US6084858A (en) | 1997-01-29 | 2000-07-04 | Cabletron Systems, Inc. | Distribution of communication load over multiple paths based upon link utilization |
US5999441A (en) | 1997-02-14 | 1999-12-07 | Advanced Micro Devices, Inc. | Random access memory having bit selectable mask for memory writes |
US6252878B1 (en) | 1997-10-30 | 2001-06-26 | Cisco Technology, Inc. | Switched architecture access server |
US6259699B1 (en) * | 1997-12-30 | 2001-07-10 | Nexabit Networks, Llc | System architecture for and method of processing packets and/or cells in a common switch |
US6078963A (en) | 1998-01-16 | 2000-06-20 | At&T Corp. | Router with de-centralized processing using intelligent ports |
US6163539A (en) | 1998-04-28 | 2000-12-19 | Pmc-Sierra Ltd. | Firmware controlled transmit datapath for high-speed packet switches |
US6046979A (en) | 1998-05-04 | 2000-04-04 | Cabletron Systems, Inc. | Method and apparatus for controlling the flow of variable-length packets through a multiport switch |
US6067301A (en) * | 1998-05-29 | 2000-05-23 | Cabletron Systems, Inc. | Method and apparatus for forwarding packets from a plurality of contending queues to an output |
US6067300A (en) | 1998-06-11 | 2000-05-23 | Cabletron Systems, Inc. | Method and apparatus for optimizing the transfer of data packets between local area networks |
-
2000
- 2000-09-25 US US09/669,290 patent/US6724759B1/en not_active Expired - Fee Related
-
2001
- 2001-08-09 EP EP01962049A patent/EP1226686A1/en not_active Withdrawn
- 2001-08-09 AU AU2001283262A patent/AU2001283262A1/en not_active Abandoned
- 2001-08-09 WO PCT/US2001/025088 patent/WO2002015484A1/en not_active Application Discontinuation
- 2001-08-09 JP JP2002520483A patent/JP2004507160A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013207507A (ja) * | 2012-03-28 | 2013-10-07 | Hitachi Ltd | ネットワークノード及びネットワークノードの設定方法 |
Also Published As
Publication number | Publication date |
---|---|
US6724759B1 (en) | 2004-04-20 |
AU2001283262A1 (en) | 2002-02-25 |
WO2002015484A1 (en) | 2002-02-21 |
EP1226686A1 (en) | 2002-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004507165A (ja) | スイッチ・ファブリックにおけるスイッチング・テーブル更新 | |
JP2004507136A (ja) | 入力データグラムをスイッチ・ファブリック・チップセット・システムにおけるスイッチ・マトリックスに格納するためのシステム、方法および製造品 | |
JP2004507165A5 (ja) | ||
JP2004507136A5 (ja) | ||
JP2004507160A (ja) | パケットをポート・コントローラからスイッチ・ファブリックへ転送するためのシステムおよび方法 | |
JP3645734B2 (ja) | ネットワーク中継装置及びネットワーク中継方法 | |
US6628615B1 (en) | Two level virtual channels | |
US4991172A (en) | Design of a high speed packet switching node | |
US8483222B1 (en) | Multi-link routing | |
US7319669B1 (en) | Method and system for controlling packet flow in networks | |
US7349416B2 (en) | Apparatus and method for distributing buffer status information in a switching fabric | |
US6571291B1 (en) | Apparatus and method for validating and updating an IP checksum in a network switching system | |
US7623455B2 (en) | Method and apparatus for dynamic load balancing over a network link bundle | |
US7782857B2 (en) | Logical separation and accessing of descriptor memories | |
JP2000503828A (ja) | データネットワーク上でデータパケットをスイッチングする方法および装置 | |
WO2004045161A1 (en) | Packet storage system for traffic handling | |
JP4182180B2 (ja) | ネットワーク中継装置及びネットワーク中継方法 | |
JP2004536515A (ja) | デュアルポートメモリエミュレーション方式によるスイッチファブリック | |
US8824468B2 (en) | System and method for parsing frames | |
EP1303949B1 (en) | Apparatus and method for buffer-free evaluation of packet data bytes with multiple min terms | |
JP2003521156A (ja) | 単一のリングデータバス接続構成を用いてメモリを共有する装置および方法 | |
JP3645735B2 (ja) | ネットワーク中継装置及びネットワーク中継方法 | |
JP2004507164A (ja) | 新しいスイッチ・ファブリック・チップセット・システムおよび方法 | |
EP1530854B1 (en) | Packet processing engine | |
JP2004507164A5 (ja) |