JP4790991B2 - Address learning that enables high-speed routing table lookup - Google Patents
Address learning that enables high-speed routing table lookup Download PDFInfo
- Publication number
- JP4790991B2 JP4790991B2 JP2004029864A JP2004029864A JP4790991B2 JP 4790991 B2 JP4790991 B2 JP 4790991B2 JP 2004029864 A JP2004029864 A JP 2004029864A JP 2004029864 A JP2004029864 A JP 2004029864A JP 4790991 B2 JP4790991 B2 JP 4790991B2
- Authority
- JP
- Japan
- Prior art keywords
- module
- address
- processing
- memory
- learning
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
- H04L49/255—Control mechanisms for ATM switching fabrics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3081—ATM peripheral units, e.g. policing, insertion or extraction
- H04L49/309—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5678—Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
- H04L2012/5679—Arbitration or scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本発明は、通信システムに関し、より詳細には、高速ルーティングテーブル検索を可能にするアドレス学習に関する。 The present invention relates to communication systems, and more particularly to address learning that enables high-speed routing table lookup.
技術の進歩は、データ通信のさらなる高速化を必然的に求める。このような要求に応えるよう高速処理が可能なネットワーク機器の開発が進められている。例えば、転送線の高速化のためには、ワイヤースピードでの処理が可能となるよう高速でのルーティング決定が可能なスイッチが必要とされる。 Advances in technology inevitably require faster data communications. Network devices capable of high-speed processing are being developed to meet such demands. For example, in order to increase the speed of a transfer line, a switch capable of determining routing at high speed is required so that processing at wire speed is possible.
本発明は、上記の点に鑑みなされたものであり、高速ルーティングテーブル検索の実行が可能なルーティングテーブルモジュールを有するスイッチ及びルーティングテーブル処理実行方法を提供することを目的とする。 The present invention has been made in view of the above points, and an object thereof is to provide a switch having a routing table module capable of executing a high-speed routing table search and a routing table processing execution method.
本発明によるスイッチは、パケットの通信が可能な複数のポートと、受信したパケットの前記複数のポート間での転送を可能とするスイッチファブリックと、複数の行に論理的に分割される複数のメモリバンクであって、前記複数の行のそれぞれが前記複数のメモリバンクの各々からのルーティングエントリの保持が可能な格納領域を有するメモリバンクと、検索リクエストと学習リクエストを前記複数のポートから受信し、前記検索リクエストと前記学習リクエストに基づき少なくとも1つのアドレスを有する複数のメモリアクセス処理のスケジューリングを実行する調停モジュールと、前記複数のメモリアクセス処理を受信し、前記アドレスから前記複数の行の1つを示すハッシュキーを決定し、前記示された行にアクセスして前記複数のメモリアクセス処理の少なくとも1つを実行するメモリアクセスモジュールとからなることを特徴とする。 The switch according to the present invention includes a plurality of ports capable of packet communication, a switch fabric capable of transferring a received packet between the plurality of ports, and a plurality of memories logically divided into a plurality of rows. A bank, each of the plurality of rows having a storage area capable of holding a routing entry from each of the plurality of memory banks, and receiving a search request and a learning request from the plurality of ports, An arbitration module that performs scheduling of a plurality of memory access processes having at least one address based on the search request and the learning request; and receives the plurality of memory access processes, and selects one of the plurality of rows from the address. Determine the hash key to be shown and access the indicated row to Characterized by comprising the memory access module for performing at least one of the memory access process.
さらに本発明によるスイッチにおいて、前記調停モジュールは、未処理の学習リクエストを処理するためのメモリアクセス処理のスケジューリングを実行する前に、未処理の検索リクエストを処理するためのメモリアクセス処理のスケジューリングを実行することを特徴とする。 Further, in the switch according to the present invention, the arbitration module performs memory access processing scheduling for processing an unprocessed search request before executing memory access processing scheduling for processing an unprocessed learning request. It is characterized by doing.
さらに本発明によるスイッチにおいて、前記調停モジュールは、送信先アドレスを特定する検索リクエストを処理するための前記メモリアクセス処理のスケジューリングを実行し、前記メモリアクセス処理は前記検索リクエストからの前記送信先アドレスを示すリード処理を含むことを特徴とする。 Further, in the switch according to the present invention, the arbitration module executes scheduling of the memory access process for processing a search request that specifies a destination address, and the memory access process uses the destination address from the search request. The read processing shown in FIG.
さらに本発明によるスイッチにおいて、ルーティングエントリは、アドレス情報と、前記複数のポートの1つ以上を示すルーティング情報とを有することを特徴とする。 In the switch according to the present invention, the routing entry includes address information and routing information indicating one or more of the plurality of ports.
さらに本発明によるスイッチにおいて、前記調停モジュールは、送信元アドレスを特定する学習リクエストを処理するための前記メモリアクセス処理のスケジューリングを実行し、前記メモリアクセス処理は前記検索リクエストからの前記送信元アドレスを示すリード処理を含むことを特徴とする。 Further, in the switch according to the present invention, the arbitration module executes scheduling of the memory access process for processing a learning request for specifying a source address, and the memory access process uses the source address from the search request. The read processing shown in FIG.
さらに本発明によるスイッチにおいて、前記メモリアクセス処理は、ライト処理とリード処理の少なくとも1つを含むことを特徴とする。 Furthermore, in the switch according to the present invention, the memory access process includes at least one of a write process and a read process.
さらに本発明によるスイッチにおいて、前記調停モジュールは、学習リクエストを処理するために、前記学習リクエストからの送信元アドレスを示すリード処理を含む第1メモリアクセス処理のスケジューリングを実行し、前記リード処理が前記複数のメモリバンクにおいてミスを検出したか判断し、前記ミスが検出された場合、前記学習リクエストから前記送信元アドレスとポートマッピングを示すライト処理を含む第2メモリアクセス処理のスケジューリングを実行することを特徴とする。 Further, in the switch according to the present invention, the arbitration module performs scheduling of a first memory access process including a read process indicating a transmission source address from the learning request, in order to process the learning request, It is determined whether a miss is detected in a plurality of memory banks, and when the miss is detected, scheduling of a second memory access process including a write process indicating the source address and port mapping is executed from the learning request. Features.
また本発明によるルーティングテーブル処理を実行する方法は、複数のポートの何れかからの検索リクエストと学習リクエストの受信を監視するステップと、送信先アドレスを有する検索リクエストを検出するステップと、前記送信先アドレスに基づきハッシュキーを決定するステップと、前記ハッシュキーを利用して複数の行に論理的に分割される複数のメモリバンクを有するメモリモジュールにアクセスするステップであって、ここで前記複数の行のそれぞれは前記複数のメモリバンクのそれぞれからのルーティングエントリを保持することができる格納領域を含み、前記ハッシュキーは前記複数の行の1つを示しているステップと、前記示された行からの前記ルーティングエントリの1つが前記送信先アドレスにマッチするアドレス情報を含むか判断するステップと、前記示された行がマッチしたルーティングエントリを含む場合、前記マッチしたルーティングエントリから前記複数のポートの1つ以上を特定するルーティング情報を返すステップとからなることを特徴とする。 The routing table processing according to the present invention includes a step of monitoring reception of a search request and a learning request from any of a plurality of ports, a step of detecting a search request having a destination address, and the destination Determining a hash key based on an address; and accessing a memory module having a plurality of memory banks logically divided into a plurality of rows using the hash key, wherein the plurality of rows Each of which includes a storage area capable of holding a routing entry from each of the plurality of memory banks, wherein the hash key indicates one of the plurality of rows; and Address information where one of the routing entries matches the destination address. And a step of returning routing information for identifying one or more of the plurality of ports from the matched routing entry when the indicated line includes a matched routing entry. And
また本発明によるスイッチは、複数のポートの何れかからの検索リクエストと学習リクエストの受信を監視する手段と、送信先アドレスを有する検索リクエストを検出する手段と、前記送信先アドレスに基づきハッシュキーを決定する手段と、前記ハッシュキーを利用して複数の行に論理的に分割される複数のメモリバンクを有するメモリモジュールにアクセスする手段であって、ここで前記複数の行のそれぞれは前記複数のメモリバンクのそれぞれからのルーティングエントリを保持することができる格納領域を含み、前記ハッシュキーは前記複数の行の1つを示している手段と、前記示された行からの前記ルーティングエントリの1つが前記送信先アドレスにマッチするアドレス情報を含むか判断する手段と、前記示された行がマッチしたルーティングエントリを含む場合、前記マッチしたルーティングエントリから前記複数のポートの1つ以上を特定するルーティング情報を返す手段とからなることを特徴とする。 The switch according to the present invention also includes means for monitoring reception of a search request and a learning request from any of a plurality of ports, means for detecting a search request having a transmission destination address, and a hash key based on the transmission destination address. Means for determining and means for accessing a memory module having a plurality of memory banks logically divided into a plurality of rows using the hash key, wherein each of the plurality of rows is the plurality of the plurality of rows. A storage area capable of holding a routing entry from each of the memory banks, wherein the hash key indicates means indicating one of the plurality of rows, and one of the routing entries from the indicated row includes The means for determining whether the address information matching the destination address is included, and the indicated line matches When including routing entries, characterized in that it consists of a means for returning the routing information specifying one or more of the plurality of ports from the routing entries the match.
さらに本発明によるスイッチは、さらに、前記送信先アドレスがマルチキャストアドレスであるか判断し、前記ハッシュキーを利用した前記メモリモジュールへのアクセス中、前記複数のメモリバンクの何れもがライト処理を実行しないことを保証する手段を有することを特徴とする。 Furthermore, the switch according to the present invention further determines whether the destination address is a multicast address, and any of the plurality of memory banks does not perform a write process while accessing the memory module using the hash key. It has the means to ensure that.
本発明によると、複数のメモリバンクを利用したルーティングテーブルモジュールを実現することにより、比較的小型かつ安価ではあるが、高速処理が可能なルーティングテーブルモジュールを有するスイッチが提供される。本発明によるルーティングテーブルモジュールは、ルーティング情報の完備性を犠牲にすることにより高速かつコスト優位な実現を可能にする。例えば、いくつかの実施例では、ポート=アドレスマッピング情報の保持のためのスペースが限定されているものもある。この制限されたスペースでは、潜在的にすべてのポート=アドレスマッピングの格納はサポートされていない。ここでは、「賢い」ルーティングの代わりに、パケットの放出がスイッチにより行われる。しかしながら、このような事象を限定的なものとしようとする試みがいくつかの実施例では行われる。さらに、このような実施例では、依然としてANSI/IEEE802規格のような規格に準拠するよう構成することができる。 According to the present invention, by realizing a routing table module using a plurality of memory banks, a switch having a routing table module that is relatively small and inexpensive but capable of high-speed processing is provided. The routing table module according to the present invention enables a fast and cost-effective implementation by sacrificing completeness of routing information. For example, in some embodiments, space for holding port = address mapping information is limited. In this limited space, storage of potentially all port-address mappings is not supported. Here, instead of “smart” routing, the release of the packet is done by the switch. However, attempts are being made in some embodiments to limit such events. Further, such an embodiment can still be configured to comply with standards such as the ANSI / IEEE 802 standard.
図1は、スイッチングファブリック(switching fabric)14により相互接続される複数のポート12を有するスイッチ10を示す。スイッチ10はまた、ルーティング情報を格納する複数のメモリバンク18を含むルーティングテーブルモジュール16を有する。一般に、ルーティングテーブルモジュール16は、ポート12間でのパケットスイッチ処理を制御するためのルーティング情報を保持する。具体的には、ルーティングテーブルモジュール16は、高速ルーティングテーブル処理を提供するマルチバンクメモリ構造を提供する。
FIG. 1 shows a
各ポート12は、任意の適切な制御論理を含むパケット送受信のためのハードウェアを表すものである。例えば、各ポート12は、パケット送受信のための入力モジュールと出力モジュールを有する。本明細書中で使われる「パケット」という単語は、アドレッシング情報を含む任意の情報セグメントを表すものである。例えば、イーサネット(登録商標)フレーム、インターネットプロトコル(IP)パケット、非同期転送モード(ATM)セル及び/または他の適切な情報セグメントなどがパケットとして含まれる。スイッチ10において、スイッチングファブリック14は、スイッチ10内のあるポート12から、スイッチ10内の他のポート12あるいはすべてのポート12へのパケットの送信に利用される。スイッチングファブリック14は、スイッチ10内の1つのブロックとして示されているが、ポート12間の通信をサポートするのに十分な速度でのパケットスイッチング処理を提供できるよう設計された任意の適切な構成要素の組み合わせ及び構成を含む。
Each
スイッチ10において、ルーティングテーブルモジュール16は、ポート12間でのパケットスイッチング処理を制御するためのルーティング情報を保持する。スイッチングファブリック14の制御のために、ルーティング情報には、アドレスとポートとの間のマッピングを表すエントリが含まれている。このルーティング情報に基づいて、スイッチ10はポート12間でのパケットの送信先を決定する。例えば、ルーティング情報への1つのエントリは、アドレスXYZのポートAへのマッピングを表すものであるかもしれない。他のポート12がアドレスXYZ宛のパケットを受信すると、スイッチングファブリック14は当該パケットをポートAに振り向ける。従って、ルーティングモジュール16に適切なルーティング情報が与えられると、スイッチングファブリック14は、ポート12間のパケットスイッチングを「賢く」行うことができる。さらに、本例は1つのアドレスから1つのポートへのマッピングが示されているが、スイッチ10はアドレスを任意の個数のポート12にマッピングするためのエントリを扱うことができる。
In the
ある状況では、ルーティングテーブルモジュール16は、受信パケットのすべてにアドレスをマッピングするとは限らないかもしれない。例えば、1つのポート12が、ルーティングテーブルモジュール16のエントリにマッチしない送信先アドレスを有するパケットを受信したとする。ある実施例では、ルーティングテーブルモジュール16がマッピングを提供しない場合、スイッチ10は当該パケットを他のすべてのポート12に「放出する」。すなわち、スイッチ10は受信ポート12以外のすべてのポート12に当該パケットを送信する。
In certain situations, the
ルーティングテーブル処理の一例として、ある送信先アドレスを有するパケットをあるポート12が受信したとする。ルーティングテーブルモジュール16が当該送信先アドレスのポートマッピングを提供していれば、スイッチングファブリック14はルーティング情報に示されたすべてのポート12に当該パケットを与える。他方、ルーティングテーブルモジュール16が指定された送信先アドレスに対するマッピングを提供していない場合、スイッチングファブリック14はスイッチ10の他のすべてのポート12に当該パケットを放出する。このパケットの放出はネットワークトラフィックを増大させるが、当該パケットの正しいポート12への通信を保証してくれる。
As an example of routing table processing, assume that a
ルーティングテーブルモジュール16において、ルーティング情報は静的及び動的エントリを含んでいてもよい。ファームウェアにより設定されたエントリ、システム管理者により設定されたエントリ及び/またはルーティングテーブルモジュール16に静的に作成されたエントリなどが、静的ルーティングエントリに含まれる。例えば、既知のネットワークトポロジーに基づき、システム管理者が静的ルーティングエントリを設定するかもしれない。静的エントリの他の例としては、ブロードキャスト、マルチキャストあるいは他の特別なアドレスなどの特別なネットワークアドレスのルーティング情報などがあげられる。
In the
他方、動的ルーティングエントリは、スイッチ10による処理中に自動的に生成、保持及び消去される。ある実施例では、スイッチ10は学習スキームを利用して、ルーティングテーブルモジュール16に動的ルーティングエントリを与える。この学習スキームによると、スイッチ10は受信パケットの送信元アドレスを利用して、ルーティングテーブルモジュール16にエントリを与える。例えば、スイッチ10が送信元アドレスXYZを有するパケットをポートAで受信したとする。ルーティングテーブルモジュール16がその時点においてこのマッピングを反映していない場合、ルーティングテーブルモジュール16はアドレスXYZをポートAにマッピングするルーティングエントリを追加することができる。以降の受信パケットがXYZの送信先アドレスを有するとき、スイッチ10はルーティングテーブルモジュール16内のマッピングに基づき、当該パケットをポートAから通信することができる。
On the other hand, dynamic routing entries are automatically created, maintained and deleted during processing by the
ルーティングテーブルモジュール16はまた、ルーティングエントリをルーティング情報から消去できるよう構成されてもよい。例えば、ルーティングテーブルモジュール16は、定期的に期限の切れたエントリを消去するようにしてもよい。ルーティングテーブルモジュール16は、タイムスタンプ及び/またはルーティング情報内に保持された他の適切な機構を利用して、期限切れエントリの時間経過処理を実行することができる。
The
ある実施例では、ルーティングテーブルモジュール16の各エントリは、アドレス、ルーティング情報及び管理情報を有する。ここで、アドレスには、受信パケットのアドレスに適合させるためのMAC(Media Access Control)アドレスのような情報が保持されている。ルーティング情報は、当該エントリのアドレスにマッチした送信先アドレスを有するパケットの受信を行うポートを示す。ある実施例では、ルーティング情報は、各ビットが対応するポートがこのアドレスにマッピングされるかどうかを示すビットベクトルとして実現される。例えば、12個のポートからなる構成では、12ビットベクトルによりどのポート12が指定されたアドレスにマッピングされるかが示される。
In one embodiment, each entry in the
管理情報は、エントリを保持するための適当なデータを含む。ある実施例では、管理情報は、タイムスタンプ、静的標識、有効標識及びチェックコードを含んでいる。タイムスタンプは、当該エントリの経過時間を反映したものであり、時間経過処理を実行するスイッチ10により利用される。静的標識は、当該エントリが静的であるかどうか示すためのものである。ある実施例では、静的標識が設定されている場合、スイッチ10はこのエントリを動的に消去しない。有効標識は、当該エントリに示されたマッピングが正しいものであるかどうか示すものである。例えば、あるエントリを消去するため、ルーティングテーブルモジュール16はこの有効標識を無効にしさえすればよい。チェックコードフィールドは、信頼性を与えるため管理情報内に含まれている。
The management information includes appropriate data for holding the entry. In one embodiment, the management information includes a time stamp, a static indicator, a valid indicator, and a check code. The time stamp reflects the elapsed time of the entry, and is used by the
動作中、ルーティングテーブルモジュール16は、「学習」、「消去」及び「検索」の3つの基本処理を提供する。上述のように、スイッチ10は、動的及び静的学習を処理する。動的学習は、受信パケットの送信元アドレスに基づき、ルーティングテーブルモジュール16にエントリを追加する。静的学習には、製造時、設定時あるいは他の適当な時点におけるルーティング情報の特定の設定が含まれる。学習処理では、ルーティングテーブルモジュール16はまず、学習対象のアドレスに対する適切なマッピングを有しているか判断する。そしてそのようなマッピングがない場合、ルーティング情報にエントリを生成する。すなわち、学習処理は、リードサイクルとライトサイクルの2つのサイクルが必要とされる。
In operation, the
学習処理と同様に、消去処理もまた動的及び静的エントリ消去を処理する。動的消去は、ルーティングテーブルモジュール16の中の静的エントリを変更するための設定あるいは他の適切な指示に基づき行われる。学習処理と同様に、消去処理はリードステップとライトステップが必要とされるかもしれない。例えば、ルーティングテーブルモジュール16はまずエントリの期限切れを判断し、期限が切れている場合、当該エントリを消去する。すなわち、消去処理は2つのサイクルが完結される必要がある。
Similar to the learning process, the deletion process also handles dynamic and static entry deletion. The dynamic erasure is performed based on a setting for changing a static entry in the
前述のように、検索処理は受信パケットの送信先アドレスのマッピングの検索である。ある実施例では、スイッチ10はマルチキャスト及びユニキャストアドレスの検索を処理する。マルチキャストアドレスに対しては、ルーティングテーブルモジュール16は、典型的には、静的ルーティングエントリにより構成される。これにより、マルチキャストパケットの賢いルーティングが可能となる。ユニキャストパケットに対しては、ルーティングテーブルモジュール16は、典型的には、動的学習に基づきルーティング決定を処理する。このため、スイッチ10は、適当なアドレスマッピングが学習されるまで、ユニキャストパケットをばら撒くことになる。ある実施例では、スイッチ10は、アドレスの情報に基づき、マルチキャストアドレスとユニキャストアドレスとを区別することができる。例えば、802.1規格では、特定ビットの値に基づき、マルチキャストアドレスとユニキャストアドレスが区別される。ルーティングテーブルモジュール16は、1つのリード処理を利用して検索処理を実行することができる。従って、検索処理は1つのサイクルの完了でよい。
As described above, the search process is a search for the mapping of the destination address of the received packet. In one embodiment, switch 10 handles multicast and unicast address searches. For multicast addresses, the
図2は、複数のメモリバンク18、調停モジュール20及びアクセスモジュール22を含むルーティングテーブルモジュール16の一例となる機能要素を示すブロック図である。例示された実施例では、調停モジュール20は、学習(LRN)リクエスト及び検索(LUP)リクエストを受信するため、スイッチ10の各ポート12に接続される。同様に、アクセスモジュール22は、検索リクエストに応答してルーティング情報(RI)を提供するため、スイッチ10の各ポート12に接続される。動作中、メモリバンク18は、スイッチ10のルーティング情報を保持する。一般に、メモリバンク設定と関連するアクセス方式は、ルーティングテーブルモジュール16による高速ルーティングテーブル処理を可能にする。
FIG. 2 is a block diagram illustrating functional elements as an example of the
各メモリバンク18は、適当な制御論理を含めたルーティングエントリを格納するための任意の適当なハードウェアを表すものである。各メモリバンク18は、リードまたはライト処理を実行するため、独立にアクセスされる。例えば、あるサイクルにおいて、アクセスモジュール22は部分的あるいはすべてのメモリバンク18からリード処理を実行するかもしれない。同様に、あるサイクルにおいて、アクセスモジュール22は、部分的あるいはすべてのメモリバンク18からライト処理を実行するかもしれない。さらに、アクセスモジュール22は、例えば、1つのメモリバンク18にライト処理を行い、その他のメモリバンク18からリード処理を行うように、これらの処理がミックスされてもよい。
Each
例示された実施例では、各メモリバンク18は論理的に複数の領域に分割される。例えば、各メモリバンク18は、各々が1つのルーティングエントリを保持することができる1024の領域に分割される。さらに、ルーティングテーブルモジュール16はさらに、メモリバンク群18を論理的に行に分割する。ここで、各行は複数のメモリバンク18の対応する領域24にわたるものである。例えば、第1行(R0)は各メモリバンク18の第1領域24から構成されるかもしれない。同様に、第n行(Rn)は各メモリバンク18の第n領域24から構成されるかもしれない。このため、例えば、各メモリバンク18が1k領域24に論理的に分割されている場合、メモリバンク群18は1k行に論理的に分割される。
In the illustrated embodiment, each
アクセスモジュール22は、リード及び/またはライト処理を利用して、メモリバンク18にアクセスする。ある実施例では、アクセスモジュール22は行全体にリード処理を実行するかもしれない。このため、例えば、アクセスモジュール22は、ある行の各領域24のコンテンツを同時に読み出すかもしれない。ライト処理に対しては、アクセスモジュール22はあるメモリバンク18をターゲットとするかもしれない。例えば、アクセスモジュール22は、選ばれたメモリバンク18の中のある領域24に書き込みを行うかもしれない。
The
ある実施例では、各メモリバンク18はリード及びライト処理を同時にはサポートしない。このため、アクセスモジュール22があるメモリバンク18への書き込みを選択すれば、アクセスモジュール22は当該メモリバンク18からの読み出しを同時に実行することは許可されない。しかしながら、このことはアクセスモジュール22が他のメモリバンク18から読み出しを行うことを妨げるものではない。従って、1つのサイクルにおいて、アクセスモジュール22は、1つのメモリバンク18へのライト処理を行うと同時に、その他すべてのメモリバンク18からのリード処理を実行することができる。本例では、アクセスモジュール22は、行全体のコンテンツを読み出す場合、ライト処理が行われないメモリバンク18の領域24のみアクセスする。このため、1つ以上のメモリバンク18でのライト処理は、アクセスモジュール22のある行に属するすべての領域24からの同時リード処理に影響を与えるかもしれない。
In one embodiment, each
例えば、4つのメモリバンク18を有するルーティングテーブルモジュール16を考える。1つのサイクルにおいて、アクセスモジュール22は、第1メモリバンク18に対しライト処理を、ある行に対しリード処理をそれぞれスケジューリングする。このサイクルにおいて、アクセスモジュール22は、第2、第3及び第4メモリバンク18の領域24のみから情報を受信する。従ってこの状況では、アクセスモジュール22は、当該行の領域24の1つの情報にアクセスすることができない。このため、詳細に後述されるように、ルーティングテーブルモジュール16がルーティング情報における適合を検出することに影響が与えられる。
For example, consider a
ある実施例では、アクセスモジュール22はメモリバンク18へのアクセスのためハッシュテクニックを利用する。この実施例によると、アクセスモジュール22は送信元あるいは送信先アドレスからハッシュキーを生成することができる。アクセスモジュール22はその後、このハッシュキーを利用して、メモリバンク18の中の指定された行にアクセスする。例えば、論理的に1k行に分割されたメモリバンク18を考える。アドレスからの10ビットの情報を利用して、アクセスモジュール22は行の1つを一意的に特定するハッシュキーを生成することができる。このハッシュキーを利用して、アクセスモジュール22は、アドレスの検索または学習のために適切な行を決定する。
In one embodiment,
検索リクエストに対しては、送信先アドレスを受信し、このアドレスからハッシュキーを生成し、このハッシュキーにより指定された行からリード処理を実行する。この送信先アドレスが当該行の領域24の1つのエントリにマッチしていれば、アクセスモジュール22はマッチしたエントリからルーティング情報をリターンとして返す。他方、送信先アドレスが当該行の領域24のどのエントリともマッチしていなければ、アクセスモジュール22は「ミス(miss)」を示し、これによりパケットが放出される。
In response to the search request, a transmission destination address is received, a hash key is generated from this address, and a read process is executed from the row specified by this hash key. If the destination address matches one entry in the
学習処理に対して、アクセスモジュール22はリード及びライト処理を実行する。学習処理で与えられた送信元アドレスを利用して、アクセスモジュール22は、ハッシュキーを生成し、このハッシュキーにより示された行から読み出しを行う。この行が送信元アドレスとの適合を含むものでなければ、ルーティングテーブルモジュール16はルーティング情報の学習を開始する。以降のサイクルにおいて、アクセスモジュール22はハッシュキーにより特定された行の任意の領域24にエントリを挿入するためライト処理を実行する。ある実施例では、ルーティングテーブルモジュール16は、指定された行の空の領域24を選ぶよう構成される。例えば、ルーティングテーブルモジュール16は、指定された行の空の領域24を有する第1メモリバンク18を選択してもよいし、ランダムまたは擬ランダムアルゴリズムを利用して、指定された行の空の領域24を選択するようにしてもよい。指定された行に空の領域24が存在しなければ、ルーティングテーブルモジュール16は、この学習リクエストを無視するか、あるいは空の領域24が利用可能となるまで学習リクエストをキューしてもよい。
In response to the learning process, the
学習処理は、ハッシュキーにより指定される行において空の領域24が利用できるかということに依存するので、ルーティングテーブルモジュール16はときどきアドレスマッピング情報の学習が不可能になる場合がある。例えば、現時点で有効なある行の8つすべてのメモリ領域24を備えた8つのメモリバンク18を有するルーティングテーブルモジュール16を考える。前述のように、ルーティングテーブルモジュール16は、当該行へのハッシュキーをもたらす任意の受信した学習リクエストを単に無視する。これにより、以降のトラフィックの放出は増大するが、ルーティングテーブルモジュール16による比較的小さな高速メモリ構造の利用が許可される。
Since the learning process depends on whether the
前述のように、アクセスモジュール22は、同一サイクル内で異なるメモリバンク18に対しリード及びライト処理のスケジューリングを行うことができる。このため、例えば、アクセスモジュール22は、ある行から読み込み処理を行うのと同一のサイクルにおいて、メモリバンク18の1つにライト処理をスケジューリングしてもよい。これにより、前述のように、ライト処理がスケジューリングされていないメモリバンク18のエントリのみをアクセスモジュール22は読み出すことができる。送信先アドレスの検索では、この状況は「偽の」ミスとなりうる。偽のミスは、メモリバンク18が送信先アドレスとの適合を有するが、このマッチしたエントリを保持するメモリバンク18がライト処理を実行する一方、残りのメモリバンク18がリード処理を実行しているときに発生する。偽のミスの場合、実際この行が適合を含んでいたとしても、アクセスモジュール22はミスを示すであろう。偽のミスの生起確率は、ルーティングテーブルモジュール16のメモリバンク数により限定される。例えば、ライト処理が1つのメモリバンク18に制限され、かつルーティングテーブルモジュール16が4つのメモリバンク18を含む場合、リード/ライトサイクルにおける偽のミスの生起確率は25%である。しかしながら、このライト処理が高々1サイクル置きに行われる場合には(学習及び消去処理は2サイクルを要するので)、偽ミスの生起確率は半減される。
As described above, the
ある実施例では、ルーティングテーブルモジュール16は、マルチキャストアドレスの検索処理あるいは学習のためのリード処理において、偽ミスの発生を回避する。例えば、マルチキャストアドレスに適用される厳格な規格により、ルーティングテーブルモジュール16は、マルチキャスト検索処理中ライト処理を回避することができる。同様に、学習処理では、ルーティングテーブルモジュール16は、学習処理における読み込み処理中同時にライト処理が行われることを回避することができる。これにより、偽ミスに基づくルーティングテーブルモジュール16による新たなエントリの学習の必要性の誤った検出を回避することができる。
In one embodiment, the
アクセスモジュール22のリード及びライト処理のスケジューリング処理のため、ルーティングテーブルモジュール16は調停モジュール20を有する。動作中、調停モジュール20は、ポート12から検索及び学習処理を受信し、アクセスモジュール22に適したリード及びライト処理を決定する。調停モジュール20は、これら検索及び学習処理を、メモリバンク18のエントリの経過処理のような他の適切な処理と共に、優先順位付けする。ある実施例では、調停モジュール20は、検索リクエストに最も高い優先順位を与えるかもしれない。検索リクエストに最も高い優先順位が与えられると、調停モジュール20は、ワーストケースのトラフィックが与えられたとしても、このリクエストに対する処理を即座に実行する。
The
例えば、12個のポート12を有するスイッチ10で、各ポート12が最小サイズのイーサネット(登録商標)フレームを同時に受信するケースを考える。イーサネット(登録商標)規格によると、最小サイズイーサネット(登録商標)フレームは約64バイトである。ある実施例では、スイッチ10は、約20サイクルで最小サイズのイーサネット(登録商標)フレームを受信することができる。従って、各ポート12が最小サイズのイーサネット(登録商標)フレームを同時に受信した場合、どのポート12も20サイクルが経過しないと他のフレームの受信を開始することはできない(各ポート12は現在フレームの受信に少なくとも20サイクル要するため)。このワーストケースシナリオが与えられたとしても、各ポート12からの検索リクエストは12サイクル内で調停モジュール20により処理される。これにより、新たな検索リクエストが到着する前に、約8スペアサイクルが残される。
For example, let us consider a case in which the
この例では、各ポート12はまた、パケット受信時に学習リクエストを生成するよう構成されてもよい。このため、ワーストケースの例では、調停モジュール20はまた、12の学習リクエストを、12の検索リクエストと共に受信するかもしれない。8つのスペアサイクルしか与えられない場合、調停モジュール20はこれらの学習リクエストの中の選択されたもののみ処理するかもしれない。従って、検索リクエストに高い優先順位を与えることは、スペアサイクルに対する学習リクエストの優先度を下げることになる。追加の学習リクエストが到達すると、調停モジュール20は、学習リクエストをキューするか、あるいは未処理の学習リクエストを単に破棄するかもしれない。例えば、調停モジュール20は、各ポート12に対して最も最近受信した学習リクエストを単に保持するかもしれない。このとき、学習リクエストは最も最近受信したポートマッピングを反映したものになっているということを保証することができる。
In this example, each
例示された実施例及び前述の説明はルーティングテーブルモジュール16のある実施例に注目したものとなっているが、スイッチ10は合成された同時アクセスメモリ構造をサポートする任意の適切な構成要素の組み合わせ及び構成を有するルーティングテーブルモジュール16を意図している。従って、例示された特定の構成要素により実行される機能は、必要に応じて分離または合成されてもよい。またこれら構成要素の一部またはすべてがメディアに符号化された論理により実現されてもよい。例えば、調停モジュール20とアクセスモジュール22の機能は、必要に応じて分離及び/または合成されてもよく、これら機能の何れかが適切な論理により実現されてもよい。さらに、メモリバンク18は個々の構成要素として示されているが、ルーティングテーブルモジュールは同様の機能を提供する任意の適切なメモリ構造を利用してもよい。また、ルーティングテーブルモジュール16の例示された構成要素の一部またはすべての機能は、1つのモジュールとして示されているが、スイッチ10の他の構成要素に分散されていてもよい。
Although the illustrated embodiment and the foregoing description focus on one embodiment of the
図3は、ルーティングテーブルモジュール16による検索及び学習リクエストに応答し、メモリバンク18に保持されるルーティング情報の定期的なメンテナンスを実行する方法を示すフローチャートである。フローチャートに関する以下の説明は、上述のルーティングテーブルモジュール16の構成要素を参照することにより与えられる。しかしながら、前述のように、ルーティングテーブルモジュール16は、構成要素の任意の適切な組み合わせ及び構成を含んでいてもよい。
FIG. 3 is a flowchart illustrating a method for performing periodic maintenance of routing information held in the
ステップ20において、調停モジュール20は現在アクティブ状態の検索リクエストがあるか判断する。例えば、調停モジュール20は、ポート20の何れかが現在検索処理をリクエストしているかどうか判断してもよい。もしそのようなリクエストがなければ、ステップ52において、調停モジュール20は経過処理リクエストがアクティブ状態であるか判断する。例えば、調停モジュール20は、定期的、不定期的あるいは任意の他の適当なタイミングで、経過処理リクエストを生成し、期限切れエントリをメモリバンク18から消去する。もしそのような経過処理リクエストがなければ、ステップ54において、調停モジュール20はアクティブ状態の学習リクエストが存在するか判断する。例えば、調停モジュール20はポート12の何れかが学習処理をリクエストしたかチェックすることができる。もしそのようなリクエストがなければ、ステップ50に戻り、ステップ50、52及び54で、調停モジュール20は、検索リクエストに最も高い優先順位を与える一方、検索、経過処理及び学習リクエストの処理を実行する。
In
ステップ50において、調停モジュール20が検索リクエストを検出すれば、ステップ56において、調停モジュール20は検索リード(read)処理をスケジューリングする。ステップ58において、調停モジュール20は、このスケジューリングされた検索がマルチキャストアドレスのためのものであるか判断する。例えば、送信先アドレスの特定ビットを調べることにより、調停モジュール20は、このアドレスがマルチキャスト処理を示すものであるか判断してもよい。もしマルチキャストアドレスのためのものである場合、ステップ60において、調停モジュール20はスケジューリングされた任意のライト(write)処理をキャンセルする。例えば、前のサイクルで調停モジュール20は、学習あるいは消去コマンドのためのライト処理をスケジューリングしていたかもしれない。この場合、調停モジュール20は、リード処理中の偽ミスを避けるため、このライト処理をキャンセルする。ステップ62において、アクセスモジュール22がスケジューリングされた処理を実行する。この場合、アクセスモジュール22は、スケジューリングされた検索リード処理を実行し、スケジューリングされたライト処理が残っていれば、このライト処理を実行する。
If the
他方、検索処理が検出されない場合、ステップ52において、調停モジュール20は経過処理リクエストをチェックする。経過処理リクエストが検出されると、ステップ64において、調停モジュール20は経過リード処理をスケジューリングする。この場合、アクセスモジュール22は、このスケジューリングされた経過リード処理を含むスケジューリングされている処理をステップ62において実行する。
On the other hand, if the search process is not detected, in
アクティブ状態の検索または経過処理リクエストがない場合、ステップ54において、調停モジュール20はアクティブ状態の学習リクエストの検出を行う。アクティブ状態の学習リクエストが検出されると、ステップ66において、調停モジュール20はライト処理が現在スケジューリングされているか判断する。例えば、前のサイクルで調停モジュール20はライト処理をスケジューリングされていたかもしれない。ルーティングテーブルモジュール16はライト処理と学習リード処理との同時実行を避けようとするので、ステップ66において、調停モジュール20はライト処理をチェックする。ライト処理がスケジューリングされている場合、調停モジュール20はステップ50に戻る。他方、ライト処理がスケジューリングされていない場合、ステップ68において、調停モジュール20は学習リード処理のスケジューリングを行う。その後、アクセスモジュール22は、スケジューリングされている学習リード処理を、ライト処理と同時に実行することなく、スケジューリングされている処理と共に実行する。
If there is no active search or progress request, in
ステップ62におけるスケジューリングされている処理の実行後、ステップ70において、調停モジュール20は書き込みの必要が検出されたかどうか判断する。例えば、学習リード処理の実行後、調停モジュール20は学習ライト処理が必要であるか判断するようにしてもよい。書き込みが必要な場合、ステップ72において、調停モジュール20はライト処理のスケジューリングを行う。同様にして、調停モジュール20は、ステップ70において消去が必要であるかを検出し、ステップ72において消去処理を実行するためのライト処理のスケジューリングを行うようにしてもよい。
After execution of the scheduled process in
前述のフローチャートは、ルーティングテーブルモジュール16によるマルチバンクメモリ構成のアクセスに基づくルーティングテーブル処理のための一例となる処理を示している。しかしながら、このフローチャート及びそれに関する説明は処理の一例を示しているに過ぎず、スイッチ10はマルチバンクメモリ方式をサポートする他の適切なテクニックを利用したルーティングテーブルモジュール16が考えられる。このため、本フローチャートの多くのステップは、同時に実行されてもよいし、あるいは例示されたものと異なる順序で実行されてもよい。さらに、ルーティングテーブルモジュール16は、適切である限り、ステップを追加あるいは縮減、及び/または異なるステップにより実行するよう構成されてもよい。
The flowchart described above illustrates an exemplary process for routing table processing based on multi-bank memory configuration access by the
図4は、リードリクエスト処理時におけるアクセスモジュール22の動作を示すフローチャートである。各サイクルにおいて、ステップ80において、アクセスモジュール22はリードリクエストが受信されたか判断する。リードリクエストが受信されていない場合、当該サイクルにおいて、アクセスモジュール22はリードリクエストに関して処理を実行しない。他方、ステップ80においてアクセスモジュール22がリードリクエストを検出した場合、ステップ82において、このリードリクエストのアドレスからハッシュキーを決定する。例えば、前述のように、アクセスモジュール22はアドレス内の選択されたビットに基づきハッシュキーを決めるようにしてもよい。
FIG. 4 is a flowchart showing the operation of the
ステップ84において、アクセスモジュール22は、ハッシュキーを利用することにより、対応する行からリード処理を行う。前述のように、このリード処理では、同時ライト処理が現時点でスケジューリングされていない場合、この対応する行のすべての領域24にアクセスされる。ステップ86において、アクセスモジュール22は、当該行のエントリが受信したアドレスとマッチしているか決定する。同時ライト処理の有無に関係なく、アクセスモジュール22は当該アドレスがヒットまたはミスであるか判断する。しかしながら、同時ライト処理が与えられている場合、アクセスモジュール22は前述のように偽ミスを検出してしまうかもしれない。
In
マッチの場合、ステップ88において、アクセスモジュール22は適合したルーティング情報をリターンとして返す。例えば、検索リード処理に対し、アクセスモジュール22はルーティング情報を適切なポート12に提供する。同様に、学習リード処理に対し、アクセスモジュール22は調停モジュール20にヒットを通知する。他方ミスの場合、ステップ90において、アクセスモジュール22はミスを示す。例えば、検索リード処理に対し、アクセスモジュール22はミスを適切なポート12に示す。同様に、学習リード処理に対し、アクセスモジュール22はミスを調停モジュール20に示してもよい。
If there is a match, in
図4のフローチャートは、アクセスモジュール22による調停モジュール20からのリードリクエストの処理のための比較的簡単なテクニックを示したものである。しかしながら、図3と同様に、図4のフローチャートとそれに関する説明は、単なる処理の一例を示したものに過ぎず、スイッチ10はルーティング情報にアクセスするための任意の適切なテクニックを利用したアクセスモジュール22及び/または他の適切な構成要素を考えてもよい。このため、本フローチャートの多くのステップは、同時に実行されてもよいし、あるいは例示されたものと異なる順序で実行されてもよい。さらに、スイッチ10は、適切である限り、ステップを追加あるいは縮減、及び/または異なるステップにより実行するよう構成されてもよい。
The flowchart of FIG. 4 illustrates a relatively simple technique for processing a read request from the
以上、本発明の好ましい実施例を説明したが、本発明はこれに限定されるわけではなく、本発明の要旨の範囲内で様々な変形及び変更が可能である。 The preferred embodiment of the present invention has been described above, but the present invention is not limited to this, and various modifications and changes can be made within the scope of the present invention.
(付記1) パケットの通信が可能な複数のポート;
受信したパケットの前記複数のポート間での転送を可能とするスイッチファブリック;
複数の行に論理的に分割される複数のメモリバンクであって、前記複数の行のそれぞれが前記複数のメモリバンクの各々からのルーティングエントリの保持が可能な格納領域を有するメモリバンク;
検索リクエストと学習リクエストを前記複数のポートから受信し、前記検索リクエストと前記学習リクエストに基づき少なくとも1つのアドレスを有するメモリアクセス処理のスケジューリングを実行する調停モジュール;及び
前記メモリアクセス処理を受信し、前記アドレスから前記複数の行の1つを示すハッシュキーを決定し、前記示された行にアクセスして前記メモリアクセス処理の少なくとも1つを実行するメモリアクセスモジュール;
からなることを特徴とするスイッチ。
(Appendix 1) Multiple ports capable of packet communication;
A switch fabric that allows forwarding of received packets between the plurality of ports;
A plurality of memory banks logically divided into a plurality of rows, each of the plurality of rows having a storage area capable of holding a routing entry from each of the plurality of memory banks;
An arbitration module that receives a search request and a learning request from the plurality of ports, and performs scheduling of a memory access process having at least one address based on the search request and the learning request; and the memory access process; A memory access module that determines a hash key indicating one of the plurality of rows from an address and accesses the indicated row to execute at least one of the memory access processes;
A switch characterized by comprising
(付記2) 付記1記載のスイッチであって、前記調停モジュールは、未処理の学習リクエストを処理するためのメモリアクセス処理のスケジューリングを実行する前に、未処理の検索リクエストを処理するためのメモリアクセス処理のスケジューリングを実行することを特徴とするスイッチ。 (Additional remark 2) It is a switch of Additional remark 1, Comprising: The said arbitration module is a memory for processing an unprocessed search request before performing the scheduling of the memory access process for processing an unprocessed learning request. A switch characterized by executing scheduling of access processing.
(付記3) 付記1記載のスイッチであって、前記調停モジュールは、送信先アドレスを特定する検索リクエストを処理するための前記メモリアクセス処理のスケジューリングを実行し、前記メモリアクセス処理は前記検索リクエストからの前記送信先アドレスを示すリード処理を含むことを特徴とするスイッチ。 (Supplementary note 3) The switch according to supplementary note 1, wherein the arbitration module executes scheduling of the memory access process for processing a search request for specifying a transmission destination address, and the memory access process is performed based on the search request. A switch including a read process indicating the transmission destination address.
(付記4) 付記3記載のスイッチであって、前記調停モジュールはさらに、前記送信先アドレスがマルチキャストアドレスであるか判断し、前記送信先アドレスがマルチキャストアドレスである場合、前記メモリアクセス処理がライト処理を含まないことを保証するよう動作可能であることを特徴とするスイッチ。 (Supplementary note 4) The switch according to supplementary note 3, wherein the arbitration module further determines whether the transmission destination address is a multicast address, and if the transmission destination address is a multicast address, the memory access process is a write process. A switch characterized in that it is operable to ensure that it does not contain.
(付記5) 付記3記載のスイッチであって、前記調停モジュールはさらに、前記複数のメモリバンクの選択された1つの中の前記格納領域の1つを示すライト処理を含むよう前記メモリアクセス処理のスケジューリングを実行することを特徴とするスイッチ。 (Supplementary note 5) The switch according to supplementary note 3, wherein the arbitration module further includes a write process that indicates one of the storage areas in the selected one of the plurality of memory banks. A switch characterized by executing scheduling.
(付記6) 付記1記載のスイッチであって、ルーティングエントリは、アドレス情報と、前記複数のポートの1つ以上を示すルーティング情報とを有することを特徴とするスイッチ。 (Supplementary note 6) The switch according to supplementary note 1, wherein the routing entry includes address information and routing information indicating one or more of the plurality of ports.
(付記7) 付記1記載のスイッチであって、前記調停モジュールは、送信元アドレスを特定する学習リクエストを処理するための前記メモリアクセス処理のスケジューリングを実行し、前記メモリアクセス処理は前記検索リクエストからの前記送信元アドレスを示すリード処理を含むことを特徴とするスイッチ。 (Supplementary note 7) The switch according to supplementary note 1, wherein the arbitration module executes scheduling of the memory access process for processing a learning request for specifying a transmission source address, and the memory access process is performed based on the search request. And a read process indicating the source address of the switch.
(付記8) 付記1記載のスイッチであって、前記メモリアクセス処理は、ライト処理とリード処理の少なくとも1つを含むことを特徴とするスイッチ。 (Supplementary note 8) The switch according to supplementary note 1, wherein the memory access process includes at least one of a write process and a read process.
(付記9) 付記1記載のスイッチであって、前記調停モジュールは、学習リクエストを処理するために、前記学習リクエストからの送信元アドレスを示すリード処理を含む第1メモリアクセス処理のスケジューリングを実行し、前記リード処理が前記複数のメモリバンクにおいてミスを検出したか判断し、前記ミスが検出された場合、前記学習リクエストから前記送信元アドレスとポートマッピングを示すライト処理を含む第2メモリアクセス処理のスケジューリングを実行することを特徴とするスイッチ。 (Supplementary note 9) The switch according to supplementary note 1, wherein the arbitration module performs scheduling of a first memory access process including a read process indicating a source address from the learning request in order to process the learning request. Determining whether the read process has detected a miss in the plurality of memory banks, and if the miss is detected, a second memory access process including a write process indicating the source address and port mapping from the learning request. A switch characterized by executing scheduling.
(付記10) 付記9記載のスイッチであって、前記調停モジュールはさらに、前記第1メモリアクセス処理がライト処理を含まないことを保証するよう動作可能であることを特徴とするスイッチ。 (Supplementary note 10) The switch according to supplementary note 9, wherein the arbitration module is further operable to ensure that the first memory access process does not include a write process.
(付記11) ルーティングテーブル処理を実行する方法であって:
複数のポートの何れかからの検索リクエストと学習リクエストの受信を監視するステップ;
送信先アドレスを有する検索リクエストを検出するステップ;
前記送信先アドレスに基づきハッシュキーを決定するステップ;
前記ハッシュキーを利用して複数の行に論理的に分割される複数のメモリバンクを有するメモリモジュールにアクセスするステップであって、ここで前記複数の行のそれぞれは前記複数のメモリバンクのそれぞれからのルーティングエントリを保持することができる格納領域を含み、前記ハッシュキーは前記複数の行の1つを示しているステップ;
前記示された行からの前記ルーティングエントリの1つが前記送信先アドレスにマッチするアドレス情報を含むか判断するステップ;及び
前記示された行がマッチしたルーティングエントリを含む場合、前記マッチしたルーティングエントリから前記複数のポートの1つ以上を特定するルーティング情報を返すステップ;
からなることを特徴とする方法。
(Supplementary Note 11) A method for executing routing table processing:
Monitoring receipt of a search request and a learning request from any of a plurality of ports;
Detecting a search request having a destination address;
Determining a hash key based on the destination address;
Accessing a memory module having a plurality of memory banks logically divided into a plurality of rows using the hash key, wherein each of the plurality of rows is from each of the plurality of memory banks; Including a storage area capable of holding a plurality of routing entries, wherein the hash key indicates one of the plurality of rows;
Determining whether one of the routing entries from the indicated row includes address information that matches the destination address; and if the indicated row includes a matching routing entry, from the matched routing entry Returning routing information identifying one or more of the plurality of ports;
A method characterized by comprising:
(付記12) 付記11記載の方法であって、さらに、未処理の学習リクエストの処理前に、未処理の検索リクエストを処理するステップを有することを特徴とする方法。 (Supplementary note 12) The method according to supplementary note 11, further comprising a step of processing an unprocessed search request before processing an unprocessed learning request.
(付記13) 付記11記載の方法であって、さらに、前記送信先アドレスがマルチキャストアドレスであるか判断し、前記ハッシュキーを利用した前記メモリモジュールへのアクセス中、前記複数のメモリバンクの何れもがライト処理を実行しないことを保証するステップを有することを特徴とする方法。 (Supplementary note 13) The method according to supplementary note 11, further comprising: determining whether the transmission destination address is a multicast address, and accessing any of the plurality of memory banks while accessing the memory module using the hash key. The method comprising the step of guaranteeing that no write processing is performed.
(付記14) 付記11記載の方法であって、さらに、前記ハッシュキーを利用した前記メモリモジュールへのアクセス中にライト処理を実行するステップを有し、前記ライト処理は前記複数のメモリバンクの選択された1つの中の格納領域の1つを示し、前記ハッシュメモリを利用した前記メモリモジュールへアクセスするステップは前記ライト処理で示された前記メモリバンクを除くすべてのメモリバンクの前記示された行から前記エントリを読み出すことを特徴とする方法。 (Supplementary note 14) The method according to supplementary note 11, further comprising a step of executing a write process during access to the memory module using the hash key, wherein the write process selects the plurality of memory banks. The step of accessing the memory module using the hash memory is one of the storage areas in the one of the plurality of designated memory areas, and the step of accessing the memory module except for the memory bank indicated in the write process Reading the entry from the method.
(付記15) 付記11記載の方法であって、さらに:
送信元アドレスとルーティング情報を特定する学習リクエストを検出するステップ;
前記送信元アドレスに基づき前記複数の行の第2の行を示す第2ハッシュキーを決定するステップ;及び
前記第2ハッシュキーを利用して前記メモリモジュールにアクセスするステップ;
を有することを特徴とする方法。
(Supplementary note 15) The method according to supplementary note 11, further comprising:
Detecting a learning request identifying a source address and routing information;
Determining a second hash key indicating a second row of the plurality of rows based on the source address; and accessing the memory module using the second hash key;
A method characterized by comprising:
(付記16) 付記15記載の方法であって、さらに、前記第2ハッシュキーを利用した前記メモリモジュールへのアクセス中、前記複数のメモリバンクの何れもがライト処理を実行しないということを保証するステップを有することを特徴とする方法。 (Supplementary note 16) The method according to supplementary note 15, further guaranteeing that none of the plurality of memory banks performs a write process while accessing the memory module using the second hash key. A method comprising steps.
(付記17) 付記15記載の方法であって、さらに:
前記示された第2の行からのエントリの1つが前記ソースアドレスにマッチするアドレス情報を含むか判断するステップ;
前記エントリの何れもがマッチしない場合、前記示された第2の行が空のエントリを含むか判断するステップ;及び
前記示された第2の行が空のエントリを含む場合、前記空のエントリに前記送信元アドレスと前記ルーティング情報を書き込むステップ;
を有することを特徴とする方法。
(Supplementary note 17) The method according to supplementary note 15, further comprising:
Determining whether one of the entries from the indicated second row contains address information matching the source address;
If none of the entries match, determining whether the indicated second row contains an empty entry; and if the indicated second row contains an empty entry, the empty entry Writing the source address and the routing information in
A method characterized by comprising:
(付記18) 複数のポートの何れかからの検索リクエストと学習リクエストの受信を監視する手段;
送信先アドレスを有する検索リクエストを検出する手段;
前記送信先アドレスに基づきハッシュキーを決定する手段;
前記ハッシュキーを利用して複数の行に論理的に分割される複数のメモリバンクを有するメモリモジュールにアクセスする手段であって、ここで前記複数の行のそれぞれは前記複数のメモリバンクのそれぞれからのルーティングエントリを保持することができる格納領域を含み、前記ハッシュキーは前記複数の行の1つを示している手段;
前記示された行からの前記ルーティングエントリの1つが前記送信先アドレスにマッチするアドレス情報を含むか判断する手段;及び
前記示された行がマッチしたルーティングエントリを含む場合、前記マッチしたルーティングエントリから前記複数のポートの1つ以上を特定するルーティング情報を返す手段;
からなることを特徴とするスイッチ。
(Supplementary Note 18) Means for monitoring reception of a search request and a learning request from any of a plurality of ports;
Means for detecting a search request having a destination address;
Means for determining a hash key based on the destination address;
Means for accessing a memory module having a plurality of memory banks that are logically divided into a plurality of rows using the hash key, wherein each of the plurality of rows is derived from each of the plurality of memory banks; Means for storing a plurality of routing entries, wherein the hash key indicates one of the plurality of rows;
Means for determining whether one of the routing entries from the indicated row includes address information matching the destination address; and, if the indicated row includes a matching routing entry, from the matched routing entry Means for returning routing information identifying one or more of the plurality of ports;
A switch characterized by comprising
(付記19) 付記18記載のスイッチであって、さらに、前記送信先アドレスがマルチキャストアドレスであるか判断し、前記ハッシュキーを利用した前記メモリモジュールへのアクセス中、前記複数のメモリバンクの何れもがライト処理を実行しないことを保証する手段を有することを特徴とするスイッチ。
(Supplementary note 19) The switch according to
(付記20) 付記18記載のスイッチであって、さらに、前記ハッシュキーを利用した前記メモリモジュールへのアクセス中にライト処理を実行する手段を有し、前記ライト処理は前記複数のメモリバンクの選択された1つの中の格納領域の1つを示し、前記ハッシュメモリを利用した前記メモリモジュールへアクセスする手段は前記ライト処理で示された前記メモリバンクを除くすべてのメモリバンクの前記示された行から前記エントリを読み出すことを特徴とするスイッチ。
(Supplementary note 20) The switch according to
(付記21) 付記18記載のスイッチであって、さらに:
送信元アドレスとルーティング情報を特定する学習リクエストを検出する手段;
前記送信元アドレスに基づき前記複数の行の第2の行を示す第2ハッシュキーを決定する手段;及び
前記第2ハッシュキーを利用して前記メモリモジュールにアクセスする手段;
を有することを特徴とするスイッチ。
(Supplementary note 21) The switch according to
Means for detecting a learning request identifying a source address and routing information;
Means for determining a second hash key indicating a second row of the plurality of rows based on the source address; and means for accessing the memory module using the second hash key;
A switch characterized by comprising:
(付記22) 付記21記載のスイッチであって、さらに、前記第2ハッシュキーを利用した前記メモリモジュールへのアクセス中、前記複数のメモリバンクの何れもがライト処理を実行しないということを保証する手段を有することを特徴とするスイッチ。 (Supplementary note 22) The switch according to supplementary note 21, further guaranteeing that none of the plurality of memory banks performs a write process during access to the memory module using the second hash key. A switch comprising means.
(付記23) 付記21記載のスイッチであって、さらに:
前記示された第2の行からのエントリの1つが前記ソースアドレスにマッチするアドレス情報を含むか判断する手段;
前記エントリの何れもがマッチしない場合、前記示された第2の行が空のエントリを含むか判断する手段;及び
前記示された第2の行が空のエントリを含む場合、前記空のエントリに前記送信元アドレスと前記ルーティング情報を書き込む手段;
を有することを特徴とするスイッチ。
(Supplementary note 23) The switch according to supplementary note 21, further comprising:
Means for determining whether one of the entries from the indicated second row includes address information matching the source address;
Means for determining if the indicated second row contains an empty entry if none of the entries match; and if the indicated second row contains an empty entry, the empty entry Means for writing the source address and the routing information in
A switch characterized by comprising:
10 スイッチ
12 ポート
14 スイッチングファブリック
16 ルーティングテーブルモジュール
18 メモリバンク
20 調停モジュール
22 アクセスモジュール
24 領域
10
Claims (8)
受信したパケットの前記複数のポート間での転送を可能とするスイッチファブリックと、
複数の行に論理的に分割される複数のメモリバンクであって、前記複数の行のそれぞれが前記複数のメモリバンクの各々からのルーティングエントリの保持が可能な格納領域を有し、リード処理とライト処理が独立にアクセスされるメモリバンクと、
検索リクエストと学習リクエストを前記ポートから受信し、受信した検索リクエストに基づくリード処理と、受信した学習リクエストに基づくリード処理及びライト処理とをスケジュールする調停モジュールと、
同一サイクル内で、異なるメモリバンクに対し、前記リード処理と前記ライト処理を実行するメモリアクセスモジュールと、
を有することを特徴とするスイッチ。 Multiple ports that can communicate packets ,
A switch fabric that enables forwarding of received packets between the plurality of ports ;
A plurality of memory banks to be logically divided into a plurality of rows, each of said plurality of rows have a storage area capable of holding the routing entry from each of said plurality of memory banks, and the read processing A memory bank in which write processing is independently accessed , and
Receives a search request and learning request from before Kipo over door, and lead processing based on the search request has been received, and the arbitration module to schedule and based rather than read processing and write processing to the learning request received,
A memory access module that executes the read process and the write process on different memory banks in the same cycle ;
Switch characterized in that it comprises a.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/360,004 US7408930B2 (en) | 2003-02-07 | 2003-02-07 | Address learning to enable high speed routing table lookups |
US10/360004 | 2003-02-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004242326A JP2004242326A (en) | 2004-08-26 |
JP4790991B2 true JP4790991B2 (en) | 2011-10-12 |
Family
ID=32823909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004029864A Expired - Fee Related JP4790991B2 (en) | 2003-02-07 | 2004-02-05 | Address learning that enables high-speed routing table lookup |
Country Status (2)
Country | Link |
---|---|
US (1) | US7408930B2 (en) |
JP (1) | JP4790991B2 (en) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8913603B2 (en) * | 2003-11-10 | 2014-12-16 | Tekelec Global, Inc. | Methods and systems for automatic time-based routing rule administration |
US7443848B2 (en) * | 2004-09-29 | 2008-10-28 | Intel Corporation | External device-based prefetching mechanism |
KR100572696B1 (en) * | 2004-12-16 | 2006-04-24 | 한국전자통신연구원 | Aggregation switch for broadband subscribers |
ATE429110T1 (en) * | 2005-10-19 | 2009-05-15 | Alcatel Lucent | METHOD FOR PROCESSING AN INFORMATION PACKAGE AND COMMUNICATION DEVICES FOR USE THEREOF |
US7870306B2 (en) * | 2006-08-31 | 2011-01-11 | Cisco Technology, Inc. | Shared memory message switch and cache |
US9588810B2 (en) * | 2007-08-08 | 2017-03-07 | Microsoft Technology Licensing, Llc | Parallelism-aware memory request scheduling in shared memory controllers |
US8238338B2 (en) * | 2007-09-14 | 2012-08-07 | Cisco Technology, Inc. | Interior gateway protocol summarization preserving internet protocol reachability information |
EP2377273B1 (en) * | 2009-01-12 | 2015-08-26 | Hewlett-Packard Development Company, L.P. | Reducing propagation of message floods in computer networks |
US8665879B2 (en) * | 2009-07-14 | 2014-03-04 | Broadcom Corporation | Flow based path selection randomization using parallel hash functions |
EP2681937B1 (en) * | 2011-03-01 | 2019-09-25 | Tekelec, Inc. | Method, system, and computer readable medium for hybrid session based diameter routing |
US8787373B2 (en) | 2012-01-19 | 2014-07-22 | International Business Machines Corporation | Multicast miss notification for a distributed network switch |
US8854973B2 (en) | 2012-08-29 | 2014-10-07 | International Business Machines Corporation | Sliced routing table management with replication |
US9124527B2 (en) * | 2012-08-29 | 2015-09-01 | International Business Machines Corporation | Sliced routing table management |
US9215171B2 (en) | 2012-08-29 | 2015-12-15 | International Business Machines Corporation | Hashing-based routing table management |
US8792494B2 (en) * | 2012-09-14 | 2014-07-29 | International Business Machines Corporation | Facilitating insertion of device MAC addresses into a forwarding database |
US9825857B2 (en) * | 2013-11-05 | 2017-11-21 | Cisco Technology, Inc. | Method for increasing Layer-3 longest prefix match scale |
US10951519B2 (en) | 2015-06-17 | 2021-03-16 | Oracle International Corporation | Methods, systems, and computer readable media for multi-protocol stateful routing |
US9668134B2 (en) | 2015-08-14 | 2017-05-30 | Oracle International Corporation | Methods, systems, and computer readable media for providing access network protocol interworking and authentication proxying |
US9668135B2 (en) | 2015-08-14 | 2017-05-30 | Oracle International Corporation | Methods, systems, and computer readable media for providing access network signaling protocol interworking for user authentication |
US9923984B2 (en) | 2015-10-30 | 2018-03-20 | Oracle International Corporation | Methods, systems, and computer readable media for remote authentication dial in user service (RADIUS) message loop detection and mitigation |
US10554661B2 (en) | 2015-08-14 | 2020-02-04 | Oracle International Corporation | Methods, systems, and computer readable media for providing access network session correlation for policy control |
US10084755B2 (en) | 2015-08-14 | 2018-09-25 | Oracle International Corporation | Methods, systems, and computer readable media for remote authentication dial in user service (RADIUS) proxy and diameter agent address resolution |
CN106470156B (en) * | 2015-08-19 | 2020-07-10 | 中兴通讯股份有限公司 | Method and device for forwarding message |
US10102087B2 (en) | 2016-02-19 | 2018-10-16 | Oracle International Corporation | Methods, systems, and computer readable media for detecting and managing suspect subscriber bindings |
US10412772B2 (en) | 2017-08-08 | 2019-09-10 | Oracle International Corporation | Methods, systems, and computer readable media for using access point name (APN) independent subscriber bindings |
US11283883B1 (en) | 2020-11-09 | 2022-03-22 | Oracle International Corporation | Methods, systems, and computer readable media for providing optimized binding support function (BSF) packet data unit (PDU) session binding discovery responses |
CN115567435A (en) * | 2021-07-02 | 2023-01-03 | 中国船舶重工集团公司第七二四研究所 | FPGA-based routing information parallel and rapid searching and managing method |
CN113904987B (en) * | 2021-10-29 | 2022-11-15 | 西安微电子技术研究所 | MAC address routing management controller, system and control method |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5949786A (en) * | 1996-08-15 | 1999-09-07 | 3Com Corporation | Stochastic circuit identification in a multi-protocol network switch |
US5852607A (en) * | 1997-02-26 | 1998-12-22 | Cisco Technology, Inc. | Addressing mechanism for multiple look-up tables |
US6034958A (en) * | 1997-07-11 | 2000-03-07 | Telefonaktiebolaget Lm Ericsson | VP/VC lookup function |
EP0993156B1 (en) * | 1998-10-05 | 2007-01-03 | Alcatel | Network switching device with forwarding database tables populated based on use |
US6775281B1 (en) * | 1999-09-30 | 2004-08-10 | Mosaid Technologies, Inc. | Method and apparatus for a four-way hash table |
US6798777B1 (en) * | 2000-04-17 | 2004-09-28 | Juniper Networks, Inc. | Filtering and route lookup in a switching device |
US20040047209A1 (en) * | 2000-11-22 | 2004-03-11 | Chuen-Der Lien | FIFO memory devices having multi-port cache memory arrays therein that support hidden EDC latency and bus matching and methods of operating same |
-
2003
- 2003-02-07 US US10/360,004 patent/US7408930B2/en active Active
-
2004
- 2004-02-05 JP JP2004029864A patent/JP4790991B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004242326A (en) | 2004-08-26 |
US7408930B2 (en) | 2008-08-05 |
US20040156362A1 (en) | 2004-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4790991B2 (en) | Address learning that enables high-speed routing table lookup | |
US8345685B2 (en) | Method and device for processing data packets | |
US6535951B1 (en) | Hit result register file used in a CAM | |
US20170364606A1 (en) | Table lookup apparatus using content-addressable memory based device and related table lookup method thereof | |
US7274693B1 (en) | Search engine for forwarding table content addressable memory | |
US8542686B2 (en) | Ethernet forwarding database method | |
US7924833B2 (en) | Packet transfer unit | |
US6266705B1 (en) | Look up mechanism and associated hash table for a network switch | |
US6772279B1 (en) | Method and apparatus for monitoring the status of CAM comparand registers using a free list and a busy list | |
US7477639B2 (en) | High speed routing table learning and lookup | |
US20010007565A1 (en) | Packet receiving method on a network with parallel and multiplexing capability | |
US6163541A (en) | Method for selecting virtual channels based on address priority in an asynchronous transfer mode device | |
US6336156B1 (en) | Increased speed initialization using dynamic slot allocation | |
US6208662B1 (en) | Method for distributing and recovering buffer memories in an asynchronous transfer mode edge device | |
US11899985B1 (en) | Virtual modules in TCAM | |
US7693075B2 (en) | Updating address tables | |
JP4557745B2 (en) | Fast routing table learning and lookup | |
US9256548B2 (en) | Rule-based virtual address translation for accessing data | |
US7400623B2 (en) | Method and apparatus for managing medium access control (MAC) address | |
US5144621A (en) | Common bus communication system with reduced interface memories | |
US6487199B1 (en) | Method and apparatus for maintaining randomly accessible copy number information on a network switch | |
US7411956B2 (en) | Methods and apparatus for routing packets | |
GB2321820A (en) | A method for dynamically allocating buffers to virtual channels in an asynchronous network | |
EP2003820B1 (en) | Method and device of learning forwarding feature information | |
EP1376975B1 (en) | Protocol duplexer and protocol duplexing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041001 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070202 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090205 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090421 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090619 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090714 |
|
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: 20110721 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140729 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4790991 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |