(57)【要約】【課題】  ＩＰルータなどのパケット転送装置において、ルーティングテーブルの検索を、大規模なエントリに対応して高速かつ経済的に行う。【解決手段】  第一のメモリには、ツリーの上段部分を格納し、第二のメモリには、下段部分を格納する。第二のメモリの最上段のノードには、ルートに相当するノードから当該最上段のノードに至る上段部分の経路上のノードの有するアドレス情報を格納する。検索すべき宛先アドレスに基づき、ツリーの上段部分を検索し、この検索結果に基づき、ツリーの下段部分の最上段ノードを検索し、検索すべき宛先アドレスがこの最上位ノードが有するアドレス未満のときには、当該最上位ノードに格納された上段部分の経路上のノードの有するアドレス情報を参照し、当該検索すべき宛先アドレス以下となる最も下流のノードが有するアドレスを次ホップルータのアドレスとして決定する。【選択図】  図１
2005117208.tif 000002
【特許請求の範囲】
【請求項１】
入力回線から入力されたＩＰ(Internet Protocol)パケットを識別し、このパケットを出力すべき次ホップルータを決定するためにツリーを用いるテーブル検索装置において、
前記ツリーを格納するメモリ部を備え、
このメモリ部は、２以上のメモリを備え、
第一のメモリには、前記ツリーをそのルート（ｒｏｏｔ）に相当するノードから下流に向かってＮ段目までの上段部分を格納し、当該第一のメモリと異なる第二のメモリには、前記Ｎ段目以降の下段部分を格納する手段を備えた
ことを特徴とするテーブル検索装置。
【請求項２】
前記第二のメモリに格納された前記下段部分のツリーを構成するノードの中で最上段のノードには、前記ルートに相当するノードから当該最上段のノードに至る前記第一のメモリに格納された前記上段部分の経路上のノードの有するアドレス情報を格納する手段を備えた請求項１記載のテーブル検索装置。
【請求項３】
検索すべき宛先アドレスに基づき、前記第一のメモリに格納された前記ツリーの上段部分を検索する第一の検索手段と、
この第一の検索手段の検索結果に基づき、前記第二のメモリに格納された前記ツリーの下段部分の最上段ノードを検索する第二の検索手段と、
前記検索すべき宛先アドレスがこの第二の検索手段により検索された前記最上位ノードが有するアドレス未満のときには、当該最上位ノードに格納された前記上段部分の経路上のノードの有するアドレス情報を参照し、当該検索すべき宛先アドレス以下となる最も下流のノードが有するアドレスを当該検索すべき宛先アドレスの次ホップルータのアドレスとして決定する手段と
を備えた請求項１または２記載のテーブル検索装置。
【請求項４】
前記第一のメモリは、前記第二のメモリと比較して高速小容量である請求項１ないし３のいずれかに記載のテーブル検索装置。
【請求項５】
情報処理装置にインストールすることにより、その情報処理装置に、請求項１ないし３のいずれかに記載のテーブル検索装置の各手段に相応する機能を実現させることを特徴とするプログラム。
【請求項６】
請求項５記載のプログラムが記録された前記情報処理装置読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＩＰルータなどのパケット転送装置に利用する。特に、パケット転送処理を行うに当たり、入力回線から入力されたパケットの宛先アドレスからパケットの次ホップルータを決定する際に使用するテーブル検索装置に関する。
【背景技術】
【０００２】
従来は、ＩＰルータなどのパケット転送装置においては、パケットヘッダに搭載された宛先アドレスを元にルーティングテーブルを検索し、次ホップルータを決定している。ルーティングテーブルには宛先アドレスと次ホップルータの関係とを保持している。
【０００３】
パケット転送装置で宛先アドレスを検索する規則を説明する。パケット転送装置においては、パケットヘッダに搭載された宛先アドレスを元にルーティングテーブルを検索し、次のホップ先を決定する。インターネットではＣＩＤＲ(Classless Inter Domain Routing)の機構が導入されており、ルーティングテーブルの宛先アドレスは３２ビットのＩＰアドレスとそれに対するプレフィクス長の組み合わせで表現される。ルーティングテーブルの宛先アドレスは“ＩＰアドレス／プレフィクス長”の形式で表される。
【０００４】
宛先アドレスのうち、プレフィクス長で指定された長さ以降のビットに関してはＤｏｎ‘ｔ  Ｃａｒｅである。例えば、１２９．１３１．１７５．１２９／３２は３２ビット全てのビットがＤｏｎ’ｔ  Ｃａｒｅでない宛先アドレスであり、１２９．６０．８３／２４は先頭の２４ビットが有効な宛先アドレスである。パケットヘッダの宛先アドレスが１２９．６０．８３．１も１２９．６０．８３．１１１も同じ宛先アドレス１２９．６０．８３／２４に一致する。
【０００５】
ルーティングテーブルはパケットヘッダの宛先アドレスをキーとして用いて検索する。ルーティングテーブルを検索する際に、ＣＩＤＲでは最長一致と呼ばれるルーティングテーブル検索規則に基づく。最長一致とはキーに用いる宛先アドレスが最も長く一致するものを正解とするものである。例えば、ルーティングテーブルに宛先アドレス１２９．３８．１１１／２４と宛先アドレス１２９．３８／１６の二つの宛先アドレスがある場合に、１２９．３８．１１１．２という宛先アドレスを持つパケットが到着した場合は、宛先アドレス１２９．３８．１１１／２４の方がより長い範囲で一致するので、それを正解とする。
【０００６】
ツリーを用いて宛先アドレスを検索する例として境界値テーブルを用いた方式を紹介する。境界値テーブルを用いたツリー検索方式とは、最長一致検索を範囲検索の問題に変換して、昇順にソートされた境界値テーブルからツリーを作成し検索を行うという方式である。図４にルーティングテーブルの例を示す。ルーティングテーブルのエントリは、ＩＰアドレスとプレフィクス長とで指定され、それに対応する次ホップルータを表す値が存在する。
【０００７】
図５に、図４のルーティングテーブルを元にした宛先アドレス空間を示す。ルーティングテーブルのエントリは、ＩＰアドレスとプレフィクス長とで指定されるため、１つのエントリは範囲で示すことができる。例えば１．２．３．＊は１．２．３．０〜１．２．３．２５５と等価である。
【０００８】
図６に図４のルーティングテーブルを元にした境界値テーブルを示す。境界値テーブルでは、ルーティングテーブルの１つのエントリを始まりと終わりの２つの境界値で表し、この範囲に入った場合にルーティングテーブルの当該エントリに一致したと判断する。したがって、境界値テーブルの境界値の数は、最大でルーティングテーブルのエントリ数の２倍になる。また、ルーティングアドレス指定におけるプレフィクスの仕組みにより、各範囲はお互いに独立しているか、どちらかが相手を包含しているかの２種類の関係のみで、一部の範囲が重なるような関係はない。
【０００９】
図７に図６の境界値テーブルを元にした２分探索(binary search)のツリーを示す。境界値テーブルを用いたツリー検索方式は、２入力されたパケットの宛先アドレスから２分探索のツリーを用いて次ホップルータを決定するというものである。ツリーのノード上には境界値と次ホップルータを表す値とが格納されている。ツリーの検索はツリーのルート（頂点）から行い、各ノードではパケットの宛先アドレスとノードに格納されている境界値の大小の比較を行う。大小の比較によって次のノードへ順々に移っていく。ツリーの検索が終了した時点でパケットの宛先アドレスがどの範囲に入っているかを調査することで検索の回答結果となる次ホップルータが決定できる。
【００１０】
具体的な検索方法について図８を用いて説明する。検索すべきパケットの宛先アドレスが１．２．３．２０の場合、まずツリーのルート（ｒｏｏｔ：頂点）のノードで境界値と比較をする。この場合は、
１．２．３．２０＜１．２．３．２６
なので次ノードとして左下のノードへ移る。このノードでも境界値と比較する。
１．２．３．２０＞１．２．３．０
なので、今度は右下のノードへ移る。ここでも同様に比較を行うと
１．２．３．２０＜１．２．３．２５
であり、ここで検索を終了する。
【００１１】
パケットの宛先アドレスが含まれる範囲は、
１．２．３．０（ＮＨ＝Ｂ）＜１．２．３．２０＜１．２．３．２５（ＮＨ＝Ｃ）
となることがわかり、１．２．３．２０の次ホップルータはＢとなる。
【００１２】
ここで、注意すべきことは、ノードの境界値は「その境界値以上の場合、宛先アドレスの次ホップルータを表す値がそのノードが格納している次ホップルータを表す値となる」ということである。すなわち
１．２．３．０（ＮＨ＝Ｂ）＜Ｘ＜１．２．３．２５（ＮＨ＝Ｃ）
の場合、Ｘの次ホップルータはＣではなくＢである。したがって、「以上」で前ノードから１．２．３．２５（ＮＨ＝Ｃ）のノードに到着した場合、１．２．３．２５以外の値が宛先ＩＰアドレスであれば前ノード（ここでは１．２．３．０（ＮＨ＝Ｂ））に格納されている次ホップルータを表す値が解となる。
【００１３】
図９に具体的な検索例をもう１つ示す。今度はパケットの宛先アドレスが１．２．３．３０の場合である。図８と同様に検索を行うと、
１．２．３．２６（ＮＨ＝Ｂ）＜１．２．３．３０＜１．２．４．０（ＮＨ＝Ａ）
となることが分かり、パケットの宛先アドレス１．２．３０の次ホップルータはＢとなる。宛先アドレスが含まれる範囲を見つけるので、「未満」で前ノードから到着した場合には、１．２．４．０以外の値が宛先ＩＰアドレスであれば、前々ノードに格納されている次ホップルータを表す値が解となる（例えば、非特許文献１参照）。
【００１４】
【非特許文献１】“Routing Lookups in Hardware atMemory Access Speeds” Pankaj Gupta,Steven Lin,and Nick McKeown, IEEE INFOCOMApril 1998,Vol 3,pp.1240〜1247,San Francisco
【非特許文献２】インターネットＵＲＬ(http://bgp.potaroo.net/)２００３年７月２３日検索
【発明の開示】
【発明が解決しようとする課題】
【００１５】
ツリー検索装置は、ツリーを格納するメモリと実際に検索処理を実行する装置（プロセッサ等）から成る。高速検索は高速なメモリ（プロセッサ内部のメモリ等）を利用することにより実現可能であるが、高速なメモリは高価であり容量が少ないという問題がある。現在インターネットでは宛先アドレスが３２ビットのＩＰｖ４から宛先アドレスが１２８ビットのＩＰｖ６へ移行しつつあること、また、図１０に示すように、ルーティングテーブルのエントリ数が１０万エントリを超えているため、プロセッサ内部のメモリのような高速メモリではルーティングテーブルを格納しきれないという問題がある。なお、図１０は、毎年増加するエントリ数を示す図であり、横軸に年代をとり、西暦の下二桁を記す。縦軸にエントリ数[Active BGP(Border Gateway Protocol) entries(FIB(Forwarding
Information Base))]をとる（非特許文献２参照）。
【００１６】
ルーティングテーブル検索にＴＣＡＭ(Content-Addressable-Memory)を使う方法がある。ＴＣＡＭとはアドレスをキーとしてアクセスするのではなく、各番地に記録された値をキーとしてアクセスすることができる記憶素子である。ＴＣＡＭの各番地には“０”と“１”のバイナリ(Binary)の値だけでなく、“Ｄｏｎ‘ｔ  Ｃａｒａ”も格納することができる。このようなＴＣＡＭを用いることで高速なルーティングテーブルの検索が可能となる。
【００１７】
ＴＣＡＭでは複数のものが同時にキーとして入力されたものに一致する場合は、最も若い番地にいるものが選ばれる。ＴＣＡＭを用いて最長一致検索を行う場合はプレフィクス長が長い順番にＴＣＡＭの若番地に格納する必要が有る。最低条件は同じプレフィクス部分を共有する経路同士はプレフィクス長が長いものより若い番地に格納される必要がある。ＴＣＡＭの格納領域をプレフィクス長毎に分割するのが簡便なやり方である。図１１はそのような領域の分け方を示すものである。１２９．６０．８３．１２１／３１はプレフィクス長が３１の領域に格納し、１２９．６０．８３．１２１／３０は３０の領域に格納する。ＴＣＡＭを用いる場合は、このように並べ替えが必要となり、更新に時間がかかるという問題がある。またＴＣＡＭの容量には限界があり、ＴＣＡＭ自体の構造が複雑で大規模にはできない。また原理的にアドレスを同時に多く探すので、非常に大きな消費電力を要し、かつ高価であるため経済的ではない。
【００１８】
本発明は、このような背景に行われたものであって、ＩＰルータなどのパケット転送装置において、ルーティングテーブルの検索を、大規模なエントリに対応して高速かつ経済的に行うことができるテーブル検索装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明は、入力回線から入力されたＩＰ(Internet Protocol)パケットを識別し、このパケットを出力すべき次ホップルータを決定するためにツリーを用いるテーブル検索装置である。
【００２０】
ここで、本発明の特徴とするところは、前記ツリーを格納するメモリ部を備え、このメモリ部は、２以上のメモリを備え、第一のメモリには、前記ツリーをそのルート（ｒｏｏｔ）に相当するノードから下流に向かってＮ段目までの上段部分を格納し、当該第一のメモリと異なる第二のメモリには、前記Ｎ段目以降の下段部分を格納する手段を備えたところにある。
【００２１】
これにより、大規模なエントリを複数のメモリに分散して格納できるため、ルーティングテーブルの検索を高速かつ経済的に行うことができる。
【００２２】
前記第二のメモリに格納された前記下段部分のツリーを構成するノードの中で最上段のノードには、前記ルートに相当するノードから当該最上段のノードに至る前記第一のメモリに格納された前記上段部分の経路上のノードの有するアドレス情報を格納する手段を備えることができる。
【００２３】
これにより、前記第一のメモリに格納されるノードが保持すべき情報としては、自ノードのアドレス情報だけでよく、メモリの使用量を少なくすることができる。
【００２４】
検索すべき宛先アドレスに基づき、前記第一のメモリに格納された前記ツリーの上段部分を検索する第一の検索手段と、この第一の検索手段の検索結果に基づき、前記第二のメモリに格納された前記ツリーの下段部分の最上段ノードを検索する第二の検索手段と、前記検索すべき宛先アドレスがこの第二の検索手段により検索された前記最上位ノードが有するアドレス未満のときには、当該最上位ノードに格納された前記上段部分の経路上のノードの有するアドレス情報を参照し、当該検索すべき宛先アドレス以下となる最も下流のノードが有するアドレスを当該検索すべき宛先アドレスの次ホップルータのアドレスとして決定する手段とを備えることができる。
【００２５】
すなわち、第一のメモリに格納された上段部分のノードにおいて、従来は次ホップルータが決定可能な場合でも本発明では第二のメモリに格納された下段部分の最上位ノードまで検索を進める。そして、この最上位ノードが有する上段部分のアドレス情報に基づき次ホップルータを決定する。これにより、メモリを複数に分けてツリーを保持することが可能になる。
【００２６】
また、前記第一のメモリは、前記第二のメモリと比較して高速小容量であることができる。これにより、メモリを経済的に有効利用することができる。
【００２７】
本発明の他の観点は、情報処理装置にインストールすることにより、その情報処理装置に、本発明のテーブル検索装置の各手段に相応する機能を実現させることを特徴とするプログラムである。
【００２８】
本発明のさらに他の観点は、本発明のプログラムが記録された前記情報処理装置読取可能な記録媒体である。本発明のプログラムは本発明の記録媒体に記録されることにより、前記情報処理装置は、この記録媒体を用いて本発明のプログラムをインストールすることができる。あるいは、本発明のプログラムを保持するサーバからネットワークを介して直接前記情報処理装置に本発明のプログラムをインストールすることもできる。
【００２９】
これにより、汎用の情報処理装置を用いて、ＩＰルータなどのパケット転送装置において、ルーティングテーブルの検索を、大規模なエントリに対応して高速かつ経済的に行うことができるテーブル検索装置を実現することができる。
【発明の効果】
【００３０】
本発明によれば、ＩＰルータなどのパケット転送装置において、ルーティングテーブルの検索を、大規模なエントリに対応して高速かつ経済的に行うことができる。
【発明を実施するための最良の形態】
【００３１】
本発明実施形態を図１および図２を参照して説明する。図１は本発明実施形態のテーブル検索装置の構成図である。図２は本発明実施形態におけるツリーのメモリ部への格納状態を説明するための図である。
【００３２】
本実施形態は、入力回線から入力されたＩＰパケットを識別し、このパケットを出力すべき次ホップルータを決定するためにツリーを用いるテーブル検索装置である。
【００３３】
ここで、本実施形態の特徴とするところは、前記ツリーの検索処理や更新処理を行う処理部１と、前記ツリーを格納するメモリ部とを備え、このメモリ部は、図１に示すように、内部メモリ２と外部メモリ３とを備え、図２に示すように、内部メモリ２には、前記ツリーをそのルート（ｒｏｏｔ）に相当するノードから下流に向かってＮ段目までの上段部分を格納し、外部メモリ３には、前記Ｎ段目以降の下段部分を格納する手段を備えたところにある。
【００３４】
外部メモリ３に格納された前記下段部分のツリーを構成するノードの中で最上段のノードには、前記ルートに相当するノードから当該最上段のノードに至る内部メモリ２に格納された前記上段部分の経路上のノードの有するアドレス情報を格納する手段を備える。
【００３５】
処理部１は、検索すべき宛先アドレスに基づき、内部メモリ２に格納された前記ツリーの上段部分を検索する第一の検索手段と、この第一の検索手段の検索結果に基づき、外部メモリ３に格納された前記ツリーの下段部分の最上段ノードを検索する第二の検索手段と、前記検索すべき宛先アドレスがこの第二の検索手段により検索された前記最上位ノードが有するアドレス未満のときには、当該最上位ノードに格納された前記上段部分の経路上のノードの有するアドレス情報を参照し、当該検索すべき宛先アドレス以下となる最も下流のノードが有するアドレスを当該検索すべき宛先アドレスの次ホップルータのアドレスとして決定する手段とを備える。なお、内部メモリ２は、外部メモリ３と比較して高速小容量である。
【００３６】
また、本発明は、汎用の情報処理装置にインストールすることにより、その情報処理装置に本発明のテーブル検索装置の各手段に相応する機能を実現させるプログラムとして実現することができる。このプログラムは、記録媒体に記録されて情報処理装置にインストールされ、あるいは通信回線を介して情報処理装置にインストールされることにより当該情報処理装置に、テーブル検索装置の各手段に相応する機能を実現させることができる。
【００３７】
以下、本発明の実施例を説明する。
【００３８】
本実施例のテーブル検索装置は、図１のように検索処理や各ツリーの更新処理を行う処理部１と、高速小容量の内部メモリ２と低速大容量の外部メモリ３とからなる。処理部１は入力されたパケットの宛先アドレスを読み込み、その宛先アドレスを検索キーとして検索を行う。まずは内部メモリ２からツリーの上段部分に存在するノードの情報を取り出し、宛先アドレスと比較を行っていく。
【００３９】
上段部分の検索終了後、次に検索を行う外部メモリ３からツリーの下段部分に存在するノードの情報を取り出し宛先アドレスと比較を行っていく。最終的にツリーの検索が終了した時点で解として入力されたパケットの次ホップルータを表す値を返す。
【００４０】
図２はツリー情報の格納例を示す。本例では、ツリーのＮ段目（Ｎは正数）までを内部メモリ２に、Ｎ＋１段目以降を外部メモリ３に格納している。図３に、図７に示したツリーを２段目で切り、１から２段目までを内部メモリ２に、３段目以降を外部メモリ３に格納した例を示す。ここでは説明を簡単にするために段数は小さくしているが、実際には内部メモリ２の容量に応じて切る段数を決定することになる。
【００４１】
図３は本発明実施例を論理的に説明するための図である。内部メモリ２には次ホップノードあるいは次ホップルータを表す値を入れずに、外部メモリ３に格納されている下段のツリーの最上段ノード（本例では３段目）に、このノード自身の次ホップノードあるいは次ホップルータを表す値と上段ツリーの次ホップノードを表す値とを格納する。１．２．３．２５（ＮＨ＝Ｃ）のノードにはそのノードの直上のノードである１．２．３．０（ＮＨ＝Ｂ）を次ホップノードとすることを示す値であるＢも格納する。１．２．６．０（ＮＨ＝Ａ）のノードも同様に直上のノードの１．２．５．０（ＮＨ＝Ｄ）を次ホップノードとすることを示す値であるＤも格納する。１．２．４．０（ＮＨ＝Ａ）は直上ではなく２つ上のノード１．２．３．２６（ＮＨ＝Ｂ）を次ホップノードとすることを示す値であるＢも格納する。
【００４２】
このように直上ノードあるいは２つ上のノードの次ホップノードを表す値を、外部メモリ３に格納されている下段のツリーの最上段ノードに格納する。前述した境界値テーブルからツリーを用いた検索を行う場合の説明のとおり、「以下」で前ノードからあるノードに到着し検索が終了した場合は、到着したノードが格納している境界値の値が宛先ＩＰアドレスでなければ前ノードに格納されている次ホップルータを表す値が解となる。
【００４３】
したがって、そのノードに前ノードの次ホップルータを表す値を入れておけば、前ノードに次ホップルータを表す値を入れなくても検索を行うことができる。同様に「未満」で前ノードから到着した場合には、到着したノードが格納している境界値の値が宛先ＩＰアドレスでなければ、前々ノードに格納されている次ホップルータを表す値が解となる。したがって、そのノードに前々ノードの次ホップルータを表す値を入れておけば、前々ノードに次ホップルータを表す値を入れなくても検索を行うことができる。
【００４４】
このように内部メモリ２内に次ホップノードあるいは次ホップルータを表す値を入れないことで、１つのエントリが使用する内部メモリ量を削減することにより、内部メモリにより多くのエントリを格納することが可能となる。
【産業上の利用可能性】
【００４５】
本発明は、ＩＰルータなどのパケット転送装置において、ツリーを用いたルーティングテーブルの検索を、大規模なエントリに対応して高速かつ経済的に実現することができる。これにより、ＩＰネットワークに収容可能なユーザ端末数の増大に対応することができ、需要拡大に対応できる。
【図面の簡単な説明】
【００４６】
【図１】本発明実施形態のテーブル検索装置の構成図。
【図２】本発明実施形態におけるツリーのメモリ部への格納状態を説明するための図。
【図３】本発明実施例を論理的に説明するための図。
【図４】ルーティングテーブルの一例を示す図。
【図５】宛先アドレス空間を示す図。
【図６】ルーティングテーブルと境界値テーブルとの関係を示す図。
【図７】図６の境界値テーブルを元にした２分探索(binary search)のツリーを示す図。
【図８】ツリー検索手順を説明するための図。
【図９】ツリー検索手順を説明するための図。
【図１０】毎年増加するエントリ数を示す図。
【図１１】ＴＣＡＭを説明するための図。
【符号の説明】
【００４７】
１  処理部
２  内部メモリ
３  外部メモリ
【図１】
2005117208.tif 000003
【図２】
2005117208.tif 000004
【図３】
2005117208.tif 000005
【図４】
2005117208.tif 000006
【図５】
2005117208.tif 000007
【図６】
2005117208.tif 000008
【図７】
2005117208.tif 000009
【図８】
2005117208.tif 000010
【図９】
2005117208.tif 000011
【図１０】
2005117208.tif 000012
【図１１】
2005117208.tif 000013