JP2005012271A - Routing engine apparatus, router apparatus, and memory search method in routing engine apparatus - Google Patents

Routing engine apparatus, router apparatus, and memory search method in routing engine apparatus Download PDF

Info

Publication number
JP2005012271A
JP2005012271A JP2003171049A JP2003171049A JP2005012271A JP 2005012271 A JP2005012271 A JP 2005012271A JP 2003171049 A JP2003171049 A JP 2003171049A JP 2003171049 A JP2003171049 A JP 2003171049A JP 2005012271 A JP2005012271 A JP 2005012271A
Authority
JP
Japan
Prior art keywords
search
cam
unit
header information
frame
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.)
Withdrawn
Application number
JP2003171049A
Other languages
Japanese (ja)
Inventor
Jun Furusho
純 古荘
Daisuke Namihira
大輔 浪平
Yoshihito Matsushita
佳人 松下
Atsuo Miyahara
敦夫 宮原
Yusuke Watakabe
祐介 渡壁
Hiroaki Kago
浩昭 籠
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
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003171049A priority Critical patent/JP2005012271A/en
Publication of JP2005012271A publication Critical patent/JP2005012271A/en
Withdrawn legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide a routing engine apparatus which is provided for a router apparatus based on the IPv6 protocol and capable of relieving the processing load on a processor wherein one CAM search system uses a search key having a bit width larger than a processable bit width so as to increase the number of search times and speed. <P>SOLUTION: The routing engine apparatus 10 includes: a processor 10c for mutually converting an IPv6 frame and a header information cell including an area for storing search information required for three kinds of search processes of filter searching, flow searching and trace searching and an area to which three kinds of search results are written; and a CAM search system 1 for carrying out the three kinds of the searching processes on the basis of the search information of the header information cell converted by the processor 10c, writing the three kinds of the searching results to the header information cell and transmitting the header information to the processor 10c. <P>COPYRIGHT: (C)2005,JPO&NCIPI

Description

【0001】
【発明の属する技術分野】
本発明は、例えばルータ装置(ルータ又は転送装置)のアドレス検索に関し、受信フレームのIPv6(Internet Protocol version 6 protocol)アドレスが、アドレステーブルに予め登録された登録IPv6アドレスに保持されているか否かについて、ハードウェアを用いて高速検索するCAM検索(連想メモリ検索)に用いて好適な、ルーティングエンジン装置,ルータ装置およびルーティングエンジン装置におけるメモリ検索方法に関する。
【0002】
【従来の技術】
近年、インターネットの利用者数の急激な増加によって、IPアドレスの枯渇が指摘されており、より多くのIPアドレスを確保するために、移動通信システムは、IPv6プロトコルへの対応を図っている。このIPv6プロトコルは、階層化アドレス(IPv6アドレス)と呼ばれるアドレス割り当て手順を主に規定している(例えば非特許文献1)。
【0003】
このIPv6アドレスは、128ビットを有し、前半の64ビットおよび後半の64ビットが結合したアドレスであって、例えば、16進数を用いて、
「1040:0A23:0C10:0800:C02D:00FC:E09A:76BB」と表される。このアドレスの前半および後半は、それぞれ、ネットワークプレフィクス(ネットワーク識別子又はネットワークアドレス)およびホストID(Host Identifier:ホストコンピュータ,端末,ルータ装置,ポート(物理ポート)又はインターフェースを表す。
【0004】
このIPv6アドレスにより、アドレス枯渇が解消し十分な数のアドレスを確保でき、また、移動通信システムにおいて携帯端末にモバイルIPアドレスを割り当て可能となる。そして、各ルータは、ルーティングテーブル(アドレステーブル)をルックアップすることによりルーティング検索を行なう。さらに、各ルータは、受信フレームの種別判定と、受信フレームの破棄又は取得のための検索処理とを並行して処理するようになっている。
【0005】
従来のルータの検索方法は、受信フレームのアドレスについて、ルーティングテーブルを参照してその受信フレームの転送先のポート情報を出力する。この検索は、CPU(Central Processing Unit),ROM(Read Only Memory)およびRAM(Random Access Memory)を用いたソフトウェア処理によって行なわれている。
【0006】
一方、近年、IPv6プロトコルが一般化し、フレーム処理の高速化,大容量化が進展し、ソフトウェア処理を用いた検索は遅延が生じる。このため、各ルータは、ルーティング検索の機能の向上を図るために、例えば外付けのLSI(Large Scale Integration)等のハードウェアにより構成されたCAM検索システムを設けて、CPUの検索処理を支援し、検索の高速化を図っている。
【0007】
ここで、CAMとは、多数のデータを保持するメモリである。また、CAM検索システムとは、検索対象のデータとCAMに保持されたデータとを比較して、その検索対象のデータを保持しているときにその保持アドレスを出力するものである。
CAM検索システムにおけるテーブル検索の一例は、受信フレームが廃棄対象であるか否かの判定(フィルタ検索)と、受信フレームのプライオリティの取得(フロー検索)とが知られている。このプライオリティとは、ルータ又は伝送路において輻輳が生じたときの処理の優先度のレベルである。例えば、フレーム廃棄又は転送に関する判定、およびバッファに保持された複数のフレームデータのうちの他のフレームデータよりも先に読み出すか否かの判定は、このプライオリティに基づいて行なわれる。また、フロー検索は、入力されたフレームのうちの特定アドレスと、例えばIPv6プロトコルのような特定プロトコル種別とを有するものを検索する。ここで、フローとは、同一の条件により抽出されたフレーム群である。
【0008】
図18は従来のCAM検索システムの概略的な構成図である。この図18に示すルータ100は、アドレス解決するNDP(Network Data Processor:ネットワークデータプロセッサ)100aと、複数個のCAM検索システム100b〜100dとをそなえて構成されている。
ここで、アドレス解決とは、IPv6アドレスからMAC(Media Access Control)アドレスを取得することであり、例えば、受信フレームの送信先IPv6アドレスに基づいてその受信フレームを出力するポート情報を出力する。
【0009】
また、従来のテーブル検索は、NDP100aが、1個の入力フレームから必要な情報を抽出し、2種類の検索についてそれぞれ2個の検索キー(SEARCH KEY)を生成し、各検索キーをCAM検索システム100b〜100cに送信している。
各CAM検索システム100b〜100dは、それぞれ、負荷の大きい(重い)検索処理に特化し、NDP100aから入力された検索キーに基づいて検索処理するCAM部101bと、このCAM部101bにて検索された検索結果のアドレス(Address)から読み出した検索結果のMEMデータ(DATA)をNDP100aに対して送信するMEM部(連想データ保持部)101aとをそなえて構成されている。このMEMデータは、CAM部101bが出力した検索結果アドレスにより示されるデータであって、CAM部101bが、CAM部101bに入力された検索データと一致(ヒット又はマッチ)するCAMデータを保持している場合に出力される、その一致するCAMデータにアドレスを介して対応付けられたデータ(連想データ)である。
【0010】
そして、1個のNDP100aが、CAM検索システム100b〜100cからの複数の検索結果(HIT STATUS:ヒットステータスおよびDATA:検索結果データ)をマージし、マージされた検索結果に基づいてフレームを処理するようになっている。ここで、マージとは、特に断らない限り、複数のデータを1個のセルデータに併合することを意味する。
【0011】
従って、NDP100aが、複数の検索依頼を受信すると、その複数の検索のそれぞれについてCAM検索システム100b〜100dのうちの検索に対応するものを選択して検索している。すなわち、複数の検索はフレーム毎に処理され、1回の検索依頼で1検索のみ検索結果が得られる。
また、検索キーは複数のビット幅を有し、処理可能なデータは、CAM検索システム100b〜100dの処理可能なビット幅よりも短いビット幅を有するデータに制約される。また、各検索結果は、NDP100aによってマージされている。
また、アドレス検索方法は、種々のものが提案されている。
【0012】
例えば、アドレスを上位と下位とに分割してサーチする機能を設けたアドレスサーチ装置(以下、アドレスサーチマシンと称する。)が提案されている(例えば特許文献1)。特許文献1記載のアドレスサーチマシンは、アドレスサーチ要求を出すパケットエンジンと、サーチ対象のアドレスを登録するCAMと、ルーティング情報を格納するSSRAM(Synchronous SRAM:シンクロナスSRAM)と、CAMおよびSSRAMの動作を制御するサーチマシンコントローラとを有し、IPv4アドレスサーチ機能に加え、アドレスを上位と下位とに分割してサーチを実行するIPv6アドレスサーチ機能をそなえている。
【0013】
これにより、従来のIPv4アドレスサーチマシンから、特別なハードウェアを追加することなく、IPv6アドレスサーチが実現できる。
さらに、ハードウェアルーティングに必要とされる大容量かつ複数パラメータの検索を実現可能とするフレーム転送制御方法も提案されている(例えば特許文献2)。
【0014】
特許文献2記載のフロー検索回路は、各登録データの有効/無効の範囲を、各ビット毎に設定できる可変マスク機能を有するCAMを使用し、また、フィールドID検索部とフローID検索部に対しCAMは共通に使用されるようになっている。
これにより、大容量の設定が可能なRAMを用いたツリー検索と、複数のパラメータにより検索可能なCAMを用いたフロー検索を組み合わせることにより、ハードウェアルーティングに必要とされる大容量かつ複数パラメータの検索を実現できる。
【0015】
また、連想メモリを使用する方法も提案されている(例えば、特許文献3)。特許文献3には、検索データが複数のデータにまたがり、しかもそれら複数のデータの順序を入れ替える必要が生じる場合であっても高速検索を可能とする連想メモリが開示されている。
これにより、配列変換回路をそなえたものであるため、データの順序入れ替えのためのマイクロプロセッサをそなえる必要がなく、システムの簡単化,検索速度の向上が図られる。
【0016】
【特許文献1】
特開2002−290448号公報
【特許文献2】
特開2002−176437号公報
【特許文献3】
特開平7−226092号公報
【非特許文献1】
http://www.ietf.org/rfc/rfc2460.txtに記載されたプロトコル
【0017】
【発明が解決しようとする課題】
しかしながら、このアドレス検索方法を用いると、3個以上のCAM検索システム100b〜100dが必要となり、プロセッサの負荷が過大となりスループットが低下し、性能を十分に発揮できない。さらに、フィルタ検索等の各検索種別にそれぞれCAM検索システム100b〜100dを要し、メモリ領域を有効に利用しにくい。
【0018】
また、IPv6プロトコルは、広大なアドレス空間を認識するために、CAMデータ(連想メモリデータ)および検索キーの各ビット幅を、既存のビット幅よりも長いビット幅に規定している。従って、IPv6フレームに対応するルータを設計する場合、既存のCAM検索システム100b〜100dは、処理可能なビット幅が短いので、長いビット幅のIPv6アドレスを、1回で処理することができない。
【0019】
一方、CAM検索システム100b〜100dは、長いIPv6アドレスを例えば2個等の複数のアドレスに分割(分離)して、2回の検索を行なうこともできる(以下、2度引き検索と称する。)。この場合、CAM検索システム100b〜100dは、1回目の検索結果のインデックスを、2回目の検索キーとして入力される。このため、2回の検索に要する時間は、ヘッダ情報セルが生成される時間間隔(IPv6フレームを受信する間隔)よりも長いので検索時間について制約を受けるという第2の課題がある。
【0020】
そして、制御回路は、入出力ポートがいずれも連続的に常時アクセスされ、また、2回の書き込みおよび2回の読み出しを要するので、やはり、負荷が大きいという第3の課題がある。
そのうえ、特許文献1,2記載の装置は、いずれも、CAM検索システム100b〜100dの検索終了までのタイミング測定等の制御が必要であり、プロセッサの負荷が大きい。
【0021】
さらに、データの高速化にともない、従来のルータにおけるプロセッサの処理速度は相対的に遅延し、この遅延によってプロセッサのオーバーヘッドが生じる。このオーバーヘッドは検索キーの生成および検索結果のマージ処理に起因するものである。このため、オーバーヘッドの処理負荷を分散でき、かつプロセッサに都合のよいインターフェースをサポートすることが望まれている。
【0022】
本発明は、このような課題に鑑み創案されたもので、IPv6プロトコルに基づくルータ装置に設けられ、1個のCAM検索システムが、処理可能なビット幅よりも長いビット幅を有する検索キーを用いて、検索回数と検索速度とを高速化でき、かつプロセッサの処理負荷を軽減可能なルーティングエンジン装置,ルータ装置およびルーティングエンジン装置におけるメモリ検索方法を提供することを目的とする。
【0023】
【課題を解決するための手段】
このため、本発明のルーティングエンジン装置は、フレームのヘッダ情報に基づいてフレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置であって、フレームと、複数種類の検索処理に要する検索情報を保持する領域および複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサと、プロセッサにて変換されたヘッダ情報セルの検索情報に基づいて複数種類の検索処理を行ない複数の検索結果をヘッダ情報セルに書き込みヘッダ情報セルをプロセッサに対して送信する連想メモリ(CAM)とをそなえて構成されたことを特徴としている(請求項1)。
【0024】
また、本発明のルータ装置は、フレームのヘッダ情報に基づいてフレームの転送処理をする転送処理部とヘッダ情報を用いてフレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置とを有するルータ装置であって、ルーティングエンジン装置が、フレームと、複数種類の検索処理に要する検索情報を保持する領域および複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサと、プロセッサにて変換されたヘッダ情報セルの検索情報に基づいて複数種類の検索処理を行ない複数の検索結果をヘッダ情報セルに書き込みヘッダ情報セルをプロセッサに対して送信するCAM検索システムとをそなえるとともに、転送処理部が、CAM検索システムから送信されたヘッダ情報セルを上記のフレームに変換し、変換したフレームをルータ装置の外部に転送するように構成されたことを特徴としている(請求項2)。
【0025】
さらに、本発明のルーティングエンジン装置におけるメモリ検索方法は、フレームのヘッダ情報に基づいてフレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置におけるメモリ検索方法であって、フレームと、複数種類の検索処理に要する検索情報を保持する領域および複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサが、ヘッダ情報セルを送信するヘッダ情報セル送信ステップと、CAM検索システムが、ヘッダ情報セル送信ステップにて入力されたヘッダ情報セルに含まれる検索情報に基づいて複数の検索キーを生成する検索キー生成ステップと、CAM検索システムが、検索キー生成ステップにて生成された複数の検索キーに基づいて複数の検索処理を行なう検索処理ステップと、プロセッサが、検索処理ステップにて検索処理された複数の検索結果を表す複数の連想データを受信する検索結果受信ステップとをそなえたことを特徴としている(請求項3)。
【0026】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
(A)本発明の一実施形態の説明
図1は本発明の一実施形態に係るルータ(ルータ装置又は転送装置)の構成例を示す図である。この図1に示すルータ8は、フレーム(IPv4フレーム又はIPv6フレーム)のヘッダ情報に基づいてフレームの転送処理をする転送処理部とヘッダ情報を用いてフレームの転送に関する3種類の検索処理を行なうIPv6ルーティングエンジン(ルーティングエンジン装置又はルーティングエンジン部)とを有するものである。
【0027】
このルータ8は、以下に詳述するように、受信したフレームのヘッダに含まれる送信先アドレス(送信先IPv4アドレス又は送信先IPv6アドレス)に基づいてアドレス解決して出力ポートに転送する転送機能と、フィルタ検索,フロー検索およびトレース検索の3種類の検索処理機能とを有する。これらの転送および3種類の検索は、ともに、ルータ8に設けられた本発明のIPv6ルーティングエンジン10にて行なわれる。
【0028】
また、ルータ8は、検索処理の種別について、4以上の所望の検索項目を設定することもでき、設計方針又は仕様等に基づいて種々の検索種別を増加させることが可能である。以下において、一例として3種類の検索処理について説明する。
なお、以下の説明において、IPv4フレームおよびIPv6フレームの各々は、移動通信用のモバイルIPv4フレームおよびモバイルIPv6フレームをも含む。
【0029】
(1)3種類の検索(フィルタ検索,フロー検索およびトレース検索)
(1−1)フィルタ検索は、IPv6フレームが廃棄対象であるか否かを判定する処理であって、IPv6フレームの送信元MACアドレスおよび送信先MACアドレスと、送信元IPv6アドレスおよび送信先IPv6アドレスと、IPv6プロトコルの規定に基づいてフレーム転送又はフレーム破棄を行なう。
【0030】
(1−2)フロー検索とは、IPv6フレームのプライオリティの例えば8レベル(3ビット)のうちのいずれかを判定するための処理であって、IPv6フレームのうちの特定アドレスを有するフレームと、例えばIPv6プロトコルのような特定プロトコル種別を有するフレームとを検索するための処理である。なお、フローとは同一の条件により抽出されたフレーム群を表す。また、プライオリティのレベルは8以下又は8以上の段階に設定することもできる。
【0031】
(1−3)トレース検索とは、IPv6フレームがトレース対象であるか否かを判定する処理であって、ネットワーク又はリンクにおいて、障害発生を検出するための障害検出用データと、転送状況を診断するための診断用データとをそれぞれ送受信するための処理である。トレースとは、フレームの送信元アドレスおよび送信先アドレス間において転送された経路又はノード(ルータ,サーバ装置又はクライアント装置)の履歴を意味する。換言すれば、トレース検索とは、IPv6フレームの送信先IPv6アドレス又はIPv6フレームの送信元IPv6アドレスに基づいてIPv6フレームのうちの転送経路を出力するIPv6フレームを抽出するか否かを判定する検索処理を表す。
【0032】
また、トレース検索は、受信したIPv6フレームが、処理の対象であるか否かを判定する点においてフィルタ検索の一種でもある。一方、トレース検索は、トレースに要する情報の抽出後においても受信フレームをバッファ部(バッファ又はセルバッファ)に保持する半面、フィルタ検索は、受信フレームから障害発生通知を受信し障害ノード又は障害箇所に関する情報が抽出されると、その受信フレームはバッファ部から消去される点で異なる。
【0033】
(1−4)3種類の検索方法
これらの3種類の検索は、受信フレームの送信元IPv6アドレスおよび送信先IPv6アドレス等の検索対象データが、ルータ8に設けられたメモリに保持されているか否かを検索するものであり、検索対象データと同一データ又は検索対象データに対応するデータを保持している場合にその保持アドレスを出力する。
【0034】
(1−5)3種類の検索の開始契機
3種類の検索の開始契機については、フィルタ検索およびフロー検索はともにIPv6フレームを受信する毎に行なわれる。トレース検索の開始契機は、一定間隔又はルータ8が有するネットワーク又はリンクのトラヒック量が、ネットワークの伝送速度,伝送容量,保守管理およびユーザとの契約に基づいて決定された閾値を超えたときに開始する。
【0035】
(1−6)検索対象フレーム
ルータ8と外部装置(外部ノード)87との間において送受信されるフレームは、IPv4およびIPv6の両フレームである。このうちのIPv4フレームは、インターフェース部90および本体スイッチ部91において処理され、また、IPv6フレームは、IPv6ルーティングエンジン10において処理される。
【0036】
(1−7)3種類の検索を行なうモジュール
3種類の検索は、IPv6ルーティングエンジン10に設けられた後述するCAM検索システム1において行なわれ、また、転送機能は、IPv6ルーティングエンジン10に設けられたネットワークプロセッサ(NDP10c)において行なわれる。すなわち、CAM検索システム1が、処理負荷の大きい3種類の検索に特化し、これにより、NDP10cの負荷が軽減されるようになっている。
【0037】
ここで、CAM検索システム1にて参照される登録データ(蓄積データ)の登録方法と、その登録データを用いた検索方法について概略的に説明する。
登録データは、図3(a),図3(b)および図4にそれぞれ示すCAMアレイ3aおよびMEMアレイ4aと接続された入出力インターフェース部3c,4cから、データを入力することにより、あるいは管理者がデータを登録したメモリを設置することにより行なわれる。
【0038】
さらに詳述すると、登録データの登録方法は、1個のCAMアレイ3aが登録可能なビット幅を有するデータの場合、参照される登録データをCAMアレイ3aに登録し、検索結果(例えば出力ポート情報)をMEMアレイ4aに登録する。このMEMアレイ4aのメモリアドレスは、CAMアレイ3aのメモリアドレスと同一に割り当てられ(後述する図6,図11(a),図11(b)参照)、CAMアレイ3aとMEMアレイ4aとは共通のエントリアドレスを有する。従って、MEMアレイ4aは、CAMアレイ3aのエントリアドレスと同一のエントリアドレスに、読み出しのためのデータを保持している。すなわち、MEMアレイ4aは、CAMアレイ3aに入力されたエントリアドレスと一対一に対応させて検索結果(例えば出力ポート情報)を保持しているのである。
【0039】
これにより、検索に必要なデータ(CAMエントリ)がCAM検索システム1に入力され、CAM部3において、制御回路2から入力されたデータ(検索キー)がCAMアレイ3a自身に保持されているか否かが検索される。そして、データが保持されている場合、CAM部3が検索結果アドレスを出力し、このアドレスがMEM部4に入力される。MEMアレイ4aはCAMアレイ3aに入力(登録)したCAMエントリと同一アドレスに一対一に又は多対一に対応させて登録したデータを出力するのである。すなわち、この出力されたデータが検索結果(例えば出力ポート情報)である。
【0040】
また、CAM部3は、CAM検索システム1が処理可能なIPv6アドレスのビット幅よりも長いビット幅を有するデータを検索する場合、長いデータを2分割し、前半と後半との2回の検索を行なう。この2回の検索結果を関連付けるために、本発明のルータ8はインデックスポインタを用いている。
これらの登録および検索について詳述する。以下、図1に示すインターフェース部90および本体スイッチ部91について説明し、その後IPv6ルーティングエンジン10について説明する。
【0041】
(2)ルータ8の構成
図1に示すルータ8は、インターフェース部90と、本体スイッチ部91と、IPv6ルーティングエンジン10とをそなえて構成されている。
(2−1)インターフェース部90
インターフェース部90は、外部装置87とルータ8とをインターフェースするものであって、CPU90a,ROM88,RAM89,第1スイッチ部90bおよびインターフェース処理部90cをそなえて構成されている。
【0042】
ここで、外部装置87は、ルータ8の入力ポートおよび出力ポートのそれぞれに接続されIPv4フレームおよびIPv6フレームをともに送受信するルータ又はサーバ装置又はクライアント装置であって、100Mbps(Mega Bit Per Second)イーサネッインターフェース又は1Gbps(Giga Bit Per Second)イーサネット(R)インターフェース等のインターフェースを有する。以下の説明において、インターフェースとは、特に断らない限り、フレームフォーマットの変換を意味する。
【0043】
CPU90aは、ROM88およびRAM89と協働して、インターフェース部90c,第1スイッチ部90bを制御するものである。
インターフェース処理部90cは、ルータ8自身と、100Mbpsイーサネット(R)インターフェース又は1Gbpsイーサネット(R)インターフェース等の外部装置87との間におけるフレーム送受信と、ルータ8内部の第1スイッチ部90bとの間におけるフレーム送受信とを行なうものであって、フレームを送受信するための複数のインターフェースポートを有する。
【0044】
なお、インターフェース部90は、各ポートの接続先および各ポートの配置位置等に応じて複数のサブインターフェース部として構成されてもよい。
これにより、インターフェース部90は、複数の異なるインターフェースのフレームを処理できる。
次に、第1スイッチ部90bは、受信フレームがIPv4フレームの場合はそのIPv4フレームについてアドレス解決しその解決したアドレスを外部装置87に送信するとともに、受信フレームがIPv6フレームの場合はそのIPv6フレームを本体スイッチ部91に送信するものであって、IPv4フレームについてのルーティングテーブル90dとIPv4フレームについてアドレス解決するルーティングテーブルとを有する。
【0045】
また、第1スイッチ部90bは、本体スイッチ部91にてスイッチされたIPv4フレーム又はIPv6フレームを受信し各フレームをインターフェース処理部90cに送信する。
これにより、外部装置87が送信したIPv4フレームは、インターフェース部90のポートを介して第1スイッチ部90bにおいて折り返し転送によりアドレス解決される。また、本体スイッチ部91およびIPv6ルーティングエンジン10のそれぞれにて折り返し転送されたIPv4フレームは、第1スイッチ部90bをそのまま通過させられて外部装置87に転送される。
【0046】
また、外部装置87が送信したIPv6フレームは、本体スイッチ部91を介してIPv6ルーティングエンジン10に転送される。一方、本体スイッチ部91から送信されたIPv6フレームは、そのまま外部装置87に送信される。
(2−2)本体スイッチ部91
本体スイッチ部91は、インターフェース部90とIPv6ルーティングエンジン10との間におけるフレームをスイッチ又は中継するものであって、インターフェース部90およびIPv6ルーティングエンジン10間においてIPv4およびIPv6の各フレームを送受信する第2スイッチ部91aと、この第2スイッチ部91aを制御する制御部(CPU91b,ROM88およびRAM89)とをそなえて構成されている。
【0047】
ここで、第2スイッチ部91aは、IPv4フレームについてアドレス解決するルーティングテーブル91cを有する。
そして、インターフェース部90と本体スイッチ部91とが協働することにより、CAM検索システム1から送信されたヘッダ情報セルを上記のIPv6フレームのヘッダに変換し、この変換したIPv6フレームを外部ネットワークに接続された外部装置87に転送する転送処理部(90,91)として機能している。
【0048】
また、この転送処理部(90,91)は、外部ネットワークに接続された外部装置87とNDP10cとの間のフレームフォーマットを変換し、IPv4フレームおよびIPv6フレーム等の複数の受信フレームのうちのIPv4フォーマット(第1フォーマット)を有するIPv4フレーム(第1フレーム)を外部装置87に対して折り返し転送するとともにIPv4フレームおよびIPv6フレーム等の複数の受信フレームのうちのIPv6フォーマット(第2フォーマット)を有するIPv6フレーム(第2フレーム)をNDP10cに出力し、NDP10cからのIPv6フォーマット(第3フォーマット)を有するIPv6フレーム(第3フレーム)を外部装置87に対して送信するようになっている。
【0049】
これにより、第1スイッチ部90bと同様に、外部装置87からのIPv4フレームは、ルーティング又はアドレス解決されて折り返し転送される。また、本体スイッチ部91は、IPv6フレームを受信すると、IPv6フレームをIPv6ルーティングエンジン10に送信する。また、IPv6ルーティングエンジン10からのIPv6フレームは、そのまま、ルータ8を通過して外部装置87に送信される。
【0050】
なお、インターフェース部90は、複数のサブインターフェース部から構成された場合は、各サブインターフェース部を特定したフレームの送受信ができるようになっている。
(3)IPv6ルーティングエンジン10
IPv6ルーティングエンジン10のフレームに関する処理は、受信したIPv6フレームについての受信フォーマット処理(第1フレーム処理)と、IPv6フレームのアドレス解決および3種類の検索についての検索処理と、IPv6フレームのヘッダを書き替えるヘッダ処理と、送信するIPv6フレームについての送信フォーマット処理(第2フレーム処理)との主に4種類であり、次の(3−1)〜(3−4)に説明する。また、3種類の検索処理は、CAM検索システム1によって行なわれ、(3−2−2)に説明する。3種類の検索処理以外の各処理は、NDP10cによって行なわれる。
【0051】
(3−1)第1フレーム処理
第1フレーム処理は、受信したIPv6フレームのヘッダ情報の抽出と、IPv6フレームのペイロード(ペイロードデータ)の一時的な保持と、抽出したヘッダ情報にルータ8の装置内部情報の付加とをNDP10cにて行なう。
(3−2)検索処理
検索処理は、IPv6フレームのアドレス解決処理と、3種類の検索処理との両処理を含む。
【0052】
(3−2−1)アドレス解決
アドレス解決は、受信したIPv6フレームのヘッダの送信先IPv6アドレスに基づいて出力ポートを選択することである。
(3−2−2)本発明の3種類の検索方法(ルーティングエンジン装置におけるメモリ検索方法)
本発明のルーティングエンジン装置におけるメモリ検索方法は、フレームのヘッダ情報に基づいてフレームの転送に関する3種類の検索処理を行なう。ここで、3種類の検索のうちのフィルタ検索とフロー検索とは、いずれも、IPv6ルーティングエンジン10にて、各IPv6フレームについて行なわれる。トレース検索は、設定時に、各IPv6フレームについて行なわれる。管理者又は管理プログラムが、障害データおよび診断データの収集又は診断を必要と判定したときに設定される。
【0053】
ヘッダ情報セルは、NDP10cによってCAM検索システム1に送信され、このCAM検索システム1において、ヘッダ情報セルに含まれる検索情報に基づいて検索される。その後、この検索結果は、CAM検索システム1によってヘッダ情報セルに書き込まれ、NDP10cに送信される。
図7は本発明の一実施形態に係るヘッダ情報セルのフォーマット例を示す図であって、この図7に示すヘッダ情報セルは、フィルタ検索,フロー検索およびトレース検索の各検索種別の識別情報と各検索結果データとのそれぞれの保持領域を有するメモリに保持されたデータである。このヘッダ情報セルは、受信したIPv6フレーム毎にNDP10cによって生成され、IPv6ルーティングエンジン10のCAM検索システム1に設けられたバッファに送信される。そして、ヘッダ情報セルは、CAM検索システム1によって検索キー(CAMに入力するCAMエントリデータ)に変換され、この検索キーを用いて3種類の検索が行なわれる。
【0054】
従って、ヘッダ情報セルは、NDP10c,CAM検索システム1およびIPv6ルーティングエンジン10がそれぞれ書き込みおよび読み出し可能になっている。
これにより、各IPv6フレームは、破棄対象か否かが判定され、そのIPv6フレームのプライオリティが抽出され、また、所定期間、IPv6フレームは、トレース検索によってネットワークにおける障害発生の有無が検出される。
【0055】
(3−3)ヘッダ処理
ヘッダ処理は、ルーティング検索により決定されたIPv6フレームの出力ポートの書き替えと、IPv6フレームのヘッダの書き替えとを行なう。
(3−4)第2フレーム処理
第2フレーム処理は、NDP10cから第3スイッチ部10bに対してIPv6フレームを送信するためのフォーマット処理であって、第1フレーム処理にて保持されたペイロードの読み出しと、そのペイロードを含む出力IPv6フレームの再生成とを行なう。
【0056】
なお、上記の4種類(第1フレーム処理,検索処理,ヘッダ処理および第2フレーム処理)の処理については、図8(a),図8(b)を参照して後述する。
(3−5)IPv4フレームおよびIPv6フレームのルーティング検索
これにより、ルータ8に入力されたIPv4フレームは、上記の第1スイッチ部90bと第2スイッチ部91aとにてそれぞれルーティング検索されて折り返し転送される。
【0057】
一方、IPv6フレームは、インターフェース部90,本体スイッチ部91を介してIPv6ルーティングエンジン10に入力され、NDP10cによってそのIPv6フレームについてのルーティング検索される。
(3−6)ヘッダ情報セルを用いた本発明のルーティングエンジン装置におけるメモリ検索方法
本発明のルーティングエンジン装置におけるメモリ検索方法は、NDP10cが、CAM検索システム1に対して3種類の検索処理に要する検索情報を保持する領域および3種類の検索結果を書き込むための領域を含むヘッダ情報セルを送信する(ヘッダ情報セル送信ステップ)。
【0058】
次に、CAM検索システム1が、ヘッダ情報セル送信ステップにて入力されたヘッダ情報セルに含まれる検索情報に基づいて3種類の検索キーを生成する(検索キー生成ステップ)。
そして、CAM検索システム1が、検索キー生成ステップにて生成された3種類の検索キーに基づいて3種類の検索処理を行なう(検索処理ステップ)。
【0059】
また、NDP10cが、検索処理ステップにて検索処理された3種類の検索結果を表す3種類の連想データを受信する(検索結果受信ステップ)。
この連想データとは、CAM検索システム1が出力した検索結果データであって、CAM検索システム1において、CAM検索システム1に入力された検索データと一致するデータが保持されている場合に出力されるその一致するデータにアドレスを介して対応付けられたデータである。
【0060】
(3−6−1)フィルタ検索
これにより、フィルタ検索の場合は、NDP10cが、図7に示すヘッダ情報セルの9,10を付された領域(以下、領域9,10と表示する。)に、受信フレームから抽出した送信元IPv6アドレスおよび送信先IPv6アドレスを書き込み、そして、この送信元および送信先の各IPv6アドレスを含むヘッダ情報セルを、CAM検索システム1に対して渡す。そして、CAM検索システム1は、受信フレームに含まれる送信元IPv6アドレス,送信先IPv6アドレスと、予め保持した検索対象用のIPv6アドレスとを比較する。
【0061】
ここで、両IPv6アドレスが一致(ヒット)した場合には、CAM検索システム1は、受信フレームを廃棄対象と認識し、図8に示すテーブル2の連想データの「discard」をアクティブにする。また、ヘッダ情報セル全体をみたときは、図7に示すヘッダ情報セルの最上段の「廃棄」領域のビットがオン(アクティブ)にされ、このヘッダ情報セルがNDP10cに返される。以後、NDP10cは、その「廃棄」対象のビットの処理を停止するのである。
【0062】
このように、フィルタ検索時の検索対象データに、IPv6アドレスが用いられる。なお、図5に示すCAMエントリに含まれる他のフィールドデータ(例えば送信元ポート番号等)を検索対象とすることもできる。
(3−6−2)フロー検索
また、フロー検索の場合は、CAM検索システム1は、ヘッダ情報セルに8レベルのいずれかの値をプライオリティ領域に書き込み、ヘッダ情報セルをNDP10cに返す。
【0063】
なお、フィルタ検索およびフロー検索の開始の各契機は、ヘッダ情報セルの送信とともに、常時、行なわれる。
(3−6−3)トレース検索
トレース検索は、障害発生の有無を判定するので、必ずしも常時行なわれるものではない。このトレース検索は、ルータ8が障害発生を検出するためのトレースモードに移行したときに行なわれる。
【0064】
(3−6−4)従来の検索方法と本発明のルーティングエンジン装置におけるメモリ検索方法との比較
従来の検索方法は、1回の検索依頼に対して1個の検索結果のみが得られた。すなわち、従来の検索は、フィルタ検索およびフロー検索のそれぞれについて2個の検索テーブルを要し、また、2個の検索テーブルのそれぞれを読み出して検索結果を書き込みしていたので、処理遅延が生じることがあった。
【0065】
これに対して、本発明のルーティングエンジン装置におけるメモリ検索方法によれば、NDP10cがヘッダ情報セルをCAM検索システム1に1回送信することにより、CAM検索システム1に対して3種類の検索を依頼でき、また、CAM検索システム1から受信したヘッダ情報セルから3種類の検索結果を取得できる。さらに、NDP10cは、受信したヘッダ情報セルに含まれる検索結果以外の情報も参照することができる。
【0066】
従って、CAM検索システム1が、3種類の検索に要する処理を支援するので、NDP10cの負荷が軽減され、高速かつ大容量のIPv6フレームのトラヒックを効果的に処理できる。
なお、NDP10cの機能は、通常のプロセッサ又はCPUにより実現され、また、NP(Network Processor)又はNPU(Network Processing Unit)と同義である。
【0067】
(4)IPv6ルーティングエンジン10の構成
IPv6ルーティングエンジン10は、フレームのヘッダ情報に基づいてフレームの転送に関する3種類の検索処理を行なうものであって、CPU10a,ROM88およびRAM89と、第3スイッチ部10bと、NDP10cと、CAM検索システム1とをそなえて構成されている。IPv6ルーティングエンジン10は、IPv6アドレス宛先ポート解決をも行なう。
【0068】
(4−1)CPU10a,ROM88およびRAM89
CPU10a,ROM88およびRAM89は、協働することにより、第3スイッチ部10b,NDP10cおよびCAM検索システム1のそれぞれを制御するものである。
(4−2)第3スイッチ部10b
第3スイッチ部10bは、本体スイッチ部91からのIPv4フレームを受信した場合は、IPv4フレームをルーティングおよびアドレス解決して折り返し転送し、また、IPv6フレームを受信した場合は、IPv6フレームをNDP10cに送信するものである。第3スイッチ部10bは、受信IPv4フレームについてルーティングおよびアドレス解決のためのルーティングテーブル10dとを有する。
【0069】
また、第3スイッチ部10bは、NDP10cからのIPv6フレームについてのルーティングおよびアドレス解決されたIPv6フレームを受信しそのIPv6フレームを本体スイッチ部91に送信する。
これにより、第3スイッチ部10bは、本体スイッチ部91およびIPv6ルーティングエンジン10間においてIPv4フレームを折り返し転送し、また、IPv6フレームをNDP10cに送信する。
【0070】
(4−3)NDP10c
NDP10cは、IPv6フレームと、3種類の検索処理に要する検索情報を保持する領域および3種類の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するものである。
このNDP10cは、IPv6フレームに含まれるヘッダ情報とルータ8の装置内部情報とを含むヘッダ情報セルを、3種類の検索処理に要する検索情報として生成するようになっている。この装置内部情報とは、例えば図7に示すように、3種類の検索処理を識別するための識別情報(3種類の検索処理について処理内容を識別するための識別情報。つまり、識別情報は各々の検索結果を表す。),受信したIPv6フレームの送信元IPv6アドレスおよび送信先IPv6アドレス等の情報である。
【0071】
具体的には、NDP10cは、CAM検索システム1との間におけるヘッダ情報セルの入出力と、IPv6フレームについてのアドレス解決およびプレフィクス検索と、第3スイッチ部10bとの間のIPv6フレーム送受信機能との各処理を行なう。ここで、プレフィクスはネットワーク識別子であり、IPv6アドレスの前半に格納されたデータである。
【0072】
また、NDP10cのIPv6フレームとヘッダ情報セルとを相互変換するためのメモリ(メモリ領域)は、CAM検索システム1に設けられたバッファ部5又は別個のバッファ部(図示省略)を設けてもよい。
ここで、ヘッダ情報セルの入出力(処理)機能は、NDP10cに加えてCPU10a(又はNDP10c),ROM88およびRAM89が協働することにより実現される。また、アドレス解決機能およびプレフィクス機能は、いずれも、CPU10a,RAM89およびルーティングテーブル91dの各々の協働により実現される。このルーティングテーブル91dはIPv6フレームについてのルーティングテーブルである。さらに、第3スイッチ部10bとの間のIPv6フレームの送受信機能は、NDP10cに加えてCPU10a(又はNDP10c),ROM88およびRAM89が協働することにより実現される。
【0073】
これにより、ヘッダ情報セルの送受信機能について、NDP10cは、CAM検索システム1に対してヘッダ情報セルを渡す(検索依頼)とともに、CAM検索システム1からヘッダ情報セルを返される(結果受信)。さらに、NDP10cは、第3スイッチ部10bからIPv4フレームを受信し、また、CAM検索システム1にてアドレス解決されたデータリンクレイヤアドレスを有するIPv6フレームを第3スイッチ部10bに対して送信する。
【0074】
従って、NDP10cは、ルーティングに関する処理を行なうために、1種類の受信IPv6フレームについて、その受信IPv6フレームのヘッダ情報とルータ8の装置内部情報とを含む固定長フォーマットのセル(ヘッダ情報セル)形式を用いて、IPv6フレームに関する情報を内部処理している。
このように、NDP10cは、フィルタ検索,フロー検索およびトレース検索を支援するとともに、IPv6フレームの経路検索に基づくアドレス解決を支援する。
【0075】
(4−4)ヘッダ情報セルのフォーマット
図7は本発明の一実施形態に係るヘッダ情報セルのフォーマット例を示す図であって、CAM検索システム1のバッファに保持されているデータ例が表示されている。この図7に示すヘッダ情報セルは、NDP10cが処理するセルのサイズに適合するように固定長のフォーマットを有し、そのサイズの一例は、32ビット幅で24行である。
【0076】
ここで、2〜10を付された領域(領域2〜10)は、3種類の検索を識別する検索キー(Search Key:検索キーデータ)の作成のために参照する領域である。
また、11〜16を付された領域(以下、領域11〜16と表示する。)は、CAM検索システム1が書き込む領域であって、検索結果およびステータス信号を一緒にマージ(複数のデータを1セルデータに集約,併合又は結合すること。)して値を書き込む領域である。なお、領域2〜16以外の領域(影付きで表示された領域)は、CAM検索システム1による書き込みおよび読み出しが不要な領域を表す。
【0077】
換言すれば、NDP10cは、検索に必要なデータをヘッダ情報セルの領域2〜10に書き込み、この書き込みしたヘッダ情報セルをCAM検索システム1に渡す(入力する)。また、CAM検索システム1はその領域2〜10のデータを用いて検索し、その検索結果を領域11〜16に書き込む。そして、CAM検索システム1は、検索結果が書き込まれたヘッダ情報セルをNDP10cに対して出力する(返す)。
【0078】
これにより、NDP10cは、フィルタ検索,フロー検索およびトレース検索の各検索結果を知る。また、NDP10cがCAM検索システム1に対して1個のヘッダ情報セルを渡すことが検索依頼に相当し、CAM検索システム1がNDP10cに対して3種類の検索結果をマージされたヘッダ情報セルを返すことが検索結果の通知に相当する。
【0079】
ヘッダ情報セルについてさらに詳述すると、領域11(discard)はフレーム廃棄を指示するビットであり、このビットがH(High:アクティブを表す)であると、そのフレームが廃棄対象であることを表す。また、領域12(Hit Flag)は入力フレームがプライオリティを含むことを表し、領域13(priority)はフレームのプライオリティを8レベル(3ビット)で表す。これらの領域12,13によってプライオリティを得るためのフロー検索が行なわれる。さらに、領域14(Hit Flag)はフレームがトレース対象であるか否かを1ビットで表すための領域である。また、領域15(trace−mode)はトレースモードを表す。なお、領域16(CAM Error)はCAM検索システム1が正常でない動作をしていることを表す。
【0080】
これにより、NDP10cがCAM検索システム1に対してヘッダ情報セルを送信すると、CAM検索システム1は、ヘッダ情報セルから検索に必要な情報を含む検索キーを生成する。検出キーは、CAMに入力するCAMエントリデータであって、この検索キーを用いてCAM検索システム1がフィルタ検索を開始する。また、フィルタ検索されている間に、CAM検索システム1は、フロー検索に必要な情報を含む検索キーを生成してフロー検索を開始する。同様に、フロー検索されている間に、CAM検索システム1は、トレース検索に必要な情報を含む検索キーを生成してトレース検索を開始する。
【0081】
そして、CAM検索システム1は、フロー検索又はトレース検索と並行して、フィルタ検索の結果を含む連想データを出力し、さらに、検索処理して検索結果を出力するまでに要する時間が経過した後に得られるフロー検索の結果と、やはり検索結果が出力されるまでに要する時間後に得られるトレース検索の結果とをそれぞれ連想データとして出力する。また、3種類の検索結果を含む連想データは、1個のヘッダ情報セルにマージされ、マージされたヘッダ情報セルがNDP10cに返される。
【0082】
なお、フィルタ検索とフロー検索との2種類の検索のみを行なう場合においても、フィルタ検索およびフロー検索の各検索結果がマージされてヘッダ情報セルが出力される。
このように、NDP10cからCAM検索システム1に対して、1回の検索依頼メッセージを送信し、CAM検索システム1が3種類の検索を行ない、かつ3種類の検索結果をNDP10cに送信するので、NDP10cの負荷が大幅に減少しNDP10cを支援できる。
【0083】
(5)CAM検索システム1
CAM検索システム1は、NDP10cにて変換されたヘッダ情報セルの検索情報に基づいて3種類の検索処理を行ない3種類の検索結果をヘッダ情報セルに書き込みヘッダ情報セルをNDP10cに対して送信するものである。CAM検索システム1は、負荷の大きい(重い)検索処理を支援し、かつNDP10cとの間においてヘッダ情報セルを入出力するようになっている。
【0084】
図2は本発明の一実施形態に係るCAM検索システム1のブロック図である。この図2に示すCAM検索システム1は、IPv6フレームについて廃棄又は通過を判定するフィルタ検索と、IPv6フレームのプライオリティを判定するフロー検索と、IPv6フレームの送信元IPv6アドレス又は送信先IPv6アドレスに基づいてIPv6フレームの転送経路を出力する対象となるIPv6フレームを抽出するか否かを判定するトレース検索との各検索処理を行ない、各検索結果をヘッダ情報セルに書き込むものであって、書き込みおよび読み出し部(以下、書き込み/読み出し部と表記する。)1aと、CAM部(検索結果保持部)3と、MEM部(連想データ保持部)4と、制御回路(送受信制御回路)2とをそなえて構成されている。なお、図2に示す符号のうちの上述したものと同一符号を有するものは、それらと同一又は同一機能を有する。
【0085】
(5−1)書き込み/読み出し部(書き込みおよび読み出し手段)1a
書き込み/読み出し部1aは、制御回路2,CAM部3およびMEM部4のそれぞれのデータについて、書き込みおよび読み出しをするものであって、例えばLSI(CAM−LSI)が用いられ、データ処理の高速化が図られている。
(5−2)CAM部3
図3(a)は本発明の一実施形態に係るCAM部3のブロック図である。この図3(a)に示すCAM部3は、参照用の複数の登録データを保持し複数の登録データのうちの制御回路2にて生成された検索キーと一致する登録データのメモリアドレスを出力するものである。具体的には、このCAM部3は、アドレス解決と、3種類の検索(フィルタ検索,フロー検索およびトレース検索)と、各検索結果を示すステータス信号の出力とを行なうものであって、CAMアレイ3aと、CAMメモリ制御部3bと、入出力インターフェース部(I/O Interface)3cとをそなえて構成されている。なお、このCAM部3は、例えばLSIによって実現される。また、CAM部3は、3種類の検索処理のうちの1種類又は2種類の検索処理を行なうようにもできる。
【0086】
ここで、CAMアレイ3aは、メモリセルが配列されたものであって、p行q列(p,qはともに自然数を表す。)のメモリセルを有するテーブルにより構成されている。
図3(b)は本発明の一実施形態に係るCAMアレイ3aのデータ例を説明するための図である。この図3(b)に示すCAMアレイ3aは、各アドレス(例えば0x0000)に、メモリセル個数に相当する個数のメモリセル(288ビット)を保持している。ここで、「0x」で始まる数値は16進数を表す。
【0087】
次に、図3(a)に示すCAMメモリ制御部3bは、検索キー生成部6(図2参照)から受信した検索キーをCAMアレイ3aに入力し、また、CAMアレイ3aにて検索演算されたメモリセルのアドレス(Address)とステータス信号(Status)とをそれぞれ検索結果として出力するものである。このCAMメモリ制御部3bは、ヘッダ情報セルの連続したメモリ領域に3種類の検索テーブルを登録する登録部として機能し、登録された3種類のCAMデータ(検索種別コードを含む)をCAM部3に保持するようになっている。
【0088】
また、ステータス信号は、CAMアレイ3aに、一致データが1個保持されていることを表す「ヒット」と、一致データが複数保持されていることを表す「マルチヒット」と、一致するデータがないことを表す「ミスヒット」とをそれぞれ出力する。
入出力インターフェース部3cは、制御回路2によるCAMアレイ3aに保持されたアドレスおよびデータの書き込みおよび読み出しを制御するものである。例えば、書き込み/読み出し部1aは、通常のメモリと同様に、CAMアレイ3aのメモリアドレスを指定しそのメモリアドレスに保持されたデータを読み出し、また、指定したメモリアドレスにデータすなわちCAMエントリを書き込むのである。そして、入出力インターフェース部3cは、CAMアレイ3aにヘッダ情報セル,ルーティングテーブルおよびアドレス解決テーブル等のデータを登録し、また、CAMアレイ3aの保持データを読み出してデータ登録内容を確認する。
【0089】
これにより、CAMメモリ制御部3bは、制御回路2から検索キーを指定して入力されると、検索キーについてCAMアレイ3aを検索し、検索キーに一致するCAMエントリを保持している場合はそのCAMエントリの保持アドレスと、ヒット(又はマルチヒット)を示すステータス信号とを出力する。また、CAMメモリ制御部3bは、検索キーに一致するCAMエントリを保持していない場合はミスヒットを表すステータス信号を出力する。
【0090】
なお、検索キーとCAMエントリとは、共通のデータフォーマットを有し、また、データとしてIPv6アドレスを含むことができる。
また、これにより、IPv6フレームについてのアドレス解決と、3種類の検索処理とが実現できる。
(5−3)MEM部4
MEM部4は、CAM部3のアドレス配置と同一のアドレス配置を有しCAM部3から出力されたメモリアドレス(検索結果アドレス)に保持されたデータを出力するものである。このMEM部4は、MEM部4自身又はCAM部3に保持した3種類の検索結果を含む連想データを制御回路2に入力する。MEM部4は、MEM部4自身に保持しているデータについての検索機能を有していない点で、保持データについて検索可能なCAM部3と異なる。また、機能ブロックはCAM部3に示すブロックと類似している。
【0091】
図4は本発明の一実施形態に係るMEM部4のブロック図である。この図4に示すMEM部4は、MEMアレイ4aと、MEMメモリ制御部4bと、入出力インターフェース部4cとをそなえて構成されている。各機能は例えば外付けのIC又はチップデバイスにより実現される。
ここで、MEMアレイ4aは、p行q列(p,qはともに自然数を表す。)のメモリセルを有し、図3(b)に示すCAM部3と同様に、各メモリアドレスに、メモリセル個数に相当する個数のメモリセルを有する。このMEMアレイ4aは、連想データおよびインデックス等の検索テーブル(後述する)に定義された各種のデータを予め保持しており、また、メモリアドレスの配列は、CAMアレイ3aのメモリアドレスの配列と同一にされている。
【0092】
また、MEMメモリ制御部4bは、CAM部3から入力されたメモリアドレスをMEMアレイ4aに入力するとともにMEMアレイ4aにてルックアップされた保持データを出力するものである。なお、MEMメモリ制御部4bは、メモリアドレスに加えてCAM部3から保持データの読み出し又は書き込みを制御するための制御信号も併せて入力されるようになっている。
【0093】
さらに、入出力インターフェース部4cは、CAM部3からのメモリアドレスおよび制御信号の入力に従って書き込み/読み出し部1aとの間においてデータの書き込みおよび読み出しを制御するものであって、MEMアレイ4aにデータを登録し、また、MEMアレイ4aの保持データを読み出してデータ登録を確認する。
【0094】
そして、MEM部4は、検索結果の各情報データを制御回路2の検索結果処理部7に入力するようになっている。
これにより、検索動作は、CAM部3は、入力された検索キーを用いてCAMエントリ(CAM部3に入力されるデータ)に照らして検索し、一致したデータを保持している場合は、その一致したデータが保持されたCAM部3自身のメモリアドレスをMEM部4に入力する。
【0095】
MEM部4は、CAM部3から入力されたCAM部3のメモリアドレスと同一値を有するMEM部4のメモリアドレスに保持されたデータを読み出し、その読み出したデータを検索結果として出力する。
(5−4)制御回路2
図2に示す制御回路2は、NDP10cからのヘッダ情報セルに基づいて3種類の検索キーを生成するとともに、3種類の検索キーについての3種類の検索結果をNDP10cに対して送信するものである。この図2に示す制御回路2は、NDP10cからのヘッダ情報セルを入力されると、CAM部3に対して検索キーを生成して送信(TX)し、また、CAM部3によって検索結果を書き込まれたヘッダ情報セルを受信(RX)し、そのヘッダ情報セルを再度NDP10cに対して送信するものであって送受信回路として機能しており、この制御回路2は、バッファ部5と、インターフェース回路2a,2bと、検索キー生成部6と、検索結果処理部7とをそなえて構成されている。
【0096】
ここで、バッファ部5は、ヘッダ情報セルを保持するものであり、各種のデータを一時的に保持しており、少なくともヘッダ情報セルを保持可能な領域を有する。
また、バッファ部5は、IPv6フレームの転送に関する3種類の検索種別を表す検索識別と、3種類の検索種別の各検索結果を表す検索結果と、3種類の検索種別に要する検索情報を表す検索情報と、IPv6フレームのヘッダ情報を表すヘッダ情報との各領域を含むヘッダ情報セルを保持する。
【0097】
なお、バッファ部5は、ヘッダ情報セルのほかに、NDP10cから受信したIPv6フレームを保持するようにもできる。このバッファ部5の詳細については、図13を参照して後述する。
また、インターフェース回路2aは、NDP10cからのデータの取り込みタイミングを調整する機能を有し、また、好ましくは、パリティチェック機能とバックプレッシャー機能とを有する。インターフェース回路2bは、バッファ部5に保持されたデータの出力タイミングを調整してNDP10cに出力するものであり、また、パリティ付加機能およびバックプレッシャーを受信して出力を停止する機能を有することもできる。
【0098】
さらに、検索キー生成部6は、バッファ部5に保持されたヘッダ情報セルから抽出した情報に基づいて3種類の検索処理を表す3種類の検索キーを生成するものである。
また、検索結果処理部7は、検索キー生成部6にて生成された3種類の検索キーについての検索結果を含む3種類の連想データに基づいてヘッダ情報セルを生成しヘッダ情報セルをNDP10cに対して送信するものである。
【0099】
具体的には、検索結果処理部7は、3種類の連想データをバッファ部5に書き込むことにより、ヘッダ情報セルに検索結果を反映させるようになっており、CAM検索システム1からの検索結果データについて検索要否を判定し、各検索結果データを並び替え処理するとともに、上記3種類の検索結果とステータス信号とを、バッファ部5においてヘッダ情報セルとマージする。検索結果処理部7は、処理後の情報データを、検索キー生成部6に対してフィードバックするようにもなっている。
【0100】
(5−5)検索キーとヘッダ情報セルと検索テーブルとの関係
図2に示すNDP10cとCAM検索システム1との間のインターフェースにおいて送受信されるデータはヘッダ情報セルである。また、制御回路2からCAM部3に送信されるデータは検索キーであり、CAM部3からMEM部4に送信されるデータは検索結果アドレスである。さらに、MEM部4から制御回路2へ送信されるデータは、検索結果(連想データ)である。
【0101】
検索テーブルは、CAM部3およびMEM部4のそれぞれに予め保持されたデータであって、共通のアドレスを介して対応する。これらは、CAM部3およびMEM部4における3種類の検索処理に必要なデータ(CAMエントリおよびMEMエントリ)として構成されたものである。
検索キー生成部6は、ヘッダ情報セルに含まれる検索キーを生成するために必要な情報を抽出し、その抽出した情報を検索キーに変換する。この検索キーは、検索テーブルの保持データであるCAMエントリ(CAMエントリデータ)と比較されることであって検索が実行される。
【0102】
(5−6)CAM部3,MEM部4および検索テーブルの関係
検索テーブルに保持されるデータは、CAM部3が保持するデータと、MEM部4が保持するデータとが相互に関連付けられた1セットのデータ(データ群)から構成されている。換言すれば、CAM部3に入力(登録)するCAMエントリと、MEM部4に入力(登録)するMEMエントリ(MEMエントリデータ)との各データが、この検索テーブルによって、対応付けられて、一括して参照されるようになっている。この検索テーブルを構成するデータフォーマットの各内容(データ定義)と、実際のデータ例とをそれぞれ、図5,図6(a)および図6(b)を参照して詳述する。
【0103】
(5−6−1)検索テーブル例
図5は本発明の一実施形態に係る検索テーブルを説明するための図である。この図5に示す検索テーブル9は、1回目のCAMエントリ9aと、1回目のMEMエントリ9bと、2回目のCAMエントリ9cと、2回目のMEMエントリ9dとの4領域を対応付けたものである。また、この検索テーブル9を用いてフィルタ検索についての検索結果を一例として説明する。フロー検索およびトレース検索の検索結果についてもフィルタ検索の検索結果とほぼ同一なので重複した説明を省略する。
【0104】
また、以下の説明においては、特に断らない限り、1回目のCAMエントリ9aを前半データと称し、また、2回目のCAMエントリ9cを後半データと称する。
図5に示す1回目のCAMエントリ9aは、CAMアレイ3aに格納され、検索種別,送信先ポート番号,…,送信VID(Virtual Identifier:仮想識別子)を、このフォーマットで保持している。これらの「検索種別,送信先ポート番号,…,送信VID」と同一フォーマットが、1回目の検索キーにも適用され、検索時に値を比較される。また、MEMエントリ9bは、CAMエントリ9aと同一アドレスのMEMアレイ4aに格納され、そのデータは、1回目検索結果である連想データである。MEMエントリ9bは、分割された前半データと後半データとを関連付けるポインタとしてのインデックス(Index)を保持するものである。
【0105】
そして、2回目のCAMエントリ9cは、CAMアレイ3aに格納され、検索種別、Index、送信先IPv6アドレス、送信元IPv6アドレスをそれぞれ、このフォーマットで保持している。これらの検索種別、Index、送信先IPv6アドレス、送信元IPv6アドレスと同一のフォーマットが2回目の検索キーに適用され、検索時に値が比較される。
【0106】
ここで、CAMエントリ9cのインデックスフィールドには、MEMエントリ9bのインデックス値と同一値を登録し、かつ他のエントリとの間でインデックス値の重複が生じないようにし、これにより、前半データと後半データとを1対1に、又は1対多にも対応付け可能である。
1対1の場合、インデックス値は、後半データを指し示すポインタとして動作し、1対多の場合、インデックス値は、前半データ又は後半データのグループを示すグループIDとして動作する。
【0107】
MEMエントリ9dは、CAMエントリ9cと同一アドレスのMEMアレイ4aに格納され、その格納されるデータは、2回目の検索結果である連想データである。MEMエントリ9dは、また、フィルタ検索結果として、例えば破棄(discard)を保持するものである。
そして、1回目のCAMエントリ9aと2回目のCAMエントリ9cとが、MEMエントリ9bのアドレスポインタによって関連付けられ、かつ検索結果がMEMエントリ9dとして結合しているのである。
【0108】
従って、1回目の検索後の連想データは、最終的な検索結果ではなく、単に中間的なインデックスを保持するのみであり、2回目の検索後の最終的な連想データは、1回目の検索後の連想データのアドレスと異なるアドレスの領域に格納される。そして、検索時においては、1回目の検索結果のインデックス値が、2回目の検索キーのインデックス値として用いられる。なお、対応するCAMエントリも同様に、異なる2種類のデータが異なるアドレスに格納される。
【0109】
また、検索テーブル9は、2種類のCAM部3とMEM部4との異なるメモリに保持されたデータが、相互に関連付けられたものであり、これらの4領域が1セットとして、フィルタ検索における検索テーブルとして機能しているのである。
(5−6−2)アドレス領域の分割方法の一例
次に、図6(a),図6(b)をそれぞれ参照してアドレス領域の分割方法の一例について説明する。
【0110】
図6(a)は本発明の一実施形態に係るCAM領域のデータ保持例を説明するための図であり、この図6(a)に示すCAM領域(CAM部3のCAMアレイ3a)は、アドレス0x0000,0x1000に、それぞれ、フィルタ1,フィルタ2の各先頭データを保持している。さらに、アドレス0x2000,0x3000,0x4000,0x5000は、それぞれ、フロー1,フロー2,トレース1,トレース2の各先頭データを保持している。これらのCAM領域は、検索時において検索される領域である。
【0111】
図6(b)は本発明の一実施形態に係るMEM領域のデータ保持例を保持するための図であり、アドレス領域が分割された場合の一例を示す。この図6(b)に示すMEM領域(MEM部4のMEMアレイ4a)は、CAM領域と同一のアドレス構成を有し、3種類の検索の連想データ(検索結果)を保持している。具体的には、MEM領域の0x0000にフィルタ2へのポインタ(インデックス)が保持され、0x1000に検索結果「discard」が保持されている。フロー検索およびトレース検索についても、フィルタ検索と同様であり、0x2000にフロー2へのインデックスが保持され、0x3000に検索結果「priority」の8通りの値のうちのいずれかの値が保持されている。0x4000にトレース2へのインデックスが保持され、0x5000に検索結果「trace−mode」が保持されている。
【0112】
そして、MEM部4に入力されるデータ(MEMエントリ)は、MEM部4のMEMアレイ4a(MEM領域)において、CAM部3に入力されるデータ(CAMエントリ)のメモリ領域(メモリ配列)の割り当てに対応したメモリ領域を割り当てられている。すなわち、MEMエントリのMEMアレイ4aにおける展開は、CAMエントリのCAMアレイ3aにおける展開と同様である。
【0113】
また、定義したCAMアドレスが相互に重複しないように、メモリ領域を分けて定義することもできる。換言すれば、前半のCAMデータに対応するMEMデータを格納するアドレス領域と、後半のCAMデータに対応するMEMデータを格納するアドレス領域とが、重複しないように、予め、定義されているのである。
【0114】
このように、1個のCAM部3を用いて、3種類の検索と、3種類の検索においての前半と後半との計6種類(3×2=6)を区別できる。
また、CAMエントリは検索される一方、MEMエントリは検索されず、これらのCAMエントリおよびMEMエントリは、データの性格(データの特性又はデータの意味)が異なる。従って、両エントリは、同一メモリに保持することができない。
【0115】
このため、CAM部3の検索動作は、検索キーを、CAMエントリの参照により検索する。そして、一致データがある場合は、CAM部3はその一致データが格納されたアドレスをMEM部4へ入力する。また、MEM部4は、検索テーブルに定義されたデータ(連想データおよびインデックスを含む)を予め書き込まれているので、CAM部3からのアドレスによって指定されたアドレスのデータを読み出して検索結果とする。
【0116】
(6)IPv6ルーティングエンジン10のフレーム処理と制御回路2との対応
IPv6ルーティングエンジン10のフレーム処理は、4種類(第1フレーム処理,検索処理,ヘッダ処理,第2フレーム処理)の態様を有する。この4種類の処理態様と制御回路2との対応について図8(a),図8(b)を参照して説明する。
【0117】
図8(a)は本発明の一実施形態に係るCAM検索システム1の検索方法を説明するための図であり、図8(b)は本発明の一実施形態に係る制御回路2を説明するための図である。これらの図8(a),図8(b)に示すもののうちの上述したものと同一符号を有するものは、それらと同一のものを表す。
NDP10cは、IPv6フレームからヘッダ情報を抽出して生成したヘッダ情報セルをCAM検索システム1に渡す(TX)。CAM検索システム1は、ヘッダ情報セルの書き込み可能な領域に検索結果を書き込む。
【0118】
具体的には、NDP10cが、IPv6フレームをヘッダとペイロードとに分割し、ペイロードを、データを保持するフレームバッファ10eに保持し、ヘッダ情報セルを生成して制御回路2に送信する。
制御回路2は、インターフェース2aが、ヘッダ情報セルを受信し、バッファ部5に書き込む。そして、検索キー生成部6は、バッファ部5に未だ検索処理されていないヘッダ情報セルの存在を検知すると、必要な情報をバッファ部5から読み出し、この読み出した情報と検索インデックスとに基づいて検索キーを生成しCAM部3に送信する。
【0119】
CAM検索システム1は、検索テーブル9を登録するときは、CPU10aから出力されるCAMエントリ9a、MEMエントリ9b、CAMエントリ9cおよびMEMエントリ9dを、それぞれ、書き込み/読み出し部1aが、CAM部3およびMEM部4に順次書き込むことにより、図5に定義された検索テーブル9をCAMアレイ3aおよびMEMアレイ4aに生成する。
【0120】
また、CAM検索システム1は、NDP10cからの検索依頼を受信すると、NDP10cからヘッダ情報セルを受信してバッファ部5へ書き込むインターフェース2aと、ヘッダ情報セルを保持するバッファ部5と、バッファ部5から必要なデータを読み出して必要に応じて検索結果処理部7からインデックスを受信し、検索キーを生成してCAM部3へ送信する検索キー生成部6と、検索キーをCAMエントリと比較して一致データを検索し、検索結果ステータスを検索結果処理部7へ送信し、検索結果アドレスをMEM部4に送信するCAM部3と、受信したアドレスに登録済みのMEMエントリデータを検索結果処理部7に送信するMEM部4と、CAM部3およびMEM部4から受信した検索結果に基づいて必要に応じてインデックスを検索キー生成部に送信し、前半および後半の検索結果をマージし、また、3種類の検索結果をマージして、そのマージした検索結果データをそのバッファ部5に保持された所定のヘッダ情報セルにマージして書き込む検索結果処理部7と、バッファ部5に検索結果処理済みのヘッダ情報セルの存在を検知してバッファ部5からそのヘッダ情報セルを読み出し、NDP10cに送信するインターフェース2bとによって構成される。
【0121】
次に、図8(a)に示すCAM部3は、フィルタ検索,フロー検索およびトレース検索を行なう。CAM部3は、制御回路2からの検索キーに対応する検索対象データを保持している場合は、制御回路2に対して検索対象データが保持されていることを表すメッセージ(Hit Status)を通知する。また、CAM部3は、MEM部4に対して検索結果アドレスを送信する。
【0122】
MEM部4は、CAM部3から受信したアドレスに応じて、フィルタ検索のインデックス、フィルタ検索結果(discard)、フロー検索のインデックス、フロー検索の結果(priority)、トレース検索のインデックスおよびトレース検索の結果(trace−mode)の各データを検索結果処理部7に入力する。
また、検索結果処理部7は、CAM部3からフィルタ、フロー、トレースの3種類のそれぞれの前半の検索結果ステータス(Hit Status)を受信し、MEM部4から各検索結果のデータを受信し、フィルタ、フロー、トレースの各検索のインデックスについては、検索キー生成部7に送信し、フィルタ、フロー、トレースの各検索のそれぞれについて前半および後半の検索結果ステータスをマージおよび判定することにより、これら3種類のそれぞれについて最終的な検索結果を得ることができる。
【0123】
さらに、3種類の検索結果をさらにマージし、そのマージしたデータをバッファ部5に保持された所定のヘッダ情報セルの所定のビット位置にマージして書き込む。
インターフェース2bは、バッファ部5に検索結果処理済みのヘッダ情報セルの存在を検知してバッファ部5からそのヘッダ情報セルを読み出しNDP10cに送信する。
NDP10cは、検索結果を含むヘッダ情報セルを受信(RX)する。
【0124】
これにより、ヘッダ情報セルは、NDP10cからCAM検索システム1に対する検索依頼として機能するとともに、CAM検索システム1における検索結果としても機能する。従って、ハードウェアを用いた超高速な検索を行なうことが可能になる。
さらに、外部装置87(図1参照)からのフレーム(IPv4およびIPv6の各フレーム)がインターフェース部90にて受信されると、その受信フレームは、本体スイッチ部91を介してIPv6ルーティングエンジン10に入力され(P1と付された点線部分参照)、NDP10cにおいて、フレームのヘッダとペイロードとが分割されてIPv6アドレスの宛先が解決される。そして、IPv6ルーティングエンジン10のNDP10cからCAM検索システム1にヘッダ情報セルが入力され(P3と付された点線部分参照)、CAM検索システム1にてそのヘッダ情報セルに対応するフィルタ検索、フロー検索およびトレース検索される。そして、検索処理を含むヘッダ情報セルが、CAM検索システム1からNDP10cに対して送信される(P3と付された点線部分参照)。
【0125】
従って、NDP10cは、IPv6ルーティングエンジン10によって支援される。
一方、CAM検索システム1にて検索されて得られたdiscard、priorityおよびtrace−modeに基づいて各処理が終了し、また、IPv6アドレスの宛先解決処理によって、転送先ポートを書き込まれたヘッダを有するIPv6フレームが生成され、生成されたIPv6フレームは、転送先ポートのある経路方向に転送され、インターフェース部90から、外部装置87に対して送信される(P2と付された点線部分参照)。
【0126】
このように、ルータ8は、外部装置87とから入力されたフレームの転送先アドレス解決と、フィルタ、フローおよびトレースの各処理と、転送先となる外部装置87に対するフレーム送信が可能となる。
(7)IPv6ルーティングエンジン10の処理
次に、図9(a)および図9(b)を参照してIPv6ルーティングエンジン10におけるフレーム処理について説明する。ここで、フレーム処理のステップは、第1フレーム処理,検索処理,ヘッダ処理および第2フレーム処理の4ステップがある。
【0127】
図9(a)は本発明の一実施形態に係るフレーム処理の流れを説明するためのフローチャートであり、図9(b)は本発明の一実施形態に係る検索処理の流れを模式的に示す図である。
(7−1)第1フレーム処理(ステップSO1)
NDP10cは、インターフェース部90のポートから第3スイッチ部10bを介して、検索前のフレーム80(図9(b)参照)を入力されると、フレーム80のヘッダ80aを抽出する(SO1−1)。
【0128】
また、NDP10cは、フレーム80のペイロード80bをフレームバッファ10eに待避させる(SO1−2)。次に、NDP10cは、SO1−1にて抽出したヘッダ80aに、フレーム80と1対1に対応しルータ8の内部の各種情報を含む装置内部情報81aを付加し、ヘッダ80aおよび装置内部情報81aを有するヘッダ情報セル81を生成する(SO1−3)。
【0129】
(7−2)検索処理(ステップSO2)
この検索処理の種類は、IPv6アドレス等に基づいて送信先ポートを決定するIPv6アドレス解決検索と、廃棄フレームを決定するフィルタ検索と、フレームの優先度(priority)を決定するフロー検索と、トレース対象フレームを決定するトレース検索等がある。
【0130】
IPv6アドレス解決検索は、NDP10c内部のIPv6アドレス解決検索部91eに対して、ヘッダ情報セル81を送信し、検索結果をヘッダ情報セル81に反映させる。
次に、フィルタリング、フローおよびトレースの各検索については、ヘッダ情報セル81をCAM検索システム1に送信し、各検索結果をヘッダ情報セル81に反映させ、さらに、NDP10cに返却させる。
【0131】
さらに、他の検索は、他の検索結果をヘッダ情報セル81に反映させて返却させることにより、処理できる。
これにより、すべての検索結果が反映されたヘッダ情報セル81を得られる(SO2)。
(7−3)ヘッダ処理(ステップSO3)
ステップSO3のヘッダ処理は、NDP10cが、全ての検索結果が反映された出力先ポートを指定し、必要に応じてヘッダ情報を書き替え、廃棄対象フレームは廃棄し、priority値の優先度に応じてフレーム出力順序を指定し、トレース対象フレームは、トレース処理のために、CPU10aに対して通知、その他のヘッダ処理を行なうヘッダ処理ステップである(SO3−1)。
【0132】
これにより、ルーティングエンジンに入力されたIPv6フレームの出力ポートの決定と、廃棄処理と、優先制御と、トレース機能と、その他の機能が実現される。
(7−4)第2フレーム処理(ステップSO4)
ステップSO4の第2フレーム処理は、各処理を終了したヘッダを元のペイロードに挿入し、出力フレームを生成する処理である。
【0133】
NDP10cは、各検索処理およびヘッダ処理を終了したヘッダ情報セル81(装置内部情報81b+ヘッダ82a)から出力フレームのためのヘッダ82aを抽出し、また、フレームバッファ10eから対応するペイロード80bを読み出し、これらのヘッダ82aおよびペイロード80bをマージして出力フレーム82を再生する。この出力フレーム82は、出力ポートから外部装置87に対して送信される。
【0134】
SO2における3種類の検索について詳述する。NDP10cは、検索前のヘッダ情報セル81(装置内部情報81a+ヘッダ80a)をCAM検索システム1に送信する。CAM検索システム1において、受信したヘッダ情報セルから必要な情報が抽出され、そして、3種類の検索キーが生成され、生成した3個の検索キーがCAM部3へ送信される。CAM部3は各検索キーを用いてフィルタ検索,フロー検索およびトレース検索を処理し、アドレスをMEM部4に入力し、MEM部4は、3種類の検索結果をマージし、ヘッダ情報セルに含めるデータを、バッファ部5に書き込む。さらに、インターフェース部2bは、バッファ部5より、3種類の検索が終了したヘッダ情報セル81(装置内部情報81b+ヘッダ82a)を読み出し、読み出したヘッダ情報セル81をNDP10cに対して送信する。
【0135】
このように、NDP10cはヘッダ情報セルをCAM検索システム1に対して1回入力すると、CAM検索システム1が自動的に3回検索し、3種類の検索結果をマージする。従って、NDP10cは、検索キーの生成処理が不要となり、さらに、1回の検索依頼によって、3種類の検索依頼が可能となる。
また、NDP10cは、CAM検索システム1から受信したヘッダ情報セルから検索結果を取得できる。さらに、受信したヘッダ情報セルに含まれる他の情報も参照することができる。
【0136】
(8)制御回路2
図10は本発明の一実施形態に係る制御回路2の概略的なブロック図である。
(8−1)検索キー生成部6
この図10に示す検索キー生成部6は、検索キーを生成するものであって、並び替え処理部6aと、検索種別コード生成部6dと、第1セレクタ6eとをそなえて構成されている。
【0137】
検索キー生成部6は、バッファ部5に保持されたデータを変換して検索キーを生成し、その検索キーについての検索種別コードを生成し、検索キーと検索種別コードとのペアデータを所望のタイミングでCAM検索システム1に入力するものであって、検索種別コード生成部6dおよび並び替え処理部6bと、2面バッファ(他面バッファ)6cとをそなえて構成されている。また、並び替え処理部6aは、バッファ部5に保持されたヘッダ情報セルに含まれる3種類の検索処理の検索順序を制御するバッファ制御部として構成されている。
【0138】
この検索キー生成および並び替え処理部6bは、バッファ部5からのデータ読み出しと、その読み出しデータをフォーマット変換して得られる検索キーの生成とを行なうものである。
また、2面バッファ6cは、2毎(2ページ)のバッファ領域1,2(BUFF1,2)からなり、これらのバッファ領域1,2が、それぞれ、バッファ部5からの検索キーを交互に保持する。なお、バッファ数は3面以上でもよい。
【0139】
検索種別コード生成部6dは、2面バッファ6cに保持された検索キーのそれぞれに対応した検索種別コードを生成するものである。この検索種別コードの表現例は、4ビットのコード(0000〜1111)である。例えば、0000,0001はフィルタ検索の1回目,2回目をそれぞれ表し、0010,0011はフロー検索の1回目,2回目をそれぞれ表し、そして、0100,0101は、トレース検索の1回目,2回目をそれぞれ表す。これら以外の4ビットコードは上記3種類の検索処理と異なる検索処理のために予約されている。なお、この表現方法は設計方針等に基づいて種々の表現方法を用いることができる。
【0140】
第1セレクタ6eは、検索キー生成および並び替え処理部6bからの検索キーと、検索種別コード生成部6dからの検索種別コードと、検索結果処理部7からのインデックスとを入力され、検索種別コードを付加された検索キーを出力するものである。このインデックスとは、前半のCAMデータと後半のCAMデータとを対応付けるための情報データである。
【0141】
これにより、バッファ部5には、NDP10cから受信したヘッダ情報セルがインターフェース部2aによって書き込まれて保持され、検索キー生成のために、検索キー生成部6から必要な部分が読み出され、検索結果の反映のために、検索結果処理部7の所定の部分に書き込まれ、検索処理後のヘッダ情報セルをNDP10cに対して送信するためにインターフェース部2bにより読み出される。ヘッダ情報セルは、NDP10cから順次受信され、書き込まれ、順次、読み出し、NDP10cに送信する。
【0142】
従って、バッファ部5に保持されたデータの保持された順番は変更されず、先入れ先出し処理の動作と同一動作となる。
(8−2)検索結果処理部7
検索結果処理部7は、CAM検索システム1からの検索結果の要否を判定し各検索結果データを並び替え処理するものであって、第1レジスタ7a,第2レジスタ7b,判定および並び替え処理部7c,第2セレクタ7dをそなえて構成されている。
【0143】
ここで、第1レジスタ7a,第2レジスタ7bは、それぞれ、CAM部3およびMEM部4からの検索結果データを保持するものであって、例えばLSI内の記憶素子である。
検索結果処理部7は、バッファ部5に保持されたヘッダ情報セルに含まれる3種類の検索結果を保持する部分に、検索結果を書き込む書き込み制御を行なうバッファ書き込み制御部として機能している。判定および並べ替え処理部7cは、3種類の検索結果をヘッダ情報セルのフォーマットに並べ替えてセレクタ7dを介してバッファ部5に書き込む。そして、この判定および並べ替え処理部7cにおけるステータス判定からこの並べ替え処理を経てバッファ部5に書き込む処理までが検索結果のマージに相当する。
【0144】
さらに、第1レジスタ7a,第2レジスタ7bのそれぞれからのデータが有効か無効かを判定し、また、CAM部3からの3種類の検索結果を一旦保持して各保持データをマージし、ヘッダ情報セルの所定領域に書き込むものである。判定および並び替え処理部7cは、CAM部3からのフィルタ検索の検索結果が一致(ヒット)又は不一致(ミスヒット)を判定し一致の場合は、そのときのMEMデータを保持する一方、不一致の場合はそのときのMEMデータを破棄しかつ保持している検索結果をデフォルト(初期値)にする。
【0145】
加えて、判定および並び替え処理部7cは、第2セレクタ7dを経て、3種類の検索結果をバッファ部5に保持された所定のヘッダ情報セルに書き込みしてマージする。これにより、データのマージ機能が実現される。
第2セレクタ7dは、判定および並び替え処理部7cからのデータを選択して出力するものである。
【0146】
(8−3)制御回路2における2度引きの処理
(8−3−1)制御回路2が検索処理を開始するときには、予め図5に示す検索テーブル9がCAM部3およびMEM部4に登録済みである必要がある。この検索テーブル9を形成するCAMエントリ9a、9cおよびMEMエントリ9b、9dは、CPU10aにより、書き込み/読み出し1aを介してCAM部3およびMEM部4に書き込まれる。
【0147】
フィルタ、フローおよびトレース検索のための各検索テーブルの内容は、CPU10aのソフトウェアプログラムにより作成される。このプログラムは、フィルタ検索テーブル生成部、フロー検索テーブル生成部およびトレース検索テーブル生成部をもって構成される。
次に、CPU10aのプログラムが生成する検索テーブルについてさらに詳述する。
【0148】
本発明のルーティングエンジン10におけるメモリ検索にあたり、まず、データを登録する。CPU10aは、CAM部3のメモリ領域を割り当てるとともにこのCAM部3のメモリ領域のメモリアドレスと同一のメモリアドレスを有するMEM部4のメモリ領域を割り当てる(メモリ領域割り当てステップ)。
(8−3−1−1)CPU10aは、フィルタ検索のCAMエントリの前半データであるCAMエントリ9aを、書き込み/読み出し部1a経由で、CAMアレイ3aのアドレス0x0000から始まるフィルタ1(フィルタ前半)のCAM領域に書き込む(図6(a)参照)。
【0149】
(8−3−1−2)CPU10aは、フィルタ検索の前半データに対応する検索結果データであり、フィルタ検索の後半データを示すポインタでもあるインデックス(MEMエントリ9b)を書き込み/読み出し部1aを経由で、MEMアレイ4aのアドレス0x0000から始まるフィルタ1(フィルタ2へのインデックス)のMEM領域のうちのCAMエントリ9aと同一アドレスに書き込む(図6(b)参照)。
【0150】
(8−3−1−3)CPU10aは、フィルタ検索の後半データであるCAMエントリ9cを、書き込み/読み出し部1aを経由でCAMアレイ3aのアドレス0x1000から始まるフィルタ2(フィルタ後半)のCAM領域に書き込む(図6(a)参照)。このときのCAMエントリ9cのインデックスフィールド値は、MEMエントリ9bのインデックスフィールド値と同一値を用いる。
【0151】
(8−3−1−4)CPU10aは、フィルタ検索の後半データに対応する検索結果データであり、フィルタ検索の最終検索結果でもある(discard=MEMエントリ9d)を書き込み/読み出し部1a経由でMEMアレイ4aのアドレス0x1000から始まるフィルタ2(フィルタの連想データ、すなわち、discard)のMEM領域に、CAMエントリ9cと同一アドレスに書き込む(図6(b)参照)。
【0152】
以上の(8−3−1−1),(8−3−1−2),(8−3−1−3),(8−3−1−4)の4通りの書き込み処理により、図5に示すフィルタ検索の検索テーブルの1個を、CAM部3およびMEM部4に設ける。そして、この処理を登録すべきフィルタ検索の検索テーブルの個数分だけ繰り返す。また、フロー検索の検索テーブルおよびトレース検索の検索テーブルについても同様である。
【0153】
(8−3−2)制御回路2による2度引き検索について詳述する。
2度引き検索は、制御回路2の検索キー生成部6が検索結果処理部7と協働しCAM部3およびMEM部4を制御することにより行なう。フィルタ検索は、次の手順で行なわれる。
ステップ1 並び替え
検索キー生成および並び替え処理部6bがバッファ部5のヘッダ情報セルから必要なデータを読み出し、並び替えて、バッファ1に前半データと後半データとを保持する。
【0154】
ステップ2 1回目の検索キー生成
検索種別コード生成部が、フィルタ1の検索種別コードを生成し、バッファ1が前半データを出力し、第1セレクタ6eがこれらを選択統合してフィルタ検索の1回目の検索キーを生成し、CAM部3に送信する。
ステップ3 CAM検索1回目
CAM部3は、受信した検索キーをCAM部3自身が保持するCAMエントリと比較し、一致したCAMエントリのアドレスを出力する。ここで、検索キーは、フィルタ1の検索種別コードを含むので、図6(a)のアドレス0x0000から始まるフィルタ1のCAM領域に登録されたCAMエントリにしか一致しないはずである。
【0155】
従って、ヒット時に出力するアドレスは、0x0000以上0x1000未満のアドレスである。また、ヒットステータスを検索結果処理部7に送信する。
ステップ4 MEM読み出し
MEM部4は、CAM部3から受信したアドレスに登録されたMEMエントリを読み出し、検索結果処理部7に送信する。ここで、このMEMエントリは、フィルタ1の検索結果であり、フィルタ2へのインデックスでもある。
【0156】
ステップ5 2回目検索キー生成
検索種別コード生成部がフィルタ2の検索種別コードを生成し、検索結果処理部のレジスタ7aは、フィルタ2へのインデックスを第1セレクタ6eに送信し、バッファ1が後半データを出力し、第1セレクタ6eがこれらを選択統合してフィルタ検索の2回目検索キーを生成し、CAM部3に送信する。
【0157】
ステップ6 CAM検索2回目
CAM部3は、受信した検索キーをCAM部3自身が保持しているCAMエントリと比較し、一致したCAMエントリのアドレスを出力する。この検索キーは、フィルタ2の検索種別コードを有するので、図6(a)のアドレス0x1000から始まるフィルタ2のCAM領域に登録されたCAMエントリにしか一致しないはずである。従って、ヒット時に出力するアドレスは、0x1000以上0x3000未満のアドレスである。また、ヒットステータスを検索結果処理部7に送信する。
【0158】
ステップ7 MEM読み出し2
MEM部4は、CAM部3から受信したアドレスに登録されたMEMエントリを読み出し、検索結果処理部7に送信する。ここで、このMEMエントリは、フィルタ2の検索結果であり、フィルタ検索の検索結果のdiscard値である。
ステップ8
検索結果処理部7は、ステップ3にて得られたフィルタ1(フィルタ前半)検索結果のヒットステータスと、ステップ6にて得られたフィルタ2(フィルタ後半)の検索結果のヒットステータスとをレジスタ7bに保持している。
【0159】
これにより、前半および後半を併せて最終的なフィルタ検索のヒットステータスを判定する。判定基準は、「両方ともヒット(マルチヒットをも含む)時のみ、ヒットを判定する。」である。
そして、ヒットと判定されると、ステップ7にて得られたdiscard値を、前半後半併せた最終的なフィルタ検索結果のdiscard値とする
ステップ8のここまでの検索結果のマージが、判定と並び替え7cにおいて行なわれ、セレクタ7dがこのdiscard値を選択してバッファ部5の所定のヘッダ情報セルの所定のビット位置へ書き込むことによりマージする。
【0160】
このように、フィルタ検索は、前半と後半との2回に分けられており、制御回路2は、1回目の検索時に検索キーの前半を検索し、その検索結果としてインデックスを得る。そして、制御回路2は、2回目の検索時にインデックスを検索キーに加えて検索し、その検索結果である連想データを得る。
また、このように、制御回路2は、2回の検索により、CAM部3のビット幅を超える長さのビット幅を有する検索キーを用いて検索できる。さらに、フロー検索およびトレース検索については、検索テーブル1,2と異なる他の領域テーブルに検索テーブルを書き込むための領域が設けられフィルタ検索の場合と同一の検索処理が行なわれる。
【0161】
なお、メモリ領域の割り当ては、2回以上の多数回数の検索が可能である。
(8−4)CAMデータとMEMデータとのデータ例
図11(a),図11(b)はそれぞれ本発明の一実施形態に係るCAM部3とMEM部4との各データ例を示す図である。この図11(a)に示すデータは、CAM部3に保持されたCAMエントリと、このCAMエントリが保持されるCAMアドレスとを示し、また、図11(b)に示すデータは、MEM部4に保持されたMEMエントリと、このMEMエントリが保持されるMEMアドレスとを示している。
【0162】
ここで、CAM部3のCAMアドレス0x0000に、フィルタ1のCAMエントリが保持され、また、MEM部4のMEMアドレス0x0000に、フィルタ1のMEMエントリが保持されている。そして、これらのCAMエントリとMEMエントリとの1組が、フィルタ1の検索テーブルを構成している。
同様に、CAM部3のCAMアドレス0x0010に、フィルタ2のCAMエントリが書き込まれ、また、MEMアドレス0x0010に、フィルタ2のMEMエントリが書き込まれており、これらのCAMエントリとMEMエントリとのセットが、フィルタ2の検索テーブルを構成している。
【0163】
また、CAMエントリ値「0x10010AAAA......AAAABBBB......BBBB000」と、MEMエントリ値0x10000000とが同一アドレス(0x0010,0x0010)に割り当てられる。さらに、CAMエントリ値「0x0111122223333344556667770000....0000」と、MEMエントリ0x00100000とが同一アドレス(0x0000,0x0000)に割り当てられ、これにより、別個の異なるCAM部3とMEM部4とが同一アドレスの付与によって関連付けられている。すなわち、アドレス0x0010のCAMエントリとMEMエントリとの組が、フィルタ1の検索テーブルであり、また、アドレス0x0010のCAMエントリとMEMエントリとの組が、フィルタ2の検索テーブルである。
【0164】
そして、インデックス0x0010によって、アドレス0x0000のフィルタ1の検索テーブルと、アドレス0x0010のフィルタ2の検索テーブルとが関連付けられて1組となっている。この関連付けられた「1組」は、1種類のフィルタ検索を定義(設定)するものであり、また、設定を要するフィルタの個数n(nは自然数を表す。)に相当する個数のフィルタを設けるためには、「n組」のフィルタ検索テーブルを設定する。
【0165】
なお、検索テーブルの各領域値について、特に、CAMアドレス0x0000のCAMエントリ値「0x0111122223333344556667770000....0000」の288ビットについて詳述する。
CAMエントリの先頭値0は検索種別を表しフィルタ1の検索テーブルのCAMエントリであることを表す。1111は送信先ポート番号0x1111であり、2222は送信元ポート番号0x2222である。また、33333,44,55,666,777は、各々定義された領域値である。さらに、184ビットの「0000....00」は未使用部分として全て”0”が書き込まれている。CAMエントリ値の最後尾の”00”はパリティビットである。
【0166】
一方、MEMアドレス0x0000のMEMエントリ値「0x00100000」の最初の0010はインデックス値0x0010であり、0000は未使用部分であり全て”0”としている。そして、このMEMエントリのアドレスは0x0000であり、この0x0000によってCAMエントリと関連付けられており、従って、このMEMエントリの検索種別がフィルタ1の検索テーブルを表す。
【0167】
次に、下段にあるCAMアドレス0x0010には、CAMエントリ値「0x10010AAAA......AAAABBBB......BBBB000」が書き込まれている。ここで、先頭値1は検索種別がフィルタ2の検索テーブル30cのCAMエントリであることを表す。0010はインデックス値0x0010のCAMエントリを表す。「AAAA......AAAA」は送信先IPv6アドレス(128ビット)であり、「BBBB......BBBB」は送信元IPv6アドレス(128ビット)である。0は未使用部分を表し、最後尾の00はパリティビットである。
【0168】
一方、MEMアドレス0x0010のMEMエントリ値「0x10000000」の最初の1はdiscardビットを表し廃棄対象であることを表す。0000000は未使用部分であり全て”0”である。さらに、このMEMエントリはアドレス0x0010によってCAMエントリと関連付けられているので、検索種別はフィルタ2の検索テーブルのMEMエントリであることが識別される。
【0169】
また、フロー検索およびトレース検索の各検索テーブルも、フィルタ検索の検索テーブルと同様なので、重複した説明を省略する。
これにより、CAM検索システム1は、1個のCAM部3の1つの連続したメモリ領域(CAMデータを保持する連続領域)に3種類の検索テーブルを設けるとともに、3種類の検索テーブルおよび検索キーに検索処理を識別する検索種別コードを検索対象として格納する。
【0170】
これにより、3種類の検索テーブルが登録され、また、CAMデータに検索種別コードが格納され、検索種別コードを含む検索キーによる検索は、検索種別が異なるCAMエントリと一致しないので、1個のCAM部3で3種類の検索ができる。
また、従って、CAM部3のメモリ領域の全体について検索が行なわれた場合においても、検索種別コードが異なるCAMデータは検索されず、ヒットしないことが保証されるので、検索されない場合と等価であり、CAM部3は独立したCAM検索システム1として動作できる。
【0171】
(9)制御回路2のバッファ部5のバッファリング処理
次に、制御回路2に設けられたバッファ部5におけるデータの書き込みおよび読み出しについてそれぞれ説明する。
従来のバッファは、1本の入力ポートと1本の出力ポートとを有し、これらの2本の入出力ポートの全てがデータの送受信のために閉塞している。このため、従来のバッファは、常時、連続的にアクセスされ、2種類のデータの読み出しと2種類のデータの書き込みとを連続的に同時にすることはできない。
【0172】
本発明の制御回路2に設けられたバッファ部5は、4本の入出力ポートを有する点と、6個(6段)のリングバッファからなる点とを有し、これらの2点についてそれぞれ図13〜図15(a),図15(b)を参照して説明する。
図13は本発明の一実施形態に係るバッファ部5の4本の入出力ポートを説明するための図である。この図13に示すもので上述したものと同一符号を有するものは、それらと同一のもの又は同一機能を有するものである。
【0173】
図13に示すバッファ部5は、ヘッダ情報セルを一時的に保持するものであって、6個のデュアルポートメモリが用いられている。この図13に示すバッファ部5は、NDP10c側のポート(以下、Aポートと称する。)の読み出し線および書き込み線を設け、また、検索キー生成部6および検索結果処理部7側のポート(以下、Bポートと称する。)の書き込みおよび読み出し線を設けており、これにより、NDP10cと検索結果処理部6および検索結果処理部7とがともにアクセス(書き込みおよび読み出し)可能になっている。そして、バッファ部5の動作は、2回書き込み、2回読み出しするようになっている。なお、DPRAM(Dual Port Random Access Memory)と区別するために、QPRAM(Quad Port Random Access Memory)と表記する。
【0174】
さらに、バッファ部5について詳述する。
図14は本発明の一実施形態に係るバッファ部5のブロック図であり、この図14に示すもので、上述した符号と同一符号を有するものはそれらと同一のものである。
ここで、バッファ部5は、6個のデュアルポートメモリ(DPRAM)#1〜#6と、Aポートの書き込み線および読み出し線と、Bポートの書き込み線および読み出し線と、入出力側にそれぞれ設けられた2個のバススイッチ部(第2メモリ選択部)15aと、入出力側にそれぞれ設けられた2個のセレクタ(第1メモリ選択部)15bとをそなえて構成されている。
【0175】
2個のセレクタ15aは、いずれも、各バスラインに書き込み制御信号を出力することにより、デュアルポートメモリ#1〜#6のうちの書き込み対象のデュアルポートメモリ#1にデータを書き込むものである。
2個のバススイッチ部15bは、各バスラインに読み出し制御信号を出力することにより、複数のデュアルポートメモリのうちの読み出し対象のデュアルポートメモリからデータを読み出すものである。
【0176】
このバススイッチ部15aは、データの送信先を切り替えるためのものであって、各デュアルポートメモリ#1〜#6の書き込み可能信号(書き込みイネーブル信号:WE[Write Enable])に接続されたデータバスに制御信号を出力し、デュアルポートメモリ#1〜#6のうちの特定の一個の書き込み可能になっている。
【0177】
例えば、バススイッチ部15aは、例えばデュアルポートメモリ#1にデータを書き込む場合、デュアルポートメモリ#1の書き込みイネーブル信号WEをオンにするとともに他のデュアルポートメモリ#2〜#6の書き込みイネーブル信号WEをオフにする。
これにより、NDP10cは、6個のデュアルポートメモリ#1〜#6のうちの#1〜#6個までの所望のメモリを選択でき、従って、データの送信先の切り替え制御が可能になる。
【0178】
また、セレクタ15bは、複数の入力データのうちの通過させるデータを選択して切り替えるものである。ポートB(出力)側のデータバスに接続されたデュアルポートメモリ#1〜#6からのデータと、これらのデュアルポートメモリ#1〜#6を識別する情報データとが含まれ、これにより、所望のデータ取得先を切り替えるのである。
【0179】
なお、バススイッチ部15aおよびセレクタ15bの各機能は、いずれも、セレクタ素子等によって発揮される。また、図14に示すもので、上述したものと同一符号を有するものは、それらと同一のものを表す。
次に、デュアルポートメモリ#1〜#6は、いずれも、F(Full)フラグ,S(Search)フラグおよびR(Ready)フラグとの3種類のフラグを有する。
【0180】
ここで、Fフラグはセルデータを保持していることを表し、このフラグがオンのときは新規なセルデータを書き込みできないことを表す。SフラグはCAM検索システム1が検索している最中および読み出ししている最中であることを表す。RフラグはCAM検索システム1が検索終了および読み出ししている最中であることを表す。これらの3種類のフラグは、いずれも、読み出しが終了するとオフになって再度書き込み可能となる。
【0181】
さらに、バッファ部5は、6個のデュアルポートメモリ#1〜#6をそなえ、6個のリングバッファとして構成されている。
図15(a),図15(b)はそれぞれ本発明の一実施形態に係るバッファ部5のリングバッファ構成を説明するための図であり、いずれも、6個のDPRAM#1〜#6バッファが巡回的(リング状)に接続されていることを模式的に表示している。
【0182】
この図15(a)又は図15(b)に示すバッファ部5は、例えば6個又は8個の巡回的に接続されたデュアルポートメモリバッファ#1〜#6を有し、これにより、バススイッチ15a等は、デュアルポートメモリ#1〜#6にデータを順番に書き込みし、また、順番にデータを各デュアルポートメモリ#1〜#6から読み出しする。
【0183】
ここで、各デュアルポートメモリ#1〜#6は、AポートとBポートとの2本の書き込みおよび読み出し可能なポートを有し、一方のポート(Aポート又はBポート)から書き込みするのと同時に他方のポート(Bポート又はAポート)から読み出しできるようになっている。そして、書き込み方法は、バススイッチ15aがデータをバッファ1に書き込み、次のデータをバッファ2に書き込み、順次、次のバッファに書き込み、バッファ6の次は、バッファ1に書き込む。すなわち、巡回されて書き込まれる。
【0184】
バススイッチ15aは、データを書き込むデュアルポートメモリ#1〜#6を、各デュアルポートメモリ#1〜#6に付与されたID(Identification:識別子)に基づいて巡回的に選択しているのである。
なお、デュアルポートメモリ#i(iは2以上の自然数を表す。)の個数iは、種々変更して実施可能である。
【0185】
また、各デュアルポートメモリ#1〜#6は、それぞれ、データを保持していることを示すフルフラグ(Full Flag)を出力可能になっている。そして、Aポート側のバススイッチ15aは、バッファ1にデータ(ヘッダ情報セル)を書き込みし、フラグをオンにする(フラグを立てる)。また、Aポート側のバススイッチ15aは、順次、次のバッファに次のヘッダ情報セルを書き込みしフラグをオンにする。なお、フラグがオンになっているバッファk(kは1〜6の自然数を表す。)は、データを書き込まれず、Aポート側のバススイッチ15aは、フラグがオフになるまで待つ。
【0186】
一方、Aポート側のセレクタ15bは、バッファ1のヘッダ情報セルを読み出し、F、S、Rの各フラグをオフにする(フラグを倒す)。なお、各フラグがオフのバッファkは、読み出されず、Aポート側のセレクタ15bは、そのバッファkの各フラグがオンになるまでウェイトする。
これにより、各フラグの状態を監視することにより、Aポート側のバススイッチ15aがデータを書き込み可能か否かをモニタすることができる。また、Aポート側のセレクタ15bは、読み出し可能か否かをモニタすることができる。
【0187】
以下、4個の各入出力ポートの入出力と、ステータス信号(ステータスフラグ)との関係についてDPRAM1を例にして図15,図16(a)〜図16(e)をそれぞれ参照して説明する。DPRAM2〜6についてもDPRAM1と同様である。
図16(a)〜図16(e)はそれぞれ本発明の一実施形態に係るDPRAM1のステータスフラグを説明するためのタイムチャートである。なお、図16(a)に示すDPRAM1のAポートと、図16(b)に示すDPRAM1のBポートとの各処理は、いずれも、後述する図17に示すポート005と006とに対応している。また、F01〜F25を付された部分は、図17に示す処理に対応する。
【0188】
DPRAM1のAポートは、時刻T00においてセルAと表示されたデータ(入力されたヘッダ情報セル)の書き込みを開始する。時刻T00における3種類のステータスフラグは図14に示す論理L1のようになる。この書き込み開始されたセルAは、時刻T03においてセルAの書き込みが終了する。また、図16(c)に示すFフラグは、時刻T00においてオン(ハイ)にされて、セルAの読み出しが終了する時刻T11までオンが維持される。
【0189】
また、DPRAM1のBポートは、時刻T02において、キーの読み出しを開始する。キーとは、入力ヘッダ情報セルから検索キー生成のために抽出されたデータ(Aと表示されたもの)。時刻T02におけるステータスフラグは図14に示す論理L2のようになる。さらに、図16(d)に示すSフラグはオンにされる。
【0190】
時刻T05において、Bポートは、キーAの読み出しを終了し、また、セルAについての結果Aの書き込みを開始する。この結果Aは検索が終了し元のヘッダ情報セルにマージするデータである。時刻T05におけるステータスフラグは変化しない。
さらに、時刻T08においてBポートはセルAについての結果Aの書き込みを終了し、また、Aポートは、セルAの読み出しを開始する。この時刻T08において、AポートについてのRフラグがオンにされ、時刻T08におけるステータスフラグは図14に示す論理L3のようになる。
【0191】
時刻T11において、Aポートは、セルAについての読み出しを終了する。この時刻T11において、Fフラグ、SフラグおよびRフラグがともにオフにされる。時刻T11におけるステータスフラグは図14に示す論理L4のようになる。
さらに、図14に示すBポート側のセレクタ15bにて得られる各データは、検索キー生成部6に出力される。また、Bポート側のバススイッチ15aにて得られる各データは、検索結果処理部7から入力される。
【0192】
以上、DPRAM1の入出力動作について詳述した。
このほかに、DPRAM1〜6が、図15(a)に示すリングバッファを形成し、各々のAポートとBポートとのそれぞれが、図17に示すように順次書き込みと読み出しとを行なうことにより、バッファ部5の4種類のポートについてそれぞれ、常時連続的にデータ書き込みおよび読み出しが可能なバッファシステムとして機能するのである。
【0193】
このように、CAM検索システム1は、セルの連続的な送受信が可能となり、効率的なセル処理が実現する。また、このように、ステータスフラグを用いることにより、バッファ部5の各DPRAMがシーケンシャルに動作できる。
このようにして、DPRAM#1〜#6のそれぞれが、巡回的にヘッダ情報セルをバッファリングするので、CAM検索システム1は、連続的にヘッダ情報セルの受信および送信が可能となり、かつ連続的に検索キーの生成と、検索結果のマージとが可能となる。この結果、検索処理が連続して行なえるので、高速化が図れる。
【0194】
(10)検索動作の説明
上述の構成により、本発明の一実施形態に係るCAM検索システム1が1個のヘッダ情報セルを受信しその受信したヘッダ情報セルに基づいて検索する場合の動作について説明する。なお、検索テーブルは、フィルタ検索テーブル1組のみ登録された場合のものである。フロー検索およびトレース検索については、以下に示すフィルタ検索の動作とほぼ同様なので、重複した説明を省略する。
【0195】
(10−1)制御回路2における動作
図10を参照して、CAM検索方法について詳述する。ここで、ビット幅を拡張することにより、3種類の検索処理のフローを説明する。002〜025までの各処理は、ひとかたまりの処理としてパイプライン化されており、1つのヘッダ情報セル処理中に他の処理を並行して可能となる。018の時点から、次のセルの検索種別コード=0の検索キー送信を開始できる。
【0196】
001 プロセッサ(NDP10c)は、インターフェースからバッファ部5にセルを書き込む。
002 検索キー生成部6は、バッファ部5から必要なデータを読み出して、そのデータのフォーマットを変換して検索キーを生成し、その検索キーを2面バッファ6cの片方の面に一時的に保持する。
【0197】
003 検索キー生成部6は、2面バッファ6cに保持された検索キーに、検索種別コード生成部6dにて生成された検索種別コード「0」を付加し、その検索種別コード「0」付きの検索キー(検索種別コード「0」の検索キー)をCAM部3に送信する。この送信が、検索依頼のメッセージに相当する。
004 検索キー生成部6は、003(003の処理)が終了すると、続けて検索種別コード「2」の検索キーをCAM部3に送信開始する。
【0198】
005 検索キー生成部6は、004の終了に続けて検索種別コード「4」の検索キーをCAM部3に送信開始する。
006 次に、検索結果処理部7は、検索種別コード「0」の検索結果ステータスをCAM部3から受信して一時的に第2レジスタ7bに保持する。これと同時に、CAM部3は、MEM部4に対して検索結果アドレスを入力する。
【0199】
007 また、検索キー生成部6は、検索種別コード「1」の検索キーをCAM部3に送信開始する。
008 検索結果処理部7は、検索種別コード「0」の検索結果連想データ(インデックスに相当する)をMEM部4から読み出してその読み出した検索結果連想データを検索キー生成部6に入力する。
【0200】
009 検索キー生成部6は、検索種別コード「1」に、008において得られたインデックスを付加し、検索キーをCAM部3に送信する。
010 検索結果処理部7は、検索種別コード「2」の検索結果ステータスをCAM部3から受信して一時的に第2レジスタ7bに保持する。これと同時に、CAM部3は、MEM部4に対して検索結果アドレスを入力する。
【0201】
011 検索キー生成部6は、検索種別コード「3」の検索キーをCAM部3に送信開始する。
012 検索結果処理部7は、検索種別コード「2」の検索結果連想データ(インデックス)をMEM部4から読み出してその読み出した検索結果連想データを検索キー生成部6に入力する。
【0202】
013 検索キー生成部6は、検索種別コード「3」に、012において得られたインデックスを付加し、検索キーをCAM部3に送信する。
014 検索結果処理部7は、検索種別コード「4」の検索結果ステータスをCAM部3から受信して一時的に第2レジスタ7bに保持する。これと同時に、CAM部3は、MEM部4に対して検索結果アドレスを入力する。
【0203】
015 検索キー生成部6は、検索種別コード「5」の検索キーをCAM部3に送信開始する。
016 検索結果処理部7は、検索種別コード「4」の検索結果連想データ(インデックス)をMEM部4から読み出してその読み出した検索結果連想データを検索キー生成部6に入力する。
【0204】
017 検索キー生成部6は、検索種別コード「5」に、016において得られたインデックスを付加し、検索キーをCAM部3に送信する。
018 検索結果処理部7は、検索種別コード「1」の検索結果ステータスをCAM部3から受信して一時的に第2レジスタ7bに保持する。
019 検索結果処理部7は、検索種別コード「1」の検索結果連想データ(インデックス)をMEM部4から読み出して第1レジスタ7aに一時的に保持する。
【0205】
020 検索結果処理部7は、検索種別コード「3」の検索結果ステータスをCAM部3から受信して一時的に第2レジスタ7bに保持する。
021 検索結果処理部7は、検索種別コード「3」の検索結果連想データ(インデックス)をMEM部4から読み出して第1レジスタ7aに一時的に保持する。
【0206】
022 検索結果処理部7は、検索種別コード「5」の検索結果ステータスをCAM部3から受信して一時的に第2レジスタ7bに保持する。
023 検索結果処理部7は、検索種別コード「5」の検索結果連想データ(インデックス)をMEM部4から読み出して第1レジスタ7aに一時的に保持する。
【0207】
024 検索結果処理部7は、006,010,014,018,020および022にてそれぞれ取得した検索結果ステータスをマージして判定し、その判定結果と019,021および023にてそれぞれ取得した検索結果連想データをフォーマット変換してバッファ部5に書き込む。
025 インターフェース部90は、バッファ部5に保持されたセルデータを読み出す。
【0208】
このように、NDP10cは3個の検索キーを生成して送信し、また、3個の検索結果の連想データを1回受信する毎にマージする必要がなくなり、プロセッサの負担を減少させることができる。
さらに、m番目(mは自然数を表す。)のヘッダ情報セルについての各処理が行なわれているときに、018の時点からm+1番目のヘッダ情報セルについての各処理を開始することができ、検索処理のパイプライン化が可能となる。
【0209】
(10−2)検索キーの生成および検索結果処理
図10に示す制御回路2において、入力されたヘッダ情報セルが検索キー生成部6に取り込まれることを契機に動作が開始し(図10に示す001から002と付したところ参照)、検索キーの生成について以下の(K1)〜(K10)に詳述する。
【0210】
(K1)ヘッダ情報セルは並べ替え処理部6bを経て、2面バッファ6cのバッファ1の前半に、次の検索キーを書き込まれる。検索キー(288ビット)バッファ1の前半の内容は次のようになる。
0xS111122223333344556667770000....0000
ここで、先頭ビット「S」(検索種別コード)はこの時点においてはコードを記録されていない。
【0211】
さらに、末尾ビット「0000,0000」のシーケンス列は184ビットである。以下に説明する(K2)〜(K4)についても同様である。
(K2)検索キー生成部6は、フィルタ1の検索を開始し、検索種別コードを生成し、下記の検索キー(288ビット。完全に表示したもの)をCAM部3へ送信する。また、CAM部3へ送信する内容はフィルタ1(S=0x0)である。
【0212】
0x0111122223333344556667770000....0000
(K3)検索キー生成部6は、フロー1の検索を開始し、検索種別コードを生成し、下記の検索キー(288ビット。完全に表示したもの)をCAM部3へ送信し、CAM部3へ送信する内容はフロー1(S=0x2)である。
0x2111122223333344556667770000....0000
(K4)検索キー生成部6は、トレース1の検索を開始し、検索種別コードを生成し、下記の検索キー(288ビット。完全に表示したもの)をCAM部3へ送信し、CAM部3へ送信する内容はトレース1(S=0x4)である。
【0213】
0x4111122223333344556667770000....0000
(K5)この間、並行して、検索キー生成部6は、並べ替え処理部6aを経て、バッファ1の後半に、下記の検索キー(288ビット。一部不完全な表示)の書き込みを続行する。バッファ1の後半の内容を次に示す。
0xSIIIIAAAA......AAAABBBB......BBBB000
ここで、先頭ビット「S」(検索種別コード)はこの時点においてはコードを記録されていない。また、”IIII”の部分はインデックスを表しこの時点では未定である。なお、”AAAA...”および”BBBB...”の部分の例はいずれも128ビットである。
【0214】
(K6)CAM部3における処理を経て、制御回路2にフィルタ1の検索結果が返ってくる。上記検索キーは、CAMアドレス0x0000のCAMエントリにマッチするので、ヒットステータスおよびヒットしたアドレス(すなわち0x0000)が得られ、このMEMアドレスのMEMエントリである0x00100000が読み出されるので、結果として、インデックス0x0010が得られる。
【0215】
(K7)そこで、フィルタ2の検索が開始される。すなわち、検索種別コードが生成され、かつ、Index値0x0010を含めた、下記の検索キー(288ビット。完全に表示したもの)がCAM部3へ送信される。CAM部3へ送信する内容はフィルタ2(S=0x1)である。、”AAAA...”および”BBBB...”の部分の例はいずれも128ビットである。
【0216】
0x10010AAAA......AAAABBBB......BBBB000
(K8)フロー1の検索結果が返ってくる。
検索キーにマッチするCAMエントリがない場合は、ミスヒットステータスが得られ、有効なアドレスは得られない。このときは、フロー2の検索は省略される。
【0217】
(K9)フィルタ2の検索結果が返ってくる。
検索キーは、CAMアドレス0x0010のCAMエントリにマッチするので、ヒットステータスおよびヒットしたアドレス(すなわち 0x0010)が得られる。このアドレスはMEMエントリである0x10000000が読み出されるので、結果として、discard=1 すなわち、廃棄対象フレームの結果が得られる。
【0218】
なお、フィルタ検索は、フィルタ1およびフィルタ2を含めた全体として、ヒットステータスとなり、有効な検索結果として discard=1 が得られる。
また、フロー2の検索結果は、検索されず、ミスヒットと判定される。検索結果は、デフォルトプライオリティの値として、priority=0x7 を返す。なお、フロー検索は、フロー1およびフロー2を含めた全体として、ミスヒットステータスとなり、有効な検索結果は得られない。
【0219】
(K10)トレース2の検索結果は、検索されず、ミスヒット扱いとなる。検索結果は、デフォルトのトレースモード値として、trace−mode=0を返す。このトレース検索は、トレース1およびトレース2を含めた全体として、ミスヒットステータスとなり、有効な検索結果は得られない。
このため、判定および並び替え処理部7c(図10参照)は、バッファ部5に保持されたヘッダ情報セルに含まれる3種類の検索処理の検索順序を並べ替えて、並び替えたヘッダ情報セルをバッファ部5に書き込む。
【0220】
なお、判定および並べ替え処理部7cにおけるステータス判定からこの並べ替え処理までが、検索結果のマージに相当する。
これにより、2度引き処理により、1個のCAM部3を用いて、3種類の検索について前半,後半の検索するので、計6種類の検索テーブルを区別できる。
このように、1個のCAM部3の1個の連続したメモリ領域に3種類の検索テーブルが登録され、CAMデータおよび検索キーのそれぞれの中に検索種別コードが含められ、検索種別コードも検索対象とされる。
【0221】
また、このように、CAM部3の領域全体について検索を実行しても、検索種別コードが異なるCAMデータにはヒットせず、独立のCAM部3のように動作させることができる。NDP10c等の各種のCPUにおける処理負担が軽減する。
(10−3)バッファ部5(QPRAM,セルバッファ,6段リングバッファ)のデータ入出力動作
上述の構成により、本発明の一実施形態に係るCAM検索方法のバッファ部5のデータ入出力について詳述する。
【0222】
図17は本発明の一実施形態に係るバッファ部5(QPRAM)のタイムチャート例を示す図である。この図17に示す16個の信号はポート種別を表し、16個のうちの上側の1〜4は、バッファ部5の4個のポートを表す。また、下側の5〜16は、バッファ部5の内部のポートについての動作タイミングを表す。以下、横軸方向に付された時刻T00〜T25における動作について時系列にしたがって説明する。
【0223】
時刻T00のトランザクション(1つのデータ転送動作)は、図14のポート001からポート005に対するF01(セルA)の書き込みを開始する。なお、以下に説明する各時刻におけるトランザクションをTRで表す。すなわち、時刻T00において、TR01が行なわれる。
時刻T02において、ポート006からポート002に対するF07(キー7)の読み出しを開始する(TR02)。
【0224】
時刻T03において、TR01が終了する。また、ポート001からポート007に対するF02(セルB)の書き込みを開始する(TR03)。
時刻T05において、TR02が終了する。また、ポート003からポート006に対するF13(結果A)の書き込みを開始する(TR04)。ここで、検索結果処理部7は、検索結果ステータスのマージと判定し、並び替え処理部6aに対してインデックスをフィードバックする。さらに、ポート008からポート002に対するF08(キーB)の読み出しを開始する(TR05)。
【0225】
時刻T06において、TR03が終了する。また、ポート001から009に対するF03(セルC)の書き込みを開始する(TR06)。
時刻T08において、ポート005からポート004に対するF19(セルA)の読み出しを開始する(TR07)。また、TR04が終了し、TR05が終了する。さらに、ポート003からポート008に対するF14(結果B)の書き込みを開始する(TR08)。そして、ポート010からポート002に対するF09(キーC)の読み出しを開始する(TR09)。
【0226】
時刻T09において、TR06が終了する。また、ポート001からポート011に対するF04(セルD)の書き込みを開始する(TR10)。
時刻T11において、TR07が終了する。ポート007からポート004に対するF20(セルB)の読み出しを開始する(TR07)。また、TR08が終了し、TR09が終了する。さらに、ポート002からポート010に対するF15(結果C)の書き込みを開始する(TR12)。そして、ポート012からポート002に対するF10(キーD)の読み出しを開始する(TR13)。
【0227】
時刻T12において、TR10が終了する。また、ポート001からポート013に対するF05(セルE)の書き込みを開始する(TR14)。
時刻T14において、TR11が終了する。ポート009からポート004に対するF21(セルC)の読み出しを開始する(TR15)。また、TR12が終了し、TR13が終了する。さらに、ポート003からポート012に対するF16(結果D)の書き込みを開始する(TR16)。そして、ポート014からポート002に対するF11(キーE)の読み出しを開始する(TR17)。
【0228】
時刻T15において、TR14が終了する。また、ポート001からポート015に対するF06(セルF)の書き込みを開始する(TR18)。
時刻T17において、TR15が終了する。ポート011からポート004に対するF22(セルC)の読み出しを開始する(TR19)。また、TR16が終了し、TR17が終了する。さらに、ポート003からポート014に対するF17(結果E)の書き込みを開始する(TR20)。そして、ポート016からポート002に対するF12(キーF)の読み出しを開始する(TR21)。
【0229】
時刻T18において、TR18が終了する。
時刻T20において、TR19が終了する。ポート013からポート004に対するF23(セルD)の読み出しを開始する(TR19)。また、TR20が終了し、TR21が終了する。さらに、ポート003からポート016に対するF18(結果F)の書き込みを開始する(TR23)。
【0230】
時刻T23において、TR22が終了する。ポート015からポート004に対するF24(セルE)の読み出しを開始する(TR24)。また、TR23が終了する。
時刻T26において、TR24が終了する。
このようにして、001の前段に設けられたプロセッサから001に対して連続して6個のセル(セルA〜F)を送信される。
【0231】
また、6セルの処理中は、ポート004の外側(外部装置87側)のNDP10cは、受信可能になっている。すなわち、NDP10cは、ポート004を有するCAM検索システム1に対してバックプレッシャーを通知しない。
このバックプレッシャーとは、フレーム損失を防止するためのメッセージである。例えば、CAM部3からの検索結果が過剰に出力された場合において各検索結果データを含むヘッダ情報セルが、CAM検索システム1からNDP10cに対して送信され続けると、NDP10cにおいてフレーム損失が発生する。このため、通常は、NDPがポート004に対してデータの出力を抑制するメッセージを送信する。
【0232】
従って、NDP10cは、制御回路2が、CAM検索システム1に対してプロセッサに対する出力を抑制するバックプレッシャーを送信するようになっている。
そして、このように、プロセッサとCAM検索システム1との間におけるインターフェースにおいて送受信データが送受信される。また、プロセッサ(NDP10c)は、ルーティングするために、1個の入力フレームに対して、そのフレームのヘッダ情報と装置内部情報とを含む固定長フォーマットのセル(ヘッダ情報セル)の形式でフレーム情報を内部処理する。
【0233】
さらに、ヘッダ情報セルに、3種類の検索キーを生成するのに必要な情報領域と、3種類の検索結果を取り込むための領域とが追加されるので、プロセッサとCAM検索システム1との間は、1個のヘッダ情報セルの送受信によって処理が可能になる。また、このCAM検索システム1が処理した後の処理が、プロセッサの外部のハードウェアに委ねられ、プロセッサの性能を十分に発揮できる。
【0234】
次に、3種類の検索を高速に実行するためのCAM制御と、パイプライン処理とについて説明する。
(11)検索処理の高速化
(11−1)CAM制御の高速化
上記のCAM部3のビット幅を拡張する方法を用いた場合、2回の検索によるレイテンシ(Latency:待ち時間)の増大およびスループットの低下が発生する。すなわち、前半の検索結果を後半の検索キーとしなければならないため、後半の検索開始は、CAM部3の検索時間だけ待たされる。従って、CAM部3がパイプライン処理を実行可能であっても、前半の検索が終了するまで後半の検索開始が待たされることによって、全体としてのCAM部3のスループットが低下する。
【0235】
ここで、レイテンシとは、メモリから保持データを読み出すために必要な時間である。すなわち、レイテンシは、NDP10c(およびCPU90a,91b,10a)が、バッファ部5又はCAM検索システム1に設けられたCAMアレイ3a,MEMアレイ4a等の各種のメモリに保持されたデータの読み出し要求を出力した瞬間から、その読み出し要求が要求する保持データが転送される瞬間までの時間を意味する。
【0236】
3種類(例えば、検索1、検索2、検索3の3種類)の検索をCAM部3のビット幅を拡張するCAM制御方法を用いる場合、検索1前半の検索結果を待たずに、検索2前半、続いて検索3前半を開始し、検索1前半の結果を踏まえて検索1後半を行ない、検索2後半、検索3後半の順序で計6回検索する。
上記のように、検索順序を制御することにより、全体としてのレイテンシとスループットとを向上させ、CAM部3のスループット性能を最大限に活用することが可能となる。
【0237】
(11−2)パイプライン処理
また、図12(a),図12(b)はそれぞれ本発明の一実施形態に係るパイプライン処理を説明するための図である。この図12(a)に示すシーケンシャル処理は、従来の2度引き検索処理である。CAM検索システム1は、キー(検索キー)1を入力されて検索を開始し、1回目の検索結果のインデックスを出力し、そして、このインデックスが2回目の検索キーとしてCAM検索システム1に入力される。すなわち、各検索結果が次の検索キーとしてフィードバックされるようになっている。
【0238】
また、レイテンシを表すτ(タウ)を用いて検索時間を説明する。ここで、1τ=1/66MHz=15n(ナノ)秒に相当する。一方、ヘッダ情報セルが24τ間隔で送信されるので、6回の検索に要する時間(検索キーが送信6回分を1周期として1周期に要する時間)は、シーケンシャルな検索によると54τである。従って、ヘッダ情報セルが24τ毎に入力されるので、検索処理はこのヘッダ情報セルが入力される間隔に追いつくことができない。
【0239】
これに対して、図12(b)に示すパイプライン処理は、受信セルの前半の検索キー(図5参照)が、CAM検索システム1に入力され、その検索中に、後半の検索キーがCAM検索システム1に入力され、3種類の検索結果がマージされて送信セルに反映されるのである。
従って、3種類の検索を並行(パイプライン化)することにより、24τ時間内に次次と検索が可能となる。そして、1周期に要する時間がシーケンシャル処理に比較して、約半分の検索時間に短縮される。
【0240】
さらに、検索キーに検索種別コードが付与されることにより、3種類の検索が行なわれ、また、3種類の検索テーブルについてそれぞれ前半および後半の2回に分割した検索により、合計6種類のテーブルの検索が行なわれる。すなわち、1個のCAM検索システム1に6種類の検索テーブル用のメモリ領域が割り当てられる。
【0241】
このように、本発明のCAM検索システム1の制御方法は、CAM部3のビット幅よりも長いビット幅を有するアドレスデータについても高速に検索できる。
(D)本発明と従来の技術との比較
以下、従来の技術(特許文献1,2)と、本発明のルーティングエンジン装置,ルータ装置およびルーティングエンジン装置におけるメモリ検索方法とは、3点の相違点がある。
【0242】
(12)制御回路2の有無について
(12−1)特許文献1記載のアドレスサーチマシンおよびIPv6ルーティングエンジン10は、ともに、ヘッダ情報を用いて3種類の検索キーを生成し、また、その検索結果をマージするCAM検索専用回路を設けた点については同一である。
【0243】
これに対して、特許文献1記載のアドレスサーチマシンに設けられたプロセッサおよびCAM検索専用回路間のインターフェースは、コマンドレジスタとリザルトレジスタとを用いている点において、プロセッサがベッダ情報セルを送受信回路(制御回路2)に送信し、CAM検索システム1からそのヘッダ情報セルを受信するIPv6ルーティングエンジン10と異なる。
【0244】
従って、IPv6ルーティングエンジン10は、CAM検索システム1の検索終了までのタイミング測定等の制御が不要になり、プロセッサ負荷が低減される。さらに、IPv6ルーティングエンジン10において、CAM部3にて検索されて出力された検索データが過剰になった場合は、NDP10cにおいてフレーム損失を防止でき、バックプレッシャー機能を有する点において、このバックプレッシャー機能を設けていない特許文献1と異なる。
【0245】
(12−2)また、ヘッダ情報セルに関し、特許文献1記載のアドレスサーチマシンはプロセッサおよびCAM検索専用回路間のインターフェースにおけるセル処理について何ら言及されていない点において、送受信回路(制御回路2)が、NDP10cのセル処理に適合するように固定長のフォーマットのセルを処理するIPv6ルーティングエンジン10と異なる。
【0246】
従って、IPv6ルーティングエンジン10は、プロセッサが処理するヘッダ情報セルが、そのまま使用されるのでプロセッサ負荷が低減する。
(12−3)さらに、バッファ部5に関し、特許文献1記載のアドレスサーチマシンはヘッダ情報セルを一時的に保持するバッファについて何ら言及されていない点において、バッファ部5をそなえたIPv6ルーティングエンジン10と異なる。
【0247】
また、IPv6ルーティングエンジン10は、検索キー生成のための情報および検索結果情報に加えて、プロセッサが再度利用できる情報を含んでおり、この再度利用可能な情報を変更せずに、ヘッダ情報セルをプロセッサに返すことができる。従って、IPv6ルーティングエンジン10のプロセッサは、データ退避等の処理をともなわずにヘッダ情報セルに含まれる情報を利用でき、これにより、プロセッサのリソースを有効利用でき、プロセッサ負荷が低減される。
【0248】
(13)3回の検索方法について
(13−1)従来の技術と本ルータとの各CAM検索システムが、CAM部のビット幅よりも長い検索キーを処理する場合において、各CAM検索システムの検索は、3回に分割されて検索する点は同一である。
これに対して、特許文献1記載のアドレスサーチマシンは、長い検索キーを分割して3のCAM検索システム(図14参照)を用いて検索する点について、長い検索キーを分割して、同一のCAM検索システムを用いて3回検索するIPv6ルーティングエンジン10と異なる。
【0249】
従って、IPv6ルーティングエンジン10は、CAM検索システムの個数が減少しかつハードウェアの規模が縮小され、ルータのコストを低減できる。
(13−2)特許文献1記載のアドレスサーチマシンは、IPv4プロセッサに対応する64ビットのCAM検索システムを用いてIPv6アドレス128ビットを2分割し検索処理を行なっており、ビット幅は64ビットに限定している。すなわち、特許文献1記載のアドレスサーチマシンは、IPv4プロトコルに対応するCAM検索システムをIPv6プロトコルに転用している。
【0250】
これに対して、IPv6ルーティングエンジン10は、例えば288ビット幅のCAM検索テーブルを用いており、IPv6アドレスの128ビットを分割せずに処理し、また、IPv4アドレスの処理との兼用をしていない。
従って、IPv6ルーティングエンジン10は、IPv6フレームに特化している。これにより、IPv6ルーティングエンジン10は、IPv6アドレスの分割が不要になり、IPv6アドレスを分割した検索テーブルの管理が不要となって検索テーブルの管理が簡略化される。
【0251】
(13−3)検索種別について
特許文献1記載のアドレスサーチマシンは、IPアドレスのサーチに限定されている点において、IPアドレス以外の他の情報をも含めた検索テーブルを検索できるIPv6ルーティングエンジン10と異なる。すなわち、IPv6ルーティングエンジン10は、例えば、送信先および送信元ポート番号、フローラベル、トラヒッククラス等のIPアドレス以外の情報をも用いて、フィルタ機能(フレーム廃棄機能)と、帯域制限機能等を実現するためのフレームのプライオリティを決定する機能(フロー識別機能)と、ネットワークシステムの調査等のために特定の受信フレームを抽出してプロセッサ処理する機能(トレース機能)との各機能を実現できる。
【0252】
(13−4)検索キーのビット幅について
IPv6ルーティングエンジン10は、3種類のパラメータを用いてCAM検索するために、マスク条件を変更して3回検索する。ここで、IPv6ルーティングエンジン10は、CAM部3のビット幅よりも長いビット幅を用いて検索するものではなく、さらに、CAM部3のビット幅の短さ(不足)によって検索キーを分割しているものではない。
【0253】
従って、IPv6ルーティングエンジン10は、IPv6アドレスおよび送信元IPv6アドレスの両アドレスと、ヘッダ情報を含むCAM部3のビット幅よりも長いビット幅を有する検索キーを用いてCAM検索を実現できる。
(14)CAM検索の高速化について
IPv6ルーティングエンジン10は3回検索の順序を制御することにより、検索の待ち時間をなくすことができ、高速化できる。
【0254】
(E)その他
本発明は上述した実施態様およびその変形態ように限定されるものではなく、本発明の趣旨を逸脱しない範囲で、種々変形して実施することができる。
例えば、上記の説明において、各処理と各処理が行なわれる機能ブロックとは、設計方針等に基づいて種々変更可能であって、本発明のルーティングエンジン装置10およびルーティングエンジン装置10におけるメモリ転送方法は、上記の各例に限定されるものではない。
【0255】
IPv6によってIPv6アドレスが飛躍的に増加し、また、アドレスを端末に自動的に設定できる。ネットワークを介して自動的に情報データを送受信する装置が増加する。この装置はネットワーク接続を主な目的としたものではなく、単に情報データの送受信のためにIPネットワークを利用するだけである。従って、利用者にネットワークの知識を要求せずにアドレスを設定する。
【0256】
なお、ルータ8は、近隣検索プロトコルが規定する処理を行なうようにもできる。この近隣検索プロトコルとは、同一リンクに接続された2台のノード間に適用されるプロトコルであって、IPv6フレームに含まれるアドレスからMACアドレスに変換しその変換したデータリンクレイヤアドレスを取得する手順が定められている。
【0257】
近隣検索プロトコルは、IPv4プロトコルが規定するARP(Address Resolution Protocol)に相当するものである。
このARPとは、ネットワークに設けられた2台のノード(ルータ,サーバ装置又はクライアント装置)間に適用されるプロトコルであって、IPフレームを送信する送信側ノードが、そのIPフレームを受信する受信側ノードのMACアドレスを知るためのものである。送信側ノードにおいて、IPレイヤ処理部にて生成されたIPフレームが、MACアドレスを付与されて送信されるようになっている。
【0258】
従って、データリンクレイヤの処理は、IPv6アドレスからMACアドレスに変換する必要がある。ここで、データリンクレイヤは、宛先ノードのMACアドレスを通常知らないので、送信側ノードは、受信側ノードのMACアドレスを得るために、宛先ノードのIPv6アドレスを含むメッセージをネットワークの全てのノードに対して送信する。そして、そのメッセージを受信したノードは、メッセージに含まれるIPv6アドレスを参照して自分自身宛のリクエストであることを知ると、自分自身のMACアドレスを送信するようになっている。
【0259】
これにより、外部装置87は、ルータ8のIPv6アドレスおよびプレフィクスを含む要請メッセージをリンクに接続された全てのノードに対して送信する。そして、そのIPv6アドレスを有するルータ8は、この要請メッセージを受信すると、外部装置87に対してMACアドレスを含む応答メッセージを送信する。
【0260】
上記のレイテンシと別個の概念として、アクセスタイムが知られている。このアクセスタイムとは、書き込み又は読み出しの動作に要する時間であり、概略的には、レイテンシに保持データの転送時間を加えた時間を意味する。
(F)付記
(付記1) フレームのヘッダ情報に基づいて該フレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置であって、
該フレームと、該複数種類の検索処理に要する検索情報を保持する領域および該複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサと、
該プロセッサにて変換された該ヘッダ情報セルの該検索情報に基づいて該複数種類の検索処理を行ない該複数の検索結果を該ヘッダ情報セルに書き込み該ヘッダ情報セルを該プロセッサに対して送信する連想メモリ(CAM[Content Addressable Memory]検索システム)とをそなえて構成されたことを特徴とする、ルーティングエンジン装置。
【0261】
(付記2) 外部ネットワークに接続された外部ノードと該プロセッサとの間のフレームフォーマットを変換し、複数の受信フレームのうちの第1フォーマットを有する第1フレームを該外部ノードに対して折り返し転送するとともに該複数の受信フレームのうちの第2フォーマットを有する第2フレームを該プロセッサに出力し、該プロセッサからの第3フォーマットを有する第3フレームを該外部ノードに対して送信する転送処理部をさらにそなえて構成されたことを特徴とする、付記1記載のルーティングエンジン装置。
【0262】
(付記3) 該プロセッサが、
該フレームに含まれるヘッダ情報と装置内部情報とを含むヘッダ情報セルを、該複数種類の検索処理に要する検索情報として生成するように構成されたことを特徴とする、付記1記載のルーティングエンジン装置。
(付記4) 該CAM検索システムが、
該プロセッサからの該ヘッダ情報セルに基づいて検索キーを生成するとともに、該検索キーについての検索結果をプロセッサに対して送信する制御回路と、
参照用の複数の登録データを保持し該複数の登録データのうちの該制御回路にて生成された該検索キーと一致する登録データのメモリアドレスを出力する検索結果保持部と、
該検索結果保持部のアドレス配置と同一のアドレス配置を有し該検索結果保持部から出力された該メモリアドレスに保持されたデータを出力する連想データ保持部とをそなえて構成されたことを特徴とする、付記3記載のルーティングエンジン装置。
【0263】
(付記5) 該制御回路が、
該ヘッダ情報セルを保持するバッファ部と、
該バッファ部に保持された該ヘッダ情報セルから抽出した情報に基づいて該複数種類の検索処理を表す複数の検索キーを生成する検索キー生成部と、
該検索キー生成部にて生成された該複数の検索キーについての検索結果を含む複数の連想データに基づいて該ヘッダ情報セルを生成し該ヘッダ情報セルを該プロセッサに対して送信する検索結果処理部とをそなえて構成されたことを特徴とする、付記4記載のルーティングエンジン装置。
【0264】
(付記6) 該バッファ部が、
該フレームの転送に関する複数の検索種別を表す検索識別と、該複数の検索種別の各検索結果を表す検索結果と、該複数の検索種別に要する検索情報を表す検索情報と、該フレームのヘッダ情報を表すヘッダ情報との各領域を含むヘッダ情報セルを保持するように構成されたことを特徴とする、付記5記載のルーティングエンジン装置。
【0265】
(付記7) 該バッファ部が、
該ヘッダ情報セルの書き込みおよび読み出しを共用する複数のバスラインと接続され該複数のバスラインを介して書き込み制御信号と読み出し選択信号とを入出力可能な複数のデュアルポートメモリと、
各バスラインに該書き込み制御信号を出力することにより、該複数のデュアルポートメモリのうちの書き込み対象のデュアルポートメモリにデータを書き込む第1メモリ選択部と、
各バスラインに出力された該読み出し選択信号に基づいて、該複数のデュアルポートメモリのうちの読み出し対象のデュアルポートメモリからデータを第2メモリ選択部とをそなえて構成されたことを特徴とする、付記5記載のルーティングエンジン装置。
【0266】
(付記8) 該制御回路が、
該CAM検索システムから該プロセッサに対するデータ出力の抑制を通知するバックプレッシャーメッセージを送信するように構成されたことを特徴とする、付記1記載のルーティングエンジン装置。
(付記9) 該CAM検索システムが、
該フレームについて廃棄又は通過を判定するフィルタ検索と、該フレームのプライオリティを判定するフロー検索と、該フレームの送信先アドレス又は該フレームの送信元アドレスに基づいて該フレームのうちの転送経路を出力するフレームを抽出するか否かを判定するトレース検索とのうちの少なくとも1種類の検索処理を行ない、各検索結果を該ヘッダ情報セルに書き込むように構成されたことを特徴とする、付記1〜付記8のいずれか一に記載のルーティングエンジン装置。
【0267】
(付記10) 該CAM検索システムが、
該ヘッダ情報セルの連続したメモリ領域に複数の連想メモリデータを登録する登録部を設け、
該登録部が、該登録された該複数の連想メモリデータと該検索種別コードとを対応付けて該バッファ部に保持するように構成されたことを特徴とする、付記9記載のルーティングエンジン装置。
【0268】
(付記11) 該CAM検索システムが、
該ヘッダ情報セルに含まれる情報を含む連想メモリデータを該連想メモリデータに分割し、該連想メモリデーのうちの第1テーブルと第2テーブルとを対応付けるインデックスを生成し、該インデックスに該検索キーを加えたものを該第2データとして該バッファ部に保持し、該第2データと分割前の全体の連想メモリデータに対応する連想データを保持するように構成されたことを特徴とする、付記7記載のルーティングエンジン装置。
【0269】
(付記12) 該CAM検索システムが、
該連想メモリデータを保持する連続領域に該複数の検索テーブルを設けるとともに、該複数の検索テーブルおよび該検索キーに該検索処理を識別する検索種別コードを検索対象として格納するように構成されたことを特徴とする、付記11記載のルーティングエンジン装置。
【0270】
(付記13) 該CAM検索システムが、さらに、
該バッファ部に保持された該ヘッダ情報セルに含まれる複数の検索処理の検索順序を制御するバッファ制御部をそなえて構成されたことを特徴とする、付記12記載のルーティングエンジン装置。
(付記14) フレームのヘッダ情報に基づいて該フレームの転送処理をする転送処理部と該ヘッダ情報を用いて該フレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置とを有するルータ装置であって、
該ルーティングエンジン装置が、
該フレームと、該複数種類の検索処理に要する検索情報を保持する領域および該複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサと、
該プロセッサにて変換された該ヘッダ情報セルの該検索情報に基づいて該複数種類の検索処理を行ない該複数の検索結果を該ヘッダ情報セルに書き込み該ヘッダ情報セルを該プロセッサに対して送信するCAM検索システムとをそなえるとともに、
該転送処理部が、
該CAM検索システムから送信された該ヘッダ情報セルを上記のフレームに変換し、該変換したフレームを外部ネットワークに接続された外部ノードに転送するように構成されたことを特徴とする、ルータ装置。
【0271】
(付記15) 該転送処理部が、
該外部ノードと該プロセッサとの間のフレームフォーマットを変換し、複数の受信フレームのうちの第1フォーマットを有する第1フレームを該外部ノードに対して折り返し転送するとともに該複数の受信フレームのうちの第2フォーマットを有する第2フレームを該プロセッサに出力し、該プロセッサからの第3フォーマットを有する第3フレームを該外部ノードに対して送信するように構成されたことを特徴とする、付記14記載のルータ装置。
【0272】
(付記16) フレームのヘッダ情報に基づいて該フレームの転送処理をする転送処理部と該ヘッダ情報を用いて該フレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置とを有するルータ装置であって、
該複数種類の検索処理を表す複数の検索キーを用いて複数種類の検索処理を行ない複数の検索結果を保持する検索結果保持部と、
該検索結果保持部における該複数種類の検索処理に要する検索情報を保持する領域および該複数の検索結果を書き込むための領域を含むヘッダ情報セルを保持するバッファ部と、
該バッファ部に保持された該ヘッダ情報セルから抽出した情報に基づいて該検索結果保持部に保持された該複数の検索キーを生成する検索キー生成部とをそなえて構成されたことを特徴とする、ルータ装置。
【0273】
(付記17) フレームのヘッダ情報に基づいて該フレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置における検索方法であって、
該フレームと、該複数種類の検索処理に要する検索情報を保持する領域および該複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサが、該ヘッダ情報セルを送信するヘッダ情報セル送信ステップと、
該CAM検索システムが、該ヘッダ情報セル送信ステップにて入力された該ヘッダ情報セルに含まれる検索情報に基づいて該複数の検索キーを生成する検索キー生成ステップと、
該CAM検索システムが、該検索キー生成ステップにて生成された該複数の検索キーに基づいて該複数の検索処理を行なう検索処理ステップと、
該プロセッサが、該検索処理ステップにて検索処理された該複数の検索結果を表す複数の連想データを受信する検索結果受信ステップとをそなえたことを特徴とする、ルーティングエンジン装置におけるメモリ検索方法。
【0274】
(付記18) 該検索処理ステップが、
該CAM検索システムに設けられ該ヘッダ情報セルの連続したメモリ領域に複数の連想メモリデータを登録する登録部が、第1のメモリ領域を割り当てるとともに該第1のメモリ領域のメモリアドレスと同一のメモリアドレスを有する第2のメモリ領域を割り当てるメモリ領域割り当てステップと、
該登録部が、該複数の連想メモリデータのうちの第1の連想メモリデータを該メモリ領域割り当てステップにて割り当てられた該第1のメモリ領域に格納するとともに、該複数の連想メモリデータのうちの第2の連想メモリデータを該第2のメモリ領域に格納する格納ステップと、
該登録部が、該格納ステップにて該第1の連想メモリデータを格納した該第1のメモリ領域の第1アドレスと同一の該第2のメモリ領域の第2アドレスにインデックスを格納するインデックス格納ステップと、
該登録部が、該インデックス格納ステップにて格納した該インデックスと、上記の検索キー生成ステップにて生成された該複数の検索キーとに基づいて上記の複数の検索処理を行なう第2検索処理ステップとをそなえて構成されたことを特徴とする、付記17記載のルーティングエンジン装置におけるメモリ検索方法。
【0275】
【発明の効果】
以上、詳述したように、本発明のルーティングエンジン装置,ルータ装置およびルーティングエンジン装置におけるメモリ検索方法によれば、以下のような効果ないしは利点がある。
本発明のルーティングエンジン装置によれば、フレームと、複数種類の検索処理に要する検索情報を保持する領域および複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサと、プロセッサにて変換されたヘッダ情報セルの検索情報に基づいて複数種類の検索処理を行ない複数の検索結果をヘッダ情報セルに書き込みヘッダ情報セルをプロセッサに対して送信する連想メモリとをそなえて構成されているので、例えばプロセッサ等に接続されたCAM検索システムにおいて、ヘッダ情報セルの採用およびフォーマット変換を、プロセッサとは別個に外部に設けられたハードウェアにより肩代わりでき、これにより、プロセッサ等の負荷が低減し、インデックスポインタを用いて複数回の検索によって検索結果保持部が処理可能なビット幅を超えたビット幅のデータについての検索を実現できる(請求項1)。
【0276】
また、本発明のルータ装置によれば、ルーティングエンジン装置が、フレームと、複数種類の検索処理に要する検索情報を保持する領域および複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサと、プロセッサにて変換されたヘッダ情報セルの検索情報に基づいて複数種類の検索処理を行ない複数の検索結果をヘッダ情報セルに書き込みヘッダ情報セルをプロセッサに対して送信するCAM検索システムとをそなえて構成されているので、CAM検索システムにおける例えば3種類の検索の順序を制御でき、これにより、検索結果保持部のスループットを最大限、有効利用した高速検索が実現できる(請求項2)。
【0277】
さらに、本発明のルーティングエンジン装置におけるメモリ検索方法によれば、フレームと、複数種類の検索処理に要する検索情報を保持する領域および複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサが、ヘッダ情報セルを送信するヘッダ情報セル送信ステップと、CAM検索システムが、ヘッダ情報セル送信ステップにて入力されたヘッダ情報セルに含まれる検索情報に基づいて複数の検索キーを生成する検索キー生成ステップと、CAM検索システムが、検索キー生成ステップにて生成された複数の検索キーに基づいて複数の検索処理を行なう検索処理ステップと、プロセッサが、検索処理ステップにて検索処理された複数の検索結果を表す複数の連想データを受信する検索結果受信ステップとをそなえているので、複数種類かつビット幅の長いデータの検索処理について、検索結果保持部の設置個数を減少させることができる。さらに、プロセッサ等の負荷を低減するため、CAM検索システムの全体を低コスト化で構築でき、また、処理が大幅に高速化する(請求項3)。
【0278】
加えて、本発明によれば、ヘッダ情報セルの連続送受信に対応でき、ネットワークプロセッサとCAM検索システムとの間におけるインターフェースにおいて、バックプレッシャー機能に対応でき、これにより、データの送受信信頼性が向上する。
また、本発明によれば、運用中のMEMデータ書き替え機能に対応できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る転送装置の構成例を示す図である。
【図2】本発明の一実施形態に係るCAM検索システムのブロック図である。
【図3】(a)は本発明の一実施形態に係る検索結果保持部のブロック図であり、(b)は本発明の一実施形態に係るCAMアレイのデータ例を説明するための図である。
【図4】本発明の一実施形態に係る連想データ保持部のブロック図である。
【図5】本発明の一実施形態に係る検索テーブルを説明するための図である。
【図6】(a)は本発明の一実施形態に係るCAM領域のデータ保持例を説明するための図であり、(b)は本発明の一実施形態に係るMEM領域のデータ保持例を保持するための図である。
【図7】本発明の一実施形態に係るヘッダ情報セルのフォーマット例を示す図である。
【図8】(a)は本発明の一実施形態に係るCAM検索システムの検索方法を説明するための図であり、(b)は本発明の一実施形態に係る制御回路を説明するための図である。
【図9】(a)は本発明の一実施形態に係るフレーム処理の流れを説明するためのフローチャートであり、(b)は本発明の一実施形態に係る検索処理の流れを模式的に示す図である。
【図10】本発明の一実施形態に係る制御回路の概略的なブロック図である。
【図11】(a),(b)はそれぞれ本発明の一実施形態に係る検索結果保持部と連想データ保持部との各データ例を示す図である。
【図12】(a),(b)はそれぞれ本発明の一実施形態に係るパイプライン処理を説明するための図である。
【図13】本発明の一実施形態に係るバッファ部の4本の入出力ポートを説明するための図である。
【図14】本発明の一実施形態に係る複数個のリングバッファのブロック図である。
【図15】(a),(b)はそれぞれ本発明の一実施形態に係るバッファ部のリングバッファ構成を説明するための図である。
【図16】(a)〜(e)はそれぞれ本発明の一実施形態に係るDPRAMのステータスフラグを説明するためのタイムチャートである。
【図17】本発明の一実施形態に係るQPRAMのタイムチャート例を示す図である。
【図18】従来のCAM検索システムの概略的な構成図である。
【符号の説明】
1 CAM検索システム
1a 書き込み/読み出し部
2 制御回路
2a,2b インターフェース回路
3 CAM部(検索結果保持部)
3a CAMアレイ
3b CAMメモリ制御部
3c,4c 入出力インターフェース部
4 MEM部(連想データ保持部)
4a MEMアレイ
4b MEMメモリ制御部
5 バッファ部(セルバッファ,6段リングバッファ,QPRAM)
6 検索キー生成部
6a 並び替え処理部
6b 検索キー生成および並び替え処理部
6c 2面バッファ
6d 検索種別コード生成部
6e セレクタ(第1セレクタ)
7 検索結果処理部
7a 第1レジスタ
7b 第2レジスタ
7c 判定および並び替え処理部
7d セレクタ(第2セレクタ)
8 ルータ(ルータ装置又は転送装置)
9 検索テーブル
9a 1回目のCAMエントリ
9b 1回目のMEMエントリ
9c 2回目のCAMエントリ
9d 2回目のMEMエントリ
10 IPv6ルーティングエンジン(ルーティングエンジン装置)
10b 第3スイッチ
10c NDP(ネットワークデータプロセッサ)
10d,90d,91c,91d ルーティングテーブル
10e フレームバッファ
15a バススイッチ部(第2メモリ選択部)
15b セレクタ(第1メモリ選択部)
80,82 フレーム
80a,82a ヘッダ
80b ペイロード
81 ヘッダ情報セル
81a 装置内部情報
87 外部装置(外部ノード)
88 ROM
89 RAM
90 インターフェース部(転送処理部)
90a,91b,10a CPU
90b 第1スイッチ部
90c インターフェース処理部
91 本体スイッチ部(転送処理部)
91a 第2スイッチ部
91e IPv6アドレス解決検索部
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to address search of a router device (router or transfer device), for example, and whether or not an IPv6 (Internet Protocol version 6 protocol) address of a received frame is held in a registered IPv6 address registered in advance in an address table The present invention relates to a routing engine device, a router device, and a memory search method in a routing engine device suitable for use in CAM search (associative memory search) for performing high-speed search using hardware.
[0002]
[Prior art]
In recent years, due to a rapid increase in the number of users on the Internet, it has been pointed out that IP addresses are depleted, and in order to secure more IP addresses, mobile communication systems are trying to support the IPv6 protocol. The IPv6 protocol mainly defines an address assignment procedure called a hierarchical address (IPv6 address) (for example, Non-Patent Document 1).
[0003]
This IPv6 address has 128 bits, and is an address in which the first 64 bits and the second 64 bits are combined. For example, using a hexadecimal number,
“1040: 0A23: 0C10: 0800: C02D: 0FC: E09A: 76BB”. The first half and the second half of this address represent a network prefix (network identifier or network address) and a host ID (Host Identifier: host computer, terminal, router device, port (physical port) or interface, respectively.
[0004]
With this IPv6 address, address exhaustion is eliminated and a sufficient number of addresses can be secured, and a mobile IP address can be assigned to a mobile terminal in a mobile communication system. Each router performs a routing search by looking up the routing table (address table). Furthermore, each router processes the received frame type determination and a search process for discarding or acquiring the received frame in parallel.
[0005]
The conventional router search method refers to the routing table for the received frame address and outputs the port information of the forwarding destination of the received frame. This search is performed by software processing using a CPU (Central Processing Unit), ROM (Read Only Memory), and RAM (Random Access Memory).
[0006]
On the other hand, in recent years, the IPv6 protocol has been generalized, and frame processing has been speeded up and increased in capacity, and search using software processing has been delayed. Therefore, in order to improve the routing search function, each router is provided with a CAM search system composed of hardware such as an external LSI (Large Scale Integration), for example, to support the CPU search process. , To speed up the search.
[0007]
Here, the CAM is a memory that holds a large number of data. The CAM search system compares the data to be searched with the data held in the CAM, and outputs the holding address when the data to be searched is held.
As an example of a table search in the CAM search system, it is known to determine whether a received frame is a discard target (filter search) and to acquire the priority of the received frame (flow search). The priority is a priority level of processing when congestion occurs in the router or the transmission path. For example, the determination regarding frame discard or transfer and the determination as to whether or not to read before other frame data among the plurality of frame data held in the buffer are performed based on this priority. In the flow search, a frame having a specific address and a specific protocol type such as the IPv6 protocol is searched for in the input frame. Here, a flow is a group of frames extracted under the same conditions.
[0008]
FIG. 18 is a schematic configuration diagram of a conventional CAM search system. The router 100 shown in FIG. 18 includes an NDP (Network Data Processor) 100a for address resolution and a plurality of CAM search systems 100b to 100d.
Here, the address resolution is to obtain a MAC (Media Access Control) address from the IPv6 address, and for example, output port information for outputting the received frame based on the destination IPv6 address of the received frame.
[0009]
In the conventional table search, the NDP 100a extracts necessary information from one input frame, generates two search keys (SEARCH KEY) for each of the two types of search, and each search key is used as a CAM search system. 100b to 100c.
Each of the CAM search systems 100b to 100d specializes in a heavy (heavy) search process, and the CAM unit 101b performs a search process based on a search key input from the NDP 100a, and the CAM unit 101b performs a search. A search result MEM data (DATA) read from the search result address (Address) is transmitted to the NDP 100a, and an MEM unit (associative data holding unit) 101a is provided. This MEM data is data indicated by the search result address output by the CAM unit 101b, and the CAM unit 101b holds CAM data that matches (hits or matches) the search data input to the CAM unit 101b. Data (associative data) that is output via the address and associated with the matching CAM data.
[0010]
One NDP 100a merges a plurality of search results (HIT STATUS: hit status and DATA: search result data) from the CAM search systems 100b to 100c, and processes a frame based on the merged search results. It has become. Here, merging means merging a plurality of data into one cell data unless otherwise specified.
[0011]
Therefore, when the NDP 100a receives a plurality of search requests, the NDP 100a selects and searches the CAM search systems 100b to 100d for each of the plurality of searches. That is, a plurality of searches are processed for each frame, and only one search result is obtained with one search request.
The search key has a plurality of bit widths, and the processable data is restricted to data having a bit width shorter than the processable bit width of the CAM search systems 100b to 100d. Each search result is merged by the NDP 100a.
Various address search methods have been proposed.
[0012]
For example, an address search device (hereinafter referred to as an address search machine) that has a function of searching by dividing an address into upper and lower addresses has been proposed (for example, Patent Document 1). The address search machine described in Patent Document 1 includes a packet engine that issues an address search request, a CAM that registers an address to be searched, an SSRAM (Synchronous SRAM) that stores routing information, and operations of the CAM and SSRAM. And an IPv6 address search function for executing a search by dividing an address into upper and lower addresses in addition to the IPv4 address search function.
[0013]
Thereby, an IPv6 address search can be realized from a conventional IPv4 address search machine without adding special hardware.
Furthermore, a frame transfer control method that can realize a large-capacity search of a plurality of parameters required for hardware routing has been proposed (for example, Patent Document 2).
[0014]
The flow search circuit described in Patent Document 2 uses a CAM having a variable mask function that can set the valid / invalid range of each registered data for each bit. Also, for the field ID search unit and the flow ID search unit, CAM is commonly used.
By combining a tree search using a RAM capable of setting a large capacity and a flow search using a CAM searchable by a plurality of parameters, a large capacity and a plurality of parameters required for hardware routing can be obtained. Search can be realized.
[0015]
A method using an associative memory has also been proposed (for example, Patent Document 3). Patent Document 3 discloses an associative memory that enables high-speed search even when search data spans a plurality of data and the order of the plurality of data needs to be changed.
Thus, since the arrangement conversion circuit is provided, it is not necessary to provide a microprocessor for changing the order of data, and the system can be simplified and the search speed can be improved.
[0016]
[Patent Document 1]
JP 2002-290448 A
[Patent Document 2]
JP 2002-176437 A
[Patent Document 3]
Japanese Patent Laid-Open No. 7-226092
[Non-Patent Document 1]
http: // www. ietf. org / rfc / rfc2460. Protocol described in txt
[0017]
[Problems to be solved by the invention]
However, when this address search method is used, three or more CAM search systems 100b to 100d are required, the processor load becomes excessive, the throughput is lowered, and the performance cannot be sufficiently exhibited. Furthermore, each search type such as filter search requires the CAM search systems 100b to 100d, and the memory area is difficult to use effectively.
[0018]
Further, the IPv6 protocol defines the bit widths of the CAM data (associative memory data) and the search key to be longer than the existing bit width in order to recognize a vast address space. Therefore, when designing a router corresponding to an IPv6 frame, the existing CAM search systems 100b to 100d cannot process a long bit width IPv6 address at a time because the processable bit width is short.
[0019]
On the other hand, the CAM search systems 100b to 100d can divide (separate) a long IPv6 address into a plurality of addresses such as two, for example, and perform a search twice (hereinafter referred to as a two-time search). . In this case, in the CAM search systems 100b to 100d, the index of the first search result is input as the second search key. For this reason, the time required for the two searches is longer than the time interval (interval for receiving IPv6 frames) at which the header information cell is generated, so there is a second problem that the search time is restricted.
[0020]
The control circuit has a third problem that the input / output port is always continuously accessed and requires two writes and two reads, and thus the load is heavy.
In addition, each of the devices described in Patent Documents 1 and 2 requires control such as timing measurement until the search of the CAM search systems 100b to 100d is completed, and the load on the processor is large.
[0021]
Furthermore, with the increase in data speed, the processing speed of the processor in the conventional router is relatively delayed, and this delay causes processor overhead. This overhead is caused by search key generation and search result merge processing. Therefore, it is desired to support an interface that can distribute the overhead processing load and is convenient for the processor.
[0022]
The present invention has been devised in view of such problems, and is provided in a router device based on the IPv6 protocol, and one CAM search system uses a search key having a bit width longer than a processable bit width. An object of the present invention is to provide a routing engine device, a router device, and a memory search method in the routing engine device that can increase the number of searches and the search speed and can reduce the processing load of the processor.
[0023]
[Means for Solving the Problems]
Therefore, the routing engine apparatus of the present invention is a routing engine apparatus that performs a plurality of types of search processing related to frame transfer based on header information of the frame, and holds the frame and search information required for the plurality of types of search processing. And a header information cell including a region for writing a plurality of search results, and a plurality of types of search processing based on the search information of the header information cell converted by the processor. The present invention is characterized by comprising a content addressable memory (CAM) for writing a search result in a header information cell and transmitting the header information cell to a processor.
[0024]
Also, the router device of the present invention includes a transfer processing unit that performs frame transfer processing based on frame header information and a routing engine device that performs a plurality of types of search processing related to frame transfer using header information. A processor in which the routing engine apparatus mutually converts a frame and a header information cell including an area for holding search information required for a plurality of types of search processing and an area for writing a plurality of search results, and a processor And a CAM search system for performing a plurality of types of search processing on the basis of the search information of the header information cell converted in step (a), writing a plurality of search results in the header information cell, and transmitting the header information cell to the processor. The processing unit uses the header information cell transmitted from the CAM search system as described above. Into a frame, it is characterized in that it is configured to transfer the converted frame to an external router (claim 2).
[0025]
Furthermore, the memory search method in the routing engine apparatus of the present invention is a memory search method in a routing engine apparatus that performs a plurality of types of search processing related to frame transfer based on header information of a frame. A header information cell transmitting step in which a processor for mutually converting an area for holding search information required for processing and a header information cell including an area for writing a plurality of search results transmits a header information cell; A search key generation step for generating a plurality of search keys based on the search information included in the header information cell input in the header information cell transmission step, and a plurality of CAM search systems generated in the search key generation step Search process that performs multiple search processes based on the search key A step, the processor is characterized in that a search result receiving step of receiving a plurality of association data representing a plurality of search results retrieved processed in search processing step (claim 3).
[0026]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below with reference to the drawings.
(A) Description of an embodiment of the present invention
FIG. 1 is a diagram showing a configuration example of a router (router device or transfer device) according to an embodiment of the present invention. The router 8 shown in FIG. 1 has a transfer processing unit that performs frame transfer processing based on header information of a frame (IPv4 frame or IPv6 frame) and IPv6 that performs three types of search processing related to frame transfer using the header information. And a routing engine (routing engine device or routing engine unit).
[0027]
As will be described in detail below, the router 8 has a transfer function for resolving the address based on the transmission destination address (transmission destination IPv4 address or transmission destination IPv6 address) included in the header of the received frame and transferring it to the output port. And three types of search processing functions of filter search, flow search and trace search. Both of these transfers and three types of searches are performed by the IPv6 routing engine 10 of the present invention provided in the router 8.
[0028]
The router 8 can also set four or more desired search items for the type of search processing, and can increase various search types based on the design policy or specifications. In the following, three types of search processing will be described as an example.
In the following description, each of the IPv4 frame and the IPv6 frame includes a mobile IPv4 frame and a mobile IPv6 frame for mobile communication.
[0029]
(1) Three types of search (filter search, flow search, and trace search)
(1-1) Filter search is processing for determining whether or not an IPv6 frame is to be discarded, and includes a source MAC address and a destination MAC address, a source IPv6 address and a destination IPv6 address of the IPv6 frame. And frame transfer or frame discard based on the IPv6 protocol.
[0030]
(1-2) A flow search is a process for determining any of, for example, 8 levels (3 bits) of the priority of an IPv6 frame, and a frame having a specific address in an IPv6 frame, for example, This is a process for searching for a frame having a specific protocol type such as the IPv6 protocol. A flow represents a group of frames extracted under the same conditions. The priority level can be set to 8 or less or 8 or more stages.
[0031]
(1-3) Trace search is a process for determining whether or not an IPv6 frame is a trace target. In the network or link, fault detection data for detecting the occurrence of a fault and a transfer status are diagnosed. This is a process for transmitting and receiving diagnostic data to be transmitted. The trace means a history of a route or node (router, server device or client device) transferred between the transmission source address and the transmission destination address of the frame. In other words, the trace search is a search process for determining whether or not to extract an IPv6 frame that outputs a transfer route from an IPv6 frame based on the destination IPv6 address of the IPv6 frame or the source IPv6 address of the IPv6 frame. Represents.
[0032]
Trace search is also a type of filter search in that it determines whether or not a received IPv6 frame is a processing target. On the other hand, the trace search holds the received frame in the buffer unit (buffer or cell buffer) even after the information necessary for tracing is extracted, while the filter search receives the failure occurrence notification from the received frame and relates to the failed node or the failed location When the information is extracted, the received frame is erased from the buffer unit.
[0033]
(1-4) Three types of search methods
These three types of searches are for searching whether or not search target data such as a source IPv6 address and a destination IPv6 address of a received frame is held in a memory provided in the router 8. When the same data as the data or data corresponding to the search target data is held, the holding address is output.
[0034]
(1-5) Start of three types of search
Regarding the three types of search start triggers, both filter search and flow search are performed each time an IPv6 frame is received. The trigger for starting the trace search starts when a certain interval or the network or link traffic volume of the router 8 exceeds a threshold determined based on the network transmission speed, transmission capacity, maintenance management, and contract with the user. To do.
[0035]
(1-6) Search target frame
Frames transmitted and received between the router 8 and the external device (external node) 87 are both IPv4 and IPv6 frames. Of these, the IPv4 frame is processed by the interface unit 90 and the main body switch unit 91, and the IPv6 frame is processed by the IPv6 routing engine 10.
[0036]
(1-7) Module for performing three types of search
The three types of searches are performed in a CAM search system 1 described later provided in the IPv6 routing engine 10, and the transfer function is performed in a network processor (NDP 10c) provided in the IPv6 routing engine 10. In other words, the CAM search system 1 specializes in three types of searches that have a large processing load, thereby reducing the load on the NDP 10c.
[0037]
Here, a registration method (accumulated data) registration method referred to in the CAM search system 1 and a search method using the registration data will be schematically described.
Registration data is managed by inputting data from the input / output interface units 3c and 4c connected to the CAM array 3a and the MEM array 4a shown in FIGS. 3 (a), 3 (b), and 4 respectively. This is done by installing a memory in which the person has registered data.
[0038]
More specifically, in the case of data having a bit width that can be registered in one CAM array 3a, the registration data to be registered is registered in the CAM array 3a and the search result (for example, output port information) is registered. ) Is registered in the MEM array 4a. The memory address of the MEM array 4a is assigned to be the same as the memory address of the CAM array 3a (see FIGS. 6, 11A and 11B described later), and the CAM array 3a and the MEM array 4a are common. Entry address. Therefore, the MEM array 4a holds data for reading at the same entry address as the entry address of the CAM array 3a. That is, the MEM array 4a holds search results (for example, output port information) in one-to-one correspondence with the entry addresses input to the CAM array 3a.
[0039]
Thereby, data (CAM entry) necessary for the search is input to the CAM search system 1, and whether or not the data (search key) input from the control circuit 2 is held in the CAM array 3a itself in the CAM unit 3. Is searched. When data is held, the CAM unit 3 outputs a search result address, and this address is input to the MEM unit 4. The MEM array 4a outputs data registered in one-to-one or many-to-one correspondence with the same address as the CAM entry input (registered) in the CAM array 3a. That is, the output data is a search result (for example, output port information).
[0040]
Further, when searching for data having a bit width longer than the bit width of the IPv6 address that can be processed by the CAM search system 1, the CAM unit 3 divides the long data into two, and performs two searches of the first half and the second half. Do. In order to associate these two search results, the router 8 of the present invention uses an index pointer.
These registration and search will be described in detail. Hereinafter, the interface unit 90 and the main body switch unit 91 shown in FIG. 1 will be described, and then the IPv6 routing engine 10 will be described.
[0041]
(2) Configuration of router 8
The router 8 shown in FIG. 1 includes an interface unit 90, a main body switch unit 91, and an IPv6 routing engine 10.
(2-1) Interface unit 90
The interface unit 90 interfaces the external device 87 and the router 8, and includes a CPU 90a, a ROM 88, a RAM 89, a first switch unit 90b, and an interface processing unit 90c.
[0042]
Here, the external device 87 is a router, a server device, or a client device that is connected to each of the input port and the output port of the router 8 and transmits / receives both an IPv4 frame and an IPv6 frame, and has a 100 Mbps (Mega Bit Per Second) Ethernet interface. Alternatively, it has an interface such as a 1 Gbps (Giga Bit Per Second) Ethernet (R) interface. In the following description, the interface means frame format conversion unless otherwise specified.
[0043]
The CPU 90a controls the interface unit 90c and the first switch unit 90b in cooperation with the ROM 88 and the RAM 89.
The interface processing unit 90c transmits and receives frames between the router 8 itself and an external device 87 such as a 100 Mbps Ethernet (R) interface or a 1 Gbps Ethernet (R) interface, and between the first switch unit 90b in the router 8. It performs frame transmission / reception, and has a plurality of interface ports for transmitting / receiving frames.
[0044]
The interface unit 90 may be configured as a plurality of sub-interface units according to the connection destination of each port, the arrangement position of each port, and the like.
Thereby, the interface unit 90 can process frames of a plurality of different interfaces.
Next, when the received frame is an IPv4 frame, the first switch unit 90b resolves the address of the IPv4 frame and transmits the resolved address to the external device 87. When the received frame is an IPv6 frame, the first switch unit 90b transmits the IPv6 frame. This is transmitted to the main body switch unit 91, and has a routing table 90d for the IPv4 frame and a routing table for resolving the address for the IPv4 frame.
[0045]
The first switch unit 90b receives the IPv4 frame or the IPv6 frame switched by the main body switch unit 91, and transmits each frame to the interface processing unit 90c.
As a result, the IPv4 frame transmitted by the external device 87 is address-resolved by return transfer in the first switch unit 90b via the port of the interface unit 90. Further, the IPv4 frame that is transferred back by the main body switch unit 91 and the IPv6 routing engine 10 is passed through the first switch unit 90 b as it is and transferred to the external device 87.
[0046]
The IPv6 frame transmitted by the external device 87 is transferred to the IPv6 routing engine 10 via the main body switch unit 91. On the other hand, the IPv6 frame transmitted from the main body switch unit 91 is transmitted to the external device 87 as it is.
(2-2) Main body switch unit 91
The main body switch unit 91 switches or relays a frame between the interface unit 90 and the IPv6 routing engine 10, and transmits and receives IPv4 and IPv6 frames between the interface unit 90 and the IPv6 routing engine 10. The switch unit 91a and a control unit (CPU 91b, ROM 88 and RAM 89) for controlling the second switch unit 91a are provided.
[0047]
Here, the second switch unit 91a has a routing table 91c for resolving addresses for IPv4 frames.
The interface unit 90 and the main body switch unit 91 cooperate to convert the header information cell transmitted from the CAM search system 1 into the header of the IPv6 frame, and connect the converted IPv6 frame to the external network. Functions as a transfer processing unit (90, 91) for transferring to the external device 87.
[0048]
The transfer processing unit (90, 91) converts the frame format between the external device 87 connected to the external network and the NDP 10c, and the IPv4 format of a plurality of received frames such as an IPv4 frame and an IPv6 frame. An IPv4 frame (first frame) having (first format) is transferred back to the external device 87, and an IPv6 frame having the IPv6 format (second format) among a plurality of received frames such as an IPv4 frame and an IPv6 frame. (Second frame) is output to the NDP 10c, and an IPv6 frame (third frame) having the IPv6 format (third format) from the NDP 10c is transmitted to the external device 87.
[0049]
As a result, similar to the first switch unit 90b, the IPv4 frame from the external device 87 is routed or address-resolved and transferred back. Further, when receiving the IPv6 frame, the main body switch unit 91 transmits the IPv6 frame to the IPv6 routing engine 10. Further, the IPv6 frame from the IPv6 routing engine 10 passes through the router 8 as it is and is transmitted to the external device 87.
[0050]
When the interface unit 90 is composed of a plurality of sub-interface units, the interface unit 90 can transmit and receive a frame specifying each sub-interface unit.
(3) IPv6 routing engine 10
The process related to the frame of the IPv6 routing engine 10 is a reception format process (first frame process) for the received IPv6 frame, an address resolution of the IPv6 frame and a search process for three types of searches, and a header of the IPv6 frame is rewritten. There are mainly four types of header processing and transmission format processing (second frame processing) for the IPv6 frame to be transmitted, and will be described in the following (3-1) to (3-4). The three types of search processing are performed by the CAM search system 1 and will be described in (3-2-2). Each process other than the three types of search processes is performed by the NDP 10c.
[0051]
(3-1) First frame processing
In the first frame processing, the NDP 10c extracts the header information of the received IPv6 frame, temporarily holds the payload (payload data) of the IPv6 frame, and adds the internal device information of the router 8 to the extracted header information. Do.
(3-2) Search process
The search process includes both an IPv6 frame address resolution process and three types of search processes.
[0052]
(3-2-1) Address resolution
Address resolution is to select an output port based on the destination IPv6 address of the header of the received IPv6 frame.
(3-2-2) Three Search Methods of the Present Invention (Memory Search Method in Routing Engine Device)
The memory search method in the routing engine apparatus of the present invention performs three types of search processing related to frame transfer based on frame header information. Here, the filter search and the flow search among the three types of searches are performed by the IPv6 routing engine 10 for each IPv6 frame. The trace search is performed for each IPv6 frame at the time of setting. It is set when the administrator or management program determines that collection or diagnosis of failure data and diagnosis data is necessary.
[0053]
The header information cell is transmitted to the CAM search system 1 by the NDP 10c, and the CAM search system 1 searches based on search information included in the header information cell. Thereafter, the search result is written into the header information cell by the CAM search system 1 and transmitted to the NDP 10c.
FIG. 7 is a diagram showing a format example of a header information cell according to an embodiment of the present invention. The header information cell shown in FIG. 7 includes identification information for each search type of filter search, flow search, and trace search. This is data held in a memory having a holding area for each search result data. This header information cell is generated by the NDP 10c for each received IPv6 frame, and transmitted to a buffer provided in the CAM search system 1 of the IPv6 routing engine 10. The header information cell is converted into a search key (CAM entry data input to the CAM) by the CAM search system 1, and three types of searches are performed using the search key.
[0054]
Therefore, the NDP 10c, the CAM search system 1, and the IPv6 routing engine 10 can write and read the header information cell, respectively.
Thereby, it is determined whether or not each IPv6 frame is a discard target, the priority of the IPv6 frame is extracted, and the presence or absence of a failure in the network is detected for the IPv6 frame by trace search for a predetermined period.
[0055]
(3-3) Header processing
In the header processing, the output port of the IPv6 frame determined by the routing search is rewritten and the header of the IPv6 frame is rewritten.
(3-4) Second frame processing
The second frame process is a format process for transmitting an IPv6 frame from the NDP 10c to the third switch unit 10b, and reads the payload held in the first frame process, and an output IPv6 frame including the payload. Is regenerated.
[0056]
The above four types of processing (first frame processing, search processing, header processing, and second frame processing) will be described later with reference to FIGS. 8A and 8B.
(3-5) Routing search of IPv4 frame and IPv6 frame
As a result, the IPv4 frame input to the router 8 is routed and returned by the first switch unit 90b and the second switch unit 91a, respectively.
[0057]
On the other hand, the IPv6 frame is input to the IPv6 routing engine 10 via the interface unit 90 and the main body switch unit 91, and the routing search for the IPv6 frame is performed by the NDP 10c.
(3-6) Memory search method in routing engine apparatus of the present invention using header information cell
In the memory search method in the routing engine apparatus of the present invention, the NDP 10c includes header information including an area for storing search information required for three types of search processing and a region for writing three types of search results in the CAM search system 1. A cell is transmitted (header information cell transmission step).
[0058]
Next, the CAM search system 1 generates three types of search keys based on the search information included in the header information cell input in the header information cell transmission step (search key generation step).
Then, the CAM search system 1 performs three types of search processing based on the three types of search keys generated in the search key generation step (search processing step).
[0059]
Further, the NDP 10c receives three types of associative data representing the three types of search results searched in the search processing step (search result receiving step).
The associative data is search result data output by the CAM search system 1 and is output when data matching the search data input to the CAM search system 1 is held in the CAM search system 1. This data is associated with the matching data via an address.
[0060]
(3-6-1) Filter search
Thereby, in the case of the filter search, the source IPv6 extracted from the received frame by the NDP 10c in the areas to which the header information cells 9 and 10 shown in FIG. 7 are attached (hereinafter referred to as areas 9 and 10). The address and the destination IPv6 address are written, and the header information cell including each of the source and destination IPv6 addresses is passed to the CAM search system 1. Then, the CAM search system 1 compares the source IPv6 address and the destination IPv6 address included in the received frame with the IPv6 address for the search target stored in advance.
[0061]
If both IPv6 addresses match (hit), the CAM search system 1 recognizes the received frame as a discard target and activates “discard” of the associative data in the table 2 shown in FIG. When the entire header information cell is viewed, the bit in the uppermost “discard” area of the header information cell shown in FIG. 7 is turned on (active), and this header information cell is returned to the NDP 10c. Thereafter, the NDP 10c stops processing the “discard” target bit.
[0062]
As described above, an IPv6 address is used as search target data at the time of filter search. Note that other field data (for example, a transmission source port number) included in the CAM entry shown in FIG. 5 can be searched.
(3-6-2) Flow search
In the case of flow search, the CAM search system 1 writes any value of 8 levels in the header information cell in the priority area, and returns the header information cell to the NDP 10c.
[0063]
Each trigger of the filter search and the flow search is always performed together with the transmission of the header information cell.
(3-6-3) Trace search
The trace search is not always performed because it determines whether or not a failure has occurred. This trace search is performed when the router 8 shifts to a trace mode for detecting the occurrence of a failure.
[0064]
(3-6-4) Comparison between conventional search method and memory search method in routing engine apparatus of the present invention
In the conventional search method, only one search result is obtained for one search request. That is, the conventional search requires two search tables for each of the filter search and the flow search, and each of the two search tables is read and the search result is written, resulting in a processing delay. was there.
[0065]
On the other hand, according to the memory search method in the routing engine apparatus of the present invention, the NDP 10c sends a header information cell to the CAM search system 1 once, thereby requesting the CAM search system 1 to perform three types of searches. In addition, three types of search results can be acquired from the header information cell received from the CAM search system 1. Further, the NDP 10c can refer to information other than the search result included in the received header information cell.
[0066]
Therefore, since the CAM search system 1 supports the processing required for the three types of searches, the load on the NDP 10c is reduced, and high-speed and large-capacity IPv6 frame traffic can be processed effectively.
The function of the NDP 10c is realized by a normal processor or CPU, and is synonymous with NP (Network Processor) or NPU (Network Processing Unit).
[0067]
(4) Configuration of IPv6 routing engine 10
The IPv6 routing engine 10 performs three types of search processing related to frame transfer based on frame header information. The CPU 10a, ROM 88 and RAM 89, the third switch unit 10b, the NDP 10c, and the CAM search system 1 It is configured with. The IPv6 routing engine 10 also performs IPv6 address destination port resolution.
[0068]
(4-1) CPU 10a, ROM 88 and RAM 89
The CPU 10a, the ROM 88, and the RAM 89 control the third switch unit 10b, the NDP 10c, and the CAM search system 1 by cooperating with each other.
(4-2) Third switch section 10b
When the IPv4 frame is received from the main body switch unit 91, the third switch unit 10b routes and resolves the IPv4 frame and returns it. When the IPv6 frame is received, the third switch unit 10b transmits the IPv6 frame to the NDP 10c. To do. The third switch unit 10b has a routing table 10d for routing and address resolution for the received IPv4 frame.
[0069]
Further, the third switch unit 10b receives the IPv6 frame whose routing and address have been resolved from the NDP 10c and transmits the IPv6 frame to the main body switch unit 91.
As a result, the third switch unit 10b loops forward the IPv4 frame between the main body switch unit 91 and the IPv6 routing engine 10, and transmits the IPv6 frame to the NDP 10c.
[0070]
(4-3) NDP10c
The NDP 10c mutually converts an IPv6 frame and a header information cell including an area for holding search information required for three types of search processing and an area for writing three types of search results.
The NDP 10c generates a header information cell including header information included in the IPv6 frame and device internal information of the router 8 as search information required for three types of search processes. For example, as shown in FIG. 7, this apparatus internal information is identification information for identifying three types of search processing (identification information for identifying the processing contents of the three types of search processing. ), And information such as the source IPv6 address and destination IPv6 address of the received IPv6 frame.
[0071]
Specifically, the NDP 10c includes input / output of header information cells with the CAM search system 1, address resolution and prefix search for IPv6 frames, and an IPv6 frame transmission / reception function with the third switch unit 10b. Each process is performed. Here, the prefix is a network identifier and is data stored in the first half of the IPv6 address.
[0072]
Further, the memory (memory area) for mutual conversion between the IPv6 frame and the header information cell of the NDP 10c may be provided with the buffer unit 5 provided in the CAM search system 1 or a separate buffer unit (not shown).
Here, the input / output (processing) function of the header information cell is realized by the cooperation of the CPU 10a (or NDP 10c), the ROM 88, and the RAM 89 in addition to the NDP 10c. The address resolution function and the prefix function are both realized by the cooperation of the CPU 10a, the RAM 89, and the routing table 91d. This routing table 91d is a routing table for the IPv6 frame. Further, the IPv6 frame transmission / reception function with the third switch unit 10b is realized by the cooperation of the CPU 10a (or NDP 10c), the ROM 88, and the RAM 89 in addition to the NDP 10c.
[0073]
As a result, for the header information cell transmission / reception function, the NDP 10c passes the header information cell to the CAM search system 1 (search request) and returns the header information cell from the CAM search system 1 (result reception). Further, the NDP 10c receives the IPv4 frame from the third switch unit 10b, and transmits an IPv6 frame having the data link layer address resolved by the CAM search system 1 to the third switch unit 10b.
[0074]
Therefore, the NDP 10c uses a fixed-length format cell (header information cell) format including header information of the received IPv6 frame and device internal information of the router 8 for one type of received IPv6 frame in order to perform processing related to routing. Used to internally process information related to IPv6 frames.
Thus, the NDP 10c supports filter search, flow search, and trace search, and supports address resolution based on route search of IPv6 frames.
[0075]
(4-4) Header information cell format
FIG. 7 is a view showing a format example of a header information cell according to an embodiment of the present invention, and displays an example of data held in the buffer of the CAM search system 1. The header information cell shown in FIG. 7 has a fixed-length format so as to match the size of the cell processed by the NDP 10c, and an example of the size is 24 bits with a 32-bit width.
[0076]
Here, the areas to which 2 to 10 are attached (areas 2 to 10) are areas that are referred to for creating a search key (Search Key: search key data) for identifying three types of searches.
Also, the areas to which 11 to 16 are attached (hereinafter referred to as areas 11 to 16) are areas in which the CAM search system 1 writes, and the search results and status signals are merged together (a plurality of data is 1). This is an area where values are written after being aggregated, merged or combined with cell data. Note that areas other than the areas 2 to 16 (areas shaded) represent areas that do not require writing and reading by the CAM search system 1.
[0077]
In other words, the NDP 10c writes data necessary for the search to the header information cell areas 2 to 10, and passes (inputs) the written header information cell to the CAM search system 1. The CAM search system 1 searches using the data in the areas 2 to 10 and writes the search results in the areas 11 to 16. Then, the CAM search system 1 outputs (returns) the header information cell in which the search result is written to the NDP 10c.
[0078]
Thereby, the NDP 10c knows each search result of the filter search, flow search, and trace search. In addition, the NDP 10c passes one header information cell to the CAM search system 1, which corresponds to a search request. The CAM search system 1 returns a header information cell in which three types of search results are merged to the NDP 10c. This corresponds to the notification of the search result.
[0079]
The header information cell will be described in more detail. An area 11 (discard) is a bit for discarding a frame. When this bit is H (High: indicates active), this indicates that the frame is a discard target. An area 12 (Hit Flag) indicates that the input frame includes a priority, and an area 13 (priority) indicates the priority of the frame with 8 levels (3 bits). A flow search for obtaining priority is performed by these areas 12 and 13. Further, an area 14 (Hit Flag) is an area for representing by 1 bit whether or not the frame is a trace target. An area 15 (trace-mode) represents a trace mode. An area 16 (CAM Error) indicates that the CAM search system 1 is operating abnormally.
[0080]
Thereby, when the NDP 10c transmits a header information cell to the CAM search system 1, the CAM search system 1 generates a search key including information necessary for the search from the header information cell. The detection key is CAM entry data input to the CAM, and the CAM search system 1 starts a filter search using this search key. During the filter search, the CAM search system 1 generates a search key including information necessary for the flow search and starts the flow search. Similarly, during the flow search, the CAM search system 1 generates a search key including information necessary for the trace search and starts the trace search.
[0081]
Then, the CAM search system 1 outputs associative data including the results of the filter search in parallel with the flow search or the trace search, and is obtained after the time required for the search processing to output the search results has elapsed. The flow search result and the trace search result obtained after the time required until the search result is output are output as associative data. The associative data including the three types of search results is merged into one header information cell, and the merged header information cell is returned to the NDP 10c.
[0082]
Even when only two types of searches, ie, a filter search and a flow search, are performed, the search results of the filter search and the flow search are merged and a header information cell is output.
As described above, the NDP 10c transmits one search request message to the CAM search system 1, and the CAM search system 1 performs three types of searches and transmits three types of search results to the NDP 10c. The load of NDP10c can be greatly reduced.
[0083]
(5) CAM search system 1
The CAM search system 1 performs three types of search processing based on the search information of the header information cell converted by the NDP 10c, writes three types of search results in the header information cell, and transmits the header information cell to the NDP 10c. It is. The CAM search system 1 supports a heavy (heavy) search process and inputs / outputs header information cells to / from the NDP 10c.
[0084]
FIG. 2 is a block diagram of the CAM search system 1 according to an embodiment of the present invention. The CAM search system 1 shown in FIG. 2 is based on a filter search for determining discard or passage of an IPv6 frame, a flow search for determining the priority of an IPv6 frame, and a source IPv6 address or a destination IPv6 address of the IPv6 frame. Each search process is performed with a trace search for determining whether or not to extract an IPv6 frame that is a target for outputting an IPv6 frame transfer path, and each search result is written in a header information cell. (Hereinafter referred to as a writing / reading unit) 1a, CAM unit (search result holding unit) 3, MEM unit (associative data holding unit) 4, and control circuit (transmission / reception control circuit) 2 Has been. 2 that have the same reference numerals as those described above have the same or the same functions.
[0085]
(5-1) Write / read unit (write and read means) 1a
The writing / reading unit 1a writes and reads each data of the control circuit 2, the CAM unit 3, and the MEM unit 4, and uses, for example, an LSI (CAM-LSI) to increase the speed of data processing. Is planned.
(5-2) CAM part 3
FIG. 3A is a block diagram of the CAM unit 3 according to an embodiment of the present invention. The CAM unit 3 shown in FIG. 3A holds a plurality of registration data for reference and outputs a memory address of registration data that matches the search key generated by the control circuit 2 among the plurality of registration data. To do. Specifically, the CAM unit 3 performs address resolution, three types of searches (filter search, flow search, and trace search), and outputs a status signal indicating each search result. 3a, a CAM memory control unit 3b, and an input / output interface unit (I / O Interface) 3c. The CAM unit 3 is realized by an LSI, for example. Further, the CAM unit 3 can perform one type or two types of search processing among the three types of search processing.
[0086]
Here, the CAM array 3a is an array of memory cells, and p 1 Row q 1 Column (p 1 , Q 1 Both represent natural numbers. ) Of memory cells.
FIG. 3B is a diagram for explaining a data example of the CAM array 3a according to the embodiment of the present invention. The CAM array 3a shown in FIG. 3B holds a number of memory cells (288 bits) corresponding to the number of memory cells at each address (for example, 0x0000). Here, a numerical value starting with “0x” represents a hexadecimal number.
[0087]
Next, the CAM memory control unit 3b shown in FIG. 3A inputs the search key received from the search key generation unit 6 (see FIG. 2) to the CAM array 3a, and the CAM array 3a performs a search operation. The memory cell address (Address) and status signal (Status) are output as search results, respectively. The CAM memory control unit 3b functions as a registration unit that registers three types of search tables in a continuous memory area of header information cells, and stores the three types of registered CAM data (including a search type code) in the CAM unit 3 It is supposed to hold on.
[0088]
Further, the status signal has no data matching the “hit” indicating that one piece of matching data is held in the CAM array 3a and “multi-hit” indicating that a plurality of pieces of matching data are held. "Mishit" is output.
The input / output interface unit 3c controls writing and reading of addresses and data held in the CAM array 3a by the control circuit 2. For example, the write / read unit 1a designates the memory address of the CAM array 3a and reads the data held at the memory address, and writes the data, that is, the CAM entry to the designated memory address, as in a normal memory. is there. The input / output interface unit 3c registers data such as a header information cell, a routing table, and an address resolution table in the CAM array 3a, and reads data held in the CAM array 3a to confirm data registration contents.
[0089]
Thus, when the search key is input from the control circuit 2 by the CAM memory control unit 3b, the CAM memory control unit 3b searches the CAM array 3a for the search key, and holds the CAM entry that matches the search key. A holding address of the CAM entry and a status signal indicating a hit (or multi-hit) are output. Further, the CAM memory control unit 3b outputs a status signal indicating a mishit when no CAM entry matching the search key is held.
[0090]
The search key and the CAM entry have a common data format, and can include an IPv6 address as data.
As a result, address resolution for the IPv6 frame and three types of search processing can be realized.
(5-3) MEM section 4
The MEM unit 4 has the same address arrangement as that of the CAM unit 3 and outputs data held in the memory address (search result address) output from the CAM unit 3. The MEM unit 4 inputs associative data including three types of search results held in the MEM unit 4 itself or the CAM unit 3 to the control circuit 2. The MEM unit 4 is different from the CAM unit 3 that can search for stored data in that it does not have a search function for data held in the MEM unit 4 itself. The functional block is similar to the block shown in the CAM unit 3.
[0091]
FIG. 4 is a block diagram of the MEM unit 4 according to an embodiment of the present invention. The MEM unit 4 shown in FIG. 4 includes a MEM array 4a, a MEM memory control unit 4b, and an input / output interface unit 4c. Each function is realized by, for example, an external IC or a chip device.
Here, the MEM array 4a is p 2 Row q 2 Column (p 2 , Q 2 Both represent natural numbers. ), And in the same manner as the CAM unit 3 shown in FIG. 3B, each memory address has a number of memory cells corresponding to the number of memory cells. The MEM array 4a holds in advance various data defined in a search table (to be described later) such as associative data and indexes, and the memory address array is the same as the memory address array of the CAM array 3a. Has been.
[0092]
The MEM memory control unit 4b inputs the memory address input from the CAM unit 3 to the MEM array 4a and outputs the stored data looked up by the MEM array 4a. In addition to the memory address, the MEM memory control unit 4b also receives a control signal for controlling reading or writing of retained data from the CAM unit 3.
[0093]
Further, the input / output interface unit 4c controls the writing / reading of data to / from the writing / reading unit 1a according to the input of the memory address and control signal from the CAM unit 3, and the data is transferred to the MEM array 4a. Registration is performed, and data stored in the MEM array 4a is read to confirm data registration.
[0094]
Then, the MEM unit 4 inputs each information data of the search result to the search result processing unit 7 of the control circuit 2.
As a result, the search operation is performed when the CAM unit 3 searches against a CAM entry (data input to the CAM unit 3) using the input search key, The memory address of the CAM unit 3 itself holding the matched data is input to the MEM unit 4.
[0095]
The MEM unit 4 reads data held at the memory address of the MEM unit 4 having the same value as the memory address of the CAM unit 3 input from the CAM unit 3, and outputs the read data as a search result.
(5-4) Control circuit 2
The control circuit 2 shown in FIG. 2 generates three types of search keys based on the header information cell from the NDP 10c, and transmits three types of search results for the three types of search keys to the NDP 10c. . When the header information cell from the NDP 10c is input, the control circuit 2 shown in FIG. 2 generates a search key for the CAM unit 3 and transmits (TX), and the search result is written by the CAM unit 3. The received header information cell is received (RX), and the header information cell is transmitted again to the NDP 10c and functions as a transmission / reception circuit. The control circuit 2 includes a buffer unit 5 and an interface circuit 2a. , 2b, a search key generation unit 6, and a search result processing unit 7.
[0096]
Here, the buffer unit 5 holds header information cells, temporarily holds various data, and has at least an area capable of holding header information cells.
The buffer unit 5 also includes a search identification representing three types of search types related to IPv6 frame transfer, a search result representing each search result of the three types of search types, and a search representing search information required for the three types of search types. A header information cell including each area of information and header information representing header information of an IPv6 frame is held.
[0097]
The buffer unit 5 can also hold an IPv6 frame received from the NDP 10c in addition to the header information cell. Details of the buffer unit 5 will be described later with reference to FIG.
Further, the interface circuit 2a has a function of adjusting the timing of fetching data from the NDP 10c, and preferably has a parity check function and a back pressure function. The interface circuit 2b adjusts the output timing of the data held in the buffer unit 5 and outputs it to the NDP 10c. The interface circuit 2b can also have a parity addition function and a function of stopping the output upon receiving the back pressure. .
[0098]
Further, the search key generation unit 6 generates three types of search keys representing three types of search processing based on information extracted from the header information cell held in the buffer unit 5.
In addition, the search result processing unit 7 generates a header information cell based on the three types of associative data including the search results for the three types of search keys generated by the search key generation unit 6, and converts the header information cell to the NDP 10c. It is to transmit to.
[0099]
Specifically, the search result processing unit 7 writes the three types of associative data in the buffer unit 5 to reflect the search result in the header information cell, and the search result data from the CAM search system 1 Whether the search is necessary or not is determined, the respective search result data are rearranged, and the three types of search results and the status signal are merged with the header information cell in the buffer unit 5. The search result processing unit 7 feeds back the processed information data to the search key generation unit 6.
[0100]
(5-5) Relationship between search key, header information cell, and search table
Data transmitted and received at the interface between the NDP 10c and the CAM search system 1 shown in FIG. 2 is a header information cell. The data transmitted from the control circuit 2 to the CAM unit 3 is a search key, and the data transmitted from the CAM unit 3 to the MEM unit 4 is a search result address. Further, data transmitted from the MEM unit 4 to the control circuit 2 is a search result (associative data).
[0101]
The search table is data held in advance in each of the CAM unit 3 and the MEM unit 4 and corresponds through a common address. These are configured as data (CAM entry and MEM entry) necessary for three types of search processing in the CAM unit 3 and the MEM unit 4.
The search key generation unit 6 extracts information necessary for generating a search key included in the header information cell, and converts the extracted information into a search key. This search key is compared with a CAM entry (CAM entry data) that is data held in the search table, and the search is executed.
[0102]
(5-6) Relationship between CAM unit 3, MEM unit 4 and search table
The data held in the search table is composed of a set of data (data group) in which the data held by the CAM unit 3 and the data held by the MEM unit 4 are associated with each other. In other words, the CAM entry input (registered) in the CAM unit 3 and the MEM entry (MEM entry data) input (registered) in the MEM unit 4 are associated with each other by the search table, and collectively. It has come to be referred to as. Each content (data definition) of the data format constituting this search table and an actual data example will be described in detail with reference to FIG. 5, FIG. 6 (a) and FIG. 6 (b).
[0103]
(5-6-1) Search table example
FIG. 5 is a view for explaining a search table according to an embodiment of the present invention. The search table 9 shown in FIG. 5 associates the four areas of the first CAM entry 9a, the first MEM entry 9b, the second CAM entry 9c, and the second MEM entry 9d. is there. In addition, a search result for the filter search using the search table 9 will be described as an example. Since the search results of the flow search and trace search are also almost the same as the search results of the filter search, a duplicate description is omitted.
[0104]
In the following description, unless otherwise specified, the first CAM entry 9a is referred to as first half data, and the second CAM entry 9c is referred to as second half data.
The first CAM entry 9a shown in FIG. 5 is stored in the CAM array 3a, and holds a search type, a destination port number,..., A transmission VID (Virtual Identifier) in this format. The same format as these “search type, destination port number,..., Transmission VID” is also applied to the first search key, and the values are compared during the search. The MEM entry 9b is stored in the MEM array 4a having the same address as that of the CAM entry 9a, and the data is associative data as a first search result. The MEM entry 9b holds an index (Index) as a pointer for associating the divided first half data and second half data.
[0105]
The second CAM entry 9c is stored in the CAM array 3a, and holds the search type, Index, destination IPv6 address, and source IPv6 address in this format. The same format as the search type, Index, destination IPv6 address, and source IPv6 address is applied to the second search key, and the values are compared during the search.
[0106]
Here, in the index field of the CAM entry 9c, the same value as the index value of the MEM entry 9b is registered, and the index value is not duplicated with other entries. Data can be associated one-to-one or one-to-many.
In the case of one-to-one, the index value operates as a pointer indicating the latter half data, and in the case of one-to-many, the index value operates as a group ID indicating a group of the first half data or the second half data.
[0107]
The MEM entry 9d is stored in the MEM array 4a having the same address as the CAM entry 9c, and the stored data is associative data as a second search result. The MEM entry 9d also holds, for example, discard as a filter search result.
The first CAM entry 9a and the second CAM entry 9c are associated by the address pointer of the MEM entry 9b, and the search result is combined as the MEM entry 9d.
[0108]
Therefore, the associative data after the first search is not the final search result, but merely holds an intermediate index, and the final associative data after the second search is after the first search. Is stored in an address area different from the address of the associative data. At the time of search, the index value of the first search result is used as the index value of the second search key. Similarly, two different types of data are stored at different addresses in the corresponding CAM entry.
[0109]
Further, the search table 9 is obtained by associating data held in different memories of the two types of the CAM unit 3 and the MEM unit 4 with these four areas as one set. It functions as a table.
(5-6-2) Example of address area dividing method
Next, an example of an address area dividing method will be described with reference to FIGS. 6 (a) and 6 (b).
[0110]
FIG. 6A is a diagram for explaining an example of data holding in the CAM area according to the embodiment of the present invention. The CAM area (CAM array 3a of the CAM unit 3) shown in FIG. The head data of filters 1 and 2 are held at addresses 0x0000 and 0x1000, respectively. Furthermore, addresses 0x2000, 0x3000, 0x4000, and 0x5000 hold the head data of flow 1, flow 2, trace 1, and trace 2, respectively. These CAM areas are areas searched at the time of search.
[0111]
FIG. 6B is a diagram for holding a data holding example of the MEM area according to an embodiment of the present invention, and shows an example when the address area is divided. The MEM area (MEM array 4a of the MEM unit 4) shown in FIG. 6B has the same address configuration as the CAM area, and holds associative data (search results) of three types of searches. Specifically, a pointer (index) to the filter 2 is held at 0x0000 in the MEM area, and a search result “discard” is held at 0x1000. The flow search and the trace search are the same as the filter search. The index to the flow 2 is held at 0x2000, and any one of the eight values of the search result “priority” is held at 0x3000. . The index to trace 2 is held at 0x4000, and the search result “trace-mode” is held at 0x5000.
[0112]
The data (MEM entry) input to the MEM unit 4 is allocated to the memory area (memory array) of the data (CAM entry) input to the CAM unit 3 in the MEM array 4a (MEM area) of the MEM unit 4. A memory area corresponding to is assigned. That is, the expansion of the MEM entry in the MEM array 4a is the same as the expansion of the CAM entry in the CAM array 3a.
[0113]
Also, the memory areas can be defined separately so that the defined CAM addresses do not overlap each other. In other words, the address area for storing the MEM data corresponding to the first half CAM data and the address area for storing the MEM data corresponding to the second half CAM data are defined in advance so as not to overlap. .
[0114]
In this way, using one CAM unit 3, it is possible to distinguish three types of search and a total of six types (3 × 2 = 6) of the first half and the second half in the three types of search.
In addition, while the CAM entry is searched, the MEM entry is not searched, and these CAM entries and MEM entries have different data characteristics (data characteristics or data meaning). Therefore, both entries cannot be held in the same memory.
[0115]
Therefore, the search operation of the CAM unit 3 searches the search key by referring to the CAM entry. If there is matching data, the CAM unit 3 inputs the address where the matching data is stored to the MEM unit 4. Further, since the data (including associative data and index) defined in the search table is written in advance in the MEM unit 4, the data at the address specified by the address from the CAM unit 3 is read as a search result. .
[0116]
(6) Correspondence between frame processing of IPv6 routing engine 10 and control circuit 2
The frame processing of the IPv6 routing engine 10 has four types (first frame processing, search processing, header processing, and second frame processing). The correspondence between the four types of processing modes and the control circuit 2 will be described with reference to FIGS. 8 (a) and 8 (b).
[0117]
FIG. 8A is a diagram for describing a search method of the CAM search system 1 according to an embodiment of the present invention, and FIG. 8B illustrates a control circuit 2 according to an embodiment of the present invention. FIG. Of those shown in FIGS. 8A and 8B, those having the same reference numerals as those described above represent the same ones.
The NDP 10c passes the header information cell generated by extracting the header information from the IPv6 frame to the CAM search system 1 (TX). The CAM search system 1 writes the search result in a writable area of the header information cell.
[0118]
Specifically, the NDP 10 c divides the IPv6 frame into a header and a payload, holds the payload in the frame buffer 10 e that holds data, generates a header information cell, and transmits the header information cell to the control circuit 2.
In the control circuit 2, the interface 2 a receives the header information cell and writes it in the buffer unit 5. When the search key generation unit 6 detects the presence of a header information cell that has not yet been searched in the buffer unit 5, the search key generation unit 6 reads out necessary information from the buffer unit 5, and searches based on the read information and the search index. A key is generated and transmitted to the CAM unit 3.
[0119]
When the CAM search system 1 registers the search table 9, the CAM entry 9a, the MEM entry 9b, the CAM entry 9c, and the MEM entry 9d output from the CPU 10a, the write / read unit 1a, the CAM unit 3 and By sequentially writing to the MEM unit 4, the search table 9 defined in FIG. 5 is generated in the CAM array 3a and the MEM array 4a.
[0120]
When the CAM search system 1 receives a search request from the NDP 10c, the CAM search system 1 receives the header information cell from the NDP 10c and writes the header information cell to the buffer unit 5, the buffer unit 5 holding the header information cell, and the buffer unit 5 The search key generation unit 6 that reads necessary data, receives an index from the search result processing unit 7 as necessary, generates a search key, and transmits the search key to the CAM unit 3, and compares the search key with the CAM entry. Data is searched, the search result status is transmitted to the search result processing unit 7, the CAM unit 3 that transmits the search result address to the MEM unit 4, and the MEM entry data registered in the received address is input to the search result processing unit 7. Based on the MEM unit 4 to be transmitted and the search results received from the CAM unit 3 and the MEM unit 4 A search key generation unit, merge the search results of the first half and the second half, merge the three types of search results, and store the merged search result data in a predetermined header held in the buffer unit 5 A search result processing unit 7 which is merged and written into the information cell; and an interface 2b which detects the presence of a header information cell which has been processed in the buffer unit 5 and reads the header information cell from the buffer unit 5 and transmits the header information cell to the NDP 10c Consists of.
[0121]
Next, the CAM unit 3 shown in FIG. 8A performs filter search, flow search, and trace search. When the search target data corresponding to the search key from the control circuit 2 is held, the CAM unit 3 notifies the control circuit 2 of a message (Hit Status) indicating that the search target data is held. To do. Further, the CAM unit 3 transmits a search result address to the MEM unit 4.
[0122]
In accordance with the address received from the CAM unit 3, the MEM unit 4 includes a filter search index, a filter search result (discard), a flow search index, a flow search result (priority), a trace search index, and a trace search result. Each data of (trace-mode) is input to the search result processing unit 7.
In addition, the search result processing unit 7 receives the search result status (Hit Status) of the first half of each of the three types of filter, flow, and trace from the CAM unit 3, and receives data of each search result from the MEM unit 4. The index of each search of the filter, flow, and trace is transmitted to the search key generation unit 7, and the search result statuses of the first half and the latter half are merged and determined for each search of the filter, flow, and trace. A final search result can be obtained for each type.
[0123]
Further, the three types of search results are further merged, and the merged data is merged and written into a predetermined bit position of a predetermined header information cell held in the buffer unit 5.
The interface 2b detects the presence of the header information cell that has undergone the search result processing in the buffer unit 5, reads the header information cell from the buffer unit 5, and transmits it to the NDP 10c.
The NDP 10c receives (RX) the header information cell including the search result.
[0124]
Thus, the header information cell functions as a search request from the NDP 10c to the CAM search system 1 and also functions as a search result in the CAM search system 1. Therefore, it is possible to perform an ultra-high speed search using hardware.
Further, when a frame (IPv4 and IPv6 frames) from the external device 87 (see FIG. 1) is received by the interface unit 90, the received frame is input to the IPv6 routing engine 10 via the main body switch unit 91. In the NDP 10c, the header and payload of the frame are divided and the destination of the IPv6 address is resolved. Then, a header information cell is input from the NDP 10c of the IPv6 routing engine 10 to the CAM search system 1 (see the dotted line portion labeled P3), and the CAM search system 1 performs filter search, flow search, and Trace search is performed. Then, the header information cell including the search process is transmitted from the CAM search system 1 to the NDP 10c (refer to the dotted line portion attached with P3).
[0125]
Accordingly, the NDP 10c is supported by the IPv6 routing engine 10.
On the other hand, each processing is completed based on the discard, priority, and trace-mode obtained by searching with the CAM search system 1, and the destination port of the IPv6 address is included in the destination resolution processing, and the header is written. An IPv6 frame is generated, and the generated IPv6 frame is transferred in a route direction having a transfer destination port, and is transmitted from the interface unit 90 to the external device 87 (see the dotted line portion denoted by P2).
[0126]
As described above, the router 8 can resolve the transfer destination address of the frame input from the external device 87, perform each process of filter, flow, and trace, and transmit the frame to the external device 87 that is the transfer destination.
(7) Processing of IPv6 routing engine 10
Next, frame processing in the IPv6 routing engine 10 will be described with reference to FIGS. 9 (a) and 9 (b). Here, there are four steps of frame processing: first frame processing, search processing, header processing, and second frame processing.
[0127]
FIG. 9A is a flowchart for explaining the flow of frame processing according to an embodiment of the present invention, and FIG. 9B schematically shows the flow of search processing according to one embodiment of the present invention. FIG.
(7-1) First frame processing (step SO1)
The NDP 10c extracts the header 80a of the frame 80 when the frame 80 before search (see FIG. 9B) is input from the port of the interface unit 90 through the third switch unit 10b (SO1-1). .
[0128]
The NDP 10c saves the payload 80b of the frame 80 in the frame buffer 10e (SO1-2). Next, the NDP 10c adds, to the header 80a extracted in SO1-1, device internal information 81a that corresponds to the frame 80 and includes various information inside the router 8, and includes the header 80a and the device internal information 81a. Is generated (SO1-3).
[0129]
(7-2) Search process (step SO2)
This type of search processing includes IPv6 address resolution search that determines a destination port based on an IPv6 address, etc., filter search that determines a discard frame, flow search that determines the priority of a frame, and trace target There is a trace search for determining a frame.
[0130]
In the IPv6 address resolution search, the header information cell 81 is transmitted to the IPv6 address resolution search unit 91e in the NDP 10c, and the search result is reflected in the header information cell 81.
Next, for each search of filtering, flow, and trace, the header information cell 81 is transmitted to the CAM search system 1, each search result is reflected in the header information cell 81, and is further returned to the NDP 10c.
[0131]
Further, other searches can be processed by reflecting other search results in the header information cell 81 and returning them.
Thereby, the header information cell 81 reflecting all the search results can be obtained (SO2).
(7-3) Header processing (step SO3)
In the header processing of step SO3, the NDP 10c designates an output destination port in which all search results are reflected, rewrites the header information as necessary, discards the discard target frame, and according to the priority of the priority value. The frame output order is designated, and the trace target frame is a header processing step for notifying the CPU 10a and performing other header processing for the trace processing (SO3-1).
[0132]
Thereby, determination of the output port of the IPv6 frame input to the routing engine, discard processing, priority control, trace function, and other functions are realized.
(7-4) Second frame processing (step SO4)
The second frame process of step SO4 is a process of generating an output frame by inserting the header after completing each process into the original payload.
[0133]
The NDP 10c extracts the header 82a for the output frame from the header information cell 81 (device internal information 81b + header 82a) for which each search process and header process have been completed, and reads the corresponding payload 80b from the frame buffer 10e. The output frame 82 is reproduced by merging the header 82a and the payload 80b. The output frame 82 is transmitted from the output port to the external device 87.
[0134]
The three types of searches in SO2 will be described in detail. The NDP 10c transmits the header information cell 81 (device internal information 81a + header 80a) before the search to the CAM search system 1. In the CAM search system 1, necessary information is extracted from the received header information cell, three types of search keys are generated, and the generated three search keys are transmitted to the CAM unit 3. The CAM unit 3 processes filter search, flow search, and trace search using each search key, inputs an address to the MEM unit 4, and the MEM unit 4 merges three types of search results and includes them in the header information cell. Data is written to the buffer unit 5. Further, the interface unit 2b reads the header information cell 81 (device internal information 81b + header 82a) for which the three types of searches have been completed from the buffer unit 5, and transmits the read header information cell 81 to the NDP 10c.
[0135]
As described above, when the NDP 10c inputs a header information cell to the CAM search system 1 once, the CAM search system 1 automatically searches three times and merges the three types of search results. Therefore, the NDP 10c does not need to generate a search key, and can make three types of search requests with a single search request.
Further, the NDP 10c can acquire a search result from the header information cell received from the CAM search system 1. Furthermore, other information included in the received header information cell can be referred to.
[0136]
(8) Control circuit 2
FIG. 10 is a schematic block diagram of the control circuit 2 according to an embodiment of the present invention.
(8-1) Search key generation unit 6
The search key generation unit 6 shown in FIG. 10 generates a search key, and includes a rearrangement processing unit 6a, a search type code generation unit 6d, and a first selector 6e.
[0137]
The search key generation unit 6 converts the data held in the buffer unit 5 to generate a search key, generates a search type code for the search key, and generates pair data of the search key and the search type code as desired. This is input to the CAM search system 1 at timing, and includes a search type code generation unit 6d, a rearrangement processing unit 6b, and a two-sided buffer (other side buffer) 6c. The rearrangement processing unit 6 a is configured as a buffer control unit that controls the search order of the three types of search processing included in the header information cell held in the buffer unit 5.
[0138]
The search key generation and rearrangement processing unit 6b performs data reading from the buffer unit 5 and generation of a search key obtained by format conversion of the read data.
The two-sided buffer 6c is composed of two (two pages) buffer areas 1 and 2 (BUFF1 and 2). These buffer areas 1 and 2 hold search keys from the buffer unit 5 alternately. To do. The number of buffers may be three or more.
[0139]
The search type code generation unit 6d generates a search type code corresponding to each search key held in the two-surface buffer 6c. An example of expression of this search type code is a 4-bit code (0000 to 1111). For example, 0000,0001 represents the first and second filter searches, 0010 and 0011 represent the first and second flow searches, and 0100 and 0101 represent the first and second trace searches. Represent each. Other 4-bit codes are reserved for search processing different from the above three types of search processing. Note that various representation methods can be used for this representation method based on the design policy and the like.
[0140]
The first selector 6e receives the search key from the search key generation and rearrangement processing unit 6b, the search type code from the search type code generation unit 6d, and the index from the search result processing unit 7, and receives the search type code. The search key to which is added is output. This index is information data for associating the first half CAM data with the second half CAM data.
[0141]
As a result, the header information cell received from the NDP 10c is written and held in the buffer unit 5 by the interface unit 2a, and a necessary part is read from the search key generation unit 6 in order to generate a search key. Is reflected in a predetermined part of the search result processing unit 7 and is read out by the interface unit 2b in order to transmit the header information cell after the search process to the NDP 10c. The header information cells are sequentially received, written, sequentially read from the NDP 10c, and transmitted to the NDP 10c.
[0142]
Accordingly, the order in which the data held in the buffer unit 5 is held is not changed, and the operation is the same as the operation of the first-in first-out process.
(8-2) Search result processing unit 7
The search result processing unit 7 determines whether or not a search result from the CAM search system 1 is necessary and rearranges each search result data. The first register 7a, the second register 7b, determination and rearrangement processing The unit 7c and the second selector 7d are provided.
[0143]
Here, the first register 7a and the second register 7b respectively hold search result data from the CAM unit 3 and the MEM unit 4, and are storage elements in the LSI, for example.
The search result processing unit 7 functions as a buffer write control unit that performs write control for writing search results in a portion that holds three types of search results included in the header information cell held in the buffer unit 5. The determination and rearrangement processing unit 7c rearranges the three types of search results into the format of the header information cell, and writes them into the buffer unit 5 via the selector 7d. The process from the determination and status determination in the rearrangement processing unit 7c through the rearrangement process to the process of writing to the buffer unit 5 corresponds to the merge of search results.
[0144]
Further, it is determined whether the data from each of the first register 7a and the second register 7b is valid or invalid, and the three types of search results from the CAM unit 3 are temporarily held to merge the held data, and the header The information is written in a predetermined area of the information cell. The determination and rearrangement processing unit 7c determines whether the search result of the filter search from the CAM unit 3 matches (hits) or does not match (mis-hits), and holds the MEM data at that time. In this case, the MEM data at that time is discarded and the search result held is made the default (initial value).
[0145]
In addition, the determination and rearrangement processing unit 7 c writes and merges three types of search results into predetermined header information cells held in the buffer unit 5 via the second selector 7 d. Thereby, a data merging function is realized.
The second selector 7d selects and outputs data from the determination and rearrangement processing unit 7c.
[0146]
(8-3) Two-time pulling process in the control circuit 2
(8-3-1) When the control circuit 2 starts the search process, the search table 9 shown in FIG. 5 needs to be registered in the CAM unit 3 and the MEM unit 4 in advance. The CAM entries 9a and 9c and the MEM entries 9b and 9d forming the search table 9 are written into the CAM unit 3 and the MEM unit 4 by the CPU 10a via the write / read 1a.
[0147]
The contents of each search table for filter, flow and trace search are created by the software program of the CPU 10a. This program includes a filter search table generation unit, a flow search table generation unit, and a trace search table generation unit.
Next, the search table generated by the program of the CPU 10a will be described in further detail.
[0148]
In memory search in the routing engine 10 of the present invention, first, data is registered. The CPU 10a allocates a memory area of the CAM unit 3 and allocates a memory area of the MEM unit 4 having the same memory address as the memory address of the memory area of the CAM unit 3 (memory area allocation step).
(8-3-1-1) The CPU 10a transmits the CAM entry 9a, which is the first half data of the CAM entry for filter search, to the filter 1 (first filter half) starting from the address 0x0000 of the CAM array 3a via the write / read unit 1a. Write to the CAM area (see FIG. 6A).
[0149]
(8-3-1-2) The CPU 10a writes the index (MEM entry 9b), which is search result data corresponding to the first half data of the filter search, and is also a pointer indicating the second half data of the filter search, through the read / write unit 1a. Thus, the CAM entry 9a in the MEM area of the filter 1 (index to the filter 2) starting from the address 0x0000 of the MEM array 4a is written to the same address (see FIG. 6B).
[0150]
(8-3-1-3) The CPU 10a transfers the CAM entry 9c, which is the second half data of the filter search, to the CAM area of the filter 2 (filter second half) starting from the address 0x1000 of the CAM array 3a via the write / read unit 1a. Write (see FIG. 6A). At this time, the index field value of the CAM entry 9c uses the same value as the index field value of the MEM entry 9b.
[0151]
(8-3-1-4) The CPU 10a stores the search result data corresponding to the second half data of the filter search and the final search result of the filter search (discard = MEM entry 9d) via the write / read unit 1a. In the MEM area of the filter 2 (filter associative data, that is, discard) starting from the address 0x1000 of the array 4a, the same address as the CAM entry 9c is written (see FIG. 6B).
[0152]
The above four writing processes (8-3-1-1), (8-3-1-2), (8-3-1-3), and (8-3-1-4) 1 is provided in the CAM unit 3 and the MEM unit 4. This process is repeated for the number of filter search search tables to be registered. The same applies to the search table for flow search and the search table for trace search.
[0153]
(8-3-2) The two-time pull search by the control circuit 2 will be described in detail.
The two-time search is performed by the search key generation unit 6 of the control circuit 2 controlling the CAM unit 3 and the MEM unit 4 in cooperation with the search result processing unit 7. The filter search is performed according to the following procedure.
Step 1 Sort
The search key generation and rearrangement processing unit 6 b reads out necessary data from the header information cell of the buffer unit 5, rearranges it, and holds the first half data and the second half data in the buffer 1.
[0154]
Step 2 First search key generation
The search type code generation unit generates the search type code of the filter 1, the buffer 1 outputs the first half data, and the first selector 6e selects and integrates these to generate the first search key of the filter search, and the CAM Send to part 3.
Step 3 First CAM search
The CAM unit 3 compares the received search key with the CAM entry held by the CAM unit 3 itself, and outputs the address of the matched CAM entry. Here, since the search key includes the search type code of the filter 1, it should match only the CAM entry registered in the CAM area of the filter 1 starting from the address 0x0000 in FIG.
[0155]
Therefore, the address output at the time of hit is an address of 0x0000 or more and less than 0x1000. The hit status is transmitted to the search result processing unit 7.
Step 4 Read MEM
The MEM unit 4 reads the MEM entry registered at the address received from the CAM unit 3 and transmits it to the search result processing unit 7. Here, this MEM entry is a search result of the filter 1 and is also an index to the filter 2.
[0156]
Step 5 Generate second search key
The search type code generation unit generates the search type code of the filter 2, the register 7a of the search result processing unit transmits the index to the filter 2 to the first selector 6e, the buffer 1 outputs the second half data, and the first The selector 6e selects and integrates them, generates a second search key for filter search, and transmits it to the CAM unit 3.
[0157]
Step 6 Second CAM search
The CAM unit 3 compares the received search key with the CAM entry held by the CAM unit 3 itself, and outputs the address of the matched CAM entry. Since this search key has the search type code of filter 2, it should match only the CAM entry registered in the CAM area of filter 2 starting from address 0x1000 in FIG. Therefore, the address output at the time of hit is an address of 0x1000 or more and less than 0x3000. The hit status is transmitted to the search result processing unit 7.
[0158]
Step 7 Read MEM 2
The MEM unit 4 reads the MEM entry registered at the address received from the CAM unit 3 and transmits it to the search result processing unit 7. Here, the MEM entry is a search result of the filter 2 and is a discard value of the search result of the filter search.
Step 8
The search result processing unit 7 registers the hit status of the search result of filter 1 (first half of the filter) obtained in step 3 and the hit status of the search result of filter 2 (second half of the filter) obtained in step 6. Hold on.
[0159]
Thus, the final filter search hit status is determined by combining the first half and the second half. The determination criterion is “determine a hit only when both are hits (including multi-hits)”.
If it is determined to be a hit, the discard value obtained in step 7 is set as the discard value of the final filter search result including the first half and the second half.
The merge of the search results so far in step 8 is performed in the judgment and the rearrangement 7c, and the selector 7d selects this discard value and writes it in a predetermined bit position of a predetermined header information cell of the buffer unit 5. To do.
[0160]
Thus, the filter search is divided into the first half and the second half, and the control circuit 2 searches the first half of the search key at the time of the first search, and obtains an index as the search result. Then, the control circuit 2 searches the index by adding the index to the search key at the time of the second search, and obtains associative data as the search result.
As described above, the control circuit 2 can perform a search by using a search key having a bit width exceeding the bit width of the CAM unit 3 by performing the search twice. Further, for the flow search and the trace search, an area for writing the search table is provided in another area table different from the search tables 1 and 2, and the same search processing as in the case of the filter search is performed.
[0161]
It should be noted that the memory area can be allocated a large number of times more than once.
(8-4) Data example of CAM data and MEM data
FIGS. 11A and 11B are diagrams showing examples of data in the CAM unit 3 and the MEM unit 4 according to the embodiment of the present invention. The data shown in FIG. 11A indicates the CAM entry held in the CAM unit 3 and the CAM address where the CAM entry is held, and the data shown in FIG. And the MEM address where the MEM entry is held.
[0162]
Here, the CAM entry of the filter 1 is held at the CAM address 0x0000 of the CAM unit 3, and the MEM entry of the filter 1 is held at the MEM address 0x0000 of the MEM unit 4. A set of these CAM entries and MEM entries constitutes a search table for filter 1.
Similarly, the CAM entry of the filter 2 is written to the CAM address 0x0010 of the CAM unit 3, the MEM entry of the filter 2 is written to the MEM address 0x0010, and a set of these CAM entries and MEM entries is set. The search table of the filter 2 is configured.
[0163]
Also, the CAM entry value “0x10010AAAAA ... AAAABBBBBB ... BBBB000" and the MEM entry value 0x10000000 are assigned to the same address (0x0010, 0x0010). In addition, the CAM entry value “0x011111222233333454566677770000... 0000” and the MEM entry 0x00100000 are assigned to the same address (0x0000, 0x0000), so that different CAM unit 3 and MEM unit 4 are assigned the same address. Is associated by. That is, a set of the CAM entry and the MEM entry at the address 0x0010 is a search table for the filter 1, and a set of the CAM entry and the MEM entry at the address 0x0010 is a search table for the filter 2.
[0164]
The index 0x0010 associates the search table for the filter 1 at the address 0x0000 and the search table for the filter 2 at the address 0x0010 into one set. This associated “one set” defines (sets) one type of filter search, and provides a number of filters corresponding to the number n of filters that need to be set (n represents a natural number). For this purpose, “n sets” of filter search tables are set.
[0165]
Note that the 288 bits of the CAM entry value “0x011111222233333344565677700000... 0000” of the CAM address 0x0000 will be described in detail for each area value of the search table.
The top value 0 of the CAM entry represents the search type, and indicates that it is a CAM entry in the search table of the filter 1. Reference numeral 1111 denotes a transmission destination port number 0x1111 and reference numeral 2222 denotes a transmission source port number 0x2222. 33333, 44, 55, 666, and 777 are defined region values. Furthermore, “0” is written as all unused portions of “184... 00” of 184 bits. “00” at the end of the CAM entry value is a parity bit.
[0166]
On the other hand, the first 0010 of the MEM entry value “0x00100000” of the MEM address 0x0000 is the index value 0x0010, and 0000 is an unused part and is all “0”. The address of this MEM entry is 0x0000, and is associated with the CAM entry by this 0x0000. Therefore, the search type of this MEM entry represents the search table of the filter 1.
[0167]
Next, the CAM entry value “0x10010 AAAA ... AAAAABBBB ... BBBB000" is written in the lower CAM address 0x0010. Here, the first value 1 indicates that the search type is a CAM entry in the search table 30c whose filter type is 2. 0010 represents a CAM entry having an index value of 0x0010. “AAAAA... AAAA” is a destination IPv6 address (128 bits), and “BBBB... BBBB” is a source IPv6 address (128 bits). 0 represents an unused portion, and 00 at the end is a parity bit.
[0168]
On the other hand, the first 1 of the MEM entry value “0x10000000” of the MEM address 0x0010 represents the discard bit, which indicates that it is to be discarded. 0000000 is an unused part and is all “0”. Further, since this MEM entry is associated with the CAM entry by the address 0x0010, it is identified that the search type is the MEM entry of the search table of the filter 2.
[0169]
In addition, each search table for flow search and trace search is the same as the search table for filter search, and a duplicate description is omitted.
As a result, the CAM search system 1 provides three types of search tables in one continuous memory area (a continuous area that holds CAM data) of one CAM unit 3, and includes three types of search tables and search keys. A search type code for identifying search processing is stored as a search target.
[0170]
As a result, three types of search tables are registered, the search type code is stored in the CAM data, and the search using the search key including the search type code does not match a CAM entry with a different search type. In part 3, three types of searches can be performed.
Therefore, even when a search is performed on the entire memory area of the CAM unit 3, CAM data having a different search type code is not searched and is guaranteed not to be hit, which is equivalent to a case where no search is performed. The CAM unit 3 can operate as an independent CAM search system 1.
[0171]
(9) Buffering processing of the buffer unit 5 of the control circuit 2
Next, writing and reading of data in the buffer unit 5 provided in the control circuit 2 will be described.
The conventional buffer has one input port and one output port, and all of these two input / output ports are blocked for data transmission / reception. For this reason, the conventional buffer is always accessed continuously, and reading of two types of data and writing of two types of data cannot be performed simultaneously.
[0172]
The buffer unit 5 provided in the control circuit 2 of the present invention has a point having four input / output ports and a point consisting of six (six stages) ring buffers. Description will be made with reference to FIGS. 13 to 15A and 15B.
FIG. 13 is a diagram for explaining the four input / output ports of the buffer unit 5 according to the embodiment of the present invention. Those having the same reference numerals as those shown in FIG. 13 have the same or the same functions as those described above.
[0173]
The buffer unit 5 shown in FIG. 13 temporarily holds header information cells, and uses six dual-port memories. The buffer unit 5 shown in FIG. 13 is provided with a read line and a write line for a port on the NDP 10c side (hereinafter referred to as A port), and a port on the search key generation unit 6 and the search result processing unit 7 side (hereinafter referred to as a port) , Referred to as B port), and the NDP 10c, the search result processing unit 6 and the search result processing unit 7 can be accessed (written and read) together. The operation of the buffer unit 5 is to write twice and read twice. In addition, in order to distinguish from DPRAM (Dual Port Random Access Memory), it is described as QPRAM (Quad Port Random Access Memory).
[0174]
Further, the buffer unit 5 will be described in detail.
FIG. 14 is a block diagram of the buffer unit 5 according to an embodiment of the present invention, which is shown in FIG. 14, and those having the same reference numerals as those described above are the same.
Here, the buffer unit 5 is provided on each of the six dual port memories (DPRAM) # 1 to # 6, the A port write line and read line, the B port write line and read line, and the input / output side. The two bus switch sections (second memory selection section) 15a and the two selectors (first memory selection section) 15b provided on the input / output side are provided.
[0175]
Each of the two selectors 15a writes data to the dual port memory # 1 to be written out of the dual port memories # 1 to # 6 by outputting a write control signal to each bus line.
The two bus switch sections 15b are for reading data from a dual-port memory to be read out of a plurality of dual-port memories by outputting a read control signal to each bus line.
[0176]
The bus switch unit 15a is for switching data transmission destinations, and is a data bus connected to a write enable signal (write enable signal: WE [Write Enable]) of each of the dual port memories # 1 to # 6. A control signal is output to a specific one of the dual port memories # 1 to # 6.
[0177]
For example, when writing data to the dual port memory # 1, for example, the bus switch unit 15a turns on the write enable signal WE of the dual port memory # 1 and writes enable signals WE of the other dual port memories # 2 to # 6. Turn off.
As a result, the NDP 10c can select the desired memory from # 1 to # 6 out of the six dual port memories # 1 to # 6. Therefore, the data transmission destination can be switched.
[0178]
The selector 15b selects and switches data to be passed among a plurality of input data. Data from the dual port memories # 1 to # 6 connected to the data bus on the port B (output) side and information data for identifying these dual port memories # 1 to # 6 are included. The data acquisition destination is switched.
[0179]
Each function of the bus switch unit 15a and the selector 15b is exhibited by a selector element or the like. Moreover, what has the same code | symbol as what was shown in FIG. 14 and mentioned above represents the same thing as them.
Next, each of the dual port memories # 1 to # 6 has three types of flags, that is, an F (Full) flag, an S (Search) flag, and an R (Ready) flag.
[0180]
Here, the F flag indicates that cell data is held, and when this flag is on, it indicates that new cell data cannot be written. The S flag indicates that the CAM search system 1 is searching and reading. The R flag indicates that the CAM search system 1 is in the middle of searching and reading. All of these three types of flags are turned off when reading is completed, and can be written again.
[0181]
Further, the buffer unit 5 includes six dual port memories # 1 to # 6 and is configured as six ring buffers.
FIGS. 15A and 15B are diagrams for explaining the ring buffer configuration of the buffer unit 5 according to the embodiment of the present invention, each of which includes six DPRAM # 1 to # 6 buffers. Are schematically shown to be connected cyclically (ring-shaped).
[0182]
The buffer unit 5 shown in FIG. 15 (a) or FIG. 15 (b) has, for example, six or eight circularly connected dual port memory buffers # 1 to # 6. 15a and the like sequentially write data to the dual port memories # 1 to # 6, and sequentially read data from the dual port memories # 1 to # 6.
[0183]
Here, each of the dual port memories # 1 to # 6 has two ports that can be written to and read from the A port and the B port, and at the same time when writing from one port (A port or B port). Data can be read from the other port (B port or A port). In the writing method, the bus switch 15a writes data to the buffer 1, writes the next data to the buffer 2, sequentially writes to the next buffer, and writes to the buffer 1 after the buffer 6. That is, it is written in a circular manner.
[0184]
The bus switch 15a cyclically selects the dual port memories # 1 to # 6 to which data is written based on IDs (identification) assigned to the dual port memories # 1 to # 6.
Note that the number i of the dual port memories #i (i represents a natural number of 2 or more) can be variously changed.
[0185]
Each of the dual port memories # 1 to # 6 can output a full flag (Full Flag) indicating that data is held. Then, the bus switch 15a on the A port side writes data (header information cell) to the buffer 1 and turns on the flag (sets the flag). The bus switch 15a on the A port side sequentially writes the next header information cell to the next buffer and turns on the flag. The buffer k in which the flag is turned on (k represents a natural number of 1 to 6) is not written with data, and the bus switch 15a on the A port side waits until the flag is turned off.
[0186]
On the other hand, the selector 15b on the A port side reads out the header information cell of the buffer 1 and turns off the F, S, and R flags (turns off the flag). Note that the buffer k in which each flag is off is not read, and the selector 15b on the A port side waits until each flag in the buffer k is turned on.
Thereby, by monitoring the state of each flag, it is possible to monitor whether or not the bus switch 15a on the A port side can write data. Further, the selector 15b on the A port side can monitor whether or not reading is possible.
[0187]
Hereinafter, the relationship between the input / output of each of the four input / output ports and the status signal (status flag) will be described with reference to FIGS. 15, 16A to 16E, taking DPRAM 1 as an example. . DPRAM 2 to 6 are the same as DPRAM 1.
FIGS. 16A to 16E are time charts for explaining status flags of the DPRAM 1 according to one embodiment of the present invention. Each process of the A port of the DPRAM 1 shown in FIG. 16A and the B port of the DPRAM 1 shown in FIG. 16B corresponds to ports 005 and 006 shown in FIG. 17 described later. Yes. Moreover, the part which attached | subjected F01-F25 respond | corresponds to the process shown in FIG.
[0188]
The A port of the DPRAM 1 starts writing data (input header information cell) indicated as cell A at time T00. The three types of status flags at time T00 are as shown in logic L1 shown in FIG. In the cell A where writing has started, the writing of the cell A is completed at time T03. Further, the F flag shown in FIG. 16C is turned on (high) at time T00 and is kept on until time T11 when the reading of the cell A is completed.
[0189]
Further, the B port of the DPRAM 1 starts reading the key at time T02. The key is data extracted from the input header information cell to generate a search key (displayed as A). The status flag at time T02 is as indicated by logic L2 shown in FIG. Further, the S flag shown in FIG. 16 (d) is turned on.
[0190]
At time T05, the B port finishes reading the key A and starts writing the result A for the cell A. The result A is data to be merged into the original header information cell after the search is completed. The status flag at time T05 does not change.
Further, at time T08, the B port finishes writing the result A for the cell A, and the A port starts reading the cell A. At the time T08, the R flag for the A port is turned on, and the status flag at the time T08 is as indicated by the logic L3 shown in FIG.
[0191]
At time T11, the A port finishes reading the cell A. At time T11, the F flag, S flag, and R flag are all turned off. The status flag at time T11 is as shown in logic L4 in FIG.
Further, each data obtained by the selector 15 b on the B port side shown in FIG. 14 is output to the search key generation unit 6. Each data obtained by the bus switch 15a on the B port side is input from the search result processing unit 7.
[0192]
The input / output operation of the DPRAM 1 has been described in detail above.
In addition, the DPRAMs 1 to 6 form a ring buffer shown in FIG. 15A, and each A port and B port sequentially write and read as shown in FIG. Each of the four types of ports of the buffer unit 5 functions as a buffer system capable of continuously writing and reading data.
[0193]
As described above, the CAM search system 1 can continuously transmit and receive cells, thereby realizing efficient cell processing. Further, by using the status flag in this way, each DPRAM of the buffer unit 5 can operate sequentially.
Thus, since each of DPRAM # 1 to # 6 cyclically buffers the header information cells, the CAM search system 1 can continuously receive and transmit the header information cells, and continuously. It is possible to generate search keys and merge search results. As a result, the search process can be performed continuously, so that the speed can be increased.
[0194]
(10) Explanation of search operation
The operation when the CAM search system 1 according to an embodiment of the present invention receives one header information cell and searches based on the received header information cell with the above configuration will be described. The search table is a case where only one set of filter search tables is registered. Since the flow search and the trace search are almost the same as the filter search operation described below, a duplicate description is omitted.
[0195]
(10-1) Operation in the control circuit 2
The CAM search method will be described in detail with reference to FIG. Here, the flow of three types of search processing will be described by extending the bit width. Each process from 002 to 025 is pipelined as a group of processes, and other processes can be performed in parallel during one header information cell process. From 018, the search key transmission of the search type code = 0 of the next cell can be started.
[0196]
The 001 processor (NDP 10 c) writes a cell from the interface to the buffer unit 5.
002 The search key generation unit 6 reads necessary data from the buffer unit 5, converts the format of the data to generate a search key, and temporarily holds the search key on one side of the two-side buffer 6c. To do.
[0197]
The search key generation unit 6 adds the search type code “0” generated by the search type code generation unit 6d to the search key held in the two-sided buffer 6c, and adds the search type code “0”. A search key (search key with search type code “0”) is transmitted to the CAM unit 3. This transmission corresponds to a search request message.
The 004 search key generation unit 6 starts transmitting the search key of the search type code “2” to the CAM unit 3 when 003 (the process of 003) ends.
[0198]
The 005 search key generation unit 6 starts transmitting the search key of the search type code “4” to the CAM unit 3 following the end of 004.
Next, the search result processing unit 7 receives the search result status of the search type code “0” from the CAM unit 3 and temporarily holds it in the second register 7 b. At the same time, the CAM unit 3 inputs a search result address to the MEM unit 4.
[0199]
In addition, the search key generation unit 6 starts transmitting the search key of the search type code “1” to the CAM unit 3.
The search result processing unit 7 reads the search result associative data (corresponding to the index) of the search type code “0” from the MEM unit 4 and inputs the read search result associative data to the search key generation unit 6.
[0200]
The 009 search key generation unit 6 adds the index obtained in 008 to the search type code “1” and transmits the search key to the CAM unit 3.
[0101] The search result processing unit 7 receives the search result status of the search type code “2” from the CAM unit 3 and temporarily holds it in the second register 7b. At the same time, the CAM unit 3 inputs a search result address to the MEM unit 4.
[0201]
[0111] The search key generation unit 6 starts transmitting the search key with the search type code "3" to the CAM unit 3.
The search result processing unit 7 reads the search result associative data (index) of the search type code “2” from the MEM unit 4 and inputs the read search result associative data to the search key generation unit 6.
[0202]
The search key generation unit 6 adds the index obtained in 012 to the search type code “3” and transmits the search key to the CAM unit 3.
The search result processing unit 7 receives the search result status of the search type code “4” from the CAM unit 3 and temporarily holds it in the second register 7b. At the same time, the CAM unit 3 inputs a search result address to the MEM unit 4.
[0203]
The search key generation unit 6 starts transmitting the search key with the search type code “5” to the CAM unit 3.
The search result processing unit 7 reads the search result associative data (index) of the search type code “4” from the MEM unit 4 and inputs the read search result associative data to the search key generation unit 6.
[0204]
The search key generation unit 6 adds the index obtained in 016 to the search type code “5” and transmits the search key to the CAM unit 3.
The search result processing unit 7 receives the search result status of the search type code “1” from the CAM unit 3 and temporarily holds it in the second register 7b.
The search result processing unit 7 reads the search result associative data (index) of the search type code “1” from the MEM unit 4 and temporarily holds it in the first register 7a.
[0205]
The search result processing unit 7 receives the search result status of the search type code “3” from the CAM unit 3 and temporarily holds it in the second register 7b.
[021] The search result processing unit 7 reads the search result associative data (index) of the search type code "3" from the MEM unit 4 and temporarily holds it in the first register 7a.
[0206]
[022] The search result processing unit 7 receives the search result status of the search type code "5" from the CAM unit 3, and temporarily holds it in the second register 7b.
The search result processing unit 7 reads the search result associative data (index) of the search type code “5” from the MEM unit 4 and temporarily holds it in the first register 7a.
[0207]
[0242] The search result processing unit 7 determines by merging the search result statuses acquired at 006, 010, 014, 018, 020, and 022, and the search results acquired at 019, 021, and 023, respectively. The format of the associative data is converted and written to the buffer unit 5.
The interface unit 90 reads the cell data held in the buffer unit 5.
[0208]
In this way, the NDP 10c generates and transmits three search keys, and it is not necessary to merge each time associative data of three search results is received once, thereby reducing the load on the processor. .
Further, when each process for the m-th (m represents a natural number) header information cell is being performed, each process for the (m + 1) -th header information cell can be started from 018. Processing can be pipelined.
[0209]
(10-2) Search key generation and search result processing
In the control circuit 2 shown in FIG. 10, the operation starts when the input header information cell is taken into the search key generation unit 6 (see the parts denoted by 001 to 002 shown in FIG. 10). The generation will be described in detail in (K1) to (K10) below.
[0210]
(K1) The header information cell passes through the rearrangement processing unit 6b, and the next search key is written in the first half of the buffer 1 of the two-surface buffer 6c. The contents of the first half of the search key (288 bits) buffer 1 are as follows.
0xS1111222233333344555567770000. . . . 0000
Here, the code is not recorded for the first bit “S” (search type code) at this time.
[0211]
Further, the sequence string of the end bits “0000,0000” is 184 bits. The same applies to (K2) to (K4) described below.
(K2) The search key generation unit 6 starts the search of the filter 1, generates a search type code, and transmits the following search key (288 bits, completely displayed) to the CAM unit 3. The content to be transmitted to the CAM unit 3 is the filter 1 (S = 0x0).
[0212]
0x011111222233333344555567770000. . . . 0000
(K3) The search key generation unit 6 starts the search of the flow 1, generates a search type code, transmits the following search key (288 bits, completely displayed) to the CAM unit 3, and the CAM unit 3 The content to be transmitted to is flow 1 (S = 0x2).
0x211121222333333454565677770000. . . . 0000
(K4) The search key generation unit 6 starts the search of the trace 1, generates a search type code, transmits the following search key (288 bits, completely displayed) to the CAM unit 3, and the CAM unit 3 The content to be transmitted to is trace 1 (S = 0x4).
[0213]
0x41111222232333344555567770000. . . . 0000
(K5) In parallel, the search key generation unit 6 continues to write the following search key (288 bits, partially incomplete) in the second half of the buffer 1 through the rearrangement processing unit 6a. . The contents of the second half of buffer 1 are as follows.
0xSIIIIAAAA. . . . . . AAAABBBB. . . . . . BBBB000
Here, the code is not recorded for the first bit “S” (search type code) at this time. The part “IIII” represents an index and is undecided at this point. Note that examples of “AAAA ...” and “BBBB ...” are all 128 bits.
[0214]
(K6) After the processing in the CAM unit 3, the search result of the filter 1 is returned to the control circuit 2. Since the search key matches the CAM entry of the CAM address 0x0000, the hit status and the hit address (that is, 0x0000) are obtained, and the MEM entry 0x00100000 of this MEM address is read. As a result, the index 0x0010 is can get.
[0215]
(K7) Therefore, the search for the filter 2 is started. That is, a search type code is generated, and the following search key (288 bits, completely displayed) including the index value 0x0010 is transmitted to the CAM unit 3. The content to be transmitted to the CAM unit 3 is the filter 2 (S = 0x1). , "AAAAA ..." and "BBBB ..." are all 128 bits.
[0216]
0x10010 AAAA. . . . . . AAAABBBB. . . . . . BBBB000
(K8) The search result of flow 1 is returned.
If there is no CAM entry that matches the search key, a mishit status is obtained and a valid address is not obtained. At this time, the flow 2 search is omitted.
[0217]
(K9) The search result of the filter 2 is returned.
Since the search key matches the CAM entry at CAM address 0x0010, a hit status and a hit address (ie, 0x0010) are obtained. As this address, MEM entry 0x10000000 is read, and as a result, discard = 1, that is, the result of the discard target frame is obtained.
[0218]
The filter search including the filter 1 and the filter 2 as a whole becomes a hit status, and “discard = 1” is obtained as an effective search result.
The search result of flow 2 is not searched and is determined to be a miss hit. The search result returns priority = 0x7 as the value of the default priority. The flow search including the flow 1 and the flow 2 as a whole has a miss hit status, and a valid search result cannot be obtained.
[0219]
(K10) The search result of trace 2 is not searched and is treated as a miss hit. The search result returns trace-mode = 0 as the default trace mode value. This trace search including the trace 1 and the trace 2 as a whole results in a miss hit status, and a valid search result cannot be obtained.
For this reason, the determination and rearrangement processing unit 7c (see FIG. 10) rearranges the search order of the three types of search processing included in the header information cells held in the buffer unit 5, and displays the rearranged header information cells. Write to the buffer unit 5.
[0220]
Note that the process from the status determination in the determination and rearrangement processing unit 7c to the rearrangement process corresponds to merging of search results.
As a result, since the first half and the latter half of the three types of search are performed using one CAM unit 3 by the two-time subtraction process, a total of six types of search tables can be distinguished.
In this way, three types of search tables are registered in one continuous memory area of one CAM unit 3, and the search type code is included in each of the CAM data and the search key, and the search type code is also searched. Be targeted.
[0221]
As described above, even if a search is performed on the entire area of the CAM unit 3, CAM data having a different search type code is not hit and can be operated like an independent CAM unit 3. The processing burden on various CPUs such as the NDP 10c is reduced.
(10-3) Data input / output operation of buffer unit 5 (QPRAM, cell buffer, 6-stage ring buffer)
With the above configuration, data input / output of the buffer unit 5 of the CAM search method according to an embodiment of the present invention will be described in detail.
[0222]
FIG. 17 is a diagram showing a time chart example of the buffer unit 5 (QPRAM) according to the embodiment of the present invention. The 16 signals shown in FIG. 17 represent port types, and the upper one to four of the 16 signals represent the four ports of the buffer unit 5. Further, the lower 5 to 16 represent the operation timing for the internal ports of the buffer unit 5. Hereinafter, the operation at time T00 to T25 attached in the horizontal axis direction will be described in time series.
[0223]
The transaction at time T00 (one data transfer operation) starts writing F01 (cell A) from port 001 to port 005 in FIG. A transaction at each time described below is denoted by TR. That is, TR01 is performed at time T00.
At time T02, reading of F07 (key 7) from port 006 to port 002 is started (TR02).
[0224]
At time T03, TR01 ends. Further, F02 (cell B) writing from port 001 to port 007 is started (TR03).
At time T05, TR02 ends. Also, writing of F13 (result A) from port 003 to port 006 is started (TR04). Here, the search result processing unit 7 determines that the search result status is merged, and feeds back the index to the rearrangement processing unit 6a. Further, reading of F08 (key B) from port 008 to port 002 is started (TR05).
[0225]
At time T06, TR03 ends. Further, F03 (cell C) writing to ports 001 to 009 is started (TR06).
At time T08, reading of F19 (cell A) from port 005 to port 004 is started (TR07). Also, TR04 ends and TR05 ends. Further, writing of F14 (result B) from the port 003 to the port 008 is started (TR08). Then, reading of F09 (key C) from port 010 to port 002 is started (TR09).
[0226]
At time T09, TR06 ends. Further, F04 (cell D) writing from port 001 to port 011 is started (TR10).
At time T11, TR07 ends. Reading F20 (cell B) from port 007 to port 004 is started (TR07). Also, TR08 ends and TR09 ends. Further, writing of F15 (result C) from the port 002 to the port 010 is started (TR12). Then, reading of F10 (key D) from port 012 to port 002 is started (TR13).
[0227]
At time T12, TR10 ends. Further, F05 (cell E) writing from port 001 to port 013 is started (TR14).
At time T14, TR11 ends. Reading of F21 (cell C) from port 009 to port 004 is started (TR15). Also, TR12 ends and TR13 ends. Further, writing of F16 (result D) from the port 003 to the port 012 is started (TR16). Then, reading of F11 (key E) from the port 014 to the port 002 is started (TR17).
[0228]
At time T15, TR14 ends. Further, F06 (cell F) writing from port 001 to port 015 is started (TR18).
At time T17, TR15 ends. Reading of F22 (cell C) from the port 011 to the port 004 is started (TR19). Also, TR16 ends and TR17 ends. Further, writing of F17 (result E) from the port 003 to the port 014 is started (TR20). Then, reading of F12 (key F) from port 016 to port 002 is started (TR21).
[0229]
At time T18, TR18 ends.
At time T20, TR19 ends. Reading of F23 (cell D) from the port 013 to the port 004 is started (TR19). Also, TR20 ends and TR21 ends. Further, writing of F18 (result F) from the port 003 to the port 016 is started (TR23).
[0230]
At time T23, TR22 ends. Reading of F24 (cell E) from port 015 to port 004 is started (TR24). Also, TR23 ends.
At time T26, TR24 ends.
In this way, six cells (cells A to F) are continuously transmitted to 001 from the processor provided in the preceding stage of 001.
[0231]
Further, during the processing of 6 cells, the NDP 10c outside the port 004 (external device 87 side) can receive. That is, the NDP 10c does not notify the CAM search system 1 having the port 004 of back pressure.
This back pressure is a message for preventing frame loss. For example, when search results from the CAM unit 3 are output excessively, if header information cells including each search result data are continuously transmitted from the CAM search system 1 to the NDP 10c, frame loss occurs in the NDP 10c. For this reason, normally, the NDP transmits a message for suppressing the output of data to the port 004.
[0232]
Therefore, the NDP 10 c is configured such that the control circuit 2 transmits back pressure for suppressing output to the processor to the CAM search system 1.
In this way, transmission / reception data is transmitted / received at the interface between the processor and the CAM search system 1. Further, the processor (NDP 10c), for routing, transmits frame information in the form of a fixed-length format cell (header information cell) including header information of the frame and device internal information for one input frame. Process internally.
[0233]
Further, since an information area necessary for generating three types of search keys and an area for fetching three types of search results are added to the header information cell, the processor and the CAM search system 1 are Processing can be performed by transmitting and receiving one header information cell. Further, the processing after the processing by the CAM search system 1 is left to hardware outside the processor, so that the performance of the processor can be sufficiently exhibited.
[0234]
Next, CAM control for executing three types of searches at high speed and pipeline processing will be described.
(11) Speeding up search processing
(11-1) Speeding up CAM control
When the above-described method for extending the bit width of the CAM unit 3 is used, an increase in latency (latency) due to two searches and a decrease in throughput occur. That is, since the search result of the first half must be used as the search key of the second half, the search start of the second half is waited for the search time of the CAM unit 3. Therefore, even if the CAM unit 3 can execute pipeline processing, the throughput of the CAM unit 3 as a whole is lowered by waiting for the start of the latter half of the search until the first half of the search is completed.
[0235]
Here, the latency is a time required for reading the retained data from the memory. In other words, the latency is such that the NDP 10c (and the CPUs 90a, 91b, 10a) outputs read requests for data held in various memories such as the CAM array 3a and the MEM array 4a provided in the buffer unit 5 or the CAM search system 1. It means the time from the moment when the stored data required by the read request is transferred.
[0236]
When the CAM control method for extending the bit width of the CAM unit 3 is used for three types of searches (for example, three types of search 1, search 2, and search 3), the first half of search 2 is not waited for the search result of the first half of search 1. Subsequently, the first half of the search 3 is started, the second half of the search 1 is performed based on the result of the first half of the search 1, and the search is performed six times in the order of the second half of the search 2 and the second half of the search 3.
As described above, by controlling the search order, it is possible to improve the overall latency and throughput, and to maximize the throughput performance of the CAM unit 3.
[0237]
(11-2) Pipeline processing
FIGS. 12A and 12B are diagrams for explaining pipeline processing according to an embodiment of the present invention. The sequential process shown in FIG. 12 (a) is a conventional two-time search process. The CAM search system 1 receives a key (search key) 1 to start a search, outputs an index of a first search result, and this index is input to the CAM search system 1 as a second search key. The That is, each search result is fed back as the next search key.
[0238]
The search time will be described using τ (tau) representing latency. Here, 1τ = 1/66 MHz = 15 n (nano) seconds. On the other hand, since the header information cells are transmitted at intervals of 24τ, the time required for six searches (the time required for one cycle with the search key as one cycle for six transmissions) is 54τ according to the sequential search. Therefore, since the header information cell is input every 24τ, the search process cannot catch up with the interval at which the header information cell is input.
[0239]
On the other hand, in the pipeline processing shown in FIG. 12B, the search key for the first half of the received cell (see FIG. 5) is input to the CAM search system 1, and during the search, the search key for the second half is CAM. It is input to the search system 1 and the three types of search results are merged and reflected in the transmission cell.
Therefore, by performing three types of searches in parallel (pipelining), it is possible to perform the next search within 24τ time. The time required for one cycle is reduced to about half of the search time compared to the sequential processing.
[0240]
Further, by adding a search type code to the search key, three types of searches are performed, and three types of search tables are divided into two parts, the first half and the second half, respectively, so that a total of six types of tables are stored. A search is performed. That is, six types of memory areas for the search table are allocated to one CAM search system 1.
[0241]
As described above, the control method of the CAM search system 1 according to the present invention can also search for address data having a bit width longer than the bit width of the CAM unit 3 at high speed.
(D) Comparison between the present invention and the prior art
Hereinafter, there are three differences between the conventional technique (Patent Documents 1 and 2) and the memory search method in the routing engine apparatus, router apparatus, and routing engine apparatus of the present invention.
[0242]
(12) Presence or absence of control circuit 2
(12-1) Both the address search machine described in Patent Document 1 and the IPv6 routing engine 10 generate three types of search keys using header information and provide a CAM search dedicated circuit for merging the search results. The points are the same.
[0243]
On the other hand, the interface between the processor and the dedicated CAM search circuit provided in the address search machine described in Patent Document 1 uses a command register and a result register. It differs from the IPv6 routing engine 10 that transmits to the control circuit 2) and receives its header information cell from the CAM search system 1.
[0244]
Therefore, the IPv6 routing engine 10 does not require control such as timing measurement until the end of the search of the CAM search system 1, and the processor load is reduced. Furthermore, in the IPv6 routing engine 10, when the search data searched and output by the CAM unit 3 becomes excessive, the NDP 10c can prevent frame loss and has the back pressure function. It is different from Patent Document 1 that is not provided.
[0245]
(12-2) Regarding the header information cell, the address search machine described in Patent Document 1 does not mention anything about cell processing at the interface between the processor and the CAM search dedicated circuit. The IPv6 routing engine 10 is different from the IPv6 routing engine 10 that processes cells of a fixed length format so as to conform to the cell processing of the NDP 10c.
[0246]
Accordingly, the IPv6 routing engine 10 uses the header information cell processed by the processor as it is, so that the processor load is reduced.
(12-3) Further, regarding the buffer unit 5, the IPv6 routing engine 10 provided with the buffer unit 5 in that the address search machine described in Patent Document 1 does not mention any buffer that temporarily holds header information cells. And different.
[0247]
The IPv6 routing engine 10 includes information that can be used again by the processor in addition to the information for generating the search key and the search result information. The header information cell is changed without changing the information that can be used again. Can be returned to the processor. Therefore, the processor of the IPv6 routing engine 10 can use the information contained in the header information cell without performing processing such as data saving, thereby enabling effective use of processor resources and reducing the processor load.
[0248]
(13) Three times of search methods
(13-1) When each CAM search system of the conventional technology and this router processes a search key longer than the bit width of the CAM part, the search of each CAM search system is divided into three times and searched. The point to do is the same.
On the other hand, the address search machine described in Patent Document 1 divides a long search key and divides a long search key and uses the same CAM search system (see FIG. 14) to search for the same. Different from the IPv6 routing engine 10 that searches three times using the CAM search system.
[0249]
Therefore, the IPv6 routing engine 10 can reduce the number of CAM search systems, the hardware scale, and the router cost.
(13-2) The address search machine described in Patent Document 1 uses a 64-bit CAM search system corresponding to an IPv4 processor to divide an IPv6 address 128 bits into two and perform a search process, and the bit width is 64 bits. Limited. That is, the address search machine described in Patent Document 1 uses a CAM search system corresponding to the IPv4 protocol for the IPv6 protocol.
[0250]
On the other hand, the IPv6 routing engine 10 uses, for example, a 288-bit wide CAM search table and processes 128 bits of the IPv6 address without dividing it, and does not share the IPv4 address processing. .
Therefore, the IPv6 routing engine 10 specializes in IPv6 frames. Thereby, the IPv6 routing engine 10 does not need to divide the IPv6 address, and does not need to manage the search table obtained by dividing the IPv6 address, thereby simplifying the management of the search table.
[0251]
(13-3) Search type
The address search machine described in Patent Document 1 is different from the IPv6 routing engine 10 that can search a search table including information other than an IP address in that the address search machine is limited to an IP address search. In other words, the IPv6 routing engine 10 realizes a filter function (frame discard function), a band limiting function, and the like using information other than the IP address such as a transmission destination and a transmission source port number, a flow label, and a traffic class, for example. It is possible to realize each function of a function for determining the priority of a frame to be performed (flow identification function) and a function of extracting a specific received frame and processing it for the purpose of examining a network system (trace function).
[0252]
(13-4) Bit width of search key
The IPv6 routing engine 10 performs the search three times while changing the mask condition in order to perform a CAM search using three types of parameters. Here, the IPv6 routing engine 10 does not search using a bit width longer than the bit width of the CAM unit 3, and further divides the search key according to the short (shortage) of the bit width of the CAM unit 3. It is not.
[0253]
Therefore, the IPv6 routing engine 10 can realize a CAM search by using both the IPv6 address and the source IPv6 address and a search key having a bit width longer than the bit width of the CAM unit 3 including the header information.
(14) Speeding up CAM search
The IPv6 routing engine 10 can eliminate the waiting time of the search by controlling the order of the search three times, and can increase the speed.
[0254]
(E) Other
The present invention is not limited to the above-described embodiments and variations thereof, and various modifications can be made without departing from the spirit of the present invention.
For example, in the above description, each process and the functional block in which each process is performed can be variously changed based on a design policy or the like. The routing engine device 10 of the present invention and the memory transfer method in the routing engine device 10 are as follows. The invention is not limited to the above examples.
[0255]
With IPv6, the IPv6 address increases dramatically, and the address can be automatically set in the terminal. The number of devices that automatically transmit / receive information data via a network increases. This device is not primarily intended for network connection, but simply uses an IP network for transmitting and receiving information data. Therefore, the address is set without requiring network knowledge from the user.
[0256]
The router 8 can also perform processing specified by the neighborhood search protocol. This neighbor search protocol is a protocol applied between two nodes connected to the same link, and is a procedure for converting an address included in an IPv6 frame into a MAC address and acquiring the converted data link layer address Is stipulated.
[0257]
The neighborhood search protocol corresponds to ARP (Address Resolution Protocol) defined by the IPv4 protocol.
This ARP is a protocol applied between two nodes (routers, server devices, or client devices) provided in the network, and a receiving node that transmits an IP frame receives the IP frame. This is to know the MAC address of the side node. In the transmitting node, the IP frame generated by the IP layer processing unit is transmitted with the MAC address.
[0258]
Therefore, the data link layer processing needs to be converted from an IPv6 address to a MAC address. Here, since the data link layer does not normally know the MAC address of the destination node, the transmitting side node sends a message including the IPv6 address of the destination node to all the nodes of the network in order to obtain the MAC address of the receiving side node. Send to. When the node receiving the message knows that the request is addressed to itself by referring to the IPv6 address included in the message, it transmits its own MAC address.
[0259]
As a result, the external device 87 transmits a request message including the IPv6 address and prefix of the router 8 to all the nodes connected to the link. When the router 8 having the IPv6 address receives this request message, the router 8 transmits a response message including the MAC address to the external device 87.
[0260]
Access time is known as a concept separate from the above latency. This access time is the time required for the write or read operation, and generally means the time obtained by adding the transfer time of the retained data to the latency.
(F) Appendix
(Supplementary Note 1) A routing engine device that performs a plurality of types of search processing related to frame transfer based on header information of a frame,
A processor that mutually converts the frame and a header information cell including an area for holding search information required for the plurality of types of search processing and an area for writing the plurality of search results;
Based on the search information of the header information cell converted by the processor, the plurality of types of search processing are performed, the search results are written in the header information cell, and the header information cell is transmitted to the processor. A routing engine device comprising an associative memory (CAM [Content Addressable Memory] search system).
[0261]
(Supplementary Note 2) The frame format between the external node connected to the external network and the processor is converted, and the first frame having the first format among the plurality of received frames is transferred back to the external node. And a transfer processing unit for outputting a second frame having the second format of the plurality of received frames to the processor and transmitting the third frame having the third format from the processor to the external node. The routing engine device according to appendix 1, wherein the routing engine device is configured.
[0262]
(Supplementary note 3)
The routing engine apparatus according to appendix 1, wherein header information cells including header information included in the frame and apparatus internal information are generated as search information required for the plurality of types of search processes. .
(Appendix 4) The CAM search system is
A control circuit for generating a search key based on the header information cell from the processor and transmitting a search result for the search key to the processor;
A search result holding unit that holds a plurality of registration data for reference and outputs a memory address of registration data that matches the search key generated by the control circuit among the plurality of registration data;
And an associative data holding unit for outputting data held at the memory address output from the search result holding unit and having the same address arrangement as that of the search result holding unit. The routing engine device according to appendix 3.
[0263]
(Supplementary note 5)
A buffer unit for holding the header information cell;
A search key generating unit that generates a plurality of search keys representing the plurality of types of search processing based on information extracted from the header information cell held in the buffer unit;
Search result processing for generating the header information cell based on a plurality of associative data including search results for the plurality of search keys generated by the search key generation unit and transmitting the header information cell to the processor The routing engine device according to appendix 4, wherein the routing engine device is configured to include a portion.
[0264]
(Appendix 6) The buffer unit is
Search identification representing a plurality of search types related to transfer of the frame, search results representing each search result of the plurality of search types, search information representing search information required for the plurality of search types, and header information of the frame 6. The routing engine device according to appendix 5, wherein the routing engine device is configured to hold a header information cell including each area with header information representing
[0265]
(Supplementary note 7)
A plurality of dual port memories connected to a plurality of bus lines sharing the writing and reading of the header information cell and capable of inputting / outputting a write control signal and a read selection signal via the plurality of bus lines;
A first memory selection unit for writing data to a write target dual port memory among the plurality of dual port memories by outputting the write control signal to each bus line;
Based on the read selection signal output to each bus line, the data from the dual port memory to be read out of the plurality of dual port memories is configured to include a second memory selection unit. The routing engine device according to appendix 5.
[0266]
(Appendix 8) The control circuit
The routing engine apparatus according to appendix 1, wherein the routing engine apparatus is configured to transmit a back pressure message notifying the suppression of data output to the processor from the CAM search system.
(Appendix 9) The CAM search system is
A filter search that determines discard or passage of the frame, a flow search that determines the priority of the frame, and a transfer path of the frame is output based on the transmission destination address of the frame or the transmission source address of the frame Supplementary notes 1 to Supplementary notes, characterized in that at least one kind of search processing of trace search for determining whether or not to extract a frame is performed, and each search result is written in the header information cell. The routing engine device according to any one of 8.
[0267]
(Supplementary Note 10) The CAM search system is
A registration unit for registering a plurality of associative memory data in a continuous memory area of the header information cell;
The routing engine device according to appendix 9, wherein the registration unit is configured to associate the plurality of registered associative memory data and the search type code with each other and hold the data in the buffer unit.
[0268]
(Appendix 11) The CAM search system is
The associative memory data including the information included in the header information cell is divided into the associative memory data, an index that associates the first table and the second table of the associative memory data is generated, and the search key is assigned to the index. The added data is stored in the buffer unit as the second data, and the second data and the associative data corresponding to the entire associative memory data before the division are stored. The described routing engine device.
[0269]
(Supplementary Note 12) The CAM search system is
The plurality of search tables are provided in a continuous area holding the associative memory data, and the search type code for identifying the search processing is stored as a search target in the plurality of search tables and the search key. The routing engine device according to appendix 11, characterized by:
[0270]
(Supplementary Note 13) The CAM search system further includes:
13. The routing engine device according to appendix 12, characterized by comprising a buffer control unit for controlling a search order of a plurality of search processes included in the header information cell held in the buffer unit.
(Supplementary Note 14) A router device having a transfer processing unit that performs frame transfer processing based on frame header information and a routing engine device that performs a plurality of types of search processing related to frame transfer using the header information. And
The routing engine device is
A processor that mutually converts the frame and a header information cell including an area for holding search information required for the plurality of types of search processing and an area for writing the plurality of search results;
Based on the search information of the header information cell converted by the processor, the plurality of types of search processing are performed, the search results are written in the header information cell, and the header information cell is transmitted to the processor. In addition to having a CAM search system,
The transfer processing unit
A router device configured to convert the header information cell transmitted from the CAM search system into the frame and to transfer the converted frame to an external node connected to an external network.
[0271]
(Supplementary Note 15) The transfer processing unit
A frame format between the external node and the processor is converted, and a first frame having a first format among a plurality of received frames is transferred back to the external node, and of the plurality of received frames. Item 14. The supplementary note 14, wherein the second frame having the second format is output to the processor, and the third frame having the third format from the processor is transmitted to the external node. Router equipment.
[0272]
(Supplementary Note 16) A router device having a transfer processing unit that performs transfer processing of the frame based on header information of the frame and a routing engine device that performs a plurality of types of search processing related to transfer of the frame using the header information. And
A search result holding unit that performs a plurality of types of search processing using a plurality of search keys representing the plurality of types of search processing and holds a plurality of search results;
A buffer unit for holding a header information cell including an area for holding search information required for the plurality of types of search processing in the search result holding unit and an area for writing the plurality of search results;
A search key generation unit configured to generate the plurality of search keys held in the search result holding unit based on information extracted from the header information cell held in the buffer unit. A router device.
[0273]
(Supplementary Note 17) A search method in a routing engine apparatus that performs a plurality of types of search processing related to transfer of a frame based on frame header information,
A processor that mutually converts the frame and a header information cell that includes an area for holding search information required for the plurality of types of search processing and an area for writing the plurality of search results transmits the header information cell. A header information cell transmission step;
A search key generation step in which the CAM search system generates the plurality of search keys based on the search information included in the header information cell input in the header information cell transmission step;
A search processing step in which the CAM search system performs the plurality of search processes based on the plurality of search keys generated in the search key generation step;
A memory search method in a routing engine device, comprising: a search result receiving step in which the processor receives a plurality of associative data representing the plurality of search results searched in the search processing step.
[0274]
(Supplementary Note 18) The search processing step includes:
A registration unit provided in the CAM search system for registering a plurality of associative memory data in a continuous memory area of the header information cell allocates a first memory area and has the same memory address as the memory address of the first memory area A memory area allocating step for allocating a second memory area having an address;
The registration unit stores the first associative memory data of the plurality of associative memory data in the first memory area allocated in the memory area allocation step, Storing the second associative memory data in the second memory area;
Index storage in which the registration unit stores an index at a second address of the second memory area that is the same as the first address of the first memory area in which the first associative memory data is stored in the storing step Steps,
A second search processing step in which the registration unit performs the plurality of search processes based on the index stored in the index storage step and the plurality of search keys generated in the search key generation step; The memory search method in the routing engine device according to appendix 17, characterized by comprising:
[0275]
【The invention's effect】
As described above in detail, the memory search method in the routing engine device, router device, and routing engine device of the present invention has the following effects or advantages.
According to the routing engine apparatus of the present invention, a processor that mutually converts a frame and a header information cell including an area for holding search information required for a plurality of types of search processing and an area for writing a plurality of search results; It is configured with an associative memory that performs multiple types of search processing based on the search information of the header information cell converted by the processor, writes a plurality of search results to the header information cell, and transmits the header information cell to the processor. Therefore, for example, in a CAM search system connected to a processor or the like, adoption of header information cells and format conversion can be replaced by hardware provided externally separately from the processor, thereby reducing the load on the processor or the like. Reduce and search by multiple searches using the index pointer The search for data of a bit width which result holding unit exceeds the available processing bit width can be realized (claim 1).
[0276]
Further, according to the router device of the present invention, the routing engine device mutually exchanges a frame and a header information cell including an area for holding search information required for a plurality of types of search processing and an area for writing a plurality of search results. And a CAM search for performing a plurality of types of search processing based on the search information of the header information cell converted by the processor, writing a plurality of search results in the header information cell, and transmitting the header information cell to the processor The system is configured so that, for example, the order of three types of searches in the CAM search system can be controlled, thereby realizing a high-speed search that effectively uses the maximum throughput of the search result holding unit (claims). 2).
[0277]
Further, according to the memory search method in the routing engine apparatus of the present invention, a frame and a header information cell including an area for holding search information required for a plurality of types of search processing and an area for writing a plurality of search results are mutually connected. A header information cell transmitting step in which the processor for converting the header information cell transmits a plurality of search keys based on the search information included in the header information cell input in the header information cell transmitting step. A search key generation step to generate, a search processing step in which the CAM search system performs a plurality of search processes based on the plurality of search keys generated in the search key generation step, and a processor performs a search process in the search processing step A search result receiving step for receiving a plurality of associative data representing a plurality of search results Since equipped with, search processing of long data a plurality of types and bit widths, it is possible to reduce the installation number of the search results holding unit. Further, since the load on the processor or the like is reduced, the entire CAM search system can be constructed at a low cost, and the processing speed is greatly increased.
[0278]
In addition, according to the present invention, it is possible to support continuous transmission / reception of header information cells, and to support a back pressure function at the interface between the network processor and the CAM search system, thereby improving data transmission / reception reliability. .
Further, according to the present invention, it is possible to cope with the MEM data rewriting function in operation.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating a configuration example of a transfer device according to an embodiment of the present invention.
FIG. 2 is a block diagram of a CAM search system according to an embodiment of the present invention.
3A is a block diagram of a search result holding unit according to an embodiment of the present invention, and FIG. 3B is a diagram for explaining a data example of a CAM array according to an embodiment of the present invention. is there.
FIG. 4 is a block diagram of an associative data holding unit according to an embodiment of the present invention.
FIG. 5 is a diagram for explaining a search table according to an embodiment of the present invention.
6A is a diagram for explaining a data holding example of a CAM area according to an embodiment of the present invention, and FIG. 6B is a data holding example of a MEM area according to an embodiment of the present invention. It is a figure for hold | maintaining.
FIG. 7 is a diagram illustrating a format example of a header information cell according to an embodiment of the present invention.
8A is a diagram for explaining a search method of a CAM search system according to an embodiment of the present invention, and FIG. 8B is a diagram for explaining a control circuit according to an embodiment of the present invention. FIG.
9A is a flowchart for explaining a flow of frame processing according to an embodiment of the present invention, and FIG. 9B schematically shows a flow of search processing according to an embodiment of the present invention. FIG.
FIG. 10 is a schematic block diagram of a control circuit according to an embodiment of the present invention.
FIGS. 11A and 11B are diagrams showing data examples of a search result holding unit and an associative data holding unit according to an embodiment of the present invention, respectively.
FIGS. 12A and 12B are diagrams for explaining pipeline processing according to an embodiment of the present invention. FIG.
FIG. 13 is a diagram for explaining four input / output ports of a buffer unit according to an embodiment of the present invention;
FIG. 14 is a block diagram of a plurality of ring buffers according to an embodiment of the present invention.
FIGS. 15A and 15B are diagrams for explaining a ring buffer configuration of a buffer unit according to an embodiment of the present invention. FIG.
FIGS. 16A to 16E are time charts for explaining status flags of the DPRAM according to the embodiment of the present invention.
FIG. 17 is a diagram showing a time chart example of a QPRAM according to an embodiment of the present invention.
FIG. 18 is a schematic configuration diagram of a conventional CAM search system.
[Explanation of symbols]
1 CAM search system
1a Write / read unit
2 Control circuit
2a, 2b interface circuit
3 CAM part (search result holding part)
3a CAM array
3b CAM memory controller
3c, 4c I / O interface part
4 MEM part (associative data holding part)
4a MEM array
4b MEM memory controller
5 Buffer (cell buffer, 6-stage ring buffer, QPRAM)
6 Search key generator
6a Sorting processing part
6b Search key generation and sorting processing unit
6c 2-sided buffer
6d Search type code generator
6e selector (first selector)
7 Search result processing section
7a First register
7b Second register
7c Judgment and sorting processor
7d selector (second selector)
8 router (router device or transfer device)
9 Search table
9a First CAM entry
9b First MEM entry
9c Second CAM entry
9d Second MEM entry
10 IPv6 routing engine (routing engine device)
10b 3rd switch
10c NDP (Network Data Processor)
10d, 90d, 91c, 91d Routing table
10e Frame buffer
15a Bus switch unit (second memory selection unit)
15b selector (first memory selection unit)
80, 82 frames
80a, 82a header
80b payload
81 Header information cell
81a Device internal information
87 External device (external node)
88 ROM
89 RAM
90 Interface part (transfer processing part)
90a, 91b, 10a CPU
90b 1st switch part
90c interface processor
91 Main body switch section (transfer processing section)
91a Second switch part
91e IPv6 address resolution search part

Claims (3)

フレームのヘッダ情報に基づいて該フレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置であって、
該フレームと、該複数種類の検索処理に要する検索情報を保持する領域および該複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサと、
該プロセッサにて変換された該ヘッダ情報セルの該検索情報に基づいて該複数種類の検索処理を行ない該複数の検索結果を該ヘッダ情報セルに書き込み該ヘッダ情報セルを該プロセッサに対して送信する連想メモリ(以下、CAM[Content Addressable Memory]検索システムと称する。)とをそなえて構成されたことを特徴とする、ルーティングエンジン装置。
A routing engine device that performs a plurality of types of search processing related to transfer of a frame based on header information of the frame,
A processor that mutually converts the frame and a header information cell including an area for holding search information required for the plurality of types of search processing and an area for writing the plurality of search results;
Based on the search information of the header information cell converted by the processor, the plurality of types of search processing are performed, the search results are written in the header information cell, and the header information cell is transmitted to the processor. A routing engine apparatus comprising an associative memory (hereinafter referred to as a CAM [Content Addressable Memory] search system).
フレームのヘッダ情報に基づいて該フレームの転送処理をする転送処理部と該ヘッダ情報を用いて該フレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置とを有するルータ装置であって、
該ルーティングエンジン装置が、
該フレームと、該複数種類の検索処理に要する検索情報を保持する領域および該複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサと、
該プロセッサにて変換された該ヘッダ情報セルの該検索情報に基づいて該複数種類の検索処理を行ない該複数の検索結果を該ヘッダ情報セルに書き込み該ヘッダ情報セルを該プロセッサに対して送信するCAM検索システムとをそなえるとともに、
該転送処理部が、
該CAM検索システムから送信された該ヘッダ情報セルを上記のフレームに変換し、該変換したフレームを外部ネットワークに接続された外部ノードに転送するように構成されたことを特徴とする、ルータ装置。
A router device having a transfer processing unit that performs transfer processing of the frame based on header information of the frame, and a routing engine device that performs a plurality of types of search processing related to transfer of the frame using the header information,
The routing engine device is
A processor that mutually converts the frame and a header information cell including an area for holding search information required for the plurality of types of search processing and an area for writing the plurality of search results;
Based on the search information of the header information cell converted by the processor, the plurality of types of search processing are performed, the search results are written in the header information cell, and the header information cell is transmitted to the processor. In addition to having a CAM search system,
The transfer processing unit
A router device configured to convert the header information cell transmitted from the CAM search system into the frame and to transfer the converted frame to an external node connected to an external network.
フレームのヘッダ情報に基づいて該フレームの転送に関する複数種類の検索処理を行なうルーティングエンジン装置におけるメモリ検索方法であって、
該フレームと、該複数種類の検索処理に要する検索情報を保持する領域および該複数の検索結果を書き込むための領域を含むヘッダ情報セルとを相互に変換するプロセッサが、該ヘッダ情報セルを送信するヘッダ情報セル送信ステップと、
該CAM検索システムが、該ヘッダ情報セル送信ステップにて入力された該ヘッダ情報セルに含まれる検索情報に基づいて該複数の検索キーを生成する検索キー生成ステップと、
該CAM検索システムが、該検索キー生成ステップにて生成された該複数の検索キーに基づいて該複数の検索処理を行なう検索処理ステップと、
該プロセッサが、該検索処理ステップにて検索処理された該複数の検索結果を表す複数の連想データを受信する検索結果受信ステップとをそなえたことを特徴とする、ルーティングエンジン装置におけるメモリ検索方法。
A memory search method in a routing engine apparatus that performs a plurality of types of search processing related to frame transfer based on frame header information,
A processor that mutually converts the frame and a header information cell that includes an area for holding search information required for the plurality of types of search processing and an area for writing the plurality of search results transmits the header information cell. A header information cell transmission step;
A search key generation step in which the CAM search system generates the plurality of search keys based on the search information included in the header information cell input in the header information cell transmission step;
A search processing step in which the CAM search system performs the plurality of search processes based on the plurality of search keys generated in the search key generation step;
A memory search method in a routing engine device, comprising: a search result receiving step in which the processor receives a plurality of associative data representing the plurality of search results searched in the search processing step.
JP2003171049A 2003-06-16 2003-06-16 Routing engine apparatus, router apparatus, and memory search method in routing engine apparatus Withdrawn JP2005012271A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003171049A JP2005012271A (en) 2003-06-16 2003-06-16 Routing engine apparatus, router apparatus, and memory search method in routing engine apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003171049A JP2005012271A (en) 2003-06-16 2003-06-16 Routing engine apparatus, router apparatus, and memory search method in routing engine apparatus

Publications (1)

Publication Number Publication Date
JP2005012271A true JP2005012271A (en) 2005-01-13

Family

ID=34095672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003171049A Withdrawn JP2005012271A (en) 2003-06-16 2003-06-16 Routing engine apparatus, router apparatus, and memory search method in routing engine apparatus

Country Status (1)

Country Link
JP (1) JP2005012271A (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007208963A (en) * 2006-01-06 2007-08-16 Fujitsu Ltd Packet processing apparatus and method
JP2008301159A (en) * 2007-05-31 2008-12-11 Omron Corp Inter-network mediating device
JP2009239401A (en) * 2008-03-26 2009-10-15 Alaxala Networks Corp Packet transfer apparatus
JP2012095335A (en) * 2011-12-21 2012-05-17 Alaxala Networks Corp Packet transfer device
US8246163B2 (en) 2010-06-16 2012-08-21 Hewlett-Packard Development Company, L.P. Printer support surface with support rod

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007208963A (en) * 2006-01-06 2007-08-16 Fujitsu Ltd Packet processing apparatus and method
JP2008301159A (en) * 2007-05-31 2008-12-11 Omron Corp Inter-network mediating device
JP2009239401A (en) * 2008-03-26 2009-10-15 Alaxala Networks Corp Packet transfer apparatus
US8246163B2 (en) 2010-06-16 2012-08-21 Hewlett-Packard Development Company, L.P. Printer support surface with support rod
JP2012095335A (en) * 2011-12-21 2012-05-17 Alaxala Networks Corp Packet transfer device

Similar Documents

Publication Publication Date Title
JP4290320B2 (en) Routing device
US8225027B2 (en) Mapping address bits to improve spread of banks
JP3734704B2 (en) Packet classification engine
JP4260899B2 (en) Central processor hardware-assisted access to the relay database
US8228908B2 (en) Apparatus for hardware-software classification of data packet flows
JP4068166B2 (en) Search engine architecture for high performance multilayer switch elements
US6366582B1 (en) Connection switching apparatus, connection switching network control system and connection switching network control method
US7304999B2 (en) Methods and apparatus for processing packets including distributing packets across multiple packet processing engines and gathering the processed packets from the processing engines
US20050242976A1 (en) Lookup engine
US20060133374A1 (en) Packet exchange device and packet exchange method
US20050171937A1 (en) Memory efficient hashing algorithm
US20060098675A1 (en) Traffic control method for network equipment
US20030235194A1 (en) Network processor with multiple multi-threaded packet-type specific engines
US7346059B1 (en) Header range check hash circuit
KR102409024B1 (en) Multi-core interconnect in a network processor
WO2011078108A1 (en) Pattern-matching method and device for a multiprocessor environment
JPWO2004032435A1 (en) Bit string matching method and apparatus
US20090063702A1 (en) Crossbar apparatus for a forwarding table memory in a router
WO2007000092A1 (en) A network processor
CN106713144B (en) Reading and writing method of message outlet information and forwarding engine
JPH0897844A (en) Method and equipment for setting data passage
US20140358886A1 (en) Internal search engines architecture
US20060031628A1 (en) Buffer management in a network device without SRAM
JP2005012271A (en) Routing engine apparatus, router apparatus, and memory search method in routing engine apparatus
US7249216B2 (en) Data relay apparatus, content addressable/associative memory device, and content addressable/associative memory device use information search method

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060905