(57)【要約】【課題】スイッチング環境での共用メモリリソースに関連する欠点を軽減すること。【解決手段】本発明の特定の実施例では、スイッチングする方法が提供される。特定の実施例では、本方法は、スイッチの入力ポートでパケットを受信することを含み、パケットは仮想ローカルエリアネットワーク識別子(VLAN-ID)及び媒体アクセス制御(MAC)アドレスに関連し、スイッチは転送データベース及び複数の出力ポートを有する。本方法は、VLAN-IDをマスクし、パケットに関連するVLAN-IDより少ないビットで構成されるマスクされたVLAN-IDを作成する。本方法は、MACアドレス及びマスクされたVLAN-IDに或る関数を適用し、インデックスを生成し、インデックスを利用して、転送データベースでスイッチの出力ポートを識別する。本方法は、識別された出力ポートからパケットを送信する。【選択図】図１
2007325271.tif 000002
【特許請求の範囲】
【請求項１】
スイッチの入力ポートでパケットを受信するステップであって、前記パケットは仮想ローカルエリアネットワーク識別子(VLAN-ID)及び媒体アクセス制御(MAC)アドレスに関連し、前記スイッチは転送データベース及び複数の出力ポートを有するステップと、
前記VLAN-IDをマスクし、前記パケットに関連する前記VLAN-IDより少ないビットで構成されるマスクされたVLAN-IDを作成するステップと、
前記MACアドレス及び前記マスクされたVLAN-IDに或る関数を適用し、インデックスを生成するステップと、
前記インデックスを利用して、前記転送データベースで
前記スイッチの出力ポートを識別するステップと、
識別された出力ポートから前記パケットを送信するステップと、
を有するスイッチングする方法。
【請求項２】
受信したパケットが、VLAN-ID及びMACアドレスをヘッダに含んでいる請求項１記載の方法。
【請求項３】
前記VLAN-IDをマスクするステップが、前記VLAN-IDのビットの特定の一部分からビット値を選択するステップを有し、前記マスクされたVLAN-IDは選択されたビット値しか含まない請求項１記載の方法。
【請求項４】
ハッシュテーブルが、前記MACアドレス及び前記VLAN-IDに前記関数を適用し、前記インデックスを生成するために使用され、前記ハッシュテーブルは前記インデックスを用いて前記スイッチの前記出力ポートを特定するのに使用される請求項１記載の方法。
【請求項５】
コンピュータ読み取り可能な媒体内にエンコードされた論理装置であって、
スイッチの入力ポートでパケットを受信するステップであって、前記パケットは仮想ローカルエリアネットワーク識別子(VLAN-ID)及び媒体アクセス制御(MAC)アドレスに関連し、前記スイッチは転送データベース及び複数の出力ポートを有するステップと、
前記VLAN-IDをマスクし、前記パケットに関連する前記VLAN-IDより少ないビットで構成されるマスクされたVLAN-IDを作成するステップと、
前記MACアドレス及び前記マスクされたVLAN-IDに或る関数を適用し、インデックスを生成するステップと、
前記インデックスを利用して、前記転送データベースで
前記スイッチの出力ポートを識別するステップと、
識別された出力ポートから前記パケットを送信するステップと、
をコンピュータに実行させる論理装置。
【請求項６】
パケットを受信するよう構成された少なくとも１つの入力ポートであって、前記パケットは仮想ローカルエリアネットワーク識別子(VLAN-ID)及び媒体アクセス制御(MAC)アドレスに関連する入力ポートと、
ルーティングモジュールと、
複数の出力ポートと、
を有するスイッチであって、前記ルーティングモジュールは、  
前記VLAN-IDをマスクし、前記パケットに関連する前記VLAN-IDより少ないビットで構成されるマスクされたVLAN-IDを作成し、
前記MACアドレス及び前記マスクされたVLAN-IDに或る関数を適用し、インデックスを生成し、
前記インデックスを利用して、当該スイッチの出力ポートを識別し、
特定の出力ポートが識別された出力ポートであった場合に、該特定の出力ポートは当該スイッチからパケットを送信するスイッチ。
【請求項７】
受信したパケットが、VLAN-ID及びMACアドレスをヘッダに含んでいる請求項６記載のスイッチ。
【請求項８】
前記VLAN-IDをマスクすることが、前記VLAN-IDのビットの特定の一部分からビット値を選択することを含み、前記マスクされたVLAN-IDは選択されたビット値しか含まない請求項６記載のスイッチ。
【請求項９】
前記関数がハッシュ関数である請求項６記載のスイッチ。
【請求項１０】
前記MACアドレス及び前記VLAN-IDに前記関数を適用し、前記インデックスを生成するよう構築されたハッシュテーブルを更に有し、前記ハッシュテーブルは前記インデックスを用いて前記スイッチの前記出力ポートを特定するのに使用される請求項６記載のスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に通信システムに関連し、特にスイッチングする環境で転送するデータベースリソースを管理することに関連する。
【背景技術】
【０００２】
高速シリアル相互接続は通信環境で益々一般的になりつつあり、その結果これらの環境でプレイを切り換える役割は益々重要になりつつある。従来のスイッチはスケーラビリティを提供せず、一般的にはスイッチング速度はこれらの相互接続をサポートしなければならなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の課題は、スイッチング環境での共用メモリリソースに関連する欠点及び問題点を軽減する又は解消することである。
【課題を解決するための手段】
【０００４】
本発明の特定の実施例では、スイッチングする方法が提供される。特定の実施例では、本方法は、スイッチの入力ポートでパケットを受信するステップを有し、前記パケットは仮想ローカルエリアネットワーク識別子(VLAN-ID)及び媒体アクセス制御(MAC)アドレスに関連し、前記スイッチは転送データベース及び複数の出力ポートを有する。本方法は、前記VLAN-IDをマスクし、前記パケットに関連する前記VLAN-IDより少ないビットで構成されるマスクされたVLAN-IDを作成するステップも有する。本方法は、前記MACアドレス及び前記マスクされたVLAN-IDに或る関数を適用し、インデックスを生成するステップと、前記インデックスを利用して、前記転送データベースで前記スイッチの出力ポートを識別するステップとを有する。本方法は、識別された出力ポートから前記パケットを送信するステップを有する。
【発明を実施するための最良の形態】
【０００５】
本発明の特定の実施例は１つ以上の技術的利点をもたらす。特定の実施例では、スイッチはルーティング情報を転送データベースに一層効率的に格納する。特定の実施例では、転送データベースの中にルーティング情報を効率的に格納することで、スイッチはより多くのルーティング情報を転送データベースに格納してもよい。特定の実施例では、ネットワークのコンフィギュレーションを考慮に入れることで及び格納済みルーティング情報のサイズをインテリジェントに減らすことで、スイッチはルーティング情報を転送データベース中に更に効率的に格納してもよい。特定の実施例はこれら上記の利点の全部又は一部をもたらすかもしれないし或いはもたらさないかもしれない。ある実施例は特許請求の範囲、明細書及び添付図面から当業者に明瞭に１つ以上の他の技術的利点をもたらす。
【０００６】
本発明並びに本発明の特徴及び利点の理解の完全を更に期するため、添付図面と共に以下の説明がなされる。
【実施例１】
【０００７】
図１はシステムエリアネットワーク１０の一例を示し、システムエリアネットワークは、１つ以上のサーバーシステム１４の間で通信をサポートするシリアルな又は他の相互接続部１２、１つ以上のストレージシステム１６、１つ以上のネットワークシステム１８及び相互接続部１２を１つ以上の他のネットワークに結合する１つ以上のルーティングシステム２０を有し、ルーティングシステムは１つ以上のローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)又は他のネットワークを含む。サーバーシステム１４の各々は、１つ以上の中央処理装置(CPU)及び１つ以上のメモリユニットを含む。ストレージシステム１６の各々は、１つ以上のチャネルアダプタ、１つ以上のディスクアダプタ及び１つ以上のCPUメモリを含む。相互接続部１２は１つ以上のスイッチ２２を含み、特定の実施例では、以下で詳細に説明されるようなイーサーネットスイッチを含む。システムエリアネットワーク１０の構成要素は１つ以上のリンクを用いて互いに結合され、その各々は１つ以上のコンピュータバス、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、広域ネットワーク(WAN)、インターネットの一部又は他の有線の、光の、無線の他のリンクを含んでもよい。特定のコンフィギュレーションで互いに結合される特定の構成要素を含むようにシステムエリアネットワーク１０が記述され説明されているが、適切な如何なるコンフィギュレーションで互いに結合される適切な如何なる構成要素も含んでよい適切な如何なるシステムをも本発明は包含する。
【０００８】
図２はシステムエリアネットワーク１０のスイッチ２２の一例を示す。スイッチ２２は複数のポート２４及びスイッチコア２６を含む。ポート２４の各々はスイッチコア２６に及びシステムエリアネットワーク１０の構成要素（例えば、サーバーシステム１４、ストレージシステム１６、ネットワークシステム１８、ルーティングシステム２０又は他のスイッチ２２等）に及び結合される。第１ポート２４は、システムエリアネットワーク１０の第１構成要素からパケットを受信し、そのパケットを第２ポート２４に切り替えるスイッチコア２６に通知し、スイッチコアはそのパケットをシステムエリアネットワーク１０の第２構成要素に通知する。パケットに関連するものは、パケット、データグラム、フレームその他適切なデータ単位を含む。スイッチコア２６は、第１ポート２４からパケットを受信し、そのパケットを１つ以上の第２ポート２４に切り換える（より詳細に後述される）。特定の実施例では、スイッチ２２はイーサーネットスイッチを含む。特定の実施例では、スイッチ２２はワイヤスピードで又はその程度に速く切り換えることができる。
【０００９】
図３はスイッチ２２のスイッチコア２６の具体例を示す。スイッチコア２６は、１２個のポートモジュール２８、ストリームメモリ３０、タグメモリ３２、入力コントロール及びセントラルエージェント(ICCA)３３、ルーティングモジュール３６及びスイッチングモジュール３７を含む。スイッチコア２６の構成要素はバス又は他のリンクを用いて互いに結合される。特定の実施例では、スイッチコア２６は１つのICの中に組み込まれる。スイッチコア２６のデフォルトモードでは、システムエリアネットワーク１０の第１構成要素からスイッチコア２６により受信されたパケットは、スイッチコア２６がパケット全体を受信する前に、スイッチコア２６からシステムエリアネットワーク１０の１つ以上の第２構成要素へ通知可能である。特定の実施例では、カットスルーフォワーディング(cut-through  forwarding)が、格納及び転送法(ストアアンドフォワード)より優れた１つ以上の利点をもたらす。スイッチ２６は様々なアプリケーション用に構築可能である。非限定的な一例として、スイッチコア２６はイーサーネットスイッチ２２（１０ギガビットイーサーネットスイッチ２２又はイーサーネットスイッチ２２を特定の実施例で含む）、インフィニバンド(INFINIBAND)スイッチ２２、3GIOスイッチ２２、ハイパートランスポート(HYPERTRANSPORT)スイッチ２２、高速IOスイッチ２２、ストレージサブシステム１６、ネットワークサブシステム１８又は双方のためのプロプラエタリバックプレーン(proprietary  backplane)スイッチ２２、又は他のスイッチ２２用に構築可能である。
【００１０】
ポートモジュール２８はスイッチのスイッチコア２６及びポート２４間のインターフェースを提供する。ポートモジュール２８は、ポート２４、ストリームメモリ３０、タグメモリ３２、ICCA３３、ルーティングテーブル３６及びスイッチングモジュール３７に通信可能に結合される。特定の実施例では、ポートモジュール２８は入力ロジック（システムエリアネットワーク１０の構成要素からのパケットを受信するために及びパケットをストリームメモリに書き込むために使用される）及び出力ロジック（ストリームメモリ３０からパケットを読み込むために及びシステムエリアネットワーク１０の構成要素にパケットを通知するために使用される）の双方を含む。代替例として、特定の実施例では、ポート２８は入力ロジックのみ、又は出力ロジックのみを含む。ポートモジュール２８に関するものは、入力ロジック、出力ロジック又は双方を適切に含むポートモジュール２８を含む。ポートモジュール２８はインバウンド(進入)フロー制御用の入力バッファを含んでもよい。イーサーネットスイッチ２２では、有効になるまで時間を稼ぐポーズ機能が使用され、インバウンドフロー制御に使用されてもよい。ポートモジュール２８の入力バッファは、パケットのテンポラリストレージに使用可能であり、そのパケットはポーズ機能が到来するパケットを止める前に送信される。INFINIBANDスイッチ２２における場合のようにインバウンドフロー制御にクレジットが出力されるならば、入力バッファは必須でないので、入力バッファはオプションになる。特定の実施例では、ポートモジュール２８をストリームメモリ３０に結合するリンクは、書込動作用のものと読み込み動作用のものを含み、書込動作用はポートモジュール２８からストリームメモリ３０にデータが書き込まれるスイッチコア２６の動作を含み、読み込み動作用はストリームメモリ３０からポートモジュール２８へデータが読み込まれるスイッチコア２６の動作を含む。これらのリンクの各々は、３６ビットを搬送することができ、ポートモジュール２８及びストリームメモリ３０間のデータパスを双方向に３６ビット広くする。
【００１１】
システムエリアネットワーク１０の第１構成要素から第１ポートモジュール２８で受信されたパケットは、第１ポートモジュール２８からストリームメモリ３０に書き込まれ、後に、第２ポートモジュール２８からシステムエリアネットワーク１０の１以上の第２構成要素から通信するために、ストリームメモリ３０から１つ以上の第２ポートモジュール２８へ読み取られる。ポートモジュール２８で受信された又はポートモジュール２８から通知されたパケットに関するものは、ポートモジュール２８で受信された又はポートモジュール２８から通知されたパケット全体、又はポートモジュール２８で受信された又はそこから通知されたパケットの一部分のみを適切ならば含む。同様に、ストリームメモリ３０に書き込まれた又はそこから読み取られるパケットに関するものは、ストリームメモリ３０に書き込まれた又はそこから読み取られるパケット全体、又はストリームメモリ３０に書き込まれる又はそこから読み取られるパケットの一部分のみを適切ならば含む。入力ロジックを含む如何なるポートモジュール２８（入力ポートモジュール）でもストリームメモリ３０に書込可能であり、出力ロジックを含む如何なるポートモジュール２８（出力ポートモジュール）でもストリームメモリ３０から読み取り可能である。特定の実施例では、ポートモジュール２８は、入力ロジック及び出力ロジックの双方を含み、入力ポートモジュール及び出力ポートモジュールの双方になってもよい。特定の実施例では、ポートモジュール２８によるストリームメモリ３０の共用は、行頭(head-of-line)ブロッキングを減らし(従って、スイッチコア２６のスループットを増やし)、スイッチ２６に関連するメモリ条件を減らし、スイッチコア２６が、ポートモジュール２８での負荷状態の変更を一層効率的に処理できるようにする。
【００１２】
図４に示されるように、スイッチコア２６のストリームメモリ３０は論理的にブロック３８に分割され、ブロック３８は更にワード４０に分割される。行はブロック３８を表現し、行と列の交差部はブロック３８のワード４０を表現する。特定の実施例では、ストリーム３８は１５３６個のブロック３８に分割され、各ブロックは２４個のワード３０を含み、１つのワード４０は７２ビットを含む。ストリーム３０は、特定数のブロック３８に分割され、ブロックは特定数のビットを含むワード４０の特定数個に分割されるように記述及び図示されているが、ストリーム３０は適切ないくつのブロック３８にでも分割されてよく、ブロックは適切ないくつのワード４０に分割されてもよく、ワードは適切な何ビットでも含んでよいことを本発明は想定している。パケットサイズはパケット毎に異なってよい。ブロック３８と同程度に多くのビットを含む又はブロック３８より少ないビットを含むパケットが１ブロック３８に書込可能であり、ブロック３８より多くのビットを含むパケットは１より多くのブロック３８に書込可能であり、その２以上のブロックが互いに隣接することは必須でない。ブロックへの書込又はそこからの読込の際に、ポートモジュール２８はブロック３８のどのワード４０からでも開始でき及びブロック３８のどのワード４０への書込も又はどのワードからでも読取を開始できる。ポートモジュール２８は、ブロック３８への書込又は読込の際に、ブロック３８の第１ワード４０に戻るように循環リスト(wrap  around)にしてもよい。ブロック３８は書込動作で又は読込動作でブロック３８を特定するために使用可能なアドレスを有し、書込動作又は読込動作でブロック３８のワード４０を特定するためのオフセットが使用されてもよい。一例として、４１７６ビット長のパケットが想定される。このパケットは５８個のワード４０に書き込まれ、ブロック３８ａのワード４０ｆから始まり、ブロック３８ｄのワード４０ｋに続き、ブロック３８ｂを除いている。書込動作では、ブロック３８ａのワード４０ｆが第１アドレス及び第１オフセットで特定され、ブロック３８ｃのワード４０ｆが第２アドレス及び第２オフセットで特定され、ブロック３８ｄのワード４０ｆが第３アドレス及び第３オフセットで特定される。パケットはブロック３８ａのワード４０ｆから始まり、ブロック３８ｂを除いて、ブロック３８ｄのワード４０ｋに続いてストリームメモリ３０から読み取られる。読込動作では、ブロック３８ａのワード４０ｆが第１アドレス及び第１オフセットで特定され、ブロック３８ｃのワード４０ｆが第２アドレス及び第２オフセットで特定され、ブロック３８ｄのワード４０ｆが第３アドレス及び第３オフセットで特定される。
【００１３】
タグメモリ３２は複数のリンクしたリストを含み、そのリストの各々は例えばセントラル入力制御モジュール３５で次ブロック３８を決定するのに使用可能であり、第１ポートモジュール２８は例えば該次のブロックに書込を行ってもよいし、例えば第２ポートモジュール２８で次ブロック３８を決定し、該次ブロックから第２ポートモジュール２８が読み込んでもよい。タグメモリ３２はセントラルエージェント３４で使用可能なリンクしたリストも含み、セントラルエージェントは、ポートモジュール２８からストリームモジュール３０への書込動作用に、ポートモジュール２８に利用可能にする次ブロック３８を決定する。メモリ３２は複数のエントリを含み、複数のエントリの少なくとも一部の各々は、ストリームメモリ３２のブロック３８に対応する。ストリームメモリ３０の各ブロック３８は対応するエントリをタグメモリ３２の中に有している。タグメモリ３２中のエントリは、タグメモリ３２中の他のエントリに至るポインタを含み、その結果リンクしたリストになる。
【００１４】
（ポートモジュール２８からストリーム３０への書込動作に備えてポートモジュール２８で利用可能な）ブロック３８に対応するタグメモリ３２中のエントリは互いにリンク可能であり、ポートモジュール３８が書き込んでよい次ブロック３８がリンクしたエントリを用いて決定可能になるようにする。
ブロック３８がポートモジュール２８にとって利用可能にされ、そのポートモジュールについてポートモジュール２８からストリームメモリ３０へ処理が行われる場合、ブロック３８に対応するタグメモリ３２内のエントリは、ポートモジュール２８が書込を行ってもよい次ブロック３８を決定するのに使用されるリンクしたリストに結合可能である。
【００１５】
第１ポートモジュール２８が書き込み可能な次ブロック３８を決定するのに使用されるタグメモリ３２でリンクされるリストは、１以上の第２ポートモジュール２８により、読込を行う次ブロック３８を決定することにも使用可能である。一例として、上記のリンクしたリストを考察する。パケットの第１部分は第１ポートモジュール２８から第１ブロック３８に書き込まれ、パケットの第２部分は第１ポートモジュール２８から第２ブロック３８に書き込まれ、パケットの第３及び最終部分は第１ポートモジュール２８から第３ブロック３８に書き込まれる。終了マーク(エンドマーク)は、第３ブロック３８に書き込まれ、パケットの最終部分が第３ブロックに書き込まれていることを示す。第２ポートモジュール２８は第１ブロック３８から読み込み、第２ポートモジュール２８は第１ブロックから読み込み、読み込む次ブロック３８を決定するために第１エントリのポインタを使用する。ポインタは第２ブロック３８に対する第２ポートモジュール２８に関連し、第２ポートモジュール２８が第１ブロック２８からの読み込みを終了すると、第２ポートモジュール２８は第２ブロック３８から読み込む。第２ポートモジュール２８は第２ブロック３８から読み込み、第２ポートモジュール２８は第２エントリのポインタを利用して、読み込む次ブロック３８を決定する。ポインタは第３ブロック３８に対する第２ポートモジュール２８に関連し、第２ポートモジュール２８が第２ブロック３８からの読み込みを終了すると、第２ポートモジュール２８は第３ブロック３８から読み込む。第２ポートモジュール２８は第３ブロックから読み込み、第３ブロック中のエンドマークを利用して、パケットの最終部分が第３ブロック３８に書き込まれていることを確認する。タグメモリ３２中のリンクしたリストは、書き込む次ブロック３８を決定するのに１より多くの第１ポートモジュール２８では使用できないが、読み込む次ブロック３８を決定するために１以上の第２ポートモジュール２８でリンクしたリストは使用可能である。
【００１６】
異なるパケットは異なる宛先を有してよく、パケットがストリームメモリ３０の中でなす順序は先入れ先出し(FIFO)であるとは限らない。一例として、第２パケットが受信されて１以上の第２ブロックに書き込まれた後に、第１パケットが受信されて１以上の第１ブロック３８に書き込まれるとする。第２パケットはストリームメモリから第１パケットより先に読み取り可能であり、第２ブロック３８は第１ブロック３８より前に別の書込動作に利用可能になる。特定の実施例では、パケットが書き込まれていたストリームメモリ３０のブロックは、パケットの指定されたポートモジュール２８である全てのポートモジュール２８によりパケットがブロック３８から読み取られた後に、ポートモジュール２８からブロック３８への書込動作の間に速やかにポートモジュール２８に利用可能にできる。パケットの指定されたポートモジュール２８は、スイッチコア２６からのダウンストリームで、システムエリアネットワーク１０の構成要素に結合されるポートモジュール２８を含み、それはパケットの最終的な又は中間的な宛先である。
【００１７】
クレジットを用いて書込動作を管理することは、特有の利点をもたらす。例えば、クレジットを利用することは、スイッチコア２６によるカットスルー転送を促すことができ、遅延を減らし、スループットを向上させ、スイッチコア２６に付随するメモリ条件を緩和する。クレジットを利用して書込動作を管理することは、行頭ブロッキング(head-of-line  blocking)を除去し、ポート２８での負荷条件の変更に応じてポートモジュール２８の中でメモリリソースを分散する多大な柔軟性をもたらす。クレジットはストリームメモリ３０のブロック３８に対応し、ブロック３８に書き込むためにポートモジュール２８により使用可能である。クレジットは、クレジットのプールの中からポートモジュール２８に割当可能であり、セントラルエージェント３４により管理される。ポートモジュール２８に割り当てられるクレジットに関するものは、そのクレジットに対応するブロック３８を含み、そのクレジットは、ポートモジュール２８がポートモジュール２８からブロック３８へ（及びその逆に）書込動作をするのに利用可能にされるものである。
【００１８】
クレジットのプールの中にあるクレジットは、どのポートモジュール２８にも割り当てることができ、何らかの特定のポートモジュール２８に割り当てることは必須でない。ポートモジュール２８はポートモジュール２８に利用可能なクレジットだけを利用することができ、他のポートモジュール２８に利用可能なクレジット又はクレジットのプールの中にあるクレジットを利用することはできない。クレジットがポートモジュール２８に割り当てられており且つポートモジュール２８がそのクレジットを未使用の場合に、クレジットはポートモジュール２８にとって利用可能である。ポートモジュール２８に割り当てられているクレジットは、ポートモジュール２８がそのクレジットを利用するまでの間ポートモジュール２８にとって利用可能である。クレジットは一度に１つより多くのポートモジュール２８に割り当てることはできず、クレジットは同時に１つより多くのポートモジュール２８に利用可能にはならない。特定の実施例では、第１ポートモジュール２８がクレジットに対応するブロック３８にパケットを書き込むためにクレジットを利用する場合、そのパケットの指定されたポートモジュール２８の全てがブロック３８からパケットを読み込んだ後、そのクレジットはクレジットのプールに速やかに戻される。
【００１９】
ICCA３３はセントラルエージェント３４及びセントラル入力制御モジュール３５を含む。セントラルエージェント３４はクレジットのプールの中からクレジットをポートモジュール２８に割り当てるよう機能する。一例として、セントラルエージェント３４は、ポートモジュール２８に対する所定数のクレジットの初期割当を行うことができる。セントラルエージェント３４はこのクレジットの初期割当を、例えばスイッチコア２６の起動時に又はスイッチコア２６がリセットされたことに応じて、ポートモジュール２８に対して行うことができる。別の例として、セントラルエージェント３４はポートモジュール２８が使用した別のクレジットを元に戻すようにポートモジュール２８にクレジットを割り当てることもできる。特定の実施例では、ポートモジュール２８が第１クレジットを利用する場合、ポートモジュール２８が第１クレジットを利用したことをセントラルエージェント３４に通知し、ポートモジュール２８が第１クレジットを利用したことをポートモジュール２８がセントラルエージェント３４に通知したことに応答して、例えばポートモジュール２８で使用されているブロック３８の数が利用可能な限界に達していなかった又は越えていなかったならば、セントラルエージェント３４はポートモジュール２８に第２クレジットを割り当てて第１クレジットを返す。特定の実施例では、セントラルエージェント３４は、パケットの受信後にポートモジュール２８で要求されるまで、ICCA３３のセントラル入力制御モジュール３５にポート割当クレジットを格納することができる。
【００２０】
ポートモジュール２８で使用されるブロック３８に関連するものは、ポートモジュール２８によりパケットが書き込まれるブロック３８を含み、且つ或るブロック３８も含む。その或るブロックからは、パケットの指定されたポートモジュール２８の全ては未だパケットを読み取ってないものである。適用可能な限界に至るまで、ポートモジュール２８で使用されるクレジットを置換することで、ポートモジュール２８に利用可能なクレジット数は比較的に一定に維持することができ、ポートモジュール２８での負荷条件が増えた場合、ポートモジュール２８での負荷条件の増加に応じて、より多くのブロック３８がポートモジュール２８に供給可能である。ポートモジュール２８で使用されるブロック数について所定の状況で或る制限が適用され、ポートモジュール２８が過剰に多くのブロック３８を利用することを防ぎ、過剰に多くの共用メモリリソースを消費してしまうことを不正でもよい。その制限はクレジットのプールの中のクレジット数に基づいて動的に制御可能である。クレジットのプールの中のクレジット数が減ると、その制限も減少する。どのクレジットがポートモジュール２８に割り当てられるかを決めるプロセス及び制限の計算は、スイッチコア２６を介してパケットのクリティカルパスの外で実行可能であり、そうすることでスイッチコア２６のスイッチング速度を増やせる。
【００２１】
タグメモリ３２のリンクしたリストは、ポートモジュール２８に割当可能な次のクレジットを決めるためにセントラルエージェント３４で使用可能である。リンクしたリストの要素(エレメント)は、ブロック３８に対応するタグメモリ３２中にエントリを含み、そのエントリはクレジットのプールの中にあるクレジットに対応する。一例として、クレジットのプールの中にある４つのクレジットを考察する。第１クレジットは第１ブロック３８に対応し、第２クレジットは第２ブロック３８に対応し、第３クレジットは第３ブロック３８に対応し、第４クレジットは第４ブロック３８に対応する。第１ブロック３８に対応するタグメモリ３２内の第１エントリは第２ブロック３８を指すポインタを含み、第２ブロック３８に対応するタグメモリ３２内の第２エントリは第３ブロック３８を指すポインタを含み、第３ブロック３８に対応するタグメモリ３２内の第３エントリは第４ブロック３８を指すポインタを含む。セントラルエージェント３４は第１クレジットをポートモジュール２８に割り当て、セントラルエージェント３４は第１クレジットをポートモジュール２８に割り当てながら、第１エントリ内のポインタを利用して、ポートモジュール２８に割り当てる次のクレジットを確認する。ポインタはセントラルエージェント３４に第２ブロック３８を示し、セントラルエージェント３４がポートモジュール２８への第１クレジットの割当を終えると、セントラルエージェント３４は第２クレジットをポートモジュール２８に割り当てる。セントラルエージェント３４は第２クレジットをポートモジュール２８に割り当てながら、セントラルエージェント３４は第２エントリ内のポインタを利用して、ポートモジュール２８に割り当てる次のクレジットを確認する。ポインタはセントラルエージェント３４に第３ブロック３８を示し、セントラルエージェント３４がポートモジュール２８への第２クレジットの割当を終えると、セントラルエージェントは第３クレジットをポートモジュール２８に割り当てる。セントラルエージェント３４は第３クレジットをポートモジュール２８に割り当てながら、セントラルエージェント３４は第３エントリ内のポインタを利用して、ポートモジュール２８に割り当てる次のクレジットを確認する。ポインタはセントラルエージェント３４に第４ブロック３８を示し、セントラルエージェント３４がポートモジュール２８への第３クレジットの割当を終えると、セントラルエージェントは第４クレジットをポートモジュール２８に割り当てる。
【００２２】
ブロック３８に対応するクレジットがクレジットのプールに戻されると、ブロック３８に対応するタグメモリ３２内のエントリがリンクしたリストの末尾に加えられ、セントラルエージェント３４はそのリストを利用してポートモジュール２８に割り当てる次のクレジットを確認する。一例として、上記のリンクしたリストを考察する。第４エントリがリンクしたリストの最終要素であった場合に、第５ブロック３８に対応する第５クレジットがクレジットのプールに加えられる場合、第４エントリは、第５ブロック３８に対応するタグメモリ３２内の第５エントリを指すポインタを含むよう修正される。タグメモリ３２内のエントリ各々はストリームメモリ３０のブロック３８に対応するので、ブロック３８を指すポインタもタグメモリ３２内のエントリを指す。
【００２３】
ポートモジュール２８が到来するパケットを受信すると、ポートモジュール２８は、パケットをストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能か否かを確認する。ポートモジュール２８は、例えば、ポートモジュール２８が書込に利用可能なクレジット数を示すセントラルエージェント３４のカウンタを読むことで、その確認を行う。或いはポートモジュール２８はこの情報をセントラルエージェント３４から自動的に受信してもよい。特定の実施例では、パケットをストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能であった場合に、ポートモジュール２８は１つ以上のクレジットを利用してパケットをストリームメモリ３０に書き込むことができる。特定の実施例では、パケットをストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能でなかった場合に、ポートモジュール２８はそのパケットを入力バッファに書き込み、その後に、パケットをストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能になったときに、１つ以上のクレジットを利用してパケットをストリームメモリ３０に書き込んでもよい。ポートモジュール２８がパケットを入力バッファに書き込む代わりに、ポートモジュール２８はそのパケットをドロップ(drop)することができる。特定の実施例では、パケットの一部分をストリームメモリ３０に書き込む程度にしか十分でないクレジットがポートモジュール２８に利用可能であった場合に、ポートモジュール２８は、１つ以上のクレジットを用いてストリームメモリ３０に書き込み可能なパケットの一部をストリームメモリに書き込み、パケットの１つ以上の他の部分を入力バッファに書き込むことができる。以後、パケットの他の部分の１つ以上をストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能になった場合に、ポートモジュール２８は、１つ以上のクレジットを利用してパケットの該他の部分の１つ以上をストリームメモリ３０に書き込むことができる。特定の実施例では、カットスルーフォワーディングと同様な、遅延したカットスルーフォワーディングが、ストアアンドフォワード法を上回る１つ以上の利点をもたらす（例えば、待ち時間の減少、メモリ条件の緩和及びスループットの向上等である。）。パケットをストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能であるか否かを確認するポートモジュール２８に関するものは、適切ならば、パケット全体をストリームメモリ３０に書き込むこと、パケットの内受信した部分だけをストリームメモリ３０に書き込むこと、又はパケットの少なくとも一部分をストリームメモリ３０に書き込むことに十分なクレジットがポートモジュール２８に利用可能か否かを確認するポートモジュール２８を含む。
【００２４】
特定の実施例では、到来するパケット長はパケット全体が受信されるまで分からない。このような実施例では、ポートモジュール２８で受信される到来するパケットをストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能か否かを確認するために、（適用可能な一群の規格に従う）ある最大伝送単位が使用可能である。電気電子技術者協会(IEEE)で公表されている一群の規格(スタンダード)によれば、イーサーネットフレームの最大伝送単位(MTU:  Maximum  Transmission  Unit)は1500バイトである。一群の規格によれば実際上イーサーネットフレームのMTUは9000バイトである。非限定的な具体例として、到来するパケットの一部分しか受信できないポートモジュール２８を考察する。パケット全体をストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能か否を確認するために、ポートモジュール２８は(適用可能な一群の規格に従う)MTUを使用する。ポートモジュール２８は、ポートモジュール２８に利用可能なクレジット数とMTUを比較することで、この確認を行うことができる。パケット全体をストリームメモリ３０に書き込むのに十分なクレジットがポートモジュール２８に利用可能であったならば、ポートモジュール２８は、１つ以上のクレジットを利用して、パケットの受信した部分をストリームメモリ３０に書き込み、ポートモジュール２８がパケットの１つ以上の他の部分を受信すると、１つ以上のクレジットを用いてパケットの１つ以上の他の部分をストリームメモリ３０に書き込むことができる。
【００２５】
上述したように、セントラルエージェント３４は、カウンタを利用してポートモジュール２８に利用可能なクレジット数をモニタし、その情報をポートモジュール２８に自動的に与える又はその情報をポートモジュール２８が要求した後に与えることができる。セントラルエージェント３４がポートモジュール２８にクレジットを割り当てると、セントラルエージェント３４はカウンタを或る量だけ増やし(インクリメント)、ポートモジュール２８がクレジットを使用したことをポートモジュール２８がセントラルエージェント３４に通知すると、セントラルエージェント３４はそのカウンタを或る量だけ減らす(デクリメント)。カウンタの現在値は、ポートモジュール２８に利用可能な現在のクレジット数を反映し、セントラルエージェント３４は、そのカウンタを利用して、１つ以上のクレジットをポートモジュール２８に割り当てるか否かを判定する。セントラルエージェント３４は、第２カウンタを用いてポートモジュール２８で使用されているブロック３８の数をモニタすることもできる。ポートモジュール２８がブロック３８に書き込みを行ったことをポートモジュール２８がセントラルエージェント３４に通知した場合、セントラルエージェント３４は第２カウンタを或る量だけ増やし、ポートモジュール２８が書き込んだブロック３８が解放された場合であってブロック３８に対応するクレジットがクレジットのプールに戻された場合、セントラルエージェントは第２カウンタを或る量だけ減らす。追加的に又は代替的に、セントラル入力制御モジュール３５は自身のカウンタを用いてポートモジュール２８に利用可能なクレジット数をモニタしてもよい。
【００２６】
ポートモジュール２８に利用可能なクレジット数を一定に維持し、ポートモジュール２８で使用されるブロック３８の数を制限することができる。この制限は、ポートモジュール２８での、１つ以上の他のポートモジュール２８での又はそれら双方の負荷状態の変化に応じて変更可能である。特定の実施例では、ポートモジュール２８で利用可能なブロック３８の数は、動的な閾値（この閾値はクレジットのプールの中にあるクレジット数の関数である）に応じて制限される。特定の実施例では、アクティブなポートモジュール２８は、１つ以上のブロック３８を利用しているポートモジュール２８を含む。ブロック３８を利用しているポートモジュール２８に関連するものは、ストリームメモリ３０からパケットの指定された全ポートへは読み取られていない少なくとも１つのパケットをストリームメモリ３０に書き込むポートモジュール２８を含む。動的な閾値は、次式を用いて計算されるクレジットプール中のクレジット数の部分を含むことができ、ここでαはアクティブであるポートモジュール２８の数に等しく、ρはパラメータである：
【数１】
2007325271.tif 000003
ポートモジュール２８で使用される多数のブロック３８各々が適用可能な制限（上記の動的な閾値を含んでもよい）を超える場合に、セントラルエージェント３４がクレジットをポートモジュール２８に割り当てることを禁止するため、クレジットプール中に或るクレジット数が確保されてもよい。クレジットプール中で１つ以上のクレジットを確保することは、アクティブなポートモジュール２８の数の変化に付随する過度的な期間の間に衝撃を緩和する。確保されるクレジットの割合は次式を用いて算出され、ここでαはアクティブであるポートモジュール２８の数に等しく、ρはパラメータである：
【数２】
2007325271.tif 000004
【００２７】
上記の数式によれば、１つのポートモジュール２８がアクティブであり、ρが２の場合、セントラルエージェント３４はクレジットの１／３を予約し、クレジットの高々２／３をポートモジュール２８に割り当ててよい。２つのポートモジュール２８がアクティブであり、ρが１の場合、セントラルエージェント３４はクレジットの１／３を予約し、クレジットの高々１／３をアクティブなポートモジュール２８各々に割り当ててよい。１２個のポートモジュール２８がアクティブであり、ρが0.5の場合、セントラルエージェント３４はクレジットの２／１４を予約し、クレジットの高々１／１４をアクティブなポートモジュール２８各々に割り当ててよい。ポートモジュール２８で使用されるブロック３８の数に特定の制限が適用されるように説明されているが、ポートモジュール２８で使用されるブロック３８の数に適用される適切な如何なる制限をも本発明は想定している。
【００２８】
特定の実施例では、ICCA３３のセントラル入力制御モジュール３５は、セントラルエージェント３４により特定のポートモジュール２８に割り当てられたクレジットを格納し、リンクしたリストを用いてポート割当クレジット(port-allocated  credit)を管理することができる。ポートモジュール２８がセントラル入力制御モジュール３５からのクレジットを要求した後に、セントラル入力制御モジュール３５はポート割当クレジットを特定のイネーブルされているポートモジュール２８に転送することができる。特定の実施例では、ポート割当クレジットは、スイッチングモジュール３７を介してイネーブルされているポートモジュール２８にセントラル入力制御モジュール３５により転送される。ポートがディセーブルされると、セントラル入力制御モジュール３５及びスイッチングモジュール３７は共に、ディセーブルされたポートに割り当てられていたクレジットを収集及び解放してもよい。図示の例はICCA３３内のセントラル入力制御モジュール３５を含んでいるが、別の実施例では、セントラル入力制御モジュール３５は、適切な如何なる場所にあってもよい（例えば、セントラルエージェント３４内に、又はポートモジュール２８自身の中にあってもよい。）。
【００２９】
イネーブルされたポートに関連する第１ポートモジュール２８がパケットをストリームメモリ３０に書き込む場合、第１ポートモジュール２８は、パケットのヘッダ中の情報（例えば、１つ以上の宛先アドレス）をスイッチングモジュール３７を介してルーティングモジュール３６に通知し、ルーティングモジュール３６は、その情報を用いて、パケットの指定されたポートモジュール２８である１つ以上の第２ポートモジュール２８を確認することができる。第１ポートモジュール２８は、パケットが書き込まれる第１ブロック３８のアドレスと、ストリームメモリ３０からパケットを読み取るために第２ポートモジュール２８で共に使用可能なオフセットとをルーティングモジュール３６へ通知する。このアドレスとオフセットの組み合わせ（又は、パケットの内容が格納されている場所を特定するのに使用される他の何らかの情報）は、「ポインタ」として言及される。ルーティングモジュール３６は、パケットのヘッダからの情報及び１つ以上のルーティングテーブルを用いて第２ポートモジュール２８を確認することができ、第２ポートモジュールを確認した後に、第１ブロック３８に対するポインタを各第２ポートモジュール２８に通知し、第２ポートモジュール２８は以下で詳細に説明される出力キューを加えることができる。特定の実施例では、ルーティングモジュール３６はICCA３３を介して第２ポートモジュール２８に情報を通信することができる。
【００３０】
特定の実施例では、スイッチングモジュール３７はポートモジュール２８とルーティングモジュール３６，ICCA３３双方との間に結合され、ポートがイネーブルにされた場合に、ポートモジュール２８及びICCA３３又はルーティングモジュール３６間での情報通信を支援する。ポートがディセーブルされると、スイッチングモジュール３７は、ディセーブルされたポートに関連するポート割当クレジットの収集及び解放を促すように動作する。１つのスイッチングモジュール３７が図示されているが、スイッチングモジュール３７は適切なスイッチングモジュールをいくつでも表現してよいことに留意を要する。更に、スイッチングモジュール３７は適切ないくつのポートモジュール２８によって共有されてもよい。更に、スイッチングモジュール３７の機能はスイッチの１つ以上の他の構成要素に組み込まれてもよい。
【００３１】
出力ポートモジュール２８は１つ以上の出力キューを含むことができ、出力キューは、ストリームメモリ３０に書き込まれたパケットのポインタを整列させるのに使用され、関連するポートモジュール２８を介してスイッチコア２６から通知される。パケットがストリームメモリ３０に書き込まれると、ルーティングモジュール３６は指定されたポートモジュールを識別してもよく、パケットに関連するポインタは各ポートモジュール２８の出力キューに加えられてもよく、そのポートモジュールからパケットが通知される。指定されたポートモジュール２８の出力キューは多種多様な変数に関連することができる。
【００３２】
特定の実施例では、ポートモジュール２８は１つ以上のリンクしたリストを含むことの可能なメモリ構造を含み、ポートモジュール２８は、１つ以上のレジスタと共に、ストリームメモリ３０から読み取る次のパケットを決定するためにそのリストを使用することができる。メモリ構造は複数のエントリを含み、複数のエントリの少なくとも一部の各々は、ストリームメモリ３０のブロック３８に対応する。ストリームメモリ３０の各ブロック３８はメモリ構造における対応するエントリを有する。メモリ構造中のエントリは、メモリ構造中の他のエントリを指すポインタを含むことができ、その結果リンクしたリストになる。ポートモジュール２８は１つ以上のレジスタを含み、そのレジスタを利用してポートモジュール２８はストリームメモリ３０から読み取る次のパケットを決定する。レジスタは、読み取りポインタ、書き込みポインタ及びオフセットを含む。読み取りポインタは第１パケットが書き込まれている第１ブロック３８を指し、書き込みポインタは第２パケット（第１パケットと同じパケットでもよいし、異なるパケットでもよい）が書き込まれている第１ブロック３８を指し、オフセットは第２パケットが書き込まれている第１ワード４０を示すことができる。メモリ構造中のエントリの各々はストリームメモリ３０のブロック３８に対応するので、ブロック３８を指すポインタもそのメモリ構造中のエントリを指す。
【００３３】
ポートモジュール２８は読み取りポインタを用いて、ストリームメモリ３０から読み取る次のパケット（上記の「第１」パケットに対応する。）を決定することができる。ポートモジュール２８は書き込みポインタを用いて、オフセットを書き込むためのメモリ構造中の次のエントリを決定することができる。ポートモジュール２８はオフセットを用いてブロック３８のワード４０を決定することができ、以下に説明されるようにそのブロック３８から読み取りを開始する。ポートモジュール２８は読み取りポインタ及び書き込みポインタを用いて、１より多くのパケットが出力キューの中にあるか否かを確認することもできる。出力キューがからであった場合及び書き込みポインタと読み取りポインタの双方が同じブロック３８を指していた場合、その出力キューには唯１つのパケットしかない。出力キューに唯１つのパケットしかなかった場合、ポートモジュール２８は、ストリームメモリ３０から読み取る次のパケットを決定し、メモリ構造にアクセスせずにストリームメモリ３０から次のパケットを読み取ることができる。
【００３４】
出力キューにパケットがなかった場合であって第１パケットが出力キューに加わっていたならば、（１）レジスタ中の書き込みポインタは、第１パケットが書き込まれていた第１ブロック３８を指すように修正され、（２）オフセットは、第１パケットが書き込まれていた第１ワード４０を示すように修正され、（３）読み取りポインタも、第１パケットが書き込まれていた第１ブロック３８を指すように修正される。ポートモジュール２８がストリームメモリ３０から第１パケットを読み取る前に、第２パケットが出力キューに加わっていたならば、（１）第２パケットが書き込まれていた第１ブロックを指すように、書き込みポインタは修正され、（２）オフセットは、第１パケットが書き込まれていた第１ブロック３８に対応するメモリ構造中の第１エントリに書き込まれ、第２パケットが書き込まれていた第１ワード４０を示すように修正され、（３）第１エントリのポインタは、第２パケットが書き込まれていた第１ブロック３８を指すように修正される。第２パケットが出力キューに加えられた後に、読み取りポインタが第１パケットの書き込まれていた第１ブロック３８を依然として指すように、読み取りポインタは不変のまま残される。以下で詳細に説明されるように、ポートモジュール２８がストリームメモリ３０から出力キュー内のパケットを読み取る場合に、読み取りポインタは変更される。ポートモジュール２８が第１パケット及び第２パケットをストリームメモリ３０から読み取る前に、第３パケットが出力キューに加えられるならば、（１）書き込みポインタは、第３パケットが書き込まれていた第１ブロック３８を指すように修正され、（２）オフセットは、第２パケットが書き込まれていた第１ブロック３８に対応するメモリ構造中の第２エントリに書き込まれ、第３パケットが書き込まれていた第１ワードを示すように修正され、（３）第２エントリのポインタは、第３パケットが書き込まれていた第１ブロックを指すように修正される。第３パケットが出力キューに加えられた後に、読み取りポインタが第１パケットの書き込まれていた第１ブロック３８を依然として指すように、読み取りポインタは再び不変のまま残される。ポートモジュール２８は、ストリームメモリ３０から読み取る次のパケットを決定するために出力キューを使用することができる。
【００３５】
ポートモジュール２８が１つより多くの出力キューを含んでいたならば、その出力キューの間で仲裁(arbitration)を行うアルゴリズムが使用されてもよい。複数の出力キューの間での仲裁は、ストリームメモリ３０から読み取る次のパケットを決定するために使用する次の出力キューを決定することを含んでもよい。複数の出力キューの間での仲裁は、第２出力キューを使用してストリームメモリ３０から読み取る次のパケットを決定する前に、第１出力キューの中でストリームメモリ３０からいくつのパケットを読み取るかを決定することを含んでもよい。本発明は、複数の出力キューの間における仲裁を行う適切な如何なるアルゴリズムをも想定している。非限定的な一例として、ポートモジュール２８の複数の出力キューの中で仲裁を行うアルゴリズムに従って、ポートモジュール２８は空でない出力キューを巡回式にアクセスする。巡回式では、ポートモジュール２８は所定の順序で出力キューを連続的にアクセスし、ポートモジュール２８は、出力キューにアクセスすると、ストリームメモリ３０から出力キュー内の１つ以上のパケットを読み取る。ポートモジュール２８が巡回式に出力キューから読み取るパケット数は、同じ巡回式の中でポートモジュール２８の１つ以上の他の出力キュー各々からポートモジュール２８が読み取るパケット数と同じであってもよいし異なっていてもよい。特定の実施例では、巡回式に出力キューから読み取り可能なパケット数は、データ量を規定する数量値に基づいており、その数量値は、出力キューの中でパケットが少なければ、出力キューから、より多くのパケットが読み取り可能であり、出力キューの中でパケットが多ければ、出力キューから、より少ないパケットが読み取り可能であることを示し、ポートモジュール２８の出力リンクの公平な共有を促す。
【００３６】
上述したように、特定の入力ポートから特定の出力ポートへスイッチを介してパケットはルーティングされる。例えば、入力ポートモジュール２８は到来するパケットを受信し、そのパケットをストリームメモリ３０に保存し、パケットに関連する情報（例えば、ヘッダ情報）をルーティングモジュール３６に転送する。ルーティングモジュール３６は、例えば、ルーティングモジュール３６が受信したパケットに関連する情報に基づいて、特定の出力ポートに特定のパケットを割り当てるためにテーブルを利用してもよい。
【００３７】
特定の実施例では、ルーティングモジュール３６がパケットをルーティングするのに使用するテーブルは、転送データベースを含んでもよいし、転送データベースに含まれていてもよいし、或いは転送データベースに関連付けられていてもよい。レイヤー２イーサーネットスイッチにおける転送データベースはテーブルを有し、そのテーブルは、様々な媒体アクセス制御(MAC)アドレスに関連するルーティング情報を格納する。ルーティング情報は、典型的には、スイッチの１つ以上の出力ポート及び他の情報（例えばタイムスタンプや様々なフラグ等）を含む。MACアドレスは例えばそのパケットの宛先アドレスを特定してもよい。MACアドレスは典型的には大きい（例えば、４８ビット）。従って転送データベースはハッシュ関数を利用して、各MACアドレスに対するより小さな固有の識別子を生成する。転送データベースは、ルーティングモジュール３６に関連付けられなくてもよく、パケットをルーティングするスイッチの他の適切な何らかの構成要素によって使用されてもよいことに留意すべきである。
【００３８】
上記のパラメータに加えて、転送データベースは、パケットが関連付けられている仮想ローカルエリアネットワーク(VLAN:  Virtual  Local  Area  Network)に関するルーティング情報を含んでもよい。VLANは論理的には独立なローカルエリアネットワークであり、物理的なローカルエリアネットワークに対応してもしなくてもよい。ネットワーク装置は、複数のVLANの一部でもよいし或いはたった１つのVLANの一部でもよいし、スイッチは１つ以上のVLANをサポートすることができる（しばしば、１つ以上のポートを特定のVLANにささげる。）。VLANが通信システムに導入されると、スイッチ指定部は、パケットに含まれている（或いはパケットに関連する）VLAN識別子(VLAN-ID)に基づいてパケットをルーティングすることができるスイッチを指定する要請を受ける。VLAN-IDは典型的には１２ビットを含み、ネットワーク中の各VLANは固有のVLAN-IDに関連付けられてよい。VLANに関連するパケットは、VLANの固有の識別子をそれらのヘッダに含めてもよい。例えば、パケットがVLAN-IDを含まず、入力ポートがVLAN-IDに関連している場合、一部のパケットはスイッチの特定の入力ポートで受信されることでVLAN-IDに関連付けられてよい。VLAN-IDに基づいてパケットをルーティングできるスイッチの要請に応じるため、スイッチ指定部はその要請を満たすように様々な転送データベース設計事項を導入する。
【００３９】
図５及び図６は転送データベース例１００，２００の一部を示す。転送データベース１００は、IEEE802.1Q規格で言及されているように、概して共有VLANラーニング(SVL:  Shared  VLAN  Learning)転送データベースと言及されてよい。SVLでは、スイッチの転送データベースは、ルーティングの目的に関しては、一群のVLAN中の複数のVLANを区別しない。一般に転送データベース２００は、IEEE802.1Q規格で言及されているように、独立VLANラーニング(IVL:  Independent  VLAN  Learning)と言及されてよい。IVLでは、スイッチの転送データベースは、ルーティングの目的でもVLANの間を区別する。転送データベース１００，２００は一般にSVLのみの及びIVLのみのデータベースにそれぞれ関連してもよい。しかしながら、転送データベースが一群のVLANの中の複数のVLANを区別しないが、パケットをルーティングするためのVLANの複数群を区別するように、SVL及びIVLが組み合わされてもよい。
【００４０】
図５の転送データベース１００は、カラム(列)１１０，１２０と複数のロー(行)１３０とを有する。カラム１１０の各エントリは固有の識別子を有し、その識別子は、ハッシュ関数を特定のMACアドレスに適用した結果物である。上述したように、一般にMACアドレスは大きく、従って転送データベースはハッシュ関数を用いて各MACアドレスについてより小さな固有の識別子(ハッシュ結果)を生成する。カラム１１０内の値はそれらの識別子を表現する。代替実施例では、ハッシュ関数が特定のMACアドレス及びVLAN-IDに適用され、固有の識別子を生成してよいことに留意を要する。これらの実施例では、ハッシュ関数は、VLAN-IDを実際上無視する固有の識別子を生成する（即ち、その固有の識別子はVLAN-IDを区別しない。）。或いは、ハッシュ関数は、ゼロに設定されたVLAN-IDを入力することで、VLAN-IDを実際上無視する固有の識別子を生成してもよい。VLAN-IDはハッシュ関数によっては考察されないので（或いは、ハッシュ関数によっては実際上無視されるので）、データベース１００はMACアドレスのみのハッシュとしてカラム１１０内の値を示す。
【００４１】
カラム１２０は特定の出力ポートを識別し、その出力ポートから、カラム１１０の特定の固有の識別子(即ち、MACアドレス)を伴うパケットが送信される(ポートベクトル)。かくて本実施例では「ハッシュ(addr1)」で表現される固有の識別子と共にパケットは出力ポート１から送信される。「ハッシュ(addr2)」で表現される固有の識別子と共にパケットは出力ポート２から送信される。図示のデータベース１００のカラム１１０の固有の識別子各々に、異なる出力ポートが対応しているが、固有の識別子各々は適切な何らかの出力ポートに対応し、複数の固有の識別子は同じ出力ポートに対応してもよい。ロー１３０はカラム１１０の固有の識別子各々に対応するエントリであり、そのエントリはテーブル中のロー各々に対するインデックス(指標)として機能する。データベース１００は２つのカラムしか示していないが、データベース１００は適切なカラムをいくつでも含んでよく、例えば、タイムスタンプ情報や様々なフラグを格納するカラムを含んでよいことに留意すべきである。
【００４２】
動作時にあっては、パケットがスイッチで受信された後に、スイッチ内のハッシュテーブルが、パケットのMACアドレス（及び選択的にVLAN-ID）を含むパケットヘッダ情報を受信する。ハッシュテーブルは、転送データベース１００及び／又はルーティングモジュール３６を含んでもよいし、それらに含まれてもよいし、或いはそれらに関連付けられていてもよい。ハッシュテーブルは、インデックスを作成するためにハッシュ関数をパケットのMACアドレスに適用する。代替実施例では、パケットのVLAN-IDがハッシュ関数に入力されてもよいが、本実施例では、ハッシュ関数はVLAN-ID入力を事実上無視するインデックスを生成する。或いは、ハッシュ関数は、ゼロに設定されたVLAN-IDを入力することでVLAN-IDを事実上無視するインデックスを生成してもよい（即ち、インデックス＝ハッシュ(MACアドレス,0)）。インデックスは、その後に、データベース１００のカラム１１０内のインデックスに対応する識別子を調べるためにハッシュテーブルにより使用される。カラム１１０内で識別子を発見した後、ハッシュテーブルは同じロー１３０のカラム１２０でポートベクトルを特定する。これによりハッシュテーブルは、パケットが送信される出力ポートを特定できる。そして特定された出力ポートからパケットが送信される。上述したように、転送データベース例１００は、特定のパケットに関連するVLAN-IDを考慮していない。かくて、同じMACアドレスを有するが異なるVLANに関連するパケットは、SVLのみのデータベース例１００の同じポートに必ず転送されるようになる。
【００４３】
図６の転送データベースは、カラム２１０，２２０及び複数のロー２３０を有する。カラム２１０のエントリは固有の識別子を有し、その識別子はハッシュ関数を特定のMACアドレス及びVLAN-IDに適用した結果物である。従って、同じMACアドレスであっても、MACアドレス及びVLAN-IDの固有の組み合わせ各々について異なる固有の識別子が生じる。例えば、ロー２３０ａ，２３０ｂでは、同じMACアドレスが異なる固有の識別子を有し、それらは別様に関連するVLAN-IDについて「ハッシュ(addr1,vid1)」及び「ハッシュ(addr1,vid2)」で表現されている。しかしながら、特定の場合には、MACアドレスが各々関連するVLAN-IDについて同じ固有の識別子を（例えば、ハッシュ関数がそのように機能するならば）持ってもよいことに留意すべきである。
【００４４】
カラム２２０は特定の出力ポートを識別し、カラム２１０の特有の識別子と共にパケットがその出力ポートから送信される(ポートベクトル)。かくて本実施例では、「ハッシュ(addr1,vid1)」で表現される特有の識別子を有するパケットは、出力ポート１から送信される。「ハッシュ(addr2,vid2)」で表現される特有の識別子を有するパケットは、出力ポート２から送信される。図示のデータベース２００ではカラム２１０の固有の識別子各々に異なる出力ポートが対応しているが、固有の識別子各々は適切な如何なる出力ポートに対応してもよく、複数の固有の識別子が同じ出力ポートに対応してもよい。ロー２３０はカラム２１０の固有の識別子各々に対応するエントリであり、テーブル中で各ローに対するインデックスとして機能する。データベース２００は２つのカラムしか示していないが、データベースは適切なカラムをいくつでも含んでよく、例えばタイムスタンプ情報や様々なフラグを格納するカラムを含んでもよいことに留意すべきである。
【００４５】
動作時にあっては、パケットがスイッチで受信された後に、スイッチ内のハッシュテーブルは、パケットのMACアドレス及びVLAN-IDに関連する情報を受ける。ハッシュテーブルは、転送データベース２００及び／又はルーティングモジュール３６を含んでもよいし、それらに含まれてもよいし、或いはそれらに関連付けられていてもよい。ハッシュテーブルは、ハッシュ関数をパケットのMACアドレス及びVLAN-IDに適用し、インデックスを生成する。インデックスは、データベース２００のカラム２１０内のインデックスに対応する識別子を探索するためにハッシュテーブルにより使用される。カラム２１０内の識別子を発見した後に、ハッシュテーブルは同じロー２３０のカラム２２０内のポートベクトルを特定する。これによりハッシュテーブルは、パケットが送信されるべき出力ポートを特定できる。そしてパケットは特定された出力ポートから送信される。上述したように、例示の転送データベース２００は、パケットを出力ポートにルーティングする特定のパケットに関連するVLANを考慮に入れている。
【００４６】
データベース例２００（及びSVL-IVLの組み合わせデータベース）と同様に、典型的な転送データベースは、パケットのMACアドレス及びVLAN-IDのハッシュを用いることでVLAN-IDを考慮し、特定の出力ポートに関連する識別子を生成してもよい。不都合なことに、これら一般のスイッチの多くで使用されているハッシュは大きなハッシュ結果を生み出し、転送データベースリソースを非効率的に消費してしまうかもしれない。データベースリソースを非効率的に消費することは、転送データベースで格納可能なエントリ数を制限し、及び／又は転送データベースに必要なサイズを大きくしてしまう。より多くのMACアドレス及びVLANがネットワークに加えられ続けるにつれて（及び様々なパケット特性がルーティングパケットで転送データベースリソースによって考察される場合に）、転送データベースリソースの効率的な利用が望まれる。かくてメモリリソースを更に効率的に使用できる別の転送データベースが望まれる。
【００４７】
図７は本発明の一実施例による別の転送データベース例３００を示す。転送データベースリソース３００はカラム３１０，３２０及び複数のロー３３０を有する。カラム３１０の各エントリは固有の識別子を有し、その識別子は、ハッシュ（即ち、関数）を特定のMACアドレスに及びマスクされたVLAN-ID(f(VID)で表現される)に適用することによる結果物である。以下で説明されるように、マスクされたVLAN-IDを利用することで、データベース３００にエントリを格納するのに要するメモリリソースを減らすことができる。なぜなら、マスクされたVLAN-IDはマスクされてないVLAN-IDよりも小さいからである。別様に関連するマスクされたVLAN-ID値各々について、異なる固有の識別子がカラム３１０の中で同じMACアドレスに関連する。例えば、ロー３３０ａ，３３０ｂでは、同じMACアドレスが別個の固有の識別子に関連し、別個に関連するマスクされたVLAN-ID各々について「ハッシュ(addr1,f(vid1))」及び「ハッシュ(addr1,f(vid2))」でそれぞれ表現されている。しかしながら、特定の場合には、関連するマスクされたVLAN-ID各々について或るMACアドレスが同じ固有の識別子を（例えばハッシュ関数がそのように機能するならば）持ってもよいことに留意すべきである。
【００４８】
VLAN-IDは典型的には１２ビットのサイズを有する。１２ビットを利用することは、４０９６個の異なるVLAN-IDの生成を可能にする。しかしながら多くの場合に、これは一般的なネットワークのVLAN-ID数に関して実際に必要なものより多くのVLAN-IDになる。かくてマスクがVLAN-IDに適用され、VLAN-IDのサイズを減らす。VLAN-IDのサイズを減らすことで、MACアドレス及びVLAN-IDのハッシュ結果のサイズを小さくすることができる。これらのサイズの小型化の結果、データベース３００のエントリ各々に必要なメモリリソースを減らすことができる。
【００４９】
特定の実施例では、f(VID)はVLAN-ID及び特定のマスクの組み合わせに等しくできる。一般に、あるビットシーケンスにマスクを適用することは、より短いビットシーケンスを生成し、その短いビットシーケンスはオリジナルのビットシーケンス中のビット値の一部しか含んでいない。例えば、マスクを１２ビットのVLAN-IDに適用することは、VLAN-ID中のビット値の部分集合のみを含む短くマスクされたVLAN-IDを生成する。かくてマスクは、そのマスクが適用されるビットシーケンスよりも短いビットシーケンスを生成する。特許請求の範囲だけでなくこの説明でも、VLAN-IDのサイズを減らす適切な他の如何なるハッシュ関数や他の技法にもマスクは一般的に関連することに留意すべきである。
【００５０】
特定の実施例では、マスクビットは0x00fに設定され（この例では、f(VID)=VID&0x000f）、実効的なVLAN-IDビットを１２から４に減らす。例えば、１２ビットのVLAN-IDは“000010101111”であったとする。マスクビットを0x00fに設定し、そのマスクをVLAN-IDに適用すると、1111(又は0xf)というマスクされたVLAN-IDが生じる。特定の実施例では、オペレータのネットワークのコンフィギュレーションに依存して、マスクはネットワークオペレータにより指定可能である。代替実施例では、マスクはネットワークソフトウエアで指定可能である。
【００５１】
マスクを使用すると、転送データベース３００で考慮可能なVLANの数を減らせることに留意すべきである。非限定的な例として、マスクされたVLAN-IDが４ビットしか含んでおらず、可能な１６個の固有VLAN-IDに対応し、VLAN-IDがスイッチの転送データベースでこの方法でマスクされるとする。１６より多くのVLANに関連するパケットが転送データベースで処理されているならば、1つ以上のVLANのパケットは、１つ以上の他のVLANと同様に処理される（パケットは同じMACアドレスを有するものとする。）。このマスクは、特定のVLAN-ID中と他の特定のVLAN-IDを区別する１つ以上のビットを無視している。かくてネットワークオペレータは、それらの特定のネットワークコンフィギュレーションに対するマスクを仕立てることができる点で有利である。VLAN-IDマッピングが組織的な方法で選択されるデータセンタ環境では、ネットワークオペレータはネットワークの要請に忠実にマスクを仕立てることができる。使用されるVLAN-IDが制御できない場合は、ネットワークオペレータは適切なマスクを適用することに関して何らかの困難に直面するかもしれない。
【００５２】
図７を再び参照するに、カラム３２０は特定の出力ポートを特定し、その出力ポートから、カラム３１０の特有の識別子を有するパケットが送信される（ポートベクトル）。かくて図示の例では「ハッシュ(addr1,f(vid1)))で表現される固有の識別子を伴うパケットが出力ポート１から送信される。「ハッシュ(addr2,f(vid2)))で表現される固有の識別子を伴うパケットが出力ポート２から送信される。図示のデータベース例３００ではカラム３１０内の固有の識別子各々に別個の出力ポートが対応しているが、固有の識別子各々は適切などの出力ポートに対応してもよく、複数の固有の識別子が同じ出力ポートに対応してもよい。ロー３３０はカラム３１０の固有の識別子各々に対応するエントリである。データベース３００は２つのカラムしか示していないが、データベース３００は適切なカラムをいくつでも含んでよく、例えば、タイムスタンプ情報や様々なフラグを格納するカラムを含んでよいことに留意すべきである。
【００５３】
動作時にあっては、パケットがスイッチで受信される。パケットが受信された後に、スイッチ内のハッシュテーブルが、パケットのMACアドレス及びVLAN-IDを含むパケットに関連する情報を受信する。ハッシュテーブルは、転送データベース３００及び／又はルーティングモジュール３６を含んでもよいし、それらに含まれてもよいし、或いはそれらに関連付けられていてもよい。ハッシュテーブルは、マスクされたVLAN-IDを作成するためにパケットのVLAN-IDにマスクを適用する。そしてハッシュテーブルは、ハッシュ関数をパケットのMACアドレス及びマスクされたVLAN-IDに適用し、インデックスを生成する。インデックスは、その後に、データベース３００のカラム３１０内のインデックスに対応する識別子を見つけるためにハッシュテーブルにより使用される。カラム３１０内で識別子を発見した後、ハッシュテーブルは同じロー３３０のカラム３２０でポートベクトルを特定する。これによりハッシュテーブルは、パケットが送信される出力ポートを特定できる。そして特定された出力ポートからパケットが送信される。上述したように、転送データベース例３００は、特定のパケットに関連するVLANを考慮する。更に、転送データベースリソースは効率的に管理される。
【００５４】
修正、追加又は省略が本開示範囲から逸脱せずに説明済みのシステム及び方法になされてもよい。説明されたシステム及び方法の構成要素は、特定のノードに応じて集積されてもよいし、別々に用意されてもよい。更に、説明されたシステム及び方法の動作は、本開示範囲から逸脱せずに、より多数の、より少数の又は別の構成要素によって実行されてもよい。
【００５５】
図８は転送データベースリソースを管理する本発明の特定の実施例によるフローチャートを示す。本方法はステップ４１０から始まり、パケットがスイッチで受信される。パケットが受信されると、パケットのMACアドレス及びVLAN-IDを含むパケットに関連する情報が、例えばルーティングモジュール３６のハッシュテーブルに転送される及びそれによって受信される。把手テーブルは、転送データベースを含んでもよいし、それに含まれてもよいし、或いはそれに関連付けられてもよい。ステップ４２０では、マスクされたVLAN-IDを作成するために、マスクがパケットのVLAN-IDに適用される。ステップ４３０では、インデックスを作成するため、ハッシュ関数がパケットのMACアドレス及びマスクされたVLAN-IDに適用される。ステップ４４０の後、インデックスを利用して、転送データベース内のそのインデックスに対応する識別子を探す。識別子の発見後に、その識別子に対応する転送データベース中のポートベクトルが確認される。パケットの送信される出力ポートがハッシュテーブルにより特定される。ステップ４５０では、特定された出力ポートからパケットが送信される。
【００５６】
修正、追加又は省略が本開示範囲から逸脱せずに説明済みのシステム及び方法になされてもよい。説明されたシステム及び方法の構成要素は、特定のノードに応じて集積されてもよいし、別々に用意されてもよい。更に、説明されたシステム及び方法の動作は、本開示範囲から逸脱せずに、より多数の、より少数の又は別の構成要素によって実行されてもよい。
【００５７】
以上本発明がいくつかの実施例と共に説明されてきたが、様々な変更、置換、変形、代替及び修正が当業者に示されているであろう。そのような様々な変更、置換、変形、代替及び修正は特許請求の範囲及びその精神の範疇に包含されることが意図される。
【００５８】
以下、本発明により教示される手段が例示的に列挙される。
【００５９】
（付記１）
スイッチの入力ポートでパケットを受信するステップであって、前記パケットは仮想ローカルエリアネットワーク識別子(VLAN-ID)及び媒体アクセス制御(MAC)アドレスに関連し、前記スイッチは転送データベース及び複数の出力ポートを有するステップと、
前記VLAN-IDをマスクし、前記パケットに関連する前記VLAN-IDより少ないビットで構成されるマスクされたVLAN-IDを作成するステップと、
前記MACアドレス及び前記マスクされたVLAN-IDに或る関数を適用し、インデックスを生成するステップと、
前記インデックスを利用して、前記転送データベースで
前記スイッチの出力ポートを識別するステップと、
識別された出力ポートから前記パケットを送信するステップと、
を有するスイッチングする方法。
（付記２）
受信したパケットが、VLAN-ID及びMACアドレスをヘッダに含んでいる付記１記載の方法。
（付記３）
前記VLAN-IDをマスクするステップが、前記VLAN-IDのビットの特定の一部分からビット値を選択するステップを有し、前記マスクされたVLAN-IDは選択されたビット値しか含まない付記１記載の方法。
（付記４）
固有のマスクされたVLAN-IDがネットワークのVLAN各々に対応するようにマスクを選択するステップを更に有する付記１記載の方法。
【００６０】
（付記５）
前記関数がハッシュ関数である付記１記載の方法。
【００６１】
（付記６）
ハッシュテーブルが、前記MACアドレス及び前記VLAN-IDに前記関数を適用し、前記インデックスを生成するために使用され、前記ハッシュテーブルは前記インデックスを用いて前記スイッチの前記出力ポートを特定するのに使用される付記１記載の方法。
（付記７）
コンピュータ読み取り可能な媒体内にエンコードされた論理装置であって、
スイッチの入力ポートでパケットを受信するステップであって、前記パケットは仮想ローカルエリアネットワーク識別子(VLAN-ID)及び媒体アクセス制御(MAC)アドレスに関連し、前記スイッチは転送データベース及び複数の出力ポートを有するステップと、
前記VLAN-IDをマスクし、前記パケットに関連する前記VLAN-IDより少ないビットで構成されるマスクされたVLAN-IDを作成するステップと、
前記MACアドレス及び前記マスクされたVLAN-IDに或る関数を適用し、インデックスを生成するステップと、
前記インデックスを利用して、前記転送データベースで
前記スイッチの出力ポートを識別するステップと、
識別された出力ポートから前記パケットを送信するステップと、
をコンピュータに実行させる論理装置。
（付記８）
受信したパケットが、VLAN-ID及びMACアドレスをヘッダに含んでいる付記７記載の論理装置。
【００６２】
（付記９）
前記VLAN-IDをマスクするステップが、前記VLAN-IDのビットの特定の一部分からビット値を選択するステップを有し、前記マスクされたVLAN-IDは選択されたビット値しか含まない付記７記載の論理装置。
【００６３】
（付記１０）
固有のマスクされたVLAN-IDがネットワークのVLAN各々に対応するようにマスクを選択するステップをコンピュータに更に実行させる付記７記載の論理装置。
【００６４】
（付記１１）
前記関数がハッシュ関数である付記７記載の論理装置。
【００６５】
（付記１２）
ハッシュテーブルが、前記MACアドレス及び前記VLAN-IDに前記関数を適用し、前記インデックスを生成するために使用され、前記ハッシュテーブルは前記インデックスを用いて前記スイッチの前記出力ポートを特定するのに使用される付記７記載の論理装置。
【００６６】
（付記１３）
パケットを受信するよう構成された少なくとも１つの入力ポートであって、前記パケットは仮想ローカルエリアネットワーク識別子(VLAN-ID)及び媒体アクセス制御(MAC)アドレスに関連する入力ポートと、
ルーティングモジュールと、
複数の出力ポートと、
を有するスイッチであって、前記ルーティングモジュールは、
前記VLAN-IDをマスクし、前記パケットに関連する前記VLAN-IDより少ないビットで構成されるマスクされたVLAN-IDを作成し、
前記MACアドレス及び前記マスクされたVLAN-IDに或る関数を適用し、インデックスを生成し、
前記インデックスを利用して、当該スイッチの出力ポートを識別し、
特定の出力ポートが識別された出力ポートであった場合に、該特定の出力ポートは当該スイッチからパケットを送信するスイッチ。
（付記１４）
受信したパケットが、VLAN-ID及びMACアドレスをヘッダに含んでいる付記１３記載のスイッチ。
（付記１５）
前記VLAN-IDをマスクすることが、前記VLAN-IDのビットの特定の一部分からビット値を選択することを含み、前記マスクされたVLAN-IDは選択されたビット値しか含まない付記１３記載のスイッチ。
（付記１６）
前記関数がハッシュ関数である付記１３記載のスイッチ。
（付記１７）
前記MACアドレス及び前記VLAN-IDに前記関数を適用し、前記インデックスを生成するよう構築されたハッシュテーブルを更に有し、前記ハッシュテーブルは前記インデックスを用いて前記スイッチの前記出力ポートを特定するのに使用される付記１３記載のスイッチ。
（付記１８）
スイッチ内の転送データベースであって、
複数のハッシュ値と、
複数のポートベクトルと、
を有し、各ハッシュ値は媒体アクセス制御(MAC)アドレス及びマスクされた仮想ローカルエリアネットワーク識別子(VLAN-ID)のハッシュ演算結果であり、
各ポートベクトルは前記スイッチの出力ポートを特定し且つ前記ハッシュ値の少なくとも１つに関連する転送データベース。
【図面の簡単な説明】
【００６７】
【図１】システムエリアネットワーク例を示す図である。
【図２】システムエリアネットワークのスイッチを例示する図である。
【図３】スイッチのコア(スイッチコア)を例示する図である。
【図４】論理的にブロックに分割されたスイッチコアのストリームメモリ例を示す図である。
【図５】転送データベース例の一部を示す図である。
【図６】転送データベース例の一部を示す図である。
【図７】本発明の一実施例による別の転送データベース例の一部を示す図である。
【図８】転送データベースリソースを管理する本発明の特定の実施例によるフローチャートを示す。
【符号の説明】
【００６８】
１０  システムエリアネットワーク
１２  相互接続部
１４  サーバーシステム
１６  ストレージシステム
１８  ネットワークシステム
２０  ルーティングシステム
２２  スイッチ
２４  ポート
２６  スイッチコア
２８  ポートモジュール
３０  ストリームメモリ
３２  タグメモリ
３３  入力コントロール及びセントラルエージェント(ICCA)
３６  ルーティングモジュール
３７  スイッチングモジュール
３８  ブロック
４０  ワード
１００  転送データベース
１１０，１２０  列
１３０  行
２００  転送データベース
２１０，２２０  列
２３０  行
【図１】
2007325271.tif 000005
【図２】
2007325271.tif 000006
【図３】
2007325271.tif 000007
【図４】
2007325271.tif 000008
【図５】
2007325271.tif 000009
【図６】
2007325271.tif 000010
【図７】
2007325271.tif 000011
【図８】
2007325271.tif 000012