JP2004194343A - パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法 - Google Patents

パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法 Download PDF

Info

Publication number
JP2004194343A
JP2004194343A JP2003415101A JP2003415101A JP2004194343A JP 2004194343 A JP2004194343 A JP 2004194343A JP 2003415101 A JP2003415101 A JP 2003415101A JP 2003415101 A JP2003415101 A JP 2003415101A JP 2004194343 A JP2004194343 A JP 2004194343A
Authority
JP
Japan
Prior art keywords
path compression
search engine
trie
network search
pattern
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.)
Pending
Application number
JP2003415101A
Other languages
English (en)
Inventor
Lun Bin Huang
ビン フアン ルン
Nicholas Richardson
リチャードソン ニコラス
Suresh Rajgopal
ラゴパル スレッシュ
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.)
ST MICROELECTRONICS Inc
STMicroelectronics lnc USA
Original Assignee
ST MICROELECTRONICS Inc
STMicroelectronics lnc USA
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 ST MICROELECTRONICS Inc, STMicroelectronics lnc USA filed Critical ST MICROELECTRONICS Inc
Publication of JP2004194343A publication Critical patent/JP2004194343A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】 パス圧縮最適化システム及び方法を提供する。
【解決手段】 ルーターのパイプラインネットワーク検索エンジンにおいて使用するものであって、単一エントリトライテーブルを除去するためのパス圧縮最適化システム及び方法が提供される。本システムは、親トライテーブル内に、(1)データパケットの共通のプレフィックスビットを有するパス圧縮パターン、及び(2)パス圧縮パターンの長さを表わすスキップカウントを埋込む。ネットワーク検索エンジンがパス圧縮パターン及びスキップカウントを使用してデータ構造から単一エントリトライテーブルを除去する。各パス圧縮パターンはネットワーク検索エンジンの爾後のパイプライン段において一度に1個のストライドづつ処理される。不必要な単一エントリトライテーブルを除去することはメモリ空間、電力消費、及びデータ構造をトラバースするのに必要なメモリアクセスの数を減少させる。
【選択図】 図4

Description

本発明は、大略、電子通信ネットワークにおけるルーターに関するものであって、更に詳細には、トライアルゴリズムネットワーク検索エンジンに関するものである。
電子通信ネットワークは、パケットで電子データを送信及び受信することが可能なネットワークルーターを有している。各ネットワークルーターは、入って来る情報パケットを、そのパケットの意図されているデスティネーション即ち宛先のルート即ち経路上にある次の隣りのルーターへ指向させる。各ネットワークルーターは、そのパケットのデスティネーションIP(インターネットプロトコル)プレフィックスに従ってそのパケットに対する適宜の「次のホップ」アドレスを決定するためにルーチングテーブルに関してプレフィックスルックアップ操作を実施せねばならない。
プレフィックスルックアップ操作は、ネットワークプロセッサによるか、又は、より一般的には、ネットワーク検索エンジンと呼称される別の装置によるかのいずれかにより行われる。ネットワークプロセッサ又はネットワーク検索エンジンのタスクは、デスティネーションプレフィックス及びそれらの関連する「次のホップ」情報からなるルーチングテーブルに関しての検索を維持し且つ実施することである。例示的な従来のルーターシステム100を図1に示してある。パケットが入口ユニット110へ入り且つネットワーク処理ユニット(NPU)120へ通過される。NPU120はバックプレーンユニット130へ結合されており且つネットワーク検索エンジン(NSE)140へ結合されている。NPU120はそのパケットに対する検索キーをNSE140へ送る。NSE140はNSE140内のルーチングテーブル(不図示)の検索を実施し且つ「次のホップ」情報をNPU120へリターンする。次いで、NPU120はそのパケットを出口ユニット150を介してその「次のホップ」デスティネーションへ送る。
ルーチングテーブルを検索するタスクを実施することが可能な種々のタイプのネットワーク検索エンジンが存在している。本発明は、ビットマップ型マルチビットトライアルゴリズム検索アルゴリズムを実現するためにメモリの複数個のバンクを使用するパイプライン型ハードウエアを使用することが可能なタイプのネットワーク検索エンジンにおける改良に関するものである。図2は従来のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジン200のブロック図を例示している。ネットワーク検索エンジン200は入力インターフェース210、初期論理ユニット220、複数個のパイプライン型論理ユニット(230,240)、複数個のメモリバンク(250,260,270)、出力インターフェース280を有している。
図2に示したような典型的なパイプライン型ハードウエアネットワーク検索エンジンにおいては、検索キーに関する検索は段において行われる。パイプライン型論理ユニット(230,240)の各段におけるパイプライン論理は検索キーのある部分を処理する。検索キーにおけるビットが検査されると、(1)最終的な一致が見つかったか又は一致が見つからなかったかのいずれかのために検索を終了するため、又は(2)次の段へ継続するための決定が行われる。アドレスを発生し且つ関連するメモリバンクへ送り且つメモリの読取を実施することにより次の段へ検索が継続して行われる。
検索を継続するための決定がなされる場合には、メモリから読取られるデータは次の段のパイプライン論理ユニットへ送られ、且つ検索キーの次の部分が処理される。検索処理は、最終的な一致が見つかるか又は一致が見つからないのいずれかとなるまで継続して行われる。
ルーチングテーブルを格納するために使用せねばならないメモリの量を減少させるため及びルックアップ操作期間中になされねばならないメモリアクセスの数を減少させるために種々のソフトウエアアルゴリズムが開発されている。「トライ(trie)」は、ストリング内のビットが検索ツリーの分岐の方向を決定する二進ストリングを表わすデジタル検索ツリーデータ構造及びアルゴリズムである。「トライ(trie)」という用語は、「retrieval」という単語の中間の4個の文字からとったものである。トライアルゴリズムはデスティネーションIPプレフィックス(プレフィックスの数値に従って)を容易に検索可能なツリー構造へ階層的に編成する。
二進トライは高々2個の分岐を有しており、一方マルチビットトライは一度に複数個のビットを消費し且つ幾つかの分岐を有している。マルチビットトライの各分岐は次のレベルへ通じている。マルチビットトライにおいて消費されるビット数は「ストライド(stride)」と呼称される。一様幅ストライドトライは、ストライドの全てが同一の幅を有する(但し、プレフィックス長の残部をストライド幅で割算した最後のストライドを除く)トライである。マルチビットトライアルゴリズムは、一様幅ストライドトライ又は可変幅ストライドトライにおいてプレフィックスを格納し且つ検索することにより動作する。
マルチビットトライビットマップアルゴリズムは全ての分岐をテーブル内の同一の「親」ストライド値を有する同一のレベル内にグループ化する。これは「トライテーブル」と呼ばれる。プレフィックスがnビットストライドからなるアレイ内に分割される場合には、次のレベルのトライテーブルにおける可及的に最大のエントリは2nである。次のレベルのトライテーブルは、時折、「子」トライテーブルと呼称される。該アルゴリズムは同一の親からの全ての次のレベルのストライド値を2nビットデータフィールド内にエンコードし且つそれを、次のレベル(子)トライテーブルのベースアドレスと共に、親トライテーブル内のエントリ内に格納する。この情報を格納するデータ構造は「トライノード」と呼ばれる。
nの最大寸法の代わりに存在するエントリの実際の数に対してメモリを割当てることによりテーブル圧縮が達成される。各プレフィックスの最後のストライドに対して、同様のタイプのデータ構造が使用されるが、この場合においては、ポインターが次のレベルのトライテーブルの代わりに「次のホップ」情報を包含するテーブルを指し示す点が異なる。このタイプのエントリは「エンドノード」と呼ばれる。
ルーチングテーブルルックアップも同一幅ストライドで実施される。次のレベルのストライドにおける値がデコードされ且つその親テーブルエントリにおけるデータフィールドで処理される。同一のストライド値を有する格納されている値が存在することが決定される場合には、その情報を使用してインデックスが計算される。テーブルポインター及びこのインデックスは次のレベルのトライテーブルエントリへ通じるアドレスを形成し且つ検索が継続して行われる。一致が見つからない場合には、その検索は成功せずに終了する。検索がエンドノードに到達し且つ一致が見つかった場合には、その検索は成功であり且つ関連する「次のホップ」情報が「次のホップ」テーブルから読取られる。
典型的なルーチングテーブルにおいて、共通の高次ビット(ストライド)を有するその他のプレフィックスは親トライテーブルを共用する。このことはプレフィックスを格納するために必要なメモリの量を減少させる。又、典型的なルーチングテーブルにおいて、時折、多数の単一エントリ中間トライテーブル(非葉テーブル)が存在している。このことは、多数のプレフィックスが高次ビット(ストライド)のストリングを共用する場合に発生する。ルックアップ操作期間中、これらのトライテーブルのシリーズが、一致する葉エントリが見つかるまで又はそのリンクの終りに遭遇するまで、これらのトライテーブルのシリーズが次々とアクセスされる。
ネットワークプロセッサユニット等の従来のソフトウエアを基礎としたパケットルックアップ装置においては、単一エントリトライテーブルの場合にアクセスされるべきトライテーブルのレベルを減少させるために「パス圧縮」と呼ばれる方法が使用される。パス圧縮は、一連の非葉単一エントリトライテーブルを、トライテーブル内のビットマップを表わし且つそのパターンの二進長(スキップカウント)と共に1つの位置に入れられた実際のプレフィックスパターン(ストライド)で置換することにより動作する。従って、サーチ期間中、同数のストライドをチェックするために一連のトライテーブルに対して複数回のメモリアクセスを行う代わりに、ネットワークプロセッサユニットはプレフィックスパターンを検索し且つビットからなるマルチ「ストライドフル(stride−ful)」の一致ステータスを決定するために単に1つのメモリアクセスを実施することが可能である。然しながら、このアプローチは通常のパイプラインの流れとのその見掛け上の不一致のためにパイプライン型ハードウエアを基礎とした装置において使用されたことはない。
「パス圧縮」を使用することのない従来のパイプライン型ハードウエア検索エンジンについて検討する。単一エントリトライテーブルを取扱うためのこのような検索エンジンにより使用される方法はメモリ空間、メモリ帯域幅、パワーを浪費する。例えば、トライテーブルの内容が、典型的に、テーブルヘッダーと1つ又はそれ以上のテーブルエントリとを有する場合について検討する。テーブルヘッダーはバックトラックポインター(親トライテーブルエントリのアドレス)を保持している。単一エントリトライテーブルが存在する場合には、単一エントリテーブルを指し示す親エントリは単に1つのセットビットでビットマップを保持する。子トライテーブルは1つのテーブルヘッダーと1つのデータエントリとから構成されている。一連の単一エントリトライテーブルにおいて、各爾後的子テーブルのビットマップの1つのセットビットを有している。従来のパイプライン型ハードウエア検索エンジンは、3つのタイプの単一エントリトライテーブルを取扱うためにメモリ空間と、メモリ帯域幅と、パワーとを使用する。これらのテーブルを除去することが可能である場合には、単一エントリテーブルに対するメモリアクセスも除去される。このことは、メモリ空間、メモリ帯域幅、パワーにおいて顕著な節約となる。
従って、単一エントリトライテーブルのパス圧縮を最適化するための装置及び方法に対する必要性が存在している。単一エントリトライテーブルにより占有されるメモリ空間を節約し且つパイプライン型ハードウエアネットワーク検索エンジンにおける単一エントリトライテーブルへアクセスする場合に関連するメモリ帯域幅及びパワーを節約するための装置及び方法の必要性が存在している。
上述した従来技術の欠点を解消するために、本発明の主要な目的とするところは、パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンに関連する単一エントリトライテーブルのパス圧縮を最適化する装置及び方法を提供することである。
本発明の好適実施例においては、ルーター内のネットワーク検索エンジンがデータパケットの共通プレフィックスビット(「パス圧縮パターン」と呼称される)及びそのパターンの長さ(「スキップカウント」と呼称される)を親トライテーブルエントリ内に埋込む。本発明は、ネットワーク検索エンジンが「パス圧縮」エントリの意味を解釈し且つ再定義することを可能とする新たな組のフォーマットを提供する。このことは、ネットワーク検索エンジンが、データ構造から多数の単一エントリトライテーブルを除去し、一方データ構造内の全てのデータへのアクセスを保存することを可能とする。不必要な単一エントリトライテーブルの除去は、そうでなければ、単一エントリトライテーブルにより占有されるであろうメモリ空間を節約する。不必要な単一エントリトライテーブルの除去は、又、データ構造をトラバースするのに必要なメモリアクセスの数を減少させる。
本発明の1つの目的とするところは、パイプライン型ハードウエアネットワーク検索エンジンにおけるデータ構造における不必要な単一エントリトライテーブルを除去する最適化したパス圧縮プロセスを提供することである。
本発明の別の目的とするところは、パイプライン型ハードウエアネットワーク検索エンジンにおいてメモリ空間及びメモリ帯域幅の顕著な節約を得るためにデータ構造における不必要な単一エントリトライテーブルを除去するための最適化したパス圧縮プロセスを提供することである。
本発明の更に別の目的とするところは、パイプライン型ハードウエアネットワーク検索エンジンにおけるパワー消費の顕著な節約を得るためにデータ構造における不必要な単一エントリトライテーブルを除去する最適化したパス圧縮プロセスを提供することである。
本発明の別の目的とするところは、各パイプライン論理段及び各メモリバンクが各ルックアップに対し一度だけアクセスされる1パスプレフィックスルックアッププロセスと最適化したパス圧縮プロセスが互換性があるように関連する親トライテーブル内のパス圧縮パターン及びスキップカウントをエンコードすることによりデータ構造内の不必要な単一エントリトライテーブルを除去するための最適化したパス圧縮プロセスを提供することである。
本発明の更に別の目的とするところは、テーブルアップデートオーバーヘッドを最小とさせるために関連する親トライテーブル内のパス圧縮パターン及びスキップカウントをエンコードすることによりデータ構造内の不必要な単一エントリトライテーブルを除去するための最適化したパス圧縮プロセスを提供することである。
以下に説明する図1乃至10及び本明細書において本発明の原理を説明するために使用する種々の実施例は単に例示的なものであって本発明の技術的範囲を制限するような態様で解釈されるべきものではない。当業者によって理解されるように、本発明の原理は任意の適宜構成したネットワーク検索エンジンにおいて実現する事が可能なものである。
本発明は、ワンパス(one−pass)プレフィックスルックアップと互換性のある実現例を提供すべく設計されている。このことは、各パイプライン論理ユニット及び各メモリバンクが各ルックアップに対して一度だけアクセスされることを意味する。本発明は、又、テーブルアップデートオーバーヘッドを最小とさせる実現例を提供すべく設計されている。このことは、本発明は、既存のエントリの最小のメモリ移動でプレフィックス挿入及び削除を実施することを意味している。
本発明は、(1)パス圧縮パターンを関連する親ノードにおいてエンコードし、且つ(2)パス圧縮プロセスのすぐ後に続くトライテーブルを本発明のパス圧縮プロセスを実施する前に元のトライテーブルが存在すべく予定されていたメモリバンク内に配置させることによりこれらの設計目的を達成する。
本発明は「パス圧縮」エンティティを表わすために使用される2つの新たなフォーマットを作成する。パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおける本発明の好適実施例は、選択したトライテーブル(不図示)に対して第一トライテーブルエントリ320(図3B)及び第二トライテーブルエントリ340(図3C)を画定する。トライテーブルエントリ300(図3A)は従来のトライテーブルエントリである。トライテーブルエントリ300は「ビットマップ」データフィールド305、「ポインター」データフィールド310、「コード」データフィールド315を有している。ビットマップデータフィールド305は選択したトライテーブル内に格納されているプレフィックスの特定のセクションのエンコードした値を包含している。ビットマップデータフィールド305内のデータは、次続のトライテーブル(即ち、選択したトライテーブルの後のトライテーブル)における次のエントリを探し出すための情報を提供するために使用される。ポインターデータフィールド310は次続のトライテーブルのベースアドレスを包含している。コードデータフィールド315は現在のエントリのフォーマットを包含している。
説明の便宜上、ビットマップデータフィールド305が正確にデータの1つのストライドを保持しているものと仮定する。ストライド幅が4である場合、ビットマップ幅は16である(即ち、2の4乗である)。
本発明は第一トライテーブルエントリ320と第二トライテーブルエントリ304を有している。第一トライテーブルエントリ320は「パターン」データフィールド325、「ポインター」データフィールド330、「コード」データフィールド335を有しており、図3Bに示してある。第一トライテーブルエントリ320はn個のストライドのスキップカウントを有するパス圧縮エントリを表わす。例えば、ビットマップ幅が16でストライド幅が4の場合には、パターンの4個のストライドを1つのノードに保持させることが可能である(即ち、4個のストライド×ストライド当たり4個のビット=16ビットである)。この場合には、スキップカウントは3である。即ち、最後の段に対する通常の4個のビットストライドに加えて、3個のスキップした4個のビットストライドが存在している。
第二テーブルエントリ340は、図3Cに示したように、「パターン」データフィールド345、「カウント」データフィールド350、「ポインター」データフィールド355、「コード」データフィールド360を有している。第二トライテーブルエントリ340は1個のストライドから(n−1)ストライドへのスキップカウントを有する「パス圧縮」エントリを表わす。
スキップカウントはビットマップデータフィールド305内に格納される。ビットマップデータフィールド305は、スキップカウントがn未満である場合には、完全には使用されないので、図3Cに示したように、スキップカウントをカウントデータフィールド350内に不使用のビットでエンコードすることが可能である。
本発明の動作をより良く理解するために、図2に示した従来のパイプライン型ハードウエアビットマップ型マルチトライアルゴリズムネットワーク検索エンジンの動作を最初に説明する。最初に、検索キーが入力インターフェース210へ供給される。入力インターフェース210は検索キーと検索コマンドとを初期論理ユニット220へ送ることにより検索操作を開始する。初期論理ユニット220はメモリアドレスを発生し且つメモリバンク0(参照番号250で示してある)に関してメモリ読取を実施する。初期論理ユニット220は(1)検索コマンド、(2)検索キー、(3)メモリバンク0(250)から読取ったメモリデータ(ノードデータ)をパイプライン論理段1(参照番号230で示してある)へ送る。
パイプライン論理段1(230)は、メモリバンク0(250)からのトライノードデータをデコードし且つそれを検索キーの第一セグメント(即ち、第一ストライド)と比較することにより一致が存在するか否かを決定する。その検索結果が、一致するプレフィックスが見つかり且つ検索を継続すべきでないことを表わす場合には、その検索は終了し且つパイプライン論理段1(230)は「一致」の検索結果情報を信号線(図2には示していない)を介して出力インターフェース280へ送る。その検索結果が、一致するプレフィックス又は子トライテーブルが見つからなかったことを表わす場合には、その検索は終了し且つパイプライン論理段1(230)は「一致なし」の検索結果情報を信号線(図2には示していない)を介して出力インターフェース280へ送る。
検索結果が、一致する子トライテーブルが見つかり且つ検索を継続すべきであることを表わす場合には、パイプライン論理段1(230)はメモリアドレスを発生し且つメモリバンク1(参照番号260で示してある)に関してのメモリ読取を実施する。パイプライン論理段1(230)は(1)検索コマンド、(2)検索キー、(3)メモリバンク1(260)から読取ったメモリデータ(ノードデータ)をパイプライン論理段2(参照番号240で示してある)へ送る。パイプライン論理段2(240)はそのデータを検査し且つ検索プロセスを繰返し行う。
最後に、その検索プロセスがパイプライン論理段N(図2には示していない)及びメモリバンクN(参照番号270で示してある)により表わされる最後のパイプライン段に到達すると、検索プロセスはそこで終了し且つ検索結果が出力インターフェース280へ送られる。
図4は本発明の原理に基づくパイプライン型ハードウエアビットマップ型マルチトライアルゴリズムネットワーク検索エンジン400のブロック図を例示している。説明の便宜上、従来のネットワーク検索エンジン200の要素と同一であるネットワーク検索エンジン400の要素には同一の参照番号を付してある。ネットワーク検索エンジン400は、入力インターフェース210、初期論理ユニット220、複数個のパイプライン型論理ユニット(230,240)、複数個のメモリバンク(250,260,265,270)、出力インターフェース280を有している。更に、ネットワーク検索エンジン400は、複数個のPC論理ユニット(410,440)、複数個のシフトデータ格納ユニット(420,450)、複数個のマルチプレクサ(430,460)を有している。
図4に示したように、ネットワーク検索エンジン400の第一段は、入力インターフェース210、初期論理ユニット220、メモリバンク0(250)を有している。ネットワーク検索エンジン400の第二段は、パイプライン論理ユニット230(パイプライン論理段1)、メモリバンク1(260)、PC論理ユニット410、シフトデータ格納ユニット204、マルチプレクサ430を有している。ネットワーク検索エンジン400の第三段は、パイプライン論理ユニット240(パイプライン論理段2)、メモリバンク2(265)、PC論理ユニット440、シフトデータ格納ユニット450、マルチプレクサ460を有している。ネットワーク検索エンジン400のその他の段(不図示)は第二及び第三段と同一の構成を有しているが、最後のメモリバンク(メモリバンクN270)の出力が出力インターフェース280へ結合されている点が異なっている。
ネットワーク検索エンジン400の各段において、PC論理ユニット(例えば、PC論理ユニット410)はそれの関連するパイプライン論理ユニット(例えば、パイプライン論理段1(230))におけるパス圧縮最適化の存在をサーチし且つ検知する。各段におけるPC論理ユニットは、本発明の新たなトライノードフォーマット(即ち、第一トライテーブルエントリ320及び第二トライテーブルエントリ340)をサーチし且つ検知することによりこのことを行う。次いで、各段におけるPC論理ユニットはパス圧縮最適化を処理する。パス圧縮最適化の処理結果に依存して、PC論理ユニットは通常のサーチ結果(即ち、関連するパイプライン論理ユニットにより得られたサーチ結果)を修正し且つ制御することが可能である。
各PC論理ユニット(410,440)はネットワーク検索エンジン400におけるそれの関連するパイプライン論理段(230,240)を置換することはない。その代わりに、より詳細に説明するように、各PC論理ユニットはパス圧縮最適化を検知し且つ処理するための補充的な機能を提供する。パス圧縮最適化が検知されない場合には、ネットワーク検索エンジン400はネットワーク検索エンジン200と同一の態様で動作する。
PC論理ユニットがパス圧縮最適化を検知すると、現在のパイプライン論理段に対応する検索キーの部分が関連するパス圧縮パターン(即ち、前のメモリバンクから読取られたデータ)の対応する部分と比較される。
一致が見つかる場合には、(1)現在のメモリバンクに対するメモリ読取動作が抑圧され、且つ(2)パス圧縮パターンの残りの未処理部分がラッチされ且つ次のパイプライン論理段へ送られる。
(1)パス圧縮はデータの複数個のストライドフル(strideful)を有する場合があり且つ(2)各パイプライン論理ユニット及び各PC論理ユニットは一度にデータの1つのストライドのみを処理するので、残りの圧縮パターンを表わすデータは、それが次の段へ通過される前に、シフトされる。
シフトされたデータはシフトデータ格納ユニット内に格納され且つ現在のPC論理ユニットの制御下においてマルチプレクサを介して次のパイプライン論理ユニットへ送られる。シフトされたデータは、現在のメモリバンクからのメモリデータの代わりに次のパイプライン論理ユニットにおいて使用される。
PC論理ユニットは、又、対応するスキップカウントをアップデートする(例えば、スキップカウントを1だけデクリメントすることにより)。スキップカウントは、幾つのパイプライン論理段をスキップすべきであるかを表わす。PC論理ユニットは、シフトしたデータが次のパイプライン論理ユニットへ送られる場合に、信号線(不図示)を介してアップデートしたスキップカウントを次のパイプライン論理ユニットへ送る。
次いで、次の段のPC論理ユニットがシフトしたデータ及び検索キーの対応する部分(ストライド)を検査して、一致条件が存在するか否かを決定する。検索キーの関連する部分がシフトしたデータの対応する部分と一致する場合にのみサーチ(検索)プロセスが継続して行われる。そうでなければ、サーチ即ち検索は終了する。
検索が継続し且つ残りのスキップカウントがゼロより大きい場合には、現在の段のPC論理ユニット(パイプライン論理ユニットと共に)が(1)現在のメモリバンクに対するメモリ読取動作を抑圧し、(2)残りのスキップカウントをアップデートし、(3)残りの圧縮パターンを表わすデータをシフトし、(4)更なる処理のために検索データを次のパイプライン段へ送る。
パス圧縮最適化の処理は、スキップカウントがゼロに到達する場合に終了する。その時点において、新たなメモリアドレス及び読取動作が現在のメモリバンクにおいて実施される。データ及び残りの検索キーが処理のために次のパイプライン段へ送られ且つ通常の検索処理が再開される。
例えば、図4に示したネットワーク検索エンジン400の以下の動作について検討する。最初に、検索キーが入力インターフェース210へ供給される。入力インターフェース210は、検索キー及び検索コマンドを初期論理ユニット220へ送ることにより検索動作を開始する。初期論理ユニット220はメモリアドレスを発生し且つメモリバンク0(参照番号250で示してある)に関してメモリ読取を実施する。初期論理ユニット220は、(1)検索コマンド、(2)検索キー、(3)メモリバンク0(250)から読取ったメモリデータ(ノードデータ)をパイプライン論理段1(参照番号230で示してある)へ送る。パイプライン論理段1(230)は、メモリバンク0(250)からのトライノードデータをデコードし且つそれを検索キーの第一セグメント(即ち、第一ストライド)と比較することにより一致が存在するか否かを決定する。その検索結果が、一致するプレフィックスが見つかり且つ検索を継続すべきでないことを表わす場合には、検索は終了し且つパイプライン論理段1(230)は「一致」の検索結果情報を信号線(図4には示していない)を介して出力インターフェース280へ送る。検索結果が、一致するプレフィックス又は子トライテーブルが見つからなかったことを表わす場合には、その検索は終了し且つパイプライン論理段1(230)は「一致なし」の検索結果情報を信号線(図4には示していない)を介して出力インターフェース280へ送る。
検索結果が、一致する子トライテーブルが見つかり且つ検索が継続すべきであることを表わす場合には、パイプライン論理段1(230)はメモリアドレスを発生し且つメモリバンク1(参照番号260で示してある)に関してのメモリ読取を実施する。PC論理ユニット410がパス圧縮最適化を検知しない場合には、PC論理ユニット410はパイプライン論理段1(230)をして(1)検索コマンド、(2)検索キー、(3)メモリバンク1(260)から読取ったメモリデータ(ノートデータ)をパイプライン論理段2(参照番号240で示してある)へ送らせる。メモリバンク1(260)からのメモリデータ(ノートデータ)はPC論理ユニット410の制御下においてマルチプレクサ430を介して通過する。次いで、パイプライン論理段2(240)はそのデータを検査し且つ検索プロセスが繰返し行われる。
次に、PC論理ユニット410がパス圧縮最適化を検知する場合について検討する。PC論理ユニット410は、メモリバンク1(260)に対する通常のメモリ読取動作を抑圧する。PC論理ユニット410はマルチプレクサ430を制御して、メモリバンク1(260)からパイプライン論理段2(240)へのメモリデータ(ノードデータ)の転送を抑圧する。その代わりに、PC論理ユニット410は、パイプライン論理段1(230)をして、残りの圧縮パターンを表わすデータをシフトさせる。シフトされたデータはシフトデータ格納ユニット420内に格納される。PC論理ユニット410はマルチプレクサ430を制御して、シフトされたデータをパイプライン論理段2(240)へ送る。
次いで、PC論理ユニット410はスキップカウントをアップデートし(例えば、スキップカウントを1だけデクリメントすることにより)且つパイプライン論理段1(230)をしてアップデートしたスキップカウントをパイプライン論理段2(240)へ送らせる。パイプライン論理段2(240)及びPC論理ユニット440は、次いで、検索プロセスを継続して行う。
PC論理ユニット440が、スキップカウントがゼロに到達したことを決定するものと仮定する。次いで、PC論理ユニット440はパス圧縮最適化の処理を終了する。PC論理ユニット440は、パイプライン論理段2(240)をして、メモリバンク2(265)に対しての新たなメモリアドレス及び読取動作を実施させる。この場合に、メモリアクセスは1つのメモリバンク(即ち、メモリバンク1(260))のみに対して抑圧される。PC論理ユニット440は、パイプライン論理段2(240)をしてデータ及び残りの検索キーを処理のために次のパイプライン段(図4においては不図示)へ送らせる。PC論理ユニット440は、又、マルチプレクサ460を制御して、メモリバンク2(265)から次のパイプライン段(図4には示していない)へのメモリデータ(ノードデータ)の転送を可能とさせる。通常の検索プロセスが再開される。
最後に、検索プロセスがパイプライン論理段N(図4には示していない)及びメモリバンクN(参照番号270で示してある)により表わされる最後のパイプライン段に到達すると、検索プロセスはそこで終了し且つ検索結果が出力インターフェース280へ送られる。
図5Aは本発明の最適化させたパス圧縮を適用する前のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンの例示的な従来のメモリ構造500を例示している。メモリ構造500は、5個のパイプライン段515,520,525,530,535を有している。メモリ構造500は、又、夫々5個のパイプライン段と関連している5個のメモリバンク540,545,550,555,560を有している。
本発明の最適化させたパス圧縮プロセスを実施するまえに、メモリバンク540はメモリ番号545内のメモリ位置を指し示すポインターを包含している。メモリバンク545はメモリバンク550内のメモリ位置を指し示すポインターを包含している。メモリバンク550はメモリバンク555内のメモリ位置を指し示すポインターを包含している。メモリバンク555はメモリバンク506内の位置を指し示すポインターを包含している。
図5Bは本発明の最適化させたパス圧縮を適用した後のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンの例示的なメモリ構造510を例示している。本発明の最適化パス圧縮プロセスを実施した後に、メモリバンク540はメモリバンク560内のメモリ位置を指し示すポインターを包含している。メモリバンク560内のメモリ位置に到達するためにメモリバンク545,550,555を逐次的にアクセスすることは最早必要ではない。メモリバンク540はメモリバンク560へ直接的に到達する。この場合には、スキップカウントは3である。3個のパイプライン段(520,525,530)がスキップされる。
トライテーブルエントリ300におけるポインターデータフィールド310が、通常、次のパイプライン段における次のトライテーブルのベースアドレスを保持する。PC論理ユニットが段Sにおけるパス圧縮最適化を検知し且つ本発明の最適化パス圧縮プロセスを実施するものと仮定する。スキップカウントがnストライドに等しい場合には、最適なパス圧縮プロセスを実施した後に、第一トライテーブルエントリ320内のポインターデータフィールド内の330はパイプライン段(S+n+1)における次のトライテーブルのベースアドレスを保持する。スキップカウントが1ストライドから(n−1)ストライドの範囲にある場合には、第二トライテーブルエントリ340のポインターデータフィールド355は、最適化パス圧縮プロセスを実施した後に次のトライテーブル(1ストライドのスキップカウントに対するパイプライン段(S+2)から(n−1)ストライドのスキップカウントに対するパイプライン段(S+n)へ)のベースアドレスを保持している。
本発明の最適化パス圧縮プロセスを実施した後に、次のトライテーブルを次のパイプライン段内に位置されているメモリバンク内へ配置させることが可能である。然しながら、将来の拡張のために余裕を残すために、パス圧縮最適化をブレークすることが必要となる場合には、最適化パス圧縮プロセスを実施する前に元のトライテーブルが存在したメモリバンク内へ次のトライテーブルを配置させることが望ましい。図6は、メモリバンク540のすぐ後に続くメモリ構成510のメモリバンク545内にどのようにして次のトライテーブルを配置させることが可能であるかを例示している。この次のトライテーブルの配置は、既存のデータテーブルを移動させることなしに将来のテーブル拡張を行うことを可能とする。このことは、又、最適化パス圧縮プロセスが使用されない場合に、新たなトライテーブルを配置させる場所が存在していることを意味している。
将来の拡張及び本発明の動作の明確化のために、以下の例について検討する。例示的なデータ構造は4の等しいストライド長でグループ化されたものとして表わしてある以下の組のプレフィックスを有している。
Figure 2004194343
4ビットストライドをエンコードするビットマップは16個のビット(2の4乗)から構成されている。プレフィックスP0乃至P5を表わすデータ構造を図7に示してある。図7において、ラベルTn(尚、nは数である)はパイプライン段nにおけるテーブルを示している。ラベルEn(尚、nは数である)はテーブル内のエントリを示している。例えば、T0は第一レベルトライテーブル(パイプライン1)を表わしている。T1は第二レベルトライテーブル(パイプライン2)を表わしている。T1E1及びT1E2はテーブルT1のデータエントリ0及びデータエントリ1を表わしている。T1E0はT1テーブルヘッダーを表わしている。
テーブル内の各エントリは多数のフィールドを保持することが可能であるが、説明の便宜上、図7に示したエントリにおいては2つのフィールドのみを示してある。最初のものは次のレベル即ち「子」テーブル内のデータエントリの数及び位置を表わすビットマップフィールドである。2番目のものは、次のレベル即ち「子」テーブルのベースアドレスを保持するポインターである。
図7に示したデータ構造を検査すると、2つのチェーンの非葉単一エントリトライテーブルが見える。テーブルT2aは第一チェーン内の唯一のテーブルである。テーブルT2b,T3b,T4b,T5b,T6bは第二チェーンを形成している。本発明の最適化パス圧縮プロセスを使用すると、T1E1ビットマップフォーマットを修正することによりテーブルT2を除去することが可能である。T1E1ビットマップはビットマップパターン「1101 0010」で置換され且つその意味は「1ストライドでのパス圧縮」を表わすフォーマットの1つのタイプを作成することにより再定義される。検索プロセス期間中、ルックアップ論理は「1101 0010」を保持するパス圧縮エントリとしてそのエントリを解釈し且つそのエントリをそれに従って取扱う。
同様に、本発明の最適化パス圧縮プロセスは、テーブルを除去するために第二チェーンの非葉単一エントリテーブルに対して適用することが可能である。この場合には、4ビットパターンの6個のストライドを表わす5個の連続した非葉単一エントリテーブルが存在している。ビットマップデータフィールド内には16ビットが存在するに過ぎないので、パターンの4個のストライドのみを1つのエントリ内に配置させることが可能であるに過ぎない。最適化パス圧縮は、2つの連続するパス圧縮テーブルを使用することにより達成することが可能である。第一テーブルはパターンの4個のストライド(即ち、0100 0000 1001 0010)を保持し且つ第二テーブルは残りの2つのストライド(1101 0110)を保持する。最適化パス圧縮プロセスのこれらのステップを適用することの結果を図8に示してある。
本発明の最適化パス圧縮プロセスを適用することの利点はこのケースから極めて明らかである。図7に示した元のデータ構造には10個のテーブルが存在している。これら10個のテーブルは21個のエントリを包含している。最適化パス圧縮プロセスを適用した後に、11個のエントリを包含する5個のテーブルが存在するに過ぎない。メモリ空間節約はほぼ48%である。
更に、テーブルをトラバースするのに必要なメモリアクセスの数も著しく減少される。元の構成においては、プレフィックスP0をサーチするために、4個のパイプライン段において4個のメモリアクセスを実施することが必要である。パイプライン段2を除去したテーブルの場合には、新たなデータ構造をトラバースするのに必要なメモリアクセスの数は3個のメモリアクセスへ減少される。
同様に、パイプライン段2,3,4,6におけるメモリアクセスに対する必要性は、プレフィックスP1乃至P5に関するサーチ(検索)に対して除去されている。
図9は本発明のテーブルアップデート方法の好適な実施例の動作を示すフローチャートを例示している。図9に示した方法のステップは集約的に参照番号900として示してある。
第一ステップにおいて、ステージカウンタSが1に等しく設定される(ステップ910)。次いで、テーブルアップデートプロセスがパス圧縮候補に対するステージ即ち段Sをサーチする(ステップ920)。ステージ(段)Sは第一ステージに対してステージ(段)1である。次いで、ステージSにおいてパス圧縮候補が見つかったか否かの決定がなされる(決定ステップ930)。ステージSにおいてパス圧縮候補が見つからなかった場合には、通常のプレフィックスアップデートが実施される(ステップ970)。次いで、ステージカウンタSがインクリメントされる(ステップ940)。
次いで、新たにインクリメントされたステージカウンタSがSMAXによって示されるSの最大値を超えるか否かの決定がなされる(ステップ950)。SMAXは問題のネットワーク検索エンジンにおけるステージの最大数を表わす。ステージカウンタがSMAXより大きくない場合には、制御はステップ920へ移り且つ次のステージSがパス圧縮候補に対してサーチされる。ステージカウンタがSMAXより大きい場合には、テーブルアップデート方法が完了する。
パス圧縮候補がステップ930においてステージSにおいて見つかった場合には、スキップカウントNでのパス圧縮最適化が可能であるか否かの決定がなされる(決定ステップ960)。スキップカウントNでのパス圧縮最適化が可能でない場合には、通常のプレフィックスアップデートが実施され(ステップ970)且つ本方法は前に説明した如くに継続する。
スキップカウントNでのパス圧縮最適化が可能である場合には、本方法は、プレフィックスからのパターンのN+1個のストライドをステージSにおける現在のノード内に配置させる(ステップ980)。次いで、ステージカウンタSはS=S+N+1の値へアップデートされる(ステップ990)。次いで、アップデートしたステージカウンタの値SMAXとの比較のために制御はステップ950へ通過される。次いで、本方法は前に説明したように継続して行われる。
図10は本発明のサーチ(検索)方法の好適実施例の動作を示したフローチャートを例示している。図10に示した方法のステップは集約的に参照番号1000で示してある。
パス圧縮パターン及びスキップカウントは親ビットマップフィールド内に前もってエンコードされている。検索キー及び検索コマンドが本発明のネットワーク検索エンジン400へ供給される(ステップ1010)。パイプライン論理ユニットが現在のパイプライン段において通常のサーチ(検索)処理を実施する(ステップ1020)。そのパイプライン論理ユニットと関連するPC論理ユニットが、現在のパイプライン段においてパス圧縮最適化が存在するか否かを決定する(決定ステップ1030)。パス圧縮最適化が現在のパイプライン段内に見つからない場合には、パイプライン論理ユニットはアドレスを発生し且つ次のバンクに対するメモリ読取を実施する(ステップ1035)。次いで、制御は次のパイプライン段へ移り(ステップ1040)且つ次のパイプライン論理ユニットがそのパイプライン段における通常のサーチ即ち検索プロセスを実施する(ステップ1020)。
パス圧縮最適化が現在のパイプライン段において見つかった場合には、PC論理ユニットは現在のメモリバンクからのメモリデータ読取動作を抑圧し、圧縮パターンデータをシフトし(且つそれをシフトデータ格納ユニット内に格納し)、且つスキップカウントをアップデートする(ステップ1050)。次いで、PC論理ユニットは、次のパイプライン段のパイプライン論理ユニットへ、(1)現在のシフトデータ格納ユニット内に存在するシフトしたデータ、及び(2)アップデートしたスキップカウントを送る(ステップ1060)。次のパイプライン段のPC論理ユニットはサーチ即ち検索プロセスを継続する(ステップ1070)。次のパイプライン段のPC論理ユニットはアップデートしたスキップカウントの値をチェックして、その値がゼロに等しいか否かを決定する(決定ステップ1080)。アップデートしたスキップカウントの値がゼロに等しくない場合には、制御がステップ1050へ移り且つ本プロセスが繰返される。アップデートしたスキップカウントの値がゼロに等しい場合には、制御がステップ1035へ移り且つ本プロセスは継続して行われる。
図10は本発明のサーチ即ち検索方法の好適実施例をどのようにしてネットワーク検索エンジンの通常の検索プロセスと統合させることが可能であるかを例示するためのものである。注意すべきことであるが、説明の便宜上、通常の検索プロセスの前述したステップの全てを図10に示してあるわけではない。
本発明の最適化パス圧縮プロセスは、通常のソフトウエアのみの最適化プロセスをパイプライン型ハードウエアビットマップ型マルチビットトライネットワーク検索エンジン内に組込んでいる。本発明の最適化パス圧縮プロセスは、メモリ空間、メモリ帯域幅、電力消費において顕著な節約を与えている。
共通のプレフィックスビット(パス圧縮パターン)及びパターンの長さ(スキップカウント)を親エントリ内に埋込むことは、単一エントリトライテーブルにより占有されるメモリ空間を節約する。それは、又、メモリ空間と関連するメモリ帯域幅及びパワーを節約する。まばらにデータが存在するルーチングテーブルにおけるように、非葉単一エントリテーブルの発生が頻繁である場合にその利点は特に顕著である。本発明により与えられるメモリ空間における節約は、データセットのまばらな程度に依存して高々30%乃至40%となる場合がある。更に、本発明を実現するためのハードウエアの複雑性において必要とされる変更及びエキストラな面積上のコストは些細なものである。
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
例示的な従来のルーターシステムを示したブロック図。 例示的な従来のパイプライン型ハードウエアビットマップ型マルチトライアルゴリズムネットワーク検索エンジンを示したブロック図。 ビットマップデータフィールドと、ポインターデータフィールドと、コードデータフィールドとを有する従来のトライテーブルエントリのフォーマットを示した概略図。 本発明の原理に基づくn個のスライドのスキップカウントに対して使用される本発明の第一トライテーブルエントリのフォーマットを示した概略図。 本発明の原理に基づく1ストライドから(n−1)ストライドの範囲のスキップカウントに対して使用される本発明の第二トライテーブルエントリのフォーマットを示した概略図。 本発明の原理に基づくパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンを示したブロック図。 本発明に基づく最適化パス圧縮プロセスの適用前のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンの例示的な従来のメモリ構造を示した概略図。 本発明の原理に基づく最適化パス圧縮プロセスの適用の後のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンの例示的なメモリ構造を示した概略図。 本発明の原理に基づくテーブル拡張適用後のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンのメモリ構造を示した概略図。 各々が4のストライド長を有している6個のプレフィックスの例示的な組を表わす例示的なデータ構造を示した概略図。 本発明の原理に基づく最適化パス圧縮プロセスの適用後の図7に示した例示的なデータ構造を示した概略図。 本発明のテーブルアップデート方法の好適実施例の動作を示したフローチャート。 本発明の検索方法の好適実施例の動作を示したフローチャート。
符号の説明
210 入力インターフェース
220 初期論理ユニット
230 パイプライン論理段1
240 パイプライン論理段2
250 メモリバンク0
260 メモリバンク1
270 メモリバンクN
280 出力インターフェース
400 パイプライン型ハードウエアビットマップ型マルチトライアルゴリズムネットワーク検索エンジン
410 PC論理ユニット
420 シフトデータ格納ユニット
430 マルチプレクサ
440 PC論理ユニット
450 シフトデータ格納ユニット
460 マルチプレク

Claims (23)

  1. パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるデータ構造において少なくとも1つの単一エントリトライテーブルのパス圧縮を最適化する装置において、
    前記データ構造は前記少なくとも1つの単一エントリトライテーブルに対する少なくとも1つの親トライテーブルエントリを有しており、
    少なくとも1つのPC論理ユニットが前記ネットワーク検索エンジンの少なくとも1つのパイプライン論理段へ結合しており、前記少なくとも1つのPC論理ユニットは前記少なくとも1つの親トライテーブルエントリにおいてデータパケットの共通プレフィックスビットを表わすパス圧縮パターンをエンコードすることが可能であり、
    前記少なくとも1つのPC論理ユニットは、更に、前記少なくとも1つの親トライテーブルエントリにおいて前記パス圧縮パターンの長さを表わすスキップカウントをエンコードすることが可能であり、
    前記少なくとも1つのPC論理ユニットは、更に、前記パス圧縮パターン及び前記スキップカウントを使用することにより前記データ構造から前記少なくとも1つの単一エントリトライテーブルを除去することが可能である、
    ことを特徴とする装置。
  2. 請求項1において、前記データ構造における前記少なくとも1つの親トライテーブルエントリが、
    n個のストライドのスキップカウントを有するパス圧縮パターンに対してパターンデータフィールドと、ポインタデータフィールドと、コードデータフィールドとを有する第一トライテーブルエントリ、
    を有しており、前記パス圧縮パターンが前記第一トライテーブルエントリの前記パターンデータフィールド内に埋め込まれている、
    ことを特徴とする装置。
  3. 請求項2において、前記データ構造における前記少なくとも1つの親トライテーブルエントリが、
    n個のストライドのスキップカウント、
    を有しており、前記n個のストライドのスキップカウントが前記第一トライテーブルエントリの前記パターンデータフィールド内に埋め込まれている、
    ことを特徴とする装置。
  4. 請求項2において、前記データ構造における前記少なくとも1つの親トライテーブルエントリが、
    1個のストライドから(n−1)個のストライドのスキップカウントを有するパス圧縮パターンに対してのパターンデータフィールドと、カウントデータフィールドと、ポインタデータフィールドと、コードデータフィールドとを有している第二トライテーブルエントリ、
    を有しており、前記パス圧縮パターンが前記第二トライテーブルエントリの前記パターンデータフィールド内に埋め込まれている、
    ことを特徴とする装置。
  5. 請求項4において、前記データ構造における前記少なくとも1つの親トライテーブルエントリが、
    1個のストライドから(n−1)個のストライドのスキップカウント、
    を有しており、前記1個のストライドから(n−1)のストライドのスキップカウントが前記第二トライテーブルエントリの前記カウントデータフィールド内に埋め込まれている、
    ことを特徴とする装置。
  6. パイプラインハードウエア援助型ビットマップ型マルチトライアルゴリズムネットワーク検索エンジンにおけるデータ構造においての少なくとも1つの単一エントリトライテーブルのパス圧縮を最適化する装置において、
    前記データ構造は前記少なくとも1つの単一エントリトライテーブルに対する少なくとも1つの親トライテーブルエントリを有しており、前記少なくとも1つの親トライテーブルエントリはデータパケットの共通プレフィックスビットを表わすパス圧縮パターン及び前記パス圧縮パターンの長さを表わすスキップカウントを有しており、
    前記少なくとも1つのPC論理ユニットが前記パス圧縮最適化を検知することが可能な前記ネットワーク検索エンジンの少なくとも1つのパイプライン論理段へ結合しており、
    少なくとも1つのPC論理ユニットは、前記パス圧縮最適化を検知することに応答して、更に、(1)前記少なくとも1つのPC論理ユニットと関連するメモリバンクに対してのメモリ読取動作を抑制し、且つ(2)前記スキップカウントの値をアップデートし、且つ(3)前記パス圧縮パターンの未処理部分及び前記スキップカウントのアップデートした値を前記パイプラインネットワーク検索エンジンの次の段へ送る、ことが可能である、
    ことを特徴とする装置。
  7. 請求項6において、
    前記ネットワーク検索エンジンの少なくとも1つのパイプライン論理段へ結合している少なくとも1つのPC論理ユニットが前記スキップカウントの値がゼロに等しいことを決定することが可能であり、
    前記少なくとも1つのPC論理ユニットは、前記スキップカウントの値がゼロに等しいことを決定することに応答して、更に、(1)前記スキップカウントがゼロに等しい前記少なくとも1つのPC論理ユニットと関連するメモリバンクからメモリデータを読取り、且つ(2)前記メモリデータを前記パイプラインネットワーク検索エンジンの次の段へ供給する、ことが可能である、
    ことを特徴とする装置。
  8. 請求項7において、本装置が前記パス圧縮処理の結果を表わすトライテーブルを、前記パス圧縮処理を実施する前に元のトライテーブルを配置すべきメモリバンク内へ配置させることが可能であることを特徴とする装置。
  9. 請求項1において、前記パス圧縮処理期間中に、本装置はメモリ空間、メモリ帯域幅、電力消費のうちの1つの利用を最小化させることが可能であることを特徴とする装置。
  10. 請求項6において、前記少なくとも1つのPC論理ユニットは、前記パス圧縮最適化を検知することに応答して、更に、前記少なくとも1つの単一エントリトライテーブルと関連する前記パイプラインネットワーク検索エンジンの前記少なくとも1つの段をスキップすることが可能であることを特徴とする装置。
  11. 請求項6において、前記パイプラインハードウエア援助型ビットマップ型マルチトライアルゴリズムネットワーク検索エンジン内に複数個のPC論理ユニットを有しており、前記複数個のPC論理ユニットが前記ネットワーク検索エンジンの爾後のパイプライン段において一度に1個のストライドづつ前記パス圧縮パターンの前記未処理部分を処理することが可能であることを特徴とする装置。
  12. パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるデータ構造において少なくとも1つの単一エントリトライテーブルのパス圧縮を最適化させる方法において、
    前記データ構造は前記少なくとも1つの単一エントリトライテーブルに対する少なくとも1つの親トライテーブルエントリを有しており、
    前記少なくとも1つの親トライテーブルエントリ内にデータパケットの共通プレフィックスビットを表わすパス圧縮パターンを埋込み、
    前記少なくとも1つの親トライテーブルエントリ内に前記パス圧縮パターンの長さを表わすスキップカウントを埋込み、
    前記パス圧縮パターン及び前記スキップカウントを使用して前記データ構造から前記少なくとも1つの単一エントリトライテーブルを除去する、
    上記各ステップを有していることを特徴とする方法。
  13. 請求項12において、前記少なくとも1つの親トライテーブルエントリ内にデータパケットの共通プレフィックスビットを表わすパス圧縮パターンを埋込む場合に、
    前記少なくとも1つの親トライテーブルエントリ内にn個のストライドのスキップカウントを有するパス圧縮パターンに対してのパターンデータフィールドと、ポインタデータフィールドと、コードデータフィールドとを有する第一トライテーブルエントリを与え、
    前記パス圧縮パターンを前記第一トライテーブルエントリのパターンデータフィールド内に埋込む、
    ことを特徴とする方法。
  14. 請求項13において、更に、
    前記少なくとも1つの親トライテーブルエントリ内にn個のストライドのスキップカウントを与え、
    前記n個のストライドのスキップカウントを前記第一トライテーブルエントリの前記パターンデータフィールド内に埋込む、
    ことを特徴とする方法。
  15. 請求項13において、更に、
    前記少なくとも1つの親トライテーブルエントリ内に1個のストライドから(n−1)個のストライドのスキップカウントを有するパス圧縮パターンに対してのパターンデータフィールドと、カウントデータフィールドと、ポインタデータフィールドと、コードデータフィールドとを有する第二トライテーブルエントリを与え、
    前記1個のストライドから(n−1)個のストライドのスキップカウントを有する前記パス圧縮パターンを前記第二トライテーブルエントリの前記パターンデータフィールド内に埋込む、
    ことを特徴とする方法。
  16. 請求項15において、更に、
    前記少なくとも1つの親トライテーブルエントリ内に1個のストライドから(n−1)個のストライドのスキップカウントを与え、
    前記1個のストライドから(n−1)個のストライドの前記スキップカウントを前記第二トライテーブルエントリの前記カウントデータフィールド内に埋込む、
    ことを特徴とする方法。
  17. 請求項12において、前記パス圧縮パターンと前記スキップカウントとを使用して前記データ構造から前記少なくとも1つの単一エントリトライテーブルを除去する場合に、
    前記パイプラインネットワーク検索エンジンの複数個の段におけるパス圧縮最適化を検索し、
    前記パイプラインネットワーク検索エンジンの1つの段における前記パス圧縮最適化を検知し、
    前記パイプラインネットワーク検索エンジンの前記1つの段に関連するメモリバンクに対してのメモリ読取動作を抑制し、
    前記スキップカウントの値をアップデートし、
    前記パス圧縮パターンの未処理部分及び前記スキップカウントのアップデートした値を前記パイプラインネットワーク検索エンジンの次の段へ送る、
    上記各ステップを有していることを特徴とする方法。
  18. 請求項17において、更に、
    前記パイプラインネットワーク検索エンジンの1つの段において前記スキップカウントの値がゼロに等しいものを決定し、
    前記スキップカウントがゼロに等しい前記パイプラインネットワーク検索エンジンの前記段に関連するメモリバンクからメモリデータを読取り、
    前記メモリデータを前記パイプラインネットワーク検索エンジンの次の段へ与える、
    上記各ステップを有していることを特徴とする方法。
  19. 請求項18において、更に、
    前記パス圧縮処理の結果を表わすトライテーブルを、前記パス圧縮処理が実施される前に元のトライテーブルが配置されるべきメモリバンク内へ配置させる、
    上記ステップを有していることを特徴とする方法。
  20. 請求項17において、更に、
    前記パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジン内に複数個のPC論理ユニットを与え、
    前記ネットワーク検索エンジンの爾後のパイプライン段において一度に1個のストライドづつ前記パス圧縮パターンの前記未処理部分を処理する、
    上記各ステップを有していることを特徴とする方法。
  21. 請求項17において、更に、
    前記パイプラインネットワーク検索エンジンの1つの段においてパス圧縮候補を検知し、
    前記パス圧縮候補に対してNのスキップカウントでのパス圧縮最適化が可能であることを決定し、
    プレフィックスからのパターンのN+1個のストライドを前記パイプラインネットワーク検索エンジンの現在の段における現在のノード内に配置させることにより前記パイプラインネットワーク検索エンジンにおけるプレフィックステーブルをアップデートする、
    上記各ステップを有していることを特徴とする方法。
  22. パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおいてメモリ空間及びメモリ帯域幅の使用を最小とさせる方法において、
    前記ネットワーク検索エンジンにおけるデータ構造においての少なくとも1つの単一エントリトライテーブルのパス圧縮を最適化し、前記データ構造は前記少なくとも1つの単一エントリトライテーブルに対して少なくとも1つの親トライテーブルエントリを有しており、
    前記少なくとも1つの親トライテーブルエントリ内にデータパケットの共通プレフィックスビットを表わすパス圧縮パターンを埋込み、
    前記少なくとも1つの親トライテーブルエントリ内に前記パス圧縮パターンの長さを表わすスキップカウントを埋込み、
    前記パス圧縮パターン及び前記スキップカウントを使用して前記データ構造から前記少なくとも1つの単一エントリトライテーブルを除去する、
    上記各ステップを有していることを特徴とする方法。
  23. 請求項22において、前記パス圧縮パターン及び前記スキップカウントを使用して前記データ構造から前記単一エントリトライテーブルを除去する場合に、
    前記パイプラインネットワーク検索エンジンの複数個の段においてパス圧縮最適化を検索し、
    前記パイプラインネットワーク検索エンジンの少なくとも1つの段において前記パス圧縮最適化を検知し、
    前記少なくとも1つの単一エントリトライテーブルと関連する前記パイプラインネットワーク検索エンジンの前記少なくとも1つの段をスキップする、
    ことを特徴とする方法。
JP2003415101A 2002-12-12 2003-12-12 パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法 Pending JP2004194343A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/317,338 US7715392B2 (en) 2002-12-12 2002-12-12 System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine

Publications (1)

Publication Number Publication Date
JP2004194343A true JP2004194343A (ja) 2004-07-08

Family

ID=32325933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003415101A Pending JP2004194343A (ja) 2002-12-12 2003-12-12 パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法

Country Status (4)

Country Link
US (1) US7715392B2 (ja)
EP (1) EP1429501B1 (ja)
JP (1) JP2004194343A (ja)
DE (1) DE60311631D1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7782853B2 (en) * 2002-12-06 2010-08-24 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US7702882B2 (en) * 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US7564841B2 (en) * 2004-03-05 2009-07-21 Samsung Electronics Co., Ltd. Apparatus and method for performing forwarding table searches using consecutive symbols tables
US20060059134A1 (en) * 2004-09-10 2006-03-16 Eran Palmon Creating attachments and ranking users and attachments for conducting a search directed by a hierarchy-free set of topics
US7606231B2 (en) * 2005-02-18 2009-10-20 Broadcom Corporation Pipeline architecture for a network device
US20060248375A1 (en) 2005-04-18 2006-11-02 Bertan Tezcan Packet processing switch and methods of operation thereof
US7817652B1 (en) * 2006-05-12 2010-10-19 Integrated Device Technology, Inc. System and method of constructing data packets in a packet switch
US7747904B1 (en) 2006-05-12 2010-06-29 Integrated Device Technology, Inc. Error management system and method for a packet switch
US7706387B1 (en) 2006-05-31 2010-04-27 Integrated Device Technology, Inc. System and method for round robin arbitration
US8780926B2 (en) * 2009-12-01 2014-07-15 Polytechnic Institute Of New York University Updating prefix-compressed tries for IP route lookup
US8599853B2 (en) * 2010-04-16 2013-12-03 Wipro Limited System and method for an exact match search using pointer based pipelined multibit trie traversal technique
US20110320775A1 (en) * 2010-06-27 2011-12-29 Edson Borin Accelerating execution of compressed code
US8472350B2 (en) * 2010-12-31 2013-06-25 Telefonaktiebolaget L M Ericsson (Publ) Bank aware multi-bit trie
JP5765244B2 (ja) * 2012-01-11 2015-08-19 富士通株式会社 テーブル処理装置、テーブル処理方法、及びプログラム
US9747513B2 (en) 2015-09-17 2017-08-29 International Business Machines Corporation Path compression of a network graph
CN113542137B (zh) * 2020-04-16 2022-03-01 烽火通信科技股份有限公司 一种分布式系统转发平面路由处理方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU620994B2 (en) * 1989-07-12 1992-02-27 Digital Equipment Corporation Compressed prefix matching database searching
US6011795A (en) * 1997-03-20 2000-01-04 Washington University Method and apparatus for fast hierarchical address lookup using controlled expansion of prefixes
US6581106B1 (en) * 2000-01-13 2003-06-17 Pierluigi Crescenzi Fast address lookup in routing tables
FI20000396A (fi) 2000-02-21 2001-08-22 Tellabs Oy Mentelmä ja järjestelmä hakutaulukoiden muodostamiseksi, ylläpitämiseksi ja käyttämiseksi pakettien reitityksessä
US20020159466A1 (en) * 2001-02-14 2002-10-31 John Rhoades Lookup engine
US7007101B1 (en) * 2001-11-09 2006-02-28 Radisys Microware Communications Software Division, Inc. Routing and forwarding table management for network processor architectures
US6928430B1 (en) * 2002-04-23 2005-08-09 Integrated Silicon Solution, Inc. Prefix match search scheme

Also Published As

Publication number Publication date
EP1429501B1 (en) 2007-02-07
US7715392B2 (en) 2010-05-11
EP1429501A1 (en) 2004-06-16
US20040114587A1 (en) 2004-06-17
DE60311631D1 (de) 2007-03-22

Similar Documents

Publication Publication Date Title
Ruiz-Sánchez et al. Survey and taxonomy of IP address lookup algorithms
US6353873B1 (en) Apparatus and method to determine a longest prefix match in a content addressable memory
US7782853B2 (en) Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US7433871B2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
US7403494B2 (en) Method for generating nodes in multiway search tree and search method using the same
US6560610B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
US9672234B2 (en) Database and database processing methods
JP2004194343A (ja) パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法
EP0593968B1 (en) Cache-based data compression/decompression
USRE43552E1 (en) Block programmable priority encoder in a cam
US6618760B1 (en) Forwarding information retrieval technique
JP4995125B2 (ja) 固定長データの検索方法
EP1551141A1 (en) Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware
EP1335538B1 (en) Method and system for address lookup in data communication
JP2002207771A (ja) 最長プレフィクス一致のための高速でフレキシブルなサーチ・エンジン
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
JP2009512950A (ja) パトリシア・トライを効率的にバルク・ロードするアーキテクチャ及び方法
US7154892B2 (en) Method and apparatus for managing LPM-based CAM look-up table, and recording medium therefor
EP0647034B1 (en) A variable word length code decoding method, and a decoder for performing the same
CN112187639B (zh) 一种基于流属性的数据包路径编码的生成方法及系统
KR100460188B1 (ko) 인터넷 프로토콜 주소 룩-업 방법
KR100459542B1 (ko) 인터넷 프로토콜 주소 룩-업 장치
US10608934B2 (en) Bloom filter and implementation method thereof
JPWO2002101935A1 (ja) 復号化装置、復号化方法、ルックアップテーブルおよび復号化プログラム
US20020053002A1 (en) System for associative processing