(57)【特許請求の範囲】
【請求項１】
ＩＰパケットの目的アドレスを基に転送先アドレスを決定する経路検索システムにおいて、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする経路検索システム。
【請求項２】
前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定し備えることを特徴とする請求項１に記載の経路検索システム。
【請求項３】
前記ノード判定部は、
検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出する手段を備え、
前記ノード判定部は、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出することを特徴とする請求項１に記載の経路検索システム。
【請求項４】
前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記ノード判定部が前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下になるように予め設定し備え、
前記検索テーブルは、
各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録し備えることを特徴とする請求項３に記載の経路検索システム。
【請求項５】
ＩＰｖ６のＩＰパケットの経路検索を行なうことを特徴とする請求項１から請求項４のいずれか一つに記載の経路検索システム。
【請求項６】
前記目的アドレスのサイズを１２８ビットとし、
前記ブロックのサイズを８ビットとし、
前記検索テーブルは、各前記目的アドレスを１６個の前記ブロックに分割することによる１６階層の木構造とする、ことを特徴とする請求項５に記載の経路検索システム。
【請求項７】
前記指定ビット情報は、
前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全８ビットを照合する方式と、当該ブロックの前半４ビットを照合する方式との、いずれか一方により指定することを特徴とする請求項６に記載の経路検索システム。
【請求項８】
前記指定ビット情報は、
前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全８ビットを照合する方式と、各ノード毎のそれぞれにおいて予め定められた位置である当該ブロック内の４個所のビットを照合する方式との、いずれか一方の方式により指定することを特徴とする請求項６に記載の経路検索システム。
【請求項９】
ＩＰパケットの目的アドレスを基に転送先アドレスを決定する経路検索装置において、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする経路検索装置。
【請求項１０】
前記ノード判定部は、
検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出する手段を備え、
前記ノード判定部は、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出することを特徴とする請求項９に記載の経路検索装置。
【請求項１１】
ＩＰｖ６のＩＰパケットの経路検索を行なうことを特徴とする請求項９又は請求項１０に記載の経路検索装置。
【請求項１２】
前記目的アドレスのサイズを１２８ビットとし、
前記ブロックのサイズを８ビットとし、
前記検索テーブルは、各前記目的アドレスを１６個の前記ブロックに分割することによる１６階層の木構造とする、ことを特徴とする請求項１１に記載の経路検索装置。
【請求項１３】
前記指定ビット情報は、
前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全８ビットを照合する方式と、当該ブロックの前半４ビットを照合する方式との、いずれか一方により指定することを特徴とする請求項１２に記載の経路検索装置。
【請求項１４】
前記指定ビット情報は、
前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全８ビットを照合する方式と、各ノード毎のそれぞれにおいて予め定められた位置である当該ブロック内の４個所のビットを照合する方式との、いずれか一方の方式により指定することを特徴とする請求項１２に記載の経路検索装置。
【請求項１５】
ＩＰパケットの目的アドレスを基に転送先アドレスを決定しＩＰパケットを転送する交換機において、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする交換機。
【請求項１６】
前記ノード判定部は、
検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出する手段を備え、
前記ノード判定部は、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出することを特徴とする請求項１５に記載の交換機。
【請求項１７】
ＩＰｖ６のＩＰパケットの経路検索を行なうことを特徴とする請求項１５又は請求項１６に記載の交換機。
【請求項１８】
ＩＰパケットの目的アドレスを基に転送先アドレスを決定する経路検索方法において、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを参照するステップと、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索するステップを有し、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するステップと、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノードエントリの抽出ステップにより読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するステップと、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索するステップを備えることを特徴とする経路検索方法。
【請求項１９】
前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定するステップを備えることを特徴とする請求項１８に記載の経路検索方法。
【請求項２０】
検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出するステップと、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出するステップを備えることを特徴とする請求項１８に記載の経路検索方法。
【請求項２１】
前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記判定ステップで前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下となるように予め設定するステップと、
各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録するステップを備えることを特徴とする請求項２０に記載の経路検索方法。
【請求項２２】
ＩＰｖ６のＩＰパケットの経路検索を行なうことを特徴とする請求項２０又は請求項２１に記載の経路検索方法。
【請求項２３】
コンピュータを制御することにより、ＩＰパケットの目的アドレスを基に転送先アドレスを決定する経路検索プログラムを記録した記録媒体において、
前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを参照するステップと、
前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索するステップを有し、
前記検索テーブルは、
前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、
各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するステップと、
前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノードエントリの抽出ステップにより読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するステップと、
各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索するステップを備えることを特徴とするコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。
【請求項２４】
前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定するステップを備えることを特徴とする請求項２３に記載のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。
【請求項２５】
検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出するステップと、
前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出するステップを備えることを特徴とする請求項２３に記載のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。
【請求項２６】
前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記判定ステップで前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下となるように予め設定するステップと、
各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録するステップを備えることを特徴とする請求項２５に記載のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。
【請求項２７】
ＩＰｖ６のＩＰパケットの経路検索を行なうことを特徴とする請求項２５又は請求項２６に記載のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＰパケットの経路選択に関し、特にＩＰｖ６等において目的アドレスから転送先アドレスを効率よく検索する経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
インターネットにおいて、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットをルータなどの中継装置で転送する場合に、中継装置は、ＩＰヘッダに含まれる目的アドレスに基づいて、次の転送先のＩＰアドレス（以下、転送先アドレスと呼ぶ）を決定する。この処理を、経路検索という。
【０００３】
中継装置は、目的アドレスと転送先アドレスを関連付ける検索テーブルを備え、入力されるＩＰパケットである各目的アドレス毎にその対応する転送先アドレスを検索テーブル内から検索することにより、転送先を決定することができる。
【０００４】
表１では、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  ４）の検索テーブルの一例を示している。
【０００５】
【表１】
0003589349.tif 000002
【０００６】
表１における「ネットワークアドレス」及び「マスク長」は、目的アドレスがどのネットワークに属するかを示すものであり、このエントリ番号が１〜３の３種類の目的アドレスのそれぞれに、対応する転送先アドレスが示されている。
【０００７】
マスク長は、例えばその値が“Ｎ”の場合には、３２ビット中の上位Ｎビットが“１”であることを示す。つまり、マスク長が“２４”の場合には、ヘキサ表記（１６進表記）で“０ｘＦＦＦＦＦＦ００”に相当するのであり、これをネットマスクと呼ぶ。
【０００８】
これは、目的アドレスと、マスク長で示されるネットマスクとの論理積が、同エントリのネットワークアドレスと一致するかどうかで判断するのである。例えば、目的アドレスが“１１．１．１．５”の場合には、この目的アドレスとマスク長が“２４”のネットマスクとの論理積を取ると、３番目のエントリに示される“１１．１．１．０”に等しいため、これにより３番目のエントリに属すると判定する。
【０００９】
図１３は、従来の経路検索の処理を説明するためのフローチャートである。ここで、表１の検索テーブルを装備する中継装置に、“１０．１．０．１”の目的アドレスを持つＩＰパケットが入力された場合を考える。この場合、入力されたパケットの目的アドレスに該当するエントリとして、１番目と２番目との２つのエントリが該当することになる。
【００１０】
このような場合、中継装置は、目的アドレスが属するネットワークアドレスを備えるエントリの内で、マスク長が最長のものを検索結果とする。これは、最長一致検索（ＬＰＭ）と呼ばれる方法である。
【００１１】
この最長一致検索により、中継装置は、目的アドレスに該当する１番目と２番目のエントリの内で、マスク長の長い２番目のエントリを選択し、そのエントリの転送先アドレスである“２１．１．１．１”のＩＰアドレスに、このＩＰパケットを転送するのである。
【００１２】
このように、ＩＰパケットの経路検索では、１つの検索において検索基準を満たす候補が複数存在する可能性があり、最長一致検索等により正しい検索結果を導出しなければならない。これは入力ＩＰパケットの目的アドレスのみからでは、その目的アドレスが属するネットワークアドレスがわからないことに起因する。
【００１３】
この課題を踏まえて、検索テーブル及び検索処理の実装方法として、いくつかの方法が提案されておりその１つに２分木を用いた方法がある。
【００１４】
２分木を用いる方法は、ソフトウェア実装では一般的であり、また特開平１１−１９１７８１号公報においてはハードウェアへの実装方法も提案されている。
【００１５】
図１１に、２分木の例を示す。図１１中の各矩形を２分木のノードと呼ぶ。
【００１６】
２分木は、ビット“０”／“１”に従って分岐する構成をとり、各分岐が目的アドレスのビットに相当する。つまり図１１の例では、根ノードを開始点として、目的アドレスの最上位ビットが“０”の場合は左のノードに進み、“１”の場合は右のノードに進む。各ノードは、実際には回路上のメモリ空間に相当し、そこには最長一致検索に関する情報が含まれているので、その情報を参照して検索処理を進めることができる。
【００１７】
この２分木の方法は、最長一致検索に効率よく対応できるので、ソフトウェアやＦＰＧＡによる実装に適している。また収容できる経路エントリ数に関しても有利である。ただし、登録されるエントリによっては最悪３２ビット全てを検査する必要があり、それだけメモリへのアクセス回数が増加する傾向がある。特に１２８ビットのアドレス空間を持つＩＰｖ６では、効率が悪い。
【００１８】
一方、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  ６）は、主に８ビット単位の階層構造を念頭に設計されているので、マスク長は８ビット単位と想定してよい。たとえ、８ビット単位でないマスク長を設定する必要が生じても、それを８ビット長に展開して設定すればよい。
【００１９】
例えば、ネットワークアドレスが“１０．１０．６４．０”でマスク長が２０ビットのエントリを設定する場合、“１０．１０．６４．０”、“１０．１０．６５．０”、“１０．１０．６６．０”、・・・、“１０．１０．７９．０”の１６エントリを、マスク長２４ビットで設定すればよいことになる。
【００２０】
ここではＩＰｖ４のアドレス例を用いたが、ＩＰｖ４ではアドレス空間が狭いため、８ビット長単位以外のマスク長でエントリを設定する場合は多く、このような展開処理が頻発してしまう可能性がある。しかしＩＰｖ６ではアドレス空間が広く、８ビット単位のアドレス階層が推奨されているので、このような展開処理の必要性は低くなる。よって、この展開処理を想定した上で、マスク長が８ビット単位であることを前提とした経路検索が可能となる。
【００２１】
そこで、２分木を用いないで、図１２に示すような２５６分木で対応することが考えられる。つまりノードの分岐は、ＩＰアドレスの８ビット毎に行われる。このため、２分木で最悪８回ノードを辿らなければならないところが、１回に減る。これはメモリアクセスの回数が減ることに相当し、検索の速度が速くなることを意味する。
【００２２】
ただし、２５６分木の欠点は多くのメモリ空間を必要とすることである。２分木の場合は左右分岐のための情報を１つのノードに含めておけばよいが、２５６分木の場合はその２５６分岐のための情報を格納しておく必要がある。実際には２分岐しかしない場合においても、２５６分岐のための空間を用意する必要がある。そのため、メモリ不足のためにエントリ数の上限が抑えられるという欠点がある。
【００２３】
【発明が解決しようとする課題】
上述したように従来のＩＰパケットの経路検索では、以下に述べるような問題点があった。
【００２４】
従来のＩＰパケットの経路検索方法である２分木の方法では、登録されるエントリによっては３２ビットの全てのビットを検査する必要があり、メモリへのアクセス回数を多く必要とするという問題点がある。
【００２５】
従来のＩＰパケットの経路検索方法である２５６分木の方法では、２５６種類の分岐のための多くのメモリ空間を用意する必要があり、エントリ数の上限が抑えられるという問題点がある。
【００２６】
本発明の目的は、上記従来技術の欠点を解決し、複数の検索方法を適切に組み合わせることにより、メモリへのアクセス回数と必要とするメモリ容量との双方を同時に少なく抑えることを実現する経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体を提供することである。
【００２７】
【課題を解決するための手段】
上記目的を達成するため本発明の経路検索システムは、ＩＰパケットの目的アドレスを基に転送先アドレスを決定する経路検索システムにおいて、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする。
【００２８】
請求項２の本発明の経路検索システムは、前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定し備えることを特徴とする。
【００２９】
請求項３の本発明の経路検索システムは、前記ノード判定部は、検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出する手段を備え、前記ノード判定部は、前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出することを特徴とする。
【００３０】
請求項４の本発明の経路検索システムは、前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記ノード判定部が前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下になるように予め設定し備え、前記検索テーブルは、各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録し備えることを特徴とする。
【００３１】
請求項５の本発明の経路検索システムは、ＩＰｖ６のＩＰパケットの経路検索を行なうことを特徴とする。
【００３２】
請求項６の本発明の経路検索システムは、前記目的アドレスのサイズを１２８ビットとし、前記ブロックのサイズを８ビットとし、前記検索テーブルは、各前記目的アドレスを１６個の前記ブロックに分割することによる１６階層の木構造とする、ことを特徴とする。
【００３３】
請求項７の本発明の経路検索システムは、前記指定ビット情報は、前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全８ビットを照合する方式と、当該ブロックの前半４ビットを照合する方式との、いずれか一方により指定することを特徴とする。
【００３４】
請求項８の本発明の経路検索システムは、前記指定ビット情報は、前記ノード読み出し部が前記ノードエントリの抽出時に照合する前記ブロック中のビット位置の指定を、当該ブロックの全８ビットを照合する方式と、各ノード毎のそれぞれにおいて予め定められた位置である当該ブロック内の４個所のビットを照合する方式との、いずれか一方の方式により指定することを特徴とする。
【００３５】
請求項９の本発明の経路検索装置は、ＩＰパケットの目的アドレスを基に転送先アドレスを決定する経路検索装置において、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする。
【００３６】
請求項１５の本発明の交換機は、ＩＰパケットの目的アドレスを基に転送先アドレスを決定しＩＰパケットを転送する交換機において、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを備え、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索すると共に、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するノード読み出し部と、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノード読み出し部により読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するノード判定部を備え、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索することを特徴とする。
【００３７】
請求項１８の本発明の経路検索方法は、ＩＰパケットの目的アドレスを基に転送先アドレスを決定する経路検索方法において、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを参照するステップと、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索するステップを有し、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するステップと、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノードエントリの抽出ステップにより読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するステップと、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索するステップを備えることを特徴とする。
【００３８】
請求項１９の本発明の経路検索方法は、前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより、各前記ノードからリンクする下位のノードエントリが一意に識別されるように予め設定するステップを備えることを特徴とする。
【００３９】
請求項２０の本発明の経路検索方法は、検索対象の前記ブロックに該当する前記ノードエントリを、定められた個数である複数個、まとめて一度に抽出するステップと、前記抽出された各ノードエントリのそれぞれを、当該検索対象の前記ブロックに該当するか否かを判定し、正しく該当する前記ノードエントリを検出するステップを備えることを特徴とする。
【００４０】
請求項２１の本発明の経路検索方法は、前記検索テーブルの各前記ノードにおける前記指定ビット情報を、当該指定ビット情報において指定されたビット位置において示されるデータのみにより探索した場合において、各前記ノードからリンクする下位のノードエントリの当該探索時に重複して該当する個数を、高々、前記判定ステップで前記ノードエントリを一度にまとめて取り出すことのできる前記定められた個数以下となるように予め設定するステップと、各前記ノードにおける前記ノードエントリを、各前記指定ビット情報毎に、当該指定ビット情報を用いた探索時に重複して該当する前記ノードエントリをまとめて記録するステップを備えることを特徴とする。
【００４１】
請求項２２の本発明の経路検索方法は、ＩＰｖ６のＩＰパケットの経路検索を行なうことを特徴とする。
【００４２】
請求項２３の本発明のコンピュータにより読み取り可能な経路検索プログラムを記録した記録媒体は、コンピュータを制御することにより、ＩＰパケットの目的アドレスを基に転送先アドレスを決定する経路検索プログラムを記録した記録媒体において、前記目的アドレスによる木構造の探索を行なうための、個々の目的アドレスのそれぞれに対応する転送先アドレスを示す検索テーブルを参照するステップと、前記検索テーブルの各ノードにおける下位のノードエントリの探索を、各前記ノードのそれぞれの前記ノードエントリの数に対応して指定された種類の多分木の探索方法を用いて探索するステップを有し、前記検索テーブルは、前記目的アドレスをその先頭から複数個の等長のブロックに分割し、各前記ブロックを先頭から順次、上位の階層から下位の階層に枝分かれさせて結ぶ階層構造による木構造を有し、かつ、各ノードにおいて、当該ノードからリンクする下位の各ノードエントリを示すブロックのデータの記録と、前記下位の各ノードエントリの抽出時において照合する前記ブロック内のビット位置の指定を示す指定ビット情報の記録を有し、各ノードにおいて、前記検索対象の目的アドレスを分割した各ブロックと、当該ノードからリンクする下位の各ノードエントリの前記ブロックとを、前記指定ビット情報に示される位置の各ビットのデータを参照して照合し、該当する前記ノードエントリを抽出するステップと、前記指定ビット情報に指定されていない位置のビットのデータの照合を行なうことにより、前記ノードエントリの抽出ステップにより読み出された前記ノードエントリが、正しく前記検索対象の目的アドレスを分割したブロックに該当するか否かを判定するステップと、各ノードにおいて、前記検索対象の目的アドレスを分割した各前記ブロックに該当する前記ノードエントリを順次探索することにより、前記検索テーブル内の当該検索対象の目的アドレスに該当するエントリを検索するステップを備えることを特徴とする。
【００４７】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００４８】
本発明は、ＩＰパケットの転送時において、当該パケットの送信先のアドレスである目的アドレスを基に次の転送先のアドレスを検索するための、多分木構造の効率的な経路検索を提供する。
【００４９】
以下の実施の形態においては、特に、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  ６）における経路検索を例に本発明の経路検索を説明する。ここでは、ＩＰｖ６における１２８ビットのアドレスを、先頭から８ビット毎に１６個のブロックに分けて、順次この分割された各ブロック毎に多分木の検索を行なう方式を例に説明する。
【００５０】
この木構造においては、各ブロックのノードは下位のノードを、８ビットのデータにより示される２５６種類を備えることができる。このため従来では、図１２に示されるように各ノードにおいて２５６分木の検索を行なうのであったが、しかし、実際に各ノードからリンクする下位のノードの数は２５６よりもはるかに少ない場合も多く、かつこれは２５６種類の分岐のための多くのメモリ空間を用意する必要がある。そこで本発明では、このような場合のノードを、より少ない数の分木により検索することにより必要とするメモリの削減を実現する。
【００５１】
更に、この方式においては、従来の２５６分木の検索と同様に、目的アドレスを分割した１６個のブロックによる各ノード毎に検索を行なうため、検索するノード数は２５６分木の方式と同じであり、２５６分木の従来の方式と同様のメモリの少ないアクセス回数により検索できる。このようにして、効率の良い経路検索を実現するのである。
【００５２】
つまり、１２８ビットのＩＰｖ６アドレスに対して、８ビット毎に区切る２５６分木を採用すると１６階層の木となる。一方で、４ビット毎に区切る１６分木を、従来の方法でそのまま採用したのであれば、倍の３２階層が必要となる。しかし、本発明では２５６分木ノードと１６分木ノードを併用するが、２５６分木における分岐の少ないノードを１６分木ノードとすることにより、階層を１６階層のままに保つのである。
【００５３】
本発明の第１の実施の形態の経路検索システムでは、図３の例に示されるように２５６分木と１６分木の検索方法を併用する。つまり、２５６分木の各ノードにおいて、分岐の数が（ここでは１６個よりも）少ないノードにおいては１６分木の木構造を採用するのである。ここで、各ノードの検索方法が２５６分木であるのか１６分木であるのかの判定は、検索時に参照する検索テーブルの作成段階において、各ノードがリンクする下位のノード数を基に決定し記録しておき、検索時においては、その検索テーブルに指定された方法により検索を実行する。
【００５４】
ここで、検索テーブルは、パケットの送信先のアドレスである目的アドレスと、次の転送先のアドレスを示す転送先アドレスとの対応を記録したテーブルであり、これをシステム内の検索処理部（経路検索装置）が参照することにより、転送先アドレスを検索する。
【００５５】
またこのようにして、本実施の形態の検索テーブルは、従来の検索テーブルと異なり各ノードにおいて検索方式の指定を備えるものの、これは各ノードのリンクするノード数等を基に容易に決定することができるため、従来の単純な２５６分木の検索テーブルを元に容易に生成することが可能である。また、この検索方式の指定は、各ノードのエントリ数の増減に応じて適宜更新し、２５６分木であるか１６分木であるかを指定する。例えば、１６分木ノードのエントリ数が増加して収容しきれなくなった場合には、２５６分木ノードに置換して検索テーブルの木の一部を再構築するのである。このようにして、各ノードのエントリ数に応じて木構造を構成し、効率的な検索を実現するのである。
【００５６】
図４は、本実施の形態の木構造を概念的に示した図である。
【００５７】
木は、１２８ビットのアドレスを８ビット毎のブロックに分割したことによる、“Ｌ０”から“Ｌ１５”までの１６階層に分けられる。図４では、“Ｌ３”までを記載しており、以下同様にして“Ｌ１５”の階層まで伸びている。
【００５８】
木は、ノードと経路データから構成されている。
【００５９】
各ノードは、それぞれのノードを一意に識別する識別子であるノードＩＤを備える。また各ノードは、リンクする下位のノードを示す２５６個又は１６個のノードエントリを備える。
【００６０】
ノードの種類には、根ノード、葉ノード、分岐ノードがある。根ノードは、“Ｌ０”階層にある固定ノードである。分岐ノードは、“Ｌ１”以下の階層に位置し、そのノードエントリのいずれかに下位層のノードへの分岐を有するノードである。葉ノードは、そのノードエントリのいずれかに経路データ有するノードである。また、分岐ノードが葉ノードであってもよい。実装上においては、各ノード及び経路データはメモリ上の１つの領域を占める。
【００６１】
図５は、本実施の形態における、ＩＰｖ６アドレスを分割したブロックを２５６分木のノードとする場合の、ノード内のノードエントリの構成を説明するための図である。
【００６２】
ここでは、１２８ビットのＩＰｖ６アドレスを、８ビット毎のブロックに区切り、それぞれのブロックを順次“Ｂ０”から“Ｂ１５”と示す。この“Ｂ０”から“Ｂ１５”の各ブロックは、それぞれ“Ｌ０”から“Ｌ１５”までの各階層に対応する。
【００６３】
例えば、図４におけるノードＡ（Ｌ１）とノードＢ（Ｌ２）との関係は、図５の例に示すように、ノードＡのノードＩＤに対して、ノードＢの階層に相当するブロックのビット列“Ｂ２”を付加し、必要に応じて数ビットの“０”を付加したものが、ノードＢを構成するノードエントリのアドレスになる。
【００６４】
図６は、本実施の形態における、ＩＰｖ６アドレスを分割したブロックを１６分木のノードとする場合の、ノード内のノードエントリの構成を説明するための図であり、図５の場合と同様に、図４のノードＡ（Ｌ１）とノードＢ（Ｌ２）との関係を示している。
【００６５】
先の図５の２５６分木の場合と異なるのは、“Ｂ２”の全８ビットを参照するのではなく、上位４ビットのみを参照する点である。
【００６６】
先の２５６分木の場合のように全８ビットを参照するならば、２５６エントリ分のメモリ空間を必要とするが、そのノードのエントリ数が１６個よりも少ない場合において、図６のように４ビットのみに制限することにより１６エントリ分のメモリ空間で済み、必要とするメモリが削減されるのである。
【００６７】
また、このように１６分木の場合は、ＩＰｖ６アドレスを分割したブロックの、一部のビットのみを用いて当該エントリの抽出を行ない、その他のビットは欠落することになる。ただし、本実施の形態では、エントリ抽出後に、この抽出時に使用しなかった各ビットを参照し、正しいアドレスのエントリであるかどうかを確認する。
【００６８】
図７は、本実施の形態のノードエントリ及び経路データエントリのデータ構成の一例を示す図である。図７の例においては、ノードエントリのデータを３２ビット、経路データのデータを１２８ビットとしている。
【００６９】
図７の例においては、ノードエントリの情報を示すために、“Ｖ”、“Ｃ”、“Ｍ”、“Ｎ”、“Ｈ”、“ノードＩＤ”の各フラグを備えている。この内の“Ｖ”、“Ｃ”、“Ｍ”、“Ｎ”の各フラグは、“０”又は“１”を示すフラグであり、表２においては、これらのフラグの“０”又“１”の各状態における意味を示している。
【００７０】
【表２】
0003589349.tif 000003
【００７１】
“Ｖ”は、ノードエントリが有効であるか無効であるかを示すフラグである。“Ｖ”が、“１”である場合には有効、“０”である場合には無効とする。ノードエントリが無効（Ｖ＝０）の場合には、他のフィールドの情報は意味を持たない。
【００７２】
“Ｃ”は、下位層のノードへのリンクを持つか持たないかを示すフラグである。“Ｃ”が“１”の場合には、そのノードエントリは下位層のノードへのリンクを持ち、“０”の場合には持たない。
【００７３】
“Ｍ”は、リンクする下位層のノードが、２５６分木ノードであるか１６分木ノードであるかを示すフラグである。“Ｍ”が、“１”の場合には１６分木ノードとし、“０”の場合には２５６分木ノードとする。このため、この“Ｍ”のフラグは、そのノードエントリが下位層へのリンクを備える（Ｃ＝１）場合にのみ有効である。
【００７４】
“Ｎ”は、そのノードエントリ自身が、２５６分木ノードであるか１６分木ノードであるかを示すフラグである。“Ｎ”が、“１”の場合には１６分木ノードとし、“０”の場合には２５６分木ノードとする。
【００７５】
“Ｈ”は、ＩＰｖ６アドレス中の当該ノードにおいて処理中のブロックにおける、欠落したブロックビットを示すフラグであり、つまりここでは当該ブロックの下位４ビットの値を示す４ビット領域のフラグである。例えば、現在処理中のブロック（そのノードエントリのブロック）が、“０１００１０００”である場合には、下位４ビットの“１０００”をＨフィールドに格納する。
【００７６】
このＨフィールドは、次のように用いる。
【００７７】
例えば、目的アドレスＡと目的アドレスＢの２つの目的アドレスがあり、その上位２つのブロックが同一であって、３番目のブロック（つまりＢ２）がそれぞれに“０１００１０００”、“０１００１１１１”であるとする。そして、検索対象のＩＰアドレスが、上位２つのブロックが目的アドレスＡ及び目的アドレスＢと同一であり、ここで３番目のブロック（つまりＢ２）“０１００１０００”のエントリを登録する場合を考える。
【００７８】
この場合、当該ブロックの上位４ビットの“０１００”を参照して、そのノードエントリを特定するため、目的アドレスＡと目的アドレスＢの双方がこの検索対象のＩＰアドレスに対して指されることになる。よって、ノードエントリの１６分木検索時に参照されなかったビットである“Ｈ”フィールドを参照することにより、各ブロックの下位４ビットを比較して、正しく検索を行なうのである。
【００７９】
この例では、目的アドレスＢの３番目のブロック“Ｂ２”の下位４ビットが、検索対象のＩＰアドレスと異なるため、目的アドレスＢとは一致しないと判定される。
【００８０】
“ノードＩＤ”のフィールドにおいては、当該ノードエントリが示すリンク先である下位層のノードの、ノードＩＤを示す。当該ノードが、下位層へのリンクを備える場合に（“Ｃ”が“１”の場合に）有効である。
【００８１】
また、図７に示される“経路ＩＤ”のフィールドは、経路データの識別子である。この“経路ＩＤ”により、経路データが格納されているメモリアドレスを一意に特定する。また、経路データがない場合には、“経路ＩＤ”を“０”とすることにより経路データがない旨を示す。経路データには、１２８ビットの転送先アドレス情報のみ含まれる。
【００８２】
図１は、本実施の形態の経路検索システムにおける険路検索を実行する検索処理部１００（経路検索装置）の構成を示すブロック図であり、図２は、本実施の形態の検索処理部１００の処理を説明するためのフローチャートである。
【００８３】
まず検索処理部１００には最初、１２８ビットの目的アドレスと、初期階層、根ノードＩＤが入力される。初期階層の値は“０”（つまり“Ｌ０”）であり、根ノードＩＤは固定値である。
【００８４】
目的アドレス保持部１０は、入力された目的アドレスを記憶する。
【００８５】
アドレス生成部２０は、検索時において現在のターンにおける階層値、ノードＩＤ、そして下位層のノードの分木の種類を示すＭ値を保持する。検索開始時は、階層値＝初期階層値、ノードＩＤ＝根ノードＩＤ、Ｍ＝“０”（下位層のノードは２５６分木）とする。
【００８６】
アドレス生成部２０は、目的アドレス保持部１０から、現在の階層値に対応する８ビットのブロックを読み出し、Ｍ＝“０”の場合は８ビットのまま、Ｍ＝１の場合は上位４ビットを抽出し、アドレス生成に用いる。
【００８７】
アドレス生成においては、アドレス生成部２０は、そのブロックのビット列と保持するノードＩＤとを用いて、Ｍ＝“０”（下位層のノードが２５６分木）の場合には図５で述べたアドレス生成を行ないノード読み出し部３０に出力し、下位層が１６分木ノード（Ｍ＝“１”）の場合には図６で述べたアドレス生成を行ない、同様にノード読み出し部３０に出力する。
【００８８】
また、アドレス生成部２０は、ノード判定部５０に対して、目的アドレス保持部１０から読み出したブロックの全８ビットを、Ｍの値にかかわらずノード判定部５０に出力する。以降は、アドレス生成部２０は、子ノード判定部５１からノードＩＤ及びＭ値の最新の値の入力を受け付けて、また階層値はアドレス生成の度にインクリメントし、同様にこれらの最新の値を用いて上記の処理を実行する。
【００８９】
また、アドレス生成部２０は、制御部６０からリセット信号を受信した場合には、内部状態をリセットして次の目的アドレスの入力を待機する。
【００９０】
ノード読み出し部３０は、制御部６０からのノード読み出し要求を受けて、アドレス生成部２０から出力されたアドレスのノードエントリをメモリコントローラ４０を介して外部メモリ４１から読み出し、これをノード判定部５０に出力する。
【００９１】
ノード判定部５０では、ノード読み出し部３０から出力されたノードエントリ情報の“Ｎ”ビットを検査して、そのノードエントリが２５６分木ノードであるのか１６分木ノードであるのかを調べる。
【００９２】
もし、１６分木ノードである場合（Ｎ＝１の場合）には、先のノード読み出し部３０による抽出の時点においてチェックされなかったビットがあるため、これをチェックし正しいノードエントリが読み出されたのかどうかをチェックする。つまり、アドレス生成部２０より出力されたブロックの内の、チェックされなかったビットである下位４ビットと、Ｈフィールドの４ビットとを比較するのである。
【００９３】
比較の結果、同じであれば、正しいノードエントリが読み出されたのであるから、これを子ノード判定部５１、有効判定処理部５２、経路ＩＤフィルタ部５３に出力して、制御部６０に読み出しの成功を通知する（“１”を出力する）。比較結果が異なる場合は、制御部６０に読み出しの失敗を通知する（“０”を出力する）。
【００９４】
もし、２５６分木ノードである場合（Ｎ＝０の場合）には、先のノード読み出し部３０による抽出の時点において既にブロックの全８ビットがチェックされているため、正しいノードエントリが読み出されているのであり、そのノードエントリをそのまま子ノード判定部５１、有効判定処理部５２、経路ＩＤフィルタ部５３に出力して、制御部６０に読み出しの成功を通知する（“１”を出力する）。
【００９５】
子ノード判定処理部５１は、ノードエントリの“Ｃ”ビットを検査して子ノードの有無を判定し、もし下位層のノードへのリンクを持つ場合（Ｃ＝１の場合）には、そのノードエントリにおけるＭ値及びノードＩＤのフィールドの値をアドレス生成部２０に出力する。アドレス生成部２０では、このＭ値とノードＩＤ値を用いて、次のアドレス生成を行なう。またこの場合、子ノード判定処理部５１は、同時に“Ｃ”ビットの値を制御部６０に出力する。
【００９６】
有効判定処理部５２は、ノードエントリの“Ｖ”ビットを抽出して制御部６０に出力する。
【００９７】
経路ＩＤフィルタ部５３は、ノードエントリから経路ＩＤフィールドの値を抽出して制御部６０と結果出力部７０に出力する。
【００９８】
制御部６０の処理を表３に示す。
【００９９】
【表３】
0003589349.tif 000004
【０１００】
表３においては、最初の４列はそれぞれノード判定部５０、子ノード判定部５１、有効判定処理部５２、経路ＩＤフィルタ部５３から制御部６０に出力される値を示し、“＊”はどのような値でもよいことを示す。
【０１０１】
制御部６０は、これらの入力値の値に基づいて、ノード読み出し部３０に対しノード読み出し要求信号、結果出力部７０に対し結果出力要求信号又は経路ＩＤ更新要求信号、アドレス生成部２０に対しへリセット信号を出力する。
【０１０２】
つまり、制御部６０は、当該ノードエントリが無効（Ｖ＝０）又は検索に該当するノードエントリを備えない場合（ノード判定部が判定）、又は子ノードを備えない場合（Ｃ＝０）には、結果出力要求及びリセットを行なう。また、これらの条件に全て該当しない場合にはノード読み出し要求を行なう。
【０１０３】
また、制御部６０は、経路ＩＤフィールドに経路データの識別子が記録されている場合（経路ＩＤが“０”でない場合）には、経路ＩＤ更新要求を行なう。
【０１０４】
結果出力部７０は、制御部６０から経路ＩＤ更新要求を受け付けた場合のみ、経路ＩＤフィルタ部５３から出力された経路ＩＤを保持する。既に保持している経路ＩＤがある場合は、それを更新する。
【０１０５】
また、結果出力部７０は、制御部６０から結果出力要求を受けた場合、メモリコントローラ４０を介して外部メモリ４１から経路ＩＤが指す経路データを読み出して、その転送先アドレス値を出力する。保持する経路ＩＤがない場合には、検索失敗を示す信号を出力する。
【０１０６】
以上の処理を、目的アドレスを分割した各ブロックに対して順次実行することにより、メモリ領域として実装されている木のノードを順次辿っていき、求める経路情報を見つけることができる。
【０１０７】
以上説明したように、本実施の形態の経路検索システムによれば、２５６分木と１６分木との検索方法を適切に組み合わせて、メモリへのアクセス回数と必要とするメモリ容量との双方を同時に少なく抑えることができる。
【０１０８】
次に、本発明の第２の実施の形態を説明する。
【０１０９】
先の第１の実施の形態では、検索テーブルの作成において、上位４ビットによる検索において１つでも衝突が発生するノードは、必ず２５６分木ノードとする必要があった。
【０１１０】
例えば、図６において、２つの経路エントリ“Ｒ１”、“Ｒ２”を、上位１６ビット（上位２ブロック）が等しく、３番目のブロックである“Ｂ２”がそれぞれ“０１００１０００”と“０１００１１１１”であるものとする。ここで、“Ｒ１”が既に検索テーブルの中に登録済みの場合に、新たに“Ｒ２”を登録しようとすると、“Ｒ１”と“Ｒ２”は３番目のブロックである“Ｂ２”のノードにおいて衝突することになる。
【０１１１】
先の第１の実施の形態では、このような場合には、衝突の発生するエントリを新規に登録する時点で、そのノードを直ちに２５６分木ノード（図５）に置換して更新する必要がある。最悪の場合には、２番目のエントリを登録した時点で２５６分木への置換が必要となる場合もあり非効率である。
【０１１２】
そこで、本実施の形態では図８に示すように、１６分木ノードが保有するノードエントリを“１６”から“６４”に拡張し、“Ｂ２”等の各ブロックによって参照するノードエントリを４つとする。上記の例の場合では、“Ｒ１”と“Ｒ２”は同じ上位４ビット“０１００”に該当するノードエントリであり、それぞれノードエントリＡ、ノードエントリＢに格納される。
【０１１３】
次に、本実施の形態の動作を説明する。
【０１１４】
ノード読み出し部３０は、ノードを読み出す際にはバースト読み出しを行ない、一度に４エントリまで同時に読み出す。メモリアクセス回数の増加があるものの、連続したメモリ領域を読み出すため大きな遅延にはならない。また、ノード読み出し部３０は、読み出した各エントリを順次ノード判定部５０に出力する。
【０１１５】
ノード判定部５０は、一度に最大４エントリのノードエントリの入力を順次受け付け、先の第１の実施の形態と同様の方法により、ノード判定処理をこの４エントリのそれぞれに行なう。もし、一致するエントリがある場合には、そのエントリを子ノード判定部５１、有効判定処理部５２、経路ＩＤフィルタ部５３に出力し、制御部６０には一致するエントリが検索された旨を通知する（“１”を出力する）。
【０１１６】
ここでもし、一致するエントリがない場合は、制御部６０には一致するエントリが検索されなかった旨を通知する（“０”を出力する）。
【０１１７】
なお、２５６分木ノードである場合（Ｎ＝０の場合）には、ノード読み出し部３０においてブロックの全８ビットがチェックされて抽出されるため、抽出されるノードは１つのみであり、この入力されたエントリをそのまま子ノード判定部５１、有効判定処理部５２、経路ＩＤフィルタ部５３に出力して、制御部６０に一致するエントリが検索された旨を通知する（“１”を出力する）。
【０１１８】
この他の動作は、第１の実施の形態の動作と同様である。
【０１１９】
以上説明したように本実施の形態では、第１の実施の形態の効果に加えて、更に衝突を緩和することができる。
【０１２０】
次に、本実施の形態の第３の実施の形態を説明する。
【０１２１】
本実施の形態においては、先の第２の実施の形態の構成において、更にノードエントリのデータ構成を図９のように修正する。第１、第２の実施の形態の異なるのはＨフィールドを８ビットに拡張して、マスクフィールド８ビットを追加したことである。
【０１２２】
本実施の形態のＨフィールドは、各ブロックの全８ビットをそのまま登録する。つまり、第１、第２の実施の形態では、下位４ビットのみであったが、ここでは全ビット格納するのである。
【０１２３】
マスクフィールドは、次のノードを検索する際に用いるマスクビットである。これは、図１０に示すように、各ブロックのマスクビットに指定される位置の４ビットを抽出してアドレス生成を行なうのである。
【０１２４】
例えば、マスク値が“００００１１１１”であれば、図８で上位４ビットとしていた部分が、下位４ビットになる。またマスク値が“０１０１０１０１”であれば、そのブロックの上位２、４、６、８ビットを抽出して４ビットを構成する。なおマスクフィールドは、リンク先が１６分木ノード（Ｍ＝１）の時のみ意味を持つ。
【０１２５】
次に、本実施の形態の動作を説明する。
【０１２６】
本実施の形態においては、子ノード判定処理部５１は、アドレス生成部２０に対しマスク値も出力するようにする。アドレス生成部２０は、リンク先が１６分木ノード（Ｍ＝１）の場合、マスク値を用いてＩＰアドレスのブロックを縮退して、アドレスを生成する。この他の処理は既述した通りである。
【０１２７】
なお、マスクの決定方法であるが、検索テーブルの作成時において、単純に全てのビットパターンについて検証して、最もエントリが散布するマスクを選択する等の方法が可能である。
【０１２８】
８ビット中から４ビットを選択するパターンは、７０通りある。それらについて、各エントリ間において衝突が発生しないマスクを探索し選択するのである。この最適のマスクの選択処理は、容易にコンピュータプログラムのソフトウェアで実施することができ、このソフトウェアから図１の装置に対して設定することができる。この探索は、１ノードにつき高々７０パターンの探索であり、また、経路エントリを新規に登録する際に（検索テーブルの編集時に）発生するものなので、大きな遅延にはならない。
【０１２９】
以上説明したように、本実施の形態では、第２の実施の形態の効果に加えて、より効率的な木の構築が可能となり、効率的な経路検索を実現する。
【０１３０】
なお、上記各実施の形態の検索処理部１００は、目的アドレス保持部１０、アドレス生成部２０、ノード読み出し部３０、メモリコントローラ４０、ノード判定部５０、子ノード判定部５１、有効判定処理部５２、経路ＩＤフィルタ部５３、制御部６０、結果出力部７０等の機能や、その他の機能をハードウェア的に実現することは勿論として、各機能を備えるコンピュータプログラムを、コンピュータ処理装置のメモリにロードされることで実現することができる。このコンピュータプログラムは、磁気ディスク、半導体メモリその他の記録媒体９０に格納される。そして、その記録媒体からコンピュータ処理装置にロードされ、コンピュータ処理装置の動作を制御することにより、上述した各機能を実現する。
【０１３１】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【０１３２】
【発明の効果】
以上説明したように本発明のＩＰパケットの経路検索システムによれば、複数の検索方法を併用して適切な検索方法を自動選択して検索することができるため、メモリのアクセス回数とメモリ容量との双方を抑える効率的な検索を実現することができる。
【０１３３】
また、本発明では、１２８ビットのＩＰｖ６アドレスを、１６ブロックに分割して８ビット毎にまとめて検索を行なう場合に、２５６分木と１６分木との検索方法のそれぞれを適切に選択して検索することができる。これにより、検索テーブルへのアクセス回数を２分木検索や１６分木検索よりも低減でき、かつ同時に２５６分木検索における多量のメモリ浪費を抑えることができ、効率的な検索を実現する。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態による経路検索部の構成を示すブロック図である。
【図２】本発明の第１の実施の形態による経路検索部の処理を説明するためのフローチャートである。
【図３】本発明の第１の実施の形態の２５６分木／１６分木ノード併用の構成を示す図である。
【図４】本発明の第１の実施の形態の経路テーブルの木構造を説明するための図である。
【図５】ＩＰアドレスと２５６分木ノードのノードエントリとの関係を説明するための図である。
【図６】本発明の第１の実施の形態の２５６分木／１６分木ノード併用の場合のノードエントリとＩＰアドレスとの関係を説明するための図である。
【図７】本発明の第１の実施の形態のノードエントリ及び経路データエントリの構成の一例を示す図である。
【図８】本発明の第２の実施の形態のＩＰアドレスとノードエントリとのノードエントリの構成を示す図である。
【図９】本発明の第３の実施の形態のノードエントリの構成を示す図である。
【図１０】本発明の第３の実施の形態のＩＰアドレスとノードエントリとのノードエントリの構成を示す図である。
【図１１】２分木ノードの構成を示す図である。
【図１２】２５６分木ノードの構成を示す図である。
【図１３】従来の経路検索の処理を説明するためのフローチャートである。
【符号の説明】
１００  検索処理部
１０  目的アドレス保持部
２０  アドレス生成部
３０  ノード読み出し部
４０  メモリコントローラ
４１  外部メモリ
５０  ノード判定部
５１  子ノード判定部
５２  有効判定処理部
５３  経路ＩＤフィルタ部
６０  制御部
７０  結果出力部
９０  記録媒体
【図１】
0003589349.tif 000005
【図２】
0003589349.tif 000006
【図３】
0003589349.tif 000007
【図４】
0003589349.tif 000008
【図５】
0003589349.tif 000009
【図６】
0003589349.tif 000010
【図７】
0003589349.tif 000011
【図８】
0003589349.tif 000012
【図９】
0003589349.tif 000013
【図１０】
0003589349.tif 000014
【図１１】
0003589349.tif 000015
【図１２】
0003589349.tif 000016
【図１３】
0003589349.tif 000017