(57)【要約】【課題】経路計算処理におけるトポロジのノードアクセス処理において、計算コスト削減と、使用メモリ量削減とをバランスよく実現すること。【解決手段】経路計算装置１のノードＩＤ処理部２１が、トポロジ情報９のノードアドレスごとに、ノードの識別情報としてのノードＩＤをノードアドレスと１：１対応するように発行し、アドレスＩＤ変換部２３が、トポロジ情報９のノードごとに、ノードアドレスを、アドレスＩＤ索引データ１２を参照してノードＩＤ処理部２１が発行したノードＩＤへと変換し、経路計算部２４が、アドレスＩＤ変換部２３が変換したトポロジ情報９をもとに、変換したノードＩＤをノードの識別情報としてトポロジ情報９の経路を計算し、ＩＤアドレス変換部２５が、経路計算部２４の計算結果の各ノードＩＤをノードアドレスへと変換する。【選択図】図３
2011103613.tif 000002
【特許請求の範囲】
【請求項１】
ノードアドレスで識別されるノードがリンクで接続されるトポロジ情報から、ノードごとに経路計算を行う経路計算装置であって、
前記経路計算装置は、アドレスＩＤ索引データおよびＩＤアドレス索引データを記憶する記憶手段と、ノードＩＤ処理部と、アドレスＩＤ変換部と、経路計算部と、ＩＤアドレス変換部とを有し、
前記ノードＩＤ処理部は、前記トポロジ情報のノードアドレスごとに、ノードの識別情報としてのノードＩＤをノードアドレスと１：１対応するように発行し、その発行した結果を、ノードＩＤからノードアドレスを検索するための前記ＩＤアドレス索引データと、ノードアドレスからノードＩＤを検索するための前記アドレスＩＤ索引データとにそれぞれ格納し、
前記アドレスＩＤ変換部は、前記トポロジ情報のノードごとに、そのノードに関する経路計算に使用される情報のうちのノードアドレスを、前記アドレスＩＤ索引データを参照して前記ノードＩＤ処理部が発行したノードＩＤへと変換し、
前記経路計算部は、前記アドレスＩＤ変換部が変換した前記トポロジ情報をもとに、変換したノードＩＤをノードの識別情報として前記トポロジ情報の経路を計算し、
前記ＩＤアドレス変換部は、前記経路計算部の計算結果を読み取り、その計算結果に含まれる各ノードＩＤについて、前記ＩＤアドレス索引データを参照してノードアドレスへと変換することで、ルーティングテーブルを作成することを特徴とする
経路計算装置。
【請求項２】
前記経路計算装置は、さらに、ノード情報処理部を有し、
前記ノード情報処理部は、前記ノードＩＤ処理部が既に発行したノードＩＤについて、その発行後に前記トポロジ情報の変更が通知されたときには、発行されたノードＩＤのうちの前記トポロジ情報の変更差分に該当するノードＩＤを差分更新することを特徴とする
請求項１に記載の経路計算装置。
【請求項３】
前記ノードＩＤ処理部は、ノードＩＤを発行するときに、そのノードＩＤと、そのノードに関する経路計算に使用される情報の格納先となるメモリアドレスとを対応づけて前記記憶手段に記憶し、
前記経路計算部は、前記ノードＩＤ処理部が対応づけたデータを参照して、ノードＩＤから、そのノードに関する経路計算に使用される情報を取得することを特徴とする
請求項１または請求項２に記載の経路計算装置。
【請求項４】
前記経路計算装置は、ノードＩＤを引数とする所定関数の出力値であるメモリアドレスに、ノードに関する経路計算に使用される情報をノードごとに前記記憶手段に記憶することを特徴とする
請求項１または請求項２に記載の経路計算装置。
【請求項５】
ノードアドレスで識別されるノードがリンクで接続されるトポロジ情報から、ノードごとに経路計算を行う経路計算装置による経路計算方法であって、
前記経路計算装置は、アドレスＩＤ索引データおよびＩＤアドレス索引データを記憶する記憶手段と、ノードＩＤ処理部と、アドレスＩＤ変換部と、経路計算部と、ＩＤアドレス変換部とを有し、
前記ノードＩＤ処理部は、前記トポロジ情報のノードアドレスごとに、ノードの識別情報としてのノードＩＤをノードアドレスと１：１対応するように発行し、その発行した結果を、ノードＩＤからノードアドレスを検索するための前記ＩＤアドレス索引データと、ノードアドレスからノードＩＤを検索するための前記アドレスＩＤ索引データとにそれぞれ格納し、
前記アドレスＩＤ変換部は、前記トポロジ情報のノードごとに、そのノードに関する経路計算に使用される情報のうちのノードアドレスを、前記アドレスＩＤ索引データを参照して前記ノードＩＤ処理部が発行したノードＩＤへと変換し、
前記経路計算部は、前記アドレスＩＤ変換部が変換した前記トポロジ情報をもとに、変換したノードＩＤをノードの識別情報として前記トポロジ情報の経路を計算し、
前記ＩＤアドレス変換部は、前記経路計算部の計算結果を読み取り、その計算結果に含まれる各ノードＩＤについて、前記ＩＤアドレス索引データを参照してノードアドレスへと変換することで、ルーティングテーブルを作成することを特徴とする
経路計算方法。
【請求項６】
前記経路計算装置は、さらに、ノード情報処理部を有し、
前記ノード情報処理部は、前記ノードＩＤ処理部が既に発行したノードＩＤについて、その発行後に前記トポロジ情報の変更が通知されたときには、発行されたノードＩＤのうちの前記トポロジ情報の変更差分に該当するノードＩＤを差分更新することを特徴とする
請求項５に記載の経路計算方法。
【請求項７】
前記ノードＩＤ処理部は、ノードＩＤを発行するときに、そのノードＩＤと、そのノードに関する経路計算に使用される情報の格納先となるメモリアドレスとを対応づけて前記記憶手段に記憶し、
前記経路計算部は、前記ノードＩＤ処理部が対応づけたデータを参照して、ノードＩＤから、そのノードに関する経路計算に使用される情報を取得することを特徴とする
請求項５または請求項６に記載の経路計算方法。
【請求項８】
前記経路計算装置は、ノードＩＤを引数とする所定関数の出力値であるメモリアドレスに、ノードに関する経路計算に使用される情報をノードごとに前記記憶手段に記憶することを特徴とする
請求項５または請求項６に記載の経路計算方法。
【請求項９】
請求項５ないし請求項８のいずれか１項に記載の経路計算方法を、コンピュータである前記経路計算装置に実行させるための経路計算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経路計算装置、経路計算方法、および、経路計算プログラムに関する。
【背景技術】
【０００２】
ルータなどが実行するデータ転送処理において、パケットの宛先に向かって正しい転送先を選択するために、ルーティングテーブルが参照される。ルーティングテーブルは、ノードをリンクで接続した集合であるネットワークトポロジの情報から、ルータごとに計算される。ネットワークトポロジは、時間の経過とともに変動する情報であるので、一度計算すればよいものではなく、ネットワークトポロジの更新を契機に、何度も再計算される。よって、経路計算処理は、高性能化（処理の高速化、使用メモリの省メモリ化）が求められる処理である。
【０００３】
ネットワークトポロジを構成する各ノードには、ＩＰアドレスなどのノードを特定するためのノードアドレスが割り当てられている。そして、経路計算処理において各ノードを参照するための検索キーとして、このノードアドレスが使用される。
【０００４】
ノードアドレスの取りうる値が非常に広範囲であるので、ノードアドレスを管理するデータ構造として、非特許文献１などに記載されている平衡二分木を利用した方法などが、利用される。平衡二分木の各ノードにはノードアドレスが割り当てられているので、平衡二分木を辿ることによって、検索キーの値から検索対象を絞り込み、絞り込んだ検索対象の中から検索キーと合致するキーを持つ情報を探し出すことで情報を検索する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】microsoft、“An Extensive Examination of Data Structures Using C# 2.0”、[online]、［平成２１年１１月４日検索］、インターネット＜ＵＲＬ：http://msdn.microsoft.com/en-us/library/ms379573%28VS.80%29.aspx＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
平衡二分木などのデータ構造を用いるときには、検索キーの値から検索対象を求める処理が、１回の検索処理では収まらないので、検索処理の計算コストが大きくなってしまう。この計算コストは、そのままノード検索を呼び出す経路計算処理のコストへと影響するため、経路計算処理の計算量の増大を招いてしまう。
【０００７】
一方、検索キーから１回の検索で情報を検索する方法として、一次元配列を用いることにより、検索キーの値から検索対象を求める処理を、１回の検索処理（配列の添え字を入力すると、その添え字に対応する配列要素の値を出力する）に抑えることができる。しかし、検索キーにノードアドレスを使用する場合、検索キーとなりうる値が非常に広範囲の値になるため、確保すべきメモリ領域が膨大なものとなるという問題が生じる。つまり、計算コストの削減への代償として、使用メモリ量が増大してしまう。
【０００８】
よって、経路計算処理におけるトポロジのノード検索処理は、計算コストを削減するとともに、使用メモリ量も削減する必要がある。以上説明した従来の技術では、計算コスト削減と、使用メモリ量削減とをバランスよく行う手法は、提案されていない。
【０００９】
そこで、本発明は、前記した問題を解決し、経路計算処理におけるトポロジのノードアクセス処理において、計算コスト削減と、使用メモリ量削減とをバランスよく実現することを、主な目的とする。
【課題を解決するための手段】
【００１０】
前記課題を解決するために、本発明は、ノードアドレスで識別されるノードがリンクで接続されるトポロジ情報から、ノードごとに経路計算を行う経路計算装置であって、前記経路計算装置が、アドレスＩＤ索引データと、ＩＤアドレス索引データとを記憶手段に記憶し、ノードＩＤ処理部と、アドレスＩＤ変換部と、経路計算部と、ＩＤアドレス変換部とを有し、前記ノードＩＤ処理部が、前記トポロジ情報のノードアドレスごとに、ノードの識別情報としてのノードＩＤをノードアドレスと１：１対応するように発行し、その発行した結果を、ノードＩＤからノードアドレスを検索するための前記ＩＤアドレス索引データと、ノードアドレスからノードＩＤを検索するための前記アドレスＩＤ索引データとにそれぞれ格納し、前記アドレスＩＤ変換部が、前記トポロジ情報のノードごとに、そのノードに関する経路計算に使用される情報のうちのノードアドレスを、前記アドレスＩＤ索引データを参照して前記ノードＩＤ処理部が発行したノードＩＤへと変換し、前記経路計算部が、前記アドレスＩＤ変換部が変換した前記トポロジ情報をもとに、変換したノードＩＤをノードの識別情報として前記トポロジ情報の経路を計算し、前記ＩＤアドレス変換部が、前記経路計算部の計算結果を読み取り、その計算結果に含まれる各ノードＩＤについて、前記ＩＤアドレス索引データを参照してノードアドレスへと変換することで、ルーティングテーブルを作成することを特徴とする。
さらに、本発明は、前記経路計算装置に、前記各処理を実行させることを特徴とする経路計算方法である。
さらに、本発明は、前記経路計算装置に、前記各処理を実行させるための経路計算プログラムである。
【００１１】
これにより、経路計算時にノード情報を検索する処理がノードアドレスからでなくノードＩＤでできるようになり、ノード情報の検索時間が短縮するとともに、検索空間が狭いノードＩＤを用いることで、省メモリ化が実現できる。
【００１２】
本発明は、前記経路計算装置が、さらに、ノード情報処理部を有し、前記ノード情報処理部が、前記ノードＩＤ処理部が既に発行したノードＩＤについて、その発行後に前記トポロジ情報の変更が通知されたときには、発行されたノードＩＤのうちの前記トポロジ情報の変更差分に該当するノードＩＤを差分更新することを特徴とする。
【００１３】
これにより、トポロジ変更のたびに全ノードアドレスに対しノードＩＤを割り当てる処理を省くことができ、ノードＩＤの割り当て時間を短縮することが可能になる。
【００１４】
本発明は、前記ノードＩＤ処理部が、ノードＩＤを発行するときに、そのノードＩＤと、そのノードに関する経路計算に使用される情報の格納先となるメモリアドレスとを対応づけて前記記憶手段に記憶し、前記経路計算部が、前記ノードＩＤ処理部が対応づけたデータを参照して、ノードＩＤから、そのノードに関する経路計算に使用される情報を取得することを特徴とする。
【００１５】
これにより、ノードＩＤをもとにノード情報のメモリアドレスを特定できるため、ノード情報を検索する処理時間を短縮することが可能となる。
【００１６】
本発明は、前記経路計算装置が、ノードＩＤを引数とする所定関数の出力値であるメモリアドレスに、ノードに関する経路計算に使用される情報をノードごとに前記記憶手段に記憶することを特徴とする。
【００１７】
これにより、ノードＩＤをもとにノード情報のメモリアドレスを計算できるため、ノード情報を検索する処理時間を短縮することが可能となる。
【発明の効果】
【００１８】
本発明によれば、経路計算処理におけるトポロジのノードアクセス処理において、計算コスト削減と、使用メモリ量削減とをバランスよく実現することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に関する通信システムを示す構成図である。
【図２】本発明の一実施形態に関する経路計算装置による経路計算対象であるトポロジ情報を示す説明図である。
【図３】本発明の一実施形態に関する通信システムの経路計算装置を示す構成図である。
【図４】本発明の一実施形態に関するヒープを用いるＩＤ発行管理データを示す説明図である。
【図５】本発明の一実施形態に関するアドレスＩＤ索引データを示す説明図である。
【図６】本発明の一実施形態に関する経路計算部による経路の計算結果の一例を示す説明図である。
【発明を実施するための形態】
【００２０】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【００２１】
図１は、通信システムを示す構成図である。
通信システムは、経路計算装置１と、データ転送装置３とがネットワークで接続されて構成される。１台の経路計算装置１は、１台以上の（図１では３台の）データ転送装置３のルーティングテーブル３２を計算して、各データ転送装置３に配布する。
なお、通信システムの各装置（経路計算装置１、データ転送装置３）は、それぞれＣＰＵと記憶手段（メモリなど）とを備えるコンピュータとして構成される。ここで、経路計算装置１とデータ転送装置３とは、同一筐体として構成してもよいし、別々の筐体として構成してもよい。
経路計算装置１のインタフェース１９は、経路計算装置１内の各処理部と、経路計算装置１とは別の外部装置（データ転送装置３など）との間でデータの入出力を行う。
データ転送装置３のインタフェース３９は、データ転送装置３内の各処理部と、データ転送装置３とは別の外部装置（経路計算装置１など）との間でデータの入出力を行う。
【００２２】
各データ転送装置３は、経路管理部３１と、ルーティングテーブル３２と、データ転送部３３とを備える通信装置（ルータ、スイッチなど）として構成される。
経路管理部３１は、経路計算装置１から受信した自装置の経路情報を受け取り、ルーティングテーブル３２として記憶手段に記憶する。
ルーティングテーブル３２は、データ転送部３３のデータ転送処理時に参照され、到着したパケットの宛先に到達するためのネクストホップの情報を含む（詳細は、表７で後記する）。
データ転送部３３は、ルーティングテーブル３２を参照して、受信したパケットを転送する。
【００２３】
図２は、経路計算装置１による経路計算対象であるトポロジ情報９（図３参照）を示す説明図である。
【００２４】
図２（ａ）に示すように、トポロジ情報９は、楕円で示す各ノードと、各ノード間を接続するリンクとで構成されるグラフである。
各ノード内には、「192.168.1.0」のようなノードアドレスを表記する。なお、１つのノードは、１つ以上のネットワークデバイスに対応する。ネットワークデバイスとは、経路の分岐点となりうるデータ転送装置３という１台の装置や、データ転送装置３内の１つのインタフェース３９（図１参照、ＩＰアドレスの割り当て対象）や、データ転送装置３間を接続する１つの下位レイヤネットワーク（ネットワークケーブルなど）として構成される。つまり、トポロジ情報９におけるノードとは、経路計算アルゴリズムにおける経路が分岐する１つの構成単位に対応する。
各リンクには、そのリンクをデータ通信で利用するときのコストを併記する。このコストは、ノード間の接続関係や経路への選ばれやすさを示す指標であり、コストの数値が高いほど経路として選ばれにくいように、経路計算される。
【００２５】
図２（ｂ）は、図２（ａ）のトポロジ情報９を構成するノードごとのノード情報を、表形式で示す。本実施形態では、ノードごとのそのノードに関する情報を総称して、「ノード情報」とする。
なお、ノード情報は、ノードごとの識別情報としてのノードアドレスと、そのノードから１回のリンクで辿ることができる隣接ノードのノードアドレスと、その隣接ノードへのリンクのリンクコストとを対応づけて構成する。
例えば、１行目のノードは、自身に割り当てられているノードアドレスが「192.168.1.0」であり、１つめの隣接ノードとしてリンクコスト「１」で到達する隣接ノード「192.168.2.0」と、２つめの隣接ノードとしてリンクコスト「３」で到達する隣接ノード「192.168.3.0」と、それぞれ接続されている。
【００２６】
ノードアドレスは、ネットワーク全体でユニークに割り当てられるので、あるノードと別のノードとを区別するためのノードの識別情報として作用する。
しかし、ノードアドレスが取りうる値であるアドレス空間は、ノードアドレスとしてＩＰｖ４アドレスを使用するときには３２ビット長（「0.0.0.0」から「255.255.255.255」まで）であるので、２の３２乗通り≒約４３億と非常に大きな範囲になってしまう。
よって、ノードアドレスをノードの識別情報として用いると、そのノードアドレスの検索処理は、その検索対象の空間が非常に広大であることにより、ＣＰＵ使用率および使用メモリ効率の両面から、非効率な検索処理となってしまう。
【００２７】
そこで、本実施形態では、ノード情報へアクセス（リードアクセスだけでなく、ライトアクセスも）するためのノードの識別情報として、ノードアドレスをそのまま用いるのではなく、ノードアドレスと１：１対応であるノードＩＤを用いることにする。
ノードＩＤは、ノードアドレスと１：１対応であるため、ノードの識別情報として作用する。さらに、ノードＩＤには、整数連番値などの効率的な値（割り当てられた値の分布の密度が高く、連続する割り当てられた値どうしの間隔が狭い値）が割り当てられるので、効率的なノードアクセス処理を実現することができる。
そして、ノードＩＤを割り当てるノードの数の上限値が、利用可能なメモリ空間値（物理メモリでもよいし、仮想メモリでもよい）を超えないようにノードＩＤを発行することにより、メモリを節約することができる。
【００２８】
図３は、通信システムの経路計算装置１を示す構成図である。
経路計算装置１は、経路計算装置１の記憶手段に格納される各データ構造（ノード情報管理テーブル１１、アドレスＩＤ索引データ１２、ＩＤアドレス索引データ１３、ＩＤ発行管理データ１４）と、経路計算装置１の記憶手段から読み出されるプログラムがＣＰＵによって実行されることで構成される各処理部（ノードＩＤ処理部２１、ノード情報処理部２２、アドレスＩＤ変換部２３、経路計算部２４、ＩＤアドレス変換部２５、結果出力部２６）とを有する。
【００２９】
ノードＩＤ処理部２１は、１つのノードアドレスに対して、１つのノードＩＤを割り当てるとともに、その割り当てたノードアドレスを各データ構造（ノード情報管理テーブル１１、アドレスＩＤ索引データ１２、ＩＤアドレス索引データ１３、ＩＤ発行管理データ１４）で管理する。
【００３０】
【表１】
2011103613.tif 000003
【００３１】
表１は、ＩＤ発行管理データ１４におけるノードＩＤの新規発行の手法を示す表である。
手法１（表の第２列）は、整数連番値になるように割り当てる方法である。これは１から順番に空いている番号を割り当てていく方法である。ノードＩＤを１、２、３、…と割り当てていく。
手法２（表の第３列）は、定数倍（例えば２倍）すると整数連番値になる値である。０．５、１、１．５、…と番号を割り当てていく。この番号は２倍すると１、２、３、…となり整数連番値になる。
手法３（表の第４列）は、整数連番値ではあるが、一部の値が飛んでいるような割り当て方である。１、２、３、…と連番で並んでいるが、４がとんで５からまた連番値になるよう割り当てられる方法である。
【００３２】
また、明示的にメモリ容量を考慮した割り当て方としては、トライアンドエラーを繰り返す方法がある。トライアンドエラー方式では、まずノードＩＤを割り当て、割り当てたノードＩＤから検索されたメモリアドレスが参照不可なものであれば、再度割り当て直し、参照可能であれば、その値を使用するというものである。なお、ここで挙げた例の他にも前記のようにノードＩＤから参照可能なメモリアドレスを検索可能なものであれば、割り当てを限定しない。
【００３３】
トポロジ情報が変更されたとき、特にノードの追加や削除が起こった場合、割り当てたノードＩＤを更新する必要がある。このとき、トポロジ変更が発生するたびに、変更箇所だけでなく、全てノードＩＤを再割り当てする方法があるが、この方法では、トポロジ変更対象でないノードについてもノードＩＤを割り当て直すことになり、変更に伴う負荷が大きくなってしまう。
そこで、トポロジの変更箇所（追加箇所、削除箇所）のみを対象として、ノードＩＤの変更処理を行うという方法がある。この方法を行うには、ノードＩＤの割り当てを記録し、トポロジ変更が生じるとトポロジの差分情報をチェックする。ノードが追加されたときには、空き番号となっている番号をノードＩＤとして割り当てる。そして、ノードが削除されたときには割り当てられていたノードＩＤを削除する。
【００３４】
このような、ノード情報処理部２２が実行するノードＩＤの差分変更処理は、線形サーチなどの手段で行うと時間がかかることが予想される。この処理の高速化を行う方法として、ノードＩＤの割り当て状況や空き番号の管理を、ヒープを用いることで効率化できる。
【００３５】
図４は、ヒープを用いるＩＤ発行管理データ１４を示す説明図である。ヒープはノードＩＤの割り当て候補値の集合のうち、最小値（図では、ノードＩＤ＝４）を出力するときに使用されるデータ構造である。このデータ構造を用いて、空き番号のうちの最小値を出力することで、できるだけノードＩＤが連番になるよう割り当てることが可能になる。そして、ノードが削除されたとき、このヒープに削除されたノードのノードＩＤを入れることで空き番号を管理する。このように、ヒープを用いることにより、ノードＩＤが飛び飛びの値になることを防ぐことができる。
【００３６】
図３のノード情報処理部２２は、トポロジ情報９を構成するノードの情報であるノード情報（新規登録分、追加分、削除分など）を受信すると、それらをもとにノード情報管理テーブル１１へと更新する。
ノード情報管理テーブル１１は、ノードＩＤと、そのノードＩＤが示すノード情報（またはそのノード情報の格納先へのポインタ）とを対応づけるテーブルである。以下、ノード情報管理テーブル１１の構成例として、２つの例を説明する。
【００３７】
【表２】
2011103613.tif 000004
【００３８】
表２は、ノードＩＤと、そのノードＩＤが示すノード情報とを配列で格納するノード情報管理テーブル１１を示す。
ノード情報管理テーブル１１の左列のノードＩＤは、検索キーとなる要素であり、ノード情報管理テーブル１１を配列としたときの添え字（引数）となる。なお、表２では、ノードＩＤとして１から始まる整数連番値を用いているが、ノードＩＤとして任意の数字や文字列を用いてもよい。そのときには、配列の添え字には整数値以外の数字や文字列が代入されるので、ノード情報管理テーブル１１の配列は、それらの添え字を許容する連想配列として構成される。
ノード情報管理テーブル１１の右列のノード情報は、対応する左列で示されるノードＩＤのノード情報である。表２では、ノード情報として、隣接ノードＩＤと、その隣接ノードへのリンクコストとの組が、隣接ノードごとに記憶されている。
【００３９】
【表３】
2011103613.tif 000005
【００４０】
表３は、ノードＩＤと、そのノードＩＤが示すノード情報の格納先を示すメモリアドレスとを配列で格納するノード情報管理テーブル１１（表３の上部）と、そのメモリアドレスの位置に格納されているノード情報（表３の下部）とを示す。この方式では、ノードＩＤを検索キーとして、ノード情報へのポインタとなるメモリアドレスを検索するため、その検索されたメモリアドレスに格納されているノード情報の格納容量は、固定長でも可変長でもよい。
【００４１】
以上、表２および表３を参照して、ノード情報管理テーブル１１について、説明した。さらに、ノード情報が固定長であり、ノードＩＤとして整数連番値が割り当てられるときなど、所定の規則性を有するときには、ノードＩＤごとのレコードを有するノード情報管理テーブル１１を用意する代わりに、ノードＩＤの値を入力パラメータとして、所定の計算式を計算することにより、ノード情報の格納先を示すメモリアドレスを取得してもよい。
例えば、表３に示すノード情報管理テーブル１１は、計算式「（メモリアドレス）＝１０００＋（ノードＩＤ−１）×５」によって、ノードＩＤの値に応じたメモリアドレスを取得することができる。なお、１０００とは、ノード情報を格納するメモリ空間（表３の下部）の先頭位置である。
【００４２】
図３のアドレスＩＤ変換部２３は、アドレスＩＤ索引データ１２をもとに、ノードアドレスからノードＩＤへの変換を行う。つまり、アドレスＩＤ変換部２３は、ノード情報に記載されている情報のうち、ノードアドレスが記載されている箇所を対応するノードＩＤに書き換える。
【００４３】
アドレスＩＤ索引データ１２は、ノードアドレスを検索キーとして、対応するノードＩＤを取得するためのデータ構造である。以下、アドレスＩＤ索引データ１２の例を２つ挙げる。
【００４４】
【表４】
2011103613.tif 000006
【００４５】
表４は、ＩＰアドレスを８ビット４区切り表記としたときの、アドレスＩＤ索引データ１２を示す表である。アドレスＩＤ索引データ１２は、ノードアドレスであるＩＰアドレスを検索キーとして、対応するノードＩＤを検索するためのデータ構造である。検索キーがＩＰアドレスという文字列であるので、アドレスＩＤ索引データ１２は、ＩＰアドレスを添え字とする連想配列として実現される。連想配列は、添え字である検索キーの値と、その検索キーに対する情報が格納されているメモリアドレスの関係が状況に応じて動的に最適化される（詳細は、後記する図５の説明を参照）。
アドレスＩＤ変換部２３は、ＩＰアドレス「192.168.1.0」が検索キーとして入力されると、アドレスＩＤ索引データ１２の１行目のレコードを参照して、対応するノードＩＤ「１」を得る。同様に、アドレスＩＤ変換部２３は、ＩＰアドレス「192.168.3.0」が検索キーとして入力されると、アドレスＩＤ索引データ１２の３行目のレコードを参照して、対応するノードＩＤ「３」を得る。
【００４６】
【表５】
2011103613.tif 000007
【００４７】
表５は、ＩＰアドレスを１０進数表記（情報キー）に変換したときの、アドレスＩＤ索引データ１２を示す表（表５の上部）と、その１０進数変換の計算結果の表（表５の下部）である。
１０進化の計算方法であるが、ノードアドレス「a.b.c.d」に対し、「a*256^3+b*256^2+c*256^1+d」という計算（演算子「*」は乗算、演算子「^」はべき乗を示す）を行った結果がノードアドレス「a.b.c.d」を１０進化した値である。
このように、ＩＰアドレスを１０進数の情報キーとして表記することにより、アドレスＩＤ索引データ１２を連想配列ではなく通常の配列（添え字が整数値である配列）として実現できるうえに、ＩＰアドレス同士の大小比較が可能となる。
【００４８】
図５は、アドレスＩＤ索引データを示す説明図である。表４，５で説明したアドレスＩＤ索引データ１２は、例えば、以下の２種類の実装方法のいずれかとして実現される。
【００４９】
図５（ａ）に記載されているアドレスＩＤ索引データ１２のデータ構造は、非特許文献１などに記載されている平衡二分木と呼ばれる実装方法である。この実装方法で管理する方法では、ノードごとに、そのノードのＩＰアドレスから計算した情報キー（１０進数表記）と、ノードＩＤとの組の情報を保持する。そして、アドレスＩＤ索引データ１２は、ノード間のリンクを、上部が親側、下部が子側とするツリー構造として構成する。
ここで、所定のノードの情報キーと、その所定のノードの子ノードの情報キーとの関係について、「（所定のノードの左側のリンクから辿る子ノードの情報キー）＜（所定のノードの情報キー）＜（所定のノードの右側のリンクから辿る子ノードの情報キー）」という大小関係を有する。
【００５０】
例えば、検索キー「3232236288」に該当するノードを検索するときには、以下の手順により、目的のノードへと順に辿る。
手順（１）：検索キー「3232236288」が、ルートノードの情報キー「3232236544」と一致せず、かつ、それより小さいので、左側のリンクを辿り、ルートノードの子ノードへと進む（図ではリンクを辿るところは、実線の矢印で表記し、辿らないところは、点線の矢印で表記した）。
手順（２）：検索キー「3232236288」が、子ノードの情報キー「3232236032」と一致せず、かつ、それより大きいので、右側のリンクを辿り、ルートノードの孫ノードへと進む。
手順（３）：検索キー「3232236288」が、孫ノードの情報キー「3232236288」と一致するので、ここで検索を完了する。
【００５１】
図５（ｂ）に記載されているアドレスＩＤ索引データ１２のデータ構造は、ハッシュと呼ばれる実装方法である。この方法では、検索キーとして入力された、ノードのＩＰアドレスから計算した情報キー（１０進数表記）に対して、ハッシュ関数と呼ばれる関数を計算し、その計算結果（ハッシュ値）をもとにノードを検索する手法である。なお、ハッシュ値が同じであるノードが複数存在するときには、それらのノードをリストで接続することで、所望のノードを検索できる。例えば、図５（ｂ）では、ハッシュ関数として、情報キーを１０００で割ったときの余りの値を用いている。
【００５２】
例えば、検索キー「3232236288」に該当するノードを検索するときには、以下の手順により、目的のノードへと順に辿る。
手順（１）：検索キー「3232236288」のハッシュ値「288」に該当する検索結果として、リストの先頭要素である情報キー「3729340288」のエントリを得る。しかし、このエントリの情報キーは、検索キー「3232236288」と一致しないので、リストの次の要素へと進む。
手順（２）：ハッシュ値「288」に該当するリストの２番目の要素として、情報キー「1029383288」のエントリを得る。しかし、このエントリの情報キーは、検索キー「3232236288」と一致しないので、リストの次の要素へと進む。
手順（３）：ハッシュ値「288」に該当するリストの３番目の要素として、情報キー「3232236288」のエントリを得る。このエントリの情報キーは、検索キー「3232236288」と一致するので、ここで検索を完了する。
【００５３】
図６（ａ）は、図２（ａ）で示したＩＰアドレス表記のトポロジ情報９に対して、アドレスＩＤ変換部２３がアドレスＩＤ索引データ１２を参照して、ノードアドレスをノードＩＤへとノードごとに変換した結果を示す。図６（ａ）では、ノードの識別情報を書き換えただけなので、トポロジ情報９のノードやリンクの構成は、変更していない。
【００５４】
そして、図３の経路計算部２４は、図６（ａ）で示したような、アドレスＩＤ変換部２３がノードＩＤに書き換えたノード情報を含めたトポロジ情報９を用いて、経路を計算する。
図６（ｂ）は、経路計算部２４による経路の計算結果の一例として、ノードＩＤ＝１のノードを起点として、他の各ノードへの経路情報を示す。
【００５５】
ここで、経路計算部２４は、経路計算処理において、ノード情報ごとに割り当てられるノードの識別情報として、低効率なノードアドレスではなく高効率なノードＩＤを参照することができるため、ノード情報管理テーブル１１から高速にノード情報を検索して取得することができる。
さらに、経路計算部２４によるノード情報の検索動作が多いほど、計算時間は短縮される。検索動作が多くなる状況として、複数のデータ転送装置３の経路情報を一台で計算する場合がある。経路計算が終了すると、ノード間の経路情報が得られる。なお、経路計算部２４による経路計算アルゴリズムは、例えば、ダイクストラアルゴリズムを用いることができる。
【００５６】
図３のＩＤアドレス変換部２５は、ＩＤアドレス索引データ１３をもとに、経路計算部２４による経路計算結果（図６（ｂ））において、ノードの識別情報をノードＩＤからノードアドレスへの変換を行う。ＩＤアドレス変換部２５によるノードＩＤからノードアドレスへの変換処理は、アドレスＩＤ変換部２３によるノードアドレスからノードＩＤへの変換処理に対する逆変換処理である。このように、逆変換処理が可能なのは、ノードＩＤとノードアドレスとが１：１対応しているためである。
これにより、データ転送装置３は、従来のデータ転送処理と同様に、ノードアドレスを元にしたフォワーディングが実行できるので、既に多くの台数が設置および稼動しているデータ転送装置３への変更や停止を行わずに済む。
【００５７】
【表６】
2011103613.tif 000008
【００５８】
表６は、ＩＤアドレス変換部２５が参照するＩＤアドレス索引データ１３を示す表である。ＩＤアドレス索引データ１３は、アドレスＩＤ索引データ１２と等価なデータではあるが、ＩＤアドレス索引データ１３の検索キーは、ノードＩＤであるので、検索キーがＩＰアドレスであるアドレスＩＤ索引データ１２よりも、高速な検索処理を実現することができる。
例えば、ＩＤアドレス索引データ１３を参照すると、ノードＩＤ「１」のノードアドレスは「192.168.1.0」であり、ノードＩＤ「２」のノードアドレスは「192.168.2.0」であり、ノードＩＤ「３」のノードアドレスは「192.168.3.0」であることが、それぞれ取得できる。このように変換した経路情報をデータ転送装置３における次の転送先の設定に使用する。
【００５９】
【表７】
2011103613.tif 000009
【００６０】
表７は、ＩＤアドレス変換部２５による図６（ｂ）からの変換結果である、ルーティングテーブル３２を示す表である。図６（ｂ）に記載された各経路について、ノードＩＤからＩＰアドレスへの変換が行われている。
そして、図３の結果出力部２６は、表７に示すようなルーティングテーブル３２を、経路計算結果として各データ転送装置３に出力する。これにより、データ転送装置３は、ノードＩＤが経路計算に用いられていることを全く意識せず、従来と同じようにパケットのデータ転送を実行することができる。
【００６１】
以上説明した本実施形態は、コンピュータネットワークにおける経路計算のときに、経路計算アルゴリズムから参照されるトポロジ情報９のノード情報のアクセスを高速化する技術である。
従来では、ノードの識別情報としてＩＰアドレスを使用するため、検索空間が非常に広範囲となってしまい、確保すべきメモリ領域が膨大なものとなるという問題があった。
これに対し、本実施形態では、経路計算部２４の経路計算の前処理として、アドレスＩＤ変換部２３がノードの識別情報をＩＰアドレスからノードＩＤに変換し、経路計算の後処理として、ＩＤアドレス変換部２５がノードの識別情報をノードＩＤからＩＰアドレスに変換する。これにより、経路計算部２４は、経路計算に伴うノード情報のアクセス処理において、検索空間が狭いノードＩＤの検索空間だけを検索すればよいため、確保すべきメモリ領域を大幅に節約することができる。
【００６２】
【表８】
2011103613.tif 000010
【００６３】
表８は、ノードアドレスとして、ＣＩＤＲ（Classless Inter-Domain Routing）に対応したときの、各索引データを示す表である。本実施形態では、ノードアドレスとして、ＩＰｖ４アドレスを用いたが、割り当て可能なネットワークの識別情報なら、ＩＰｖ６アドレスや、アドレスとそのアドレスの付加情報（マスク長）とを組とした情報を用いてもよい。ＣＩＤＲは、ＩＰアドレスとそのマスク長との組の情報をネットワークの識別情報として用いる方式である。
よって、表８に示すように、アドレスＩＤ索引データ１２、ＩＤアドレス索引データ１３などの各データ構造を、ＩＰｖ４アドレスからＩＰアドレスとそのマスク長との組の情報へと置き換えることで、経路計算部２４による任意の経路情報の計算処理に、ノードＩＤを用いることができる。
【符号の説明】
【００６４】
１      経路計算装置
３      データ転送装置
１１    ノード情報管理テーブル
１２    アドレスＩＤ索引データ
１３    ＩＤアドレス索引データ
１４    ＩＤ発行管理データ
２１    ノードＩＤ処理部
２２    ノード情報処理部
２３    アドレスＩＤ変換部
２４    経路計算部
２５    ＩＤアドレス変換部
２６    結果出力部
３１    経路管理部
３２    ルーティングテーブル
３３    データ転送部
【図１】
2011103613.tif 000011
【図２】
2011103613.tif 000012
【図３】
2011103613.tif 000013
【図４】
2011103613.tif 000014
【図５】
2011103613.tif 000015
【図６】
2011103613.tif 000016