JP2009219012A - 固定長データの検索方法 - Google Patents

固定長データの検索方法 Download PDF

Info

Publication number
JP2009219012A
JP2009219012A JP2008062589A JP2008062589A JP2009219012A JP 2009219012 A JP2009219012 A JP 2009219012A JP 2008062589 A JP2008062589 A JP 2008062589A JP 2008062589 A JP2008062589 A JP 2008062589A JP 2009219012 A JP2009219012 A JP 2009219012A
Authority
JP
Japan
Prior art keywords
fixed
length data
search
data
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008062589A
Other languages
English (en)
Other versions
JP4995125B2 (ja
Inventor
Shinpei Watanabe
晋平 渡邉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IPT Corp
Original Assignee
IPT Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IPT Corp filed Critical IPT Corp
Priority to JP2008062589A priority Critical patent/JP4995125B2/ja
Priority to US12/140,590 priority patent/US8010557B2/en
Publication of JP2009219012A publication Critical patent/JP2009219012A/ja
Application granted granted Critical
Publication of JP4995125B2 publication Critical patent/JP4995125B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】 固定長データの検索を高速に行う。
【解決手段】 ルートテーブルが保有するIPアドレスを一度に検索可能数まで細分化し高速に検索する。その手段として、ポインタテーブル200と、2次ポインタテーブルと、ローカルテーブルと、ルートテーブルとを、そしてより細分化が必要な場合、数値比較機能を持つテーブルを備える。ACLテーブルの検索はACLテーブルを構成する従固定長データの固定長データテーブルを作成し、ルートテーブルの検索方法を使って、ACLテーブルの検索を行う。これらのテーブルは効率のよい構築・管理を行い、検索動作を妨害しない管理を行うための手段として、テーブル管理手段600を備える。
【選択図】 図1

Description

本発明は、一般に、データの検索装置、データの検索方法に関する。特に、本発明は、データのビット長が一定である固定長データの集合であるデータベースから、指定された検索ルールの下で一致するデータを高速に検索する機能を備える制御方法、制御プログラム、並びに制御用データ構造に関する。さらに詳しくは、ネットワーク間中継装置における宛先ルートの高速検索およびフィルター機能に必要な複数の検索ルールの下で実行される高速検索を実現するための通信制御方法、通信制御プログラム、並びに通信制御用データ構造に関する。
データベースから希望する固定長データを高速で検索する要求は各種分野において存在する。特にネットワーク間中継装置に使用される中継先判定および中継判定のためのデータベースにおいては、特殊な検索ルールによる宛先アドレスの検索、異なる複数の検索ルールによる検索、高速な検索等、さらなる高度な要求が存在する。
ネットワーク間中継装置(ルーター等)に使用されるルートデータベースの中から希望するIP(Internet Protocol)アドレスを検索する場合、LPM(Longest Prefix Match)ルールに基づく検索が必要である。IPアドレスは基本的にネットワークアドレスとホストアドレスにより構成される。ネットワークアドレスの長さはプレフィックス(Prefix)で示される。プレフィックスは可変長であり、集約(アグリゲーション)され、ルートデータベースが構築される。集約とはプレフィックスの上位ビットが共通する複数のプレフィックスを、1つのプレフィックスによって代表させることである。代表するプレフィックスは共通の上位ビットで表される。この結果、集約されたIPアドレスを含むルートデータベースを検索すると、複数のIPアドレスが一致することが起きる。LPMルールは一致した複数のIPアドレスの中で最も長いプリフィックスをもつIPアドレスを一致結果とする検索方法である。LPMルールに基づく高速検索を実現する従来技術の代表例はTCAM(Ternary Content Addressable Memory)である。しかし、TCAMのメモリ容量は、DRAM(Dynamic Random Access Memory)の容量程大きくはない。そのためTCAMを利用して多数のIPアドレスを持つルートデータベースを構築するためには多数のTCAMが必要となりパワー供給およびパッケージの制約から大きなデータベースは構築できないという問題がある。
複数の検索ルールによって検索され、固定長データから構築されるようなテーブルも、ルーター等に使用されるものとして良く知られている。その複数の検索ルールを用いる代表例に、送出するか否かの判断を行うフィルタリング機能を持つACL(Access Control List)を用いるものがある。ACLを用いるある例においては、8ビットのTOS(Type of Service)、送信元IPアドレス(32ビット)、宛先IPアドレス(32ビット)、プロトコール(8ビット)、送信元ポート(16ビット)、宛先ポート(16ビット)そして8ビットの制御フラグの7個の要素とユーザーデータから構成される固定長データによってACLが構築される。ユーザーデータは、検索結果が一致した場合に検索結果となるデータである。ACLの固定長データの検索は、送信元IPアドレスと宛先IPアドレスがプレフィックス・マスクによる比較一致ルール(LPMルールと異なる)により、送信元ポートと宛先ポートは数値比較ルールにより、そして、他のデータは比較一致ルールにより行われる。加えてACLの各固定長データは優先順位を持つ。全ての要素の比較結果が一致した場合、その固定長データは一致したと認識される。もし複数の固定長データが一致した場合、優先順位の最も高い固定長データが検索結果となる。プレフィックス・マスクによる比較一致ルールによる比較においては、ACLの固定長データを構成する送信元IPアドレスと宛先IPアドレスとに付随して保存されているプレフィックス・マスクを使ってビット毎の比較を行うことにより一致判定を行う。数値比較ルールによる比較においては、ACLテーブルの固定長データを構成する送信元ポートと宛先ポートの最大値および最小値との間において無符号数値比較を行い、比較するポートが最大値と最小値の間に存在すれば一致と認識される。最後に、比較一致ルールによる比較においては、ACLテーブルの固定長データを構成するTOS,プロトコール、制御フラグのすべてが比較値と一致すれば一致と認識される。
ACLテーブルを高速で検索する従来技術はTCAMしか存在しない。しかもTCAMは数値比較ができない。このため、数値比較が必要な部分を複数の部分に分解し、分解された各部分を一致比較することにより、要求されている機能を果たしている。このため、結果として、ACLテーブルのひとつの固定長データが複数(数個から数十個の)の固定長データに分解され、ACLテーブルに格納される。このように、複数の検索ルールで比較を高速で行う検索は、TCAMに依存するために、TCAMにおける前述の問題を同様に生じてしまう。
本願の発明者は、特許文献1に示す特許出願をすでに行っている。
特願2006−512434号(国際特許出願PCT/JP2004/04641号)
本発明は、前記した問題点を解決するために、LPMルールによるルートデータベースの検索法と、そして複数の検索ルールによるACL(本発明ではACLテーブルと記述する固定長データテーブル)の検索法を提供する。その主たる目的はルートテーブルやACLテーブルに格納される、検索に必要な大量の固定長データを高速に検索することであり、そのための方法を提供することである。なお、上述のルートデータベースは、本発明では「ルートテーブル」と記載する固定長データテーブルであり、上述の被固定長データは、本発明ではFLD(Fixed Length Data)と記載する。
一般的にデータベース内のFLDから希望の固定長データ(本発明ではサーチキー)を検索することはデータベース内のFLDを一つ一つサーチキーと比較することである。そして、一致するFLDが得られたとき、または最後のFLDを比較したときに検索は終了する。この方法はデータベースが大きくなればなるほど、検索時間が大きくなり、高速検索が実現できない。高速検索方法の一つはいかにサーチキーと比較するデータベース内のFLDの数を少なくするかという命題と同じである。
本発明が提案する検索手法は、データベース内のFLDの数を細分化し、サーチキーと比較するFLDの数を一度に比較可能なまでに細分化する手段を使い、LPMルールによるルートテーブルの検索と、複数の検索ルールによるACLテーブルの検索とを実現するものである。本発明においては、サーチキー、およびサーチキーの一部を使用し、データベースを構成するFLDをグループ化、すなわちFLD数を細分化する。細分化されたFLDそれぞれは、その全てが、ルートテーブルまたはACLテーブルが格納されるメモリのひとつのメモリ位置に保存される。これにより、細分化されたFLDが保存されているメモリ位置を読み出し、読み出しデータとサーチキーを一度に比較することにより高速検索が可能になる。
サーチキー、およびサーチキーの一部を利用してルートテーブル、またはACLテーブルを細分化する方法は、ポインターテーブル(PT)と呼ぶテーブルを使って行われる。PTが格納されるメモリは、ルートテーブル、またはACLテーブルを格納するメモリと同一の半導体装置にあるようにすることもできるし、好適には、別の半導体装置によって実現される別のメモリにすることができる。この別のメモリを用いると、パイプライン処理が可能となる為、同一のメモリを用いる場合より単位時間当たりの検索数が増大し、高速な検索が実現される。以下、ルートテーブルのPTとルートテーブルとを使って、LPMルールの下でIPアドレスを検索する手法と、ACLテーブルのPTとACLテーブルを使って複数の検索ルールの下で検索を行なう手法を説明する。
ルートテーブルのFLDは有効ビットと、プレフィックス・マスクと、IPアドレスと、ID(Identification)と、ユーザーデータとから構成される。ユーザーデータは、検索結果が一致した場合に一致情報とともに検索結果となるデータであるが、検索結果とはならないFLDに付随したデータを含んでも良い。ルートテーブルの検索においては、サーチキーの上位nビットをアドレスとしてルートテーブルのPTを読み出し、一例としてルートテーブルのインデックスと、PTIDと、デフォルトデータ等を得る。次にルートテーブルのインデックスをアドレスとしてルートテーブルを読み出し、サーチキーと比較する複数のFLDを得る。この場合、読み出されたFLDのプレフィックス・マスクの長さはn+1からIPアドレスの長さ(IPv4の場合、32)までである。FLDのIPアドレスは、それに付随するプレフィックス・マスクを使って、サーチキーと比較される(比較結果1)。加えて、PTIDとIDが比較される(比較結果2)。比較結果1と比較結果2の両方とも一致するようなFLDが複数存在すれば、その一致が得られた複数のFLDのうちプレフィックス・マスクの長さが一番長いものが一致結果とされる。一致したFLDのユーザーデータが一致結果とともに検索結果となる。読み出された全てのFLDが不一致でデフォルトデータが存在する場合、一致結果とともにデフォルトデータが検索結果となる、そして、不一致でデフォルトデータが存在しない場合、不一致の検索結果となる。この場合、検索結果はデフォルトデータやユーザーデータを含まない。PTが保存するデフォルトデータは、IPアドレスの上位nビットのプレフィックス・マスクの部分が共通でそのプレフィックス・マスクの長さが一番長いIPアドレスのユーザーデータである。このため、全てのFLDが不一致である場合、デフォルトデータが一致結果を伴う検索結果である。PTがデフォルトデータを保存しない構成も可能である。その場合、デフォルトデータに対応するIPアドレスはルートテーブルに保存され、またはIPアドレスの上位nビットのプレフィックス・マスクの部分が共通のすべてのIPアドレスはルートテーブルに保存される。
ACLテーブルの検索の基本はACLテーブルの固定長データを分割し、分割した要素で2個以上のテーブルを構築し、それらを順次検索することである。すなわち、テーブルで細分化を行う検索である。例を使って説明する。ACLテーブルは2個のテーブル、ACLテーブル1とACLテーブル2で構成される。ACLテーブル1のFLDは宛先IPアドレス、または送信IPアドレス、ACLテーブル2のインデックス、そしてACLIDである。ACLテーブル2のFLDはACLテーブル1を構成するIPアドレスを除く全ての要素と、IDとユーザーデータである。ACLテーブル1に格納されているFLDはLPMルールの優先順位をもち、ACLテーブル2に格納されているFLDはACLで指定される優先順位を持つ。各テーブルの検索で複数のFLDが一致した場合、優先順位の一番高いFLDのユーザーデータが一致結果とともに検索結果となる。ACLテーブル1を検索する場合、LPMルールで行われる。
ACLテーブルの検索の最初はACLテーブルを構成する宛先IPアドレス、または送信IPアドレスを保存するACLテーブル1を検索する。検索はルートテーブルの方法と同じである。検索順序はサーチキーのACLテーブル1の保存する要素に相当するIPアドレス(サーチキー1)の上位nビットをアドレスとして、ACLテーブル1のPTを読み出し、PTIDとACLテーブル1のインデックス等を得る。次にACLテーブル1のインデックスをアドレスとしてACLテーブル1を読み出す。読み出されたFLDとサーチキー1と、プレフィックス・マスクを使って比較する(比較結果1)。加えて、PTIDとIDが比較される(比較結果2)。FLDの有効ビットが有効で、比較結果1と比較結果2両方とも一致するFLDが複数存在すれば、優先順位の一番高いFLDのACLIDとACLテーブル2のインデックス等を得る。一致するFLDが存在しなければ検索は終了し、不一致結果を得る。
一致するFLDが存在すれば次の検索を行う。ACLテーブル2のインデックスでACLテーブル2を読み出す。読み出されたFLDの各要素と最初の検索で使われたIPアドレスを除くサーチキー(サーチキー2)を、対応する検索ルールで比較する(比較結果3)。加えて、読み出されたFLDのIDとACLIDをその一部を一致比較で、他を大小比較で、比較する(比較結果4)。ACLIDがIDに一致比較で一致し、大小比較で等しいか、または、大きければ一致と認識する。比較結果3と比較結果4両方が一致するFLDが複数存在すれば、優先順位の一番高いFLDのユーザーデータが一致結果とともに検索結果となる。一致するFLDが存在しなければ検索は終了し、不一致結果を得る。
本発明を適用した実施の形態によれば、多数のIPアドレスが格納されたルートテーブルの検索処理がLPMルールで、また多数の固定長データが格納されたACLテーブルの検索処理が複数の検索ルールで、2から3メモリーサイクル程度の速度で実行することができる。又、パイプライン構成が可能なため、一秒間あたりの検索処理数は膨大な数になる。検索処理に加えて、固定長データの付加、および削除を行うため、ホスト制御装置が行っていた重い処理を削減できる。又、本発明固定長データ検索装置と固定長データ検索および管理装置および管理方法と検索方法は、本発明は、本発明の固定長データ検索法を適用した情報処理装置として、コンピュータを機能させるためのコンピュータプログラムに適用することが可能である。
以降、本発明を実施のための最良の形態および実施例について具体的に説明する。しかし、本発明は以下に説明する実施の形態および実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々の改良が可能である。
[全体の構成]
本発明における固定長データの検索および管理に係る実施例を示す機能ブロック図を図1に示す。
図1は、本発明における固定長データ検索法に係る実施例を示すブロック図である。図1に示された固定長データ検索装置10は、入力された検索命令1に対して、指定された処理を行って出力する検索命令処理手段100と、前記検索命令処理手段100の出力またはポインタ処理手段300の出力によりインデックスされるポインタテーブルを格納するポインタテーブルメモリ200と、後記比較手段500の出力または前記ポインタテーブルメモリ200の出力を前記検索命令処理手段100の出力の一部とともに演算を行い、その結果を出力する前記ポインタ処理手段300と、前記ポインタ処理手段300の出力をインデックスとしたデータベースを格納するデータベースメモリ400と、前記データベースメモリ400が出力する多数のFLDと前記検索命令1が持つサーチキーを指定されたルールで比較する比較手段500と,入力されたテーブル管理命令2に対し、比較手段500の出力により、ポインタテーブルメモリ200やデータベースメモリ400に格納されているテーブルに変更を行うテーブル管理手段600とを備える。なお、前記ポインタテーブルメモリ200とデータベースメモリ400とを単一のメモリで構成するようにしてもよい。
図2は、図1に記載した固定長データ検索装置10の検索処理フロー図である。概略を説明すると、まず検索命令1が入力される(S202)。そして検索命令処理手段100により検索命令1のサーチキーからポインタテーブルのインデックスを計算する(S204)。さらにポインタテーブルを読み出す(S206)。その後、ポインタテーブルの出力をポインタ処理手段300により処理する(S208)。それがポインタテーブルを指示すれば(S210)、ポインタテーブルの読み出し(S206)を再び行う。ポインタ処理手段300の出力がデータベースの読み出しを指示すれば、それを実行する(S212)。一回のデータベースの読み出しで比較動作(S214)が終了すれば(S216)、検索結果を出力(S218)する。前記比較動作が終了しなければ(S216〜S208)、再び、ポインタ処理でテーブルのアドレス計算が行われ、テーブルの選択(S210)が行われる。ローカルテーブルが選択された場合、固定長データテーブルの読み出し(S212)を実行する。テーブルの選択(S210)でSPTが選択された場合、ポインタテーブルからの読み出し(S206)を実行する。図1は本発明であるLPMルールによるルートテーブル(データベース)の検索法と、複数の検索ルールによるACLテーブル(データベース)の検索法を動作可能とするデータベースの細分化の方法、すなわち複数のポインタテーブルの読み出し、複数のデータベースの読み出し、そしてポインタテーブルとデータベースの組み合わせによる複数の読み出しの説明を含む。以下に固定長データ検索装置10の動作で本発明の検索法を図1、図2と共に詳細に説明する。最初にLPMルールによるルートテーブルの検索法をその本質を理解する為に32ビットIPアドレス(IPv4)に対して説明する。
[検索命令処理手段]
検索命令1は検索命令処理手段100に入力される。図3に検索命令処理手段100の機能を示す。検索命令は検索すべきIPアドレス(サーチキー12)と検索のための命令コード11から構成される。検索命令処理手段100はポインタテーブルメモリ200に格納されたポインタテーブルのインデックス102を抽出し、命令コード101、全インデックス103、サーチキー104、F151を出力する。出力されるインデックス102はIPアドレスの上位nビットである。なお、実際はポインタテーブルメモリ200のベースアドレスと上位nビットの和であるが、簡単の為、以後の説明においてもインデックス102はIPアドレスの上位nビットであるとして説明する。nは選択可能である。図でプレグループ回路110は32ビットIPアドレスの検索において、入力されるサーチキーの上位nビットをそのまま出力する。同じく出力するF151は32ビットIPアドレスの検索法では使われない。そして、32ビットIPアドレスのルートテーブルの検索では全インデックス103とサーチキー104はサーチキー12である。以後の説明において簡単の為、nは16と仮定する。ポインタテーブルの役目はデータベース内の固定長データ(FLD)をグループに分割し、そのグループ内のFLDの数(メンバー数)を少なくし、一度に比較可能なまでにすることである。
[ポインタテーブルメモリ]
図4に、ポインタテーブルメモリ200の構成例を示す。なお、図4には、ポインタテーブルメモリ200、データベースメモリ400の構成が似ている場合の例をまとめて記載したものである。図4の下段には、これらの各メモリとして使用する場合の制御信号、アドレス、データの組合せが記載されている。よって、ポインタメモリの説明はデータベースメモリにも適用可能であり、異なる場合は別途説明する。
ポインタテーブルメモリ200はメモリアレイ291から構成されるメモリ部分と書き込みおよび読み出し回路299から構成される。検索命令処理手段100の出力のポインタテーブルインデックス102(図3)はポインタテーブルメモリ200のメモリのアドレス295に使われ、読み出しデータ297がポインタ処理手段300に出力される。
書き込み機能は、書き込みおよび読み出し回路299に入力される書き込み・読み出しアドレス・制御信号293と書き込み・読み出しデータ294により与えられる書き込み命令を実行することにより実現される。ポインタテーブルメモリ200におけること書き込み機能は、主にテーブル管理手段600で使用される機能であるため、詳細な説明はテーブル管理手段600の説明において行う。
書き込みおよび読み出し回路299における読み出し機能は、2箇所からの読み出し命令を受付けて動作することができる(データベースメモリの書き込みおよび読み出し回路499では1つの読み出し命令だけを受け付ける)。読み出し命令の一つは検索命令処理手段100からの読み出し命令295であり、他はポインタ処理手段300からの読み出し命令296である。両命令とも読み出すメモリのアドレスおよび制御信号を伴っている。
ポインタテーブルメモリ200のメモリ部分はQ(Qは1以上の整数)個のメモリアレイ291から構成される。各メモリアレイ291は独立して動作するが、全ての、あるいは一部の複数のメモリアレイ291を同時に動作させることができる。Q個のメモリアレイ291を実装する理由は一度に書き込みまたは読み出すデータ量を大きくする為である。例えばメモリアレイ291のデータバス292の幅をWとすると、読み出しデータ297や書き込みデータ294のデータ幅はW*Qが得られる。
[ポインタ処理手段]
ポインタテーブルメモリ200の出力であるエントリーデータ(読み出しデータ297)はポインタ処理手段300に入力される(図1)。ポインタ処理手段300の目的は入力された情報から次の工程であるポインタテーブルメモリ、またはデータベースメモリのインデックスを出力することである。ポインタ処理手段300の入力は、ポインタテーブルの前記エントリーデータと、検索命令処理手段100の出力である全インデックス103と命令コード101とF151と、比較手段を通してデータベースメモリ400から出力されるルートテーブルのエントリー制御データとである。ポインタテーブルの前記エントリーデータとルートテーブルのエントリー制御データとは同じ形式を持つので、以降の説明では単にエントリーデータという。
図5に、ポインタテーブルメモリ200に格納されるポインタテーブルのエントリーデータの内容を示す。図5に示したように、エントリーデータは大きく分類して3つの要素に分けられる。それらは(1)次工程、(2)次の工程で必要なデータ、(3)メモリ制御データ(MCD)である。MCDは、次に読み出されるルートテーブルを格納するデータベースメモリ400を構成するメモリアレイ491を制御するデータである。すなわち、MCDはFLDが格納されているメモリアレイ491だけ読み出す機能を持つ。
ポインタテーブルのエントリーデータは次の6つの次工程のためのデータを備える。
(1)ポインタテーブルのこのエントリーに、IPアドレスは無い。
(2)ポインタテーブルのこのエントリーに、一つのIPアドレスが存在する。
(3)ポインタテーブルの再読み出し、を行う。
(4)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(5)ルートテーブルの読み出しを行い、NVC(数値比較)を実行する。
(6)ルートテーブルの読み出しを行い、比較を実行する。
これら次工程を詳しく説明する。
次工程が上記(1)である場合、すなわち、ポインタテーブルのこのエントリーにFLDとデフォルトデータが無い場合、データベースメモリ400を経て、比較手段500から、不一致の検索結果が出力され、検索が終了する。当然であるがデータベースメモリ400に入力された、この次工程のデータによって読み出し動作は行われず、当該次工程はそのまま比較手段500に出力される。
次工程が上記(2)である場合、すなわち、ポインタテーブルの当該エントリーに一つのIPアドレス、すなわちデフォルトデータ(DEF)が存在する場合、データベースメモリ400を経て、比較手段500から一致結果とDEFが出力される。データベースメモリ400は読み出されない。
次工程が上記(3)である場合、すなわち、ポインタテーブルの再読み出しを行う場合、ポインタテーブルのこのエントリーに多数のFLDが存在することを意味し、よりいっそうの細分化が必要である場合である。そのための手段として、ポインタテーブルによる細分化が図られる。最初のポインタテーブルと区別するため、このポインタテーブルをセカンダリーポインタテーブル(SPT)または2次ポインタテーブルと呼ぶ。このエントリーは、SPTのインデックスを生成させる目的で、ポインタテーブルメモリ200のベースアドレス、SPTのサイズ、全インデックスの開始ビット位置、および全インデックスの終了ビット位置を備えている。SPTのインデックスはポインタテーブルメモリ200のベースアドレスと全インデックスの開始ビット位置から終了ビット位置に存在するビットとを連結して得られる。全インデックスの開始ビット位置から終了ビット位置に存在するビットは、ポインタテーブルインデックスとは異なる部分であり、PTでこの次工程を指定される場合、開始ビット位置はn+1である。SPTのインデックスが得られた後、再びポインタテーブルが読み出される。その後の工程は、読み出されたSPTのエントリーデータに従う。
次工程が上記(4)である場合、すなわち、ローカルテーブル(LT)の読み出しを行い、比較を実行する場合、ルートテーブル内に構築されたLTの読み出しを行い、得られた多数のFLDの比較を行う。この次工程は、ポインタテーブルのこのエントリーに多数のFLDが存在することを意味し、よりいっそうの細分化を図る必要がある場合である。LTはそのための手段の一つである。LTは、ルートテーブル内の複数のエントリーがテーブルとして活用されたものである。LTのインデックスはルートテーブルのインデックスの上位部分と、全インデックスの開始ビット位置から終了ビット位置に存在するビットとを連結して得られる。LTのインデックスが得られた後は(6)の次工程のルートテーブルのインデックスが得られた後と同じである。LTとSPTの相違点は、LTがメモリ読み出し回数が少ないことと、SPTがデフォルトデータを保存することができる点である。
次工程が上記(5)である場合、すなわち、ルートテーブルの読み出しを行い、NVC(数値比較)を実行する場合は、ポインタテーブルのこのエントリーに超多数のFLDが存在することから、真剣によりいっそうのグループ化が必要となる場合である。このエントリーデータは、ルートテーブルのインデックスを備え、そのインデックスに基づいてルートテーブルの読み出しを行い、読み出されたデータに基づいてNVCを実行する。この次工程が使われることはまれなことである。NVCにおいては数値比較を行うことによりデータベースを細分化する。NVC動作の詳細な説明は、比較手段500の説明において行う。この次工程の次は(5)もしくは(6)である。(5)が選ばれる場合、このエントリーは巨大な数のFLDを持つことが予想される。
次工程が上記(6)である場合、すなわち、ルートテーブルの読み出しを行い、比較を実行する場合、このエントリーデータは、ルートテーブルのインデックスとデータベースメモリ400のメモリ制御データとを備える。そのインデックスでルートテーブルを読み出し、読み出されたデータは、サーチキーと比較される。ルートテーブルの読み出しの際、メモリ制御データにより、このエントリーに属するFLDが格納されているメモリアレイ491だけが読み出される。これにより、メモリ読み出しに必要な電力が節約される。一般に、固定長データ検索装置10による検索の大部分は、この次工程により実質的に終了する。このエントリーデータから、ルートテーブルのインデックスを得た後、ルートテーブルが読み出される。得られたルートテーブルのエントリーが比較手段に送られ比較結果が得られる。読み出されたエントリーデータの次工程は(1)である。ルートテーブルの検索法では次工程(1)、(2)そして(6)により説明される。他の次工程(3)、(4)そして(5)はポインタテーブルのエントリーに繋がるFLDの数を細分化する。図5に記述してないが、PT、SPT,LTを使ってNVC動作を実行する次工程が考えられる。それらの説明は省く。また、次工程(7)はACLテーブルの検索で説明する。デフォルトデータはデフォルトデータが有効であるか否かを判断するビットを含む。
図6にポインタ処理手段300を示す。図が示すようにポインタ処理手段300は前記入力を受けて、エントリーデータの次工程が(3)の場合、ポインタテーブルのインデックス305を、次工程が(4)、(5)、(6)の場合、ルートテーブルのインデックス306を出力する。図6に示したインデックスデータ321は、次工程が(5)、(6)の場合、ルートテーブルのインデックスを、次工程が(3)の場合、ポインタテーブルメモリ200のベースアドレスと、SPTのサイズと、開始ビット位置と、終了ビット位置を、次工程が(4)の場合、ルートテーブルのインデックスの上位ビットと、LTのサイズと、開始ビット位置と、終了ビット位置を表す。インデックス発生回路322はインデックスデータ321と、次工程304と、全インデックス303を使ってポインタテーブルのインデックス(PTIX)305とルートテーブルのインデックス(RTIX)306を作成する。次工程が(3)、(4)の場合、同じ機能であるため次工程(4)を説明する。インデックス発生回路322は「ルートテーブルのインデックスの上位ビット」の上位ビットをルートテーブルのインデックス長からLTのサイズを引いたビットを取り出し、全インデックスの開始ビット位置から、同じく終了ビット位置までを抜き取り、前者を上位ビット位置に、後者を下位ビット位置に連結してRTIX306を作成する。次工程が(5)、(6)の場合、インデックス発生回路322はインデックスデータ321をそのまま、RTIX306に出力する。そしてポインタ処理手段300は入力された,次工程304、MCD307,PTID308,DEF309、開始ビット位置310、終了ビット位置311はそのまま出力され、命令コード301、全インデックス303、F351は遅延回路を経て、次工程304等と同じタイミングに出力される。これらの信号・データはデータベースメモリ400に送られ、データベースメモリ400の読み出しデータ497とともに比較手段に送られる。命令コード301は比較手段の同期信号として使われる。
[データベースメモリ]
図4にデータベースメモリ400(図1)の構成例を示す。データベースメモリ400の説明はポインタテーブルメモリ200と同じ為、省く。データベースメモリ400に格納されるルートテーブルの構成を説明する。図7に、ルートテーブルのFLD416の構成を示す。ルートテーブルのFLD416は2つの形式が存在し、前次工程(データベースメモリ400の読み出し要求)がその形式を決定する。一つは前次工程が(4)か(6)の比較動作を指示した場合の形式(1)であり、他は前次工程(5)のNVC動作を指示した場合の形式(2)である。形式(1)は有効ビット421、プレフィックス・マスク422、IPアドレス下位(32−n)ビット423、ID422,およびユーザーデータ425から構成される。nはポインタテーブルのインデック102の長さである。形式(2)は被比較値427、ルートテーブルの変位428、MCD429から構成される。形式(1)のFLD416は内蔵するプレフィックス・マスク422の長い順に格納される。図7を例にすれば、式1が成り立つ。
LOP_FLDm≧LOP_FLDm−1≧・・・≧LOP_FLD0 式1
LOP_FLDmはFLDmが内蔵するプレフィックス・マスクの長さを意味する。同様に、形式(2)の被比較値427に対して、式2が成立する。
被比較値FLDm≧被比較値FLDm−1≧・・・≧被比較値FLD0 式2
被比較値FLDmはFLDmが内蔵する被比較値427である。被比較値は無符号値として扱われる。
エントリーデータ415の形式は図5で示される、次工程(1)、(5)、(6)で、しかもデフォルトデータは存在しない。次工程(5)に伴うメモリ制御データは全てのメモリアレイが有効であることを指示する。次工程(6)に伴うメモリ制御データはFLDを格納するメモリアレイだけが有効であることを指示し、そして、その後の次工程は常に(1)である。このためメモリ制御データの格納しているメモリアレイが読み出されなくとも問題は起きない。
データベースメモリ400の読み出しデータ497に含まれるFLDの数を説明する。図4で、例としてメモリアレイのデータバスの幅を576ビットとし、メモリアレイ数を4とすると、読み出しデータ497の幅さは2304ビットである。ユーザーデータの長さを32ビットとすると、形式(1)のFLDの長さは64ビット以下である。被比較値の長さを16ビットとすると、形式(2)のFLDの長さは32ビット以下である。すなわち、この例において、形式(1)の場合、一度に読み出されるFLD数は32個、形式(2)の場合、一度に読み出されるFLD数は64個である。これらの数のFLDが一度に比較可能である。
[比較手段]
データベースメモリ400の出力である読み出しデータ497は比較手段500に入力される。比較手段500の目的は、次工程404が(4)または(6)の場合、入力された読み出しデータのFLDと検索命令処理手段100の出力の前もって保存されたサーチキー504とを比較し(比較動作)、比較により得られた結果を出力すること、次工程404が(5)の場合、ポインタ処理手段300から出力された全インデックス403から抽出した抽出インデックスを大小比較すること、および、読み出しデータ497のエントリー制御データの次工程に従い、次の工程を決定することである。
比較手段500の実施例を図8に示す。比較手段500への入力は次の3系統存在する。(1)検索命令処理手段100の出力の命令コード101とサーチキー104。(2)データベースメモリ400の出力の命令コード401、全インデックス403、次工程404、PTID408,DEF409、開始ビット位置410、終了ビット位置411。(3)データベースメモリ400の出力の読み出しデータ497。比較手段500の出力は命令コード401と、比較結果とユーザーデータまたはデフォルトデータから構成される結果出力3と、ポインタ処理手段300に送られるエントリー制御データ501、命令コード501、全インデックス503である。図8が示すように比較手段500は保存回路510、比較回路520、次工程回路530から構成される。保存回路510はリードポートとライトポートを持つ2ポートメモリである。ライトポートは命令コード101をアドレスとしてサーチキー104を書き込む。リードポートは命令コード401をアドレスとして保存されているサーチキー504を読み出し、比較回路520に送られる。
比較回路520は2種類の比較を実行することは記述した。それを説明する。最初に次工程404が(4)または(6)の場合、読み出しデータは形式(1)のFLD416である。FLD416に内蔵されるプリフィックスマスク422を使い、IPアドレス下位(32−n)ビット423とサーチキー504が比較される(比較1)。またFLD416のID424とPTID408が比較される(比較2)。比較1と比較2が一致結果を持ち、FLD416の有効ビット421が有効であれば一致結果を得る。比較結果として、複数のFLD416が一致結果を得れば、FLD416のプリフィックスマスク422の最大値を持つFLD416が一致結果となる。即ち、一致するFLDmの中で最大のmを持つFLD416である。それが内蔵するユーザーデータと一致結果と命令コード401が結果出力3である。FLD416のひとつも一致しなかった場合、そしてDEFが有効である場合、DEFと一致結果と命令コード401が結果出力3である。FLD416のひとつも一致しなかった場合、そしてDEFが無効である場合、不一致結果と命令コード401が結果出力3である。プリフィックスマスク422は32ビットIPアドレスの場合、5ビットで表される。そしてその値はMSBからの1の数に等しい32ビットの形式に展開される。一例として、プリフィックスマスク422が18の場合、比較に使われるマスクは1111 1111 1111 1111 1100 0000 0000 0000に展開される。そして1に相当するビットが比較される。同様にポインタテーブルのインデック102の長さn(例として16とする)を0と1を逆に展開し、それと上記マスクと論理積演算を行った結果が比較に使われるマスクである。この場合、インデック102の長さnを展開すると0000 0000 0000 0000 1111 1111 1111 1111が得られる。その結果、比較に使われるマスクは0000 0000 0000 0000 1100 0000 0000 0000が得られる。このマスクを使い、上位ビットが0で、32ビット形式に展開されたIPアドレス下位(32−n)ビット423とサーチキー504が比較される。
次に次工程404が(5)の場合、読み出しデータは形式(2)のFLD416である。この場合、比較回路500はNVC比較を行う。NVC比較は、全インデックス403から開始ビット位置410と終了ビット位置411が指定した部分を抽出した値から、FLD416の被比較値427を引く演算である。一例として、開始ビット位置410と終了ビット位置411がそれぞれ16と31を示す場合、全インデックスのビット15からビット0が無符号値として抽出される。この場合、被比較値はIPアドレスの下位16ビットである。記述したが、FLD416は、FLD0の被比較値427が最小で、右に向かって大きな被比較値427となるように並べられている。この例に従えば、値の大小比較の結果は、FLD0から記述すると、大、大、大、大、小、小…のような並びが得られる。この場合、大から小に遷移する直前の「大」に対応するFLD416が有するルートテーブルの変位値428とMCD429が次工程回路に送られ、次のルートテーブルの読み出しに使われる。すなわち、NVC比較はポインタテーブルのひとつのエントリーに属する多数のFLD416を、NVC形式2のFLD416数(例を使うと64個)のグループに分割できる。
次工程回路は読み出しデータ497のエントリーデータ415の次工程が(1)の場合、比較回路520に検索終了の信号を送り、比較回路520は結果出力3を出力する。エントリーデータ415の次工程が(5)と(6)の場合、比較回路520から送られてきたルートテーブルの変位値428と、読み出しデータ497のエントリー制御データ415に格納されているインデックスデータが加えられ、出力すべきエントリー制御データ515に代入する。それに加え、エントリーデータ415の次工程、比較回路520から送られてきたMCD429、PTID408,DEF409がエントリー制御データ515を形成し、出力される。また、命令コード401と全インデックス403がそのまま命令コード501と全インデックス503に出力される。
以上がLPMルールによる、32ビットIPアドレスのルートテーブルの検索法である。図9の例を使ってまとめると、ケース1で示されるポインタテーブルのインデックスA1(サーチキーの上位16ビット)に属するIPアドレスはIP11、IP12、IP13…. IP1C, IP1Dで示される。それぞれのプリフィックスマスクは/8、/16、/17…で表す。インデックスA1を読み出して得られるDEFはIP12のユーザーデータであり、それをD/16で表す。ルートテーブルに格納されるFLD416はプリフィックスマスクが/17以上のIPアドレスである(図のケース1では。IP13からIP1Dである)。プリフィックスマスクが/16以下のIPアドレスはテーブル管理手段600により、/16以下のIPアドレスの中で最長のプリフィックスマスクを持つIPアドレスのユーザーデータがインデックスA1でアドレスされるエントリーのデフォルトデータに保存される。説明した検索方法はケース1の場合、IP14、IP17、IP1Aが一致するので、IP1Aのユーザーデータと一致結果と命令コード401が結果出力3となる。ケース2はひとつのFLD416も一致しないが、DEFが存在するので、D/8と一致結果と命令コード401が結果出力3となる。ケース3はひとつのFLD416も一致しないし、DEFが存在しないので、不一致結果と命令コード401が結果出力3となる。
また本発明の必要条件である一度に比較可能なFLD416の数までグループ化する方法はSPTとLTをあわせて利用することにより十分である。即ち、32個のFLD416を格納するデータベースメモリ400を例にすると、ポインタテーブルのインデックス長を17ビット(サーチキーのビット31からビット15)とし、SPTの変位を6ビット(全インデックスのビット14からビット9)、LTの変位を4ビット(全インデックスのビット8からビット5)に指定すればLTのエントリーはエントリーに属するすべてのIPアドレスが格納可能である。よって、本発明の細分化の機能は十分機能する。
次にLPMルールによる、128ビットIPアドレス(IPv6)のルートテーブルの検索法を説明する。検索動作はIPv4の場合と基本的に同じであるため、相違点を説明する。相違点は2個である。ひとつは128ビットのIPアドレスの細分化をより効率的に行う為、プレグループ回路110が機能する。他はプレグループ回路110の出力により、ポインタテーブルのエントリーデータとFLD416の形式が異なる。相違点に重点を置き128ビットIPアドレスの検索法を順に説明する。
[検索命令処理手段]
図3において、プレグループ回路110は,設定可能なレジスターRとサブ比較器を内蔵するサブ比較回路115をm個と、選択器116と、連結器117を持つ。プレグループ回路110はサーチキーのnビットとサーチキーを入力され、ポインタテーブルのインデックス102と、F151を出力する回路である。レジスターRは図が示すようにサブグループ、サブマスク、PTベース、F、PT開始、そして終了を保存する。サブマスクは最上位ビットから最大n個の1を持つマスクである。その1の数をサブマスクの長さと呼ぶ。その機能はサブ比較器で、サブマスクが1に相当するビットを比較する。サブマスクを使って、サーチキーのnビットとレジスターに保存されているサブグループを比較する。この動作を全てのサブ比較回路115で行う。一致したサブ比較回路115のPTベースと、Fと、PT開始と終了が選択器116により選択、出力される。m個のサブ比較回路は優先順位を持ち、複数のサブ比較回路115が一致した場合、優先順位の一番高いサブ比較回路115のレジスター内の上記パラメータが出力される。また、一致するサブ比較回路115が存在しない場合、優先順位の一番低いサブ比較回路115の上記パラメータが出力される。出力されたFを除く上記パラメータは連結器117に入力され、ポインタテーブルのインデックス102が出力される。Fは選択器から、そのまま検索命令処理手段から出力される(F151)。連結器の機能を説明する。PT開始と終了で示されるサーチキーのその間のビットを抽出し、それを下位データとするポインタテーブルのインデックス長のデータ1を作成する。データ1の上位データは0である。そして、PTベースを上位データとするポインタテーブルのインデックス長のデータ2を作成する。データ2の下位データは0である。データ1とデータ2の論理和がポインタテーブルのインデックス102である。PT開始がn+1を指定した場合、Fは1であり、その他の値の場合、0である。
[ポインタテーブルメモリ]
128ビットIPアドレスのルートテーブルの検索で、ポインタテーブルメモリ200が保存するポインタテーブルのエントリーデータはF151の値で形式が異なる。F151が1の場合、32ビットIPアドレスのそれと同じであるが、0の場合、PTIDとデフォルトデータが不必要である。
[ポインタ処理手段]
ポインタ処理手段300の機能は、F151が1の場合、32ビットIPアドレスの検索のそれと同じである。F151が0の場合、エントリーデータはPTIDとデフォルトデータは格納しないので、PTID308は0が、DEFは無効ビットつきで出力される。
[データベースメモリ]
128ビットIPアドレスの検索で、データベースメモリ400の読み出しデータの形式がF351の値で異なる。それを図7に示す。F351が1の場合、IPアドレスの長さを除き、32ビットIPアドレスの検索のそれと同じである。この場合、IPアドレス下位(128−p)ビットのpは図3で、(サブマスクの長さ)+(PT開始と終了の差)+1で表される。以後の説明では例としてpは23とする。F351が0の場合、128ビットのIPアドレスが格納され、IDは削除されている。プリフィックスマスクは7ビットで表される。
[比較手段]
比較手段500で、32ビットIPアドレスの検索のそれと異なる点は、プリフィックスマスク422の展開される形式が32ビット長ではなく128ビット長である。一例として、それが49の場合、比較に使われるマスクは16進表示でFFFFFFFFFFFF80000000000000000000に展開される。F451が1の場合、pは23であるから、同様に0と1を逆に展開し、それと上記マスクと論理積演算を行った結果が比較に使われるマスクである。この場合、pを展開すると16進表示で000001FFFFFFFFFFFFFFFFFFFFFFFFFFが得られる。その結果、比較に使われるマスクは000001FFFFFF80000000000000000000が得られる。このマスクを使い、上位ビットが0で、128ビット形式に展開されたIPアドレス下位(128−p)ビット423とサーチキー504が比較される。結果出力3の判定は、32ビットIPアドレスの検索のそれと同じである。F451が0の場合、展開されたプリフィックスマスクだけを使って、IPアドレス128ビット423とサーチキー504が比較される。結果出力3の判定は、32ビットIPアドレスの検索のそれと異なる。DEF409が無効であるため、比較結果が不一致の場合、不一致結果を結果出力3に出力する。
以上がLPMルールによる、128ビットIPアドレスのルートテーブルの検索法である。まとめると、検索命令処理手段100のプレグループ回路110を使って、最初に大きなグループを形成する。そしておのおののグループをそのグループに対応するポインタテーブルで細分化を図る。この回路を32ビットIPアドレスのルートテーブルの検索に使える。しかし前述したが、SPTとLTの活用により十分な細分化が可能な為、その使用法は説明しない。また本発明の必要条件である一度に比較可能なFLD416の数までグループ化する方法はSPTとLTに加えて、NVC法をあわせて利用することにより十分である。例えば最悪のケースとして、全ての128ビットIPアドレスがポインタテーブルのひとつのエントリーに属している場合でも、NVC法を3度繰り返すことにより8百万個の128ビットIPアドレスが検索可能である。よって、本発明の細分化の機能は十分働く。また、データベースメモリを読み出す際、複数のメモリ読み出しを連続で行うことにより、32個のFLD416を一度で比較されるために読み出すことは可能である。
IPアドレスの長さに関係なく、ポインタテーブルが保持するDEFに対応するIPアドレスのFLD416を、ルートテーブルに保存することも考えられる。しかし、ルートテーブルのFLD416が増えること、および同じFLD416が多数保存される非効率な問題を持つ。
次にACLテーブルの検索法を説明する。ACLテーブルの検索において、IPアドレスの長さは検索法に関係しない。これにより32ビットIPアドレスを例に説明する。ACLテーブルはACLテーブル1とACLテーブル2で構成することは記述した。両テーブルはデータベースメモリに格納される。ACLテーブルの検索法の基本はACLテーブル1を最初に検索することによりACLテーブルの固定長データの数の細分化を行う。その後、ACLテーブル2を、後述する細分化技術を使用して検索する。
図10はACLテーブル1とACLテーブル2を構成するFLD416を示す。ACLテーブル1のFLD416はルートテーブルの構成とまったく同じである。そのユーザーデータはACLID426と、ACLテーブル2の変位値427と、細分化データ428に分割される。ACLテーブル2のFLD416の詳細を示す。それは有効ビット(V)461、プレフィックス・マスク(PFM)462、IPアドレス(IPA)463、送信元ポートの最大値(SPH)464、送信元ポートの最小値(SPL)465、宛先ポートの最大値(DPH)466、宛先ポートの最小値(DPL)467、プロトコール(PR)468、TOSのマスク(TOSM)469、TOS470、制御フラグのマスク(CFM)471、制御フラグ(CF)472、AID473,ユーザーデータ(UD)474から構成される。ACLテーブル1が送信元IPアドレスを格納すれば、ACLテーブル2のIPAは宛先IPアドレスであり、ACLテーブル1が宛先IPアドレスを格納すれば、ACLテーブル2のIPAは送信元IPアドレスである。
ACLテーブルの検索は、最初にACLテーブル1の検索をLPMルールに従って行う。その検索法は記述した。このため、ACLテーブル1の検索結果を処理する比較手段500から説明する。
[比較手段]
ACLテーブル1のFLD416とサーチキー1が一致した場合、一致したFLD416のユーザーデータ、または一致しない場合でDEFが有効な場合のDEF(ユーザーデータと同じ形式を持つ)が得られる。一致しない場合、不一致結果が結果出力になる。ACLテーブル1の検索で注意したいことは、ACLテーブル1を読み出して得られたエントリー制御データの次工程は、ルートテーブルの比較結果を得る場合(1)であるがACLテーブル1の比較結果を得る場合(7)である(図5参照)。その機能は、比較結果が不一致の場合、不一致結果を出力し終了するが、一致の場合、ACLテーブル2の検索に移行する。ACLテーブル1の検索で得られたユーザーデータ、またはDEFから、ACLテーブル2を読み出すACLテーブル2のベースインデックス427を得る。ACLテーブル2のインデックスはその下位ビットに、細分化データ428により生成されるビットを代入して得られる。細分化データ428の有効ビット429が無効であれば、得られたACLテーブル2のベースインデックス427がACLテーブル2のインデックスである。有効ビット429が有効である場合、読み出すACLテーブル2に一度に比較できない数のFLD416が存在することを意味する。細分化データ428は一度に比較が可能とする手段を与える。細分化の例を図10に示す。図ではインデックス生成選択430とメモリ読み出し回数431が細分化データ428である。わかりやすい方法から説明する。メモリ読み出し回数431は、一回のACLテーブル2の読み出しにより、ACLテーブル2に格納されているP個のFLD416が得られるとすると、連続してメモリを読み出す回数を増やせば、比較可能なFLD416の数は2P、3P、4Pのように増加する。この目的でメモリ読み出し回数431はACLテーブル2の読み出し回数を定める。インデックス生成選択430は例として、PR分離432、IP分離0(433)、IP分離1(434)、IP分離2(435)、IP分離3(436)から構成される。前述したが、比較回路500の保存回路510はサーチキーが保存されている。ACLテーブル2のFLD416を構成するプロトコールとIPアドレスに対応する、サーチキーの保存プロトコールと保存IPアドレスを読み出し、保存プロトコールはデコードを行い、保存IPアドレスから上記データによりビットを抽出する。PR分離432が有効な場合、保存プロトコールのデコードの結果、それが例えばTCPであれば、ACLテーブル2のベースインデックス427のビット4を1に、それ以外であれば0の設定を行う。また、IP分離0(433)、IP分離1(434)、IP分離2(435)、IP分離3(436)は有効ビットとビット位置から構成されるが、それぞれの有効ビットが有効である場合、保存IPアドレスから、それぞれのビット位置で指定するビットを抽出し、抽出したビットを順にACLテーブル2のベースインデックス427のビット0、ビット1、ビット2、ビット3に代入する。このように、細分化しない場合にACLテーブル2のベースインデックス427で読み出さなければならないACLテーブル2のFLD416の数は、インデックス生成選択430を使った処理を行うことにより5ビット、32分割の細分化が実現できる。実際には均等に分割されることはないが前述のメモリ読み出し回数431を併用すれば細分化の効果は十分である。
次に、細分化後に得られたACLテーブル2のベースインデックス427を使って、ACLテーブル2を読み出すエントリー制御データ515を命令コード501とともにポインタ処理手段300に出力する。全インデックス503は無効なデータが送られる。この場合、出力される次工程は(6)であり、MCDは全てのメモリアレイの読み出しを有効にする。
[ポインタ処理手段とデータベースメモリ]
ポインタ処理手段300は記述した処理を実行し、命令コード301、次工程304、RTIX306、MCD307をデータベースメモリ400に出力し、ACLテーブル2を読み出す。
[比較手段]
ルートテーブルの検索と同様に、ACLテーブル2の読み出しデータ497のFLD416は比較回路520で、エントリーデータ415は次工程回路で処理される。エントリーデータ415の次工程は(1)である。複数の連続したメモリ読み出しが行われた場合、エントリーデータ415は全て同じである。読み出されたFLD416は保存回路に保存されているサーチキーを読み出し、それと比較される。ACLテーブル2のFLD416の詳細は図10を参照し、略語で説明する。また読み出されたサーチキーの部分には保存を先頭につける。例えば、保存IPアドレス。FLD416のPFM462とIPA463は保存IPアドレスと比較される(比較1)。PFM462は5ビット(7ビット)であり、LPMルールで説明した方法で展開される。展開されたマスクを使ってIPA463と保存IPアドレスが比較される。IPA463は32ビット(128ビット)で全ビットが比較される。ビット数はIPv4の場合で、カッコ内はIPv6の場合である。保存送信元ポートはSPH464そしてSPL465と比較される(比較2)。保存送信元ポートの値がSPH464とSPL465の間にある場合、一致と認識される。保存宛先ポートはDPH466そしてDPL467と比較される(比較3)。保存宛先ポートの値がDPH466とDPL467の間にある場合、一致と認識される。保存プロトコールはPR468と比較される(比較4)。保存TOSはTOSマスク、TOSM469を使って、マスクされていないTOS470のビットと比較される(比較5)。保存制御フラグはCFマスク、CFM471を使って、マスクされていないCF472のビットと比較される(比較6)。ユーザーデータ425のACLID426とAID473が比較される(比較7)。比較1から比較7、全ての比較結果が一致であれば、そのFLD416はサーチキーと一致したと判断される。一致したFLD416が2個以上存在すれば、そのうち優先順位が一番高いFLD416のUD474と一致結果と命令コード401が結果出力3である。ひとつのFLD416も一致しなかった場合、不一致結果と命令コード401が結果出力3である。本発明の重要な点である、ACLID426とAID473の比較法を詳しく説明する。ACLID426とAID473は同じ形式を持つ。ACLID426は一致IDと範囲IDから構成される。一致IDは、読み出しデータ497に複数の異なるグループが存在する場合、それを区別する目的で比較される。ACLID426の範囲IDがAID473の範囲IDの値以上であれば一致と判断される。その理由を説明する。ACLテーブル2に格納されている、細分化されたグループのFLD416は、ACLテーブル1の検索で一致したIPアドレスに属する。しかし、一致したIPアドレスは複数存在する可能性がある。それらの例をIP0、IP1、IP2、IP3とし、IP0,IP1,IP2,IP3の順でそれらのプリフィックスマスク長が長くなるとする。ACLテーブル1の検索で、プリフィックスマスク長が最長のIP3が選択されれば、このグループに属する全てのFLD416が比較対象となる。しかし、ACLテーブル1の検索で、IP2が選択された場合、IP3に関係するFLD416は比較対象から除かれなければならない。このため、それを実現する為に、IP3に関係するFLD416の範囲IDに例として3を割り当てる。同様に、IP0、IP1、IP2に関係するFLD416の範囲IDにそれぞれ0,1,2を割り当てる。このようにACLID426とAID473を設定すると、ACLテーブル1の検索で、IP3が選択された場合、そのACLID426の範囲IDが3であるから、3を含むそれ以下のAID473の範囲IDをもつ、グループ内の全てのFLD416のAID473が一致する。IP1が選択された場合、そのACLID426の範囲IDが1であるから、グループ内のACLID426の範囲IDが0と1を持つFLD416が比較対象となる。
以上で、ACLテーブルの検索は、ACLテーブル1の検索に続いて、ACLテーブル2の検索を行うことにより実現可能であることを説明した。この手法は他に応用できる。例えば、送信元IPアドレスで構成されるACLテーブル1の検索、その結果で、宛先IPアドレスで構成されるACLテーブル2の検索、その結果で、送信元ポートと宛先ポートで構成されるACLテーブル3の検索、その結果でプロトコール、TOS、制御フラグで構成されるACLテーブル4の検索を行いACLテーブルの検索が実現できることは明らかである。しかし、検索時間が長くなる欠点がある。
[テーブル管理手段]
次にテーブル管理手段600の機能を説明する。テーブル管理手段600は基本的にプロセッサーとそのプログラムを格納するメモリから構成される。そのプロセッサーの処理可能なアドレス空間にポインタテーブルメモリ200とデータベースメモリ400はマップされている。プロセッサーからの両メモリに対する書き込みと読み出しは書き込み・読み出しアドレス制御信号(293と493)と書き込み・読み出しデータ(294と494)を使って行われる(図4)。またテーブル管理手段600は検索命令処理手段100、ポインタ処理手段300、比較手段500に保持される、テーブル管理命令2の実行状況を読み出すインターフェイスを備える(図1の点線で示す)。
本発明であるルートテーブルとACLテーブルを検索する方法を実現する為には、それらのテーブルの構築にいろいろな条件が存在する。それらの条件を実現することが、テーブル管理手段600の役目である。それらの条件を満たすためのテーブル管理手段600の機能を、それぞれのテーブル構築で説明する。
最初に32ビットIPアドレスのルートテーブルの構築法を説明する。なお、128ビットIPアドレスの場合も基本的には同じである。ルートテーブルはネットワークが備えるルーティングの機能により構築される。このため、ルートテーブルのテーブル管理命令2はひとつのIPアドレスの付加命令と削除命令である。初期条件設定などのテーブル管理命令2は本発明に関係がないためその記述はしない。テーブル管理命令2と検索命令1は命令コードにより互いに区別される。またIPアドレスの付加命令と削除命令はテーブル管理手段600で処理されるが、同時に検索命令処理手段100で処理され検索が行われる。ただし、IPアドレスの付加命令と削除命令の命令コードを伴う検索は、検索過程で与えられたテーブル管理命令2の実行に必要なパラメータを保持する、そして結果出力3は出力しない。必要なパラメータの例として、検索命令処理手段100はポインタテーブルのインデックスと全インデックスを、ポインタ処理手段300はルートテーブルのインデックスとSPTのインデックスを、比較手段500は比較結果と、一致した場合、読み出しデータ497に格納されている、一致したFLD416の位置と、NVC比較の場合、NVC比較の結果と選択されたFLD416の位置、プリフィックスマスク長比較の場合、プリフィックスマスク長比較の結果と選択されたFLD416の位置、等を保存する。これらのパラメータを使ってテーブル管理手段600はIPアドレスの付加命令と削除命令を実行する。IPアドレスの付加と削除は、付加・削除されるIPアドレスのプレフィックス長に依存する。それがポインタテーブルのインデックス長(mとする)以下の場合、ポインタテーブルの処理になり、それがm+1以上の場合、ルートテーブルの処理になる。ポインタテーブルとルートテーブルについて詳しく説明する。検索命令処理手段100に保持されているポインタテーブルのインデックスでアドレスされるポインタテーブルの読み出しデータは、ポインタ処理手段300に保存されるルートテーブルのインデックスを含む。ルートテーブルのインデックスで読み出されるIPアドレスのプレフィックス長はm+1以上であり、そのIPアドレスの上位mビットはポインタテーブルのインデックスと当然であるが同じである。デフォルトデータが有効である場合、m以下のプレフィックス長を持つIPアドレスの中で最大のプレフィックス長をもつIPアドレスのユーザーデータがデフォルトデータである。m以下のプレフィックス長を持つIPアドレスは、そのプレフィックス・マスクを使って、IPアドレスの上位mビットとポインタテーブルのインデックスを比較すると一致する。可能性として、デフォルトデータを無効とするルートテーブルを構築する場合、m以下のプレフィックス長を持つ全てのIPアドレスを、または最大のプレフィックス長をもつIPアドレスを、ルートテーブルに保存する必要がある。この場合、ルートテーブルに同じIPアドレスが2の(m−プレフィックス長)べき乗個書き込む必要があり、無駄が生じる。これを例により示す。サーチキーを12345678(16進形式)とする。ポインタテーブルのインデックスは1234である。それにより、ルートテーブルを読み出して得られる、IPアドレスはプレフィックス長17以上で、1234xxxxである。xは0からFの値それらのIPアドレスに加えて、この例でプレフィックス長が8と12のIPアドレス、すなわち16進表示でIPアドレス12xxxxxxと123xxxxx(xは0からFの値)、が存在した場合、IPアドレス123xxxxxのユーザーデータがデフォルトデータであり、ポインタテーブルのロケーション1234のデフォルトデータに保存される。デフォルトデータを無効とするルートテーブルを構築する場合、ポインタテーブルのインデックス123xで読み出される、ルートテーブルのインデックスでアドレスされるルートテーブルに、IPアドレス123xxxxxを保存する(16個の同じIPアドレスの書き込みを行う)。必要とあればポインタテーブルのインデックス12xxで読み出される、ルートテーブルに、IPアドレス12xxxxxxを保存する(256個の同じIPアドレスの書き込みを行う)。
付加・削除の機能の説明に戻る。デフォルトデータが有効であるポインタテーブルの処理の場合、例としてポインタテーブルのインデックス長を16で、付加・削除されるIPアドレスのプリフィックス長を8とする。この例では、テーブル管理手段600の持つルートテーブルのコンテキストの変更に加えて、ポインタテーブルのエントリーのデフォルトデータの処理を行う。その数は最大256存在する。ポインタテーブルメモリ200がデータ幅の広いメモリを使うことは記述した。これを利用して、書き込み及び読み出し回路299は複数のエントリーを一度に処理できる機能を備える。例えばメモリアレイ291のデータバス292のバス幅を576ビットとすると、8個のエントリーが一度に処理できる。この場合、テーブル管理手段600はポインタテーブルメモリ200に対し、書き込みデータ(デフォルトデータ)とマスクと書き込みアドレスを与えればよい。図11に示す、このフィルオーダー610を使い、最大256回の書き込みが32回の書き込み命令でポインタテーブルの変更が可能であり、テーブル管理命令の高速実行が可能である。
付加・削除されるIPアドレスのプリフィックス長が18の場合、ルートテーブルの修正が行われる。検索で一致した場合、テーブル管理手段600は付加命令に対し、ポインタ処理手段300の保持するルートテーブルのインデックスと比較手段500の保持するFLD416の位置情報を使い、ユーザーデータの変更を行う。削除命令に対しては、各手段の保持する情報を使い一致したFLD416を削除する。検索で一致しない場合、テーブル管理手段600は削除命令に対しては何も行わない、付加命令に対して、検索で一致しない場合、そしてポインタ処理手段300の保持するルートテーブルのインデックスで、読み出しデータ497内に付加されるFLD416を保存するスペースがある場合、ルートテーブルのそのインデックスに保存されているFLD416のプリフィックス長の比較オーダーをデータベースメモリ400に発行し、比較結果として、付加されるFLD416の位置を得る。比較オーダー620を図11に示す。テーブル管理手段600は、そのアドレスを読み出しFLD416のシフト動作を行うシフトオーダーを発行する。シフトオーダー630を図11に示す。シフトオーダーはシフト量と、シフト方向と、シフトマスクと、シフト元アドレス(読み出しアドレス)と、シフト先アドレス(書き込みアドレス)から構成される。そしてシフト動作の結果、空いたロケーションに付加するFLD416を書き込む。付加されるFLD416を格納するロケーションが存在しなければ、次の二つのいずれかで処理される。全てのロケーションは同じグループのFLD416で、占められている場合と、複数のグループのFLD416で、占められている場合である。前者の場合、メモリ読み出し回数を増やすか、LT,SPT等の細分化を適用する。LTを構築する場合、LTのインデックスを生成するとき、使われた全インデックスのビット位置とプリフィックスマスク位置が一致するIPアドレスは、その位置によりLT内で複数回書き込む必要がある。SPTを構築する場合には、LTのように複数回書き込むケースはない。理由はデフォルトデータが存在するからである。後者の場合、他のグループ、または付加されるべきグループを他のアドレスに移動し、空きロケーションを作る、そして前記のシフトオーダーを発行し、その後付加すべきFLD416を書き込む。FLD416の付加後、または削除後、関連するテーブル管理手段600のコンテキストを修正する。以上がルートテーブルに発行される付加命令および削除命令に対するテーブル管理手段600の機能である。
ACLテーブルに対して、テーブル管理手段600が行う機能はルートテーブルに対する記述されたその機能より簡単である。ACLテーブルの付加・削除命令は基本的にない。すなわち、ACLテーブルが修正されるとき、ACLテーブルを構築する、すべてのFLD416が削除され、新しく格納される全てのFLD416が書き込まれる。この理由により、ACLテーブルに対するテーブル管理命令2は構築命令である。構築命令はACLテーブル1のポインタテーブルのエントリーに属するFLD416のグループを優先順位に従って送られる。このため、テーブル管理手段600は送られるFLD416を、ACLテーブル1を構成するIPアドレスを除き、順次ACLテーブル2に書き込む。除かれたIPアドレスはプリフィックスマスク長の順に並べて、ACLテーブル1に書き込み、そのポインタテーブルのエントリーを生成する。構築命令はACLテーブル1とACLテーブル2の構築に必要なヒントを含む。ヒントはACLテーブル1に対してFLD416の数、ACLテーブル2に対してFLD416の数、細分化情報(メモリ読み出し回数、ACLテーブル2のIPアドレスのビット位置等)である。(ヒント情報はテーブル管理手段600で生成可能である。)
テーブル管理手段600はルートテーブルとACLテーブルに対する上記機能に加えて、それらの固定長データテーブルの使用効率を高めるリソースマネージメント機能をもつ。この機能は一般的にペアリング機能と呼ばれる。固定長データテーブルの読み出しデータ497が32個の固定長データを保存できる例で、例えば二つのポインタテーブルの読み出しデータ297が固定長データテーブルのインデックス、それぞれIXAとIXBを保持し、それに対応する固定長データが14個と18個保存されている場合を考える。図11に示す。この場合、固定長データテーブルのインデックスIXAとIXBで読み出されるデータにはそれぞれ18個と14個の空きロケーションが存在し、使用効率が非常に悪い。使用効率を改善する為に、テーブル管理手段600は、例えば、固定長データテーブルのインデックスIXCに上記14個と18個の固定長データを保存し、空きロケーションをなくす機能を持つ。この場合、ポインタテーブルのIXAとIXBはIXCに変更される。検索で異なるグループに属する固定長データが比較されるため、ルートテーブルではIDで、ACLテーブルではAIDでまちがった比較結果が得られないようにする。空きロケーションをなくす手法で2個のグループで説明をしたが、この例では2から最大32個のグループで空きロケーションをなくしてもよい。
テーブル管理手段600の機能を固定長データ検索および管理装置10から外部手段に委譲することが出来る。この場合、ポインタテーブルメモリ200に格納されるポインタテーブルに、データベースメモリ400に格納されるルートテーブルとACLテーブルに、その構造を含めた書き込まれるFLD416は外部手段で作成し、単純なメモリ書き込み機能で書き込まなければならない。付加されるFLD416の検索を考えると、外部手段のテーブル管理手段600を伴う固定長データ検索および管理装置10は付加命令と削除命令を実行することに大きな時間がかかる。
図12に本発明のコンピュータプログラムおよび記録媒体の適用可能なハードウェアの構成例を示すブロック図を示す。図12において、コンピュータシステム90は、システムバス94に接続されたCPU(Central Processing Unit)91と、記憶装置92と、入出力装置93とを含む。CPU91は、少なくとも演算装置と制御装置とを備え、記憶装置92は例えば内蔵主記憶メモリ、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブなどで構成される。コンピュータシステム90に本発明のコンピュータプログラムがインストールされると、前記コンピュータプログラムは前記ハードディスクドライブ内に格納され、必要に応じて前記主記憶メモリにロードされる。記憶装置55の前記主記憶メモリにより、またはCPU91が備えるキャッシュメモリにより、本発明におけるポインタ・テーブル・メモリ、データベースメモリ等が構成される。入出力装置93は、複数の入出力ポートを備えて外部とのデータ通信を行うことが出来る。記憶装置92内の例えばハードディスクドライブやフロッピー(登録商標)ディスクドライブなどにより、本発明のコンピュータプログラムが記録された記録媒体からプログラムが読み出される。
以上のように、いくつかの例示的な実施形態が本発明に関して詳細に説明された。当業者には、本発明の新規な開示および効果から実質的に離れることなくこれら実施形態を様々に改良することが可能であることが分るであろう。したがって、そのような改良も全て本発明の範囲に含められるべきことが意図されている。
図1は、本発明のある実施の形態における本発明固定長データ検索および管理装置に係る実施例を示すブロック図である。 図2は、本発明のある実施の形態における固定長データ検索装置10の動作を示すフローチャートである。 図3は、本発明のある実施の形態における固定長データ検索装置10を構成する検索命令処理手段100の機能を示すブロック図である。 図4は、本発明のある実施の形態における固定長データ検索装置10を構成するポインタテーブルメモリ200の構成と、固定長データ検索装置10を構成するデータベースメモリ400の構成を示すブロック図である。 図5は、本発明のある実施の形態におけるポインタテーブルのエントリーデータの形式およびその内容と、ルートテーブルとACLテーブル1と、ACLテーブル2のエントリー制御データの形式およびその内容を示す図である。 図6は、本発明のある実施の形態における固定長データ検索装置10を構成するポインタ処理手段300の機能を示すブロック図である。 図7は、本発明のある実施の形態におけるルートテーブルの内容を示す図である。 図8は、本発明のある実施の形態における固定長データ検索装置10を構成する比較手段500の機能を示すブロック図である。 図9は、本発明のある実施の形態におけるルートテーブルを構成するIPv4アドレスをLPMルールで検索する概念図である。 図10は、本発明のある実施の形態におけるACLテーブル1とACLテーブル2の内容を示す図である。 図11は、テーブル管理手段の発行するオーダーの形式とペアリング手法を示す図である。 図12は、本発明のある実施の形態における本発明のコンピュータプログラムおよび記録媒体を適用可能なコンピュータシステムの構成例を示すブロック図である。
符号の説明
10 固定長データ検索装置
100 検索命令処理手段
200 ポインタテーブルメモリ
300 ポインタ処理手段
400 データベースメモリ
500 比較手段
600 テーブル管理手段

Claims (14)

  1. 検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
    前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
    前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
    前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
    前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
    入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と
    を備える固定長データ検索装置。
  2. 固定長データテーブルを構成する全ての固定長データの中で、前記ポインタテーブルのインデックス(mビット長)と固定長データの上位mビットのうち、固定長データに付属するプリフィックスマスクで示されるビットだけを比較して、一致する固定長データを選出し、
    一致する固定長データをすべて固定長データテーブルに保存するか、または
    一致する固定長データのプリフィックスマスクの長さがm+1以上である固定長データを固定長データテーブルに保存し、かつ、一致する固定長データのプリフィックスマスクの長さがm以下である固定長データのうちで一番大きなプリフィックスマスクの長さを持つ固定長データを固定長データテーブルに保存することを特徴とする請求項1に記載の固定長データ検索装置。
  3. 前記比較手段が、比較結果が不一致でポインタテーブルの出力にデフォルトデータが存在する場合に、一致結果とそのデフォルトデータを検索結果として出力し、比較結果が不一致でポインタテーブルの出力にデフォルトデータが存在しない場合に、不一致結果を検索結果として出力することを特徴とする請求項1に記載の固定長データ検索装置。
  4. 固定長データテーブルを構成する全ての固定長データの中で、前記ポインタテーブルのインデックス(mビット長)と固定長データの上位mビットのうち、固定長データに付属するプリフィックスマスクで示されるビットだけを比較して、一致する固定長データを選出し、
    一致する固定長データのプリフィックスマスクの長さがm+1以上である固定長データを固定長データテーブルに保存し、
    一致する固定長データのプリフィックスマスクの長さがm以下である固定長データのうちで一番大きなプリフィックスマスクの長さを持つ固定長データのユーザーデータを前記デフォルトデータとしてポインタテーブルに保存することを特徴とする請求項3に記載の固定長データ検索装置。
  5. 検索すべき固定長データが複数の要素から構成されており、
    前記データベースメモリが、検索すべき固定長データの個々の要素を保存する固定長データテーブルを複数格納するか、または、複数の要素をグループ化して保存する固定長データテーブルを複数格納することを特徴とする請求項1に記載の固定長データ検索装置。
  6. 前記データベースメモリに複数の固定長データテーブルが格納されており、
    最後に検索される固定長データテーブルを除き、各固定長データテーブルは、
    要素と、
    該要素に一致するものがある場合に次に検索する固定長データテーブルのインデックスと、
    該インデックスにより読み出される要素の数を細分化するパラメータと、
    要素の比較を有効にするIDと
    を保存することを特徴とする請求項1に記載の固定長データ検索装置。
  7. 前記比較手段が検索結果を出力する出力手段をさらに備えており、
    検索すべき固定長データの要素が複数の固定長データテーブルに保存されており、
    前記比較手段は、複数の固定長データテーブルに対して、
    (1)検索する固定長データテーブルを定めて今次の固定長データテーブルとし、該今次の固定長データテーブルからの固定長データをサーチキーと比較し、
    (2)該比較において不一致の場合には検索結果を前記出力手段から出力し、該比較において一致した場合には、該今次の固定長データテーブルの次の固定長データテーブルから読み出すための読み出し指令を前記ポインタ処理手段に発行するとともに、前記読み出し指令に応じてデータベースメモリから読み出された当該次の固定長データテーブルからの固定長データとそれに対応するサーチキーの一部とをさらに比較し、
    (3)最後の固定長データテーブルに格納している最後の固定長データとなるまで(1)から(2)を繰り返すことを特徴とする請求項1に記載の固定長データ検索装置。
  8. 前記テーブル管理手段は、ポインタテーブルと固定長データテーブルの修正に必要な情報を保持する手段と該保持した情報を読み出す手段とを備えており、
    前記テーブル管理手段は、入力されたテーブル管理命令に対応する命令コードを持つ検索命令を生成して該命令コードの処理を実行し、前記保持する手段に該検索実行過程でポインタテーブルと固定長データテーブルの修正に必要な情報を保持することを特徴とする請求項1に記載の固定長データ検索装置。
  9. 前記テーブル管理手段は、ポインタテーブルと固定長データテーブルを修正するために、それらが格納されているポインタテーブルメモリとデータベースメモリのもつ構造上の特徴を利用するフィルオーダー、シフトオーダー、比較オーダーを発行する手段を備えることを特徴とする請求項1に記載の固定長データ検索装置。
  10. 前記テーブル管理手段は、固定長データテーブルに保存する固定長データの数を最大化するため、ペアリング手法を使い固定長データテーブルの空きロケーションをなくす手段を備えることを特徴とする請求項1に記載の固定長データ検索装置。
  11. 検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理ステップと、
    前記検索命令処理ステップの出力値をインデックスにしてポインタテーブルからポインタ値を読み出すステップと、
    前記ポインタテーブルから読み出された前記ポインタ値と検索命令処理ステップの出力値とを用いて、指定された処理を行って前記サーチキーに対応するアドレスを出力するポインタ処理ステップと、
    前記ポインタ処理ステップの出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルから複数の固定長データを読み出すステップと、
    前記固定長データテーブルから読み出された複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較するステップであって、比較結果が一致の場合、一致結果と一致した固定長データのユーザーデータを検索結果として出力する比較ステップと
    を有する固定長データ検索方法。
  12. 前記比較ステップが、比較結果が不一致でポインタテーブルの出力にデフォルトデータが存在する場合、一致結果とそのデフォルトデータを検索結果として出力し、比較結果が不一致でポインタテーブルの出力にデフォルトデータが存在しない場合、不一致結果を検索結果として出力するものである、請求項11に記載の固定長データ検索方法。
  13. 検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理ステップと、
    前記検索命令処理ステップの出力値をインデックスとしてポインタテーブルからポインタ値を読み出すステップと、
    (1)前記ポインタテーブルから読み出された前記ポインタ値と検索命令処理ステップの出力値と、または比較ステップの出力値とを用いて、指定された処理を行って前記サーチキーに対応するアドレスを出力するポインタ処理ステップと、
    (2)前記ポインタ処理ステップの出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを読み出すステップと、
    (3)指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを、前記入力された検索命令のサーチキーの複数の固定長データに対応する部分と同時に比較し、比較結果が一致した場合、次の固定長データテーブルを読み出す命令をポインタ処理ステップに出力する比較ステップと、
    検索すべき固定長データを構成する要素を固定長データとして保存する複数の固定長データテーブルに対して(1)から(3)のステップを繰り返し、最後の固定長データテーブルが読み出され、指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを、前記入力された検索命令のサーチキーの固定長データに対応する部分と同時に比較し、比較結果が一致した場合、一致結果と一致した固定長データに伴うユーザーデータを、比較結果が不一致の場合、不一致の検索結果を出力する比較ステップと
    を有する固定長データ検索方法。
  14. コンピュータを、請求項1〜請求項10のいずれかに記載の装置として機能させることを特徴とするコンピュータプログラム。
JP2008062589A 2008-03-12 2008-03-12 固定長データの検索方法 Expired - Fee Related JP4995125B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008062589A JP4995125B2 (ja) 2008-03-12 2008-03-12 固定長データの検索方法
US12/140,590 US8010557B2 (en) 2008-03-12 2008-06-17 Retrieving method for fixed length data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008062589A JP4995125B2 (ja) 2008-03-12 2008-03-12 固定長データの検索方法

Publications (2)

Publication Number Publication Date
JP2009219012A true JP2009219012A (ja) 2009-09-24
JP4995125B2 JP4995125B2 (ja) 2012-08-08

Family

ID=41064138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008062589A Expired - Fee Related JP4995125B2 (ja) 2008-03-12 2008-03-12 固定長データの検索方法

Country Status (2)

Country Link
US (1) US8010557B2 (ja)
JP (1) JP4995125B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114422164A (zh) * 2021-11-29 2022-04-29 杭州迪普科技股份有限公司 五元组表项下发装置及方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9406381B2 (en) * 2010-08-01 2016-08-02 Gsi Technology Israel Ltd. TCAM search unit including a distributor TCAM and DRAM and a method for dividing a database of TCAM rules
US9460300B1 (en) * 2012-09-10 2016-10-04 Google Inc. Utilizing multiple access control objects to manage access control
US20140095785A1 (en) * 2012-09-28 2014-04-03 Broadcom Corporation Content Aware Block Power Savings
US9473732B2 (en) * 2013-05-31 2016-10-18 Arris Enterprises, Inc. Self correcting record pipeline
US11347706B2 (en) * 2015-12-31 2022-05-31 Scott W. McLellan Rotor movement control and rotor wiring for rotor-based encryption machines and electronic equivalents
WO2017117459A1 (en) * 2015-12-31 2017-07-06 F5 Networks, Inc. Transparent control and transfer of network protocols
JP2017147662A (ja) * 2016-02-18 2017-08-24 株式会社オートネットワーク技術研究所 中継装置
US10778721B1 (en) * 2016-02-26 2020-09-15 Arista Networks, Inc. Hash-based ACL lookup offload
CN105721303B (zh) 2016-03-31 2018-05-18 华为技术有限公司 一种路由控制方法、网络设备及控制器
US10708272B1 (en) 2017-02-10 2020-07-07 Arista Networks, Inc. Optimized hash-based ACL lookup offload

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004046988A (ja) * 2002-07-12 2004-02-12 Fujitsu Ltd 連想メモリ装置及びそれを用いた中継装置
JP2004229163A (ja) * 2003-01-27 2004-08-12 Internatl Business Mach Corp <Ibm> 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体
WO2005104456A1 (ja) * 2004-03-31 2005-11-03 Ipt Corporation 固定長データの検索装置および検索管理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7178100B2 (en) * 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
JP2002334114A (ja) * 2001-05-10 2002-11-22 Allied Tereshisu Kk テーブル管理方法及び装置
US7054315B2 (en) * 2001-09-17 2006-05-30 Pmc-Sierra Ltd. Efficiency masked matching
US7415463B2 (en) * 2003-05-13 2008-08-19 Cisco Technology, Inc. Programming tree data structures and handling collisions while performing lookup operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004046988A (ja) * 2002-07-12 2004-02-12 Fujitsu Ltd 連想メモリ装置及びそれを用いた中継装置
JP2004229163A (ja) * 2003-01-27 2004-08-12 Internatl Business Mach Corp <Ibm> 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体
WO2005104456A1 (ja) * 2004-03-31 2005-11-03 Ipt Corporation 固定長データの検索装置および検索管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114422164A (zh) * 2021-11-29 2022-04-29 杭州迪普科技股份有限公司 五元组表项下发装置及方法
CN114422164B (zh) * 2021-11-29 2023-09-15 杭州迪普科技股份有限公司 五元组表项下发装置及方法

Also Published As

Publication number Publication date
JP4995125B2 (ja) 2012-08-08
US8010557B2 (en) 2011-08-30
US20090234841A1 (en) 2009-09-17

Similar Documents

Publication Publication Date Title
JP4995125B2 (ja) 固定長データの検索方法
US6697363B1 (en) Method and apparatus for longest matching prefix determination in a communication network
US8856203B1 (en) System and method for algorithmic TCAM packet classification
US6434144B1 (en) Multi-level table lookup
US7403494B2 (en) Method for generating nodes in multiway search tree and search method using the same
US7565343B2 (en) Search apparatus and search management method for fixed-length data
JP3782950B2 (ja) 圧縮検索テーブルを用いるプレフィックス検索方法およびデータ構造
KR100748772B1 (ko) 최장의 정합 어드레스 탐색장치 및 방법
US8880507B2 (en) Longest prefix match using binary search tree
US8325721B2 (en) Method for selecting hash function, method for storing and searching routing table and devices thereof
US6618760B1 (en) Forwarding information retrieval technique
US20050171959A1 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
US20050243827A1 (en) Lookup engine
KR20100120812A (ko) Ip주소 검색을 위한 장치 및 방법
JP5960863B1 (ja) 検索装置、検索方法、プログラム、及び記録媒体
JP3570323B2 (ja) アドレスに関するプレフィクスの格納方法
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
US20030009474A1 (en) Binary search trees and methods for establishing and operating them
JP2004194343A (ja) パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法
KR100420957B1 (ko) 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치
Erdem et al. Value-coded trie structure for high-performance IPv6 lookup
JP2003500901A (ja) 最長一致プレフィックス・ルックアップ
WO2003003250A1 (en) Range content-addressable memory
JP6205463B2 (ja) 検索装置、検索方法、プログラム、及び記録媒体
Zhao et al. Pipelined architecture for fast IP lookup

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120207

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120327

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: 20120413

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120509

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

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees