(57)【特許請求の範囲】
【請求項１】
入来するデータパケットを評価するよう構成されたネットワークスイッチポートフィルタであって、
複数の等式の最小項を記憶するよう構成された最小項メモリを含み、各最小項は、前記入来するデータパケットの、対応する選択されたバイトと比較されるための所定の値を特定し、各等式は、対応する等式識別子によって識別され、前記ネットワークスイッチポートフィルタはさらに、
前記入来するデータパケットの受信されたバイトを、前記受信されたバイトに対応する最小項と同時に比較して、最小項の比較結果を生成するよう構成された最小項生成器と、
複数の等式コアモジュールとを含み、各等式コアモジュールは、対応する選択された等式に対する対応する等式識別子と、最小項の比較結果とに基づき、対応するフレームタグを同時に生成するよう構成される、ネットワークスイッチポートフィルタ。
【請求項２】
各等式の最小項を受取るよう構成された中央処理ユニットインターフェイスと、
各等式の前記対応する等式識別子に基づき、前記最小項メモリに各等式の最小項を記憶するよう構成された最小項メモリコントローラとをさらに含む、請求項１に記載のネットワークスイッチポートフィルタ。
【請求項３】
前記最小項コントローラは、前記対応する等式識別子の２つの最下位ビットに基づき、前記最小項メモリに各等式の最小項値を記憶するよう構成される、請求項２に記載のネットワークスイッチポートフィルタ。
【請求項４】
前記最小項生成器は、前記入来するデータパケットの前記受信されたバイトを８クロックサイクル毎に一度受信するようさらに構成される、請求項１に記載のネットワークスイッチポートフィルタ。
【請求項５】
前記最小項生成器は、前記入来するデータパケットの前記受信されたバイトを、前記受信されたバイトに対応する前記最小項と、等式コアモジュールの数に基づいたクロックサイクル毎に一度、同時に比較するようさらに構成される、請求項４に記載のネットワークスイッチポートフィルタ。
【請求項６】
前記最小項メモリ内の、記憶された最小項の各々の位置は、レイヤ２パケット内のＩＰフレームの始まりと関連する、請求項３に記載のネットワークスイッチポートフィルタ。
【請求項７】
各等式コアモジュールは、前記入来するデータパケットのワイヤ速度で、かつ前記入来するデータパケットの終わりの前に、フレームタグを生成する、請求項１に記載のネットワークスイッチポートフィルタ。
【請求項８】
ネットワークスイッチポートで入来するデータパケットを評価する方法であって、
最小項メモリに複数の等式の最小項値を記憶するステップを含み、各最小項は、前記入来するデータパケットの、対応する選択されたバイトと比較されるための所定の値を特定し、各等式はそれぞれの等式識別子を含み、前記方法はさらに、
前記入来するデータパケットの受信されたバイトを、前記受信されたバイトに対応する前記最小項と同時に比較して、最小項生成器で最小項の比較結果を生成するステップと、
複数の等式コアモジュールから複数のフレームタグを同時に生成するステップとを含み、各等式コアモジュールは、対応する選択された等式に対する対応する等式識別子と、最小項の比較結果とに基づき、対応するフレームタグを同時に生成するよう構成される、方法。
【請求項９】
中央処理ユニットインターフェイスから前記複数の等式の前記最小項を受取るステップと、
各等式の前記対応する等式識別子に基づき、前記最小項メモリに各等式の最小項を記憶するステップとをさらに含む、請求項８に記載の方法。
【請求項１０】
前記記憶するステップは、それぞれの等式識別子フィールドの２つの最下位ビットに基づき、前記最小項メモリに最小項を記憶するステップを含む、請求項９に記載の方法。
【請求項１１】
前記同時に比較するステップは、
前記最小項生成器により、８クロックサイクル毎に一度、前記入来するデータパケットの前記受信されたバイトを受信するステップを含む、請求項８に記載の方法。
【請求項１２】
前記同時に比較するステップは、前記入来するデータパケットの前記受信されたバイトを、前記受信されたバイトに対応する前記最小項と、等式コアモジュールの数に基づいたクロックサイクル毎に一度、同時に比較するステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記記憶するステップは、レイヤ２パケット内のＩＰフレームの関連する始まりに基づき、前記最小項メモリ内に各最小項を位置付けるステップをさらに含む、請求項８に記載の方法。
【請求項１４】
前記同時に生成するステップは、各等式コアモジュールが、前記入来するデータパケットのワイヤ速度で、かつ前記入来するデータパケットの終わりの前に、それぞれのフレームタグを生成するステップを含む、請求項８に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明は、サブネットワーク間でデータパケットをスイッチするよう構成された、ＦＩＦＯを行なわないノンブロッキングネットワークスイッチにおけるデータパケットのスイッチングに関する。
【０００２】
【背景技術】
ローカルエリアネットワークは、ネットワークケーブルまたは他の媒体を用いてネットワーク上のステーションをリンクする。各ローカルエリアネットワークアーキテクチャは、各ネットワークノードにおいてネットワークインターフェイス装置がネットワーク媒体にアクセスできるようにする、メディアアクセス制御（ＭＡＣ）を用いる。
【０００３】
イーサネット（Ｒ）プロトコルＩＥＥＥ８０２．３は、データパケットを送信するための、半二重メディアアクセスメカニズムおよび全二重メディアアクセスメカニズムを特定するよう発展した。全二重メディアアクセスメカニズムは、２つのネットワーク要素間、たとえばネットワークノードとスイッチされたハブとの間に、ツーウェイのポイントツーポイント通信リンクをもたらす。
【０００４】
スイッチされたローカルエリアネットワークは、より高速の接続性、より柔軟なスイッチング性能、およびより複雑なネットワークアーキテクチャに適応する能力に対する需要の高まりに直面している。たとえば、本願出願人に譲渡された米国特許第５，９５３，３３５号は、異なるネットワークノード間でレイヤ２タイプのイーサネット（Ｒ）（ＩＥＥＥ８０２．３）データパケットをスイッチするよう構成されたネットワークスイッチを開示しており、受信されたデータパケットは、（ルータを介して）別のサブネットワークまたは所定の群のステーションを特定する、ＩＥＥＥ８０２．１ｑプロトコルに従ったＶＬＡＮ（仮想ＬＡＮ）タグ付きフレームを含むことができる。スイッチイングはレイヤ２レベルで生じるため、データパケットをサブネットワーク間で転送するために、典型的にはルータが必要となる。
【０００５】
レイヤ３（たとえばインターネットプロトコル）の処理を含むようにネットワークスイッチのスイッチング性能を高める努力は、重大な欠点を有するおそれがある。なぜなら、現在のレイヤ２スイッチは、好ましくは、ノンブロッキングモードで動作するよう構成されており、データパケットは、データパケットが受信される速度と同じ速度でスイッチから出力され得るからである。より高速のスイッチが、１００Ｍｂｐｓまたはギガビットのネットワーク等のより高速なネットワークに対し、レイヤ２スイッチングおよびレイヤ３スイッチングのどちらの能力も確実に提供できるよう、より新規な設計が必要とされる。
【０００６】
ノンブロッキングモードで動作するネットワークスイッチを開発する際の考慮事項の１つは、ネットワークスイッチの設計にバッファを含むことである。しかしながら、レイヤ２およびレイヤ３のデータパケットをスイッチする際に、ワイヤ速度と合致するためには、バッファのサイズが１５００バイトという大きさになり得る。バッファがネットワークスイッチの他の構成要素と比べ、ウェハチップ上で比較的大きな空間を占めるという事実と併せると、ワイヤ速度に合致するバッファを用いることにより、ウェハチップの全体サイズが増大することによってネットワークスイッチの全体コストを上げてしまう。
【０００７】
【発明の概要】
ネットワークスイッチが、データパケットをブロックすることなく、１００Ｍｂｐｓおよびギガビットのリンクに対してレイヤ２スイッチングおよびレイヤ３スイッチングの能力を提供することのできる構成が必要とされる。
【０００８】
さらに、ネットワークスイッチが、レイヤ２スイッチングおよびレイヤ３スイッチングの能力を、そうでなければスイッチされたデータパケットの待ち時間またはネットワークスイッチのサイズに影響を及ぼすであろう、ネットワークスイッチにおいて最小のバッファリングで提供することのできる構成が必要とされる。
【０００９】
さらに、データパケットの非ブロッキングを維持したまま、ネットワークスイッチにおいて最小のコストでレイヤ２スイッチングおよびレイヤ３スイッチングの能力を提供する構成が必要とされる。
【００１０】
さらに、バッファリングなしでレイヤ２スイッチングおよびレイヤ３スイッチングの能力を提供して、ネットワークスイッチのコストを下げる構成が必要とされる。
【００１１】
さらに、ネットワークスイッチポートが、入来するデータパケットを瞬時に評価してレイヤ３またはより上位のプロトコルを判定し、検出されたプロトコルに従い、関連するスイッチファブリックに対して、入来するデータパケットを処理するのに十分な時間をもたらすことのできる構成が必要とされる。
【００１２】
これらのおよび他の必要性は、ネットワークスイッチポートフィルタが入来するデータパケットを評価するよう構成されたこの発明によって達成される。ネットワークスイッチポートフィルタは、複数の等式の最小項（min term）値を記憶するよう構成された最小項メモリを含む。各最小項値は、入来するデータパケットの、対応する選択されたバイトと比較されるための所定の値を特定し、各等式は、対応する等式識別子によって識別される。ネットワークスイッチポートフィルタはまた、入来するデータパケットの受信されたバイトを、受信されたバイトに対応する最小項と同時に比較して、それぞれの最小項の比較結果を生成するよう構成された、対応する最小項生成器を含む。ネットワークスイッチポートフィルタは、複数の等式コアモジュールをさらに含む。各コアモジュールは、対応する選択された等式に対する対応する等式識別子と、最小項の比較結果とに基づき、対応するフレームタグを同時に生成するよう構成される。入来するデータパケットの、所与の受信されたバイトは、関連するすべての最小項と同時に比較されるため、このことにより、入来するデータパケットのリアルタイムの評価が確実となる。さらに、複数の等式コアモジュールは、バッファに対する必要性を最小にする。なぜなら、多数のフレームタグが同時に生成されることにより、入来するデータパケットをスイッチする際の待ち時間が最小になるためである。
【００１３】
この発明の一局面は、ネットワークスイッチポートで入来するデータパケットを評価する方法を提供する。この方法は、最小項メモリに複数の等式の最小項値を記憶するステップを含む。各最小項値は、入来するデータパケットの、対応する選択されたバイトと比較されるための所定の値を特定し、各等式は、対応する等式識別子によって識別される。この方法はまた、入来するデータパケットの受信されたバイトを、受信されたバイトに対応する最小項と同時に比較して、最小項生成器で最小項の比較結果を生成するステップを含む。この方法は、複数の等式コアモジュールから複数のフレームタグを同時に生成するステップをさらに含む。各等式コアモジュールは、対応する選択された等式に対する対応する等式識別子と、最小項の比較結果とに基づき、対応するフレームタグを同時に生成するよう構成される。最小項と多数の等式コアモジュールとを同時に比較することにより、入来するデータパケットをリアルタイムで確実に評価することができ、入来するデータパケットをバッファする必要性が減じられ、したがって、ネットワークスイッチポートの全体コストが減じられる。
【００１４】
この発明のさらなる利点および新規の特徴の、或る部分は以下の説明に述べられるであろうし、或る部分は以下の説明を考察することによって当業者に明らかになるか、この発明を実施することによって認識されるであろう。この発明の利点は、前掲の請求項において特に示された手段および組合せによって実現され、達成され得る。
【００１５】
同じ参照番号表示を有する要素が全体にわたって同じ要素を示す、添付の図面を参照する。
【００１６】
【発明を実施するための最良のモード】
図１は、イーサネット（Ｒ）（ＩＥＥＥ８０２．３）ネットワーク等のパケットスイッチネットワーク１０を示すブロック図である。パケットスイッチネットワークは、ネットワークステーション１４間でのデータパケットの通信を可能にする、集積された（すなわち、シングルチップの）マルチポートスイッチ１２を含む。各ネットワークステーション１４、たとえばクライアントワークステーションは、典型的に、ＩＥＥＥ８０２．３プロトコルに従ってデータパケットを１０Ｍｂｐｓまたは１００Ｍｂｐｓで送受信するよう構成される。集積されたマルチポートスイッチ１２の各々は、ギガビットのイーサネット（Ｒ）リンク１６によって相互接続され、サブネットワーク１８ａ、１８ｂ、および１８ｃ間でのデータパケットの転送を可能にする。したがって、各サブネットワークは、スイッチ１２と、関連する群のネットワークステーション１４とを含む。
【００１７】
各スイッチ１２は、メディアアクセス制御（ＭＡＣ）モジュール２２とパケット分類モジュール２４とを含むスイッチポート２０を含む。ＭＡＣモジュール２０は、ＩＥＥＥ８０２．３ｕプロトコルに従い、１０／１００Ｍｂｐｓの物理層（ＰＨＹ）トランシーバ（図示せず）を介して関連するネットワークステーション１４とデータパケットの送受信を行なう。各スイッチ１２はまた、受信されたデータパケットに対してフレーム転送判断を行なうよう構成されたスイッチファブリック２５を含む。特に、スイッチファブリック２５は、イーサネット（Ｒ）（ＩＥＥＥ８０２．３）ヘッダ内の発信元アドレス、宛先アドレス、およびＶＬＡＮ情報に基づいて、レイヤ２スイッチング判断を行なうよう構成される。スイッチファブリック２５はまた、イーサネット（Ｒ）パケット内のＩＰデータパケットの評価に基づいて、選択的レイヤ３スイッチング判断を行なうよう構成される。
【００１８】
図１に示されるように、各スイッチ１２は、関連するホストＣＰＵ２６と、バッファメモリ２８、たとえばＳＳＲＡＭとを有する。ホストＣＰＵ２６は、スイッチファブリック２５のプログラミングを含む、対応するスイッチ１２の動作の全体を制御する。バッファメモリ２８は、スイッチファブリック２５が、受信されたデータパケットに対する転送判断を処理している間に、対応するスイッチ１２に用いられてデータフレームを記憶する。
【００１９】
上述のとおり、スイッチファブリック２５は、レイヤ２スイッチング判断およびレイヤ３スイッチング判断を行なうよう構成される。レイヤ３スイッチング判断の利用可能性は、サブネットワーク１８ａ内のエンドステーション１４が、サブネットワーク１８ｂ、１８ｃ、またはその両方内の選択されたネットワークステーションにｅメールのメッセージを送信したいときに、特に有効となり得る。レイヤ２スイッチング判断しか利用できない場合、スイッチ１２ａのスイッチファブリック２５は特定の宛先アドレス情報なしにｅメールのメッセージをスイッチ１２ｂおよび１２ｃに送信し、スイッチ１２ｂおよび１２ｃはそれらのポートのすべてを溢れさせてしまうだろう。そうでなければ、スイッチ１２ａのスイッチファブリック２５はｅメールのメッセージをルータ（図示せず）に送らなければならず、そのことにより、さらなる遅延を招くであろう。スイッチファブリック２５がレイヤ３スイッチング判断を用いることにより、スイッチファブリック２５は、高度な転送判断を含む、パケットの扱い方について、さらに、パケットをビデオまたは音声等の待ち時間に敏感な適用例用の高い優先順位のパケットと考えるべきであるかどうか、といったインテリジェントな判断を行なうことができる。スイッチファブリック２５がレイヤ３スイッチング判断を用いることにより、スイッチ１２ａのホストＣＰＵ２６は、スイッチ１２ｂのＩＰアドレスに対応するＩＰアドレスを有するメッセージを送ることによって、別のスイッチ、たとえばスイッチ１２ｂを遠隔にプログラムすることもできる。すなわち、スイッチ１２ｂは、スイッチ１２ｂにアドレス指定されたメッセージを検出することに応答して、そのメッセージを対応するホストＣＰＵ２６に転送し、スイッチ１２ｂをプログラムすることができる。
【００２０】
開示された実施例によれば、図１のパケット分類モジュール２４は、入来するデータストリームと、入来するデータストリームのデータフォーマットを識別するテンプレートとの多数の同時比較を行なうよう構成される。特に、ホストプロセッサ２６のユーザは、或るＩＰプロトコルを有するデータパケットがスイッチファブリック２５によってどのように扱われるべきかを規定するポリシーを特定する。これらのポリシーは、スイッチファブリック２５内に、対応するＩＰプロトコルタイプの各々に対して１組のフレーム転送判断をロードすることによって実現される。したがって、スイッチファブリック２５は、ＨＴＴＰパケットに対して１組のフレーム転送命令を、ＳＮＭＰパケットに対して別の組のフレーム転送命令を、および高い優先順位のパケット（たとえばビデオ、または音声等）に対して別の組のフレーム転送命令を含むことができる。
【００２１】
図２Ａおよび図２Ｂは、パケット分類モジュール２４による、１つの等式の２つのテンプレートの同時処理を示す図である。図２Ａは等式のパケット分類モジュール２４による論理評価を示す。
【００２２】
Ｅｑ１＝Ｍ１*Ｍ２*Ｍ３*Ｍ４*（Ｍ５＋Ｍ６＋Ｍ７＋Ｍ８）
図２Ｂは、等式Ｅｑ１が最小項メモリ７０に実際にどのように記憶されるかを示す。等式Ｅｑ１は、４つのテンプレート６２ａ、６２ｂ、６２ｃ、および６２ｄを含む。テンプレート６２ａは、最小項Ｍ１、Ｍ２、Ｍ３、Ｍ４、およびＭ５を含み、テンプレート６２ｂは、最小項Ｍ１、Ｍ２、Ｍ３、Ｍ４、およびＭ６を含み、テンプレート６２ｃは、最小項Ｍ１、Ｍ２、Ｍ３、Ｍ４、およびＭ７を含み、テンプレート６２ｄは、最小項Ｍ１、Ｍ２、Ｍ３、Ｍ４、およびＭ８を含む。各テンプレート６２は、ＩＰデータパケット３２のヘッダに基づいて認識することのできる特定のＩＰデータフォーマットに対応する。たとえば、テンプレート６２ａおよび６２ｃはＨＴＴＰパケットを識別するよう構成されてよく、テンプレート６２ｂおよび６２ｄはＳＮＭＰパケットを識別するよう構成されてよい。特に、ＨＴＴＰパケットの識別は、それがＩＰｖ４フォーマットであり、ＩＰ内の生存時間フィールドが１より大きく、ＩＰヘッダ内のプロトコルフィールドがＴＣＰであり、ヘッダチェックサムが正しく、発信元ＴＣＰポートが８０であるか、または宛先ＴＣＰポートが８０であると、行なわれる。ＳＮＭＰパケットの識別は、それがＩＰｖ４フォーマットであり、ＩＰ内の生存時間フィールドが１より大きく、ＩＰヘッダ内のプロトコルフィールドがＴＣＰであり、ヘッダチェックサムが正しく、発信元ＴＣＰポートが２５であるか、または宛先ＴＣＰポートが２５であると、行なわれる。
【００２３】
したがって、以下の最小項は、上述の基準のすべてを表わすよう確立され得る。
【００２４】
Ｍ１＝パケットはＩＰｖ４フォーマットである
Ｍ２＝ＩＰ内の生存時間フィールドは１より大きい
Ｍ３＝ＩＰヘッダ内のプロトコルフィールドはＴＣＰである
Ｍ４＝ヘッダチェックサムは正しい
Ｍ５＝発信元ＴＣＰポートは８０である
Ｍ６＝宛先ＴＣＰポートは８０である
Ｍ７＝発信元ＴＣＰポートは２５である
Ｍ８＝宛先ＴＣＰポートは２５である
したがって、テンプレート６２ａおよび６２ｃはＨＴＴＰパケットを識別し、テンプレート６２ｂおよび６２ｄはＳＮＭＰパケットを識別する。したがって、等式１（Ｅｑ１）は、テンプレート６２ａ、６２ｂ、６２ｃ、または６２ｄのいずれかが真であると、特定の結果（たとえば、特定された値を有するタグ）がスイッチファブリック２５に出力されるべきであると規定する。
【００２５】
さらに、最小項Ｍ１…Ｍ８は、関連するテンプレート６２ａおよび／または６２ｂ内に、入来するデータストリーム内のデータバイトの関連位置に対応する所定の順序で配置される。図３に示されるように、最小項Ｍ１は、ＩＰパケット３２の第１のバイト（Ｂ１）と比較されるよう構成され、最小項Ｍ２は、Ｂ１に続く、ＩＰパケット３２の後のバイト（Ｂ２）と比較されるよう構成され、最小項Ｍ３は、Ｂ２に続く後のバイト（Ｂ３）と比較されるよう構成され、以下同様である。したがって、入来するデータストリーム内のデータバイトの関連位置に基づいた順序で最小項を有するテンプレート６２を用いることにより、入来するデータストリームと最小項との同時比較を多数行なうことができる。したがって、入来するデータパケットは多数のテンプレートと比較されて、入来するデータパケットのデータフォーマットだけでなく、スイッチファブリック２５がどのような処置を取るべきかをも判定することができる。
【００２６】
図３は、この発明の一実施例に従った、パケット分類モジュール２４を示すブロック図である。図３に示されるように、ネットワークスイッチポート２０は、ＭＡＣ２２、受信ＦＩＦＯバッファ２７、ヘッダモディファィア２９、およびパケット分類モジュール２４を含む。パケット分類モジュール２４は、ネットワークスイッチポートフィルタとも称され、ネットワークスイッチポート２０において入来するデータパケットをバッファなしで識別（すなわち評価）して、受信されたデータパケットのタイプに基づき、データパケットに対して行なわれるべき処置を特定する多数のタグをスイッチファブリック２５に与えるよう構成される。特に、パケット分類モジュール２４は、入来するデータパケットを、それぞれのデータフォーマットを識別するよう構成された複数の等式の複数のテンプレートと同時に比較する。パケット分類モジュール２４は、入来するデータパケットと複数のテンプレートとの比較に基づき、スイッチファブリック２５に与えられるべきタグを同時に生成する。
【００２７】
特に、パケット分類モジュール２４は、複数のテンプレートから少なくとも１つの合致したテンプレートを検出することにより、入来するデータパケットを識別する比較結果を生成する。次に、パケット分類モジュール２４は、どの等式が合致したテンプレートに対応するかを識別して、それらの等式によって特定されたタグを生成する。
【００２８】
図３に示されるように、ネットワークスイッチポートフィルタ２４は、最小項メモリ７０、フレーム識別子７２、最小項コントローラ７４、複数の等式コアモジュール７８ａ、７８ｂ、７８ｃ、および７８ｄ、等式結果メモリ８０、ならびにpi＿modインターフェイス８４を含む。図３のネットワークポートフィルタはまた、最小項メモリコントローラ８１を含む。
【００２９】
プロセッサインターフェイスモジュール（pi＿mod）８２は、生成された最小項をホストＣＰＵ２６から最小項メモリ７０内に転送するために用いられる。
【００３０】
最小項メモリ７０は、最小項値（たとえばＭ１、Ｍ２、Ｍ３等）を記憶するよう構成される。さらに、最小項メモリ７０は、最小項メモリコントローラ８１により、４つの区分に論理的に細分されるか、または分割され得る。
【００３１】
最小項メモリコントローラ８１は、最小項メモリ７０から最小項値を記憶し、検索するよう構成される。最小項メモリコントローラ８１はまた、pi＿modインターフェイス８４から最小項値を受取り、最小項コントローラ７４からのリクエストに応答して最小項値を検索するよう構成される。
【００３２】
最小項メモリコントローラ８１は、最小項メモリ７０を４つの論理区分７１ａ、７１ｂ、７１ｃ、および７１ｄに論理的に分割するようさらに構成される。最小項メモリコントローラ８１は、図５に示される等式識別子フィールド１１０の２つの最下位ビットに基づいた、各等式の各最小項の位置に基づいて最小項値を記憶するよう構成される。
【００３３】
図５は、最小項メモリ７０内の最小項構造のデータフォーマットを示す図である。開示された実施例によると、最小項は、等式識別子フィールド１１０の２つの最下位ビットに基づいた、比較されるべきデータバイトの関連位置に対応する順序で最小項メモリ７０に記憶される。したがって、２つの最下位ビットが「００」と特定された、等式の第１のデータバイトと比較されるべき最小項のすべては、最小項メモリ７０の論理区分７１ａの第１の部分内に共に記憶され、その後、第２のデータバイトと比較されるべき最小項が続き、以下同様である。
【００３４】
代替的に、最小項は、ＩＰヘッダ内の関連情報だけでなく、比較されるべきデータバイトの関連位置に基づいた順序で記憶されてよい。したがって、最小項は、発信元ＩＰアドレス、宛先ＩＰアドレス、および発信元を提供するデータバイトのシーケンスを、発信元ポートおよび宛先ポートと比較するための順序で記憶されてよい。この場合、ＩＰフレームの始まりにある、関連性のないデータバイトは、最小項メモリ７０の始まりに記憶される関連最小項を有さず、最小項メモリ７０の効率をさらに高めるだろう。
【００３５】
各テーブルエントリ９０は、最小項部分と評価部分とを含む。最小項部分は、マスクフィールド（ＭＡＳＫ）９４、期待データフィールド（ＥＸＰ＿ＤＡＴＡ）９６、およびオペレータフィールド（ＯＰＥＲＡＴＯＲ）９８を含む。最小項メモリ７０内のテーブルエントリ９０の位置に基づき、最小項コントローラ７４は、ＩＰパケットの始まり６４に対し、ＩＰパケット３２のどのバイトを対応する最小項と比較する必要があるのかを判定することができる。マスクフィールド９４は、比較を行なう際に最小項生成器７６によって用いられるマスクである。このマスクが１にセットされたビットを有すると、値が比較され、マスク値がフィールド内に０を有すると、比較はドントケア（don't care）となる。期待データフィールド９６は、ＩＰパケット３２の関連するデータバイトと比較されるべき期待データを特定する。オペレータフィールド９８は、最小項生成器によって行なわれるべき比較のタイプ、たとえば、未満、以下、等しい、より大きい、以上、および等しくない、を特定する。
【００３６】
評価部分は、ブランチ部分１００、最小項部分の比較が真である場合に対する応答部分（ＲＩＮＰ１）１０２、最小項部分の比較が偽である場合に対する第２の応答部分（ＲＩＮＰ０）１０６、および等式識別子１１０を含む。ブランチ部分１００は、等式内のＯＲ項の順序を特定する。たとえば、図２および図４に示される最小項Ｍ１は、そのブランチ部分が００００１１１１にセットされて、等式識別子フィールド１１０内で特定される等式の最初の４つのブランチが、対応する最小項を含むべきであることを示す。ブランチ部分に対して８つのビットを用いるのは、いかなる所与の等式にも最大８つのブランチがあると仮定したものである。
【００３７】
応答部分１０２は、比較されるデータバイトに対して最小項部分が真であると評価されると行なわれるべき動作を特定する。特に、終了ビット（ＦＩＮ）は、等式の結果が判定されて最小項の結果が真であると１にセットされる。初期に戻る（ＢＩＮＩＴ）は、最小項の結果が真であると評価プロセスが初期状態（init）に戻るべき場合に、１にセットされる。たとえば、最小項Ｍ１の場合、ＲＩＮＰ１のＦＩＮビットおよびＢＩＮＩＴビットは０にセットされる。なぜなら、最小項の結果が真であれば、さらに比較が必要とされるからである。最小項Ｍ５、Ｍ６、Ｍ７およびＭ８の場合、ＲＩＮＰ１のＦＩＮビットは１にセットされる。なぜなら、図２に示されるように、「真」の結果の比較結果が評価の終了となるからである。
【００３８】
応答部分１０６は、比較されるデータバイトに対して最小項部分が偽であると評価されると行なわれるべき動作を特定する。特に、終了ビット（ＦＩＮ）は、等式の結果が判定されて最小項の結果が偽であると１にセットされる。初期に戻る（ＢＩＮＩＴ）は、最小項の結果が偽であると評価プロセスが初期状態（init）に戻るべき場合に、１にセットされる。たとえば、最小項Ｍ１の場合、図２に示されるように、最小項の結果Ｍ１が偽であると等式がＩＮＩＴ状態に戻るように、ＦＩＮビットは０にセットされ、ＲＩＮＰ１のＢＩＮＩＴビットは１にセットされる。
【００３９】
等式識別子フィールド１１０は、最小項が対応する等式（または、等式内に１つしかテンプレートがない場合はテンプレート）を識別する。
【００４０】
したがって、方程式のコア７８ａ…７８ｄは、特定された等式の中に、入来するデータストリームと合致するテンプレート６２を有するものがあるかどうかを判定する。入来するデータストリームと多数のテンプレート６２との多数の同時比較に基づき、等式コアモジュール７８ａ…７８ｄは合致する等式を識別し、合致した方程式に対応する適切なタグを生成して、これをスイッチファブリック２５に与えることができる。所望であれば、コア７８ａ…７８ｄはまた、ヘッダモデファイア２９にコマンドを出力することにより、データをスイッチに転送する前にレイヤ２のヘッダ、レイヤ３のヘッダ、または両方のヘッダを変更する。
【００４１】
図３に戻ると、パケット分類器２４はまた、受信されたレイヤ２フレームのタイプを識別するよう構成されるフレーム識別子７２を含む。特に、受信されたレイヤ２フレームのタイプ（たとえばイーサネット（Ｒ）、ＩＥＥＥ８０２〜３等）を識別することにより、レイヤ２パケット３０内のＩＰパケット３２の開始位置６４を識別することができる。
【００４２】
最小項コントローラ７４は、最小項メモリコントローラ８２を介し、ＩＰフレーム３２の選択されたバイトに対応する最小項メモリ７０から最小項をフェッチするよう構成される。最小項コントローラ７４はまた、レイヤ２フレームのタイプを特定するフレーム識別子７２からフレームタイプ（frm＿type）信号を受信することに応答して、開始ポイント６４の実際のバイトの位置（byte＿location）を特定するよう構成される位置コンバータ８２を含む。したがって、最小項コントローラ７４は、ＩＰパケットの始まりを検出するのに応答して、ＩＰパケット３２の第１のバイト（Ｂ１）と比較されるべき最小項のすべて、たとえば、図６の等式Ｅｑ１、Ｅｑ２、およびＥｑ３に対する最小項Ｍ１、Ｍ９、およびＭ１４を、最小項メモリコントローラ８１にリクエストする。次に、最小項メモリコントローラ８１は、４線式シリアルバスを介して、最小項値（Ｍ＿ＳＴＲＵ  ＩＮＦＯ）を最小項生成器７６および等式コアモジュール７８ａ…７８ｄに転送する。
【００４３】
最小項生成器７６は、最小項コントローラ７４によってフェッチされた複数の等式の最小項と、入来するデータストリームの選択されたバイトとの間で実際に最小項の比較を行なう。所与の受信されたいかなるバイトも、最大４つの等式の最小項と比較され得る。しかしながら、最小項生成器７６は、対応するバイトの各々に対して最大３２個（３２）の最小項を比較するようにのみ構成される。したがって、所与の受信されたいかなるバイトに対しても、最小項生成器は最大３２個の最小項の比較を行なうことができ、３２個の最小項は４つ以下の等式に分配され得る。実際に、最小項生成器７６は、４つの最小項生成器７６ａ…７６ｄに論理的に分割され得る。
【００４４】
最小項生成器７６は、８クロックサイクル毎に一度、ＭＡＣインタフェース２２から転送される、入来するデータパケットの入来するバイトを受信するよう構成される。図６に示されるように、最小項生成器７６は、各クロックサイクル中に、受信されたバイトを複数の等式の最小項と比較するよう構成される。
【００４５】
図６は、受信されたバイトと、４つの等式に関連する最小項との比較サイクル中にある、図３の最小項生成器７６を示す。受信されたバイト１２０は、ネットワークスイッチポートフィルタ２４の８クロックサイクル毎に一度、最小項生成器７６に転送されるため、最小項生成器内の比較サイクル１２６は、ネットワークスイッチポートフィルタ２４の８つのクロックサイクルを含む。受信されたバイト１２０は、クロックサイクル０の１２４ａにおいて最小項生成器７６によって受信され、たとえば、等式１２２ａ…１２２ｄそれぞれの最小項Ｍ１、Ｍ１、Ｍ２、およびＭ４と比較され、クロックサイクル１の１２４ｂにおいて、最小項生成器７６は、等式１２２ａ…１２２ｄそれぞれの最小項Ｍ２、Ｍ４、Ｍ３、およびＭ４と比較する。これらの比較は、比較サイクル１２６の終わりまで続く。次の比較サイクル中に、最小項生成器７６は、後に入来するデータバイトを、後に入来するデータバイトに関連する最小項と同時に比較する。この態様で、多数の最小項比較が最小項生成器７６によって生成されて、等式コアモジュール７８ａ…７８ｄに転送される。
【００４６】
図３に戻ると、等式コアモジュール７８ａ…７８ｄは、最小項生成器７６から受信された最小項の比較結果と、対応する選択された等式に対する対応する等式識別子とに基づいて、対応するフレームタグを同時に生成するよう構成される。等式コアモジュール７８ａ…７８ｄは、等式識別子フィールドの２つの最下位ビットに基づいて等式を評価する。たとえば、図５の等式１２２ａの等式識別子フィールドは「００」によって特定され、等式１２２ｂの等式識別子フィールドは「０１」によって特定される。等式コアモジュール７８ａは、等式１２２ａを評価して、最小項生成器７６からの最小項の結果に基づいて対応するフレームタグを生成し、等式コアモジュール７８ｂは、１２２ｂを同時に評価して、それに対応するフレームタグを生成する。各等式コアモジュール７８ａ…７８ｄからの結果は、対応する等式結果メモリ８０ａ…８０ｄに記憶される。
【００４７】
上に開示された実施例によれば、ネットワークスイッチポートは、データパケットの入来するデータストリームと、対応するプロトコルを識別するよう構成された多数のテンプレートとの多数の同時比較を最小のバッファリングで行なうことのできるフィルタを含む。イーサネット（Ｒ）適用例において、バッファリングは１５００バイトの大きさを必要とし得る。ネットワークスイッチポートフィルタ２４は、フレームタグを並行して同時に生成する多数の等式コアモジュール７８ａ…７８ｄを含むため、ネットワークスイッチポートフィルタ２４は、入来するデータパケットのワイヤ速度についていくことができ、入来するデータのバッファリングに対する必要性が減じられる。したがって、大きなＦＩＦＯバッファに対する必要性をなくすことにより、ネットワークスイッチポート２０の全体のコストが減じられる。さらに、多数の同時比較により、ネットワークスイッチ１２は、ネットワークスイッチ内をブロックすることなく１００Ｍｂｐｓおよびギガビットのネットワークに対しレイヤ３スイッチングを行なうことができる。最後に、データが受信される順序での多数の同時比較により、ヘッダ全体が受信された後にしか処理を開始することのできないプログラマブル論理アレイ（ＰＬＡ）等の代替的スキームとは対照的に、リアルタイムの比較を行なうことができる。
【００４８】
この発明を、現時点で最も実用的な好ましい実施例であると考えられるものと共に説明してきたが、この発明が開示された実施例に限定されず、その反対に、前掲の請求項の精神および範囲内に含まれるさまざまな変更例および等価の構成物を包含するよう意図されることが理解されるべきである。
【図面の簡単な説明】
【図１】  この発明の一実施例に従った、それぞれのサブネットワーク間でデータパケットをスイッチするための多数のネットワークスイッチを含む、パケットスイッチネットワークのブロック図である。
【図２Ａ】  パケット分類モジュール２４による、１つの等式の２つのテンプレートの同時処理を示す図である。
【図２Ｂ】  パケット分類モジュール２４による、１つの等式の２つのテンプレートの同時処理を示す図である。
【図３】  この発明の一実施例に従った、ネットワークスイッチポートフィルタを含む、図１のネットワークスイッチポートを示すブロック図である。
【図４】  ネットワークスイッチポートフィルタ２４による最小項の同時処理をさらに詳細に示す図である。
【図５】  この発明の一実施例に従った、図３の最小項メモリにおける最小項のテーブルエントリを示す図である。
【図６】  受信されたバイトと、４つの等式に関連する最小項との比較サイクル中にある、図３の最小項生成器７６を示す図である。
【図１】
0004680478.tif 000002
【図２Ａ】
0004680478.tif 000003
【図２Ｂ】
0004680478.tif 000004
【図３】
0004680478.tif 000005
【図４】
0004680478.tif 000006
【図５】
0004680478.tif 000007
【図６】
0004680478.tif 000008