JP2009532989A - Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 - Google Patents

Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 Download PDF

Info

Publication number
JP2009532989A
JP2009532989A JP2009504376A JP2009504376A JP2009532989A JP 2009532989 A JP2009532989 A JP 2009532989A JP 2009504376 A JP2009504376 A JP 2009504376A JP 2009504376 A JP2009504376 A JP 2009504376A JP 2009532989 A JP2009532989 A JP 2009532989A
Authority
JP
Japan
Prior art keywords
cam
entries
entry
type
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009504376A
Other languages
English (en)
Other versions
JP4742167B2 (ja
Inventor
ラム・クリシュナン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Extreme Networks Inc
Original Assignee
Extreme Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Extreme Networks Inc filed Critical Extreme Networks Inc
Publication of JP2009532989A publication Critical patent/JP2009532989A/ja
Application granted granted Critical
Publication of JP4742167B2 publication Critical patent/JP4742167B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

ルータ、スイッチ、コンビネーションルータ/スイッチ又はこれらの構成要素等のパケット交換装置又はシステムにおいて、CAMのキーサイズを超えるルックアップテーブルインデックスを用いてテーブルルックアップ動作を実行するための方法とシステムとを提供する。ルックアップテーブルインデックスのサブセットから導出されるCAMキーをそれぞれ用いる複数のCAMアクセスが実行され、1つ又は複数のCAMエントリを得る。1つ又は複数の一致するテーブルエントリは、複数のCAMアクセスから得られる上記1つ又は複数のCAMエントリから導出される。

Description

本発明は、一般に、例えばルータ、スイッチ、コンビネーションルータ/スイッチ、これらの構成要素等であるパケット交換装置又はシステムに関し、具体的には、このような装置又はシステムにおける、複数の連想メモリ(「CAMs(Content Addressable Memories)」)に対するアクセスを介してテーブルルックアップ動作を実行する方法に関する。
連想メモリ(「CAMs」)は、ルータ、スイッチ及びコンビネーションルータ/スイッチ等のパケット交換装置又はシステムにおいてテーブルルックアップ動作を実行するための便利な装置である。このようなテーブルルックアップ動作は、例えば、パケットの分類及び転送(フォワーディング)の決定を高速で行なう場合に有益である。これらのテーブルルックアップ動作を実行する場合、上記装置又はシステムは、典型的には1つ又は複数のパケットフィールドからテーブルルックアップインデックスを導出し、当該インデックスをCAMシステムへ、すなわち、キー部分とコンテンツ部分とをそれぞれ有する複数のエントリを有する典型的にはCAM及び関連したRAMへ入力する。これに応答して、CAMシステムは1つ又は複数の一致するエントリを、すなわち入力されたテーブルインデックスに一致するキー部分を有するエントリを返す。次に、上記1つ又は複数の一致するエントリのコンテンツ部分に応じて、パケットに関してパケットの分類及び転送の決定が行われる。
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.
テーブルルックアップインデックスのサイズがCAMシステムに入力されるキーの最大サイズを超えるときに問題が生じる。このような問題は、例えばIPv6に準拠するパケット交換装置又はシステムにおいて生じることが多い。このようなパケット交換装置又はシステムでは、例えば送信元IPアドレス、宛先IPアドレスなどの所定の複数のパケットフィールドの組み合わせに基づいて転送及び分類の決定を行うことが望ましいが、当該組み合わせは、アプリケーションにとって費用に対して効率のよい利用可能な三値(又は二値)CAMの例えば144ビットである最大の望ましいキーサイズを超えるサイズを有する。この問題は、特にIPv6に準拠する装置又はシステムにおいて生じることが多いが、その理由は、送信元IP及びアドレスフィールドのサイズ(128ビット)がIPv4に準拠する装置又はシステムにおける送信元IP及びアドレスフィールドのサイズ(32ビット)より大きいことにある。このようなアプリケーションでは、所望されるテーブルインデックスサイズに対応するために、システムコストの増大という犠牲を払ったときにのみ、例えば576ビットであるより大きいキーサイズを有するより高価なCAMを用いることができる。
本発明は、パケット交換装置又はシステムにおいて、最大の望ましいCAMキーサイズを超えるテーブルルックアップインデックスを用いてテーブルルックアップ動作を実行する方法に関する。この方法では、テーブルルックアップ動作は、1つ又は複数のCAMシステムへの複数のCAMアクセスを介して実行され、ここで、CAMアクセスはそれぞれ、最大の許容可能なCAMキーサイズ以下のCAMキーを用いて実行される。1つ又は複数の一致するルックアップテーブルエントリは、上記1つ又は複数のCAMアクセスから得られる1つ又は複数の一致するCAMエントリから導出される。
ある実施形態では、第1のCAMシステムに対する第1のCAMアクセスは、テーブルルックアップインデックスのサブセットから導出される第1のCAMキーを用いて実行され、その結果、1つ又は複数の第1のCAMエントリが得られる。第2のCAMシステムに対する第2のCAMアクセスもまた、テーブルルックアップインデックスのサブセットから導出される第2のCAMキーを用いて実行され、その結果、1つ又は複数の第2のCAMエントリが得られる。第1及び第2のCAMシステムは同一システムであってもよく、もしくは互いに異なるシステムであってもよい。1つ又は複数の一致するルックアップテーブルエントリは、1つ又は複数の第1のCAMエントリ及び1つ又は複数の第2のCAMエントリに応答して決定される。
ある実施例では、CAMエントリはそれぞれ、ルックアップテーブルの1つ又は複数の可能性のある一致を示すビットマップを含む。この実施例において、1つ又は複数のCAMアクセスから得られる1つ又は複数の一致するCAMエントリからのビットマップは論理的に合成され、1つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップが形成される。
以下の図面及び詳細な説明を精査すれば、当業者には、本発明の他のシステム、方法、特徴及び優位点が明らかであり、又は明らかとなるであろう。このような追加のシステム、方法、特徴及び優位点は全て、本明細書に含まれ、本発明の範囲に含まれ、かつ添付の請求の範囲によって保護されることが意図されている。
本発明は、下記の図面を参照することにより、より良く理解することができる。諸図面における構成要素は必ずしも一定の縮尺で描かれず、代わりに本発明の原理を示すことに重点がおかれている。さらに、諸図面における同様の参照符号は、異なる図を通じて対応する部分を示す。
図1は、例えばルータ、スイッチ、コンビネーションルータ/スイッチ、これらの構成要素等のパケット交換装置又はシステムにより、IPv6に準拠するパケットに関する転送及び/又は分類の決定を行なうときに用いるためのルックアップテーブルの一例である。しかしながら、まずは、本発明はIPv6に準拠するパケットの分類/転送の決定を行なうという特定のコンテキストに限定されず、一般に一致するエントリを識別するために用いられるテーブルインデックスが最大の望ましいCAMキーサイズより大きい任意のルックアップテーブル動作に適用可能であることを理解すべきである。図1に示す特定の例では、パケット転送/分類の決定は、パケットからの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポート及びプロトコルの各フィールドの組み合わせに基づいており、これらは、まとめてルックアップテーブルへの296ビットのインデックスを形成する。このテーブルにおける一致するエントリのアクセス制御リスト(「ACL(Access Control List)」)のタイプは、パケットのパケット転送/分類の決定を表す。この特定の例では、可能なACLタイプの幾つかにはルーティングすること(route)、ドロップすること(drop)、CPUコピーを行うこと(CPU copy)、リダイレクトすること(redirect。出力先を変更することまたは方向を変えることをいう。)、学習すること(learn)、エグレスミラー(egress mirror)、イングレスミラー(ingress mirror)等が含まれるが、ある特定の例では、これらは次のように定義される。
「ルーティングすること」は、パケットがルーティングされておらずにブリッジされていることを示し、したがって、上記パケットに出会う装置はエコー消滅サプレス機能(echo kill suppress function)を実施すべきであることを示す。
「ドロップすること」は、上記パケットに出会う装置は上記パケットをドロップすべきであることを示す。
「CPUコピーを行うこと」は、上記パケットのコピーを上記装置に接続されたCPUホストに転送するように、上記装置に指示することをいう。
「リダイレクトすること」は、リダイレクト処理のために上記パケットのコピーをCPUホストへ転送するように、上記装置に指示することをいう。リダイレクト処理において、ホストは上記パケットのコピーを受信し、送信者は上記パケットをルーティングするのではなく交換すべきであるという指示とともに、上記パケットを送信者にリダイレクトする。
「学習すること」は、ホストが学習処理を実行できるように上記パケットのコピーをCPUホストに転送するように、上記装置に指示することをいう。学習処理において、ホストは上記パケットを解析することにより、当該パケットの送信者のMACアドレスへの将来のパケット交換のために、送信者のMACアドレスを「学習」する。
「エグレスミラー」は、上記パケットのネットワークエグレスフォームのコピーをパケット/転送分類部分に続く上記装置の部分に送るように、上記装置に指示することをいう。
「イングレスミラー」は、上記パケットのコピーを上記装置上の指定されたイングレスミラーポートに転送するように、上記装置に指示することをいう。
図1において、これらのパケット転送/分類の可能な決定をACL1,ACL2,ACL3等という。
個々のインデックスフィールドのサブセットは、マッチングのために指定されてもよい。例えば、図1において、第3のテーブルエントリ102における宛先IPアドレスフィールドの表記「30.1/104」は、一致が存在するためにはパケットの宛先IPアドレスの第1の(最上位の)104ビットが30.1で始まり、後続のゼロが続かなければならないこと、すなわち16進数の3001:0000:0000:0000:0000:0000.00/104(16進数の(典型的には、4つの)末尾のゼロを「:0」で表す短縮表記を用いると、3001:0:0:0:0:0:0/104に等しい)に等しくなければならないことを意味する。また、第4のテーブルエントリ106におけるパケットの送信元IPアドレスフィールドの表記「20.1.1/120」は、一致が存在するためにはパケットの送信元IPアドレスの最初の120ビットが16進数の20.1.1で始まり、後続のゼロが続かなければならないこと、すなわち2001:0100:0000:0000:0000:0000:0000.00/120(2001:0100:0:0:0:0:0:0/120に等しい)でなければならないことを意味する。
さらに、ワイルドカードを用いるマッチングもサポートされる。例えば、図1の第1のテーブルエントリ108における送信元ポートフィールドの表記「全て」は、パケット内で識別される任意の送信元ポートが一致することを示す。同様に、第2のテーブルエントリ104における送信元IPアドレスの表記「全て」も、パケット内で識別される任意の送信元IPアドレスが一致することを示す。
複数のマッチングもまた可能である。実際に、複数のマッチングは、例えば悪意のあるトラフィックの識別又はセキュリティを含むアプリケーションである所定のアプリケーションでは極めて有益である。このようなアプリケーションでは、単一のCAMエントリは所望される全てのACLアクションを表さないことがあり、可能な全てのACLアクションを決定するためには複数のエントリを調べる必要がある場合がある。
複数のマッチングを扱うためには、優先順位決定方法(priority resolution scheme)が必要であることがある。例えば、送信元IPアドレスとして「40.2」、宛先IPアドレスの最初の104ビットとして「30.1」、送信元ポートとして「45」、宛先ポートとして「22」及びプロトコルとして「UDP」を特定するパケットは、図1の第2及び第3のエントリ102,104の両方に一致する。この潜在的な不確定性を解決するためには、付番数字が小さい方のマッチングエントリに付番数字が大きい方のマッチングエントリより高い優先順位を与える優先順位付けの方法が採用されてもよいが、付番数字が大きい方のマッチングエントリに付番数字が小さい方のマッチングエントリより高い優先性を与える方法等の他の方法も可能であることは認識されるべきである。この方法を上述した例に適用すると、第2のエントリ104は第3の104より高い優先順位を与えられ、上記パケットの転送/分類の決定はACL2であるように行われる。
この特定の例において一致するテーブルエントリの識別に用いられるルックアップテーブルインデックスは、送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポート及びプロトコルの組み合わせであるが、パケット交換のコンテキストの範囲内及び範以外の両方で、他のフィールド又はフィールドの組み合わせに基づく他のテーブルインデックスの例も可能であることは認識されるべきである。IPv6では、送信元IP及び宛先アドレスはそれぞれ128ビットであり、送信元及び宛先ポートはそれぞれ16ビットであり、プロトコルは8ビットであるので、この特定の例におけるこのインデックスの合計のサイズは296ビットである。ToSフィールド及びTCPフラグフィールド等の追加のフィールドが含まれるときには、上記サイズは約320ビットまで増大することが可能である。
複数の三値CAM(「TCAMs(ternary CAMs)」)の幅は、現時点では72,144,288及び576ビットであるので、テーブルインデックスは576ビットの幅のみで適合する。しかしながら、576ビットのTCAMは高価であって通常は用いられないので、この特定の例におけるこのようなTCAMを用いることは望ましくない。代わりに、より一般的でありかつさほど高価ではない、144ビットタイプ等のTCAMが選択される。144であるTCAMのキーサイズ以内で適合するために、ルックアップテーブルインデックスは、それぞれが144ビット未満である3つのサブキー及び図1のテーブルエントリのサブセット及び場合によっては上記テーブルエントリの組み合わせである複数のエントリを含む1つ又は複数のTCAMに分割される。
第1の実施例においては、144ビットのTCAM及び関連したRAMを備えた単一のCAMシステムが用いられる。この特定の実施例では、TCAMは複数144ビットのエントリを有し、各ビットは論理値「1」、「0」又はドントケア(don’t care)をとることができる。本参照によりその全記載が開示に含まれる非特許文献1において説明されているように、各エントリは、入力された144ビットのCAMキーがエントリに一致するか否かを示すマッチラインを有する。全てのエントリに関するマッチラインはエンコーダ(TCAMに固有の部分)に入力され、エンコーダは一致するエントリのアドレスを示すバイナリのマッチロケーションを生成する。2つ以上の一致が予期される又は可能なアプリケーションではプライオリティエンコーダが用いられる。プライオリティエンコーダは、最も高い優先順位のマッチングエントリを選択し、そのアドレスを出力する。プライオリティエンコーダを、最初又は最後のマッチングエントリに最も高い優先順位を与えるように構成することができる。CAM内に一致するエントリが位置づけられないときには、この状況を信号で送信するヒット信号が含まれることが多い。一致するエントリのアドレスは関連したRAMへ入力され、RAMは対応するRAMエントリのコンテンツを出力する。CAMエントリ及び関連したRAMエントリは共に、それぞれ同一のCAMシステムエントリのキー部分及びコンテンツ部分として考えられてもよい。
この実施例では、図1のテーブルルックアップキーは3つのサブインデックスに分割され、ここで、各サブインデックスは3つのキーフォーマットを互いに区別化するためのタイプフィールドが追加された144ビット以下のCAMキーである。図2aは、128ビットの送信元IPアドレスとタイプ1を示す2ビットのタイプフィールドとを備えた第1のCAMキーのフォーマットを示し、図2bは、128ビットの宛先IPアドレスとタイプ2を示す2ビットのタイプフィールドとを備えた第2のCAMキーのフォーマットを示し、図2cは、送信元/宛先ポート及びプロトコルを保持する40ビットのフィールドとタイプ3を示す2ビットのタイプフィールドとを備えた第3のCAMキーのフォーマットを示す。
同様に、図1のテーブルエントリは、3つのタイプを区別するために用いられるタイプフィールドとともに3つのタイプのCAMエントリに分割される。図3は第1のタイプのCAMエントリを示し、図4は第2のタイプのCAMエントリを示し、図5は第3のタイプのCAMエントリを示す。図3を参照すると、CAMインデックスフィールドは、CAMシステムに複数のエントリが格納される相対的な順序、すなわちこれらのエントリの相対的な優先順位を示すが、これらのエントリの部分として物理的には格納されない。各エントリのキー部分は、送信元IPアドレスとタイプフィールドとの組み合わせである。各エントリのコンテンツ部分は、当該エントリに関連づけられるACLの一致を示すビットマップフィールドである。
図3における、有利には最長の一致が第1の順位に配置されるCAMエントリは、図1のテーブルエントリから次のように導出される。送信元IPアドレスに関して最も厳しい仕様を有するテーブルエントリ、すなわち128ビットの送信元IPアドレスが「40.2」で始まり後続のゼロが続くこと、すなわち4002:0:0:0:0:0:0:0/128に等しいことを指定する第3のエントリ102が選択される。送信元IPアドレスの仕様がこの特定の仕様に一致する他の任意のテーブルエントリ、すなわち、送信元IPアドレスに「全て」を指定する第2のエントリ104もまた選択される。図1のエントリ102からの送信元IPの仕様は、タイプ1を示すタイプフィールドと共に、図3における第1のCAMエントリ302のキー部分を形成する。CAMエントリ302のコンテンツ部分は、図1の2つの一致するテーブルエントリ102及び104のACLタイプ、すなわちタイプ2及び3を示すビットマップである。この特定の実施例では、ビットマップは可能なACLタイプのそれぞれにつき1ビットを有し、そのビットは左から右への順序でそのビットに関連づけられるACLタイプを示す。ある表現法によれば、あるビットに関連づけられるALCタイプが一致するテーブルエントリのうちの1つに表されていれば、そのビットは論理値「1」に設定され、そうでなければ論理値「0」にクリアされるが、例えば一致するACLタイプが論理値「1」ではなく論理値「0」との合成のビットマップで表される表現法であるような他の表現法も可能であることは認識されるべきである。したがって、図3では、エントリ302のビットマップは「0110」であり、ACLタイプ2及び3との一致を示している。
図3における次のCAMエントリ304は、図1における送信元IPアドレスに関して次に厳しい仕様を有するテーブルエントリ、すなわち、一致が存在するためには送信元IPアドレスの最初の120ビットが「20.1.1」で開始され、後続のゼロが続かなければならないこと、すなわち2001:0100:0:0:0:0:0:0/120でなければならないことを指定する第4のエントリ106を選択することによって構築される。必然的にこの仕様によって満足される送信元IPアドレスの仕様を有する他の任意のテーブルエントリ、例えば任意の送信元IPアドレスとの一致を指定するエントリ104もまた選択される。これらのエントリに基づいて、CAMエントリ304のキー部分は、エントリ106からの送信元IPの仕様及びこれに続くタイプ1を示すタイプフィールドに設定される。エントリ304のコンテンツ部分は、図1におけるエントリ106及び108により指定されるACLタイプである一致するALCタイプ2及び4を示すビットマップ0101に設定される。残りのCAMエントリは同様の方法で構築される。
図4を参照すると、図3の場合と同様に、CAMインデックスフィールドは、CAMシステムに複数のエントリが格納される第2のカテゴリの相対的な順序即ちこれらのエントリの相対的な優先順位を示すが、これらのエントリの部分として物理的には格納されない。各エントリのキー部分は、宛先IPアドレスとタイプフィールドとの組み合わせである。各エントリのコンテンツ部分は、当該エントリに関連づけられるACLの一致を示すビットマップフィールドである。
図4における、有利には最長の一致が第1の順位に配置されるCAMエントリもまた、図1のテーブルエントリから次のように導出される。宛先IPアドレスに関して最も厳しい仕様を有するテーブルエントリ、すなわち128ビットの宛先IPアドレスが「60.1.1」で始まり後続のゼロが続くこと、すなわち6001:0100:0:0:0:0:0:0/104に等しいことを指定する第4のエントリ106が選択される。宛先IPアドレスの仕様がこの特定の仕様に一致する他の任意のテーブルエントリ、すなわち、宛先IPアドレスに「全て」を指定する第1のエントリ108もまた選択される。図1のエントリ106からの宛先IPアドレスの仕様は、タイプ2を示すタイプフィールドと共に、図4における第1のCAMエントリ402のキー部分を形成する。CAMエントリ402のコンテンツ部分は、図1の2つの一致するテーブルエントリ106及び108のACLタイプ、すなわちタイプ1及び4を示すビットマップである。
図4における次のCAMエントリ404は、図1における宛先IPアドレスに関して次に厳しい仕様を有するテーブルエントリ、すなわち、一致が存在するためには宛先IPアドレスの最初の104ビットが「30.1」で開始され、後続のゼロが続かなければならないこと、すなわち3001:0:0:0:0:0/96でなければならないことを指定する第3のエントリ102を選択することによって構築される。必然的にこの仕様によって満足される宛先IPアドレスの仕様を有する他の任意のテーブルエントリ、例えば宛先IPアドレスの最初の96ビットが「30.1」で開始され、後続のゼロが続かなければならないこと、すなわち3001:0000:0000:0000:0000:0000/96(3001:0:0:0:0:0/96に等しい)でなければならないことを指定するエントリ104及び任意の宛先IPアドレスとの一致を指定するエントリ108もまた選択される。これらのエントリに基づいて、CAMエントリ404のキー部分は、エントリ102からの宛先IPの仕様及びこれに続くタイプ2を示すタイプフィールドに設定される。エントリ404のコンテンツ部分は、図1におけるエントリ102,104及び108により指定されるACLタイプである一致するALCタイプ1,2及び3を示すビットマップ1110に設定される。図4における残りのCAMエントリは同様の方法で構築される。
図5を参照すると、図3〜図4と同様に、CAMインデックスフィールドは、CAMシステムに複数のエントリが格納される相対的な順序即ちこれらのエントリの相対的な優先順位を示すが、これらのエントリの部分として物理的には格納されない。各エントリのキー部分は、送信元ポートと、宛先ポートと、プロトコルと、タイプフィールドとの組み合わせである。各エントリのコンテンツ部分は、当該エントリに関連づけられるACLの一致を示すビットマップフィールドである。
図5における、有利には最長の一致が第1の順位に配置されるCAMエントリもまた、図1のテーブルエントリから次のように導出される。送信元ポート、宛先ポート及びプロトコルに関して最も厳しい仕様を有するテーブルエントリ、すなわち送信元ポートは10から50までの範囲であり、宛先ポートは22でありかつプロトコルはUDPであることを指定する第2のエントリ104が選択される。その送信元ポート、宛先ポート、プロトコルの組み合わされた仕様がこの特定の仕様に一致する他の任意のテーブルエントリ、すなわち、送信元IPアドレスに「全て」を指定し、宛先ポートに20から90までの範囲を指定しかつプロトコルにUDPを指定する第3のエントリ102もまた選択される。図1のエントリ104からの送信元ポート、宛先ポート及びプロトコルの組み合わされた仕様は、タイプ3を示すタイプフィールドと共に、図5における第1のCAMエントリ502のキー部分を形成する。CAMエントリ502のコンテンツ部分は、図1の2つの一致するテーブルエントリ102及び104のACLタイプ、すなわちタイプ2及び3を示すビットマップである。
図5における次のCAMエントリ504は、図1における組み合わされた送信元ポート、宛先ポート及びプロトコルに関して次に厳しい仕様を有するテーブルエントリ、すなわち、任意の送信元ポートが一致し、宛先ポートは20から90までの範囲でありかつプロトコルはUDPであることを指定する第3のエントリ102を選択することによって構築される。必然的にこの仕様によって満足される送信元ポート、宛先ポート及びプロトコルの組み合わされた仕様を有する任意のテーブルエントリも選択されるが、この特定の事例にそのようなエントリは存在しない。従って、CAMエントリ504は、図1におけるエントリ102のみに基づいて構築される。このエントリに基づいて、CAMエントリ504のキー部分は、エントリ102からの送信元ポート、宛先ポート及びプロトコルの組み合わされた仕様及びこれに続くタイプ3を示すタイプフィールドに設定される。エントリ504のコンテンツ部分は、図1におけるエントリ102により指定されるACLタイプである一致するALCタイプ3を示すビットマップ0010に設定される。
図5のエントリ506は、図1におけるエントリ106及び108の組み合わせから特別に構築される。エントリ506の目的は、このエントリの一致に正しいACLアクションが割り当てられることを保証することにある。例えば、送信元ポートが40、宛先ポートが80及びプロトコルタイプがTCPであるパケットを考察されたい。エントリ506が存在しなければ、このパケットはエントリ508及び510の両方に一致する。これらの2つのエントリに関するビットマップの論理積は0000であるので、パケットにACLアクションは割り当てられないが、図1のテーブルはこのようなパケットにACLアクション1が割り当てられることを要求しているので、これは誤りである。エントリ506は、このパケットが実際にACLアクション1を割り当てられることを保証する。
図5における残りのCAMエントリはエントリ502及び504と同様の方法で構築される。
図3〜図5に示す各エントリは、同一のCAMシステムに格納されてもよく、もしくは異なるCAMシステムに格納されてもよい。単一のCAMシステムを用いて全てのタイプのエントリを格納することは効率的であって費用に対しても効率的であるが、異なるタイプを区別するためにCAMキー及びCAMエントリのキー部分へ追加されなければならないタイプフィールドの形式の追加のオーバーヘッドを必要とする。各タイプのCAMエントリが異なるCAMシステムに格納されるパーティショニングの方法は、CAMキー及びCAMエントリのキー部分におけるタイプフィールドの必要性を回避する。しかしながら、パーティショニングは複数のCAMシステム及び異なるCAMキーを複数のCAMシステムのうちの異なる1つのCAMシステムに入力するというオーバーヘッドを必要とする。
さらに、図3〜図5に示すエントリは、最長の一致を第1の順位にする配置以外の配置であってもよい。例えば、結果に相違を生じることなく、図3〜図5におけるエントリを最短の一致を第1の順位にするように配置し、最上位のエントリではなく最下位のエントリに高い優先順位を与えるように優先順位決定方法を変更することも可能である。
同一又は異なるCAMシステムを用いて複数のCAMエントリが保持される実施例におけるテーブルルックアップ動作は、図6に示す複数のステップで進行する。ステップ602において、パケットからの送信元IPアドレスに基づくCAMキーを用いて、第1のCAMアクセスが実行される。全てのアクセスが同一のCAMシステムに対して行われるときには、図2aに示す第1のタイプのCAMキー、すなわち送信元IPアドレス及びキータイプに基づくCAMキーを用いてアクセスが行われる。考察しているパケットが「20.1.1.0…」(16進数では2001:0100…)の送信元IPアドレスを有すると仮定すると、この第1のCAMアクセスの結果はエントリ304との一致である(エントリ306との一致もあるが、優先順位決定方法の適用後にはエントリ304のみが返されると仮定される。)。このアクセスから得られるエントリ304におけるビットマップ、すなわち0101は、ACLタイプ2及び4との一致を示す。
異なるエントリタイプが異なるCAMシステムを用いて保持されるときには、第1のCAMアクセスは、第1のタイプのエントリのみを保持する第1のCAMシステムにおいて実行される。この場合、CAMキーは、タイプフィールドが除去された図2aに示すフォーマットを有してもよく、CAMエントリもまた、タイプフィールドが除去された図3に示すフォーマットを有してもよい。
ステップ604において、パケットからの宛先IPアドレスに基づくCAMキーを用いて、第2のCAMアクセスが実行される。全てのCAMアクセスが同一CAMシステムに対して行われるときには、図2bに示す第2のタイプのCAMキー、すなわち宛先IPアドレス及びキータイプに基づくCAMキーを用いてアクセスが行われる。考察しているパケットが「60.1.1.0…」(16進数では6001.0100…)の宛先IPアドレスを有すると仮定すると、この第2のアクセスの結果はエントリ402との一致である(同じく、エントリ406との一致もあるが、優先順位決定方法の適用後にはエントリ402のみが返されると仮定される。)。このアクセスから得られるエントリ402におけるビットマップ、すなわち1001は、ACLタイプ1及び4との一致を示す。
異なるエントリタイプが異なるCAMシステムを用いて保持されるときには、第2のCAMアクセスは、第2のタイプのエントリのみを保持する第2のCAMシステムにおいて実行される。この場合、CAMキーは、タイプフィールドが除去された図2bに示すフォーマットを有してもよく、CAMエントリもまた、タイプフィールドが除去された図4に示すフォーマットを有してもよい。
ステップ606において、パケットからの送信元ポート、宛先ポート及びプロトコルの各フィールドに基づくCAMキーを用いて、第3のCAMアクセスが実行される。全てのアクセスが同一CAMシステムに対して行われるときには、図2cに示すフォーマットを有するキー、すなわち送信元ポート、宛先ポート、プロトコルの組み合わせ及びキータイプに基づくCAMキーを用いて第3のCAMアクセスが行われる。考察しているパケットが40の送信元ポート、80の宛先ポート及びTCPプロトコルを有すると仮定すると、この第3のアクセスの結果はエントリ506との一致である(同じく、エントリ508及び510との一致もあるが、優先順位決定方法の適用後にはエントリ506のみが返されると仮定される。)。このアクセスから得られるビットマップ、すなわち1001は、ACLタイプ1及び4との一致を示す。
異なるエントリタイプが異なるCAMシステムを用いて保持されるときには、第3のCAMアクセスは、第3のタイプのエントリのみを保持する第3のCAMシステムにおいて実行される。この場合、CAMキーは、タイプフィールドが除去された図2cに示すフォーマットを有してもよく、CAMエントリもまた、タイプフィールドが除去された図5に示すフォーマットを有してもよい。
ステップ608において、3つのアクセスからの3つのビットマップ、すなわち0101,1001,1001は例えば論理積演算されて論理的に合成され、ACLタイプ4のみとの一致を示す合成のビットマップ0001がもたらされる。すなわち、ACLタイプ4を識別する図1におけるエントリ106としての正しい結果は、問題のパケットのテーブルインデックスに対して一致する唯一のエントリである。したがって、テーブルルックアップ動作は、各アクセスがルックアップテーブルインデックスのサブセットから導出されるCAMキーを用いてかつ最大の望ましいCAMキーサイズ以下のサイズを有する3つのCAMアクセスを用いて正しく実行されたことが分かる。
次にステップ610において、合成のビットマップはパケットに関する1つのALCアクション(又は複数のACLアクション)に変換される。例えば、合成のビットマップは、可能な複数のACLアクションのアレイを保持するメモリに対するインデックスとして用いられてもよい。上記メモリを、複数のCAMエントリを保持する(複数の)ARAMから分離していてもよい。有利には、上記アレイは合成のビットマップを受信し、ビットマップにおける論理値「1」のそれぞれについてその論理値「1」に対応するACLアクションを検索するように構成される。一致するACLタイプが論理値「1」ではなく論理値「0」によって示される場合、アレイは、ビットマップにおける論理値「0」のそれぞれについてその論理値「0」に対応するACLアクションを検索するように構成される。
合成のビットマップ内に2つ以上の論理値「1」が存在する場合に発生するように、複数のACLアクションが検索されたときには、潜在的な不確定性を解決しパケットの1つのACLアクションを返すように優先順位決定方法が適用されてもよい。例えば、付番がより高いACLアクションよりも付番がより低いACLアクションに対して高い優先順位を与える、例えばACL4よりもACL2に高い優先順位を与える方法が採用される場合もある。或いは、付番がより低いACLアクションよりも付番がより高いACLアクションに対して高い優先順位を与える、例えばACL2よりもACL4に高い優先順位を与える方法が用いられる可能性もある。
多数の可能なACLタイプを含むアプリケーションでは、各CAMエントリのビットマップの長さが大きくなり、結果的に、メモリ利用は非効率的になりかつメモリアクセス時間は遅くなる可能性がある。各ビットマップにおいて表されるACLマッチの数は極めて少ないので、これらのビットマップの1つの特徴は、これらが必然的に疎である傾向にあることである。このようなアプリケーションでは、各エントリのコンテンツ部分が、1つ又は複数のACLタイプを表すビットマップではなく、有利には圧縮形式で格納される1つ又は複数のACLタイプの指示子であることであって、各アクセスタイプに関する順序づけられたエントリセットを格納することがより効率的である場合がある。例えば、ACLタイプ2の圧縮された指示子は、ACLタイプ2を示すビットマップ、すなわち0100とは対照的に、単に数字2であってもよい。別の例として、ACLタイプ2及び4の圧縮された指示子は、ACLタイプ2及び4を示すビットマップ、すなわち0101ではなく、単に数字2及び4の連結であることも可能である。このようなアプリケーションにおける各CAMアクセスは、結果的に、1つ又は複数のマッチングエントリになってもよい。これらのエントリが検索されると、一致したエントリからビットマップが「オンザフライ」で生成される。CAMアクセスのそれぞれは同様の方法で進行し、全てのCAMアクセスが実行されたときに、生成されたビットマップが論理的に合成され、上述した同様の方法で合成のビットマップが形成される。
ビットマップが「オンザフライ」で生成される実施例におけるテーブルルックアップ動作は、図10に示す複数のステップで進行する。説明を簡潔にするために、全てのエントリは同一のCAMシステムに格納されると仮定するが、上述したように、異なるタイプのCAMエントリが異なるCAMシステムに格納される「オンザフライ」の実施例及び実施形態が可能であることは認識されるべきである。
「オンザフライ」のビットマップ生成では、CAMエントリは図3〜図5に示すものとは異なり、代わりに、図7〜図9に示すフォーマットにそれぞれ従う。より具体的に、第1のタイプのエントリを図7に示す。これらのエントリは、エントリのコンテンツ部分を1つ又は複数のACLタイプ又はACLアクションの指示子を有利には圧縮された形式で投入(ポピュレート)し、送信元IPアドレス及びタイプをエントリのキー部分として指定することによって、図1のルックアップテーブルエントリから生成される点に留意されたい。上述したように、CAMインデックスフィールドはエントリによって物理的に格納されず、エントリがCAMシステムに格納される相対的な順序を単に示す。その結果は、図3におけるテーブルと同様であるが、各エントリのコンテンツ部分がビットマップではなく、有利には圧縮された形式のACLタイプの指示子で投入される点が異なる。
第2のタイプのエントリを図8に示す。これらのエントリは、エントリのコンテンツ部分を1つ又は複数のACLタイプ又はACLアクションの指示子を有利には圧縮された形式で投入し、宛先IPアドレス及びタイプをエントリのキー部分として指定することによって、図1のルックアップテーブルエントリから生成される点に留意されたい。上述したように、CAMインデックスフィールドはエントリによって物理的に格納されず、エントリがCAMシステムに格納される相対的な順序を単に示す。その結果は、図4におけるテーブルと同様であるが、各エントリのコンテンツ部分がビットマップではなく、有利には圧縮された形式のACLタイプの指示子で投入される点が異なる。
第3のタイプのエントリを図9に示す。これらのエントリは、エントリのコンテンツ部分を1つ又は複数のACLタイプ又はACLアクションの指示子を有利には圧縮された形式で投入し、送信元ポート、宛先ポート、プロトコルの組み合わせ及びタイプをエントリのキー部分として指定することによって、図1のルックアップテーブルエントリから生成される点に留意されたい。上述したように、CAMインデックスフィールドはエントリによって物理的に格納されず、エントリがCAMシステムに格納される相対的な順序を単に示す。その結果は、図5におけるテーブルと同様であるが、各エントリのコンテンツ部分がビットマップではなく、有利には圧縮された形式のACLタイプの指示子で投入される点が異なる。
図10を参照すると、ステップ1002において、図2aに示す第1のタイプのCAMキー、すなわち、送信元IPアドレスとキータイプとに基づくCAMキーを用いて、第1のCAMアクセスが実行される。考察しているパケットが「20.1.1.0…」の送信元IPアドレスを有すると仮定すると、この第1のCAMアクセスの結果は、図7におけるエントリ702との一致になる(エントリ704も一致するが、優先順位決定方法の適用後にはエントリ702のみが返されると仮定される。)。
ステップ1004において、上記アクセスの結果として生じる一致するエントリ、すなわちエントリ702によって保持されるACLタイプの指示子、すなわちACLタイプ2及び4から、オンザフライでビットマップが生成される。生成されるビットマップ、すなわち0101は、ACLタイプ2及び4との一致を示す。
ステップ1006において、図2bに示す第2のタイプのCAMキー、すなわち、宛先IPアドレスとキータイプとに基づくCAMキーを用いて、第2のCAMアクセスが実行される。考察しているパケットが「60.1.1.0…」の宛先IPアドレスを有すると仮定すると、この第2のアクセスの結果は、図8におけるエントリ802との一致になる(エントリ804も一致するが、優先順位決定方法の適用後にはエントリ802のみが返されると仮定される。)。
ステップ1008において、エントリ802との一致を表すビットマップ、すなわち、1001が、ACLタイプ1及び4に関する指示子を保持して生成される。
ステップ1010において、図2cに示すフォーマットを有するキー、すなわち、送信元ポート、宛先ポート、プロトコルの組み合わせとキータイプとに基づくCAMキーを用いて、第3のCAMアクセスが実行される。考察しているパケットが40の送信元ポートと、80の宛先ポートと、TCPプロトコルとを有すると仮定すると、この第3のアクセスの結果は、図9におけるエントリ902との一致になる(エントリ904及び906も一致するが、優先順位決定方法の適用後にはエントリ902のみが返されると仮定される。)。
ステップ1012において、エントリ902との一致から得られるビットマップすなわち、1001が、ACLタイプ1及び4の指示子を保持して生成される。
ステップ1014において、3つのアクセスからの3つのビットマップ、すなわち0101,1001,1001は例えば論理積演算されて論理的に合成され、ACLタイプ4のみとの一致を示す合成のビットマップ0001がもたらされる。すなわち、この場合も、ACLタイプ4を識別する図1におけるエントリ106としての正しい結果は、問題のパケットのテーブルインデックスに対して一致する唯一のエントリである。したがって、テーブルルックアップ動作は、各アクセスがルックアップテーブルインデックスのサブセットから導出されるCAMキーを用いてかつ最大の望ましいCAMキーサイズ以下のサイズを有する3つのCAMアクセスを用いて正しく実行されたことが分かる。
次にステップ1016において、図6におけるステップ610と同様に、合成のビットマップはパケットに関する1つのALCアクション(又は複数のACLアクション)に変換される。例えば、合成のビットマップは、可能なACLアクションのアレイを保持するメモリに対するインデックスとして用いられてもよい。上記メモリを、複数のCAMエントリを保持する(複数の)ARAMから分離していてもよい。有利には、上記アレイは合成のビットマップを受信し、ビットマップにおける論理値「1」のそれぞれについてその論理値「1」に対応するACLアクションを検索するように構成される。一致するACLタイプが論理値「1」ではなく論理値「0」によって示される場合、アレイは、ビットマップにおける論理値「0」のそれぞれについてその論理値「0」に対応するACLアクションを検索するように構成される。
図6のステップ610と同様に、合成のビットマップ内に2つ以上の論理値「1」が存在する場合に発生するように、複数のACLアクションが検索されたときには、潜在的な不確定性を解決しパケットの1つのACLアクションを返すように優先順位決定方法が適用されてもよい。例えば、付番がより高いACLアクションよりも付番がより低いACLアクションに対して高い優先順位を与える、例えばACL4よりもACL2に高い優先順位を与える方法が採用される場合もある。或いは、付番がより低いACLアクションよりも付番がより高いACLアクションに対して高い優先順位を与える、例えばACL2よりもACL4に高い優先順位を与える方法が用いられる可能性もある。
上述した任意の方法を実行するためのシステムを図11に示す。分類/転送の決定が望まれるパケットは、バッファ1102に格納される。図示するように、パケットは複数のフィールド、すなわち送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポート、プロトコル、ToS、TCPフラグ等を有し、そのそれぞれはマルチプレクサ1104のデータ入力部に入力される。例えば、有限状態機械(finite state machine)であるコントローラ1106は、1つ又は複数の選択信号1107を用いて1つのパケットフィールド及び/又はパケットフィールドの組み合わせを選択し、選択信号1107はマルチプレクサ1104の制御入力部に入力される。これに応答して、マルチプレクサ1104は選択されたフィールド及び/又はフィールドの組み合わせを1つ又は複数のデータ出力部709を介して出力する。選択されたフィールド及び/又は選択されたフィールドの組み合わせは、バッファ1108に格納される。CAMキー及びエントリがタイプフィールドを有する場合には、コントローラ1102はバッファ1108にタイプフィールドを挿入し、バッファ1108を問題のCAMアクセスに適するタイプ値、すなわちタイプ1、タイプ2、タイプ3等で投入する。
CAMアクセスは、コントローラ1106による制御の下で1つ又は複数のCAMシステム1110に対して実行される。単一のCAMシステムが提供されているときには、複数のアクセスが順次実行される。複数のCAMシステムが提供されているときには、複数のアクセスが並行して実行されてもよい。これらのアクセスから得られる一致する任意のCAMエントリは、一致するCAMエントリを格納するための1つ又は複数の格納位置を備えた格納装置1112に格納される。格納装置1112は、単一のアクセスから得られる1つ又は複数の一致するCAMエントリ、同一のテーブルルックアップ動作に関する1つ又は複数のアクセスから得られるエントリ又は異なるルックアップテーブル動作に関する1つ又は複数のアクセスから得られるエントリのための格納装置を提供してもよい。
CAMエントリのコンテンツ部分が一致するACLタイプを表すビットマップを提供する場合には、ハードウェア、ソフトウェア又はハードウェア/ソフトウェアの組み合わせで実施されてよい論理回路1014は、ビットマップを論理積演算すること等により論理的に合成することにより、ルックアップテーブル動作全体の一致する1つ又は複数のACLタイプを示す合成のビットマップを得るように構成される。
CAMエントリのコンテンツ部分がエントリの一致するACLタイプを提供しかつビットマップがオンザフライで生成される場合には、論理回路1014は、一致するACLタイプからオンザフライでビットマップを生成するように構成される。複数のアクセスについて、このようなビットマップが全て生成されると、論理回路1014はさらに、生成されたビットマップを論理的に合成し、この場合もやはりルックアップテーブル動作全体の一致する1つ又は複数のACLタイプを示す合成のビットマップを得るように構成される。
システムには、可能なACLアクションのアレイを保持するメモリ1116が設けられてもよい。図6及び10に関連して上述したように、合成のビットマップはこのメモリに対するインデックスとして用いられてもよい。これに応答して、メモリは、合成のビットマップにおける論理値「1」(又は場合によっては論理値「0」)に対応する全てのACLアクションを提供するように構成される。2つ以上の対応するACLアクションが存在すれば、潜在的な不確定性を解決し問題のパケットに関して1つのACLアクションを返す優先順位決定方法が適用されてもよい。
以上、本発明の様々な実施形態について記述したが、一般的な当業者には、本発明の範囲に含まれるさらに多くの実施形態及び実施例が可能であることが明白となるであろう。したがって、本発明は、添付の請求の範囲及びその等価物との照合によってのみ限定されるべきものである。
IPv6に準拠するパケットに関する転送の決定を示すルックアップテーブルの一例であり、テーブルインデックスはパケットのIPv6送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポート及びプロトコルの各フィールドの組み合わせである。 図3に示す第1のタイプのCAMエントリの可能なCAMキーのフォーマットである。 図4に示す第2のタイプのCAMエントリの可能なCAMキーのフォーマットである。 図5に示す第3のタイプのCAMエントリの可能なCAMキーのフォーマットである。 図1のルックアップテーブルから導出された第1のタイプのCAMエントリの一例であり、これらのエントリのCAMキーはIPv6送信元IPアドレスである。 図1のルックアップテーブルから導出された第2のタイプのCAMエントリの一例であり、これらのエントリのCAMキーはIPv6宛先IPアドレスである。 図1のルックアップテーブルから導出された第3のタイプのCAMエントリの一例であり、これらのエントリのCAMキーはIPv6送信元ポート、宛先ポート及びプロトコルである。 IPv6プロトコルに準拠するパケット交換装置又はシステムにおいて複数のCAMアクセスを介してパケットの転送の決定を行なう方法のフローチャートであり、各CAMアクセスはビットマップをもたらし、各CAMアクセスからのビットマップはパケットの可能な転送の決定を示す合成のビットマップを形成するように論理的に合成される。 第1のタイプのCAMエントリの例であり、コンテンツ部分はビットマップではなく(複数の)ACLタイプの指示子である。 第2のタイプのCAMエントリの例であり、コンテンツ部分はビットマップではなく(複数の)ACLタイプの指示子である。 第4のタイプのCAMエントリの例であり、コンテンツ部分はビットマップではなく(複数の)ACLタイプの指示子である。 IPv6プロトコルに準拠するパケット交換装置又はシステムにおいて複数のCAMアクセスを介してパケットの分類/転送の決定を行なう方法のフローチャートであり、ビットマップは、CAMアクセスから得られるCAMエントリのそれぞれからオンザフライで生成され、各CAMアクセスに続いて生成されるビットマップはパケットの可能な転送の決定を示す合成のビットマップを形成するように論理的に合成される。 複数のCAMアクセスを介してルックアップテーブル動作を実行するためのシステムのブロック図である。

Claims (23)

  1. パケット交換装置又はシステムにおいて、CAMのキーサイズを超えるテーブルルックアップインデックスを用いてテーブルルックアップ動作を実行する方法であって、
    上記テーブルルックアップインデックスのサブセットから導出される第1のCAMキーを用いて第1のCAMシステムに対する第1のCAMアクセスを実行することにより、1つ又は複数の第1のCAMエントリを得ることと、
    上記テーブルルックアップインデックスのサブセットから導出される第2のCAMキーを用いて第2のCAMシステムに対する第2のCAMアクセスを実行することにより、1つ又は複数の第2のCAMエントリを得ることと、
    上記1つ又は複数の第1のCAMエントリ及び上記1つ又は複数の第2のCAMエントリに応答して1つ又は複数の一致するルックアップテーブルエントリを決定することとを含む方法。
  2. 上記第1及び第2のCAMシステムはそれぞれ、CAMと、関連したRAMとを備えた請求項1記載の方法。
  3. 上記CAMエントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項1記載の方法。
  4. 上記第1及び第2のCAMシステムは互いに異なる請求項1記載の方法。
  5. 上記第1及び第2のCAMシステムは同一である請求項1記載の方法。
  6. 上記テーブルルックアップインデックスのサブセットから導出されるCAMキーをそれぞれ用いる1つ又は複数の追加のCAMアクセスを実行することにより、1つ又は複数の追加のCAMエントリを得ることと、
    上記1つ又は複数の第1のCAMエントリ、上記1つ又は複数の第2のCAMエントリ及び上記1つ又は複数の追加のCAMエントリに応答して、上記1つ又は複数の一致するルックアップテーブルエントリを決定することとをさらに含む請求項1記載の方法。
  7. 上記第1のCAMアクセスにより、1つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第1のビットマップを含む第1のCAMエントリが得られ、
    上記第2のCAMアクセスにより、1つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第2のビットマップを含む第2のCAMエントリが得られ、
    上記決定するステップは、上記第1及び第2のビットマップを論理的に合成することにより、上記1つ又は複数の一致するルックアップテーブルエントリを示す合成のマップを得ることを含む請求項1記載の方法。
  8. 上記決定するステップは、
    上記1つ又は複数の第1のCAMエントリから第1のビットマップを形成することと、
    上記1つ又は複数の第2のCAMエントリから第2のビットマップを形成することと、
    上記第1及び第2のビットマップを論理的に合成することにより、上記1つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップを得ることを含む請求項1記載の方法。
  9. 上記第1及び第2のCAMキーは、第1及び第2のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
    上記第1のCAMキーにおけるタイプフィールドは第1のタイプを示しており、上記第2のCAMキーにおけるタイプフィールドは第2のタイプを示している請求項5記載の方法。
  10. 上記CAMシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされたエントリの第1及び第2のグループを備えた複数のエントリを有し、
    上記第1のグループにおけるエントリに含まれるタイプフィールドは上記第1のタイプを示しており、上記第2のグループにおけるエントリに含まれるタイプフィールドは上記第2のタイプを示している請求項9記載の方法。
  11. パケット交換装置又はシステムにおいて、CAMのキーサイズを超えるテーブルルックアップインデックスを用いてテーブルルックアップ動作を実行する方法であって、
    CAMシステムにおいて、上記テーブルルックアップインデックスのサブセットから導出される第1のCAMキーを用いて第1のCAMアクセスを実行することにより、1つ又は複数の可能性のある一致するテーブルエントリを示す第1のビットマップを含む第1のCAMエントリを得ることと、
    上記CAMシステムにおいて、上記テーブルルックアップインデックスのサブセットから導出される第2のCAMキーを用いて第2のCAMアクセスを実行することにより、1つ又は複数の可能性のある一致するテーブルエントリを示す第2のビットマップを含む第2のCAMエントリを得ることと、
    上記第1及び第2のビットマップを、1つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップに論理的に合成することを含む方法。
  12. 上記CAMエントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項11記載の方法。
  13. 上記第1及び第2のCAMキーは、第1及び第2のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
    上記第1のCAMキーにおけるタイプフィールドは第1のタイプを示しており、上記第2のCAMキーにおけるタイプフィールドは第2のタイプを示している請求項11記載の方法。
  14. 上記CAMシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされたエントリの第1及び第2のグループを備えた複数のエントリを有し、
    上記第1のグループにおけるエントリに含まれる上記タイプフィールドは上記第1のタイプを示しており、上記第2のグループにおけるエントリに含まれる上記タイプフィールドは上記第2のタイプを示している請求項13記載の方法。
  15. パケット交換装置又はシステムにおいて、CAMのキーサイズを超えるテーブルルックアップインデックスを用いてテーブルルックアップ動作を実行するためのシステムであって、
    上記テーブルルックアップインデックスのサブセットから導出される第1のCAMキーを用いて第1のCAMアクセスを実行するための第1のCAMシステムと、
    上記テーブルルックアップインデックスのサブセットから導出される第2のCAMキーを用いて第2のCAMアクセスを実行するための第2のCAMシステムと、
    上記第1のアクセスから得られる1つ又は複数の第1のCAMエントリ及び上記第2のアクセスから得られる1つ又は複数の第2のCAMエントリに応答して、1つ又は複数の一致するルックアップテーブルエントリを決定するための論理回路とを備えたシステム。
  16. 上記第1及び第2のCAMシステムはそれぞれ、CAMと、関連したRAMとを備えた請求項15記載のシステム。
  17. 上記エントリはそれぞれ、キー部分とコンテンツ部分とを備えた請求項15記載のシステム。
  18. 上記第1及び第2のCAMシステムは互いに異なる請求項15記載のシステム。
  19. 上記第1及び第2のCAMシステムは同一である請求項15記載のシステム。
  20. 上記第1のアクセスから得られる第1のCAMエントリは1つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第1のビットマップを含み、
    上記第2のアクセスから得られる第2のCAMエントリは1つ又は複数の可能性のある一致するルックアップテーブルエントリを示す第2のビットマップを含み、
    上記論理回路は、上記第1及び第2のビットマップを論理的に合成することにより、上記1つ又は複数の一致するルックアップテーブルエントリを示す合成のマップを得るように構成された請求項15記載のシステム。
  21. 上記論理回路は、上記1つ又は複数の第1のエントリから第1のビットマップを形成し、上記1つ又は複数の第2のエントリから第2のビットマップを形成し、上記第1及び第2のビットマップを論理的に合成することにより上記1つ又は複数の一致するルックアップテーブルエントリを示す合成のビットマップを得るように構成された請求項15記載のシステム。
  22. 上記第1及び第2のCAMキーは、第1及び第2のキーフォーマットの両方に含まれるタイプフィールドによって示されるように異なるようにフォーマットされ、
    上記第1のCAMキーにおけるタイプフィールドは第1のタイプを示しており、上記第2のCAMキーにおける上記タイプフィールドは第2のタイプを示している請求項19記載のシステム。
  23. 上記CAMシステムは、各エントリにおけるタイプフィールドにより示されるように異なるようにフォーマットされるエントリの第1及び第2のグループを備える複数のエントリを有し、
    上記第1のグループにおけるエントリに含まれるタイプフィールドは上記第1のタイプを示しており、上記第2のグループにおけるエントリに含まれるタイプフィールドは上記第2のタイプを示している請求項22記載のシステム。
JP2009504376A 2006-04-03 2007-03-20 Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 Expired - Fee Related JP4742167B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/397,491 2006-04-03
US11/397,491 US7552275B1 (en) 2006-04-03 2006-04-03 Method of performing table lookup operation with table index that exceeds CAM key size
PCT/US2007/064433 WO2007117891A1 (en) 2006-04-03 2007-03-20 Method of performing table lookup operation with table index that exceeds cam key size

Publications (2)

Publication Number Publication Date
JP2009532989A true JP2009532989A (ja) 2009-09-10
JP4742167B2 JP4742167B2 (ja) 2011-08-10

Family

ID=38294286

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009504376A Expired - Fee Related JP4742167B2 (ja) 2006-04-03 2007-03-20 Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法

Country Status (6)

Country Link
US (2) US7552275B1 (ja)
EP (1) EP2020125B1 (ja)
JP (1) JP4742167B2 (ja)
CN (1) CN101411136B (ja)
AT (1) ATE544267T1 (ja)
WO (1) WO2007117891A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2077000B1 (en) * 2006-10-25 2012-09-12 Thomson Licensing Method and system for frame classification
JP5058135B2 (ja) * 2008-02-08 2012-10-24 パナソニック株式会社 端末装置
US8787376B1 (en) * 2008-03-17 2014-07-22 Juniper Networks, Inc. Systems and methods for accessing a multi-bank SRAM
CN102209017B (zh) * 2010-03-29 2014-09-03 华为技术有限公司 生成访问控制列表的方法及装置
US9436402B1 (en) 2011-04-18 2016-09-06 Micron Technology, Inc. Methods and apparatus for pattern matching
GB2493195A (en) * 2011-07-28 2013-01-30 St Microelectronics Res & Dev Address translation and routing between dies in a system in package.
CN102291301B (zh) * 2011-08-10 2015-06-10 杭州迪普科技有限公司 一种报文特征的匹配方法及装置
US8706736B2 (en) * 2011-09-30 2014-04-22 Broadcom Corporation Extended width entries for hash tables
US8861347B2 (en) * 2011-12-04 2014-10-14 Mellanox Technologies Ltd. Configurable access control lists using TCAM
KR20130093707A (ko) * 2011-12-23 2013-08-23 한국전자통신연구원 패킷 분류 장치 및 그것의 패킷 분류 방법
US20130268729A1 (en) * 2012-04-10 2013-10-10 Tajinder Manhas Scalable packet classification using associative memory
CN103514224B (zh) * 2012-06-29 2017-08-25 国际商业机器公司 数据库中的数据处理方法、数据查询方法和相应装置
US9571502B2 (en) 2012-09-14 2017-02-14 International Business Machines Corporation Priority resolution for access control list policies in a networking device
CN104751879B (zh) * 2013-12-31 2019-01-11 北京大唐高鸿数据网络技术有限公司 基于fpga实现cam功能的方法
US9749328B2 (en) * 2014-05-22 2017-08-29 International Business Machines Corporation Access control list-based port mirroring techniques
US9485257B2 (en) 2014-05-22 2016-11-01 International Business Machines Corporation Atomically updating ternary content addressable memory-based access control lists
US9497119B2 (en) 2014-05-22 2016-11-15 International Business Machines Corporation Supporting access control list rules that apply to TCP segments belonging to ‘established’ connection
US9722931B2 (en) 2014-06-05 2017-08-01 International Business Machines Corporation Unified framework for isolating multicast and broadcast frames to a traffic class separate from a traffic class used for unicast frames
US10242740B2 (en) 2015-09-08 2019-03-26 Cisco Technology, Inc. T-CAM bier bit-string lookups
US9583191B1 (en) 2015-09-08 2017-02-28 Cisco Technology, Inc. CAM design for bit string lookup
US10009263B1 (en) 2015-10-09 2018-06-26 Gigamon Inc. Network switch device for routing network traffic through an inline tool
US9912575B2 (en) * 2015-11-18 2018-03-06 Gigamon Inc. Routing network traffic packets through a shared inline tool
TWI607315B (zh) * 2016-08-19 2017-12-01 神雲科技股份有限公司 判定設備連接狀態及設備類型的方法
CN107786497B (zh) * 2016-08-25 2020-04-14 华为技术有限公司 生成acl表的方法和装置
CN107957969B (zh) * 2016-10-17 2021-11-16 佛山市顺德区顺达电脑厂有限公司 判定设备连接状态及设备类型的方法
WO2018138062A1 (en) 2017-01-24 2018-08-02 Rockley Photonics Limited Multi-field classifier
US10834085B2 (en) 2017-04-14 2020-11-10 Nxp Usa, Inc. Method and apparatus for speeding up ACL rule lookups that include TCP/UDP port ranges in the rules
CN108512776B (zh) * 2018-03-07 2021-09-14 深圳市风云实业有限公司 交换芯片中tcam表的灵活组合方法、装置及芯片
US10764177B2 (en) 2019-01-21 2020-09-01 Mellanox Technologies Tlv Ltd. Efficient implementation of complex network segmentation
WO2023017315A1 (en) * 2021-08-12 2023-02-16 Marvell Israel (M.I.S.L) Ltd. Network device that utilizes tcam configured to output multiple match indices
CN115633097B (zh) * 2022-12-21 2023-04-28 新华三信息技术有限公司 一种访问控制列表acl压缩方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002335280A (ja) * 2001-05-09 2002-11-22 Hitachi Ltd フロー検索方法
JP2003143199A (ja) * 2001-10-30 2003-05-16 Nec Corp フィルタ条件比較方法およびシステム
JP2003324464A (ja) * 2002-04-30 2003-11-14 Fujitsu Ltd データ検索装置及びデータ検索方法
JP2004046988A (ja) * 2002-07-12 2004-02-12 Fujitsu Ltd 連想メモリ装置及びそれを用いた中継装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633548B2 (en) * 2001-01-30 2003-10-14 Nokia Intelligent Edge Routers Inc. Method and apparatus for ternary content addressable memory (TCAM) table management
US6646899B2 (en) * 2001-09-21 2003-11-11 Broadcom Corporation Content addressable memory with power reduction technique
US7266117B1 (en) * 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US7327727B2 (en) * 2002-06-04 2008-02-05 Lucent Technologies Inc. Atomic lookup rule set transition
US7003625B2 (en) * 2002-12-19 2006-02-21 Mosaid Technologies, Inc. Searching small entities in a wide CAM
US7251651B2 (en) 2003-05-28 2007-07-31 International Business Machines Corporation Packet classification
US7571242B2 (en) * 2003-10-24 2009-08-04 Alcatel Lucent Method for accelerated packet processing
US20060069857A1 (en) * 2004-09-24 2006-03-30 Nec Laboratories America, Inc. Compression system and method
WO2006111688A1 (en) * 2005-04-20 2006-10-26 Arm Limited Mapping an input data value to a resultant data value
US8792497B2 (en) * 2006-06-05 2014-07-29 Tellabs Operations, Inc. Method and apparatus for performing link aggregation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002335280A (ja) * 2001-05-09 2002-11-22 Hitachi Ltd フロー検索方法
JP2003143199A (ja) * 2001-10-30 2003-05-16 Nec Corp フィルタ条件比較方法およびシステム
JP2003324464A (ja) * 2002-04-30 2003-11-14 Fujitsu Ltd データ検索装置及びデータ検索方法
JP2004046988A (ja) * 2002-07-12 2004-02-12 Fujitsu Ltd 連想メモリ装置及びそれを用いた中継装置

Also Published As

Publication number Publication date
WO2007117891A1 (en) 2007-10-18
CN101411136B (zh) 2012-07-18
EP2020125A1 (en) 2009-02-04
US7552275B1 (en) 2009-06-23
US7908431B2 (en) 2011-03-15
US20090259811A1 (en) 2009-10-15
EP2020125B1 (en) 2012-02-01
CN101411136A (zh) 2009-04-15
ATE544267T1 (de) 2012-02-15
JP4742167B2 (ja) 2011-08-10

Similar Documents

Publication Publication Date Title
JP4742167B2 (ja) Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法
US11102120B2 (en) Storing keys with variable sizes in a multi-bank database
US10389633B2 (en) Hash-based address matching
US9569561B2 (en) Label masked addressable memory
US7349382B2 (en) Reverse path forwarding protection of packets using automated population of access control lists based on a forwarding information base
US11687594B2 (en) Algorithmic TCAM based ternary lookup
US10715439B2 (en) Longest prefix matching providing packet processing and/or memory efficiencies in processing of packets
US20090274154A1 (en) Double-hash lookup mechanism for searching addresses in a network device
US20060248095A1 (en) Efficient RAM lookups by means of compressed keys
EP3276501B1 (en) Traffic classification method and device, and storage medium
US9159420B1 (en) Method and apparatus for content addressable memory parallel lookup
CN105760411B (zh) 混合通配符匹配表
US7403526B1 (en) Partitioning and filtering a search space of particular use for determining a longest prefix match thereon
CN113519144A (zh) 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
US7219187B1 (en) Search parameter table in a content addressable memory
US20230052252A1 (en) Network device that utilizes tcam configured to output multiple match indices
CN107204926B (zh) 预处理cache的路由快速查找方法
CN114911728A (zh) 一种数据查找方法、装置及集成电路
TWI778716B (zh) 根據查表處理封包的方法和系統
US10318588B2 (en) Searching varying selectable physical blocks of entries within a content-addressable memory

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090701

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100614

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100614

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100618

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110310

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110509

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees