(57)【特許請求の範囲】
【請求項１】
スイッチであって、
少なくとも１つの転送用エントリを含むメモリを含み、該転送用エントリは転送オーバライドを含み、さらに、
連続的なレイヤに対して該メモリを連続的にサーチして、受信されたデ−タパケットの複数の部分に合致する複数の転送用エントリを捜すための手段と、
該転送用エントリに含まれるネクストフィールドの状態に応じて、該メモリの別のサーチを行なうかどうかを判断するための手段と、
合致する１つの転送用エントリから該転送オーバライドを抽出するための手段とを含む、スイッチ。
【請求項２】
該メモリは連想記憶メモリである、請求項１に記載のスイッチ。
【請求項３】
最終のサーチに対応する該抽出された転送オーバライドに応じて、該受信データパケットを転送するための手段をさらに含む、請求項１または２に記載のスイッチ。
【請求項４】
該転送用エントリは優先度フィールドをさらに含み、該優先度フィールドは該受信データパケットに割当てられた優先度を含む、請求項１〜３のいずれか１項に記載のスイッチ。
【請求項５】
該転送用エントリはホストトラフィックラベルフィールドをさらに含み、該ホストトラフィックラベルフィールドは該受信データパケットのための分類データを含む、請求項１〜４のいずれか１項に記載のスイッチ。
【請求項６】
該受信データパケットの該部分はプロトコルを特定する、請求項１〜５のいずれか１項に記載のスイッチ。
【請求項７】
該転送オーバライドは、受信されたデータパケットがホストに転送されるべきかどうかを示す、請求項１〜６のいずれか１項に記載のスイッチ。
【請求項８】
先のサーチにおいて抽出された該転送オーバライドが、現時点におけるサーチで抽出された該転送オーバライドで上書きされる、請求項１〜７のいずれか１項に記載のスイッチ。
【請求項９】
スイッチにおいて受信されたデータパケットのための転送オーバライドを選択する方法であって、
メモリを提供するステップを含み、該メモリは少なくとも１つの転送用エントリを含み、該転送用エントリは転送オーバライドを含み、さらに、
連続的なレイヤに対して該メモリを連続的にサーチして、受信されたデータパケットの複数の部分に合致する複数の転送用エントリを捜すステップと、
現時点における転送用エントリにおけるネクストフィールドの状態に応じて、該メモリの別のサーチを行なうかどうかを判断するステップと、
合致する１つの転送用エントリから該転送オーバライドを抽出するステップとを含む、方法。
【請求項１０】
該メモリは連想記憶メモリである、請求項９に記載の方法。
【請求項１１】
該連想記憶メモリはレジスタを含む、請求項１０に記載の方法。
【請求項１２】
最終のサーチに対応する該抽出された転送オーバライドに応じて該受信データパケットを転送するステップをさらに含む、請求項９〜１１のいずれか１項に記載の方法。
【請求項１３】
該転送用エントリは優先度フィールドをさらに含み、該優先度フィールドは該受信データパケットに割当てられた優先度を含む、請求項９〜１２のいずれか１項に記載の方法。
【請求項１４】
該転送用エントリはホストトラフィックラベルフィールドをさらに含み、該ホストトラフィックラベルフィールドは該受信データパケットのための分類データを含む、請求項９〜１３のいずれか１項に記載の方法。
【請求項１５】
該受信データパケットの該部分はプロトコルを特定する、請求項９〜１４のいずれか１項に記載の方法。
【請求項１６】
該転送オーバライドは、受信されたデータパケットがホストに転送されるべきかどうかを示す、請求項９〜１５のいずれか１項に記載の方法。
【請求項１７】
先のサーチにおいて抽出された該転送オーバライドが、現時点におけるサーチで抽出された該転送オーバライドで上書きされる、請求項９〜１６のいずれか１項に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の背景】
コンピュータネットワークにおいて、ネットワーキングスイッチは、スイッチに接続された入力ポートにおいてデータパケットを受信し、そのデータパケットをスイッチに接続された出力ポートに転送する（forward）。該スイッチは、入力ポートで受取ったデータパケットのヘッダに含まれる宛先アドレスに応じて、そのデータパケットをどの出力ポートに転送するかを決定する。
【０００２】
該スイッチは、典型的に、入力エンジンの転送用ロジック内に通常実現される転送用テーブルを含む。この転送用テーブルがサーチされ、データパケットに含まれる宛先アドレスに応じてそのデータパケットが転送されるべき１または複数の出力ポートが捜し出される。しかし、未知の宛先アドレスに対するデータパケットが受け取られた場合、該スイッチの転送用テーブルには合致するエントリが存在しない。したがって、入力ポートで受取られたそのようなデータパケットはスイッチ内のホストプロセッサに送られる。たとえば、転送用テーブル内に合致するエントリがないデータパケットは、ホストが転送用テーブルを更新することができるように転送される。
【０００３】
どのデータパケットをホストプロセッサに転送するかを決定するためのある公知の技術は、宛先アドレスのみに基づいて転送を決定するものであり、たとえば、すべてのブロードキャストデータパケットを転送する。すべてのブロードキャストデータパケットがホストプロセッサに転送される場合、ホストプロセッサはホストが必要とする情報を含まないかも知れないデータパケットも処理することになる。また、ホストプロセッサは必要とするがホストには転送されない非ブロードキャストデータパケットもあり得る。したがって、すべてのデータパケットを転送することは不必要にホストプロセッサの帯域幅を費やし、ホストが必要とし得るすべてのデータパケットを提供することにはならない。
【０００４】
データパケットをホストプロセッサに転送するための別の公知の技術は、データパケットのヘッダに含まれるデータタイプ、たとえばデータリンクヘッダに記憶されたタイプに基づいて、転送すべきデータパケットを選択するものである。ホストに転送すべきパケットタイプはホスト転送リスト内に記憶される。データパケットは、そのヘッダに含まれるパケットタイプがホスト転送リストの構成要素であった場合にホストに転送される。ホスト転送リストはスイッチ内にハードコードされる。開放型システム相互接続（「ＯＳＩ」）モデルにおいては、Ｌ２パケットタイプがデータリンクレイヤヘッダに含まれる。
【０００５】
たとえば、このＬ２パケットタイプは、アドレスリゾリューションタイプ（Address Resolution Type 「ＡＲＰ」）ブリッジプロトコルデータユニット（Bridge Protocol Data Unit）、またはインターネットプロトコル（Internet Protocol 「ＩＰ」）であり得る。この技術は、転送されるデータパケットを特定のタイプのものに限定することにより、ホストプロセッサに転送されるデータパケットの数を減じる。たとえば、データリンクヘッダに記憶されたＬ２データタイプを使用して、ブリッジプロトコルデータユニットデータパケットをホストプロセッサのみに転送することも可能であり、ＡＲＰデータパケットをホストプロセッサと出力ポートの両方に転送することも可能であり、また、ＩＰデータパケットをホストと出力ポートの両方に転送することが可能である。
【０００６】
この技術の欠点は、新しいＬ２データタイプを有するネットワーキングプロトコルがホストに転送される場合に、新しいデータパケットタイプがホスト転送リストに追加されねばならず、ハードウェアの更新が必要となることである。この技術はまた、たとえばＩＰデータパケット等の、ある特定のＬ２データタイプのすべてのデータパケットがホストによる処理に必要ではないかも知れないため、ホストプロセッサの帯域幅を不必要に費やしてしまうおそれがある。
【０００７】
【発明の概要】
ネットワークスイッチにおけるメモリは、転送オーバライドを有する少なくとも１つの転送用エントリを含む。該スイッチ内の転送オーバライドロジックは、該メモリを連続的にサーチして、受信したデータパケットの複数の部分に合致する複数の転送用エントリを捜し出す。該転送オーバライドロジックは、それら合致したエントリから該転送オーバライドを抽出する。該データパケットの合致する部分はヘッダフィールドであり得、複数レイヤでプロトコルを特定し得る。
【０００８】
該転送用エントリはまた、ネクストフィールドを含む。該転送オーバライドロジックは、該ネクストフィールドの状態に応じて該メモリのサーチを別に行なうかどうかを判断する。該メモリは連想記憶メモリであり得る。
【０００９】
サーチの完了後、該転送オーバライドロジックは転送用エントリから受信したデータパケットのための転送オーバライドを抽出する。該スイッチ内の転送選択ロジックは、該抽出された転送オーバライドに応じて受信データパケットを転送する。
【００１０】
該転送用エントリは、受信データパケットの内容に応じた優先度フィールドおよび、トラフィックラベルフィールドを含み得る。該トラフィックラベルフィールドおよび優先度フィールドは、ホストによって処理されるようにホストに転送され得る。
【００１１】
本発明の上述および他の目的、特徴ならびに利点は、添付の図面に示される本発明の好ましい実施例の以下のより特定的な説明から明らかとなるであろう。複数の図面を通じて同一の参照符号は同一の部分を示す。図面は必ずしも一定の比率で描かれておらず、本発明の原理を示すのに強調されているところもある。
【００１２】
【詳細な説明】
図１は、ネットワークスイッチ１００を示す。これは、スイッチ１００に接続された入力ポート１０２で受取られたデータパケットを転送するためのホスト転送用ロジック１２８を含む。入力ポート０−ｎ  １０２のいずれか１つで受取られたデータパケットは、入力ポートエンジン１０４で処理される。この入力ポートエンジン１０４内のホスト転送用ロジック１２８は、受信データパケットのヘッダにエンコードされたネットワーキングプロトコルから、その受信データパケットをどこに転送するかを判断する。この受信データパケットは、入力データ経路１１６上をセグメントバッファメモリ１０８へ、および／または、ホストデータ経路１１４上をホストインターフェイスロジック１０６へと転送され得る。
【００１３】
ホスト転送用ロジック１２８は、データパケットをセグメントバッファメモリ１０８とホストインターフェイス１０６の両方に転送するか、または、セグメントバッファメモリ１０８もしくはホストインターフェイス１０６のいずれかに転送することが可能であるが、ホスト転送用ロジック１２８はデータパケットを転送せずに、廃棄することもある。データパケットのヘッダにエンコードされたネットワーキングプロトコルに応じてデータパケットに転送用決定（forwarding decision）を割当てることにより、ホストによって必要とされるデータパケットのみがホストに転送される。また、新しいネットワーキングプロトコルが導入された場合には、ホストプロセッサにより、ホストインターフェイスロジック１０６およびホストデータ経路１１４を通じて、新しい転送用決定をホスト転送用ロジック１２８に追加することができる。
【００１４】
入力データ経路１１６上を転送されるデータパケットは、セグメントバッファメモリ１０８内に記憶され、出力データ経路１１８上を出力ポートエンジン１１０へと転送される。出力ポートエンジン１１０はそのデータパケットを、そのデータパケットに含まれるヘッダの内容に応じて、１または複数の出力ポート１１２に転送する。セグメントバッファメモリ１０８におけるデータパケットの記憶に関しては、デイビッドＡ．ブラウン（David A. Brown）による「インタリーブされたノンブロッキングパケットバッファのための方法および装置（"Method and apparatus for an Interleaved Non-Blocking Packet Buffer"）」と題された１９９９年８月３１日出願の同時係属中の米国特許出願連続番号第０９／３８６，５８９号に記載されており、その教示全体がここに引用により援用される。
【００１５】
ホストデータ経路１１４上をホストインターフェイスロジック１０６へと転送されたデータパケットは、ホストインターフェイスロジック１０６によりホストポートデータ経路１２０上をホストまたはマイクロプロセッサ（図示せず）へと転送される。ホストポートインターフェイスロジック１０６は、周辺制御インターフェイス（Peripheral Control Interface 「ＰＣＩ」）ホストポートインターフェイスである。ホストポートインターフェイスロジック１０６はＰＣＩに限定されることはなく、当業者によく知られている他のホストインターフェイスロジックであってもよい。ホストインターフェイスロジック１０６は、ホストインターフェイスロジック１０６において実現されるホストインターフェイスプロトコルに応じて、ホストデータ経路１１４をホストポートデータ経路１２０に変換する。
【００１６】
図２は、図１に示されるホスト転送用ロジック１２８を示す。ホスト転送用ロジック１２８は、プロトコル連想記憶メモリ（Content Addressable Memory 「ＣＡＭ」）、転送オーバライドロジック２００および転送選択ロジック２０４を含む。入力ポートエンジン１０４（図１）において入力ポート１０２（図１）でデータパケットが受取られると、そのデータパケットのヘッダ１０２ａがホスト転送用ロジック１２８内の転送オーバライドロジック２００に転送される。
【００１７】
転送オーバライドロジック２００は、受信データパケットのヘッダ１０２ａの内容に応じてプロトコルＣＡＭ２０２を連続的にサーチして、転送用エントリ３００（図３）内に記憶されている転送オーバライド２０６を捜し出す。転送用エントリ３００（図３）については、図３に関連して説明する。プロトコルＣＡＭ２００の複数回のサーチは、データパケットのヘッダ１０２ａ内の異なるフィールドの内容を使用して行なわれ得る。データパケットのヘッダ１０２ａは、少なくとも１つのレイヤヘッダを含み、レイヤヘッダは少なくとも１つのフィールドを含む。転送用エントリ３００（図３）のサーチは、最下位のレイヤヘッダから開始され、以後、次に高いレイヤヘッダが順にサーチされる。たとえば、転送用エントリの最初のサーチは、データリンクレイヤ（Ｌ２）ヘッダのタイプフィールドの内容を用いて行なわれ得る。転送用エントリ３００の２回目のサーチは、Ｌ２ヘッダのサーチ結果に応じて、ネットワークリンクレイヤヘッダ（Ｌ３）内のタイプフィールドの内容を用いて行なわれ得る。転送用エントリ３００の３回目のサーチは、Ｌ３のサーチ結果に応じて、トランスポートレイヤヘッダ（Ｌ４）のソースアドレスフィールドの内容を用いて行なわれ得る。別のレイヤのサーチを続けるかどうかは、各転送用エントリにおけるネクストフィールドの値によって判断される。
【００１８】
各サーチの開始時、転送オーバライドロジック２００は、データパケットの複数のレイヤヘッダのうち、１つのレイヤヘッダの内容の中から選択することによってサーチキー２０８を生成し、そのサーチキー２０８をプロトコル連想記憶メモリ（「ＣＡＭ」）２０２へと転送する。プロトコルＣＡＭ２０２内にこのサーチキー２０８に合致する転送用エントリ３００（図３）があれば、その転送用エントリ３００（図３）内に記憶されている関連データ（associated data）２１０が転送オーバライドロジック２００へと転送され、そこにその転送用エントリの現時点の（current）コピーが記憶される。関連データ２１０は転送オーバライド２０６を含むが、これは、この実施例においては表１に示すように２ビットの二進コードとして実現される。転送オーバライド２０６は、そのデータパケットをどこに転送すべきかを示す。最後のサーチが行なわれた後、最後のサーチで選択された転送用エントリ３００（図３）内の転送オーバライド２０６が転送選択ロジック２０４へと転送される。データパケットは、表１に示される転送オーバライド２０６の状態に応じて、入力データ経路１１６および／またはホストデータ経路１１４上を転送される。
【００１９】
【表１】
0004666866.tif 000002
プロトコルＣＡＭ２０２は小さなテーブルである。これは論理ゲートを用いてレジスタ内に実現することが可能であり、ホストプロセッサはそれらレジスタに対する読出および書込アクセス権を有する。転送選択ロジック２０４は、入力ポート１０２で受信されたデータパケットを、転送オーバライドロジック２００から転送された転送オーバライド２０６の状態に応じて、入力データ１１６および／またはホストデータ１１４へと転送する。転送選択ロジック２０４はホストバッファ（図示せず）および入力バッファ（図示せず）を含む。ホストバッファおよび入力バッファへの入力は、受信されたバッファである。ホストバッファの出力はホストデータ１１４であり、入力バッファの出力は入力データ１１６である。転送オーバライド２０６はバッファイネーブルロジック（図示せず）においてエンコードされ、ホストバッファイネーブル信号および入力バッファイネーブル信号が与えられる。したがって、この転送オーバライド２０６により、受信データパケットがホストバッファを介してホストデータ１１４へ、および／または、入力バッファを介して入力データ１１６へと転送されるべきかどうかが決定される。
【００２０】
図３は、プロトコルＣＡＭ２０２（図２）内の転送用エントリ３００を示す。転送用エントリ３００は、サーチキー２０８および関連データ２１０を含む。関連データ２１０は、ネクストフィールド３０２と、選択的なホストトラフィックラベル３０４と、選択的なサービスの質（Quality of Service 「ＱｏＳ」）またはＥタイプ識別子（Etype IDentifier 「ＥＩＤ」）フィールド３０６と、転送オーバライドコード２０６とを含む。転送用エントリ３００のコピーが転送オーバライドロジック２００（図２）内に記憶され、転送用エントリ３００のコピー内に記憶されている転送オーバライドコード２０６は、以後のプロトコルＣＡＭ２０２（図２）のサーチにおいて選択された別の転送用エントリに記憶されている転送オーバライドコード２０６でオーバライドされる。
【００２１】
ＱｏＳフィールド３０６は、受信データパケットの優先度を提供する。ホストトラフィックラベル３０４は、受信データパケットをどのように分類するかに関する情報を提供するタグである。ホストトラフィックラベル３０６およびＱｏＳまたはＥＩＤフィールド３０６は、ホストによって処理されるように、ホストインターフェイスロジック１０６を通じてホストプロセッサに転送することが可能である。転送用エントリ３００に含まれるサーチキー２０８および関連データ２１０の内容は、転送オーバライドロジック２００（図２）によって処理されるヘッダの内容に依存する。新しいサーチキー２０８が、各サーチにつき、異なるレイヤヘッダの内容を選択することによって生成される。転送用エントリ３００については、図４Ａから図４Ｅに関連して説明する。
【００２２】
転送オーバライドロジック２００（図２）は、ネクストフィールド３０２の状態から、データパケットに含まれる次に高いレイヤヘッダの内容を用いて転送用エントリ３００の別のサーチを行なうかどうかを判断する。現時点におけるサーチからの転送オーバライドコード２０６が、転送オーバライドロジック２００（図２）内の転送用エントリ（図示せず）のコピーに記憶されている先のサーチからの転送オーバライドコード２０６に優先する（override）。したがって、最後のサーチにおいて選択された転送オーバライドコード２０６が、そのデータパケットのための転送用決定となる。
【００２３】
たとえば、Ｌ２ヘッダに記憶されているタイプがＡＲＰである場合、すべてのＡＲＰデータパケットが入力データ経路１１６上およびホストデータ経路１１４上を転送されるので、さらなるサーチは不要である。したがって、転送用エントリ３００内のネクストフィールド３０２は「０」に設定される。しかし、Ｌ２ヘッダに記憶されているタイプがＩＰである場合には、ＩＰデータパケットのタイプを判断するのに、Ｌ３レイヤヘッダにおいてさらなるサーチが必要である。Ｌ３レイヤヘッダのタイプフィールドに記憶されているＩＰタイプがインターネットグループ管理プロトコル（Internet Group Management Protocol 「ＩＧＭＰ」）である場合、ネクストフィールド３０２はさらなるサーチが不要であることを示す「０」に設定され、そのデータパケットは入力データ経路１１６（図１）上およびホストデータ経路１１４（図１）上を転送される。
【００２４】
ＩＰタイプデータパケットのデフォルトの転送用決定は、入力データ経路１１６（図１）上の転送に設定され得る。この転送用決定は、より高いレベルのレイヤヘッダの内容を用いた以後のサーチにおいて転送オーバライドコード２０６（図２）が選択されると、データパケットをホストデータ経路１１４（図１）上を転送するようにオーバライドされる。ＣＡＭ内に転送用エントリ３００を記憶することにより、サーチは迅速に行なわれ、転送用決定もまた、データパケットをスイッチ１００（図１）を通じてワイヤ速度（wire-speed）で転送できるように迅速に決定される。
【００２５】
図４Ａは、空または無効のエントリ３００ａを示す。空のサーチキー２０８ａの３つの最上位ビット（Most Significant Bits 「ＭＳＢｓ」）は「０００」に設定され、無効な関連データ２１０ａが記憶される。
【００２６】
図４Ｂは、Ｅタイプ識別子（「ＥＩＤ」）エントリ３００ｂを示す。ＥＩＤサーチキー２０８ｂのＭＳＢ４１０は「１」に設定される。ＥＩＤサーチキー２０８ｂはＬ２ペイロードタイプ４１４およびカスタムＯＵＩインジケータ４１２を含む。ＥＩＤ関連データ２１０ｂは、ネクストフィールド４０２ｂ、ホストトラフィックラベル（Host Traffic Label 「ＨＴＬ」）４０４ｂ、ＥＩＤ４０６および転送オーバライド（Forward Override 「ＦＯ」）４０８ｂを含む。
【００２７】
図４Ｃは、ＩＰｖ４タイプエントリ３００ｃを示す。ＩＰタイプサーチキー２０８ｃの３つのＭＳＢｓ４２６は「００１」に設定される。ＩＰタイプサーチキー２０８ｃはＩＰｖ４タイプ４２８を含む。ＩＰタイプ関連データ２１０ｃは、ネクストフィールド４０２ｃ、ＨＴＬ４０４ｃ、ＬＮ  ＱｏＳ有効ビット４２０、レイヤ３ＱｏＳ４２２、およびＦＯ４０８ｃを含む。
【００２８】
図４Ｄは、ＩＰバージョンエントリ３００ｄを示す。ＩＰバージョンサーチキー２０８ｄの３つのＭＳＢｓ４１６は「００１」に設定される。ＩＰバージョンサーチキー２０８ｄはＩＰバージョン４１８を含む。ＩＰバージョン関連データ２１０ｄは、ネクストフィールド４０２ｄ、ＨＴＬ４０４ｄ、ＬＮ  ＱｏＳ有効ビット４２０、レイヤ３ＱｏＳ４２２、およびＦＯ４０８ｄを含む。
【００２９】
図４Ｅは、Ｌ４ポートエントリ３００ｅを示す。Ｌ４サーチキー２０８ｅの２つのＭＳＢｓ４３０は「０１」に設定される。Ｌ４ポートサーチキー２０８ｅはＬ４ポート番号４３２を含む。Ｌ４ポート関連データ２１０ｅは、ＨＴＬ４０４ｅ、ＬＮ  ＱｏＳ有効フィールド４２０、Ｌ４  ＱｏＳ４２４、およびＦＯ４０８ｅを含む。
【００３０】
図５Ａは、スイッチ１００（図１）に接続された入力ポート１０２（図１）で受取られ得る先行技術のデータパケットを示す。図５Ｂから図５Ｅは、図５Ａに示される先行技術のデータパケット内に含まれ得る先行技術のデータパケットヘッダの内容を示す。
【００３１】
図５Ａは、データフィールド５１０およびネットワーキングレイヤのためのヘッダ５０２、５０４、５０６、５０８を含む、先行技術のデータパケット５００を示す。開放型システム相互接続（Open Systems Interconnection 「ＯＳＩ」）参照モデル（Reference Model）における複数レイヤのうち４つのレイヤのヘッダが示される。これらは、物理レイヤ（Ｌ１）ヘッダ５０２、データリンクレイヤ（Ｌ２）ヘッダ５０４、ネットワーキングレイヤ（Ｌ３）ヘッダ５０６およびトランスポートレイヤ（Ｌ４）ヘッダ５０８を含む。たとえば、データリンク（Ｌ２）レイヤ５０４はイーサネット（Ｒ）（Ethernet）、ネットワーキングレイヤ（Ｌ３）ヘッダ５０６はインターネットプロトコル（Internet Protocol 「ＩＰ」）、トランスポートレイヤ（Ｌ４）ヘッダ５０８は伝送制御プロトコル（Transmission Control Protocol 「ＴＣＰ」）またはユニキャストデータグラムプロトコル（Unicast Datagram Protocol 「ＵＤＰ」）であり得る。
【００３２】
図５Ｂは、イーサネット（Ｒ）データリンク（Ｌ２）ヘッダ５０４のフォーマットを示す。イーサネット（Ｒ）データリンク（Ｌ２）ヘッダ５０４は、宛先アドレス５１４、ソースアドレス５１６、選択的なバーチャルローカルエリアネットワーク特定（Virtual Local Area Network Identification 「ＶＬＡＮ  ＩＤ」）フィールド５１８、および長さ／タイプフィールド５２０を含む。
【００３３】
図５Ｃは、ＩＰネットワークレイヤ（Ｌ３）ヘッダ５０６のフォーマットを示す。ＩＰネットワークレイヤ（Ｌ３）ヘッダ５０６は、ソースＩＰアドレス５４４、宛先ＩＰアドレス５４６、ＩＰバージョンフィールド５２２、ＩＰ長さフィールド５２４、サービスのタイプ（Type of Service 「ＴＯＳ」）５２６、全長（Total Length）５２８、アイデンティフィケーション５３０、フラグ５３２、フラグメントオフセット５３４、寿命（Time to Live 「ＴＴＬ」）５３６、プロトコルタイプ５４０、ヘッダチェックサム５４２、オプション５４８およびパッド５５０を含む。
【００３４】
図５Ｄは、ＴＣＰトランスポートレイヤ（Ｌ４）ヘッダ５０８ａのフォーマットを示す。ＴＣＰトランスポートレイヤ（Ｌ４）ヘッダ５０８ａは以下のフィールドを含む：ＴＣＰソースポート５５２ａ、ＴＣＰ宛先ポート５５４ａ、連続番号５５６、肯定応答（acknowledgment）番号５５８、ＴＣＰオフセット５６０、リザーブドフィールド５６２、ＴＣＰフラグ５６４、ウインドウ５６６、ＴＣＰヘッダチェックサム５６８、緊急ポインタ（Urgent Pointer）５７０、オプション５７２、およびＴＣＰパッド５７４。
【００３５】
図５Ｅは、ＵＤＰトランスポートレイヤ（Ｌ４）ヘッダ５０８ｂのフォーマットを示す。ＵＤＰトランスポートレイヤ（Ｌ４）ヘッダ５０８ｂは以下のフィールドを含む：ＵＤＰソースポート５５２ｂ、ＵＤＰ宛先ポート５５４ｂ、ＵＤＰメッセージ長５８２、およびＵＤＰヘッダチェックサム５８４。
【００３６】
図６は、受信データパケットのヘッダにエンコードされているネットワークプロトコルに応じてその受信データパケットのための転送オーバライド２０６（図２）を選択するために、転送オーバライドロジック２００（図２）において行なわれる工程を示すフローチャートである。図６について、図２、図４Ａ〜４Ｅおよび図５Ａ〜５Ｅに関連して以下に説明する。
【００３７】
ステップ６００において、転送オーバライドロジック２００（図２）は、入力ポート１０２（図１）からデータパケットヘッダを受取る。転送オーバライドロジック２００（図２）は、転送オーバライド２０６（図２）を初期化し、かつ、転送オーバライドロジック２００内のＥＩＤレジスタ（図示せず）を初期化する。処理はステップ６０２に続く。
【００３８】
ステップ６０２において、転送オーバライドロジック２００（図２）は、ＥＩＤサーチキー２０８ｂ（図４Ｂ）をプロトコルＣＡＭ２０２（図１）へと転送する。ＥＩＤサーチキー２０８ｂ（図４Ｂ）のＭＳＢは「１」に設定され、受信データパケットに含まれるイーサネット（Ｒ）データリンク（Ｌ２）ヘッダ５０４（図５Ｂ）内の長さ／タイプフィールド５２０（図５Ｂ）からのＬ２ペイロードタイプ４１４（図４Ｂ）を含む。もし合致するＥＩＤエントリ３００ｂ（図４Ｂ）があれば、処理はステップ６０４に続く。もしなければ、受信データパケットの処理は完了し、転送オーバライド２０６（図２）は転送オーバライドロジック２０２（図２）内のUnknown＿EID＿Default＿Overrideレジスタ（図示せず）に記憶されているデフォルト値に設定される。転送オーバライドのデフォルト値は、そのデータパケットがセグメントバッファメモリ１０８（図１）に転送されるように、ホストプロセッサによって選択され得る。
【００３９】
ステップ６０４において、転送オーバライド２０６（図２）は、ＥＩＤ関連データ２１０ｂ（図４Ｂ）内の転送オーバライドフィールド４０８ｂ（図４Ｂ）に記憶されているＬ２転送オーバライド値に設定される。処理はステップ６０６に続く。
【００４０】
ステップ６０６において、転送オーバライドロジック２００（図２）は、ＥＩＤエントリ３００ｂ（図４Ｂ）内のネクストフィールド４０２ｂ（図４Ｂ）を調べる。もしネクストフィールド４０２ｂ（図４Ｂ）がプロトコルＣＡＭ２０２（図２）のさらなるサーチが必要であることを示していれば、処理はステップ６０８に続く。そうでなければ、受信データパケットの処理は完了する。
【００４１】
ステップ６０８において、転送オーバライドロジック２００（図２）は、ＩＰバージョンサーチキー２０８ｄ（図４Ｄ）をプロトコルＣＡＭ２０２（図２）に転送する。ＩＰバージョンサーチキーのＭＳＢ４１６は「００１」に設定され、ＩＰバージョンサーチキー２０８ｄ（図４Ｄ）は、入力データパケット（図５Ａ）のＩＰネットワーキングレイヤ（Ｌ３）ヘッダ５０６（図５Ｃ）のＩＰバージョンフィールド５２２（図５Ｃ）から抽出されたＩＰバージョン４３２（図４Ｄ）を含む。もしプロトコルＣＡＭ２０２（図２）において合致が見つかれば、ＩＰバージョン関連データ２１０ｄが転送オーバライドロジック２００に転送されて、処理はステップ６１０に続く。もし見つからなければ、受信データパケットの処理は完了する。
【００４２】
ステップ６１０において、転送オーバライドロジック２００（図２）は、転送オーバライド２０６（図２）を、ＩＰバージョンタイプエントリ３００ｄ（図４Ｄ）内のＩＰバージョン関連データ２１０ｄ（図４Ｄ）内に記憶されている転送オーバライド値４０８ｄ（図４Ｄ）に設定する。処理はステップ６１２に続く。
【００４３】
ステップ６１２において、転送オーバライドロジック２００（図２）は、ＩＰバージョンエントリ３００ｃ内のネクストフィールド４０２ｃ（図４Ｃ）を調べる。もしネクストフィールド４０２ｄ（図４Ｄ）がプロトコルＣＡＭ２０２（図２）のさらなるサーチが必要であることを示していれば、処理はステップ６１４に続く。そうでなければ、受信データパケットの処理は完了する。
【００４４】
ステップ６１４において、転送オーバライドロジック２００（図２）は、ＩＰタイプサーチキー２０８ｃ（図４Ｃ）をプロトコルＣＡＭ２０２（図２）に転送する。ＩＰタイプサーチキー２０８ｃ（図４Ｃ）のＭＳＢ４２６（図４Ｃ）は「００１」に設定され、ＩＰタイプサーチキー２０８ｃは、入力データパケット（図５Ａ）のネットワーキングレイヤ（Ｌ３）ヘッダ５０６（図５Ｃ）内のプロトコルタイプフィールド５４０（図５Ｃ）から抽出されたＩＰｖ４タイプ４２８（図４Ｃ）を含む。もしプロトコルＣＡＭ２０２（図２）においてＩＰタイプサーチキー２０８ｃに対する合致が見つかれば、ＩＰタイプ関連データ２１０ｃ（図４Ｃ）が転送オーバライドロジック２００（図２）に転送されて、処理はステップ６１６に続く。もし見つからなければ、受信データパケットの処理は完了する。
【００４５】
ステップ６１６において、転送オーバライドロジック２００（図２）は、転送オーバライド２０６（図２）をＩＰタイプエントリ３００ｃに記憶されている転送オーバライド値４０８ｃに設定する。処理はステップ６１８に続く。
【００４６】
ステップ６１８において、転送オーバライドロジック２００（図２）は、ＩＰタイプエントリ３００ｃ内のネクストフィールド４０２ｃ（図４Ｃ）を調べる。もしネクストフィールド４０２ｃ（図４Ｃ）がプロトコルＣＡＭ２０２（図２）のさらなるサーチが必要であることを示していれば、処理はステップ６２０に続く。そうでなければ、受信データパケットの処理は完了する。
【００４７】
ステップ６２０において、転送オーバライドロジック２００（図２）は、「０１」に設定されたＭＳＢ４３０（図４Ｅ）とＬ４ヘッダ５０８（図５Ｄ、５Ｅ）内のソースポートフィールド５５２（図５Ｄ〜５Ｅ）から抽出されたＬ４ソースポート番号とを含むＬ４ポートサーチキー２０８ｅ（図４Ｅ）を、プロトコルＣＡＭ２０２（図２）に転送する。もしプロトコルＣＡＭ２０２（図２）内にソースポートの合致が見つかれば、Ｌ４ポート関連データ２１０ｅ（図４Ｅ）のコピーが転送オーバライドロジック２００（図２）に転送され、処理はステップ６２４に続く。もし見つからなければ、処理はステップ６２２に続く。
【００４８】
ステップ６２４において、転送オーバライドロジック２００（図２）は、転送オーバライド２０６（図２）を、Ｌ４ポートエントリ３００ｅ（図４Ｅ）内のＬ４ポート関連データ２１０ｅ（図４Ｅ）に記憶されている転送オーバライド値４０８ｅ（図４Ｅ）に設定する。受信データパケットの処理はこれで完了する。
【００４９】
ステップ６２２において、転送オーバライドロジック２００（図２）は、「０１」に設定されたＭＳＢ４３０（図４Ｅ）および入力データパケット（図５Ａ）のＬ４ヘッダ５０８（図５Ｄ、５Ｅ）に記憶されている宛先ポート５５４（図５Ｄ、５Ｅ）からのＬ４宛先ポート番号を含むＬ４ポートサーチキー２０８ｅ（図４Ｅ）を、プロトコルＣＡＭ２０２（図２）に転送する。もしプロトコルＣＡＭ２０２（図２）において宛先ポートの合致が見つかれば、Ｌ４ポート関連データ２１０ｅ（図４Ｅ）のコピーが転送オーバライドロジック２００（図２）に転送され、処理はステップ６２６に続く。
【００５０】
ステップ６２６において、転送オーバライドロジック２００（図２）は、転送オーバライド２０６（図２）を、Ｌ４ポートエントリ３００ｅ（図４Ｅ）内のＬ４ポート関連データ２００ｅ（図４Ｅ）に記憶されている転送オーバライド値４０８ｅ（図４Ｅ）に設定する。受信データパケットの処理はこれで完了する。
【００５１】
したがって、受信データパケットのヘッダにエンコードされているネットワークプロトコルに応じて転送オーバライド２０６を選択する目的で、プロトコルＣＡＭ２０２（図２）において最高５回の連続したサーチが、転送オーバライドロジック２００（図２）により、受信データパケットのヘッダの内容を用いて行なわれ得る。
【００５２】
図７は、ルーティング情報プロトコル（Routing Information Protocol 「ＲＩＰ」）データパケット２０６（図２）のための転送オーバライドを選択するためにプロトコルＣＡＭ２０２においてサーチされる４つのプロトコルＣＡＭ３００エントリを示す。これらのエントリは、ＥＩＤエントリ３００ｂａ、ＩＰｖ４タイプエントリ３００ｃａ、ＩＰバージョンエントリ３００ｄａおよびＬ４ポートエントリ３００ｅａを含む。ＲＩＰデータパケットのための転送オーバライドを選択するためのプロトコルＣＡＭ２０２（図２）のサーチについて、図６に関連して説明する。
【００５３】
ステップ６０２（図６）において、ＲＩＰデータパケットに含まれるイーサネット（Ｒ）データリンク（Ｌ２）ヘッダ５０４（図５Ｂ）の内容を用いて、サーチが行われる。ＭＳＢが「１」に設定されＬ２ペイロードタイプ４１４がＩＰに設定されたサーチキー２０８ｂａ、すなわち、ＲＩＰデータパケットに含まれるイーサネット（Ｒ）データリンク（Ｌ２）ヘッダ５０４（図５Ｂ）内の長さ／タイプフィールド５２０（図５Ｂ）の内容が、転送オーバライドロジック２００（図２）からプロトコルＣＡＭへと転送される。プロトコルＣＡＭ２０２内の合致する転送用エントリ３００ｂａは、関連データ２１０ｂａを含む。この関連データ２１０ｂａは、「ＮＥＸＴ」に設定されたネクストフィールド４０２ｂａおよび、「入力データのみ」に設定された転送オーバライドフィールド４０８ｂａを含む。
【００５４】
ステップ６０６（図６）において、プロトコルＣＡＭ２０２（図２）の別のサーチが行なわれる。これは、ネクストフィールド４０２ｂａが「ＮＥＸＴ」に設定されているためである。このサーチは、ＲＩＰデータパケットに含まれるＩＰネットワークレイヤ（Ｌ３）ヘッダ５０６（図５Ｃ）の内容を用いて行なわれる。ＭＳＢが「００１」に設定されかつＩＰバージョン４１８ａがＲＩＰデータパケットに含まれるＩＰネットワークレイヤ（Ｌ３）ヘッダ５０６（図５Ｃ）内のＩＰバージョンフィールド５２２の内容に設定されたサーチキー２０８ｄａが、転送オーバライドロジック２００（図２）からプロトコルＣＡＭ２０２（図２）に転送される。プロトコルＣＡＭ２０２内の合致する転送用エントリ３００ｄａは、ＩＰバージョン関連データ２１０ｄａを含む。ＩＰバージョン関連データ２１０ｄａは、「ＮＥＸＴ」に設定されたネクストフィールド４０２ｄａおよび、「入力データのみ」に設定された転送オーバライドフィールド４０８ｄａを含む。
【００５５】
ネクストフィールド４０２ｄａが「ＮＥＸＴ」に設定されているために、ステップ６１２（図６）において、プロトコルＣＡＭ２０２（図２）の別のサーチが行なわれる。このサーチは、ＲＩＰデータパケットに含まれるＩＰネットワークレイヤ（Ｌ３）ヘッダ５０６（図５Ｃ）の内容を用いて行なわれる。ＭＳＢが「００１」に設定されかつＩＰタイプ４２８（図４Ｃ）がＵＤＰに設定されたＩＰタイプサーチキー２０８ｃａ、すなわち、ＲＩＰデータパケットに含まれるＩＰネットワークレイヤ（Ｌ３）ヘッダ５０６（図５Ｃ）内のＩＰプロトコルタイプフィールド５４０（図５Ｃ）の内容が、転送オーバライドロジック２００（図２）からプロトコルＣＡＭ２０２へと転送される。プロトコルＣＡＭ２０２内の合致する転送用エントリ３００ｃａは、関連データ２１０ｃａを含む。この関連データ２１０ｃａは、「ＮＥＸＴ」に設定されたネクストフィールド４０２ｃａおよび、「入力データのみ」に設定された転送オーバライドフィールド４０８ｃａを含む。
【００５６】
ネクストフィールド４０２ｃａが「ＮＥＸＴ」に設定されているので、ステップ６１８（図６）においてプロトコルＣＡＭ２０２の別のサーチが行なわれる。このサーチは、受信されたＲＩＰデータパケットに含まれるＵＤＰトランスポートレイヤ（Ｌ４）ヘッダ５０８ｂ（図５Ｅ）の内容を用いて行なわれる。ＭＳＢが「００１」に設定されかつＬ４ポート番号がＵＤＰトランスポートレイヤ（Ｌ４）ヘッダ５０８ｂ（図５Ｅ）内のＵＤＰソースポートフィールド５５２ｂ（図５Ｅ）の内容に設定されたサーチキー２０８ｅａが、転送オーバライドロジック２００（図２）からプロトコルＣＡＭ２０２（図２）へと転送される。プロトコルＣＡＭ２０２（図２）内の合致する転送用エントリ３００ｅａは、Ｌ４ポート関連データ２１０ｅａを含む。このＬ４ポート関連データ２１０ｅａは、「ＳＴＯＰ」に設定されたネクストフィールド４０２ｅａおよび、「入力データおよびホストデータ」に設定された転送オーバライドフィールド４０８ｅａを含む。転送オーバライド２０６（図２）は、転送オーバライド４０８ｅａの内容に従って設定される。ＲＩＰデータパケットは、ホストインターフェイスロジック１０６（図１）およびセグメントバッファメモリ１０８（図１）の両方に転送される。
【００５７】
プロトコルＣＡＭ２０２（図２）のサーチは、ネクストフィールド４０８ｅａが「ＳＴＯＰ」に設定されているので完了する。したがって、ＲＩＰデータパケットのための転送オーバライド２０６（図２）を選択するために、プロトコルＣＡＭ２０２（図２）のサーチは４回行なわれる。
【００５８】
図４Ｂから図４Ｅに示すように、サービスの質（ＱｏＳ）フィールド４２２、４２４もまた、プロトコルＣＡＭ２０２（図２）の関連データ２１０内に記憶され得る。ＱｏＳフィールド３０６（図３）は、受信データパケットに優先度を割当てるのに使用され得る。割当てられた優先度は、出力ポートエンジン１１０（図１）により、出力ポート１１２（図１）に転送されるパケットの順番を選択するのに用いられる。たとえば、ＱｏＳフィールド３０６（図３）の内容は、テルネット（Telnet）データパケットに最高の優先順位を割当て、ハイパーテキストマークアップ言語（HyperText Markup language 「ＨＴＴＰ」）データパケットに最低の優先順位を割当てる等、異なる優先度を割当てるのに使用され得る。スイッチ１００は、各ＱｏＳ値につき別個のポートキューを含み得、データパケットのメモリ内の場所を示すポインタが、そのデータパケットタイプのための転送用エントリ３００（図３）におけるＱｏＳフィールド３０６（図３）の内容に応じて、１または複数のポートキューに記憶される。
【００５９】
以上に本発明をローカルエリアネットワーク（Local Area Network 「ＬＡＮ」）について説明したが、本発明はＬＡＮに限定されるものではなく、ワイドエリアネットワーク（Wide Area Network）においてデータパケットのための転送オーバライドを選択するのにも実現され得る。
【００６０】
本発明をその好ましい実施例に関連して特定的に図示し説明したが、本発明の形状および詳細に前掲の請求項に包含される本発明の範囲から離れることなく種々の変更が加えられ得ることは、当業者には理解されるであろう。
【図面の簡単な説明】
【図１】  本発明の原理に従ったネットワークスイッチであって、スイッチに接続された入力ポートで受取られたデータパケットを転送するためのホスト転送用ロジックを含むネットワークスイッチを示す。
【図２】  図１に示されるホスト転送用ロジックを示す。
【図３】  図２に示されるプロトコル連想記憶メモリ（「ＣＡＭ」）のエントリのフォーマットを示す。
【図４Ａ】  図２に示されるプロトコルＣＡＭの空のエントリを示す。
【図４Ｂ】  図２に示されるプロトコルＣＡＭのレイヤ２タイプエントリを示す。
【図４Ｃ】  図２に示されるプロトコルＣＡＭのＩＰｖ４タイプエントリを示す。
【図４Ｄ】  図２に示されるプロトコルＣＡＭのＩＰバージョンエントリを示す。
【図４Ｅ】  図２に示されるプロトコルＣＡＭのレイヤ４エントリを示す。
【図５Ａ】  スイッチに接続された入力ポートで受取られ得る先行技術のデータパケットを示す。
【図５Ｂ】  図５Ａに示されるデータパケットに含まれ得る先行技術のイーサネット（Ｒ）（データリンクレイヤ（Ｌ２））ヘッダを示す。
【図５Ｃ】  図５Ａに示されるデータパケットに含まれ得る先行技術のインターネットプロトコル（ネットワークレイヤ（Ｌ３））ヘッダを示す。
【図５Ｄ】  図５Ａに示されるデータパケットに含まれ得る先行技術の伝送制御プロトコル（「ＴＣＰ」）（トランスポートレイヤ（Ｌ４））ヘッダを示す。
【図５Ｅ】  図５Ａに示されるデータパケットに含まれ得る先行技術のユーザデータグラムプロトコル（User Datagram Protocol「ＵＤＰ」）（トランスポートレイヤ（Ｌ４））ヘッダを示す。
【図６】  受信データパケットのための転送オーバライドを選択するために図２に示される転送オーバライドロジックにおいて行なわれる工程を示すフローチャートである。
【図７】  プロトコルＣＡＭ内のエントリを示す。
【図１】
0004666866.tif 000003
【図２】
0004666866.tif 000004
【図３】
0004666866.tif 000005
【図４Ａ】
0004666866.tif 000006
【図４Ｂ】
0004666866.tif 000007
【図４Ｃ】
0004666866.tif 000008
【図４Ｄ】
0004666866.tif 000009
【図４Ｅ】
0004666866.tif 000010
【図５Ａ】
0004666866.tif 000011
【図５Ｂ】
0004666866.tif 000012
【図５Ｃ】
0004666866.tif 000013
【図５Ｄ】
0004666866.tif 000014
【図５Ｅ】
0004666866.tif 000015
【図６】
0004666866.tif 000016
【図７】
0004666866.tif 000017