JP4014155B2 - 情報処理装置及び方法、プログラム、データ構造、並びにコンピュータ読取り可能な記録媒体 - Google Patents
情報処理装置及び方法、プログラム、データ構造、並びにコンピュータ読取り可能な記録媒体 Download PDFInfo
- Publication number
- JP4014155B2 JP4014155B2 JP2003016843A JP2003016843A JP4014155B2 JP 4014155 B2 JP4014155 B2 JP 4014155B2 JP 2003016843 A JP2003016843 A JP 2003016843A JP 2003016843 A JP2003016843 A JP 2003016843A JP 4014155 B2 JP4014155 B2 JP 4014155B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- pointer
- registered
- registration
- hash function
- 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
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
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)
- Computer And Data Communications (AREA)
Description
【発明の属する技術分野】
本発明は、第1項目のデータが、対応する第2項目のデータと共に登録されるデータテーブルに対し、データの登録を行い又は該データテーブルから第1項目データに対応する第2項目データの検索を行う情報処理装置及び情報処理方法、コンピュータを該情報処理装置として機能させるプログラム、該情報処理装置が有するデータ構造、該プログラムが記録されたコンピュータ読取り可能な記録媒体、並びに、該データ構造が記録されたコンピュータ読取り可能な記録媒体に関する。
【0002】
【従来の技術】
従来、L2スイッチやL3スイッチ等のネットワーク・スイッチ製品の分野では、十数万を超えるMACアドレスをサポートできるシステムが知られている。かかるシスステムは、多くのサーバやクライアントをサポートできる反面、受け取ったパケットのMACアドレスから該当する転送先ポートを特定するためには、その目的で保持しているすべてのMACアドレスを検索し、対応する転送先ポートを探し出す必要がある。
【0003】
そこでかかるシステムにおいては、ハッシュ法を用いてMACアドレスを高速で検索できるようにしている。つまり、MACアドレスと転送先ポートとを対応付けたMACアドレステーブルを、MACアドレスにハッシュ関数を適用して得られるハッシュキーによって直接的にアクセスできるように作成しておき、パケットを受け取ったときには、パケット中のMACアドレスに基づくハッシュキーを用いて、該当する転送先ポートを取得できるようにしている(たとえば、特許文献1参照)。この場合、異なるMACアドレスから同一のハッシュキーが得られるときは、それらのMACアドレスに係るデータはチェイニング等されて格納されるとともに、検索時には、共通のハッシュキーを介し、さらにチェイニングのポインタを辿ってアクセスされることになる。
【0004】
【特許文献1】
特開平10−210066号公報
【0005】
【発明が解決しようとする課題】
しかしながら、完全なハッシュ関数は存在しないため、どのようなハッシュ関数を用いても、特定のハッシュキーに対して多数のMACアドレスが対応してしまうといったようなデータのばらつきを避けることはできない。このようなデータのばらつきは、MACアドレスの効率的なサーチを妨げることになる。そこでデータが変更される度に異なるハッシュ関数を用いてテーブル全体を作成し直しているのが現状である。
【0006】
特にモバイル製品のように接続場所が一定でない場合、MACアドレスと、スイッチ又はルータのポートとの関係は刻々と変化し、MACアドレステーブルに対するデータの追加や削除が常に繰り返されている可能性がある。このため、MACアドレステーブルにおけるデータの追加や削除に伴って、ハッシュ関数によるデータ分散の平均化が崩壊するので、ハッシュ関数の変更によるデータの並べ替えを頻繁に行う必要がある。
【0007】
MACアドレステーブルのエントリ数が十数万を超えるような大規模スイッチの場合、ハッシュ関数の変更に伴うハッシュ値の再計算やデータの並べ替えには長時間を要する。したがって実際には、ハッシュ値の再計算やデータの並べ替えを要するハッシュ関数の変更は行っていない。つまり、各ハッシュ値に対応するアドレスのメモリ領域におけるエントリ数の許容量を超えた場合には、そのハッシュ値についてはそれ以上エントリを増加させず、ブロードキャストで対応しているのが現状である。ブロードキャストはネットワーク全体に同一のデータを転送するものであるため、他のパケットの送信を不能とし、ネットワーク効率を著しく低下させる原因となる。逆に、MACアドレスのデータをすべてエントリするようにした場合は、ポインタを辿る検索を何度も繰り返す必要が生じ、検索時間が長期化する。
【0008】
本発明の目的は、かかる従来技術の問題点に鑑み、ハッシュ関数を用いた検索用テーブルへの登録及び該テーブルからの検索をより効率的に行うことができる技術を提供することにある。
【0009】
【課題を解決するための手段】
この目的を達成するため、本発明に係る情報処理装置及び情報処理方法は、図1に示すように、第1項目のデータが、対応する第2項目のデータと共に登録されるデータテーブル101と、データテーブル101における各登録データへのポインタが、各登録データの第1項目データに所定のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録されるポインタテーブルとを用い、対象となる第1項目データについて、データテーブル101への対応第2項目データを伴う前記登録を登録手段102により行い又はデータテーブル101からの対応第2項目データの検索を検索手段103により行うものである。そして本発明の特徴は、ハッシュ関数は第1及び第2のハッシュ関数で構成され、ポインタテーブルは、第1及び第2ハッシュ関数によるハッシュ値によってそれぞれ参照される第1のポインタテーブル104及び第2のポインタテーブル105で構成されていることにある。
【0010】
ここで、情報処理装置としては、たとえばL2スイッチ(スイッチングハブ)やL3スイッチが該当する。第1項目データとしては、たとえばMACアドレスが該当する。第2項目データとしては、たとえばMACアドレスに対応するポート番号が該当する。データテーブルに対する登録に際し、ハッシュ値が同一つまりシノニムの関係にある複数の登録データが発生した場合、所定数たとえば2つまではシノニムの関係にあるデータの登録を認めるようにしてもよい。その場合、シノニムの関係にある登録データは、チェイニングやオープンアドレッシング等の周知の方法で関連付けられる。この場合、シノニムの関係にある各登録データのうち、ポインタによって直接指示されるもの以外は、該ポインタによってはチェイニング等を経て間接的に指示されることになる。本発明は第1項目データについて、データテーブルへの登録のみ若しくはデータテーブルからの検索のみ又は該登録及び検索の双方を行う情報処理装置及び情報処理方法に関する。
【0011】
本発明によれば、ハッシュ関数及びポインタテーブルとして、第1ハッシュ関数及び第1ポインタテーブル並びに第2ハッシュ関数及び第2ポインタテーブルを用いるようにしているため、これらを第1及び第2ハッシュ関数の各特性に応じて適宜使い分けることにより、シノニムの関係にあるデータの登録を抑制し、又はシノニムの関係にあるデータの登録数を制限するとともに、データテーブルのサイズを小さく維持することができる。つまり、従来は、第1項目データの値の分布に偏りがあると、特定のハッシュ値に関するシノニムが多く発生し、データテーブルの再構築が必要になる場合があった。しかし本発明によれば、シノニムが発生した場合は、別のハッシュ関数を用いてハッシュ値を分散させることができるので、データテーブルの再構築を回避することができる。また、2つのハッシュ関数を用い、それぞれに対応する別個のデータテーブルに登録を行う場合に比べ、データテーブルの大きさを小さくすることができる。つまり、データテーブルに対する登録や検索をより効率的に行うことができる。
【0012】
本発明は以下の好ましい各態様のうちの任意のもの、又は任意に選択した2以上の態様を組合せたものを、上記本発明の基本的構成に結合させて実施することができる。
【0013】
本発明の好ましい態様においては、登録又は検索に際しては、主として第1ハッシュ関数及び第1ポインタテーブルを使用し、これによっては、シノニムが発生するために登録を行うことができず、又は検索を行うことができない場合に、第2ハッシュ関数及び第2ポインタテーブルを使用することができる。検索を行うことができない場合とは、たとえば第1ポインタテーブル中の該当位置には第2ポインタテーブルを参照すべき旨が指示されていたり、ポインタが登録されていなかったりする場合や、ポインタが無効である旨が示されている場合や、後述する選択テーブルにより第2ポインタテーブルを参照すべき旨が指示されている場合が該当する。
【0014】
また、データテーブル中の各登録データは第1又は第2ポインタテーブルのいずれか一方にのみ有効に登録されるポインタによって直接又は間接的に指示される。間接的に指示されている場合、検索に際しては、指示位置からさらにチェイニングを辿る等の必要がある。
【0015】
また、図1に示すように、データテーブル101における各登録データを対象とするデータテーブル101の検索に際して第1ハッシュ関数及び第1ポインタテーブル104又は第2ハッシュ関数及び第2ポインタテーブル105のいずれを選択して用いるかを示す選択データが、データテーブル101における各登録データの第1項目データに第1ハッシュ関数を適用して得られるハッシュ値が示す各格納位置に登録された選択テーブル106を設けることができる。たとえば、データ登録に際し、対象第1項目データが既登録第1項目データとシノニムであることが判明した場合、選択テーブル106中の対応選択データを構成するビットをオンとして、第2ハッシュ関数及び第2ポインタテーブル105を選択して用いるべき旨を設定することができる。
【0016】
第2ハッシュ関数としては、第1ハッシュ関数よりも、第1項目データについてのハッシュ値を分散させる傾向が強いものを採用することができる。この場合、第1ハッシュ関数によれば複数の第1項目データについてハッシュ値が同一となり、シノニムとなる場合、第2ハッシュ関数を用いてシノニムを解消できる確率を高くすることができる。
【0017】
登録に際しては、対象第1項目データについて、前記第1及び第2ポインタテーブルのいずれにおいてもポインタの登録が行われていないことを条件として、前記第1ポインタテーブルを用いた前記データテーブルへの登録を行うことができる。つまり、対象第1項目データが未登録であれば、第1ポインタテーブルを用いて登録を行う。
【0018】
また、登録に際しては、対象第1項目データが、第1ポインタテーブルの対応ポインタを共通とするシノニムであることが判明した場合、該シノニムの関係にある対象第1項目データ及び既登録第1項目データについて、第2ポインタテーブルを用い、シノニムを解消した登録を行うことができる。この場合、第1ポインタテーブルのポインタを共通とするシノニムの関係にあるデータの登録は行われない。この場合、既登録第1項目データについては、データテーブルにおける格納位置を変更することなく、該格納位置を指示するポインタを第2ポインタテーブルに登録することができる。
【0019】
この代わりに、登録に際し、第1ポインタテーブルの対応ポインタを共通とするシノニムの関係にある第1項目データについては該ポインタを共通とする所定数までの登録を許容し、該所定数を超えた場合は、該シノニムの関係にあるすべての登録を、前記第2ポインタテーブルを用いた登録とするようにしてもよい。
【0020】
一方、本発明に係るプログラムは、コンピュータを、上記本発明の情報処理装置として機能させることを特徴とする。この場合、プログラムは、たとえば図2に示すコンピュータにおいて実行される。図中の201及び202はプログラムを実行するためのCPU及びメモリである。データテーブル、第1及び第2ポインタテーブル並びに選択テーブルはメモリ202において構成される。図中の203a、203b・・・は端末装置やLAN等に接続されたポート、204a、204b・・・はこれらのポートを介してパケットの送受信を行う通信制御部、205は受信したパケットのデータを一時的に記憶しておくためのバッファ、206は各部を接続するバスである。コンピュータがパケットの中継機能を行う場合、バッファ205内の受信したパケットデータにおける送信元アドレス、及びパケットを受信したポートの番号がそれぞれ第1項目データ及び第2項目データとして、データテーブルへの登録の対象となる。また、パケットデータ中の送信先アドレスは、第1項目データとして、データテーブルからの検索対象となり、対応ポート番号が検索された場合、受信したパケットデータは、そのポートから送出されることになる。
【0021】
また、本発明に係るコンピュータ読取り可能な記録媒体は、この本発明のプログラムを記録したことを特徴とする。また、本発明に係るデータ構造は、上述のデータテーブル、第1ポインタテーブル、及び第2ポインタテーブル、あるいはさらに上述の選択テーブルを有することを特徴とする。また、本発明の別のコンピュータ読取り可能な記録媒体は、前記データ構造を記録したものであることを特徴とする。
【0022】
【発明の実施の形態】
図3は本発明の一実施形態に係るスイッチ装置において使用される各テーブルの構造を示す。このスイッチ装置は各ポートから受信するパケットを、パケット中の送信先MACアドレスに対応するポートから転送するものである。MACアドレスに対応するポートは各テーブルに基づき、検索を行うことにより得られるポートアドレスにより知ることができる。
【0023】
同図に示すように、スイッチ装置は、MACアドレスが、対応するポートアドレスと共に登録されるMACアドレステーブル3、MACアドレステーブル3における各登録データへのポインタが登録される第1ポインタテーブル1及び第2ポインタテーブル2、並びに第1ポインタテーブル1又は第2ポインタテーブル2のいずれを選択的に用いるかを示す選択データが登録される選択テーブル4を備える。
【0024】
MACアドレステーブル3は、128k×64[bit]の大きさを有する。つまり各レコードが64[bit]で構成され、128kレコード分の容量を有する。第1ポインタテーブル1及び第2ポインタテーブル2はいずれも64k×17[bit]の大きさを有し、選択テーブル4は64k×1[bit]の大きさを有する。
【0025】
第1ポインタテーブル1にはMACアドレステーブル3における各登録データの格納位置を矢印5のように指示するポインタとしてメモリアドレスが登録される。各メモリアドレスの第1ポインタテーブル1における格納位置は、対応MACアドレスに第1ハッシュ関数6を適用して得られるハッシュ値によって、矢印7のように指示される。図4に示すように、第2ポインタテーブル2にもMACアドレステーブル3における登録データの格納位置を、矢印21のように指示するメモリアドレスが登録されるが、各メモリアドレスの第2ポインタテーブル2における格納位置は、対応MACアドレスに第2ハッシュ関数22を適用して得られるハッシュ値によって指示される。MACアドレステーブル3中の各登録データの格納位置は第1又は第2ポインタテーブル1又は2のいずれか一方にのみ有効に登録されているメモリアドレスによって指示される。
【0026】
第1ハッシュ関数は、図5に示すように、24ビットのベンダIDと24ビットのローカル識別番号からなるMACアドレス31の上位16ビット31a及び中間の16ビット31bを加算し、この結果に下位16ビット31cを結合して32ビットとした値Aを、任意の16ビットの素数で割った余りを16ビットのハッシュ値とするものである。このとき、加算の結果生じるキャリーは、捨て去ってもよいし、最下位に加えてもよい。
【0027】
第2ハッシュ関数は図6に示すように、MACアドレス31の上位32ビット31a及び31bについてビットシフトを行った後、上位16ビット31a及び中間の16ビット31bを加算し、この結果に下位16ビット31cを結合して32ビットとした値Bを、任意の16ビット等の素数で割った余りを16ビットのハッシュ値とするものである。ビットシフトの量は1〜数ビットでよい。図6の場合、矢印41により左方へシフトし、矢印42により、最上位ビットを最下位ビットの方へ順次ローテーションすることを示している。これによれば、ベンダIDとして割り当てられているデータ数よりもローカル識別番号として割り当てられているデータ数の方がはるかに多いため、ビットシフト後の上位32ビットの値を除して得た第2ハッシュ関数は第1ハッシュ関数よりも、MACアドレスについて、ハッシュ値を分散させる傾向が強くなる。
【0028】
受信したパケット中の送信先MACアドレスに対応するポートアドレスを検索する際、主として第1ハッシュ関数及び第1ポインタテーブルを使用し、これによっては検索を行うことができない場合に、第2ハッシュ関数及び第2ポインタテーブルを使用する。いずれを使用できるかは、選択テーブル4を用いることにより、予め知ることができる。選択テーブル4中の各選択データの格納位置は、対応するMACアドレスに第1ハッシュ関数を適用して得られるハッシュ値によって示される。送信先MACアドレスに基づいてMACアドレステーブル3を検索するとき、第1ハッシュ関数によるハッシュ値に対応する選択データは、多くの場合、図3のように第1ポインタテーブル1を用いる旨を示すが、第1ポインタテーブルを使用できない場合は、図4に示すように、第2ポインタテーブル2を用いる旨を示す。
【0029】
図7は送信先MACアドレスに対応するポートアドレスを検索する処理を示すフローチャートである。処理を開始すると、まずステップ51において、送信先MACアドレスに第1ハッシュ関数を適用してハッシュ値を取得する。次にステップ52において、取得したハッシュ値により示される選択テーブル4中の格納位置における選択データを参照する。次に、参照中の選択データが第1又は第2ポインタテーブルのいずれを用いる旨を示しているかを調べる。この場合、選択データは、それを構成するビットがオフであれば第1ポインタテーブルを用いる旨を示し、オンであれば第2ポインタテーブルを用いる旨を示す。ビットがオフであればステップ54へ進み、オンであればステップ55へ進む。
【0030】
ステップ54では、ステップ51で取得したハッシュ値が示す第1ポインタテーブル1の格納位置におけるメモリアドレスを取得し、ステップ57へ進む。ステップ55では、送信先MACアドレスに第2ハッシュ関数を適用してハッシュ値を取得する。そしてステップ56において、取得したハッシュ値が示す第2ポインタテーブルの格納位置におけるメモリアドレスを取得し、ステップ57へ進む。
【0031】
ステップ57へ進むと、取得したメモリアドレスによってMACアドレステーブル3を参照し、対応登録データのMACアドレスが送信先MACアドレスに一致することを条件として、対応ポートアドレスを取得する。これにより、送信先MACアドレスに対応するポートの検索処理が終了する。
【0032】
この後、スイッチ装置は、取得したポートアドレスのポートから受信パケットを送出することによって、送信先MACアドレスで特定される機器へ向け、受信パケットを転送することができる。ステップ57において、MACアドレスが一致せず、対応ポートアドレスが取得できなかった場合は、すべてのポートからパケットを送出する。
【0033】
図8はMACアドレステーブル3へのデータ登録処理を示すフローチャートである。データ登録処理は、パケットを受信したとき、パケット中の送信元MACアドレスについて行う。まず、ステップ61において、受信したパケットの送信元MACアドレスに第1ハッシュ関数を適用してハッシュ値を取得する。
【0034】
次に、ステップ62において、取得したハッシュ値により選択テーブル4を参照し、ステップ63において、参照中の選択データのビットがオフか否かを判定する。ビットがオフであるということは、当該送信元MACアドレスについて、第1ハッシュ関数及び第1ポインタテーブルを用いた登録が既に行われており、又は未だ行われていないことを意味する。この場合、ステップ64へ進む。選択データのビットがオフでないということは、当該送信元MACアドレスについて、第2ハッシュ関数及び第2ポインタテーブルを用いた登録が既に行われており、又は当該送信元MACアドレスが、第2ハッシュ関数及び第2ポインタテーブルを用いて登録済みのMACアドレスとシノニムの関係にあることを意味する。この場合、当該送信元MACアドレスについては登録は行わず、直ちに処理を終了する。つまり、第2ポインタテーブル2を介したシノニムの関係にあるMACアドレスの登録は行わないようにしている。
【0035】
ステップ64では、ステップ61で取得したハッシュ値を用いて第1ポインタテーブルを参照し、ステップ65において、参照位置にメモリアドレスが登録済みであるか否かを判定する。参照位置が初期値たとえばゼロであれば登録済みではないと判定することができる。登録済みであるということは、当該送信元MACアドレス又はこれとシノニムの関係にあるMACアドレスについて、第1ハッシュ関数を用いたMACアドレステーブル3への登録が既に行われていることを意味する。この場合は、ステップ66へ進む。一方、登録済みでないということは、当該送信元MACアドレス及びこれとシノニムの関係にあるMACアドレスのいずれについても、第1ハッシュ関数を用いたMACアドレステーブル3への登録が未だなされていないことを意味する。この場合はステップ70へ進む。
【0036】
ステップ66へ進むと、当該登録済みのメモリアドレスでMACアドレステーブル3を参照し、ステップ67において、参照位置のMACアドレスと、当該送信元MACアドレスとが一致するか否かを判定する。両MACアドレスが一致しないということは、シノニムの発生を意味する。この場合は、シノニムの発生を解消するため、ステップ68へ進む。一方、両MACアドレスが一致する場合は当該送信元MACアドレスが既に登録済みであることを意味するので、処理を直ちに終了する。
【0037】
ステップ68へ進むと、ステップ62において参照した選択データのビットをオンにする。つまり後で、送信先MACアドレスの第1ハッシュ関数によるハッシュ値がこの選択データを指示する場合、該送信先MACアドレスについては第2ハッシュ関数を用いて検索が行われるようにする。次に、ステップ69において、ステップ67で一致しないと判定された既登録MACアドレス及び当該送信元MACアドレスの双方について、第2ハッシュ関数を用い、第2ポインタテーブルを介して、MACアドレステーブル3への登録を行う。つまり、第2ハッシュ関数は第1ハッシュ関数よりも分散傾向が強いので、通常、両MACアドレスについて第2ハッシュ関数を提供した場合、異なるハッシュ値を得ることができ、シノニムを解消して登録を行うことができる。
【0038】
このとき、当該送信元MACアドレスに対応させて登録するポートアドレスとしては、当該送信元MACアドレスのパケットを受信したポートのアドレスを用いる。また、既登録MACアドレスについては、MACアドレステーブル3における格納位置は変更する必要はなく、第2ポインタテーブルにおける対応メモリアドレスが該格納位置を指示するようにすればよい。このシノニムを解消した登録が完了すると、データ登録処理を終了する。
【0039】
一方、ステップ70へ進むと、当該送信元MACアドレスが登録されるMACアドレステーブル3の格納位置を示すメモリアドレスを第1ポインタテーブルに登録する。登録位置は、ステップ61で取得した第1ハッシュ関数によるハッシュ値で示される。登録するメモリアドレスとしては、たとえばMACアドレステーブル3中の空いているアドレスのうち最小のアドレスを選ぶことができる。次に、ステップ71において、当該送信元MACアドレスを、対応するポートアドレスとともに登録する。登録位置は、ステップ70で登録したメモリアドレスによって指示される。この登録が完了すると、データ登録処理を終了する。
【0040】
本実施形態によれば、ハッシュ関数及びポインタテーブルとして第1及び第2のハッシュ関数、並びに第1及び第2ハッシュ関数によるハッシュ値によってそれぞれ参照される第1及び第2ポインタテーブル1及び2を用いるようにしたため、第1及び第2ハッシュ関数の特性の違いを利用し、シノニムの関係にあるMACアドレスについては登録を行うことなく、シノニムの関係を解消してから登録を行うことができる。したがって、シノニムが発生して登録できない場合のブロードキャストやMACアドレステーブル3の再構築を回避することができる。また、2つのハッシュ関数を用い、かつそれぞれに対応する独立したMACアドレステーブル3を用いる場合に比べて、MACアドレステーブル3のサイズを小さくすることができる。
【0041】
また、MACアドレステーブル3の検索や登録に際し、主として第1ハッシュ関数及び第1ポインタテーブルを使用し、これによっては検索や登録を行うことができない場合に、第2ハッシュ関数及び第2ポインタテーブルを使用するようにしたため、検索や登録を効率的に行うことができる。
【0042】
また、MACアドレステーブル3中の各登録データは第1又は第2ポインタテーブルのいずれか一方にのみ有効に登録されるポインタによって指示されるため、使用すべき第1又は第2ポインタテーブルを予め知ることにより、検索を迅速に行うことができる。
【0043】
また、MACアドレステーブル3における各登録データを対象とするMACアドレステーブル3の検索に際して第1ハッシュ関数及び第1ポインタテーブル又は第2ハッシュ関数及び第2ポインタテーブルのいずれを選択して用いるかを示す選択データが、MACアドレステーブル3における各登録データのMACアドレスに第1ハッシュ関数を適用して得られるハッシュ値が示す各格納位置に登録された選択テーブルを用いるようにしたため、使用すべき第1又は第2ポインタテーブルを予め知ることがき、したがって検索を迅速に行うことができる。
【0044】
また、第2ハッシュ関数は第1ハッシュ関数よりも、MACアドレスについて、ハッシュ値を分散させる傾向が強いため、第1ハッシュ関数によってシノニムが発生する場合、代わりに第2ハッシュ関数を用いることによって、シノニムを容易に解消して登録を行うことができる。
【0045】
また、対象MACアドレスについて、第1及び第2ポインタテーブルのいずれにおいてもポインタの登録が行われていない場合、第1ポインタテーブルを用いたMACアドレステーブル3への登録を行うようにしたため(ステップ63〜65、70、71)、第1ハッシュ関数を優先的に使用した登録を行うことができる。
【0046】
また、対象MACアドレスが、第1ポインタテーブルの対応ポインタを共通とするシノニムであることが判明した場合、該シノニムの関係にある対象MACアドレス及び既登録MACアドレスについて、第2ポインタテーブルを用い、シノニムを解消した登録を行うようにしたため(ステップ63〜69)、ブロードキャストやMACアドレステーブル3の再構築を抑制するとともに、検索を迅速に行うことができるようにすることができる。
【0047】
また、シノニムを解消した登録を行うに際し、既登録MACアドレスについては、MACアドレステーブル3における格納位置を変更することなく、格納位置を指示するポインタを第2ポインタテーブルに登録するようにしたため、格納位置を変更することにより必要となる処理を不要とし、処理を効率的に行うことができる。
【0048】
なお、本発明は上述実施形態に限定されることなく適宜変形して実施することができる。たとえば、上述においては、シノニムの関係にあるデータの登録を行わないようにしているが、この代わりに第1ポインタテーブルの対応ポインタを共通とするシノニムの関係にある第1項目データについては該ポインタを共通とする所定数までの登録を許容し、該所定数を超えた場合は、該シノニムの関係にあるすべての登録を、可能な限りにおいて、第2ポインタテーブルを用いた登録とするようにしてもよい。
【0049】
また、上述においては、受信パケットの送信元MACアドレスについて対応ポートを示す情報とともに登録を行い、送信先MACアドレスについて対応ポートを示す情報を検索する場合について説明したが、これに限定されることなく、固定長のデータについて、対応データとともにハッシュ関数を用いた登録を行い、及び対応データの検索を行うすべての場合について本発明を適用することができる。
【0050】
また、上述においては、MACアドレステーブル3の検索に際して第1ハッシュ関数及び第1ポインタテーブル又は第2ハッシュ関数及び第2ポインタテーブルのいずれを選択して用いるかを予め知るために、選択テーブル4を用いているが、この代わりに、同様の情報を第1ポインタテーブルに付加するようにしてもよい。
【0051】
また、上述においては特に言及しなかったが、図7及び図8の処理を実施するための構成としては、主に電子回路を用いてハード的に構成したものや、コンピュータプログラムを用いて構成したものを採用することができる。
【0052】
【発明の効果】
以上説明したように本発明によれば、ハッシュ関数として第1及び第2のハッシュ関数を用い、ポインタテーブルとして、該第1及び第2ハッシュ関数によるハッシュ値によってそれぞれ参照される第1及び第2のポインタテーブルを用いるようにしたため、データテーブルへの登録及びデータテーブルからの検索をより効率的に行うことができる。
【図面の簡単な説明】
【図1】本発明に係る情報処理装置を示すブロック図である。
【図2】本発明に係るプログラムを実行するためのハードウェア構成を示す図である。
【図3】本発明の一実施形態に係るスイッチ装置において使用される各テーブルの構造を示す図である。
【図4】図1のテーブル構造において、第2ハッシュ関数を用いる場合の検索の様子を示す図である。
【図5】図1の装置で用いられる第1ハッシュ関数を示す図である。
【図6】図1の装置で用いられる第2ハッシュ関数を示す図である。
【図7】図1の装置におけるMACアドレステーブルへの登録処理を示す図である。
【図8】図1の装置におけるMACアドレステーブルからの検索処理を示す図である。
【符号の説明】
1:第1ポインタテーブル、2:第2ポインタテーブル、3:MACアドレステーブル、4:選択テーブル、5,7,21,41,42:矢印、6:第1ハッシュ関数、22:第2ハッシュ関数、31:MACアドレス、31a:上位ビット、31b:中間ビット、31c:下位ビット、101:データテーブル、102:登録手段、103:検索手段、104:第1ポインタテーブル、105:第2ポインタテーブル、106:選択テーブル、201:CPU、202:メモリ、203a,203b:ポート、204a,204b:通信制御部、205:バッファ、206:バス。
Claims (16)
- 第1項目のデータが、対応する第2項目のデータと共に登録されるデータテーブルと、
前記データテーブルにおける各登録データへのポインタが、該登録データの第1項目データに所定のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録されるポインタテーブルと、
対象となる第1項目データについて、前記データテーブルへの対応第2項目データを伴う前記登録を行う登録手段又は前記データテーブルからの対応第2項目データの検索を行う検索手段とを備えた情報処理装置であって、
前記ハッシュ関数は第1及び第2のハッシュ関数で構成され、前記ポインタテーブルは、該第1及び第2ハッシュ関数によるハッシュ値によってそれぞれ参照される第1及び第2のポインタテーブルで構成されており、
前記登録手段又は検索手段は、主として前記第1ハッシュ関数及び第1ポインタテーブルを使用し、これによっては、シノニムが発生するために登録を行うことができず、又は検索を行うことができない場合に、前記第2ハッシュ関数及び第2ポインタテーブルを使用するものであり、
前記情報処理装置はさらに、前記データテーブルにおける各登録データを対象とする前記データテーブルの検索に際して前記第1ハッシュ関数及び第1ポインタテーブル又は第2ハッシュ関数及び第2ポインタテーブルのいずれを選択して用いるかを示す選択データが、前記データテーブルにおける各登録データの第1項目データに前記第1ハッシュ関数を適用して得られるハッシュ値が示す各格納位置に登録された選択テーブルを有することを特徴とする情報処理装置。 - 前記データテーブル中の各登録データは前記第1又は第2ポインタテーブルのいずれか一方にのみ有効に登録されるポインタによって直接又は間接的に指示されることを特徴とする請求項1に記載の情報処理装置。
- 前記登録手段は、対象第1項目データについて、前記第1及び第2ポインタテーブルのいずれにおいてもポインタの登録が行われていないことを条件として、前記第1ポインタテーブルを用いた前記データテーブルへの登録を行うことを特徴とする請求項1に記載の情報処理装置。
- 前記登録手段は、対象第1項目データが、前記第1ポインタテーブルの対応ポインタを共通とするシノニムであることが判明した場合、該シノニムの関係にある対象第1項目データ及び既登録第1項目データについて、前記第2ハッシュ関数及び第2ポインタテーブルを用いて前記データテーブルへの登録を行うことにより、シノニムを解消した登録を行うとともに、該登録を行うに際し、既登録第1項目データについては、前記データテーブルにおける格納位置を変更することなく、該格納位置を指示するポインタを前記第2ポインタテーブルに登録することを特徴とする請求項1に記載の情報処理装置。
- 前記登録手段は、前記第1ポインタテーブルの対応ポインタを共通とするシノニムの関係にある第1項目データについては該ポインタを共通とする所定数までの登録を許容し、該所定数を超えた場合は、該シノニムの関係にある第1項目データについてのすべての登録を、前記第2ハッシュ関数及び第2ポインタテーブルを用いたものとすることを特徴とする請求項1に記載の情報処理装置。
- 前記登録が行われる場合の対象第1項目データ及び対応第2項目データは装置が受信したパケット又はフレーム中の送信元アドレス及びこれに対応するポートを示す情報であり、前記検索が行われる場合の第1項目データ及び対応第2項目データは該パケット又はフレーム中の送信先アドレス及びこれに対応するポートを示す情報であることを特徴とする請求項1に記載の情報処理装置。
- 前記送信元及び送信先アドレスはMACアドレスであり、受信したパケット又はフレーム中の送信先MACアドレスに対応するポートから該パケット又はフレームを転送するスイッチ装置として機能することを特徴とする請求項6に記載の情報処理装置。
- コンピュータを、請求項1〜7のいずれかの情報処理装置として機能させることを特徴とするプログラム。
- 請求項8のプログラムを記録したことを特徴とするコンピュータ読取り可能な記録媒体。
- コンピュータが、第1項目のデータを、対応する第2項目のデータと共に登録するデータテーブルと、
前記コンピュータが、前記データテーブル中の一部の登録データへのポインタを、該登録データの第1項目データに第1のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録する第1のポインタテーブルと、
前記コンピュータが、前記データテーブル中の他の登録データへのポインタを、該登録データの第1項目データに第2のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録する第2のポインタテーブルと、
前記コンピュータが、前記データテーブルにおける登録データを検索するために前記第1又は第2ポインタテーブルのいずれを用いるかを示す選択データを、該登録データの第1項目データに前記第1ハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録する選択テーブルとを備え、
前記コンピュータは、前記データテーブルへの前記第2項目データを伴う第1項目データの登録、又は該データテーブルにおける該登録データの検索に際し、主として前記第1ハッシュ関数及び第1ポインタテーブルを使用し、これによっては、シノニムが発生するために登録を行うことができず、又は検索を行うことができない場合に、前記第2ハッシュ関数及び第2ポインタテーブルを使用することを特徴とするデータ構造。 - 請求項10のデータ構造を記録したことを特徴とするコンピュータ読取り可能な記録媒体。
- コンピュータが、第1項目の各データが、対応する第2項目のデータと共に登録されるデータテーブルを用意する工程と、
前記コンピュータが、前記データテーブルにおける各登録データへのポインタが、各登録データの第1項目データに所定のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録されるポインタテーブルを用意する工程と、
前記コンピュータが、対象となる第1項目データについて、前記データテーブルへの対応第2項目データを伴う前記登録を行う登録工程又は前記データテーブルからの対応第2項目データの検索を行う検索工程とを備えた情報処理方法であって、
前記ハッシュ関数として第1及び第2のハッシュ関数が用いられ、前記ポインタテーブルとして、前記第1及び第2ハッシュ関数によるハッシュ値によってそれぞれ参照される第1及び第2のポインタテーブルが用いられ、
前記登録工程又は検索工程では、主として前記第1ハッシュ関数及び第1ポインタテーブルを使用し、これによっては、シノニムが発生するために登録を行うことができず、又は検索を行うことができない場合に、前記第2ハッシュ関数及び第2ポインタテーブルを使用し、
前記情報処理方法はさらに、
前記コンピュータが、前記データテーブルにおける各登録データを対象とする前記デー タテーブルの検索に際して前記第1ハッシュ関数及び第1ポインタテーブル又は第2ハッシュ関数及び第2ポインタテーブルのいずれを選択して用いるかを示す選択データが、前記データテーブルにおける各登録データの第1項目データに前記第1ハッシュ関数を適用して得られるハッシュ値が示す各格納位置に登録された選択テーブルを用意する工程を具備することを特徴とする情報処理方法。 - 前記データテーブル中の各登録データは前記第1又は第2ポインタテーブルのいずれか一方にのみ登録されるポインタによって直接又は間接的に指示されることを特徴とする請求項12に記載の情報処理方法。
- 前記登録工程では、対象第1項目データについて、前記第1及び第2ポインタテーブルのいずれにおいてもポインタの登録が行われていないことを条件として、前記第1ポインタテーブルを用いた前記データテーブルへの登録を行うことを特徴とする請求項12に記載の情報処理方法。
- 前記登録工程では、前記第1ポインタテーブルの対応ポインタを共通とするシノニムの関係にある第1項目データについては該ポインタを共通とする所定数までの登録を許容し、該所定数を超えた場合は、該シノニムの関係にある第1項目データについてのすべての登録を、前記第2ハッシュ関数及び第2ポインタテーブルを用いたものとすることを特徴とする請求項12に記載の情報処理方法。
- 前記登録が行われる場合の対象第1項目データ及び対応第2項目データは装置が受信したパケット又はフレーム中の送信元アドレス及びこれに対応するポートを示す情報であり、前記検索が行われる場合の第1項目データ及び対応第2項目データは該パケット又はフレーム中の送信先アドレス及びこれに対応するポートを示す情報であることを特徴とする請求項12に記載の情報処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003016843A JP4014155B2 (ja) | 2003-01-27 | 2003-01-27 | 情報処理装置及び方法、プログラム、データ構造、並びにコンピュータ読取り可能な記録媒体 |
US10/707,941 US7124278B2 (en) | 2003-01-27 | 2004-01-27 | Information processing device and method, program, data structure, and computer-readable recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003016843A JP4014155B2 (ja) | 2003-01-27 | 2003-01-27 | 情報処理装置及び方法、プログラム、データ構造、並びにコンピュータ読取り可能な記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004227434A JP2004227434A (ja) | 2004-08-12 |
JP4014155B2 true JP4014155B2 (ja) | 2007-11-28 |
Family
ID=32904157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003016843A Expired - Fee Related JP4014155B2 (ja) | 2003-01-27 | 2003-01-27 | 情報処理装置及び方法、プログラム、データ構造、並びにコンピュータ読取り可能な記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7124278B2 (ja) |
JP (1) | JP4014155B2 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7565343B2 (en) | 2004-03-31 | 2009-07-21 | Ipt Corporation | Search apparatus and search management method for fixed-length data |
JP4870453B2 (ja) * | 2006-03-09 | 2012-02-08 | 株式会社沖データ | 画像形成装置 |
US7873041B2 (en) * | 2006-12-01 | 2011-01-18 | Electronics And Telecommunications Research Institute | Method and apparatus for searching forwarding table |
US7856529B2 (en) * | 2007-04-12 | 2010-12-21 | Massachusetts Institute Of Technology | Customizable memory indexing functions |
JP5012674B2 (ja) * | 2008-06-03 | 2012-08-29 | 日本電気株式会社 | Ipパケット制御装置におけるソフトウェア検索方法 |
JP4845149B2 (ja) | 2008-10-27 | 2011-12-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データを管理する管理装置、管理プログラム、および管理方法 |
US8312066B2 (en) * | 2010-11-30 | 2012-11-13 | Telefonaktiebolaget L M Ericsson (Publ) | Hash collision resolution with key compression in a MAC forwarding data structure |
US9165005B2 (en) * | 2012-02-24 | 2015-10-20 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
US8861401B2 (en) | 2012-04-03 | 2014-10-14 | International Business Machines Corporation | Layer 2 packet switching without look-up table for ethernet switches |
JP6319740B2 (ja) * | 2014-03-25 | 2018-05-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム |
KR20180083963A (ko) * | 2014-06-24 | 2018-07-23 | 가부시키가이샤 히타치세이사쿠쇼 | 금융 상품 거래 시스템 및 금융 상품 거래 제어 방법 |
JP2016096422A (ja) * | 2014-11-13 | 2016-05-26 | 富士通株式会社 | 伝送装置、フォワーディング制御方法、及び、情報処理装置 |
US10776336B2 (en) * | 2016-11-04 | 2020-09-15 | Salesforce.Com, Inc. | Dynamic creation and maintenance of multi-column custom indexes for efficient data management in an on-demand services environment |
US11223369B2 (en) * | 2019-04-02 | 2022-01-11 | International Business Machines Corporation | Automatic hash function selection |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5923654A (en) * | 1996-04-25 | 1999-07-13 | Compaq Computer Corp. | Network switch that includes a plurality of shared packet buffers |
US5920900A (en) * | 1996-12-30 | 1999-07-06 | Cabletron Systems, Inc. | Hash-based translation method and apparatus with multiple level collision resolution |
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 |
US5897637A (en) * | 1997-03-07 | 1999-04-27 | Apple Computer, Inc. | System and method for rapidly identifying the existence and location of an item in a file |
US6370585B1 (en) * | 1997-09-05 | 2002-04-09 | Sun Microsystems, Inc. | Multiprocessing computer system employing a cluster communication launching and addressing mechanism |
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 |
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 |
-
2003
- 2003-01-27 JP JP2003016843A patent/JP4014155B2/ja not_active Expired - Fee Related
-
2004
- 2004-01-27 US US10/707,941 patent/US7124278B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004227434A (ja) | 2004-08-12 |
US7124278B2 (en) | 2006-10-17 |
US20040148487A1 (en) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4014155B2 (ja) | 情報処理装置及び方法、プログラム、データ構造、並びにコンピュータ読取り可能な記録媒体 | |
US8542686B2 (en) | Ethernet forwarding database method | |
US7167471B2 (en) | Network processor with single interface supporting tree search engine and CAM | |
US7099324B2 (en) | System and method for processing packets | |
JP3453148B2 (ja) | スイッチング装置における高速可変長ベストマッチルックアップ | |
JP3823089B2 (ja) | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 | |
JPH077524A (ja) | 通信加入者のアドレス識別子へのアクセス方法 | |
US20040052254A1 (en) | Distributed lookup based on packet contents | |
JP2004172917A (ja) | パケット検索装置及びそれに用いるパケット処理検索方法並びにそのプログラム | |
CN111131050A (zh) | 流表的匹配方法及装置 | |
US8265072B2 (en) | Frame switching device | |
US10185783B2 (en) | Data processing device, data processing method, and non-transitory computer readable medium | |
US6343289B1 (en) | Efficient search and organization of a forwarding database or the like | |
JP2001237881A (ja) | テーブル型データ検索機構及びそれを用いるパケット処理システム並びにそのテーブル型データ検索方法 | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
WO2018233579A1 (en) | INFORMATION CENTERED NETWORKING ON MULTIPLE ACCESS NETWORK INTERFACES | |
JP3558151B2 (ja) | データ検索回路 | |
CN116866429A (zh) | 一种数据访问方法及相关装置 | |
JP3059639B2 (ja) | 経路選択情報の検索装置 | |
JPH11232285A (ja) | データ検索装置および方法 | |
CN117938783B (zh) | 一种交换芯片的分区路由共享方法和装置 | |
US20030161293A1 (en) | Router, method of administrating data transfer routes, and computer program for doing the same | |
KR100836170B1 (ko) | Cam 을 이용한 워크그룹 이더넷 랜 스위칭 장치 및 방법 | |
JPH08212790A (ja) | マルチプロトコルアドレス検索用連想メモリおよびその検索方法 | |
JPH05167640A (ja) | 通信プロトコル実装方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070613 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070730 |
|
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: 20070905 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20070905 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070907 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100921 Year of fee payment: 3 |
|
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: 20100921 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110921 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |