JP3589349B2 - 経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体 - Google Patents
経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP3589349B2 JP3589349B2 JP2001004643A JP2001004643A JP3589349B2 JP 3589349 B2 JP3589349 B2 JP 3589349B2 JP 2001004643 A JP2001004643 A JP 2001004643A JP 2001004643 A JP2001004643 A JP 2001004643A JP 3589349 B2 JP3589349 B2 JP 3589349B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- search
- block
- entry
- bit information
- 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)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の属する技術分野】
本発明は、IPパケットの経路選択に関し、特にIPv6等において目的アドレスから転送先アドレスを効率よく検索する経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
インターネットにおいて、IP(Internet Protocol)パケットをルータなどの中継装置で転送する場合に、中継装置は、IPヘッダに含まれる目的アドレスに基づいて、次の転送先のIPアドレス(以下、転送先アドレスと呼ぶ)を決定する。この処理を、経路検索という。
【0003】
中継装置は、目的アドレスと転送先アドレスを関連付ける検索テーブルを備え、入力されるIPパケットである各目的アドレス毎にその対応する転送先アドレスを検索テーブル内から検索することにより、転送先を決定することができる。
【0004】
表1では、IPv4(Internet Protocol Version 4)の検索テーブルの一例を示している。
【0005】
【表1】
【0006】
表1における「ネットワークアドレス」及び「マスク長」は、目的アドレスがどのネットワークに属するかを示すものであり、このエントリ番号が1〜3の3種類の目的アドレスのそれぞれに、対応する転送先アドレスが示されている。
【0007】
マスク長は、例えばその値が“N”の場合には、32ビット中の上位Nビットが“1”であることを示す。つまり、マスク長が“24”の場合には、ヘキサ表記(16進表記)で“0xFFFFFF00”に相当するのであり、これをネットマスクと呼ぶ。
【0008】
これは、目的アドレスと、マスク長で示されるネットマスクとの論理積が、同エントリのネットワークアドレスと一致するかどうかで判断するのである。例えば、目的アドレスが“11.1.1.5”の場合には、この目的アドレスとマスク長が“24”のネットマスクとの論理積を取ると、3番目のエントリに示される“11.1.1.0”に等しいため、これにより3番目のエントリに属すると判定する。
【0009】
図13は、従来の経路検索の処理を説明するためのフローチャートである。ここで、表1の検索テーブルを装備する中継装置に、“10.1.0.1”の目的アドレスを持つIPパケットが入力された場合を考える。この場合、入力されたパケットの目的アドレスに該当するエントリとして、1番目と2番目との2つのエントリが該当することになる。
【0010】
このような場合、中継装置は、目的アドレスが属するネットワークアドレスを備えるエントリの内で、マスク長が最長のものを検索結果とする。これは、最長一致検索(LPM)と呼ばれる方法である。
【0011】
この最長一致検索により、中継装置は、目的アドレスに該当する1番目と2番目のエントリの内で、マスク長の長い2番目のエントリを選択し、そのエントリの転送先アドレスである“21.1.1.1”のIPアドレスに、このIPパケットを転送するのである。
【0012】
このように、IPパケットの経路検索では、1つの検索において検索基準を満たす候補が複数存在する可能性があり、最長一致検索等により正しい検索結果を導出しなければならない。これは入力IPパケットの目的アドレスのみからでは、その目的アドレスが属するネットワークアドレスがわからないことに起因する。
【0013】
この課題を踏まえて、検索テーブル及び検索処理の実装方法として、いくつかの方法が提案されておりその1つに2分木を用いた方法がある。
【0014】
2分木を用いる方法は、ソフトウェア実装では一般的であり、また特開平11−191781号公報においてはハードウェアへの実装方法も提案されている。
【0015】
図11に、2分木の例を示す。図11中の各矩形を2分木のノードと呼ぶ。
【0016】
2分木は、ビット“0”/“1”に従って分岐する構成をとり、各分岐が目的アドレスのビットに相当する。つまり図11の例では、根ノードを開始点として、目的アドレスの最上位ビットが“0”の場合は左のノードに進み、“1”の場合は右のノードに進む。各ノードは、実際には回路上のメモリ空間に相当し、そこには最長一致検索に関する情報が含まれているので、その情報を参照して検索処理を進めることができる。
【0017】
この2分木の方法は、最長一致検索に効率よく対応できるので、ソフトウェアやFPGAによる実装に適している。また収容できる経路エントリ数に関しても有利である。ただし、登録されるエントリによっては最悪32ビット全てを検査する必要があり、それだけメモリへのアクセス回数が増加する傾向がある。特に128ビットのアドレス空間を持つIPv6では、効率が悪い。
【0018】
一方、IPv6(Internet Protocol Version 6)は、主に8ビット単位の階層構造を念頭に設計されているので、マスク長は8ビット単位と想定してよい。たとえ、8ビット単位でないマスク長を設定する必要が生じても、それを8ビット長に展開して設定すればよい。
【0019】
例えば、ネットワークアドレスが“10.10.64.0”でマスク長が20ビットのエントリを設定する場合、“10.10.64.0”、“10.10.65.0”、“10.10.66.0”、・・・、“10.10.79.0”の16エントリを、マスク長24ビットで設定すればよいことになる。
【0020】
ここではIPv4のアドレス例を用いたが、IPv4ではアドレス空間が狭いため、8ビット長単位以外のマスク長でエントリを設定する場合は多く、このような展開処理が頻発してしまう可能性がある。しかしIPv6ではアドレス空間が広く、8ビット単位のアドレス階層が推奨されているので、このような展開処理の必要性は低くなる。よって、この展開処理を想定した上で、マスク長が8ビット単位であることを前提とした経路検索が可能となる。
【0021】
そこで、2分木を用いないで、図12に示すような256分木で対応することが考えられる。つまりノードの分岐は、IPアドレスの8ビット毎に行われる。このため、2分木で最悪8回ノードを辿らなければならないところが、1回に減る。これはメモリアクセスの回数が減ることに相当し、検索の速度が速くなることを意味する。
【0022】
ただし、256分木の欠点は多くのメモリ空間を必要とすることである。2分木の場合は左右分岐のための情報を1つのノードに含めておけばよいが、256分木の場合はその256分岐のための情報を格納しておく必要がある。実際には2分岐しかしない場合においても、256分岐のための空間を用意する必要がある。そのため、メモリ不足のためにエントリ数の上限が抑えられるという欠点がある。
【0023】
【発明が解決しようとする課題】
上述したように従来のIPパケットの経路検索では、以下に述べるような問題点があった。
【0024】
従来のIPパケットの経路検索方法である2分木の方法では、登録されるエントリによっては32ビットの全てのビットを検査する必要があり、メモリへのアクセス回数を多く必要とするという問題点がある。
【0025】
従来のIPパケットの経路検索方法である256分木の方法では、256種類の分岐のための多くのメモリ空間を用意する必要があり、エントリ数の上限が抑えられるという問題点がある。
【0026】
本発明の目的は、上記従来技術の欠点を解決し、複数の検索方法を適切に組み合わせることにより、メモリへのアクセス回数と必要とするメモリ容量との双方を同時に少なく抑えることを実現する経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体を提供することである。
【0027】
【課題を解決するための手段】
上記目的を達成するため本発明の経路検索システムは、IPパケットの目的アドレスを基に転送先アドレスを決定する経路検索システムにおいて、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする。
【0028】
請求項2の本発明の経路検索システムは、前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定し備えることを特徴とする。
【0029】
請求項3の本発明の経路検索システムは、前記ノード判定部は、検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出する手段を備え、前記ノード判定部は、前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出することを特徴とする。
【0030】
請求項4の本発明の経路検索システムは、前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記ノード判定部が前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下になるように予め設定し備え、前記検索テーブルは、各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録し備えることを特徴とする。
【0031】
請求項5の本発明の経路検索システムは、IPv6のIPパケットの経路検索を行なうことを特徴とする。
【0032】
請求項6の本発明の経路検索システムは、前記目的アドレスのサイズを128ビットとし、前記ブロックのサイズを8ビットとし、前記検索テーブルは、各前記目的アドレスを16個の前記ブロックに分割することによる16階層の木構造とする、ことを特徴とする。
【0033】
請求項7の本発明の経路検索システムは、前記指定ビット情報は、前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全8ビットを照合する方式と、当該ブロックの前半4ビットを照合する方式との、いずれか一方により指定することを特徴とする。
【0034】
請求項8の本発明の経路検索システムは、前記指定ビット情報は、前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全8ビットを照合する方式と、各ノード毎のそれぞれにおいて予め定められた位置である当該ブロック内の4個所のビットを照合する方式との、いずれか一方の方式により指定することを特徴とする。
【0035】
請求項9の本発明の経路検索装置は、IPパケットの目的アドレスを基に転送先アドレスを決定する経路検索装置において、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする。
【0036】
請求項15の本発明の交換機は、IPパケットの目的アドレスを基に転送先アドレスを決定しIPパケットを転送する交換機において、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする。
【0037】
請求項18の本発明の経路検索方法は、IPパケットの目的アドレスを基に転送先アドレスを決定する経路検索方法において、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを参照するステップと、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索するステップを有し、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するステップと、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノードエントリの抽出ステップにより読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するステップと、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索するステップを備えることを特徴とする。
【0038】
請求項19の本発明の経路検索方法は、前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定するステップを備えることを特徴とする。
【0039】
請求項20の本発明の経路検索方法は、検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出するステップと、前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出するステップを備えることを特徴とする。
【0040】
請求項21の本発明の経路検索方法は、前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記判定ステップで前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下となるように予め設定するステップと、各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録するステップを備えることを特徴とする。
【0041】
請求項22の本発明の経路検索方法は、IPv6のIPパケットの経路検索を行なうことを特徴とする。
【0042】
請求項23の本発明のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体は、コンピュータを制御することにより、IPパケットの目的アドレスを基に転送先アドレスを決定する経路検索プログラムを記録した記録媒体において、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを参照するステップと、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索するステップを有し、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するステップと、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノードエントリの抽出ステップにより読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するステップと、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索するステップを備えることを特徴とする。
【0047】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【0048】
本発明は、IPパケットの転送時において、当該パケットの送信先のアドレスである目的アドレスを基に次の転送先のアドレスを検索するための、多分木構造の効率的な経路検索を提供する。
【0049】
以下の実施の形態においては、特に、IPv6(Internet Protocol Version 6)における経路検索を例に本発明の経路検索を説明する。ここでは、IPv6における128ビットのアドレスを、先頭から8ビット毎に16個のブロックに分けて、順次この分割された各ブロック毎に多分木の検索を行なう方式を例に説明する。
【0050】
この木構造においては、各ブロックのノードは下位のノードを、8ビットのデータにより示される256種類を備えることができる。このため従来では、図12に示されるように各ノードにおいて256分木の検索を行なうのであったが、しかし、実際に各ノードからリンクする下位のノードの数は256よりもはるかに少ない場合も多く、かつこれは256種類の分岐のための多くのメモリ空間を用意する必要がある。そこで本発明では、このような場合のノードを、より少ない数の分木により検索することにより必要とするメモリの削減を実現する。
【0051】
更に、この方式においては、従来の256分木の検索と同様に、目的アドレスを分割した16個のブロックによる各ノード毎に検索を行なうため、検索するノード数は256分木の方式と同じであり、256分木の従来の方式と同様のメモリの少ないアクセス回数により検索できる。このようにして、効率の良い経路検索を実現するのである。
【0052】
つまり、128ビットのIPv6アドレスに対して、8ビット毎に区切る256分木を採用すると16階層の木となる。一方で、4ビット毎に区切る16分木を、従来の方法でそのまま採用したのであれば、倍の32階層が必要となる。しかし、本発明では256分木ノードと16分木ノードを併用するが、256分木における分岐の少ないノードを16分木ノードとすることにより、階層を16階層のままに保つのである。
【0053】
本発明の第1の実施の形態の経路検索システムでは、図3の例に示されるように256分木と16分木の検索方法を併用する。つまり、256分木の各ノードにおいて、分岐の数が(ここでは16個よりも)少ないノードにおいては16分木の木構造を採用するのである。ここで、各ノードの検索方法が256分木であるのか16分木であるのかの判定は、検索時に参照する検索テーブルの作成段階において、各ノードがリンクする下位のノード数を基に決定し記録しておき、検索時においては、その検索テーブルに指定された方法により検索を実行する。
【0054】
ここで、検索テーブルは、パケットの送信先のアドレスである目的アドレスと、次の転送先のアドレスを示す転送先アドレスとの対応を記録したテーブルであり、これをシステム内の検索処理部(経路検索装置)が参照することにより、転送先アドレスを検索する。
【0055】
またこのようにして、本実施の形態の検索テーブルは、従来の検索テーブルと異なり各ノードにおいて検索方式の指定を備えるものの、これは各ノードのリンクするノード数等を基に容易に決定することができるため、従来の単純な256分木の検索テーブルを元に容易に生成することが可能である。また、この検索方式の指定は、各ノードのエントリ数の増減に応じて適宜更新し、256分木であるか16分木であるかを指定する。例えば、16分木ノードのエントリ数が増加して収容しきれなくなった場合には、256分木ノードに置換して検索テーブルの木の一部を再構築するのである。このようにして、各ノードのエントリ数に応じて木構造を構成し、効率的な検索を実現するのである。
【0056】
図4は、本実施の形態の木構造を概念的に示した図である。
【0057】
木は、128ビットのアドレスを8ビット毎のブロックに分割したことによる、“L0”から“L15”までの16階層に分けられる。図4では、“L3”までを記載しており、以下同様にして“L15”の階層まで伸びている。
【0058】
木は、ノードと経路データから構成されている。
【0059】
各ノードは、それぞれのノードを一意に識別する識別子であるノードIDを備える。また各ノードは、リンクする下位のノードを示す256個又は16個のノードエントリを備える。
【0060】
ノードの種類には、根ノード、葉ノード、分岐ノードがある。根ノードは、“L0”階層にある固定ノードである。分岐ノードは、“L1”以下の階層に位置し、そのノードエントリのいずれかに下位層のノードへの分岐を有するノードである。葉ノードは、そのノードエントリのいずれかに経路データ有するノードである。また、分岐ノードが葉ノードであってもよい。実装上においては、各ノード及び経路データはメモリ上の1つの領域を占める。
【0061】
図5は、本実施の形態における、IPv6アドレスを分割したブロックを256分木のノードとする場合の、ノード内のノードエントリの構成を説明するための図である。
【0062】
ここでは、128ビットのIPv6アドレスを、8ビット毎のブロックに区切り、それぞれのブロックを順次“B0”から“B15”と示す。この“B0”から“B15”の各ブロックは、それぞれ“L0”から“L15”までの各階層に対応する。
【0063】
例えば、図4におけるノードA(L1)とノードB(L2)との関係は、図5の例に示すように、ノードAのノードIDに対して、ノードBの階層に相当するブロックのビット列“B2”を付加し、必要に応じて数ビットの“0”を付加したものが、ノードBを構成するノードエントリのアドレスになる。
【0064】
図6は、本実施の形態における、IPv6アドレスを分割したブロックを16分木のノードとする場合の、ノード内のノードエントリの構成を説明するための図であり、図5の場合と同様に、図4のノードA(L1)とノードB(L2)との関係を示している。
【0065】
先の図5の256分木の場合と異なるのは、“B2”の全8ビットを参照するのではなく、上位4ビットのみを参照する点である。
【0066】
先の256分木の場合のように全8ビットを参照するならば、256エントリ分のメモリ空間を必要とするが、そのノードのエントリ数が16個よりも少ない場合において、図6のように4ビットのみに制限することにより16エントリ分のメモリ空間で済み、必要とするメモリが削減されるのである。
【0067】
また、このように16分木の場合は、IPv6アドレスを分割したブロックの、一部のビットのみを用いて当該エントリの抽出を行ない、その他のビットは欠落することになる。ただし、本実施の形態では、エントリ抽出後に、この抽出時に使用しなかった各ビットを参照し、正しいアドレスのエントリであるかどうかを確認する。
【0068】
図7は、本実施の形態のノードエントリ及び経路データエントリのデータ構成の一例を示す図である。図7の例においては、ノードエントリのデータを32ビット、経路データのデータを128ビットとしている。
【0069】
図7の例においては、ノードエントリの情報を示すために、“V”、“C”、“M”、“N”、“H”、“ノードID”の各フラグを備えている。この内の“V”、“C”、“M”、“N”の各フラグは、“0”又は“1”を示すフラグであり、表2においては、これらのフラグの“0”又“1”の各状態における意味を示している。
【0070】
【表2】
【0071】
“V”は、ノードエントリが有効であるか無効であるかを示すフラグである。“V”が、“1”である場合には有効、“0”である場合には無効とする。ノードエントリが無効(V=0)の場合には、他のフィールドの情報は意味を持たない。
【0072】
“C”は、下位層のノードへのリンクを持つか持たないかを示すフラグである。“C”が“1”の場合には、そのノードエントリは下位層のノードへのリンクを持ち、“0”の場合には持たない。
【0073】
“M”は、リンクする下位層のノードが、256分木ノードであるか16分木ノードであるかを示すフラグである。“M”が、“1”の場合には16分木ノードとし、“0”の場合には256分木ノードとする。このため、この“M”のフラグは、そのノードエントリが下位層へのリンクを備える(C=1)場合にのみ有効である。
【0074】
“N”は、そのノードエントリ自身が、256分木ノードであるか16分木ノードであるかを示すフラグである。“N”が、“1”の場合には16分木ノードとし、“0”の場合には256分木ノードとする。
【0075】
“H”は、IPv6アドレス中の当該ノードにおいて処理中のブロックにおける、欠落したブロックビットを示すフラグであり、つまりここでは当該ブロックの下位4ビットの値を示す4ビット領域のフラグである。例えば、現在処理中のブロック(そのノードエントリのブロック)が、“01001000”である場合には、下位4ビットの“1000”をHフィールドに格納する。
【0076】
このHフィールドは、次のように用いる。
【0077】
例えば、目的アドレスAと目的アドレスBの2つの目的アドレスがあり、その上位2つのブロックが同一であって、3番目のブロック(つまりB2)がそれぞれに“01001000”、“01001111”であるとする。そして、検索対象のIPアドレスが、上位2つのブロックが目的アドレスA及び目的アドレスBと同一であり、ここで3番目のブロック(つまりB2)“01001000”のエントリを登録する場合を考える。
【0078】
この場合、当該ブロックの上位4ビットの“0100”を参照して、そのノードエントリを特定するため、目的アドレスAと目的アドレスBの双方がこの検索対象のIPアドレスに対して指されることになる。よって、ノードエントリの16分木検索時に参照されなかったビットである“H”フィールドを参照することにより、各ブロックの下位4ビットを比較して、正しく検索を行なうのである。
【0079】
この例では、目的アドレスBの3番目のブロック“B2”の下位4ビットが、検索対象のIPアドレスと異なるため、目的アドレスBとは一致しないと判定される。
【0080】
“ノードID”のフィールドにおいては、当該ノードエントリが示すリンク先である下位層のノードの、ノードIDを示す。当該ノードが、下位層へのリンクを備える場合に(“C”が“1”の場合に)有効である。
【0081】
また、図7に示される“経路ID”のフィールドは、経路データの識別子である。この“経路ID”により、経路データが格納されているメモリアドレスを一意に特定する。また、経路データがない場合には、“経路ID”を“0”とすることにより経路データがない旨を示す。経路データには、128ビットの転送先アドレス情報のみ含まれる。
【0082】
図1は、本実施の形態の経路検索システムにおける険路検索を実行する検索処理部100(経路検索装置)の構成を示すブロック図であり、図2は、本実施の形態の検索処理部100の処理を説明するためのフローチャートである。
【0083】
まず検索処理部100には最初、128ビットの目的アドレスと、初期階層、根ノードIDが入力される。初期階層の値は“0”(つまり“L0”)であり、根ノードIDは固定値である。
【0084】
目的アドレス保持部10は、入力された目的アドレスを記憶する。
【0085】
アドレス生成部20は、検索時において現在のターンにおける階層値、ノードID、そして下位層のノードの分木の種類を示すM値を保持する。検索開始時は、階層値=初期階層値、ノードID=根ノードID、M=“0”(下位層のノードは256分木)とする。
【0086】
アドレス生成部20は、目的アドレス保持部10から、現在の階層値に対応する8ビットのブロックを読み出し、M=“0”の場合は8ビットのまま、M=1の場合は上位4ビットを抽出し、アドレス生成に用いる。
【0087】
アドレス生成においては、アドレス生成部20は、そのブロックのビット列と保持するノードIDとを用いて、M=“0”(下位層のノードが256分木)の場合には図5で述べたアドレス生成を行ないノード読み出し部30に出力し、下位層が16分木ノード(M=“1”)の場合には図6で述べたアドレス生成を行ない、同様にノード読み出し部30に出力する。
【0088】
また、アドレス生成部20は、ノード判定部50に対して、目的アドレス保持部10から読み出したブロックの全8ビットを、Mの値にかかわらずノード判定部50に出力する。以降は、アドレス生成部20は、子ノード判定部51からノードID及びM値の最新の値の入力を受け付けて、また階層値はアドレス生成の度にインクリメントし、同様にこれらの最新の値を用いて上記の処理を実行する。
【0089】
また、アドレス生成部20は、制御部60からリセット信号を受信した場合には、内部状態をリセットして次の目的アドレスの入力を待機する。
【0090】
ノード読み出し部30は、制御部60からのノード読み出し要求を受けて、アドレス生成部20から出力されたアドレスのノードエントリをメモリコントローラ40を介して外部メモリ41から読み出し、これをノード判定部50に出力する。
【0091】
ノード判定部50では、ノード読み出し部30から出力されたノードエントリ情報の“N”ビットを検査して、そのノードエントリが256分木ノードであるのか16分木ノードであるのかを調べる。
【0092】
もし、16分木ノードである場合(N=1の場合)には、先のノード読み出し部30による抽出の時点においてチェックされなかったビットがあるため、これをチェックし正しいノードエントリが読み出されたのかどうかをチェックする。つまり、アドレス生成部20より出力されたブロックの内の、チェックされなかったビットである下位4ビットと、Hフィールドの4ビットとを比較するのである。
【0093】
比較の結果、同じであれば、正しいノードエントリが読み出されたのであるから、これを子ノード判定部51、有効判定処理部52、経路IDフィルタ部53に出力して、制御部60に読み出しの成功を通知する(“1”を出力する)。比較結果が異なる場合は、制御部60に読み出しの失敗を通知する(“0”を出力する)。
【0094】
もし、256分木ノードである場合(N=0の場合)には、先のノード読み出し部30による抽出の時点において既にブロックの全8ビットがチェックされているため、正しいノードエントリが読み出されているのであり、そのノードエントリをそのまま子ノード判定部51、有効判定処理部52、経路IDフィルタ部53に出力して、制御部60に読み出しの成功を通知する(“1”を出力する)。
【0095】
子ノード判定処理部51は、ノードエントリの“C”ビットを検査して子ノードの有無を判定し、もし下位層のノードへのリンクを持つ場合(C=1の場合)には、そのノードエントリにおけるM値及びノードIDのフィールドの値をアドレス生成部20に出力する。アドレス生成部20では、このM値とノードID値を用いて、次のアドレス生成を行なう。またこの場合、子ノード判定処理部51は、同時に“C”ビットの値を制御部60に出力する。
【0096】
有効判定処理部52は、ノードエントリの“V”ビットを抽出して制御部60に出力する。
【0097】
経路IDフィルタ部53は、ノードエントリから経路IDフィールドの値を抽出して制御部60と結果出力部70に出力する。
【0098】
制御部60の処理を表3に示す。
【0099】
【表3】
【0100】
表3においては、最初の4列はそれぞれノード判定部50、子ノード判定部51、有効判定処理部52、経路IDフィルタ部53から制御部60に出力される値を示し、“*”はどのような値でもよいことを示す。
【0101】
制御部60は、これらの入力値の値に基づいて、ノード読み出し部30に対しノード読み出し要求信号、結果出力部70に対し結果出力要求信号又は経路ID更新要求信号、アドレス生成部20に対しへリセット信号を出力する。
【0102】
つまり、制御部60は、当該ノードエントリが無効(V=0)又は検索に該当するノードエントリを備えない場合(ノード判定部が判定)、又は子ノードを備えない場合(C=0)には、結果出力要求及びリセットを行なう。また、これらの条件に全て該当しない場合にはノード読み出し要求を行なう。
【0103】
また、制御部60は、経路IDフィールドに経路データの識別子が記録されている場合(経路IDが“0”でない場合)には、経路ID更新要求を行なう。
【0104】
結果出力部70は、制御部60から経路ID更新要求を受け付けた場合のみ、経路IDフィルタ部53から出力された経路IDを保持する。既に保持している経路IDがある場合は、それを更新する。
【0105】
また、結果出力部70は、制御部60から結果出力要求を受けた場合、メモリコントローラ40を介して外部メモリ41から経路IDが指す経路データを読み出して、その転送先アドレス値を出力する。保持する経路IDがない場合には、検索失敗を示す信号を出力する。
【0106】
以上の処理を、目的アドレスを分割した各ブロックに対して順次実行することにより、メモリ領域として実装されている木のノードを順次辿っていき、求める経路情報を見つけることができる。
【0107】
以上説明したように、本実施の形態の経路検索システムによれば、256分木と16分木との検索方法を適切に組み合わせて、メモリへのアクセス回数と必要とするメモリ容量との双方を同時に少なく抑えることができる。
【0108】
次に、本発明の第2の実施の形態を説明する。
【0109】
先の第1の実施の形態では、検索テーブルの作成において、上位4ビットによる検索において1つでも衝突が発生するノードは、必ず256分木ノードとする必要があった。
【0110】
例えば、図6において、2つの経路エントリ“R1”、“R2”を、上位16ビット(上位2ブロック)が等しく、3番目のブロックである“B2”がそれぞれ“01001000”と“01001111”であるものとする。ここで、“R1”が既に検索テーブルの中に登録済みの場合に、新たに“R2”を登録しようとすると、“R1”と“R2”は3番目のブロックである“B2”のノードにおいて衝突することになる。
【0111】
先の第1の実施の形態では、このような場合には、衝突の発生するエントリを新規に登録する時点で、そのノードを直ちに256分木ノード(図5)に置換して更新する必要がある。最悪の場合には、2番目のエントリを登録した時点で256分木への置換が必要となる場合もあり非効率である。
【0112】
そこで、本実施の形態では図8に示すように、16分木ノードが保有するノードエントリを“16”から“64”に拡張し、“B2”等の各ブロックによって参照するノードエントリを4つとする。上記の例の場合では、“R1”と“R2”は同じ上位4ビット“0100”に該当するノードエントリであり、それぞれノードエントリA、ノードエントリBに格納される。
【0113】
次に、本実施の形態の動作を説明する。
【0114】
ノード読み出し部30は、ノードを読み出す際にはバースト読み出しを行ない、一度に4エントリまで同時に読み出す。メモリアクセス回数の増加があるものの、連続したメモリ領域を読み出すため大きな遅延にはならない。また、ノード読み出し部30は、読み出した各エントリを順次ノード判定部50に出力する。
【0115】
ノード判定部50は、一度に最大4エントリのノードエントリの入力を順次受け付け、先の第1の実施の形態と同様の方法により、ノード判定処理をこの4エントリのそれぞれに行なう。もし、一致するエントリがある場合には、そのエントリを子ノード判定部51、有効判定処理部52、経路IDフィルタ部53に出力し、制御部60には一致するエントリが検索された旨を通知する(“1”を出力する)。
【0116】
ここでもし、一致するエントリがない場合は、制御部60には一致するエントリが検索されなかった旨を通知する(“0”を出力する)。
【0117】
なお、256分木ノードである場合(N=0の場合)には、ノード読み出し部30においてブロックの全8ビットがチェックされて抽出されるため、抽出されるノードは1つのみであり、この入力されたエントリをそのまま子ノード判定部51、有効判定処理部52、経路IDフィルタ部53に出力して、制御部60に一致するエントリが検索された旨を通知する(“1”を出力する)。
【0118】
この他の動作は、第1の実施の形態の動作と同様である。
【0119】
以上説明したように本実施の形態では、第1の実施の形態の効果に加えて、更に衝突を緩和することができる。
【0120】
次に、本実施の形態の第3の実施の形態を説明する。
【0121】
本実施の形態においては、先の第2の実施の形態の構成において、更にノードエントリのデータ構成を図9のように修正する。第1、第2の実施の形態の異なるのはHフィールドを8ビットに拡張して、マスクフィールド8ビットを追加したことである。
【0122】
本実施の形態のHフィールドは、各ブロックの全8ビットをそのまま登録する。つまり、第1、第2の実施の形態では、下位4ビットのみであったが、ここでは全ビット格納するのである。
【0123】
マスクフィールドは、次のノードを検索する際に用いるマスクビットである。これは、図10に示すように、各ブロックのマスクビットに指定される位置の4ビットを抽出してアドレス生成を行なうのである。
【0124】
例えば、マスク値が“00001111”であれば、図8で上位4ビットとしていた部分が、下位4ビットになる。またマスク値が“01010101”であれば、そのブロックの上位2、4、6、8ビットを抽出して4ビットを構成する。なおマスクフィールドは、リンク先が16分木ノード(M=1)の時のみ意味を持つ。
【0125】
次に、本実施の形態の動作を説明する。
【0126】
本実施の形態においては、子ノード判定処理部51は、アドレス生成部20に対しマスク値も出力するようにする。アドレス生成部20は、リンク先が16分木ノード(M=1)の場合、マスク値を用いてIPアドレスのブロックを縮退して、アドレスを生成する。この他の処理は既述した通りである。
【0127】
なお、マスクの決定方法であるが、検索テーブルの作成時において、単純に全てのビットパターンについて検証して、最もエントリが散布するマスクを選択する等の方法が可能である。
【0128】
8ビット中から4ビットを選択するパターンは、70通りある。それらについて、各エントリ間において衝突が発生しないマスクを探索し選択するのである。この最適のマスクの選択処理は、容易にコンピュータプログラムのソフトウェアで実施することができ、このソフトウェアから図1の装置に対して設定することができる。この探索は、1ノードにつき高々70パターンの探索であり、また、経路エントリを新規に登録する際に(検索テーブルの編集時に)発生するものなので、大きな遅延にはならない。
【0129】
以上説明したように、本実施の形態では、第2の実施の形態の効果に加えて、より効率的な木の構築が可能となり、効率的な経路検索を実現する。
【0130】
なお、上記各実施の形態の検索処理部100は、目的アドレス保持部10、アドレス生成部20、ノード読み出し部30、メモリコントローラ40、ノード判定部50、子ノード判定部51、有効判定処理部52、経路IDフィルタ部53、制御部60、結果出力部70等の機能や、その他の機能をハードウェア的に実現することは勿論として、各機能を備えるコンピュータプログラムを、コンピュータ処理装置のメモリにロードされることで実現することができる。このコンピュータプログラムは、磁気ディスク、半導体メモリその他の記録媒体90に格納される。そして、その記録媒体からコンピュータ処理装置にロードされ、コンピュータ処理装置の動作を制御することにより、上述した各機能を実現する。
【0131】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【0132】
【発明の効果】
以上説明したように本発明のIPパケットの経路検索システムによれば、複数の検索方法を併用して適切な検索方法を自動選択して検索することができるため、メモリのアクセス回数とメモリ容量との双方を抑える効率的な検索を実現することができる。
【0133】
また、本発明では、128ビットのIPv6アドレスを、16ブロックに分割して8ビット毎にまとめて検索を行なう場合に、256分木と16分木との検索方法のそれぞれを適切に選択して検索することができる。これにより、検索テーブルへのアクセス回数を2分木検索や16分木検索よりも低減でき、かつ同時に256分木検索における多量のメモリ浪費を抑えることができ、効率的な検索を実現する。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態による経路検索部の構成を示すブロック図である。
【図2】本発明の第1の実施の形態による経路検索部の処理を説明するためのフローチャートである。
【図3】本発明の第1の実施の形態の256分木/16分木ノード併用の構成を示す図である。
【図4】本発明の第1の実施の形態の経路テーブルの木構造を説明するための図である。
【図5】IPアドレスと256分木ノードのノードエントリとの関係を説明するための図である。
【図6】本発明の第1の実施の形態の256分木/16分木ノード併用の場合のノードエントリとIPアドレスとの関係を説明するための図である。
【図7】本発明の第1の実施の形態のノードエントリ及び経路データエントリの構成の一例を示す図である。
【図8】本発明の第2の実施の形態のIPアドレスとノードエントリとのノードエントリの構成を示す図である。
【図9】本発明の第3の実施の形態のノードエントリの構成を示す図である。
【図10】本発明の第3の実施の形態のIPアドレスとノードエントリとのノードエントリの構成を示す図である。
【図11】2分木ノードの構成を示す図である。
【図12】256分木ノードの構成を示す図である。
【図13】従来の経路検索の処理を説明するためのフローチャートである。
【符号の説明】
100 検索処理部
10 目的アドレス保持部
20 アドレス生成部
30 ノード読み出し部
40 メモリコントローラ
41 外部メモリ
50 ノード判定部
51 子ノード判定部
52 有効判定処理部
53 経路IDフィルタ部
60 制御部
70 結果出力部
90 記録媒体
Claims (27)
- IPパケットの目的アドレスを基に転送先アドレスを決定する経路検索システムにおいて、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする経路検索システム。 - 前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定し備えることを特徴とする請求項1に記載の経路検索システム。
- 前記ノード判定部は、
検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出する手段を備え、
前記ノード判定部は、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出することを特徴とする請求項1に記載の経路検索システム。 - 前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記ノード判定部が前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下になるように予め設定し備え、
前記検索テーブルは、
各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録し備えることを特徴とする請求項3に記載の経路検索システム。 - IPv6のIPパケットの経路検索を行なうことを特徴とする請求項1から請求項4のいずれか一つに記載の経路検索システム。
- 前記目的アドレスのサイズを128ビットとし、
前記ブロックのサイズを8ビットとし、
前記検索テーブルは、各前記目的アドレスを16個の前記ブロックに分割することによる16階層の木構造とする、ことを特徴とする請求項5に記載の経路検索システム。 - 前記指定ビット情報は、
前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全8ビットを照合する方式と、当該ブロックの前半4ビットを照合する方式との、いずれか一方により指定することを特徴とする請求項6に記載の経路検索システム。 - 前記指定ビット情報は、
前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全8ビットを照合する方式と、各ノード毎のそれぞれにおいて予め定められた位置である当該ブロック内の4個所のビットを照合する方式との、いずれか一方の方式により指定することを特徴とする請求項6に記載の経路検索システム。 - IPパケットの目的アドレスを基に転送先アドレスを決定する経路検索装置において、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする経路検索装置。 - 前記ノード判定部は、
検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出する手段を備え、
前記ノード判定部は、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出することを特徴とする請求項9に記載の経路検索装置。 - IPv6のIPパケットの経路検索を行なうことを特徴とする請求項9又は請求項10に記載の経路検索装置。
- 前記目的アドレスのサイズを128ビットとし、
前記ブロックのサイズを8ビットとし、
前記検索テーブルは、各前記目的アドレスを16個の前記ブロックに分割することによる16階層の木構造とする、ことを特徴とする請求項11に記載の経路検索装置。 - 前記指定ビット情報は、
前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全8ビットを照合する方式と、当該ブロックの前半4ビットを照合する方式との、いずれか一方により指定することを特徴とする請求項12に記載の経路検索装置。 - 前記指定ビット情報は、
前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全8ビットを照合する方式と、各ノード毎のそれぞれにおいて予め定められた位置である当該ブロック内の4個所のビットを照合する方式との、いずれか一方の方式により指定することを特徴とする請求項12に記載の経路検索装置。 - IPパケットの目的アドレスを基に転送先アドレスを決定しIPパケットを転送する交換機において、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする交換機。 - 前記ノード判定部は、
検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出する手段を備え、
前記ノード判定部は、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出することを特徴とする請求項15に記載の交換機。 - IPv6のIPパケットの経路検索を行なうことを特徴とする請求項15又は請求項16に記載の交換機。
- IPパケットの目的アドレスを基に転送先アドレスを決定する経路検索方法において、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを参照するステップと、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索するステップを有し、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するステップと、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノードエントリの抽出ステップにより読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するステップと、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索するステップを備えることを特徴とする経路検索方法。 - 前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定するステップを備えることを特徴とする請求項18に記載の経路検索方法。
- 検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出するステップと、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出するステップを備えることを特徴とする請求項18に記載の経路検索方法。 - 前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記判定ステップで前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下となるように予め設定するステップと、
各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録するステップを備えることを特徴とする請求項20に記載の経路検索方法。 - IPv6のIPパケットの経路検索を行なうことを特徴とする請求項20又は請求項21に記載の経路検索方法。
- コンピュータを制御することにより、IPパケットの目的アドレスを基に転送先アドレスを決定する経路検索プログラムを記録した記録媒体において、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを参照するステップと、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索するステップを有し、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するステップと、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノードエントリの抽出ステップにより読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するステップと、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索するステップを備えることを特徴とするコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。 - 前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定するステップを備えることを特徴とする請求項23に記載のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。
- 検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出するステップと、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出するステップを備えることを特徴とする請求項23に記載のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。 - 前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記判定ステップで前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下となるように予め設定するステップと、
各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録するステップを備えることを特徴とする請求項25に記載のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。 - IPv6のIPパケットの経路検索を行なうことを特徴とする請求項25又は請求項26に記載のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001004643A JP3589349B2 (ja) | 2001-01-12 | 2001-01-12 | 経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001004643A JP3589349B2 (ja) | 2001-01-12 | 2001-01-12 | 経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002208947A JP2002208947A (ja) | 2002-07-26 |
JP3589349B2 true JP3589349B2 (ja) | 2004-11-17 |
Family
ID=18872800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001004643A Expired - Fee Related JP3589349B2 (ja) | 2001-01-12 | 2001-01-12 | 経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3589349B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307584C (zh) * | 2003-11-17 | 2007-03-28 | 中兴通讯股份有限公司 | 一种用二维表实现的树的存储、访问的方法 |
CN100442277C (zh) * | 2004-08-24 | 2008-12-10 | 侯方勇 | 优化哈希树完整性校验的方法 |
KR102101419B1 (ko) * | 2019-03-04 | 2020-04-16 | 서강대학교 산학협력단 | 라우팅 테이블 검색 방법 및 이를 구현하는 메모리 시스템 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999049618A1 (fr) * | 1998-03-23 | 1999-09-30 | Hitachi, Ltd. | Repeteur reseau et procede de recherche de destination de transfert suivante dans le reseau |
JP3735471B2 (ja) * | 1998-10-05 | 2006-01-18 | 株式会社日立製作所 | パケット中継装置およびlsi |
JP3570323B2 (ja) * | 1999-05-11 | 2004-09-29 | 日本電気株式会社 | アドレスに関するプレフィクスの格納方法 |
JP3216630B2 (ja) * | 1999-06-09 | 2001-10-09 | 日本電気株式会社 | 通信制御装置 |
-
2001
- 2001-01-12 JP JP2001004643A patent/JP3589349B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002208947A (ja) | 2002-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4614946B2 (ja) | 限定サイズを有する限定数のサブデータベースに分割された転送データベースを効率的にサーチするシステムと方法 | |
US7571156B1 (en) | Network device, storage medium and methods for incrementally updating a forwarding database | |
CA2434876C (en) | Method and apparatus for ternary content addressable memory (tcam) table management | |
US7058642B2 (en) | Method and data structure for a low memory overhead database | |
JP4355188B2 (ja) | パケット転送装置 | |
CN115037575A (zh) | 报文处理的方法和装置 | |
JP3957570B2 (ja) | ルータ装置 | |
US20030037042A1 (en) | Table searching technique | |
AU2004238470A1 (en) | Comparison tree data structures and lookup operations | |
JP3813136B2 (ja) | 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 | |
WO2001005116A2 (en) | Routing method and apparatus | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
JP4059388B2 (ja) | プロトコルデータ単位内のプロトコルパターンの識別装置及び方法 | |
WO2021135492A1 (zh) | 路由表项的处理方法及装置 | |
JP3589349B2 (ja) | 経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体 | |
JP2002026973A (ja) | 経路検索システム及びその方法並びにそれに使用するルータ装置 | |
US8755386B2 (en) | Traceback packet transport protocol | |
US7539694B1 (en) | Concurrently searching and manipulating binary trees | |
CN111865804B (zh) | 一种通过硬件发包机制提升路由下发效率的方法及系统 | |
JP2002208945A (ja) | パケットの宛先情報管理装置 | |
US20030031179A1 (en) | Self-updateable longest prefix matching method and apparatus | |
US8199756B2 (en) | Forwarding apparatus, forwarding method, and computer product | |
JP2004056639A (ja) | アドレス検索装置 | |
JP3711895B2 (ja) | 検索システム及びそれに用いる検索条件cam登録方法並びにそのプログラム | |
JP2003234762A (ja) | テーブル検索装置および方法およびプログラムおよび記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040427 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040506 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040705 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040729 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040811 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |