(57)【特許請求の範囲】
【請求項１】
ＩＰアドレスとプレフィクス長との組み合わせにより表現された経路を格納する連想メモリをプレフィクス長のグループ毎に領域に分割し各領域の先頭番地を指す先頭ポインタを付与し、この各領域の中で使用されている最老番地を指す末尾ポインタを付与し、初期段階では、前記各領域間に経路の追加のための空き領域を設ける経路表更新方法において、
経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域がある場合は、この上下の空き領域のうち空き領域の大きい方へ経路の追加を行い拡大された前記被追加領域に対応してポインタを再付与する
ことを特徴とする経路表更新方法。
【請求項２】
経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域が無い場合は、最近接の空き領域を探索し、この最近接の空き領域と前記被追加領域との間に挟まれる他領域の経路を前記最近接の空き領域に移動させることにより前記被追加領域の上または下に空き領域を出現させ、この出現させた空き領域に経路の追加を行い拡大された前記被追加領域および経路を移動させた前記他領域に対応してポインタを再付与する
請求項１記載の経路表更新方法。
【請求項３】
経路の削除後にその経路が格納されていた被削除領域の上下の空き領域のうち空き領域の小さい方の空き領域を大きくするように前記被削除領域の経路を移動させ経路を移動させた前記被削除領域に対応してポインタを再付与する請求項１または２記載の経路表更新方法。
【請求項４】
情報処理装置にインストールすることにより、その情報処理装置に、
ＩＰアドレスとプレフィクス長との組み合わせにより表現された経路を格納する連想メモリをプレフィクス長のグループ毎に領域に分割し各領域の先頭番地を指す先頭ポインタを付与し、この各領域の中で使用されている最老番地を指す末尾ポインタを付与し、初期段階では、前記各領域間に経路の追加のための空き領域を設ける経路表更新方法を実行させるプログラムにおいて、
経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域がある場合は、この上下の空き領域のうち空き領域の大きい方へ経路の追加を行い拡大された前記被追加領域に対応してポインタを再付与する手順を実行させる
ことを特徴とするプログラム。
【請求項５】
経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域が無い場合は、最近接の空き領域を探索し、この最近接の空き領域と前記被追加領域との間に挟まれる他領域の経路を前記最近接の空き領域に移動させることにより前記被追加領域の上または下に空き領域を出現させ、この出現させた空き領域に経路の追加を行い拡大された前記被追加領域および経路を移動させた前記他領域に対応してポインタを再付与する手順を実行させる
請求項４記載のプログラム。
【請求項６】
経路の削除後にその経路が格納されていた被削除領域の上下の空き領域のうち空き領域の小さい方の空き領域を大きくするように前記被削除領域の経路を移動させ経路を移動させた前記被削除領域に対応してポインタを再付与する手順を実行させる請求項４または５記載のプログラム。
【請求項７】
請求項４ないし６のいずれかに記載のプログラムが記録された前記情報処理装置読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＰルータ等のパケット転送装置において、パケット転送処理を行うに当り、パケットヘッダ情報を元にパケットの転送経路を決定する際に検索する経路の検索方法に関する。
【０００２】
【従来の技術】
ＩＰルータ等のパケット転送装置においては、パケットヘッダに搭載された宛先アドレスを元に経路表を検索し、次の方路を決定する。経路表には経路と次の方路との関係を保持している。
【０００３】
インターネットではＣＩＤＲ(Classless Inter Domain Routing)の機構が導入されており、経路表の経路は３２ビットのＩＰアドレスとそれに対するプレフィクス長の組み合わせで表現される。経路表の経路は“ＩＰアドレス／プレフィクス長”の形式で表される。
【０００４】
経路のうち、プレフィクス長で指定された長さ以降のビットに関してはＤｏｎ’ｔ  Ｃａｒｅである。例えば１２９．１３１．１７５．１２９／３２は３２ビット全てのビットがＤｏｎ’ｔ  Ｃａｒｅでない経路であり、１２９．６０．８３／２４の先頭の２４ビットが有効な経路である。パケットヘッダの宛先アドレスが１２９．６０．８３．１も１２９．６０．８３．１１１も同じ経路１２９．６０．８３／２４に一致する。
【０００５】
経路表はパケットヘッダの宛先アドレスをキーとして用いて検索する。経路表を検索する際に、ＣＩＤＲでは最長一致と呼ばれる経路検索規則に基づく。最長一致とはキーに用いる宛先アドレスが最も長く一致するものを正解とするものである。例えば、経路表に経路１２９．３８．１１１／２４と経路１２９．３８／１６の二つの経路がある場合に、１２９．３８．１１１．２という宛先アドレスを持つパケットが到着した場合は、経路１２９．３８．１１１／２４の方がより長い範囲で一致するので、それを正解とする。
【０００６】
このような最長一致検索を行う方法としてＰａｔｒｉｃｉａと呼ばれるデータ構造で経路表を表現する手法が取られてきた。Ｐａｔｒｉｃｉａとは経路表をツリー構造で表現するものである。ツリーの各ノードにはアドレスの参照ビット位置と経路とが記載されており、宛先アドレスの参照ビット位置と経路の参照ビット位置とが一致しているかどうかで経路の判定を行うものである。図５に従来のＰａｔｒｉｃｉａによる経路表の実現例を示す。Ｐａｔｒｉｃｉａの検索時間はツリーの深さに依存し、ツリーの深さはＩＰアドレスの幅に依存する。ＩＰｖ４アドレスでは最大３３段になる。ＩＰｖ６アドレスでは最大１２９段になる。メモリ参照を最大１２９段を行うとパケット転送処理時間が増大する。
【０００７】
最長一致による経路表検索を行う別の手段として連想メモリＣＡＭ(Content-Addressable-Memory)と呼ばれる素子を使う方法がある。ＣＡＭとはアドレスをキーとしてアクセスするのではなく、各番地に記録された値をキーとしてアクセスすることができる記憶素子である。各番地には“０”と“１”のバイナリ(Binary)の値だけでなく“Ｄｏｎ’ｔ  Ｃａｒｅ”も使えるターナリー(Ternary)のものもあり、このようなターナリーの連想メモリ（ＴＣＡＭ）を用いることで高速な経路表の検索が可能となる。ＴＣＡＭでは複数のものが同時にキーとして入力されたものに一致する場合は、最も若い番地にいるものが選ばれる。
【０００８】
図６はＴＣＡＭの原理を示す図であるが、図６に示すように、ＴＣＡＭでプレフィクス長はマスクを用いて表現される。マスクビットが１の場合はプレフィクスの値は有効で、マスクビットが“０”の場合はプレフィクスの値はＤｏｎ’ｔＣａｒｅ扱いとなる。図６で例えば１番上のプレフィクスは上位４ビットが有効で下位２ビットはＤｏｎ’ｔ  Ｃａｒｅとなる。
【０００９】
ＴＣＡＭを用いて最長一致検索を行う場合はプレフィクス長が長い順番にＴＣＡＭの若番地に格納する必要がある。最低条件は同じプレフィクス部分を共有する経路同士はプレフィクス長が長いものがより若い番地に格納される必要がある。ＴＣＡＭの格納領域をプレフィクス長毎に分割するのが簡便なやり方である。図７はそのような領域の分け方を示すものである。１２９．６０．８３．１２１／３１はプレフィクス長が３１の領域に格納し、１２９．６０．８３．１２１／３０は３０の領域に格納する。
【００１０】
【発明が解決しようとする課題】
インターネットでは経路表の更新が頻繁に行われる。このためＴＣＡＭを用いて経路表を実現する際には、経路が追加あるいは削除されるたびにＴＣＡＭの中に格納された経路を並べ替えなければならない。
【００１１】
図８はそのような状況を説明する図である。プレフィクス長が３２の経路を経路表に追加する際には、それより老番地の経路をすべて一つずつずらす必要がある。経路表のエントリ数が１０万以上ともなると、その手間は膨大となる。
【００１２】
それを解決するために、プレフィクス長毎に空き領域を設けることが有効であるが、その空き領域を適切な大きさを設けるための経路の更新方法が十分に確立されていない。例えば、プレフィクス長毎の経路数に応じて空き領域を作成するようにすると、作成時にプレフィクス長毎の経路数を集計し、そこから空き領域数を計算しなければならず、計算に時間がかかる上、並べ替えを前回行ったときから経路数の分布に大きな差分があると、多くの経路の並べ替えが必要になるという問題がある。
【００１３】
本発明は、このような背景に行われたものであって、経路の追加または削除の手間を減少させることができる経路表更新方法を提供することを目的とする。すなわち、本発明は、追加または削除の際に、基本的には上下の空き領域を比較するだけであるので、計算に時間がかかることがなく、高速に経路表の更新を行うことができる経路表更新方法を提供することを目的とする。
【００１４】
【課題を解決するための手段】
本発明の第一の観点は、ＩＰアドレスとプレフィクス長との組み合わせにより表現された経路を格納する連想メモリをプレフィクス長のグループ毎に領域に分割し各領域の先頭番地を指す先頭ポインタを付与し、この各領域の中で使用されている最老番地を指す末尾ポインタを付与し、初期段階では、前記各領域間に経路の追加のための空き領域を設ける経路表更新方法である。
【００１５】
ここで、本発明の特徴とするところは、経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域がある場合は、この上下の空き領域のうち空き領域の大きい方へ経路の追加を行い拡大された前記被追加領域に対応してポインタを再付与するところにある。
【００１６】
また、経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域が無い場合は、最近接の空き領域を探索し、この最近接の空き領域と前記被追加領域との間に挟まれる他領域の経路を前記最近接の空き領域に移動させることにより前記被追加領域の上または下に空き領域を出現させ、この出現させた空き領域に経路の追加を行い拡大された前記被追加領域および経路を移動させた前記他領域に対応してポインタを再付与することが望ましい。
【００１７】
すなわち、プレフィクス長毎に分割した各領域は先頭ポインタが指す最若番地から老番地方向に向けて順番に空き領域なく番地を使っていく。このような領域の使い方のため先頭ポインタと末尾ポインタとを用いる。先頭ポインタが指す番地から末尾ポインタが指す番地までは全て使用中である。経路を空き領域に追加するときに上下の空き領域（プレフィクス長Ｎの経路を追加しようとした場合にはプレフィクス長Ｎの先頭ポインタからプレフィクス長Ｎ＋１の末尾ポインタの間が上の空き領域、プレフィクス長Ｎの末尾ポインタからプレフィクス長Ｎ−１の先頭ポインタの間が下の空き領域となる）のうち空き領域が大きい方の端に経路を追加する。
【００１８】
上の空き領域が大きければ、プレフィクス長Ｎの領域の最上端に追加すべき経路を挿入し、先頭ポインタを上へ１つずらす。もし下の空き領域が大きければプレフィクス長Ｎの最下端に経路を追加し、末尾ポインタを下へ１つずらす。直接接している上下の領域に空き領域が無い場合には、最近接の空き領域を探し、その空き領域まで全てのポインタをずらし、経路を追加する。
【００１９】
また、経路の削除後にその経路が格納されていた被削除領域の上下の空き領域のうち空き領域の小さい方の空き領域を大きくするように前記被削除領域の経路を移動させ経路を移動させた前記被削除領域に対応してポインタを再付与することが望ましい。
【００２０】
すなわち、経路の削除を行う際には、削除で空いたところに先頭ポインタまたは末尾ポインタの経路を入れる。上下どちらの経路を空いたところへ入れるかは、上下の空き領域の大きさを比較し、空き領域が小さい方に接している経路を選択する。プレフィクス長Ｎの経路を削除する場合には、上下の空き領域を比較し、上の空き領域が小さい場合には、プレフィクス長Ｎの末尾の経路を削除で空いたところへ移動し、末尾ポインタを１つ上にずらす。下の領域が小さい場合には、プレフィクス長Ｎの先頭経路を削除で空いたところへ移動し、先頭ポインタを１つ下へずらす。ここでは空き領域が無い状態は空き領域最小の状態と考える。
【００２１】
これにより空き領域を無駄なく利用しつつ、上下の空き領域を比較するだけなので計算量が少なく追加削除する場所を決定することができ、高速な経路表更新が可能となる。
【００２２】
本発明の第二の観点は、情報処理装置にインストールすることにより、その情報処理装置に、ＩＰアドレスとプレフィクス長との組み合わせにより表現された経路を格納する連想メモリをプレフィクス長のグループ毎に領域に分割し各領域の先頭番地を指す先頭ポインタを付与し、この各領域の中で使用されている最老番地を指す末尾ポインタを付与し、初期段階では、前記各領域間に経路の追加のための空き領域を設ける経路表更新方法を実行させるプログラムである。
【００２３】
ここで、本発明の特徴とするところは、経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域がある場合は、この上下の空き領域のうち空き領域の大きい方へ経路の追加を行い拡大された前記被追加領域に対応してポインタを再付与する手順を実行させるところにある。
【００２４】
また、経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域が無い場合は、最近接の空き領域を探索し、この最近接の空き領域と前記被追加領域との間に挟まれる他領域の経路を前記最近接の空き領域に移動させることにより前記被追加領域の上または下に空き領域を出現させ、この出現させた空き領域に経路の追加を行い拡大された前記被追加領域および経路を移動させた前記他領域に対応してポインタを再付与する手順を実行させることが望ましい。
【００２５】
また、経路の削除後にその経路が格納されていた被削除領域の上下の空き領域のうち空き領域の小さい方の空き領域を大きくするように前記被削除領域の経路を移動させ経路を移動させた前記被削除領域に対応してポインタを再付与する手順を実行させることが望ましい。
【００２６】
本発明の第三の観点は、本発明のプログラムが記録された前記情報処理装置読み取り可能な記録媒体である。本発明の記録媒体を用いて本発明のプログラムを前記情報処理装置にインストールすることができる。また、本発明のプログラムを保持するサーバからネットワークを介して前記情報処理装置が本発明のプログラムをダウンロードすることによっても前記情報処理装置は本発明のプログラムをインストールすることができる。
【００２７】
【発明の実施の形態】
本発明実施例を図１ないし図４を参照して説明する。図１は本発明実施例の連想メモリにおける領域の構成を示す図である。図２は本発明実施例における領域拡張が不要の場合の経路の追加時の動作を説明するための図である。図３は本発明実施例における領域拡張が必要の場合の経路の追加時の動作を説明するための図である。図４は本発明実施例における経路の削除時の動作を説明するための図である。
【００２８】
本発明は、図１に示すように、ＩＰアドレスとプレフィクス長との組み合わせにより表現された経路を格納する連想メモリをプレフィクス長のグループ毎に領域に分割し各領域の先頭番地を指す先頭ポインタを付与し、この各領域の中で使用されている最老番地を指す末尾ポインタを付与し、初期段階では、前記各領域間に経路の追加のための空き領域を設ける経路表更新方法である。図１におけるｐｌはプレフィクス長を示す。
【００２９】
ここで、本発明の特徴とするところは、図２に示すように、経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域がある場合は、この上下の空き領域のうち空き領域の大きい方へ経路の追加を行い拡大された前記被追加領域に対応してポインタを再付与するところにある。
【００３０】
また、図３に示すように、経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域が無い場合は、最近接の空き領域を探索し、この最近接の空き領域と前記被追加領域との間に挟まれる他領域の経路を前記最近接の空き領域に移動させることにより前記被追加領域の上または下に空き領域を出現させ、この出現させた空き領域に経路の追加を行い拡大された前記被追加領域および経路を移動させた前記他領域に対応してポインタを再付与する。
【００３１】
また、図４に示すように、経路の削除後にその経路が格納されていた被削除領域の上下の空き領域のうち空き領域の小さい方の空き領域を大きくするように前記被削除領域の経路を移動させ経路を移動させた前記被削除領域に対応してポインタを再付与する。ここでは空き領域が無い状態は空き領域最小の状態と考える。
【００３２】
本発明実施例では、本発明の経路表更新方法をコンピュータ装置に実行させるが、コンピュータ装置に、本発明の経路表更新方法を実行させるためには、情報処理装置であるコンピュータ装置にインストールすることにより、そのコンピュータ装置に、ＩＰアドレスとプレフィクス長との組み合わせにより表現された経路を格納する連想メモリをプレフィクス長のグループ毎に領域に分割し各領域の先頭番地を指す先頭ポインタを付与し、この各領域の中で使用されている最老番地を指す末尾ポインタを付与し、初期段階では、前記各領域間に経路の追加のための空き領域を設ける経路表更新方法を実行させるプログラムを用いる。
【００３３】
ここで、本発明の特徴とするところは、本発明のプログラムを用いて前記コンピュータ装置に、経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域がある場合は、この上下の空き領域のうち空き領域の大きい方へ経路の追加を行い拡大された前記被追加領域に対応してポインタを再付与する手順を実行させるところにある。
【００３４】
また、本発明のプログラムを用いて前記コンピュータ装置に、経路の追加を行うべき被追加領域に直接接している上下の領域に空き領域が無い場合は、最近接の空き領域を探索し、この最近接の空き領域と前記被追加領域との間に挟まれる他領域の経路を前記最近接の空き領域に移動させることにより前記被追加領域の上または下に空き領域を出現させ、この出現させた空き領域に経路の追加を行い拡大された前記被追加領域および経路を移動させた前記他領域に対応してポインタを再付与する手順を実行させる。
【００３５】
また、本発明のプログラムを用いて前記コンピュータ装置に、経路の削除後にその経路が格納されていた被削除領域の上下の空き領域のうち空き領域の小さい方の空き領域を大きくするように前記被削除領域の経路を移動させ経路を移動させた前記被削除領域に対応してポインタを再付与する手順を実行させる。
【００３６】
また、本発明のプログラムが記録された前記コンピュータ装置読み取り可能な記録媒体を本発明の記録媒体とし、この本発明の記録媒体を用いて本発明のプログラムを前記コンピュータ装置にインストールすることができる。また、本発明のプログラムを保持するサーバからネットワークを介して前記コンピュータ装置が本発明のプログラムをダウンロードすることによっても前記コンピュータ装置は本発明のプログラムをインストールすることができる。
【００３７】
以下では、本発明実施例をさらに詳細に説明する。
【００３８】
経路表の検索については以下のとおり動作する。経路表の各経路がＴＣＡＭの各プレフィクス長に対応した領域に格納されており、パケットヘッダのＩＰアドレスがキーとして入力され、それにマッチしたＴＣＡＭのエントリの最若番地のものが答えとなる。
【００３９】
プレフィクス長毎に分割した各領域は先頭ポインタが指す最若番地から老番地方向に向けて順番に隙間なく番地を使っていく。その領域のうち、経路を格納している最後の番地を指すのが末尾ポインタである。末尾ポインタが指す次の番地から次のプレフィクス長領域の先頭ポインタが指す番地の一つ前までがそのプレフィクス長領域の空きとなる。
【００４０】
経路表に新たに経路を追加する場合は、直接接している上下の領域に空き領域がある場合には、上下の空き領域の大きさを比較し上の空き領域と下の空き領域のどちらかに追加を行う。この例を図２に示す。
【００４１】
プレフィクス長３０の経路を追加するとする。プレフィクス長３０の領域の上下には空き領域があり、上の領域の方が空き領域が大きいため、プレフィクス長３０の領域の最上端に経路を追加する。それに伴い、プレフィクス長３０の先頭ポインタを上へ一つずらす。
【００４２】
図３に上下に空きがない場合に追加を行う場合の例を示す。この場合は、空き領域がある一番近い所を探す。図中ではプレフィクス長２９の領域の下が一番近い空き領域である。プレフィクス長３０の領域を拡張するために、プレフィクス長２９の最上端にある経路をその空き領域へと移す。移った経路が元々あった所へ追加すべき経路を挿入する。この処理に伴い、プレフィクス長３０の末尾ポインタとプレフィクス長２９の先頭ポインタおよび末尾ポインタを一つずつ下げる。
【００４３】
経路表の経路を削除する場合の例を図４に示す。経路を削除した後に、上下の空き領域の大きさを比較し、空き領域の小さい方の経路を削除した経路が格納されていたところへ移動する。図４ではプレフィクス長３０の経路を削除した後に、上下の空き領域を確保し、下の領域の方が小さいので、プレフィクス長３０の領域の最下端にある経路を削除した所へ移動する。この処理に伴い、プレフィクス長３０の末尾ポインタを１つ上に上げる。
【００４４】
【発明の効果】
以上説明したように、本発明によれば、経路の追加または削除の手間を減少させることができる。すなわち、追加または削除の際に、基本的には上下の空き領域を比較するだけであるので、計算に時間がかかることがなく、高速に経路表の更新を行うことができる。
【図面の簡単な説明】
【図１】本発明実施例の連想メモリにおける領域の構成を示す図。
【図２】本発明実施例における領域拡張が不要の場合の経路の追加時の動作を説明するための図。
【図３】本発明実施例における領域拡張が必要の場合の経路の追加時の動作を説明するための図。
【図４】本発明実施例における経路の削除時の動作を説明するための図。
【図５】従来のＰａｔｒｉｃｉａによる経路表の実現例を示す図。
【図６】ＴＣＡＭの原理を示す図。
【図７】ＴＣＡＭを用いた最長一致検索を行うため経路をプリフィクス長毎に並べて格納している様子を示す図。
【図８】従来の問題で経路追加時にエントリを一つずつずらす必要がある様子を示す図。
【図１】
0003699374.tif 000002
【図２】
0003699374.tif 000003
【図３】
0003699374.tif 000004
【図４】
0003699374.tif 000005
【図５】
0003699374.tif 000006
【図６】
0003699374.tif 000007
【図７】
0003699374.tif 000008
【図８】
0003699374.tif 000009