JP4557745B2 - 高速なルーティングテーブル学習およびルックアップ - Google Patents

高速なルーティングテーブル学習およびルックアップ Download PDF

Info

Publication number
JP4557745B2
JP4557745B2 JP2005040467A JP2005040467A JP4557745B2 JP 4557745 B2 JP4557745 B2 JP 4557745B2 JP 2005040467 A JP2005040467 A JP 2005040467A JP 2005040467 A JP2005040467 A JP 2005040467A JP 4557745 B2 JP4557745 B2 JP 4557745B2
Authority
JP
Japan
Prior art keywords
address
routing
row
module
storage element
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
Application number
JP2005040467A
Other languages
English (en)
Other versions
JP2005236997A (ja
Inventor
剛 清水
スリダール パティ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US10/783,065 external-priority patent/US7477639B2/en
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2005236997A publication Critical patent/JP2005236997A/ja
Application granted granted Critical
Publication of JP4557745B2 publication Critical patent/JP4557745B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

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

Claims (7)

  1. パケットを送信または受信可能な複数のポートと、
    受信パケットを前記複数のポート間で転送するように動作可能なスイッチ機構と、
    論理的に複数の行に分割され、アドレスと、前記アドレスに対応づけられたポートを示す情報とを含むルーティングエントリを保持する行を、前記複数の行のうち、前記アドレスを変数とする所定の変換により示される行する制限が可能な記憶素子であって、前記所定の変換により示される行が同一である複数のアドレスのうち、一部のアドレスについてのルーティングエントリを前記所定の変換により示される行に保持する第一の記憶素子群と、
    前記所定の変換により示される行が同一である前記複数のアドレスのうち、前記一部のアドレスでないアドレスについてのルーティングエントリを、前記制限を与えずに保持可能な第二の記憶素子と、
    前記複数のポートの1つが受信した受信パケットに含まれるアドレスを変数とする前記所定の変換により示される前記第一の記憶素子の行に保持されたルーティングエントリと、前記第二の記憶素子に保持されたルーティングエントリとを読み出すように動作可能なメモリ制御モジュールと
    を有することを特徴とするスイッチ。
  2. 請求項1に記載のスイッチであって、
    前記メモリ制御モジュールは、
    前記受信パケットに含まれるアドレスを変数とする前記所定の変換により示される前記第一の記憶素子の行と前記第二の記憶素子からルーティングエントリを読み出し、
    読み出した前記ルーティングエントリの各々と、前記受信パケットに含まれる行き先アドレスとを比較し、
    前記行き先アドレスが、読み出した前記ルーティングエントリの1つと一致したとき、前記ルーティングエントリの前記一致する1つに含まれるルーティングポートを示す情報を返すようにさらに動作可能であること
    を特徴とするスイッチ。
  3. 請求項1に記載のスイッチであって、
    メモリ制御モジュールは、
    第一の記憶素子群のいずれの記憶素子においても、前記受信パケットに含まれるソースアドレスを変数とする前記所定の変換により示される行に、前記受信パケットのソースアドレスと一致しないアドレス情報を含むルーティングエントリが保持されていた場合、受信パケットを受信したポートを示す情報と、前記ソースアドレスを含むルーティングエントリを第二の記憶素子に書き込むように、さらに動作可能であること
    を特徴とするスイッチ。
  4. 請求項1ないし3いずれか一項に記載のスイッチであって、
    前記複数のポートのそれぞれは、前記受信パケットの行き先アドレスを含むルックアップ要求と、前記受信パケットのソースアドレスとポートを示す情報とを含む学習要求を、前記受信パケットに応じてメモリ制御モジュールに出力し、
    前記メモリ制御モジュールは、
    前記ルックアップ要求と前記学習要求を前記ポートから受け取り、前記ルックアップ要求と前記学習要求に基づき一連のメモリアクセス動作をスケジューリングするように動作可能であるアービトレーションモジュールと、
    前記第一の記憶素子の前記行の1つを示すハッシュ鍵を、前記ルックアップ要求または前記学習要求に含まれるアドレスから決定し、前記第二の記憶素子と、前記ハッシュ鍵により示された前記第一の記憶素子の前記行とにアクセスするように動作可能なメモリアクセスモジュールとを有すること
    を特徴とするスイッチ。
  5. 請求項1ないし4いずれか一項に記載のスイッチであって、前記第二の記憶素子を複数有することを特徴とするスイッチ。
  6. 請求項5記載のスイッチであって、
    前記第一の記憶素子の前記行が、複数の前記第二の記憶素子の少なくとも1つと対応づけられており、
    前記メモリ制御モジュールは、前記受信パケットに含まれる前記アドレスに基づいて示された前記第一の記憶素子群の前記行と、それに対応する前記第二の記憶素子とにアクセスするように動作可能であることを特徴とするスイッチ。
  7. 受信パケットを送信するポートを示す情報を読み出す方法であって、
    複数のポートのいずれかから受信する受信パケットの行き先アドレスを含むルックアップ要求と、前記受信パケットのソースアドレスとポートを示す情報とを含む学習要求をモニターするステップと、
    前記ルックアップ要求を検出するステップと、
    前記ルックアップ要求に含まれる前記行き先アドレスに基づきハッシュ鍵を決定するステップと、
    論理的に複数の行に分かれた第一の記憶素子群の前記行に、前記ハッシュ鍵を用いてアクセスするステップであって、前記行の各々にはルーティングエントリを保持可能であり、前記ハッシュ鍵は前記行の1つを示すところのステップと、
    前記第一の記憶素子群に保持されたルーティングエントリのいずれとも異なるアドレスを含むルーティングエントリを保持可能な第二の記憶素子にアクセスするステップと、
    前記第一の記憶素子の前記示された行または前記第二の記憶素子のルーティングエントリの1つが、前記行き先アドレスと一致するアドレス情報を含んでいる場合、前記一致するアドレス情報を含んだルーティングエントリのルーティングポートを示す情報を返すステップと
    を有することを特徴とする方法。
JP2005040467A 2004-02-20 2005-02-17 高速なルーティングテーブル学習およびルックアップ Expired - Fee Related JP4557745B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/783,065 US7477639B2 (en) 2003-02-07 2004-02-20 High speed routing table learning and lookup

Publications (2)

Publication Number Publication Date
JP2005236997A JP2005236997A (ja) 2005-09-02
JP4557745B2 true JP4557745B2 (ja) 2010-10-06

Family

ID=35007850

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005040467A Expired - Fee Related JP4557745B2 (ja) 2004-02-20 2005-02-17 高速なルーティングテーブル学習およびルックアップ

Country Status (2)

Country Link
JP (1) JP4557745B2 (ja)
CN (1) CN100555985C (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1794673B (zh) * 2005-12-27 2011-11-30 王卫亚 一种利用ip协议组建局域网的方法
US7873041B2 (en) 2006-12-01 2011-01-18 Electronics And Telecommunications Research Institute Method and apparatus for searching forwarding table
EP2377273B1 (en) * 2009-01-12 2015-08-26 Hewlett-Packard Development Company, L.P. Reducing propagation of message floods in computer networks
JP4800415B2 (ja) * 2009-08-17 2011-10-26 富士通株式会社 中継装置、macアドレス検索方法
US20130142195A1 (en) * 2010-09-14 2013-06-06 Gregg B. Lesartre Computer system fabric switch
US8856420B2 (en) * 2011-12-27 2014-10-07 Intel Corporation Multi-protocol I/O interconnect flow control
JP6991446B2 (ja) * 2018-05-18 2022-01-12 日本電信電話株式会社 パケット処理装置及びそのメモリアクセス制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06261078A (ja) * 1993-03-03 1994-09-16 Hitachi Ltd テーブル検索方法及びルータ装置
JP2002334114A (ja) * 2001-05-10 2002-11-22 Allied Tereshisu Kk テーブル管理方法及び装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06261078A (ja) * 1993-03-03 1994-09-16 Hitachi Ltd テーブル検索方法及びルータ装置
JP2002334114A (ja) * 2001-05-10 2002-11-22 Allied Tereshisu Kk テーブル管理方法及び装置

Also Published As

Publication number Publication date
JP2005236997A (ja) 2005-09-02
CN1658597A (zh) 2005-08-24
CN100555985C (zh) 2009-10-28

Similar Documents

Publication Publication Date Title
US7408930B2 (en) Address learning to enable high speed routing table lookups
US7477639B2 (en) High speed routing table learning and lookup
JP4557745B2 (ja) 高速なルーティングテーブル学習およびルックアップ
US7606236B2 (en) Forwarding information base lookup method
US8345685B2 (en) Method and device for processing data packets
US7555579B2 (en) Implementing FIFOs in shared memory using linked lists and interleaved linked lists
US7324509B2 (en) Efficient optimization algorithm in memory utilization for network applications
US20030016689A1 (en) Switch fabric with dual port memory emulation scheme
US20040205229A1 (en) Method and apparatus for longest prefix matching in processing a forwarding information database
US10944675B1 (en) TCAM with multi region lookups and a single logical lookup
US7627672B2 (en) Network packet storage method and network packet transmitting apparatus using the same
JP5205956B2 (ja) メモリ制御装置
US8392672B1 (en) Identifying unallocated memory segments
CA2784707A1 (en) Distributed routing architecture
US10884829B1 (en) Shared buffer memory architecture
US11757801B1 (en) Spatial dispersion buffer
US11899985B1 (en) Virtual modules in TCAM
US6336156B1 (en) Increased speed initialization using dynamic slot allocation
US7400623B2 (en) Method and apparatus for managing medium access control (MAC) address
US9256548B2 (en) Rule-based virtual address translation for accessing data
US8085766B2 (en) S-flow in a network device
US12019542B2 (en) High performance cache eviction
US6885591B2 (en) Packet buffer circuit and method
KR100429543B1 (ko) 네트워크 프로세서에서 다양한 개수의 포트들을 처리하기위한 방법
GB2321820A (en) A method for dynamically allocating buffers to virtual channels in an asynchronous network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100316

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100427

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100623

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: 20100713

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100720

R150 Certificate of patent or registration of utility model

Ref document number: 4557745

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130730

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees