(57)【要約】【課題】データテーブルへの登録及びデータテーブルからの検索をより効率的に行うことができるようにする。【解決手段】第１項目のデータが、対応する第２項目のデータと共に登録されるデータテーブル（３）へのデータ登録又は該データテーブルからのデータ検索に際し、データテーブル中の一部の登録データへのポインタが、該登録データの第１項目データに第１のハッシュ関数（６）を適用して得られるハッシュ値が示す格納位置に登録される第１のポインタテーブル（１）と、データテーブル中の他の登録データへのポインタが、該登録データの第１項目データに第２のハッシュ関数（２２）を適用して得られるハッシュ値が示す格納位置に登録される第２のポインタテーブル（２）とを用いるようにする。【選択図】      図４
2004227434.tif 000002
【特許請求の範囲】
【請求項１】
第１項目のデータが、対応する第２項目のデータと共に登録されるデータテーブルと、
前記データテーブルにおける各登録データへのポインタが、該登録データの第１項目データに所定のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録されるポインタテーブルと、
対象となる第１項目データについて、前記データテーブルへの対応第２項目データを伴う前記登録を行う登録手段又は前記データテーブルからの対応第２項目データの検索を行う検索手段とを備えた情報処理装置であって、
前記ハッシュ関数は第１及び第２のハッシュ関数で構成され、前記ポインタテーブルは、該第１及び第２ハッシュ関数によるハッシュ値によってそれぞれ参照される第１及び第２のポインタテーブルで構成されていることを特徴とする情報処理装置。
【請求項２】
前記登録手段又は検索手段は、主として前記第１ハッシュ関数及び第１ポインタテーブルを使用し、これによっては、シノニムが発生するために登録を行うことができず、又は検索を行うことができない場合に、前記第２ハッシュ関数及び第２ポインタテーブルを使用することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データテーブル中の各登録データは前記第１又は第２ポインタテーブルのいずれか一方にのみ有効に登録されるポインタによって直接又は間接的に指示されることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記データテーブルにおける各登録データを対象とする前記データテーブルの検索に際して前記第１ハッシュ関数及び第１ポインタテーブル又は第２ハッシュ関数及び第２ポインタテーブルのいずれを選択して用いるかを示す選択データが、前記データテーブルにおける各登録データの第１項目データに前記第１ハッシュ関数を適用して得られるハッシュ値が示す各格納位置に登録された選択テーブルを有することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記登録手段は、対象第１項目データについて、前記第１及び第２ポインタテーブルのいずれにおいてもポインタの登録が行われていないことを条件として、前記第１ポインタテーブルを用いた前記データテーブルへの登録を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記登録手段は、対象第１項目データが、前記第１ポインタテーブルの対応ポインタを共通とするシノニムであることが判明した場合、該シノニムの関係にある対象第１項目データ及び既登録第１項目データについて、前記第２ポインタテーブルを用い、シノニムを解消した登録を行うとともに、該登録を行うに際し、既登録第１項目データについては、前記データテーブルにおける格納位置を変更することなく、該格納位置を指示するポインタを前記第２ポインタテーブルに登録することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記登録手段は、前記第１ポインタテーブルの対応ポインタを共通とするシノニムの関係にある第１項目データについては該ポインタを共通とする所定数までの登録を許容し、該所定数を超えた場合は、該シノニムの関係にあるすべての登録を、前記第２ポインタテーブルを用いた登録とすることを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記登録が行われる場合の対象第１項目データ及び対応第２項目データは装置が受信したパケット又はフレーム中の送信元アドレス及びこれに対応するポートを示す情報であり、前記検索が行われる場合の第１項目データ及び対応第２項目データは該パケット又はフレーム中の送信先アドレス及びこれに対応するポートを示す情報であることを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記送信元及び送信先アドレスはＭＡＣアドレスであり、受信したパケット又はフレーム中の送信先ＭＡＣアドレスに対応するポートから該パケット又はフレームを転送するスイッチ装置として機能することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
コンピュータを、請求項１〜９のいずれかの情報処理装置として機能させることを特徴とするプログラム。
【請求項１１】
請求項１０のプログラムを記録したことを特徴とするコンピュータ読取り可能な記録媒体。
【請求項１２】
第１項目のデータが、対応する第２項目のデータと共に登録されるデータテーブルと、
前記データテーブル中の一部の登録データへのポインタが、該登録データの第１項目データに第１のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録される第１のポインタテーブルと、
前記データテーブル中の他の登録データへのポインタが、該登録データの第１項目データに第２のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録される第２のポインタテーブルと、
前記データテーブルにおける登録データを検索するために前記第１又は第２ポインタテーブルのいずれを用いるかを示す選択データが、該登録データの第１項目データに前記第１ハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録された選択テーブルとを有することを特徴とするデータ構造。
【請求項１３】
請求項１２のデータ構造を記録したことを特徴とするコンピュータ読取り可能な記録媒体。
【請求項１４】
第１項目の各データが、対応する第２項目のデータと共に登録されるデータテーブルを用意する工程と、
前記データテーブルにおける各登録データへのポインタが、各登録データの第１項目データに所定のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録されるポインタテーブルを用意する工程と、
対象となる第１項目データについて、前記データテーブルへの対応第２項目データを伴う前記登録を行う工程又は前記データテーブルからの対応第２項目データの検索を行う工程とを備えた情報処理方法であって、
前記ハッシュ関数として第１及び第２のハッシュ関数が用いられ、前記ポインタテーブルとして、前記第１及び第２ハッシュ関数によるハッシュ値によってそれぞれ参照される第１及び第２のポインタテーブルが用いられることを特徴とする情報処理方法。
【請求項１５】
前記登録工程又は検索工程では、主として前記第１ハッシュ関数及び第１ポインタテーブルを使用し、これによっては、シノニムが発生するために登録を行うことができず、又は検索を行うことができない場合に、前記第２ハッシュ関数及び第２ポインタテーブルを使用することを特徴とする請求項１４に記載の情報処理方法。
【請求項１６】
前記データテーブル中の各登録データは前記第１又は第２ポインタテーブルのいずれか一方にのみ登録されるポインタによって直接又は間接的に指示されることを特徴とする請求項１４に記載の情報処理方法。
【請求項１７】
前記データテーブルにおける各登録データを対象とする前記データテーブルの検索に際して前記第１ハッシュ関数及び第１ポインタテーブル又は第２ハッシュ関数及び第２ポインタテーブルのいずれを選択して用いるかを示す選択データが、前記データテーブルにおける各登録データの第１項目データに前記第１ハッシュ関数を適用して得られるハッシュ値が示す各格納位置に登録された選択テーブルを用意する工程を有することを特徴とする請求項１４に記載の情報処理方法。
【請求項１８】
前記登録工程では、対象第１項目データについて、前記第１及び第２ポインタテーブルのいずれにおいてもポインタの登録が行われていないことを条件として、前記第１ポインタテーブルを用いた前記データテーブルへの登録を行うことを特徴とする請求項１４に記載の情報処理方法。
【請求項１９】
前記登録工程では、前記第１ポインタテーブルの対応ポインタを共通とするシノニムの関係にある第１項目データについては該ポインタを共通とする所定数までの登録を許容し、該所定数を超えた場合は、該シノニムの関係にあるすべての登録を、前記第２ポインタテーブルを用いた登録とすることを特徴とする請求項１４に記載の情報処理方法。
【請求項２０】
前記登録が行われる場合の対象第１項目データ及び対応第２項目データは装置が受信したパケット又はフレーム中の送信元アドレス及びこれに対応するポートを示す情報であり、前記検索が行われる場合の第１項目データ及び対応第２項目データは該パケット又はフレーム中の送信先アドレス及びこれに対応するポートを示す情報であることを特徴とする請求項１４に記載の情報処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、第１項目のデータが、対応する第２項目のデータと共に登録されるデータテーブルに対し、データの登録を行い又は該データテーブルから第１項目データに対応する第２項目データの検索を行う情報処理装置及び情報処理方法、コンピュータを該情報処理装置として機能させるプログラム、該情報処理装置が有するデータ構造、該プログラムが記録されたコンピュータ読取り可能な記録媒体、並びに、該データ構造が記録されたコンピュータ読取り可能な記録媒体に関する。
【０００２】
【従来の技術】
従来、Ｌ２スイッチやＬ３スイッチ等のネットワーク・スイッチ製品の分野では、十数万を超えるＭＡＣアドレスをサポートできるシステムが知られている。かかるシスステムは、多くのサーバやクライアントをサポートできる反面、受け取ったパケットのＭＡＣアドレスから該当する転送先ポートを特定するためには、その目的で保持しているすべてのＭＡＣアドレスを検索し、対応する転送先ポートを探し出す必要がある。
【０００３】
そこでかかるシステムにおいては、ハッシュ法を用いてＭＡＣアドレスを高速で検索できるようにしている。つまり、ＭＡＣアドレスと転送先ポートとを対応付けたＭＡＣアドレステーブルを、ＭＡＣアドレスにハッシュ関数を適用して得られるハッシュキーによって直接的にアクセスできるように作成しておき、パケットを受け取ったときには、パケット中のＭＡＣアドレスに基づくハッシュキーを用いて、該当する転送先ポートを取得できるようにしている（たとえば、特許文献１参照）。この場合、異なるＭＡＣアドレスから同一のハッシュキーが得られるときは、それらのＭＡＣアドレスに係るデータはチェイニング等されて格納されるとともに、検索時には、共通のハッシュキーを介し、さらにチェイニングのポインタを辿ってアクセスされることになる。
【０００４】
【特許文献１】
特開平１０−２１００６６号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、完全なハッシュ関数は存在しないため、どのようなハッシュ関数を用いても、特定のハッシュキーに対して多数のＭＡＣアドレスが対応してしまうといったようなデータのばらつきを避けることはできない。このようなデータのばらつきは、ＭＡＣアドレスの効率的なサーチを妨げることになる。そこでデータが変更される度に異なるハッシュ関数を用いてテーブル全体を作成し直しているのが現状である。
【０００６】
特にモバイル製品のように接続場所が一定でない場合、ＭＡＣアドレスと、スイッチ又はルータのポートとの関係は刻々と変化し、ＭＡＣアドレステーブルに対するデータの追加や削除が常に繰り返されている可能性がある。このため、ＭＡＣアドレステーブルにおけるデータの追加や削除に伴って、ハッシュ関数によるデータ分散の平均化が崩壊するので、ハッシュ関数の変更によるデータの並べ替えを頻繁に行う必要がある。
【０００７】
ＭＡＣアドレステーブルのエントリ数が十数万を超えるような大規模スイッチの場合、ハッシュ関数の変更に伴うハッシュ値の再計算やデータの並べ替えには長時間を要する。したがって実際には、ハッシュ値の再計算やデータの並べ替えを要するハッシュ関数の変更は行っていない。つまり、各ハッシュ値に対応するアドレスのメモリ領域におけるエントリ数の許容量を超えた場合には、そのハッシュ値についてはそれ以上エントリを増加させず、ブロードキャストで対応しているのが現状である。ブロードキャストはネットワーク全体に同一のデータを転送するものであるため、他のパケットの送信を不能とし、ネットワーク効率を著しく低下させる原因となる。逆に、ＭＡＣアドレスのデータをすべてエントリするようにした場合は、ポインタを辿る検索を何度も繰り返す必要が生じ、検索時間が長期化する。
【０００８】
本発明の目的は、かかる従来技術の問題点に鑑み、ハッシュ関数を用いた検索用テーブルへの登録及び該テーブルからの検索をより効率的に行うことができる技術を提供することにある。
【０００９】
【課題を解決するための手段】
この目的を達成するため、本発明に係る情報処理装置及び情報処理方法は、図１に示すように、第１項目のデータが、対応する第２項目のデータと共に登録されるデータテーブル１０１と、データテーブル１０１における各登録データへのポインタが、各登録データの第１項目データに所定のハッシュ関数を適用して得られるハッシュ値が示す格納位置に登録されるポインタテーブルとを用い、対象となる第１項目データについて、データテーブル１０１への対応第２項目データを伴う前記登録を登録手段１０２により行い又はデータテーブル１０１からの対応第２項目データの検索を検索手段１０３により行うものである。そして本発明の特徴は、ハッシュ関数は第１及び第２のハッシュ関数で構成され、ポインタテーブルは、第１及び第２ハッシュ関数によるハッシュ値によってそれぞれ参照される第１のポインタテーブル１０４及び第２のポインタテーブル１０５で構成されていることにある。
【００１０】
ここで、情報処理装置としては、たとえばＬ２スイッチ（スイッチングハブ）やＬ３スイッチが該当する。第１項目データとしては、たとえばＭＡＣアドレスが該当する。第２項目データとしては、たとえばＭＡＣアドレスに対応するポート番号が該当する。データテーブルに対する登録に際し、ハッシュ値が同一つまりシノニムの関係にある複数の登録データが発生した場合、所定数たとえば２つまではシノニムの関係にあるデータの登録を認めるようにしてもよい。その場合、シノニムの関係にある登録データは、チェイニングやオープンアドレッシング等の周知の方法で関連付けられる。この場合、シノニムの関係にある各登録データのうち、ポインタによって直接指示されるもの以外は、該ポインタによってはチェイニング等を経て間接的に指示されることになる。本発明は第１項目データについて、データテーブルへの登録のみ若しくはデータテーブルからの検索のみ又は該登録及び検索の双方を行う情報処理装置及び情報処理方法に関する。
【００１１】
本発明によれば、ハッシュ関数及びポインタテーブルとして、第１ハッシュ関数及び第１ポインタテーブル並びに第２ハッシュ関数及び第２ポインタテーブルを用いるようにしているため、これらを第１及び第２ハッシュ関数の各特性に応じて適宜使い分けることにより、シノニムの関係にあるデータの登録を抑制し、又はシノニムの関係にあるデータの登録数を制限するとともに、データテーブルのサイズを小さく維持することができる。つまり、従来は、第１項目データの値の分布に偏りがあると、特定のハッシュ値に関するシノニムが多く発生し、データテーブルの再構築が必要になる場合があった。しかし本発明によれば、シノニムが発生した場合は、別のハッシュ関数を用いてハッシュ値を分散させることができるので、データテーブルの再構築を回避することができる。また、２つのハッシュ関数を用い、それぞれに対応する別個のデータテーブルに登録を行う場合に比べ、データテーブルの大きさを小さくすることができる。つまり、データテーブルに対する登録や検索をより効率的に行うことができる。
【００１２】
本発明は以下の好ましい各態様のうちの任意のもの、又は任意に選択した２以上の態様を組合せたものを、上記本発明の基本的構成に結合させて実施することができる。
【００１３】
本発明の好ましい態様においては、登録又は検索に際しては、主として第１ハッシュ関数及び第１ポインタテーブルを使用し、これによっては、シノニムが発生するために登録を行うことができず、又は検索を行うことができない場合に、第２ハッシュ関数及び第２ポインタテーブルを使用することができる。検索を行うことができない場合とは、たとえば第１ポインタテーブル中の該当位置には第２ポインタテーブルを参照すべき旨が指示されていたり、ポインタが登録されていなかったりする場合や、ポインタが無効である旨が示されている場合や、後述する選択テーブルにより第２ポインタテーブルを参照すべき旨が指示されている場合が該当する。
【００１４】
また、データテーブル中の各登録データは第１又は第２ポインタテーブルのいずれか一方にのみ有効に登録されるポインタによって直接又は間接的に指示される。間接的に指示されている場合、検索に際しては、指示位置からさらにチェイニングを辿る等の必要がある。
【００１５】
また、図１に示すように、データテーブル１０１における各登録データを対象とするデータテーブル１０１の検索に際して第１ハッシュ関数及び第１ポインタテーブル１０４又は第２ハッシュ関数及び第２ポインタテーブル１０５のいずれを選択して用いるかを示す選択データが、データテーブル１０１における各登録データの第１項目データに第１ハッシュ関数を適用して得られるハッシュ値が示す各格納位置に登録された選択テーブル１０６を設けることができる。たとえば、データ登録に際し、対象第１項目データが既登録第１項目データとシノニムであることが判明した場合、選択テーブル１０６中の対応選択データを構成するビットをオンとして、第２ハッシュ関数及び第２ポインタテーブル１０５を選択して用いるべき旨を設定することができる。
【００１６】
第２ハッシュ関数としては、第１ハッシュ関数よりも、第１項目データについてのハッシュ値を分散させる傾向が強いものを採用することができる。この場合、第１ハッシュ関数によれば複数の第１項目データについてハッシュ値が同一となり、シノニムとなる場合、第２ハッシュ関数を用いてシノニムを解消できる確率を高くすることができる。
【００１７】
登録に際しては、対象第１項目データについて、前記第１及び第２ポインタテーブルのいずれにおいてもポインタの登録が行われていないことを条件として、前記第１ポインタテーブルを用いた前記データテーブルへの登録を行うことができる。つまり、対象第１項目データが未登録であれば、第１ポインタテーブルを用いて登録を行う。
【００１８】
また、登録に際しては、対象第１項目データが、第１ポインタテーブルの対応ポインタを共通とするシノニムであることが判明した場合、該シノニムの関係にある対象第１項目データ及び既登録第１項目データについて、第２ポインタテーブルを用い、シノニムを解消した登録を行うことができる。この場合、第１ポインタテーブルのポインタを共通とするシノニムの関係にあるデータの登録は行われない。この場合、既登録第１項目データについては、データテーブルにおける格納位置を変更することなく、該格納位置を指示するポインタを第２ポインタテーブルに登録することができる。
【００１９】
この代わりに、登録に際し、第１ポインタテーブルの対応ポインタを共通とするシノニムの関係にある第１項目データについては該ポインタを共通とする所定数までの登録を許容し、該所定数を超えた場合は、該シノニムの関係にあるすべての登録を、前記第２ポインタテーブルを用いた登録とするようにしてもよい。
【００２０】
一方、本発明に係るプログラムは、コンピュータを、上記本発明の情報処理装置として機能させることを特徴とする。この場合、プログラムは、たとえば図２に示すコンピュータにおいて実行される。図中の２０１及び２０２はプログラムを実行するためのＣＰＵ及びメモリである。データテーブル、第１及び第２ポインタテーブル並びに選択テーブルはメモリ２０２において構成される。図中の２０３ａ、２０３ｂ・・・は端末装置やＬＡＮ等に接続されたポート、２０４ａ、２０４ｂ・・・はこれらのポートを介してパケットの送受信を行う通信制御部、２０５は受信したパケットのデータを一時的に記憶しておくためのバッファ、２０６は各部を接続するバスである。コンピュータがパケットの中継機能を行う場合、バッファ２０５内の受信したパケットデータにおける送信元アドレス、及びパケットを受信したポートの番号がそれぞれ第１項目データ及び第２項目データとして、データテーブルへの登録の対象となる。また、パケットデータ中の送信先アドレスは、第１項目データとして、データテーブルからの検索対象となり、対応ポート番号が検索された場合、受信したパケットデータは、そのポートから送出されることになる。
【００２１】
また、本発明に係るコンピュータ読取り可能な記録媒体は、この本発明のプログラムを記録したことを特徴とする。また、本発明に係るデータ構造は、上述のデータテーブル、第１ポインタテーブル、及び第２ポインタテーブル、あるいはさらに上述の選択テーブルを有することを特徴とする。また、本発明の別のコンピュータ読取り可能な記録媒体は、前記データ構造を記録したものであることを特徴とする。
【００２２】
【発明の実施の形態】
図３は本発明の一実施形態に係るスイッチ装置において使用される各テーブルの構造を示す。このスイッチ装置は各ポートから受信するパケットを、パケット中の送信先ＭＡＣアドレスに対応するポートから転送するものである。ＭＡＣアドレスに対応するポートは各テーブルに基づき、検索を行うことにより得られるポートアドレスにより知ることができる。
【００２３】
同図に示すように、スイッチ装置は、ＭＡＣアドレスが、対応するポートアドレスと共に登録されるＭＡＣアドレステーブル３、ＭＡＣアドレステーブル３における各登録データへのポインタが登録される第１ポインタテーブル１及び第２ポインタテーブル２、並びに第１ポインタテーブル１又は第２ポインタテーブル２のいずれを選択的に用いるかを示す選択データが登録される選択テーブル４を備える。
【００２４】
ＭＡＣアドレステーブル３は、１２８ｋ×６４［ｂｉｔ］の大きさを有する。つまり各レコードが６４［ｂｉｔ］で構成され、１２８ｋレコード分の容量を有する。第１ポインタテーブル１及び第２ポインタテーブル２はいずれも６４ｋ×１７［ｂｉｔ］の大きさを有し、選択テーブル４は６４ｋ×１［ｂｉｔ］の大きさを有する。
【００２５】
第１ポインタテーブル１にはＭＡＣアドレステーブル３における各登録データの格納位置を矢印５のように指示するポインタとしてメモリアドレスが登録される。各メモリアドレスの第１ポインタテーブル１における格納位置は、対応ＭＡＣアドレスに第１ハッシュ関数６を適用して得られるハッシュ値によって、矢印７のように指示される。図４に示すように、第２ポインタテーブル２にもＭＡＣアドレステーブル３における登録データの格納位置を、矢印２１のように指示するメモリアドレスが登録されるが、各メモリアドレスの第２ポインタテーブル２における格納位置は、対応ＭＡＣアドレスに第２ハッシュ関数２２を適用して得られるハッシュ値によって指示される。ＭＡＣアドレステーブル３中の各登録データの格納位置は第１又は第２ポインタテーブル１又は２のいずれか一方にのみ有効に登録されているメモリアドレスによって指示される。
【００２６】
第１ハッシュ関数は、図５に示すように、２４ビットのベンダＩＤと２４ビットのローカル識別番号からなるＭＡＣアドレス３１の上位１６ビット３１ａ及び中間の１６ビット３１ｂを加算し、この結果に下位１６ビット３１ｃを結合して３２ビットとした値Ａを、任意の１６ビットの素数で割った余りを１６ビットのハッシュ値とするものである。このとき、加算の結果生じるキャリーは、捨て去ってもよいし、最下位に加えてもよい。
【００２７】
第２ハッシュ関数は図６に示すように、ＭＡＣアドレス３１の上位３２ビット３１ａ及び３１ｂについてビットシフトを行った後、上位１６ビット３１ａ及び中間の１６ビット３１ｂを加算し、この結果に下位１６ビット３１ｃを結合して３２ビットとした値Ｂを、任意の１６ビット等の素数で割った余りを１６ビットのハッシュ値とするものである。ビットシフトの量は１〜数ビットでよい。図６の場合、矢印４１により左方へシフトし、矢印４２により、最上位ビットを最下位ビットの方へ順次ローテーションすることを示している。これによれば、ベンダＩＤとして割り当てられているデータ数よりもローカル識別番号として割り当てられているデータ数の方がはるかに多いため、ビットシフト後の上位３２ビットの値を除して得た第２ハッシュ関数は第１ハッシュ関数よりも、ＭＡＣアドレスについて、ハッシュ値を分散させる傾向が強くなる。
【００２８】
受信したパケット中の送信先ＭＡＣアドレスに対応するポートアドレスを検索する際、主として第１ハッシュ関数及び第１ポインタテーブルを使用し、これによっては検索を行うことができない場合に、第２ハッシュ関数及び第２ポインタテーブルを使用する。いずれを使用できるかは、選択テーブル４を用いることにより、予め知ることができる。選択テーブル４中の各選択データの格納位置は、対応するＭＡＣアドレスに第１ハッシュ関数を適用して得られるハッシュ値によって示される。送信先ＭＡＣアドレスに基づいてＭＡＣアドレステーブル３を検索するとき、第１ハッシュ関数によるハッシュ値に対応する選択データは、多くの場合、図３のように第１ポインタテーブル１を用いる旨を示すが、第１ポインタテーブルを使用できない場合は、図４に示すように、第２ポインタテーブル２を用いる旨を示す。
【００２９】
図７は送信先ＭＡＣアドレスに対応するポートアドレスを検索する処理を示すフローチャートである。処理を開始すると、まずステップ５１において、送信先ＭＡＣアドレスに第１ハッシュ関数を適用してハッシュ値を取得する。次にステップ５２において、取得したハッシュ値により示される選択テーブル４中の格納位置における選択データを参照する。次に、参照中の選択データが第１又は第２ポインタテーブルのいずれを用いる旨を示しているかを調べる。この場合、選択データは、それを構成するビットがオフであれば第１ポインタテーブルを用いる旨を示し、オンであれば第２ポインタテーブルを用いる旨を示す。ビットがオフであればステップ５４へ進み、オンであればステップ５５へ進む。
【００３０】
ステップ５４では、ステップ５１で取得したハッシュ値が示す第１ポインタテーブル１の格納位置におけるメモリアドレスを取得し、ステップ５７へ進む。ステップ５５では、送信先ＭＡＣアドレスに第２ハッシュ関数を適用してハッシュ値を取得する。そしてステップ５６において、取得したハッシュ値が示す第２ポインタテーブルの格納位置におけるメモリアドレスを取得し、ステップ５７へ進む。
【００３１】
ステップ５７へ進むと、取得したメモリアドレスによってＭＡＣアドレステーブル３を参照し、対応登録データのＭＡＣアドレスが送信先ＭＡＣアドレスに一致することを条件として、対応ポートアドレスを取得する。これにより、送信先ＭＡＣアドレスに対応するポートの検索処理が終了する。
【００３２】
この後、スイッチ装置は、取得したポートアドレスのポートから受信パケットを送出することによって、送信先ＭＡＣアドレスで特定される機器へ向け、受信パケットを転送することができる。ステップ５７において、ＭＡＣアドレスが一致せず、対応ポートアドレスが取得できなかった場合は、すべてのポートからパケットを送出する。
【００３３】
図８はＭＡＣアドレステーブル３へのデータ登録処理を示すフローチャートである。データ登録処理は、パケットを受信したとき、パケット中の送信元ＭＡＣアドレスについて行う。まず、ステップ６１において、受信したパケットの送信元ＭＡＣアドレスに第１ハッシュ関数を適用してハッシュ値を取得する。
【００３４】
次に、ステップ６２において、取得したハッシュ値により選択テーブル４を参照し、ステップ６３において、参照中の選択データのビットがオフか否かを判定する。ビットがオフであるということは、当該送信元ＭＡＣアドレスについて、第１ハッシュ関数及び第１ポインタテーブルを用いた登録が既に行われており、又は未だ行われていないことを意味する。この場合、ステップ６４へ進む。選択データのビットがオフでないということは、当該送信元ＭＡＣアドレスについて、第２ハッシュ関数及び第２ポインタテーブルを用いた登録が既に行われており、又は当該送信元ＭＡＣアドレスが、第２ハッシュ関数及び第２ポインタテーブルを用いて登録済みのＭＡＣアドレスとシノニムの関係にあることを意味する。この場合、当該送信元ＭＡＣアドレスについては登録は行わず、直ちに処理を終了する。つまり、第２ポインタテーブル２を介したシノニムの関係にあるＭＡＣアドレスの登録は行わないようにしている。
【００３５】
ステップ６４では、ステップ６１で取得したハッシュ値を用いて第１ポインタテーブルを参照し、ステップ６５において、参照位置にメモリアドレスが登録済みであるか否かを判定する。参照位置が初期値たとえばゼロであれば登録済みではないと判定することができる。登録済みであるということは、当該送信元ＭＡＣアドレス又はこれとシノニムの関係にあるＭＡＣアドレスについて、第１ハッシュ関数を用いたＭＡＣアドレステーブル３への登録が既に行われていることを意味する。この場合は、ステップ６６へ進む。一方、登録済みでないということは、当該送信元ＭＡＣアドレス及びこれとシノニムの関係にあるＭＡＣアドレスのいずれについても、第１ハッシュ関数を用いたＭＡＣアドレステーブル３への登録が未だなされていないことを意味する。この場合はステップ７０へ進む。
【００３６】
ステップ６６へ進むと、当該登録済みのメモリアドレスでＭＡＣアドレステーブル３を参照し、ステップ６７において、参照位置のＭＡＣアドレスと、当該送信元ＭＡＣアドレスとが一致するか否かを判定する。両ＭＡＣアドレスが一致しないということは、シノニムの発生を意味する。この場合は、シノニムの発生を解消するため、ステップ６８へ進む。一方、両ＭＡＣアドレスが一致する場合は当該送信元ＭＡＣアドレスが既に登録済みであることを意味するので、処理を直ちに終了する。
【００３７】
ステップ６８へ進むと、ステップ６２において参照した選択データのビットをオンにする。つまり後で、送信先ＭＡＣアドレスの第１ハッシュ関数によるハッシュ値がこの選択データを指示する場合、該送信先ＭＡＣアドレスについては第２ハッシュ関数を用いて検索が行われるようにする。次に、ステップ６９において、ステップ６７で一致しないと判定された既登録ＭＡＣアドレス及び当該送信元ＭＡＣアドレスの双方について、第２ハッシュ関数を用い、第２ポインタテーブルを介して、ＭＡＣアドレステーブル３への登録を行う。つまり、第２ハッシュ関数は第１ハッシュ関数よりも分散傾向が強いので、通常、両ＭＡＣアドレスについて第２ハッシュ関数を提供した場合、異なるハッシュ値を得ることができ、シノニムを解消して登録を行うことができる。
【００３８】
このとき、当該送信元ＭＡＣアドレスに対応させて登録するポートアドレスとしては、当該送信元ＭＡＣアドレスのパケットを受信したポートのアドレスを用いる。また、既登録ＭＡＣアドレスについては、ＭＡＣアドレステーブル３における格納位置は変更する必要はなく、第２ポインタテーブルにおける対応メモリアドレスが該格納位置を指示するようにすればよい。このシノニムを解消した登録が完了すると、データ登録処理を終了する。
【００３９】
一方、ステップ７０へ進むと、当該送信元ＭＡＣアドレスが登録されるＭＡＣアドレステーブル３の格納位置を示すメモリアドレスを第１ポインタテーブルに登録する。登録位置は、ステップ６１で取得した第１ハッシュ関数によるハッシュ値で示される。登録するメモリアドレスとしては、たとえばＭＡＣアドレステーブル３中の空いているアドレスのうち最小のアドレスを選ぶことができる。次に、ステップ７１において、当該送信元ＭＡＣアドレスを、対応するポートアドレスとともに登録する。登録位置は、ステップ７０で登録したメモリアドレスによって指示される。この登録が完了すると、データ登録処理を終了する。
【００４０】
本実施形態によれば、ハッシュ関数及びポインタテーブルとして第１及び第２のハッシュ関数、並びに第１及び第２ハッシュ関数によるハッシュ値によってそれぞれ参照される第１及び第２ポインタテーブル１及び２を用いるようにしたため、第１及び第２ハッシュ関数の特性の違いを利用し、シノニムの関係にあるＭＡＣアドレスについては登録を行うことなく、シノニムの関係を解消してから登録を行うことができる。したがって、シノニムが発生して登録できない場合のブロードキャストやＭＡＣアドレステーブル３の再構築を回避することができる。また、２つのハッシュ関数を用い、かつそれぞれに対応する独立したＭＡＣアドレステーブル３を用いる場合に比べて、ＭＡＣアドレステーブル３のサイズを小さくすることができる。
【００４１】
また、ＭＡＣアドレステーブル３の検索や登録に際し、主として第１ハッシュ関数及び第１ポインタテーブルを使用し、これによっては検索や登録を行うことができない場合に、第２ハッシュ関数及び第２ポインタテーブルを使用するようにしたため、検索や登録を効率的に行うことができる。
【００４２】
また、ＭＡＣアドレステーブル３中の各登録データは第１又は第２ポインタテーブルのいずれか一方にのみ有効に登録されるポインタによって指示されるため、使用すべき第１又は第２ポインタテーブルを予め知ることにより、検索を迅速に行うことができる。
【００４３】
また、ＭＡＣアドレステーブル３における各登録データを対象とするＭＡＣアドレステーブル３の検索に際して第１ハッシュ関数及び第１ポインタテーブル又は第２ハッシュ関数及び第２ポインタテーブルのいずれを選択して用いるかを示す選択データが、ＭＡＣアドレステーブル３における各登録データのＭＡＣアドレスに第１ハッシュ関数を適用して得られるハッシュ値が示す各格納位置に登録された選択テーブルを用いるようにしたため、使用すべき第１又は第２ポインタテーブルを予め知ることがき、したがって検索を迅速に行うことができる。
【００４４】
また、第２ハッシュ関数は第１ハッシュ関数よりも、ＭＡＣアドレスについて、ハッシュ値を分散させる傾向が強いため、第１ハッシュ関数によってシノニムが発生する場合、代わりに第２ハッシュ関数を用いることによって、シノニムを容易に解消して登録を行うことができる。
【００４５】
また、対象ＭＡＣアドレスについて、第１及び第２ポインタテーブルのいずれにおいてもポインタの登録が行われていない場合、第１ポインタテーブルを用いたＭＡＣアドレステーブル３への登録を行うようにしたため（ステップ６３〜６５、７０、７１）、第１ハッシュ関数を優先的に使用した登録を行うことができる。
【００４６】
また、対象ＭＡＣアドレスが、第１ポインタテーブルの対応ポインタを共通とするシノニムであることが判明した場合、該シノニムの関係にある対象ＭＡＣアドレス及び既登録ＭＡＣアドレスについて、第２ポインタテーブルを用い、シノニムを解消した登録を行うようにしたため（ステップ６３〜６９）、ブロードキャストやＭＡＣアドレステーブル３の再構築を抑制するとともに、検索を迅速に行うことができるようにすることができる。
【００４７】
また、シノニムを解消した登録を行うに際し、既登録ＭＡＣアドレスについては、ＭＡＣアドレステーブル３における格納位置を変更することなく、格納位置を指示するポインタを第２ポインタテーブルに登録するようにしたため、格納位置を変更することにより必要となる処理を不要とし、処理を効率的に行うことができる。
【００４８】
なお、本発明は上述実施形態に限定されることなく適宜変形して実施することができる。たとえば、上述においては、シノニムの関係にあるデータの登録を行わないようにしているが、この代わりに第１ポインタテーブルの対応ポインタを共通とするシノニムの関係にある第１項目データについては該ポインタを共通とする所定数までの登録を許容し、該所定数を超えた場合は、該シノニムの関係にあるすべての登録を、可能な限りにおいて、第２ポインタテーブルを用いた登録とするようにしてもよい。
【００４９】
また、上述においては、受信パケットの送信元ＭＡＣアドレスについて対応ポートを示す情報とともに登録を行い、送信先ＭＡＣアドレスについて対応ポートを示す情報を検索する場合について説明したが、これに限定されることなく、固定長のデータについて、対応データとともにハッシュ関数を用いた登録を行い、及び対応データの検索を行うすべての場合について本発明を適用することができる。
【００５０】
また、上述においては、ＭＡＣアドレステーブル３の検索に際して第１ハッシュ関数及び第１ポインタテーブル又は第２ハッシュ関数及び第２ポインタテーブルのいずれを選択して用いるかを予め知るために、選択テーブル４を用いているが、この代わりに、同様の情報を第１ポインタテーブルに付加するようにしてもよい。
【００５１】
また、上述においては特に言及しなかったが、図７及び図８の処理を実施するための構成としては、主に電子回路を用いてハード的に構成したものや、コンピュータプログラムを用いて構成したものを採用することができる。
【００５２】
【発明の効果】
以上説明したように本発明によれば、ハッシュ関数として第１及び第２のハッシュ関数を用い、ポインタテーブルとして、該第１及び第２ハッシュ関数によるハッシュ値によってそれぞれ参照される第１及び第２のポインタテーブルを用いるようにしたため、データテーブルへの登録及びデータテーブルからの検索をより効率的に行うことができる。
【図面の簡単な説明】
【図１】本発明に係る情報処理装置を示すブロック図である。
【図２】本発明に係るプログラムを実行するためのハードウェア構成を示す図である。
【図３】本発明の一実施形態に係るスイッチ装置において使用される各テーブルの構造を示す図である。
【図４】図１のテーブル構造において、第２ハッシュ関数を用いる場合の検索の様子を示す図である。
【図５】図１の装置で用いられる第１ハッシュ関数を示す図である。
【図６】図１の装置で用いられる第２ハッシュ関数を示す図である。
【図７】図１の装置におけるＭＡＣアドレステーブルへの登録処理を示す図である。
【図８】図１の装置におけるＭＡＣアドレステーブルからの検索処理を示す図である。
【符号の説明】
１：第１ポインタテーブル、２：第２ポインタテーブル、３：ＭＡＣアドレステーブル、４：選択テーブル、５，７，２１，４１，４２：矢印、６：第１ハッシュ関数、２２：第２ハッシュ関数、３１：ＭＡＣアドレス、３１ａ：上位ビット、３１ｂ：中間ビット、３１ｃ：下位ビット、１０１：データテーブル、１０２：登録手段、１０３：検索手段、１０４：第１ポインタテーブル、１０５：第２ポインタテーブル、１０６：選択テーブル、２０１：ＣＰＵ、２０２：メモリ、２０３ａ，２０３ｂ：ポート、２０４ａ，２０４ｂ：通信制御部、２０５：バッファ、２０６：バス。
【図１】
2004227434.tif 000003
【図２】
2004227434.tif 000004
【図３】
2004227434.tif 000005
【図４】
2004227434.tif 000006
【図５】
2004227434.tif 000007
【図６】
2004227434.tif 000008
【図７】
2004227434.tif 000009
【図８】
2004227434.tif 000010