(57)【特許請求の範囲】
【請求項１】
ＩＰパケットの宛先ＩＰアドレスから、ルーティングテーブル内のＰｒｅｆｉｘの中で最長一致のＰｒｅｆｉｘを検索し、Ｎｅｘｔ  Ｈｏｐ情報あるいはＮｅｘｔ  Ｈｏｐ情報を持つ他テーブルへのＩｎｄｅｘ情報を求めるルーティングテーブル検索装置において、
前記ルーティングテーブルにエントリされている全ＰｒｅｆｉｘをＰｒｅｆｉｘ長により決められた複数の範囲にそれぞれ分け、分けられたＰｒｅｆｉｘをその範囲の中で最も小さいＰｒｅｆｉｘ長へ短縮したＰｒｅｆｉｘを前記Ｐｒｅｆｉｘ長毎に設けた複数のＣｏｎｔｅｎｔ  Ａｄｄｒｅｓｓ  Ｍｅｍｏｒｙ（ＣＡＭ）に格納し、
検索すべき宛先ＩＰアドレスを前記ＣＡＭの全てに入力すると、該ＣＡＭに格納されているＰｒｅｆｉｘと前記宛先ＩＰアドレスの上位Ｐｒｅｆｉｘ長ビット分とを比較し、一致したＰｒｅｆｉｘのうち最長のＰｒｅｆｉｘ長を持つＣＡＭからのＰｒｅｆｉｘを答えとして、２段目処理部に移る１段目処理部と、
ツリーが配置され、該ツリーの途中にあり、前記１段目処理部で一致したＣＡＭの出力に該当するノードに検索処理が移ると、該ツリーの限定された範囲内で検索を行い、検索が終了した時点でＮｅｘｔ  Ｈｏｐ情報あるいはＮｅｘｔ  Ｈｏｐ情報を持った他テーブルへのＰｒｅｆｉｘ情報を最終結果として出力する２段目処理部とを具備したことを特徴とするルーティングテーブル検索装置。
【請求項２】
ＩＰパケットの宛先ＩＰアドレスから、ルーティングテーブル内のＰｒｅｆｉｘの中で最長一致のＰｒｅｆｉｘを検索し、Ｎｅｘｔ  Ｈｏｐ情報あるいはＮｅｘｔ  Ｈｏｐ情報を持つ他テーブルへのＩｎｄｅｘ情報を求めるルーティングテーブル検索法において、
検索を２段に分けて行い、１段目の処理では、ルーティングテーブルにエントリされている全ＰｒｅｆｉｘをＰｒｅｆｉｘ長により決められた複数の範囲にそれぞれ分け、分けられたＰｒｅｆｉｘをその範囲の中で最も小さいＰｒｅｆｉｘ長へ短縮したＰｒｅｆｉｘをＰｒｅｆｉｘ長毎に設けた複数のＣＡＭに格納し、
検索すべき宛先ＩＰアドレスを前記全てのＣＡＭに入力し、該宛先ＩＰアドレスの上位Ｐｒｅｆｉｘ長ビット分とＣＡＭに格納されているＰｒｅｆｉｘとを比較し、
比較の結果、一致したＰｒｅｆｉｘのうち最も長いＰｒｅｆｉｘ長を持つＣＡＭからのＰｒｅｆｉｘを答えとし、そのＰｒｅｆｉｘに対応するツリーのノードを格納しているメモリのアドレスを１段目処理部から出力することを特徴とするルーティングテーブル検索法。
【請求項３】
請求項２に記載のルーティングテーブル検索法において、
前記２段の検索の中の２段目の処理では、検索すべき宛先ＩＰアドレスと１段目処理部から出力されたアドレスを読み込み、
１段目処理部から出力された該アドレスに対応するツリーの途中にあるノードの情報を、２段目処理部のツリーを格納しているメモリから読み込み、
該ノードから検索を開始し、ツリーに決められたルールに従って検索を行い、
１段目処理部のＣＡＭで一致したＰｒｅｆｉｘが含まれていた範囲のＰｒｅｆｉｘ長の範囲内で該ツリーを検索し、
該ツリーの検索終了時点で、Ｎｅｘｔ  Ｈｏｐ情報あるいはＮｅｘｔ  Ｈｏｐ情報を持つ他テーブルへのＩｎｄｅｘ情報を最終結果として出力する
ことを特徴とするルーティングテーブル検索法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、高速かつ大容量のルーティングテーブル検索法に関し、特に検索回数を制限することができ、高速にルーティングテーブルを検索することが可能なルーティング検索法に関する。
【０００２】
【従来の技術】
従来のＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）を用いたルーティングテーブル検索法について説明する。
図２は、ＣＡＭを用いた従来のルーティングテーブル検索法の動作説明図である。
図２に示すように、Ｐｒｅｆｉｘ長毎にＣＡＭ１６−１〜１６−２５を用意して、ルーティングテーブル上のＰｒｅｆｉｘをそのＰｒｅｆｉｘ長と対応するＣＡＭに格納する。すなわち、Ｐｒｅｆｉｘ長８のＰｒｅｆｉｘであればＣＡＭ（８）１６−１に格納し、Ｐｒｅｆｉｘ長９のＰｒｅｆｉｘであればＣＡＭ（９）１６−２に格納し、同じようにしてＰｒｅｆｉｘ長３２のＰｒｅｆｉｘであればＣＡＭ（３２）１６−２５に格納する。
検索を行う際には、検索すべき宛先ＩＰアドレスを全ＣＡＭ１６−１〜１６−２５に入力する。Ｐｒｅｆｉｘ長ｐに対応するＣＡＭに入力された宛先ＩＰアドレスは、宛先ＩＰアドレスの上位ｐビット分とＣＡＭが格納しているＰｒｅｆｉｘとを比較し、一致した場合、ＣＡＭはＮｅｘｔ  Ｈｏｐの情報あるいはＮｅｘｔ  Ｈｏｐの情報を持った他テーブルへのＩｎｄｅｘ情報を出力する。なお、複数のＣＡＭで一致した場合には、Ｐｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ１７で最も長いＰｒｅｆｉｘを格納しているＣＡＭからの出力を選択する。図２の方式では、ルーティングテーブルにあるＰｒｅｆｉｘ自身を全てＣＡＭに格納しなければならず、その結果、多くのメモリ量が必要になるという問題があった。
【０００３】
図３は、パトリシアツリーを用いた従来のルーティングテーブル検索法の説明図である。
図３に示す検索法では、各ノード３１〜３４はそれぞれＰｒｅｆｉｘとそのノードのＰｒｅｆｉｘ長を持っている。あるノードに検索すべきＩＰアドレスが到達した場合、そのノードが示すＰｒｅｆｉｘと宛先ＩＰアドレスの上位Ｐｒｅｆｉｘ長ビット目までを比較する。比較の結果、一致しない場合には、直前に一致したノードに対応するテーブルが持つＮｅｘｔ  Ｈｏｐの情報を求める情報として検索を終了し、一致した場合には、そのノードに対応するテーブルが持つＮｅｘｔ  Ｈｏｐの情報を読み込み、記録する。次に、宛先ＩＰアドレスの上位Ｐｒｅｆｉｘ長＋１ビット目を参照し、その値により子ノードが存在する場合には子ノードに移り、検索を続行し、一方、子ノードが存在しない場合には、検索を終了し、記録したＮｅｘｔ  Ｈｏｐの情報を求める情報とする。
図３では、例えば、１００００１０１・・・という宛先ＩＰアドレスが入力されたとき、先ずルートノード３１で宛先ＩＰアドレスの上位１ビット目の値が０または１で分岐を行い、検査ビット（宛先ＩＰアドレスの上位１ビット目）が１であるためノード（Ｓ）３２に移り、上位３ビット分を比較して一致しているので、検査ビットである４ビット目を調べる。検査ビットが０であるためノード（Ｕ）３３に移る。ここでは上位５ビット分を比較して一致しないので、検索を終了し、直前で一致したノード（Ｓ）３２の１００／３を答えとする。図３の方式では、ルーティングテーブルのエントリ数の増加やアドレス長が長くなることによって木の深さが深くなり、それに伴ない検索回数が多くなり、その結果、検索に時間がかかるという問題があった。
【０００４】
図４は、Ｍｕｌｔｉｗａｙツリーを用いたルーティングテーブル検索法の説明図である。
この方式は、検索の際にノードへのアクセス回数を減らす目的で、１つの親ノードに３つ以上の複数の子ノードを持たせることによって木の深さを浅くする方法である。すなわち、図４（ａ）から図４（ｂ）のように変形させたツリーにすることにより、木の深さを浅くできる。図４（ｂ）は、３ビットずつにＰｒｅｆｉｘを区切った場合の具体例（ｘｘｘ／３）であって、区切った段（Ｐｒｅｆｉｘ長が３の倍数の段）上に存在しない有効ノード（図中でＡ，Ｂ，Ｅ，Ｆ，Ｄ）はＰｒｅｆｉｘを伸長して必要なだけエントリを配置する。例えばノードＤ（００１１）を６ビットへ伸長する場合、００１１００、００１１０１、００１１１０、００１１１１の４つのエントリを持つことになる。
【０００５】
Ｍｕｌｔｉｗａｙツリーの検索は、例えば１つの親ノードに最大Ｅ個（≧３、図ではＥ＝８）の複数の子ノードを持たせるとすると、ノードが持つＰｒｅｆｉｘとＩＰアドレスの上位Ｐｒｅｆｉｘ長ビット目までを比較し、一致した場合には、ＩＰアドレスの上位Ｐｒｅｆｉｘ長＋１ビット目から上位Ｐｒｅｆｉｘ長＋ｌｏｇ２Ｅビット目までを見て、対応する子ノードがあれば移り、検索を続行する。対応する子ノードがなかった場合、またノードで比較した時に一致しなかった場合には、検索を終了し、直前に一致したノードに対応するテーブルが持つＮｅｘｔ  Ｈｏｐ情報を求める情報として検索を終了する。この方式では、１つの同じＰｒｅｆｉｘを表わすために、複数のノードがより多く必要となる場合があり（図４におけるノードＤ等）、メモリを浪費してしまうという問題があった。１つの親ノードが持つ子ノードの数を増やすほどアクセス回数を減らすことができるが、ＩＰアドレスに割り当てられるビット数（ＩＰｖ４の時は３２ビット、ＩＰｖ６の時は１２８ビット）が増加すると、木の深さが深くなり、必要なメモリ量が増加し、現実的なメモリ量を考えると、１つの親ノードがあまり多くの子ノードを持つことができなくなり、アクセス回数を減少させることが効果的に行えなくなる、という問題があった。
【０００６】
【発明が解決しようとする課題】
このように、従来用いられていたＣＡＭを用いたルーティングテーブル検索法では、Ｐｒｅｆｉｘ自身を全てＣＡＭに格納する必要があるため、メモリ量が多く必要になるという問題があり、またパトリシアツリーを用いたルーティングテーブル検索法では、木の深さが深くなればなるほど検索回数が多くなるため、検索に時間がかかるという問題があり、さらにＭｕｌｔｉｗａｙを用いたルーティングテーブル検索法では、ＩＰアドレスに割り当てられるビット数が増えると、木の深さが深くなるため、必要なメモリ量が増加し、多くの子ノードを持てなくなり、アクセス回数を十分に減らすことができなくなるという問題があった。
【０００７】
そこで、本発明の目的は、これら従来の課題を解決し、ルーティングテーブルの検索に必要な検索回数およびメモリ量を減少させ、高速かつ大容量のルーティングテーブル検索法を提供することにある。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、本発明のルーティングテーブル検索法では、検索を２段に分けて行い、１段目の処理ではＣＡＭを用いて１回目の検索を実行し、２段目にツリーを配置して２回目の検索をツリーの限定された範囲内で検索を実行する。そのために、ルーティングテーブルにエントリされている全てのＰｒｅｆｉｘをＰｒｅｆｉｘ長により決められた範囲にそれぞれ分け、分けられたＰｒｅｆｉｘをその範囲の中で最も小さいＰｒｅｆｉｘ長へ短縮したＰｒｅｆｉｘを１段目のＣＡＭに格納して、検索を開始する際に検索すべき宛先ＩＰアドレスをＣＡＭに入力する。検索すべき宛先ＩＰアドレスが入力されたならば、ＣＡＭに格納されているＰｒｅｆｉｘと入力された宛先ＩＰアドレスの上位Ｐｒｅｆｉｘ長ビット分とを比較し、一致したＰｒｅｆｉｘのうち最も長いＰｒｅｆｉｘ長を持つＰｒｅｆｉｘを答えとし、答えとして求めたＰｒｅｆｉｘに対応する２段目のツリーが格納されているメモリのアドレスを１段目から出力する。
２段目の処理では、検索すべき宛先ＩＰアドレスと１段目から出力されたアドレスを読み込み、１段目から出力されたアドレスから、そのアドレスに対応するツリーの途中にあるノードを、２段目のツリーを格納しているメモリから読み込み、そのノードから検索を開始し、そのツリーに決められたルールで検索を実行し、１段目のＣＡＭで一致したＰｒｅｆｉｘが含まれていた範囲のＰｒｅｆｉｘ長の範囲内でツリーを検索する。ツリーに決められたルールで検索が終了した時、Ｎｅｘｔ  Ｈｏｐの情報あるいはＮｅｘｔ  Ｈｏｐの情報を持つ他のテーブルへのｉｎｄｅｘ情報を最終的な結果として出力する。
【０００９】
本発明においては、ルーティングテーブルにエントリされている全てのＰｒｅｆｉｘをＰｒｅｆｉｘ長により決められた範囲に分け、分けられたＰｒｅｆｉｘをその範囲の中で最も小さいＰｒｅｆｉｘ長へ短縮したＰｒｅｆｉｘをＣＡＭに格納する。その結果、１段目でＣＡＭを用いて得られる答えとなるＰｒｅｆｉｘは、入力されたＩＰアドレスとＣＡＭに格納されているＰｒｅｆｉｘとを比較し、入力されたＩＰアドレスと一致するＰｒｅｆｉｘの中で最も長いＰｒｅｆｉｘ長を持つＰｒｅｆｉｘとするため、２段目のツリーでの検索は、そのＰｒｅｆｉｘが含まれていたＰｒｅｆｉｘ長の範囲の中で一番長いＰｒｅｆｉｘ長よりも長いＰｒｅｆｉｘ長で検索しても最長一致Ｐｒｅｆｉｘが存在する可能性がないため、そのＰｒｅｆｉｘが含まれていたＰｒｅｆｉｘ長の範囲でのみ検索を行うことで、最長一致Ｐｒｅｆｉｘを求めることができる。検索は、ツリーの最上段にあるノードから常に検索を開始する必要はなく、ツリーの途中のノードから検索を開始し、限られた範囲内で検索を行うことにより、最長一致Ｐｒｅｆｉｘを求めることができる。
【００１０】
【発明の実施の形態】
以下、本発明の実施例を、図面により詳細に説明する。
図１は、本発明の一実施例を示すルーティングテーブル検索装置のブロック図である。
図１において、０はルーティングテーブル検索部、１はＣＡＭを用いた検索を実施する１段目処理部、２はツリーの限定された範囲内で検索を実施する２段目処理部、３はツリー格納メモリ部、４はＮｅｘｔ  Ｈｏｐの情報格納メモリ部、１１は入力線、１５は出力線、１２，１３，１４は信号線である。
入力線１１は、１段目処理部１と接続し、検索すべき宛先ＩＰアドレスを１段目処理部１に入力する。信号線１２は１段目処理部１と２段目処理部２を接続し、信号線１３は２段目処理部２とツリー格納メモリ部３を接続し、信号線１４は２段目処理部２とＮｅｘｔ  Ｈｏｐの情報格納メモリ部４とを接続する。
出力線１５は、２段目処理部２からＮｅｘｔ  Ｈｏｐの情報を外部に出力する。
【００１１】
検索が開始されると、先ず入力線１１から１段目処理部１へ検索すべき宛先ＩＰアドレスを入力し、１段目処理部１で最初の検索を行い、その結果を信号線１２を介して２段目処理部２へ送る。その結果はツリー格納メモリ部３のアドレスを示しており、この結果とツリー格納メモリ部３に格納されているＰｒｅｆｉｘとツリー情報を用いてツリー上で検索を行う。ツリーを用いた検索の結果は、Ｎｅｘｔ  Ｈｏｐの情報格納メモリ部４のアドレスを示しており、２段目処理部２はこの結果をもとにしてＮｅｘｔ  Ｈｏｐの情報格納メモリ部４へ信号線１４を介してアクセスし、Ｎｅｘｔ  Ｈｏｐの情報を読み込み、出力線１５を介して出力する。
【００１２】
図５は、図１における１段目処理部の詳細ブロック図である。
図５において、２２はＣＡＭ処理部、２０−１〜２０−ＮはそれぞれＣＡＭ処理部２２内に設けらたＣＡＭ、２１はＰｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ、１１は入力線、３０−１〜３０−Ｎは各ＣＡＭ２０−１〜２０−Ｎに入力する信号線、３１−１〜３１−Ｎは各ＣＡＭ２０−１〜２０−Ｎから出力されて、Ｐｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ２１に入力される信号線、３２は入力線１１から直接Ｐｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ２１に接続する信号線である。
ＣＡＭ処理部２２は、入力線１１から入力されたＩＰアドレスをＣＡＭ２０−１〜２０−Ｎの全てに入力し、信号線３１−１〜３１−Ｎを介してＣＡＭ２０−１〜２０−Ｎからの出力をＰｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ２１へ送出する。また、入力線１１から入力されたＩＰアドレスは、信号線３２を介してＰｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ２１に入力される。
【００１３】
ルーティングテーブルにエントリされている全てのＰｒｅｆｉｘを、Ｐｒｅｆｉｘ長により決められた範囲にそれぞれ分け、分けられたＰｒｅｆｉｘをその範囲の中で最も小さいＰｒｅｆｉｘ長へ短縮したＰｒｅｆｉｘをＣＡＭ２０−１〜２０−Ｎは格納している。ＣＡＭ２０−１〜２０−Ｎは、入力線１１から入力された検索すべきＩＰアドレスと格納しているＰｒｅｆｉｘとを比較して、一致しているＰｒｅｆｉｘが存在した場合には、そのＰｒｅｆｉｘに対応するツリー格納メモリ部３のアドレスを信号線３１−１〜３１−Ｎを介して出力する。Ｐｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ２１は、信号線３２を介して入力された検索すべきＩＰアドレスと、複数のＣＡＭから一致したことを示す信号を受けた場合、それらのＣＡＭの中で最も長いＰｒｅｆｉｘ長を持つＣＡＭからの出力を選択し、その出力を信号線１２を介して出力する。また、一致を示す信号をどのＣＡＭからも受けなかった場合には、信号線１２を介してツリーの最も上に位置するノードに対応するアドレスを出力する。
【００１４】
図６は、図５におけるＣＡＭ処理部の詳細ブロックの例を示す図である。
例えば、ＩＰｖ４（アドレスは３２ビット）のルーティングテーブルのＰｒｅｆｉｘをＣＡＭに格納する場合、ＰｒｅｆｉｘをＰｒｅｆｉｘ長で３つの区切り、Ｐｒｅｆｉｘ長８〜１５、Ｐｒｅｆｉｘ長１６〜２３、Ｐｒｅｆｉｘ長２４〜３２に分けたとする。その場合、図６のＣＡＭ２０−１，２０−２，２０−３に示すように、それぞれの範囲のＰｒｅｆｉｘを格納するために３つのＣＡＭを用意し、ＣＡＭ２０−１，２０−２，２０−３の中には、分けられた範囲の中で最も小さいＰｒｅｆｉｘ長へ短縮したＰｒｅｆｉｘをそれぞれ格納する。
【００１５】
図７は、図６における１つのＣＡＭへ格納するＰｒｅｆｉｘ例を示す図である。
図６に示すように、ＣＡＭ２０−１には、Ｐｒｅｆｉｘ長の範囲８〜１５に含まれる１０．２／１５、１２．３２／１３、１２．４／１４を、この範囲の最も小さいＰｒｅｆｉｘ長８へ短縮したＰｒｅｆｉｘは１０／８、１２／８、１２／８となり、同じＰｒｅｆｉｘはまとめて１０／８、１２／８を格納する。
このようにして、ＣＡＭ２０−１には、Ｐｒｅｆｉｘ長８〜１５のＰｒｅｆｉｘから、Ｐｒｅｆｉｘ長８へ短縮したＰｒｅｆｉｘが格納される。
【００１６】
次に、図１における２段目処理部２について述べる。
２段目処理部２におけるツリーは、様々なツリーを用いることができるが、ここではパトリシアツリーを用いた場合の実施例について説明する。
ルーティングテーブル上のＰｒｅｆｉｘとＣＡＭに格納されているＰｒｅｆｉｘからパトリシアツリーを作成し、ツリー格納メモリ部３へ入力する。ＣＡＭは、宛先ＩＰアドレスが入力された際にＣＡＭが保持するＰｒｅｆｉｘと比較し一致した場合には、そのＰｒｅｆｉｘに対応するツリー格納メモリ部３のアドレスを出力するようにしている。なお、ＣＡＭに格納されているＰｒｅｆｉｘをパトリシアツリーに付け加える際に、そのノードが保持するＮｅｘｔ  Ｈｏｐの情報格納メモリ部のアドレスは２種類に分かれる。
【００１７】
そのアドレスの１つ目は、ＣＡＭが格納しているＰｒｅｆｉｘと同じＰｒｅｆｉｘがルーティングテーブル上に存在しない場合には、ＣＡＭが格納しているＰｒｅｆｉｘを持つノードの親ノードが持つＮｅｘｔ  Ｈｏｐの情報格納メモリ部のアドレスをノードが保持する。もし、親ノードがＮｅｘｔ  Ｈｏｐの情報格納メモリ部のアドレスを持っていない場合には、親ノードの親ノードが持つＮｅｘｔ  Ｈｏｐの情報格納メモリ部のアドレスを保持する。以下、同様に親ノードの親ノードが持っていない場合等は、Ｎｅｘｔ  Ｈｏｐの情報格納メモリ部のアドレスを保持する親ノードを探していく。
そのアドレスの２つ目は、ＣＡＭが格納しているＰｒｅｆｉｘと同じＰｒｅｆｉｘがルーティングテーブル上に存在する場合には、ルーティングテーブル上に存在するＰｒｅｆｉｘのみツリー格納メモリ部３で保持し、保持されたＰｒｅｆｉｘに対応するツリー格納メモリ部３のアドレスをＣＡＭは出力するようにしている。
【００１８】
図８は、パトリシアツリーとそれぞれのメモリの関係の具体例を示す説明図である。
図８（ａ）にパトリシアツリーを示し、図８（ｂ）〜（ｄ）にこのパトリシアツリーに対応するＣＡＭ、ツリー格納情報メモリ部３、Ｎｅｘｔ  Ｈｏｐの情報格納メモリ部４を示している。ツリー格納メモリ部３の他情報は、ツリーを用いて検索を行うための情報が入っている。それぞれ１０．０／９、１０．３４、１２／２２はルーティングテーブル上に存在するＰｒｅｆｉｘであり、これらのＰｒｅｆｉｘを持つノードはＮｅｘｔ  Ｈｏｐの情報を持ち、また１０．３２／１４を持つノードはパトリシアツリー上の中継ノードであって、Ｎｅｘｔ  Ｈｏｐの情報を持たず、また１０．３４／１６は１０．３４．１２／２２をＰｒｅｆｉｘ長１６へ短縮したＰｒｅｆｉｘであり、ＣＡＭにも格納されている。１０．３４／１６がルーティングテーブル上に存在しないので、Ｎｅｘｔ  Ｈｏｐの情報を持っていないからＮｅｘｔ  Ｈｏｐの情報を持つ親ノードを探す。しかし、１０．３４／１６の親ノード（１０．３２／１４）がＮｅｘｔ  Ｈｏｐの情報を持っていないため、その親ノード（１０．０／９）が持つＮｅｘｔ  Ｈｏｐの情報を１０．３４／１６のＮｅｘｔ  Ｈｏｐの情報とする。それ故、１０．３４／１６に対応するツリー格納メモリ部のＮｅｘｔ  Ｈｏｐ情報格納メモリ部のアドレスを１０．０／９と同じｉ１とする。
【００１９】
例えば、ＩＰアドレス１０．３４．１２．５０の検索を行う場合、先ずＣＡＭから出力されたツリー格納メモリ部３のアドレスｔ３を利用し、ツリー格納メモリ部３に格納されているＰｒｅｆｉｘ１０．３４／１６と比較する。ここで、検索すべきＩＰアドレスの上位１６ビットと１０．３４／１６が一致しているため、ＩＰアドレスの上位１７ビット目が０であるか、１であるかを調べる。ここでは０であるため、ツリー格納メモリ部３に格納されているツリー情報を用いて、ノード１０．３４．１２／２２に移る。このノードにおいても同様に比較を行う。比較の結果は一致するが、子ノードがないためにここで検索を終了する。求めたアドレスｉ２を用いてＮｅｘｔ  Ｈｏｐ情報格納メモリ部４へアクセスし、Ｘという情報をＮｅｘｔ  Ｈｏｐ情報格納メモリ部４から取り出して、これを図１の出力線１５を通して出力する。
【００２０】
図９は、Ｍｕｌｔｉｗａｙツリーを本発明に適用する方法の具体例を示す説明図である。
図９（ａ）が本発明を適用していない場合のＭｕｌｔｉｗａｙツリーの一部であり、図９（ｂ）が本発明を適用した場合のＭｕｌｔｉｗａｙツリーの一部で、図９（ａ）に対応するツリーである。
図９（ａ）（ｂ）では、４ビット分、つまり１つの親ノードから最大１６個の子ノードを持たせ、ＣＡＭの区切り位置をＰｒｅｆｉｘ長４とする。例えば、４ビット分の子ノードを持たせたならば、ＣＡＭの区切り位置をＰｒｅｆｉｘ長１２で初めて区切るというように区切り位置を４の倍数にするように位置決めする。つまり、子ノードが存在する位置でＣＡＭの区切り位置を決める。
ルーティングテーブルからＭｕｌｔｉｗａｙツリーを作り、ＣＡＭの区切り位置に存在する子ノードをＣＡＭに格納する。検索は、図１に示す１段目処理部１の出力により、その結果に対応する範囲に区切られた所に存在するノード（図９では、００１１／４）から検索を行う。
【００２１】
本発明においては、（イ）ルーティングテーブルにエントリされている全てのＰｒｅｆｉｘをＰｒｅｆｉｘ長により決められた範囲にそれぞれ分けて、分けられたＰｒｅｆｉｘをその範囲の中で最も小さいＰｒｅｆｉｘ長へ短縮したＰｒｅｆｉｘをＣＡＭに格納するため、ＣＡＭに格納すべきＰｒｅｆｉｘを少なくすることができ、必要なＣＡＭのメモリ容量を減少させることができる。
また、（ロ）１段目でＣＡＭを用いて得られる答えとなるＰｒｅｆｉｘは、入力されたＩＰアドレスとＣＡＭに格納されているＰｒｅｆｉｘとを比較し、入力されたＩＰアドレスと一致するＰｒｅｆｉｘの中で最も長いＰｒｅｆｉｘ長を持つＰｒｅｆｉｘとするため、２段目のツリーでの検索は、そのＰｒｅｆｉｘが含まれていたＰｒｅｆｉｘ長の範囲よりも大きいＰｒｅｆｉｘ長で検索しても、最長一致Ｐｒｅｆｉｘが存在する可能性がないため、ツリーの途中のノードから検索を開始し、限られた範囲内で検索を行うことで、最長一致Ｐｒｅｆｉｘを求めることができるので、検索回数を制限することが可能であり、その結果、高速にルーティングテーブルの検索を行える。
【００２２】
【発明の効果】
以上説明したように、本発明によれば、必要なＣＡＭのメモリ容量を減少させることができ、またツリーの途中のノードから検索を開始し限られた範囲内で検索を行うことで最長一致Ｐｒｅｆｉｘを求めることができるので、検索回数を制限することができ、高速にルーティングテーブルの検索を実施することができる。
【図面の簡単な説明】
【図１】本発明の一実施例を示すルーティングテーブル検索装置のブロック図である。
【図２】従来におけるＣＡＭを用いたルーティングテーブル検索法の説明図である。
【図３】従来におけるパトリシアツリーを用いたルーティングテーブル検索法の説明図である。
【図４】従来におけるＭｕｌｔｉｗａｙツリーを用いたルーティングテーブケ検索法の説明図である。
【図５】図１における１段目処理部の詳細ブロック図である。
【図６】図５におけるＣＡＭ処理部の詳細ブロックの例を示す図である。
【図７】図６におけるＣＡＭに格納するＰｒｅｆｉｘ例を示す図である。
【図８】本発明のパトリシアツリーとメモリの関係を示す説明図である。
【図９】Ｍｕｌｔｉｗａｙツリーに本発明の方式を適用させた場合の例を示す説明図である。
【符号の説明】
１…１段目処理部、２…２段目処理部、３…ツリー格納メモリ部、
４…Ｎｅｘｔ  Ｈｏｐ情報格納メモリ部、１１…入力線、１５…出力線、
１２，１３，１４…信号線、２２…ＣＡＭ処理部、
１６−１…Ｐｒｅｆｉｘ長８のＰｒｅｆｉｘを格納するＣＡＭ、
１６−２…Ｐｒｅｆｉｘ長９のＰｒｅｆｉｘを格納するＣＡＭ、
１６−２５…Ｐｒｅｆｉｘ長２５のＰｒｅｆｉｘを格納するＣＡＭ、
１７…Ｐｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ、
２１…Ｐｒｉｏｒｉｔｙ  Ｅｎｃｏｄｅｒ、３０−１〜３１−Ｎ…信号線、
２０−１…Ｐｒｅｆｉｘ長８〜１５のＰｒｅｆｉｘをＰｒｅｆｉｘ長８に短縮したＰｒｅｆｉｘを格納するＣＡＭ、２０−２…同じくＰｒｅｆｉｘ長１６〜２３のＰｒｅｆｉｘを１６に短縮したＰｒｅｆｉｘを格納するＣＡＭ、
２０−３…同じくＰｒｅｆｉｘ長２４〜３２のＰｒｅｆｉｘをＰｒｅｆｉｘ長２４へ短縮したＰｒｅｆｉｘを格納するＣＡＭ。
【図１】
0003569802.tif 000002
【図２】
0003569802.tif 000003
【図３】
0003569802.tif 000004
【図４】
0003569802.tif 000005
【図５】
0003569802.tif 000006
【図６】
0003569802.tif 000007
【図７】
0003569802.tif 000008
【図８】
0003569802.tif 000009
【図９】
0003569802.tif 000010