(57)【特許請求の範囲】
【請求項１】
中継データベース・メモリへのアクセスをスケジューリングして実行し、複数の入力ポートに中継決定を転送するように構成された、中継データベース・メモリと複数の入力ポートを結合する探索エンジンと、
探索エンジンに結合され、複数の入力ポートに結合される調停インタフェースを有し、複数の入力ポートうちの１つからパケット・ヘッダを受信するように構成されると共にパケット・ヘッダの所定の部分に基づいて中継データベース・メモリにアクセスするための第１の探索キーを構築するように構成され、パケット・ヘッダの所定の部分が、パケット・ヘッダが関連付けられた複数のクラスのうちのクラスに基づいて選択されるヘッダ処理ユニットとを備えることを特徴とするスイッチ・ファブリック。
【請求項２】
ヘッダ処理ユニットがさらに、
パケット・ヘッダのアドレス情報にアクセスするために複数の入力ポートおよび調停インタフェースに結合されたアドレス蓄積ユニットと、
パケット・ヘッダから所定の１組のフィールドを選択してカプセル化の種類を判定するために複数の入力ポートおよび調停インタフェースに結合されたカプセル化処理ユニットと、
複数の入力ポートおよび調停インタフェースに結合され、カプセル化の種類および所定の１組のフィールドに基づいてヘッダ・クラスを判定する比較論理を含むヘッダ・クラス突合せユニットの各パイプライン段を備えることを特徴とする請求項１に記載のスイッチ・ファブリック。
【請求項３】
第１の探索キーが階層３（Ｌ３）探索キーであることを特徴とする請求項１に記載のスイッチ・ファブリック。
【請求項４】
ヘッダ処理ユニットがさらに、中継データベース・メモリにアクセスするための階層２（Ｌ２）探索キーを構築するように構成されることを特徴とする請求項３に記載のスイッチ・ファブリック。
【請求項５】
第１の探索キーが階層２（Ｌ２）探索キーであることを特徴とする請求項１に記載のスイッチ・ファブリック。
【請求項６】
複数の入力ポートがそれぞれ、他の入力ポートとは独立に中継決定を要求することを特徴とする請求項１に記載のスイッチ・ファブリック。
【請求項７】
中継データベース・メモリが、ランダム・アクセス・メモリ（ＲＡＭ）に結合された１つまたは複数のコンテント指定メモリ（ＣＡＭ）を備えることを特徴とする請求項１に記載のスイッチ・ファブリック。
【請求項８】
さらに、プロセッサとのインタフェースをとるように構成され、さらに、プロセッサのために中継データベース・メモリにアクセスするように構成されたコマンド実行ユニットを含むことを特徴とする請求項１に記載のスイッチ・ファブリック。
【請求項９】
中継データベース・メモリが第１のメモリおよび第２のメモリを備え、探索エンジンが、第１のメモリおよび第２のメモリへのアクセスをパイプライン式にするように構成されることを特徴とする請求項１に記載のネットワーク装置。
【請求項１０】
Ｌ２探索キーが第１のサイズのキーであり、Ｌ３探索キーが第２のサイズのキーであり、第２のサイズが第１のサイズよりも大きいことを特徴とする請求項３に記載のスイッチ・ファブリック。
【請求項１１】
中継データベース・メモリへのアクセスをスケジューリングして実行し、複数の入力ポートに中継決定を転送するように構成された、中継データベース・メモリと複数の入力ポートを結合する探索エンジンと、
探索エンジンに結合され、複数の入力ポートに結合される調停インタフェースを有し、複数の入力ポートうちの１つからパケット・ヘッダを受信するように構成されると共に中継データベース・メモリにアクセスするための第１のキーおよび第２のキーを構築するように構成され、第１のキーが、パケット・ヘッダの第１の部分から得た１つまたは複数のフィールドを備え第１の長さを有し、第２のキーが、パケット・ヘッダの第２の部分から得た１つまたは複数のフィールドを備え第２の長さを有するヘッダ処理ユニットとを備えることを特徴とするスイッチ・ファブリック。
【請求項１２】
第１のキーが、中継データベース・メモリからＬ２エントリを検索するための階層２（Ｌ２）キーであり、第２のキーが、中継データベース・メモリからＬ３エントリを検索するための階層３（Ｌ３）キーであることを特徴とする請求項１１に記載のスイッチ・ファブリック。
【請求項１３】
第１の長さが第２の長さよりも短いことを特徴とする請求項１２に記載のスイッチ・ファブリック。
【請求項１４】
パケット・ヘッダの第１の部分が媒体アクセス制御（ＭＡＣ）ヘッダを備え、パケット・ヘッダの第２の部分がインタネット・プロトコル（ＩＰ）ヘッダを備えることを特徴とする請求項１２に記載のスイッチ・ファブリック。
【請求項１５】
中継データベース・メモリが、ランダム・アクセス・メモリ（ＲＡＭ）に結合された１つまたは複数のコンテント指定メモリ（ＣＡＭ）を備えることを特徴とする請求項１１に記載のスイッチ・ファブリック。
【請求項１６】
ＲＡＭにアクセスするためのアドレスが、１つまたは複数のＣＡＭによって生成されたインデックスを備え、ＲＡＭがＬ２中継情報とＬ３中継情報の両方を含むことを特徴とする請求項１５に記載のスイッチ・ファブリック。
【請求項１７】
パケット・ヘッダがＬ２ヘッダおよびＬ３ヘッダを含み、ヘッダ処理ユニットが、複数のパケット・ヘッダを同時に処理することを可能にするパイプライン式論理を備え、パイプライン論理が、
第１のパケット・ヘッダで使用されているヘッダ・カプセル化の種類を判定し、かつヘッダ・カプセル化の種類に基づいてＬ３ヘッダの開始位置の表示を判定するように構成されたカプセル化処理ユニットと、
Ｌ３ヘッダの開始位置の表示を受信するためにカプセル化ブロックに結合され、Ｌ２ヘッダおよびＬ３ヘッダ内の１つまたは複数のフィールドに基づいて、第２のパケット・ヘッダが関連付けられた複数のＬ３クラスのうちの１つを判定するように構成されたＬ３ヘッダ・クラス突合せブロックとを含むことを特徴とする請求項１１に記載のスイッチ・ファブリック。
【請求項１８】
ネットワークからパケットを受信する第１のポートを含む複数のポートと、
パケットに対応するアソシエーティブ・データ・エントリを記憶する第１のメモリと、第１のメモリに結合され、アソシエーティブ・データ・エントリに対応する関連データ・エントリを記憶する第２のメモリとを含み、アソシエーティブ・データ・エントリが、パケットを中継すべき１組のポートの表示を含む中継メモリと、
中継メモリへのアクセスをスケジューリングして実行し、第１のポートに表示を転送するように構成された、複数のポートおよび中継メモリに結合された探索エンジンとを備えることを特徴とするネットワーク装置。
【請求項１９】
探索エンジンが、Ｌ２学習サイクルが必要であるときに階層２（Ｌ２）宛先アドレス（ＤＡ）突合せをなくすように構成されることを特徴とする請求項１８に記載のネットワーク装置。
【請求項２０】
第１のメモリが１つまたは複数のコンテント指定メモリ（ＣＡＭ）を備え、第２のメモリがランダム・アクセス・メモリ（ＲＡＭ）を備えることを特徴とする請求項１９に記載のネットワーク装置。
【請求項２１】
第１のメモリおよび第２のメモリに並列にアクセスできることを特徴とする請求項１８に記載のネットワーク装置。
【請求項２２】
探索エンジンが、第１のメモリおよび第２のメモリへのアクセスをパイプライン式にするように構成されることを特徴とする請求項２１に記載のネットワーク装置。
【請求項２３】
第１のメモリが１つまたは複数のコンテント指定メモリ（ＣＡＭ）を備え、第２のメモリがランダム・アクセス・メモリ（ＲＡＭ）を備えることを特徴とする請求項２２に記載のネットワーク装置。
【発明の詳細な説明】
発明の分野
本発明は、一般にコンピュータ・ネットワーキング装置の分野に関する。詳細には、本発明は、マルチレイヤ探索エンジン・アーキテクチャに関する。
発明の背景
ローカル・エリア・ネットワーク（ＬＡＮ）のアーキテクチャは極めて高度化している。当初、ＬＡＮは、いくつかのコンピュータを接続する単一のワイヤとみなされていた。現在、ＬＡＮは、機能および融通性を高めるために複雑な構成に実装されている。このようなネットワークでは、送信元装置から宛先装置にパケットが送信され、より広範囲なネットワークでは、１つまたは複数のスイッチおよび／またはルータを介してこのパケットを送信することができる。パケット構造と、ネットワークの機能および高度化の階層とを定義する標準が設定されている。たとえば、ＴＣＰ／ＩＰプロトコル・スタックは４つの異なる複数の階層、たとえば、物理層（階層１）、データ・リンク層（階層２）、ネットワーク層（階層３）、トランスポート層（階層４）を定義している。ネットワーク装置は、１つまたは複数の階層をサポートすることができ、したがって、標題の特定の分野に関する。
現在、典型的なＬＡＮは階層２（データ・リンク層）ネットワーク装置と階層３（ネットワーク層）ネットワーク装置の組合せを使用している。ネットワークに対する増大する性能面の要求を満たすために、従来はソフトウェアならびに／または別々の階層２装置および階層３装置で実行されていた機能が、性能上重要な機能をハードウェアに実装するマルチレイヤ装置またはスイッチに移行している。
費用有効な高性能スイッチ・インプリメンテーションを実現するための１つの重要な点は、あらゆるスイッチ設計の中心である中継データベース探索エンジンのアーキテクチャである。したがって、機能モジュールの区画を最適化し、探索エンジンとその「クライアント」（たとえば、スイッチ入力ポートや中央演算処理装置）との間の効率的な対話を実現し、イベントの実行順序を最適化することが望ましい。これらはすべて、スイッチング・ファブリックの全体的な性能において重大な役割を果たす。また、様々なパケット・ヘッダ・フィールドを一致させる融通性を実現することによって離散的なトラフィック・タイプおよびトラフィック方式をサポートすることが望ましい。理想的には、このアーキテクチャは、シリコンにおける非常に高い集積度を可能にし、かつシリコン技術の発達に比例して性能が向上していくべきでもある。
発明の概要
多層スイッチ・エンジン・アーキテクチャについて説明する。本発明の一態様によれば、スイッチ・ファブリックは、探索エンジンおよびパケット・ヘッダ処理ユニットを含む。この探索エンジンは、中継データベース・メモリおよび１つまたは複数の入力ポートに結合することができる。探索エンジンは、中継データベース・メモリへのアクセスをスケジューリングして実行し、１つまたは複数の入力ポートに中継決定を転送するように構成される。ヘッダ処理ユニットは、探索エンジンに結合され、１つまたは複数の入力ポートに結合される調停インタフェースを含む。ヘッダ処理ユニットは、１つまたは複数の入力ポートからパケット・ヘッダを受信するように構成され、さらに、パケット・ヘッダの指定の部分に基づいて中継データベース・メモリにアクセスするための探索キーを構築するように構成される。パケット・ヘッダのこの所定の部分は、パケット・ヘッダが関連付けられたパケット・クラスに基づいて選択される。
本発明の他の特徴は、添付の図面および以下の詳細な説明から明らかになろう。
【図面の簡単な説明】
添付の図面の図に本発明を制限ではなく一例として示す。図において、同じ参照符号は同様な要素を指す。
第１図は、本発明の一実施例によるスイッチを示す図である。
第２図は、第１図のスイッチで使用できる例示的なスイッチ要素の簡略化されたブロック図である。
第３図は、本発明の一実施例による第２図のスイッチ・ファブリックのブロック図である。
第４図は、本発明の一実施例による第５図のパイプライン式ヘッダ前処理サブブロックによって処理される一般的なパケット・ヘッダの一部を示す図である。
第５図は、本発明の一実施例による第３図のヘッダ処理論理のパイプライン式ヘッダ処理サブブロックを示す図である。
第６図は、本発明の一実施例による第２図の中継メモリの物理的構成を示す図である。
第７図は、本発明の一実施例による中継データベース・メモリ探索スーパーサイクル決定論理を示す流れ図である。
第８Ａ図ないし第８Ｃ図は、例示的な中継データベース・メモリ探索スーパークラスを示すタイミング図である。
第９図は、本発明の一実施例による典型的な中継データベース・メモリ・アクセス・コマンドの一般化されたコマンド処理を示す流れ図である。
詳細な説明
高性能多層スイッチ要素用探索エンジン・アーキテクチャについて説明する。以下の説明では、説明の都合上、本発明を完全に理解していただくために多数の特定の詳細について説明する。しかし、当業者には、これらの特定の詳細のうちのいくつかなしに本発明を実施できることが明らかであろう。他の例では、周知の構造および装置をブロック図形で示す。
本発明は、以下に説明する様々なステップを含む。本発明のステップは、好ましくは以下に説明するハードウェア構成要素によって実行されるが、機械実行可能な命令で実施することもできる。このような命令を用いてプログラムされた汎用プロセッサまたは専用プロセッサにステップを実行させるためにこのような命令を使用することができる。さらに、ランダム・アクセス・メモリ（ＲＡＭ）とコンテント指定メモリ（ＣＡＭ）の組合せを使用する高速イーサネット・スイッチに関して本発明の実施例について説明する。しかし、本明細書で説明する方法および装置は、リピータ、ブリッジ、ルータ、ブルータ、その他のネットワーク装置など他の種類のネットワーク装置と、代替のメモリ・タイプおよびメモリ構成にも同様に適用することができる。
例示的なネットワーク要素
本発明の教示に従って動作するネットワーク要素の一実施例の概要を第１図に示す。このネットワーク要素は、いくつかのノードおよび端末局を様々な異なる方法で相互接続するために使用される。特に、マルチレイヤ分散ネットワーク要素（ＭＬＤＮＥ）のアプリケーションは、イーサネットとも呼ばれるＩＥＥＥ８０２．３標準など均質なデータ・リンク層を介して定義済み経路指定プロトコルに従ってパケットを経路指定する。他の経路指定プロトコルを使用することもできる。
ＭＬＤＮＥの分散アーキテクチャは、いくつかの既知の経路指定アルゴリズムまたは将来のアルゴリズムに従ってメッセージ・トラフィックを経路指定するように構成することができる。好ましい実施例では、ＭＬＤＮＥは、インタネット関連プロトコル、具体的には、伝送制御プロトコル（ＴＣＰ）およびインタネット・プロトコル（ＩＰ）を使用して、イーサネットＬＡＮ標準および媒体アクセス制御（ＭＡＣ）データ・リンク層を介してメッセージ・トラフィックを処理するように構成される。本明細書ではＴＣＰを階層４プロトコルとも呼び、同様にＩＰを階層３プロトコルと呼ぶ。
ＭＬＤＮＥの一実施例では、ネットワーク要素は、パケット経路指定機能を分散的に実装するように構成され、すなわち、機能の様々な部分がＭＬＤＮＥ内のそれぞれのサブシステムによって実行され、それに対して機能の最終結果は外部ノードおよび端末局に対して透過的になる。以下の議論および第１図の図から理解されるように、ＭＬＤＮＥはスケーリング可能なアーキテクチャを有し、したがって、設計者は追加のサブシステムを追加することによって外部接続の数を予想可能に増加させ、それによってＭＬＤＮＥを独立型標準ルータとして定義するうえでより高い融通性を得ることができる。
第１図にブロック図形で示すように、ＭＬＤＮＥ１０１はいくつかのサブシステム１１０を含み、これらのサブシステム１１０は、より大型のスイッチを形成するためにいくつかの内部リンク１４１を使用して完全に整合され相互接続される。少なくとも１つの内部リンクによって任意の２つのサブシステムが結合される。各サブシステム１１０はスイッチ要素１００を含み、スイッチ要素１００は、中継データベースとも呼ばれる中継・フィルタリング・データベース１４０に結合される。中継・フィルタリング・データベースは中継メモリ１１３および関連メモリ１１４を含むことができる。中継メモリ（またはデータベース）１１３は、受信したパケットのヘッダと突き合せるために使用されるアドレス・テーブルを記憶する。関連メモリ（またはデータベース）は、パケットをＭＬＤＮＥを介して中継するための中継属性を識別するために使用される中継メモリ内の各エントリと関連付けられたデータを記憶する。入出力機能を有するいくつかの外部ポート（図示せず）は、外部接続１１７とのインタフェースをとる。一実施例では、各サブシステムは複数のギガビット・イーサネット・ポート、高速イーサネット・ポート、およびイーサネット・ポートをサポートする。やはり各サブシステムに入出力機能を有するインタネット・ポート（図示せず）は内部リンク１４１同士を結合する。ＭＬＤＮＥは、内部リンクを使用して複数のスイッチング要素同士を接続し、マルチギガビット・スイッチを形成することができる。
ＭＬＤＥＮ１０１はさらに、周辺構成接続（ＰＣＩ）などの通信バス１５１を介して個々のサブシステム１１０に結合された中央処理システム（ＣＰＳ）１６０を含む。ＣＰＳ１６０は、中央メモリ１６３に結合された中央演算処理装置（ＣＰＵ）１６１を含む。中央メモリ１６３は、様々なサブシステムの個々の中継メモリ１１３に含まれるエントリのコピーを含む。ＣＰＳは、各サブシステム１１０との直接制御通信インタフェースを有し、スイッチ要素同士の間のある種の集中的な通信および制御を行う。
例示的なスイッチ要素
第２図は、第１図のスイッチ要素の例示的なアーキテクチャを示す簡略的なブロック図である。図のスイッチ要素１００は、中央演算処理装置（ＣＰＵ）インタフェース２１５、スイッチ・ファブリック・ブロック２１０、ネットワーク・インタフェース２０５、縦続インタフェース２２５、および共用メモリ・マネージャ２２０を含む。
イーサネット・パケットは、３つのインタフェース２０５、２１５、または２２５のうちの１つを介してネットワーク・スイッチ要素１００に入るか、あるいはネットワーク・スイッチ要素１００から出る。簡単に言えば、ネットワーク・インタフェース２０５は、対応するイーサネット・プロトコルに従って動作し、イーサネット・パケットをネットワーク（図示せず）から受信し、イーサネット・パケットを１つまたは複数の外部ポート（図示せず）を介してネットワーク上に送信する。任意選択の縦続インタフェース２２５は、より大型のスイッチを形成するためにスイッチング要素同士を相互接続する１つまたは複数の内部リンク（図示せず）を含むことができる。たとえば、各スイッチ要素１００を他のスイッチ要素と完全メッシュ・トポロジ状に接続し、前述の多層スイッチを形成することができる。別法として、スイッチは、縦続インタフェース２２５を含むか、あるいは含まない単一のスイッチ要素１００を備えることができる。
ＣＰＵ１６１は、コマンドまたはパケットをＣＰＵインタフェース２１５を介してネットワーク・スイッチ要素１００に送信することができる。このように、ＣＰＵ１６１上で実行される１つまたは複数のソフトウェア・プロセスは、新しいエントリの追加や不要なエントリの無効化など、外部中継・フィルタリング・データベース１４０内のエントリを管理することができる。しかし、代替実施例では、ＣＰＵ１６１は中継・フィルタリング・データベース１４０に直接アクセスすることができる。いずれの場合も、パケット中継の目的のため、ＣＰＵインタフェース２１５のＣＰＵポートは、スイッチ要素１００の一般的な入力ポートに類似しており、単なる他の外部ネットワーク・インタフェース・ポートと同様に扱うことができる。しかし、ＣＰＵポートへのアクセスはＰＣＩバスなどのバスを介して行われるので、ＣＰＵポートは媒体アクセス制御（ＭＡＣ）機能を必要としない。
次に、ネットワーク・インタフェース２０５に戻り、入力パケット処理および出力パケット処理の２つの主要タスクについて説明する。入力パケット処理は、ネットワーク・インタフェース２０５の１つまたは複数の入力ポートによって行うことができる。入力パケット処理には、（１）着信イーサネット・パケットの受信および検証、（２）必要に応じたパケット・ヘッダの修正、（３）共用メモリ・マネージャ２２０のバッファ・ポイントに着信パケットを記憶することを求める要求、（４）スイッチ・ファブリック・ブロック２１０に対する中継決定の要求、（５）着信パケット・データを外部共用メモリ２３０に一時的に記憶するための着信パケット・データの共用メモリ・マネージャ２２０への転送、（５）中継決定受信時の、中継決定によって示された出力ポートへのバッファ・ポインタの中継が含まれる。出力パケット処理は、ネットワーク・インタフェース２０５の１つまたは複数の出力ポートによって実行することができる。出力処理には、共用メモリ・マネージャ２２０に対するパケット・データの要求、パケットのネットワーク上への送信、パケットが送信された後のバッファの割付け解除の要求が含まれる。
ネットワーク・インタフェース２０５、ＣＰＵインタフェース２１５、および縦続インタフェース２２５は共用メモリ・マネージャ２２０およびスイッチ・ファブリック・ブロック２１０に結合される。好ましくは、パケット中継やパケット・バッファリングなど重要な機能は、第２図に示すように集中される。共用メモリ・マネージャ２２０は、着信パケットをバッファするために外部共用メモリ２３０との効率的な集中インタフェースを実現する。スイッチ・ファブリック・ブロック２１０は、ＣＰＵ１６１の助けを得て中継・フィルタリング・データベース１４０を探索し維持する探索エンジン学習論理を含む。
集中スイッチ・ファブリック・ブロック２１０は、インタフェース２０５、２１５、および２２５のために中継・フィルタリング・データベース１４０にアクセスすることのできる探索エンジンを含む。パケット・ヘッダ突合せ、階層２ベースの学習、階層２および階層３のパケット中継、フィルタリング、およびエージングは、スイッチ・ファブリック・ブロック２１０によって実行することのできる例示的な機能である。各入力ポートは、受信したパケットに関する中継決定を受信するようにスイッチ・ファブリック・ブロック２１０に結合される。中継決定はアウトバウンド・ポート（たとえば、外部ネットワーク・ポートまたは内部縦続ポート）を示し、このポート上に対応するパケットを送信すべきである。ＭＣＡ  ＤＡ置換えに関する新しいＭＡＣ宛先アドレス（ＤＡ）などのハードウェア経路指定をサポートする追加の情報を中継決定で示すこともできる。さらに、スイッチ要素１００を介したパケット・トラフィックの優先順位付けを容易にするために中継決定に優先順位表示を含めることもできる。
この実施例では、イーサネット・パケットは共用メモリ・マネージャ２２０によって集中的にバッファされ管理される。共用メモリ・マネージャ２２０は、あらゆる入力ポートおよび出力ポートとのインタフェースをとり、この入力ポートおよび出力ポート上でそれぞれ動的なメモリ割付けおよび割付け解除を実行する。入力パケット処理時には、外部共用メモリ２３０に１つまたは複数のバッファが割り付けられ、たとえばネットワーク・インタフェース２０５から受信したコマンドに応答して、共用メモリ・マネージャ２２０によって着信パケットが記憶される。その後、出力パケット処理時に、共用メモリ・マネージャ２２０は外部共用メモリ２３０からパケットを検索し、もはや使用されていないバッファの割付けを解除する。すべての出力ポートがそこに記憶されているデータの送信を完了するまでバッファが解放されることがないように、共用メモリ・マネージャ２２０は好ましくは、バッファ所有権も追跡する。
入力ポート／スイッチ・ファブリックインタフェース
次に、スイッチ・ファブリック２１０の内部詳細を説明する前に、入力ポート（たとえば、パケットを受信することのできる任意のポート）とスイッチ・ファブリック２１０との間のインタフェースについて簡単に論じておく。各ＣＰＵインタフェース２１５、ネットワーク・インタフェース２０５、および縦続インタフェース２２５の入力ポートは、スイッチ・ファブリック２１０に対して着信パケットに関する中継決定を要求する。本発明の一実施例によれば、以下のインタフェースが使用される。
（１）Ｆｗｄ＿Ｒｅｑ［Ｎ：０］−中継要求信号
このような中継要求信号は、入力ポートによってスイッチ・ファブリック２１０に出力される。このような信号は２つの目的を有する。第１に、対応する入力ポートが有効なパケット・ヘッダを受信し、このパケット・ヘッダをスイッチ・ファブリックに転送(stream)する準備が完了していることをスイッチ・ファブリック２１０に示す表示として働く。パケット・ヘッダの転送が開始する前にヘッダ転送許可信号（以下のＨｄｒ＿Ｘｆｒ＿Ｇｎｔ［Ｎ：０］を参照されたい）がアサートされることが予想される。第２に、中継要求信号は、ヘッダ転送許可が検出された後で中継決定を求める要求として働く。中継要求信号は、スイッチ・ファブリック２１０から中継決定肯定応答が検出された後（以下のＦｗｄ＿Ａｃｋ［Ｎ：０］を参照されたい）のクロック周期でアサート解除される。
（２）Ｈｄｒ＿Ｘｆｒ＿Ｇｎｔ［Ｎ：０］−ヘッダ転送許可信号
このようなヘッダ転送許可信号は、スイッチ・ファブリック２１０によって入力ポートに出力される。具体的には、このような信号は、以下に詳しく説明するスイッチ・ファブリックのヘッダ処理論理によって出力される。いずれにしても、ヘッダ転送信号は、ヘッダ処理論理が対応する入力ポートからパケット・ヘッダを受け付ける準備が完了していることを示す。対応する入力ポートは、ヘッダ転送許可がアサートされたことを検出すると、スイッチ・ファブリック２１０への連続ヘッダ・フィールドの転送(streaming)を開始する。
（３）Ｈｄｒ＿Ｂｕｓ［Ｘ：１］［Ｎ：０］−専用ヘッダ・バス
ヘッダ・バスは、各入力ポートからスイッチ・ファブリック２１０への専用Ｘビット幅バスである。一実施例では、Ｘは１６であり、したがって、パケット・ヘッダをダブル・バイトとして転送することができる。
（４）Ｆｗｄ＿Ａｃｋ［Ｎ：０］−決定肯定応答信号の中継
このような中継決定肯定応答信号は、入力ポートからの対応する中継要求信号（上記のＦｗｄ＿Ｒｅｑ［Ｎ：０］を参照されたい）に応答してスイッチ・ファブリック２１０によって生成される。このような信号は、中継決定の準備が完了していないうちはアサート解除されている。中継決定肯定応答信号がアサートされたとき、対応する入力ポートは、中継決定バス（以下のＦｗｄ＿Ｄｅｃｉｓｉｏｎ［Ｙ：０］を参照されたい）が有効な中継決定を有するものと仮定すべきである。対応する入力ポートは、中継決定肯定応答を検出すると、必要に応じて他の中継要求を出すことができる。
（５）Ｆｗｄ＿Ｄｅｃｉｓｉｏｎ［Ｙ：０］−共用中継決定バス
この中継決定バスはすべての入力ポートによって共用される。この信号は、パケットを中継すべき出力ポート番号を示す。この中継決定には、発信パケットの優先順位、ＶＩＤ挿入、ＤＡ置換え、および入力ポートに有用な他の情報を示すデータを含めることもできる。
スイッチ・ファブリックの概要
入力ポートとスイッチ・ファブリック２１０の間のインタフェースについて説明したが、次に、スイッチ・ファブリック２１０の内部詳細について説明する。第３図を参照すると、例示的なスイッチ・ファブリック２１０のブロック図が示されている。一般に、スイッチ・ファブリック２１０はパケットを入力ポートから出力ポートに向けて送る責任を負う。スイッチ・ファブリック２１０の目的は、入力ポートへの中継決定をできるだけ短い時間で生成してスイッチでの遅延を短縮し、すべてのポート上でワイヤ速度スイッチングを実現することである。スイッチ・ファブリックの一次的な機能は、リアルタイム・パケット・ヘッダ突合せと、階層２（Ｌ２）ベースの学習と、Ｌ２および階層３（Ｌ３）エージングと、入力ポートのために中継情報を探索し中継データベース・メモリ１４０から検索するためのＬ２探索キーおよびＬ３探索キーを形成することと、中継データベース・メモリ１４０内のエントリを効率的に管理するためにソフトウェア用のコマンド・インタフェースを実現することである。
階層２ベースの学習は、スイッチング装置を通過するトラフィックに基づいて中継データベース１４０のＭＡＣアドレス部分を常に更新するプロセスである。スイッチング装置にパケットが入ると、このパケットのＭＡＣ送信元アドレス（ＳＡ）を、パケットが着信した入力ポートと相関付けるエントリがデータベース内に作成される（あるいは既存のエントリが更新される）。このようにして、スイッチング装置は、どのサブネット上にノードが存在するかを学習する。
エージングは、リンク層とネットワーク層の両方で行われる。エージングは、エントリにタイム・スタンプを付与し、満了したエントリを中継データベース・メモリ１４０から削除するプロセスである。（１）ＭＡＣ  ＳＡベースのエージング、および（２）ＭＡＣ宛先アドレス（ＤＡ）に基づくエージングの２種類のエージングがある。前者のエージングは階層２エージングであり、後者のエージングは、イナクティブ階層３フローの削除を助ける。したがって、エージングは、新しいフロー用のイナクティブ・フロー空間を回復するのを助ける。所定の時間間隔で、中継データベース・エントリにエージング・フィールドがセットされる。ＭＡＣ  ＳＡ探索またはＭＡＣ  ＤＡ探索中に見つかったエントリは、エージング・フィールドがクリアされる。したがって、たとえばアクティブ・エントリは、エージド・ビットがたとえばゼロに設定される。周期的に、ソフトウェアまたはハードウェアが中継データベース・メモリ１４０からイナクティブ（満了）エントリを削除することができ、それによってより効率的なデータベース管理が可能になる。エージングによって、学習された後「移動し、その後静止したままの」ノードに接続性を復元することもできる。このようなノードにはフラッディングを用いないかぎりアクセスできない。
次に、探索キーを形成するための例示的な論理について論じる前に、探索キー形成プロセスについて簡単に説明する。本発明の一実施例によれば、パケットは広義には、２つの群の一方、すなわちＬ２エントリまたはＬ３エントリに範疇分けされる。Ｌ３エントリはさらに、いくつかのヘッダ・クラスのうちの１つの一部として分類することができる。例示的なヘッダ・クラスには、（１）パケット・ヘッダがＲＡＰＰパケットに関連するヘッダであることを示すアドレス・レゾリューション・プロトコル（ＡＲＰ）クラス、（２）パケット・ヘッダがＲＡＰＰパケットに関連するヘッダであることを示す逆ＡＲＰ（ＲＡＲＰ）クラス、（３）パケット・ヘッダがＰＩＭパケットに関連するヘッダであることを示すＰＩＭクラス、（４）パケット・ヘッダがＲＳＶＰパケットに関連するヘッダであることを示す予約プロトコル（ＲＳＶＰ）クラス、（５）パケット・ヘッダがＩＧＭＰパケットに関連するヘッダであることを示すインタネット・グループ管理プロトコル（ＩＧＭＰ）クラス、（６）パケット・ヘッダがＴＣＰパケットに関連するヘッダであることを示す伝送制御プロトコル（ＴＣＰ）フロー・クラス、（７）パケット・ヘッダが非分割ＵＤＰパケットに関連するヘッダであることを示すユーザ・データグラム・プロトコル（ＵＤＰ）フロー・クラス、（８）パケット・ヘッダが分割ＵＤＰパケットに関連するヘッダであることを示す分割ＵＤＰフロー・クラス、（９）パケット・ヘッダがハードウェア経路指定可能ＩＰパケットに関連するヘッダであることを示すハードウェア経路指定可能インタネット・プロトコル（ＩＰ）クラス、（１０）パケット・ヘッダがＩＰ  Ｖ６パケットに関連するヘッダであることを示すＩＰバージョン６（ＩＰＶ６）クラスが含まれる。
本発明の一実施例では、探索キーは、着信パケットのヘッダから得たヘッダ・クラスおよび選択された情報の符号化に基づいて形成される。Ｌ２探索キーは、ヘッダ・クラス、Ｌ２アドレス、およびＶＩＤに基づいて形成することができる。Ｌ３探索キーは、ヘッダ・クラスと、入力ポート・リストと、たとえばヘッダ・クラスに基づく選択可能なＬ３ヘッダ・フィールドとに基づいて形成することができる。一実施例では、ローカル・スイッチ要素１００メモリ内にヘッダ・クラスごとにマスクを設け、ヘッダ・フィールドの選択を容易にすることができる。
第３図に示す実施例では、スイッチ・ファブリック２１０は、ヘッダ前処理アービタ３６０、パケット・ヘッダ前処理論理３０５、探索エンジン３７０、学習論理３５０、ソフトウェア・コマンド実行ブロック３４０、および中継データベース・メモリ・インタフェース３１０を含む。
ヘッダ前処理アービタ３６０は、パケット・ヘッダ前処理論理３０５に結合されると共に、ネットワーク・インタフェース２０５、縦続インタフェース２２５、およびＣＰＵインタフェース２１５の入力ポートに結合される。入力ポートは、スイッチ・ファブリック２１０にパケット・ヘッダを転送し、たとえば、前述のように中継決定を要求する。
スイッチ・ファブリック２１０は、より高速のネットワーク・リンクを優先することによって混合ポート速度をサポートすることができる。たとえば、ヘッダ前処理アービタ３６０は、各高速インタフェース（たとえば、ギガビット・イーサネット・ポート）をＮ個のより低速のインタフェース（たとえば、高速イーサネット・ポート）ごとに処理することによってより高速のインタフェースを優先する優先ラウンドロビン方式で中継要求同士を調停するように構成される。
ヘッダ前処理アービタ３６０は、処理すべき中継要求を選択すると、対応するパケット・ヘッダをヘッダ前処理論理３０５に転送する。ヘッダ前処理論理３０５はＬ２カプセル化フィルタリングおよびアラインメントと、Ｌ３ヘッダ比較選択論理を実行する。
探索エンジン３７０は、探索要求を出すために中継データベース・メモリ・インタフェース３１０に結合され、かつ探索キーを生成するための情報を得るためにヘッダ前処理論理３０５に結合される。探索エンジン３７０は学習処理をトリガするために学習論理３５０にも結合される。探索エンジン３７０は、中継データベース・メモリ１４０へのアクセスをスケジューリングし実行するための論理を含み、探索キー形成の実行、中継データベース・メモリ１４０から検索されたＬ２結果およびＬ３結果のマージ、フィルタリング、要求側入力ポートへの中継決定の生成などを含め中継フィルタ・アルゴリズムを実行する。学習のために、クリアされたエージ・ビットや修正された出力ポート・リストなど更新された中継データベース・エントリ情報が、中継データベース・メモリ１４０を更新するための探索サイクル中の適切な時間に学習論理３５０によって供給される。最後に、以下に詳しく論じるように、中継データベース・メモリ１４０から探索結果が得られるようになると、探索エンジン３７０は中継決定を生成し、要求側入力ポートに転送する。
中継データベース・メモリ・インタフェース３１０は、探索エンジン３７０およびソフトウェア・コマンド実行ブロック３４０から中継データベース・メモリ１４０への要求を受け付け調停する。
ソフトウェア・コマンド実行ブロック３４０はＣＰＵバスに結合される。ＣＰＵ１６１と情報を交換するために、ソフトウェア・コマンド実行ブロック３４０にプログラム可能コマンド・レジスタ、状況レジスタ、および内部レジスタを設けることができる。重要な点として、スイッチ・ファブリック２１０は、比較的小さなコマンド・セットをＣＰＵに供給することによって、中継データベース・メモリ・インプリメンテーションに応じて必要になる数１０個または数１００個の低レベル命令からＣＰＵを遮断する。たとえば、ＣＰＵがコンテント指定メモリ（ＣＡＭ）に直接アクセスすることを可能にするアーキテクチャでは、中継データベース・メモリにアクセスするうえで多量の追加のソフトウェアが必要である。スイッチ・ファブリック２１０がすでに中継データベース・メモリ１４０インタフェースの知識を有するので、この追加のソフトウェアは不必要に冗長である。
本発明では、分散中継データベースを有するアーキテクチャに関して他の効率問題も対処される。たとえば、分散アーキテクチャでは、中継データベース全体のイメージをソフトウェアに維持することが望ましい可能性がある。この場合、おそらく、ソフトウェアは周期的に個々の各中継データベースからすべてのエントリを読み取る必要がある。中継データベースは非常に大きくなる可能性があるので、ＣＰＵが中継データベースに直接アクセスすることを可能にするアーキテクチャでは多数の非効率的なプログラム済み入出力（ＰＩＯ）が必要になる恐れがある。
したがって、本明細書で論じるように、スイッチ・ファブリック２１０をＣＰＵ１６１と中継データベース１４０との間の媒体として使用すると有利である。本発明の一実施例によれば、ソフトウェア・コマンド実行ブロック３４０は、中継データベース・メモリ１４０に効率的にアクセスし、かつこのメモリ１４０を維持するために所定の１組のコマンドをソフトウェアに供給することができる。後述の所定の１組のコマンドは、全体的なＰＩＯを削減するように定義されている。これらのコマンドとプログラム可能なレジスタについて以下で詳しく論じる。
例示的な１組のレジスタには、（１）ＣＰＵ１６１からコマンドを受け取り未処理のコマンドの状況を示すコマンド状況レジスタと、（２）中継データベース１４０に書き込まれる新しいエントリを一時的に記憶する新規書込みエントリ・レジスタ、（３）適切な中継データベース・エントリを見つけるために使用されるキーを記憶する書込みキー・レジスタ、（４）中継データベース１４０に書き込まれるデータを記憶する書込みデータ・レジスタ、（５）読み取るべき中継データベース・メモリ内の位置、または更新すべき中継データベース内の位置を記憶するアドレス・カウンタ・レジスタ、（６）エントリ読取り動作の結果を記憶する読取りエントリ・レジスタ、および（７）他の読取り動作の結果を記憶する読取りデータ・レジスタが含まれる。
本発明の一実施例では、中継データベース・アドレス１４０へのアクセスを容易にするためにアドレス・カウンタ・レジスタが使用される。ソフトウェアは、読取り／書込みのシーケンスの最初の読取り／書込みの前にこのシーケンスの開始アドレスを用いてアドレス・レジスタをプログラムするだけでよい。最初のメモリ・アクセスの後、アドレス・レジスタは、その後のアクセスのために自動的に増分される。有利には、このようにして、追加のＰＩＯが節約される。というのは、ソフトウェアなしでも、各メモリ・アクセスの前にアドレスが更新されるからである。
ソフトウェア・コマンド実行ブロック３４０はさらに、中継データベース・メモリ・インタフェース３１０に結合される。ソフトウェア・コマンド実行ブロック３４０によってプログラム可能レジスタからコマンドおよびデータが読み取られ、第９図を参照して詳しく説明するように適切な中継データベース・メモリ・アクセス要求およびイベントが生成される。ソフトウェア・コマンド実行ブロック３４０は、コマンドの状況を状況レジスタを介してソフトウェアに知らせることもできる。このようにして、ソフトウェア・コマンド実行ブロック３４０は、中継データベース・メモリ１４０へのハードウェア援用ＣＰＵアクセスを実現する。
パケット・ヘッダ処理
第４図は、本発明の一実施例によって第５図のパイプライン式ヘッダ処理サブブロックによって処理される一般的なパケット・ヘッダの一部を示す。この実施例によれば、パケット・ヘッダ４９９は、４つの部分、すなわち、Ｌ２ヘッダ部４７５、Ｌ２カプセル化部４８０、Ｌ３アドレス独立部４８５、およびＬ３アドレス依存部４９０に区画される。
この例では、Ｌ２ヘッダ部４７５は、ＭＡＣ  ＳＡフィールドおよびＭＡＣ  ＤＡフィールドを備えることができる。カプセル化の種類に応じて（たとえば、ＩＥＥＥ８０２．１Ｑタグ付きカプセル化やＬＬＣ−ＳＮＡＰカプセル化）、Ｌ２カプセル化部は仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）タグ、または８０２．３タイプ／長さフィールドおよびＬＬＣ  ＳＮＡＰフィールドを含むことができる。Ｌ３アドレス独立部４８５は、ＩＰフラグ／フラグメント・オフセット・フィールドおよびプロトコル・フィールドを備えることができる。最後に、Ｌ３アドレス依存部４９０はＩＰ送信元フィールド、ＩＰ宛先フィールド、ＴＣＰ送信元ポート、およびＴＣＰ宛先ポートを備えることができる。Ｌ３アドレス独立部４８５およびＬ３アドレス依存部４９０内のフィールドの相対位置が、Ｌ２カプセル化部４８０の種類に応じて異なることに留意されたい。
第５図は、本発明の一実施例によるパイプライン式ヘッダ前処理サブブロックを示す。この実施例によれば、ヘッダ前処理論理３０５は４段パイプラインとして実装することができる。パイプライン内の各段は、パケット・ヘッダ４９９の対応する部分に作用する。図のパイプラインは、４段アービタ５０１ないし５０４、アドレス蓄積ブロック５１０、カプセル化ブロック５２０、Ｌ３ヘッダ・クラス突合せブロック５３０、およびＬ３アドレス依存ブロック５４０を含む。この例では、ヘッダ前処理論理３０５は、４つの入力ポートからのパケット・ヘッダを同時に処理することができる。たとえば、アドレス蓄積ブロック５１０は、第１の入力ポートからのパケットのＬ２ヘッダ部４７５を処理することができ、カプセル化ブロック５２０は第２の入力ポートからのパケットのＬ２カプセル化部４８０を処理することができ、Ｌ３ヘッダ・クラス突合せブロック５３０は、第３の入力ポートのＬ３アドレス独立部４８５を処理することができ、Ｌ３アドレス依存ブロック５４０は第４の入力ポートからのパケットのＬ３アドレス独立部４９０を処理することができる。
重要な点として、この実施例は４つのパイプライン段を参照して例示されているが、これよりも多いかあるいは少ない段を使用することができ、かつパケット・ヘッダ情報の異なるグループ分けを使用できることを理解されたい。第４図に示すヘッダ部のこの識別は、説明の都合上選択された識別である。これらのヘッダ部４７５ないし４９０の境界は、例示的なヘッダ部４７５ないし４９０のそれぞれ内のフィールドの既知の特性に基づいて容易に識別することができる。さらに、ヘッダ部４７５ないし４９０はほぼ等しい時間で処理することができる。
いずれの場合も、引き続きこの例で説明すると、アービタ５０１ないし５０４はパイプラインの各段へのアクセスの調和を図る。アービタ５０１ないし５０４は、所与のパケットを、アドレス蓄積ブロック５１０からＬ３アドレス依存ブロック５４０まで一度に１段ずつ順次処理させるように機能する。パイプラインの第１段、すなわちアドレス蓄積ブロック５１０は、パケット・ヘッダのＬ２ヘッダ部４７５からＭＡＣ  ＳＡおよびＭＡＣ  ＤＡを抽出するように構成される。次いで、アドレス蓄積ブロック５１０は、抽出された情報を、Ｌ２探索キー５４５の一部として使用されるように探索エンジンに転送する。
カプセル化ブロック５２０は、パケット・ヘッダのＬ２カプセル化部４８０のカプセル化の種類を判定するように構成される。上記で指摘したように、Ｌ２カプセル化部の後に続くフィールドの相対位置は、使用されるカプセル化の種類に応じて異なる。したがって、カプセル化ブロックはさらに、Ｌ２カプセル化部４８０の開始位置からＬ３アドレス独立部４８５の開始位置までのオフセットを算出する。次いで、このオフセットは、パケット・ヘッダを適切に整列するために後続の段によって使用することができる。
Ｌ３ヘッダ・クラス突合せブロック５３０は、Ｌ３ヘッダ・クラスの識別を容易にすることが知られている所定の値を含むことのできる複数のプログラム可能レジスタとパケット・ヘッダを比較することによってＬ３ヘッダのクラスを判定するように構成される。各プログラム可能レジスタは、任意の所与のパケットについて１つのヘッダ・クラスのみが一致するように設定すべきである。所与のレジスタが一致すると判定された後、Ｌ３探索キーの一部で使用されるクラス・コードが探索エンジンに出力される。
Ｌ３アドレス依存ブロック５４０は、Ｌ３探索キー５５５で使用されるＬ３アドレス依存部４９０の適切なバイトを抽出するように構成される。この抽出は、たとえば、Ｍ個のＣＰＵプログラム可能なバイト・ビット・マスクを使用することによって実行することができる。Ｌ３ヘッダ・クラス突合せブロック５３０によって判定されるヘッダ・クラスに対応するプログラム可能なバイト・ビット・マスクを使用して、所望のフィールドをマスクすることができる。有利には、ヘッダ前処理論理３０５をパイプライン式に実行することによって、ハードウェア実装オーバヘッドをなくすことができる。たとえば、第５図の論理を非パイプライン式に実装するのに通常必要とされる４つの処理ブロックではなく単一の処理ブロックで複数のパケット・ヘッダを同時に処理することができる。さらに、上記のヘッダ前処理と中継データベース・メモリ１４０へのアクセスとをパイプライン式に実行することによって追加の並列性を実現できることに留意されたい。たとえば、Ｌ２探索においてパケットが第５図のパイプラインを完了するのを待つ必要がなくなり、パケット・ヘッダが第１段を完了しＬ２探索キーを探索エンジン３７０から得られるようになった直後にＬ２探索を開始することができる。その後のＬ２探索は、前の中継データベース・メモリ・アクセスが完了した後、新しいＬ２探索キーが得られるようになったときに開始することができる。
中継データベース・メモリ
第６図は、本発明の一実施形態による第２図の中継データベース・メモリの物理構成を示す。図に実施例では、中継データベース・メモリ１４０は、２つの縦続されたフル・アソシエーティブ・コンテント指定メモリ（ＣＡＭ）６１０および６２０と、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）６３０とを含む。
スイッチ・ファブリック２１０は、ＣＰＵ１６１と協働し、リンク層（「階層２」とも呼ぶ）とネットワーク層（「階層３」とも呼ぶ）の結合パケット・ヘッダ・フィールド・ベースに基づく中継・フィルタリング・データベース１４０を維持する。中継・フィルタリング・データベース１４０は、主としてオフチップ・メモリ（たとえば、１つまたは複数のＣＡＭやＳＲＡＭ）に記憶され、リアルタイム・パケット中継・フィルタリング決定を下すための情報を含む。
本発明の譲渡人は、階層２（Ｌ２）エントリと階層３（Ｌ３）エントリを物理的にグループ分けすると有利であることに気付いた。したがって、場合によっては、Ｌ２エントリ群を「Ｌ２データベース」と呼び、Ｌ３エントリ群を論理的に「Ｌ３データベース」と呼ぶことがある。しかし、Ｌ２データベースおよびＬ３データベースがＣＡＭまで広がる可能性があることに留意されたい。すなわち、ＣＡＭがＬ２エントリおよび／またはＬ３エントリを含むことができる。階層２中継データベースと階層３データベースは共にＣＡＭ−ＲＡＭチップ・セットに記憶される。説明の都合上、中継データベース・メモリ１４０のＣＡＭ部に含まれるデータを「アソシエーティブ・データ」と呼び、それに対して中継データベース・メモリ１４０のＳＲＡＭ部に含まれるデータを「関連データ」と呼ぶ。
以下に詳しく説明するように、第１のサイズのキーを使用してＬ２データベースからエントリを検索することができ、第２のサイズのキーを使用してＬ３データベースからエントリを検索することができる。したがって、一実施例では、スイッチング要素１００は様々な幅のＣＡＭを混合することができる。中継データベース・メモリ１４０の構成にかかわらず、スイッチ・ファブリック２１０およびＣＰＵ１６１への論理ビューは、少なくとも２つの異なるサイズのビット一致演算を受け付ける連続メモリであるべきであり、その場合、メモリのすべてまたは一部は最大のビット一致演算と同じ幅を有する。
ＣＡＭの様々な組合せが企図される。様々な幅のＣＡＭおよび様々な内部構造（たとえば、ビット当たりマスク（ＭＰＢ）対グローバル・マスク）を使用することができる。いくつかの実施例では、ＣＡＭ６１０とＣＡＭ６２０は共に同じ幅を有することができ、それに対して他の実施例では、ＣＡＭ６１０とＣＡＭ６２０は異なる幅を有することができる。たとえば、一実施例では、ＣＡＭ６１０とＣＡＭ６２０が共に、幅が１２８ビットで深度が２Ｋであるか、あるいは第１のＣＡＭ６１０の幅が１２８ビットであり、第２のＣＡＭ６２０の幅が６４ビットである。Ｌ２エントリは通常、Ｌ３エントリよりも幅が狭いので、混合ＣＡＭ幅実施例では、Ｌ２エントリについてより狭いＣＡＭ幅を最適化すると有利である可能性がある。しかし、この場合、より狭いＣＡＭにはＬ２エントリしか記憶することができない。しかし、より高いＣＡＭにはＬ２エントリもＬ３エントリもそのまま存在することができる。
縦続された二重ＣＡＭ６１０および６２０を参照してこの実施例を説明したが、論理ビューが１つの連続ブロックであるので、Ｌ２データベースおよびＬ３データベースが上記で示したよりも多いかあるいは少ないＣＡＭを使用できることを理解されたい。たとえば、代替実施例では、Ｌ２データベースとＬ３データベースを単一のメモリに組み合わせることができる。
中継データベース・メモリ１４０の例示的な物理構成について説明したが、次に、このメモリに含まれるデータについて簡単に説明する。ＳＲＡＭ６３０の１つまたは複数のラインをＣＡＭ部内の各エントリと関連付けることができる。ＣＡＭの一部をＲＡＭとして使用できることに留意されたい。しかし、アソシエーティブ・データと関連データを区画する１つの目的は、効果的に探索するために最小限の１組のアソシエーティブ・データを生成し、同時に残りの関連データを独立のメモリ、たとえばより廉価なＲＡＭに記憶することである。以下に第８Ａ図ないし第８Ｃ図に関して論じるように、アソシエーティブ・データと関連データを分離することによって、中継データベース・メモリ１４０をより効率的に探索し更新することができる。アソシエーティブ・データと関連データを効率的に区画することによって追加の利点が実現される。たとえば、アソシエーティブ・データ・フィールド内のデータの量を最小限に抑えることによって、ＣＰＵ１６１によって随時実行することのできるＬ３エントリのシャッフリングなど、中継データベースのアクセスおよび維持に必要な時間および資源が少なくなる。さらにこの効率的な区画によって、中継データベースの集合的なコピーを中央メモリ１６３に維持するために中継データベース全体について随時撮ることのできるスナップ・ショットに必要な時間も短縮される。
一般に、アソシエーティブ・データは、探索キーが突き合せられるデータである。この場合、通常、パケット・アドレス情報が有用である。一実施例では、アソシエーティブ・データは、エントリの種類（たとえば、Ｌ２やＬ３）に応じて以下のフィールドのうちの１つまたは複数を含むことができる。
（１）アソシエーティブ・エントリの種類を示すクラス・フィールド
（２）着信パケットのＭＡＣ  ＤＡフィールドまたはＭＡＣ  ＳＡフィールドと突き合せることのできる媒体アクセス制御（ＭＡＣ）アドレス
（３）仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）識別子（ＶＩＤ）フィールド
（４）インタネット・プロトコル（ＩＰ）宛先アドレス
（５）ＩＰ送信元アドレス
（６）ＴＣＰフローまたは非分割ＵＤＰフローに関する宛先ポート番号
（７）ＴＣＰフローまたは非分割ＵＤＰフローに関する送信元ポート番号
（８）効率的なルチキャスト経路指定をサポートする入力ポート・リスト
アソシエーティブ・データは、前述のビット当たりマスク（ＭＰＢ）ＣＡＭを使用することによって可変ビットの上記のフィールドを含むことができる。
関連データは一般に、パケットを中継することのできる出力ポートの表示、制御ビット、送信元ノードおよび宛先ノードがアクティブかどうかを追跡するための情報などの情報を含む。関連データは、ＭＡＣ  ＤＡ置換え用のＭＡＣアドレスとタグ付け用のＶＩＤも含む。具体的には、関連データは以下のフィールドのうちの１つまたは複数を含むことができる。
（１）パケットを中継することのできる１組の１つまたは複数のポートを示すポート・マスク
（２）優先順位タグ付けおよび優先順位キューイングに関する優先順位フィールド
（３）ｂｅｓｔ  ｅｆｆｏｒｔとしてどのポートがパケットを待機させるべきかを示すｂｅｓｔ  ｅｆｆｏｒｔマスク
（４）パケット・ヘッダのみをＣＰＵに転送すべきであることを示すヘッダ専用フィールド
（５）マルチキャスト経路指定を活動化するためのマルチキャスト経路フィールド
（６）最初のＤＡを置き換えるために使用される次のホップＬ２ＤＡを定義する次ホップ宛先アドレス・フィールド
（７）ＶＬＡＮ同士の間の経路指定において、たとえば着信タグとは異なる発信タグが必要であるときに、パケットの新しいタグとして使用することのできる新規ＶＩＤフィールド
（８）新しいＶＩＤフィールドを使用すべきであることを示す新規タグ・フィールド
（９）中継データベースにおいてどのＬ２エントリがアクティブであるかと、どのエントリを削除できるかを判定するためのエージド送信元表示
（１０）中継データベースにおいてＬ２エントリとＬ３エントリのうちのどちらかがアクティブであるかと、どちらを削除できるかを判定するためにＩＥＥＥ８０２．１ｄ型アドレス・エージングを実施するためのエージド宛先表示
（１１）マージ関数に、Ｌ３結果が得られるときでもＬ２結果を中継に使用するよう命令するＬ２オーバライド表示
（１２）自動Ｌ２学習もエージングも受けない中継データベース内のスタティック・エントリを識別するスタティック表示
（１３）次のスイッチング要素上で使用される突合せサイクルの種類（Ｌ２またはＬ３）を制御するために内部（縦続）リンクを介して使用される分散フロー表示
（１４）エントリまたはエントリ群の着信速度を推定するフロー速度カウント
中継データベース探索スーパーサイクル決定フロー
第７図は、本発明の一実施例による中継データベース・メモリ探索スーパーサイクル決定論理を示す流れ図である。ステップ７０２で、パケットが内部リンク上で受信されるか、あるいは外部リンク上で受信されるかに応じて、処理はそれぞれ、ステップ７０４またはステップ７０６に進む。
内部リンク特有の処理にはステップ７０４、７１２、７１４、７２０、７２２、および７２４が含まれる。ステップ７０４で、パケットが内部リンクから受信されたので、検査が行われ、パケットが分散フローの一部であるかどうかが判定される。そうである場合、処理はステップ７１４に進む。パケットが分散フローの一部ではない場合、処理はステップ７１２に進む。
内部リンクについて学習は実行されず、したがってステップ７１２で、中継データベース・メモリ１４０上でＤＡ探索のみが行われる。
ステップ７１４で、Ｌ３探索が行われ、着信パケットに関する中継決定が検索される。ステップ７２０で、ステップ７１４の探索中に一致するＬ３エントリが見つかったかどうかが判定される。そうでない場合、ステップ７２２で、クラス処置デフォルト処理が適用され（たとえば、パケットまたはパケット・ヘッダがＣＰＵ１６１に中継され）、処理はステップ７８０に進む。一致するＬ３が見つかった場合、ステップ７２４で、一致するエントリに対応する関連データが中継データベース１４０から読み取られ、処理はステップ７８０に進む。
ステップ７０８で、階層２学習が実行される。学習サイクルの後で、ヘッダ・クラスが判定され、ステップ７１６で、ヘッダ・クラスがＬ３ユニキャスト経路ヘッダ・クラスと比較される。ステップ７１６でクラスが一致した場合、処理はステップ７２６に進む。そうでない場合、ステップ７１８で他の試験が実行される。ステップ７１８で、ヘッダ・クラスが残りのＬ３ヘッダ・クラスと比較される。
Ｌ２として分類されたヘッダに関連するパケットに関連する特定の処理にはステップ７２８および７３８が含まれる。ヘッダ・クラスがＬ３ヘッダ・クラスではないと判定された場合、ステップ７２８で、Ｌ２中継決定についてＤＡ探索が実行される。ステップ７３８で、Ｌ２決定アルゴリズムが適用され、処理はステップ７８０に進む。
Ｌ３経路として分類されたヘッダに関連するパケットに関連する特定の処理にはステップ７２６、７３２、７３６、７４８、７５０、７５４、７５６、７５２、７５８、および７６０が含まれる。ステップ７２６で、中継データベース１４０上でＬ３探索が実行される。一致するＬ３エントリが見つかった場合（ステップ７３２）、一致するエントリに対応する関連データが中継データベース１４０から読み取られる（ステップ７３６）。そうでない場合、ステップ７３４でクラス処置オプションが適用され、処理はステップ７８０に進む。
パケットがマルチキャスト・パケットである場合（ステップ７４８）、Ｔｉｍｅ＿Ｔｏ＿Ｌｉｖｅ（ＴＴＬ）カウンタが０または１であるかどうかが試験され（ステップ７５０）、そうでない場合、処理はステップ７５２に進む。ＴＴＬが０または１であると判定された場合、ステップ７５０でパケットがＣＰＵ１６１に中継され、その後ステップ７８０に進む。そうでない場合、ステップ７５４で、宛先アドレス探索が実行され、中継データベース１４０からＬ２中継エントリが検索され、Ｌ２決定アルゴリズムが適用される（ステップ７５６）。
ステップ７４８でパケットがユニキャスト・パケットであると判定された場合、ＴＴＬが０または１であるかどうかが試験される（ステップ７５２）。ＴＴＬが０または１であると判定された場合、パケットがＣＰＵ１６１に中継される。そうでない場合、ステップ７６０でＬ３突合せが使用され、処理はステップ７８０に進む。
Ｌ３として分類されたヘッダに関連するパケットに関連する特定の処理にはステップ７３０、７４０、７４２、７６２、７６４、７６６、７４４、７４６、７６８、および７７０が含まれる。ステップ７３０で、中継データベース１４０に対してＬ３探索が要求される。一致するＬ３エントリが見つかった場合（ステップ７４０）、一致するエントリに対応する関連データが中継データベース１４０から読み取られる（ステップ７４４）。そうでない場合、一致するＬ３エントリが見つからないときは、ステップ７４２でＤＡ探索が実行され、中継データベース１４０において一致するＬ２エントリが見つけられる。
中継決定が、Ｌ２決定を使用すべきであることを示している場合（ステップ７６２）、ステップ７７０でＬ２決定アルゴリズムが適用される。そうでない場合、クラス処置オプションが適用される（ステップ７６４）。Ｌ２結果を使用してパケットを中継すべきであることをクラス処置オプションが示している場合（ステップ７６６）、処理はステップ７７０に進む。そうでない場合、処理はステップ７８０に分岐する。
ステップ７４６で、パケットの宛先アドレスを使用して中継データベース１４０上で宛先アドレス探索が実行される。中継決定が、Ｌ２決定を使用すべきであることを示している場合（ステップ７６８）、処理はステップ７７０に進む。そうでない場合、ステップ７４４で検索された関連データが使用され、処理はステップ７８０に進む。ステップ７７０で、Ｌ２アルゴリズムが適用され、処理はステップ７８０に進む。最後に、中継決定がアセンブルされる（ステップ７８０）。
第７図に示すように、外部リンク上に着信したパケットに関するパケット処理では通常、２回ないし４回のアソシエーティブ参照が必要である（すなわち、Ｌ２ＳＡ突合せ、Ｌ２学習、ユニキャスト経路クラス突合せ、Ｌ２ＤＡ突合せのうちの２つ以上）。しかし、本発明の実施例によれば、Ｌ２学習のためにポート更新アクセスが必要なときにはＬ２ＤＡ突合せをなくすことができる。したがって、貴重なサイクルが節約される。Ｌ２ＤＡ突合せをなくすと、トポロジが変更されたときに１つの余分なパケットがフラッド(flood)することになる可能性があるが、ポート更新アクセスは比較的まれなイベントである。有利には、このようにして、アソシエーティブ参照の数が通常、機能を損なうことなしにパケット当たり最大３つに制限される。
中継データベース探索スーパーサイクル・タイミング
次に、中継データベース１４０内の中継情報の新規の区画とパイプライン式中継データベース・アクセスとに鑑みて、探索スーパーサイクルについて説明する。
第８Ａ図ないし第８Ｃ図は、コンテント指定メモリ（ＣＡＭ）探索スーパーサイクルの３つの最悪ケースを示すタイミング図である。有利には、第４図に関して説明したＣＡＭ−ＲＡＭアーキテクチャの間でデータを区画することによって、中継データベース・メモリをパイプライン式にすることができる。第８Ａ図ないし第８Ｃ図を参照すると理解されるように、スイッチ・ファブリックは、ＲＡＭの読取りおよび書込みをＣＡＭアクセス内に隠すことによって貴重なサイクルを節約する。たとえば、図の各スーパーサイクルについて、ＲＡＭの読取りおよび書込みを少なくとも部分的により低速のＣＡＭアクセス内に隠すことができる。
次に第８Ａ図を参照すると、Ｌ２ＳＡ探索およびＬ２ＤＡ探索を含む探索スーパーサイクルが示されている。第１のＣＡＭ短探索は、Ｌ２学習のためのＣＡＭ４１０および４２０のＬ２ＳＡ探索を表わす。Ｌ２ＳＡ探索が完了した後、ＳＲＡＭ６３０内の関連データをただちに更新することができ（たとえば、ＲＡＭ読取りやＲＡＭ書込み）、同時に次のＣＡＭ短探索（Ｌ２ＤＡ探索）を行うことができる。
第８Ｂ図は、Ｌ２探索とＬ３探索が組み合わされる場合を示す。第１のＣＡＭ短探索はＬ２ＳＡ探索を表わす。ＣＡＭ長探索は、中継データベース１４０での一致するＬ３エントリの探索を表わす。この場合も、Ｌ２ＳＡ探索が完了した後、学習が必要な場合、次のＣＡＭアクセス中にＳＲＡＭの読取りおよび書込みを実行することができる。一致するＬ３エントリが見つかった場合、Ｌ２ＤＡ探索を表わす第２のＣＡＭ短探索中に、一致するエントリに対応する関連データのＲＡＭバースト読取りを実行することができる。
第８Ｃ図は、Ｌ２探索とＬ３探索が組み合わされる別の場合を示す。しかし、この場合、第２のＣＡＭアクセスは実行されない。
ＣＡＭとＳＲＡＭをパイプライン式にすることによってメモリの速度が実際上、結合解除されることを理解されたい。さらに、次に、ＣＡＭとＳＲＡＭの間の区画を理解すべきである。ＣＡＭアクセスはＳＲＡＭへのアクセスよりも低速であるので、中継情報のうちのできるだけ多くの情報をＳＲＡＭに割り付けることが望ましい。
ＲＡＭ書込みの完了と第２のＣＡＭアクセスの完了との間のギャップを見ると、ＣＡＭの速度を高くすればこのようなギャップを縮小できることが明らかである。本発明の譲渡人は、将来の技術発展によって、より高速のＣＡＭを開発することが可能になり、それによって、たとえば、追加のポートまたはより高速のポート用の追加の資源が生成されるものと予想している。
第８Ａ図ないし第８Ｃ図にはパイプライン式中継データベース・アクセスのみが示されているが、本発明のスイッチ・ファブリック２１０の全体的な速度には他の多数の寄与があることに留意されたい。たとえば、前述のように、高度パイプライン式スイッチ・ファブリック論理には、パイプライン式ヘッダ処理、パイプライン式中継データベース・アクセス、およびパイプライン式中継データベース／ヘッダ処理が含まれる。
一般化されたコマンド処理
本発明の一実施例を実施することのできる例示的な環境について説明したが、次に、一般的なコマンド処理について説明する。第９図は、本発明の一実施例による典型的な中継データベース・メモリ・アクセス・コマンドに関する一般化されたコマンド処理を示す流れ図である。ステップ９１０で、ＣＰＵは、ＰＩＯを使用してソフトウェア・コマンド実行ブロック３４０内の適切なデータ・レジスタをプログラムする。たとえば、ある種の中継データベース・アクセス・コマンドは、このコマンドを発行する前にＣＰＵ１６１から供給されるべき指定されたアドレスに作用することができる。
ステップ９２０で、ＣＰＵ１６１は、コマンドに適切なパラメータを供給した後、所望のコマンドを発行する。これは、所望のコマンドに対応するコマンド・コードをコマンド・レジスタに書き込むことによって行うことができる。
この実施例によれば、ＣＰＵ１６１は、ステップ９２０で発行されたコマンドが完了する（ステップ９３０）まで状況レジスタをポーリングする。別法として、コマンドが所定の最大応答時間を有するので、ＣＰＵ１６１は状況レジスタをポーリングする必要がなく、自由に他の機能を実行することができ、かつコマンドが完了することが予想される時間に状況レジスタを検査することができる。他の代替策として、スイッチ・ファブリック用の割込み機構が設けられ、要求されたコマンドが完了したときにそのことがＣＰＵ１６１に通知される。
ステップ９４０で、コマンドが完了した後、ＣＰＵは結果に作用することができる。結果は、たとえばソフトウェア・コマンド実行ブロック３４０内のメモリ・マップ・レジスタに供給することができる。この場合、ＣＰＵ１６１は、必要に応じてＰＩＯ読取りを用いて結果が検索される。
ステップ９５０で、ＣＰＵ１６１によってコマンドが発行されることにより、たとえばソフトウェア・コマンド実行ブロック３４０内の論理がトリガされ、適切なコマンド・パラメータがロードされる。このようなコマンド・パラメータは、すでにステップ９１０でＣＰＵ１６１から供給されているものと仮定する。
ステップ９６０で、ソフトウェア・コマンド実行ブロック３４０は、中継データベース・メモリ特有の適切なコマンドを発行し、要求されたタスクを実行する。このように、ＣＰＵ１６１は、中継データベース１４０を実装するために使用される特定のメモリ用の基本的な生命令セットの知識を必要としない。
ステップ９７０で、中継データベース１４０アクセスが完了すると、ソフトウェア・コマンド実行ブロック３４０は適切なインタフェース・レジスタ内の結果を更新する。次いでステップ９８０で、ソフトウェア・コマンド実行ブロック３４０は、コマンドが完了したことをＣＰＵ１６１に示す１つまたは複数のコマンド状況フラグをセットする。他の実施例では、コマンドが首尾良く完了したか否か、エラーが起こったか否か、および／またはＣＰＵ１６１に有用な他の情報を示す１つまたは複数の追加の状況フラグを設けることができる。
一般的なコマンド処理フローについて説明したが、次に、例示的な１組のコマンドおよびその使用法について説明する。
例示的なコマンド・セット
この実施例によれば、中継データベース１４０内のエントリにアクセスするための１つまたは複数のコマンドを設けることができる。特に、新たに学習された階層２（Ｌ２）エントリを読み取ると有用である可能性がある。Ｌ２エントリを検索するとき、ＣＰＵ１６１はまず、中継データベース・メモリ１４０をアドレス指定するようにスイッチ・ファブリック２１０内のカウンタをプログラムする。その後、ＣＰＵ１６１は、スイッチ・ファブリック２１０内のコマンド・レジスタにＲｅａｄ＿ＣＡＭ＿Ｅｎｔｒｙコマンドを書き込む。ＣＰＵがスイッチ・ファブリックのサービスを受ける順番になると、スイッチ・ファブリックはカウンタを読み取り、中継データベース・メモリ１４０にアクセスして、新たに学習されたＬ２エントリを検索する。次いで、スイッチ・ファブリック２１０は、ＣＰＵ１６１からアクセスできる出力レジスタにＬ２エントリを書き込み、コマンド状況終了フラグをセットする。このコマンドが完了した後、ＣＰＵ１６１は、コマンドが成功したものと仮定して、出力レジスタからＬ２エントリを読み取ることができる。
Ｒｅａｄ＿ＣＡＭ＿Ｅｎｔｒｙコマンドは、アドレス・カウンタ・レジスタと共に、たとえば、中継データベース全体のソフトウェアのイメージの更新に関連するバースト読取りに特に有用である。ハードウェアが自動的に、各メモリ・アクセスが完了したときにアドレス・カウンタ・レジスタを増分するので、ソフトウェアは、第１のメモリ・アクセスの前にアドレス・レジスタをプログラムしておくだけでよい。このように、ソフトウェアは中継データベース１４０全体を非常に効率的に読み取ることができる。同様に、Ｌ３エントリ初期設定中の書込みのシーケンスなど他の中継メモリ・アクセスも簡略化されることが明らかであろう。次に、中継データベース・メモリ１４０にエントリを書き込む機構について説明する。
ＣＰＵ１６１が中継データベース・メモリにエントリを書き込めるようにすることも好都合である。特に、中継データベース内のすべてのＬ３エントリを所定のフィラー（またはダミー）値で初期設定すると有用である可能性がある。またこのコマンドは、Ｌ３エントリアルタイムを無効化する場合に有用であるか、あるいはたとえば、ビット当たりマスク（ＭＰＢ）コンテント指定メモリ（ＣＡＭ）でマスク更新を行う前に有用である可能性がある。この目的でＷｒｉｔｅ＿ＣＡＭ＿Ｅｎｔｙコマンドが提供される。この場合も、ＣＰＵ１６１はまず、スイッチ・ファブリック２１０内の適切なカウンタをプログラムすべきである。ＣＰＵ１６１は、中継データベース・メモリ１４０に書き込むべきＬ３キーも供給する。これらのステップの後で、ＣＰＵ１６１は、コマンド・レジスタへのＰＩＯ書込みを使用してＷｒｉｔｅ＿ＣＡＭ＿Ｅｎｔｒｙコマンドを発行することができる。次いで、ＣＰＵ１６１は、コマンド状況のポーリングを開始することができる。スイッチ・ファブリック２１０は、ＣＰＵ１６１から供給されたパラメータを読み取り、対応するＬ３エントリを所定のフィラー（またはダミー）に初期設定する。書込みが完了した後、スイッチ・ファブリック２１０は、コマンド状況終了フラグをセットすることによってコマンドの状況をＣＰＵ１６１に通知する。
関連データにアクセスするためのコマンドを設けることもできる。本発明の一実施例によれば、（１）供給されたアドレスを学習すること、（２）供給された探索キーに対応する関連データを読み取ること、（３）中継データベース・エントリをエージングすること、（４）エントリを無効化すること、（５）特定の探索キーに対応する、ＭＰＢ  ＣＡＭに記憶することのできるマスク・データなどのマスク・データにアクセスすること、および（６）中継データベース・エントリを置き換えることの各動作が実行される。
Ｌ２送信元アドレス学習は、Ｌｅａｒｎ＿Ｌ２＿ＳＡコマンドによって実行することができる。まず、ＣＰＵ１６１は、Ｌ２探索キー、および挿入すべき新しいエントリまたは修正されたエントリを用いてスイッチ・ファブリック２１０内の適切なレジスタをプログラムする。次いで、ＣＰＵ１６１はＬｅａｒｎ＿Ｌ２＿ＳＡコマンドを発行し、コマンド状況のポーリングを開始することができる。スイッチ・ファブリック２１０は、ＣＰＵ１６１から供給されたパラメータを読み取る。供給されたアドレスと一致するエントリが中継データベース１４０内に見つからなかった場合、新しいエントリが中継データベースに挿入される。挿入が完了した後、あるいは一致するエントリがすでに存在していることを検証した後、スイッチ・ファブリック２１０は、コマンド状況終了フラグをセットすることによってＣＰＵ１６１にコマンドの状況を通知する。
ＣＰＵ１６１がエージングを実行できるようにすることも好都合である。特に、Ｌ２中継データベース・エントリおよびＬ３中継データベース・エントリをエージングすると有用である。この目的のためにＡｇｅ＿ＳＡコマンドおよびＡｇｅ＿ＤＡコマンドが設けられている。ＣＰＵ１６１は適切なキーおよび修正済みエージ・フィールドをスイッチ・ファブリック・インタフェースに書き込む。次いで、ＣＰＵ１６１はＡｇｅ＿ＳＡコマンドまたはＡｇｅ＿ＤＡコマンドを発行する。Ａｇｅ＿ＳＡコマンドは、供給された探索キーに対応するＬ２エントリ内の送信元アドレス・フィールドを設定する。Ａｇｅ＿ＤＡコマンドは、供給された探索キーに対応するＬ２エントリまたはＬ３エントリの宛先アドレス・エージ・フィールドを設定する。ＣＰＵ１６１は、コマンドを発行した後、コマンド状況のポーリングを開始することができる。スイッチ・ファブリック２１０は、ＣＰＵ１６１から供給されたデータを読み取り、一致するエントリ内の適切なエージ・フィールドを更新する。エージングが完了した後、スイッチ・ファブリック２１０は、コマンド状況終了フラグをセットすることによってコマンドの状況をＣＰＵ１６１に通知する。
ＣＰＵ１６１は、たとえば、エージングされたＬ２エントリなどの中継データベース・エントリを無効する能力を有することが必要になる可能性がある。この目的のためにＩｎｖａｌｉｄａｔｅ＿Ｌ２＿Ｅｎｔｒｙコマンドが設けられている。ＣＰＵ１６１は、Ｉｎｖａｌｉｄａｔｅ＿Ｌ２＿Ｅｎｔｒｙコマンドを発行する前に、スイッチ・ファブリック２１０内の適切なアドレス・カウンタをプログラムする。ＣＰＵ１６１は、コマンドを発行した後、コマンド状況のポーリングを開始することができる。スイッチ・ファブリック２１０は、ＣＰＵ１６１から供給されたデータを読み取り、指定されたアドレス・カウンタ位置にある妥当性ビットをリセットする。エントリ無効化が完了した後、スイッチ・ファブリック２１０は、コマンド状況終了フラグをセットすることによってコマンドの状況をＣＰＵ１６１に通知する。
ＭＰＢ  ＣＡＭを使用する実施例では通常、ＣＡＭはデータ・セットおよびマスクを交互に記憶する。各データ・セットは対応するマスクを有する。マスクは、対応するＣＡＭラインからデータの一部をプログラム可能に選択することを可能にする。したがって、ＣＰＵ１６１がＣＡＭ内の特定のアドレスに対応するマスク・データにアクセスできると好都合である。特に、特定のＣＡＭラインの様々な部分を選択するようにマスク・データを更新すると有用である。この目的のためにＵｐｄａｔｅ＿Ｍａｓｋコマンドが設けられている。ＣＰＵ１６１は、アドレス・カウンタ・レジスタをプログラムし、適切なレジスタへの新しいマスクをプログラムする。次いで、ＣＰＵ１６１は、Ｕｐｄａｔｅ＿Ｍａｓｋコマンドを発行し、コマンド状況のポーリングを開始することができる。スイッチ・ファブリック２１０は、ＣＰＵ１６１から供給されたパラメータを読み取り、指定されたアドレスに対応するマスク・データを更新する。マスク・データの更新が完了した後、スイッチ・ファブリック２１０は、コマンド状況終了フラグをセットすることによってコマンドの状況をＣＰＵ１６１に通知する。ＣＰＵ１６１は、Ｒｅａｄ＿Ｍａｓｋコマンドを使用し適切なアドレスを供給することによって、同様にマスク・データを読み取ることもできる。
最後に、エントリを置き換えられることが望ましい。特に、フィラー（またはダミー）Ｌ３エントリを新しい有効なＬ３エントリで置き換えると有用である。この目的のためにＲｅｐｌａｃｅ＿Ｌ３コマンドが設けられている。ＣＰＵ１６１は、スイッチ・ファブリック２１０にＬ３探索キーを供給し、新しい有効なＬ３エントリを供給する。次いで、ＣＰＵ１６１は、Ｒｅｐｌａｃｅ＿Ｌ３コマンドを発行し、コマンド状況のポーリングを開始することができる。スイッチ・ファブリック２１０は、ＣＰＵ１６１が供給されたパラメータを読み取り、中継データベース１４０での一致するＬ３エントリの探索を実行する。一致するＬ３エントリを見つけた後、この一致するエントリに対応する関連データが、ＣＰＵ１６１から供給された新しい有効なＬ３で置き換えられる。Ｌ３エントリが置き換えられた後、スイッチ・ファブリック２１０は、コマンド状況終了フラグをセットすることによってコマンドの状況をＣＰＵ１６１に通知する。
重要な点として、特定のコマンドと、特定のコマンドを実行する詳細なステップとに関して本発明の実施例を説明したが、当業者には、本発明が特定の１組のコマンドや実行シーケンスに限らないことが理解されよう。
上記の明細書では、特定の実施例を参照して本発明を説明した。しかし、本発明の広義の趣旨および範囲から逸脱せずに本発明に様々な修正および変更を加えられることが明白であろう。たとえば、ＩＰなど特定のネットワーク・プロトコルを参照して本発明の実施例を説明した。しかし、本明細書で説明した方法および装置は、他の種類のネットワーク・プロトコルにも適用することができる。したがって、本明細書および図面は制限的なものではなく例示的なものとみなすべきである。
【図１】
0004068166.tif 000002
【図２】
0004068166.tif 000003
【図３】
0004068166.tif 000004
【図４】
0004068166.tif 000005
【図５】
0004068166.tif 000006
【図６】
0004068166.tif 000007
【図７Ａ】
0004068166.tif 000008
【図７Ｂ】
0004068166.tif 000009
【図８Ａ】
0004068166.tif 000010
【図８Ｂ】
0004068166.tif 000011
【図８Ｃ】
0004068166.tif 000012
【図９】
0004068166.tif 000013