JP3873027B2 - ビットストリングの検索装置および方法 - Google Patents
ビットストリングの検索装置および方法 Download PDFInfo
- Publication number
- JP3873027B2 JP3873027B2 JP2002580581A JP2002580581A JP3873027B2 JP 3873027 B2 JP3873027 B2 JP 3873027B2 JP 2002580581 A JP2002580581 A JP 2002580581A JP 2002580581 A JP2002580581 A JP 2002580581A JP 3873027 B2 JP3873027 B2 JP 3873027B2
- Authority
- JP
- Japan
- Prior art keywords
- bit string
- bit
- storage area
- comparison table
- search
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の属する技術分野】
本発明は、IPアドレスなどのビットストリングを検索あるいは照合に適した装置および方法に関するものである。
【0002】
【背景技術】
インターネットなどのコンピュータネットワークを介してデータを送受信する際には所定のプロトコルが適用され、インターネットのネットワーク層におけるプロトコルはインターネットプロトコル(IP)と呼ばれている。このIPは情報をパケット化して所定の目的地まで移動させるが、そのために、情報を格納したペイロードにIPヘッダをつけたパケットを送受信する。そして、IPヘッダの情報に基づいて、各々のパケットは所定のルートに配送され、また、受信先では、IPヘッダの情報に基づいてペイロードの情報が送信元の状態となるように組み立てられる。
【0003】
また、IPヘッダの情報は、ルータおよびファイアウォールなどのネットワークを管理する装置あるいはソフトウェア(プログラムあるいはプログラム製品)で参照され、ルーティング、パケットフィルタリング、SPD(セキュリティ・ポリシーデータベース)、ポリシールーティング、QoSなどの様々な目的のために照合され、パケットの送受信あるいは転送については常に利用される。
【0004】
たとえば、図1に示したIPヘッダ1に含まれるデータのうち、受信先アドレス(ディスティネーションIP、以降においてはDIP)2によって送信先が特定され、それに基づいてルーティングが行われる。また、DIP2、送信元アドレス(ソースIP、以降においてはSIP)3、さらに、識別子(IPアイデンティフィケーション、以降においてはIPID)4によりパケットが特定される。そして、フラグメントオフセット(以降においてはOFFSET)5により、パケットが断片に分割されて送信されたときに、そのフラグメント化されたパケットの前後関係が特定される。
【0005】
パケットの受信先アドレス(DIP)2によってパケットの出力先(インタフェース)を変える必要のあるルータなどの機器では、アドレス毎にインタフェースが規定されたルーティングテーブルに基づき高速でDIP2を判別する必要がある。また、受信先では、受信したパケットを組み立てる、あるいは再構成するために、高速でSIP3、DIP2およびIPID4を判別する必要があり、さらに、OFFSET5を見つけてデータを組み立ててトランスポート層などの上位のプロトコルに処理を引き渡す必要がある。また、パケットフィルタリングやSPD検索においてはSIP3、DIP2などがどの範囲あるいは範疇(ルール)に属するかにより、処理を決定する必要があるので、これらのビットストリングがどのルールに属するかを高速で照合することが要求される。
【0006】
さらに、今後、モバイルIPが実現されると、ルーティングテーブルは動的に変動する可能性があり、また、現状のIPv4(バージョン4)では、受信先アドレス(SIP)2および送信元アドレス(DIP)3は32ビットであるのに対し、IPv6(バージョン6)では128ビットに拡張される。したがって、今後、IPアドレスの検索における処理速度をさらに向上させることが、インターネットなどのコンピュータネットワークを用いてデータ交換をする上で非常に重要な技術となる。
【0007】
【発明が解決しようとする課題】
本願の発明者はIPアドレスの高速検索の方法として幾つかの方法を検討している。たとえば、ハッシュ関数とリスト検索を組み合わせて高速化をはかる方法がある。しかしながら、ハッシュ関数が衝突したときにリストを辿る処理がネックとなる。また、リストの先に繋がるエントリ数は予測不能なため、処理速度を見積もりしづらいという問題もある。
【0008】
ハッシュ関数と内容アドレスメモリ(CAM)との組み合わせは、速度的には有利だが共用マッチングメモリのためメモリ効率が異様に悪くなる。すなわち、ルーティング検索あるいはフラグメントリアセンブルといったIPパケットを取り扱う処理では、キー長の長い検索ではエントリ数が少なく、エントリ数の多いものは比較的キー長が短い。したがって、メモリ効率としては最悪の組み合わせとなる。また、ハッシュ関数の衝突率次第でCAMエリアの必要量が決まるが、衝突率は見積もりしづらく、実データに対してシミュレーションしつつハッシュ関数を決定し、CAM量を見積もらなければならないといったCAMをハードウェアで実現する上での難しさがある。また、CAMを構成するためにハードウェアが膨大になり、非常に高価なシステムになるという問題もある。
【0009】
そこで、本発明においては、IPアドレスなどの、複数のビットデータ(バイナリデータ)が連続したビットストリングあるいはビットストリームを簡易なシステムで高速に比較、調査、検索あるいは照合できるビットストリングの検索装置および検索方法を提供することを目的としている。また、固定的な簡単な構成でハードウェア化が容易であり、さらに、高速に検索できるテーブル検索による検索装置および検索方法を提供することを目的としている。さらに、比較テーブルを部分的に分けることによって、部分テーブル検索をツリー構造で実行し、低コストで高速なビットストリングの検索を行うことができる検索装置および検索方法を提供することを目的としている。
【0010】
そして、本発明の検索装置および検索方法をIPアドレス検索に適用させることにより、高速ルーティングが可能なルーティング装置および方法を実現することも本発明の目的の1つである。また、本発明の検索装置および検索方法をフラグメントリアセンブルに適用して、高速でパケットの再構成を可能にすることも本発明の目的の1つである。さらに、本発明をパケットフィルタリングやSPDのルールとの照合に用い、ルータやファイアウォールなどのネットワーク上のデータ管理用の機器およびソフトウェアにおいて、高速でデータパケットを管理する技術を提供することも本発明の目的の1つである。また、ネットワーク管理用の機器およびソフトウェアに適した検索あるいは照合用のテーブル技術を作成し、更新する技術を提供することも本発明の目的としている。さらに、本発明のその他の目的については本明細書の中で詳しく記述している。
【0011】
【課題を解決するための手段及びその作用効果】
このため、本発明においては、まず、ハードウェア化が容易な高速なテーブルサーチエンジンを提供する。本発明のビットストリングの検索装置は、第1のビットストリングを第1の方向に記憶可能な第1の記憶領域と、この第1のビットストリングと比較する複数の第2のビットストリングが第2の方向に並列に配置された比較テーブルを記憶可能な第2の記憶領域と、この第2の記憶領域の第2の方向のビット列に対応する記憶領域を備えた状態記憶領域と、第1の記憶領域の第1の方向に並んだ各ビットを、そのビットに対応する第2の記憶領域の第2の方向のビット列と、第1の方向に順番に比較し、その結果を状態記憶領域に順次反映する比較手段とを有する。したがって、本発明のビットストリングの検索方法は、第1の記憶領域の第1の方向に並んだ各ビットを、そのビットに対応する第2の記憶領域の第2の方向のビット列と、第1の方向に順番に比較し、その結果を状態記憶領域に順次反映する比較工程を有している。
【0012】
これらの検索装置および検索方法においては、第1のビットストリングの各ビットを、それに対応する比較テーブルのビット列と一括して比較して状態記憶領域に比較結果(照合結果あるいは検索結果)を収納できる。したがって、比較テーブルに含まれた複数の第2のビットストリングと一括で比較できるので、単純なツリー方式のバイナリサーチに比較して高速にサーチできる。一方、比較テーブルをビット列にスライスしてビット列毎に比較するので、CAMのようにビットストリング全体を同時に並列に一致検索することはできないが、ビット列毎に比較すればよいので、ハードウェアの量は少なく、コンパクトで低コストになる。したがって、膨大なビット量を備えたビットストリングの検索にも十分に対応できる。
【0013】
さらに、比較結果を順次反映して状態記憶領域に収納しているので、状態記憶領域には比較している状況が常に反映される。たとえば、状態記憶領域がすべて0になると、比較テーブルには第1のビットストリングと一致する第2のビットストリングは存在しないと意味付けることができる。したがって、状態記憶領域の論理和により、比較手段の動作あるいは比較工程を終了する機能を備えた出力手段あるいは出力工程を設けることが可能である。比較テーブルに含まれたビットストリングが一致しない場合は、比較動作を途中で止めて、次の異なる比較テーブルの検索に移行できる。このため、不必要な比較動作を省くことにより、簡単な構成で高速サーチを実現できる。さらに、出力手段あるいは出力工程では、終了直前の比較結果を出力させることも可能である。これは、後述するように、プリフィックスが設定されるIPアドレスによるルーティング検索では非常に有用である。
【0014】
第1の記憶領域を水平方向、すなわち、第2の方向にも展開することが可能であり、複数の第1のビットストリングを同時に検索したり、多ビットの第1のビットストリングを部分的に水平方向に展開して検索時間を短縮することが可能である。すなわち、第1の記憶領域に、第2の方向に複数のビットを記憶する領域を設け、比較する際は、第1の記憶領域の第2の方向および第1の方向に並んだ各ビットを、そのビットに対応する第2の記憶領域の第2の方向のビット列と、第2の方向および第1の方向に順番に比較し、その結果を状態記憶領域に順次反映する。
【0015】
ビットストリングを部分的に比較できるように分割された比較テーブルを用意し、その分割された比較テーブルを順番に第2の記憶領域に供給する手段あるいは工程を設けることにより、入力された被検出ビットストリングを分割して比較することができる。本明細書では、部分テーブル比較あるいは分割テーブル比較と呼ぶが、第1のビットストリングのビット量が多いケースや、比較対象となる第2のビットストリングが多いケースでは、高速化およびメモリの有効利用の点で非常に有用である。
【0016】
このため、本発明においては、異なる比較テーブル、すなわち分割された比較テーブルをサーチエンジンの第2の記憶領域に供給するテーブル供給手段または工程と、供給された被検索ビットストリングから、第2の記憶領域に供給された第1の分割された比較テーブルに対応する第1の部分を切り出して第1の記憶領域に供給するビットストリング供給手段または工程とを設けている。この検索方法では、サーチエンジンにより、第1の分割された比較テーブルに含まれる第2のビットストリングが特定されると、第1の分割された比較テーブルの下位の比較テーブルのうち、特定された第2のビットストリングに対応する第2の分割された比較テーブルを第2の記憶領域に供給する。また、被検索ビットストリングからは、第2の分割された比較テーブルに対応する第2の部分を切り出して第1の記憶領域に供給する。この手順を繰り返すことにより、膨大なビット長の被検索ビットストリングであっても短時間に識別することができる。したがって、テーブルサーチエンジンを用いて、データ量の多いビットストリングであっても短時間に検索することができる。
【0017】
本発明のビットストリングの検索装置および検索方法は、上述した工程、さらには以下で説明する工程あるいは機能を実行可能な命令を有するプログラムあるいはプログラム製品として提供することが可能である。これらのプログラムまたはプログラム製品は、ハードウェアを制御するソフトウェア(ファームウェアも含む)としてコンピュータやマイクロプロセッサなどの処理装置に読み取り可能な適当な形態の記録媒体に記録して提供することができる。また、インターネットなどの有線または無線によるコンピュータネットワークを介して伝送される媒体に埋め込んで提供できる。また、本発明のビットストリングの検索装置および検索方法は、LSIあるいはその他の専用回路によるハードウェアで実現して提供することも可能である。さらに、所定の動作を繰り返す比較手段および出力手段を含むサーチエンジンの部分をハードウェアで構成し、それらを制御しながらツリー型に検索を行う処理部分をソフトウェア、すなわちプログラムまたはプログラム製品で構成することも可能であり、専用回路の高速性とソフトウェアによるフレキシビリティな比較テーブルの管理能力とを備えた装置を提供できる。
【0018】
さらに、異なる比較テーブルを供給する際に、状態記憶領域をプリセットする機能、状態記憶領域の内容より比較テーブルから第2のビットストリングを特定し、それに関連付けされたデータを出力する判定機能をサポートすることが望ましく、ソフトウェアでサポートすることにより比較テーブルのサイズや条件などにフレキシブルに対応できる検索装置を提供できる。特に、分割テーブルサーチにおいては、状態記憶領域の内容より、最終の比較テーブルから第2のビットストリングまたはそれに関連付けされたデータを出力する判定機能を設けることが重要である。本明細書においては、階層化された比較テーブルを上位の比較テーブルから参照し、最下層の比較テーブルを最終の比較テーブルとして参照している例を主に説明している。しかしながら、最終の比較テーブルは最下層の比較テーブルに限定されるものではなく、照合過程の最後に行き着く比較テーブルであれば良く、最下層の比較テーブルから照合を初めて上位の比較テーブルを辿り、最上位の比較テーブルを最終の比較テーブルとすることも可能である。
【0019】
状態記憶領域をプリセットする機能を設けることにより、上流の比較テーブルの照合結果を下流の比較テーブルの照合過程に簡単に反映することができる。すなわち、状態記憶領域の状態は、次のビット列の比較結果に反映されるので、照合が進んでいる照合中に設定すれば、それに対応する第2のビットストリングの領域は比較動作において有効となり、照合が成立しなかった状態に設定すれば、それに対応する第2のビットストリングの領域は比較動作において無効となる。したがって、状態記憶領域を最初にマスクすることにより、第2の記憶領域内を有効な領域と無効な領域に区別することが可能であり、異なる比較テーブルを一括して第2の記憶領域に転送して利用できる。また、状態記憶領域を適切に設定することにより、第2の記憶領域を使い分けできるので、比較テーブルを効率良くRAMなどのメモリに蓄積することができ、メモリ効率をさらに向上できる。
【0020】
部分テーブル(分割テーブル)サーチでは、比較テーブルを分割することにより、上位の分割された比較テーブルに含まれる第2のビットストリングの上位の部分は同一となるものが多くなる。したがって、それらを1つ第2のビットストリング、すなわち、比較テーブルのエントリに圧縮することにより比較テーブルのエントリ量を削減することが可能となる。圧縮あるいは量子化されたエントリについては、そのエントリに続く下位の比較テーブルを第2の記憶領域にセットして比較を続けることにより被検索ビットストリングと同一あるいは被検索ビットストリングに最も近いエントリを特定することができる。
【0021】
したがって、特定された第2のビットストリングに続く比較テーブルを第2の記憶領域に供給して比較動作を繰り返すことにより、ツリー構造的に比較処理を進めることができ、バックトラックが発生するのを防止できる。さらに、各々の段階の比較テーブルに含まれる第2のビットストリングの量が一定の範囲になるように比較テーブルを分割することが可能なので、第2の記憶領域の容量を固定することが容易となり、ハードウェア化するのがさらに容易となる。また、分割された比較テーブルのエントリとなる第2のビットストリングの数が圧縮されるので、第2の記憶領域や、比較対象となる複数の比較テーブルを記憶するために必要となる記憶容量は小さくなりメモリ効率も向上する。
【0022】
このため、第1のビットストリングと比較する複数の第2のビットストリングが並列にソーティングされた状態で配置された比較テーブルを第2のビットストリングの上位ビットから適当な単位で複数に分割し、分割された比較テーブル内では同一のビットストリングを1つに圧縮するテーブル分割工程と、被検索ビットストリングから第1の分割された比較テーブルに対応する第1の部分を切り出して第1の分割された比較テーブルと照合し、第1の分割された比較テーブルに含まれる第2のビットストリングが特定されると、その第2のビットストリングに対応する第2の分割された比較テーブルに対応する第2の部分を被検索ビットストリングから切り出して第2の分割された比較テーブルと照合する照合工程と、最終の分割された比較テーブルが供給されたときの照合工程の結果から第2のビットストリングを特定し、それに関連付けされたデータを出力する判定工程とを有する検索方法あるいはプログラムは、本発明の検索装置を用いたアプリケーションとして非常に有用である。また、このツリー構造的な処理は、分割された比較テーブルに含まれる第2のビットストリングと、被検索ビットストリングの部分である第1のビットストリングとを一括して比較するような他のタイプの検索装置を用いたアプリケーションとしても有用である。
【0023】
ビットストリングの検索あるいは照合を高速で処理することができる本発明は、デジタルデータを取り扱うすべての処理で有用である。MPEGなどの画像データを示すビットストリームから特定のビットストリングを検索したり、膨大な文字データから特定の条件を検索するなどの多様なアプリケーションが考えられるが、特に高速性が要求されるコンピュータネットワークを対象とするデータ管理装置の分野に有効である。
【0024】
IPアドレスを比較の対象(被検索ビットストリング)とした場合、上位アドレスはネットワークを示し、下位アドレスがローカルアドレスを示す。このため、比較テーブルを分割して量子化する効果は大きく、サーチ対象となる第2のビットストリングを圧縮することができ、処理時間を大幅に短縮でき、メモリ効率も上がる。また、被検索ビットストリングのビット量が増大するにつれて、処理時間が圧縮できる効果、およびメモリ効率は大きくなり、今後、IPアドレスのビット数が増えるので、非常に有用な技術となる。
【0025】
IPアドレスを被検索ビットストリングとする場合、第2のビットストリングのうち、第1のビットストリングと比較する必要のあるビット位置を示す第3のビットストリング、すなわち、プリフィックス(プリフィックスマスクあるいはサブネットマスク)も第2の方向に並列に記憶する第3の記憶領域を設けることが望ましい。そして、状態記憶領域の論理和、または、比較テーブルのビット列に対応する第3の記憶領域のビット列の論理和により比較手段の動作を終了すると共に、第3の記憶領域のビット列の論理和により終了したときはその直前の比較結果を出力することが有効である。プリフィックスがすべて0になると、その比較テーブルの第2のビットストリングには、それ以上ビットを進めて比較するべき第2のビットストリングが存在しない。したがって、その時点で比較動作を終了することにより、比較結果を得るまでの時間を短縮できる。また、比較テーブルに含まれる第2のビットストリングはすべてユニークであるので、プリフィックスがすべて0になるまで比較動作が進んでいるときは、その直前までIPアドレスが一致した第2のビットストリングが存在する。したがって、その比較テーブルには一致した第2のビットストリングがなかったものとするのではなく、それを候補としてさらに比較処理を進め、ルーティングを精度良く特定することができる。
【0026】
プリフィックスを含めて比較するときは、第2および第3の記憶領域は第2のビットストリングとそれに対応する第3のビットストリングが第2の方向に隣接するようにアレンジされた第4の記憶領域を設けることが望ましい。したがって、比較テーブルも、第2のビットストリングとそれに対応する第3のビットストリングが第2の方向に隣接するようにアレンジされたものにすることが望ましい。これに対応して、状態記憶領域も、第2のビットストリングの比較結果に隣接して第3のビットストリングを並べることが望ましい。このようにアレンジすることにより、比較した結果を第1の方向に伝達しやすいので、比較手段として機能する回路および出力手段として機能する回路が組みやすくなり、高速化できる。一方、第2の記憶領域に比較テーブルを供給してセットする機能と、第1の記憶領域にビットストリングを切り出して供給する機能は、RAMなどのメモリの所定のアドレスから比較テーブルをダウンロードする処理が主になることを考えるとソフトウェアで実現することが有効である。
【0027】
また、分割テーブルサーチを行うには、テーブル分割工程では、比較テーブルに、第2のビットストリングと並列にそれぞれの第2のビットストリングのプリフィックスを並べ、第2のビットストリングおよびプレフィックスでソーティングすることが望ましい。そして、最終の分割された比較テーブルからルーティング情報を出力する判定手段あるいは工程を設けることにより、この検索により特定されたルートにパケットを送出する機能を備えた、高速ルーティングが可能なデータ管理装置あるいは管理方法を提供できる。
【0028】
一方、フラグメントリアセンブルにおいては、パケットを識別するビットストリングは動的に変動する。したがって、第1のビットストリングに対応する第2のビットストリングがないと、該第1のビットストリングを比較テーブルに追加して更新する機能を設けることにより、新たなパケットを識別する条件を自動的に追加できる。そして、パケットを識別するデータを比較してパケットの同一性を判断し、続いて、それらのデータパケットが接続される前後の位置を識別するデータを判断することにより、フラグメントリアセンブルを行うことができる。特に、パケットの前後を判断するデータを比較する場合は、第1の記憶領域には、前方を規定する第1のビットストリングと後方を規定する第1のビットストリングを並列に配置し、また、第2の記憶領域に、前方を規定する第2のビットストリングと、この前方を規定する第2のビットストリングに対応する後方を規定する第2のビットストリングとのペアが第2の方向に隣接して並列に配置された比較テーブルを供給することにより、前後の識別データの比較を同時に行うことができ、処理時間を短縮できる。
【0029】
また、パケットフィルタリング、SPD検索などにおいて、第1のビットストリングが属する範囲を照合するアプリケーションにおいても本発明は有用である。このアプリケーションでは、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含む管理用の第1のビットストリングを含むパケットを、その第1のビットストリングが属する範囲のルールに基づき管理する。したがって、ビットストリングを下位(from)から上位(to)の範囲指定のフィルタリングを行う必要がある。これをビットストリングのビット毎に一々値の大小比較をやっていたのではとても高速化できない。本発明においては、高速で複数の第2のビットストリングとの比較を行うことにより、特定された範囲あるいはその範囲に設定されたルールを照合できる。したがって、ルータやサーバなどで必要となるパケットフィルタリングあるいはSPD検索といった範囲検索を高速で実行できるデータ管理装置を提供できる。
【0030】
本明細書においては、範囲検索を最長一致検索と最長近似検索で提供する。最長一致検索では、第1のビットストリングが属する範囲を特定するために、その範囲を規定する下位のビットストリング(from)と上位のビットストリング(to)をそれらが第2の方向に対となるように並列に第2の記憶領域に配置して検索する。これらの対になった下位および上位のビットストリングと第1のビットストリングとを比較し、下位のビットストリングあるいは上位のビットストリングと第1のビットストリングが一致しているか、あるいは、不一致の場合は、下位および上位のビットストリングで規定される範囲から外れる方向に不一致となったのか、あるいは範囲に入る方向で不一致になったのかを比較結果により判別することができ、その結果を出力することにより第1のビットストリングを有するデータパケットの管理を高速で行うことができる。
【0031】
第1のビットストリングが規定の範囲に含まれるか否かを判別するためには、比較手段あるいは比較工程で判別される状態は以下の5つに設定することが望ましい。したがって、状態記憶領域は、下位および上位のビットストリングの対ごとに、少なくとも3ビットの記憶領域を持たせることが望ましい。すなわち、状態記憶領域は、第2の方向のビット列に対応し、上下のビットストリングの対ごとに少なくとも3ビットの記憶領域を備えていることが望ましい。
【0032】
5つの状態は次の通りである。まず、下位および上位のビットストリングと第1のビットストリングが一致している全一致状態であり、ビットストリングの照合が継続すると範囲から外れる可能性があるので、照合過程である。次に、下位のビットストリングと第1のビットストリングが一致している下位一致状態と、上位のビットストリングと第1のビットストリングが一致している上位一致状態との2つの状態であり、これらも照合を続けると範囲から外れることがあるので、照合過程である。
【0033】
これらに対し、全一致状態から下位一致状態あるいは上位一致状態に移行しない、下位一致状態から第1のビットストリングが下位になる、さらには、上位一致状態から第1のビットストリングが上位になった失格状態は、第1のビットストリングが範囲から外れているので、照合を続けても範囲に含まれることはない。一方、下位一致状態から第1のビットストリングが上位になる、あるいは上位一致状態から第1のビットストリングが下位になった候補状態では、第1のビットストリングが範囲に入ったので、照合を続けなくても範囲内になることは明らかである。したがって、これらの失格状態および候補状態は、対象となる下位および上位のビットストリングの対(エントリ)についての照合が終了したことを示す。したがって、状態記憶領域に反映される比較結果により、上記と同様に第1のビットストリングと上下のビットストリングで表されるルールとの照合を高速で行い、その照合結果に基づき第1のビットストリングを備えたパケットを管理するデータ管理装置を提供できる。
【0034】
この最長一致検索により、第1のビットストリングがどの範囲(ルール)に入るかを検索する処理でも、上記のように、部分テーブル(分割テーブル)でサーチすることにより、検索対象となるエントリを削減できる。このためには、テーブル分割工程では、比較テーブルに、下位および上位のビットストリングとを第2の方向にペアに並べ、下位および上位ビットストリングでソーティングする。また、判定手段あるいは工程では、最終の分割テーブルに基づき、範囲に対応する情報を出力する。さらに、全一致、下位あるいは上位一致の状態のときに、次に比較する下位の分割テーブルの対象を調整することにより、バックトラックが発生するのを最小に抑えることができる。
【0035】
これに対し、複数のルールが与えられると、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割し、第1のビットストリングが属する新たな範囲を判断した後に、第1のビットストリングが属する新たな範囲に複数のルールがあるときは、優先度の高いルールに基づきパケットを管理する方法がある。この方法はバックトラックが発生しないので、パケットフィルタリングには非常に有効である。
【0036】
この方法は、本明細書において最長近似検索と称している方法で検索できる。最長近似検索では、第2のビットストリングとしては、第1のビットストリングが属する重複しない範囲を規定する下位および上位のビットストリングのいずれか一方のビットストリングを選択する。そして、複数の第2のビットストリングをソーティングして並列にした比較テーブルと第1のビットストリングとを照合する。この照合過程では、上記と同様に分割テーブル検索を利用できる。照合過程において、一方のビットストリングが下位のビットストリングであるときは、一方のビットストリングに対して第1のビットストリングが上位方向に分離したときの最上位の一方のビットストリングを近似と判断し、一方のビットストリングが上位のビットストリングであるときは一方のビットストリングに対して第1のビットストリングが下位方向に分離したときの最も下位の一方のビットストリングを近似と判断する。
【0037】
この最長近似のプロセスにより近似と判断された一方のビットストリングに対応するルールに基づきパケットを管理することが可能である。ただし、一方のビットストリングに対応するルールが複数あるときは、優先度の高いルールを適用することが必要である。
この最長近似検索は、また、TCPパケットのリアセンブルのように、データブロックの先頭アドレスおよび末尾アドレスが一致するだけでなく、前後および包含関係になることもあるフラグメント化されたデータブロックを再構成するアプリケーションにおいても有効である。このデータ管理装置においては、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスを第1のビットストリングとして最長近似検索を行い、近似と判断された一方のビットストリングに対応するデータブロックと第1のビットストリングに対応するデータブロックとの一致、内外接、前後および包含関係に基づき、第1のビットストリングに対応するデータブロックを含むデータブロックを再構成する。さらに、再構成されたデータブロックの先頭アドレスおよび末尾アドレスにより比較テーブルを更新する。
【0038】
【発明を実施するための最良の形態】
以下に図面を参照して本発明の実施の形態について説明する。図2に、本発明に係るビットストリング検索装置の概略を示してある。このビットストリング検索装置10は、ハードウェア(専用回路)によって構成されるサーチ部(サーチエンジン)20と、それを用いて比較処理などを行うようにプログラミングされたソフトウェア(プログラムまたはプログラム製品)による処理部分30と、さらに、比較テーブルを記憶したメモリ11により構成されている。
【0039】
まず、サーチエンジン20は、第1のビットストリングφ1が第1の方向(本例では列または垂直方向)に展開される第1の記憶領域(レジスタあるいはメモリ)21と、複数の第2のビットストリングφ2により形成された比較テーブル23が、それら第2のビットストリングφ2が第2の方向(本例では行または水平方向)に並んで配置されるようにセットされる第2の記憶領域(レジスタあるいはメモリ)22と、第2の記憶領域22の行方向に延びたビット列24に対応する記憶領域(レジスタまたはメモリ)を備えた状態記憶領域25とを備えている。すなわち、比較テーブル23では、第2のビットストリングφ2は第1のビットストリングφ1と同様に第1の方向に展開され、複数の第2のビットストリングφ2が第2の方向に並べて配置される。
【0040】
サーチエンジン20は、比較回路26を備えており、この比較回路26は、第1の記憶領域21のビットRiを、そのビットRiに対応する第2の記憶領域22のビット列24の各ビットAi、Biなどと所定の順番(本例では上位ビットから下位ビットの図面上の上から下の方向)で比較する。さらに、比較回路26は、その比較結果で、状態記憶メモリ25の各ビットa、bを更新する。その際、直前の比較結果を示す状態記憶メモリ25の各ビットa、bの状態に基づき、あるいは反映して、状態記憶メモリ25の各ビットa、bを更新する。さらに、サーチエンジン20は、状態記憶メモリ25に記録された比較結果である各ビットa、bの論理和を演算して比較動作を終了するための出力回路27を備えている。
【0041】
処理部30は、入力あるいは供給されたビットストリング(被検索ビットストリング)φ0を、比較対象となる比較テーブル23のビット長に合わせて切り出して第1のビットストリングφ1として供給するビットストリング供給部31と、メモリ11に記憶された比較テーブル23の中から、適切な比較テーブルを選択して第2の記憶領域22に供給して記憶領域22の内容を更新するテーブル供給部32と、サーチエンジン20の出力回路27の出力結果を判断し、比較テーブル23の中で特定あるいは候補となった第2のビットストリング(エントリ)φ2に対応する処理を行う判定部33とを備えている。エントリには下位の比較テーブルの情報あるいはルーティング情報などの検索装置10の出力となる情報が付随しており、判定部33はそれらの情報を出力することができる。テーブル供給部32は、さらに、選択した比較テーブル23に対応する状態ビットを、比較処理を開始する前に状態記憶メモリ25に供給し、第2の記憶領域22のどのエリアを比較処理に使用するかを設定する機能も備えている。
【0042】
さらに、以下に説明する幾つかのアプリケーションにおいては、比較テーブル23を動的に更新する必要がある。たとえば、フラグメントリアセンブルにおいては、判定部33の結果によっては、ビットストリング供給部31に供給されたビットストリングφ0をメモリ11の比較テーブル23に追加あるいは削除する必要がある。したがって、検索装置10は、テーブル更新処理部35を備えている。パケットの送り先(経路あるいはルート)を設定するルーティング装置(ルータ)やSPD検索用の管理装置に本例の検索装置10を使用する場合は、基本的には比較テーブル23は静的であり、比較テーブルが更新される頻度は少ない。しかしながら、新たな経路を追加したり、新たなルールを追加することは常にあり、そのような場合は、ルーティング情報を備えたルーティングテーブルや、範囲検索テーブルとして利用されている比較テーブル23のエントリの追加削除を行うためにテーブル更新処理部35が機能する。
【0043】
図3に、本例の検索装置10を用いてビットストリングを検索する処理の概要をフローチャートにより示してある。図3には、第1のビットストリングφ1と比較する複数の第2のビットストリングφ2が並列に配置された比較テーブルを適当な範囲で複数に分割し、その分割された比較テーブルを辿りながらツリー検索する方法を示してある。この検索処理は大きく3つに区分けすることが可能である。第2のビットストリングφ2が並列にソーティングされた状態で配置された比較テーブルを第2のビットストリングの上位ビットから適当な単位で複数に分割し、分割された比較テーブル23(本明細書では比較テーブル23とは主に分割された比較テーブルを示す)の中では同一のビットストリングを1つに圧縮するテーブル分割工程50aは、頻繁に比較テーブルが更新されない限り非定常的な処理である。しかしながら、動的に比較テーブルを更新することも可能であり、この場合は、以下の照合工程と並列に処理されることもありうる。テーブル分割工程50aについては、アプリケーションの説明においてさらに詳しく示してある。分割された比較テーブル23を用いて照合を行う照合工程50bは、以下においてステップ51から57で詳しく説明している。最終の分割された比較テーブルで特定された第2のビットストリームφ2に関連付けされたデータを出力する判定工程50cはステップ58として示してある。
【0044】
照合工程50bでは、まず、ステップ51で、ビットストリング供給部31により、入力されたビットストリングφ0から第1の記憶領域21にセットする第1のビットストリングφ1を切り出してセットする(ビットストリング供給工程)。次に、ステップ52で、テーブル供給部32により、ビットストリングφ1に対応する比較テーブル23をメモリ11から選択して第2の記憶領域22に供給し、セットする(テーブル供給工程)。さらに、ステップ53で、テーブル供給部32により、選択した比較テーブル23に対応する状態ビットを状態記憶メモリ25にセットする。これで、サーチエンジン20でビットストリングを比較あるいは検索する準備が整ったので、ステップ54で、サーチエンジン20でビットストリングの比較を行う。
【0045】
図4に、サーチエンジン20における処理の概要を示してある。まず、比較回路26を用いて、ステップ65で第1の記憶領域21のビットと、第2の記憶領域22のビット列24とを比較し、ステップ66では、その結果で状態記憶メモリ25を更新する。そして、ステップ67の出力工程では、出力回路27により状態記憶メモリ25の論理和が所定の終了条件になれば、ステップ65および66を含む比較処理(比較工程)68を終了して処理部30に処理を戻す。このサーチエンジン20のさらに詳しい機能は以下でも説明するが、サーチエンジン20をソフトウェア(プログラム)で実現することも可能である。しかしながら、サーチエンジン20は、予め決まった処理を繰り返し実行することになるので、専用回路化して高速で処理することが可能であり、また、いったん専用回路化しても変更の少ない機能であり経済的にも専用回路化するのに適している。
【0046】
図3に戻って、ステップ55で、サーチエンジン20のサーチ結果により比較テーブル23の特定のビットストリングφ2が特定できると、判定部33は、ステップ56で、そのビットストリングφ2に対応する次段(後段あるいは次のレベル)の比較テーブル23の有無を確認する。次段の比較テーブル23が存在する場合は、ステップ57でその比較テーブル23を選択し、ステップ51に戻って、入力されたビットストリングφ0から次の第1のビットストリングφ1を切り出して同様の比較処理を行う。
【0047】
次段の比較テーブルが存在しない場合は、そのときに第2の記憶領域22にセットされていた比較テーブルが最終段の比較テーブルとなり、入力されたビットストリングφ0に対応する第2のビットストリングφ2(分割されていないビットストリング)が一義的に特定されたことになる。したがって、ステップ58で、判定部33により、特定された第2のビットストリングφ2に関連付けされている処理を行う。たとえば、ルータであれば、第2のビットストリングφ2に指定されたルーティング情報(ネクストホップ)を出力し、そのパケットを所定のルートのインタフェースに送出し、フラグメントリアセンブルを行うデータ受信装置であれば、特定されたパケット同士をリアセンブルする。
【0048】
一方、ステップ55で比較テーブル23に該当する第2のビットストリングφ2がなかった場合は、ステップ59で、同一レベルの次の比較テーブル23の有無を確認する。同一レベルの第2のビットストリングφ2が多く、第2の記憶領域22にセットできない場合は、同一レベルで複数の比較テーブル23を設定することが可能であり、本例の検索装置10はその点でも、ハードウェア化が容易であり、比較対象となるビットストリングの数に対してフレキシブルである。ステップ59で、次の比較テーブルがある場合は、ステップ52に戻って比較処理を続行する。
【0049】
さらに、ステップ59で次の比較テーブルが存在しない場合は、メモリ11に用意された比較テーブル23に被検索対象のビットストリングφ0に該当するビットストリングが存在しない。したがって、ステップ61でその処理を行う。ルータであれば、ルーティングができないので、ICMPメッセージを送出するなどの処理を行う。なお、ディフォルトルーティングは、エラー処理にならないように設定することが可能であり、これについては後述する。また、フラグメントリアセンブルを行う受信装置であれば、新しいパケットが到来したことになるので、被検索対象のビットストリングφ0をテーブル更新処理部35に供給し、比較テーブル23を更新する。
【0050】
[ルーティングテーブル検索への適用]
以下では、上述したビットストリング検索装置10をルーティングテーブル検索に使用したルータ(ルーティング装置)について説明する。図5に示すルータ15は、ネットワーク上のパケットデータを管理する装置であり、パケットφpの入出力を制御および管理するパケット管理機能13と、パケットφpの転送先を判断するためのルーティング検索機能14と、パケットφpを転送する条件を判断する機能19とを備えている。ルーティング検索機能14は、入力されたパケットの経路を示すエントリを複数備えたルーティングテーブル14tを備えており、パケットφpのIPヘッダ1の受信先アドレス(DIP)2をルーティングテーブル14tの各エントリ70のDIP2と比較し、一致したDIP2のエントリに設定された経路(インタフェース)へパケット管理機能13が送出する。
【0051】
転送する条件を判断する機能19は、さらに幾つかの機能に分割されており、たとえば、ネットワーク上のセキュリティーサービスを提供するIPセキュリティー(IPsec)機能110と、ネットワーク上のクオリティーサービスを提供するQoS機能119と、ファイアウォール機能120などがある。これらの条件を判断する機能19の多くは、パケットφpを管理するIPヘッダ1のビットストリングが属する範囲を検索することが要求されており、IPsec(SPD)機能110ではSPDテーブル110tを検索し、QoS機能119ではフロー検索テーブル119tを検索し、ファイアウォール機能120ではパケットフィルタリングテーブル120tを検索する。
【0052】
パケット管理機能13は、ネットワークを介してパケットφpを受信および/または送信可能な1つまたは複数のパケット入出力部12aと、受信したパケットφpをキューイングするメモリ12bとを備えている。キューイングされたパケットφpは、ルーティング検索機能14でルーティング先が決まり、SPD機能110、QoS機能119およびファイアウォール機能120などにおける処理が決定された後に、それらの機能で決定された適切なタイミングで、パケット管理部13の何れかのパケット入出力部12aから適切なルートあるいはネクストホップに送出される。また、SPD機能110などの照合結果によってはキューイングされたパケットφpが出力されずに破棄されることもある。
【0053】
本明細書においては、これらの機能のうち、ルーティング検索に続いて、SPD検索を例にとってさらに詳しく説明している。まず、ルーティング検索機能14においては、パケットφpのIPヘッダ1のDIP2が被検索ビットストリングφ0となり、それに対応するルーティング情報φrをパケット管理部あるいはパケット管理機能13に送出する。パケット管理機能13は、そのルーティング情報φrに基づき選択されたルートあるいはノードにパケットφpを送出する。この検索機能14で被検索ビットストリングφ0を検索する場合、検索対象となるIPアドレスには、ネットワークプリフィックス部(以降においてはプリフィックス)と、ホスト部とがあり、プリフィックスは同一の連続したビット列であり、同一リンク上のすべてのノードに共通するように設定される。一方、ホスト部は、同一リンク上の各ノードでは一意であり、IPアドレス全体は一意となっている。したがって、リンクからリンクに経路を決定する際は、プリフィックスの範囲内で経路が選択できれば十分であり、ルーティングテーブル14tの各エントリにはプリフィックスも合わせて設定される。一方、複数のエントリが選択された場合は、プリフィックス長が最も長いものが最短経路でパケットを転送できる可能性が高いので、そのエントリが選択される。
【0054】
ルーティング検索機能14は、上述したビットストリング検索装置10を使用可能となっており、DIP2を第2のビットストリングφ2として採用すると共に、プリフィックスも第3のビットストリングφ3として参照しながら比較する。第2の記憶領域22に加えて、プリフィックスφ3を比較するための第3の記憶領域を設けることは可能であり、以下に説明する比較処理を本明細書に基づいて、第2の記憶領域とは分離された第3の記憶領域で行うことは可能である。しかしながら、DIP2(以降ではφ2)とプリフィックスφ3とを行方向(第2の方向、図2では水平方向)に並列に配置することにより、第2および第3の記憶領域を合体させて第4の記憶領域として処理することができる。そして、比較回路26の構成なども簡略化でき、また、状態記憶メモリ25にプリフィックスφ3の状態も同時に反映することができる。
【0055】
このため、本例のルーティング検索機能14に用いられる検索装置10のサーチエンジン20の第2の記憶領域22は、図2に括弧で示すように、第4の記憶領域16として拡張されている。また、状態記憶メモリ25も、DIPφ2の比較結果を収納するビットに隣接して、プリフィックスφ3の遷移を収納するビットが設けられるように拡張された状態記憶メモリ17となっている。また、検索装置10の比較テーブル23としてはルーティングテーブル14tが供給される。したがって、以降では比較テーブル23をルーティングテーブルとして参照する。このため、図6に示すように、第4の記憶領域16に設定される比較テーブル23も、第2のビットストリングであるDIPφ2とプリフィックスφ3が行方向に並列にペアをなすように隣接して並んで配置される。そして、テーブル供給部32が、DIPφ2とプリフィックスφ3とがペアとなって並列に配列されたルーティングテーブル23を第4の記憶領域16に供給する。
【0056】
また、ツリー検索を行うように、オリジナルのルーティングテーブルを分割して、検索用のルーティングテーブル23を生成するテーブル分割部14mをルーティング検索機能14は備えている。したがって、以降で参照する検索対象のDIPφ2は、テーブル分割により分割されたIPアドレスである。また、被検索対象のDIPφ1も、ビットストリーム供給部31により、分割された比較テーブル23に対応したビット長に切り出されたIPアドレスである。
【0057】
第4の記憶領域16として、行方向に32ビット幅が確保されていると、第1レベルのルーティングテーブル23としては、16個のエントリ70に相当する検索対象のDIPφ2を一括で被検索対象のビットストリングである被検索DIPφ1と比較することができる。また、上述したように、第1レベルのルーティングテーブル23のエントリの数は、実際のDIPφ2(32ビット)のルーティングテーブルのエントリの数に対応するものではなく、次段の第2レベルのルーティングテーブル23を一意に選択できるように量子化あるいは畳み込まれたものである。したがって、本例のルーティングテーブルは、特に、第1レベルのルーティングテーブル23は、従来のIPアドレスを全て規定したルーティングテーブルに対し非常に圧縮されたものになる。
【0058】
図7に、ルーティング機能14で使用されるサーチエンジン20の比較回路26の一例を示してある。この比較回路26では、状態記憶メモリ17に、DIPφ2と被検索DIPφ1とを列方向に順番に比較した累積論理積(ビットa、cなど)と、前のプリフィックスφ3(ビットb、dなど)とが記憶されるようになっており、各DIPφ2と被検索DIPφ1とプリフィックスφ3を含む照合状態が状態記憶メモリ17で分かるようになっている。具体的には、被検索DIPφ1の列方向のi番目のビットRiと、DIPφ2の列方向のi番目のビットAiとの照合結果をEXNORゲート26aで検出する。その結果に対し、プリフィックスφ3の列方向のi番目のビットBiの状態をANDゲート26bで反映する。その結果に対し、前の比較結果あるいは照合結果である状態記憶メモリ17のビットaの状態をANDゲート26cで反映し、列方向の照合結果を累積する。その照合結果により状態記憶メモリ17の対応するビットaを更新する。
【0059】
さらに、i番目のプリフィックスφ3のビットBiを反転した値と、前のプリフィックスφ3の照合結果を示す状態記憶メモリ17のビットbの値との論理積がANDゲート26fで演算され、ORゲート26dを介して状態記憶メモリ17のビットaに反映される。したがって、ビットaには累積された照合状態に加え、照合過程においてプリフィックスφ3が0に変わったことが反映される。プリフィックスφ3が0に変わるまで照合過程が継続していたことは、プリフィックスφ3が0に変わる直前までは、その状態記憶メモリのビットに対応するDIPφ2と被検索DIPφ1とは照合されていたことを示している。したがって、ORゲート26dによりプリフィックスφ3が0に変わったことを状態記憶メモリ17の対応するビットaに反映することにより、直前までに累積された照合結果がビットaに表される。なお、図7には、ルーティングテーブル23のエントリ70の1つを例に説明しているが、すべてのエントリに対して比較回路26は上記と同様に処理し、その結果により、各エントリに対応する状態記憶メモリ17の各ビットの値が更新される。
【0060】
さらに、プリフィックスφ3の列方向のi番目のビットBiと、その前のプリフィックスの累積結果を示す状態記憶メモリ17のビットbの値とがANDゲート26eにより論理積が演算され、その値により、状態記憶メモリ17のビットbは更新される。したがって、プリフィックスφ3の対応する状態記憶メモリ17のビットbはプリフィックスφ3の累積された状態が反映され、プリフィックスφ3がいったん0になると、ビットbの値は0に固定される。
【0061】
また、プリフィックスφ3が1から0に変わると、該当するDIPφ2については、それ以降は比較する必要がなくなる。このため、本例の比較回路26からは、ヒット信号φhが出力され、プリフィックスφ3が0に変わったエントリをヒットした候補として認識できるようにしている。
図8には、ルーティング検索機能14で使用されるサーチエンジン20の出力回路27の一例を示してある。この出力回路27では、まず、状態記憶メモリ17のうち、各DIPφ2のプリフィックスφ3の累積された状態が反映されるビットb、d、fなどの論理和をORゲート27aで演算する。そして、論理和が0になると比較処理を終了し、処理部30に比較結果を返す。すべてのDIPφ2のプリフィックスφ3が0になるとそれ以上の比較は不要だからである。その直前まで照合状態であったDIPφ2があると、直前の照合結果は、上記のように対応するDIPφ2との照合結果を示すビットa、c、eなどに反映される。したがって、判定部33は、ルーティングテーブル23の中に被検索DIPφ1に対し有効なDIPφ2があったか否かを判断することが可能であり、それに応じてルーティングを設定する処理を行ったり、テーブル供給部32により次のレベルのルーティングテーブルをセットする処理を行うことができる。
【0062】
さらに、出力回路27は、被検索DIPφ1と、ルーティングテーブル23のDIPφ2との累積された照合結果を示す状態記憶メモリ17の各ビットa、c、eなどの論理和もORゲート27bで演算しており、論理和が0になると比較処理を終了する。照合結果がすべて0であれば、プリフィックスφ3が1であっても被検索DIPφ1に該当するDIPφ2が記憶領域16にセットされているルーティングテーブル23にないことを示しており、これ以上比較処理を行う必要がないからである。したがって、出力回路27では、ORゲート27aおよび27bの論理積をANDゲート27cで演算し、その出力信号φgを判定部33に供給している。なお、ORゲート27bの出力が0になって検索を終了した場合は、同一レベルの他のルーティングテーブル23があれば、そのテーブルを記憶領域16にセットしてさらに比較処理を行う。同一レベルのテーブル23がなければ、照合対象がなく、検索が失敗したことになる。
【0063】
一方、出力信号φgが出力されずに、ルーティングテーブル23の最後まで照合処理が進んだ場合は、ルーティングテーブル23のエントリは必ずユニークになるように設定されているので、いずれかのエントリ1つが特定され、そのエントリに対応するルーティングあるいは次のレベルのルーティングテーブルを設定するなどの処理が行われる。
【0064】
図9に、サーチエンジン20において、状態記憶メモリ17の各エントリ70に対応するビットのペアにより照合を進める過程を模式的に示してある。まず、ペア(たとえば、ビットaとビットbのペア)71が(1,1)の場合は、DIPφ2が一致し、プリフィックスφ3も1であるので照合を続ける。そして、プリフィックスφ3が1であってもDIPφ2が一致しない場合、すなわち、ペア71が(0,1)になると照合は失敗となるので、終了する。一方、プリフィックスφ3が0になるとペア71は(1,0)となり、そのエントリが候補となる。さらに、照合が続き、次の候補が現れるとそのエントリのペア71が(1、0)となり、先の候補のエントリのペア71は(0,0)となって失格となる。このようにして、サーチエンジン20では照合過程が進み、ルーティングテーブルの中に該当するエントリがあるときはそれが特定される。
【0065】
図10に、サーチエンジン20の記憶領域16に次段のルーティングテーブル23を順番にセットしてツリー状に照合作業を進める過程を示してある。ルーティングテーブル検索機能14においては、被検索ビットストリームφ0として供給された被検索DIPを複数段階に分けて検索し、その被検索ビットストリームφ0の先頭から最長一致するアドレスを求める。そのためにハッシュテーブルはなく、ツリー移動型の検索方法が使用される。ツリー移動型の検索方法は、サーチエンジン20として実現されているハードウェアにより部分テーブル検索を行う処理と、ソフトウェアによりサーチエンジン20で検索するルーティングテーブル(部分テーブル)23を入れ替える処理とにより実現される。各段あるいは各レベルを構成する分割されたルーティングテーブル(分割テーブル)23の列方向のビット長、さらに分割する段数は特に定める必要がなく、サーチエンジン20の第4の記憶領域16のビット幅(本例では32ビット16エントリ)を効率良く利用でき、さらに、照合結果がユニークに定まるようにすればよい。そのような分割テーブルの設定については、以下でさらに説明する。
【0066】
このツリー移動型の検索方法では、最終段を除く上位の分割テーブル(比較テーブル、部分テーブル)23は必ず1つの下位の分割テーブル23を指し、複数の下位のテーブルを指すことはない。したがって、必ず1回の系列の検索で被検索DIPφ0に該当するエントリがあればヒットし、そのエントリのネクストホップ、ゲートウェイアドレスあるいはインタフェースをルーティング情報φrとして得ることができる。そして、上位の分割テーブル23は、量子化されて圧縮されているので、分割テーブルに含まれるエントリは非常に少なくなり、短い時間で照合できる。その結果、次のレベルの分割テーブルが続く場合も、特定されたエントリで指定される分割テーブルだけが選択されるので、同一レベルのすべての分割テーブルをサーチする必要がない。すなわち、分割テーブルを単位としたツリー構造でサーチを進めることができる。したがって、最終のエントリに到達するまでに照合するエントリの数を大幅に削減され、照合時間が非常に短い。その一方で、ヒットするエントリがルーティングテーブルに含まれていれば、1系統のサーチで必ずヒットするので、時間も一定していて、信頼性も高い。
【0067】
さらに、検索装置10では、テーブル供給部32により、記憶領域16に分割テーブルをセットするときに、状態記憶メモリ17に値をプリセットすることにより記憶領域16を有効活用できるようにしている。その様子を、図11を参照しながら説明する。図11(a)に示す分離型だと下位のテーブル23のエントリが少ない場合は、テーブル23に無駄な領域が生じ、それを記憶するメモリ11の使用効率が悪い。これに対し、図11(b)に示すように、統合型にすると複数の上位のテーブル23のエントリ70が、同一の領域内に格納された下位のテーブル23を利用できメモリ11の使用効率が上がる。
【0068】
ただし、同一のメモリ領域に複数のテーブル23が格納されるので、対象外のエントリからの検索を避ける必要がある。このため、状態記憶メモリ(状態ビット)17の初期値を図10および図11に示す通り対象のエントリから照合処理を引き継ぐ分割テーブル23に該当するところのビットにのみ1を立てる。状態記憶メモリ17の初期状態を設定することにより、図7に示した比較回路26の論理により、該当しないテーブルはヒットすることがなく、複数の分割テーブル23が格納されたメモリ領域を一括で第4の記憶領域16に転送することも可能となる。したがって、メモリ11の利用効率が上がると共に、メモリ11から所定の分割テーブルを抽出してサーチエンジン20の記憶領域16にセットするハードあるいはソフトウェアの構成も簡単になり、処理速度も向上する。
【0069】
図11では、各々の次段のテーブルを同一のメモリ領域に格納しているが、同一のレベルのテーブルを同一のメモリ領域に格納する必要はない。16エントリ分の記憶領域16の余りが最小となるようにメモリ11を分割テーブル23で埋めるようCPUによるルーティングテーブル生成アルゴリズムを工夫することができ、内蔵メモリ11の上限を定め、その中へ分割テーブル23を効率よく収容することができる。
【0070】
図12に、本例のルータ15において、ルーティングテーブル23にデフォルトルート73をセットする一例を示してある。デフォルトルート73は、たとえば、プリフィックス長が0のエントリであり、他のエントリが該当しないときに選ばれるように設定されたものである。このディフォルトエントリ73に対応する状態記憶メモリ17のペア71の初期値を(1,0)にしておけば他候補が現れれば失格し、現れずに検索終了すれば候補のまま、ディフォルトルートが選ばれる。
【0071】
図13を参照して、テーブル分割部14mでルーティングテーブル23を分割する処理について説明する。この処理は、図3に示したテーブル分割処理50aに対応するものである。図13には、上述したルーティングテーブル23の列方向を横に、行方向を縦に、すなわち90度回転させて示してある。したがって、各エントリ70として、プリフィックスφ3とDIPφ2とが上下に並列に配置されている。このように、上記で示した列および行方向は、向きを限定するものではなく、ビットストリングφ2をそのビットストリングの方向(第1の方向)と垂直な方向(第2の方向)に並べてテーブル23を設定し、その垂直方向にビットスライスしながら比較あるいは照合処理を進めていくことにより、行あるいは列方向とは関係なしに、本発明を適用することができる。図13は、全体79がオリジナルのルーティングテーブル(分割する前)を表わし、横にDIPφ2とプリフィックスφ3のペアが延び、そのようなペアが縦方向に複数並んで構成されている。
【0072】
図中の太線で囲んだ領域Ak(kは整数)は分割後の個々の分割テーブル23を表わす。各分割された比較テーブル23は、サーチエンジン20の記憶領域16のビット幅に対応して下位へ最大16個の下位テーブルを持つことが可能である。図13では、各分割テーブルの右に接するのが、その下位の分割テーブルである。分割テーブル23に含まれる各エントリ70は、下位の分割テーブルがユニークに定まるように、ユニークである必要がある。したがって、分割テーブルA0ビット幅をbit(A0)とし、ユニーク操作後の数をUni()とすれば、以下のようにビット幅を決める必要がある。
【0073】
Uni(bit(A0))= <16
Uni(bit(A0)+1)>16 ・・・(1)
具体的なテーブル分割処理は、まず、DIPφ2とプリフィックスφ3のペアをエントリの単位としてテーブル79をソートする。たとえば、プレフィックスを優先してソートし、比較対象となるビットの多い順に上から並べる。したがって、第4の記憶領域16にセットする状態では、左側から昇順にソートされたエントリが一応並ぶ。上記のようにユニーク操作後のビット幅を勘案してテーブルを分割し、個々の分割テーブル23の中でユニーク操作を行う。すなわち、同一要素、すなわち、同一のDIPφ2およびプリフィックスφ3のエントリ70を1つに圧縮する。さらに、集約された要素が多いエントリから順に上あるいは下から並べることにより、メモリ領域の利用効率は向上する。以下で説明する最長近似検索においては、ビットパターンの昇順あるいは降順であることが重要となるケースがあるが、最長一致検索ではソーティングすることによりユニーク操作ができれば良いだけであり、エントリのソート状態は意味を持たない。したがって、比較テーブルを記憶するメモリの利用効率を向上する配列にすることが望ましい。
【0074】
同様の処理で下位のテーブルも分割することが可能である。これにより、各分割テーブル毎に同一要素のエントリを1つに圧縮することにより量子化でき、比較する対象となるエントリ数を削減することができる。また、エントリ数が少なくなるので、ルーティングテーブルを構成するデータ量も圧縮することが可能となり、メモリ11の利用効率が向上する。そして、上述したような統合型のテーブルを採用することにより、さらにメモリ効率を向上することができる。
【0075】
なお、下位のテーブルを分割する前に全てのプリフィックスが0のDIPのエントリを除くことができる。しかしながら、最上位のテーブルでこれをやるとディフォルトルートを除くことになるので、注意が必要である。また、下から昇順にソートしているが、ソートの方向は任意であり、本例に限られるものではない。
【0076】
[フラグメントリアセンブルへの適用]
以下では、図2に示したビットストリング検索装置10を使用してフラグメントリアセンブルを行うデータ管理装置について説明する。このデータ管理装置は、非同期型のデータ駆動メディアプロセッサ(DDMP)などのデータ受信装置80として機能する。
【0077】
IPデータグラム(パケット)は伝達経路によってはオリジナルサイズのままでは転送できず、経路途中で細分化され複数の断片IP群(断片化されたパケット)の状態で受信されることがある。したがって、受信側(受信装置)では、断片化されたIP群からオリジナルのIP(パケット)を再構成する必要がある。これをフラグメントリアセンブルと呼ぶ。フラグメントリアセンブルは受信IP層(ネットワーク層)における中心的処理である。
【0078】
前述したように、個々のIPデータ(パケット)はSIP3と、DIP2と、IPDI4により一意に識別される。したがって、受信したフラグメントリアセンブルに必要なパケットはこれらSIP3、DIP2およびIPID4が同一値でのものであり、さらに、オフセット5によりオリジナルパケット(IPデータ)のどの位置であったのかが示される。
【0079】
このため、図14に示すように、データ受信装置80は、受信したフラグメントIPデータ集合に対し、同一のオリジナルIPデータに組み立てられるべきフラグメントIPデータ群(SIP3、DIP2およびIPDI4が同値となるフラグメントIPデータ群)を識別し、分離する識別機能81と、それぞれの分離したデータ群について個々のフラグメントIPデータのオフセット5により並べ替えるソート機能82と、フラグメントIPデータを結合して只一つのオリジナルIPデータを再構成する再構成機能83とを備えている。このリアセンブル処理の中核となるのは、前段での同一フラグメントIPデータ群の識別処理81と、後段でのオフセット5によるソート処理82であり、受信したフラグメントIPを1パケット処理するたびに必ず実行されるため、IP処理速度への影響が大きい。
【0080】
上述したDDMPなどでIPパケットを受信するTCP/IPエンジンにおいては、フラグメントIPデータ群管理にIPフラグメントコントロールブロック(IPFCB)データ構造を使う。したがって、フラグメントIPデータがどのIPFCBに属すべきなのか決める識別処理81では、SIP3−DIP2−IPID3を連結したビットストリングをキーとした完全一致検索により決定する。続いて行われるフラグメントIPデータがオリジナルIPデータのどこに位置すべきかを決定するソート処理82では、IPFCB内にあるフラグメント位置情報テーブルに対してビットストリングであるオフセット5をキーとしたソートを行い、断片IPデータの挿入位置を決定する。したがって、識別処理81では、IPFCBを識別するためのエントリを備えた識別テーブル84を用意することにより本発明に係るビットストリングの検索装置10を使用することができ、ソート処理ではオフセット5をエントリとした端点テーブル95を用意することにより検索装置10を使用することができる。このため、リアセンブルの処理速度を向上できると共に、ハードウェアを簡易にし、比較テーブルを格納するメモリ効率を向上することができる。
【0081】
図15に、SIP3−DIP2−IPID3を連結したビットストリングを検索するための識別テーブル84のツリー構造を示してある。ルートの第1段の比較テーブル23としてDIP2を識別する32ビットのテーブル23aを一段用意し、ルートから分岐した第2段以降にSIP3を識別するための16ビット分割テーブル23bを一段、さらに、8ビット分割テーブル23cを2段設けている。さらに、その下の第5段以降の分割テーブルとして、IPID4を識別するための8ビット分割テーブル23dが2段設けられており、この検索ツリーで確定したIPID4の先が確定したIPFCB85に繋がり、IPデータの属するデータ群が特定される。検索するIPFCBの識別ビットストリングは、基本的にDIP2は自IPであり、PPPなどを持つ状態を考えてもバリエーションは極めて少ない。したがって、32ビット幅の比較テーブル23aを用意し、さらに、最初に比較処理を行うことにより処理時間を短縮している。また、SIP3についても一定短時間についてみると同一IPの出現率が高く、それほど幅広い値となることはない。したがって、上位16ビットの比較テーブル23bについても少エントリ数であることが見込める。
【0082】
各段のテーブル23はパラメータとして与えられるビット長×固定エントリ数のテーブルである。したがって、図2に示した検索装置10を識別機能81で使用する場合は、サーチエンジン20の第2の記録領域22に識別テーブル84の各段のテーブル23あるいはそれをさらに分割したテーブルを供給することにより、ハードウェア(専用回路)により照合作業を行う。そして、ソフトウェアの処理部30の判定部33が検索結果を受け、テーブル供給部32に次段テーブルのID情報を伝達する。テーブル供給部32は、次段の比較テーブルでサーチエンジン20の記憶領域22を更新し、再度マッチング命令を発行することで、ツリー状に次段へと乗り移ってサーチを繰り返す。そして、最終段でIPIDが一致したエントリが示すIPFCBの識別情報(ID)を得て最終結果とし、そのIPFCB−IDを持って次の端点テーブルソート処理82へと移行する。
【0083】
図16に、識別処理81で使用するサーチエンジン20の比較回路26の構成例を示してある。本例の比較回路26では、状態記憶メモリ25の各ビットaおよびbに、それに対応する各ビットストリングφ2と被検索ビットストリングφ1とを列方向に順番に比較した累積論理積が記憶される。このため、具体的には、被検索ビットストリングφ1の列方向のi番目のビットRiと、比較対象となる比較テーブル23に含まれるビットストリングφ2の列方向のi番目のビットAiおよびBiとの照合結果をそれぞれ独立したEXNORゲート26aで検出する。その結果に対し、さらに、状態記憶メモリ25の直前の状態aおよびbがそれぞれANDゲート26bで反映され、その結果で状態記憶メモリ25の対応するビットaおよびbが更新される。行方向の他のビットに対しても同様の処理を行う。
【0084】
図17に、識別処理81で使用されるサーチエンジン20の出力回路27の一例を示してある。この出力回路27では、被検索ビットストリングφ1と、テーブル23の検索対象のビットストリングφ2との累積された照合結果を示す状態記憶メモリ25の各ビットa、b、cなどの論理和をORゲート27bで演算し、その論理和が0になると比較処理を終了する。照合結果がすべて0であれば、被検索ビットストリングφ1に該当するストリームφ2が記憶領域22にセットされているテーブル23にないことを示しており、これ以上は比較処理を行う必要がないからである。したがって、出力回路27では、ORゲート27bの出力信号φgを判定部33に供給している。
【0085】
照合するビット位置を移動させながら上記のような比較演算を繰り返し、パラメータとして与えられたテーブルビット長の回数演算を行う。その後、候補となるエントリ(状態記憶メモリ25のいずれかのビットが1のエントリ)が残っているか判断し、候補があれば、その候補に指定された次テーブルへ乗り移る。このため、各分割された比較テーブル23の構成は、図18に示されたようになっている。すなわち、比較するビットストリングφ2が並列に記憶されたテーブルエントリ23pと、各エントリに続く次段のテーブル情報23qとで1つのテーブルが構成されている。テーブル情報23qには、次段で指定されたテーブルのエントリのうち、サーチエンジン20で比較処理する際に有効となるエントリを示すマスク情報90が0から31の数値により示されている。このマスクパターンは図19に示すようにマスクテーブル91で規定された値であり、第2の記憶領域22は16ビット幅で構成されているので、このマスクテーブル91の範囲内で有効なエントリを指定することができる。
【0086】
このマスクパターンは、先に図11を参照しながら説明した統合テーブルにより多重化を行い、メモリの有効利用を図る上で有用な情報であり、比較処理をスタートするに先立って状態記憶メモリ25にセットされる。さらに、後述するように、エントリを新たに登録したり、削除するときに、マスクパターンを入れ替えるだけでエントリの追加削除を自由に行うことも可能である。
【0087】
IPデータは次々と到来するので、新しいIPデータは識別処理81では該当するものが検索できない。したがって、検索エラーとなるが、次に、テーブル更新部35の機能を用いて、検索に失敗したビットストリングφ1を登録する必要がある。この登録プロセス(図3に示すフローチャートではステップ61に対応)においては、検索に失敗した位置あるいはレベルのテーブルおよびそれ以下のレベルのテーブルが登録すべきツリーとなる。まず、テーブルの空きを調べ空きエントリを見つける。空きがなければ、その処理をキャンセルし、呼び出し元へ処理を差し戻す。一方、空きエントリがあるときは、その空きエントリにテーブルビット長分のデータをセットし、次段のテーブルへのポインタを設定する。さらに、次段のテーブルに移り、そこでもテーブルのビット長にあわせてデータを設定する。そして、IPIDの最下段のテーブルでは、IPFCBを確保し、テーブルにはIPFCBへのポインタを設定する。
【0088】
一方、登録と共に削除するプロセスも必要となる。このプロセスにおいては、検索同様にツリーを辿り最後のIPID4の下位テーブル検索まで行う。ツリーを辿るそれぞれの段で下位との間で待ち合わせを行う。検索結果としてエントリ番号が得られるので、そのエントリを不使用(used=0)とする。全エントリについて有効かを判定し、全エントリ無効であれば空きテーブル管理に返却する。また、空きテーブル解放を行ったかどうかのステータスを待ちあわせている上位段に通知し、上位段は下位段からの通知を受け、必要であれば自段テーブルのエントリを削除する。同様に上位へと辿り、最上位まで通知を戻していく。
【0089】
さらに、タイムアウト削除というプロセスも必要となる。タイムアウト管理プロセスがIPFCBのTTLを調べ、タイムアウト処理を行う。そして、消すべきエントリが決定すれば削除処理を行う。削除すべきIPFCBは、IPFCBに記録された検索キーを用いて削除プロセスに依頼することができる。また、タイムアウトではないが遅延状態であるエントリについては、個々のIPFCB内のTTLを調べ、遅延状態を検出し、所定のマークをつけておくことが望ましい。
【0090】
次に、端点テーブルを用いたソート処理82について説明する。端点テーブル95とは、図20に示すように、識別処理81により決定したIPFCB内に存在するオフセット5の位置情報、すなわち、ヘッドオフセット96と、尾部オフセット97をキーとして、断片IPデータを登録したテーブルである。本例では、断片化されたフラグメントデータ毎に、これらのヘッドオフセット96と尾部オフセット(テイルオフセット)97とをペアで1つのエントリとして端点テーブル95を構成している。そして、この端点テーブル95を比較テーブル23として検索装置10に供給し、照合を行う。
【0091】
このため、ソート機能82においては、被検索ビットストリングφ0(本例では分割テーブルにしないためにビットストリングφ1となる)もヘッドオフセット96と尾部オフセット97とをペアで構成する。これにより、図2に示したビットストリング検索装置10をソート処理82に使用することが可能となる。したがって、検索装置10のテーブル供給部32は、サーチエンジン20の第2の記憶領域22に端点テーブル95を供給し、ビットストリング供給部31は被検索ビットストリングφ1を第1の記憶領域21に供給する。サーチエンジン20によりハードウェア的に、検索対象のIPデータのオフセット5のヘッドオフセット96と尾部オフセット97とを、端点テーブル95のヘッドオフセット96と尾部オフセット97との間で完全一致照合することができる。
【0092】
図21に、ソート処理82で使用されるサーチエンジン20の比較回路26の構成例を示してある。第2の記憶領域22には、ヘッドオフセット96と尾部オフセット97がペアになった複数のエントリが供給され、第1の記憶領域21にもヘッドオフセット96および尾部オフセット97がペアになった被検索ストリームφ1が供給される。したがって、比較回路26では、状態記憶メモリ25においても隣接するビットaおよびbがペアとなる。しかしながら、ソート処理82においては、被検索ストリームφ1のヘッドオフセット96および尾部オフセット97と、第2の記憶領域のエントリφ2のヘッドオフセット96および尾部オフセット97が同時に一致することはないので、状態記憶メモリ25の各ビットはそれぞれ独立した意味を持つ。そして、状態記憶メモリ25の各ビットには、第2の記憶領域22の各エントリφ2のオフセット96および97と被検索ビットストリングφ1のオフセット96および97と個別に列方向に順番に比較した累積論理積が記憶される。
【0093】
具体的には、図16に示した比較回路とほぼ同様の構成であり、被検索ビットストリングφ1のペアになった列方向のi番目のビットRiおよびR‘iと、比較対象となる第2の記憶領域22の端点テーブル95に含まれるビットストリングφ2の列方向のペアのi番目のビットAi、Biがそれぞれ別のEXNORゲート26aで照合され、その結果に対し、さらに、状態記憶メモリ25の直前の状態aおよびbがそれぞれANDゲート26bで反映され、その結果で状態記憶メモリ25の対応するビットaおよびbが更新される。行方向の他のビットに対しても同様の処理が行われる。受信装置80のソート処理82のために採用されるサーチエンジン20の出力回路27は、図17で説明したものと同様になるので、ここでは説明を省略する。
【0094】
このような構成で各フラグメントデータのオフセットを検索することにより、ヘッドオフセット96と尾部オフセット97との照合処理を同一のIPデータに対して一括して行うことができる。さらに、ヘッドオフセットおよび尾部オフセットが一致しないフラグメントデータの場合は、一致しないことが判明した段階で照合処理を終了して、そのフラグメントデータのヘッドオフセットおよび尾部オフセットを端点テーブル95に登録する処理を行うことができる。そして、照合処理を専用回路でハードウェアによって実行できるので、短時間で照合処理を終了することができる。
【0095】
ソート処理82においては、サーチエンジン20の照合結果により、判定部33は、ヘッドオフセットについての一致エントリ(状態記憶メモリ25のビットペアが10のエントリ)と、尾部オフセットについての一致エントリ(状態記憶メモリ25のビットペアが01のエントリ)の情報を取得し、再構成するステップ83で、それらに基づいてフラグメントデータを接合あるいは組み立てて1つのオリジナルのデータパケットを再構築できるようにする。すなわち、あるエントリのヘッドオフセットについて被検索対象のフラグメントデータのオフセットが一致している場合は、そのエントリの前に被検索フラグメントデータが接合することを意味する。また、尾部オフセットについての一致している場合は、その被検索フラグメントデータが該当エントリの後ろに接合することを意味する。そして、いずれも一致しない場合は、接合できる点を持たないフラグメントデータであり、後に照合するフラグメントデータと接合するので、そのヘッドオフセット96および尾部オフセット97を端点テーブル95に登録する。このように、フラグメントの接合処理は、リスト構造のIPデータメモリブロックを接続する処理と、接合したエントリについて、端点テーブルの登録データの更新する処理とからなる。
【0096】
図22に、フラグメントデータが接合されてオリジナルデータが再構築されていく様子を示してある。まず、最初にフラグメントデータ(以下ではフラグメント)101Aが到着したときに識別処理81で照合した結果、一致するIPFCBが存在しないので、そのIPFCBを比較テーブル23に登録すると共に、新たに端点テーブル95を生成して初期化し、同時に、フラグメント101Aのオフセットを端点テーブル95に登録する。図22(a)は、その後、フラグメント101F,G,X,YおよびZが到来した状態を示してある。
【0097】
次に、図22(b)に示したように、フラグメント101Cが到来すると、分離処理81によりIPFCBが一致すると判断されるが、ソート処理82においてオフセットが一致するフラグメントが検索できない。したがって、フラグメント101Cのオフセットは端点テーブル95に新たに登録される。
図22(c)に示すように、フラグメント101Eが到来すると、識別処理81によりIPFCBが一致すると判断され、さらにソート処理82において、フラグメント101Fのヘッドオフセットと一致すると判断される。したがって、フラグメント101Eはフラグメント101Fの前に接合され、さらに、そのヘッドオフセットは一致しないので、新たに端点テーブル95に登録される。この際、前後の接続性を総合し、端点テーブル95をフラグメント101Eおよび101Fを統合した1つのエントリに更新する。
【0098】
図22(d)に示すように、フラグメント101Bが到来すると、識別処理81によりIPFCBが一致すると判断され、さらに、ソート処理82により、フラグメント101Aの尾部オフセットと、フラグメント101Cのヘッドオフセットと一致すると判断される。したがって、フラグメント101Bはフラグメント101Aの後ろに接合され、フラグメント101Cがそれに続いて接合される。そして、エントリはフラグメント101A、101Bおよび101Cが統合されたものになる。このような処理を繰り返し、次第にエントリが統合されていく。最終的には接続の結果1エントリにまとまり、リアセンブル完了し、分断される前のデータが再構築される。
【0099】
[SPD検索などの範囲検索への適用]
以下では、図2に示したビットストリング検索装置10をSPD検索に使用する例について説明する。図5に示したように、ネットワーク上のデータを管理する機能としてはSPD検索機能110、QoS機能119あるいはパケットフィルタリングを用いたファイアウォール機能120などがあり、これらの機能では、パケットφpを管理するためのビットストリングに適用されるルールを識別する必要がある。したがって、ビットストリングが属する範囲検索を行う必要があり、以下で示すSPD検索の手法は、その他の範囲検索に対しても適用することができる。特に、ファイアウォールなどのようなネットワークセキュリティを専用に行う用途では、ルールを決定するエントリ数が大量である。高速サーチが要求される。
【0100】
SPD検索処理110では、検索キーとしては、SIP(送信元アドレス)3、DIP(受信先アドレス)2、送信元ポート番号、受信先ポート番号およびプロトコルを含んだビットストリングが被検索ビットストリングφ0として主に用いられる。そして、検索あるいは照合されたルールあるいはルールナンバφnがパケット管理部13に渡され、パケット管理部13は照合されたルールに基づきパケットφpをブロック(キューイングされたパケットを送出しない)したり、認証を求めたり、ルートを変えるなどのネットワークのセキュリティーを確保する処理を行う。
【0101】
プロトコル以外の4つのキーとなるアドレスあるいは番号は、それぞれの数値の範囲で指定することができ、以下の処理では、その範囲と特定のルールとを結びつけて処理する。すなわち、指定された範囲の内あるいは外でデータパケットの取り扱いやルーティング方法が異なり、転送の可否などが決定される。このようなパケットの管理は、ネットワークセキュリティに限らず、上述した他の機能、たとえば、ポリシールーティング、QoS(Quality of Service)などにおいても同様である。
【0102】
図23に、SPD検索機能110のさらに詳細な構成を示してある。ここでは、データパケットφpに含まれるSIP3、DIP2、送信元ポート番号6、受信先ポート番号7およびプロトコル8の5つのキー111からなるビットストリングが、ルールの範囲内であるか否かを決定する被検索ビットストリームφ0となる。さらに、以下では、SPD検索機能110の範囲検索を最長一致で行う例を示しており、このため、SPDテーブル110tとしては、各エントリとしてルールを規定する下位のビットストリング(Fromビットストリング)φ2fおよび上位のビットストリング(Toビットストリング)φ2tを対にして登録したテーブルを用意している。そして、SPDテーブル110tを分割した比較したテーブル23をテーブル供給部32によりサーチエンジン20の第2の記憶領域22に供給し、ビットストリング供給部31により被検索ビットストリームφ0を切り出した被検索あるいは被照合ビットストリームを第1の記憶領域21に供給してビットストリングφ0が属するルールを検索する。
【0103】
図23に示したSPD検索機能110aでは、上述した5種類のキー111をそれぞれ独立した被検索ビットストリングとして、5つのキー111を照合するプロセスを並列に実行するようにしている。このため、被検索ビットストリングφ0を構成要素、すなわち、SIP3、DIP2、送信元ポート番号6、受信先ポート番号7およびプロトコル8(以降においてはID1からID5)の5つ各々の要素に対応するキー(key1からkey5)111に分割し、SPDテーブル110tも、それぞれのキー111に対応するID1からID5のルールを規定する分割された比較テーブル23とし、検索装置10により並列に照合する。このため、SPDテーブル110tを分割して適当な規模の分割された比較テーブル23を生成するテーブル分割部114を備えている。さらに、各々の検索装置10で照合されたルールの番号112の論理積を演算して残ったルールが複数あるときは、ルール選択処理113で、それらのルールの最小の番号のルールを優先度の高いルールとして選択する。このようにして、ルールが1つに選択されるので、次の処理115で選択されたルールでデータパケットの転送先を制限したり、送受信を拒否するなどの管理を行う。この処理115は、パケット管理部13の処理であり、ルール選択処理113も含めてパケット管理部13で行うことも可能である。
【0104】
図23に示したSPD検索機能110aでは、被検索ビットストリングφ0を5つのキー111に分けて並列に照合するので、高速に結果を得ることができる。その一方で、同時に並列的に各キーの照合を行おうとすると検索装置10がキーの数だけ少なくとも必要となるので、回路規模が膨大となる。また、いずれかのキーの照合結果がルールに該当するものがない(NG)であっても、その他のキーについても照合作業が行われるので、効率はそれほど良くない。
【0105】
図24に、異なる処理方法を用いたSPD検索機能110bを示してある。このSPD検索機能110bの全体構成は上記の並列型の検索機能と同じであるが、照合を各キーあるいはID毎に逐次行い、あるキーの照合結果で残っているルールのエントリについてのみ絞り込みながら後続のキーの照合を行う。したがって、検索装置10を使用する回数は減り、SPD検索機能110bの回路規模を小さくできる。また、後続のキー111を照合する範囲(エントリ)を絞ることができるので、照合あるいは検索効率を上げることが可能であり、並列型に比較すれば、多くのケースでは照合時間が延びるとしても短時間で照合結果を得ることもできる。この場合も複数のルールがすべての照合条件を満足する可能性があるので、ルール選択機能113を設け、最小の番号のルールを見つけ、処理115でそのルールに基づいてパケットを処理する。
【0106】
いずれの処理方法であっても、検索装置10でテーブルサーチによりルールとビットストリングの照合ができるので非常に高速になり、短時間で照合結果を得ることができる。なお、上記の並列型および逐次型のSPD検索機能の構成は例示であり、これら並列型と逐次型の混合したものなどの各キーとIDとの比較結果の組み合わせ方式が異なるもの、あるいは、被検索ビットストリングをキーあるいはID単位では分割せずに比較照合するものなども本発明の範囲に含まれる。
【0107】
図25に示すように、最長一致方式でSPD検索を行う場合、ルールの範囲を、その範囲を規定する下位のビットストリング(Fromビットストリング)φ2fと、上位のビットストリング(Toビットストリング)φ2tにより表す。これらのビットストリングφ2fおよびφ2tとを並べてルールのFrom境界線とTo境界線とを表す。両者の識別はビット位置で行い、例えばFrom境界線が左で、左から比較テーブル23のビット位置を1から数えるならFrom境界線は比較テーブル23の奇数ビットに、To境界線は比較テーブル23の偶数ビットに必ずペアで記述される。これらのエントリの各ビットストリングあるいはその一部が一致した場合、たとえば、ホスト一致、ポート一致の場合は、両境界線は同一とする。
【0108】
したがって、被検索ビットストリングφ0あるいは切り出された被検索ビットストリングφ1とこれらのルールを規定するビットストリングφ2fおよびφ2tとを逐次照合した場合、その状況は図25に示すように、実線の全一致照合過程125、破線のFrom一致照合過程126、一点鎖線のTo一致照合過程127、From境界線とTo境界線の間、すなわちルールの範囲内となる候補128、ルールから外れる失格129の5状態となる。したがって、本例のSPD検索処理110aまたは110bで検索装置10を使用する場合は、これらの5状態を状態記憶メモリ25に3ビットで記憶させる。
【0109】
図26に照合過程の遷移を示してある。全一致照合過程125は状態記憶メモリ25では「100」で表され、全一致照合過程継続の条件は被検索ビットストリングφ0のビットと、Fromビットストリングφ2fのビットおよびToビットストリングφ2tのビットが一致することである。
From一致照合過程126は状態記憶メモリ25では「101」で表され、全一致照合過程125からFrom一致照合過程126への遷移の条件は、非検索ビットストリングφ1のビットと、Fromビットストリングφ2fのビットが一致(照合)し、Toビットストリングφ2tのビットが不一致(非照合)になることである。
【0110】
To一致照合過程127は状態記憶メモリ25では「110」で表され、全一致照合過程125からTo一致照合過程127への遷移の条件は、非検索ビットストリングφ1のビットと、Fromビットストリングφ2fのビットが不一致(非照合)となり、Toビットストリングφ2tのビットとは一致(照合)になることである。
【0111】
失格129の状態は状態記憶メモリ25では「000」で表され、全一致照合過程125から失格129への遷移の条件は、非検索ビットストリングφ1のビットと、Fromビットストリングφ2fのビットが不一致(非照合)となり、また、Toビットストリングφ2tのビットとも不一致(非照合)になることである。From一致照合過程126から失格129への遷移の条件は、被検索ビットストリングφ1のビットが0となり、Fromビットストリングφ2fのビットが1となることである。つまり被検索ビットストリングφ1が0(図25の左)へFromビットストリングφ2fが1(図25の右)へ遷移するときしか失格になれない。一方、To一致照合過程127から失格129への遷移の条件は、被検索ビットストリングφ1のビットが1となり、Toビットストリングφ2tのビットが0になるときである。つまり被検索ビットストリングφ1が1(図25の右)へToビットストリングφ2tが0(図25の左)へ遷移するときしか失格になれない。
【0112】
これに対し、候補128の状態は状態記憶メモリ25では「011」で表され、全一致照合過程125から候補128への遷移することはなく、From一致照合過程126から候補128への遷移の条件は、被検索ビットストリングφ1のビットが1となり、Fromビットストリングφ2fのビットが0となることである。つまり被検索ビットストリングφ1が1(図25の右)へFromビットストリングφ2fが0(図25の左)へ遷移するときしか候補になれない。一方、To一致照合過程127から候補128への遷移の条件は、被検索ビットストリングφ1のビットが0となり、Toビットストリングφ2tのビットが1になるときである。つまり被検索ビットストリングφ1が0(図25の左)へToビットストリングφ2tが1(図25の右)へ遷移するときしか候補になれない。
【0113】
このように、分割テーブル23のエントリ70としてルールを規定するFromビットストリングφ2fとToビットストリングφ2とのペアを採用し、さらに、それらの照合状態を状態記憶メモリ25に上記のような状態で記憶させることにより、それらのビットと、被検索ビットストリングφ1のビットとをビットストリング検索装置10のサーチエンジン20で、上記の他の例と同様に順次照合することができる。そして、照合結果が順次、状態記憶メモリ25に反映されるので、その状態から被検索ビットストリングφ0がルールに属するか否かを高速で判断することが可能となる。
【0114】
図27に、本例のSPD検索処理110aまたは110bで使用される検索装置10のサーチエンジン20の記憶領域22に次段のルーティングテーブル23を順番にセットしてツリー状に照合作業を進める過程を模式的に示してある。サーチエンジン20の基本的な構成は先に説明した図10と同様であり、共通する部分の説明は省略する。本例においても複数段階に分かれて検索する。このため、ビットストリング供給部31が被検索ビットストリングφ0を分割して第1の記憶領域21にロードし、テーブル供給部32が第2の記憶領域22に分割された比較テーブル23をロードする。そして、図3を参照して説明したように、サーチエンジン20が、ロードされたビットストリングφ1の先頭から、ロードされた分割テーブル32のエントリ70と照合し、ソフトウェア処理部30によりサーチエンジン20で検索する分割テーブル23を入れ替えることにより、ツリー移動による照合作業が行われ、照合結果がユニークに定まる。ただし、後述するように、複数のルールが照合される場合があり、その場合は最小の番号のルールが優先される。
【0115】
ルーティング検索においては、上位の分割テーブル23で選択されたエントリと、下位の分割テーブルとは1対1で対応しており、必ず1つの下位の分割テーブル23を指し、複数の下位のテーブルを指すことはないようにしている。しかしながら、本例の範囲検索では、ルールの範囲が重複することがあり、また、複数のルールの境界線(From境界あるいはTo境界)が一致しており、被検索ビットストリングφ1がFrom一致照合過程あるいはTo一致照合過程であるときは、エントリを1つに絞ることができない。したがって、図27の状態130のときは、それら照合過程にある複数のエントリ70から1つの分割テーブル23が選択されるようにして1つの下位の分割テーブル23を指すようにしている。このように分割テーブル23を生成することにより、本例でも、分割テーブルを単位としたツリー構造でサーチを進めることができ、最終のエントリに到達するまでに照合するエントリの数を大幅に削減することが可能であり、照合時間が非常に短くできる。その一方で、ヒットするエントリがルーティングテーブルに含まれていれば、1系統のサーチで必ずヒットするので、信頼性も高い。
【0116】
しかしながら、エントリを1つに絞れない可能性を考慮し、それらのエントリに対応する下位テーブルを1つに纏めることを第1に考えた設計にすると、下位テーブルを収納するために第2の記憶領域を非常に大きなものにしなくてはならない可能性がある。その一方で、エントリを1つに絞れない確率と、それらの下位テーブルを纏めたときに非常にエントリ数が多くなる確率はそれほど高くなく、そのような低頻度の状況に対応するためにハードウェアを大きくすることは経済的でない。したがって、本例では、上記と同様にエントリ数は32ビット幅に対応する16個に絞っており、照合されたエントリ数が一定の値、たとえば9個を超えたような状態では下位テーブルを分けて検索のバックトラックを許す構成にしている。上記のように、バックトラックが発生する条件になる確率は非常に小さくバックトラックを許したとしても、照合速度に与える影響はほとんどない。その一方で、ハードウェアが膨大になる危険を避けることができるので経済的な選択であるといえる。
【0117】
図28は、本例のSPD検索処理110aまたは110bで使用されるSPDテーブル110tを分割した比較テーブル23を示している。Fromビットストリングφ2fとToビットストリングφ2tのペアが1つのエントリ70となり、複数のエントリ70が一定の方向に並ぶ。本例では、Fromビットストリングφ2fとToビットストリングφ2tが各々1ビット幅で、左にFromビット列が配置され、右にToビット列が配置された2ビット幅のエントリ70となっている。
【0118】
サーチエンジン20の内部関数である比較回路26の一例を図29に示してある。本例では、サーチエンジン20における検索過程の状態を示す状態記憶メモリ25は図26などに基づき説明したように1つのエントリ70の状態を示すために3ビット「a0、a1、a2」が用いられる。このため、比較回路26は、図26に基づく遷移過程を実現できるような論理構成を実現するためのワイヤードロジックあるいはゲートロジックなどのハードウェアロジックであり、各エントリのビット列24と被検索ビット列φ1のビットが入力され、状態記憶メモリ25の内容が更新される。
【0119】
図30は、サーチエンジン20の出力回路27の構成例である。本例では、状態記憶メモリ25の各エントリ70の照合過程を示す3ビットの内、第1ビットの論理和をORゲート27bでとり、その出力信号φgが低レベルになることをサーチ終了の条件としている。図26を参照すれば分かるように、状態記憶メモリ25では、失格の状態が「000」であり、候補の状態が「011」である。したがって、照合過程が終了していれば第1ビットは0になる。
【0120】
分割テーブル23の照合過程において、すべてのエントリが失格であれば、被検索ビットストリングφ0が含まれるルールがないことを示しており、下位の分割テーブルの照合は不要であり、さらに、SPD検索処理110bにおいて、これに続くキー111あるいはIDの照合作業は不要となる。一方、候補の状態があれば、そのキー111におけるルールが見つかったので、そのルールでパケットを管理するか、あるいは、これに続くキーあるいはIDの照合作業を行う。
【0121】
一方、分割テーブル23の照合を終了したときに、照合過程(全一致、From一致あるいはTo一致)であり、そのエントリに続く下位の分割テーブル23がある場合は、テーブル供給部32に情報を返し、ソフトウェア処理によって第2の記憶領域22に下位の分割テーブル23をダウンロードして次の照合作業を行う。
【0122】
被検索ビットストリングφ0が属するルールを検索する場合、途中の分割テーブルサーチで候補が見つかっても、照合状態が続いている場合は、その照合状態に関わるルールに含まれるか否かを最終的に確認する必要がある。したがって、下位の分割テーブル23に照合状態を伝達する必要がある。これは、上記の一致検索においても同様であるが、本例では、照合状態を示す状態記憶メモリ25が1エントリあたり3ビットであり、一方、分割テーブル23の1エントリが2ビットであるのでそのままでは下位のテーブルに伝達しにくい。このため、図31に示すように1エントリあたり、2ビットの管理情報状態ビット29を設け、状態記憶メモリ25の検索過程状態を示す3ビットを2ビットの情報に変換して引き継ぐようにしている。したがって、テーブル検索を開始するときは、まず、管理情報状態ビット29の内容にしたがって、状態記憶メモリ25の各エントリの検索過程状態ビットの3ビットを初期設定してからサーチエンジン20により照合作業を開始する。
【0123】
図32に示すように、照合作業中、あるいはテーブルサーチが終了すると、サーチエンジン20からは次のような結果が返される。テーブルサーチの途中で出力回路27の結果が低レベルになると、そこで検索を終了し、候補があれば終了通知と共に候補のエントリが連絡される。したがって、検索装置10では、判定部33が分割テーブル23に付随する情報に含まれるルールへのインデックス情報23Mを参照し、ソフトウェアによって、照合されたエントリに対応するルールNoが出力される。状態記憶メモリ25の状態により、複数の候補があれば複数の候補が通知され、失格だけであれば、候補は通知されない。テーブルサーチが終了しても照合過程のエントリがあり、検索が下位の分割テーブル23に続く場合は、上位の分割テーブル23に付随する次のテーブルアドレス情報23Lが参照され、テーブル供給部32により、第2の記憶領域22に新しい分割テーブルがダウンロードされる。さらに、分割テーブル23には、その分割テーブルの縦ビット長の情報23Nが含まれており、被検索ビットストリングφ0から対応するビット長のストリームφ1が切り出されて第1の記憶領域21にセットされる。また、管理情報状態ビット29に相当する状態ビットの情報23Oも含まれており、サーチを開始するまえに状態記憶メモリ25の各エントリのビットが初期セットされる。これらのテーブルに付随する情報のうち、候補となったルールのインデックス情報23M以外は、テーブル供給部32で処理され、サーチエンジン20の初期状態を設定するために用いられる。
【0124】
上位の分割テーブル23の検索結果で複数のエントリ70が候補となっており、下位のテーブルに続く場合は複数ある下位の次テーブルアドレス情報23Lとその状態ビット情報23Oを参照し、下位テーブルが1つになるようであれば、各状態ビット情報の論理和(OR)を演算し、次のテーブル検索の管理情報状態ビット29として引き継ぐ。一方、複数の下位テーブルに分割せざるを得ない場合は、一方の系列を先行してサーチエンジン20を稼動し、一方の系列が終わってから保留にしておいたもう一方の系列をサーチエンジン20にセットして作業を行う。したがって、この場合は、バックトラックを許すことになるが、上述したように、確率は非常に小さく、ハードウェアなどの経済性を考慮すると好ましい解決方法である。
【0125】
ビットストリング検索装置10においては、このようにして、ある系列が検索終了なら保留されている系列が有るか調べ、あればこの系列の検索を続ける。保留を含め全ての検索終了なら全ての候補から候補ルールを調べる。1候補が複数のルールに対応する事もあるので、複数の候補ルールがあれば、それらを含めて照合結果として出力する。並列処理を行う図23に示したSPD検索処理110aであれば、候補ルールの論理積をとって、優先順位の最も高いルール(本例では、インデックスが最小のルール)に従った管理を行う。一方、図24に示した逐次型のSPD検索処理110bであれば、複数候補ルールから下位のキー111に対応する次のIDの最上位の分割テーブル23の状態ビットを設定し、候補となったルールに限定して照合作業を上記と同様に行う。そして、下位のIDまでの検索が終了したときに複数の候補ルールがあれば上記と同様に優先順位の高いルールにしたがった管理を行う。IDを検索している過程でルールがなくなれば。その時点で該当無しとして照合を終了する。すなわち、該当するルールがないので、データパケットの転送を禁止するなどの処理を行う。ルールの優先順位は、ルールNoの大小に限らない適当な方法で設定できる。
【0126】
なお、下位の分割テーブルを記憶する際に、内蔵メモリの有効な利用方法として複数のテーブルを統合する方法があり、これは図11に基づき説明した方法と同様につき、詳しい説明は省略する。
SPD検索処理110においては、SPDテーブル110tから分割テーブル23を作成する処理は非定常処理となる。したがって、テーブル分割部114の処理は、CPUを用いたソフトウェア処理とすることが望ましい。各キーあるいはID(DIP3、受信先ポート、SIP2、送信元ポート、プロトコル)を統合したテーブルを作成することも可能であるが、照合対象となるビットストリングが膨大になる。このため、本例では、各IDに分割した処理を行っており、サーチ用の分割テーブル23も各ID毎に作成するようにしている。図33に示した分割テーブル23は、SIP2を照合するための分割テーブル23の例であり、図13と同様に、90度回転した状態で示してある。Fromビットストリングφ2fと、Toビットストリングφ2tが2段で1つのエントリ70のペアとなり、縦方向はペアの個数、すなわち、エントリ70の個数である。これらの各ペアには優先順にルールNoが振られている。さらに管理情報状態ビット29のために1ビットが用意されており、これによって1つのIDの分割テーブル23が形成される。そして、1つのID(キー)の分割テーブル23の規模が大きい場合は、さらに分割テーブル23を分割してサーチエンジン20にセットする分割された比較テーブル23を生成する。
【0127】
サーチエンジン20は、最長一致アルゴリズムにより範囲を照合するときの問題点は、上述しているように、候補となるエントリが複数表れる点と、照合状態が続いたときは、それを複数のエントリがある場合でも継続して照合する必要があることである。したがって、分割テーブル間で、複数のエントリが照合段階であると複数の下位テーブルを検索しなければならない。さらに、候補があっても照合段階が残っていると、それぞれの下位テーブルまで検索範囲を広げ最終的な優先順位が出るまで検索を止められない。このような検索を各エントリ毎に行っていると、バックトラックが頻繁に発生する可能性があり、検索効率を下げることになる。したがって、上述したように、複数のエントリ70が照合中になった場合でも、複数の下位テーブルを一つにまとめられるように、本例では上位のテーブルの照合段階に応じて下位テーブルの状態ビットを生成し、記憶状態メモリ25を初期セットするようにしている。
【0128】
CPUで比較テーブル(分割テーブル、部分テーブル)23を作成する事前処理では、ホスト一致、ポート一致のものはFromビットストリングφ2fおよびToビットストリングφ2tをすべて同じにする。そして、これらのビットストリングφ2fおよびφ2tは定められた位置に配置する(例えばφ2fは奇数ビット位置、φ2tは偶数ビットbit位置)。そして、ルールの優先順位にしたがって下から順に並べる。その次に、テーブルの優先順の高いほう(下)からエントリ70を取り出し、下から順に照合する。自分以外(自分に来る前に)に照合したら、そのエントリ70は照合済みのエントリに含まれるということなので、テーブル23から除き、エントリを圧縮あるいは量子化する。
【0129】
このようにして分割テーブル23を作成した後は、図13を参照しながら説明したように、各ID内の分割テーブルの分割操作を行う。ただし、実際に照合中に下位テーブルを記憶領域22にダウンロードするときは、上述したように、管理状態ビット29との論理和(or)を演算することにより、検索中にバックトラックが発生するのを最小限にすることができる。
【0130】
[SPD検索などの範囲検索の異なる例]
上述したように、上記の方法ではバックトラックが発生するのを完全に無くすことはできない。そこで、範囲検索において、バックトラックの発生を防止することができる検索方法についてさらに説明する。このため、以下の検索方法では、バックトラックを発生させないように、複数のルールが与えられると、ルールの重複を許すが、相互に重複しない複数の新たな範囲に分割する処理を設け、被検索ビットストリングが属する範囲が一義的に確定するようにしている。そして、その範囲を照合するために、最長近似検索を行う。
【0131】
図34に、本例のSPD検索機能110cの概略構成を示してある。SPD検索機能110cの全体構成は図23および図24に示した通りであり、図34は、SPD検索テーブル110tを正規化し、サーチエンジン20を備えた検索装置10で照合する過程を抜き出して示してある。したがって、図23および図24で示したように、被検索ビットストリームφ0を各検索キー(SIP3、DIP2、送信元ポート番号6、受信先ポート番号7およびプロトコル8)で並列に照合する構成、あるいは、シーケンシャルに照合する構成を採用することも可能である。
【0132】
このSPD検索機能110cでは、SPDテーブル110tで与えられたルールを正規化して新たな範囲を求め、検索用の比較テーブル(バイナリ−ツリーテーブル)23を生成する処理130と、被検索対象である第1のビットストリングφ1が属する新たな範囲を判断する処理135と、照合されたルールが複数あるときは優先度の高いルールを選択する処理113とを行う。そして、図5に示したデータ管理装置15では、SPD検索機能110が選択されたルールあるいはルールナンバφnをパケット管理部13に供給して、選択されたルールに基づきパケットを管理する処理115を行う。上述したように、パケット管理部13において、ルールの優先度を判断して、パケットを管理するようにしても良い。
【0133】
このSPD検索機能110cにおいては、後述するように、範囲を指定する第2のビットストリングは1つにされる。したがって、照合する過程135は極めてシンプルとなり、先に説明した検索装置10のハードウェアによる照合過程136と、ソフトウェアにより比較テーブルを入れ替えて照合過程136を続行する乗り移り過程137とをほぼそのまま使用することができる。ただし、範囲を求めるために、最長一致検索とはならず、最長近似検索となるために、判定部33のロジックが異なるものとなる。
【0134】
まず、ルールを正規化して比較テーブル23を生成する処理130を説明する。この処理130は、ルールを正規化する工程131と、領域テーブルを生成する工程132と、それを量子化してバイナリ−テーブル23を生成する工程133とを備えており、SPDテーブル110tが動的には変化しないので、ソフトウェアを用い、非定常処理として実行することができる。本例において、ルールを正規化するとは、照合処理のために範囲の数値表現をFROM/TO表現からFROM/NEXT表現にすることを意味する。すなわち、ルールと範囲の関係を、ルールの重複は許し、範囲の重複は許さないで分割した領域表現に変換する。たとえば、Piを領域中の値とし、範囲[Pa,Pa´]と範囲[Px,Px´]が与えられたときに、Pa<Px<Pa´の関係があるときは、[Pa,Px−1]、[Px,Pa´]、[Pa´+1,Px´]の3つの新たな範囲を定義することにより、新たな範囲のいずれかに属することが分かれば、それに対応するルール(優先するルール)を一義的に決定することができる。すなわち、範囲[Pa,Pa´]は、[Pa,Px−1]および[Px,Pa´]の2つの新たな範囲に分割される。従って、m個のルールが与えられたときは、領域数(新たな範囲の数)を最大で2m+1に分割することにより、重複することのない新たな範囲を設定することができる。最大となる条件は、すべてのルールの範囲のFROM/TOがユニークな場合であり、実際は、重複することが多いために新たな範囲の数はかなり少ない。
【0135】
また、この新たな範囲には、ルールが与えられていない範囲も、ルールが与えられていない範囲として意味を持つことになる。したがって、図35に示すように、FROM/TOによる範囲は[From,*]および[Next,*]という範囲に変換する必要がある。つまり、FROM/TOのペアで1範囲を表現していたものが、From値/Next値それぞれが独立領域を表現することになる。From値は元のルール範囲のFrom値と同値であり、ルール範囲の開始位置(左端点)を示す。Next値はルール範囲のTo(範囲終了位置)+1であり、ルール範囲の右側の範囲外領域の開始位置(左端点)である。これにより、From値/Next値は新たな範囲の端点として独立した存在となり、新たな範囲は常に左端点(下位のビットストリング)の1点で表現され、正規化された定義となる。すなわち、新たな範囲の右端点はNext領域左端点−1で暗黙に表現される。なお、ルール領域の右端点を中心に考えて、新たな範囲を上位のビットストリングの1点で表現することも可能である。その場合は、以下の説明を上位と下位を逆転させて考えれば良い。
【0136】
したがって、正規化する処理131は次のようになる。
From ← From(同値)
Next ← To+1(To≠MAX) or NA(To=MAX)
:NA=0〜MAX範囲外の無効値として定義
その結果、図36に示すように、FROM/TOのルールエントリ140は、FROM/NEXTのKEYエントリ141に変換される。この際、デフォルトkeyエントリとして[0,NA]を追加し、このエントリについてはルールNoを示すビットマップ値149はすべて0と設定する。すなわち、ルールが設定されていない新たな範囲をデフォルトとして定義しておく。その他の全ルールエントリに対して、ルールNoをビットマップ149に登録する。ルール1であればそのkeyエントリ内のビットマップ(bitmap[1])を1に設定する。その他のビットマップ149は0である。ビットマップ149の幅は最大ルール数を確保すれば良く、ルール数がnであれば、KEYエントリはデフォルトも含めn+1エントリとなる。この範囲を正規化する処理は、範囲により照合されるものがルールに限定されることはなく、範囲に対応して出力する値が特定される検索であれば全ての場合に応用することができる。
【0137】
次に、領域分割する処理132では、正規化で生成されたkey[From,Next]エントリ群141について、領域分割を行い、図37に示す領域テーブル142を作成する。この過程では、デフォルトの[0,NA]エントリから開始して、全KEYエントリについて次の操作を行う。まず、領域テーブル142を初期化するためにデフォルト[0,NA]エントリについては、Fromの0をそのまま登録し、NextのNAは登録しない。次に、デフォルト以外のエントリについて、From値を領域テーブル142で検索し、同じ値のエントリが存在した場合は、その領域を、ルールを追加する処理の開始位置としてマークする(ステップ143)。同じ値のエントリが存在しない場合は、Pn<From(<Pn+1)となるPnエントリを求め、その領域を分割し、From値の新規なエントリを生成する(ステップ144)。新規なエントリはソートして登録し、ルールを示すビットマップ149の値は分割前のエントリを引き継ぐ。そして、分割後の新たなエントリをルール追加のための開始位置としてマークする。
【0138】
Next値についても同様の処理を行う。ただし、同じ値のエントリまたはNext値による新たなエントリは、ルール追加のための終了位置としてマークする。また、Next値がNAならば検索はおこなわないが、ルール追加のための終了位置はラストエントリ(最大値エントリ)の次としてマークする。
このようにしてFrom値とNext値の処理が終了すると、図38に示すように、マークされた開始位置から終了位置手前までの領域エントリについてルールを追加してビットマップ149を更新する。すなわち、処理範囲内の領域エントリについてエントリ毎のビットマップ149と、登録するkeyエントリ141のビットマップ149の論理和で領域テーブル142の該当するエントリのビットマップ149を更新する。Next値は本来のFROM/TOルール範囲に対して右側の範囲外領域を意味するので、その手前までがルール範囲対象となる。このようにして、範囲の重複は許さず、ルールの重複は許した領域分割が行われ、領域テーブル142が生成される。
【0139】
領域テーブル142をバイナリツリー化する処理133は、領域テーブル143を量子化し、検索装置10で使用するバイナリツリーテーブル(分割された比較テーブル)23を作成する処理であり、図3などで示したテーブル分割処理50aに相当する。オリジナルの比較テーブルを量子化し、分割していくプロセスは図13などを参照して先に説明した通りであるが、本例の領域テーブル142はエントリ70が1つのビットストリングで形成されているので、ソーティングする処理、さらに、分割した後の比較テーブルで同じビットストリングを圧縮する処理は簡単である。本例では、図39に示した分割テーブル23の状態で、左側に昇順にエントリ70が並ぶようにソーティングされる。
【0140】
図39に示す分割テーブル(分割された比較テーブル)23は、テーブルの大きさなどを示すパラメータが格納された領域23xと、エントリ(本例ではFrom値またはNext値)70の有効無効などが記録された初期ビット23yと、エントリ70が記録された領域23zと、各エントリ毎の情報が記録されたタグ領域23wとを備えている。タグ領域23wには、各エントリ70が候補となっているときに次に選択される下位テーブルのアドレスが記録される。また、最下段の分割テーブル23では、上記にて合成されたルールを示すビットマップ149が記録される。
【0141】
最大近似検索を行う上で、エントリ70を数値順にソートして分割テーブル23を生成することは重要である。すなわち、本例の分割テーブル23は、範囲を示す下位の一方のビットストリングをエントリ70としており、さらに、図40に示すバイナリツリーにしたがって左から右に昇順にエントリ70が配置されている。このため、サーチエンジン20における照合過程において、同一の分割テーブル23で複数のエントリ70に対し被検索ビットストリングφ1が同時にHIT−R(右倒れ一致)、すなわち、上位方向に分離したときに、最も上位のエントリ70が正しいHIT−R領域を示す最大近似エントリとなる。したがって、検索装置10の判定部33では、同時にHIT−RしたエントリNoの最大のものを最大近似として選択することができる。図40に示すように、矢印145の位置でHIT−Rした場合は、A、B、Cの3エントリが同時にHIT−Rしたことになる。バイナリツリーテーブル23が数値順にソートされていると、A、B、Cの3候補のエントリNoを見れば、A<B<Cであることが判明するので、エントリCが最大近似であると確定する。
【0142】
同様に、上述したように、範囲を上位の一方のビットストリングで代表し、上位のビットストリングをエントリとし、ソーティングして最大近似検索用の比較テーブルを形成することも可能である。その場合は、サーチエンジン20による照合過程において、被検索ビットストリングφ1がエントリに対して下位方向に分離したときの最下位のビットストリングを最大近似であると判断する。
【0143】
分割テーブル23の照合過程で最大近似のエントリCが判明しても、最下位の分割テーブル23でない場合は、エントリCに繋がる下位テーブルでさらに最大近似となるエントリを照合する処理が残ることになる。これは、矢印146でHIT−Rした場合も同様である。すなわち、矢印146の位置でHIT−Rした場合は、同じテーブル23の中では、エントリCのみが候補である。従って、同じテーブル23の内での複数候補からの最大値候補を決定するのは問題ない。エントリCは最下位のテーブルではないので、下位テーブルに繋がるが、上位のテーブルでHIT−Rしているために、下位のテーブルではエントリd〜gの複数のエントリのうち、最大のエントリgが選ばれる。したがって、分割テーブル23のパラメータ23xとして、最大値エントリのNo(max−no)23vを設けておくことにより、下位のテーブル23で検索する際に、パラメータ23vを参照することで、エントリ70は照合することなしに最大のエントリgが最大近似のエントリとして確定する。その分割テーブル23が最下段でなければ同様に、エントリgのタグ領域23wを参照してエントリgに繋がる下位テーブル23に対して同様の操作を繰り返すことが可能であり、エントリ70を照合することなく、下位テーブル23のパラメータ23vを辿ることで、最下位テーブルまで正しく最大近似エントリを照合していくことができる。
【0144】
このように、比較テーブル23をソートしておくことは有用であるが、これは、SPD検索においては比較テーブル23が静的に生成され変化しないので、予め最大値エントリを確定することができるという特性を利用している。したがって、動的に比較テーブル23が変化するアプリケーション(以下に説明するTCPリアセンブルではそうであるが)においては、最大のエントリを検索する処理が必要となる。しかしながら、いずれのケースでも、被検索ビットストリングφ1が属するエントリ70はバックトラックなしで確定し、そのエントリ70に割り当てられたルールを適用することができる。また、ビットマップ149に複数のルールが登録されているときは、最小のルールを優先するとすると、ビットマップ149でオンになっているビットのうち、最下位のビットに登録されているルールを適用することで一義的にルールも決定することができる。
【0145】
図41に、図34で示した乗り移り処理137のロジックを示してある。SPD検索110cにおいて検索装置10を使用する際に、比較テーブルを更新しながらサーチエンジン(ハードウェア)20を用いて照合を行うためにソフトウェア処理部30でサポートする乗り移りロジックである。まず、ステップ151でサーチエンジン20の初期設定を行う。ここでは、分割された比較テーブル23をテーブル供給部32により第2の記憶領域22にセットし、状態記憶メモリ25もセットする。さらに、ビットストリング供給部31により比較テーブル23に対応する被検索ビットストリングφ1もセットする。そして、ステップ152でサーチエンジン20を用いて照合を行う。ステップ153でサーチエンジン20にセットしたテーブル23が最終段であるか否かを判断する。比較テーブル23が最終段であるか否かはテーブル23のパラメータ23xを参照することにより判明する。次に、状態記憶メモリ(状態レジスタ)25の内容により、all失格/候補あり/照合残存を判断し、それにより処理を行う。
【0146】
図42に、本例のサーチエンジン20における比較回路26のロジックを示してある。照合過程165は、状態記憶メモリ25では「11」で表され、被検索ビットストリングφ1のビット(IDbit)と、エントリ(Key)70のビット(Keybit)が一致していることを示す。候補166は、状態記憶メモリ25では「10」で表され、照合過程165から、被検索ビットストリングφ1のビットが「1」となりエントリ70のビットが「0」となったHIT−Rの状態を示す。失格167は、状態記憶メモリ25では「00」で表され、照合過程165から、被検索ビットストリングφ1のビットが「0」となりエントリ70のビットが「1」となった状態を示す。さらに、そのビット以前で候補になっていたが、他に新たな候補エントリが誕生した場合も失格となる。また、複数候補があるときに最上位以外の候補も失格となるが、その処理は比較回路26で行っても良く、あるいは乗り移りロジック、すなわち、処理部30においてソフトウェアで処理しても良い。
【0147】
これらの検索結果を用い、最終段の分割テーブル23でなければ、乗り移りロジックでは、まず、ステップ154でall失格であると、ステップ158で上位の比較テーブル23で選択されていた候補のエントリがキープ候補となり、下位の比較テーブル23に乗り移る。all失格の条件は、出力回路27で状態レジスタ25の全体値が0、あるいは状態レジスタ25の上位ビットがすべて0であることを論理和で演算することができる。ステップ155で、状態レジスタ25に候補ありを示す「10」のエントリが1つ以上ある場合は、ステップ156で複数のエントリから最上位のエントリを候補としてキープする。そして、ステップ157で、状態レジスタ25に「11」のエントリが残っている場合は、そのエントリ70に対応する下位の比較テーブル23でサーチエンジン20のメモリ領域22を更新し、ステップ152で照合を繰り返す。
【0148】
一方、ステップ157で照合状態のエントリが残っていないときは、ステップ158で、キープされた候補エントリ70の下位テーブル23の最大エントリ23vを辿ることにより、被検索ビットストリングφ1の最大近似のエントリを検索することができ、その最大近似のエントリのルールを適用することができる。
最終段のテーブル23であれば、ステップ159でall失格であると、ステップ163で、上位の比較テーブル23で選択されていた候補のエントリが最大近似のエントリとなる。また、ステップ160で候補ありの状態になれば、ステップ161で複数のエントリから最上位のエントリを候補としてキープし、ステップ162で照合状態のエントリがなければ、ステップ163でその候補のエントリが最大近似となる。また、ステップ162で照合状態のエントリがあれば、ステップ164でそのエントリが最大近似となる。
【0149】
このように、本発明は、図5に示したIPセキュリティーのためのSPD検索機能110を最長近似検索により行うことを可能としており、バックトラックなしで範囲検索を実行することにより、上記の最長一致検索による絞込みよりもさらに高速で該当するルールを検索することができる。フロー検索を行うQoS機能191およびパケットフィルタリングを行うファイウォール機能120でもIPアドレスなどを含むビットストリングの範囲を絞りこむ検索が必要となる。したがって、本例と同様の構成で検索装置10を用いて最長一致検索を行うことにより、処理を高速化することができる。
【0150】
QoS機能119において、パケットのトラフィックを階層も含めたクラスに分類して優先順位を設けて管理するCB−WFQ(Class Based Weighted Fair Queuing)をサポートする場合は、階層に合わせて分割された比較テーブルを用意し、照合過程の状況から被検索ビットストリングが属するクラスの階層を判断することも可能である。また、階層などのすべての属性まで含めて細分化されたクラスを設定し、それをルールに変わり、範囲に対応付けされた値(検索結果)とすることも可能である。この場合は、最長近似検索を最後まで行うことにより、被検索ビットストリングの属するクラスがすべての階層でわかるので、優先順位の高い階層のクラスのポリシーマップにより定義されたQoSで対象となるパケットあるいはトラフィックを管理することができる。
【0151】
階層化されたクラスを検索する処理はQoSに限定されるものではなく、コンピュータを利用した他のアプリケーションの多くに存在する。たとえば、オブジェクト指向プログラミングの承継を支えるメソッドサーチもその1つである。したがって、本発明で開示している最長一致あるいは最長近似による範囲検索を適用できる対象は広く、本発明は有用である。
【0152】
[TCPパケットのリアセンブルの適用例]
TCP(Transmission Control Protocol)はインターネットのトランスポート層プロトコルであり、アプリケーション層のデータをTCPセグメントに分割し、TCPヘッダをつけてネットワーク層に渡す。したがって、TCPセグメントを受信した側は、TCPセグメントを再構成してアプリケーション層のデータを生成する必要がある。このTCPリアセンブル処理におけるエントリのキーはTCPシーケンス番号であり、このシーケンス番号は、データストリームのバイト単位に連番で管理される。ただし、TCPセグメントは、ACKロストによる抜けや、セグメント再構成による再送がありえるので、受信するTCPセグメントのシーケンス番号は完全に連続にはならい。したがって、シーケンス番号を完全一致型検索で処理することができない。そこで、本例では、上述したエントリの最長近似型検索を適用することにより、再構成によるデータ領域のオーバーラップなどを検出しながらTCPセグメントを再構成する方法および装置を説明する。
【0153】
TCPリアセンブル処理においては、エントリのキーがシーケンス番号であるので、検索テーブルは動的更新される必要があり、上述したSPD検索のような静的に準最適な比較テーブルを生成できない。そこで、リアセンブル処理における比較テーブルはビット段数や1段あたりのビット幅を予め固定した構造で扱うことが望ましい。さらに、比較テーブルをソートする処理時間を確保することが難しいので、複数の候補となるエントリが照合された場合は、最大近似となるエントリをサーチエンジン20を再び用いて検索することが望ましい。
【0154】
また、SPD検索用の比較テーブルとの比較すると、SPD検索では直接の検索対象である範囲を正規化した上で、範囲のオーバーラップを解消のための領域分割を行っているが、TCPリアセンブル処理では不要である。なぜなら、リアセンブル処理では、検索対象となるエントリは既に受信されたTCPセグメントあるいは複数のTCPセグメントがある程度の範囲で再構築されたブロックであり、各々のエントリは先頭を示すシーケンス番号とエントリの長さを示すデータを備えている。したがって、上記のFrom値に対応するエントリの先頭を示すシーケンス番号と、Next値に対応する、次の先頭を示すシーケンス番号(セグメントまたはブロックの末尾+1)という範囲の構造を採用することが可能である。さらに、ルールの重複に相当する、セグメントあるいはデータブロックのオーバーラップは、そのデータブロックが1つのデータブロックに統合表現され、エントリが吸収される。したがって、SPD検索では、最終検索対象がオーバーラップのありうる“ルール”であったためにエントリとなる領域の再構成が必須であったのに対し、TCPリアセンブル処理では、リアセンブルそれ自体により検索対象が統合され、ストリームデータ中で既着の連続データ領域となるために、再構成が不要である。すなわち、最終目的がSPD検索の場合は適合ルール検索であったのに対し、TCPリアセンブルでは目的がリアセンブル、すなわち、連続領域の検出とその統合にあるということに起因する。
【0155】
図43に、TCPリアセンブルをサポートするデータ管理装置170の概略構成を示してある。このデータ管理装置170は、サーチエンジン20を用いて被検索対象である第1のビットストリングφ1(本例ではシーケンス番号)に最大近似のエントリを検索する処理171と、その検索結果に基づいてTPCセグメントをリアセンブルする処理174と、リアセンブルされたブロックにより検索装置10に供給する比較テーブルを更新する処理175とを実行可能である。検索する処理171は、最大近似の候補となる1または複数のエントリを検索する処理172と、それらの中から最大値のエントリ、すなわち、最大近似のエントリを検索する処理173とを備えている。エントリを検索する処理172では、到来済みのブロックの前後のシーケンス番号をエントリとした比較テーブル23を生成することにより検索装置10を使用した照合が可能となる。最大値のエントリを検索する処理173では、処理172で照合された複数のエントリを比較テーブルのエントリとすることにより検索装置10を使用することができる。
【0156】
図44に示したように、到着したTCPセグメント180が既存あるいは既着のブロック181(ブロックはセグメント単体でも複数のセグメントにより再構成されたものでも良い)に接合され、ブロック181が拡大する。したがって、TCPセグメント180の先頭のシーケンス番号(From値、以降ではfで示す)と末尾プラス1のシーケンス番号(Next値、以降ではnで示す)が被検索キー(被検索ビットストリング)φ1であり、ブロック181のFrom値fとNext値nが、比較テーブルを生成するためのシーケンステーブル172tのエントリ70となる。ブロック181が拡大すると、エントリ70が削除され、セグメント180が既存のブロック181と接合しない場合はエントリ70が増加する。
【0157】
パケットロストにともなうTCP再送・再構成再送により、既到着のブロック181と重複するセグメント180が再度到着することがあるため、エントリと被検索キーの完全一致照合ではリアセンブルは処理できず、既到着領域に対する重なりを検出できる最長近似照合で処理する必要があることは上述したとおりである。このため、エントリ70となるブロック181のFROM値f/NEXT値n、および被検索キーとなるセグメント180のFROM値f/NEXT値fは独立した1数値のエントリ70と、1数値の被検索キーとして最長近似検索される。つまり、独立数値としての最長近似検索により、到着セグメント180のFROM値n(被検索キー)に最も近い左側、すなわち下位側のブロック181のFROM値f/NEXT値nが決定し、到着セグメント180のNEXT値n(被検索キー)に最も近い左側(下位側)のブロック180のFROM値f/NEXT値nが決定する。これにより、到着セグメント180のFROM/NEXTと既存のブロック181のFROM/NEXTの位置関係が定まり、ブロック181に対し、到着したセグメント180の独立・接合・重複が判断できる。SPD検索で説明したように、FROM値fおよびNEXT値nを右側基準(上位側基準)で検索処理することも可能である。
【0158】
図45に、リアセンブル処理170の検索処理172で使用される比較テーブル23の構成を示してある。これらの比較テーブル23は、図39で説明したテーブルとほぼ同じ構成であるが、最下段のテーブル23のタグ領域23wにはルールを示すビットマップに代わり、到来済みのセグメント群176に含まれる複数の連続したセグメント180を1単位としたブロック構造181を指すポインタとして使われる。ブロック構造181は、セグメント(SEGCB)180のリスト構造で表現され、その中のセグメント180はリアセンブルにかけられたセグメント単位で生成される。セグメント180は、セグメントデータ実体であるTCPストリームデータ実体(EBリスト)179に対してペアで関連付けられており、検索後のブロック包含判断のための情報などのリアセンブルに必要なすべての情報を保持する。
【0159】
これらの比較テーブル23は、更新する機能175により、次のように管理される。まず、予め定められた形式でメモリブロックが確保され、管理情報を設定することによりテーブルが初期化される。エントリのデフォルト登録はなく、すべてが実行時に登録され、さらには削除される。
比較テーブル23を動的に登録削除する検索のうち、TCPリアセンブル処理では、TCB(Transmission Control Block)別にバイナリツリーテーブル23が生成され、相互に異なるTCBに属する複数のTCPパケットについては、TCB(A)に属するTCPパケットあるいはセグメント180の検索と、TCB(B)における比較テーブル23の登録・削除を排他を考えずに同時に行える。TCPリアセンブル以外の処理や、TCPリアセンブルで同じTCBについての複数のTCPパケット(たとえば、TCB(A)に対するnパケット)については、検索と、登録・削除は排他しなければならない。その際、バイナリツリーテーブル23において値を更新した場合、新旧値のビット変化により、最初に変化したビットの属するテーブル以降の下位テーブル23が移動する。このため、変化したエントリ以降は削除および登録処理になる。したがって、登録・削除との排他制御調停を考えると、はじめから削除後に登録とするほうが安全であり、ステップ175のテーブルの更新処理は削除および登録の順で行われることが望ましい。
【0160】
図46に、更新処理175により、比較テーブル23にエントリを動的に登録するプロセスを示してある。登録は上位の比較テーブル23から下位の比較テーブル23へと辿っていくことで行う。まず、ステップ190で、比較テーブル23の既存のエントリと完全一致検索を行う。完全一致するエントリがあれば、ステップ191で最下位の比較テーブル23であるか確認し、最下位の比較テーブルであれば、ステップ192aで登録対象のビットデータ(KEY)、本例であればブロック181のFROM値fまたはNEXT値nは既に登録済みであることを通知して登録処理を終了する。一方、ステップ191で最下位の比較テーブルでなければ、ステップ192bでタグ情報23wを辿って、ステップ190で次の比較テーブル23のエントリとの一致検索を行う。
【0161】
ステップ190で完全一致するエントリがない場合は、ステップ193でその比較テーブル23に空き領域があるか否かを判断する。空き領域がない場合はステップ194でエラー通知を出力する。空き領域があれば、ステップ195でその空き領域に登録対象のKEYデータを書き込み、ステップ196で最下位の比較テーブル23であるか否かを確認する。最下位の比較テーブル23であれば、ステップ197で登録完了の通知を出力する。一方、最下位の比較テーブル23でなければ、新たに、そのエントリに繋がる下位の比較テーブル23を生成する必要があるので、ステップ198でテーブル領域を確保し、初期化して上位の比較テーブルとタグ領域23wでリンクさせる。そして、ステップ199で、そのテーブルのエントリーをゼロにイニシャライズする。予め固定的に比較テーブル23を割り当てておく検索については、テーブルの確保とタグのリンクは不要である。
【0162】
最長近似を求めるために必要な、同時HIT−R(右倒れ一致)の最大近似エントリ確定については、比較テーブル23にエントリを登録するときではなく、検索時に動的に確定する。つまり、SPD検索のようなエントリのKEYデータの値順にソートし、最大値エントリから順番に登録するという処理は行わない。SPD検索では静的にエントリが決定されるのに対し、TCPリアセンブルでは動的にエントリが決定されるので、検索実行時の確定する方式としている。登録時に確定させることも可能であるが、TCPリアセンブル処理ではエントリの更新(登録)が頻繁に発生するため、登録処理時間とソフトウェア構造の複雑さが増し、登録のために比較テーブルの使用ができないテーブル排他期間が伸びる。したがって、スループットを低下させる要因となる。
【0163】
図47に更新処理175により比較テーブル23からエントリを削除するプロセスを示してある。削除は登録同様に完全一致型検索と同様の方式で、バイナリツリーで削除する。また、自己の比較テーブルにエントリがなくなった場合は、その比較テーブルを削除すると共にその情報を上位の比較テーブルに反映させる。したがって、図47に示すように、上位テーブルから下位テーブルにエントリを削除する処理200を行い、さらに上位テーブルにその結果をフィードバックする。最終的には、ステップ200aにおいて最上位での結果を出力する。登録処理で述べたように同時HIT−R(右倒れ一致)のための最大近似エントリ確定は実行時確定なので、登録でこれに対応する処理がないのと同様に、削除にともなう処理もない。
【0164】
図48に、各段の比較テーブル23からエントリを削除する処理200の内容を示してある。ステップ201で上位から削除処理の継続が通知されると、ステップ202で削除対象のKEYデータを比較テーブル23の全エントリと完全一致検索する。一致したKEYデータがあると、ステップ203で最下位の比較テーブル23であるか確認し、最下位の比較テーブルであれば、ステップ204でそのエントリを消去する。そして、ステップ205ですべてのエントリが消去されたか否かを確認し、エントリがなくなった場合はステップ206でテーブルを開放する。ただし、最上位のテーブルの場合はエントリがなくなっても開放できない。ステップ207でステータスを削除OKにしてステップ208で上位の比較テーブルの処理に通知する。ステップ205でエントリが残っている場合は、ステップ209でステータスを削除不可にして、ステップ208で上位の比較テーブルの処理に通知する。
【0165】
ステップ203で最下位の比較テーブルでない場合は、ステップ210で処理をホールドして、ステップ211で下位の比較テーブルの消去処理を開始させる。そして、ステップ212で下位からのステータスバックがあると、ステップ213でステータス待ちを解除する。ステップ214でステータスをチェックし、エントリを削除可能であれば、ステップ204から以降の処理を行う。なお、この際、上述したように、最上位の比較テーブルはエントリがなくなってもエリアの開放は行わない。
【0166】
ステップ214で、下位からのステータスが削除不可であれば、ステップ215でそのままのステータスを上位の比較テーブルの削除処理に返す。また、ステップ202で一致するエントリが見つからなかったときもステップ216でエントリなしのステータスを上位の比較テーブルの削除処理に返す。
この削除処理は、エントリとそれに対応するバリュー(値)、本例ではブロック181のFROM値fあるいはNEXT値nの関係性において、ブロック181の属するエントリを削除するのではなく、あるKEYデータのみからエントリを削除する場合である。これに対し、エントリとバリューの関係性において、バリュー、すなわち、ブロック181のデータから逆引きでエントリを削除する検索の場合は、下位から上位への削除も可能である。このケースでは、バリューに属するエントリそのものを削除することになる。
【0167】
図49にその処理を示してある。削除で与えられるパラメータがバリューに繋がる最下位の比較テーブル23を指すので、その比較テーブル23から開始し、削除対象となるKEYデータを下位ビットから完全一致照合する。すなわち、ステップ221で削除対象となるKEYデータと、比較テーブル23のエントリとの完全一致検索を行い、一致するエントリがあれば、ステップ222でそのエントリを削除する。ステップ223でその比較テーブル23にエントリが残っていなければ、ステップ224で最上段の比較テーブルでないことを確認し、ステップ225で比較テーブルを開放する。さらに、ステップ228で、その開放した比較テーブル23とのリンクをタグ領域23xで辿り、上位の比較テーブルのエントリを削除するためにステップ221に戻って上位の比較テーブルの削除処理を行う。
【0168】
ステップ223で比較テーブル23に他のエントリが残っていれば、その段階で削除処理は完了し、ステップ226で完了を通知する。また、ステップ221で削除対象となるKYEデータがエントリに見つからない場合は、ステップ227でエラー通知を出力する。なお、予め固定的に比較テーブルを割り当てておく検索については、テーブルの開放は行わず、エントリの削除のみとなる。
【0169】
このようにして生成され、また更新される比較テーブル23には、エントリとしてはブロック181を意識しないFROM値fと、NEXT値nとが独立に登録され、図43に示した検索処理172においては、セグメントのFROM値fおよびNEXT値nが独立して最長近似検索される。この検索処理172において検索装置10を使用する状態遷移条件、すなわち、サーチエンジン20の比較回路26のロジックは、図42に示したものと同じになる。そして、図41に示した乗り移りロジックにより分割テーブルサーチを行うことができる。
【0170】
検索処理172において、複数のエントリが候補に上がった場合は、次の処理173で最大値のエントリを求める必要がある。この検索では、他の照合処理において検索装置10を使用する場合と異なり、被検索KEY(被検索ビットストリング)は存在せず、検索処理172で検索された複数のエントリが比較テーブル23として与えられ、それに含まれる複数のエントリ70を対象にしたビット照合による状態遷移で、最大値を持つエントリを検索する。本例においては、同一の比較テーブル23のエントリで、HIT−Rした比較対象となるエントリ70を上位ビットから比較し、大きいビット値をもつエントリが勝ち残る、ノックダウントーナメント方式である。したがって、図2に示したサーチエンジン20と同様のハードウェアを用いる場合は、被検索ビットストリングφ1を記憶する第1の記憶領域21を利用しないで検索を行うことが可能である。あるいは、最大値エントリ検索用のハードウェアを用意しても良い。
【0171】
たとえば、図50に示すような、さらに簡易なサーチエンジン230を使用することができる。このサーチエンジン230では、状態レジスタとなる状態記憶メモリ25は、1エントリが2ビットで最大32エントリの構成である。検索対象エントリ70が登録された比較テーブル23は、上記と同様にバイナリ(ビットストリング)が縦型にビット配置された縦型テーブルである。このテーブル23を横に1ワード(1ビット列)単位で読み込み、それぞれのビットをエントリとして比較回路26で状態遷移演算を行い、状態レジスタ25を更新する。
【0172】
図51に、状態遷移のロジックを示してある。照合過程235は、状態記憶メモリ25では「11」で表され、全エントリが同値(全エントリが0あるいは1)、または全エントリが同値ではなく、かつ自エントリを含めビットが1のエントリが複数存在する場合に継続する。候補236は、状態記憶メモリ25では「10」で表され、照合過程235である全エントリが同値ではなく、かつ、唯一自エントリのみのビットが1のときに遷移する。一方、失格237は、状態記憶メモリ25では「00」で表され、照合過程235である全エントリが同値ではなく、かつ、自エントリのビットが0のときに遷移する。
【0173】
サーチエンジン230に、状態記憶メモリ25を一括照合して途中で照合を打ち切ることができる出力回路27を設けることが可能である。この出力回路27においては、候補「10」に遷移したエントリの有無を調べ、候補のエントリがあれば、その時点でサーチを終了する。そして、候補「10」に遷移したエントリが最大値のエントリとなる。比較テーブル23のサーチが終了したときに、照合過程のエントリが残っていれば、下位の比較テーブル23に乗り移って、さらに最大値のエントリの検索を行う。この最大値エントリ検索工程173を設けることにより、比較テーブル23のエントリを予めソートしておかなくても、複数候補からの最大値候補を決定できる。最下位の比較テーブルでないときは、下位の比較テーブルに検索を続行することになるが、下位の比較テーブルも動的に更新されるので上記と同様に最大値エントリ検索を行って最大値エントリを決定する。
【0174】
検索処理171においてブロック181を意識せずに、バイナリツリー構造の部分のみを見て最長近似検索を行った後、リアセンブル処理174では、その結果を元に、ソフトウェアでブロック181のFROM値fとNEXT値nのペアを意識し、既存のブロック181と、新規セグメント180との内外接合、前後および包含関係を判断する。したがって、従来のようにTCPパケットあるいはセグメントをリアセンブルするためにその都度ソーティングするような時間のかかる処理は不要となり、パックトラックなしのバイナリツリーサーチにより高速に既存のブロックとの関係を絞り込むことができ、さらに、先頭および末尾を並列にサーチすることができる。
【0175】
一方、バイナリツリーすなわち比較テーブルを更新するという処理175が必要となるが、TCPでは送信側がACKを受信しないと次のパケットを送出しないため、次のバーストTCPセグメントを受信するまでに、受信側ではACKを出してから比較テーブルを更新する時間は確保できる。さらに、その間に、比較テーブルのエントリの削除を行い、次のウィンドウサイズ分の比較テーブルをいくつか作ってバーストTCPセグメントを待ち受けるようにすれば、バースト受信中に行う比較テーブルの更新は少なくなる。したがって、高速で既存のブロックとの関係を絞り込むことができる本例の方法であれば、比較テーブルを更新する処理時間を考慮しても、圧倒的に高速でTCPパケットをリアセンブルすることができる。
【0176】
たとえば、図52に示した例であると、ブロック181aはFROM値AとNEXT値Bを持ち、3つセグメント180が登録されており、それらが接合して構成されていることが分かる。それに対し、ブロック181bは、FROM値CとNEXT値Dを持ち、セグメント180が検索で独立であるとして単独に登録された状態である。
【0177】
新たなセグメント180nのFROM値XfとNEXT値Xnとを検索したところ、A<Xf<B、C<Xn<Dであることが分かると、ブロック181aと181bの間の未着領域のセグメントであることが分かり、その間がセグメント180nで埋まり、結果としてブロック181aと181bとは1つのブロックに統合される。それとともに、比較テーブル23の更新が行われ、新両端であるAおよびDはタグ領域の変更は行われるがエントリ自体は残され、BおよびCのエントリは削除される。
【0178】
セグメント180とブロック181との照合結果は図53に示すように16通りに分けられる。この図において、A(x)[x=fあるいはn]は照合結果のエントリの属性を示し、A(n)=Fとは、ブロック181のNEXT値がセグメント180のFROM値と一致あるいは最大近似(右倒一致なので、セグメントのFROM値が右側にある)を示す。また、H(x)[x=fあるいはn]はC(線上一致=同値)あるいはR(右倒一致=最大近似)を示す。
【0179】
図54から図57に各ケースについて示してある。図54(a)は、f内接n外接のケースであり、一般的には、ブロックBfとブロックBnは異なるので、登録対象のセグメント180でブロックBf〜Bnの隙間を埋める形で1つのブロック181を構成できる。実際には、ブロック間の隙間に該当する部分が未着のセグメントなので、その未着セグメント部分のみ登録対象のセグメント180のデータが採用され、既着部分はドロップされる。そして、更新処理175では、比較テーブル23のブロックBfのNEXT側〜ブロックBnのFROM側までのエントリが削除され、ブロックBfのFROM側およびブロックBnのNEXT側のエントリは変わらない。なお、ブロックBf〜Bn間のブロックBiは0個以上の数のブロックを示している。以下においても同様である。
【0180】
これに対し、例外としてブロックBfとブロックBnが等しい場合がありうる。このケースでは、下段に示すように、登録対象セグメント180は空セグメント(0バイト)である。よって、セグメント180はドロップされ、エントリは不変である。
図54(b)は、f内接n内接のケースである。ブロックBfとブロックBnが異なれば、登録対象のセグメント180により、ブロックBf〜Bnの隙間を埋める形で1つのブロック181を再構築できる。更新処理175では、ブロック181のFROMとNEXTのエントリを除いて、その間のエントリが削除される。ブロックBfとブロックBnが同じ場合は、登録対象のセグメント180はブロックBfと完全に同じなので、既着優先により登録対象セグメント180がドロップされる。
【0181】
図54(c)は、f外接n外接のケースである。ブロックBfとブロックBnが一致することはありえないので、登録対象のセグメント180はブロックBf〜Bn間の隙間を埋める形で1つのブロック181を統合あるいは再構成できる。エントリの更新処理は上記と同様である。
図54(d)は、f外接n内接のケースである。ブロックBfとブロックBnが異なれば、登録対象のセグメント180により、ブロックBf〜Bnの隙間を埋める形で1つのブロック181を再構築できる。エントリの更新処理は上記と同様である。ブロックBfとブロックBnが等しい場合は、登録対象セグメント180は空セグメントなので、セグメント180はドロップされる。
【0182】
図55(a)は、f内接n内部のケースである。ブロックBfとブロックBnが異なれば、登録対象のセグメント180により、ブロックBf〜Bnの隙間を埋める形で1つのブロック181を再構築できる。エントリの更新処理は上記と同様である。ブロックBfとブロックBnが等しい場合は、登録対象セグメント180はブロックBfに含まれるので、既着優先によりドロップされる。
【0183】
図55(b)は、f内接n外部のケースである。ブロックBfとブロックBnが異なれば、登録対象のセグメント180により、ブロックBf〜Bnの隙間を埋める形で、セグメント180のNEXT側nまでを1つのブロック181に統合できる。ブロックBfとブロックBnが同じ場合でも、ブロックBfからセグメント180のNEXT側nまでを1つのブロック181として構成できる。更新処理では、ブロックBfのFROM側エントリは不変であり、セグメント180のNEXT側nが追加され、他は削除される。
【0184】
図55(c)は、f外接n内部のケースである。ブロックBfとブロックBnが一致することはありえないので、登録対象のセグメント180はブロックBf〜Bn間の隙間を埋める形で1つのブロック181を統合あるいは再構成できる。更新処理は、f内接n内部のケースと同様である。
図55(d)は、f外接n外部のケースである。ブロックBfとブロックBnが異なれば、登録対象のセグメント180により、ブロックBf〜Bnの隙間を埋める形で、セグメント180のNEXT側nまでを1つのブロック181に統合できる。ブロックBfとブロックBnが同じ場合でも、ブロックBfからセグメント180のNEXT側nまでを1つのブロック181として構成できる。更新処理は、f内接n外部と同じである。
【0185】
図56(a)は、f内部n外接のケースである。ブロックBfとブロックBnが一致することはありえないので、登録対象のセグメント180はブロックBf〜Bn間の隙間を埋める形で1つのブロック181を統合あるいは再構成できる。エントリの処理は、f外接n内接のケースと同様である。
図56(b)は、f内部n内接のケースである。ブロックBfからブロックBnまでのブロックをセグメント180により統合できる。あるいは、セグメント180がブロックBfより小さいので、既着優先によりドロップされる。更新処理は上記と同様である。
【0186】
図56(c)は、f外部n外接のケースである。登録対象のセグメント180はブロックBfの次のブロックBi〜Bn間の隙間を埋める形で、ブロックBi〜Bnを1つのブロックに統合する。セグメント180のFROM側fがエントリとして登録され、先頭ブロックBiのFROM側からブロックBnのFROM側までのエントリが削除される。ブロックBiがない場合は、ブロックBnのFROM側にセグメント180が追加される。図56(d)は、f外部n内接のケースである。このケースも結果として上記と同様に処理される。
【0187】
図57(a)は、f内部n内部のケースであり、f内接n内部と実質的に同じ処理になる。図57(b)は、f内部n外部のケースであり、f内接n外部と実質的に同じ処理になる。図57(c)は、f外部n内部のケースであり、実質的にf外部n外接と同じ処理になる。
図57(d)は、f外部n外部のケースである。ブロックBfとブロックBnが同じでなければ、登録対象のセグメント180はブロックBfの次のブロックBi〜Bn間の隙間を埋める形で、ブロックBi〜Bnを1つのブロックに統合し、そのブロック181のFROM側およびNEXT側はセグメント180のFROM側およびNEXT側となる。したがって、セグメント180のFROM側およびNEXT側がエントリとして登録となり、先頭ブロックBiからブロックBnまでのエントリが削除される。一方、ブロックBfおよびブロックBnが同じ場合は、登録対象のセグメント180は、ブロックBfと次のブロックBiとの間に独立したブロックとして新規作成される。したがって、比較テーブル23の更新処理175では、セグメント180のFROM側およびNEXT側がエントリとして登録となり、削除されるエントリはない。
【0188】
以上に説明したように、サーチエンジン20を用いたビットストリング検索装置は、ルーティング検索に限らず、フィルタリング、SPD検索さらにはリアセンブルリング処理に用いることが可能である。また、検索対象となるルートやルールの数が増えるほど、比較テーブルを分割テーブル化することにより量子化することが可能であり、照合対象となるデータを削減できる効果が大きい。したがって、ハードウェアにより高速で検索処理ができるのに加えて、照合対象となるエントリの数も削減できるので、ビットストリング検索を非常に高速で処理することができる。これらの処理は、今後のルータあるいはファイアウォールなどのネットワーク上のデータパケットを管理する装置では大きなウェイトを占めるものであり、ルールなどの検索対象となる要素は増大する一方である。したがって、本発明を適用することにより、コンパクトで低コストなハードウェアによって、高速処理が可能となるので、インターネットあるいはその他のネットワークによってデータを交換する際に非常に有用な技術となる。
【0189】
本発明は、ルーティングなどのネットワーク関係のアプリケーションだけに限定されないことはもちろんである。たとえば、比較するビット列の水平方向(横方向、第2の方向)に4ビット、8ビットさらにはそれ以上に広げて、文字(キャラクタ)単位で高速検索するようなアプリケーションにも適用することが可能である。
【0190】
図58(a)に、図6および図9などを参照しながら説明した1ビットモードの最長一致検索を、第2の方向(水平方向)に4ビットに拡張したときの状態遷移の概要を示してある。この最長一致4ビットモードでは、被検索ビットストリングφ1は、4ビットずつ水平方向に展開されて第1の記憶領域21にセットされる。比較テーブル23には、検索対象となる第2のビットストリングφ2の1ビットとプリフィックスφ3の1ビットとがペアとなって4組ずつ水平方向に展開された状態で各々のエントリ70がセットされる。したがって、拡張された状態記憶メモリ17の構成も比較テーブル23に対応して図58(b)に示すように、1エントリ当り水平方向に4組(状態ビットA、B、CおよびD)の2ビットの情報が記録され、トータルで1エントリ当り8ビットが割り当てられる。そして、水平方向にスライスされた比較テーブル23のビット列24を検索あるいは比較している状態(サイクル中)では、1エントリ当り8ビットの全てに比較結果が記録され、ビット列24の比較が終了すると(サイクル前後)、そのサイクルの比較結果が左端の2ビットに集約される。
【0191】
図58(a)の状態遷移図のうち、L1〜L16は状態遷移のロジックであり、それぞれの状態ビットA〜Dの定義は図9に示した通りである。これらのロジックL1〜L16は、図9に示した1ビットモードの状態遷移ロジックを適用あるいは結合したものである。また、ロジックL12からL15は、同じサイクル内で次のビットの比較結果が得られるために次候補が現れた場合の判断も含められている。同一サイクル内で1エントリ当り複数のビットを比較すると、同一サイクル内に候補のエントリが複数現れたときに、それらを比較できない。したがって、図58(c)に示すように、サイクル終了直前に候補を示す「10」を備えたエントリが複数ある場合は、図58(d)に示すように、それらのエントリの状態ビットを反転させ、そのうちの最大(本例では右側)のエントリの状態ビットAを「10」にセットすることが望ましい。エントリはソートされているので、候補がある場合は最大のエントリのみが次のサイクルでも候補となるからである。なお、図58(c)に示した状態は、第1エントリは照合過程であり、第2エントリは2番目のビットBで候補になり、その右は前のサイクルの状態が残っている。第3エントリは3番目のビットCで候補になり、その右は前のサイクルの状態が残っている。第4エントリは前のサイクル以前で失格となっている。
【0192】
このようにビットストリングφ1およびφ2を水平方向に展開すると、比較対象となるビット列24が増加し、状態記憶メモリ25も大きくなるが、記憶領域との入出力回数が削減できる。4ビットモードの比較結果を4クロックで出力するようにしても良い。また、比較回路26に搭載するロジックを増加することにより、サーチエンジン20の規模は大きくなるが、複数ビットの比較結果を1クロックあるいは少ないクロックで得ることが可能となるのでさらに高速にビットストリングを検索することが可能となる。本図には4ビットモードの状態状態遷移を示してあるが、同様に何ビットモードにも拡張することが可能である。したがって、文字や画像などのビット量の膨大なビットストリングの検索には適している。
【0193】
図59(a)に、図39および図42などを参照しながら説明した1ビットモードの最長近似検索を、第2の方向(水平方向)に4ビットに拡張したときの状態遷移の概要を示してある。この最長近似4ビットモードでは、被検索ビットストリングφ1は、4ビットずつ水平方向に展開されて第1の記憶領域21にセットされる。同様に、比較テーブル23には、検索対象となる第2のビットストリングφ2が4ビットずつ水平方向に展開された状態で各々のエントリ70がセットされる。したがって、状態記憶メモリ25の構成も比較テーブル23に対応して図59(b)に示すように、1エントリ当り水平方向に4ビットの状態ビットEが割り当てられる。そして、水平方向にスライスされた比較テーブル23のビット列24を検索あるいは比較している状態(サイクル中)では、1エントリ当り4ビットの全てに比較結果が記録され、ビット列24の比較が終了すると(サイクル前後)、そのサイクルの比較結果が左端の2ビットに集約される。
【0194】
図59(a)の状態遷移図のうち、M1〜M9は状態遷移のロジックである。状態ビットEの定義は基本的に図42に示した通りであり、サイクル中に候補になると対応するビットが「0」になる。また、これらのロジックM1〜M9は、図42に示した1ビットモードの状態遷移ロジックを適用あるいは結合したものである。ロジックM6からM9は、同じサイクル内で次のビットの比較結果が得られるために、次候補が現れた場合の判断も含められている。
【0195】
多ビットの最長近似検索でも、多ビットの最長一致検索と同様に、同一サイクル内で1エントリ当り複数のビットを比較すると、同一サイクル内に候補のエントリが複数現れたときに、それらを比較できない。したがって、図59(c)に示すように、サイクル終了直前に候補を示す1ビットだけ「0」を備えたエントリが複数ある場合は、図59(d)に示すように、それらのエントリの状態ビットを反転させ、そのうちの最大(本例では右側)のエントリの状態ビットEの左端のビット「10」にセットし、他のエントリは状態ビットEを「00」にする。この最長近似検索の場合もエントリはソートされているので、候補がある場合は最大のエントリのみが次のサイクルでも候補となるからである。ソートされていない場合は、最大値エントリの検索に移行することになる可能性がある。
【0196】
図59(c)に示した状態は、第1エントリは照合過程、第2エントリは第1ビット不一致で候補、第3エントリは第2ビット不一致で候補、第4エントリは第3ビット不一致で候補、第5エントリは第4ビット不一致で候補、第6エントリは前のサイクル以前で失格した状態である。
この最長近似検索も本図には4ビットモードの状態状態遷移を示してあるが、同様に何ビットモードにも拡張することが可能である。したがって、上記の最長一致検索と同様に、ビット量の膨大なビットストリングの検索に適しており、さらに高速なサーチエンジンおよびサーチエンジンを用いたアプリケーションの処理装置を提供することができる。
【0197】
以上に説明したように、本発明においては、ハッシュ関数などを用いず、簡易な構成でハードウェア化が容易であり、さらに、高速サーチが可能なテーブル検索の構成と、そのテーブル検索を種々のアプリケーションにおいて効率良く使用するためのシステムおよび方法を開示している。上述した各アプリケーション、たとえば、ルーティング検索機能14、SPD検索機能110、QoS機能119およびファイアウォール機能120などは、サーチエンジン20も含めて上述した各処理あるいは各機能を実行可能な命令を備えたプログラム製品として提供することが可能である。したがって、CPUなどの汎用的な構成のハードウェアを用いて本発明を実施することが可能である。
【0198】
また、上述した各機能あるいは各処理の一部を専用回路化することにより処理速度をさらに高めることも可能であり、特に、サーチエンジン20をハードウェア化することが有効であることは上述した通りである。したがって、専用回路と、専用回路を使用して上述した各処理などを実行可能なプログラムをソフトウェア(ファームウェアを含む)とを搭載したLSIや回路基板、あるいはそれらを備えたシステムとして本発明を実施することも可能である。
【0199】
さらに、上記ではコンピュータネットワーク上の処理に本発明を適用した例を示しているが、本発明の範囲はネットワークに関連した処理あるいは機能に限定されるものではなく、大量のビットデータあるいはバイナリデータを取り扱う処理のすべてにおいて有用である。特に、ネットワーク処理と同様に、画像処理、データベース検索、オブジェクト指向システムなどの実行時において大量のデータを高速に取り扱う必要のあるシステムあるいはアプリケーションでは、ビットストリングを照合する処理が何らかの形で要求されるので、その処理に本発明を適用することにより処理速度を飛躍的に向上できる。
【0200】
【産業上の利用の可能性】
本発明においては高速サーチが可能なテーブル検索の構成を開示しており、膨大なビット長のビットストリングであっても高速に照合することができる。したがって、IPv6などの適用により膨大なビットストリングあるいはビットストリームを高速に処理する必要が生ずるルーティング検索機能やポリシー検索機能を備えたルータなどのネットワーク関連のデータ管理装置に本発明を提供することができる。さらに、パケットで送受信されるデータを復元するリアセンブル処理にも本発明は適している。断片化されたデータ群からオリジナルのパケットを再構成する処理がネットワーク層やトランスポート層における中心的処理なので、本発明を適用することにより、処理速度の速いネットワーク通信用のソフトウェアやLSI、さらにはそれらを備えた管理機器を提供することが可能となる。
【0201】
さらに、本発明を適用することによりネットワークを介して送受信あるいは転送されるデータの処理速度を低コストなシステムで大幅に向上できる。このため、インターネットを介して送受信されるデータ量が増大している状況を考慮すると、今後のネットワーク環境に適応するために有用な発明である。
【図面の簡単な説明】
【図1】 IPヘッダの構成を示す図である。
【図2】 本発明に係る検索装置の概要を示す図である。
【図3】 図2に示す検索装置の処理概要を示すフローチャートである。
【図4】 サーチエンジンの処理概要を示す図である。
【図5】 パケットのルーティングを管理するデータ管理装置の概要を示す図である。
【図6】 ルーティング用の比較テーブルの構成を示す図である。
【図7】 ルーティング用の比較回路の概略を示す図である。
【図8】 ルーティング用の出力回路の概要を示す図である。
【図9】 ルーティング用の照合過程の概要を示す図である。
【図10】 ツリー型の検索を示す図である。
【図11】 比較テーブルを統合する様子を示す図である。
【図12】 ディフォルトルートを設定する様子を示す図である。
【図13】 ルーティング用の比較テーブルを分割する様子を示す図である。
【図14】 フラグメントリアセンブルの処理を実行可能な管理装置の概要を示す図である。
【図15】 識別処理用のツリー型の検索処理を示す図である。
【図16】 識別処理用の比較回路の概要を示す図である。
【図17】 識別処理用の出力回路の概要を示す図である。
【図18】 識別処理用の比較テーブルの概要を示す図である。
【図19】 マスクテーブルを示す図である。
【図20】 ソート処理用の比較テーブルの概要を示す図である。
【図21】 ソート処理用の出力回路の概要を示す図である。
【図22】 フラグメントデータがリアセンブルされる状態を示す図である。
【図23】 SPD検索機能の構成例を示す図である。
【図24】 上記と異なるSPD検索機能の構成例を示す図である。
【図25】 範囲検索の概念を説明する図である。
【図26】 照合過程の遷移を示す図である。
【図27】 分割テーブルによりツリー型で照合する様子を示す図である。
【図28】 分割テーブルのエントリを示す図である。
【図29】 SPD検索用の比較回路の概要を示す図である。
【図30】 SPD検索用の出力回路の概要を示す図である。
【図31】 管理情報状態ビットと、状態記憶メモリの検索過程状態ビットとの関係を示す表である。
【図32】 照合結果の出力を説明する図である。
【図33】 SPD検索用のテーブル分割の一例を示す図である。
【図34】 SPD検索機能のさらに異なる構成例を示す図である。
【図35】 ルールを正規化する概念を示す図である。
【図36】 ルールを正規化してキーテーブルを生成する処理を示す図である。
【図37】 領域分割をして領域テーブルを生成する処理を示す図である。
【図38】 領域分割の概念を示す図である。
【図39】 分割テーブルの概要を示す図である。
【図40】 最長近似検索の概要を示す図である。
【図41】 近似検索の乗り移りロジックを示す図である。
【図42】 近似検索の状態遷移を示す図である。
【図43】 TCPリアセンブル機能を備えた管理装置の概略を示す図である。
【図44】 リアセンブルする様子を示す図である。
【図45】 分割テーブルの概要を示す図である。
【図46】 エントリを登録する処理を示すフローチャートである。
【図47】 エントリを削除する処理を示すフローチャートである。
【図48】 エントリを削除する詳細な処理を示すフローチャートである。
【図49】 エントリを削除する異なる例を示すフローチャートである。
【図50】 サーチエンジンの異なる例を示す図である。
【図51】 最大値エントリを検索する状態遷移を示す図である。
【図52】 最長近似検索でリアセンブルする様子を示す図である。
【図53】 検索された状態を示す図である。
【図54】 検索された状態を模式的に示す図である。
【図55】 検索された状態の他の例を示す図である。
【図56】 検索された状態の他の例を示す図である。
【図57】 検索された状態のさらに異なる例を示す図である。
【図58】 最長一致検索の4ビットモードの状態遷移を示す図である。
【図59】 最長近似検索の4ビットモードの状態遷移を示す図である。
Claims (95)
- 第1のビットストリングを第1の方向に記憶可能な第1の記憶領域と、
この第1のビットストリングと比較する複数の第2のビットストリングが第2の方向に並列に配置された比較テーブルを記憶可能な第2の記憶領域と、
この第2の記憶領域の前記第2の方向のビット列に対応する記憶領域を備えた状態記憶領域と、
前記第1の記憶領域の前記第1の方向に並んだ各ビットを、そのビットに対応する前記第2の記憶領域の前記第2の方向のビット列と、前記第1の方向に順番に比較し、その比較結果を前記状態記憶領域に順次反映する比較手段とを有する検索装置。 - 前記状態記憶領域の論理和により、前記比較手段の動作を終了する出力手段をさらに有する、請求項1の検索装置。
- 前記出力手段は、終了直前の前記比較結果を出力する、請求項2の検索装置。
- 前記第1の記憶領域は、前記第2の方向に複数のビットを記憶する領域を備えており、
前記比較手段では、前記第1の記憶領域の前記第2の方向および前記第1の方向に並んだ各ビットが、そのビットに対応する前記第2の記憶領域の前記第2の方向のビット列と前記第2の方向および前記第1の方向に順番に比較され、その結果を前記比較結果として前記状態記憶領域に順次反映する、請求項1の検索装置。 - 異なる比較テーブルを前記第2の記憶領域に供給するテーブル供給手段と、 被検索ビットストリングから、前記第2の記憶領域に供給された第1の比較テーブルに対応する第1の部分を切り出して前記第1の記憶領域に供給するビットストリング供給手段とを有し、
前記テーブル供給手段は、前記第1の比較テーブルに含まれる前記第2のビットストリングが特定されると、その第2のビットストリングに対応する第2の比較テーブルを前記第2の記憶領域に供給し、
前記ビットストリング供給手段は、前記被検索ビットストリングから前記第2の比較テーブルに対応する第2の部分を切り出して前記第1の記憶領域に供給する、請求項1の検索装置。 - 前記テーブル供給手段が前記異なる比較テーブルを供給する際に、前記状態記憶領域をプリセットする手段を有する、請求項5の検索装置。
- 前記状態記憶領域の内容より、前記比較テーブルから前記第2のビットストリングを特定し、それに関連付けされたデータを出力する判定手段を有する、請求項1の検索装置。
- 前記状態記憶領域の内容より、最終の比較テーブルから前記第2のビットストリングまたはそれに関連付けされたデータを出力する判定手段を有する、請求項5の検索装置。
- 前記比較テーブルを更新する手段を有する、請求項1の検索装置。
- 前記第1および第2のビットストリングは、パケットを管理するIPアドレスを少なくとも含むビットストリングである、請求項1の検索装置。
- 前記第2のビットストリングのうち、前記第1のビットストリングと比較する必要のあるビット位置を示す第3のビットストリングを前記第2の方向に並列に記憶可能な第3の記憶領域と、
前記状態記憶領域の論理和、または、前記比較テーブルの前記ビット列に対応する前記第3の記憶領域のビット列の論理和により前記比較手段の動作を終了すると共に、前記第3の記憶領域のビット列の論理和により終了したときはその直前の前記比較結果を出力する出力手段とを有する、請求項1の検索装置。 - 前記第2および第3の記憶領域は、前記第2のビットストリングとそれに対応する前記第3のビットストリングが前記第2の方向に隣接するようにアレンジされた第4の記憶領域となり、前記比較テーブルは、前記第2のビットストリングとそれに対応する前記第3のビットストリングが前記第2の方向に隣接するようにアレンジされ、さらに、前記状態記憶領域には前記第2のビットストリングの前記比較結果に隣接して前記第3のビットストリングを前記第1の方向に比較した状態が記憶されるようになっており、
さらに、異なる比較テーブルを前記第4の記憶領域に供給するテーブル供給手段と、
被検索ビットストリングから、前記第4の記憶領域に供給された第1の比較テーブルに対応する第1の部分を切り出して前記第1の記憶領域に供給するビットストリング供給手段とを有し、
前記テーブル供給手段は、前記第1の比較テーブルに含まれる前記第2のビットストリングが特定されると、その第2のビットストリングに対応する第2の比較テーブルを前記第4の記憶領域に供給し、
前記ビットストリング供給手段は、前記被検索ビットストリングから前記第2の比較テーブルに対応する第2の部分を切り出して前記第1の記憶領域に供給し、
さらに、前記状態記憶領域の内容より、最終の前記比較テーブルから前記第2のビットストリングまたはそれに関連付けされたデータを出力する判定手段を有する請求項11の検索装置。 - 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を規定する下位のビットストリングと上位のビットストリングとであり、
前記第2の記憶領域に、前記下位および上位のビットストリングとが前記第2の方向にペアに並べられた前記比較テーブルを供給する手段を有し、
前記比較手段は、前記状態記憶領域に、ペアになった前記下位および上位のビットストリングと前記第1のビットストリングを比較した以下のAからEの結果を前記比較結果として順次反映する、請求項1の検索装置。
A.前記下位および上位のビットストリングと前記第1のビットストリングが一致している全一致状態。
B.前記下位のビットストリングと前記第1のビットストリングが一致している下位一致状態。
C.前記上位のビットストリングと前記第1のビットストリングが一致している上位一致状態。
D.前記全一致状態から前記下位一致状態あるいは前記上位一致状態に移行せず、前記下位一致状態から前記第1のビットストリングが下位になり、あるいは前記上位一致状態から前記第1のビットストリングが上位になった失格状態。
E.前記下位一致状態から前記第1のビットストリングが上位になり、あるいは前記上位一致状態から前記第1のビットストリングが下位になった候補状態。 - 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を重複しないように規定する下位および上位のビットストリングのいずれか一方のビットストリングであり、
前記一方のビットストリングが前記下位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが上位方向に分離したときの最も上位の前記一方のビットストリングを近似と判断し、前記一方のビットストリングが前記上位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが下位方向に分離したときの最も下位の前記一方のビットストリングを近似と判断する判定手段を有する、請求項1の検索装置。 - 請求項1に記載の検索装置と、
前記検索装置の照合結果に基づき前記第1のビットストリングを備えたデータを管理する手段とを有するデータ管理装置。 - 請求項12に記載の検索装置を有し、前記第1および第2のビットストリングはパケットを管理するIPアドレスであり、前記第3のビットストリングはプリフィックスであり、前記判定手段からはルーティング情報が出力され、
さらに、この検索装置の出力に基づき特定されたルートに前記第1のビットストリングを備えたパケットを送信する手段を有するデータ管理装置。 - 請求項1の検索装置を有し、前記第1および第2のビットストリングはデータパケットが接続される前後の位置を識別するデータであり、
さらに、前記第1の記憶領域に、前方を規定する前記第1のビットストリングと後方を規定する前記第1のビットストリングとが並列に配置されるように供給するビットストリング供給手段と、
前記第2の記憶領域に、前方および後方を規定する前記第2のビットストリングのペアが前記第2の方向に隣接して並列に配置された前記比較テーブルを供給するテーブル供給手段と、
前記第1のビットストリングに対応する前記第2のビットストリングがないと、前記第1のビットストリングを前記比較テーブルに追加する手段と、
前記検索装置の出力に基づき前記データパケットを再構成する手段とを有するデータ管理装置。 - 請求項13に記載の検索装置を有し、
前記検索装置に、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記第1のビットストリングとして供給する手段と、
前記検索装置の出力に基づき前記第1のビットストリングを備えた前記パケットを管理する手段とを有するデータ管理装置。 - 請求項14に記載の検索装置を有し、
前記検索装置に、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記第1のビットストリングとして供給する手段と、
前記検索装置により近似と判断された前記一方のビットストリングに対応するルールに基づき前記パケットを管理する手段とを有するデータ管理装置。 - 前記第1のビットストリングが属する範囲に対応する複数のルールが与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割し、前記新たな範囲を規定する下位および上位のビットストリングのいずれか一方のビットストリングを前記第2のビットストリングとして前記比較テーブルを生成する手段を有し、
前記管理する手段は、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する、請求項19のデータ管理装置。 - 請求項14に記載の検索装置を有し、
前記検索装置に、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスを前記第1のビットストリングとして供給する手段と、
前記検索装置により近似と判断された前記一方のビットストリングに対応する前記データブロックと前記第1のビットストリングに対応する前記データブロックとの関係に基づき、前記第1のビットストリングに対応する前記データブロックを含む前記データブロックを再構成する手段と、
再構成された前記データブロックの前記先頭アドレスおよび末尾アドレスにより前記比較テーブルを更新する手段とを有するデータ管理装置。 - 第1のビットストリングと比較する複数の第2のビットストリングが並列にソーティングされた状態で配置された比較テーブルが前記第2のビットストリングの上位ビットから適当な単位で複数に分割された比較テーブルを有し、これらの分割された前記比較テーブル内では同一のビットストリングが1つに圧縮されており、さらに、
被検索ビットストリングの一部と前記分割された比較テーブルのいずれかを照合する手段と、
前記照合する手段に第1の前記分割された比較テーブルを供給するテーブル供給手段と、
前記被検索ビットストリングから前記第1の分割された比較テーブルに対応する第1の部分を切り出して前記照合する手段に供給するビットストリング供給手段とを有し、
前記テーブル供給手段は、前記第1の分割された比較テーブルに含まれる前記第2のビットストリングが特定されると、その第2のビットストリングに対応する第2の前記分割された比較テーブルを前記照合する手段に供給し、
前記ビットストリング供給手段は、前記被検索ビットストリングから前記第2の分割された比較テーブルに対応する第2の部分を切り出して前記照合する手段に供給し、さらに、
最終の前記分割された比較テーブルが供給されたときの前記照合する手段の結果から前記第2のビットストリングまたはそれに関連付けされたデータを出力する判定手段を有する検索装置。 - 前記第1および第2のビットストリングはパケットを管理するIPアドレスであり、前記比較テーブルには、前記第2のビットストリングと並列にそれぞれの第2のビットストリングのプリフィックスが並べられ、前記第2のビットストリングおよびプレフィックスでソーティングされており、さらに、前記判定手段からはルーティング情報が出力される、請求項22の検索装置。
- 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を規定する下位のビットストリングと上位のビットストリングとであり、前記比較テーブルには、前記下位および上位のビットストリングとが前記第2の方向にペアに並べられ、前記下位および上位ビットストリングでソーティングされており、さらに、前記判定手段からは前記範囲に対応する情報が出力される、請求項22の検索装置。
- 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を重複しないように規定する下位および上位のビットストリングのいずれか一方のビットストリングであり、
前記判定手段は、前記一方のビットストリングが前記下位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが上位方向に分離したときの最も上位の前記一方のビットストリングを近似と判断し、前記一方のビットストリングが前記上位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが下位方向に分離したときの最も下位の前記一方のビットストリングを近似と判断する、請求項22の検索装置。 - 請求項22に記載の検索装置と、
前記検索装置の照合結果に基づき前記第1のビットストリングを備えたデータを管理する手段とを有するデータ管理装置。 - 請求項23に記載の検索装置と、
前記検索装置の出力に基づき特定されたルートに前記第1のビットストリングを備えたパケットを送信する手段を有するデータ管理装置。 - 請求項24に記載の検索装置を有し、前記第1のビットストリングはIPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングであり、
さらに、前記検索装置の出力に基づき前記第1のビットストリングを備えた前記パケットを管理する手段を有するデータ管理装置。 - 請求項25に記載の検索装置を有し、前記第1のビットストリングはIPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングであり、
さらに、前記検索装置により近似と判断された前記一方のビットストリングに対応するルールに基づき前記パケットを管理する手段を有するデータ管理装置。 - 前記第1のビットストリングが属する範囲に対応する複数のルールが与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割し、前記新たな範囲を規定する下位および上位のビットストリングのいずれか一方のビットストリングを前記第2のビットストリングとして前記比較テーブルを生成する手段を有し、
前記管理する手段は、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する、請求項29のデータ管理装置。 - 請求項25に記載の検索装置を有し、前記第1のビットストリングは、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスであり、
さらに、前記検索装置により近似と判断された前記一方のビットストリングに対応する前記データブロックと前記第1のビットストリングに対応する前記データブロックとの関係に基づき、前記第1のビットストリングに対応する前記データブロックを含む前記データブロックを再構成する手段と、
再構成された前記データブロックの前記先頭アドレスおよび末尾アドレスにより前記比較テーブルを更新する手段とを有するデータ管理装置。 - 第1のビットストリングが属する範囲を重複しないように規定する下位および上位のビットストリングのいずれか一方のビットストリングを第2のビットストリングとし、複数の前記第2のビットストリングをソーティングして並列にした比較テーブルと前記第1のビットストリングとを照合する手段と、
前記一方のビットストリングが前記下位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが上位方向に分離したときの最も上位の前記一方のビットストリングを近似と判断し、前記一方のビットストリングが前記上位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが下位方向に分離したときの最も下位の前記一方のビットストリングを近似と判断する判定手段とを有する検索装置。 - 請求項32に記載の検索装置と、
前記検索装置の照合結果に基づき前記第1のビットストリングを備えたデータを管理する手段とを有するデータ管理装置。 - 請求項32に記載の検索装置を有し、前記第1のビットストリングはIPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングであり、
さらに、前記検索装置により近似と判断された前記一方のビットストリングに対応するルールに基づき前記パケットを管理する手段を有するデータ管理装置。 - 前記第1のビットストリングが属する範囲に対応する複数のルールが与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割し、前記新たな範囲を規定する下位および上位のビットストリングのいずれか一方のビットストリングを前記第2のビットストリングとして前記比較テーブルを生成する手段を有し、
前記管理する手段は、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する、請求項34のデータ管理装置。 - 請求項32に記載の検索装置を有し、前記第1のビットストリングは、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスであり、
さらに、前記検索装置により近似と判断された前記一方のビットストリングに対応する前記データブロックと前記第1のビットストリングに対応する前記データブロックとの関係に基づき、前記第1のビットストリングに対応する前記データブロックを含む前記データブロックを再構成する手段と、
再構成された前記データブロックの前記先頭アドレスおよび末尾アドレスにより前記比較テーブルを更新する手段とを有するデータ管理装置。 - 第1のビットストリングが属する範囲に対応する値を出力する検索装置であって、
複数の前記値が与えられると、前記第1のビットストリングが属する範囲を、前記値の重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割する手段と、
前記第1のビットストリングと前記新たな範囲を照合する手段と、
照合された前記第1のビットストリングが属する前記新たな範囲に前記複数の値があるときは、優先度の高い前記値を出力する手段とを有する検索装置。 - 請求項37に記載の検索装置を有し、
前記検索装置に対し、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットの管理用のビットストリングを前記第1のビットストリングとして供給し、前記パケットを管理するルールを前記値として受け取るビットストリング供給手段と、
前記ルールに基づき前記パケットを管理する手段であって、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する管理する手段とを有するデータ管理装置。 - 第1のビットストリングを第1の方向に記憶可能な第1の記憶領域と、この第1のビットストリングと比較する複数の第2のビットストリングが第2の方向に並列に配置された比較テーブルを記憶可能な第2の記憶領域と、この第2の記憶領域の前記第2の方向のビット列に対応する記憶領域を備えた状態記憶領域とを設け、
前記第1の記憶領域の前記第1の方向に並んだ各ビットを、そのビットに対応する前記第2の記憶領域の前記第2の方向のビット列と、前記第1の方向に順番に比較し、その比較結果を前記状態記憶領域に順次反映する比較工程を有する検索方法。 - 前記状態記憶領域の論理和により、前記比較工程を終了する出力工程をさらに有する、請求項39の検索方法。
- 前記出力工程では、終了直前の前記比較結果が出力される、請求項40の検索方法。
- 前記第1の記憶領域は、前記第2の方向に複数のビットを記憶する領域を備えており、
前記比較工程では、前記第1の記憶領域の前記第2の方向および前記第1の方向に並んだ各ビットを、そのビットに対応する前記第2の記憶領域の前記第2の方向のビット列と前記第2の方向および前記第1の方向に順番に比較し、その結果を前記比較結果として前記状態記憶領域に順次反映する、請求項39の検索方法。 - 前記比較工程の前に、異なる比較テーブルを前記第2の記憶領域に供給するテーブル供給工程と、
被検索ビットストリングから、前記第2の記憶領域に供給された第1の比較テーブルに対応する第1の部分を切り出して前記第1の記憶領域に供給するビットストリング供給工程とを有し、
前記テーブル供給工程では、前記比較工程により、前記第1の比較テーブルに含まれる前記第2のビットストリングが特定されると、その第2のビットストリングに対応する第2の比較テーブルを前記第2の記憶領域に供給し、
前記ビットストリング供給工程では、前記被検索ビットストリングから前記第2の比較テーブルに対応する第2の部分を切り出して前記第1の記憶領域に供給する、請求項39の検索方法。 - 前記異なる比較テーブルを供給する際に、前記状態記憶領域をプリセットする工程をさらに有する、請求項43の検索方法。
- 前記状態記憶領域の内容より、前記比較テーブルから前記第2のビットストリングを特定し、それに関連付けされたデータを出力する判定工程をさらに有する、請求項39の検索方法。
- 前記状態記憶領域の内容より、最終の比較テーブルから前記第2のビットストリングまたはそれに関連付けされたデータを出力する判定工程を有する請求項43の検索方法。
- 前記比較テーブルを更新する工程をさらに有する、請求項39の検索方法。
- 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を規定する下位のビットストリングと上位のビットストリングとであり、
前記第2の記憶領域に、前記下位および上位のビットストリングとが前記第2の方向にペアに並べられた前記比較テーブルを供給する工程を有し、
前記比較工程では、前記状態記憶領域に、ペアになった前記下位および上位のビットストリングと前記第1のビットストリングを比較した以下のAからEの結果を前記比較結果として順次反映する、請求項39の検索方法。
A.前記下位および上位のビットストリングと前記第1のビットストリングが一致している全一致状態。
B.前記下位のビットストリングと前記第1のビットストリングが一致している下位一致状態。
C.前記上位のビットストリングと前記第1のビットストリングが一致している上位一致状態。
D.前記全一致状態から前記下位一致状態あるいは前記上位一致状態に移行せず、前記下位一致状態から前記第1のビットストリングが下位になり、あるいは前記上位一致状態から前記第1のビットストリングが上位になった失格状態。
E.前記下位一致状態から前記第1のビットストリングが上位になり、あるいは前記上位一致状態から前記第1のビットストリングが下位になった候補状態。 - 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を重複しないように規定する下位および上位のビットストリングのいずれか一方のビットストリングであり、
前記一方のビットストリングが前記下位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが上位方向に分離したときの最も上位の前記一方のビットストリングを近似と判断し、前記一方のビットストリングが前記上位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが下位方向に分離したときの最も下位の前記一方のビットストリングを近似と判断する判定工程を有する、請求項39の検索方法。 - 請求項39に記載の検索方法により、前記第1のビットストリームを照合する工程と、
その照合結果に基づき前記第1のビットストリングを備えたデータを管理する工程とを有するデータ管理方法。 - 請求項39に記載の検索方法により、パケットを管理するIPアドレスを前記第1および第2のビットストリングとし、プリフィックスを第3のビットストリングとして、前記パケットを送信するルートを検索する工程と、
この検索する工程に基づき特定されたルートにパケットを送信する工程とを有し、
前記検索する工程では、前記第2のビットストリングとそれに対応する前記第3のビットストリングが前記第2の方向に隣接するようにアレンジされた第4の記憶領域を設け、前記比較テーブルは前記第2のビットストリングとそれに対応する前記第3のビットストリングが前記第2の方向に隣接するようにアレンジされ、さらに、前記状態記憶領域には前記第2のビットストリングの前記比較結果に隣接して前記第3のビットストリングを前記第1の方向に比較した状態が記憶される、データ管理方法。 - 請求項39に記載の検索方法により、データパケットが接続される前後の位置を識別するデータを前記第1および第2のビットストリングとし、前記データパケットの前後関係を照合する工程と、
その照合結果に基づき前記データパケットを再構成する工程とを有し、
前記照合する工程では、前記第1の記憶領域に、前方を規定する前記第1のビットストリングと後方を規定する前記第1のビットストリングとが並列に配置されるように供給し、第2の記憶領域に、前方および後方を規定する前記第2のビットストリングのペアが前記第2の方向に隣接して並列に配置された前記比較テーブルを供給し、さらに、前記第1のビットストリングに対応する前記第2のビットストリングがないと、前記第1のビットストリングを前記比較テーブルに追加する、データ管理方法。 - 請求項48に記載の検索方法により、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記第1のビットストリングとし、それが属する前記範囲を照合する工程と、
その照合結果に基づき前記第1のビットストリングを備えた前記パケットを管理する工程とを有するデータ管理方法。 - 請求項49に記載の検索方法により、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記第1のビットストリングとし、それに近似の前記一方のビットストリングを照合する工程と、
近似と判断された前記一方のビットストリングに対応するルールに基づき前記パケットを管理する工程とを有するデータ管理方法。 - 前記第1のビットストリングが属する範囲に対応する複数のルールが与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割し、前記新たな範囲を規定する下位および上位のビットストリングのいずれか一方のビットストリングを前記第2のビットストリングとして前記比較テーブルを生成する工程を有し、
前記管理する工程では、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する、請求項54のデータ管理方法。 - 請求項49に記載の検索方法により、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスを前記第1のビットストリングとし、それに近似の前記一方のビットストリングを照合する工程と、
近似と判断された前記一方のビットストリングに対応する前記データブロックと前記第1のビットストリングに対応する前記データブロックとの関係に基づき、前記第1のビットストリングに対応する前記データブロックを含む前記データブロックを再構成する工程と、
再構成された前記データブロックの前記先頭アドレスおよび末尾アドレスにより前記比較テーブルを更新する工程とを有するデータ管理方法。 - 第1のビットストリングと比較する複数の第2のビットストリングが並列にソーティングされた状態で配置された比較テーブルを前記第2のビットストリングの上位ビットから適当な単位で複数に分割し、分割された比較テーブル内では同一のビットストリングを1つに圧縮するテーブル分割工程と、
被検索ビットストリングから第1の前記分割された比較テーブルに対応する第1の部分を切り出して前記第1の分割された比較テーブルと照合し、前記第1の分割された比較テーブルに含まれる前記第2のビットストリングが特定されると、その第2のビットストリングに対応する第2の前記分割された比較テーブルに対応する第2の部分を前記被検索ビットストリングから切り出して前記第2の分割された比較テーブルと照合する照合工程と、
最終の前記分割された比較テーブルが供給されたときの前記照合工程の結果から前記第2のビットストリングまたはそれに関連付けされたデータを出力する判定工程とを有する検索方法。 - 前記第1および第2のビットストリングはパケットを管理するIPアドレスであり、
前記テーブル分割工程では、前記比較テーブルに、前記第2のビットストリングと並列にそれぞれの第2のビットストリングのプリフィックスを並べ、前記第2のビットストリングおよびプレフィックスでソーティングし、
前記判手工程では、ルーティング情報を出力する、請求項57の検索方法。 - 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を規定する下位のビットストリングと上位のビットストリングとであり、
前記テーブル分割工程では、前記比較テーブルに、前記下位および上位のビットストリングとを前記第2の方向にペアに並べ、前記下位および上位ビットストリングでソーティングし、
前記判定工程では、前記範囲に対応する情報を出力する、請求項57の検索方法。 - 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を重複しないように規定する下位および上位のビットストリングのいずれか一方のビットストリングであり、
前記判定工程では、前記一方のビットストリングが前記下位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが上位方向に分離したときの最も上位の前記一方のビットストリングを近似と判断し、前記一方のビットストリングが前記上位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが下位方向に分離したときの最も下位の前記一方のビットストリングを近似と判断する、請求項57の検索方法。 - 請求項57に記載の検索方法により、前記第1のビットストリームを照合する工程と、
その照合結果に基づき前記第1のビットストリングを備えたデータを管理する工程とを有するデータ管理方法。 - 請求項58に記載の検索方法により、前記第1のビットストリングを有する前記パケットを送信するルートを検索する工程と、
この検索する工程に基づき特定されたルートにパケットを送信する工程とを有するデータ管理方法。 - 請求項59に記載の検索方法により、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記第1のビットストリングとし、それが属する前記範囲を照合する工程と、
その照合結果に基づき前記第1のビットストリングを備えた前記パケットを管理する工程とを有するデータ管理方法。 - 請求項60に記載の検索方法により、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記第1のビットストリングとし、それに近似の前記一方のビットストリングを照合する工程と、
近似と判断された前記一方のビットストリングに対応するルールに基づき前記パケットを管理する工程とを有するデータ管理方法。 - 前記第1のビットストリングが属する範囲に対応する複数のルールが与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割し、前記新たな範囲を規定する下位および上位のビットストリングのいずれか一方のビットストリングを前記第2のビットストリングとして前記比較テーブルを生成する工程を有し、
前記管理する工程では、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する、請求項64のデータ管理方法。 - 請求項60に記載の検索方法により、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスを前記第1のビットストリングとし、それに近似の前記一方のビットストリングを照合する工程と、
近似と判断された前記一方のビットストリングに対応する前記データブロックと前記第1のビットストリングに対応する前記データブロックとの関係に基づき、前記第1のビットストリングに対応する前記データブロックを含む前記データブロックを再構成する工程と、
再構成された前記データブロックの前記先頭アドレスおよび末尾アドレスにより前記比較テーブルを更新する工程とを有するデータ管理方法。 - 第1のビットストリングが属する範囲を重複しないように規定する下位および上位のビットストリングのいずれか一方のビットストリングを第2のビットストリングとし、複数の前記第2のビットストリングをソーティングして並列にした比較テーブルと前記第1のビットストリングとを照合する工程と、
前記一方のビットストリングが前記下位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが上位方向に分離したときの最も上位の前記一方のビットストリングを近似と判断し、前記一方のビットストリングが前記上位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが下位方向に分離したときの最も下位の前記一方のビットストリングを近似と判断する判定工程とを有する検索方法。 - 請求項67に記載の検索方法により、前記第1のビットストリームを照合する工程と、
その照合結果に基づき前記第1のビットストリングを備えたデータを管理する工程とを有するデータ管理方法。 - 請求項67に記載の検索方法により、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記第1のビットストリングとし、それに近似の前記一方のビットストリングを照合する工程と、
近似と判断された前記一方のビットストリングに対応するルールに基づき前記パケットを管理する工程とを有するデータ管理方法。 - 前記第1のビットストリングが属する範囲に対応する複数のルールが与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割し、前記新たな範囲を規定する規定する下位および上位のビットストリングのいずれか一方のビットストリングを前記第2のビットストリングとして前記比較テーブルを生成する工程を有し、
前記管理する工程では、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する、請求項69のデータ管理方法。 - 請求項67に記載の検索方法により、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスを前記第1のビットストリングとし、それに近似の前記一方のビットストリングを照合する工程と、
近似と判断された前記一方のビットストリングに対応する前記データブロックと前記第1のビットストリングに対応する前記データブロックとの関係に基づき、前記第1のビットストリングに対応する前記データブロックを含む前記データブロックを再構成する工程と、
再構成された前記データブロックの前記先頭アドレスおよび末尾アドレスにより前記比較テーブルを更新する工程とを有するデータ管理方法。 - 第1のビットストリングが属する範囲に対応する値を出力する検索方法であって、
複数の前記値が与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割する工程と、
前記第1のビットストリングと前記新たな範囲を照合する工程と、
照合された前記第1のビットストリングが属する前記新たな範囲に前記複数の値があるときは、優先度の高い前記値を出力する工程とを有する検索方法。 - 請求項72に記載の検索方法により、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットの管理用のビットストリングを前記第1のビットストリングとして供給し、前記パケットを管理するルールを前記値として受け取る工程と、
前記ルールに基づき前記パケットを管理する際に、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する管理する工程とを有するデータ管理方法。 - 第1のビットストリングを第1の方向に記憶可能な第1の記憶領域と、この第1のビットストリングと比較する複数の第2のビットストリングが第2の方向に並列に配置された比較テーブルを記憶可能な第2の記憶領域と、この第2の記憶領域の前記第2の方向のビット列に対応する記憶領域を備えた状態記憶領域とを設け、
前記第1の記憶領域の前記第1の方向に並んだ各ビットを、そのビットに対応する前記第2の記憶領域の前記第2の方向のビット列と、前記第1の方向に順番に比較し、その比較結果を前記状態記憶領域に順次反映する比較工程を実行可能な命令を有する検索プログラム。 - 前記状態記憶領域の論理和により、前記比較工程を終了する出力工程を実行可能な命令をさらに有する、請求項74の検索プログラム。
- 前記出力工程では、終了直前の前記比較結果が出力される処理を実行可能な命令をさらに有する、請求項75の検索プログラム。
- 前記第1の記憶領域は、前記第2の方向に複数のビットを記憶する領域を備えており、
前記比較工程では、前記第1の記憶領域の前記第2の方向および前記第1の方向に並んだ各ビットを、そのビットに対応する前記第2の記憶領域の前記第2の方向のビット列と前記第2の方向および前記第1の方向に順番に比較し、その結果を前記比較結果として前記状態記憶領域に順次反映する、請求項74の検索プログラム。 - 第1のビットストリングを第1の方向に記憶可能な第1の記憶領域と、この第1のビットストリングと比較する複数の第2のビットストリングが第2の方向に並列に配置された比較テーブルを記憶可能な第2の記憶領域と、この第2の記憶領域の前記第2の方向のビット列に対応する記憶領域を備えた状態記憶領域とを設け、前記第1の記憶領域の前記第1の方向に並んだ各ビットを、そのビットに対応する前記第2の記憶領域の前記第2の方向のビット列と、前記第1の方向に順番に比較し、その比較結果を前記状態記憶領域に順次反映する検索プログラムまたは装置を使用して前記第1のビットストリングを前記第2のビットストリングと比較する工程と、
この比較する工程の前に、異なる比較テーブルを前記第2の記憶領域に供給するテーブル供給工程と、
被検索ビットストリングから、前記第2の記憶領域に供給された第1の比較テーブルに対応する第1の部分を切り出して前記第1の記憶領域に供給するビットストリング供給工程とを実行可能な命令を有し、
さらに、前記テーブル供給工程では、前記比較する工程により前記第1の比較テーブルに含まれる前記第2のビットストリングが特定されると、その第2のビットストリングに対応する第2の比較テーブルを前記第2の記憶領域に供給し、
前記ビットストリング供給工程では、前記被検索ビットストリングから前記第2の比較テーブルに対応する第2の部分を切り出して前記第1の記憶領域に供給する処理を実行可能な命令を有するプログラム。 - 前記異なる比較テーブルを供給する際に、前記状態記憶領域をプリセットする工程を実行可能な命令をさらに有する、請求項78のプログラム。
- 前記状態記憶領域の内容より、最終の比較テーブルから前記第2のビットストリングまたはそれに関連付けされたデータを出力する判定工程を実行可能な命令をさらに有する、請求項78のプログラム。
- 前記比較テーブルを更新する工程を実行可能な命令をさらに有する、請求項78のプログラム。
- 前記更新する工程では、第1のビットストリングに対応する前記第2のビットストリングがないと、該第1のビットストリングを前記比較テーブルに追加する処理を実行可能な命令をさらに有する、請求項81のプログラム。
- 第1のビットストリングと比較する複数の第2のビットストリングが並列にソーティングされた状態で配置された比較テーブルを前記第2のビットストリングの上位ビットから適当な単位で複数に分割し、分割された比較テーブル内では同一のビットストリングを1つに圧縮するテーブル分割工程と、
被検索ビットストリングから第1の前記分割された比較テーブルに対応する第1の部分を切り出して前記第1の分割された比較テーブルと照合し、前記第1の分割された比較テーブルに含まれる前記第2のビットストリングが特定されると、その第2のビットストリングに対応する第2の前記分割された比較テーブルに対応する第2の部分を前記被検索ビットストリングから切り出して前記第2の分割された比較テーブルと照合する照合工程と、
最終の前記分割された比較テーブルが供給されたときの前記照合工程の結果から前記第2のビットストリングまたはそれに関連付けされたデータを出力する判定工程とを実行可能な命令を有するプログラム。 - 前記第1および第2のビットストリングはパケットを管理するIPアドレスであり、
前記テーブル分割工程では、前記比較テーブルに、前記第2のビットストリングと並列にそれぞれの第2のビットストリングのプリフィックスを並べ、前記第2のビットストリングおよびプレフィックスでソーティングし、
前記判手工程では、ルーティング情報を出力し、さらに、
前記ルーティング情報に基づき前記パケットを送信する工程を実行可能な命令をさらに有する、請求項83のプログラム。 - 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を規定する下位のビットストリングと上位のビットストリングとであり、
前記テーブル分割工程では、前記比較テーブルに、前記下位および上位のビットストリングとが前記第2の方向にペアに並べられ、前記下位および上位ビットストリングでソーティングし、
前記判定工程では、前記範囲に対応する情報を出力する、請求項83のプログラム。 - 前記第1のビットストリングは、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングであり、
前記範囲に対応する情報に基づき、前記第1のビットストリングを備えた前記パケットを管理する工程を実行可能な命令をさらに有する、請求項85のプログラム。 - 前記第2のビットストリングは、前記第1のビットストリングが属する範囲を重複しないように規定する下位および上位のビットストリングのいずれか一方のビットストリングであり、
前記判定工程では、前記一方のビットストリングが前記下位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが上位方向に分離したときの最も上位の前記一方のビットストリングを近似と判断し、前記一方のビットストリングが前記上位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが下位方向に分離したときの最も下位の前記一方のビットストリングを近似と判断する、請求項83のプログラム。 - 前記第1のビットストリングは、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングであり、
近似と判断された前記一方のビットストリングに対応するルールに基づき前記パケットを管理する工程を実行可能な命令をさらに有する、請求項87のプログラム。 - 前記第1のビットストリングが属する範囲に対応する複数のルールが与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲は相互に重複しない複数の新たな範囲に分割し、前記新たな範囲を規定する下位および上位のビットストリングのいずれか一方のビットストリングを前記第2のビットストリングとして前記比較テーブルを生成する工程を実行可能な命令をさらに有し、
前記管理する工程では、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する、請求項88のプログラム。 - 前記第1のビットストリングは、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスであり、
近似と判断された前記一方のビットストリングに対応する前記データブロックと前記第1のビットストリングに対応する前記データブロックとの関係に基づき、前記第1のビットストリングに対応する前記データブロックを含む前記データブロックを再構成する工程と、
再構成された前記データブロックの前記先頭アドレスおよび末尾アドレスにより前記比較テーブルを更新する工程とを実行可能な命令をさらに有する、請求項87のプログラム。 - 第1のビットストリングが属する範囲を重複しないように規定する下位および上位のビットストリングのいずれか一方のビットストリングを第2のビットストリングとし、複数の前記第2のビットストリングをソーティングして並列にした比較テーブルと前記第1のビットストリングとを照合する工程と、
前記一方のビットストリングが前記下位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが上位方向に分離したときの最も上位の前記一方のビットストリングを近似と判断し、前記一方のビットストリングが前記上位のビットストリングであるときは前記一方のビットストリングに対して前記第1のビットストリングが下位方向に分離したときの最も下位の前記一方のビットストリングを近似と判断する判定工程とを実行可能な命令を有するプログラム。 - 前記第1のビットストリングは、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングであり、
近似と判断された前記一方のビットストリングに対応するルールに基づき前記パケットを管理する工程とを実行可能な命令をさらに有する、請求項91のプログラム。 - 前記第1のビットストリングは、データブロックの先頭に対応する先頭アドレスまたは末尾に対応する末尾アドレスであり、
近似と判断された前記一方のビットストリングに対応する前記データブロックと前記第1のビットストリングに対応する前記データブロックとの関係に基づき、前記第1のビットストリングに対応する前記データブロックを含む前記データブロックを再構成する工程と、
再構成された前記データブロックの前記先頭アドレスおよび末尾アドレスにより前記比較テーブルを更新する工程とを実行可能な命令をさらに有する、請求項91のプログラム。 - 第1のビットストリングが属する範囲に対応する値を出力する際に、複数の前記値が与えられると、前記第1のビットストリングが属する範囲を、ルールの重複を許すが、範囲 は相互に重複しない複数の新たな範囲に分割する工程と、
前記第1のビットストリングと前記新たな範囲を照合する工程と、
照合された前記第1のビットストリングが属する前記新たな範囲に前記複数の値があるときは、優先度の高い前記値を出力する工程とを実行可能な命令を有するプログラム。 - 前記第1のビットストリングは、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットの管理用のビットストリングであり、
前記出力する工程では、前記パケットを管理するルールが前記値として出力され、
前記ルールに基づき前記パケットを管理する際に、前記一方のビットストリングに対応する前記ルールが複数あるときは、優先度の高い前記ルールを適用する管理する工程を実行可能な命令をさらに有する、請求項94のプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001103766 | 2001-04-02 | ||
JP2001103766 | 2001-04-02 | ||
PCT/JP2001/010532 WO2002082750A1 (fr) | 2001-04-02 | 2001-12-03 | Dispositif de recherche de chaines binaires et procede associe |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2002082750A1 JPWO2002082750A1 (ja) | 2004-07-29 |
JP3873027B2 true JP3873027B2 (ja) | 2007-01-24 |
Family
ID=18956769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002580581A Expired - Fee Related JP3873027B2 (ja) | 2001-04-02 | 2001-12-03 | ビットストリングの検索装置および方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP3873027B2 (ja) |
WO (1) | WO2002082750A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8336092B2 (en) | 2005-02-18 | 2012-12-18 | Duaxes Corporation | Communication control device and communication control system |
JP4027416B2 (ja) * | 2005-02-18 | 2007-12-26 | デュアキシズ株式会社 | データ処理装置 |
CA2603106A1 (en) * | 2005-03-28 | 2006-10-05 | Duaxes Corporation | Communication control device and communication control system |
CA2608156A1 (en) | 2005-05-20 | 2006-11-23 | Duaxes Corporation | Data processing system |
US8572759B2 (en) | 2006-08-24 | 2013-10-29 | Duaxes Corporation | Communication management system and communication management method |
WO2008023424A1 (fr) | 2006-08-24 | 2008-02-28 | Duaxes Corporation | Système de gestion de communication et procédé de gestion de communication associé |
JP5661764B2 (ja) * | 2009-07-09 | 2015-01-28 | シーパケット ネットワークス, インコーポレイテッド | ネットワークトラフィックの転送、分類および監視を向上させる装置および方法 |
WO2011102432A1 (ja) | 2010-02-18 | 2011-08-25 | Inoue Katsumi | 情報絞り込み検出機能を備えたメモリ、このメモリを用いた情報検出方法、このメモリを含む装置、情報の検出方法、メモリの使用方法、およびメモリアドレス比較回路 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3573319B2 (ja) * | 1996-08-27 | 2004-10-06 | 日本電信電話株式会社 | Ipパケット転送処理装置における高速検索回路およびipパケット転送処理装置 |
JPH1188427A (ja) * | 1997-09-05 | 1999-03-30 | Nippon Telegr & Teleph Corp <Ntt> | ルーティングテーブル検索装置 |
JP3448470B2 (ja) * | 1997-09-26 | 2003-09-22 | 日本電信電話株式会社 | Ipアドレス検索テーブル作成方法 |
-
2001
- 2001-12-03 JP JP2002580581A patent/JP3873027B2/ja not_active Expired - Fee Related
- 2001-12-03 WO PCT/JP2001/010532 patent/WO2002082750A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
JPWO2002082750A1 (ja) | 2004-07-29 |
WO2002082750A1 (fr) | 2002-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7120630B2 (en) | Full match (FM) search algorithm implementation for a network processor | |
US7984038B2 (en) | Longest prefix match (LPM) algorithm implementation for a network processor | |
US7107265B1 (en) | Software management tree implementation for a network processor | |
US7007101B1 (en) | Routing and forwarding table management for network processor architectures | |
CN101388030B (zh) | 数据库和数据库处理方法 | |
US7702630B2 (en) | Longest prefix match lookup using hash function | |
US8270401B1 (en) | Packet routing and switching device | |
US20080013532A1 (en) | Apparatus for hardware-software classification of data packet flows | |
CN113542125B (zh) | 一种基于集成流表转发报文的方法及装置 | |
US20050171937A1 (en) | Memory efficient hashing algorithm | |
JP2002538731A (ja) | 高性能ネットワークインターフェースにおけるダイナミックな構文解析 | |
JP3873027B2 (ja) | ビットストリングの検索装置および方法 | |
JP2002538721A (ja) | 高性能ネットワークインターフェースにおけるネットワークトラフィックを分類するための方法および装置 | |
JP5682442B2 (ja) | パケット分類器、パケット分類方法、及びパケット分類プログラム | |
JP2002325091A (ja) | フロー識別検索装置および方法 | |
US9444731B2 (en) | Methods and systems for data packet routing | |
GB2371381A (en) | Tree based search method | |
JP3443356B2 (ja) | パケット分類装置 | |
Wang | High speed string matching for virus scanning-Quick Sampling and Verification | |
KEKELY | MAPPING OF PACKET PROCESSING FROM P4 LAN GUAGETO FPGA TECHNOLOGY |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041124 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041224 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060725 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060829 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060829 |
|
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: 20061003 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061023 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |