(57)【要約】  ルータ、スイッチ、コンビネーションルータ／スイッチ又はこれらの構成要素等のパケット交換装置又はシステムにおいて、ＣＡＭのキーサイズを超えるルックアップテーブルインデックスを用いてテーブルルックアップ動作を実行するための方法とシステムとを提供する。ルックアップテーブルインデックスのサブセットから導出されるＣＡＭキーをそれぞれ用いる複数のＣＡＭアクセスが実行され、１つ又は複数のＣＡＭエントリを得る。１つ又は複数の一致するテーブルエントリは、複数のＣＡＭアクセスから得られる上記１つ又は複数のＣＡＭエントリから導出される。
2009532989.tif 000002
【特許請求の範囲】
【請求項１】
パケット交換装置又はシステムにおいて、ＣＡＭのキーサイズを超えるテーブルルックアップインデックスを用いてテーブルルックアップ動作を実行する方法であって、
上記テーブルルックアップインデックスのサブセットから導出される第１のＣＡＭキーを用いて第１のＣＡＭシステムに対する第１のＣＡＭアクセスを実行することにより、１つ又は複数の第１のＣＡＭエントリを得ることと、
上記テーブルルックアップインデックスのサブセットから導出される第２のＣＡＭキーを用いて第２のＣＡＭシステムに対する第２のＣＡＭアクセスを実行することにより、１つ又は複数の第２のＣＡＭエントリを得ることと、
上記１つ又は複数の第１のＣＡＭエントリ及び上記１つ又は複数の第２のＣＡＭエントリに応答して１つ又は複数の一致するルックアップテーブルエントリを決定することとを含む方法。
【請求項２】
上記第１及び第２のＣＡＭシステムはそれぞれ、ＣＡＭと、関連したＲＡＭとを備えた請求項１記載の方法。
【請求項３】
上記ＣＡＭエントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項１記載の方法。
【請求項４】
上記第１及び第２のＣＡＭシステムは互いに異なる請求項１記載の方法。
【請求項５】
上記第１及び第２のＣＡＭシステムは同一である請求項１記載の方法。
【請求項６】
上記テーブルルックアップインデックスのサブセットから導出されるＣＡＭキーをそれぞれ用いる１つ又は複数の追加のＣＡＭアクセスを実行することにより、１つ又は複数の追加のＣＡＭエントリを得ることと、
上記１つ又は複数の第１のＣＡＭエントリ、上記１つ又は複数の第２のＣＡＭエントリ及び上記１つ又は複数の追加のＣＡＭエントリに応答して、上記１つ又は複数の一致するルックアップテーブルエントリを決定することとをさらに含む請求項１記載の方法。
【請求項７】
上記第１のＣＡＭアクセスにより、１つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第１のビットマップを含む第１のＣＡＭエントリが得られ、
上記第２のＣＡＭアクセスにより、１つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第２のビットマップを含む第２のＣＡＭエントリが得られ、
上記決定するステップは、上記第１及び第２のビットマップを論理的に合成することにより、上記１つ又は複数の一致するルックアップテーブルエントリを示す合成のマップを得ることを含む請求項１記載の方法。
【請求項８】
上記決定するステップは、
上記１つ又は複数の第１のＣＡＭエントリから第１のビットマップを形成することと、
上記１つ又は複数の第２のＣＡＭエントリから第２のビットマップを形成することと、
上記第１及び第２のビットマップを論理的に合成することにより、上記１つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップを得ることを含む請求項１記載の方法。
【請求項９】
上記第１及び第２のＣＡＭキーは、第１及び第２のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
上記第１のＣＡＭキーにおけるタイプフィールドは第１のタイプを示しており、上記第２のＣＡＭキーにおけるタイプフィールドは第２のタイプを示している請求項５記載の方法。
【請求項１０】
上記ＣＡＭシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされたエントリの第１及び第２のグループを備えた複数のエントリを有し、
上記第１のグループにおけるエントリに含まれるタイプフィールドは上記第１のタイプを示しており、上記第２のグループにおけるエントリに含まれるタイプフィールドは上記第２のタイプを示している請求項９記載の方法。
【請求項１１】
パケット交換装置又はシステムにおいて、ＣＡＭのキーサイズを超えるテーブルルックアップインデックスを用いてテーブルルックアップ動作を実行する方法であって、
ＣＡＭシステムにおいて、上記テーブルルックアップインデックスのサブセットから導出される第１のＣＡＭキーを用いて第１のＣＡＭアクセスを実行することにより、１つ又は複数の可能性のある一致するテーブルエントリを示す第１のビットマップを含む第１のＣＡＭエントリを得ることと、
上記ＣＡＭシステムにおいて、上記テーブルルックアップインデックスのサブセットから導出される第２のＣＡＭキーを用いて第２のＣＡＭアクセスを実行することにより、１つ又は複数の可能性のある一致するテーブルエントリを示す第２のビットマップを含む第２のＣＡＭエントリを得ることと、
上記第１及び第２のビットマップを、１つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップに論理的に合成することを含む方法。
【請求項１２】
上記ＣＡＭエントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項１１記載の方法。
【請求項１３】
上記第１及び第２のＣＡＭキーは、第１及び第２のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
上記第１のＣＡＭキーにおけるタイプフィールドは第１のタイプを示しており、上記第２のＣＡＭキーにおけるタイプフィールドは第２のタイプを示している請求項１１記載の方法。
【請求項１４】
上記ＣＡＭシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされたエントリの第１及び第２のグループを備えた複数のエントリを有し、
上記第１のグループにおけるエントリに含まれる上記タイプフィールドは上記第１のタイプを示しており、上記第２のグループにおけるエントリに含まれる上記タイプフィールドは上記第２のタイプを示している請求項１３記載の方法。
【請求項１５】
パケット交換装置又はシステムにおいて、ＣＡＭのキーサイズを超えるテーブルルックアップインデックスを用いてテーブルルックアップ動作を実行するためのシステムであって、
上記テーブルルックアップインデックスのサブセットから導出される第１のＣＡＭキーを用いて第１のＣＡＭアクセスを実行するための第１のＣＡＭシステムと、
上記テーブルルックアップインデックスのサブセットから導出される第２のＣＡＭキーを用いて第２のＣＡＭアクセスを実行するための第２のＣＡＭシステムと、
上記第１のアクセスから得られる１つ又は複数の第１のＣＡＭエントリ及び上記第２のアクセスから得られる１つ又は複数の第２のＣＡＭエントリに応答して、１つ又は複数の一致するルックアップテーブルエントリを決定するための論理回路とを備えたシステム。
【請求項１６】
上記第１及び第２のＣＡＭシステムはそれぞれ、ＣＡＭと、関連したＲＡＭとを備えた請求項１５記載のシステム。
【請求項１７】
上記エントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項１５記載のシステム。
【請求項１８】
上記第１及び第２のＣＡＭシステムは互いに異なる請求項１５記載のシステム。
【請求項１９】
上記第１及び第２のＣＡＭシステムは同一である請求項１５記載のシステム。
【請求項２０】
上記第１のアクセスから得られる第１のＣＡＭエントリは１つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第１のビットマップを含み、
上記第２のアクセスから得られる第２のＣＡＭエントリは１つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第２のビットマップを含み、
上記論理回路は、上記第１及び第２のビットマップを論理的に合成することにより、上記１つ又は複数の一致するルックアップテーブルエントリを示す合成のマップを得るように構成された請求項１５記載のシステム。
【請求項２１】
上記論理回路は、上記１つ又は複数の第１のエントリから第１のビットマップを形成し、上記１つ又は複数の第２のエントリから第２のビットマップを形成し、上記第１及び第２のビットマップを論理的に合成することにより上記１つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップを得るように構成された請求項１５記載のシステム。
【請求項２２】
上記第１及び第２のＣＡＭキーは、第１及び第２のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
上記第１のＣＡＭキーにおけるタイプフィールドは第１のタイプを示しており、上記第２のＣＡＭキーにおける上記タイプフィールドは第２のタイプを示している請求項１９記載のシステム。
【請求項２３】
上記ＣＡＭシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされるエントリの第１及び第２のグループを備える複数のエントリを有し、
上記第１のグループにおけるエントリに含まれるタイプフィールドは上記第１のタイプを示しており、上記第２のグループにおけるエントリに含まれるタイプフィールドは上記第２のタイプを示している請求項２２記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、例えばルータ、スイッチ、コンビネーションルータ／スイッチ、これらの構成要素等であるパケット交換装置又はシステムに関し、具体的には、このような装置又はシステムにおける、複数の連想メモリ（「ＣＡＭs（Content Addressable Memories）」）に対するアクセスを介してテーブルルックアップ動作を実行する方法に関する。
【背景技術】
【０００２】
連想メモリ（「ＣＡＭｓ」）は、ルータ、スイッチ及びコンビネーションルータ／スイッチ等のパケット交換装置又はシステムにおいてテーブルルックアップ動作を実行するための便利な装置である。このようなテーブルルックアップ動作は、例えば、パケットの分類及び転送（フォワーディング）の決定を高速で行なう場合に有益である。これらのテーブルルックアップ動作を実行する場合、上記装置又はシステムは、典型的には１つ又は複数のパケットフィールドからテーブルルックアップインデックスを導出し、当該インデックスをＣＡＭシステムへ、すなわち、キー部分とコンテンツ部分とをそれぞれ有する複数のエントリを有する典型的にはＣＡＭ及び関連したＲＡＭへ入力する。これに応答して、ＣＡＭシステムは１つ又は複数の一致するエントリを、すなわち入力されたテーブルインデックスに一致するキー部分を有するエントリを返す。次に、上記１つ又は複数の一致するエントリのコンテンツ部分に応じて、パケットに関してパケットの分類及び転送の決定が行われる。
【０００３】
【非特許文献１】Pagiamtzis, K. et al., "Content-Addressable Memory (CAM) Circuits and Architectures:  A Tutorial and Survey", IEEE Journal of Solid-State Circuits, Vol. 41, No. 3, pp. 712-727, March 2006.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
テーブルルックアップインデックスのサイズがＣＡＭシステムに入力されるキーの最大サイズを超えるときに問題が生じる。このような問題は、例えばＩＰｖ６に準拠するパケット交換装置又はシステムにおいて生じることが多い。このようなパケット交換装置又はシステムでは、例えば送信元ＩＰアドレス、宛先ＩＰアドレスなどの所定の複数のパケットフィールドの組み合わせに基づいて転送及び分類の決定を行うことが望ましいが、当該組み合わせは、アプリケーションにとって費用に対して効率のよい利用可能な三値（又は二値）ＣＡＭの例えば１４４ビットである最大の望ましいキーサイズを超えるサイズを有する。この問題は、特にＩＰｖ６に準拠する装置又はシステムにおいて生じることが多いが、その理由は、送信元ＩＰ及びアドレスフィールドのサイズ（１２８ビット）がＩＰｖ４に準拠する装置又はシステムにおける送信元ＩＰ及びアドレスフィールドのサイズ（３２ビット）より大きいことにある。このようなアプリケーションでは、所望されるテーブルインデックスサイズに対応するために、システムコストの増大という犠牲を払ったときにのみ、例えば５７６ビットであるより大きいキーサイズを有するより高価なＣＡＭを用いることができる。
【課題を解決するための手段】
【０００５】
本発明は、パケット交換装置又はシステムにおいて、最大の望ましいＣＡＭキーサイズを超えるテーブルルックアップインデックスを用いてテーブルルックアップ動作を実行する方法に関する。この方法では、テーブルルックアップ動作は、１つ又は複数のＣＡＭシステムへの複数のＣＡＭアクセスを介して実行され、ここで、ＣＡＭアクセスはそれぞれ、最大の許容可能なＣＡＭキーサイズ以下のＣＡＭキーを用いて実行される。１つ又は複数の一致するルックアップテーブルエントリは、上記１つ又は複数のＣＡＭアクセスから得られる１つ又は複数の一致するＣＡＭエントリから導出される。
【０００６】
ある実施形態では、第１のＣＡＭシステムに対する第１のＣＡＭアクセスは、テーブルルックアップインデックスのサブセットから導出される第１のＣＡＭキーを用いて実行され、その結果、１つ又は複数の第１のＣＡＭエントリが得られる。第２のＣＡＭシステムに対する第２のＣＡＭアクセスもまた、テーブルルックアップインデックスのサブセットから導出される第２のＣＡＭキーを用いて実行され、その結果、１つ又は複数の第２のＣＡＭエントリが得られる。第１及び第２のＣＡＭシステムは同一システムであってもよく、もしくは互いに異なるシステムであってもよい。１つ又は複数の一致するルックアップテーブルエントリは、１つ又は複数の第１のＣＡＭエントリ及び１つ又は複数の第２のＣＡＭエントリに応答して決定される。
【０００７】
ある実施例では、ＣＡＭエントリはそれぞれ、ルックアップテーブルの１つ又は複数の可能性のある一致を示すビットマップを含む。この実施例において、１つ又は複数のＣＡＭアクセスから得られる１つ又は複数の一致するＣＡＭエントリからのビットマップは論理的に合成され、１つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップが形成される。
【０００８】
以下の図面及び詳細な説明を精査すれば、当業者には、本発明の他のシステム、方法、特徴及び優位点が明らかであり、又は明らかとなるであろう。このような追加のシステム、方法、特徴及び優位点は全て、本明細書に含まれ、本発明の範囲に含まれ、かつ添付の請求の範囲によって保護されることが意図されている。
【０００９】
本発明は、下記の図面を参照することにより、より良く理解することができる。諸図面における構成要素は必ずしも一定の縮尺で描かれず、代わりに本発明の原理を示すことに重点がおかれている。さらに、諸図面における同様の参照符号は、異なる図を通じて対応する部分を示す。
【発明を実施するための最良の形態】
【００１０】
図１は、例えばルータ、スイッチ、コンビネーションルータ／スイッチ、これらの構成要素等のパケット交換装置又はシステムにより、ＩＰｖ６に準拠するパケットに関する転送及び／又は分類の決定を行なうときに用いるためのルックアップテーブルの一例である。しかしながら、まずは、本発明はＩＰｖ６に準拠するパケットの分類／転送の決定を行なうという特定のコンテキストに限定されず、一般に一致するエントリを識別するために用いられるテーブルインデックスが最大の望ましいＣＡＭキーサイズより大きい任意のルックアップテーブル動作に適用可能であることを理解すべきである。図１に示す特定の例では、パケット転送／分類の決定は、パケットからの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポート及びプロトコルの各フィールドの組み合わせに基づいており、これらは、まとめてルックアップテーブルへの２９６ビットのインデックスを形成する。このテーブルにおける一致するエントリのアクセス制御リスト（「ＡＣＬ（Access Control List）」）のタイプは、パケットのパケット転送／分類の決定を表す。この特定の例では、可能なＡＣＬタイプの幾つかにはルーティングすること（route）、ドロップすること（drop）、ＣＰＵコピーを行うこと（CPU copy）、リダイレクトすること（redirect。出力先を変更することまたは方向を変えることをいう。）、学習すること（learn）、エグレスミラー（egress mirror）、イングレスミラー（ingress mirror）等が含まれるが、ある特定の例では、これらは次のように定義される。
【００１１】
「ルーティングすること」は、パケットがルーティングされておらずにブリッジされていることを示し、したがって、上記パケットに出会う装置はエコー消滅サプレス機能（echo kill suppress function）を実施すべきであることを示す。
「ドロップすること」は、上記パケットに出会う装置は上記パケットをドロップすべきであることを示す。
「ＣＰＵコピーを行うこと」は、上記パケットのコピーを上記装置に接続されたＣＰＵホストに転送するように、上記装置に指示することをいう。
「リダイレクトすること」は、リダイレクト処理のために上記パケットのコピーをＣＰＵホストへ転送するように、上記装置に指示することをいう。リダイレクト処理において、ホストは上記パケットのコピーを受信し、送信者は上記パケットをルーティングするのではなく交換すべきであるという指示とともに、上記パケットを送信者にリダイレクトする。
「学習すること」は、ホストが学習処理を実行できるように上記パケットのコピーをＣＰＵホストに転送するように、上記装置に指示することをいう。学習処理において、ホストは上記パケットを解析することにより、当該パケットの送信者のＭＡＣアドレスへの将来のパケット交換のために、送信者のＭＡＣアドレスを「学習」する。
「エグレスミラー」は、上記パケットのネットワークエグレスフォームのコピーをパケット／転送分類部分に続く上記装置の部分に送るように、上記装置に指示することをいう。
「イングレスミラー」は、上記パケットのコピーを上記装置上の指定されたイングレスミラーポートに転送するように、上記装置に指示することをいう。
【００１２】
図１において、これらのパケット転送／分類の可能な決定をＡＣＬ１，ＡＣＬ２，ＡＣＬ３等という。
【００１３】
個々のインデックスフィールドのサブセットは、マッチングのために指定されてもよい。例えば、図１において、第３のテーブルエントリ１０２における宛先ＩＰアドレスフィールドの表記「３０．１／１０４」は、一致が存在するためにはパケットの宛先ＩＰアドレスの第１の（最上位の）１０４ビットが３０．１で始まり、後続のゼロが続かなければならないこと、すなわち１６進数の３００１：００００：００００：００００：００００：００００．００／１０４（１６進数の（典型的には、４つの）末尾のゼロを「：０」で表す短縮表記を用いると、３００１：０：０：０：０：０：０／１０４に等しい）に等しくなければならないことを意味する。また、第４のテーブルエントリ１０６におけるパケットの送信元ＩＰアドレスフィールドの表記「２０．１．１／１２０」は、一致が存在するためにはパケットの送信元ＩＰアドレスの最初の１２０ビットが１６進数の２０．１．１で始まり、後続のゼロが続かなければならないこと、すなわち２００１：０１００：００００：００００：００００：００００：００００．００／１２０（２００１：０１００：０：０：０：０：０：０／１２０に等しい）でなければならないことを意味する。
【００１４】
さらに、ワイルドカードを用いるマッチングもサポートされる。例えば、図１の第１のテーブルエントリ１０８における送信元ポートフィールドの表記「全て」は、パケット内で識別される任意の送信元ポートが一致することを示す。同様に、第２のテーブルエントリ１０４における送信元ＩＰアドレスの表記「全て」も、パケット内で識別される任意の送信元ＩＰアドレスが一致することを示す。
【００１５】
複数のマッチングもまた可能である。実際に、複数のマッチングは、例えば悪意のあるトラフィックの識別又はセキュリティを含むアプリケーションである所定のアプリケーションでは極めて有益である。このようなアプリケーションでは、単一のＣＡＭエントリは所望される全てのＡＣＬアクションを表さないことがあり、可能な全てのＡＣＬアクションを決定するためには複数のエントリを調べる必要がある場合がある。
【００１６】
複数のマッチングを扱うためには、優先順位決定方法（priority resolution scheme）が必要であることがある。例えば、送信元ＩＰアドレスとして「４０．２」、宛先ＩＰアドレスの最初の１０４ビットとして「３０．１」、送信元ポートとして「４５」、宛先ポートとして「２２」及びプロトコルとして「ＵＤＰ」を特定するパケットは、図１の第２及び第３のエントリ１０２，１０４の両方に一致する。この潜在的な不確定性を解決するためには、付番数字が小さい方のマッチングエントリに付番数字が大きい方のマッチングエントリより高い優先順位を与える優先順位付けの方法が採用されてもよいが、付番数字が大きい方のマッチングエントリに付番数字が小さい方のマッチングエントリより高い優先性を与える方法等の他の方法も可能であることは認識されるべきである。この方法を上述した例に適用すると、第２のエントリ１０４は第３の１０４より高い優先順位を与えられ、上記パケットの転送／分類の決定はＡＣＬ２であるように行われる。
【００１７】
この特定の例において一致するテーブルエントリの識別に用いられるルックアップテーブルインデックスは、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポート及びプロトコルの組み合わせであるが、パケット交換のコンテキストの範囲内及び範以外の両方で、他のフィールド又はフィールドの組み合わせに基づく他のテーブルインデックスの例も可能であることは認識されるべきである。ＩＰｖ６では、送信元ＩＰ及び宛先アドレスはそれぞれ１２８ビットであり、送信元及び宛先ポートはそれぞれ１６ビットであり、プロトコルは８ビットであるので、この特定の例におけるこのインデックスの合計のサイズは２９６ビットである。ＴｏＳフィールド及びＴＣＰフラグフィールド等の追加のフィールドが含まれるときには、上記サイズは約３２０ビットまで増大することが可能である。
【００１８】
複数の三値ＣＡＭ（「ＴＣＡＭｓ（ｔｅｒｎａｒｙ  ＣＡＭｓ）」）の幅は、現時点では７２，１４４，２８８及び５７６ビットであるので、テーブルインデックスは５７６ビットの幅のみで適合する。しかしながら、５７６ビットのＴＣＡＭは高価であって通常は用いられないので、この特定の例におけるこのようなＴＣＡＭを用いることは望ましくない。代わりに、より一般的でありかつさほど高価ではない、１４４ビットタイプ等のＴＣＡＭが選択される。１４４であるＴＣＡＭのキーサイズ以内で適合するために、ルックアップテーブルインデックスは、それぞれが１４４ビット未満である３つのサブキー及び図１のテーブルエントリのサブセット及び場合によっては上記テーブルエントリの組み合わせである複数のエントリを含む１つ又は複数のＴＣＡＭに分割される。
【００１９】
第１の実施例においては、１４４ビットのＴＣＡＭ及び関連したＲＡＭを備えた単一のＣＡＭシステムが用いられる。この特定の実施例では、ＴＣＡＭは複数１４４ビットのエントリを有し、各ビットは論理値「１」、「０」又はドントケア（ｄｏｎ’ｔ  ｃａｒｅ）をとることができる。本参照によりその全記載が開示に含まれる非特許文献１において説明されているように、各エントリは、入力された１４４ビットのＣＡＭキーがエントリに一致するか否かを示すマッチラインを有する。全てのエントリに関するマッチラインはエンコーダ（ＴＣＡＭに固有の部分）に入力され、エンコーダは一致するエントリのアドレスを示すバイナリのマッチロケーションを生成する。２つ以上の一致が予期される又は可能なアプリケーションではプライオリティエンコーダが用いられる。プライオリティエンコーダは、最も高い優先順位のマッチングエントリを選択し、そのアドレスを出力する。プライオリティエンコーダを、最初又は最後のマッチングエントリに最も高い優先順位を与えるように構成することができる。ＣＡＭ内に一致するエントリが位置づけられないときには、この状況を信号で送信するヒット信号が含まれることが多い。一致するエントリのアドレスは関連したＲＡＭへ入力され、ＲＡＭは対応するＲＡＭエントリのコンテンツを出力する。ＣＡＭエントリ及び関連したＲＡＭエントリは共に、それぞれ同一のＣＡＭシステムエントリのキー部分及びコンテンツ部分として考えられてもよい。
【００２０】
この実施例では、図１のテーブルルックアップキーは３つのサブインデックスに分割され、ここで、各サブインデックスは３つのキーフォーマットを互いに区別化するためのタイプフィールドが追加された１４４ビット以下のＣＡＭキーである。図２ａは、１２８ビットの送信元ＩＰアドレスとタイプ１を示す２ビットのタイプフィールドとを備えた第１のＣＡＭキーのフォーマットを示し、図２ｂは、１２８ビットの宛先ＩＰアドレスとタイプ２を示す２ビットのタイプフィールドとを備えた第２のＣＡＭキーのフォーマットを示し、図２ｃは、送信元／宛先ポート及びプロトコルを保持する４０ビットのフィールドとタイプ３を示す２ビットのタイプフィールドとを備えた第３のＣＡＭキーのフォーマットを示す。
【００２１】
同様に、図１のテーブルエントリは、３つのタイプを区別するために用いられるタイプフィールドとともに３つのタイプのＣＡＭエントリに分割される。図３は第１のタイプのＣＡＭエントリを示し、図４は第２のタイプのＣＡＭエントリを示し、図５は第３のタイプのＣＡＭエントリを示す。図３を参照すると、ＣＡＭインデックスフィールドは、ＣＡＭシステムに複数のエントリが格納される相対的な順序、すなわちこれらのエントリの相対的な優先順位を示すが、これらのエントリの部分として物理的には格納されない。各エントリのキー部分は、送信元ＩＰアドレスとタイプフィールドとの組み合わせである。各エントリのコンテンツ部分は、当該エントリに関連づけられるＡＣＬの一致を示すビットマップフィールドである。
【００２２】
図３における、有利には最長の一致が第１の順位に配置されるＣＡＭエントリは、図１のテーブルエントリから次のように導出される。送信元ＩＰアドレスに関して最も厳しい仕様を有するテーブルエントリ、すなわち１２８ビットの送信元ＩＰアドレスが「４０．２」で始まり後続のゼロが続くこと、すなわち４００２：０：０：０：０：０：０：０／１２８に等しいことを指定する第３のエントリ１０２が選択される。送信元ＩＰアドレスの仕様がこの特定の仕様に一致する他の任意のテーブルエントリ、すなわち、送信元ＩＰアドレスに「全て」を指定する第２のエントリ１０４もまた選択される。図１のエントリ１０２からの送信元ＩＰの仕様は、タイプ１を示すタイプフィールドと共に、図３における第１のＣＡＭエントリ３０２のキー部分を形成する。ＣＡＭエントリ３０２のコンテンツ部分は、図１の２つの一致するテーブルエントリ１０２及び１０４のＡＣＬタイプ、すなわちタイプ２及び３を示すビットマップである。この特定の実施例では、ビットマップは可能なＡＣＬタイプのそれぞれにつき１ビットを有し、そのビットは左から右への順序でそのビットに関連づけられるＡＣＬタイプを示す。ある表現法によれば、あるビットに関連づけられるＡＬＣタイプが一致するテーブルエントリのうちの１つに表されていれば、そのビットは論理値「１」に設定され、そうでなければ論理値「０」にクリアされるが、例えば一致するＡＣＬタイプが論理値「１」ではなく論理値「０」との合成のビットマップで表される表現法であるような他の表現法も可能であることは認識されるべきである。したがって、図３では、エントリ３０２のビットマップは「０１１０」であり、ＡＣＬタイプ２及び３との一致を示している。
【００２３】
図３における次のＣＡＭエントリ３０４は、図１における送信元ＩＰアドレスに関して次に厳しい仕様を有するテーブルエントリ、すなわち、一致が存在するためには送信元ＩＰアドレスの最初の１２０ビットが「２０．１．１」で開始され、後続のゼロが続かなければならないこと、すなわち２００１：０１００：０：０：０：０：０：０／１２０でなければならないことを指定する第４のエントリ１０６を選択することによって構築される。必然的にこの仕様によって満足される送信元ＩＰアドレスの仕様を有する他の任意のテーブルエントリ、例えば任意の送信元ＩＰアドレスとの一致を指定するエントリ１０４もまた選択される。これらのエントリに基づいて、ＣＡＭエントリ３０４のキー部分は、エントリ１０６からの送信元ＩＰの仕様及びこれに続くタイプ１を示すタイプフィールドに設定される。エントリ３０４のコンテンツ部分は、図１におけるエントリ１０６及び１０８により指定されるＡＣＬタイプである一致するＡＬＣタイプ２及び４を示すビットマップ０１０１に設定される。残りのＣＡＭエントリは同様の方法で構築される。
【００２４】
図４を参照すると、図３の場合と同様に、ＣＡＭインデックスフィールドは、ＣＡＭシステムに複数のエントリが格納される第２のカテゴリの相対的な順序即ちこれらのエントリの相対的な優先順位を示すが、これらのエントリの部分として物理的には格納されない。各エントリのキー部分は、宛先ＩＰアドレスとタイプフィールドとの組み合わせである。各エントリのコンテンツ部分は、当該エントリに関連づけられるＡＣＬの一致を示すビットマップフィールドである。
【００２５】
図４における、有利には最長の一致が第１の順位に配置されるＣＡＭエントリもまた、図１のテーブルエントリから次のように導出される。宛先ＩＰアドレスに関して最も厳しい仕様を有するテーブルエントリ、すなわち１２８ビットの宛先ＩＰアドレスが「６０．１．１」で始まり後続のゼロが続くこと、すなわち６００１：０１００：０：０：０：０：０：０／１０４に等しいことを指定する第４のエントリ１０６が選択される。宛先ＩＰアドレスの仕様がこの特定の仕様に一致する他の任意のテーブルエントリ、すなわち、宛先ＩＰアドレスに「全て」を指定する第１のエントリ１０８もまた選択される。図１のエントリ１０６からの宛先ＩＰアドレスの仕様は、タイプ２を示すタイプフィールドと共に、図４における第１のＣＡＭエントリ４０２のキー部分を形成する。ＣＡＭエントリ４０２のコンテンツ部分は、図１の２つの一致するテーブルエントリ１０６及び１０８のＡＣＬタイプ、すなわちタイプ１及び４を示すビットマップである。
【００２６】
図４における次のＣＡＭエントリ４０４は、図１における宛先ＩＰアドレスに関して次に厳しい仕様を有するテーブルエントリ、すなわち、一致が存在するためには宛先ＩＰアドレスの最初の１０４ビットが「３０．１」で開始され、後続のゼロが続かなければならないこと、すなわち３００１：０：０：０：０：０／９６でなければならないことを指定する第３のエントリ１０２を選択することによって構築される。必然的にこの仕様によって満足される宛先ＩＰアドレスの仕様を有する他の任意のテーブルエントリ、例えば宛先ＩＰアドレスの最初の９６ビットが「３０．１」で開始され、後続のゼロが続かなければならないこと、すなわち３００１：００００：００００：００００：００００：００００／９６（３００１：０：０：０：０：０／９６に等しい）でなければならないことを指定するエントリ１０４及び任意の宛先ＩＰアドレスとの一致を指定するエントリ１０８もまた選択される。これらのエントリに基づいて、ＣＡＭエントリ４０４のキー部分は、エントリ１０２からの宛先ＩＰの仕様及びこれに続くタイプ２を示すタイプフィールドに設定される。エントリ４０４のコンテンツ部分は、図１におけるエントリ１０２，１０４及び１０８により指定されるＡＣＬタイプである一致するＡＬＣタイプ１，２及び３を示すビットマップ１１１０に設定される。図４における残りのＣＡＭエントリは同様の方法で構築される。
【００２７】
図５を参照すると、図３〜図４と同様に、ＣＡＭインデックスフィールドは、ＣＡＭシステムに複数のエントリが格納される相対的な順序即ちこれらのエントリの相対的な優先順位を示すが、これらのエントリの部分として物理的には格納されない。各エントリのキー部分は、送信元ポートと、宛先ポートと、プロトコルと、タイプフィールドとの組み合わせである。各エントリのコンテンツ部分は、当該エントリに関連づけられるＡＣＬの一致を示すビットマップフィールドである。
【００２８】
図５における、有利には最長の一致が第１の順位に配置されるＣＡＭエントリもまた、図１のテーブルエントリから次のように導出される。送信元ポート、宛先ポート及びプロトコルに関して最も厳しい仕様を有するテーブルエントリ、すなわち送信元ポートは１０から５０までの範囲であり、宛先ポートは２２でありかつプロトコルはＵＤＰであることを指定する第２のエントリ１０４が選択される。その送信元ポート、宛先ポート、プロトコルの組み合わされた仕様がこの特定の仕様に一致する他の任意のテーブルエントリ、すなわち、送信元ＩＰアドレスに「全て」を指定し、宛先ポートに２０から９０までの範囲を指定しかつプロトコルにＵＤＰを指定する第３のエントリ１０２もまた選択される。図１のエントリ１０４からの送信元ポート、宛先ポート及びプロトコルの組み合わされた仕様は、タイプ３を示すタイプフィールドと共に、図５における第１のＣＡＭエントリ５０２のキー部分を形成する。ＣＡＭエントリ５０２のコンテンツ部分は、図１の２つの一致するテーブルエントリ１０２及び１０４のＡＣＬタイプ、すなわちタイプ２及び３を示すビットマップである。
【００２９】
図５における次のＣＡＭエントリ５０４は、図１における組み合わされた送信元ポート、宛先ポート及びプロトコルに関して次に厳しい仕様を有するテーブルエントリ、すなわち、任意の送信元ポートが一致し、宛先ポートは２０から９０までの範囲でありかつプロトコルはＵＤＰであることを指定する第３のエントリ１０２を選択することによって構築される。必然的にこの仕様によって満足される送信元ポート、宛先ポート及びプロトコルの組み合わされた仕様を有する任意のテーブルエントリも選択されるが、この特定の事例にそのようなエントリは存在しない。従って、ＣＡＭエントリ５０４は、図１におけるエントリ１０２のみに基づいて構築される。このエントリに基づいて、ＣＡＭエントリ５０４のキー部分は、エントリ１０２からの送信元ポート、宛先ポート及びプロトコルの組み合わされた仕様及びこれに続くタイプ３を示すタイプフィールドに設定される。エントリ５０４のコンテンツ部分は、図１におけるエントリ１０２により指定されるＡＣＬタイプである一致するＡＬＣタイプ３を示すビットマップ００１０に設定される。
【００３０】
図５のエントリ５０６は、図１におけるエントリ１０６及び１０８の組み合わせから特別に構築される。エントリ５０６の目的は、このエントリの一致に正しいＡＣＬアクションが割り当てられることを保証することにある。例えば、送信元ポートが４０、宛先ポートが８０及びプロトコルタイプがＴＣＰであるパケットを考察されたい。エントリ５０６が存在しなければ、このパケットはエントリ５０８及び５１０の両方に一致する。これらの２つのエントリに関するビットマップの論理積は００００であるので、パケットにＡＣＬアクションは割り当てられないが、図１のテーブルはこのようなパケットにＡＣＬアクション１が割り当てられることを要求しているので、これは誤りである。エントリ５０６は、このパケットが実際にＡＣＬアクション１を割り当てられることを保証する。
【００３１】
図５における残りのＣＡＭエントリはエントリ５０２及び５０４と同様の方法で構築される。
【００３２】
図３〜図５に示す各エントリは、同一のＣＡＭシステムに格納されてもよく、もしくは異なるＣＡＭシステムに格納されてもよい。単一のＣＡＭシステムを用いて全てのタイプのエントリを格納することは効率的であって費用に対しても効率的であるが、異なるタイプを区別するためにＣＡＭキー及びＣＡＭエントリのキー部分へ追加されなければならないタイプフィールドの形式の追加のオーバーヘッドを必要とする。各タイプのＣＡＭエントリが異なるＣＡＭシステムに格納されるパーティショニングの方法は、ＣＡＭキー及びＣＡＭエントリのキー部分におけるタイプフィールドの必要性を回避する。しかしながら、パーティショニングは複数のＣＡＭシステム及び異なるＣＡＭキーを複数のＣＡＭシステムのうちの異なる１つのＣＡＭシステムに入力するというオーバーヘッドを必要とする。
【００３３】
さらに、図３〜図５に示すエントリは、最長の一致を第１の順位にする配置以外の配置であってもよい。例えば、結果に相違を生じることなく、図３〜図５におけるエントリを最短の一致を第１の順位にするように配置し、最上位のエントリではなく最下位のエントリに高い優先順位を与えるように優先順位決定方法を変更することも可能である。
【００３４】
同一又は異なるＣＡＭシステムを用いて複数のＣＡＭエントリが保持される実施例におけるテーブルルックアップ動作は、図６に示す複数のステップで進行する。ステップ６０２において、パケットからの送信元ＩＰアドレスに基づくＣＡＭキーを用いて、第１のＣＡＭアクセスが実行される。全てのアクセスが同一のＣＡＭシステムに対して行われるときには、図２ａに示す第１のタイプのＣＡＭキー、すなわち送信元ＩＰアドレス及びキータイプに基づくＣＡＭキーを用いてアクセスが行われる。考察しているパケットが「２０．１．１．０…」（１６進数では２００１：０１００…）の送信元ＩＰアドレスを有すると仮定すると、この第１のＣＡＭアクセスの結果はエントリ３０４との一致である（エントリ３０６との一致もあるが、優先順位決定方法の適用後にはエントリ３０４のみが返されると仮定される。）。このアクセスから得られるエントリ３０４におけるビットマップ、すなわち０１０１は、ＡＣＬタイプ２及び４との一致を示す。
【００３５】
異なるエントリタイプが異なるＣＡＭシステムを用いて保持されるときには、第１のＣＡＭアクセスは、第１のタイプのエントリのみを保持する第１のＣＡＭシステムにおいて実行される。この場合、ＣＡＭキーは、タイプフィールドが除去された図２ａに示すフォーマットを有してもよく、ＣＡＭエントリもまた、タイプフィールドが除去された図３に示すフォーマットを有してもよい。
【００３６】
ステップ６０４において、パケットからの宛先ＩＰアドレスに基づくＣＡＭキーを用いて、第２のＣＡＭアクセスが実行される。全てのＣＡＭアクセスが同一ＣＡＭシステムに対して行われるときには、図２ｂに示す第２のタイプのＣＡＭキー、すなわち宛先ＩＰアドレス及びキータイプに基づくＣＡＭキーを用いてアクセスが行われる。考察しているパケットが「６０．１．１．０…」（１６進数では６００１．０１００…）の宛先ＩＰアドレスを有すると仮定すると、この第２のアクセスの結果はエントリ４０２との一致である（同じく、エントリ４０６との一致もあるが、優先順位決定方法の適用後にはエントリ４０２のみが返されると仮定される。）。このアクセスから得られるエントリ４０２におけるビットマップ、すなわち１００１は、ＡＣＬタイプ１及び４との一致を示す。
【００３７】
異なるエントリタイプが異なるＣＡＭシステムを用いて保持されるときには、第２のＣＡＭアクセスは、第２のタイプのエントリのみを保持する第２のＣＡＭシステムにおいて実行される。この場合、ＣＡＭキーは、タイプフィールドが除去された図２ｂに示すフォーマットを有してもよく、ＣＡＭエントリもまた、タイプフィールドが除去された図４に示すフォーマットを有してもよい。
【００３８】
ステップ６０６において、パケットからの送信元ポート、宛先ポート及びプロトコルの各フィールドに基づくＣＡＭキーを用いて、第３のＣＡＭアクセスが実行される。全てのアクセスが同一ＣＡＭシステムに対して行われるときには、図２ｃに示すフォーマットを有するキー、すなわち送信元ポート、宛先ポート、プロトコルの組み合わせ及びキータイプに基づくＣＡＭキーを用いて第３のＣＡＭアクセスが行われる。考察しているパケットが４０の送信元ポート、８０の宛先ポート及びＴＣＰプロトコルを有すると仮定すると、この第３のアクセスの結果はエントリ５０６との一致である（同じく、エントリ５０８及び５１０との一致もあるが、優先順位決定方法の適用後にはエントリ５０６のみが返されると仮定される。）。このアクセスから得られるビットマップ、すなわち１００１は、ＡＣＬタイプ１及び４との一致を示す。
【００３９】
異なるエントリタイプが異なるＣＡＭシステムを用いて保持されるときには、第３のＣＡＭアクセスは、第３のタイプのエントリのみを保持する第３のＣＡＭシステムにおいて実行される。この場合、ＣＡＭキーは、タイプフィールドが除去された図２ｃに示すフォーマットを有してもよく、ＣＡＭエントリもまた、タイプフィールドが除去された図５に示すフォーマットを有してもよい。
【００４０】
ステップ６０８において、３つのアクセスからの３つのビットマップ、すなわち０１０１，１００１，１００１は例えば論理積演算されて論理的に合成され、ＡＣＬタイプ４のみとの一致を示す合成のビットマップ０００１がもたらされる。すなわち、ＡＣＬタイプ４を識別する図１におけるエントリ１０６としての正しい結果は、問題のパケットのテーブルインデックスに対して一致する唯一のエントリである。したがって、テーブルルックアップ動作は、各アクセスがルックアップテーブルインデックスのサブセットから導出されるＣＡＭキーを用いてかつ最大の望ましいＣＡＭキーサイズ以下のサイズを有する３つのＣＡＭアクセスを用いて正しく実行されたことが分かる。
【００４１】
次にステップ６１０において、合成のビットマップはパケットに関する１つのＡＬＣアクション（又は複数のＡＣＬアクション）に変換される。例えば、合成のビットマップは、可能な複数のＡＣＬアクションのアレイを保持するメモリに対するインデックスとして用いられてもよい。上記メモリを、複数のＣＡＭエントリを保持する（複数の）ＡＲＡＭから分離していてもよい。有利には、上記アレイは合成のビットマップを受信し、ビットマップにおける論理値「１」のそれぞれについてその論理値「１」に対応するＡＣＬアクションを検索するように構成される。一致するＡＣＬタイプが論理値「１」ではなく論理値「０」によって示される場合、アレイは、ビットマップにおける論理値「０」のそれぞれについてその論理値「０」に対応するＡＣＬアクションを検索するように構成される。
【００４２】
合成のビットマップ内に２つ以上の論理値「１」が存在する場合に発生するように、複数のＡＣＬアクションが検索されたときには、潜在的な不確定性を解決しパケットの１つのＡＣＬアクションを返すように優先順位決定方法が適用されてもよい。例えば、付番がより高いＡＣＬアクションよりも付番がより低いＡＣＬアクションに対して高い優先順位を与える、例えばＡＣＬ４よりもＡＣＬ２に高い優先順位を与える方法が採用される場合もある。或いは、付番がより低いＡＣＬアクションよりも付番がより高いＡＣＬアクションに対して高い優先順位を与える、例えばＡＣＬ２よりもＡＣＬ４に高い優先順位を与える方法が用いられる可能性もある。
【００４３】
多数の可能なＡＣＬタイプを含むアプリケーションでは、各ＣＡＭエントリのビットマップの長さが大きくなり、結果的に、メモリ利用は非効率的になりかつメモリアクセス時間は遅くなる可能性がある。各ビットマップにおいて表されるＡＣＬマッチの数は極めて少ないので、これらのビットマップの１つの特徴は、これらが必然的に疎である傾向にあることである。このようなアプリケーションでは、各エントリのコンテンツ部分が、１つ又は複数のＡＣＬタイプを表すビットマップではなく、有利には圧縮形式で格納される１つ又は複数のＡＣＬタイプの指示子であることであって、各アクセスタイプに関する順序づけられたエントリセットを格納することがより効率的である場合がある。例えば、ＡＣＬタイプ２の圧縮された指示子は、ＡＣＬタイプ２を示すビットマップ、すなわち０１００とは対照的に、単に数字２であってもよい。別の例として、ＡＣＬタイプ２及び４の圧縮された指示子は、ＡＣＬタイプ２及び４を示すビットマップ、すなわち０１０１ではなく、単に数字２及び４の連結であることも可能である。このようなアプリケーションにおける各ＣＡＭアクセスは、結果的に、１つ又は複数のマッチングエントリになってもよい。これらのエントリが検索されると、一致したエントリからビットマップが「オンザフライ」で生成される。ＣＡＭアクセスのそれぞれは同様の方法で進行し、全てのＣＡＭアクセスが実行されたときに、生成されたビットマップが論理的に合成され、上述した同様の方法で合成のビットマップが形成される。
【００４４】
ビットマップが「オンザフライ」で生成される実施例におけるテーブルルックアップ動作は、図１０に示す複数のステップで進行する。説明を簡潔にするために、全てのエントリは同一のＣＡＭシステムに格納されると仮定するが、上述したように、異なるタイプのＣＡＭエントリが異なるＣＡＭシステムに格納される「オンザフライ」の実施例及び実施形態が可能であることは認識されるべきである。
【００４５】
「オンザフライ」のビットマップ生成では、ＣＡＭエントリは図３〜図５に示すものとは異なり、代わりに、図７〜図９に示すフォーマットにそれぞれ従う。より具体的に、第１のタイプのエントリを図７に示す。これらのエントリは、エントリのコンテンツ部分を１つ又は複数のＡＣＬタイプ又はＡＣＬアクションの指示子を有利には圧縮された形式で投入（ポピュレート）し、送信元ＩＰアドレス及びタイプをエントリのキー部分として指定することによって、図１のルックアップテーブルエントリから生成される点に留意されたい。上述したように、ＣＡＭインデックスフィールドはエントリによって物理的に格納されず、エントリがＣＡＭシステムに格納される相対的な順序を単に示す。その結果は、図３におけるテーブルと同様であるが、各エントリのコンテンツ部分がビットマップではなく、有利には圧縮された形式のＡＣＬタイプの指示子で投入される点が異なる。
【００４６】
第２のタイプのエントリを図８に示す。これらのエントリは、エントリのコンテンツ部分を１つ又は複数のＡＣＬタイプ又はＡＣＬアクションの指示子を有利には圧縮された形式で投入し、宛先ＩＰアドレス及びタイプをエントリのキー部分として指定することによって、図１のルックアップテーブルエントリから生成される点に留意されたい。上述したように、ＣＡＭインデックスフィールドはエントリによって物理的に格納されず、エントリがＣＡＭシステムに格納される相対的な順序を単に示す。その結果は、図４におけるテーブルと同様であるが、各エントリのコンテンツ部分がビットマップではなく、有利には圧縮された形式のＡＣＬタイプの指示子で投入される点が異なる。
【００４７】
第３のタイプのエントリを図９に示す。これらのエントリは、エントリのコンテンツ部分を１つ又は複数のＡＣＬタイプ又はＡＣＬアクションの指示子を有利には圧縮された形式で投入し、送信元ポート、宛先ポート、プロトコルの組み合わせ及びタイプをエントリのキー部分として指定することによって、図１のルックアップテーブルエントリから生成される点に留意されたい。上述したように、ＣＡＭインデックスフィールドはエントリによって物理的に格納されず、エントリがＣＡＭシステムに格納される相対的な順序を単に示す。その結果は、図５におけるテーブルと同様であるが、各エントリのコンテンツ部分がビットマップではなく、有利には圧縮された形式のＡＣＬタイプの指示子で投入される点が異なる。
【００４８】
図１０を参照すると、ステップ１００２において、図２ａに示す第１のタイプのＣＡＭキー、すなわち、送信元ＩＰアドレスとキータイプとに基づくＣＡＭキーを用いて、第１のＣＡＭアクセスが実行される。考察しているパケットが「２０．１．１．０…」の送信元ＩＰアドレスを有すると仮定すると、この第１のＣＡＭアクセスの結果は、図７におけるエントリ７０２との一致になる（エントリ７０４も一致するが、優先順位決定方法の適用後にはエントリ７０２のみが返されると仮定される。）。
【００４９】
ステップ１００４において、上記アクセスの結果として生じる一致するエントリ、すなわちエントリ７０２によって保持されるＡＣＬタイプの指示子、すなわちＡＣＬタイプ２及び４から、オンザフライでビットマップが生成される。生成されるビットマップ、すなわち０１０１は、ＡＣＬタイプ２及び４との一致を示す。
【００５０】
ステップ１００６において、図２ｂに示す第２のタイプのＣＡＭキー、すなわち、宛先ＩＰアドレスとキータイプとに基づくＣＡＭキーを用いて、第２のＣＡＭアクセスが実行される。考察しているパケットが「６０．１．１．０…」の宛先ＩＰアドレスを有すると仮定すると、この第２のアクセスの結果は、図８におけるエントリ８０２との一致になる（エントリ８０４も一致するが、優先順位決定方法の適用後にはエントリ８０２のみが返されると仮定される。）。
【００５１】
ステップ１００８において、エントリ８０２との一致を表すビットマップ、すなわち、１００１が、ＡＣＬタイプ１及び４に関する指示子を保持して生成される。
【００５２】
ステップ１０１０において、図２ｃに示すフォーマットを有するキー、すなわち、送信元ポート、宛先ポート、プロトコルの組み合わせとキータイプとに基づくＣＡＭキーを用いて、第３のＣＡＭアクセスが実行される。考察しているパケットが４０の送信元ポートと、８０の宛先ポートと、ＴＣＰプロトコルとを有すると仮定すると、この第３のアクセスの結果は、図９におけるエントリ９０２との一致になる（エントリ９０４及び９０６も一致するが、優先順位決定方法の適用後にはエントリ９０２のみが返されると仮定される。）。
【００５３】
ステップ１０１２において、エントリ９０２との一致から得られるビットマップすなわち、１００１が、ＡＣＬタイプ１及び４の指示子を保持して生成される。
【００５４】
ステップ１０１４において、３つのアクセスからの３つのビットマップ、すなわち０１０１，１００１，１００１は例えば論理積演算されて論理的に合成され、ＡＣＬタイプ４のみとの一致を示す合成のビットマップ０００１がもたらされる。すなわち、この場合も、ＡＣＬタイプ４を識別する図１におけるエントリ１０６としての正しい結果は、問題のパケットのテーブルインデックスに対して一致する唯一のエントリである。したがって、テーブルルックアップ動作は、各アクセスがルックアップテーブルインデックスのサブセットから導出されるＣＡＭキーを用いてかつ最大の望ましいＣＡＭキーサイズ以下のサイズを有する３つのＣＡＭアクセスを用いて正しく実行されたことが分かる。
【００５５】
次にステップ１０１６において、図６におけるステップ６１０と同様に、合成のビットマップはパケットに関する１つのＡＬＣアクション（又は複数のＡＣＬアクション）に変換される。例えば、合成のビットマップは、可能なＡＣＬアクションのアレイを保持するメモリに対するインデックスとして用いられてもよい。上記メモリを、複数のＣＡＭエントリを保持する（複数の）ＡＲＡＭから分離していてもよい。有利には、上記アレイは合成のビットマップを受信し、ビットマップにおける論理値「１」のそれぞれについてその論理値「１」に対応するＡＣＬアクションを検索するように構成される。一致するＡＣＬタイプが論理値「１」ではなく論理値「０」によって示される場合、アレイは、ビットマップにおける論理値「０」のそれぞれについてその論理値「０」に対応するＡＣＬアクションを検索するように構成される。
【００５６】
図６のステップ６１０と同様に、合成のビットマップ内に２つ以上の論理値「１」が存在する場合に発生するように、複数のＡＣＬアクションが検索されたときには、潜在的な不確定性を解決しパケットの１つのＡＣＬアクションを返すように優先順位決定方法が適用されてもよい。例えば、付番がより高いＡＣＬアクションよりも付番がより低いＡＣＬアクションに対して高い優先順位を与える、例えばＡＣＬ４よりもＡＣＬ２に高い優先順位を与える方法が採用される場合もある。或いは、付番がより低いＡＣＬアクションよりも付番がより高いＡＣＬアクションに対して高い優先順位を与える、例えばＡＣＬ２よりもＡＣＬ４に高い優先順位を与える方法が用いられる可能性もある。
【００５７】
上述した任意の方法を実行するためのシステムを図１１に示す。分類／転送の決定が望まれるパケットは、バッファ１１０２に格納される。図示するように、パケットは複数のフィールド、すなわち送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポート、プロトコル、ＴｏＳ、ＴＣＰフラグ等を有し、そのそれぞれはマルチプレクサ１１０４のデータ入力部に入力される。例えば、有限状態機械（finite state machine）であるコントローラ１１０６は、１つ又は複数の選択信号１１０７を用いて１つのパケットフィールド及び／又はパケットフィールドの組み合わせを選択し、選択信号１１０７はマルチプレクサ１１０４の制御入力部に入力される。これに応答して、マルチプレクサ１１０４は選択されたフィールド及び／又はフィールドの組み合わせを１つ又は複数のデータ出力部７０９を介して出力する。選択されたフィールド及び／又は選択されたフィールドの組み合わせは、バッファ１１０８に格納される。ＣＡＭキー及びエントリがタイプフィールドを有する場合には、コントローラ１１０２はバッファ１１０８にタイプフィールドを挿入し、バッファ１１０８を問題のＣＡＭアクセスに適するタイプ値、すなわちタイプ１、タイプ２、タイプ３等で投入する。
【００５８】
ＣＡＭアクセスは、コントローラ１１０６による制御の下で１つ又は複数のＣＡＭシステム１１１０に対して実行される。単一のＣＡＭシステムが提供されているときには、複数のアクセスが順次実行される。複数のＣＡＭシステムが提供されているときには、複数のアクセスが並行して実行されてもよい。これらのアクセスから得られる一致する任意のＣＡＭエントリは、一致するＣＡＭエントリを格納するための１つ又は複数の格納位置を備えた格納装置１１１２に格納される。格納装置１１１２は、単一のアクセスから得られる１つ又は複数の一致するＣＡＭエントリ、同一のテーブルルックアップ動作に関する１つ又は複数のアクセスから得られるエントリ又は異なるルックアップテーブル動作に関する１つ又は複数のアクセスから得られるエントリのための格納装置を提供してもよい。
【００５９】
ＣＡＭエントリのコンテンツ部分が一致するＡＣＬタイプを表すビットマップを提供する場合には、ハードウェア、ソフトウェア又はハードウェア／ソフトウェアの組み合わせで実施されてよい論理回路１０１４は、ビットマップを論理積演算すること等により論理的に合成することにより、ルックアップテーブル動作全体の一致する１つ又は複数のＡＣＬタイプを示す合成のビットマップを得るように構成される。
【００６０】
ＣＡＭエントリのコンテンツ部分がエントリの一致するＡＣＬタイプを提供しかつビットマップがオンザフライで生成される場合には、論理回路１０１４は、一致するＡＣＬタイプからオンザフライでビットマップを生成するように構成される。複数のアクセスについて、このようなビットマップが全て生成されると、論理回路１０１４はさらに、生成されたビットマップを論理的に合成し、この場合もやはりルックアップテーブル動作全体の一致する１つ又は複数のＡＣＬタイプを示す合成のビットマップを得るように構成される。
【００６１】
システムには、可能なＡＣＬアクションのアレイを保持するメモリ１１１６が設けられてもよい。図６及び１０に関連して上述したように、合成のビットマップはこのメモリに対するインデックスとして用いられてもよい。これに応答して、メモリは、合成のビットマップにおける論理値「１」（又は場合によっては論理値「０」）に対応する全てのＡＣＬアクションを提供するように構成される。２つ以上の対応するＡＣＬアクションが存在すれば、潜在的な不確定性を解決し問題のパケットに関して１つのＡＣＬアクションを返す優先順位決定方法が適用されてもよい。
【００６２】
以上、本発明の様々な実施形態について記述したが、一般的な当業者には、本発明の範囲に含まれるさらに多くの実施形態及び実施例が可能であることが明白となるであろう。したがって、本発明は、添付の請求の範囲及びその等価物との照合によってのみ限定されるべきものである。
【図面の簡単な説明】
【００６３】
【図１】ＩＰｖ６に準拠するパケットに関する転送の決定を示すルックアップテーブルの一例であり、テーブルインデックスはパケットのＩＰｖ６送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート、宛先ポート及びプロトコルの各フィールドの組み合わせである。
【図２ａ】図３に示す第１のタイプのＣＡＭエントリの可能なＣＡＭキーのフォーマットである。
【図２ｂ】図４に示す第２のタイプのＣＡＭエントリの可能なＣＡＭキーのフォーマットである。
【図２ｃ】図５に示す第３のタイプのＣＡＭエントリの可能なＣＡＭキーのフォーマットである。
【図３】図１のルックアップテーブルから導出された第１のタイプのＣＡＭエントリの一例であり、これらのエントリのＣＡＭキーはＩＰｖ６送信元ＩＰアドレスである。
【図４】図１のルックアップテーブルから導出された第２のタイプのＣＡＭエントリの一例であり、これらのエントリのＣＡＭキーはＩＰｖ６宛先ＩＰアドレスである。
【図５】図１のルックアップテーブルから導出された第３のタイプのＣＡＭエントリの一例であり、これらのエントリのＣＡＭキーはＩＰｖ６送信元ポート、宛先ポート及びプロトコルである。
【図６】ＩＰｖ６プロトコルに準拠するパケット交換装置又はシステムにおいて複数のＣＡＭアクセスを介してパケットの転送の決定を行なう方法のフローチャートであり、各ＣＡＭアクセスはビットマップをもたらし、各ＣＡＭアクセスからのビットマップはパケットの可能な転送の決定を示す合成のビットマップを形成するように論理的に合成される。
【図７】第１のタイプのＣＡＭエントリの例であり、コンテンツ部分はビットマップではなく（複数の）ＡＣＬタイプの指示子である。
【図８】第２のタイプのＣＡＭエントリの例であり、コンテンツ部分はビットマップではなく（複数の）ＡＣＬタイプの指示子である。
【図９】第４のタイプのＣＡＭエントリの例であり、コンテンツ部分はビットマップではなく（複数の）ＡＣＬタイプの指示子である。
【図１０】ＩＰｖ６プロトコルに準拠するパケット交換装置又はシステムにおいて複数のＣＡＭアクセスを介してパケットの分類／転送の決定を行なう方法のフローチャートであり、ビットマップは、ＣＡＭアクセスから得られるＣＡＭエントリのそれぞれからオンザフライで生成され、各ＣＡＭアクセスに続いて生成されるビットマップはパケットの可能な転送の決定を示す合成のビットマップを形成するように論理的に合成される。
【図１１】複数のＣＡＭアクセスを介してルックアップテーブル動作を実行するためのシステムのブロック図である。
【図１】
2009532989.tif 000003
【図２ａ】
2009532989.tif 000004
【図２ｂ】
2009532989.tif 000005
【図２ｃ】
2009532989.tif 000006
【図３】
2009532989.tif 000007
【図４】
2009532989.tif 000008
【図５】
2009532989.tif 000009
【図６】
2009532989.tif 000010
【図７】
2009532989.tif 000011
【図８】
2009532989.tif 000012
【図９】
2009532989.tif 000013
【図１０】
2009532989.tif 000014
【図１１】
2009532989.tif 000015
【手続補正書】
【提出日】平成21年7月1日(2009.7.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パケット交換装置又はシステムにおいてテーブルルックアップ動作を実行する方法であって、
第１のタイプの第１のＣＡＭキーを用いて第１のＣＡＭシステムに対する第１のＣＡＭアクセスを実行することにより、１つ又は複数の第１のＣＡＭエントリを得ることと、
上記第１のタイプとは異なる第２のタイプの第２のＣＡＭキーを用いて第２のＣＡＭシステムに対する第２のＣＡＭアクセスを実行することにより、１つ又は複数の第２のＣＡＭエントリを得ることとを含み、
上記１つ又は複数の第１のＣＡＭエントリのうちの少なくとも１つは所定の第１のコンテンツ部分を有し、
上記１つ又は複数の第２のＣＡＭエントリのうちの少なくとも１つは所定の第２のコンテンツ部分を有し、
上記方法は、
少なくとも、上記１つ又は複数の第１のＣＡＭエントリからの上記所定の第１のコンテンツ部分、及び上記１つ又は複数の第２のＣＡＭエントリからの上記所定の第２のコンテンツ部分に応答して、１つ又は複数の一致するルックアップテーブルエントリを決定することを含む方法。
【請求項２】
上記第１及び第２のＣＡＭシステムはそれぞれ、ＣＡＭと、関連したＲＡＭとを備えた請求項１記載の方法。
【請求項３】
上記ＣＡＭエントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項１記載の方法。
【請求項４】
上記第１及び第２のＣＡＭシステムは互いに異なる請求項１記載の方法。
【請求項５】
上記第１及び第２のＣＡＭシステムは同一である請求項１記載の方法。
【請求項６】
ＣＡＭをそれぞれ用いる１つ又は複数の追加のＣＡＭアクセスを実行することにより、１つ又は複数の追加のＣＡＭエントリを得ることと、
上記１つ又は複数の第１のＣＡＭエントリ、上記１つ又は複数の第２のＣＡＭエントリ及び上記１つ又は複数の追加のＣＡＭエントリに応答して、上記１つ又は複数の一致するルックアップテーブルエントリを決定することとをさらに含む請求項１記載の方法。
【請求項７】
上記第１のＣＡＭアクセスにより、１つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第１のビットマップを含む第１のＣＡＭエントリが得られ、
上記第２のＣＡＭアクセスにより、１つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第２のビットマップを含む第２のＣＡＭエントリが得られ、
上記決定するステップは、上記第１及び第２のビットマップを論理的に合成することにより、上記１つ又は複数の一致するルックアップテーブルエントリを示す合成のマップを得ることを含む請求項１記載の方法。
【請求項８】
上記決定するステップは、
上記１つ又は複数の第１のＣＡＭエントリから第１のビットマップを形成することと、
上記１つ又は複数の第２のＣＡＭエントリから第２のビットマップを形成することと、
上記第１及び第２のビットマップを論理的に合成することにより、上記１つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップを得ることを含む請求項１記載の方法。
【請求項９】
パケット交換装置又はシステムにおいて、テーブルルックアップインデックス情報から導出される複数のＣＡＭキーを用いてテーブルルックアップ動作を実行する方法であって、
上記テーブルルックアップインデックス情報のサブセットから導出される第１のＣＡＭキーを用いて第１のＣＡＭシステムに対する第１のＣＡＭアクセスを実行することにより、１つ又は複数の第１のＣＡＭエントリを得ることと、
上記テーブルルックアップインデックス情報のサブセットから導出される第２のＣＡＭキーを用いて第２のＣＡＭシステムに対する第２のＣＡＭアクセスを実行することにより、１つ又は複数の第２のＣＡＭエントリを得ることと、
上記１つ又は複数の第１のＣＡＭエントリ及び上記１つ又は複数の第２のＣＡＭエントリに応答して１つ又は複数の一致するルックアップテーブルエントリを決定することとを含み、
上記第１及び第２のＣＡＭシステムは同一であり、
上記第１及び第２のＣＡＭキーは、第１及び第２のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
上記第１のＣＡＭキーにおけるタイプフィールドは第１のタイプを示しており、上記第２のＣＡＭキーにおけるタイプフィールドは第２のタイプを示している方法。
【請求項１０】
上記ＣＡＭシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされたエントリの第１及び第２のグループを備えた複数のエントリを有し、
上記第１のグループにおけるエントリに含まれるタイプフィールドは上記第１のタイプを示しており、上記第２のグループにおけるエントリに含まれるタイプフィールドは上記第２のタイプを示している請求項９記載の方法。
【請求項１１】
パケット交換装置又はシステムにおいてテーブルルックアップ動作を実行する方法であって、
ＣＡＭシステムにおいて、第１のタイプの第１のＣＡＭキーを用いて第１のＣＡＭアクセスを実行することにより、１つ又は複数の可能性のある一致するテーブルエントリを示す所定の第１のビットマップを含む第１のＣＡＭエントリを得ることと、
上記ＣＡＭシステムにおいて、上記第１のタイプとは異なる第２のタイプの第２のＣＡＭキーを用いて第２のＣＡＭアクセスを実行することにより、１つ又は複数の可能性のある一致するテーブルエントリを示す所定の第２のビットマップを含む第２のＣＡＭエントリを得ることと、
上記所定の第１及び第２のビットマップを、１つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップに論理的に合成することを含む方法。
【請求項１２】
上記ＣＡＭエントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項１１記載の方法。
【請求項１３】
パケット交換装置又はシステムにおいて、テーブルルックアップインデックス情報から導出される複数のＣＡＭキーを用いてテーブルルックアップ動作を実行する方法であって、
ＣＡＭシステムにおいて、上記テーブルルックアップインデックス情報のサブセットから導出される第１のＣＡＭキーを用いて第１のＣＡＭアクセスを実行することにより、１つ又は複数の可能性のある一致するテーブルエントリを示す第１のビットマップを含む第１のＣＡＭエントリを得ることと、
上記ＣＡＭシステムにおいて、上記テーブルルックアップインデックス情報のサブセットから導出される第２のＣＡＭキーを用いて第２のＣＡＭアクセスを実行することにより、１つ又は複数の可能性のある一致するテーブルエントリを示す第２のビットマップを含む第２のＣＡＭエントリを得ることと、
上記第１及び第２のビットマップを、１つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップに論理的に合成することとを含み、
上記第１及び第２のＣＡＭキーは、第１及び第２のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
上記第１のＣＡＭキーにおけるタイプフィールドは第１のタイプを示しており、上記第２のＣＡＭキーにおけるタイプフィールドは第２のタイプを示している方法。
【請求項１４】
上記ＣＡＭシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされたエントリの第１及び第２のグループを備えた複数のエントリを有し、
上記第１のグループにおけるエントリに含まれる上記タイプフィールドは上記第１のタイプを示しており、上記第２のグループにおけるエントリに含まれる上記タイプフィールドは上記第２のタイプを示している請求項１３記載の方法。
【請求項１５】
パケット交換装置又はシステムにおいてテーブルルックアップ動作を実行するシステムであって、
第１のタイプの第１のＣＡＭキーを用いて第１のＣＡＭアクセスを実行することにより、１つ又は複数の第１のＣＡＭエントリを得る第１のＣＡＭシステムと、
上記第１のタイプとは異なる第２のタイプの第２のＣＡＭキーを用いて第２のＣＡＭアクセスを実行することにより、１つ又は複数の第２のＣＡＭエントリを得る第２のＣＡＭシステムとを備え、
上記１つ又は複数の第１のＣＡＭエントリのうちの少なくとも１つは所定の第１のコンテンツ部分を有し、
上記１つ又は複数の第２のＣＡＭエントリのうちの少なくとも１つは所定の第２のコンテンツ部分を有し、
上記システムは、
少なくとも、上記第１のＣＡＭアクセスから得られる上記１つ又は複数の第１のＣＡＭエントリからの上記所定の第１のコンテンツ部分、及び上記第２のＣＡＭアクセスから得られる上記１つ又は複数の第２のＣＡＭエントリからの上記所定の第２のコンテンツ部分に応答して、１つ又は複数の一致するルックアップテーブルエントリを決定する論理回路を備えたシステム。
【請求項１６】
上記第１及び第２のＣＡＭシステムはそれぞれ、ＣＡＭと、関連したＲＡＭとを備えた請求項１５記載のシステム。
【請求項１７】
上記エントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項１５記載のシステム。
【請求項１８】
上記第１及び第２のＣＡＭシステムは互いに異なる請求項１５記載のシステム。
【請求項１９】
上記第１及び第２のＣＡＭシステムは同一である請求項１５記載のシステム。
【請求項２０】
上記第１のアクセスから得られる第１のＣＡＭエントリは１つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第１のビットマップを含み、
上記第２のアクセスから得られる第２のＣＡＭエントリは１つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第２のビットマップを含み、
上記論理回路は、上記第１及び第２のビットマップを論理的に合成することにより、上記１つ又は複数の一致するルックアップテーブルエントリを示す合成のマップを得るように構成された請求項１５記載のシステム。
【請求項２１】
上記論理回路は、上記１つ又は複数の第１のエントリから第１のビットマップを形成し、上記１つ又は複数の第２のエントリから第２のビットマップを形成し、上記第１及び第２のビットマップを論理的に合成することにより上記１つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップを得るように構成された請求項１５記載のシステム。
【請求項２２】
パケット交換装置又はシステムにおいて、テーブルルックアップインデックス情報から導出される複数のＣＡＭキーを用いてテーブルルックアップ動作を実行するシステムであって、
上記テーブルルックアップインデックス情報のサブセットから導出される第１のＣＡＭキーを用いて第１のＣＡＭアクセスを実行する第１のＣＡＭシステムと、
上記テーブルルックアップインデックス情報のサブセットから導出される第２のＣＡＭキーを用いて第２のＣＡＭアクセスを実行する第２のＣＡＭシステムと、
上記第１のアクセスから得られる上記１つ又は複数の第１のＣＡＭエントリ、及び上記第２のアクセスから得られる上記１つ又は複数の第２のＣＡＭエントリに応答して、１つ又は複数の一致するルックアップテーブルエントリを決定する論理回路とを備え、
上記第１及び第２のＣＡＭシステムは同一であり、
上記第１及び第２のＣＡＭキーは、第１及び第２のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
上記第１のＣＡＭキーにおけるタイプフィールドは第１のタイプを示しており、上記第２のＣＡＭキーにおける上記タイプフィールドは第２のタイプを示しているシステム。
【請求項２３】
上記ＣＡＭシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされるエントリの第１及び第２のグループを備える複数のエントリを有し、
上記第１のグループにおけるエントリに含まれるタイプフィールドは上記第１のタイプを示しており、上記第２のグループにおけるエントリに含まれるタイプフィールドは上記第２のタイプを示している請求項２２記載のシステム。
【請求項２４】
上記第１及び第２のＣＡＭキーはそれぞれ、テーブルルックアップインデックス情報のサブセットから導出される請求項１又は１１記載の方法。
【請求項２５】
上記第１及び第２のＣＡＭキーはそれぞれ、テーブルルックアップインデックス情報のサブセットから導出される請求項１５記載のシステム。
【請求項２６】
上記第１及び第２のＣＡＭキーは、当該第１及び第２のＣＡＭキーの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされている請求項１又は１１記載の方法。
【請求項２７】
上記第１及び第２のＣＡＭキーは、当該第１及び第２のＣＡＭキーの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされている請求項１５記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
複数のマッチングを扱うためには、優先順位決定方法（priority resolution scheme）が必要であることがある。例えば、送信元ＩＰアドレスとして「４０．２」、宛先ＩＰアドレスの最初の１０４ビットとして「３０．１」、送信元ポートとして「４５」、宛先ポートとして「２２」及びプロトコルとして「ＵＤＰ」を特定するパケットは、図１の第２及び第３のエントリ１０２，１０４の両方に一致する。この潜在的な不確定性を解決するためには、付番数字が小さい方のマッチングエントリに付番数字が大きい方のマッチングエントリより高い優先順位を与える優先順位付けの方法が採用されてもよいが、付番数字が大きい方のマッチングエントリに付番数字が小さい方のマッチングエントリより高い優先性を与える方法等の他の方法も可能であることは認識されるべきである。この方法を上述した例に適用すると、第２のエントリ１０４は第３の１０２より高い優先順位を与えられ、上記パケットの転送／分類の決定はＡＣＬ２であるように行われる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
図３における次のＣＡＭエントリ３０４は、図１における送信元ＩＰアドレスに関して次に厳しい仕様を有するテーブルエントリ、すなわち、一致が存在するためには送信元ＩＰアドレスの最初の１２０ビットが「２０．１．１」で開始され、後続のゼロが続かなければならないこと、すなわち２００１：０１００：０：０：０：０：０：０／１２０でなければならないことを指定する第４のエントリ１０６を選択することによって構築される。必然的にこの仕様によって満足される送信元ＩＰアドレスの仕様を有する他の任意のテーブルエントリ、例えば任意の送信元ＩＰアドレスとの一致を指定するエントリ１０４もまた選択される。これらのエントリに基づいて、ＣＡＭエントリ３０４のキー部分は、エントリ１０６からの送信元ＩＰの仕様及びこれに続くタイプ１を示すタイプフィールドに設定される。エントリ３０４のコンテンツ部分は、図１におけるエントリ１０６及び１０４により指定されるＡＣＬタイプである一致するＡＬＣタイプ２及び４を示すビットマップ０１０１に設定される。残りのＣＡＭエントリは同様の方法で構築される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
図４における、有利には最長の一致が第１の順位に配置されるＣＡＭエントリもまた、図１のテーブルエントリから次のように導出される。宛先ＩＰアドレスに関して最も厳しい仕様を有するテーブルエントリ、すなわち１２８ビットの宛先ＩＰアドレスが「６０．１．１」で始まり後続のゼロが続くこと、すなわち６００１：０１００：０：０：０：０：０：０／１２８に等しいことを指定する第４のエントリ１０６が選択される。宛先ＩＰアドレスの仕様がこの特定の仕様に一致する他の任意のテーブルエントリ、すなわち、宛先ＩＰアドレスに「全て」を指定する第１のエントリ１０８もまた選択される。図１のエントリ１０６からの宛先ＩＰアドレスの仕様は、タイプ２を示すタイプフィールドと共に、図４における第１のＣＡＭエントリ４０２のキー部分を形成する。ＣＡＭエントリ４０２のコンテンツ部分は、図１の２つの一致するテーブルエントリ１０６及び１０８のＡＣＬタイプ、すなわちタイプ１及び４を示すビットマップである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
図４における次のＣＡＭエントリ４０４は、図１における宛先ＩＰアドレスに関して次に厳しい仕様を有するテーブルエントリ、すなわち、一致が存在するためには宛先ＩＰアドレスの最初の１０４ビットが「３０．１」で開始され、後続のゼロが続かなければならないこと、すなわち３００１：０：０：０：０：０／１０４でなければならないことを指定する第３のエントリ１０２を選択することによって構築される。必然的にこの仕様によって満足される宛先ＩＰアドレスの仕様を有する他の任意のテーブルエントリ、例えば宛先ＩＰアドレスの最初の９６ビットが「３０．１」で開始され、後続のゼロが続かなければならないこと、すなわち３００１：００００：００００：００００：００００：００００／９６（３００１：０：０：０：０：０／９６に等しい）でなければならないことを指定するエントリ１０４及び任意の宛先ＩＰアドレスとの一致を指定するエントリ１０８もまた選択される。これらのエントリに基づいて、ＣＡＭエントリ４０４のキー部分は、エントリ１０２からの宛先ＩＰの仕様及びこれに続くタイプ２を示すタイプフィールドに設定される。エントリ４０４のコンテンツ部分は、図１におけるエントリ１０２，１０４及び１０８により指定されるＡＣＬタイプである一致するＡＬＣタイプ１，２及び３を示すビットマップ１１１０に設定される。図４における残りのＣＡＭエントリは同様の方法で構築される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
図５における、有利には最長の一致が第１の順位に配置されるＣＡＭエントリもまた、図１のテーブルエントリから次のように導出される。送信元ポート、宛先ポート及びプロトコルに関して最も厳しい仕様を有するテーブルエントリ、すなわち送信元ポートは１０から５０までの範囲であり、宛先ポートは２２でありかつプロトコルはＵＤＰであることを指定する第２のエントリ１０４が選択される。その送信元ポート、宛先ポート、プロトコルの組み合わされた仕様がこの特定の仕様に一致する他の任意のテーブルエントリ、すなわち、送信元ポートに「全て」を指定し、宛先ポートに２０から９０までの範囲を指定しかつプロトコルにＵＤＰを指定する第３のエントリ１０２もまた選択される。図１のエントリ１０４からの送信元ポート、宛先ポート及びプロトコルの組み合わされた仕様は、タイプ３を示すタイプフィールドと共に、図５における第１のＣＡＭエントリ５０２のキー部分を形成する。ＣＡＭエントリ５０２のコンテンツ部分は、図１の２つの一致するテーブルエントリ１０２及び１０４のＡＣＬタイプ、すなわちタイプ２及び３を示すビットマップである。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
ＣＡＭエントリのコンテンツ部分が一致するＡＣＬタイプを表すビットマップを提供する場合には、ハードウェア、ソフトウェア又はハードウェア／ソフトウェアの組み合わせで実施されてよい論理回路１１１４は、ビットマップを論理積演算すること等により論理的に合成することにより、ルックアップテーブル動作全体の一致する１つ又は複数のＡＣＬタイプを示す合成のビットマップを得るように構成される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
ＣＡＭエントリのコンテンツ部分がエントリの一致するＡＣＬタイプを提供しかつビットマップがオンザフライで生成される場合には、論理回路１１１４は、一致するＡＣＬタイプからオンザフライでビットマップを生成するように構成される。複数のアクセスについて、このようなビットマップが全て生成されると、論理回路１１１４はさらに、生成されたビットマップを論理的に合成し、この場合もやはりルックアップテーブル動作全体の一致する１つ又は複数のＡＣＬタイプを示す合成のビットマップを得るように構成される。
【国際調査報告】
2009532989.tif 000016
2009532989.tif 000017
2009532989.tif 000018