(57)【要約】      （修正有）【課題】高速でルーティングテーブルをルックアップ可能とするアドレス学習の方法を提供する。【解決手段】パケット通信用に動作可能な複数のポートと、受信パケットを前記ポート間で転送するように動作可能なスイッチ機構と、論理的に複数行に分割された複数のメモリバンクであって、各行は前記メモリバンクの各々の記憶場所を有し、前記記憶場所の各々はルーティングエントリを保持可能であるところのメモリバンクと、複数のオーバーフロー記憶場所を有するオーバーフローバッファであって、オーバーフローバッファと、前記ポートの１つからメモリアクセス要求を受信し、前記メモリアクセス要求により示されたアドレスに基づき前記行の１つを決定し、メモリアクセス動作を実行するために前記示された行と前記オーバーフローバッファにアクセスするように動作可能であるメモリ制御モジュールとを有することを特徴とするスイッチである。【選択図】図１
2005236997.tif 000002
【特許請求の範囲】
【請求項１】
パケットを通信するように動作可能な複数のポートと、
受信パケットを前記ポート間で転送するように動作可能なスイッチ機構と、
論理的に複数行に分割された複数のメモリバンクであって、各行は前記メモリバンクの各々の記憶場所を有し、前記記憶場所の各々はルーティングエントリを保持可能であるところのメモリバンクと、
複数のオーバーフロー記憶場所を有するオーバーフローバッファであって、各オーバーフロー記憶場所はルーティングエントリを保持可能であるところのオーバーフローバッファと、
前記ポートの１つからメモリアクセス要求を受信し、前記メモリアクセス要求により示されたアドレスに基づき前記行の１つを決定し、メモリアクセス動作を実行するために前記示された行と前記オーバーフローバッファにアクセスするように動作可能であるメモリ制御モジュールとを有することを特徴とするスイッチ。
【請求項２】
請求項１に記載のスイッチであって、
前記メモリアクセス要求はルックアップ動作を要求するものであり、
前記メモリ制御モジュールは、
前記示された行と前記オーバーフローバッファから潜在的なルーティングエントリを受信し、
前記潜在的なルーティングエントリの各々に対して前記アドレスを比較し、
前記アドレスが前記潜在的なルーティングエントリの１つと一致したとき、前記潜在的ルーティングエントリの前記一致する１つにより示されたルーティング情報を返すことによりメモリアクセス動作を実行するようにさらに動作可能であることを特徴とするスイッチ。
【請求項３】
請求項１に記載のスイッチであって、
前記メモリアクセス要求はルーティング情報を特定する学習動作を要求するものであり、
メモリ制御モジュールは、
前記示された行がその前記記憶場所の各々に有効なルーティングエントリを有するかどうかを判断し、
利用可能な前記オーバーフロー記憶場所の１つを決定し、
前記アドレスと前記ルーティング情報を前記利用可能なオーバーフロー記憶場所の１つに書きこむことによりメモリアクセス動作を実行するようにさらに動作可能であることを特徴とするスイッチ。
【請求項４】
請求項１ないし３いずれか一項に記載のスイッチであって、
前記メモリ制御モジュールは、
ルックアップ要求と学習要求を前記ポートから受け取り、前記ルックアップ要求と前記学習要求に基づき一連のメモリアクセス動作をスケジューリングするように動作可能であるアービトレーションモジュールと、
前記行の１つを示すハッシュ鍵を、前記一連のメモリアクセス動作の各々において、そのメモリアクセス動作により示されたアドレスから決定し、前記オーバーフローバッファと前記ハッシュ鍵により示された前記行にアクセスするように動作可能なメモリアクセスモジュールとを有することを特徴とするスイッチ。
【請求項５】
請求項１ないし４いずれか一項に記載のスイッチであって、前記オーバーフローバッファは複数のメモリ要素を有することを特徴とするスイッチ。
【請求項６】
ルーティングテーブル動作を実行する方法であって、
複数のポートのいずれかから受信したルックアップ要求および学習要求をモニターするステップと、
行き先アドレスを有するルックアップ要求を検出するステップと、
前記行き先アドレスに基づきハッシュ鍵を決定するステップと、
論理的に複数の行に分かれた複数のメモリバンクを有するメモリモジュールに前記ハッシュ鍵を用いてアクセスするステップであって、前記行の各々は前記メモリバンクの各々の記憶場所を有し、前記記憶場所の各々にはルーティングエントリを保持可能であり、前記ハッシュ鍵は前記行の１つを示すところのステップと、
と、
複数のオーバーフロー記憶場所を有するオーバーフローバッファにアクセスするステップであって、前記オーバーフロー記憶場所の各々にはルーティングエントリを保持可能であるところのステップと、
前記示された行または前記オーバーフローバッファのエントリの１つが前記行き先アドレスと一致するアドレス情報を含んでいるかどうかを判断するステップと、
前記示された行または前記オーバーフローバッファが一致するエントリを含むとき、前記一致するエントリのルーティング情報であって１以上の前記ポートを識別するルーティング情報を返すステップとを有することを特徴とする方法。
【請求項７】
スイッチであって、
複数のポートのいずれかから受信したルックアップ要求および学習要求をモニターする手段と、
行き先アドレスを有するルックアップ要求を検出する手段と、
前記行き先アドレスに基づきハッシュ鍵を決定する手段と、
論理的に複数の行に分かれた複数のメモリバンクを有するメモリモジュールに前記ハッシュ鍵を用いてアクセスする手段であって、前記行の各々は前記メモリバンクの各々の記憶場所を有し、前記記憶場所の各々にはルーティングエントリを保持可能であり、前記ハッシュ鍵は前記行の１つを示すところの手段と、
と、
複数のオーバーフロー記憶場所を有するオーバーフローバッファにアクセスする手段であって、前記オーバーフロー記憶場所の各々にはルーティングエントリを保持可能であるところの手段と、
前記示された行または前記オーバーフローバッファのエントリの１つが前記行き先アドレスと一致するアドレス情報を含んでいるかどうかを判断する手段と、
前記示された行または前記オーバーフローバッファが一致するエントリを含むとき、前記一致するエントリのルーティング情報であって１以上の前記ポートを識別するルーティング情報を返す手段とを有することを特徴とするスイッチ。
【請求項８】
請求項７に記載のスイッチであって、
ソースアドレスとルーティング情報を示す学習要求を検出する手段と、
前記行の別の１つを示す第２のハッシュ鍵を前記ソースアドレスに基づいて決定する手段と、
前記第２のハッシュ鍵を用いて前記メモリモジュールにアクセスする手段とを有することを特徴とするスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信システムに関し、特に、高速でルーティングテーブルをルックアップするためのアドレス学習に関する。
【背景技術】
【０００２】
技術進歩により高速データ通信の需要はますます増大している。この需要を満たすためには、ネットワークの構成要素はますます高速で動作するように設計しなければならなくなってきている。例えば、増大しつつある送信ラインのスピードに合わせるため、スイッチは高速でルーティングの決定を下せなければならない。
【発明の開示】
【課題を解決するための手段】
【０００３】
本発明は、高速でルーティングテーブルをルックアップ可能とするアドレス学習の方法を提供する。実施形態によると、スイッチは複数のメモリバンクにより形成されたルーティングテーブルモジュールを含む。そのルーティングテーブルモジュールにより高速でルーティングテーブルをルックアップすることが可能となる。
【０００４】
一実施形態によると、本スイッチは、パケットを通信する複数のポートと、ポート間でパケットを輸送するスイッチ機構と、論理的に複数行に分かれた複数のメモリバンクとを有する。各行には各メモリバンクからの記憶場所があり、各記憶場所にはルーティングのエントリを保持することができる。本スイッチは複数のオーバーフロー記憶場所を有するオーバーフローバッファを含み、各オーバーフロー記憶場所にはルーティングエントリを保持することができる。また、本スイッチはメモリ制御モジュールも含む。そのメモリ制御モジュールは、ポートの１つからメモリアクセス要求を受信し、そのメモリアクセス要求により示されたアドレスに基づき行の１つを決定し、決定された行とオーバーフローバッファにアクセスしてメモリアクセス動作を実行する。
【０００５】
本発明の実施形態は様々な技術的特長を提供する。複数のメモリバンクを用いてルーティングテーブルモジュールを実施することにより、比較的小型で低価格だが、非常に高速なルーティングテーブルモジュールを提供することができる。このルーティングテーブルモジュールでは、時としてルーティング情報の完全性が犠牲にされるが、それを犠牲にすることによりルーティングテーブルモジュールをより速く、より低価格とすることができる。例えば、一部の実施形態によれば、ポートからアドレスへのマッピング情報のスペースが限定される。この限定されたスペースでは潜在的なポートからアドレスへのマッピングのすべてを記憶することができないかもしれない。この状況では、スイッチは「インテリジェント」なルーティングではなくパケットフラッディング（flooding）を起こすことがある。しかし、一部の実施形態により、パケットフラッディングの発生が制限される。さらにまた、これらの実施形態は、ANSI/IEEE802標準等に準拠して設計することもできる。
【０００６】
本発明の他の技術的特長は図面、記載、請求項から、当業者には容易に明らかとなるであろう。さらに、本発明の特長を上に列記したが、様々な実施形態には列記した特長のすべてを含むものもあれば、一部しか含まないもの、まったく含まないものがある。
【発明を実施するための最良の形態】
【０００７】
図１はスイッチ１０を示す。スイッチ１０には、スイッチング機構１４により相互接続された複数のポート１２が含まれている。また、スイッチ１０には、ルーティング情報を記憶する複数のメモリバンク１８を含むルーティングテーブルモジュール１６が含まれている。一般に、ルーティングテーブルモジュール１６は、ポート１２間のパケットのスイッチングを制御するルーティング情報を保持する。具体的には、ルーティングテーブルモジュール１６はマルチバンクメモリ構造であり、高速のルーティングテーブル動作を提供する。
【０００８】
各ポート１２はパケットを送受信するハードウェアを表す。ハードウェアには適当な制御ロジックが含まれている。例えば、各ポート１２は、パケットを送受信する入力モジュールと出力モジュールとを含んでもよい。パケットという用語は、本明細書で用いられているように、情報のセグメンテーションであってアドレス情報を含むものであれば何でもよい。例えば、パケットには、イーサネット（登録商標）フレーム、インターネットプロトコル（IP）パケット、非同期通信モード（ATM）セル、その他の好適な情報セグメントが含まれる。スイッチ１０において、スイッチング機構１４は、ポート１２のいずれか１つからポート１２のいずれか１つ、複数、またはすべてにパケットを送信する。スイッチング機構１４は単一のブロックとして示したが、複数の要素を好適に組み合わせたものでもよく、ポート１２間の通信をサポートするのに十分なレートでパケットをスイッチングするように構成・設計されていればよい。
【０００９】
スイッチ１０において、ルーティングテーブルモジュール１６はルーティング情報を保持しており、ポート１２間のパケットのスイッチングを制御する。スイッチング機構１４を制御するため、ルーティング情報はアドレスをポートにマッピングするエントリが必要な数だけ含まれている。スイッチ１０はこのルーティング情報に基づいてパケットの行き先を決める。例えば、ルーティング情報中にアドレスXYZをポートAにマッピングするエントリがあるとする。ポートA以外のポートがアドレスXYZ向けのパケットを受信すると、スイッチング機構１４はそのパケットをポートAに送る。ルーティングモジュール１６内に適当なルーティング情報があれば、スイッチング機構１４はポート１２間でパケットを「インテリジェント」にスイッチングすることができる。さらに、本実施例では１つのアドレスには単一のポートがマッピングされている場合を想定しているが、複数のポート１２にマッピングしてもよい。
【００１０】
場合によっては、ルーティングテーブルモジュール１６はパケットを受信してもアドレスをマッピングしないこともある。例えば、１つのポート１２がパケットを受信したが、その行き先アドレスがルーティングテーブルモジュール１６内のエントリと一致しない場合である。一実施形態において、ルーティングテーブルモジュール１６がマッピングをしないときは、受信したポート以外のポート１２すべてにパケットが送られる。すなわち、スイッチ１０は受信ポート１２以外のすべてのポート１２からパケットを送信する。ルーティングテーブルの動作の一例として、１つのポート１２が行き先アドレスを含むパケットを受信した場合を考える。ルーティングテーブルモジュール１６がそのパケットの行き先アドレスにポートをマッピングすれば、スイッチング機構１４はそのルーティング情報に示されたすべてのポート１２にそのパケットを送る。しかし、ルーティングテーブルモジュール１６がパケットに示された行き先アドレスにポート１２をマッピングしないときは、スイッチング機構１４は他のすべてのポート１２にそのパケットを送ってしまう（パケットフラッディング）。このパケットフラッディングによりネットワークのトラフィックが増大するが、少なくともパケットを正しいポート１２に送ることを保証できる。
【００１１】
ルーティングテーブルモジュール１６において、ルーティング情報には静的なエントリと動的なエントリとがある。静的なルーティングエントリにはファームウェアにより設定されたエントリが含まれる。このエントリはシステム管理者により構成されるか、ルーティングテーブルモジュール１６において静的に構成されたものである。例えば、システム管理者は、ネットワークトポロジに基づいて静的なルーティングエントリを構成することができる。静的エントリの例としては他に、ブロードキャスト、マルチキャスト、その他の特殊なアドレス等の特殊なネットワークアドレスのルーティング情報がある。
【００１２】
動的ルーティングエントリは、スイッチ１０の動作中に自動的に生成、保持、削除される。一実施形態において、スイッチ１０は、ルーティングテーブルモジュール１６に動的ルーティングエントリを取り込む学習方法を用いる。この方法によると、受信パケットのソースアドレスを用いてルーティングテーブルモジュール１６のエントリとする。例えば、スイッチ１０がポートAにパケットを受信し、そのパケットにはXYZというソースアドレスが含まれていたとする。ルーティングテーブルモジュール１６にこのマッピング情報がまだないときは、アドレスXYZをポートAにマッピングするルーティングエントリをルーティングテーブルモジュール１６に加える。その後、行き先アドレスがXYZであるパケットを受信したら、スイッチ１０はルーティングテーブルモジュール１０内のマッピング情報に基づき、そのパケットをポートAに送ることができる。
【００１３】
ルーティングテーブルモジュール１６はルーティングエントリを削除することもできる。例えば、ルーティングテーブルモジュール１６は定期的に古くなったエントリを削除する。ルーティングテーブルモジュール１６はこの古くなったエントリの「エージング」を、ルーティング情報内に保持されているタイムスタンプその他の適当なメカニズムを用いて実行する。
【００１４】
一実施形態において、ルーティングテーブルモジュール１６内の各エントリは、アドレス、ルーティング情報、管理情報を含む。アドレスはメディアアクセスコントロール（MAC）アドレス等の情報であり、受信したパケット中のアドレスと比較される。ルーティング情報は、そのエントリ内のアドレスと一致する行き先アドレスを有するパケットを送るポートを示す情報である。一実施例において、ルーティング情報はビットベクトルであり、各ビットは対応するポートがその行き先アドレスにマッピングされるかどうかを示す。例えば、１２ポート構成の場合、１２ビットのビットベクトルによりどのポート１２が行き先アドレスにマッピングされるかを示すことができる。
【００１５】
管理情報には、エントリを保持するのに適当なデータが含まれている。一実施形態において、管理情報は、タイムスタンプ、静的インジケータ、有効インジケータ、チェックコード等を含む。タイムスタンプはエントリの古さを示し、エージング動作に用いられる。静的インジケータはエントリが静的であるかどうかを示す。一実施形態において、静的インジケータが設定されているとき、スイッチ１０はエントリを動的には削除しない。有効インジケータはエントリに示されたマッピングが正しいかどうかを示す。よって、例えば、エントリを「削除」するには、単に有効インジケータを無効にセットすればよい。チェックコードフィールドを管理情報に含めて、情報の信頼性を高くすることもできる。
【００１６】
動作中に、ルーティングテーブルモジュール１６は３つの基本的動作をする。学習、削除、ルックアップである。上で説明したように、スイッチ１０は動的学習と静的学習の両方ができる。動的学習により、受信パケットのソースアドレスに基づきルーティングテーブルモジュール１６にエントリが追加される。静的学習には、製造時、セットアップ時、その他の適当な時におけるルーティング情報の構成が含まれる。学習動作において、ルーティングテーブルモジュール１６は、学習するアドレスに対して適当なマッピングを有しているか判断し、まだ有していなければ、ルーティング情報内にエントリを生成する。従って、学習動作には、読み出しと書き込みの２つのサイクルが必要である。
【００１７】
学習動作と同様に、削除動作にもエントリを動的に削除するものもあれば、静的に削除するものもある。動的削除はエージングその他に基づいて行われる。静的削除は、ルーティングテーブルモジュール１６内の静的エントリを変更するために、構成その他の好適な表示に基づき行われる。学習動作と同様に、削除動作にも読み出しステップと書き込みステップの両方が必要である。例えば、ルーティングテーブルモジュール１６はまずエントリが十分エージングされたかどうかを判断し、されていればそのエントリを削除する。よって、削除動作を完了するには２つのサイクルがかかる。
【００１８】
ルックアップ動作は、前に説明したように、受信パケットの行き先アドレスのマッピングを見つけることである。一実施例において、スイッチ１０はマルチキャストとユニキャストの両方のアドレスを調べる（ルックアップする）ことができる。マルチキャストアドレスに対して、ルーティングテーブルモジュール１６は一般に静的なルーティングエントリから構成されている。これによりマルチキャストパケットをインテリジェントにルーティングすることが可能となる。ユニキャストパケットに対して、ルーティングテーブルモジュール１６は一般に動的な学習に基づきルーティング決定を行う。よって、スイッチ１０は、一般にユニキャストパケットについては適当なアドレスマッピングを学習するまではフラッディング（flooding）をする。一実施形態において、スイッチ１０はアドレス中の情報に基づき、マルチキャストとユニキャストのアドレスを見分けることができる。例えば、IEEE802.1標準により、マルチキャストアドレスはユニキャストアドレスと特定ビットの値により区別されている。ルーティングテーブルモジュール１６は単一の読み出し動作を用いてルックアップ動作を実行することができる。よって、ルックアップ動作を完了するには単一サイクルのみしかかからない。
【００１９】
図示した実施形態において、ルーティングテーブル１６は複数のメモリバンク１８とオーバーフローバッファ２６を含む。これらのメモリ要素ルーティング情報の記憶に供され、図２を参照してより詳しく説明する。
【００２０】
図２は、ルーティングテーブルモジュール１６の機能構成要素の一例を示すブロック図である。このルーティングテーブルモジュール１６は、複数のメモリバンク１８、アービトレーションモジュール２０、アクセスモジュール２２、複数のオーバーフローバッファ２６を含む。図示した実施形態において、アービトレーションモジュール２０はスイッチ１０内の各ポート１２を結合し、学習要求（LRN）およびルックアップ要求（LUP）を受信する。同様に、アクセスモジュール２２はスイッチ１０内の各ポート１２に結合し、ルックアップ要求に応じてルーティング情報（RI）を提供する。動作中には、メモリバンク１８とオーバーフローバッファ２６がスイッチ１０のルーティング情報を保持する。一般に、複数のメモリバンクと関連したアクセス方法により、ルーティングテーブルモジュール１６は高速のルーティングテーブル動作を提供できる。
【００２１】
メモリバンク１８は、ルーティングエントリを記憶するのに好適な、制御ロジックを含むハードウェアであればいかなるものでもよい。各メモリバンク１８には別々にアクセスし、読み出しおよび書き込みの動作を行う。よって、例えば、１サイクルにおいてアクセスモジュール２２はメモリバンク１８の一部または全部からの読み出し動作を実行する。同様に、１サイクルにおいて、アクセスモジュール２２はメモリバンク１８の一部または全部に書き込み動作を実行する。アクセスモジュール２２はこれらの動作をミックスすることもでき、例えば、１つのメモリバンク１８に書き込み、同時に他のすべてのメモリバンク１８から読み出すこともできる。
【００２２】
メモリバンク１８と同様に、オーバーフローバッファ２６は、ルーティングエントリを記憶するのに好適な、制御ロジックを含むハードウェアであればいかなるものであってもよい。オーバーフローバッファ２６は、読み出しと書き込みの動作を実行するために別々にアクセスすることができる。さらにまた、各オーバーフローバッファ２６はアクセスモジュール２２に結合される。これにより、メモリバンク１８に関して説明したように、アクセスモジュール２２はオーバーフローバッファ２６を同様に制御することができる。
【００２３】
図示した実施形態において、各メモリバンク１８は論理的に複数の記憶場所２４に分割される。例えば、各メモリバンク１８は一千個の記憶場所に分割でき、各記憶場所にはルーティングエントリを保持することができる。また、ルーティングテーブルモジュール１６は論理的にメモリバンク１８のグループを行に分けてもよい。各行は、複数のメモリバンク１８にわたる対応する記憶場所２４を含む。例えば、第１行（R0で示した）は各メモリバンク１８からの第１番目の記憶場所２４を含む。同様に、第ｎ行（Rnで示した）は各メモリバンク１８からの第ｎ番目の記憶場所２４を含む。よって、例えば、各メモリバンク１８が論理的に一千個の記憶場所２４に分かれているとき、メモリバンク１８のグループは一千個の行に論理的に分けることができる。
【００２４】
アクセスモジュール２２は読み出しおよび／または書き込み動作を用いてメモリバンク１８にアクセスする。一実施形態において、アクセスモジュール２２は行全体にわたって読み出し動作を実行してもよい。よって、例えば、アクセスモジュール２２は１つの行内の各記憶場所２４の内容を同時に読み出すこともできる。書き込み動作においては、アクセスモジュール２２はメモリバンク１８の１つをターゲットとして書き込む。例えば、アクセスモジュール２２は、選択された１つのメモリバンク１８内の１つの記憶場所２４に書き込む。
【００２５】
一実施形態において、個別のメモリバンク１８は同時に読み出しと書き込みの動作をサポートしなくてもよい。よって、アクセスモジュール２２が１つのメモリバンク１８に書き込むとき、そのメモリバンク１８から同時に読み出すことはできない。しかし、このことは、アクセスモジュール２２が他のメモリバンク１８から読み出す能力には影響しない。それゆえ、単一のサイクルにおいて、アクセスモジュール２２は、１つのメモリバンク１８に書き込む一方で、他のすべてのメモリバンク１８から読み出すことができる。本実施例において、アクセスモジュール２２が１つの行全体の内容を読み出そうとするときは、メモリバンク１８の記憶場所２４にのみアクセスして、書き込み動作は実行しない。よって、１以上のメモリバンク１８における書き込み動作は、アクセスモジュール２２が１つの行のすべての記憶位置から同時に読み出す能力に影響を与える。
【００２６】
例えば、ルーティングテーブルモジュール１６が４つのメモリバンク１８を有するとする。１サイクル中、アクセスモジュール２２は第１のメモリバンク１８の書き込み動作と、行の読み出し動作をスケジューリングする。そのサイクル中、アクセスモジュール２２は、第２、第３、第４のメモリバンク１８内の記憶場所２４からのみ情報を受け取る。この状況において、アクセスモジュール２２はその行内の記憶場所２４にある情報にはアクセスできないものもある。これにより、ルーティングテーブルモジュール１６はルーティング情報中の一致を検出できないおそれがある。以下に詳細を説明する。
【００２７】
一実施形態において、アクセスモジュール２２はメモリバンク１８へのアクセスにハッシュ法を用いる。アクセスモジュール２２はソースまたは行き先のアドレスからハッシュ鍵を生成する。アクセスモジュール２２はこのハッシュ鍵を用いて、メモリバンク１８の行にアクセスする。例えば、メモリバンク１８が論理的に１０２４個の行に分割されているとする。アクセスモジュール２２は、アドレスの１０ビットの情報を用いて、１つの行をユニークに特定するハッシュ鍵を生成する。よって、アクセスモジュール２２はアドレスのルックアップまたは学習のために、適当な行を決定することができる。
【００２８】
ルックアップ要求に対して、アクセスモジュール２２は行き先アドレスを受け取り、このアドレスからハッシュ鍵を生成し、そのハッシュ鍵で示された行からデータを読み出す。行き先アドレスがその行の記憶場所２４の１つにあるエントリと一致したとき、アクセスモジュール２２は一致したエントリにあるルーティング情報を返す。行き先アドレスがその行の記憶場所２４内のエントリのいずれとも一致しないときには、アクセスモジュール２２は「失敗」を表示する。「失敗」したときにはパケットのフラッディングが起こる。
【００２９】
しかし、図示した実施形態において、ルーティングテーブルモジュール１６にはオーバーフローバッファ２６が含まれている。このオーバーフローバッファは、メモリバンク１８に格納されているようなルーティングテーブルエントリを保持する。例えば、オーバーフローバッファはオーバーフロー記憶を提供する。すなわち、「全部」の行を用いても入りきらない（オーバーフロー）ルーティングエントリを保持する。よって、オーバーフローモジュールを含む実施形態においては、アクセスモジュール２２は、行き先アドレスがオーバーフローバッファ２６中のエントリに一致するかどうかをさらに判断する。この場合、アクセスモジュール２２は、ハッシュ鍵で示された行またはオーバーフローバッファ２６内での一致に基づきルーティング情報を選択する。よって、アクセスモジュール２２が失敗を表示するのは、ルーティング情報がハッシュ鍵で示された行にもオーバーフローバッファ２６にも見つからないときだけである。メモリバンク１８とオーバーフローバッファ２６の適当なルーティング情報を特定する選択ロジックを、図３を参照して説明する。さらにまた、オーバーフローバッファ２６の学習動作を、一般的な学習動作に関して下で説明する。
【００３０】
学習動作に対して、アクセスモジュール２２は読み出し動作と書き込み動作を両方実行する。学習動作で得たソースアドレスを用いて、アクセスモジュール２２はハッシュ鍵を生成し、そのハッシュ鍵により示された行から読み出す。そのソースアドレスと一致するものがその行になければ、ルーティングテーブルモジュール１６はそのルーティング情報を学習する。よって、次または後続のサイクルにおいて、アクセスモジュール２２は書き込み動作を実行し、ハッシュ鍵により示された行内の記憶場所２４のいずれかにエントリを挿入する。一実施形態において、ルーティングテーブルモジュール１６はハッシュ鍵により示された行内の空の記憶場所２４を選択する。例えば、ルーティングテーブルモジュール１６は、ハッシュ鍵により示された行内の空の記憶場所２４を有する第１のメモリバンク１８を選択し、ランダムまたは擬似ランダムアルゴリズムを用いてその行内の空の記憶場所２４を選択する。その行内に空の記憶場所２４がないときは、ルーティングテーブルモジュール１６はその学習要求を無視してもよいし、記憶場所２４が空くまでその学習要求を待ち行列に加えておいてもよい。
【００３１】
学習はハッシュ鍵により示された行内に空の記憶場所２４があるかどうかによるので、ルーティングテーブルモジュール１６は、アドレスマッピング情報を学習できないこともある。ルーティングテーブルモジュール１６が８個のメモリバンク１８を有し、１つの行の８個の記憶場所２４すべてが現在有効であるとする。ルーティングテーブルモジュール１６は、上で説明したように、その行のハッシュ鍵となる学習要求を単に無視する。これにより、フラッディングが増加するが、ルーティングテーブルモジュール１６は比較的小さく高速なメモリ構造を利用できる。
【００３２】
メモリバンク１８内の行がふさがっていることによるフラッディングを減らすため、ルーティングテーブルモジュール１６はオーバーフローバッファ２６を含む。よって、図示したように、ルーティングテーブルモジュール１６はオーバーフローバッファ２６を含み、行がふさがっていることに起因するルーティング情報の記憶問題を緩和する。オーバーフローバッファ２６により、ルーティングテーブルモジュール１６内にルーティングエントリを追加して記憶できる。アクセスモジュール２２は、メモリバンク１８の行がいっぱいのとき、この行に対して追加的に受け取った学習要求はオーバーフローバッファ２６に向ける。
【００３３】
例えば、１つの行を特定した学習要求を考え、この行の各メモリバンク１８には有効なエントリが現在入っているとする。この場合、アクセスモジュール２２は、オーバーフローバッファ２６の１つを選択してその中にルーティングテーブルエントリを格納することができる。アクセスモジュール２２は、オーバーフローした学習要求をオーバーフローバッファ２６内に格納するに際して、適当な選択方法を用いることができる。例えば、オーバーフローバッファ２６に１６個のルーティングテーブルエントリを入れられるとき、アクセスモジュール２２は、２バイトベクトルを用いてオーバーフローバッファ２６内の利用可能な記憶場所を示すことができる。このベクトルを用いて、アクセスモジュールはオーバーフローバッファ２６内の空の記憶場所を決定し、学習要求を空の記憶場所に書き込むようスケジューリングする。それゆえ、ルーティングテーブルモジュール１６は、ふさがった行に対する学習要求はオーバーフローバッファ２６内の空の記憶場所にオーバーフローすることにより、処理することができる。例として、１つの行のみが継続的にオーバーフローバッファ２６にオーバーフローするとき、その行は事実上オーバーフローバッファ２６の大きさだけ拡張されたことになる。しかし、オーバーフローしている複数の行の間でオーバーフローバッファ２６を共有するので、各行が拡張される量は制限される。
【００３４】
一実施形態において、アクセスモジュール２２はどの行からオーバーフローバッファ２６のどの利用可能なエントリにオーバーフローさせてもよい。あるいは、アクセスモジュール２２は、一部の行だけがオーバーフローバッファ２６のエントリにオーバーフローするようにしてもよい。例えば、図示したルーティングテーブルモジュール１６は２つのオーバーフローバッファ２６がある。アクセスモジュール２２は、上半分の行から第１のオーバーフローバッファ２６にオーバーフローし、下半分の行から第２のオーバーフローバッファ２６にオーバーフローするようにしてもよい。しかし、上記の実施形態に係らず、スイッチ１０はオーバーフローバッファ２６をいくつ含んでいても個数が適当であればよいし、アクセスモジュール２２はいかなる方法であっても適当なものを用いてオーバーフローバッファ２６へのルーティングエントリのオーバーフローを処理することができる。さらにまた、単一の「オーバーフローバッファ」は、好適な数のルーティングエントリの記憶場所としていかなる数の記憶要素を含んでいてもよい。
【００３５】
オーバーフローバッファ２６を設けることにより、スイッチ１０は、多数のノードを有するネットワーク中で動作していても、潜在的に高いレベルのスループットを維持できる。例として、スイッチ１０が、８個のメモリバンク１８のみを有する場合と、８個のメモリバンク１８に加えて１６個の記憶場所を提供するオーバーフローバッファ２６を有する場合とを比較する。このような構成において、オーバーフローバッファ２６を有するスイッチ１０は、オーバーフローバッファ２６を有さないスイッチ１０と比較して、ノード数が約３倍のネットワークでも高いスループットを維持した。
【００３６】
一実施形態において、スイッチ１０にはメモリバンク１８とオーバーフローバッファ２６にアクセスする統一的方法が設けられている。この方法では、ハッシュ鍵をそれにより示された行のインデックスとして用いる。オーバーフローバッファ２６無しで構成されたスイッチ１０の場合、インデックスはメモリバンク１８の１つを指す。オーバーフローバッファ２６を有する構成のスイッチ１０では、インデックスは同様にメモリバンク１８の１つを示すか、またはオーバーフローバッファ２６内の記憶場所を示す。例えば、N個のメモリバンク１８と、オーバーフローバッファ２６内にM個の記憶場所があるとき、インデックスは０からNでメモリバンク１８の記憶場所を特定するか、またはNからM-1でオーバーフローバッファ２６の記憶場所を示す。しかし、ハッシュ鍵アクセスの統一性のため、スイッチ１０にはオーバーフローバッファ２６が追加されたことによりアクセスロジックを改良する必要がある。
【００３７】
上で説明したように、アクセスモジュール２２は同一サイクル内で異なるメモリバンク１８に対して読み出し動作と書き込み動作をスケジューリングする。このように、例えば、アクセスモジュール２２は、１つの行から読み出すのと同じサイクルで、メモリバンク１８の１つに書き込みをスケジューリングすることができる。上で説明したように、これにより、アクセスモジュール２２は、書き込み動作がスケジューリングされていないメモリバンク１８のエントリのみを読み出すことができる。行き先アドレスのルックアップを実行するとき、「ニセの」失敗となる。メモリバンク１８が行き先アドレスと一致する時にニセの失敗が起こる。しかし、一致するエントリを保持するメモリバンク１８は書き込み動作を実行し、一方、残りのメモリバンク１８は読み出し動作を実行する。ニセの失敗の場合、アクセスモジュール２２は、その行に一致するエントリが含まれていても、失敗を表示する。ニセの失敗が起こる可能性は、ルーティングテーブルモジュール１６内のメモリバンク１８の数により制限される。例えば、書き込み動作が単一のメモリバンク１８に限定されていて、ルーティングテーブルモジュール１６が４つのメモリバンク１８を含むとき、読み出し・書き込みサイクル中にニセの失敗が発生する確率は２５％である。さらに、（学習動作と削除動作には２サイクルかかるので）書き込み動作が最大でも１サイクルおきに発生すると考えられるときは、ニセの失敗の確率は半分になる。
【００３８】
一実施形態において、ルーティングテーブルモジュール１６は、マルチキャストアドレスのルックアップ動作または学習読み出し動作の間にニセの失敗が起こらないようにする。例えば、マルチキャストアドレスには厳しい基準が適用されるので、マルチキャストルックアップ動作中にはルーティングテーブルモジュール１６は書き込み動作をしない。同様に、学習動作について、ルーティングテーブルモジュール１６は、学習動作の読み出し部分の間に同時に書き込み動作はしない。これにより、ルーティングテーブルモジュール１６はニセの失敗に基づいて新しいエントリを学習する必要性を不適切に検出しなくなる。
【００３９】
アクセスモジュール２２の読み出し・書き込み動作のスケジューリングを処理するため、ルーティングテーブルモジュール１６はアービトレーションモジュール２０を含んでいる。動作中、アービトレーションモジュール２０はポート１２からルックアップ動作および学習動作を受け取り、アクセスモジュール２２のために適当な読み出し・書き込み動作を決定する。アービトレーションモジュール２０は、このルックアップ動作および学習動作をメモリバンク１８とオーバーフローバッファ２６のエントリのエージング等のその他の動作とともに優先順位付けする。一実施形態において、アービトレーションモジュール２０は未処理のルックアップ要求に最も高い優先順位を付ける。ルックアップ要求に最も高い優先順位が付けられるので、アービトレーションモジュール２０は、トラフィックが最も悪い状況でも、ルックアップ要求を早く処理できる。
【００４０】
例えば、スイッチ１０に１２個のポートがあり、各ポートが同時に最小サイズのイーサネットフレームを受け取ったとする。イーサネットの規格によると、最小サイズのイーサネットフレームは、約６４バイトである。一実施形態において、スイッチ１０は最小サイズのイーサネットフレームを約２０サイクルで受信する。それゆえ、各ポート１２が同時に最小サイズのイーサネットフレームを受信すると、２０サイクル経つまでどのポート１２も他のフレームを受信できない（各ポート１２は今受信しているフレームを受信し終わるまで少なくとも２０サイクルかかるからである）。このような最悪のシナリオにおいても、アービトレーションモジュール２０は１２サイクル以内に各ポート１２からのルックアップ要求を処理することができる。新しいルックアップ要求が到着するまでに、約８サイクルの余裕（予備）がある。
【００４１】
この例では、パケットが受信を受信したとき、各ポート１２は学習要求を生成するかもしれない。このように、最悪の場合、アービトレーションモジュール２０は１２個のルックアップ要求とともに、１２個の学習要求を受信する。予備のサイクルは８サイクルだけなので、アービトレーションモジュール２０は学習要求の一部のみを選択して処理する。このように、ルックアップ要求の優先順位を高くすると、学習要求は予備のサイクルで処理することとなる。さらに学習要求が届くと、アービトレーションモジュール２０は、学習要求を待ち行列に加えるか、未処理の学習要求を捨てる。例えば、アービトレーションモジュール２０は、各ポート１２の最も新しく受信した学習要求を維持してもよい。そうすれば、学習要求は受信した最も新しいポートのマッピングを反映することを保証できる。
【００４２】
ルーティングテーブルモジュール１６の実施形態を図示および説明したが、ルーティングテーブルモジュール１６はミックスされた同時アクセス可能なメモリ構造をサポートする要素の好適な組み合わせであればよい。このように、例示した要素により実行される機能は、必要に応じて分離されても組み合わせられていてもよく、この要素の一部または全部は符号化され媒体に格納されたロジックにより実施されてもよい。例えば、アービトレーションモジュール２０とアクセスモジュール２２の機能は分かれていても１つになっていてもよく、好適なメモリ制御ロジックでその動作を実施してもよい。さらにまた、メモリバンク１８とオーバーフローバッファ２６は分離した構成要素として例示したが、ルーティングテーブルモジュール１６は同様な機能を提供する適当なメモリ構造を用いてもよい。また、ルーティングテーブルモジュール１６は単一のモジュールとして示したが、その構成要素の一部または全部をスイッチ１０の他の要素に分散させてもよい。
【００４３】
図３は、選択ロジック３０を示すブロック図である。ルーティングテーブルモジュール１６は、アクセスする記憶場所を選択する時にこの選択ロジック３０を用いる。一般に、選択ロジック３０は、ルーティングテーブルモジュール１６中のルーティングエントリがルックアップ要求に示されたアドレスと一致するかどうかを判断する。この判断に基づき、選択ロジック３０はポートマッピングを示すルーティング情報または失敗を表示する。
【００４４】
選択ロジック３０は、ルックアップ要求情報に加え、メモリバンク１８とオーバーフローバッファ２６からの入力を受け取る。例示した実施形態において、選択ロジック３０は、参照番号３２で示したルックアップ要求情報、参照番号３４で示したメモリバンク１８の１行、参照番号３６で示した第１のオーバーフローバッファ２６からの出力、および参照番号３８で示した第２のオーバーフローバッファ２６からの出力を受け取る。ルックアップ要求情報３２は、ポートマッピングが所望されるアドレスを示す情報を含んでいる。例えば、ルックアップ要求情報３２は、示されたアドレスのMACとVID値を含む。行情報３４は、各メモリバンク１８の示された行のルーティングエントリを含む。このように、行出力３４は、ルックアップ要求情報３２により示された行のルーティング情報を含む。
【００４５】
上で説明した実施形態において、ルーティングテーブルモジュール１６は２個のオーバーフローバッファ２６を含む。この例では、選択ロジック３０は第１と第２のオーバーフローバッファ２６からオーバーフロー出力を受け取る。第１のオーバーフロー出力３６は、第１のオーバーフローバッファ２６内に維持されたルーティングエントリを提供する。同様に、第２のオーバーフロー出力３８は、第２のオーバーフローバッファ２６内に維持されたルーティングエントリを提供する。
【００４６】
上で説明したように、ルーティングテーブルモジュール１６は、オーバーフローバッファ２６をいくつ含んでいてもよく、どのような方法でこのオーバーフローバッファ２６にいっぱいになった行からオーバーフローしたエントリをオーバーフローするようにしてもよい。このように、例えば、２個のオーバーフローバッファ２６の各々が複数の行の一部だけからのオーバーフローを受け取るとき、選択ロジック３０は示された行から適当なオーバーフローバッファ２６への出力のみを受け取る。このような種類のマッピングによって、選択ロジック３０をあまり複雑にしなくとも、１以上のオーバーフローバッファ２６を一部の行に割り当てることができる。ルーティングテーブルモジュール１６が８個のオーバーフローバッファ２６を有し、メモリバンク１８内の行の一部に、オーバーフローバッファ２６が２つずつ割り当てられているとする。このような構成では、選択ロジック３０は２つのオーバーフローバッファ２６からの出力と並行して行出力を受信することができる。これは、スピード、サイズ、複雑性に重大な影響を与えることなくどのように１以上のオーバーフローバッファ２６をルーティングテーブルモジュールに含めるかということの一例を示すものである。
【００４７】
このように、選択ロジック３０は、１つの行と各オーバーフローバッファ２６からの潜在的なルーティングエントリを受け取る。選択ロジック３０は、受信した入力を用いて、メモリバンク１８またはオーバーフローバッファ２６から受信したルーティングエントリがルックアップ要求情報３２と一致するかどうかを判断する。例えば、選択ロジック３０は多数の比較器を並列に含んで、行出力３４、各オーバーフロー出力３６、３８をルックアップ要求情報３２と比較し、一致するか判断してもよい。選択ロジック３０はこの比較に基づき適当なルーティング情報を決定する。例えば、選択ロジック３０は、ルックアップ要求情報３２と潜在的ルーティングエントリの１つが一致すると判断したとき、そのルーティングエントリにより示されたルーティング情報を出力する。しかし、選択ロジック３０は、潜在的ルーティングエントリがどれもルーティング情報３２と一致しないと判断したとき、失敗を表示する。
【００４８】
図４は、ルーティングテーブルモジュール１６が、ルックアップ要求と学習要求に応答して、メモリバンク１８とオーバーフローバッファ２６内に保持されているルーティング情報を定期的に維持管理する方法を示すフローチャートである。上で説明したルーティングテーブルモジュール１６の要素を参照して、このフローチャートについて説明する。しかし、上で注意したように、ルーティングテーブルモジュール１６は、これら要素を適当に組み合わせたものを含んでいてもよい。
【００４９】
アービトレーションモジュール２０は、ステップ５０で、ルックアップ要求が現在アクティブであるかどうか判断する。例えば、アービトレーションモジュール２０は、ポート１２がルックアップ動作を要求しているかどうかを判断する。要求していなければ、アービトレーションモジュール２０は、ステップ５２で、エージング要求がアクティブかどうか判断する。例えば、アービトレーションモジュール２０は、定期的に、散発的に、その他適当な時にエージング要求を生成し、古くなったエントリをメモリバンク１８およびオーバーフローバッファ２６から削除する。エージング要求がアクティブでなければ、アービトレーションモジュール２０は、ステップ５４で、学習要求がアクティブかどうか判断する。例えば、アービトレーションモジュール２０は、ポート１２が学習動作を要求しているかどうか判断する。もし要求していなければ、ステップ５０に戻る。つまり、アービトレーションモジュール２０は、ステップ５０、５２、５４で、ルックアップ要求、エージング要求、学習要求を処理しているが、ルックアップ要求を最優先している。
【００５０】
アービトレーションモジュール２０がステップ５０でルックアップ要求を検出したとき、アービトレーションモジュール２０は、ステップ５６で、ルックアップ読み出し動作をスケジューリングする。アービトレーションモジュール２０は、ステップ５８で、スケジューリングされたルックアップがマルチキャストアドレスのものかどうかを判断する。例えば、行き先アドレス内のビットを調べることにより、アービトレーションモジュール２０はそのアドレスがマルチキャスト動作のものであるかを判断する。マルチキャスト動作のものであるとき、アービトレーションモジュール２０は、ステップ６０で、スケジューリングされた書き込み動作をすべてキャンセルする。例えば、アービトレーションモジュール２０は前のサイクルで学習コマンドまたは削除コマンドに対して、書き込み動作をスケジューリングしているかもしれない。スケジューリングしているとき、アービトレーションモジュール２０はこの書き込み動作をキャンセルし、読み出し動作中にニセの失敗が起きないようにする。ステップ６２において、アービトレーションモジュール２０はスケジューリングされた動作を実行する。この場合、アクセスモジュール２２はスケジューリングされたルックアップ読み出し動作を実行し、書き込み動作がスケジューリングされていれば、そのスケジューリングされた書き込み動作を実行する。
【００５１】
ルックアップ動作が検出されなかったとき、アービトレーションモジュール２０は、ステップ５２で、エージング要求をチェックする。エージング要求を検出したとき、アービトレーションモジュール２０は、ステップ６４で、エージング読み出し動作をスケジューリングする。この場合、アクセスモジュール２２は、ステップ６２でスケジューリングされた動作を実行する。これにはスケジューリングされたエージング読み出し動作の実行も含む。
【００５２】
アクティブなルックアップ要求もエージング要求もない場合、アービトレーションモジュール２０は、ステップ５４で、アクティブな学習要求を検出する。アクティブな学習要求を検出したとき、アービトレーションモジュール２０は、ステップ６６で、書き込み動作が現在スケジューリングされているかどうかを判断する。例えば、前のサイクルで、アービトレーションモジュール２０は書き込み動作をスケジューリングしていることもある。ルーティングテーブルモジュール１６は、書き込み動作とエージング読み出し動作とを同時には実行しないので、アービトレーションモジュール２０はステップ６６で書き込み動作をチェックする。書き込み動作がスケジューリングされていたとき、アービトレーションモジュール２０はステップ５０に戻る。しかし、書き込み動作がスケジューリングされていないときは、アービトレーションモジュール２０は、ステップ６８で、学習読み出し動作をスケジューリングする。アクセスモジュール２２はステップ６２でスケジューリングされた動作を実行する。この実行には、書き込み動作を同時に実行しない、スケジューリングされた学習読み出し動作の実行を含む。
【００５３】
ステップ６２でスケジューリングされた動作を実行した後、アービトレーションモジュール２０は、ステップ７０で、書き込みの必要性があるかどうかを判断する。例えば、学習読み出し動作を実行した後、アービトレーションモジュール２０は学習書き込み動作が必要かどうかを判断する。必要と判断した場合、アービトレーションモジュール２０は、ステップ７２で、その書き込み動作をスケジューリングする。その書き込み動作をスケジューリングするために、アービトレーションモジュール２０は、ルーティング情報を受け入れるメモリバンク１８内の適当な行を決定する。場合によっては、その特定された行はすでにルーティング情報でいっぱいかもしれない。このような場合、スイッチ１０がオーバーフローバッファ２６を含むとき、アービトレーションモジュール２０は、適当なオーバーフローバッファ２６内の利用可能な記憶場所への書き込み動作をスケジューリングする。よって、アービトレーションモジュール２０は、特定された行または適当なオーバーフローバッファ２６内の利用可能な記憶場所に対する書き込み動作をスケジューリングすることができる。同様に、アービトレーションモジュール２０は、ステップ７０で、削除が必要かどうか判断し、ステップ７２で、その削除を実行するために書き込み動作をスケジューリングしてもよい。
【００５４】
前出のフローチャートは、ルーティングテーブルモジュール１６がマルチバンクメモリ構成のアクセスに基づいてルーティングテーブル動作を処理するときの動作の一例を示す。しかし、前出のフローチャートとその説明では、動作方法の一例を示しただけである。ルーティングテーブルモジュール１６は好適な方法であればいかなるものを用いてマルチバンクメモリ構成をサポートしてもよい。よって、このフローチャートのステップの大部分を、同時に実行してもよいし、示したのとは異なる順序で実行してもよい。また、ルーティングテーブルモジュール１６は、この方法に別のステップを追加して使用しても、ステップの一部を除いて使用しても、この方法が適当であればステップの一部を別のステップと置き換えて使用してもよい。
【００５５】
図５は、読み出し動作を処理するときの、アクセスモジュール２２の動作の一例を示すフローチャートである。各サイクルにおいて、アクセスモジュール２２は、ステップ８０で、読み出し要求を受け取ったかどうか判断する。受け取っていなければ、アクセスモジュール２２は、そのサイクルでは読み出し要求に関しては何の動作も実行しない。アクセスモジュール２２がステップ８０で読み出し要求を検出したとき、アクセスモジュール２２はステップ８２でその読み出し要求内のアドレスからハッシュ鍵を決定する。例えば、上で説明したように、アクセスモジュール２２はそのアドレス内の選択されたビットに基づいてハッシュ鍵を決定してもよい。
【００５６】
ハッシュ鍵を用いて、アクセスモジュール２２はステップ８４で対応する行から読み出しを行う。上で説明したように、同時に書き込み動作がスケジューリングされていない限り、この読み出し動作により対応する行内のすべての記憶場所２４にアクセスする。アクセスモジュール２２はステップ８６で、その行のエントリに受信したアドレスと一致するものがあるかどうか判断する。同時書き込み動作があるかどうかに係らず、アクセスモジュール２２は、そのアドレスに一致するものがある（成功）かないか（失敗）か決定することができる。しかし、同時書き込み動作があるときは、アクセスモジュール２２はニセの失敗を検出することは上で説明した。
【００５７】
一致したとき、アクセスモジュール２２は、ステップ８８で、一致したルーティング情報を返す。例えば、ルックアップ読み出し動作に対して、アクセスモジュール２２は適当なポート１２にルーティング情報を提供することができる。同様に、学習読み出し動作に対して、アクセスモジュール２２はアービトレーションモジュール２０に成功したことを通知する。失敗したときは、アクセスモジュール２２はステップ９０で失敗したことを表示する。例えば、ルックアップ読み出し動作に対して、アクセスモジュール２２は適当なポート１２に失敗を表示する。同様に、学習読み出し動作に対して、アクセスモジュール２２はアービトレーションモジュール２０に対して失敗を表示する。
【００５８】
このように、前出のフローチャートは、アクセスモジュール２２がアービトレーションモジュール２０からの読み出し要求を処理する比較的簡単な方法を示している。しかし、前のフローチャートと同じように、このフローチャートとその説明は動作方法の一例を示すだけである。アクセスモジュール２２その他好適な構成要素は好適な方法であればいかなるものを用いてルーティング情報にアクセスしてもよい。このように、このフローチャートのステップは大部分同時に実行してもよいし、示したのとは異なる順序で実行してもよい。また、この方法に別のステップを加えても実施しても、この方法の一部のステップを除いて実施しても、この方法の一部のステップを別のステップと置き換えて実施しても、方法として好適であればよい。
【００５９】
本発明を実施形態を通して説明した。当業者はこの実施形態を多様に変更・修正して実施することができるであろうが、添付した特許請求の範囲に入る変更・修正は本発明の範囲に属するものである。
【００６０】
なお、本発明の開示に関し以下の付記を記す。
（付記１）
パケットを通信するように動作可能な複数のポートと、
受信パケットを前記ポート間で転送するように動作可能なスイッチ機構と、
論理的に複数行に分割された複数のメモリバンクであって、各行は前記メモリバンクの各々の記憶場所を有し、前記記憶場所の各々はルーティングエントリを保持可能であるところのメモリバンクと、
複数のオーバーフロー記憶場所を有するオーバーフローバッファであって、各オーバーフロー記憶場所はルーティングエントリを保持可能であるところのオーバーフローバッファと、
前記ポートの１つからメモリアクセス要求を受信し、前記メモリアクセス要求により示されたアドレスに基づき前記行の１つを決定し、メモリアクセス動作を実行するために前記示された行と前記オーバーフローバッファにアクセスするように動作可能であるメモリ制御モジュールとを有することを特徴とするスイッチ。
（付記２）
付記１に記載のスイッチであって、
前記メモリアクセス要求はルックアップ動作を要求するものであり、
前記メモリ制御モジュールは、
前記示された行と前記オーバーフローバッファから潜在的なルーティングエントリを受信し、
前記潜在的なルーティングエントリの各々に対して前記アドレスを比較し、
前記アドレスが前記潜在的なルーティングエントリの１つと一致したとき、前記潜在的ルーティングエントリの前記一致する１つにより示されたルーティング情報を返すことによりメモリアクセス動作を実行するようにさらに動作可能であることを特徴とするスイッチ。
（付記３）
付記１に記載のスイッチであって、
前記メモリアクセス要求はルーティング情報を特定する学習動作を要求するものであり、
メモリ制御モジュールは、
前記示された行がその前記記憶場所の各々に有効なルーティングエントリを有するかどうかを判断し、
利用可能な前記オーバーフロー記憶場所の１つを決定し、
前記アドレスと前記ルーティング情報を前記利用可能なオーバーフロー記憶場所の１つに書きこむことによりメモリアクセス動作を実行するようにさらに動作可能であることを特徴とするスイッチ。
（付記４）
付記１に記載のスイッチであって、
前記メモリ制御モジュールは、
ルックアップ要求と学習要求を前記ポートから受け取り、前記ルックアップ要求と前記学習要求に基づき一連のメモリアクセス動作をスケジューリングするように動作可能であるアービトレーションモジュールと、
前記行の１つを示すハッシュ鍵を、前記一連のメモリアクセス動作の各々において、そのメモリアクセス動作により示されたアドレスから決定し、前記オーバーフローバッファと前記ハッシュ鍵により示された前記行にアクセスするように動作可能なメモリアクセスモジュールとを有することを特徴とするスイッチ。
（付記５）
付記４に記載のスイッチであって、前記アービトレーションモジュールは、未実行の学習要求を実行するメモリアクセス動作をスケジューリングする前に、未実行のルックアップ要求を実行するメモリアクセス動作をスケジューリングすることを特徴とするスイッチ。
（付記６）
付記４に記載のスイッチであって、学習要求を実行するため、前記アービトレーションモジュールは、
前記学習要求のソースアドレスを示す読み出し要求を含む第１のメモリアクセス動作をスケジューリングし、
前記読み出し動作が前記メモリバンクと前記オーバーフローバッファ中に失敗を検出したかどうか判断し、
失敗が検出されたとき、ソースアドレスと前記学習要求のポートマッピングを示す書き込み動作を含む第２のメモリアクセス動作をスケジューリングするように動作可能であることを特徴とするスイッチ。
（付記７）
付記６に記載のスイッチであって、前記アービトレーションモジュールは、前記第１のメモリアクセス動作が書き込み動作を含まないことを保証するようにさらに動作可能であることを特徴とするスイッチ。
（付記８）
付記１に記載のスイッチであって、前記オーバーフローバッファは複数のメモリ要素を有することを特徴とするスイッチ。
（付記９）
付記８に記載のスイッチであって、
前記メモリ要素は複数の前記行に対応し、
前記メモリ制御モジュールは、前記示された行とそれに対応する前記１以上のメモリ要素にアクセスすることにより、前記メモリアクセス動作を実行するために、前記示された行と前記オーバーフローバッファにアクセスするようにさらに動作可能であることを特徴とするスイッチ。
（付記１０）
ルーティングテーブル動作を実行する方法であって、
複数のポートのいずれかから受信したルックアップ要求および学習要求をモニターするステップと、
行き先アドレスを有するルックアップ要求を検出するステップと、
前記行き先アドレスに基づきハッシュ鍵を決定するステップと、
論理的に複数の行に分かれた複数のメモリバンクを有するメモリモジュールに前記ハッシュ鍵を用いてアクセスするステップであって、前記行の各々は前記メモリバンクの各々の記憶場所を有し、前記記憶場所の各々にはルーティングエントリを保持可能であり、前記ハッシュ鍵は前記行の１つを示すところのステップと、
と、
複数のオーバーフロー記憶場所を有するオーバーフローバッファにアクセスするステップであって、前記オーバーフロー記憶場所の各々にはルーティングエントリを保持可能であるところのステップと、
前記示された行または前記オーバーフローバッファのエントリの１つが前記行き先アドレスと一致するアドレス情報を含んでいるかどうかを判断するステップと、
前記示された行または前記オーバーフローバッファが一致するエントリを含むとき、前記一致するエントリのルーティング情報であって１以上の前記ポートを識別するルーティング情報を返すステップとを有することを特徴とする方法。
（付記１１）
付記１０に記載の方法であって、
ソースアドレスとルーティング情報を示す学習要求を検出するステップと、
前記行のうち別の１つを示す第２のハッシュ鍵を前記ソースアドレスに基づいて決定するステップと、
前記第２のハッシュ鍵を用いて前記メモリモジュールにアクセスするステップとを有することを特徴とする方法。
（付記１２）
付記１１に記載の方法であって、
前記第２のハッシュ鍵を用いて前記メモリモジュールにアクセスしている間は、前記メモリバンクはどれも書き込み動作を実行しないことを保証するステップをさらに有することを特徴とする方法。
（付記１３）
付記１１に記載の方法であって、
前記第２の示された行のエントリの１つに前記ソースアドレスと一致するアドレス情報が含まれているかどうかを判断するステップと、
前記エントリはいずれも一致しなかったときに、前記第２の示された行には利用可能な記憶場所がまだあるかどうかを判断するステップと、
前記第２の示された行には利用可能な記憶場所がまだあるとき、前記ソースアドレスと前記ルーティング情報を前記利用可能な記憶場所に書き込むステップとをさらに有することを特徴とする方法。
（付記１４）
付記１１に記載の方法であって、
前記第２の示された行のエントリには前記ソースアドレスと一致するアドレス情報が含まれているかどうかを判断するステップと、
前記エントリが一致しないとき、前記第２の示された行には利用可能な記憶場所があるかどうかを判断するステップと、
前記第２の示された行に利用可能な記憶場所がないとき、利用可能なオーバーフロー記憶場所を決定し、前記ソースアドレスと前記ルーティング情報を前記利用可能なオーバーフロー記憶場所に書き込むステップとをさらに有することを特徴とする方法。
（付記１５）
付記１０に記載の方法であって、
未処理の学習要求を処理する前に未処理のルックアップ要求を処理することを特徴とする方法。
（付記１６）
付記１０に記載の方法であって、
前記行き先アドレスがマルチキャストアドレスであることを判断し、その判断に応じて、前記ハッシュ鍵を用いて前記メモリモジュールにアクセスしている間は、前記メモリバンクがどれも書き込み動作を実行しないことを保証することを特徴とする方法。
（付記１７）
付記１０に記載の方法であって、
前記ハッシュ鍵を用いて前記メモリモジュールにアクセスしている間に、前記メモリバンクの選択された１つ内の記憶場所の１つを示す書き込み動作を実行するステップをさらに有し、
前記ハッシュ鍵を用いて前記メモリモジュールにアクセスするステップにおいて、前記書き込み動作に示されたメモリバンク以外のメモリバンクすべての、前記示された行のエントリを読み出すことを特徴とする方法。
（付記１８）
スイッチであって、
複数のポートのいずれかから受信したルックアップ要求および学習要求をモニターする手段と、
行き先アドレスを有するルックアップ要求を検出する手段と、
前記行き先アドレスに基づきハッシュ鍵を決定する手段と、
論理的に複数の行に分かれた複数のメモリバンクを有するメモリモジュールに前記ハッシュ鍵を用いてアクセスする手段であって、前記行の各々は前記メモリバンクの各々の記憶場所を有し、前記記憶場所の各々にはルーティングエントリを保持可能であり、前記ハッシュ鍵は前記行の１つを示すところの手段と、
と、
複数のオーバーフロー記憶場所を有するオーバーフローバッファにアクセスする手段であって、前記オーバーフロー記憶場所の各々にはルーティングエントリを保持可能であるところの手段と、
前記示された行または前記オーバーフローバッファのエントリの１つが前記行き先アドレスと一致するアドレス情報を含んでいるかどうかを判断する手段と、
前記示された行または前記オーバーフローバッファが一致するエントリを含むとき、前記一致するエントリのルーティング情報であって１以上の前記ポートを識別するルーティング情報を返す手段とを有することを特徴とするスイッチ。
（付記１９）
付記１８に記載のスイッチであって、
ソースアドレスとルーティング情報を示す学習要求を検出する手段と、
前記行の別の１つを示す第２のハッシュ鍵を前記ソースアドレスに基づいて決定する手段と、
前記第２のハッシュ鍵を用いて前記メモリモジュールにアクセスする手段とを有することを特徴とするスイッチ。
（付記２０）
付記１９に記載の方法であって、
前記第２のハッシュ鍵を用いて前記メモリモジュールにアクセスしている間は、前記メモリバンクはどれも書き込み動作を実行しないことを保証する手段をさらに有することを特徴とするスイッチ。
（付記２１）
付記１９に記載のスイッチであって、
前記第２の示された行のエントリの１つに前記ソースアドレスと一致するアドレス情報が含まれているかどうかを判断する手段と、
前記エントリはいずれも一致しなかったときに、前記第２の示された行には利用可能な記憶場所がまだあるかどうかを判断する手段と、
前記第２の示された行には利用可能な記憶場所がまだあるとき、前記ソースアドレスと前記ルーティング情報を前記利用可能な記憶場所に書き込む手段とをさらに有することを特徴とするスイッチ。
（付記２２）
付記１９に記載のスイッチであって、
前記第２の示された行のエントリには前記ソースアドレスと一致するアドレス情報が含まれているかどうかを判断する手段と、
前記エントリが一致しないとき、前記第２の示された行には利用可能な記憶場所があるかどうかを判断する手段と、
前記第２の示された行に利用可能な記憶場所がないとき、利用可能なオーバーフロー記憶場所を決定し、前記ソースアドレスと前記ルーティング情報を前記利用可能なオーバーフロー記憶場所に書き込む手段とをさらに有することを特徴とするスイッチ。
【図面の簡単な説明】
【００６１】
【図１】本発明の一実施形態によるルーティングテーブルモジュールを有するマルチポートスイッチを示す図である。
【図２】このスイッチのルーティングテーブルモジュールの構成要素を示すブロック図である。
【図３】潜在的ルーティングエントリを選択する選択ロジックを示すブロック図である。
【図４】オーバーフローバッファを有するマルチバンクルーティングテーブルを用いた、ルーティングテーブル動作を取り扱う方法を示すフローチャートである。
【図５】オーバーフローバッファを有するマルチバンクメモリ構造にアクセスする方法を示すフローチャートである。
【符号の説明】
【００６２】
２０  アービトレーションモジュール
２２  アクセスモジュール
３０  選択ロジック
３２  ルックアップ要求
３４  行出力
３６  オーバーフロー１出力
３８  オーバーフロー２出力
【図１】
2005236997.tif 000003
【図２】
2005236997.tif 000004
【図３】
2005236997.tif 000005
【図４】
2005236997.tif 000006
【図５】
2005236997.tif 000007