(57)【要約】【課題】ネットワークで使用される大規模なスイッチ等における大量のＭＡＣアドレスの中から任意のＭＡＣアドレスを高速に検索する。【解決手段】ＭＡＣアドレス１８を構成するビット中から選択するＮビット（例えば１４ビット）のエントリー数を有するＭＡＣポインタテーブル１０構造であって、各エントリー１４はＭＡＣアドレス１８のエントリーテーブル１２を指定するためのポインタを含み、当該ポインタは前記ＭＡＣアドレス１８のＮビット（例えば１４ビット）からなる、ＭＡＣポインタテーブル１０構造が提供される。【選択図】　図１
2004015592.tif 000002
【特許請求の範囲】
【請求項１】
ＭＡＣアドレスを構成するビット中から選択するＮビットのエントリー数を有するＭＡＣポインタテーブル構造であって、各エントリーはＭＡＣアドレスのエントリーテーブルを指定するためのポインタを含み、当該ポインタは前記ＭＡＣアドレスのＮビットからなる、ＭＡＣポインタテーブル構造。
【請求項２】
前記各エントリーは、前記ポインタの有効または無効を示すビット情報を含む、請求項１のＭＡＣポインタテーブル構造。
【請求項３】
前記Ｎビットは前記ＭＡＣアドレスを構成する下位のＮビットである、請求項１のＭＡＣポインタテーブル構造。
【請求項４】
前記Ｎビットは、全ての前記ＭＡＣアドレス数から前記エントリーテーブルサイズを減算して得られる、請求項１のＭＡＣポインタテーブル構造。
【請求項５】
前記エントリーテーブルの各エントリのサイズは３ビットである、請求項４のＭＡＣポインタテーブル構造。
【請求項６】
さらに、前記ＭＡＣアドレスを構成するビット中から前記Ｎビットを指定するための第一のポインターマスクレジスタを有する、請求項１のＭＡＣポインタテーブル構造。
【請求項７】
さらに、前記ＭＡＣアドレスを構成するビット中から前記Ｎビットを除くＭビットを指定するための第ニのポインターマスクレジスタを有し、前記ポインタは前記ＭＡＣアドレスの（Ｎ＋Ｍ）ビットからなる、請求項６のＭＡＣポインタテーブル構造。
【請求項８】
ＭＡＣアドレスを並べ替えるための方法であって、
（ａ）ＭＡＣアドレスのエントリーテーブルを準備するステップと、
（ｂ）ＭＡＣポインタテーブルを準備するステップと、
（ｃ）ＭＡＣアドレスのエントリーデータを取得するステップと、
（ｄ）前記ＭＡＣポインタテーブルをチェックするステップと、
（ｅ）前記チェックしたＭＡＣポインタテーブルのポインターが指示する前記エントリーテーブルのアドレスへデータを格納するステップと、
を含むＭＡＣアドレスの並べ替えるための方法。
【請求項９】
前記エントリーテーブルの各エントリのサイズは３ビットである、請求項８の方法。
【請求項１０】
前記ＭＡＣポインタテーブルは、ＭＡＣアドレスを構成するビット中から選択するＮビットのエントリー数を有し、前記ポインタは前記Ｎビットからなる、請求項８の方法。
【請求項１１】
前記ＭＡＣポインタテーブルをチェックするステップ（ｄ）は、
前記ＭＡＣポインタテーブルの各エントリーが有する前記ポインタの有効または無効を示すビット情報をチェックするステップを含む、請求項８の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークで使用される大規模なスイッチ等における大量のＭＡＣ（Ｍｅｄｉａ　Ａｃｃｅｓｓ　Ｃｏｎｔｒｏｌ）アドレスの中から任意のＭＡＣアドレスを高速に検索するためのＭＡＣアドレスポインタ構造およびＭＡＣアドレスの並べ替え方法に関する。
【０００２】
【従来の技術】
従来のネットワークで使用されるＬ２スイッチにおいて、数十万を超えるＭＡＣアドレスをサポート出来るシステムは、多くのサーバーやクライアントをサポートできる反面、ＭＡＣアドレスから該当するポートを特定する為に、保持している全てのＭＡＣアドレスを検索した上でＭＡＣアドレスに対応したポートを探し出さなければならない。これは数十万を超すＭＡＣアドレスを持つ大規模スイッチにとっては、パフォーマンスを落とす大きな要因となっている。
【０００３】
数十万を超えるＭＡＣアドレステーブルから任意のＭＡＣアドレスを高速に検索する場合、以下の従来方法がある。
（１）一時的にＭＡＣアドレスを保持できるキャッシュメモリーを持ち、キャッシュメモリーに受信した宛先ＭＡＣアドレスが存在する場合は、そのキャッシュメモリーからポートを導き出して、そのポートに対してのみ転送を行う。
（２）ただし、上記キャッシュメモリーが宛先ＭＡＣアドレスを保持していない場合は、ブロードキャストによって送信ポートを除く、全ポートに転送を行う必要ある。
【０００４】
（１）の場合、キャッシュのサイズは数十万を超すＭＡＣアドレスを格納することは不可能な為、キャッシュサイズ以上のネットワークホストが通信を行った場合、（２）のブロードキャストを行う頻度が高くなる。このブロードキャストは、関係する全てのネットワークに対して同時にパケットを載せる処理を行う為、関係するネットワークの負荷が増大する。その結果、全てのネットワークを一時的に止めてしまうハブのような動作状態に陥ってしまい、パフォーマンスを落とすことになる。
【０００５】
また、別の従来方法としてＣＡＭを使用した場合、ＣＡＭは数十万を超えるＭＡＣアドレステーブルを格納できない為、通常のメモリを使用してＭＡＣアドレスの高速検索をおこなう必要がある。その検索方法としては色々な方法が考えられる。そして、数十万のＭＡＣアドレスが検索方法に適応した形で整列してある場合は、高速に検索可能である。
【０００６】
しかし、数十万のＭＡＣアドレスが常に検索しやすい状態で整列されているわけではない。数十万の接続状態にあるネットワークホストの中には、モバイル製品の様に接続場所が常に一定ではない場合も考えられる。よって一部のＭＡＣアドレスとスイッチやルーターのポートとの関係は、時間と共に変化し、常にデータ（アドレス）の追加、削除が繰り返されている可能性がある。ＭＡＣアドレステーブルにおけるデータの追加削除に伴うＭＡＣアドレステーブルのデータの並べ替えは、周期的に行う必要がある。この並べ替え作業は数十万を超えるエントリー数においては、数ミリ秒単位の時間を要する事となり、通常のメモリを使用してＭＡＣアドレス検索を行う事は、現実的ではない。
【０００７】
【発明が解決しようとする課題】
本発明の目的は、ネットワークで使用される大規模なスイッチ等における大量のＭＡＣアドレスの中から任意のＭＡＣアドレスを高速に検索することである。
【０００８】
本発明の目的は、ＭＡＣアドレスを高速に検索することを可能とするＭＡＣアドレスポインタ構造およびＭＡＣアドレスの並べ替え方法を提供することである。
【０００９】
【課題を解決するための手段】
本発明は、ＭＡＣアドレスを構成するビット中から選択するＮビットのエントリー数を有するＭＡＣポインタテーブル構造であって、各エントリーはＭＡＣアドレスのエントリーテーブルを指定するためのポインタを含み、当該ポインタは前記ＭＡＣアドレスのＮビットからなる、ＭＡＣポインタテーブル構造である。
【００１０】
また、本発明は、ＭＡＣアドレスを並べ替えるための方法であって、
（ａ）ＭＡＣアドレスのエントリーテーブルを準備するステップと、
（ｂ）ＭＡＣポインタテーブルを準備するステップと、
（ｃ）ＭＡＣアドレスのエントリーデータを取得するステップと、
（ｄ）前記ＭＡＣポインタテーブルをチェックするステップと、
（ｅ）前記チェックしたＭＡＣポインタテーブルのポインターが指示する前記エントリーテーブルのアドレスへデータを格納するステップと、を含むＭＡＣアドレスの並べ替えるための方法である。
【００１１】
【発明の実施の形態】
本発明は、（１）「エントリーテーブルの細分化」、（２）「細分化したテーブルを直接指定するポインタテーブル構造」、および（３）「例外処理」の３つの特徴から成る。以下、これらの特徴について説明する。
【００１２】
（１）「エントリーテーブルの細分化」について
エントリーテーブルの細分化について説明する前に、その前提となるＭＡＣアドレスの特徴について説明する。
ＭＡＣアドレスは、２４ビットのベンダーＩＤ（ｖｅｎｄｏｒ　ＩＤ）と２４ビットのローカルアサインナンバー（Ｌｏｃａｌ　Ａｓｓｉｇｎｅｄ　ｎｕｍｂｅｒ）の組合せ４８ビットである。ベンダーＩＤは、現在５０００程度の割り振られており、また連続に割り振られているわけではない。これに対して、ローカルアサインナンバーは、製造会社によって連続に割り振られているかどうかは、一概には言えないが、１つのベンダーＩＤに対して、１以上（通常数万以上）が割り振られている。よってローカルアサインナンバーを利用し、細分化したエントリーテーブルを指示する事ができ、かつその細分化したエントリーテーブルに全てのＭＡＣアドレスを分散して格納することができれば、ＭＡＣアドレスから直接格納してあるテーブルを指定できることを意味している。
【００１３】
ローカルアサインナンバーの下位のビットからの数ビットを細分化したテーブルを指定するポインタとして利用した場合、ＭＡＣアドレスの数が増加するに伴い、それぞれの細分化したテーブルのエントリー数は、分散傾向が出てくる。実際のデータを当てはめてみると、少数のテーブルに対しては、他のテーブルより集中する場合があるが、多くのテーブルに対しては、ほぼ均等に分散する。これはＭＡＣアドレスの数が多くなることによって、ローカルアサインナンバーのランダム性が現れるからである。一部のテーブルだけは、ＭＡＣアドレスのエントリーデータが集中する場合があるが、この集中に対する例外処理を行いさえすれば、ＭＡＣアドレスから直接各テーブルを指定できる。
【００１４】
例えば、１００００程度のＭＡＣアドレスデータについて、
（ａ）下位ビビットから１２ビットをポインターとして使用した場合の分散傾向
（ｂ）同１３、１４ビットの場合の分散傾向
（ｃ）最下位ビットではなく、３ビット目から１２ビットの分散傾向
（ｄ）各ビットについて０、１の割合が５０：５０に近い１２ビット分をポインタとして使用した場合の分散傾向
（ｅ）現在公開されているＭＡＣアドレスに対するハッシュ関数による分散傾向の以上について分散傾向を調べた場合、結果的に、ほぼ同様の分散傾向が得られた。すなわち、一部のテーブルを除き、ほぼエントリーデータの衝突個数は、０〜２に分散していることがわかった。これは、統計学におけるサンプル数が一定以上になると、ランダムなデータが得られる事と一致している。
【００１５】
エントリーテーブルの細分化は、検索及び並び替え時間を短くする為に、ＭＡＣアドレスの検索許容時間から必要なテーブルサイズを導き出す。例えばギガビットのイーサネット（Ｒ）対応の検索速度を必要とする場合は、最小パケットサイズ７２バイトの場合、宛先、送信元アドレスを受け取ってから、ＦＣＳの受信までの間（５２ｂｙｔｅ）間に検索できれば、ＭＡＣアドレス検索によって処理の遅延の発生を防止する事ができる。リ−ドサイクルを２０ｎＳと仮定すると宛先、送信元アドレスに対する情報をそれぞれ得ることができる回数は、最大（５２／２）＊８／２０＝１０回である。またＭＡＣアドレスのテーブルへのエントリー時には、検索時に挿入位置が決定するので、データのテーブル内での最大移動量はテーブルのサイズの半分である。リード及びライトの組合せでテーブル内を移動することを考えると、”検索回数（最大移動量の場合２回以内）”プラス”移動時間”からエントリー８のテーブルサイズとなる。
【００１６】
最終的にＭＡＣアドレスの検索を高速に行う為に、ＭＡＣアドレステーブルをエントリー数８以下にする。これにより２分岐検索方法を使用して検索する場合、最大４回の検索及び比較を行えば、ＭＡＣアドレスが存在するか、また転送先ポートがどこかという情報を得る事ができる。そして、細分化によってエントリーテーブル自体が小さくなり、エントリー数を減らす事ができる為、例えば２分岐検索を使用する場合などのエントリーデータの並べ替えを高速化する事ができる。
【００１７】
（２）「細分化したテーブルを直接指定するポインタテーブル構造」について
細分化したテーブルは、ＭＡＣポインタテーブルによって指定される。図１は、ＭＡＣポインタテーブルを用いた基本動作
（構成）を説明した図である。ＭＡＣポインタテーブル１０のサイズは、全ＭＡＣ数（例えば１７ビット）からエントリーテーブル１２のサイズ（例えば３ビット）を引いた大きさである（例えば１４ビット）。各エントリー１４は、図１（１）のビット配列の構成１６を持つ。ＭＡＣポインタテーブル１０の各エントリー１４に対する配置アドレスは、ＭＡＣアドレス１８のローカルアサインナンバー２０の下位１４ビットを使用する。これは分散化の為のハッシュ関数に相当する。ＥＸＩＳＴビット２２（１ビット）は、このローカルアサインナンバー２０の下位１４ビットに対してＭＡＣアドレスデータのエントリーが存在するかどうかを表している。ＥＸＩＳＴビット２２がアクテイブ（”１”）の場合、エントリー２２のメモリポインター（１４ビット）は有効であり、これは細分化したエントリーテーブルの各先頭アドレスを示している（図１の２４）。
【００１８】
（３）「例外処理」について
例外処理は、
（ａ）ローカルアサインナンバーの下位ビットで分散傾向が現われない場合」と、
（ｂ）「テーブルサイズを超えたエントリーデータがある場合」の２種類存在する。
（ａ）ローカルアサインナンバーの下位ビットで分散傾向が現われない場合の処理について
ＭＡＣアドレスのエントリーデータが下位１４ビット（数は今回の例）によって分散しない場合は、ローカルアサインナンバーの下位１４ビット以外の組合せによって、分散化を行う。例としては、
（ｉ）下位４ビット目から１４ビットをとる、
（ｉｉ）各ビットについて０、１の割合が５０：５０に近いビットのうちの１４ビット分を各エントリーに対する配置アドレスとして使用する、
等がある。
【００１９】
これらを実現する為に図２のポインターマスクレジスター３０を設ける。これはローカルアサインナンバーのうち、任意の１４ビットを指定する為に使用される。図２の例は、ローカルアサインナンバー２４ビットから選択するレジスター３０であるが、ＭＡＣアドレスの４８ビットから１４ビットを選択する構造も可能である。あとは、上記（２）ポインターテーブル構造と同様にＭＡＣポインターテーブル１０のエントリー１４は、図２（１）の構造１６を持つことによって細分化したエントリーテーブル１２を指定できる。
【００２０】
（ｂ）テーブルサイズ以上のエントリーデータがある場合の処理
完全なるハッシュ関数は存在しない為、一部のテーブルについては、テーブルサイズ以上のエントリーデータが存在する可能性がある。この場合、図３の構成をとる。
（ｉ）テーブルサイズ以上のエントリーデータが存在する場合、テーブルのエントリーデータを二つのテーブルに分割しなければならない。このためのＭＡＣアドレス別に振り分けに使用するフラグとして、ローカルアサインナンバー２４ビットのうち、使用していない１０ビットのうち任意のビットを使用する。
（ｉｉ）図３（１）のポインタマスクレジスター３２は、（ａ）の場合（図２）と同様であり、このレジスター３２によって指定された１４ビット以外の１０ビットを（２）の２ｎｄポインタマスク３４によって指定する。２ｎｄポインタメモリアドレス３６は、”ポインタマスクレジスター３２”プラス”２ｎｄポインタマスク３４”によって指定されたビット（アドレス）によって分けられるエントリーデータテーブルを指定する為の情報３８（図３の（３））が格納されているメモリの先頭アドレスである。
（ｉｉｉ）２ｎｄポインタメモリアドレス３６によって指定された追加のＭＡＣポインタテーブルエントリー（３）は、基本動作における、ＭＡＣポインタテーブルエントリー（図２の１６、（１）参照）と同じ構成である。
【００２１】
図４は上述した本発明のＭＡＣポインタテーブル構造を用いたデータエントリーテーブルの検索動作のフローを示した図である。図４で、スタート４００から符合４２４までが図１の構成による基本動作のフローを示し、符合５００から５０６は図２あるいは図３の構成による例外処理のフローを示している。また、図４の符合４１２から４２０までは、検索許容時間内に処理ができるか否かを判断するフローを示す。以上、本発明によれば、各エントリーテーブルをＭＡＣアドレスからポインタを使用して指定し、テーブル自体を細分化する事によって、検索、並び替えの高速化を実現できる。
【図面の簡単な説明】
【図１】本発明のＭＡＣポインタテーブル構造の一実施例の構成を示す図である。
【図２】本発明のＭＡＣポインタテーブル構造の一実施例の構成を示す図である。
【図３】本発明のＭＡＣポインタテーブル構造の一実施例の構成を示す図である。
【図４】本発明のＭＡＣポインタテーブル構造を用いたデータエントリーテーブルの検索動作のフローを示した図である。
【符号の説明】
１０：ＭＡＣポインタテーブル
１２：エントリーテーブル
１４：エントリーテーブル１２内の一エントリー
１６：エントリー１４のビット配列構成
１８：ＭＡＣアドレス
２０：ローカルアサインナンバー
２２：ＥＸＳＩＴビット
２４：アドレス指示
３０、３２：ポインタマスクレジスター
３４：２ｎｄポインタマスク
３６：２ｎｄポインタメモリアドレス
３８：追加のポインターテーブルの１エントリー
【図１】
2004015592.tif 000003
【図２】
2004015592.tif 000004
【図３】
2004015592.tif 000005
【図４】
2004015592.tif 000006