JP3711895B2 - Search system, search condition CAM registration method used therefor, and program thereof - Google Patents
Search system, search condition CAM registration method used therefor, and program thereof Download PDFInfo
- Publication number
- JP3711895B2 JP3711895B2 JP2001177856A JP2001177856A JP3711895B2 JP 3711895 B2 JP3711895 B2 JP 3711895B2 JP 2001177856 A JP2001177856 A JP 2001177856A JP 2001177856 A JP2001177856 A JP 2001177856A JP 3711895 B2 JP3711895 B2 JP 3711895B2
- Authority
- JP
- Japan
- Prior art keywords
- entry
- cam
- search
- upper limit
- lower limit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は検索システム及びそれに用いる検索条件CAM登録方法並びにそのプログラムに関し、特にルータ装置に用いられるCAM(Content−Addressable Memory)への検索条件の登録方法に関する。
【0002】
【従来の技術】
近年、ルータ装置においては、転送処理の性能を向上させるために、検索システムにCAMを使用する場合が増えており、CPU(中央処理装置)が管理する転送テーブルの一部のエントリをCAMにキャッシュすることで、全体的な処理性能を向上させる処理が行われている。
【0003】
このようなルータ装置でフィルタリング処理を行う場合、CAMを用いることで装置全体の負荷が小さくなり、性能が向上すると考えられる。ここで、フィルタリングとは、予め設定された条件(フィルタリング条件)に基いて、受信したパケットを通過させるか、廃棄するか等を決める処理である。
【0004】
フィルタリング条件としてはIP(Internet Protocol)アドレスやTCP/UDP(Transmission Control Protocol/User Datagram Protocol)ポート番号の範囲指定(下限及び上限)が設定されることがある。
【0005】
【発明が解決しようとする課題】
上述した従来の検索システムでは、フィルタリング条件をキャッシュとしてCAMに登録するため、その範囲に含まれる個々の要素を別々のエントリとしてCAMに登録している。
【0006】
しかしながら、フィルタリング条件の範囲が広くなると、登録されるべきエントリが増加し、その結果、検索ヒット率が下がり、さらにCPUによる転送テーブルの検索回数及びCAMへの登録回数が増加し、装置全体の性能を低下させてしまうという問題がある。
【0007】
そこで、本発明の目的は上記の問題点を解消し、検索ヒット条件を少ないエントリ数で登録することができ、検索性能を向上させることができる検索システム及びそれに用いる検索条件CAM登録方法並びにそのプログラムを提供することにある。
【0008】
【課題を解決するための手段】
本発明による検索システムは、範囲指定される検索ヒット条件をエントリとしてCAM(Content−Addressable Memory)へ登録し、パケットのヘッダ情報に対応するフロー識別子を前記CAMのエントリを用いて検索する検索システムであって、前記範囲指定される検索ヒット条件を、2以上かつポート数未満のエントリに分割して前記CAMに登録する手段を有することを特徴とする。
【0009】
本発明による検索条件CAM登録方法は、パケットのヘッダ情報に対応するフロー識別子をCAM(Content−Addressable Memory)のエントリを用いて検索する検索システムに対し、範囲指定される検索ヒット条件をエントリとしてCAMへ登録する検索条件CAM登録方法であって、前記範囲指定される検索ヒット条件を、2以上かつポート数未満のエントリに分割して前記CAMに登録するステップを有することを特徴とする。
【0010】
本発明による検索条件CAM登録方法のプログラムは、パケットのヘッダ情報に対応するフロー識別子をCAM(Content−Addressable Memory)のエントリを用いて検索する検索システムに対し、範囲指定される検索ヒット条件をエントリとしてCAMへ登録する検索条件CAM登録方法のプログラムであって、コンピュータに、前記範囲指定される検索ヒット条件を、2以上かつポート数未満のエントリに分割して前記CAMに登録するステップを実行させるためのプログラムであることを特徴とする。
【0011】
すなわち、本発明の検索条件CAM登録方法は、検索ヒット条件に範囲指定エントリをCAM(Content−Addressable Memory)へ登録する際に、CAMのマスク機能(Don’t Care機能)[検索ヒット情報の情報をマスク情報にてマスクしてから検索を行うための機能であり、マスクする部分はどのような値でもよい(Don’t Care)]を上手く使うことによって、少ないエントリ数で、一度にその範囲を含む検索条件を全て登録することが可能となる。
【0012】
したがって、CAMのマスク機能を使うことで、その範囲に属する全ての要素の検索ヒット条件を少ないエントリ数で登録することが可能となるので、検索システムの性能を向上させることが可能となる。
【0013】
【発明の実施の形態】
次に、本発明の一実施例について図面を参照して説明する。図1は本発明の一実施例による検索システムの構成を示すブロック図である。図1において、本発明の一実施例による検索システムはルータ装置における検索システムの構成例を示しており、パケットのヘッダ情報を入力とし、そのパケットが属するフロー識別子を出力するシステムである。
【0014】
ここで、ヘッダ情報とは受信パケットのヘッダに含まれるMAC(MediaAccess Control)アドレスやIP(Internet Protocol)アドレス、L4(レイヤ4)ポート番号等の組合わせである。フロー識別子とはそのヘッダ情報を持つパケットに対してルータ装置が行うべき転送処理を特定するための識別子である。
【0015】
上記の検索システムは検索エンジン1と、CAM(Content−Addressable Memory)2と、小容量高速メモリ3と、CPU(中央処理装置)4と、大容量低速メモリ5と、記録媒体6とから構成されており、検索エンジン1及びCPU4が実行するプログラムは記録媒体6に格納されている。
【0016】
検索エンジン1はパケットのヘッダ情報が入力されると、CAM2と小容量高速メモリ3とを用いてヘッダ情報に対応するフロー識別子を検索し、検索が成功すると、その検索結果として得られたフロー識別子を出力する。また、検索エンジン1は検索が失敗すると、CPU4と大容量低速メモリ5とを用いて再検索を行い、その検索結果として得られたフロー識別子を出力する。
【0017】
CAM2及び小容量高速メモリ3は高速であり、検索キーに対する検索結果を瞬時に出力する。CAM2は検索ヒット情報の情報をマスク情報にてマスクしてから検索を行うためのマスク機能(Don’t Care機能)を持っており、その場合、マスクする部分はどのような値でもよい(Don’t Care)。
【0018】
一方、CPU4はソフトウェア処理のため、CAM2に比べて検索に長い時間を要する。大容量低速メモリ5にはルータ装置(図示せず)が扱う全てのヘッダ情報とフロー識別子との対応が検索エントリとして格納されている。
【0019】
図2は図1の大容量低速メモリ5に格納される検索エントリの具体例を示す図である。図2において、大容量低速メモリ5の各エントリ#21〜#24にはヘッダ情報として送信元アドレス[「SA(Source Address)#1」,「SA#2」,「SA#3」,「SA#4」]と、宛先アドレス[「DA(Destination Address)#1」,「DA#2」,「DA#3」,「DA#4」]と、宛先ポート(「20〜150」,「5000〜6000」,「100〜200」,「10000〜20000」)とが格納され、それに対応するフロー識別子(「3」,「1」,「5」,「8」)が格納されている。ここで、各エントリ#21〜#24の宛先ポートは「下限〜上限」のような範囲指定の形式で与えられる点に注意する。
【0020】
図3は図1のCAM2及び小容量高速メモリ3に格納される検索エントリの具体例を示す図である。図3において、CAM2の各エントリ#31〜#36には送信元アドレス(32ビット)のデータ「SA#3」及びマスク情報「1111・・・1」と、宛先アドレス(32ビット)のデータ「DA#3」及びマスク情報「1111・・・1」と、宛先ポート(16ビット)のデータ「00000000 01100100」,「00000000 01101000」,「00000000 01110000」,「00000000 10000000」,「00000000 11001000」,「00000000 11000000」及びマスク情報「11111111 11111100」,「11111111 11111000」,「11111111 11110000」,「11111111 10000000」,「11111111 11111111」,「11111111 11111000」とが格納され、小容量高速メモリ3の各エントリにはそれに対応してフロー識別子「5]が格納されている。
【0021】
図4(a),(b)は本発明の一実施例で用いられるパケットの構成例を示す図であり、図5は本発明の一実施例による検索システムのアルゴリズムを示すフローチャートである。これら図1〜図5を参照して本発明の一実施例による検索システムの動作について説明する。図5に示すアルゴリズムはCPU4が記録媒体6のプログラムを実行することで実現される。
【0022】
CPU4は検索エンジン1からヘッダ情報が与えられると、そのヘッダ情報を持つ検索エントリを大容量低速メモリ5から検索し、対応するフロー識別子を検索エンジン1へ出力する。例えば、図4(a)に示すパケット#41のヘッダ情報がCPU4に与えられると、大容量低速メモリ5から図2に示すエントリ#23を検索し、そのエントリのフロー識別子=5を検索エンジン1へ出力する。
【0023】
CPU4は大容量低速メモリ5を検索した後、得られた検索エントリのヘッダ情報をCAM2に登録し、フロー識別子を小容量高速メモリ3へ登録する。この時、図2に示すエントリの宛先ポートのような範囲指定が検索ヒット条件に含まれる場合には、図5に示すアルゴリズムを用いて複数のエントリに分割したものをCAM2へ登録する。例えば、大容量低速メモリ5から図2に示すエントリ#23を検索した時、図3に示すような検索エントリがCAM2及び小容量高速メモリ3に追加登録される。
【0024】
CAM2は各エントリがデータエントリとマスクエントリとから構成されるターナリCAMであり、各ビットについて“0”、“1”、または“Don’t Care”のいずれかの値を検索条件として指定することができる。CAM2は検索エンジン1から検索キーとしてヘッダ情報が入力されると、そのヘッダ情報に一致するエントリを瞬時に見つけ出し、そのアドレスを小容量高速メモリ3へ受渡す。
【0025】
小容量高速メモリ3はCAM2からエントリのアドレスが入力されると、そのアドレスに格納されたフロー識別子を検索エンジン1へ出力する。例えば、CAM2及び小容量高速メモリ3に図3に示すようなエントリが格納されており、図4(a)に示すパケット#41のヘッダ情報が検索エンジン1から与えられた時、CAM2はエントリ#33を瞬時に見つけ出し、小容量高速メモリ3に格納されたフロー識別子=5が検索エンジン1へ出力される。CAM2及び小容量高速メモリ3に登録されたエントリは、CPU4によって最近検索されなくなったものから定期的に削除されるものとする。
【0026】
図5に示すフローチャートは検索ヒット条件として範囲条件A〜Bが与えられた時、CAM2へ登録すべき複数のデータエントリD[0],D[1],...,D[n−1]、マスクエントリM[0],M[1],...,M[n−1]及びエントリ数nを求めるアルゴリズムを示す。図5に示すフローチャート中のA,B,D[i],M[i]及びA’、B’は固定長ビット幅の変数であり、計算式中のOR、XOR、NOTはそれぞれビット毎のOR、Exclusive OR、NOTの論理演算を意味する。
【0027】
図1に示す検索システムの初期状態として、大容量低速メモリ5には図2に示す検索エントリが格納されており、CAM2及び小容量高速メモリ3には有効なエントリが1つも格納されていないものとする。
【0028】
ルータ装置が図4(a)に示すパケット#41を受信し、そのヘッダ情報として送信元アドレス=SA3、宛先IPアドレス=DA3、宛先ポート=121が検索エンジン1に入力されると、検索エンジン1はこれらのヘッダ情報を検索キーとしてCAM2へ入力する。この時点でCAM2には対応するエントリが存在しないため、CAM2に対する検索は失敗し、検索エンジン1はヘッダ情報をCPU4へ入力する。
【0029】
CPU4はこのヘッダ情報を検索キーとして大容量低速メモリ5を検索し、図2に示すエントリ#23を得る。このエントリ#23に含まれるフロー識別子=5を検索エンジン1へ受渡し、検索エンジン1はこれを本検索システムの出力とする。
【0030】
この時、CPU4は得られた検索エントリ#23をCAM2及び小容量高速メモリ3に登録するが、宛先ポートが[下限〜上限]の範囲条件で与えられているため、図5に示すアルゴリズムを用いて宛先ポートの[下限〜上限]の範囲をマスク情報にてマスクしやすいように分割し、CAM2に登録すべき複数のエントリを求める。以下、複数のエントリを求める処理について説明する。
【0031】
初期値として、エントリ#23の範囲条件の下限A=100、上限B=200を設定する。最初に登録すべきエントリは、下限をA=100とし、計算式#a1[A’←A OR (A−1)]によって上限A’=103が得られる。
【0032】
条件式#a2(A’>B)によって、上限A’=103が最終的な上限B=200以下であることを確認し、計算式#a3[D[n]←A,M[n]←NOT(A XOR A’)]によってデータエントリD[0]=100=00000000,01100100(2進)と、マスクエントリM[0]=11111111,11111100(2進)とが求まる(図3に示すエントリ#31)。このエントリは宛先ポートが100〜103の検索キーにヒットする。
【0033】
2番目のエントリは計算式#a4(n←n+1,A←A’+1)によって下限A=104、計算式#a1によって上限A’=111がそれぞれ得られる。条件式#a2によって上限A’=111が最終的な上限B=200以下であることを確認し、計算式#a3によってデータエントリD[1]=104=00000000,01101000(2進)と、マスクエントリM[1]=11111111,11111000(2進)とが求まる(図3に示すエントリ#32)。このエントリは宛先ポートが104〜111の検索キーにヒットする。
【0034】
3番目のエントリは計算式#a4によって下限A=112、計算式#a1によって上限A’=127がそれぞれ得られる。条件式#a2によって上限A’=127が最終的な上限B=200以下であることを確認し、計算式#a3によってデータエントリD[2]=112=00000000,01110000(2進)と、マスクエントリM[2]=11111111,11110000(2進)とが求まる(図3に示すエントリ#33)。このエントリは宛先ポートが112〜127の検索キーにヒットする。
【0035】
4番目のエントリは計算式#a4によって下限A=128、計算式#a1によって上限A’=191がそれぞれ得られる。条件式#a2によって上限A’=191が最終的な上限B=200以下であることを確認し、計算式#a3によってデータエントリD[3]=128=00000000,10000000(2進)と、マスクエントリM[3]=11111111,10000000(2進)とが求まる(図3に示すエントリ#34)。このエントリは宛先ポートが128〜191の検索キーにヒットする。
【0036】
5番目のエントリは計算式#a4によって下限A=192、計算式#a1によって上限A’=255がそれぞれ得られる。しかしながら、条件式#a2によって上限A’=255が最終的な上限B=200を超えていることが確認されるため、データエントリ及びマスクエントリの計算は行わず、#b1の処理に移り、残りの宛先ポートが下限A=192から上限B=200の検索キーにヒットするエントリを求める。
【0037】
5番目のエントリは上限B=200とし、計算式#b1[B’←B AND NOT(NOT(B)−1)]によって下限B’=200が得られる。条件式#b2(A>B’)によって、下限B’=200がA=192以上であることを確認し、計算式#b3[D[n]←B’,M[n]←NOT(B XOR B’)]によってデータエントリD[4]=200=00000000,11001000(2進)と、マスクエントリM[4]=11111111,11111111(2進)とが求まる(図3に示すエントリ#35)。このエントリは宛先ポートが200の検索キーにヒットする。
【0038】
6番目のエントリは計算式#b4(n←n+1,B←B’−1)によって上限B=199、計算式#b1によって下限B’=192がそれぞれ得られる。条件式#b2によって下限B’=192がA=192以上であることを確認し、計算式#b3によってデータエントリD[5]=192=00000000,11000000(2進)と、マスクエントリM[5]=11111111,11111000(2進)とが求まる(図3に示すエントリ#36)。このエントリは宛先ポートが192〜199の検索キーにヒットする。
【0039】
7番目のエントリは計算式#b4によって上限B=191,下限B’=128がそれぞれ得られるが、条件式#b2によって下限B’=128がA=192未満であるため、ここで処理を終了する。
【0040】
以上の処理によって、図3に示すCAM2の宛先ポートフィールドに登録すべきデータエントリD[0],D[1],...,D[5]及びマスクエントリM[0],M[1],...,M[5]が得られる。CPU4はこれらを用いてCAM2及び小容量高速メモリ3に、図3に示すように、エントリ登録を行い、パケット#41に関する処理を終了する。
【0041】
パケット#41に続いてルータ装置が図4(b)に示すパケット#42を受信すると、そのヘッダ情報として送信元アドレス=SA3、宛先アドレス=DA3、宛先ポート=153がそれぞれ検索エンジン1へ入力され、検索エンジン1は検索キーとしてそれをCAM2へ入力する。
【0042】
CAM2には既に、図3に示すエントリが登録されており、入力されたヘッダ情報はエントリ#34にヒットする。検索エンジン1は小容量高速メモリ3から対応するフロー識別子=5を受取り、それを検索システムの出力とする。
【0043】
このように、同一の検索エントリに属するパケットを再び受信した時に、CAM2及び小容量高速メモリ3に既にエントリが存在するため、CPU4と大容量低速メモリ5とによる低速な検索処理を必要とせず、非常に短時間で対応するフロー識別子を得ることができる。
【0044】
検索ヒット条件に範囲指定が含まれる検索エントリをCAM2に登録する場合、従来、その範囲に属する個々の要素毎にエントリを登録しているため、CAM2に登録するエントリ数が増加し、検索システムの性能の低下につながってしまう。
【0045】
これに対し、本発明ではCAM2のマスク機能(Don’t Care機能)を使うことで、その範囲に属する全ての要素の検索ヒット条件を少ないエントリ数で登録することができ、検索システムの性能を向上させることができる。
【0046】
上記のように、1つのCAM2によって多くの検索ヒット条件を登録することができるため、CAM2の1つ当たりの検索性能を向上させることができる。また、所望の性能を出すために必要となるCAM2のエントリ数を少なくすることができるため、コスト及び消費電力を小さくすることができる。
【0047】
さらに、CAM2へのエントリ登録回数が少なくなり、CPU4の負荷を小さくすることができる。さらにまた、CAM2の検索ヒット率が高くなるため、CPU4からCAM2へのエントリ登録回数が少なくなり、CPU4の負荷を小さくすることができる。
【0048】
上述した本発明の一実施例によるCAM2への検索条件の登録方法では、特に範囲の上限と下限との差が大きいほど、従来のCAM2への検索条件の登録方法に比べてその効果が大きくなる。
【0049】
尚、上記の説明ではヘッダ情報のうち、範囲指定される宛先ポートのみを分割して複数のエントリを求め、それら複数のエントリを一括してCAM2へ登録する処理について述べたが、ヘッダ情報の送信元アドレスや宛先アドレスも範囲指定される場合には、上記と同様の方法で、CAM2へ登録することができる。
【0050】
【発明の効果】
以上説明したように本発明によれば、範囲指定される検索ヒット条件を含むエントリをCAMへ登録し、パケットのヘッダ情報に対応するフロー識別子を検索する検索システムにおいて、エントリにおける範囲指定される検索ヒット条件を所定アルゴリズムを用いて複数に分割してCAMに登録することによって、検索ヒット条件を少ないエントリ数で登録することができ、検索性能を向上させることができるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例による検索システムの構成を示すブロック図である。
【図2】図1の大容量低速メモリに格納される検索エントリの具体例を示す図である。
【図3】図1のCAM及び小容量高速メモリに格納される検索エントリの具体例を示す図である。
【図4】(a),(b)は本発明の一実施例で用いられるパケットの構成例を示す図である。
【図5】本発明の一実施例による検索システムのアルゴリズムを示すフローチャートである。
【符号の説明】
1 検索エンジン
2 CAM
3 小容量高速メモリ
4 CPU
5 大容量低速メモリ
6 記録媒体[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a search system, a search condition CAM registration method used therefor, and a program therefor, and more particularly, to a search condition registration method in a CAM (Content-Addressable Memory) used in a router apparatus.
[0002]
[Prior art]
In recent years, in a router device, in order to improve transfer processing performance, the number of cases in which a CAM is used in a search system is increasing, and some entries in a transfer table managed by a CPU (central processing unit) are cached in the CAM. Thus, processing for improving the overall processing performance is performed.
[0003]
When filtering processing is performed with such a router device, it is considered that the use of CAM reduces the load on the entire device and improves the performance. Here, filtering is a process for determining whether a received packet is allowed to pass or discarded based on a preset condition (filtering condition).
[0004]
As filtering conditions, IP (Internet Protocol) addresses and TCP / UDP (Transmission Control Protocol / User Datagram Protocol) port number range designation (lower limit and upper limit) may be set.
[0005]
[Problems to be solved by the invention]
In the conventional search system described above, in order to register the filtering condition as a cache in the CAM, individual elements included in the range are registered in the CAM as separate entries.
[0006]
However, when the range of filtering conditions is widened, the number of entries to be registered increases. As a result, the search hit rate decreases, and the number of transfer table searches by the CPU and the number of registrations to the CAM increase. There is a problem of lowering.
[0007]
Accordingly, an object of the present invention is to solve the above problems, register a search hit condition with a small number of entries, and improve a search performance, a search condition CAM registration method used therefor, and a program therefor Is to provide.
[0008]
[Means for Solving the Problems]
The search system according to the present invention is a search system in which a search hit condition specified as a range is registered as an entry in a CAM (Content-Addressable Memory), and a flow identifier corresponding to packet header information is searched using the CAM entry. The search hit condition specified by the range is divided into two or more and less than the number of ports, and is registered in the CAM .
[0009]
The search condition CAM registration method according to the present invention uses a search hit condition specified as a range as an entry for a search system that uses a CAM (Content-Addressable Memory) entry to search for a flow identifier corresponding to packet header information. The search condition CAM registration method for registering to the registration method includes the step of dividing the search hit condition specified in the range into two or more and less than the number of ports and registering it in the CAM.
[0010]
The search condition CAM registration method program according to the present invention includes a search system that searches for a flow identifier corresponding to packet header information using a CAM (Content-Addressable Memory) entry, and enters a search hit condition specified as a range. A search condition CAM registration method program for registering in the CAM as follows: A computer causes a computer to execute a step of dividing the search hit condition specified in the range into two or more and less than the number of ports and registering the entry in the CAM. It is the program for this.
[0011]
That is, according to the search condition CAM registration method of the present invention, when registering a range designation entry in the search hit condition to the CAM (Content-Addressable Memory), the CAM mask function (Don't Care function) [search hit information information] Is a function for performing a search after masking with mask information, and any value can be used for the masked part (Don't Care)], so that the range can be reduced at a time with a small number of entries. It becomes possible to register all the search conditions including.
[0012]
Therefore, by using the mask function of the CAM, it is possible to register the search hit conditions of all elements belonging to the range with a small number of entries, so that the performance of the search system can be improved.
[0013]
DETAILED DESCRIPTION OF THE INVENTION
Next, an embodiment of the present invention will be described with reference to the drawings. FIG. 1 is a block diagram showing the configuration of a search system according to an embodiment of the present invention. In FIG. 1, a search system according to an embodiment of the present invention shows a configuration example of a search system in a router device, and is a system that receives packet header information and outputs a flow identifier to which the packet belongs.
[0014]
Here, the header information is a combination of a MAC (Media Access Control) address, an IP (Internet Protocol) address, an L4 (Layer 4) port number, and the like included in the header of the received packet. The flow identifier is an identifier for specifying a forwarding process to be performed by the router device for a packet having the header information.
[0015]
The search system includes a
[0016]
When the header information of the packet is input, the
[0017]
The
[0018]
On the other hand, since the
[0019]
FIG. 2 is a diagram showing a specific example of a search entry stored in the large-capacity low-
[0020]
FIG. 3 is a diagram showing a specific example of search entries stored in the
[0021]
FIGS. 4A and 4B are diagrams showing an example of a packet configuration used in an embodiment of the present invention, and FIG. 5 is a flowchart showing an algorithm of a search system according to an embodiment of the present invention. The operation of the search system according to one embodiment of the present invention will be described with reference to FIGS. The algorithm shown in FIG. 5 is realized by the
[0022]
When the header information is given from the
[0023]
After searching the large-capacity low-
[0024]
CAM2 is a ternary CAM in which each entry is composed of a data entry and a mask entry. For each bit, a value of “0”, “1”, or “Don't Care” is designated as a search condition. Can do. When header information is input as a search key from the
[0025]
When the entry address is input from the
[0026]
In the flowchart shown in FIG. 5, when range conditions A to B are given as search hit conditions, a plurality of data entries D [0], D [1],. . . , D [n−1], mask entries M [0], M [1],. . . , M [n−1] and the number of entries n. In the flowchart shown in FIG. 5, A, B, D [i], M [i], A ′ and B ′ are variables of fixed-length bit width, and OR, XOR, and NOT in the calculation formula are respectively for each bit. Means OR, Exclusive OR, NOT logical operation.
[0027]
In the initial state of the search system shown in FIG. 1, the large-capacity low-
[0028]
When the router apparatus receives the packet # 41 shown in FIG. 4A and inputs the source address = SA3, the destination IP address = DA3, and the destination port = 121 as the header information to the
[0029]
The
[0030]
At this time, the
[0031]
As the initial values, the lower limit A = 100 and the upper limit B = 200 of the range condition of
[0032]
It is confirmed by conditional expression # a2 (A ′> B) that the upper limit A ′ = 103 is not more than the final upper limit B = 200, and the calculation formula # a3 [D [n] ← A, M [n] ← NOT (A XOR A ′)] determines data entry D [0] = 100 = 00000000,01100100 (binary) and mask entry M [0] = 11111111,11111100 (binary) (entries shown in FIG. 3) # 31). This entry hits a search key whose destination port is 100 to 103.
[0033]
In the second entry, the lower limit A = 104 is obtained from the calculation formula # a4 (n ← n + 1, A ← A ′ + 1), and the upper limit A ′ = 111 is obtained from the calculation formula # a1. It is confirmed by conditional expression # a2 that the upper limit A ′ = 111 is the final upper limit B = 200 or less, and the data entry D [1] = 104 = 00000000,01101000 (binary) and mask by the calculation expression # a3 Entries M [1] = 11111111 and 11111000 (binary) are obtained (
[0034]
For the third entry, the lower limit A = 112 is obtained from the calculation formula # a4, and the upper limit A ′ = 127 is obtained from the calculation formula # a1. The conditional expression # a2 confirms that the upper limit A ′ = 127 is equal to or less than the final upper limit B = 200, and the data entry D [2] = 112 = 00000000,01110000 (binary) and the mask by the calculation formula # a3 Entry M [2] = 11111111, 11110000 (binary) is obtained (
[0035]
For the fourth entry, the lower limit A = 128 is obtained from the calculation formula # a4, and the upper limit A ′ = 191 is obtained from the calculation formula # a1. It is confirmed by conditional expression # a2 that upper limit A ′ = 191 is final upper limit B = 200 or less, and data entry D [3] = 128 = 00000000,10000000 (binary) and mask by calculation expression # a3 Entry M [3] = 11111111,10000000 (binary) is obtained (
[0036]
For the fifth entry, the lower limit A = 192 is obtained from the calculation formula # a4, and the upper limit A ′ = 255 is obtained from the calculation formula # a1. However, since the conditional expression # a2 confirms that the upper limit A ′ = 255 exceeds the final upper limit B = 200, the calculation of the data entry and the mask entry is not performed, and the process proceeds to # b1 and the rest Find an entry whose destination port hits the search key from the lower limit A = 192 to the upper limit B = 200.
[0037]
The fifth entry has an upper limit B = 200, and a lower limit B ′ = 200 is obtained by the calculation formula # b1 [B ′ ← B AND NOT (NOT (B) −1)]. It is confirmed by conditional expression # b2 (A> B ′) that the lower limit B ′ = 200 is equal to or greater than A = 192, and calculation formula # b3 [D [n] ← B ′, M [n] ← NOT (B XOR B ′)] determines data entry D [4] = 200 = 00000000, 11001000 (binary) and mask entry M [4] = 11111111, 11111111 (binary) (
[0038]
In the sixth entry, the upper limit B = 199 is obtained by the calculation formula # b4 (n ← n + 1, B ← B′−1), and the lower limit B ′ = 192 is obtained by the calculation formula # b1. It is confirmed by conditional expression # b2 that the lower limit B ′ = 192 is equal to or greater than A = 192, and data entry D [5] = 192 = 00000000, 11000000 (binary) and mask entry M [5 by calculation expression # b3 ] = 11111111 and 11111000 (binary) are obtained (
[0039]
In the seventh entry, the upper limit B = 191 and the lower limit B ′ = 128 are obtained by the calculation formula # b4. However, since the lower limit B ′ = 128 is less than A = 192 by the conditional expression # b2, the processing ends here. To do.
[0040]
Through the above processing, data entries D [0], D [1],... To be registered in the destination port field of CAM2 shown in FIG. . . , D [5] and mask entries M [0], M [1],. . . , M [5]. Using these, the
[0041]
When the router device receives the packet # 42 shown in FIG. 4B following the packet # 41, the source address = SA3, the destination address = DA3, and the destination port = 153 are input to the
[0042]
The entry shown in FIG. 3 is already registered in CAM2, and the input header information hits
[0043]
In this way, when a packet belonging to the same search entry is received again, the entry already exists in the
[0044]
When registering a search entry whose range is included in the search hit condition in CAM2, conventionally, since an entry is registered for each element belonging to the range, the number of entries to be registered in CAM2 increases. It will lead to performance degradation.
[0045]
In contrast, in the present invention, by using the CAM2 mask function (Don't Care function), the search hit conditions of all elements belonging to the range can be registered with a small number of entries, and the performance of the search system can be improved. Can be improved.
[0046]
As described above, since many search hit conditions can be registered by one CAM2, the search performance per CAM2 can be improved. In addition, since the number of CAM2 entries required to obtain desired performance can be reduced, cost and power consumption can be reduced.
[0047]
Furthermore, the number of entry registrations to the
[0048]
In the method for registering search conditions in the
[0049]
In the above description, the header information is divided into only the destination ports specified in the range, a plurality of entries are obtained, and the plurality of entries are registered in the
[0050]
【The invention's effect】
As described above, according to the present invention, in a search system for registering an entry including a search hit condition specified for a range in the CAM and searching for a flow identifier corresponding to the header information of the packet, the range specified search in the entry By dividing the hit condition into a plurality of parts using a predetermined algorithm and registering it in the CAM, the search hit condition can be registered with a small number of entries, and the search performance can be improved.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a search system according to an embodiment of the present invention.
2 is a diagram showing a specific example of a search entry stored in the large-capacity low-speed memory of FIG. 1. FIG.
FIG. 3 is a diagram showing a specific example of search entries stored in the CAM and the small-capacity high-speed memory shown in FIG. 1;
FIGS. 4A and 4B are diagrams showing a configuration example of a packet used in an embodiment of the present invention.
FIG. 5 is a flowchart illustrating an algorithm of a search system according to an embodiment of the present invention.
[Explanation of symbols]
1
3 Small-capacity high-
5 Large-capacity low-
Claims (10)
前記範囲指定される検索ヒット条件を、2以上かつポート数未満のエントリに分割して前記CAMに登録する手段を有することを特徴とする検索システム。A search system for registering a search hit condition specified in a range as an entry in a CAM (Content-Addressable Memory) and searching for a flow identifier corresponding to packet header information using the CAM entry,
A search system comprising: means for dividing the search hit condition specified in the range into entries of 2 or more and less than the number of ports and registering them in the CAM .
前記範囲指定される検索ヒット条件を、下限から上限に向かって行う分割と上限から下限に向かって行う分割とを組み合わせることにより、2以上かつポート数未満のエントリに分割し、前記CAMに登録する手段を有することを特徴とする検索システム。 The search hit condition specified by the range is divided into entries of 2 or more and less than the number of ports by combining the division performed from the lower limit to the upper limit and the division performed from the upper limit to the lower limit, and is registered in the CAM. A search system comprising means.
前記範囲指定される検索ヒット条件を、2以上かつポート数未満のエントリに分割して前記CAMに登録するステップを有することを特徴とする検索条件CAM登録方法。 A search condition CAM registration method comprising a step of registering the search hit condition specified in the range into entries of 2 or more and less than the number of ports and registering the entry in the CAM.
前記範囲指定される検索ヒット条件を、下限から上限に向かって行う分割と上限から下限に向かって行う分割とを組み合わせることにより、2以上かつポート数未満のエントリに分割し、前記CAMに登録することを特徴とする検索条件CAM登録方法。 The search hit condition specified by the range is divided into entries of 2 or more and less than the number of ports by combining the division performed from the lower limit to the upper limit and the division performed from the upper limit to the lower limit, and is registered in the CAM. The search condition CAM registration method characterized by the above-mentioned.
前記範囲指定される検索ヒット条件を、下限から上限に向かって行う分割のステップと、上限から下限に向かって行う分割のステップを有し、 The range-specified search hit condition includes a division step for performing from the lower limit toward the upper limit, and a division step for performing from the upper limit toward the lower limit,
前記下限から上限に向かって行う分割のステップにおいては、与えられた下限値をエントリのデータエントリとし、該エントリの下限値の最下位ビットから見て最初に In the division step performed from the lower limit toward the upper limit, the given lower limit value is set as the data entry of the entry, and the first is seen from the least significant bit of the lower limit value of the entry. 11 が表れるまでの全ビットをAll the bits until 11 に置き換えたものを、該エントリにおける上限値として算出し、該エントリの上限値に対応するマスク値を該エントリのマスクエントリとするエントリを作成してエントリとしてCAMに登録し、前記下限値を該上限値に1加えた値に更新する、Is calculated as an upper limit value in the entry, and an entry having a mask value corresponding to the upper limit value of the entry as a mask entry of the entry is created and registered as an entry in the CAM. Update to the upper limit plus one, 下限から上限に向かって行う分割における分割エントリ生成ステップを有し、A split entry generation step in the split performed from the lower limit toward the upper limit;
前記上限から下限に向かって行う分割のステップにおいては、与えられた上限値をエントリの上限値とし、該エントリの下限値の最下位ビットから見て最初に0が表れるまでの全ビットを1に置き換えたものを、該エントリにおけるデータエントリし、該エントリの上限値に対応するマスク値を該エントリのマスクエントリとするエントリを作成してエントリとしてCAMに登録し、前記上限値を該下限値から1引いた値に更新する、上限から下限に向かって行う分割の分割エントリ生成ステップを有し、 In the division step performed from the upper limit toward the lower limit, the given upper limit value is set as the upper limit value of the entry, and all bits until 0 appears first when viewed from the least significant bit of the lower limit value of the entry are set to 1. The replaced entry is a data entry in the entry, an entry having a mask value corresponding to the upper limit value of the entry as a mask entry of the entry is created, registered as an entry in the CAM, and the upper limit value is determined from the lower limit value. A division entry generation step of division performed from the upper limit to the lower limit, which is updated to a value obtained by subtracting 1;
前記下限から上限に向かって行う分割の分割エントリ生成ステップは、該ステップにおいて算出された前記範囲指定で与えられた上限値より大きくなるまで繰り返し実行され、 The division entry generation step of division performed from the lower limit toward the upper limit is repeatedly executed until it becomes larger than the upper limit value given by the range designation calculated in the step,
前記限から下限に向かって行う分割の分割エントリ生成ステップは、該ステップにおいて算出された前記範囲指定で与えられた下限値より小さくなるまで繰り返し実行されることを特徴とする検索条件CAM登録方法。 The search condition CAM registration method, wherein the division entry generation step of division performed from the limit toward the lower limit is repeatedly performed until the division entry generation step is smaller than a lower limit value given by the range specification calculated in the step.
コンピュータに、前記範囲指定される検索ヒット条件を、2以上かつポート数未満のエントリに分割して前記CAMに登録するステップを実行させるためのプログラム。 A program for causing a computer to execute a step of dividing the search hit condition specified in the range into two or more and less than the number of ports and registering it in the CAM.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001177856A JP3711895B2 (en) | 2001-06-13 | 2001-06-13 | Search system, search condition CAM registration method used therefor, and program thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001177856A JP3711895B2 (en) | 2001-06-13 | 2001-06-13 | Search system, search condition CAM registration method used therefor, and program thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002374289A JP2002374289A (en) | 2002-12-26 |
JP3711895B2 true JP3711895B2 (en) | 2005-11-02 |
Family
ID=19018640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001177856A Expired - Fee Related JP3711895B2 (en) | 2001-06-13 | 2001-06-13 | Search system, search condition CAM registration method used therefor, and program thereof |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3711895B2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1721411A4 (en) * | 2004-01-14 | 2010-09-08 | Riverstone Networks Inc | Managing processing utilization in a network node |
JP5519257B2 (en) * | 2009-12-10 | 2014-06-11 | Necエンジニアリング株式会社 | Data transfer device |
JP5967967B2 (en) * | 2012-02-13 | 2016-08-10 | キヤノン株式会社 | Information processing apparatus and control method thereof |
US8775726B2 (en) | 2012-07-27 | 2014-07-08 | International Business Machine Corporation | TCAM extended search function |
-
2001
- 2001-06-13 JP JP2001177856A patent/JP3711895B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002374289A (en) | 2002-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gupta et al. | Packet classification on multiple fields | |
US7039018B2 (en) | Technique to improve network routing using best-match and exact-match techniques | |
JP4614946B2 (en) | System and method for efficiently searching a forwarding database divided into a limited number of sub-databases having a limited size | |
US7437354B2 (en) | Architecture for network search engines with fixed latency, high capacity, and high throughput | |
US6985483B2 (en) | Methods and systems for fast packet forwarding | |
US7389377B2 (en) | Access control list processor | |
US7325071B2 (en) | Forwarding traffic in a network using a single forwarding table that includes forwarding information related to a plurality of logical networks | |
JP3957570B2 (en) | Router device | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
EP3258657B1 (en) | Ip route caching with two search stages on prefix length | |
US8599859B2 (en) | Iterative parsing and classification | |
US7861291B2 (en) | System and method for implementing ACLs using standard LPM engine | |
US7142541B2 (en) | Determining routing information for an information packet in accordance with a destination address and a device address | |
WO2020207248A1 (en) | Stream classification method and device | |
US20190294549A1 (en) | Hash Table-Based Mask Length Computation for Longest Prefix Match Caching | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
TW201603537A (en) | A method of representing a generic format header using continuous bytes and an apparatus thereof | |
JP3711895B2 (en) | Search system, search condition CAM registration method used therefor, and program thereof | |
TW201611548A (en) | A method of using a unique packet identifier to identify structure of a packet and an apparatus thereof | |
US7369554B1 (en) | Method and apparatus for performing filter operations on data packets using an instruction | |
US6633880B1 (en) | Method and apparatus for performing distinct types of radix searches | |
CN113328947B (en) | Variable-length route searching method and device based on application of controllable prefix extension bloom filter | |
US7039627B1 (en) | Method and apparatus for performing a radix search by selecting one of a valid table and a transition table | |
Ghosh et al. | A hash based architecture of longest prefix matching for fast IP processing | |
JP4726310B2 (en) | Information retrieval apparatus, information retrieval multiprocessor and router |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040922 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041005 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041206 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050111 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050314 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050726 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050808 |
|
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: 20080826 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090826 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090826 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100826 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110826 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110826 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120826 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130826 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |