JP3823089B2 - 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 - Google Patents
固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 Download PDFInfo
- Publication number
- JP3823089B2 JP3823089B2 JP2003016979A JP2003016979A JP3823089B2 JP 3823089 B2 JP3823089 B2 JP 3823089B2 JP 2003016979 A JP2003016979 A JP 2003016979A JP 2003016979 A JP2003016979 A JP 2003016979A JP 3823089 B2 JP3823089 B2 JP 3823089B2
- Authority
- JP
- Japan
- Prior art keywords
- fixed
- memory
- length data
- data
- address
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Small-Scale Networks (AREA)
Description
【発明の属する技術分野】
本発明は、データのビット長が一定である固定長データを検索するための装置及び方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体に関し、特に、ネットワーク間中継装置におけるMACアドレスを高速に検索するための装置及び方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】
従来のネットワーク間中継装置に使用される中継先判定用データベースは、複数のサーチキーが同一のハッシュ値に変換されるため、MAC(Media Access Control)アドレス・テーブルの再構築に長時間を要したり、或いは、MACアドレス・テーブルで必要な情報をサーチするのに長時間を要したりして、ハッシュ関数を利用しても効率的なサーチが行なえないという問題があった。これを解決する方法として、例えば、学習時と実際の中継先判定時とで異なるハッシュ・テーブルを使用し、且つMACアドレス・テーブルの各エントリに、前記した両方のハッシュ・テーブル用のメモリ・ポインタを持たせておくようにしたものがある。(例えば、特許文献1参照)
【0003】
【特許文献1】
特開平10−210066号公報
【0004】
従来、ネットワーク間中継装置に使用されるL2(OSI(Open System Interconnection)参照モデルの第2層)スイッチ、L3(OSI参照モデルの第3層)スイッチ等のネットワーク・スイッチ手段において、十数万を超えるMACアドレスをサポート出来るシステムは、多くのサーバーやクライアントをサポートできる反面、MACアドレスに該当するポートを特定する為には、MACエントリ・テーブル・メモリが保持している全てのMACアドレスを検索した上で、MACアドレスに対応したポートを探し出さなければならなかった。これは十数万を超すMACアドレスを持つ大規模ネットワーク・スイッチ手段にとっては、スイッチの性能を落とす大きな要因となる。
【0005】
図11はMACアドレスの構造を示す図である。MACアドレスはデータリンクに接続しているノードを識別するために利用されるもので、IEEE802.3で規格化されている。MACアドレスは、48bitの固定長データであり、その3〜24bitはベンダ識別子を示し、25〜48bitはベンダ内での識別子を示す。前記ベンダ識別子は正式にはOUI(Organizationally Unique Identifier)と呼ばれ、IEEEがベンダごとに重ならないように管理しているアドレスである。また、前記ベンダ内での識別子は、ベンダが製品ごとに重ならないように管理しているアドレスである。
【0006】
伝送されるフレームやパケットには、送信先を示す宛先MACアドレスと、送信元を示す送信元MACアドレスとが付加されて伝送される。一方、L2スイッチ、L3スイッチ、ルータ等のスイッチ手段は、フレームやパケットの送信先ポートを特定するために、MACエントリ・テーブル・メモリを持っている。MACエントリ・テーブル・メモリはMACアドレス・テーブルを格納するメモリであり、MACアドレス・テーブルはMACアドレスとそのポートアドレス等の対応関係を示す情報の一覧表であり、多数のMACアドレスに関する情報を保持している。
なお、MACアドレス・テーブルは、受信したフレームのヘッダから分離された送信元MACアドレスの情報に基づいて作成される。また、MACアドレス・テーブルを用いてMACアドレスを検索するときには、受信したフレームのヘッダから分離された宛先MACアドレスを用いて実行される。
【0007】
スイッチ手段において十数万を超えるMACエントリ・テーブル・メモリから任意のMACアドレスを高速に検索する場合は、一般的に、(1)一時的にMACアドレスを保持できるキャッシュメモリを持ち、受信した宛先MACアドレスをキャッシュメモリにすでに保持している場合は、このキャッシュメモリから宛先MACアドレスに該当するポートアドレスを導き出して、このポートに対してのみ転送を行う。また、(2)上記キャッシュメモリに当該宛先MACアドレスをまだ保持していない場合は、送信元ポート以外の全ポートに転送を行う、いわゆるブロードキャストを行う必要がある。
【0008】
上記(1)の場合、キャッシュメモリの現実的なサイズでは数十万を超すMACアドレスを格納することが困難であり、スイッチ手段がそのキャッシュサイズで対応可能な量以上の通信を行った場合は、上記(2)に記したブロードキャストを行う頻度が高くなる。
ブロードキャストは、関係する全てのネットワークに対して同時にパケットを載せる処理を行う為、関係するネットワークの負荷が増大する。そして、結果的に全てのネットワークを一時的に止めてしまうような動作状態に陥ってしまうことがあり、これが、関係するスイッチ手段のスループットを低下させる結果に繋がっている。
【0009】
上記(1)に記したようなキャッシュをする例では、CAM(Content Addressable Memory:連想メモリ)を使用する。CAMを使用した場合、MACアドレスの高速検索(以下、高速サーチとも記す)が可能であるが、CAMはその回路構造からして大規模なものが製造しにくく、大量の比較データを保持することが出来ない為、数万を超えるエントリのMACアドレス・テーブルを格納することができない。
他方、CAMを使用せずに、通常のメモリを使用してMACアドレスの高速検索(高速サーチ)を行おうとした場合、検索方法としていくつか考えられる。例えば、(3)十数万のMACアドレスが検索方法に適応した形でソート(sort)してある場合は、例えば二分岐検索によるクイック・サーチを利用して、MACアドレスのエントリ数が128kとして18回以内のメモリアクセスで検索可能である。
【0010】
しかし、このようなアルゴリズムを使用するためには、MACアドレス・テーブルを検索し易い形で常に整列しておかなければならない。一方、ネットワーク・ホストの中には、モバイル製品のように接続場所が一定であるとは限らないものがある。よって一部のMACアドレスとスイッチ/ルータのポートアドレスとの対応関係は、時間と共に変化し、追加、削除が繰り返されている可能性が常にある。このため、MACエントリ・テーブル・メモリにおけるデータの追加、削除に伴うMACエントリ・テーブル・メモリのデータの並べ替えは、周期的に行う必要がある。この並べ替え作業は十数万を超えるエントリ数においては、数ミリ秒〜数十ミリ秒という長時間を要する処理であり、通常のメモリを使用してMACアドレスの検索を行うことは、実現性に乏しかった。
【0011】
また、MACアドレスなどの非連続的なデータを効率的にメモリに格納しようとする場合、以下のような処理が行われる。すなわち、(4)ハッシュ法によってMACアドレス等のエントリデータを実質的に分散させるべく、ハッシュ関数によって生成されたハッシュ値をメモリ・ポインタ・テーブルのメモリアドレスに関連付け、MACアドレス・テーブルの1つのメモリアドレスに対するエントリデータを一つにするという方法が一般的に用いられる。
しかしながら完全なハッシュ関数は存在しないため、全てのエントリデータのメモリアドレスを均等に分散することは、不可能である。ハッシュ関数のエントリデータであるMACアドレスが異なっていても、それらのハッシュ値が一致する場合、MACアドレス・テーブルを格納するMACエントリ・テーブル・メモリ内で、同じメモリアドレスに複数のデータが対応付けされることになるため、検索時には、前記した複数のデータの中から一つを選ぶ処理が必要になり、また、MACアドレス・テーブルの構築時にはデータの追加、削除に伴う格納アドレスの変更が必要になるため、データの並べ替えを行うか、または想定する格納データ量の数倍(メモリアドレスの重なりを想定した最大のデータ量)のメモリを用意しなければならないと言う問題があった。
【0012】
【発明が解決しようとする課題】
本発明は、前記した問題点を解消するためになされたものであって、その主たる目的は、データ・テーブルに大量に格納されるMACアドレス等の固定長データを高速に検索できるようにすることであり、そのための装置または方法またはコンピュータ用記録媒体を提供することである。
【0013】
【課題を解決するための手段】
本発明の固定長データ検索装置、固定長データ検索方法、コンピュータ読み取り可能な記録媒体は、前記目的を達成するために次のように構成されている。
すなわち、第1の発明の固定長データ検索装置は、入力された固定長データのハッシュ値を演算して出力するハッシュ演算手段と、N(Nは2以上の整数)個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリと、各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリと、前記N個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段と、を備えるようにした固定長データ検索装置である。
【0014】
第2の発明の固定長データ検索装置は、第1の発明の固定長データ検索装置において、前記比較手段は2つの固定長データが同一であるか否かを判別する比較器をN個備え、前記ハッシュ演算手段に入力された一つの固定長データのハッシュ値に基づいて前記メモリ・ポインタ・テーブルを参照し、得られたメモリアドレスに基づいて前記データ・テーブルを参照して、前記比較手段が、前記N個のメモリバンクの同一メモリアドレスに格納されている固定長データのいずれかと、前記ハッシュ演算手段に入力された一つの固定長データとが一致するか否かを判別し、判別結果を出力するようにした固定長データ検索装置である。
【0015】
第3の発明の固定長データ検索装置は、第1または第2の発明の固定長データ検索装置において、前記ハッシュ演算手段に入力された一つの固定長データと同一のデータを、前記ハッシュ演算手段を介して前記データ・テーブルで検索し、前記データ・テーブルに未登録である場合には前記一つの固定長データを前記データ・テーブルに登録するようにした固定長データ検索装置である。
【0016】
第4の発明の固定長データ検索装置は、第3の発明の固定長データ検索装置において、ハッシュ値が同一となる別々の固定長データを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに格納するようにした固定長データ検索装置である。
【0017】
第5の発明の固定長データ検索装置は、第3の発明の固定長データ検索装置において、ハッシュ値が異なる複数の固定長データのそれぞれを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに格納するようにした固定長データ検索装置である。
【0018】
第6の発明の固定長データ検索装置は、第1〜第5のいずれかの発明の固定長データ検索装置において、前記固定長データはネットワーク通信用のMAC(Media Access Control)アドレスであり、前記データ・テーブル・メモリは、多数のMACアドレスが保持されるMACアドレス・テーブルを格納するMACエントリ・テーブル・メモリであるようにした固定長データ検索装置である。
【0019】
第7の発明の固定長データ検索装置は、2種類のハッシュ関数を用いて、入力された固定長データの第1及び第2のハッシュ値を求めるハッシュ演算手段と、N(Nは2以上の整数)個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリと、各固定長データの格納先のメモリアドレスが、前記第1のハッシュ値をインデックスとして保持される主メモリ・ポインタ・テーブル、及び、各固定長データの格納先のメモリアドレスが、前記第2のハッシュ値をインデックスとして保持される副メモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリと、前記N個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段と、を備えるようにした固定長データ検索装置である。
【0020】
第8の発明の固定長データ検索装置は、第7の発明の固定長データ検索装置において、固定長データが入力された時に2つの前記メモリ・ポインタ・テーブルのいずれを参照するかを、前記第1のハッシュ値をインデックスとして示すポインタ・セレクタ・テーブルを備えるようにした固定長データ検索装置である。
【0021】
第9の発明の固定長データ検索装置は、第8の発明の固定長データ検索装置において、前記データ・テーブルにおいて、第1のハッシュ値が同一となる別々の固定長データの格納数がNを超えるときに、新たに格納する固定長データの第1のハッシュ値に対応する前記ポインタ・セレクタ・テーブルのポインタを、前記副メモリ・ポインタ・テーブルにセットし、且つ、第2のハッシュ値が一致する、互いに異なる複数の固定長データを、前記データ・メモリにおける異なるメモリバンクの同一アドレスに分散して格納し、該格納したメモリアドレスを前記副メモリ・ポインタ・テーブルで管理するようにした固定長データ検索装置である。
【0022】
第10の発明の固定長データ検索装置は、第9の発明の固定長データ検索装置において、前記比較手段はN個の比較器を備え、前記各比較器は、2つの固定長データが同一であるか否かを判別する際に、全ビットを同時に比較して判別するようにした固定長データ検索装置である。
【0023】
第11の発明の固定長データ検索装置は、第9の発明の固定長データ検索装置において、前記ハッシュ演算手段に入力された一つの固定長データの第1のハッシュ値に基づいて前記ポインタ・セレクタ・テーブルを参照し、該テーブルのポインタに応じて前記主メモリ・ポインタ・テーブルまたは副メモリ・ポインタ・テーブルを参照して、得られたメモリアドレスに基づいて前記データ・テーブルを参照して、前記比較手段が、前記N個のメモリバンクの同一メモリアドレスに格納されている固定長データのいずれかと、前記ハッシュ演算手段に入力された一つの固定長データとが一致するか否かを判別し、判別結果を出力するようにした固定長データ検索装置である。
【0024】
第12の発明の固定長データ検索装置は、第9の発明の固定長データ検索装置において、入力された固定長データと第1のハッシュ値が同一になる固定長データが、前記データ・テーブルにまだ登録されていない場合は、前記入力された固定長データを前記データ・テーブル・メモリに格納し、該格納先のメモリアドレスを前記主メモリ・ポインタ・テーブルで管理するようにした固定長データ検索装置である。
【0025】
第13の発明の固定長データ検索装置は、第7〜第12のいずれかの発明の固定長データ検索装置において、前記固定長データはネットワーク通信用のMAC(Media Access Control)アドレスであり、前記データ・テーブル・メモリは、多数のMACアドレスが保持されるMACアドレス・テーブルを格納するMACエントリ・テーブル・メモリであるようにした固定長データ検索装置である。
【0026】
第14の発明は、コンピュータを、第1乃至第13の発明のいずれかの情報処理装置として機能させるためのプログラムである。
【0027】
第15の発明は、第14の発明のプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0028】
第16の発明の固定長データ検索方法は、入力された固定長データのハッシュ値を演算して出力するハッシュ演算ステップと、各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを、前記演算されたハッシュ値に基づいて参照するステップと、
N(Nは2以上の整数)個のメモリバンクからなるデータ・テーブル・メモリに格納され、多数の固定長データが保持されるデータ・テーブルから、前記メモリ・ポインタ・テーブルのポインタが指すアドレスに格納されているN個の固定長データを読み出すステップと、前記読み出したN個の固定長データと、前記入力された一つの固定長データとを同時に比較し、比較結果を出力する比較ステップと、を含むようにした固定長データ検索方法である。
【0029】
第17の発明の固定長データ検索方法は、第16の発明の固定長データ検索方法において、前記比較ステップでは、2つの固定長データが同一であるか否かを判別する比較処理を、前記読み出したN個のデータについて、並列処理により同一のタイミングで行うようにした固定長データ検索方法である。
【0030】
第18の発明の固定長データ検索方法は、第16または第17の発明の固定長データ検索方法において、前記入力された一つの固定長データと同一のデータを、そのハッシュ値に基づいて前記データ・テーブルで検索するステップと、該検索において前記同一のデータが検出されなかった場合に、前記入力された一つの固定長データを前記データ・テーブルに登録する登録ステップとを含むようにした固定長データ検索方法である。
【0031】
第19の発明の固定長データ検索方法は、第18の発明の固定長データ検索方法において、前記登録ステップでは、ハッシュ値が同一となる別々の固定長データを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに登録するようにした固定長データ検索方法である。
【0032】
第20の発明の固定長データ検索方法は、第18の発明の固定長データ検索方法において、前記登録ステップでは、ハッシュ値が異なる複数の固定長データのそれぞれを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに登録するようにした固定長データ検索方法である。
【0033】
第21の発明の固定長データ検索方法は、第16〜第20のいずれかの発明の固定長データ検索方法において、前記固定長データはネットワーク通信用のMAC(Media Access Control)アドレスであり、前記データ・テーブル・メモリは、多数のMACアドレスが保持されるMACアドレス・テーブルを格納するMACエントリ・テーブル・メモリであるようにした固定長データ検索方法である。
【0034】
第22の発明の固定長データ検索方法は、第1のハッシュ関数を用いて、入力された固定長データの第1のハッシュ値を求める第1ハッシュ演算ステップと、第2のハッシュ関数を用いて、入力された固定長データの第2のハッシュ値を求める第2ハッシュ演算ステップと、各固定長データの格納先のメモリアドレスが、前記第1のハッシュ値をインデックスとして保持される主メモリ・ポインタ・テーブルを、前記第1のハッシュ値に基づいて参照するステップと、各固定長データの格納先のメモリアドレスが、前記第2のハッシュ値をインデックスとして保持される副メモリ・ポインタ・テーブルを、前記第2のハッシュ値に基づいて参照するステップと、N(Nは2以上の整数)個のメモリバンクで構成され、多数の固定長データを保持するデータ・テーブルが格納されているデータ・テーブル・メモリから、前記主メモリ・ポインタ・テーブルまたは前記副メモリ・ポインタ・テーブルのポインタが示すアドレスに格納されているN個の固定長データを読み出すステップと、該読み出されたN個の固定長データと、入力された一つの固定長データとを比較する比較ステップとを含むようにした固定長データ検索方法である。
【0035】
第23の発明の固定長データ検索方法は、第22の発明の固定長データ検索方法において、固定長データが入力された時に2つの前記メモリ・ポインタ・テーブルのいずれを参照するかが、前記第1のハッシュ値をインデックスとして示されているポインタ・セレクタ・テーブルを、入力された固定長データの第1のハッシュ値に基づいて参照するステップを含むようにした固定長データ検索方法である。
【0036】
第24の発明の固定長データ検索方法は、第23の発明の固定長データ検索方法において、第1のハッシュ値が同一となる別々の固定長データの、前記データ・テーブルにおける格納数がNを超えるときに、新たに格納する固定長データの第1のハッシュ値に対応する前記ポインタ・セレクタ・テーブルのポインタを、前記副メモリ・ポインタ・テーブルに設定するステップを含むようにした固定長データ検索方法である。
【0037】
第25の発明の固定長データ検索方法は、第22の発明の固定長データ検索方法において、前記比較ステップは、読み出されたN個の固定長データのそれぞれを入力された固定長データと比較する際に、データの全ビットを同時に比較するステップを含むようにした固定長データ検索方法である。
【0038】
第26の発明の固定長データ検索方法は、第22の発明の固定長データ検索方法において、第2のハッシュ値が一致する、互いに異なる複数の固定長データを、前記データ・メモリにおける異なるメモリバンクの同一アドレスに分散して格納し、該格納したメモリアドレスを前記副メモリ・ポインタ・テーブルに登録するステップを含むようにした固定長データ検索方法である。
【0039】
第27の発明の固定長データ検索方法は、第22の発明の固定長データ検索方法において、入力された固定長データと第1のハッシュ値が同一になる固定長データが、前記データ・テーブルにまだ登録されていない場合は、前記入力された固定長データを前記データ・テーブル・メモリに格納し、該格納先のメモリアドレスを前記主メモリ・ポインタ・テーブルに登録するステップを含み、且つ、入力された固定長データを前記データ・テーブル・メモリに格納する際に、未使用のアドレスがある場合は未使用のアドレスに格納し、未使用のアドレスがない場合は、使用済みアドレスの中で、データが格納されていないメモリバンクに格納するステップを含むようにした固定長データ検索方法である。
【0040】
第28の発明の固定長データ検索方法は、第22〜第27のいずれかの発明の固定長データ検索方法において、前記固定長データはネットワーク通信用のMAC(Media Access Control)アドレスであり、前記データ・テーブルは、多数のMACアドレスが保持されるMACアドレス・テーブルであるようにした固定長データ検索方法である。
【0041】
【発明の実施の形態】
図1は本発明固定長データ検索装置に係る第1実施例を示すブロック図である。図1に示す固定長データ検索装置10は、入力された固定長データのハッシュ値を演算し出力するハッシュ演算手段11と、N(Nは2以上の整数)個のメモリバンクで構成され、前記固定長データをデータ・テーブルとして格納するデータ・テーブル・メモリ14と、前記データ・テーブル・メモリ14に格納される各固定長データのメモリアドレスを、前記ハッシュ値をインデックスとしたメモリ・ポインタ・テーブルとして格納するポインタ・テーブル・メモリ13と、前記N個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段11に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段15と、CPUを備えて固定長データ検索装置全体を制御する制御手段12とを備える。なお、前記ポインタ・テーブル・メモリ13とデータ・テーブル・メモリ14とを単一のメモリで構成するようにしても良い。
【0042】
図2は固定データ検索装置10の機能ブロック図である。以下、固定長データ検索装置10の動作について図1、図2と共に説明する。
入力端子9には固定長データが入力される。ハッシュ演算手段11では前記入力された固定長データについてハッシュ関数の演算が行われ、ハッシュ値HSが求められる。メモリ・ポインタ・テーブル参照手段33は算出されたハッシュ値HSをインデックスとしてポインタ・テーブル・メモリ13を参照し、ポインタ・テーブル・メモリ13の該当アドレスにポインタがあるか否かを判別する。前記メモリ・ポインタ・テーブルは、当該ハッシュ値を有する固定長データが格納されているデータ・テーブル・メモリ14上のアドレスを、前記ハッシュ値をインデックスとして示すテーブルである。
【0043】
メモリ・ポインタ・テーブルを参照して、ポインタ・テーブル・メモリ13の該当するアドレスにポインタがある場合は、データ・テーブル読出手段35で、そのポインタが示すメモリアドレスに基づいてデータ・テーブル・メモリ14を検索する。前記データ・テーブルは多数の固定長データを保持するテーブルであり、データ・テーブル・メモリ14は前記データ・テーブルを格納するメモリである。前記データ・テーブルに保持される各固定長データには、当該固定長データに関連する種々の情報が対応付けされており、多数の固定長データとその関連情報が対応付けして前記データ・テーブルに保持される。
【0044】
データ・テーブル・メモリ14は同一のアドレス構成を有するN(Nは2以上の整数)個のメモリバンクで構成される。したがって、ハッシュ演算手段11で求められたハッシュ値HSに関連付けされたメモリ・ポインタADRは、データ・テーブル・メモリ14内の最大N個の固定長データに関連付けされる。すなわち、メモリ・ポインタ・テーブルの一つのポインタADRは、データ・テーブル・メモリ14の一つのメモリアドレスを示すが、そのメモリアドレスADRに該当する固定長データとしては、メモリバンク1〜Nの該当メモリアドレスADRに、最大N個存在する可能性がある。
【0045】
比較手段15は、2つの固定長データを比較する比較器をN個有し、入力端子9に入力された固定長データFDTがデータ・テーブルに登録されているか否かを判別し、一致データの有無を出力する手段39により判別結果を出力する。比較手段15を構成する個々の比較器は、入力端子9に入力された固定長データFDTと、或るメモリバンクのアドレスADRから読み出された一つの固定長データとを比較する。
【0046】
データ・テーブル・メモリ14には、N個のメモリバンクを用いて、メモリアドレスADRに最大N個の固定長データが格納されている。アドレスADRで2以上のメモリバンクに固定長データが格納されている場合、アドレスADRに格納されている固定長データと入力端子9に入力された固定長データFDTとの比較は、複数のデータについて同時に行われる。すなわち、最大N個の比較器が同じタイミングで比較処理を行う。
そして、比較手段15において、固定長データFDTと一致するデータがデータ・テーブルで検出されると、そのデータに関連するデータが関連データ出力手段41から出力される。
【0047】
なお、メモリ・ポインタ・テーブル参照手段33において、ハッシュ演算手段11から出力されたハッシュ値HSに対応するポインタが検出されない場合は、該当する固定長データがデータ・テーブル・メモリ14に格納されていないことを意味するから、メモリ・ポインタ・テーブル参照手段33はポインタがないことを示す信号を出力し、一致データの有無を出力する手段39は一致データが無いことを示す信号を出力する。そして、データ登録手段すなわちデータ格納手段43で当該固定長データをデータ・テーブルに格納し、そのメモリアドレスをメモリ・ポインタ・テーブルに登録する、なお、データ登録手段43で行うデータ・テーブルへの格納とモリ・ポインタ・テーブルへの登録の処理は、検索処理とは別に行うようにしても良い。
【0048】
また、前記ハッシュ値HSに対応するポインタが存在した場合であっても、比較手段15による比較処理において、入力端子9に入力された固定長データFDTと一致するデータをデータ・テーブルで検出できなかったときは、前記固定長データFDTがデータ・テーブルに格納されていないことを意味するから、データ登録手段43は当該固定長データFDTをデータ・テーブルに格納する。この場合、同一ハッシュ値のエントリが複数あることになり、該複数のデータの格納先は、同一のアドレスADRで且つ別々のメモリバンクとする。すなわち、ポインタが示すアドレスADRのN個のメモリバンクのうち、空いているいずれかのメモリバンクに追加データを格納する。
【0049】
上記したように、ハッシュ値が同一になる複数の固定長データがデータ・テーブルに登録される場合であっても、メモリ・ポインタ・テーブルを変更する必要がなく、ハッシュ値が同一の複数の固定長データは、最大N個までであれば、データ・テーブル・メモリ14の複数のメモリバンクの同一アドレスに夫々格納される。したがってデータ・テーブルにおけるデータの再配置処理は必要がない。また、前記複数の固定長データの中の一部の固定長データが削除される場合であっても、メモリ・ポインタ・テーブルの変更は必要なく、データ・テーブルにおけるデータの再配置を行う必要がない。
一方、固定長データの検索時には、入力された固定長データと、データ・テーブル・メモリのN個のメモリバンクから読み出された固定長データとを、並列処理により同時に比較して、極めて短時間に検索結果を出力することが出来る。
【0050】
以下、固定長データがMACアドレスである場合を例にして、本発明の第2実施例について説明する。
図3は本発明固定長データ検索装置の第2実施例として示すMACアドレス検索装置の主要部の構成図である。本明細書の記載においては、複数のエントリデータ中にハッシュ値が同一となるデータが存在することを「衝突」とも記す。また、ハッシュ値が同一となる複数のデータをシノニムのデータとも記す。
図3に示すMACアドレス検索装置20では、図1に示すデータ・テーブル・メモリ14に対応するのがMACエントリ・テーブル・メモリ24である。また、図3に示すように、MACアドレス・テーブルを格納するMACエントリ・テーブル・メモリは8個のメモリバンクで構成されているものとする。
【0051】
この第2実施例では、図示しないハッシュ演算手段に48bit構造のMACアドレスがエントリされ、16bitのハッシュ値が出力される。一方、メモリ・ポインタ・テーブルのポインタは、エントリされたMACアドレスが格納されるMACエントリ・テーブル・メモリのアドレスを示す。メモリ・ポインタ・テーブルは、入力されたMACアドレスから算出されたハッシュ値をインデックスとする。すなわち、ハッシュ値として出力される16bitデータとポインタ・テーブル・メモリのアドレスとが関連付けされている。このようにハッシュ値は、MACアドレスの格納先のメモリアドレスを、メモリ・ポインタ・テーブルのポインタによって示すためのインデックスとして使用される。
【0052】
第2実施例のMACアドレス検索装置20によれば、MACアドレス・テーブルにおいて、エントリデータの挿入削除によるデータの移動を無くすことが出来る。そして、接続位置の移動や、ある任意の周期において可能な削除機能等によって頻繁に起こるMACエントリ・テーブル・メモリのアップデートに際しても、テーブル再構築に伴うメモリアクセス回数を最小限にすることが出来る。したがって、検索に割り当てる割合を大きくすることが出来、サポートするポート数も多くすることが出来る。
【0053】
以下、具体例として、ハッシュ関数を使用し、衝突するデータが最大8個であり、格納するMACアドレスのデータ数は最大128kエントリであり、ハッシュ値は16bitであるものと想定した例について説明する。
図3に示す固定長データ検索装置20は、(1)ハッシュ演算手段21(図示せず)、(2)制御手段22(図示せず)、(3)64k×16bitのメモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリ23、(4)16k×8×64bitのMACアドレス・テーブルを格納するMACエントリ・テーブル・メモリ24、(5)8個の比較回路からなる比較手段25を含む。MACエントリ・テーブル・メモリ24は8つのメモリバンクで構成されている。
【0054】
また、MACエントリ・テーブル・メモリ24のアドレスの深さは16kであり、ポインタ・テーブル・メモリ23のアドレスの深さ64kに比較して1/4に縮小されている点に注目する必要がある。
メモリ・ポインタ・テーブルのポインタとして、ポインタ・テーブル・メモリ23の当該アドレスに関連付けされたMACアドレスの格納先メモリアドレスが書込まれている。すなわち、MACエントリ・テーブル・メモリ24の該当する一つのメモリアドレスがポインタとして書きこまれており、ハッシュ値をインデックスとしてメモリ・ポインタ・テーブルを参照することにより、当該MACアドレスの格納先アドレスを知ることが出来る。
【0055】
MACアドレスが受信されると、または比較対象MACアドレスが入力されると、そのMACアドレスのハッシュ値がハッシュ演算手段21で演算される。そして、得られた16bitのハッシュ値をインデックスとしてメモリ・ポインタ・テーブルが参照される。次に、当該ポインタが示すMACエントリ・テーブル・メモリのアドレスに基づき、MACエントリ・テーブル・メモリ24の8つのメモリバンクにそれぞれ格納されているMACアドレスが読み出される。そして比較手段25では、前記読み出された8つのデータが、別途与えられた比較対象MACアドレスとそれぞれ比較される。比較手段25は8個の比較器を備え、各比較器はMACエントリ・テーブル・メモリから読み出された一つのデータと、比較対象MACアドレスとが一致するか比較するが、8個の比較器は並列処理により同じタイミングで動作する。比較手段25からは比較結果が出力される。
【0056】
図4は、ハッシュ値が同一となる複数のエントリデータが複数のメモリバンクの同一アドレスに格納される様子を示す図である。MACアドレスは、MACエントリ・テーブル・メモリ24に格納されるが、格納される位置(メモリアドレス)はメモリ・ポインタ・テーブルのポインタによって指定される。MACエントリ・テーブル・メモリ24に書込まれる個々のMACアドレスは、MACアドレス以外の他の情報と対応付けして格納される。そのデータ構造は図4に示すように、先頭に1bitのExist bit、その後に付加情報(other information)、MACアドレス(MAC entry data)が配置されている。前記付加情報にはポート番号などが含まれる。
【0057】
前記したように、MACエントリ・テーブル・メモリ24は8つの同一サイズのメモリバンクで構成されており、書き込み済みのメモリ領域のExist bitはONであり、書き込みから所定時間が経過すると、または当該メモリ領域へのアクセスから所定時間が経過すると、当該メモリ領域のデータが削除され、Exist bitはOFFとされる。また、8つのメモリバンクの同一のアドレスには必ずしも8個のデータが格納されているのではなく、Exist bitがOFFのメモリ領域にはデータが格納されていないものとされるため、そのメモリ領域のデータは比較手段25での比較の対象にならない。
【0058】
入力データのハッシュ演算の結果、ハッシュ値が同一の値H1となるエントリが複数となる場合、それら衝突した複数のMACアドレス(シノニム・データ)の格納は、MACエントリ・テーブル・メモリ24における同一アドレスで別々のメモリバンクに振り分けて行われる。
例えば、図4に示すようにエントリデータ1〜8の8個のMACアドレスのハッシュ値が全てH1である場合を考える。この場合に、メモリ・ポインタ・テーブルのポインタがP1であるとすると、メモリバンク・アドレス"000"のメモリバンクのアドレスP1にエントリデータ1が格納され、メモリバンク・アドレス"001"のメモリバンクのアドレスP1にエントリデータ2が格納され、同様にしてメモリバンク・アドレス"111"のメモリバンクのアドレスP1にエントリデータ8が格納される。このように、8個のメモリバンクの同一アドレスに8個のエントリデータが格納される。
【0059】
一方、互いにハッシュ値が衝突しないような複数のMACアドレスは、MACエントリ・テーブル・メモリ24の別々のアドレスに振り分けて格納される。データを追加する際に、MACエントリ・テーブル・メモリ24に空いているアドレスがない場合は、図6に示すように振り分けるが、図6については後で詳述する。
【0060】
図5は本発明第2実施例に係るMACアドレス検索・登録方法を示すフローチャートである。図5に示す処理は、図3に示すMACアドレス検索装置20にエントリデータが入力された場合に行う処理であり、検索処理と登録処理との両方を示している。
図5において、ステップS11ではフレームヘッダが受信されたときにステップS13へ進む。ステップS13ではフレームヘッダから送信元MACアドレスを抽出しステップS15へ進む。ステップS15では、抽出した送信元MACアドレスをハッシュ関数のエントリデータとしてハッシュ値H1を求め、ステップS17へ進む。ステップS17では、演算して得られたハッシュ値H1をインデックスとしてメモリ・ポインタ・テーブルを参照し、ステップS19ではメモリ・ポインタ・テーブルの当該アドレスH1に、ポインタが書込まれているか否かを判別し、ポインタが有ればステップS21へ進み、なければステップS23へ進む。
【0061】
ステップS21ではポインタが示すメモリアドレスP1に基づいてMACアドレス・テーブルの全メモリバンクを参照し、当該アドレスP1に格納されているMACアドレスを8つのメモリバンクから読み出してステップS25へ進む。ステップS25では、読み出された8個のMACアドレスと、別途与えられた(ハッシュ演算手段に入力された)宛先MACアドレスとを並列処理によって同時に比較し、ステップS27へ進む。ステップS27ではステップS25の比較処理において、一致したデータが検出された場合はステップS29へ進み、一致データが一つも検出されなかった場合はステップS23へ進む。ステップS29ではMACアドレスとそのポートアドレスとを出力してこのフローを終了する。
【0062】
ステップS19又はステップS27からステップS23へ進んだ場合は、ステップS23で、一致データがないことを示す信号を出力してステップS31へ進む。ステップS31では、当該宛先MACアドレスと共に伝送された送信元MACアドレスのハッシュ値を求めてステップS33へ進む。ステップS33では、ステップS31で求めたハッシュ値を用いて、当該送信元MACアドレスをMACアドレス・テーブルで検索し、一致データが検出された場合はステップS37へ進み、一致データが検出されなかった場合はステップS35へ進む。
【0063】
前記ステップS33における検索処理は、前記したステップS25での比較処理と同様の比較処理を含むものとする。すなわち、MACエントリ・テーブル・メモリ24の該当するアドレスから読み出された8個のMACアドレスと、登録対象の送信元MACアドレスとを並列処理によって同時に比較して検索する。ステップS35では、当該送信元MACアドレス及びその関連データをMACアドレス・テーブルの空きアドレス(未使用アドレス)に登録し、これに伴ってメモリ・ポインタ・テーブルにもポインタを書込んで、このフローを終了する。
ステップS37では、エージング(Aging)処理有り、の場合はステップS39へ進み、無しの場合はこのフローを終了する。ステップS39ではエージングタイマをリセットしてこのフローを終了する。
なお、MACエントリ・テーブル・メモリ24に空きアドレスがない場合については後で説明する。また、ステップS23からステップS35へ至るフローにおける新規の登録は、検索処理とは切り離して別途行うようにしても良い。
【0064】
以下、MACエントリ・テーブル・メモリ24に未使用のアドレスがない場合について、データの追加方法を説明する。
図6は、MACエントリ・テーブル・メモリに未使用アドレスがない場合のエントリデータの振り分け方を示す図である。図6に示す例では、新たなエントリデータの格納先として未使用アドレスがない場合、MACエントリ・テーブル・メモリの使用済みアドレスの中で、使用されていないメモリバンクがあればそのメモリバンクにMACアドレス・データを振り分ける。そして図6に示すような、互いに異なる3つのハッシュ値にそれぞれ対応する3つのポインタから、MACアドレス・テーブルの同一のアドレスを参照できる。
【0065】
図6において、H11はエントリデータ1をハッシュ関数にエントリして算出されたハッシュ値である。そしてその該当するポインタの値がP11であるとする。同様に、H12、H13はそれぞれエントリデータ2、エントリデータ3のハッシュ値であり、それぞれに該当するポインタの値がP12、P13であるとする。前記3つのハッシュ値は互いに異なる値であるとする。
【0066】
MACエントリ・テーブル・メモリのアドレスP11に既にエントリデータ1が格納されており、MACエントリ・テーブル・メモリの空きアドレスがないときに、エントリデータ2がエントリされると、そのハッシュ値H12に対応するポインタの値P12は例えば前記P11と同じ値にセットされ、同様に、エントリデータ3がエントリされると、そのハッシュ値H13に対応するポインタの値P13は例えば前記P11と同じ値にセットされる。このように、MACエントリ・テーブル・メモリの複数のメモリバンクの同一アドレスに、ハッシュ値が互いに異なる複数のMACアドレスが格納される。したがって、同一容量のMACエントリ・テーブル・メモリに、より多くのエントリデータを格納することが出来、所定数のエントリデータを格納できるMACエントリ・テーブル・メモリを比較的小容量のメモリで構成することが出来る。
【0067】
前記したように、ハッシュ値をインデックスとしてメモリ・ポインタ・テーブルを参照し、このポインタが示すMACエントリ・テーブル・メモリのアドレスは、8個のメモリバンクのそれぞれの該当アドレスを示すことになり、一つのポインタによって同時に8つのデータをアクセスすることが可能である。
【0068】
図7は、8つのエントリを同時に比較する比較手段の一例を示すブロック図である。図7に示すように、I/O装置からMACアドレスを受け取るとそれをレジスタ51に格納すると共に、8個のメモリバンクから同時にデータを読み出す。Entry Data 1〜Entry Data 8はMACエントリ・テーブル・メモリ24のメモリバンク・アドレス"000"〜メモリバンク・アドレス"111"の同一アドレスからそれぞれ読み出されたMACアドレス・データである。前記同一アドレスは、メモリ・ポインタ・テーブルのポインタで与えられたメモリアドレスである。Entry Data 1〜Entry Data 8は比較手段25を構成する比較回路1〜比較回路8にそれぞれ入力される。
【0069】
レジスタ51から読み出されたMACアドレスは比較器1〜比較器8の全てに入力される。例えば比較回路1ではレジスタ51から出力される48bitのMACアドレスと48bitのEntry Data 1の各bitを同時に比較し、2つのデータの全bitが一致するか否かを判別し、全bitが一致し、且つExistbitがONである場合はAND1に1を出力し、それ以外の場合はAND9に1を出力する。
【0070】
図8は図7に示す各比較回路の具体的な回路を例示する図である。図8に示すように、各比較回路は48bitのデータを同時に比較して比較結果を出力するために、48個のXNOR回路、48入力AND回路(AND11)、2入力AND回路(AND12)、反転回路で構成される。図8においては48個のXNORの中の一つだけが描かれている。AND11では前記48個のXNORの出力のANDをとる。前記48個のXNOR回路によって、レジスタ51の出力の48bitと読み出されたMACアドレスの48bitとが同時に比較され、48個の比較結果がAND12に与えられる。AND12は、AND11の出力とExist bitとのANDをとる。この結果、両データが一致し、且つ、ExistbitがONである場合にAND12から1が出力され、それ以外はAND12から0が出力される。インバータからはその逆の値が出力される。
【0071】
図7において、比較回路1〜比較回路8におけるデータの比較は並列処理により同時に行われる。AND1〜AND8の各AND回路は、実際にはEntry dataのbit幅に応じた数のAND回路を備えて構成されるが、図示は簡略化されている。そして、例えばAND1は比較回路1の一方の出力とEntry Data 1のExist bitのANDを取り、結果を出力部に与える。AND2〜AND8もAND1と同様の動作を行う。この結果、Entry Data1〜8が、レジスタ51のデータと一致するか否かを示す8bitのデータが出力部から出力され、8個のデータの中に一致するデータがある場合、そのデータが格納されたメモリバンクを特定することが出来、必要に応じて、当該一致したデータに関連するデータをMACアドレス・テーブルから読み出して出力する。Entry Data 1〜8が全てレジスタ51のデータと不一致の場合は、AND9から「Not equal」を示す信号を返す処理を行う。
【0072】
図7に示す回路によれば、同一のメモリアドレスの8個のデータを同時に読み出し、比較することが可能なため、1回のメモリ・サイクル時間内に8データの比較を完了できる。したがって、本発明の検索方法によれば、検索に要するメモリへのアクセスは、メモリ・ポインタ・テーブル及びMACアドレス・テーブルへ各1回ずつであり、2回のメモリ・サイクルで比較、検索を完了することができる。またメモリ・ポインタ・テーブルとMACアドレス・テーブルとを異なるメモリバンクに置くことによりパイプライン処理も可能であるから、その場合は、多数のMACアドレスを保持するMACアドレス・テーブルでの検索が、実質1メモリ・サイクルでも可能になる。
【0073】
図9は本発明第3実施例にかかる固定長データ検索装置を示す概念図である。図9に示す固定長データ検索装置30において、ポインタ・セレクタ・テーブルは64k×1bitのサイズを有するテーブルで、後述する2つメモリ・ポインタ・テーブルのいずれか一方を選択するためのテーブルである。メモリ・ポインタ・テーブルには主メモリ・ポインタ・テーブルと副メモリ・ポインタ・テーブルとがある。MACエントリ・テーブル・メモリ24及び比較手段25は図3のものと同一である。
【0074】
前記主メモリ・ポインタ・テーブルは、第1のハッシュ関数によって求められた第1のハッシュ値をインデックスとして、各MACアドレスの格納先のメモリアドレスを保持する。また、前記副メモリ・ポインタ・テーブルは、第2のハッシュ関数によって求められた第2のハッシュ値をインデックスとして、各MACアドレスの格納先のメモリアドレスを保持する。前記主メモリ・ポインタ・テーブル及び副メモリ・ポインタ・テーブルはポインタ・テーブル・メモリに格納される。MACアドレスの検索の実施に際しては、前記したポインタ・セレクタ・テーブル、2つのメモリ・ポインタ・テーブル、MACアドレス・テーブルは個別のメモリに格納しても良いが、単一のメモリに格納しても良い。
この第3実施例では、2つのハッシュ関数を使用して、二つの異なるメモリ・ポインタ・テーブルを生成し、これらのメモリ・ポインタ・テーブルのポインタによりMACアドレスを格納したMACアドレス・テーブルのアドレスを指定する。ここにハッシュ関数は、特定のものではなく、任意のものである。
【0075】
MACアドレスを受信すると、まず第1のハッシュ関数により前記エントリされたMACアドレスの第1のハッシュ値を求める。これにより、16bitのハッシュ値が求まる。次に、算出された16bitのハッシュ値をインデックスとしてポインタ・セレクタ・テーブルを参照する。そして、ここの1ビットが"プライマリP"(primary:主)を指している場合、そのハッシュ値をインデックスとして主メモリ・ポインタ・テーブルを参照することにより、当該MACアドレスが格納されているMACアドレス・テーブルのアドレスが特定される。
【0076】
また、算出されたハッシュ値をインデックスとしてポインタ・セレクタ・テーブルを参照した結果、ポインタ・セレクタ・テーブルの1ビットが"セカンダリS"(secondary:副)を指している場合は、次のような処理をする。
すなわち、前記第1のハッシュ関数とは異なる第2のハッシュ関数を用いて、16bitのハッシュ値(第2のハッシュ値)を求める。そして、算出された第2ハッシュ値をインデックスとして副メモリ・ポインタ・テーブルを参照し、ここのポインタの値からに当該MACアドレスが格納されているMACアドレス・テーブルのアドレスが特定される。
【0077】
前記ポインタ・セレクタ・テーブルの1bitの値は、デフォルトでは"プライマリ"のPを示す。しかし、前記第1のハッシュ関数によって生成されたハッシュ値のうち、ハッシュ値が同一となるデータがバンク数Nを超える場合は、前記ポインタ・セレクタ・テーブルの1bitの値は、"セカンダリ"のSを示すように変更される。そして第1のハッシュ値が現在の第1のハッシュ値と同じになる複数のMACアドレスについて、第2のハッシュ関数を用いて第2のハッシュ値が算出され、この第2のハッシュ値をインデックスとして副メモリ・ポインタ・テーブルが参照される。
【0078】
具体的には、例えば第1のハッシュ関数で求めたハッシュ値がH3となる8個のMACアドレス(1〜8)がMACアドレス・テーブルに既に登録されている状態で、MACアドレス(9)が入力され、そのMACアドレス(9)の第1のハッシュ値が前記ハッシュ値H3と同一になった場合は、ポインタ・セレクタ・テーブルの、ハッシュ値H3に対応する値を"プライマリ"から"セカンダリ"に変更する。次に、MACアドレス(1〜8)及びMACアドレス(9)の第2ハッシュ値を第2のハッシュ関数によって算出する。この場合、MACアドレス(1〜8)及びMACアドレス(9)の第2ハッシュ値が同一となる確率は低い。算出された第2ハッシュ値を用いて、MACアドレス(1〜8)とMACアドレス(9)がそれぞれMACアドレス・テーブルに書込まれ、そのメモリアドレスが副メモリ・ポインタ・テーブルの該当領域に書込まれる。
【0079】
前記したように、第1のハッシュ関数で生成したハッシュ値が所定数Nを超えて重なる場合は、第2のハッシュ関数を使用するようにして、ハッシュ値を分散させる。これによって、同一の第1ハッシュ値をとるMACアドレスの数が所定値N以下である場合は、主メモリ・ポインタ・テーブルを使用し、Nを越える場合のみ副メモリ・ポインタ・テーブルを使用する。従って殆どのMACエントリは主メモリ・ポインタ・テーブルの方に指定され、一部のハッシュ値が多数重なったMACエントリについてだけ副メモリ・ポインタ・テーブルが指定されることになるので、メモリ・ポインタ・テーブルを効率よく使用できる。
【0080】
第2のハッシュ関数で算出された複数のMACアドレスの第2ハッシュ値が同一となる確率は低いが、ハッシュ値を均一に分散させる完全なハッシュ関数は存在しないため、同一となることがあり得る。その場合は、第2ハッシュ値が同一となる複数のエントリが、MACエントリ・テーブル・メモリ24の別々のメモリバンクの同一アドレスに登録される。従って、この例では同一のハッシュ値を取る8個のMACエントリを許容することが出来る。
【0081】
一方、第1のハッシュ関数で第1ハッシュ値を求め、MACアドレス・テーブルにMACアドレスを追加して登録しようとした時に、MACエントリ・テーブル・メモリ24の未使用のアドレスがない場合がある。かかる場合には、使用済みアドレスの中で使用されていないメモリバンクにMACアドレスを登録する。この場合、同一のメモリアドレスの各メモリバンクに、ハッシュ値が異なるMACアドレスが登録されることとなり、限られたメモリアドレスを有効に使用することが出来る。
【0082】
また、MACアドレスの検索を行う場合は、入力されたMACアドレスの第1ハッシュ値を第1のハッシュ関数によって求め、その第1ハッシュ値をインデックスとしてポインタ・セレクタ・テーブルを参照し、1bitのデータが示す"プライマリ"または"セカンダリ"に応じて、主メモリ・ポインタ・テーブルまたは副メモリ・ポインタ・テーブルを参照して、読み出すべきMACエントリ・テーブル・メモリ24のアドレスを得る。当該アドレスに格納された8個のデータは同時に読み出され、比較手段25では、入力されたMACアドレスと、読み出された8個のデータとが同時に比較され、その比較結果が出力される。
【0083】
図10は本発明第3実施例に係るMACアドレス検索処理を示すフローチャートである。図10に示す処理は、MACアドレス検索装置30にエントリデータが入力された場合に行う処理である。
図10において、ステップS51ではフレームヘッダが受信されたときにステップS53へ進む。ステップS53ではフレームヘッダから宛先MACアドレスを抽出しステップS55へ進む。ステップS55では、第1のハッシュ関数により、当該宛先MACアドレスの第1のハッシュ値H10を求め、ステップS57へ進む。ステップS57では、ハッシュ値H10をインデックスとしてポインタ・セレクタ・テーブルを参照し、その値がP(Primary:主)を指している場合はステップS59へ進み、S(Secondary:副)を指している場合はステップS67へ進む。このポインタの初期値はPである。
【0084】
ステップS59では、第1のハッシュ値H10をインデックスとして主メモリ・ポインタ・テーブルを参照し、そこにポインタがある場合はステップS61へ進み、ない場合はステップS73へ進む。ステップS61ではこのポインタに基づいて、入力された宛先MACアドレスと一致するデータをMACアドレス・テーブルで検索し、ステップS63では、一致するデータが検出された場合はステップS65へ進み、検出されなかった場合はステップS73へ進む。ステップS61における検索処理は、図5に示すステップS25の比較処理と同様の比較処理を含むものとし、ここでは説明を省略する。
【0085】
ステップS65では、一致データであるMACアドレスに対応するポートアドレスをMACアドレス・テーブルから読み出して、MACアドレスと共に出力して、このフローを終了する。ステップS59からステップS73へ進んだ場合、ステップS73で、「一致データなし」を示す信号を出力する。ステップS73の処理の後は、このフローを終了するか、或いは、一致データが検出されなかった宛先MACアドレスと共に伝送された送信元MACアドレスの登録処理に移行する。この送信元MACアドレスの登録処理については後で図12を用いて説明する。
【0086】
ステップS57からステップS67へ進んだ場合は、ステップS67で、第2のハッシュ関数により、入力されたMACアドレスの第2ハッシュ値H20を求め、ステップS69へ進む。ステップS69では、前記第2のハッシュ値H20をインデックスとして副メモリ・ポインタ・テーブルを参照し、そのポインタに基づき、入力された宛先MACアドレスと一致するデータをMACアドレス・テーブルで検索する。ステップS71では、一致データがあった場合はステップS65へ進み、なかった場合はステップS73へ進む。
【0087】
図12は本発明第3実施例に係るMACアドレス登録処理を示すフローチャートである。図12に示すMACアドレスの登録処理は、図10に示すステップS73の後に行うことも出来るが、検索処理から独立して行うことも出来る。
図12において、ステップS153ではフレームヘッダから送信元MACアドレスを抽出しステップS155へ進む。ステップS155では、第1のハッシュ関数により、当該送信元MACアドレスの第1のハッシュ値を求め、ステップS157へ進む。ステップS157では、前記ハッシュ値をインデックスとしてポインタ・セレクタ・テーブルを参照し、その値がP(Primary:主)を指している場合はステップS159へ進み、S(Secondary:副)を指している場合はステップS167へ進む。このポインタの初期値はPである。
【0088】
ステップS159では、前記第1のハッシュ値をインデックスとして主メモリ・ポインタ・テーブルを参照し、そこにポインタがある場合はステップS161へ進み、ない場合はステップS177へ進む。ステップS161ではこのポインタに基づいて、入力された送信元MACアドレスと一致するデータをMACアドレス・テーブルで検索する。ステップS161における検索処理は第2実施例で詳細に説明したステップS33の処理と同様であるが、MACエントリ・テーブル・メモリ24の該当するアドレスから読み出された8個のMACアドレスと、登録対象の送信元MACアドレスとを並列処理によって同時に比較して検索する。ステップS163では、一致するデータが検出された場合はステップS164へ進み、検出されなかった場合はステップS179へ進む。
【0089】
ステップS164では、エージング(Aging)処理が有りの場合はステップS165へ進み、無しの場合はこのフローを終了する。ステップS165ではエージングタイマをリセットしてこのフローを終了する。
ステップS159からステップS177へ進んだ場合は、ステップS177で、入力された当該送信元MACアドレスとその関連データを、主メモリ・ポインタ・テーブルとMACアドレス・テーブルに登録し、このフローを終了する。前記ステップS177での登録処理では、MACエントリ・テーブル・メモリ24に未使用のアドレスがある場合は未使用アドレスに登録される。また、未使用アドレスがない場合は、既に使用されているメモリアドレスの中で使用されていないメモリバンクに登録される。この場合、同一のアドレスに、ハッシュ値が異なる複数のデータが格納されることになる。
【0090】
ステップS163からステップS179へ進んだ場合は、ステップS179で、ポインタが示す当該アドレス中に、空きバンク(未使用バンク)が有るか否かを調べ、ある場合はステップS181へ進み,無い場合はステップS183へ進む。ステップS181では、登録対象の送信元MACアドレスとその関連データを当該メモリアドレスの中で空いているバンクに登録して、このフローを終了する。ステップS183では、第1のハッシュ値が同一となる複数のデータ(シノニム・データ)について、第2のハッシュ関数により第2のハッシュ値を求め、該第2のハッシュ値に基づいて、副メモリ・ポインタ・テーブルとMACアドレス・テーブルに登録する。
【0091】
そして、前記複数のシノニム・データのうち、既に主メモリ・ポインタ・テーブルに登録されていた複数のデータは、主メモリ・ポインタ・テーブルから削除する。さらに、第2ハッシュ値が同一となるMACアドレスの数が複数となる場合は、それらのデータをMACエントリ・テーブル・メモリ24における同一アドレスで別々のメモリバンクに格納する。ステップS185では、ポインタ・セレクタ・テーブルの当該ポインタをPからSへ変更し、このフローを終了する。
【0092】
ステップS157からステップS167へ進んだ場合は、ステップS167で、第2のハッシュ関数により、入力された送信元MACアドレスの第2のハッシュ値H20を求め、ステップS169へ進む。ステップS169では、前記第2のハッシュ値H20をインデックスとして副メモリ・ポインタ・テーブルを参照し、そのポインタに基づき、入力された送信元MACアドレスと一致するデータをMACアドレス・テーブルで検索する。ステップS171では、一致データがあった場合はステップS164へ進み、無かった場合はステップS175へ進む。
ステップS175では、入力された送信元MACアドレスを副メモリ・ポインタ・テーブルとMACアドレス・テーブルに登録し、このフローを終了する。前記ステップS175の処理で、第2のハッシュ値が同一となるMACアドレスが複数ある場合は、それらをMACエントリ・テーブル・メモリ24における同一アドレスで別々のメモリバンクに格納する。
【0093】
第2実施例で既に詳細に説明したことであるが、この第3実施例でも、別々のポインタからMACエントリ・テーブル・メモリ24の一つのメモリアドレスを参照できるから、MACエントリ・テーブル・メモリを効率よく使用でき、MACエントリ・テーブル・メモリ24のサイズを小さく出来る。また、同一アドレスの複数のメモリバンクから読み出された複数のMACアドレスが、並列処理により同時に比較されるから、MACドレスの検索処理が極めて短時間で行われる。
第3実施例における検索の所要時間は、第2実施例に比べて、1メモリ・サイクル分増加するが、それでも、大量のMACアドレスが保持されたMACアドレス・テーブルを検索するのに要する時間は2〜3メモリ・サイクルであり、短時間で実行可能である。
【0094】
以上、詳細に説明したように、本発明を適用した実施の形態によれば、多数の固定長データが格納されたデータ・テーブルの検索処理が、1〜3メモリ・サイクル程度の高速で実行することが出来る。また、本発明固定長データ検索装置及び検索方法は、実施例で説明したように、ネットワーク通信で多用されるMACアドレスの検索及び登録にも適用できる。また、本発明は、本発明の固定長データ検索装置または検索方法を適用した情報処理装置としてコンピュータを機能させるためのコンピュータプログラムに適用することが可能である。さらに本発明は、前記コンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体に適用することも可能である。
【0095】
図13は本発明のコンピュータプログラム及び記録媒体を適用可能なハードウエアの構成例を示すブロック図である。
図13において、コンピュータシステム70は、システムバス51に接続されたCPU53と、記憶装置55と、入出力装置57とを含む。CPU(Central Processing Unit)53は、少なくとも演算装置と制御装置とを備え、記憶装置55は例えば内蔵主記憶メモリ、ハードディスクドライブ、フロッピディスクドライブなどで構成される。コンピュータシステム70に本発明のコンピュータプログラムがインストールされると、前記コンピュータプログラムは前記ハードディスクドライブ内に格納され、必要に応じて前記主記憶メモリにロードされる。記憶装置55の前記主記憶メモリにより、またはCPU53が備えるキャッシュメモリにより、本発明におけるポインタ・テーブル・メモリ及びデータ・テーブル・メモリ等が構成される。入出力装置57は、複数の入出力ポートを備えて外部とのデータ通信を行うことが出来る。記憶装置55内の例えばハードディスクドライブやフロッピディスクドライブなどにより、本発明の、コンピュータプログラムが記録された記録媒体からプログラムが読み出される。
【図面の簡単な説明】
【図1】本発明固定長データ検索装置に係る第1実施例を示すブロック図である。
【図2】固定データ検索装置10の機能ブロック図である。
【図3】本発明固定長データ検索装置の第2実施例として示すMACアドレス検索装置の主要部の構成図である。
【図4】ハッシュ値が同一となる複数のエントリデータが複数のメモリバンクの同一アドレスに格納される様子を示す図である。
【図5】本発明第2実施例に係るMACアドレス検索・登録方法を示すフローチャートである。
【図6】MACエントリ・テーブル・メモリに未使用アドレスがない場合のエントリデータの振り分け方を示す図である。
【図7】8つのエントリを同時に比較する比較手段の一例を示すブロック図である。
【図8】図7に示す比較回路の一例を示すブロック図である。
【図9】本発明第3実施例にかかる固定長データ検索装置を示す概念図である。
【図10】本発明第3実施例に係るMACアドレス検索処理を示すフローチャートである。
【図11】MACアドレスの構造を示す図である。
【図12】本発明第3実施例に係るMACアドレス登録処理を示すフローチャートである。
【図13】本発明のコンピュータプログラム及び記録媒体を適用可能なハードウエアの構成例を示すブロック図である。
【符号の説明】
11 ハッシュ演算手段
12 制御手段
13 ポインタ・テーブル・メモリ
14 データ・テーブル・メモリ
15、25 比較手段
23 ポインタ・テーブル・メモリ
24 MACエントリ・テーブル・メモリ
Claims (28)
- 入力された固定長データのハッシュ値を演算して出力するハッシュ演算手段と、
N(Nは2以上の整数)個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリと、
各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリと、
前記N個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段とを備え、
前記メモリ・ポインタ・テーブルにおいて保持可能なインデックスの数は、前記固定長データの格納先として可能なメモリアドレスの数よりも多いことを特徴とする固定長データ検索装置。 - 前記比較手段は2つの固定長データが同一であるか否かを判別する比較器をN個備え、前記ハッシュ演算手段に入力された一つの固定長データのハッシュ値に基づいて前記メモリ・ポインタ・テーブルを参照し、得られたメモリアドレスに基づいて前記データ・テーブルを参照して、前記比較手段が、前記N個のメモリバンクの同一メモリアドレスに格納されている固定長データのいずれかと、前記ハッシュ演算手段に入力された一つの固定長データとが一致するか否かを判別し、判別結果を出力することを特徴とする請求項1記載の固定長データ検索装置。
- 前記ハッシュ演算手段に入力された一つの固定長データと同一のデータを、前記ハッシュ演算手段を介して前記データ・テーブルで検索し、前記データ・テーブルに未登録である場合には前記一つの固定長データを前記データ・テーブルに登録することを特徴とする請求項1または請求項2記載の固定長データ検索装置。
- ハッシュ値が同一となる別々の固定長データを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに格納することを特徴とする請求項3記載の固定長データ検索装置。
- ハッシュ値が異なる複数の固定長データのそれぞれを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに格納することを特徴とする請求項3記載の固定長データ検索装置。
- 前記固定長データはネットワーク通信用のMAC(Media Access Control)アドレスであり、前記データ・テーブル・メモリは、多数のMACアドレスが保持されるMACアドレス・テーブルを格納するMACエントリ・テーブル・メモリであることを特徴とする請求項1乃至請求項5のいずれか1項に記載の固定長データ検索装置。
- 2種類のハッシュ関数を用いて、入力された固定長データの第1及び第2のハッシュ値を求めるハッシュ演算手段と、
N(Nは2以上の整数)個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリと、
各固定長データの格納先のメモリアドレスが、前記第1のハッシュ値をインデックスとして保持される主メモリ・ポインタ・テーブル、及び、各固定長データの格納先のメモリアドレスが、前記第2のハッシュ値をインデックスとして保持される副メモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリと、
前記N個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段とを備え、
前記主メモリ・ポインタ・テーブルに格納可能なインデックスの数は、前記固定長データの格納先として可能なメモリアドレスの数よりも多いことを固定長データ検索装置。 - 固定長データが入力された時に2つの前記メモリ・ポインタ・テーブルのいずれを参照するかを、前記第1のハッシュ値をインデックスとして示すポインタ・セレクタ・テーブルを備えることを特徴とする請求項7記載の固定長データ検索装置。
- 前記データ・テーブルにおいて、第1のハッシュ値が同一となる別々の固定長データの格納数がNを超えるときに、新たに格納する固定長データの第1のハッシュ値に対応する前記ポインタ・セレクタ・テーブルのポインタを、前記副メモリ・ポインタ・テーブルにセットし、且つ、第2のハッシュ値が一致する、互いに異なる複数の固定長データを、前記データ・メモリにおける異なるメモリバンクの同一アドレスに分散して格納し、該格納したメモリアドレスを前記副メモリ・ポインタ・テーブルで管理することを特徴とする請求項8記載の固定長データ検索装置。
- 前記比較手段はN個の比較器を備え、前記各比較器は、2つの固定長データが同一であるか否かを判別する際に、全ビットを同時に比較して判別することを特徴とする請求項9記載の固定長データ検索装置。
- 前記ハッシュ演算手段に入力された一つの固定長データの第1のハッシュ値に基づいて前記ポインタ・セレクタ・テーブルを参照し、該テーブルのポインタに応じて前記主メモリ・ポインタ・テーブルまたは副メモリ・ポインタ・テーブルを参照して、得られたメモリアドレスに基づいて前記データ・テーブルを参照して、前記比較手段が、前記N個のメモリバンクの同一メモリアドレスに格納されている固定長データのいずれかと、前記ハッシュ演算手段に入力された一つの固定長データとが一致するか否かを判別し、判別結果を出力することを特徴とする請求項9記載の固定長データ検索装置。
- 入力された固定長データと第1のハッシュ値が同一になる固定長データが、前記データ・テーブルにまだ登録されていない場合は、前記入力された固定長データを前記データ・テーブル・メモリに格納し、該格納先のメモリアドレスを前記主メモリ・ポインタ・テーブルで管理することを特徴とする請求項9記載の固定長データ検索装置。
- 前記固定長データはネットワーク通信用のMAC(Media Access Control)アドレスであり、前記データ・テーブル・メモリは、多数のMACアドレスが保持されるMACアドレス・テーブルを格納するMACエントリ・テーブル・メモリであることを特徴とする請求項7乃至請求項12のいずれか1項に記載の固定長データ検索装置。
- コンピュータを、請求項1乃至請求項13のいずれか1項に記載の情報処理装置として機能させることを特徴とするプログラム。
- 請求項14に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
- 入力された固定長データのハッシュ値を演算して出力するハッシュ演算ステップと、
各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを、前記演算されたハッシュ値に基づいて参照するステップと、
N(Nは2以上の整数)個のメモリバンクからなるデータ・テーブル・メモリに格納され、多数の固定長データが保持されるデータ・テーブルから、前記メモリ・ポインタ・テーブルのポインタが指すアドレスに格納されているN個の固定長データを読み出すステップと、
前記読み出したN個の固定長データと、前記入力された一つの固定長データとを同時に比較し、比較結果を出力する比較ステップとを備え、
前記メモリ・ポインタ・テーブルにおいて保持可能なインデックスの数は、前記固定長データの格納先として可能なメモリアドレスの数よりも多いことを特徴とする固定長データ検索方法。 - 前記比較ステップでは、2つの固定長データが同一であるか否かを判別する比較処理を、前記読み出したN個のデータについて、並列処理により同一のタイミングで行うことを特徴とする請求項16記載の固定長データ検索方法。
- 前記入力された一つの固定長データと同一のデータを、そのハッシュ値に基づいて前記データ・テーブルで検索するステップと、
該検索において前記同一のデータが検出されなかった場合に、前記入力された一つの固定長データを前記データ・テーブルに登録する登録ステップとを含むことを特徴とする請求項16または請求項17記載の固定長データ検索方法。 - 前記登録ステップでは、ハッシュ値が同一となる別々の固定長データを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに登録することを特徴とする請求項18記載の固定長データ検索方法。
- 前記登録ステップでは、ハッシュ値が異なる複数の固定長データのそれぞれを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに登録することを特徴とする請求項18記載の固定長データ検索方法。
- 前記固定長データはネットワーク通信用のMAC(Media Access Control)アドレスであり、前記データ・テーブル・メモリは、多数のMACアドレスが保持されるMACアドレス・テーブルを格納するMACエントリ・テーブル・メモリであることを特徴とする請求項16乃至請求項20のいずれか1項に記載の固定長データ検索方法。
- 第1のハッシュ関数を用いて、入力された固定長データの第1のハッシュ値を求める第1ハッシュ演算ステップと、
第2のハッシュ関数を用いて、入力された固定長データの第2のハッシュ値を求める第2ハッシュ演算ステップと、
各固定長データの格納先のメモリアドレスが、前記第1のハッシュ値をインデックスとして保持される主メモリ・ポインタ・テーブルを、前記第1のハッシュ値に基づいて参照するステップと、
各固定長データの格納先のメモリアドレスが、前記第2のハッシュ値をインデックスとして保持される副メモリ・ポインタ・テーブルを、前記第2のハッシュ値に基づいて参照するステップと、
N(Nは2以上の整数)個のメモリバンクで構成され、多数の固定長データを保持するデータ・テーブルが格納されているデータ・テーブル・メモリから、前記主メモリ・ポインタ・テーブルまたは前記副メモリ・ポインタ・テーブルのポインタが示すアドレスに格納されているN個の固定長データを読み出すステップと、
該読み出されたN個の固定長データと、入力された一つの固定長データとを比較する比較ステップとを備え、
前記主メモリ・ポインタ・テーブルにおいて保持可能なインデックスの数は、前記固定長データの格納先として可能なメモリアドレスの数よりも多いことを特徴とする固定長データ検索方法。 - 固定長データが入力された時に2つの前記メモリ・ポインタ・テーブルのいずれを参照するかが、前記第1のハッシュ値をインデックスとして示されているポインタ・セレクタ・テーブルを、入力された固定長データの第1のハッシュ値に基づいて参照するステップを含むことを特徴とする請求項22記載の固定長データ検索方法。
- 前記データ・テーブルにおいて、第1のハッシュ値が同一となる別々の固定長データの格納数がNを超えるときに、新たに格納する固定長データの第1のハッシュ値に対応する前記ポインタ・セレクタ・テーブルのポインタを、前記副メモリ・ポインタ・テーブルに設定するステップを含むことを特徴とする請求項23記載の固定長データ検索方法。
- 前記比較ステップは、読み出されたN個の固定長データのそれぞれを入力された固定長データと比較する際に、データの全ビットを同時に比較するステップを含むことを特徴とする請求項22記載の固定長データ検索方法。
- 第2のハッシュ値が一致する、互いに異なる複数の固定長データを、前記データ・メモリにおける異なるメモリバンクの同一アドレスに分散して格納し、該格納したメモリアドレスを前記副メモリ・ポインタ・テーブルに登録するステップを含むことを特徴とする請求項22記載の固定長データ検索方法。
- 入力された固定長データと第1のハッシュ値が同一になる固定長データが、前記データ・テーブルにまだ登録されていない場合は、前記入力された固定長データを前記データ・テーブル・メモリに格納し、該格納先のメモリアドレスを前記主メモリ・ポインタ・テーブルに登録するステップを含み、
且つ、入力された固定長データを前記データ・テーブル・メモリに格納する際に、未使用のアドレスがある場合は未使用のアドレスに格納し、未使用のアドレスがない場合は、使用済みアドレスの中で、データが格納されていないメモリバンクに格納するステップを含むことを特徴とする請求項22記載の固定長データ検索方法。 - 前記固定長データはネットワーク通信用のMAC(Media Access Control)アドレスであり、前記データ・テーブルは、多数のMACアドレスが保持されるMACアドレス・テーブルであることを特徴とする請求項22乃至請求項27のいずれか1項に記載の固定長データ検索方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003016979A JP3823089B2 (ja) | 2003-01-27 | 2003-01-27 | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 |
US10/707,943 US7469243B2 (en) | 2003-01-27 | 2004-01-27 | Method and device for searching fixed length data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003016979A JP3823089B2 (ja) | 2003-01-27 | 2003-01-27 | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004229163A JP2004229163A (ja) | 2004-08-12 |
JP3823089B2 true JP3823089B2 (ja) | 2006-09-20 |
Family
ID=32904254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003016979A Expired - Fee Related JP3823089B2 (ja) | 2003-01-27 | 2003-01-27 | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7469243B2 (ja) |
JP (1) | JP3823089B2 (ja) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7757033B1 (en) | 2004-02-13 | 2010-07-13 | Habanero Holdings, Inc. | Data exchanges among SMP physical partitions and I/O interfaces enterprise servers |
US7685281B1 (en) | 2004-02-13 | 2010-03-23 | Habanero Holdings, Inc. | Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers |
US7633955B1 (en) | 2004-02-13 | 2009-12-15 | Habanero Holdings, Inc. | SCSI transport for fabric-backplane enterprise servers |
US8868790B2 (en) | 2004-02-13 | 2014-10-21 | Oracle International Corporation | Processor-memory module performance acceleration in fabric-backplane enterprise servers |
US7843906B1 (en) | 2004-02-13 | 2010-11-30 | Habanero Holdings, Inc. | Storage gateway initiator for fabric-backplane enterprise servers |
US7873693B1 (en) | 2004-02-13 | 2011-01-18 | Habanero Holdings, Inc. | Multi-chassis fabric-backplane enterprise servers |
US7565343B2 (en) * | 2004-03-31 | 2009-07-21 | Ipt Corporation | Search apparatus and search management method for fixed-length data |
US8713295B2 (en) | 2004-07-12 | 2014-04-29 | Oracle International Corporation | Fabric-backplane enterprise servers with pluggable I/O sub-system |
US7894451B2 (en) * | 2005-12-30 | 2011-02-22 | Extreme Networks, Inc. | Method of providing virtual router functionality |
US7822033B1 (en) * | 2005-12-30 | 2010-10-26 | Extreme Networks, Inc. | MAC address detection device for virtual routers |
WO2007119540A1 (ja) * | 2006-03-31 | 2007-10-25 | Kyushu Institute Of Technology | 連想メモリ |
JP4892693B2 (ja) | 2006-03-31 | 2012-03-07 | 国立大学法人九州工業大学 | アドレス生成器 |
TWI324471B (en) * | 2006-06-01 | 2010-05-01 | Via Tech Inc | Mac address management method |
US7721042B2 (en) * | 2006-07-27 | 2010-05-18 | Oracle America, Inc. | Content-addressable memory that supports a priority ordering between banks of differing sizes |
US20080028139A1 (en) * | 2006-07-27 | 2008-01-31 | Cypher Robert E | Content-addressable memory that supports a priority ordering between banks |
JP4995125B2 (ja) * | 2008-03-12 | 2012-08-08 | 株式会社アイピーティ | 固定長データの検索方法 |
JP5439035B2 (ja) * | 2009-05-26 | 2014-03-12 | 富士通株式会社 | ネットワークスイッチ装置及びその方法 |
US8166203B1 (en) * | 2009-05-29 | 2012-04-24 | Google Inc. | Server selection based upon time and query dependent hashing |
US8908564B2 (en) * | 2010-06-28 | 2014-12-09 | Avaya Inc. | Method for Media Access Control address learning and learning rate suppression |
US8605732B2 (en) | 2011-02-15 | 2013-12-10 | Extreme Networks, Inc. | Method of providing virtual router functionality |
US8868584B2 (en) | 2012-01-13 | 2014-10-21 | International Business Machines Corporation | Compression pattern matching |
CN105229980B (zh) | 2013-04-11 | 2018-11-16 | 马维尔以色列(M.I.S.L.)有限公司 | 利用可变关键字大小的精确匹配查找的方法及设备 |
US9846642B2 (en) * | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
JP6614632B2 (ja) | 2014-12-19 | 2019-12-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ビットを選択する所定位置を変更することでハッシュ関数を1つ以上生成することが可能なハッシュ値を計算する方法、並びに、その為のコンピュータ及びコンピュータ・プログラム |
JP6520259B2 (ja) * | 2015-03-18 | 2019-05-29 | 富士通株式会社 | 通信装置及び通信制御方法 |
CN112185435A (zh) * | 2019-07-03 | 2021-01-05 | 旺宏电子股份有限公司 | 电子装置、存储器装置及其存储数据的读取方法 |
KR20220077208A (ko) * | 2020-11-30 | 2022-06-09 | 삼성전자주식회사 | 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법 |
US11575652B2 (en) * | 2020-12-18 | 2023-02-07 | BlackBear (Taiwan) Industrial Networking Security Ltd. | Communication system and communication method for one-way transmission |
CN116185305A (zh) * | 2023-03-14 | 2023-05-30 | 金蝶软件(中国)有限公司 | 业务数据存储方法、装置、计算机设备和存储介质 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03245233A (ja) | 1990-02-23 | 1991-10-31 | Nec Corp | 名標の検索方式 |
US5923654A (en) * | 1996-04-25 | 1999-07-13 | Compaq Computer Corp. | Network switch that includes a plurality of shared packet buffers |
US5914938A (en) * | 1996-11-19 | 1999-06-22 | Bay Networks, Inc. | MAC address table search unit |
US5920900A (en) * | 1996-12-30 | 1999-07-06 | Cabletron Systems, Inc. | Hash-based translation method and apparatus with multiple level collision resolution |
JPH10210066A (ja) | 1997-01-16 | 1998-08-07 | Sumitomo Electric Ind Ltd | ネットワーク間中継先判定用データベース及びデータベースの構築方法 |
US6393548B1 (en) * | 1997-02-14 | 2002-05-21 | Advanced Micro Devices, Inc. | Variable 16 or 32 bit PCI interface which supports steering and swapping of data |
US6862602B2 (en) * | 1997-03-07 | 2005-03-01 | Apple Computer, Inc. | System and method for rapidly identifying the existence and location of an item in a file |
US6084877A (en) * | 1997-12-18 | 2000-07-04 | Advanced Micro Devices, Inc. | Network switch port configured for generating an index key for a network switch routing table using a programmable hash function |
US6230231B1 (en) * | 1998-03-19 | 2001-05-08 | 3Com Corporation | Hash equation for MAC addresses that supports cache entry tagging and virtual address tables |
GB9810841D0 (en) * | 1998-05-21 | 1998-07-22 | 3Com Technologies Ltd | Organisation of data bases in network switches for packet-based data communication networks |
US6266705B1 (en) * | 1998-09-29 | 2001-07-24 | Cisco Systems, Inc. | Look up mechanism and associated hash table for a network switch |
US6785278B1 (en) * | 1998-12-10 | 2004-08-31 | International Business Machines Corporation | Methods, systems and computer program products for hashing address values |
US6424650B1 (en) * | 1999-02-09 | 2002-07-23 | 3Com Corporation | Network address filter device |
US6775281B1 (en) * | 1999-09-30 | 2004-08-10 | Mosaid Technologies, Inc. | Method and apparatus for a four-way hash table |
US6434662B1 (en) * | 1999-11-02 | 2002-08-13 | Juniper Networks, Inc. | System and method for searching an associative memory utilizing first and second hash functions |
US6950434B1 (en) * | 1999-12-07 | 2005-09-27 | Advanced Micro Devices, Inc. | Arrangement for searching packet policies using multi-key hash searches in a network switch |
US6697380B1 (en) * | 1999-12-07 | 2004-02-24 | Advanced Micro Devices, Inc. | Multiple key lookup arrangement for a shared switching logic address table in a network switch |
US6665297B1 (en) * | 1999-12-09 | 2003-12-16 | Mayan Networks Corporation | Network routing table |
US6697873B1 (en) * | 1999-12-20 | 2004-02-24 | Zarlink Semiconductor V.N., Inc. | High speed MAC address search engine |
US6633865B1 (en) * | 1999-12-23 | 2003-10-14 | Pmc-Sierra Limited | Multithreaded address resolution system |
US6728261B1 (en) * | 2000-02-07 | 2004-04-27 | Axerra Networks, Ltd. | ATM over IP |
GB2359955B (en) * | 2000-03-01 | 2003-07-23 | 3Com Corp | Network unit including address hashing |
US6735670B1 (en) * | 2000-05-12 | 2004-05-11 | 3Com Corporation | Forwarding table incorporating hash table and content addressable memory |
US20020138648A1 (en) * | 2001-02-16 | 2002-09-26 | Kuang-Chih Liu | Hash compensation architecture and method for network address lookup |
JP2002334114A (ja) | 2001-05-10 | 2002-11-22 | Allied Tereshisu Kk | テーブル管理方法及び装置 |
US20030026246A1 (en) * | 2001-06-06 | 2003-02-06 | Zarlink Semiconductor V.N. Inc. | Cached IP routing tree for longest prefix search |
US6654701B2 (en) * | 2001-08-30 | 2003-11-25 | Spirent Communications | Method and apparatus for measuring protocol performance in a data communication network |
US7409542B2 (en) * | 2001-09-26 | 2008-08-05 | Intel Corporation | Security association management through the use of lookup tables |
US7085271B2 (en) * | 2002-03-14 | 2006-08-01 | Hewlett-Packard Development Company, L.P. | Method and system for performing flow based hash transformation to generate hash pointers for a network device |
US20040044868A1 (en) * | 2002-08-30 | 2004-03-04 | Intel Corporation | Method and apparatus for high-speed longest prefix match of keys in a memory |
US20040049493A1 (en) * | 2002-09-05 | 2004-03-11 | Andrew Davis | String matching process for ASCII strings using two arrays and hash table |
-
2003
- 2003-01-27 JP JP2003016979A patent/JP3823089B2/ja not_active Expired - Fee Related
-
2004
- 2004-01-27 US US10/707,943 patent/US7469243B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20040205056A1 (en) | 2004-10-14 |
US7469243B2 (en) | 2008-12-23 |
JP2004229163A (ja) | 2004-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3823089B2 (ja) | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 | |
US11102120B2 (en) | Storing keys with variable sizes in a multi-bank database | |
Li et al. | Packet forwarding in named data networking requirements and survey of solutions | |
CN109921996B (zh) | 一种高性能的OpenFlow虚拟流表查找方法 | |
US8200686B2 (en) | Lookup engine | |
US7953077B2 (en) | Network processor with single interface supporting tree search engine and CAM | |
US8780926B2 (en) | Updating prefix-compressed tries for IP route lookup | |
US6775281B1 (en) | Method and apparatus for a four-way hash table | |
US7281085B1 (en) | Method and device for virtualization of multiple data sets on same associative memory | |
CN101667958B (zh) | 选择哈希函数的方法、存储及查找路由表的方法及装置 | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
US20040111420A1 (en) | Performance and memory bandwidth utilization for tree searches using tree fragmentation | |
US7844422B2 (en) | Method and system for changing a description for a state transition function of a state machine engine | |
US20090265320A1 (en) | Scalable high speed relational processor for databases and networks | |
TW200402639A (en) | Method and data structure for a low memory overhead database | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
US20140114995A1 (en) | Scalable high speed relational processor for databases and networks | |
US6421660B1 (en) | Enhanced searching method and apparatus for variable bit chains | |
JP2023534123A (ja) | パケットマッチング方法、装置、ネットワークデバイスおよび媒体 | |
US6401171B1 (en) | Method and device for storing an IP header in a cache memory of a network node | |
CN101211346A (zh) | 一种优化存储器性能的方法 | |
KR102101419B1 (ko) | 라우팅 테이블 검색 방법 및 이를 구현하는 메모리 시스템 | |
JP3784054B2 (ja) | Macアドレスを並べ替えさせる方法および記録媒体 | |
CN116319551A (zh) | 一种基于fpga实现的高效网络流表设计方法 | |
JP2003108602A (ja) | データ検索装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060118 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060306 |
|
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: 20060614 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20060614 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060626 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100630 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110630 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110630 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120630 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |