JP3813136B2 - 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 - Google Patents
通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 Download PDFInfo
- Publication number
- JP3813136B2 JP3813136B2 JP2003121263A JP2003121263A JP3813136B2 JP 3813136 B2 JP3813136 B2 JP 3813136B2 JP 2003121263 A JP2003121263 A JP 2003121263A JP 2003121263 A JP2003121263 A JP 2003121263A JP 3813136 B2 JP3813136 B2 JP 3813136B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- entry
- mask
- search
- prefix
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/48—Routing tree calculation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【発明の属する技術分野】
本発明は、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定する通信制御装置、通信制御方法、通信制御プログラム、及び通信制御用データ構造に係り、詳しくはマスク用プレフィックスの検出を能率化できる通信制御装置、通信制御方法、通信制御プログラム、及び通信制御用データ構造に関するものである。
【0002】
【従来の技術】
IPv4(Internet Protocol Version 4)などのIP(インターネット・プロトコル:Internet Protocol)はLAN(Local Area Network)を超えて通信する場合、プロトコルに宛先IPアドレスを入れてルーターに送り、ルーターに転送してもらうことで目的のアドレスと通信を行う。ネットワーク・ルーター、L3スイッチ等のルーター製品において十数万を超えるIPアドレスをサポートできるシステムは、多くのサーバーやクライアントをサポートできる反面、IPアドレスから該当する転送先Port等を特定するために保持している全てのIPアドレスを検索した上でIPアドレスに対応した転送先Portなどを探し出さなければならなかった。
【0003】
従来技術について共に、IPアドレス検索分野における基本的概念について説明する。
[ルーター]
ルーターは送られてきたプロトコルの宛先IPアドレス情報に従って適切な転送先にそのプロトコルを転送する機器である。
【0004】
[IPアドレス構造]
IPv4のIPアドレスはCIDR(Classless Inter-Domain Routing)構成になっており、プレフィックスとホストアドレス合計32Bit(ビット)からできており、その境界は1Bit単位で可変でありIPアドレスによって異なっている。
【0005】
[ルーティング・テーブル]
ルーターは固定されたルーティング情報やRIP(Routing Information Protocol)、OSPF(Open Shortest Path First)といったルーティング情報を得るプロトコルによって得たルーティング情報を基に、プレフィックス(ルーターでは、該プレフィックスのことを「ネット・ワークアドレス」とも言う。)をキーとするデータベースであるルーティング・テーブルをつくる。このプレフィックスは集約(アグリゲート)された物を含んでいる。集約とはプレフィックスの上位ビットが共通で同じ宛先になる複数のエントリを1個のより短いマスクのプレフィックスエントリとして置き換えることを示す。
【0006】
ルーターは転送するプロトコルの宛先IPアドレスを基にこのルーティング・テーブルを検索して対応するルーティング情報を得、それに基づいてプロトコルの転送を行う。このときルーティング・テーブルの検索キーとしてはプレフィックスが使われることになる。
【0007】
しかし、プレフィックスは可変長であり、マスク情報はプロトコルには含まれない。そこで、ルーティング・テーブルの中で一致するプレフィックスの内、最も長いプレフィックスのエントリを採用する。
【0008】
以上、IPv4ルーターの動作についての説明を行った。この検索処理はマスクが可変長であるのでパトリシア木を逐次検索する方法やその一部をCAM(連想メモリ)を使って高速化した方法などが使われている。
【0009】
一方、特許文献1では、ネットワーク・アドレスを解決するためのハードウェア装置を簡略化するために、送信先アドレスを最上位ビットから所定ビット数ずつ分割し、下位側の分割部分程、木構造の下位側の階層のノードとなるように、分割部分を木構造のノードに対応付け、また、ノードの種類として、経路情報に対応する経路ノードの他に、経路情報に対応しない中継ノード及び境界ノードを設定することを開示する。
【0010】
【特許文献1】
特開2000−349811
【0011】
【発明が解決しようとする課題】
従来のIPv4ルーターでは、バックボーン・ルーターなどでは128kエントリの転送テーブルが必要でCAMに入れるには大き過ぎ、最大32ステップのパトリシア木を逐次検索では処理時間がかかり過ぎて、インターネット通信のレイテンシーが大きくなる原因となっている。
【0012】
特許文献1の検索装置では、木構造の階層数は送信先アドレスの分割数以上となるので、IPv6のように、IPアドレスが128ビットと膨大になる場合には、木構造の階層数は大幅に増大する。また、木構造の階層数は、経路情報に対応しない中継ノード及び境界ノードの存在によって、増大するので、多重の入れ子関係になっているマスク用プレフィックスが存在する場合、すなわち、Pr1⊂Pr2⊂Pr3⊂・・・(Pr1,Pr2,・・・はマスク長は異なるが、Pr1のマスク用プレフィックスはPr2の上位側ビット列部分に一致し、Pr2のマスク用プレフィックスはPr3の上位側ビット列部分に一致し、・・・)である場合も、木構造の階層数は大幅に増大する。木構造の階層数の増大は、送信先アドレスからネットワーク・アドレスを決定するまでに必要な対比判断のステップ数を増大させ、検索時間の増大原因になり、不利である。また、各ノードのエントリ数は1個に限定され、各ノードから下位のノードへのリンクは最大2個であり、的確な検索結果を得るためには、経路ノード間に多数の中継ノードを挿入する必要がある。さらに、マスク用プレフィックスの個数だけ葉ノードが必要になり、木構造全体のノード個数は、マスク用プレフィックスの個数に、葉ノード以外の経路ノード、中継ノード及び境界ノードの個数が加算された値になり、膨大となって、木構造を複雑化する。
【0013】
本発明の目的は、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報に係る木構造について、マスク用プレフィックスの個数に対して階層数及びノード数を低減して、全体の処理時間の短縮を図る通信制御装置、通信制御方法、通信制御プログラム、及び通信制御用データ構造を提供することである。
【0014】
【課題を解決するための手段】
本発明の通信制御装置は、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶する記憶装置、及び前記検索用情報に基づいて受信パケットの転送先経路を検索する経路検索装置を含む。前記検索用情報は木構造に対応付けられたものである。該木構造における各ノードは1個以上のエントリを有している。各マスク用プレフィックスは少なくとも1個のエントリに対応付けられている。各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含む。ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定されている。ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定される。エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられる。各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもつ。 葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされる。前記経路検索装置は、受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出手段、各検索対象ノードにおいて該検索対象ノードの中で抽出アドレスの上位側ビット列部分と一致するマスク用プレフィックスの情報をもつエントリを該当エントリとして検索し該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとしまた該当エントリが複数個であれば該当エントリの中でマスク長さが最大のマスク用プレフィックスの情報をもつエントリをノード内一致エントリとするノード内一致エントリ検索手段、前記ノード内一致エントリ検索手段に検索対象ノードを指示する検索制御手段であって各検索対象ノードにおける各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する検索制御手段、及びノード別検索処理の終了後、抽出アドレスに係る複数個のノード内一致エントリに対応のマスク用プレフィックスの中で最大マスク長のものに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定手段、を有している。
【0015】
本通信制御装置の経路検索装置における各手段はソフトウェア及びハードウェアのいずれによっても実現可能である。本通信制御装置は、例えばルーターであるが、これに限定されず、ブリッジ等、他の通信制御装置を包含する。ルーターでは、送信先アドレスはIPアドレスであり、IPアドレスは受信パケットとしてのIPパケットのヘッダに記入されている。また、ルーターでは、マスク用プレフィックスに対応するものを、ネットワーク・アドレス及び目的ネットワーク・プレフィックス(Destination Network prefix)と呼ぶこともある。
【0016】
本発明において、経路検索装置のノード内一致エントリ検索手段は、検索対象ノードにおいて、該検索対象ノードに属する全部のエントリを抽出アドレスに対して照合し、検索制御手段は、次の検索対象ノードを、最大数が現在の(current)検索対象ノードのエントリの総数+1個となる個数のノードの中から決める。結果、検索情報に対応付ける木構造は、ノード数及び階層数が低減し、受信パケットの次の転送先経路の検索にかかる時間を短縮できる。
【0017】
一致比較をハードウェアで実現する場合には、1個又は複数個の階層のノードがもつエントリの総数は等しくすることが好ましく、これにより、ハードウェア製の比較器を共用できる。
【0018】
なお、発明の実施の形態で詳述するように、検索情報としての木構造を改善するために、1個のマスク用プレフィックスに対応付けるエントリの個数を減少、すなわちエントリを間引きすることがある。エントリの間引きにより、必須のエントリの個数は、木構造が含むことのできるエントリの最大個数より小さくなることがあり、最下層のノードまで検索しなくても、上位の階層のノードのみの検索により今回のマスク用プレフィックスが確定する場合がある。そのような場合には、最下層のノードまでの検索を適宜、中止して、終了時刻を早めることができる。それ故に、本発明における葉ノードは、最下層のノードに限定されない。それより下層のノードへのリンクの無いノードは、木構造の最下層のノードでなくても、葉ノードになり得る。また、或るノードからそれより1階層下のノードへのリンク数は、該或るノードのエントリの総数mとし、m+1に限定されず、m+1未満にしても、正確な検索結果を得ることがてきる場合もある。
【0019】
本発明の通信制御方法によれば、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶し、前記検索用情報に基づいて受信パケットの転送先経路を検索する。前記検索用情報は木構造に対応付けられたものである。該木構造における各ノードは1個以上のエントリを有している。各マスク用プレフィックスは少なくとも1個のエントリに対応付けられている。各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含む。ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定される。ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定される。エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられる。各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもつ。葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされる。該通信制御方法は、受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出ステップ、各検索対象ノードにおいて該検索対象ノードの中で抽出アドレスの上位側ビット列部分と一致するマスク用プレフィックスの情報をもつエントリを該当エントリとして検索し該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとしまた該当エントリが複数個であれば該当エントリの中でマスク長さが最大のマスク用プレフィックスの情報をもつエントリをノード内一致エントリとするノード内一致エントリ検索ステップ、前記ノード内一致エントリ検索ステップにおける検索対象ノードを決める検索制御ステップであって各検索対象ノードにおける各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する検索制御ステップ、及びノード別検索処理の終了後、抽出アドレスに係る複数個のノード内一致エントリに対応のマスク用プレフィックスの中で最大マスク長のものに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定ステップ、を有している。
【0020】
本発明の通信制御プログラムは、通信制御方法の各ステップを コンピュータに実行させる。
【0021】
通信制御用データ構造は、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報に係る。前記検索用情報は木構造に対応付けられたものである。該木構造における各ノードは1個以上のエントリを有している。各マスク用プレフィックスは少なくとも1個のエントリに対応付けられる。各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含む。ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定される。ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定される。エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられる。各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもつ。葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされる。
【0022】
【発明の実施の形態】
以降、本発明を実施の形態及び実施例について具体的に説明する。なお、本発明は実施の形態及び実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【0023】
図1は通信制御装置10の接続図である。通信制御装置10は例えばインターネットに組み込まれる。通信制御装置10は例えばルーターである。各通信制御装置10は1個又は複数個の他の通信制御装置10へ通信制御装置間通信路12を介して接続されているとともに、ローカル通信路14を介して1個又は複数個のホスト16へ接続されている。各通信制御装置10は、ローカル通信路14を介してホスト16から受信したパケットに対して、該パケットの転送先を決定する。例えば、各通信制御装置10は、他の通信制御装置10から受信したパケットをローカル通信路14又は別の他の通信制御装置10へ転送したり、ローカル通信路14を介して受信した外部宛て先用のパケットについては他の通信制御装置10へ転送したりする。なお、図1では、ローカル通信路14を通信制御装置間通信路12とは別個に図示しているが、図示の通信制御装置間通信路12がローカル通信路14を含む場合もある。
【0024】
図2は通信制御装置10の構成図である。通信制御装置10は、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶する記憶装置20、検索用情報に基づいて受信パケットの転送先経路を検索する経路検索装置21、及び検索用情報に対応付けられた木を構築する木構築装置22を含む。木構築装置22は、木を一旦、構築した後も、エントリの追加及び削除等に伴って、木を更新する。通信制御装置10は、その他の構成要素として、記憶装置20の検索用情報を更新する検索用情報更新装置22を含む。記憶装置20は例えば不揮発性のICメモリから成る。
【0025】
図3は検索用情報に対応付けられている木構造を示す。図3において、○はノードNを表し、上下のノードNを接続している線は枝を表す。該木構造は、記憶装置20が記憶している検索用情報に対応付けられており、検索用ノード及び枝を含む。各親ノードは、1個以上の枝を介して直系の各子ノードへリンクしている。木構造において、各階層は、上から順番に第1階層,第2階層,・・・,第n階層と言うことにし、唯一のルート・ノードは最上位階層としての第1階層に存在する。
【0026】
図4は図3の各ノードにおけるエントリ・テーブルを例示している。各ノードは少なくとも1個のエントリを有し、図4に係るノードでは、該ノードがもつエントリ数は例えば3となっている。木構造における各ノードは1個以上のエントリを有し、各マスク用プレフィックスは少なくとも1個のエントリに対応付けられ、各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含む。逆に言うと、木構造に含まれる全部のエントリは所定のマスク用プレフィックスに対応付けられている。各エントリそれに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含む。例えば、図4の1行目のエントリでは、ソート・キーが”01010100”、マスク長が”5”となっているので、マスク用プレフィックスは、”01010100”の上からマスク長分だけ抽出した”01010”となる。
【0027】
ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上の所定値とされる。例えば、図4の例では、ソート・キーのビット数は8とされているが、全マスク用プレフィックスのマスク長の内の最大マスク長が5であれば、ソート・キーのビット数は5以上のどの数であってもよい。
【0028】
説明の便宜上、「上位側ビット列部分」及び「下位側ビット列部分ビット列」の語句を使用する。「上位側ビット列部分」及び「下位側ビット列部分」とは、基になるビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ言うものとする。各ソート・キーについてその所定ビット数の上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定される。図4の2行目のソート・キー”01011000”について、説明すると、該ソート・キーに対応付けられているマスク用プレフィックスは、該ソート・キーの上から4桁までの”0101”である。
【0029】
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートされている。図4ではソート・キーは昇順で配列されている。葉ノード(図3では、第n階層のノード)以外の各ノードは、該ノードのエントリ・リストの一端のエントリに対しては2個の枝及びその他の各エントリに対しては1個の枝により1個下の階層の各ノードへリンクを設定可能とされる。リンクは具体的には各エントリに対応付けられたポインタにより達成される。リンク方式には例えば2種類がある。或るノードのエントリ・リストのエントリのソート・キーE1,E2,・・・,En、及び該ノードのリンク先の各ノードにおけるエントリのソート・キーの範囲をVol[1],Vol[2],・・・,Vol[N+1]とすると、第1のリンク方式(図33)では、Vol[1]<E1≦Vol[2]<E2≦・・・,<En≦Vol[N+1]となり、第2のリンク方式(図示せず)では、Vol[1]≦E1<Vol[2]≦E2<・・・,≦En<Vol[N+1]となる。
【0030】
なお、それぞれ別々のマスク用プレフィックスに対応付けられている複数個のエントリに対して、それらエントリが有しているソート・キーが同一である場合がある。そのような場合でも、エントリが情報として有しているマスク長が異なれば、各エントリが対応付けられているマスク用プレフィックスを異なるものに設定できる。
【0031】
図5は経路検索装置21の構成図である。アドレス抽出手段26は、受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)。ノード内一致エントリ検索手段27は、各検索対象ノード28において該検索対象ノード28の中で抽出アドレスの上位側ビット列部分と一致するマスク用プレフィックスの情報をもつエントリを該当エントリとして検索し、該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとし、また、該当エントリが複数個であれば該当エントリの中でマスク長さが最大のマスク用プレフィックスの情報をもつエントリをノード内一致エントリとする。検索制御手段29は、ノード内一致エントリ検索手段27に検索対象ノード28を指示するものであって、各検索対象ノード28における各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し、該選択したリンクに係るノードを次の検索対象ノード28に決定し、リンクが無い場合には、ノード別検索処理の終了と判断する。転送先経路決定手段30は、ノード別検索処理の終了後、抽出アドレスに係る複数個のノード内一致エントリに対応のマスク用プレフィックスの中で最大マスク長のものに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する。換言すると、転送先経路決定手段30は、ノード別検索処理の終了後、木構造の各階層におけるノード内一致エントリ検索手段27の検出に係るマスク用プレフィックスの中で最大マスク長のマスク用プレフィックスに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する。
【0032】
なお、ノード別検索処理が終了した時点で、全部の検索対象ノード28においてノード内一致エントリが無かった場合もあり得る。そのような場合は、転送先経路決定手段30は、今回の受信パケットに対してその転送先経路を決定する情報は経路検索装置21の検索用情報内には存在しないと判断する。
【0033】
図6は木構築装置22の構成図である。木構築装置22は、マスク用プレフィックス34に基づき記憶装置20に格納する木を構築する。木構造では、各ノードは、木構造全体のエントリをそれらのソート・キーに基づいてソートした順番に従ってエントリを割当てられている(後で、図31を参照して詳述。)。一例としての木構造では、同一階層に属する各ノードのエントリ数は、等しく設定されている。
【0034】
算出手段35は、マスク用プレフィックスCに対してそれに対応付け可能なソート・キーの最小値及び最大値をそれぞれCs_min及びCs_maxとして算出する。この具体例を述べると、マスク用プレフィックスCが”0101”であって、ソート・キーのビット数が8ビットであるとき、最小ソート・キーCs_minは、上位4ビットの”0101”に対して残りの下位4ビットを”0000”とする”01010000”であり、最大ソート・キーCs_maxは、上位4ビットの”0101”に対して残りの下位4ビットを”1111”とする”01011111”である。ソート・キー設定手段36は、マスク用プレフィックスCに対して対応付けるソート・キーCsをCs_min≦Cs≦Cs_maxの条件下で設定する。この具体例を述べると、マスク用プレフィックスCが”0101”であって、ソート・キーのビット数が8ビットであるとき、ソート・キーCsは、01010000≦Cs≦01011111であり、例えばCs=01010001である。木構造生成手段37は、各マスク用プレフィックスについてソート・キー設定手段36の設定したソート・キーに基づき各ノードのエントリを決定し、該決定に基づく木構造を生成する。木構造生成手段37の生成した木構造は、木構造構築装置22の出力とされて、記憶装置20に格納される。
【0035】
2個のマスク用プレフィックスC1,C2に対してそれらC1,C2に対応付けるソート・キーをC1s,C2sとし、また、それらC1,C2に対応付け可能な最小ソート・キーをC1s_min,C2s_min、及び最大ソート・キーをC1s_max,C2s_maxとする。ソート・キー設定手段36は、C1s_min≦C2s_min≦C2s_max≦C1s_m ax(ただし、C1s_min=C2s_min=C2s_max=C1s_maxは除外する。)が成り立つとき、C1sを、C1s_minからC1s_maxまでの範囲内でかつC2s_minからC2s_maxまでの範囲外となる条件下で設定する。木構造生成手段37は、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が同一の葉ノードに属する標準木構造に対して、同一マスク用プレフィックス由来のソート・キーは各葉ノードにおいて1個のみとなるように、同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力する。木構造生成手段37は、また、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が、ルート・ノードから葉ノードへ至る検索経路における上階層のノードと下階層ノードとの両方に存在する標準木構造に対して、該下位階層のノードにおける同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力する。
【0036】
木構造では、1個のマスク用プレフィックスが対応付けられているソート・キーが複数個、存在するときがあり、これが原因となって、抽出アドレスが、そのマスク用プレフィックスの検索過程において、同一マスク用プレフィックス由来の複数個のエントリと繰返し対比されることがある。一方、通信制御装置10では、各検索対象ノードでは、該検索対象ノードに属する全部のソート・キーが抽出アドレスに対して照合される。また、通信制御装置10では、抽出アドレスについての検索対象ノードは、ルート・ノードから葉ノードへ至る検索経路に含まれる全部のノードとなる。したがって、上述の間引きを行っても、検索をしなければならないエントリが検索から漏れる事態が防止され、また、エントリの総数が減ることによる木構造の小型化が達成可能となる。
【0037】
改善した通信制御装置10では、通信制御装置10にデフォルト・ルートを実装する。デフォルト・ルートとは、通信制御装置10が装備するルーティング・テーブルにマスク用プレフィックスが見つからないIPアドレスの転送先として使われる転送先のことを言うものとし、マスク長が0ビットのプレフィックスとして考えることができる。デフォルト・ルートの実装により、通信制御装置10は、今回の受信パケットの転送先経路に関する検索情報を装備していない場合の例外処理の実施を省略できるとともに、経路検索装置21に係るコミュニケーション情報として「見つからなかった」という特異値を設ける必要がなくなる。通信制御装置10において、デフォルト・ルートは、通信制御装置10より上位の所定の通信制御装置への経路選択に設定しておき、該上位の通信制御装置において今回の受信パケットについての転送先経路の決定を委託することになる。デフォルト・ルートの第1の実装方法では、木構築装置22が構築する木構造に、ビット長さが0ビットのマスク用プレフィックスに対応付けたエントリが含まれるようにすることである。IPv4などでは、マスク用プレフィックスのマスク長について1から32までの値を取り得る。つまり、計32個のマスク用プレフィックスが存在し、エントリのマスク長情報は5ビットで表現できる。しかし、第1の実装方法によりマスク長が0ビットのマスク用プレフィックスを追加すると、マスク用プレフィックスのマスク長は全部で33個となり、エントリのマスク長情報は6ビットとなり、ビット長さが増大して不利となる。これを克服する第2の実装方法では、デフォルト・ルートを、2進数で0xxx・・・のマスク用プレフィックス及び/又は1xxx・・・のマスク用プレフィックスに対応付けることである。すなわち、木構築装置22が構築する木構造に、ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックスと、ビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスとが含まれるようにすることである。なお、ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックスと、ビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスとのいずれか一方が、すでに、デフォルト・ルート以外の通信路に設定されているのであれば、該通信路を優先して割り当て、他方がデフォルト・ルートに割当てられる。また、ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックスと、ビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスとの両方が、すでに、デフォルト・ルート以外の通信路にそれぞれ設定されているのであれば、それら通信路への割り当てを保持し、デフォルト・ルートに係るマスク用プレフィックスの割当ては不要である。
【0038】
デフォルト・ルートの実装は、転送先経路を決定するために使用する検索用情報を木構造以外の構造で保持する通信制御装置にも適用可能である。図7は通信制御装置100の機能ブロック図である。マスク用プレフィックス情報記憶手段101は、ビット長さが0ビットであるマスク用プレフィックスに係る情報を含むマスク用プレフィックス情報を記憶する。ビット長さが0ビットであるマスク用プレフィックスはデフォルト転送先経路に設定してある。アドレス抽出手段102は、受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)。説明の便宜上、抽出アドレスのビット列において該ビット列のMSBから連続するビット列部分を上位連続ビット列部分と呼ぶことにする。検索手段103は、上位連続ビット列部分と一致するマスク用プレフィックスの中で最大ビット長さのマスク用プレフィックスを該当マスク用プレフィックスとして検索する。転送先経路決定手段104は、該当マスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を決定する。
【0039】
なお、マスク用プレフィックス情報記憶手段101は、ビット長さが0ビットであるマスク用プレフィックス(以下、適宜、「マスク用プレフィックスDe」と言う。)に係る情報を含むマスク用プレフィックス情報に代えて、ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス(以下、適宜、「マスク用プレフィックスDe0」と言う。)及びビット長さが1ビットでかつビット値が”1”のマスク用プレフィックス(以下、適宜、「マスク用プレフィックスDe1」と言う。)に係る情報を含むマスク用プレフィックス情報を記憶してもよい。マスク用プレフィックスDe0及び/又はマスク用プレフィックスDe1はデフォルト転送先経路に設定してある。
【0040】
図8は通信制御装置120の機能ブロック図である。通信制御装置120は、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶する記憶装置121、及び検索用情報に基づいて受信パケットの転送先経路を検索する経路検索装置122を含む。検索用情報は第1の情報部分126と第2の情報部分127とから成る。所定の自然数uを定義し、マスク用プレフィックスの各ビットの番号を、MSBを1番としてMSBからLSBへの順番で定義する。また、uビット以下及びu+1ビット以上のマスク用プレフィックスをそれぞれ短い及び長いマスク用プレフィックスと呼ぶことにする。長いマスク用プレフィックスについて、1番からu番までの部分及びu+1番から最終番までの部分をそれぞれ上位側マスク用プレフィックス部分及び下位側マスク用プレフィックス部分と呼ぶことにする。同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックスをマスク用プレフィックス群とする(ただし、同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックスが1個である場合は、該長いマスク用プレフィックスが属するマスク用プレフィックス群の要素としてのマスク用プレフィックスは1個のみとなる。)。第1の情報部分126は短いマスク用プレフィックス及び上位側マスク用プレフィックス部分に係る情報を含む。
【0041】
第1の情報部分126は1個のテーブル構造で記憶されている。該テーブル構造の具体例については、図12〜図14において後述する。該テーブル構造は、uビットの相互に異なるソート・キーをもつエントリを含む。各テーブル構造に含まれているエントリには第1及び第2のテーブル構造用エントリが含まれ、第1のテーブル構造用エントリは、そのソート・キーの1番からw(wはu以下の自然数)番までの全ビット値が、該第1のテーブル構造用エントリに対応付けられている小さいマスク用プレフィックスと同一であり、第2のテーブル構造用エントリは、そのソート・キーの全ビットが、該第2のテーブル構造用エントリに対応付けられている上位側マスク用プレフィックス部分と同一である。
【0042】
第2の情報部分127は下位側マスク用プレフィックス部分に係る情報を含む。第2の情報部分127は少なくとも1個の木構造で記憶されている。この木構造は図3で前述したとおりである。各木構造は、各マスク用プレフィックス群に対応付けられるとともに、対応付けられたマスク用プレフィックス群に属する長いマスク用プレフィックスの上位側マスク用プレフィックス部分に等しいソート・キーをもつエントリであってテーブル構造に含まれるエントリからリンクを設定されている。ただし、図3の木構造では、各エントリがマスク用プレフィックス全体に対して割当てられているのに対し、第2の情報部分127における木構造は、マスク用プレフィックス群に対応付けて割当てられている。各木構造における各ノードは1個以上のエントリを有している。各長いマスク用プレフィックスの下位側マスク用プレフィックス部分は少なくとも1個のエントリに対応付けられている。木構造の各エントリは、それに対応付けられた下位側マスク用プレフィックス部分のビット数(以下、「下位側マスク用プレフィックス部分マスク長」と言う。)の情報とソート・キーとを含む。木構造のエントリのビット数は、全部の下位側マスク用プレフィックス部分の下位側マスク用プレフィックス部分マスク長の内の最大下位側マスク用プレフィックス部分マスク長以上に設定されている。ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられている下位側マスク用プレフィックス部分と同一に設定されている。エントリは、それらがもつソート・キーのソート順に基づいて木構造の所定のノードに割当てられている。各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもつ。葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされている。
【0043】
経路検索装置122では、アドレス抽出手段130は、受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)。テーブル構造用経路検索装置131は、抽出アドレスについて1番からu番までのビット列部分及びu+1番以降のビット列部分をそれぞれ第1及び第2の抽出アドレス部分と呼ぶことにしテーブル構造の各エントリと第1の抽出アドレス部分との対比に基づいて今回の抽出アドレスに係る受信パケットの転送先経路を検索する。木構造用経路検索装置132は、木構造の各エントリと第2の抽出アドレス部分との対比に基づいて今回の抽出アドレスに係る受信パケットの転送先経路を検索する。制御装置133は、テーブル構造用経路検索装置131及び木構造用経路検索装置132を制御する。最終決定装置134は、テーブル構造用経路検索装置131及び木構造用経路検索装置132の検索結果に基づき今回の抽出アドレスに係る受信パケットの転送先経路を最終的に決定する。なお、図8では、木構造用経路検索装置132は1個しか図示されていないが、木構造用経路検索装置132はマスク用プレフィックス群の個数だけ存在する。
【0044】
図9はテーブル構造用経路検索装置131の詳細な機能ブロック図である。テーブル構造用経路検索装置131では、検索手段138は、第1の抽出アドレス部分の上位側ビット列部分と一致するソート・キーをもつエントリを該当エントリとして検索する。通知手段139は、検索手段が検索した該当エントリについて所定の木構造へリンクが設定されていれば、その旨及びリンク先の木構造を制御装置133へ通知する。
【0045】
図10は木構造用経路検索装置132の詳細な機能ブロック図である。木構造用経路検索装置132の基本的構造は図5の経路検索装置21のものとほぼ同一である。すなわち、木構造用経路検索装置132のノード内一致エントリ検索手段141、検索制御手段143及び下位側マスク用プレフィックス部分決定手段144はそれぞれ図5の経路検索装置21のノード内一致エントリ検索手段27、検索制御手段29及び転送先経路決定手段30に対応する。相違点は、木構造用経路検索装置132は経路検索装置21におけるアドレス抽出手段26を装備していないこと、及び木構造用経路検索装置132は、マスク用プレフィックス全体ではなく、各マスク用プレフィックス群に対応付けられており、かつ各マスク用プレフィックス群に属するマスク用プレフィックスの下位側マスク用プレフィックス部分に係る木構造について経路探索を行うものであることである。木構造用経路検索装置132において、ノード内一致エントリ検索手段141は、木構造の各検索対象ノード142において該検索対象ノード142の中で第2の抽出アドレス部分の上位側ビット列部分と一致する下位側マスク用プレフィックス部分の情報をもつエントリを該当エントリとして検索し、該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとし、また、該当エントリが複数個であれば該当エントリの中でビット長さが最大の下位側マスク用プレフィックス部分の情報をもつエントリをノード内一致エントリとする。検索制御手段143は、ノード内一致エントリ検索手段141に検索対象ノード142を指示し、各検索対象ノード142における各エントリのソート・キーと第2の抽出アドレス部分との対比に基づいてリンクを選択し、該選択したリンクに係るノードを次の検索対象ノード142に決定し、リンクが無い場合にはノード別検索処理の終了と判断する。下位側マスク用プレフィックス部分決定手段144は、ノード別検索処理の終了後、第2の抽出アドレス部分に係る複数個のノード内一致エントリに対応の下位側マスク用プレフィックス部分の中で最大ビット長さのものを決定する。
【0046】
図11は制御装置133の機能ブロック図である。制御装置133において、第1の指示手段145は、アドレス抽出手段130が抽出した今回の抽出アドレスに対して木構造用経路検索装置132に先駆けてテーブル構造用経路検索装置131に検索処理を指示する。第2の指示手段146は、テーブル構造用経路検索装置131の通知手段139から通知があったときは、木構造用経路検索装置132に検索対象木構造として通知手段139から通知のあったものを指定して今回の抽出アドレスに係る検索処理を指示する。
【0047】
最終決定装置134(図8)は、第2の指示手段146が木構造用経路検索装置132に検索処理を指示しなかったときは、テーブル構造用経路検索装置131の検索手段が検索した該当エントリに係る短いマスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を最終決定する。最終決定装置134は、また、第2の指示手段146が木構造用経路検索装置132に検索処理を指示したときは、木構造用経路検索装置132が検索対象木構造とした木構造のリンク元のテーブル構造のエントリに係る上位側マスク用プレフィックス部分と木構造用経路検索装置132の下位側マスク用プレフィックス部分決定手段が決定した下位側マスク用プレフィックス部分とに基づく長いマスク用プレフィックスを、今回の抽出アドレスに係る受信パケットの転送先経路として最終決定する。
【0048】
図12は複数個のマスク用プレフィックスからデフォルト・ルート及びソート・キーを生成する具体例を示している。実際のIPv4では、IPアドレスが32ビットになっているが、説明の便宜上、IPアドレスのビット長さが6ビットであると仮定し、また、前述の自然数uを3と仮定する。図12(a)は、ビット長さがまちまちの9個のマスク用プレフィックスが昇順で例示されている。図12(b)及び(c)は、図12(a)のマスク用プレフィックスをそれぞれuビット以下のマスク用プレフィックス及びu+1ビット以上のマスク用プレフィックスを集めたものである。番号1,6,7,8のマスク用プレフィックスは短いマスク用プレフィックスであり、これに対して、番号2,3,4,5,9のマスク用プレフィックスは長いマスク用プレフィックスとなる。例えば番号9の長いマスク用プレフィックスにおいて、1番から3番までのビット列”110”は上位側マスク用プレフィックス部分となり、4番以降のビット列としての”0”は下位側マスク用プレフィックス部分となる。
【0049】
図13は検索用情報を1個のテーブル構造と少なくとも1個の木構造とに分けて持つ場合のテーブル構造を示している。該テーブル構造は、ビット長さがuビットでかつ相互に値の異なるソート・キーをもつ計8個のエントリをもつ。各エントリは、ソート・キーに関連付けて、木構造へのリンク付けのためのポインタ、及び短いマスク用プレフィックスの候補を備える。各短いマスク用プレフィックスは、該マスク用プレフィックスの全部のビット番号において等しいビット値であるソート・キーをもつ1個のエントリに対応付けられている。また、同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックス同士は、マスク用プレフィックス群を構成し、各マスク用プレフィックス群は、該群に係る上位側マスク用プレフィックス部分と等しいソート・キーをもつエントリに、該群に係る木構造へのポインタにより関連付けられている。短いマスク用プレフィックス同士は、テーブル構造において必ず別々のエントリに対応付けられる。テーブル構造における検索処理において、木構造へのポインタが設定されていないエントリが、今回の抽出アドレスに対応するソート・キーをもつエントリであると判断された場合には、該エントリに対応付けられた短いマスク用プレフィックスが、今回の受信パケットの転送先経路を決定する因子となる。テーブル構造における検索処理において、木構造へのポインタが設定されているエントリが、今回の抽出アドレスに対応するソート・キーをもつエントリであると判断された場合には、該エントリにリンク付けされた木構造について検索が次に実施される。そして、該木構造における検索処理の結果、今回の抽出アドレスの第2の抽出アドレス部分に対して、該第2の抽出アドレス部分の上位側ビット列部分と一致する下位側マスク用プレフィックス部分が見つからなければ、該検索対象木構造のリンク元のエントリに係る短いマスク用プレフィックスに基づき今回の受信パケットの転送先経路が決定される。また、見つかれば、見つかった下位側マスク用プレフィックス部分に係る長いマスク用プレフィックスに基づき今回の受信パケットの転送先経路が決定される。
【0050】
図14は図13のエントリにリンク付けされた各木構造に下位側マスク用プレフィックス部分が属しているマスク用プレフィックスの集合を示している。図14(a)及び(b)は図13のそれぞれTree−A及びTree−Bに下位側マスク用プレフィックス部分が属しているマスク用プレフィックスの集合である。
【0051】
図15は通信制御方法のフローチャートである。該通信制御方法では、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶し、検索用情報に基づいて受信パケットの転送先経路を検索する。
【0052】
各ステップの前提となる検索用情報について説明する。検索用情報は木構造に対応付けられたものである。該木構造における各ノードは1個以上のエントリを有している。各マスク用プレフィックスは少なくとも1個のエントリに対応付けられている。各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含む。ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定されている。ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定される。エントリは、それらがもつソート・キーのソート順に基づいて木構造の所定のノードに割当てられる。各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートされている。葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされる。
【0053】
図15のS42(アドレス抽出ステップ)では、受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)。S43(ノード内一致エントリ検索ステップ)では、各検索対象ノードにおいて該検索対象ノードの中で抽出アドレスの上位側ビット列部分と一致するマスク用プレフィックスの情報をもつエントリを該当エントリとして検索し、該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとし、また、該当エントリが複数個であれば該当エントリの中でマスク長さが最大のマスク用プレフィックスの情報をもつエントリをノード内一致エントリとする。S44,S45(検索制御ステップ)では、S43(ノード内一致エントリ検索ステップ)へ検索対象ノードを指示する。S44,45では、各検索対象ノードにおける各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し、該選択したリンクに係るノードを次の検索対象ノードに決定し、また、リンクが無い場合にはノード別検索処理の終了と判断する。すなわち、S44では、現在の(カレントの:current)検索対象ノードが葉ノードであるか否かを判定し、判定結果が正であれば、S46へ進み、否であれば、S45へ進む。S45では、検索対象ノードにおける各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し、該選択したリンクに係るノードを次の検索対象ノードに決定してから、S43へ戻る。S46(転送先経路決定ステップ)では、ノード別検索処理の終了後、抽出アドレスに係る複数個のノード内一致エントリに対応のマスク用プレフィックスの中で最大マスク長のものに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する。換言すると、S46では、ノード別検索処理の終了後、木構造の各階層に対してS43の検出に係るマスク用プレフィックスの中で最大マスク長のマスク用プレフィックスに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する。
【0054】
木構造の具体例は次の通りである。各ノードは、木構造全体のエントリをそれらのソート・キーに基づいてソートした順番に従ってエントリを割当てられている。同一階層に属する各ノードのエントリ数は、等しく設定されている。枝により1個下の階層のノードへのリンクを設定されているノードにおいて、該ノードのエントリ・リストの一端のエントリについては2個、その他の各エントリについて各1個の枝が対応付けられている。
【0055】
図16は木構造構築方法のフローチャートである。S51(算出ステップ)では、マスク用プレフィックスCに対してそれに対応付け可能なソート・キーの最小値及び最大値をそれぞれCs_min及びCs_maxとして算出する。S52(ソート・キー設定ステップ)では、マスク用プレフィックスCに対して対応付けるソート・キーCsをCs_min≦Cs≦Cs_maxの条件下で設定する。S53(木構造生成ステップ)では、各マスク用プレフィックスについてS52(ソート・キー設定ステップ)において設定したソート・キーに基づき各ノードのエントリを決定し、該決定に基づく木構造を生成する。
【0056】
さらに、2個のマスク用プレフィックスC1,C2に対してそれらC1,C2に対応付けるソート・キーをC1s,C2sとし、また、それらC1,C2に対応付け可能な最小ソート・キーをC1s_min,C2s_min、及び最大ソート・キーをC1s_max,C2s_maxとする。S52(ソート・キー設定ステップ)では、C1s_min≦C2s_min≦C2s_max≦C1s_max(ただし、C1s_min=C2s_min=C2s_max=C1s_maxは除外する。)が成り立つとき、C1sを、C1s_minからC1s_maxまでの範囲内でかつC2s_minからC2s_maxまでの範囲外となる条件下で設定する。
【0057】
また、好ましくは、S53(木構造生成ステップ)では、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が同一の葉ノードに属する標準木構造に対して、同一マスク用プレフィックス由来のソート・キーは各葉ノードにおいて1個のみとなるように、同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力する。S53(木構造生成ステップ)の別の態様では、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が、ルート・ノードから葉ノードへ至る検索経路における上階層のノードと下階層ノードとの両方に存在する標準木構造に対して、該下位階層のノードにおける同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力する。
【0058】
図17はプログラムを実行するためのハードウェア構成図である。前述した図15及び図16並びに後述する図18〜図22に関連する方法の各ステップは例えば図17のハードウェアを使用して実行される。システム・バス55には、CPU56、主記憶装置57及び入出力制御装置58が接続される。前述した方法は、コード化されたプログラムとして実行可能となっている。入出力制御装置58には、ハード・ディスク・インターフェース等が含まれ、CPU56が実行する各種プログラムはハード・ディスク装置等にストアされている。プログラムは、CPU56において実行されるのに先立ち、主記憶装置57にストアされる。CPU56は、主記憶装置57の命令行を順次、読み出して、該プログラムを実行する。
【0059】
改善した通信制御方法としてデフォルト・ルート実装通信制御方法について説明する。デフォルト・ルート実装通信制御方法におけるデフォルト・ルート及びその実装の利点は、先に、改善した通信制御装置10において説明したとおりである。
【0060】
デフォルト・ルートの実装は、転送先経路を決定するために使用する検索用情報を木構造以外の構造で保持する通信制御方法にも適用可能である。図18はデフォルト・ルート実装通信制御方法のフローチャートである。S151(マスク用プレフィックス情報記憶ステップ)では、ビット長さが0ビットであるマスク用プレフィックスに係る情報を含むマスク用プレフィックス情報を記憶する。ビット長さが0ビットであるマスク用プレフィックスはデフォルト転送先経路に設定してある。S152(アドレス抽出ステップ)では、受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)。説明の便宜上、抽出アドレスのビット列において該ビット列のMSBから連続するビット列部分を上位連続ビット列部分と呼ぶことにする。S153(検索ステップ)では、上位連続ビット列部分と一致するマスク用プレフィックスの中で最大ビット長さのマスク用プレフィックスを該当マスク用プレフィックスとして検索する。S154(転送先経路決定ステップ)では、該当マスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を決定する。
【0061】
なお、マスク用プレフィックス情報記憶ステップ101は、ビット長さが0ビットであるマスク用プレフィックス(以下、適宜、「マスク用プレフィックスDe」と言う。)に係る情報を含むマスク用プレフィックス情報に代えて、ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス(以下、適宜、「マスク用プレフィックスDe0」と言う。)及びビット長さが1ビットでかつビット値が”1”のマスク用プレフィックス(以下、適宜、「マスク用プレフィックスDe1」と言う。)に係る情報を含むマスク用プレフィックス情報を記憶してもよい。マスク用プレフィックスDe0及び/又はマスク用プレフィックスDe1はデフォルト転送先経路に設定してある。
【0062】
別の通信制御方法について説明する。この別の通信制御方法は、受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報に基づいて受信パケットの転送先経路を検索する(図19)。検索用情報は第1の情報部分と第2の情報部分とから成る。所定の自然数uを定義し、マスク用プレフィックスの各ビットの番号を、MSBを1番としてMSBからLSBへの順番で定義し、uビット以下及びu+1ビット以上のマスク用プレフィックスをそれぞれ短い及び長いマスク用プレフィックスと呼ぶことにし、長いマスク用プレフィックスについて、1番からu番までの部分及びu+1番から最終番までの部分をそれぞれ上位側マスク用プレフィックス部分及び下位側マスク用プレフィックス部分と呼ぶことにし、同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックスをマスク用プレフィックス群とする(ただし、同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックスが1個である場合は、該長いマスク用プレフィックスが属するマスク用プレフィックス群の要素としてのマスク用プレフィックスは1個のみとなる。)。第1の情報部分は短いマスク用プレフィックス及び上位側マスク用プレフィックス部分に係る情報を含み、第1の情報部分は1個のテーブル構造で記憶されている。該テーブル構造は、uビットの相互に異なるソート・キーをもつエントリを含む。各テーブル構造に含まれているエントリには第1及び第2のテーブル構造用エントリが含まれ、第1のテーブル構造用エントリは、そのソート・キーの1番からw(wはu以下の自然数)番までの全ビット値が、該第1のテーブル構造用エントリに対応付けられている小さいマスク用プレフィックスと同一であり、第2のテーブル構造用エントリは、そのソート・キーの全ビットが、該第2のテーブル構造用エントリに対応付けられている上位側マスク用プレフィックス部分と同一であり、ソート・キーとに係るエントリが含まれている。第2の情報部分は下位側マスク用プレフィックス部分に係る情報を含む。第2の情報部分は少なくとも1個の木構造で記憶されている。各木構造は、各マスク用プレフィックス群に対応付けられるとともに、対応付けられたマスク用プレフィックス群に属する長いマスク用プレフィックスの上位側マスク用プレフィックス部分に等しいソート・キーをもつエントリであってテーブル構造に含まれるエントリからリンクを設定されていている。各木構造における各ノードは1個以上のエントリを有している。各長いマスク用プレフィックスの下位側マスク用プレフィックス部分は少なくとも1個のエントリに対応付けられている。木構造の各エントリは、それに対応付けられた下位側マスク用プレフィックス部分のビット数(以下、「下位側マスク用プレフィックス部分マスク長」と言う。)の情報とソート・キーとを含む。木構造のエントリのビット数は、全部の下位側マスク用プレフィックス部分の下位側マスク用プレフィックス部分マスク長の内の最大下位側マスク用プレフィックス部分マスク長以上に設定されている。ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられている下位側マスク用プレフィックス部分と同一に設定されている。エントリは、それらがもつソート・キーのソート順に基づいて木構造の所定のノードに割当てられている。各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもつ。葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされている。
【0063】
図19は別の通信制御方法のフローチャートである。S168(アドレス抽出ステップ)では、受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)。抽出アドレスについて1番からu番までのビット列部分及びu+1番以降のビット列部分をそれぞれ第1及び第2の抽出アドレス部分と呼ぶことにする。S169(テーブル構造用経路検索ステップ)では、テーブル構造の各エントリと第1の抽出アドレス部分との対比に基づいて今回の抽出アドレスに係る受信パケットの転送先経路を検索する。S170(木構造用経路検索ステップ)では、木構造の各エントリと第2の抽出アドレス部分との対比に基づいて今回の抽出アドレスに係る受信パケットの転送先経路を検索する。S171(制御ステップ)では、テーブル構造用経路検索ステップ及び木構造用経路検索ステップを制御する。S172(最終決定ステップ)では、テーブル構造用経路検索ステップ及び木構造用経路検索ステップの検索結果に基づき今回の抽出アドレスに係る受信パケットの転送先経路を最終的に決定する。
【0064】
図20は図19のS169(テーブル構造用経路検索ステップ)の詳細なフローチャートである。S175(検索ステップ)では、第1の抽出アドレス部分の上位側ビット列部分と一致するソート・キーをもつエントリを該当エントリとして検索する。S176(通知ステップ)では、検索ステップにおいて検索した該当エントリについて所定の木構造へリンクが設定されていれば、その旨及びリンク先の木構造をS171(制御ステップ)へ通知する。
【0065】
図21は図19のS170(木構造用経路検索ステップ)の詳細なフローチャートである。S180(ノード内一致エントリ検索ステップ)では、木構造の各検索対象ノードにおいて該検索対象ノードの中で第2の抽出アドレス部分の上位側ビット列部分と一致する下位側マスク用プレフィックス部分の情報をもつエントリを該当エントリとして検索し、該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとし、また、該当エントリが複数個であれば該当エントリの中でビット長さが最大の下位側マスク用プレフィックス部分の情報をもつエントリをノード内一致エントリとする。S181(検索制御ステップ)では、ノード内一致エントリ検索ステップにおける検索対象ノードを指示するとともに、各検索対象ノードにおける各エントリのソート・キーと第2の抽出アドレス部分との対比に基づいてリンクを選択し、該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する。S182(下位側マスク用プレフィックス部分決定ステップ)では、ノード別検索処理の終了後、第2の抽出アドレス部分に係る複数個のノード内一致エントリに対応の下位側マスク用プレフィックス部分の中で最大ビット長さのものを決定する。
【0066】
図22は図19のS171(制御ステップ)の詳細なフローチャートである。S186(第1の指示ステップ)では、S168(アドレス抽出ステップ)において抽出した今回の抽出アドレスに対してS170(木構造用経路検索ステップ)の検索処理の実行に先駆けてS169(テーブル構造用経路検索ステップ)における検索処理の実行を指示する。S187(第2の指示ステップ)では、S169(テーブル構造用経路検索ステップ)のS176(通知ステップ)から通知があったときは、S170(木構造用経路検索ステップ)に検索対象木構造としてS176(通知ステップ)から通知のあったものを指定して今回の抽出アドレスに係る検索処理の実行を指示する。
【0067】
図19のS172(最終決定ステップ)について、その詳細を述べる。S172(最終決定ステップ)では、S187(第2の指示ステップ)においてS170(木構造用経路検索ステップ)に検索処理の実行を指示しなかったときは、S169(テーブル構造用経路検索ステップ)のS175(検索ステップ)において検索した該当エントリに係る短いマスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を最終決定する。S172(最終決定ステップ)では、また、S187(第2の指示ステップ)においてS170(木構造用経路検索ステップ)に検索処理の実行を指示したときは、S170(木構造用経路検索ステップ)において検索対象木構造とした木構造のリンク元のテーブル構造のエントリに係る上位側マスク用プレフィックス部分とS170(木構造用経路検索ステップ)のS182(下位側マスク用プレフィックス部分決定ステップ)において決定した下位側マスク用プレフィックス部分とに基づく長いマスク用プレフィックスを、今回の抽出アドレスに係る受信パケットの転送先経路として最終決定する。
【0068】
【実施例】
図23以降の図は本発明の実施例に関する。
【0069】
図23はIPv4のIPアドレスの構成を示す。IPアドレスは、32ビットからなり、上位ビット列部分及び下位ビット列部分に2分割され、上位ビット列部分はプレフィックス(IPでは、ネットワーク・アドレスとも言う)を表し、下位ビット列部分はホスト番号を表す。プレフィックスとホスト番号との合計のビット数は32ビットに決められているが、プレフィックスのビット数、すなわちマスク長は、受信したパケットごとに変化するとともに、その情報は受信パケット内に含まれておらず、通信制御装置は、今回受信したパケットのプレフィックスが何であるかを、自ら検出する必要がある。
【0070】
ソートされたIP検索木とその検索機構とを中心に説明する。主要点は、マスク長によるトポロジカルな木構造(パトリシア木)を採用せず、必要に応じて1個のエントリを複数のエントリに分割することにより、すべてのエントリを平等で構造をもたないエントリ集合に直すことである。このエントリ集合を高速に検索するために、以下の検索木が実装される。
【0071】
(1)転送テーブルから検索木を作る方法
(1−1)転送テーブルを展開して1次元のソートされたリストを作る。
転送テーブルの各プレフィックスを基にしてIPアドレスに相当するキー・データを作り、このキーに従って昇順ソートを行い1次元のリストを作る(具体例は、図25を参照して、後述。)。
【0072】
キー・データはプレフィックスに続くビットを継ぎ足して、IPアドレスと同じ長さ(図25では、説明の簡略化上、IPアドレスの長さは8ビットであると仮定している。)にしたものである。継ぎ足すデータはマスクによって一致検索対象とならない下位ビット(ホストアドレス領域)であり、次のように決める。基本方法1:自身のマスク長より長いマスク長のプレフィックスをもちかつ自身のマスク長までのビット値が一致するプレフィックスの情報をもつエントリが他にないものの場合、ALL”0”などの任意の値を埋める。例:図25の第2行のプレフィックス”101001”に対してソート・キーを”1010010”に設定。
【0073】
これ以外の場合は次の基本方法2となる。
基本方法2:自身が排他的に適応される複数のIPアドレス連続領域を考える。それぞれの連続領域内のIP値1個を代表値として任意に選ぶ。この操作を、プレフィックスがカバーする領域全体にわたって行うことで複数に分割したエントリとする。例:図25のプレフィックス”1010”に対して、B1,B2,B3のソート・キーを設定。
【0074】
図24はIPアドレスを8Bitとした転送テーブルの例である。図25は図24の転送テーブルを基本方法1,2で展開し、かつソート・キーでソートしたテーブルである。図26にこれらとIPアドレスとの関係を示す。基本方法1に対応するのは、A1、D1、E1であり、基本方法2に対応するのは、B1、B2、B3及びC1、C2である。このように展開すると、Nエントリの転送テーブルは最大で2×N−1エントリに展開される。これは、次のような理由から理解される。すなわち、マスク長が短いもの(カバーするIPアドレス領域の広いもの)から順次上記基本方法1,2でテーブルを構築していく過程を考える。そうすると転送テーブルの1個のエントリを展開する過程は基本方法1によって足されることになる。一方そのエントリが、すでにあるエントリのカバーする領域と重なる場合、すでにあるエントリについて基本方法2の処理を再度実行することになる。結果としてこの過程は必ず次の▲1▼〜▲4▼のいずれかになる。なお、図27〜図30において、中間に”/”が挿入されている数値において、”/”より前の二進数はプレフィックスを表し、”/”より後の数値はマスク長を意味し、”/”の無い二進数はソート・キーを表す。
▲1▼図27:それまでに作ったエントリ(代表値01101001をもつエントリ)と独立なエントリ(代表値01110100をもつエントリ)が1個、足される場合、1エントリが足される(図27)。
▲2▼図28:包含関係のエントリ(代表値01101001をもつエントリ)がすでにあり、その片端部を置き換える場合、1エントリ(代表値01101010をもつエントリ)が足される。このとき置き換え対象エリアの代表値(01101001)が新たに足されるエリア内にある場合は別の値(01101010)に選び直す。
▲3▼図29:包含関係のエントリ(代表値01101001をもつエントリ)がすでにあり、そのエントリを2個に分断して、新たにこのエントリ(代表値01101010をもつエントリ)が足される場合、2エントリ(代表値01101001,01101111に対応する2個のエントリ)が足される。新たなエリアがすでにある代表値と干渉する場合はその代表値を別の値に選びなおす。
▲4▼図30:すでに他のエントリ(代表値01101001をもつエントリ)が同じ領域を占有しており、それを置き換える場合、エントリは、置き換えられ、増えない。
【0075】
このことから、このような順番で構築する限り、1個のエントリを増やすたびに、エントリ総数は最大で2エントリ増えることになる(▲3▼)。また最初のエントリはその追加に対するエントリ増大数は1個にしかならない(▲1▼)ので、エントリ総数は最大で2×N−1エントリになる。また最終形は、範囲内で任意の代表値を選ぶ自由度以外、一意であり、構築の順序によらないので、常にこの値を超えないことが分かる。このようにして得られた1次元のリストは目的のIPアドレスに対して、一致する値のエントリがある場合、それが目的の検索対象となり、そうでない場合でも、(a)該目的のIPアドレスより小さくかつ該目的のIPアドレスに最も近い代表値をもつエントリ又は▲2▼該目的のIPアドレスより大きくかつ該目的のIPアドレスに最も近い代表値をもつエントリのいずれか一方が目的の検索対象となる。そのためこれらを発見する検索を行うことができれば、目的の検索が達成される。これはソートされたデータに、新たに1個のデータを加える位置を探す操作と、同じものである。
【0076】
(1−2)展開した1次元のソート・キー・リストから検索木を作る。
このソート・キー・リストを検索木構造に展開し、検索機構で用いる。検索木は次のような構造からなる。
(a)根(ルート。木の始まり。木につき1個ある。)から葉(リーフ。木の末端部。)までの高さが一定。
(b)葉と根を含んだ各ノードにはレベル(木構造の階層)毎に一定の数のエントリを持ったソート済みエントリ・テーブルを持つ。
(c)葉を除いた各ノードのエントリ・テーブルにはキーとの大小関係から次のレベルのノードに対するポインタをキーの数+1個持つ。
【0077】
この構造に(1−1)の1次元の昇順ソート・キー・リストのデータを図31のように展開する(高さが3で。各ノードは2個のエントリと3個のポインタをもつ例)。図31では、各エントリは最初のPの文字とそれに続く順番とで表している。図31の展開方法は、底辺の階層を上からd番の階層とし、d番の階層の各ノードの最大エントリ数nd、その上の階層の各ノードのエントリ数nd-1、そのまた上の階層のエントリ数nd-2とする。そして、各エントリを次のように各ノードへ割当てる。
1〜nd番のエントリ:d番の階層の1番のノード。
nd+1番のエントリ:d−1番の階層の1番のノード。
nd+2〜2・nd+2番のエントリ:d番の階層の2番のノード。
2・nd+3のエントリ:2≦nd-1であるならば、d−1番の階層の1番のノード。
2・nd+4〜3・nd+4番のエントリ:d番の階層の3番のノード。
3・nd+5のエントリ:3≦nd-1であるならば、d−1番の階層の1番のノード。nd-1<3であるならば、d−2番の階層の1番のノード。
3・nd+5〜4・nd+5番のエントリ:d番の階層の3番のノード。
・・・
【0078】
すなわち、連続順番のnd個のエントリが最下層のノードに割当てられると、その次のエントリは原則では、1個だけ上の階層の新規又は既存のノードへ割当てられる。もし、1個上の階層のノードが、これ以上のエントリの割当て不能であるときは、例外として、そのまた上の階層の階層のノードと言うように、新規又は既存の、エントリの割当て可能な、ノードへエントリを割当てる。そして、上の階層に割当てられたエントリの次のエントリからnd番目までのエントリまでは再び、最下層の新規のノードに割当てられる。
【0079】
図32は図31の木におけるノード(葉ノードを除く。)にポインタを追加したものである。P0とP1との組やP8とP17との組がエントリ・テーブルであり、図32の矢印(ポインタ)を含んだものをノードと言う。P8とP17とのノードは、それらのエントリ・テーブルとP2とP5のノードへのポインタ、P11とP14のノードへのポインタ、P20とP23のノードへのポインタからなる。結果として、すべてのノードについて図33の関係が満たされるようになる。キーが一致する場合は図のように下側のポインタに続くことになる。なお、図32のポインタは、”<”又は”>”の関係に基づくものとなっており、”=”の関係を含まないことになっている。ポインタが”=”を含む場合は、図34に説明するパディングを行った場合、及びエントリ数を減少させるための改善処理をした場合であり、その他の場合には、ポインタは”<”又は”>”の関係に基づくもののみで足りる。また、”=”に係るポインタが必要になる場合に、”≦”に係るポインタ及び”≧”に係るポインタのいずれを使用するかは、任意である。
【0080】
すなわち、検索木での「=」の取り扱いは、(a)検索時の枝選択、及び(b)構築データ(キー)同士が一致する場合の配置に基づいているが、(b)は(a)との整合性を取る必要がある。上位の検索対象ノードで、IPアドレスの上位側列部分と一致するエントリが見つかっても、すなわち「=」のエントリが見つかっても、さらに、後続して検索対象ノードとなるノードにおいても、「=」のエントリがあれば、それが検索され得るように、「=」を含むリンク(又はポインタ)を木構造に設定しなければならない。図33では、Vol[1]に含まれるすべての要素<E1≦Vol[2]に含まれるすべての要素<E2≦・・・En≦Vol[n+1]に含まれるすべての要素の関係で説明されているが、Vol[1]に含まれるすべての要素≦E1<Vol[2]に含まれるすべての要素≦E2<・・・En<Vol[n+1]に含まれるすべての要素の関係としてもよい。
【0081】
データの数が木の大きさと一致せず、該木全体のエントリがあまる場合、検索機構が正しく動作するデータ例えばソート・キー・リストの最後の値やすべてに一致しないALL1などの値を使って残りを埋め、検索木を完成させる。
【0082】
図34は図25のデータに基づいて作成した木である。該木はレベル(階層)が2であり、各ノードは、レベルに関係なく2エントリをもつ例である。この木データ構造とその構築法は一般的に検索木に用いられるものであり、本発明はそれを利用しているに過ぎない。この木構造を以後、検索木と言う。
【0083】
(2)検索機構の構成
前述の(1)のように構成した検索木にすると、あらゆるIPアドレスについて根(最上の階層のレベルのテーブル)から各ノードで大小比較を行い、葉までたどる過程における各ノードでは、次の(a)〜(c)のいずれかのエントリを検索する。
(a)IPアドレスと一致するソート・キーをもつエントリ。
(b)IPアドレスより小さいソート・キーの中で最大のソート・キーをもつエントリ。
(c)IPアドレスより大きいソート・キーの中で最小のソート・キーをもつエントリ。
【0084】
(a)のエントリが存在すれば、該エントリが該ノードにおける検索対象のエントリとなる。(a)のエントリが存在しなければ、(b)又は(c)のいずれかのエントリが該ノードにおける検索対象のエントリとなる。(b)及び(c)のいずれのエントリを該ノードにおける検索対象のエントリにするかは、該ノードのポインタが”<”及び”>”のいずれに設定されているかに依る。なお、本ノードにおける(a)のエントリは、もし他のノードに(a)に該当するエントリが見つからないならば、今回のIPアドレスについてのプレフィックスとなる。本ノードにおける(a)のエントリは、もし他のノードに(a)に該当するエントリが見つかっても、マスク長が他のノードにおけるエントリのマスク長より長いならば、今回のIPアドレスについてのプレフィックスとなる。根から葉までたどった過程の全ノードにおいて(a)のエントリが見つからないならば、該木構造には、今回のIPアドレスについてのプレフィックスをもつエントリは存在しないことになる。ただし、マスク長0のデフォルト・ルートを定義しておけば、根から葉までたどった過程の全ノードにおいて(a)のエントリが見つからなくても、デフォルト・ルートが今回のIPアドレスについてのプレフィックスにすることができる。こうして、根から葉までの一回の探索により検索が終了する(図32)。
【0085】
IPアドレスからプレフィックスを検出する方法を述べる。
最初に検索木の根から次々と枝をたどって葉に至る一方向の検索を、以下の(I)〜(IV)の動作を行う検索機構を作用させて行う。
(I)枝の探索操作:
▲1▼ノードのソートされたキーリストの中で目的のIPアドレス(今回の受信パケットのIPアドレス)より大のソート・キーの中で最小のものを見付ける。
▲2▼そのソート・キーに対応した次のリスト(ノード)へのポインタを得る。IPアドレスがノード内で最大のソート・キー以上である場合は、該最大のソート・キーをもつエントリに割当てられていて該最大のソート・キー以上のソート・キーを含むノードへ向かうポインタを用いる。
(II)一致候補検索操作:
▲1▼ノード内の全部のソート・キーに対しマスク付き一致を見付ける。
▲2▼一致したものの内、最長プレフィックスになるものを探し、そのプレフィックス長と対応するデータを保持しておく。根以外の一致候補検索操作では根から保持されたプレフィックスを含めて最大マスク長のものを探す操作とする。
(III)木の探索操作:
▲1▼(I)で得られたポインタにより次のレベルのノードに移動して(I)と(II)の操作を行う。
▲2▼この操作を葉まで繰り返す。(葉では(I)の操作は不要)
(IV)最終操作:
▲1▼葉まで到達し、(II)の操作によって最後に得られた最長一致プレフィックスに対応するデータを返す。
【0086】
実装例としてIPv4では各レベル(階層)におけるノードのエントリ・テーブルのエントリ数をそれぞれ39/8/8/8/8とすると合計5回の同様な操作で128k個の転送テーブルに対応した検索を実行できる。この場合、39 + 40×8 + 40×9×8 + 40×9×9×8 + 40×9×9×9×8=262439となり、128k×2−1個(=262143)を上回る。
【0087】
実装例としては最上階層の39個のエントリ・テーブルの検索はコントローラ・チップ内で行い、以降の繰り返しをメモリ・チップ内で行う形式などが考えられる。この場合、メモリ・バスを検索コマンド送信と検索結果受信の2回のアクセスによる占有で済ますことが可能となる。(I)と(II)の操作はそれぞれのチップ内部のバスバンドを有効利用して、並列化を実現することができる。また、メモリ内の検索動作は上の例で8個の検索を4回実行するというように、固定回の動作とできる。そのためハードウエア動作のスケジュールを検索に先立って実行することが可能となる。この(I)と(III)の検索機構は一般的な検索の検索機構であるが、実施例では、(II)と(IV)の機構を付加し、マスク付きデータの検索を可能にする。
【0088】
(3)木の改善について:
テーブルを更新する処理などが(1)の基本方法2の操作によるエントリ増加で重くなる、その改善方法を述べる。改善方法は次の3つの原理に依拠する。なお、以降に説明する改善方法について、改善方法1〜3は、エントリ群の入れ子(nest)構造(「入れ子構造」はすぐ後で説明する。)を考慮せずに、適用されるものであり、改善方法4はエントリ群の二重の入れ子構造部分に適用されるものであり、改善方法5以降の改善方法は、エントリ群の三重以上の入れ子構造部分にも、改善方法4〜9を適宜組み合わせることによって、木構造を改善するものである。ここで言う「エントリ群(グループ)の入れ子構造」とは次の通りである。第1のプレフィックスに対応付け可能なソート・キーの範囲が、第1のプレフィックスとは別の第2のプレフィックスに対応付け可能なソート・キーの範囲を内側に含むとき、第1のプレフィックスに対応付けられた複数個のエントリを含む第1のエントリ群は、第2のプレフィックスに対応付けられた1個又は複数個のエントリを含む第2のエントリ群を、ソート・キー範囲に関して内側に包含しており、第1及び第2のエントリ群の木構造部分を入れ子構造と呼んでいる。
【0089】
原理1:IPアドレスのプレフィックスが、分割されて生成された複数個のエントリに対応付けられている場合、それら複数個のエントリのどれか1個がIPアドレスに対して(2)(II)で評価されるならば、該IPアドレスのプレフィックスを検出することができる。
原理2:探索経路としたすべてのノードに対して一致候補を探す機構をもつので、一致候補(IPアドレスのプレフィックスに係るソート・キーをもつエントリ)は探索経路上のどのノードにあってもよい。
原理3:探索経路としたノードのエントリ・テーブルすべての一致候補を探す機構をもつので、一致候補はテーブルの中で探索経路決定に寄与しないエントリを含め、どのエントリであってもよい。
【0090】
改善方法1:原理1と3から葉ノードに1個のプレフィックスから作られた複数のエントリが入る場合は、そのうちの1個のみにして、ほかを消すことができる。
改善方法2:原理1と2から葉ノードに同一のプレフィックスに係る1個または複数のエントリが入っていて、その葉に至る探索過程の枝ノードにも同一のプレフィックスに係るエントリがある場合は、その葉ノードのエントリを消すことができる。ただし途中の枝のエントリは探索のために必要なため、消すことはできない。例:図35。
【0091】
改善方法3:原理1と2と3から、分割が多くなるエントリ(「O」と言う。)に対して、分割後の各エントリ(以下、適宜、「O由来のエントリ」と言う。)のソート・キーの内、最小値のソート・キーと最大値のソート・キーとを見つけ、該最小値のソート・キーから該最大値のソート・キーまでの範囲内にソート・キーをもつエントリによるソート・キー・リストを考える。その際、O由来のエントリのグループ(「リストO」と言う。)を除いたものをリストM、リストMのn番の要素をM[n]とする。リストMのエントリ数をMcとする。Mc+1個のエントリを収容することのできる木を対象木(target tree)として考える。該対象木の高さを求め、その値をHとする。また、該対象木における高さHのレベルのテーブルにおけるエントリ数を求め、その値をLとする。例えば、図31の木構築方式に従って5エントリの対象木を構築すると、P0からP4までのように入れることができ、このように何も入っていない木に順次入れた配置が最もHとLが小さくなるので、Mc=4ではH=2、L=1となる。また、6エントリの対象木は、H=2、L=2となる。次に、Mc+1個のエントリの群の中の最小値のエントリの直前まで、順次木を埋める。この木に該群のMc+1個のエントリを順次足す場合、直前のエントリ(リストMの中の最小のソート・キーより順番が1個前のソート・キーをもつエントリ)で決まる木のバウンダリによって最も高いレベルに入るエントリが次の3通りのケースいずれかになる。
【0092】
ケース1:葉から見てHを超えた高さのエントリを1個占有する場合。
ケース2:高さHのエントリをL個占有する場合。
ケース3:高さHのエントリをL+1個占有する場合。
【0093】
なお、図31の木のように各ノードの最大エントリ数が2に設定されている場合、前述の例(6エントリの対象木)に対しては、Lがすでに2となるので、ケース3(高さHのエントリをL+1個占有する)は起こらない。
【0094】
上記ケース1〜3の具体例として、図31の木にMc=4のリストを加える場合を考える。該例では、H=2、L=1となる。
例1(図37):直前のエントリがなく、このリストMが最初である場合、P0からP4を占有し、H=2のP2を占めるのでケース2になる。
例2(図38):直前のエントリがP3に埋まっていた場合、P4−P8となり高さ3のP8を含むので、ケース1なる。
例3(図39及び図40):直前のエントリがP1に埋まっていた場合、P2−P6となりH=2のレベルでP2とP5を含むので、ケース3になる。
例4(例図無し):直前のエントリがP24に埋まっていた場合、高さ4のノードが必要になり、ケース1になる。
【0095】
それぞれについて次のように対処する。
ケース1の場合:
・Hを超えた高さのエントリ(Sと言う)の直前までリストMで順次、構築する。
・SにOのエントリを作る。その際、マスク外データ(プレフィックス以外のビット列部分)を次のように選んでこの場所に入る値にする。
リストMのみの順番でSに対応するエントリをM[x]とすると、そのマスク外データはM[x]のそれと同じ値にする。Sが最後のエントリであった場合は、Oの(先ほどMを作るときに除外した)リストOの最後の値にする。これらは木のソート順に合うようにするための例であり、Sの前後で大小関係が壊れない値であればよい。
・以下M[x]以降リストMで通常どおり順次、構築する。
これでOの最大値までの木の構築はできたことになる。これは構築したリストMのエントリすべてに対する検索パスの上流にエントリSが位置し、分割対象となっていた領域すべてに至る検索で必ずSが評価される原理に拠っている。
【0096】
ケース2の場合:ケース1と同様に、リストMで順次、構築する。その際、高さHのエントリL個のうちどれか1個を任意に選んでそれをSとし、ケース1と同様に処理する。1個だけの置き換えで済むのは、このL個のエントリは1個のノードに含まれ、かつ構築したリストMのエントリすべてに対する検索木パスの上流にこのノードが位置し、Oの分割対象となっていた領域すべてに至る検索木で必ずL個すべてを含むエントリ・テーブル全体が評価される機構(原理3)を有している原理に拠っている(図36)。またケース1と2が同時に成立する場合はケース1の対処のみを行う。
【0097】
ケース3の場合:ケース2と同様に処理する。その際SをL個でなくL+1個の中から1個選ぶ。原理は2の場合と同じである。結果として最も高い階層のノードのエントリ1個をOに属するエントリとすることで、分割されたOを1個のOで実現することができる。
【0098】
改善方法4(同一のプレフィックス由来の複数個のソート・キーをグループと言うことにして、2個のソート・キー・グループ双方のソート・キー総数が多くなる場合で、片方のソート・キー・グループにおける最小ソート・キーから最大ソート・キーまでの数値範囲Xがもう一方のソート・キー・グループの最小ソート・キーから最大ソート・キーまでの数値範囲Yを包含する場合のその1。図41の左側部分では、Cが外側ソート・キー・グループ、Hが内側ソート・キー・グループ。):内側ソート・キー・グループの数値範囲Yにより外側ソート・キー・グループの数値範囲Xを2個(以上)X1,X2等に分け、これにより、区分けされる各X1,Y,X2ごとに独立に改善方法3と同じ処理を行うことで対応できる。なお、図41では、X1,Y,X2はそれぞれCの数値範囲1、Hの数値範囲、及びCの数値範囲2に相当する。
【0099】
改善方法5(同一のプレフィックス由来の複数個のソート・キーをグループと言うことにして、2個のソート・キー・グループ双方のソート・キー総数が多くなる場合で、片方のソート・キー・グループにおける最小ソート・キーから最大ソート・キーまでの数値範囲Xがもう一方のソート・キー・グループの最小ソート・キーから最大ソート・キーまでの数値範囲Yを包含する場合のその2。):外側ソート・キー・グループについて以下のように決める。
GM=(分割対象となっている内側グループの総数:SM)+(内側グループ及び外側グループのいずれにも属しないソート・キーの総数)
【0100】
また、このソート・キー・リストをリストGMと言う。(GM+1)個を収容することのできる木の葉からの高さを求める。その値をGHとする。またGHの高さのテーブルに最低必要なエントリ数を求める。その値をGLとする。内側のすべてと外側のエントリを同時にそれぞれ改善方法3で縮合することを考え、このとき外側についてはGM,GH,GLをH,M,Lとみなして改善方法3に適応する。外側のSがどの内側のどのSとも衝突しない場合又はそのようなSが選べる場合は、このままそれぞれ同時に改善方法3に基づいて処理することができる。
【0101】
改善方法4と同様な場合であって、改善方法4によっては分割数が大きくなり過ぎ、また、改善方法5はSの衝突で使えない場合(例:図43は図42の標準木展開に対して改善方法5に基づいて改善するとHとCとが干渉してしまう。なお、図43において、H=H2,C=H2となっているが、HとCとのソート・キーが同一であっても、マスク長が異なるので、HとCとは相互に識別可能である。)。この場合は、以下の原理を基にさらに縮合することができる。
【0102】
原理4:改善方法4でも分かるとおり分割対象となるエントリは1個にまとめて処理することも、複数の部分集合として処理することもできる。この部分集合への分け方はどのようのものであってもかまわない。
原理5:任意のエントリを複数連続コピーし、木を構築しても、ソート・キー・リストの順番さえ破らなければ、単に冗長なエントリが増えただけであり、検索木として機能する。そのため、任意の連続部分集合を後方に移動し、検索木とのバウンダリを変えたり、数を多くして高さHを大きくすることが可能である。(その分エントリを余計に消費する。)
原理6:GM+1個を改善方法3の用に処理する場合、GLが2以上で改善方法3のケース2とケース3に相当する場合かGLが1でもケース3に相当する場合には、GHに2つのエントリを占有する。
【0103】
これら原理4〜6は組み合わせて用いても問題ない。そこでこれらを利用して、改善方法6から9のように衝突を避けることができる。例として図41のように展開されるリストを、レベルが3の3分岐木に収めるケースを挙げる。図41のリストを標準木展開すると、(1−2)の改善方法では図42のようになるが、改善方法5ではCとHのSが、図43のように、同じエントリとして衝突する。
【0104】
改善方法6:衝突を避けるため、親(包含する側)を分割する。改善方法4と同様であるが、Sの衝突個所を避けつつ分割する改善方法である。図44では、親をC1,C5に分割している。
【0105】
改善方法7:衝突を避けるため、親に冗長エントリを足してずらす、または拡大する。図45では、Hの親としてのC(=H2)に冗長エントリC6を足して、ずらしている。
【0106】
改善方法8:衝突を避けるため、衝突のある子(包含される側)を2分割する。図46では、子をH1とH(=L)とに分割して、Cとの衝突を回避している。
【0107】
改善方法9:衝突を避けるため、衝突のある子の直前に冗長エントリ(図47の2個の(G))を足し、子をSの直後(図47のH2)まで後方にずらす。
【0108】
改善方法6〜9では、GMが変わるので、GL、GHなどの再評価を要する。三重以上、多重に包含される場合も、同様に考えることができるので、衝突が無ければ、改善方法5により、また、有る場合でも、改善方法4、6−9で対処できる。
【0109】
改善方法10:上述の改善方法の実施等の結果、共通の領域から複数の領域に分割され、各分割領域に係るソート・キーをもつ複数個のエントリが1個の葉に存在する場合は、どれか1個のエントリを残して、他を削除する。
【0110】
改善方法11:共通の領域から複数の領域に分割されかつ各分割領域に係るソート・キーをもつ複数個のエントリが、根から葉へ至る探索経路において、葉だけでなく、上位のノードにも存在するときに、葉のエントリを削除する。
【0111】
まとめとして本発明の構成に関して以下の事項を開示する。
(1):受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶する記憶装置、及び前記検索用情報に基づいて受信パケットの転送先経路を検索する経路検索装置を含み、
前記検索用情報は木構造に対応付けられたものであり、
該木構造における各ノードは1個以上のエントリを有し、
各マスク用プレフィックスは少なくとも1個のエントリに対応付けられ、
各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含み、
ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定され、
ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定され、
エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられ、
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもち、
葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされ、
前記経路検索装置は、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出手段、
各検索対象ノードにおいて該検索対象ノードの中で抽出アドレスの上位側ビット列部分と一致するマスク用プレフィックスの情報をもつエントリを該当エントリとして検索し該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとしまた該当エントリが複数個であれば該当エントリの中でマスク長さが最大のマスク用プレフィックスの情報をもつエントリをノード内一致エントリとするノード内一致エントリ検索手段、
前記ノード内一致エントリ検索手段に検索対象ノードを指示する検索制御手段であって各検索対象ノードにおける各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する検索制御手段、及び
ノード別検索処理の終了後、抽出アドレスに係る複数個のノード内一致エントリに対応のマスク用プレフィックスの中で最大マスク長のものに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定手段、
を有していることを特徴とする通信制御装置。
【0112】
(2):ソート・キーのソート順とはソート・キーの昇順又は降順であることを特徴とする(1)記載の通信制御装置。
(3):前記木構造では、同一階層に属する各ノードのエントリ数は、等しく設定されていることを特徴とする(2)記載の通信制御装置。
(4):枝により1個下の階層のノードへのリンクを設定されているノードにおいて、該ノードのエントリ・リストの一端のエントリについては2個、その他の各エントリについて各1個の枝が対応付けられていることを特徴とする(1)記載の通信制御装置。
(5):前記木を構築する木構築装置を有し、
前記木構築装置は、
マスク用プレフィックスCに対してそれに対応付け可能なソート・キーの最小値及び最大値をそれぞれCs_min及びCs_maxとして算出する算出手段、
マスク用プレフィックスCに対して対応付けるソート・キーCsをCs_min≦Cs≦Cs_maxの条件下で設定するソート・キー設定手段、及び
各マスク用プレフィックスについて前記ソート・キー設定手段の設定したソート・キーに基づき各ノードのエントリを決定し該決定に基づく木構造を生成する木構造生成手段、
を有していることを特徴とする(1)記載の通信制御装置。
(6):2個のマスク用プレフィックスC1,C2に対してそれらC1,C2に対応付けるソート・キーをC1s,C2sとし、また、それらC1,C2に対応付け可能な最小ソート・キーをC1s_min,C2s_min、及び最大ソート・キーをC1s_max,C2s_maxとして、
前記ソート・キー設定手段は、C1s_min≦C2s_min≦C2s_max≦C1s_max(ただし、C1s_min=C2s_min=C2s_max=C1s_maxは除外する。)が成り立つとき、C1sを、C1s_minからC1s_maxまでの範囲内でかつC2s_minからC2s_maxまでの範囲外となる条件下で設定する、
ことを特徴とする(5)記載の通信制御装置。
(7):前記木構造生成手段は、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が同一の葉ノードに属する標準木構造に対して、同一マスク用プレフィックス由来のソート・キーは各葉ノードにおいて1個のみとなるように、同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力することを特徴とする(1)記載の通信制御装置。
(8):前記木構造生成手段は、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が、ルート・ノードから葉ノードへ至る検索経路における上階層のノードと下階層ノードとの両方に存在する標準木構造に対して、該下位階層のノードにおける同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力することを特徴とする(1)記載の通信制御装置。
(9):少なくとも1個のエントリに対応付けられているマスク用プレフィックスにはビット長さが0ビットのマスク用プレフィックスが含まれ、該ビット長さが0ビットのマスク用プレフィックスはデフォルト転送先経路に対応付けられていることを特徴とする(1)記載の通信制御装置。
(10):少なくとも1個のエントリに対応付けられているマスク用プレフィックスには、ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックスと、ビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスとが含まれ、
ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス、及び/又はビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスは、デフォルト転送先経路に対応付けられていることを特徴とする(1)記載の通信制御装置。
【0113】
(11):ビット長さが0ビットであるマスク用プレフィックスに係る情報を含むマスク用プレフィックス情報を記憶しかつビット長さが0ビットであるマスク用プレフィックスはデフォルト転送先経路に設定してあるマスク用プレフィックス情報記憶手段、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出手段、
抽出アドレスのビット列において該ビット列のMSBから連続するビット列部分を上位連続ビット列部分と呼ぶことにし上位連続ビット列部分と一致するマスク用プレフィックスの中で最大ビット長さのマスク用プレフィックスを該当マスク用プレフィックスとして検索する検索手段、及び
該当マスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定手段、
を有していることを特徴とする通信制御装置。
【0114】
(12):ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス及びビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスに係る情報を含むマスク用プレフィックス情報を記憶しかつビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス及び/又はビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスとビット長さが0ビットであるマスク用プレフィックスはデフォルト転送先経路に設定してあるマスク用プレフィックス情報記憶手段、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出手段、
抽出アドレスのビット列において該ビット列のMSBから連続するビット列部分を上位連続ビット列部分と呼ぶことにし上位連続ビット列部分と一致するマスク用プレフィックスの中で最大ビット長さのマスク用プレフィックスを該当マスク用プレフィックスとして検索する検索手段、及び
該当マスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定手段、
を有していることを特徴とする通信制御装置。
【0115】
(13):受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶する記憶装置、及び前記検索用情報に基づいて受信パケットの転送先経路を検索する経路検索装置を含み、
前記検索用情報は第1の情報部分と第2の情報部分とから成り、
所定の自然数uを定義し、
マスク用プレフィックスの各ビットの番号を、MSBを1番としてMSBからLSBへの順番で定義し、
uビット以下及びu+1ビット以上のマスク用プレフィックスをそれぞれ短い及び長いマスク用プレフィックスと呼ぶことにし、
長いマスク用プレフィックスについて、1番からu番までの部分及びu+1番から最終番までの部分をそれぞれ上位側マスク用プレフィックス部分及び下位側マスク用プレフィックス部分と呼ぶことにし、
同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックスをマスク用プレフィックス群とし(ただし、同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックスが1個である場合は、該長いマスク用プレフィックスが属するマスク用プレフィックス群の要素としてのマスク用プレフィックスは1個のみとなる。)、
前記第1の情報部分は短いマスク用プレフィックス及び上位側マスク用プレフィックス部分に係る情報を含み、
第1の情報部分は1個のテーブル構造で記憶され、
該テーブル構造は、uビットの相互に異なるソート・キーをもつエントリを含み、
各テーブル構造に含まれているエントリには第1及び第2のテーブル構造用エントリが含まれ、第1のテーブル構造用エントリは、そのソート・キーの1番からw(wはu以下の自然数)番までの全ビット値が、該第1のテーブル構造用エントリに対応付けられている小さいマスク用プレフィックスと同一であり、第2のテーブル構造用エントリは、そのソート・キーの全ビットが、該第2のテーブル構造用エントリに対応付けられている上位側マスク用プレフィックス部分と同一であり、
前記第2の情報部分は下位側マスク用プレフィックス部分に係る情報を含み、
第2の情報部分は少なくとも1個の木構造で記憶され、
各木構造は、各マスク用プレフィックス群に対応付けられるとともに、対応付けられたマスク用プレフィックス群に属する長いマスク用プレフィックスの上位側マスク用プレフィックス部分に等しいソート・キーをもつエントリであって前記テーブル構造に含まれるエントリからリンクを設定されており、
各木構造における各ノードは1個以上のエントリを有し、
各長いマスク用プレフィックスの下位側マスク用プレフィックス部分は少なくとも1個のエントリに対応付けられ、
木構造の各エントリは、それに対応付けられた下位側マスク用プレフィックス部分のビット数(以下、「下位側マスク用プレフィックス部分マスク長」と言う。)の情報とソート・キーとを含み、
木構造のエントリのビット数は、全部の下位側マスク用プレフィックス部分の下位側マスク用プレフィックス部分マスク長の内の最大下位側マスク用プレフィックス部分マスク長以上に設定され、
ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられている下位側マスク用プレフィックス部分と同一に設定され、
エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられ、
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもち、
葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされ、
前記経路検索装置は、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出手段、
抽出アドレスについて1番からu番までのビット列部分及びu+1番以降のビット列部分をそれぞれ第1及び第2の抽出アドレス部分と呼ぶことにしテーブル構造の各エントリと第1の抽出アドレス部分との対比に基づいて今回の抽出アドレスに係る受信パケットの転送先経路を検索するテーブル構造用経路検索装置、
木構造の各エントリと第2の抽出アドレス部分との対比に基づいて今回の抽出アドレスに係る受信パケットの転送先経路を検索する木構造用経路検索装置、
前記テーブル構造用経路検索装置及び前記木構造用経路検索装置を制御する制御装置、及び
前記テーブル構造用経路検索装置及び前記木構造用経路検索装置の検索結果に基づき今回の抽出アドレスに係る受信パケットの転送先経路を最終的に決定する最終決定装置、
を有し、
前記テーブル構造用経路検索装置は、
第1の抽出アドレス部分の上位側ビット列部分と一致するソート・キーをもつエントリを該当エントリとして検索する検索手段、及び
前記検索手段が検索した該当エントリについて所定の木構造へリンクが設定されていればその旨及びリンク先の木構造を前記制御装置へ通知する通知手段、
を有し、
前記木構造用経路検索装置は、
前記木構造の各検索対象ノードにおいて該検索対象ノードの中で第2の抽出アドレス部分の上位側ビット列部分と一致する下位側マスク用プレフィックス部分の情報をもつエントリを該当エントリとして検索し該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとしまた該当エントリが複数個であれば該当エントリの中でビット長さが最大の下位側マスク用プレフィックス部分の情報をもつエントリをノード内一致エントリとするノード内一致エントリ検索手段、
前記ノード内一致エントリ検索手段に検索対象ノードを指示する検索制御手段であって各検索対象ノードにおける各エントリのソート・キーと第2の抽出アドレス部分との対比に基づいてリンクを選択し該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する検索制御手段、及び
ノード別検索処理の終了後、第2の抽出アドレス部分に係る複数個のノード内一致エントリに対応の下位側マスク用プレフィックス部分の中で最大ビット長さのものを決定する下位側マスク用プレフィックス部分決定手段、
を有し、
前記制御装置は、
前記アドレス抽出手段が抽出した今回の抽出アドレスに対して前記木構造用経路検索装置に先駆けてテーブル構造用経路検索装置に検索処理を指示する第1の指示手段、及び
前記テーブル構造用経路検索装置の前記通知手段から通知があったときは前記木構造用経路検索装置に検索対象木構造として前記通知手段から通知のあったものを指定して今回の抽出アドレスに係る検索処理を指示する第2の指示手段、
を有し、
前記最終決定装置は、
前記第2の指示手段が前記木構造用経路検索装置に検索処理を指示しなかったときは、前記テーブル構造用経路検索装置の検索手段が検索した該当エントリに係る短いマスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を最終決定し、
前記第2の指示手段が前記木構造用経路検索装置に検索処理を指示したときは、前記木構造用経路検索装置が検索対象木構造とした木構造のリンク元のテーブル構造のエントリに係る上位側マスク用プレフィックス部分と前記木構造用経路検索装置の前記下位側マスク用プレフィックス部分決定手段が決定した下位側マスク用プレフィックス部分とに基づく長いマスク用プレフィックスを、今回の抽出アドレスに係る受信パケットの転送先経路として最終決定する、
ことを特徴とする通信制御装置。
【0116】
(14):受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶し、前記検索用情報に基づいて受信パケットの転送先経路を検索する通信制御方法であって、
前記検索用情報は木構造に対応付けられたものであり、
該木構造における各ノードは1個以上のエントリを有し、
各マスク用プレフィックスは少なくとも1個のエントリに対応付けられ、
各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含み、
ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定され、
ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定され、
エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられ、
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもち、
葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされる、
通信制御方法であって、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出ステップ、
各検索対象ノードにおいて該検索対象ノードの中で抽出アドレスの上位側ビット列部分と一致するマスク用プレフィックスの情報をもつエントリを該当エントリとして検索し該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとしまた該当エントリが複数個であれば該当エントリの中でマスク長さが最大のマスク用プレフィックスの情報をもつエントリをノード内一致エントリとするノード内一致エントリ検索ステップ、
前記ノード内一致エントリ検索ステップにおける検索対象ノードを決める検索制御ステップであって各検索対象ノードにおける各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する検索制御ステップ、及び
ノード別検索処理の終了後、抽出アドレスに係る複数個のノード内一致エントリに対応のマスク用プレフィックスの中で最大マスク長のものに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定ステップ、を有していることを特徴とする通信制御方法。
【0117】
(15):ソート・キーのソート順とはソート・キーの昇順又は降順であることを特徴とする(14)記載の通信制御方法。
(16):前記木構造では、同一階層に属する各ノードのエントリ数は、等しく設定されていることを特徴とする(15)記載の通信制御方法。
(17):枝により1個下の階層のノードへのリンクを設定されているノードにおいて、該ノードのエントリ・リストの一端のエントリについては2個、その他の各エントリについて各1個の枝が対応付けられていることを特徴とする(14)記載の通信制御方法。
(18):マスク用プレフィックスCに対してそれに対応付け可能なソート・キーの最小値及び最大値をそれぞれCs_min及びCs_maxとして算出する算出ステップ、
マスク用プレフィックスCに対して対応付けるソート・キーCsをCs_min≦Cs≦Cs_maxの条件下で設定するソート・キー設定ステップ、及び
各マスク用プレフィックスについて前記ソート・キー設定ステップの設定したソート・キーに基づき各ノードのエントリを決定し該決定に基づく木構造を生成する木構造生成ステップ、
を有していることを特徴とする(14)記載の通信制御方法。
(19):2個のマスク用プレフィックスC1,C2に対してそれらC1,C2に対応付けるソート・キーをC1s,C2sとし、また、それらC1,C2に対応付け可能な最小ソート・キーをC1s_min,C2s_min、及び最大ソート・キーをC1s_max,C2s_maxとして、
前記ソート・キー設定ステップでは、C1s_min≦C2s_min≦C2s_max≦C1s_max(ただし、C1s_min=C2s_min=C2s_max=C1s_maxは除外する。)が成り立つとき、C1sを、C1s_minからC1s_maxまでの範囲内でかつC2s_minからC2s_maxまでの範囲外となる条件下で設定する、
ことを特徴とする(18)記載の通信制御方法。
(20):前記木構造生成ステップでは、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が同一の葉ノードに属する標準木構造に対して、同一マスク用プレフィックス由来のソート・キーは各葉ノードにおいて1個のみとなるように、同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力することを特徴とする(14)記載の通信制御方法。
(21):前記木構造生成ステップでは、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が、ルート・ノードから葉ノードへ至る検索経路における上階層のノードと下階層ノードとの両方に存在する標準木構造に対して、該下位階層のノードにおける同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力することを特徴とする(14)記載の通信制御方法。
(22):少なくとも1個のエントリに対応付けられているマスク用プレフィックスにはビット長さが0ビットのマスク用プレフィックスが含まれ、該ビット長さが0ビットのマスク用プレフィックスはデフォルト転送先経路に対応付けられていることを特徴とする(14)記載の通信制御方法。
(23):少なくとも1個のエントリに対応付けられているマスク用プレフィックスには、ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックスと、ビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスとが含まれ、
ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス、及び/又はビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスは、デフォルト転送先経路に対応付けられていることを特徴とする(14)記載の通信制御方法。
【0118】
(24):ビット長さが0ビットであるマスク用プレフィックスに係る情報を含むマスク用プレフィックス情報を記憶しかつビット長さが0ビットであるマスク用プレフィックスはデフォルト転送先経路に設定してあるマスク用プレフィックス情報記憶ステップ、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出ステップ、
抽出アドレスのビット列において該ビット列のMSBから連続するビット列部分を上位連続ビット列部分と呼ぶことにし上位連続ビット列部分と一致するマスク用プレフィックスの中で最大ビット長さのマスク用プレフィックスを該当マスク用プレフィックスとして検索する検索ステップ、及び
該当マスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定ステップ、
を有していることを特徴とする通信制御方法。
【0119】
(25):ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス及びビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスに係る情報を含むマスク用プレフィックス情報を記憶しかつビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス及び/又はビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスとビット長さが0ビットであるマスク用プレフィックスはデフォルト転送先経路に設定してあるマスク用プレフィックス情報記憶ステップ、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出ステップ、
抽出アドレスのビット列において該ビット列のMSBから連続するビット列部分を上位連続ビット列部分と呼ぶことにし上位連続ビット列部分と一致するマスク用プレフィックスの中で最大ビット長さのマスク用プレフィックスを該当マスク用プレフィックスとして検索する検索ステップ、及び
該当マスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定ステップ、
を有していることを特徴とする通信制御方法。
【0120】
(26):受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶し、前記検索用情報に基づいて受信パケットの転送先経路を検索する通信制御方法において、
前記検索用情報は第1の情報部分と第2の情報部分とから成り、
所定の自然数uを定義し、
マスク用プレフィックスの各ビットの番号を、MSBを1番としてMSBからLSBへの順番で定義し、
uビット以下及びu+1ビット以上のマスク用プレフィックスをそれぞれ短い及び長いマスク用プレフィックスと呼ぶことにし、
長いマスク用プレフィックスについて、1番からu番までの部分及びu+1番から最終番までの部分をそれぞれ上位側マスク用プレフィックス部分及び下位側マスク用プレフィックス部分と呼ぶことにし、
同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックスをマスク用プレフィックス群とし(ただし、同一の上位側マスク用プレフィックス部分をもつ長いマスク用プレフィックスが1個である場合は、該長いマスク用プレフィックスが属するマスク用プレフィックス群の要素としてのマスク用プレフィックスは1個のみとなる。)、
前記第1の情報部分は短いマスク用プレフィックス及び上位側マスク用プレフィックス部分に係る情報を含み、
第1の情報部分は1個のテーブル構造で記憶され、
該テーブル構造は、uビットの相互に異なるソート・キーをもつエントリを含み、
各テーブル構造に含まれているエントリには第1及び第2のテーブル構造用エントリが含まれ、第1のテーブル構造用エントリは、そのソート・キーの1番からw(wはu以下の自然数)番までの全ビット値が、該第1のテーブル構造用エントリに対応付けられている小さいマスク用プレフィックスと同一であり、第2のテーブル構造用エントリは、そのソート・キーの全ビットが、該第2のテーブル構造用エントリに対応付けられている上位側マスク用プレフィックス部分と同一であり、
前記第2の情報部分は下位側マスク用プレフィックス部分に係る情報を含み、
第2の情報部分は少なくとも1個の木構造で記憶され、
各木構造は、各マスク用プレフィックス群に対応付けられるとともに、対応付けられたマスク用プレフィックス群に属する長いマスク用プレフィックスの上位側マスク用プレフィックス部分に等しいソート・キーをもつエントリであって前記テーブル構造に含まれるエントリからリンクを設定されており、
各木構造における各ノードは1個以上のエントリを有し、
各長いマスク用プレフィックスの下位側マスク用プレフィックス部分は少なくとも1個のエントリに対応付けられ、
木構造の各エントリは、それに対応付けられた下位側マスク用プレフィックス部分のビット数(以下、「下位側マスク用プレフィックス部分マスク長」と言う。)の情報とソート・キーとを含み、
木構造のエントリのビット数は、全部の下位側マスク用プレフィックス部分の下位側マスク用プレフィックス部分マスク長の内の最大下位側マスク用プレフィックス部分マスク長以上に設定され、
ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられている下位側マスク用プレフィックス部分と同一に設定され、
エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられ、
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもち、
葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされ、
前記通信制御方法は、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出ステップ、
抽出アドレスについて1番からu番までのビット列部分及びu+1番以降のビット列部分をそれぞれ第1及び第2の抽出アドレス部分と呼ぶことにしテーブル構造の各エントリと第1の抽出アドレス部分との対比に基づいて今回の抽出アドレスに係る受信パケットの転送先経路を検索するテーブル構造用経路検索ステップ、
木構造の各エントリと第2の抽出アドレス部分との対比に基づいて今回の抽出アドレスに係る受信パケットの転送先経路を検索する木構造用経路検索ステップ、
前記テーブル構造用経路検索ステップ及び前記木構造用経路検索ステップを制御する制御ステップ、及び
前記テーブル構造用経路検索ステップ及び前記木構造用経路検索ステップの検索結果に基づき今回の抽出アドレスに係る受信パケットの転送先経路を最終的に決定する最終決定ステップ、
を有し、
前記テーブル構造用経路検索ステップは、
第1の抽出アドレス部分の上位側ビット列部分と一致するソート・キーをもつエントリを該当エントリとして検索する検索ステップ、及び
前記検索ステップにおいて検索した該当エントリについて所定の木構造へリンクが設定されていればその旨及びリンク先の木構造を前記制御ステップへ通知する通知ステップ、
を有し、
前記木構造用経路検索ステップは、
前記木構造の各検索対象ノードにおいて該検索対象ノードの中で第2の抽出アドレス部分の上位側ビット列部分と一致する下位側マスク用プレフィックス部分の情報をもつエントリを該当エントリとして検索し該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとしまた該当エントリが複数個であれば該当エントリの中でビット長さが最大の下位側マスク用プレフィックス部分の情報をもつエントリをノード内一致エントリとするノード内一致エントリ検索ステップ、
前記ノード内一致エントリ検索ステップにおける検索対象ノードを決める検索制御ステップであって各検索対象ノードにおける各エントリのソート・キーと第2の抽出アドレス部分との対比に基づいてリンクを選択し該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する検索制御ステップ、及び
ノード別検索処理の終了後、第2の抽出アドレス部分に係る複数個のノード内一致エントリに対応の下位側マスク用プレフィックス部分の中で最大ビット長さのものを決定する下位側マスク用プレフィックス部分決定ステップ、
を有し、
前記制御ステップは、
前記アドレス抽出ステップにおいて抽出した今回の抽出アドレスに対して前記木構造用経路検索ステップの検索処理の実行に先駆けてテーブル構造用経路検索ステップにおける検索処理の実行を指示する第1の指示ステップ、及び
前記テーブル構造用経路検索ステップの前記通知ステップから通知があったときは前記木構造用経路検索ステップに検索対象木構造として前記通知ステップから通知のあったものを指定して今回の抽出アドレスに係る検索処理の実行を指示する第2の指示ステップ、
を有し、
前記最終決定ステップは、
前記第2の指示ステップにおいて前記木構造用経路検索ステップにおける検索処理の実行を指示しなかったときは、前記テーブル構造用経路検索ステップの検索ステップにおいて検索した該当エントリに係る短いマスク用プレフィックスに基づき今回の抽出アドレスに係る受信パケットの転送先経路を最終決定し、
前記第2の指示ステップにおいて前記木構造用経路検索ステップにおける検索処理の実行を指示したときは、前記木構造用経路検索ステップが検索対象木構造とした木構造のリンク元のテーブル構造のエントリに係る上位側マスク用プレフィックス部分と前記木構造用経路検索ステップの前記下位側マスク用プレフィックス部分決定ステップにおいて決定した下位側マスク用プレフィックス部分とに基づく長いマスク用プレフィックスを、今回の抽出アドレスに係る受信パケットの転送先経路として最終決定する、
ことを特徴とする通信制御方法。
【0121】
(27):(14)〜26のいずれかに記載の通信制御方法の各ステップを コンピュータに実行させるための通信制御プログラム。
【0122】
(28):受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報に係る通信制御用データ構造であって、
前記検索用情報は木構造に対応付けられたものであり、
該木構造における各ノードは1個以上のエントリを有し、
各マスク用プレフィックスは少なくとも1個のエントリに対応付けられ、
各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含み、
ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定され、
ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定され、
エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられ、
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもち、
葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされる、
ことを特徴とする通信制御用データ構造。
(29):ソート・キーのソート順とはソート・キーの昇順又は降順であることを特徴とする(28)記載の通信制御用データ構造。
(30):前記木構造では、同一階層に属する各ノードのエントリ数は、等しく設定されていることを特徴とする(29)記載の通信制御用データ構造。
(31):枝により1個下の階層のノードへのリンクを設定されているノードにおいて、該ノードのエントリ・リストの一端のエントリについては2個、その他の各エントリについて各1個の枝が対応付けられていることを特徴とする(28)記載の通信制御用データ構造。
【0123】
【発明の効果】
本発明によれば、各マスク用プレフィックスに対応付けたエントリを設定し、ソートしたエントリの順番に基づいて各ノードへのエントリ割当て及びリンクが設定される木構造を構築し、該木構造を利用して、受信パケットの転送先に係る情報としてのマスク用プレフィックスを検索する。結果、検索能率を高めることができる。
【図面の簡単な説明】
【図1】通信制御装置の接続図である。
【図2】通信制御装置の構成図である。
【図3】検索用情報に対応付けられている木構造を示す図である。
【図4】図3の各ノードにおけるエントリ・テーブルを例示する図である。
【図5】経路検索装置の構成図である。
【図6】木構築装置の構成図である。
【図7】改善した通信制御装置の機能ブロック図である。
【図8】別の通信制御装置の機能ブロック図である。
【図9】テーブル構造用経路検索装置の詳細な機能ブロック図である。
【図10】木構造用経路検索装置の詳細な機能ブロック図である。
【図11】制御装置の機能ブロック図である。
【図12】複数個のマスク用プレフィックスからデフォルト・ルート及びソート・キーを生成する具体例を示す図である。
【図13】検索用情報を1個のテーブル構造と少なくとも1個の木構造とに分けて持つ場合のテーブル構造を示す図である。
【図14】図13のエントリにリンク付けされた各木構造に下位側マスク用プレフィックス部分が属しているマスク用プレフィックスの集合を示す図である。
【図15】通信制御方法のフローチャートである。
【図16】木構造構築方法のフローチャートである。
【図17】プログラムを実行するためのハードウェア構成図である。
【図18】デフォルト・ルート実装通信制御方法のフローチャートである。
【図19】別の通信制御方法のフローチャートである。
【図20】図19のテーブル構造用経路検索ステップの詳細なフローチャートである。
【図21】図19の木構造用経路検索ステップの詳細なフローチャートである。
【図22】図19の制御ステップの詳細なフローチャートである。
【図23】IPv4のIPアドレスの構成を示す図である。
【図24】IPアドレスを8Bitとした転送テーブルの例である。
【図25】図24の転送テーブルを方法1,2で展開し、かつソート・キーでソートしたテーブルである。
【図26】プレフィックスとIPアドレスとの関係を示す図である。
【図27】生成範囲の異なるエントリが追加されるときの追加前及び追加後のエントリ生成範囲を変化を対比する図である。
【図28】既存のエントリの生成範囲の一端部分に生成範囲があるエントリが追加されるときの追加前及び追加後のエントリ生成範囲の変化を対比する図である。
【図29】既存のエントリの生成範囲の中間部分に生成範囲をもつエントリが追加されるときの追加前及び追加後のエントリ生成範囲の変化を対比する図である。
【図30】既存のエントリの分割生成範囲の中間部分に生成範囲をもつエントリが追加されるときの追加前及び追加後のエントリ生成範囲の変化を対比する図である。エントリ分布を示す図である。
【図31】ソートされたエントリからの木の構築方法についての説明図である。
【図32】図31の木にノード間のリンクを付加した木構造を示す図である。
【図33】或るノードにおける各エントリと該ノードに対してリンク先のノードに含まれるエントリの範囲との関係を示す図である。
【図34】図25のエントリ・リストに基づく木構造であってレベル(階層)が2でかつ各ノードのエントリ数が2である木構造を、各リンクに関連付けれた範囲と共に示す図である。
【図35】図34の木構造を改善した第1の木構造を示す図である。
【図36】図34の木構造を改善した第2の木構造を示す図である。
【図37】エントリ数低減のための第1の木構造部分を組み込んだ木構造を示す図である。
【図38】エントリ数低減のための第2の木構造部分を組み込んだ木構造を示す図である。
【図39】エントリ数低減のための第3の木構造部分を組み込んだ木構造を示す図である。
【図40】エントリ数低減のための第4の木構造部分を組み込んだ木構造を示す図である。
【図41】ソート・リストにおいて同一マスク用プレフィックス由来のソート・キーが2グループあるときの各グループの範囲を示す図である。
【図42】図41のソート・リストに基づいて構築した標準木構造を示す図である。
【図43】図42の標準木構造を簡単化するときに相互に異なるマスク用プレフィックス由来のソート・キー同士が相互に干渉する木構造を示す図である。
【図44】図43の木構造の干渉に対して親の分割により対処した木構造を示す図である。
【図45】図43の木構造の干渉に対して親の拡大により対処した木構造を示す図である。
【図46】図43の木構造の干渉に対して子の分割により対処した木構造を示す図である。
【図47】図43の木構造の干渉に対して子の偏依分割により対処した木構造を示す図である。
【符号の説明】
10:通信制御装置、12:通信制御装置間通信路、20:記憶装置、21:経路検索装置、22:木構築装置、34:マスク用プレフィックス、35:算出手段、36:ソート・キー設定手段、37:木構造生成手段、100:通信制御装置、101:マスク用プレフィックス情報記憶手段、102:アドレス抽出手段、103:検索手段、104:転送先経路決定手段、120:通信制御装置、121記憶装置、122:経路検索装置122、126:第1の情報部分、127:第2の情報部分、130:アドレス抽出手段130、131:テーブル構造用経路検索装置131、132:木構造用経路検索装置、133制御装置133、134:最終決定装置、138:検索手段138、139:通知手段、141:ノード内一致エントリ検索手段、142:各検索対象ノード142、143:検索制御手段、144:下位側マスク用プレフィックス部分決定手段、145:第1の指示手段、146:第2の指示手段。
Claims (14)
- 受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶する記憶装置、及び前記検索用情報に基づいて受信パケットの転送先経路を検索する経路検索装置を含み、
前記検索用情報は木構造に対応付けられたものであり、
該木構造における各ノードは1個以上のエントリを有し、
各マスク用プレフィックスは少なくとも1個のエントリに対応付けられ、
各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含み、
ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定され、
ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定され、
エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられ、
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもち、
葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされ、
前記経路検索装置は、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出手段、
各検索対象ノードにおいて該検索対象ノードの中で抽出アドレスの上位側ビット列部分と一致するマスク用プレフィックスの情報をもつエントリを該当エントリとして検索し該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとしまた該当エントリが複数個であれば該当エントリの中でマスク長さが最大のマスク用プレフィックスの情報をもつエントリをノード内一致エントリとするノード内一致エントリ検索手段、
前記ノード内一致エントリ検索手段に検索対象ノードを指示する検索制御手段であって各検索対象ノードにおける各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する検索制御手段、及び
ノード別検索処理の終了後、抽出アドレスに係る複数個のノード内一致エントリに対応のマスク用プレフィックスの中で最大マスク長のものに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定手段、
を有していることを特徴とする通信制御装置。 - ソート・キーのソート順とはソート・キーの昇順又は降順であることを特徴とする請求項1記載の通信制御装置。
- 枝により1個下の階層のノードへのリンクを設定されているノードにおいて、該ノードのエントリ・リストの一端のエントリについては2個、その他の各エントリについて各1個の枝が対応付けられていることを特徴とする請求項1記載の通信制御装置。
- 前記木を構築する木構築装置を有し、
前記木構築装置は、
マスク用プレフィックスCに対してそれに対応付け可能なソート・キーの最小値及び最大値をそれぞれC<sub>s_min</sub>及びC<sub>s_max</sub>として算出する算出手段、
マスク用プレフィックスCに対して対応付けるソート・キーC<sub>s</sub>をC<sub>s_min</sub>≦C<sub>s</sub>≦C<sub>s_max</sub>の条件下で設定するソート・キー設定手段、及び
各マスク用プレフィックスについて前記ソート・キー設定手段の設定したソート・キーに基づき各ノードのエントリを決定し該決定に基づく木構造を生成する木構造生成手段、
を有していることを特徴とする請求項1記載の通信制御装置。 - 前記木構造生成手段は、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が同一の葉ノードに属する標準木構造に対して、同一マスク用プレフィックス由来のソート・キーは各葉ノードにおいて1個のみとなるように、同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力することを特徴とする請求項1記載の通信制御装置。
- 少なくとも1個のエントリに対応付けられているマスク用プレフィックスには、ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックスと、ビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスとが含まれ、
ビット長さが1ビットでかつビット値が”0”のマスク用プレフィックス、及び/又はビット長さが1ビットでかつビット値が”1”のマスク用プレフィックスは、デフォルト転送先経路に対応付けられていることを特徴とする請求項1記載の通信制御装置。 - 受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報を記憶し、前記検索用情報に基づいて受信パケットの転送先経路を検索する通信制御方法であって、
前記検索用情報は木構造に対応付けられたものであり、
該木構造における各ノードは1個以上のエントリを有し、
各マスク用プレフィックスは少なくとも1個のエントリに対応付けられ、
各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含み、
ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定され、
ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定され、
エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられ、
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもち、
葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされる、
通信制御方法であって、
受信パケットから該受信パケットの送信先アドレスを抽出する(以下、該抽出した送信先アドレスを「抽出アドレス」と言う。)アドレス抽出ステップ、
各検索対象ノードにおいて該検索対象ノードの中で抽出アドレスの上位側ビット列部分と一致するマスク用プレフィックスの情報をもつエントリを該当エントリとして検索し該当エントリが唯一であればその唯一の該当エントリをノード内一致エントリとしまた該当エントリが複数個であれば該当エントリの中でマスク長さが最大のマスク用プレフィックスの情報をもつエントリをノード内一致エントリとするノード内一致エントリ検索ステップ、
前記ノード内一致エントリ検索ステップにおける検索対象ノードを決める検索制御ステップであって各検索対象ノードにおける各エントリのソート・キーと抽出アドレスとの対比に基づいてリンクを選択し該選択したリンクに係るノードを次の検索対象ノードに決定しリンクが無い場合にはノード別検索処理の終了と判断する検索制御ステップ、及び
ノード別検索処理の終了後、抽出アドレスに係る複数個のノード内一致エントリに対応のマスク用プレフィックスの中で最大マスク長のものに基づき、該抽出アドレスに係る受信パケットの転送先経路を決定する転送先経路決定ステップ、
を有していることを特徴とする通信制御方法。 - 前記木構造では、同一階層に属する各ノードのエントリ数は、等しく設定されていることを特徴とする請求項7記載の通信制御方法。
- 前記木構造生成ステップでは、同一のマスク用プレフィックスに対応付けられる複数個のソート・キー(以下、「同一マスク用プレフィックス由来のソート・キー」と言う。)が、ルート・ノードから葉ノードへ至る検索経路における上階層のノードと下階層ノードとの両方に存在する標準木構造に対して、該下位階層のノードにおける同一マスク用プレフィックス由来のソート・キーを間引きした木構造を出力することを特徴とする請求項7記載の通信制御方法。
- 少なくとも1個のエントリに対応付けられているマスク用プレフィックスにはビット長さが0ビットのマスク用プレフィックスが含まれ、該ビット長さが0ビットのマスク用プレフィックスはデフォルト転送先経路に対応付けられていることを特徴とする請求項7記載の通信制御方法。
- 受信パケットの送信先アドレスから該受信パケットの次の転送先経路を決定するために使用する検索用情報に係る通信制御用データ構造であって、
前記検索用情報は木構造に対応付けられたものであり、
該木構造における各ノードは1個以上のエントリを有し、
各マスク用プレフィックスは少なくとも1個のエントリに対応付けられ、
各エントリは、それに対応付けられたマスク用プレフィックスのビット数(以下、「マスク長」と言う。)の情報とソート・キーとを含み、
ソート・キーのビット数は、全部のマスク用プレフィックスのマスク長の内の最大マスク長以上に設定され、
ビット列を二分割したときの分割位置に対して上位側及び下位側の部分をそれぞれ上位側ビット列部分及び下位側ビット列部分と名付けて各ソート・キーの上位側ビット列部分は、該ソート・キーをもつエントリに対応付けられているマスク用プレフィックスと同一に設定され、
エントリは、それらがもつソート・キーのソート順に基づいて前記木構造の所定のノードに割当てられ、
各ノードは、それに含まれる複数個のエントリをそれらのソート・キーに基づいてソートしたエントリ・リストをもち、
葉ノードを除く各ノードは、該ノードのエントリ・リストの各エントリに係る各枝により1個下の階層の各ノードへリンクを設定可能とされる、
ことを特徴とする通信制御用データ構造。 - ソート・キーのソート順とはソート・キーの昇順又は降順であることを特徴とする請求項11記載の通信制御用データ構造。
- 前記木構造では、同一階層に属する各ノードのエントリ数は、等しく設定されていることを特徴とする請求項12記載の通信制御用データ構造。
- 枝により1個下の階層のノードへのリンクを設定されているノードにおいて、該ノードのエントリ・リストの一端のエントリについては2個、その他の各エントリについて各1個の枝が対応付けられていることを特徴とする請求項11記載の通信制御用データ構造。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003121263A JP3813136B2 (ja) | 2003-04-25 | 2003-04-25 | 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 |
US10/780,213 US7460538B2 (en) | 2003-04-25 | 2004-02-17 | Communication control apparatus and method for searching an internet protocol address |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003121263A JP3813136B2 (ja) | 2003-04-25 | 2003-04-25 | 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004328433A JP2004328433A (ja) | 2004-11-18 |
JP3813136B2 true JP3813136B2 (ja) | 2006-08-23 |
Family
ID=33296554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003121263A Expired - Fee Related JP3813136B2 (ja) | 2003-04-25 | 2003-04-25 | 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7460538B2 (ja) |
JP (1) | JP3813136B2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6963868B2 (en) * | 2002-06-03 | 2005-11-08 | International Business Machines Corporation | Multi-bit Patricia trees |
WO2005104456A1 (ja) * | 2004-03-31 | 2005-11-03 | Ipt Corporation | 固定長データの検索装置および検索管理方法 |
CN100349418C (zh) * | 2004-12-22 | 2007-11-14 | 华为技术有限公司 | 生成通信设备树型结构的方法 |
WO2006098028A1 (ja) * | 2005-03-17 | 2006-09-21 | Fujitsu Limited | ネットワークシステム及びネットワーク接続機器 |
JP2007208480A (ja) * | 2006-01-31 | 2007-08-16 | Nec Engineering Ltd | Ddnsクライアント |
US7822773B2 (en) * | 2008-01-25 | 2010-10-26 | International Business Machines Corporation | Method and system for reducing complex tree structures to simple tree structures based on relevance of nodes using threshold values |
JP5676408B2 (ja) * | 2011-09-30 | 2015-02-25 | Kddi株式会社 | Bgpルータにおける経路表の管理方法及び管理サーバ |
US8937955B2 (en) * | 2012-12-05 | 2015-01-20 | Cisco Technology, Inc. | System and method for scaling IPv6 addresses in a network environment |
US9596181B1 (en) * | 2014-10-20 | 2017-03-14 | Juniper Networks, Inc. | Two stage bloom filter for longest prefix match |
CN105591915A (zh) * | 2014-10-22 | 2016-05-18 | 中兴通讯股份有限公司 | 一种路由表的维护方法和装置 |
US10798000B2 (en) | 2014-12-22 | 2020-10-06 | Arista Networks, Inc. | Method and apparatus of compressing network forwarding entry information |
US9680749B2 (en) * | 2015-02-27 | 2017-06-13 | Arista Networks, Inc. | System and method of using an exact match table and longest prefix match table as a combined longest prefix match |
US20160301658A1 (en) * | 2015-04-10 | 2016-10-13 | X15 Software, Inc. | Method, apparatus, and computer-readable medium for efficient subnet identification |
US10516613B1 (en) | 2015-10-14 | 2019-12-24 | Innovium, Inc. | Network device storage of incremental prefix trees |
US11238046B2 (en) * | 2018-02-19 | 2022-02-01 | Nippon Telegraph And Telephone Corporation | Information management device, information management method, and information management program |
US11140078B1 (en) | 2018-10-18 | 2021-10-05 | Innovium, Inc. | Multi-stage prefix matching enhancements |
CN109617927B (zh) * | 2019-01-30 | 2021-04-16 | 新华三信息安全技术有限公司 | 一种匹配安全策略的方法及装置 |
JP2020201656A (ja) * | 2019-06-07 | 2020-12-17 | ルネサスエレクトロニクス株式会社 | 検索回路 |
CN112565089B (zh) * | 2020-11-30 | 2022-06-21 | 锐捷网络股份有限公司 | 一种路由信息的处理方法及装置 |
CN114301680B (zh) * | 2021-12-29 | 2024-05-07 | 山石网科通信技术股份有限公司 | 一种安全策略的匹配方法及装置、存储介质 |
EP4425860A1 (en) * | 2022-10-17 | 2024-09-04 | New H3C Technologies Co., Ltd. | Packet processing method and apparatus |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3652759B2 (ja) * | 1995-11-27 | 2005-05-25 | 富士通株式会社 | パケット流量監視制御方式 |
JP3735471B2 (ja) * | 1998-10-05 | 2006-01-18 | 株式会社日立製作所 | パケット中継装置およびlsi |
JP3593921B2 (ja) * | 1999-06-01 | 2004-11-24 | 日本電気株式会社 | パケット転送方法および装置 |
US6505270B1 (en) * | 1999-07-02 | 2003-01-07 | Lara Technology, Inc. | Content addressable memory having longest prefix matching function |
US6565211B1 (en) * | 1999-10-22 | 2003-05-20 | Nikon Corporation | Projection type display device |
US7047313B1 (en) * | 2000-01-05 | 2006-05-16 | Thomas Licensing | Method for redirecting packetized data associated with a destination address in a communication protocol layer to a different destination address in a different protocol layer |
JP4592171B2 (ja) * | 2000-10-20 | 2010-12-01 | シャープ株式会社 | 検索情報生成装置 |
US7286533B2 (en) * | 2001-12-27 | 2007-10-23 | Alcatel-Lucent Canada Inc. | Method and apparatus for routing data frames |
-
2003
- 2003-04-25 JP JP2003121263A patent/JP3813136B2/ja not_active Expired - Fee Related
-
2004
- 2004-02-17 US US10/780,213 patent/US7460538B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20040215609A1 (en) | 2004-10-28 |
US7460538B2 (en) | 2008-12-02 |
JP2004328433A (ja) | 2004-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3813136B2 (ja) | 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 | |
US6434144B1 (en) | Multi-level table lookup | |
KR100441317B1 (ko) | 데이터 패킷 분류 방법 및 장치 | |
US7193997B2 (en) | Packet classification | |
US7418505B2 (en) | IP address lookup using either a hashing table or multiple hash functions | |
KR100745693B1 (ko) | Tcam 테이블 관리 방법 | |
US8856203B1 (en) | System and method for algorithmic TCAM packet classification | |
CN104954270B (zh) | 在联网系统中使用的方法和装置以及计算机可读介质 | |
Qiu et al. | Fastrule: Efficient flow entry updates for tcam-based openflow switches | |
US10164884B2 (en) | Search apparatus, search configuration method, and search method | |
US20100058027A1 (en) | Method for selecting hash function, method for storing and searching routing table and devices thereof | |
JP6275263B2 (ja) | 大規模データセンターネットワークのためのトラフィック工学 | |
US11570105B2 (en) | Dynamic route profile storage in a hardware trie routing table | |
US20020009056A1 (en) | Route retrieving system, method therefor and a router device to be used in the same | |
CN110995876B (zh) | 一种ip存储与查找的方法及装置 | |
US6731643B1 (en) | Method and apparatus for routing information packets associated to addresses represented through numerical strings | |
CN115086221B (zh) | 一种报文处理方法、装置、转发设备和存储介质 | |
CN111131015B (zh) | 一种基于PC-Trie动态更新路由的方法 | |
KR100420957B1 (ko) | 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치 | |
EP1128608A2 (en) | Method and means for classifying data packets | |
KR100560420B1 (ko) | 트라이를 이용한 인터넷 프로토콜 주소 검색 방법 | |
KR100814077B1 (ko) | 우선순위 트라이를 이용한 ip 주소 검색 방법 및 이를제공하는 패킷 중계 장치 | |
SE521907C2 (sv) | Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras | |
JP3443356B2 (ja) | パケット分類装置 | |
Bollapalli | IP Routing Table Compression Using TCAM and Distance-one Merge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050906 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050914 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20051004 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20051207 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20051212 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060309 |
|
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: 20060509 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060530 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100609 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |