JP4726310B2 - 情報検索装置、情報検索用マルチプロセッサおよびルータ - Google Patents
情報検索装置、情報検索用マルチプロセッサおよびルータ Download PDFInfo
- Publication number
- JP4726310B2 JP4726310B2 JP2001056289A JP2001056289A JP4726310B2 JP 4726310 B2 JP4726310 B2 JP 4726310B2 JP 2001056289 A JP2001056289 A JP 2001056289A JP 2001056289 A JP2001056289 A JP 2001056289A JP 4726310 B2 JP4726310 B2 JP 4726310B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- prefix
- memory
- node
- processing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【産業上の技術分野】
本発明は、情報検索装置に関し、より詳細には、レベル圧縮トライ木を利用した最長一致探索を行う情報検索装置に関する。
【0002】
【従来の技術】
探索空間において、入力後の部分語に一致するエントリの中で最長のエントリを探索する、最長一致検索処理が知られている。最長一致検索を実現するための種々の手法が提案されている。
上記最長一致検索は、ネットワーク上のIPアドレスを検索するためのIPルーティングの際に利用される。特に、情報ネットワーク内のデータ通信量は著しく増加しており、ネットワークの高速大容量化などが急務となっている現状において、数Tbpsを超えるDWDMなどの伝送技術が開発される一方で、ルータの高速化の問題がボトルネックとなりつつある。
【0003】
上記最長一致検索の高速化等に関して、たとえば、(1)“Scalable High Speed IP Routing Lookups”(M. Waldvogel他、「Proc. ACM SIGCOMM’97」第25頁〜第36頁 1997年9月発行)や、(2)“IP-address lookup using LC-Tries”(S. Nilsson, G. Larlsson、「IEEE J. on Selected Areas in Comm.」第17巻第6号第1083頁〜第1092頁 1999年7月発行)には、ソフトウェアアルゴリズムが提案されている。また、(3)“Routing Lookups in Hardware at Memory Access Speeds”(Pankaj Gupta, Steven Lin, Nick McKeown、「Proc. IEEE INFOCOM’98」第1240頁〜第1247頁 1998年)には、専用ハードウェアによる検索機構が提案されている。
【0004】
たとえば、(2)においては、レベル圧縮トライ木(Level Compressed Trie Tree)を利用したIPルーティングのアルゴリズムが記載されている。まず、レベル圧縮トライ木につき簡単に説明を加える。
図1はトライ木構造を示す図である。ここでビット列が記載されている節(ノード:図1においては黒丸にて示す)は、有効なデータが存在することを示している。たとえば、符号101においては、有効なデータ「001」は単一の有効な子「00101」のみを有している。或いは、符号102においては、有効なデータ「111」の子は、「11101000」および「11101001」である。このように、単一の子を有する連続する節を単一の節に圧縮したものが、図2に示すパス圧縮トライ木構造である。ここでは、圧縮された節にはパス数sが示される(符号201参照)。さらに、各節が2k個の子を持つように深さ方向に圧縮した多分木構造が、図3に示すレベル圧縮トライ木構造である。この木構造において、たとえば、第2層のレベル(符号301参照)では8(=23)の子が存在している。また、節「000」、節「011」の子はそれぞれ2つである(符号302、303参照)。レベル圧縮トライ木構造は、ルーティングテーブル中のエントリをトライ木構造に写像して深さ方向に圧縮し、平均メモリアクセス回数を極小にすることになる。
【0005】
(2)の文献においては、上記レベル圧縮トライ木構造を利用して、IPv4パケットの宛先アドレス検索処理を実行している。ここでは、宛先テーブルを対象にして入力パケットの宛先アドレスに一致する最長のエントリを検索している。レベル圧縮トライ木構造を用いてIPv4(IPバージョン4)用ルーティングテーブルを表現すると木の深さはO(loglogN)となる。ここに、Nはテーブルの要素数である。
【0006】
図4は、上記文献にしたがったレベル圧縮トライ木構造を利用したIPアドレス検索処理を示すフローチャートである。図4に示すように、宛先IPアドレスが投入されると、レベル圧縮トライ木構造における「i」番目のレベルLiにおける検索が実行される(ステップ401)。初期的にこれはL1に対して実行される。ここで、部分木が存在すれば(ステップ402で(有り))、さらに次のレベルにおける検索が実行される。
【0007】
なお、IPv4においては、テーブルの要素数N=106程度であり、loglogN≒4.32であることから、レベルは5に設定される。したがって、部分木が存在しつづければ「5」番目のレベルL5までステップ401、402が繰り返され得る。節が葉である場合には、部分木が存在しないと判定される(ステップ402で「無し」)。この場合には、当該節のレベルに関する、プレフィックス検査が実行される(ステップ403)。プレフィックスが宛先IPアドレスと一致しない場合には(ステップ404で「不一致」)、一つ上位のレベル、つまりレベルLiの「i」をデクリメントして、当該上位のレベルに関するプレフィックス検査が実行される。
その一方、プレフィックスが宛先IPアドレスと一致する場合には(ステップ404で「一致」)、ネクストホップが参照され(ステップ405)、これが出力される。
【0008】
【課題を解決するための手段】
しかしながら、(1)および(2)に記載されたものは、逐次処理ソフトウェアによる実現を前提としているため検索性能が低い。これは、従来型のマイクロプロセッサでは、ソフトウェア内の命令が逐次的に処理されることに起因して、単位時間あたりに実行可能な検索処理回数がメモリアクセス回数に反比例するためである。
【0009】
また、(3)に記載されたものは、専用ハードウェアを用いるものであるため、検索性能は高い。しかしながら、経験則により宛先IPアドレスのうち所定の16ビット或いは24ビットを先に検索して、残りのビットをさらに検索するという手法をとっている。したがって、異なる分布を有する探索空間の検索に応用する場合には、ポインタを多量に使用するため膨大なメモリを必要とする。さらに、膨大なメモリの使用はメモリアクセスレートの低下を招き結果的に検索性能が低下する。
【0010】
本発明は、IPv4をはじめ、多様な探索空間に対して高速な検索を実現できる情報検索装置を提供することを目的とする。
【0011】
【課題を解決するための手段】
本発明の目的は、レベル圧縮トライ木構造を利用した最長一致検索を実行するための情報検索装置であって、前記レベル圧縮トライ木構造中の葉を検索する第1の命令を実行するための第1の処理ユニットと、プレフィックスおよび連想値からなる探索空間における入力語とプレフィックスとを比較して連想値を出力する第2の命令を実行するための第2の処理ユニットとを備え、第1の処理ユニットが、前記レベル圧縮トライ木構造中の各レベルの検索処理をパイプライン上に展開可能な構造を保持し、あるレベルの節点を特定する情報および入力語を入力して、前記レベル圧縮トライ木構造の各レベルの節点に関する節情報を記憶したメモリをアクセスするためのアドレスを算出するとともに、当該メモリをアクセスして、前記節情報を取得するメモリアクセス手段と、前記節情報から部分木の有無を判断して、部分木が存在する場合には次のレベルの節点を特定する情報および入力語を出力する一方、前記部分木が存在しない場合には、対応するプレフィックスを特定するためのポインタ値および入力語を出力する第1の制御手段とを有し、前記第2の処理ユニットが、各レベルのプレフィックスの検査をパイプライン上に展開可能な構造を保持し、前記ポインタ値に基づき、プレフィックスを記憶した第1のメモリにアクセスして、プレフィックスを取得するプレフィックス取得手段と、前記プレフィックス取得手段と並列的に動作し、前記ポインタ値に基づき、連想値を特定するためのポインタおよび次のレベルのプレフィックスを特定するためのポインタ値のいずれかを記憶した第2のメモリにアクセスして、前記連想値或いはポインタ値を取得する検査情報取得手段と、前記取得されたプレフィックスと入力語とを比較する比較手段と、前記比較手段による比較結果に基づき、プレフィックスと入力語が一致した場合には、予め取得されたポインタに基づき連想値メモリをアクセスして連想値を取得する連想値取得手段と、前記連想値が取得された場合には連想値を出力し、プレフィックスと入力語とが一致しない場合には、次のレベルのプレフィックスを特定するためのポインタ値を出力する第2の制御手段とを有し、前記第1の処理ユニットおよび第2の処理ユニットのそれぞれにて、前記パイプラインにより、メモリアクセスレートと等価なレートで、前記第1の命令および第2の命令が実行されることを特徴とする情報検索装置により達成される。
【0012】
本発明によれば、メモリアクセスレートと等価なレートにて、第1の命令および第2の命令をそれぞれ実行するため、メモリアクセスレートにて、検索、たとえば、IP検索を実現することが可能となる。
【0013】
また、第1の命令の実行においてあるレベルにおける節が葉であれば、当該レベルに関するプレフィックス検査を実行することができる。したがって、繰り返し回数が確定していない場合でも適切な検索を実現することができる。
【0014】
好ましい実施態様においては、第1の処理ユニットが、前記レベル圧縮トライ木構造中の各レベルの検索処理をパイプライン上に展開したデータ駆動プログラム構造を保持した第1のデータ駆動型処理ユニットから構成され、かつ、第2の処理ユニットが、各レベルのプレフィックスの検査をパイプライン上に展開したデータ駆動プログラム構造を保持した第2のデータ駆動型処理ユニットから構成されている。
【0015】
この実施態様においては、第1のデータ駆動型処理ユニットにおいて、パイプライン処理にてレベル圧縮トライ木構造の検索が実行され、第2のデータ駆動型処理ユニットにおいて、パイプライン処理にてプレフィックスと入力語との比較が実行される。したがって、極めて高速な検索が可能となる。また、第2のデータ駆動型処理ユニットにおいては、ポインタの先読みを実行することで、1回のメモリアクセスにて、プレフィックスの取得およびポインタの取得を実現している。
【0016】
好ましい実施態様において、前記第1のデータ駆動型処理ユニットが、パイプラインにおける処理を識別するためのカラー、第1の複合命令、行き先およびデータからなるパケットを受理して、処理に必要なデータが揃うことにより発火する発火制御手段を備え、前記発火制御手段からの指示にしたがって、前記メモリアクセス手段が作動し、前記第1の制御手段が、部分木が存在する場合には、前記第1の複合命令、および、第1のデータ駆動型処理ユニットを行き先とするパケットを出力し、部分木が存在しない場合には、第2のデータ駆動型処理ユニットのための第2の複合命令、および、第2のデータ駆動型処理ユニットを行き先とするパケットを出力する。この命令を適宜変更することで、種々の探索空間の検索を実現することが可能となる。
【0017】
より好ましい実施態様においては、前記メモリアクセス手段が、特定の単一または複数のレベルに属する節点に関する節情報を記憶した第1の節情報メモリをアクセスする第1の処理部と、他の節点に関する節情報を記憶した第2の節情報メモリをアクセスする第2の処理部とを有し、前記発火制御部からの指示にしたがって、何れかの処理部が作動する。
たとえば、前記第1の節情報メモリが前記情報検索装置に内部バスにて連結された内部メモリであり、第2の節情報メモリが、外部メモリであるのが望ましい。
【0018】
また、別の好ましい実施態様において、前記第2のデータ駆動型処理ユニットは、パイプラインにおける処理を識別するためのカラー、第2の複合命令、行き先およびデータからなるパケットを受理して、処理に必要なデータが揃うことにより発火する第2の発火制御手段を備え、発火制御手段からの指示にしたがって、前記プレフィックス取得手段および検査情報取得手段が作動し、第2の制御手段が、プレフィックスと入力語とが一致しない場合に、第2の複合命令および第2のデータ駆動型処理ユニットを行き先とするパケットを出力する。
【0019】
より好ましい実施態様においては、プレフィックス取得手段が、外部メモリである第1のメモリにアクセスし、前記検査情報取得手段が、別の外部メモリである第2のメモリにアクセスし、前記連想値取得手段が、内部メモリである連想値メモリにアクセスするように構成されている。
【0020】
また、本発明の目的は、上記構成の、少なくとも一以上の第1の処理ユニットと、少なくとも一以上の第2の処理ユニットと、少なくとも一以上の外部メモリとを備えた情報検索用マルチプロセッサにより達成される。
第1の処理ユニットは2つ設けられているのが望ましい。ここでは、第1の処理ユニットの一方が、第1の外部メモリに接続され、第1の処理ユニットの他方が、第2の外部メモリに接続され、かつ、第2の処理ユニットが、第1および第2の外部メモリの双方に接続されているのが望ましい。
【0021】
さらに、本発明の目的は、上記構成の情報検索装置やマルチプロセッサを備え、入力語として宛先IPアドレスを受理し、連想語としてネクストホップを出力することを特徴とするルータによっても達成される。
【0022】
【発明の実施の形態】
以下、添付図面を参照して本発明の実施の形態につき説明を加える。図5は、本実施の形態にかかる情報検索装置の処理機構を示すダイヤグラムである。図5に示すように、本実施の形態において、情報検索装置は、宛先IPアドレスを受け入れて、レベル圧縮トライ木構造を探索して、部分検索空間へのポインタ(符号510参照)を出力する探索部501と、ポインタに指示されたプレフィックスと宛先IPアドレスとを受け入れてプレフィックス検査を実行してネクストホップへのポインタ(符号520参照)を出力するプレフィックス検査部511と、ネクストホップへのポインタを受け入れて、ポインタにより示されたネクストホップを出力するネクストホップ参照部521とを備えている。
【0023】
探索部501にて実行される処理自体は、図4のステップ401、402に略対応し、プレフィックス検査部511にて実行される処理自体は、図4のステップ403、404に略応する。しかしながら、本実施の形態においては、検索部501は、パイプライン並列処理が可能となるように、5つのレベルL1〜L5の検索処理をパイプライン上に展開したデータ駆動プログラム構造を備え、各レベルに関して、第1の命令(たとえば、符号501−1)が実行できるようになっている。また、プレフィックス検査部511は、5つのレベルLi〜L(i−4)のプレフィックス検査をパイプライン並列処理が可能となるように、これらの検索処理をパイプライン上に展開した第2のデータ駆動プログラム構造を備え、各レベルに関して第2の命令(たとえば、符号511−1)が実行できるようになっている。
【0024】
図6は、本実施の形態にかかる第1の命令を示す図である。図6(a)に示すように、第1の命令においては、宛先IPアドレスおよびレベル「i」のトライ節点を特定するための情報を入力として(符号601、602参照)、トライ木の検索(符号610)が実行されて、入力されたものと同じ宛先IPアドレスと、次のレベル「i+1」のトライ節点を特定するための情報などが出力されるようになっている(符号611、612参照)。なお、後述するように、処理対象となった節に部分木が存在するか、或いは、部分木が存在せず節が葉であったかにより出力される情報が異なる。
【0025】
より詳細には、宛先IPアドレス621は32ビットのデータである。その一方、レベル「i」のトライ節点を示す情報(符号622)は、図6(b)に示すように、レベル「i」における先頭の節へのポインタl、子の節数k、および、探索済プレフィックス長pからなるデータの組(k、p、l)から構成されている。これに基づきアドレスが計算されて、処理対象となる節点のデータを取得することが可能となる(ステップ623)。
【0026】
取得されたアドレスにしたがって、メモリがアクセスされて(符号624参照)、当該節点に関するデータが取得される(ステップ624)。メモリアクセスにより取得されるデータは、当該節点に子が存在する場合、つまり、節が葉ではなく部分木がある場合には(ステップ625−2)、次のレベルL(i+1)のトライ節点の情報となる(符号642参照)である。
その一方、節点に子が存在しない場合、つまり、節が葉であり部分木が存在しない場合には(ステップ625−1)、後述する部分検索空間へのポインタとなる。
【0027】
上記処理につきより具体的に説明を加える。最長一致検索において、探索空間は(プレフィックス、連想値(ネクストホップ))からなるエントリの集合であり、入力語のプレフィックス(接頭語)に一致する最長のエントリが結果として出力される。本実施の形態においては、32ビットの宛先IPアドレスが入力語であり、この宛先IPアドレスの先頭から任意のビット数だけを取り出したものがプレフィックスとなる。したがって、エントリ中で宛先IPアドレス中の、原理的には32種類のプレフィックスに一致したものの中から、最長のプレフィックス長のエントリを選択し、対応するネクストホップが出力される。
【0028】
図3に示すレベル圧縮トライ木構造は、子の節数k、圧縮パス長sおよび先頭の節へのポインタlを用いて、図12の表1200により表すことができる。アドレスは、一組の節情報(k,s,l)が格納されているメモリアドレスを示す。また、ポインタ値lに関して、アスタリスク(*)を付したもの(たとえば符号1201参照)は、後述するプレフィックス情報の先頭要素を指し示している。表1200において、k=0であるエントリのポインタ値lは、プレフィックス情報を示すことが理解できる。
【0029】
たとえば、入力された32ビットの宛先IPアドレスが、「11100101・・・(以下24ビットは省略する。)」であったと考える。ここでは、この宛先IPアドレスを「A」と称する。
最初の第1の命令の入力は、宛先IPアドレス「A」およびアドレス「0」のレベルL0のエントリ(3,0,1)から事前に計算されていた値(k,p,l)=(3,1,1)となる。
【0030】
ステップ623に示すアドレスの算出においては、l=1に対して、Aの先頭pビット目からkビット分、すなわち、データ列「111(BIN)」=7を加算する。これにより、アドレスは「1+7=8」となり、ステップ624において、アドレス8のエントリにアクセスされる。したがって、レベルL1の節情報として図12のアドレス8に対する節情報(k,s,l)=(1,4,17)が取得される(符号1202参照)。
【0031】
ここでは、「k≠0」であり、部分木が存在するため、次のレベルL2の節点を示す情報(k,p,l)として、(1,1+3+4,17)が出力される。ここに、探索済プレフィックス長である「p=1+3+4」は、「p1+k1+s2」(pi,ki,siにおける添え字iは探索対象となっている節が属するレベルを示す。)にて表す。
【0032】
次いで、レベルL2に関する処理が実行される。ここでは、第1の命令における入力は、宛先IPアドレス「A」および節点を示す情報(k,p,l)=(1,8,17)である。ステップ623に示すアドレスの算出においては、l=17に対して、Aの先頭pビット目からkビット分、すなわち、「1(BIN)」を加算することにより、アドレスは「17+1=18」となり、ステップ624において、アドレス18のエントリにアクセスされる。したがって、取得される節情報(k,s,l)=(0,0,14)となる(符号1203参照)。
ここでは、「k=0」であり、節は葉である。したがって、「14」はプレフィックス情報へのポインタ値として出力される。プレフィックス情報へのポインタ値についても後に詳述する。
【0033】
図7は、本実施の形態にかかる第2の命令を示す図である。図7(a)に示すように、第2の命令においては、32ビットの宛先アドレス、および、プレフィックス情報(部分検索空間)へのポインタを入力として(符号701、702参照)、プレフィックス検査(符号710)が実行されて、宛先IPアドレス(符号711参照)、および、ネクストホップまたはレベル「i−1」のプレフィックス情報(部分検索空間)へのポインタ(符号712参照)が出力されるようになっている。後述するように、ネクストホップは、宛先IPアドレスとプレフィックスとが一致した場合に出力され、これらが一致しない場合には、レベル「i−1」のプレフィックス情報へのポインタが出力されるようになっている。
【0034】
プレフィックス情報リストは、各々が(プレフィックス,プレフィックス長,ネクストホップへのポインタ,次の要素へのポインタ)という4つの要素を有する線形リストである。たとえば、葉「11101001」に関して、プレフィックス情報として、
(11101001,8,0,0)→(111,3,1,null)となっている。
【0035】
図7(b)に示すように、部分検索空間へのポインタ722により、メモリがアクセスされて、プレフィックスが取得される(ステップ723)とともに、プレフィックス長およびポインタ情報、つまり、リスト構造における次の要素へのポインタおよびネクストホップへのポインタが出力される(ステップ724)。
宛先IPアドレスとプレフィックスとが比較され、これらが一致するか否かが判断される(ステップ725)。両者が一致する場合には(ステップ726−1)、ネクストホップへのポインタを利用してネクストホップテーブル727がアクセスされ、宛先IPアドレスとともにネクストホップが出力される(符号731、732参照)。
【0036】
その一方、宛先IPアドレスとプレフィックスとが一致しない場合には(ステップ726−2参照)、宛先IPアドレスおよびリスト構造における次の要素へのポインタが出力される(符号733、734参照)。
上記宛先IPアドレス「A」に関して、レベルL2の第2の命令では、ポインタ値「14」にて示されるプレフィックス情報リストが読み出されて、その先頭要素(つまり、プレフィックス)と、宛先IPアドレス「A」の先頭8ビット分である「11100101」とが比較される。これらは一致しないため、リスト中の4番目の要素、つまり、次の要素のポインタ値「0」が出力される。
【0037】
次いで、レベルL1の第2の命令では、上記ポインタ値にて示されるリストの先頭要素「111」と、宛先IPアドレス「A」の先頭3ビット分である「111」とが比較される。ここでは両者が一致するため、ネクストホップへのポインタが出力され、これに基づいてネクストホップテーブルが参照される。このような処理によりネクストホップを出力することが可能となる。
【0038】
本実施の形態においては、このような第1の命令および第2の命令により、図8に示すように、そのデータフローを模式的に示すことができる。図8に示すように、レベルL1に関する第1の命令の実行を表す処理ノード801が実行され、節点に子が存在する場合には(符号806)、レベルL2に関する第1の命令の実行を表す処理ノード802が実行される。以下、節点に子が存在しなくなるまで、第1の命令の実行を表す処理ノード803、804、805が、順次実行されることになる。あるレベルにおいて節点に子が存在しなくなると(符号807参照)、第2の命令の実行を表す処理ノード811が実行される。ここでは、第1の命令のレベルに対応するレベルLiに関して第2の命令が実行される。
【0039】
第2の命令の実行を表す処理ノード811において、IPアドレスとプレフィックスとが一致しない場合には、これらが一致するまで、第2の命令の実行を表す処理ノード812、813、814、815が順次実行されることになる。あるレベルにおいて、これらが一致すると、ネクストホップが出力される。
【0040】
図6に示す第1の命令は、図9に示すような第1のデータ駆動型処理ユニットにより実現することができる。本実施の形態において、第1のデータ駆動型処理ユニット900は、必要なデータの入力があるまでデータを保持しておき、データが揃ったときに発火させる発火制御部(または待ち合わせ記憶部、以下、「MM」と称する。)901と、内部メモリ904にアクセスするとともに必要な演算を実行する第1のメモリアクセス/演算部(以下、「MAU」と称する。)902と、後述する外部RAMなどの外部メモリにアクセスするとともに必要な演算を実行する第2のMAU903と、内部メモリ904と、第1の命令を記憶したプログラム記憶部(以下、「PS」と称する。)905とを有している。
【0041】
入力として、図6を参照して説明したように、入力「IN」として、宛先IPアドレスおよび節点を特定するための情報(節情報)などが与えられる。たとえば、入力されるパケットは、
(カラー,行き先,命令,データ)
という形式となっている。第1の実施の形態では、上記第1のデータ駆動型ユニット900に与えられる命令は、第1の命令であり、与えられるデータは、宛先IPアドレスや節点を示す情報(k,p,l)である。また、カラーとはパイプラインにおける処理の識別子である。
【0042】
MM901は、これら双方のデータが揃うと発火して、これらを第1のMAU902或いは第2のMAU903に出力する。本実施の形態においては、内部メモリ904に、レベルL1の節情報を記憶し、外部メモリに、レベルL2〜L5の節情報を記憶している。したがって、MM901は、処理対象の節のレベルにしたがって、第1のMAU902或いは第2のMAU903のいずれかにデータを与えている。
【0043】
上述したように、内部メモリ904および第2のMAU903がアクセスする外部メモリには、それぞれ、予め定められたレベルの節情報(k,s,l)(図12参照)が記憶されている。したがって、MM901からデータを与えられた何れかのMAU(902或いは903)は、ポインタl、子の節数kおよび探索済プレフィックス長pから、処理対象となる節の情報が記憶されているアドレスを算出して、内部メモリ904或いは外部メモリをアクセスし、必要な節情報(k,s,l)を取得する。次いで、取得した節情報のkの値にしたがって、出力すべきデータ(節点を示す情報(k、p,l)またはプレフィックス情報へのポインタ)を含むパケットを、PS905に出力する。
【0044】
PS905は、節の子の有無に基づき、パケット中の行き先や命令を書き換えて出力する。たとえば、子がある場合には、行き先は第1のデータ駆動型処理ユニット900(並列に配置されている場合には、同等の機能を分担するデータ駆動型処理ユニットともなり得る)であり、命令は第1の命令である。その一方、子が無い場合には、行き先は後述する第2のデータ駆動型処理ユニットであり、命令は第2の命令となる。このようにして、第1のデータ駆動型処理ユニット900により第1の命令が実行される。
【0045】
また、図7に示す第2の命令は、図10に示す第2のデータ駆動型処理ユニットにより実現することができる。第2のデータ駆動型処理ユニット1000は、MM1001と、第1のMAU1002と、第2のMAU1003と、プレフィックス比較部(以下、「PCU」と称する。)1004と、第3のMAU1005と、内部メモリ1006と、PS1007とを有している。
【0046】
第2のデータ駆動型処理ユニット1000において、第1のMAU1002は、第1の外部メモリにアクセスして、第1の外部メモリに記憶されている、プレフィックスを取得し、その一方、第2のMAU1003は、第2の外部メモリにアクセスして、当該第2の外部メモリに記憶されている、プレフィックス情報を構成するプレフィックス長、ネクストホップ情報へのポインタおよび次の要素へのポインタを取得する。また、内部メモリ1006には、ネクストホップテーブルが格納されている。
【0047】
図7を参照して説明したように、入力「IN」として、宛先IPアドレスおよびプレフィックス情報へのポインタが与えられる。
MM1001は、双方のデータが揃うと発火して、プレフィックス情報へのポインタを第1および第2のMAU1002、1003に与えるとともに、宛先IアドレスをPCU1004に与える。
第1のMAU1002は、ポインタを利用して第1の外部メモリにアクセスして、対応するプレフィックス等を取得する。第2のMAU1003は、ポインタを利用して第2の外部メモリにアクセスして、対応するポインタ情報を取得する。これらは、PCU1004に伝達される。
【0048】
PCU1004は、宛先IPアドレスとプレフィックスとを比較して、一致した場合には、ネクストホップへのポインタを、一致しない場合には、次の要素へのポインタを第3のMAU1005に与える。第3のMAU1005は、ネクストホップへのポインタが与えられると、これを利用して内部メモリ1006をアクセスしてネクストホップを取得する。これにより、第3のMAU1005からは、出力すべきデータ(ネクストホップ、または、次の要素へのポインタ)を含むパケットをPS1007に出力することができる。
【0049】
PS1007は、パケットが次の要素へのポインタを含めば、パケット中の行き先を第2のデータ駆動型処理ユニット1000(並列に配置されている場合には、同等の機能を分担するデータ駆動型処理ユニットともなり得る)とするようにパケットを変換して出力する。このようにして、第2のデータ駆動型ユニット1000により第2の命令を実行することができる。
【0050】
図11は、上記第1のデータ駆動型処理ユニットおよび第2のデータ駆動型処理ユニットを利用した、IPアドレス検索用データ駆動型マルチプロセッサ装置の例を示すブロックダイヤグラムである。このようにマルチプロセッサ装置1100は、既存のデータ駆動型処理ユニット1101−1、・・・、1101−nが、インタープロセッサルータ1102に接続された形態となっている。この例では、マルチプロセッサ装置1100は、2つの第1のデータ駆動型処理ユニット1103−1、1103−2、および、単一の第2のデータ駆動型処理ユニット1104を有している。一方の第1のデータ駆動型処理ユニット1103−1は、第1の外部メモリ1105−1にアクセスでき、他方の第1のデータ駆動型処理ユニット1103−2は、第2の外部メモリ1105−2にアクセスすることができる。さらに、第2のデータ駆動型処理ユニット1104は、第1の外部メモリ1105−1および第2の外部メモリ1105−2の双方にアクセスすることができる。
【0051】
典型的なIPルーティングテーブル(要素数N=55000)の場合には、レベルL1の節数が62000、レベルL2の節数が31000、レベルL3の節数が34000、レベルL4の節数が4000、レベルL5の節数が120となる。この例では、レベルL1の節情報を、内部メモリ(図9の符号904参照)に格納し、他のレベルの節情報を、外部メモリ1105−1、1105−2に分散して格納している。また、プレフィックス情報リストのうち、プレフィックスおよびプレフィックス長が第1の外部メモリ1105−1に格納し、ネクストホップ情報へのポインタおよび次の要素のポインタを、第2の外部メモリ1105−2に格納している。このような構成とすることで、外部メモリへのアクセスレートが支配的となり、略このレートでIPアドレス検索を実現することが可能となる。
【0052】
このように、本実施の形態によれば、レベル圧縮トライ木構造による最長一致検索処理を、パイプライン並列・同時並行処理にて実現できる。また、必要最低限のハードウェアの追加で、複合命令を実行することが可能である。さらに、メモリアクセスの並列パイプライン化によりメモリ参照遅延を隠蔽でき、これにより、外部メモリのバンド幅と等しいレートでの検索が可能となる。また、ルーティングテーブル内のプレフィックス分布に応じて、最適なプログラムやメモリ割り当てを、容易にかつ柔軟に設定することが可能である。
【0053】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、前記実施の形態においては、IPv4のルーティングテーブル検索に本発明を適用したがこれに限定されるものではなく、IPv6やMPLSラベルスイッチにおけるルーティングテーブルの検索、CoSにおけるサービス内容の検索にも本発明が適用できることは言うまでもない。さらに、自然言語文の形態素解析における文節認識のために本発明にかかる検索を利用することも可能である。したがって、データベース、アクティブネットワークノード、アプリケーションサーバ、ウェブ検索エンジンなどに本発明を適用して、高速な検索を実現することも可能である。
【0054】
また、前記実施の形態において、データ駆動型マルチプロセッサ装置には、2つの第1のデータ駆動型処理ユニットおよび単一の第2のデータ駆動型処理ユニットを搭載したが、これに限定されるものではなく、ルーティングテーブル内のプレフィックス分布に基づく、外部メモリへのデータの分散記憶などにしたがって、データ駆動型処理ユニットの数は変更できることは言うまでもない。
【0055】
さらに、大規模IPアドレス検索装置など、大規模な装置においては、図11に示すデータ駆動型マルチプロセッサ装置を、ディジーチェーン型に複数接続して、負荷分散させても良い。この場合には、レベル圧縮トライ木構造の第1のレベルL1をチップ数に応じて分割し、その部分木に関する情報を、各チップに接続された内部メモリ/外部メモリに格納するのが望ましい。これにより、チップ数に比例して(つまり線形に)IPアドレス検索性能を向上させることが可能となる。
【0056】
また、前記実施の形態において、第1のデータ駆動型処理ユニットは、二つのMAUを有し、一方が内部メモリにアクセスし、他方が外部メモリにアクセスするように構成されているがこれに限定されるものではなく、第1のデータ駆動型処理ユニットにおいて単一のMAUを設け、これが内部メモリ或いは外部メモリにアクセスするような構成をとっても良い。
【0057】
さらに、前記実施の形態においては、第1の命令を実行する第1のデータ駆動型処理ユニットおよび第2の命令を実行する第2のデータ駆動型処理ユニットから情報検索装置を構成している。しかしながら、上記命令を実行する処理ユニットがデータ駆動型でなくとも、本発明を適用することは可能である。たとえば、ノイマン型の処理ユニットであっても、図5に示すような構造、つまり、パイプライン型処理の形態でレベル木構造の検索およびプレフィックス検査を実行し、かつ、第1の命令および第2の命令をメモリアクセスレートと等価な処理レートにて処理できるようなものであれば良い。
なお、本明細書において、一つの手段の機能が、二つ以上の物理的手段により実現されても、若しくは、二つ以上の手段の機能が、一つの物理的手段により実現されてもよい。
【0058】
【発明の効果】
本発明によれば、多様な探索空間に対して高速な検索を実現できる情報検索装置を提供することが可能となる。
【図面の簡単な説明】
【図1】 図1は、トライ木構造を示す図である。
【図2】 図2は、パス圧縮トライ木構造を示す図である。
【図3】 図3は、レベル圧縮トライ木構造を示す図である。
【図4】 図4は、レベル圧縮トライ木構造を利用したIPアドレス検索処理を示すフローチャートである。
【図5】 図5は、本発明の実施の形態にかかる情報検索装置の処理機構を示すダイヤグラムである。
【図6】 図6は、本実施の形態にかかる第1の命令を示す図である。
【図7】 図7は、本実施の形態にかかる第2の命令を示す図である。
【図8】 図8は、本実施の形態にかかるデータフローを模式的に示す図である。
【図9】 図9は、本実施の形態にかかる第1のデータ駆動型処理ユニットの構成を示すブロックダイヤグラムである。
【図10】 図10は、本実施の形態にかかる第2のデータ駆動型処理ユニットの構成を示すブロックダイヤグラムである。
【図11】 図11は、本実施の形態にかかる第1のデータ駆動型処理ユニットおよび第2のデータ駆動型処理ユニットを利用した、IPアドレス検索用データ駆動型マルチプロセッサ装置の例を示すブロックダイヤグラムである。
【図12】 図12は、本実施の形態にかかる節情報を説明するための図である。
【符号の説明】
501 検索部
511 プレフィックス検査部
521 ネクストホップ参照部
900 第1のデータ駆動型処理ユニット
901 発火制御部
902、903 メモリアクセス/演算部
904 内部メモリ
905 プログラム記憶部
1000 第2のデータ駆動型処理ユニット
1001 発火制御部
1002、1003、1005 メモリアクセス/演算部
1004 プレフィックス比較部
1006 内部メモリ
1006 プログラム記憶部
Claims (11)
- レベル圧縮トライ木構造を利用した最長一致検索を実行するための情報検索装置であって、
前記レベル圧縮トライ木構造中の葉を検索する第1の命令を実行するための第1の処理ユニットと、プレフィックスおよび連想値からなる探索空間における入力語とプレフィックスとを比較して連想値を出力する第2の命令を実行するための第2の処理ユニットとを備え、
第1の処理ユニットが、前記レベル圧縮トライ木構造中の各レベルの検索処理をパイプライン上に展開したデータ駆動プログラム構造を保持した第1のデータ駆動型処理ユニットから構成され、
前記第1の処理ユニットが、
あるレベルの節点を特定する情報であって、子の節数、探索済のプレフィックス長および先頭の節へのポインタを含む情報および入力語を入力して、前記レベル圧縮トライ木構造の各レベルの節点に関する節情報であって、下位のレベルの節点を特定する情報、および、下位の節点が存在しない場合にはプレフィックスの先頭要素を示すポインタ値を含む節点に関する節情報を記憶したメモリをアクセスするためのアドレスを、前記子の節数、探索済のプレフィックス長および先頭の節へのポインタに基づき算出するとともに、当該メモリをアクセスして、前記節情報を取得するメモリアクセス手段と、
前記メモリから取得した節情報から、下位のレベルの節点の有無を判断して、当該下位のレベルの節点が存在する場合には、下位のレベルの節点を特定する情報である節情報および入力語を出力する一方、前記下位のレベルの節点が存在しない場合には、対応するプレフィックスの先頭要素を示すポインタ値を含む節情報および入力語を出力する第1の制御手段とを有し、
前記第2の処理ユニットが、各レベルのプレフィックスの検査をパイプライン上に展開したデータ駆動プログラム構造を保持した第2のデータ駆動型処理ユニットから構成され、
前記第2の処理ユニットが、
前記ポインタ値に基づき、プレフィックスを記憶した第1のメモリにアクセスして、プレフィックスを取得するプレフィックス取得手段と、
前記プレフィックス取得手段と並列的に動作し、前記ポインタ値に基づき、連想値を特定するためのポインタおよび上位のレベルのプレフィックスを特定するためのポインタ値のいずれかを記憶した第2のメモリにアクセスして、前記連想値を特定するためのポインタ値或いは前記上位のレベルのプレフィックスを特定するためのポインタ値を取得する検査情報取得手段と、
前記取得されたプレフィックスと入力語とを比較する比較手段と、
前記比較手段による比較結果に基づき、プレフィックスと入力語が一致した場合には、予め取得された連想値を特定するためのポインタに基づき連想値メモリをアクセスして連想値を取得する連想値取得手段と、
前記連想値が取得された場合には連想値を出力し、プレフィックスと入力語とが一致しない場合には、前記上位レベルのプレフィックスを特定するためのポインタ値を出力する第2の制御手段とを有し、
前記第1の処理ユニットおよび第2の処理ユニットのそれぞれにて、前記パイプラインにより、メモリアクセスレートと等価なレートで、前記第1の命令および第2の命令が実行されることを特徴とする情報検索装置。 - 前記第1のデータ駆動型処理ユニットが、パイプラインにおける処理を識別するためのカラー、第1の複合命令、行き先、並びに、前記あるレベルの節点を特定する情報および前記入力語に対応するデータからなるパケットを受理して、処理に必要なデータが揃うことにより発火する発火制御手段を備え、
前記発火制御手段からの指示にしたがって、前記メモリアクセス手段が作動し、
前記第1の制御手段が、下位レベルの節点が存在する場合には、前記第1の複合命令、および、第1のデータ駆動型処理ユニットを行き先とするパケットを出力し、下位レベルの節点が存在しない場合には、第2のデータ駆動型処理ユニットのための第2の複合命令、および、第2のデータ駆動型処理ユニットを行き先とするパケットを出力することを特徴とする請求項1に記載の情報検索装置。 - 前記メモリアクセス手段が、特定の単一または複数のレベルに属する節点に関する節情報を記憶した第1の節情報メモリをアクセスする第1の処理部と、前記特定の単一または複数のレベル以外の他のレベルの節点に関する節情報を記憶した第2の節情報メモリをアクセスする第2の処理部とを有し、前記発火制御部からの指示にしたがって、何れかの処理部が作動することを特徴とする請求項2に記載の情報検索装置。
- 前記第1の節情報メモリが前記情報検索装置に内部バスにて連結された内部メモリであり、第2の節情報メモリが、外部メモリであることを特徴とする請求項3に記載の情報検索装置。
- 前記第2のデータ駆動型処理ユニットが、パイプラインにおける処理を識別するためのカラー、第2の複合命令、行き先およびデータからなるパケットを受理して、処理に必要なデータが揃うことにより発火する第2の発火制御手段を備え、
前記発火制御手段からの指示にしたがって、前記プレフィックス取得手段および検査情報取得手段が作動し、
前記第2の制御手段が、プレフィックスと入力語とが一致しない場合に、第2の複合命令および第2のデータ駆動型処理ユニットを行き先とするパケットを出力するように構成されたことを特徴とする請求項1ないし4の何れか一項に記載の情報検索装置。 - 前記プレフィックス取得手段が、外部メモリである第1のメモリにアクセスし、前記検査情報取得手段が、別の外部メモリである第2のメモリにアクセスし、前記連想値取得手段が、内部メモリである連想値メモリにアクセスするように構成されたことを特徴とする請求項5に記載の情報検索装置。
- 請求項1ないし6の何れか一項に記載された、少なくとも一以上の第1の処理ユニットと、少なくとも一以上の第2の処理ユニットと、少なくとも一以上の外部メモリとを備えたことを特徴とする情報検索用マルチプロセッサ。
- 前記第1の処理ユニットを2つ備えたことを特徴とする請求項7に記載のマルチプロセッサ。
- 前記第1の処理ユニットの一方が、第1の外部メモリに接続され、前記第1の処理ユニットの他方が、第2の外部メモリに接続され、かつ、前記第2の処理ユニットが、前記第1および第2の外部メモリに接続されたことを特徴とする請求項8に記載のマルチプロセッサ。
- 請求項1ないし6の何れか一項に記載の情報検索装置を備え、入力語として宛先IPアドレスを受理し、連想語としてネクストホップを出力することを特徴とするルータ。
- 請求項7ないし9の何れか一項に記載のマルチプロセッサを備え、入力語として宛先IPアドレスを受理し、連想語としてネクストホップを出力することを特徴とするルータ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001056289A JP4726310B2 (ja) | 2001-03-01 | 2001-03-01 | 情報検索装置、情報検索用マルチプロセッサおよびルータ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001056289A JP4726310B2 (ja) | 2001-03-01 | 2001-03-01 | 情報検索装置、情報検索用マルチプロセッサおよびルータ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002259452A JP2002259452A (ja) | 2002-09-13 |
JP4726310B2 true JP4726310B2 (ja) | 2011-07-20 |
Family
ID=18916335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001056289A Expired - Fee Related JP4726310B2 (ja) | 2001-03-01 | 2001-03-01 | 情報検索装置、情報検索用マルチプロセッサおよびルータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4726310B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006236047A (ja) * | 2005-02-25 | 2006-09-07 | Renesas Technology Corp | 半導体集積回路装置 |
JP5387092B2 (ja) * | 2009-03-27 | 2014-01-15 | 富士通株式会社 | 記憶媒体およびトライ木生成方法 |
JP5493431B2 (ja) * | 2009-03-31 | 2014-05-14 | 富士通株式会社 | 記憶媒体、トライ木生成方法およびトライ木生成装置 |
JP5365347B2 (ja) * | 2009-06-01 | 2013-12-11 | 富士通株式会社 | トライ木文字列登録プログラムおよびトライ木文字列登録装置 |
-
2001
- 2001-03-01 JP JP2001056289A patent/JP4726310B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002259452A (ja) | 2002-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1623347B1 (en) | Comparison tree data structures and lookup operations | |
US7415472B2 (en) | Comparison tree data structures of particular use in performing lookup operations | |
US6553002B1 (en) | Apparatus and method for routing data packets through a communications network | |
JP3790217B2 (ja) | 高速インターネットプロトコルルートルックアップ遂行及びルーティング/フォワーディングテーブル管理のための装置及び方法 | |
Huang et al. | A fast IP routing lookup scheme for gigabit switching routers | |
JP4452183B2 (ja) | プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置) | |
US7315547B2 (en) | Packet forwarding device | |
US20050171937A1 (en) | Memory efficient hashing algorithm | |
US8599859B2 (en) | Iterative parsing and classification | |
US20050171959A1 (en) | Efficient ipv4/ipv6 best matching prefix method and apparatus | |
JP3881663B2 (ja) | フィールドレベルツリーを用いたパケット分類装置及び方法 | |
US20180270153A1 (en) | Increasing entropy across routing table segments | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
Tzeng | Longest prefix search using compressed trees | |
US20040044868A1 (en) | Method and apparatus for high-speed longest prefix match of keys in a memory | |
US20050138322A1 (en) | System, apparatus, and method for string matching | |
Hemalatha et al. | Real time prefix matching based IP lookup and update mechanism for efficient routing in networks | |
TWI239476B (en) | Address search | |
JP4726310B2 (ja) | 情報検索装置、情報検索用マルチプロセッサおよびルータ | |
Ravikumar et al. | Modified LC-trie based efficient routing lookup | |
JP3558151B2 (ja) | データ検索回路 | |
KR100493099B1 (ko) | 고속 인터넷프로토콜 라우터의 라우팅/포워딩 룩업 및라우팅 테이블 관리 | |
KR100460188B1 (ko) | 인터넷 프로토콜 주소 룩-업 방법 | |
KR100459542B1 (ko) | 인터넷 프로토콜 주소 룩-업 장치 | |
Fradj et al. | Implementation of a cache-based IPv6 lookup system with hashing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20071120 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080220 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100806 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100817 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101015 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110222 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110308 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110405 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110412 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140422 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |