JP3570323B2 - アドレスに関するプレフィクスの格納方法 - Google Patents

アドレスに関するプレフィクスの格納方法 Download PDF

Info

Publication number
JP3570323B2
JP3570323B2 JP2000007545A JP2000007545A JP3570323B2 JP 3570323 B2 JP3570323 B2 JP 3570323B2 JP 2000007545 A JP2000007545 A JP 2000007545A JP 2000007545 A JP2000007545 A JP 2000007545A JP 3570323 B2 JP3570323 B2 JP 3570323B2
Authority
JP
Japan
Prior art keywords
node
prefix
trie
address
current
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
Application number
JP2000007545A
Other languages
English (en)
Other versions
JP2000324172A (ja
Inventor
マーク・ゴードルー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JP2000324172A publication Critical patent/JP2000324172A/ja
Application granted granted Critical
Publication of JP3570323B2 publication Critical patent/JP3570323B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、アドレスに関するプレフィクスを効率的に格納することに関する。特に、本発明は、トライ(trie)の各ノードに1個のプレフィクスが格納されて空のノードがないようなバイナリ・トライ(binary trie、以下「二分トライ」という。)方式でアドレスに関するプレフィクスを格納することに関する。本発明は、二分トライ方式でアドレスに関するプレフィクスを格納する方法として実現される。また、本発明は、前記二分トライ方式でネットワークアドレスに関するプレフィクスを格納する方法、前記二分トライ方式でネットワークアドレスが格納されるネットワーキングシステムとして実現される。更に、本発明は、前記二分トライ方式でコンピュータがアドレスを格納することを可能にするコンピュータプログラム製品として実現される。
【0002】
【従来の技術】
アドレス及びアドレスに関するプレフィクスを効率的に格納することは、複数のアドレスを使用するシステムにとって重要である。なお、この「従来の技術」のセクションでは、多くのインターネットアプリケーションで使用されるルータに関連するフォワーディングテーブルについて説明するが、説明される技術及び原理は複数のアドレスに関するプレフィクスを格納するためのテーブルが必要とされるような任意のシステムに適用される。また、ネットワーキングシステムでは、多数のネットワークアドレスを効率的に格納することが必要となる。
【0003】
IPアドレスは一般に32ビットを有する。IPデータグラムは、ソース(送信元)及びデスティネーション(宛先)の両方のIPアドレスを含む。ルータで、着信IPデータグラムは次のホップ(これは一般に近くのマシンである。)へ転送されなければならない。ルータは、自己のルーティングテーブルを参照することによって、次のホップを決定する。この手続きをIPフォワーディング(IP forwarding)、あるいはテーブルルックアップ(table lookup)という。なお、フォワーディングは、ルート(経路)を計算することとは異なる(ルート計算は、例えば呼ルーティングであり、ルーティングアルゴリズムによって扱われる。)。IPフォワーディングは、一般的なデータグラムにとって、最も時間のかかるタスクとなる場合がある。
【0004】
IPの最近のバージョンにおけるデータグラムのフォワーディングは、IPアドレスプレフィクスのセットの格納に基づいている。その各アドレスは、IPを使用するネットワーキングシステム内の次のホップに対応する。IPデータグラムがネットワーキングシステム内のルータに到着すると、デスティネーションアドレスが、ルータのフォワーディングテーブル内に格納されているプレフィクスと照合される。デスティネーションIPアドレスと一致する最長のプレフィクスを見つけ、そのプレフィクスの次ホップ情報が、このデータグラムを転送するために使用される。この問題は、最長一致プレフィクス(LMP:Longest Matching Prefix)問題と呼ばれる。直ちにわかるように、アドレスに関するプレフィクスの効率的な格納がLMP問題を解決する際の重要なファクタである。
【0005】
IPを使用するネットワーキングシステム内のルータのフォワーディングテーブルにプレフィクスを格納する従来技術の1つは、CIDR(class−less Inter−Domain Routing)として知られている(V. Fuller, T. Li, J. Yu, and K. Varadhan, ”Classless inter−domain routing (CIDR): An address assignment and aggregation strategy”, RFC−1519, September 1993、を参照)。このアプローチは、インターネット内のアドレスを格納するテーブルのサイズを縮小することを意図している。CIDR以前のIPフォワーディング法は、デスティネーションネットワーク番号を容易に抽出することができるように、アドレスフォーマットを固定することに基づいていた。データグラムは、各デスティネーションネットワークに関連する次ホップに転送された。各ルータ上で、ネットワークごとに1個のフォワーディングテーブルが必要とされる。このような格納領域が要求されることは、インターネット上のネットワーク数が増大するにつれて問題となった。CIDRは、単一のプレフィクスのもとで同じ次ホップ情報のIPアドレスをまとめることによって(そのようにまとめることが可能なとき)、これらのフォワーディングテーブルのサイズを縮小する。
【0006】
次に示す表1は、6個のプレフィクスのセットを含むフォワーディングテーブルの例である。
【表1】
Figure 0003570323
【0007】
上記の転送プロセスの例として、表1を考える。この表は、プレフィクスのセットを含み、各プレフィクスには次ホップが関係づけられる。次ホップ情報は一般に、次のルータのIPアドレスと、出力物理インタフェースからなる。例えば、あるIPデータグラムのデスティネーションアドレスが「4.123.33.12」である場合、左端の8ビットは「00000100」である。このアドレスに対して、表1のLMPは「0000」であり、これは次ホップがHであることを示す。もう1つの例として、デスティネーションアドレス「109.12.12.12」では、左端の8ビットは「01101101」である。このアドレスは、「01101」及び「011011」の両方に一致する。後者のプレフィクスのほうが長いので、次ホップはHとなる。
【0008】
情報の格納及び探索に関する初期の研究のかなりの部分は、通常は少ない修正だけで、LMP問題に適用可能である。特に、キーの直接比較ではなく、キーの2進表示に基づく探索法は、このような場合に一般的になっている。Knuthは、さまざまなこのような「ディジタル探索」アプローチについて概説している(D. E. Knuth, ”The Art of Computer Programming: Volume 3, Sorting and Searching”, Addison−Wesley, second ed., 1998、を参照)。
【0009】
トライ構造は、任意のレベルにおける分岐が、トライのノードに格納されている値の一部のみによって決定されるような木構造の一種である。Fredkinのトライ構造はエレガントであるが、メモリの使用が非効率的であり、格納されているプレフィクスよりも多くのノードを必要とする可能性がある(E. Fredkin, ”Trie memory”, Communications of the ACM, vol.3, pp.490−500, 1960、を参照)。Morrisonのパトリシアトライ(Patricia trie)は、テーブルエントリに関連づけられておらず1個の子しか有しない各トライノードを除去することによってこの問題点を改善している(D. Morrison, ”Patricia−practical algorithm to retrieve information coded in alphanumeric”, Journal of the ACM, vol.15, no.4, pp.515−534, October 1968、を参照)。Morrison及びFredkinによってそれぞれ提案されたこれらの2つの構造は、IPフォワーディングに関する最近の研究の多くに影響を与えている。図19に、従来のトライ構造の一例を示す。図20に、従来のトライ構造、及び、等価な従来のパトリシアトライ構造の一例を示す。図19及び図20において、黒丸のノードはプレフィクスを格納しており、白丸のノードはプレフィクスを格納していない。
【0010】
IPフォワーディングを扱うための最近の提案は、さまざまな設計目標を念頭において最適化されている。これらのアプローチのうちのいくつかは、テーブルの更新(すなわち、挿入及び削除)よりもルックアップ(すなわち探索)の速度に重きを置いている(以下の文献を参照)。
・M. Degermark, A. Brodnik, S. Carlsson, and S. Pink, ”Small forwarding tables for fast routing lookups”, in Proceedings ACM SIGCOMM’97, pp.3−14, 1997
・B. Lampson, V. Srinivasan, and G. Varghese, ”IP lookups using multiway and multicolumn search”, in Proceedings IEEE INFOCOM’98, pp.1248−1256, 1998
・S. Nilsson and G. Karlsson, ”Fast address lookup for Internet routers”, in Proceedings of IEEE Broadband Communications 98, April 1998
・H. H.−Y. Tzeng, ”Longest prefix search using compresses trees”, in GLOBE−COM’98, Global Internet Mini Conference, pp.88−93, November 1998
・M. Waldvogel, G. Varghese, J. Turner, and B. Plattner, ”Scalable high speed IP routing lookups”, in Proceedings ACM SIGCOMM’97, pp.25−36, 1997。
【0011】
ルックアップの速度に重きを置く理由は、ルーティング更新はかなり頻繁にあるが、ルーティングプロトコルは更新に適応するのに数分間かかることがあるためである。ルータ上のフォワーディングテーブルは、現在のシステムでは、毎秒高々1回より多くは変更する必要がない。従って、ルータ上の他の場所にある何らかの動的ルーティングテーブル構造(これがフォワーディングテーブルを定期的に更新する)を使用することが考えられる。
【0012】
現在では、探索速度に重きを置くことにより、不均衡な設計が生じており、これは、インターネットの現在及び将来の需要と調和していない。Labovitz et al.は、インターネットコアルータは一般に、1996年には、毎日3百万〜6百万の更新情報を交換していると指摘している(C. Labovitz, G. R. Malan, and F. Jahanian, ”Internet routing instability”, IEEE/ACM Transactions on Networking, vol.6, no.5, pp.515−528, October 1998、を参照)。インターネットが成長するにつれて、また、モビリティ(移動性)に対するサポートが拡大するにつれて、効率的に更新することが可能なフォワーディングテーブルに対する需要は更に増大することが予想される。
【0013】
最近、IPフォワーディング問題に関する多くの研究がある。本明細書では、ソフトウェアアプローチに注目する。なお、多くのソフトウェアアプローチは、ハードウェアに効率的に実装することが可能である。本発明のこのようなハードウェア実装の1つについても説明する。いくつかのこのようなアプローチの比較は、Filippi et al.の研究に見られる(E. Filippi, V. Innocenti, and V. Vercellone, ”Address lookup solutions for gigabit switch/router”, in GLOBECOM’98, Global Internet Mini Conference, pp.82−87, November 1998、を参照)。
【0014】
Degermark et al.には、市販のプロセッサで実行するために最適化されたアプローチについて記載されている。Degermark et al.では、効率的な動作を提供するため、テーブルデータを小さく保ちながら、同時に、テーブルを探索するのに必要なメモリアクセス数を最小にしようとする(M. Degermark, A. Brodnik, S. Carlsson, and S. Pink, ”Small forwarding tables for fast routing lookups”, in Proceedings ACM SIGCOMM’97, pp.3−14, 1997、を参照)。この格納方法は、32個のトライレベルのそれぞれに対して1回のメモリアクセスを実行するのではなく、3個だけのレベルでプレフィクス木(実質的にはトライ)を探索することによって、(メモリ利用率を犠牲にして)メモリアクセス数を低減する。プレフィクス木構造では、あるレベルの探索においてはいくつかのビットパターンしか可能性がない。そのため、Degermark et al.は、データ圧縮法を利用することを可能にしている。彼らの例では利益はやや限定されているが(彼らは実質的に16ビットのビットベクトルを10ビットだけで格納することを可能にしているが、これは、データ構造全体の1つのコンポーネントに対してのみである)、彼らの圧縮アプローチは注目すべきものである。このアドレス格納方法は、効率的な更新をサポートするようには設計されていない。
【0015】
Waldvogel et al.(M. Waldvogel, G. Varghese, J. Turner, and B. Plattner, ”Scalable high speed IP routing lookups”, in Proceedings ACM SIGCOMM’97, pp.25−36, 1997、を参照)には、トライ構造を探索するためのもう1つのアプローチが記載されている。彼らのアプローチは、トライのルートから出発して下方に進むのではなく、中間レベルから出発し、そこに見出した情報に依存して上方または下方に進む。1つのレベルはハッシュ法により高速に探索される。トライ内にあるノードのみが格納される。1つのレベルが探索されて一致がない場合、より短いプレフィクスしか可能性がないことがわかる。他方、ハッシュ表におけるヒットは、最長一致プレフィクスが見つかったこと、または、さらに長いプレフィクスを求めてさらに深く探索すべきことのいずれかを意味する。しかし、重要なアイデアは、必ずしもトライのあらゆるレベルを探索する必要がないことである。このアプローチは極めてスケーラブルであり、bビットのプレフィクスに対してlog(b)レベルの探索しか必要としない。良好なハッシュ関数(高速に計算可能であり、さらに、ノード間に一様分布可能なもの)の選択は、ここでは説明しないが、重要な問題である。また、この構造は、事前計算を非常に利用し、効率的な更新をサポートしない。しかし、このアプローチは、Partridge et al.によって設計された特定のIPルータで使用されている(C. Partridge, P. P. Carvey, E. Burgess, I. Castineyra, T. Clarke, L. Graham, M. Hathaway, P. Herman, A. King, S. Kohalmi, T. Ma, J. Mcallen, T. Mendez, W. C. Milliken, R. Pettyjohn, J. Rokosz, J. Seeger, M. Sollins, S. Storch, B. Tober, G. D. Troxel, D. Waitzman, and S. Winterble, ”A 50−Gb/s IP router”, IEEE/ACM Transactions on Networking, vol.6, no.3, pp.237−248, June 1998、を参照)。
【0016】
Nilsson and Karlssonは、二分トライのi個の完全なレベルを次数21の単一のノードで置換するパトリシアトライの変形を利用している(S. Nilsson and G. Karlsson, ”Fast address lookup for Internet routers”, in Proceedings of IEEE Broadband Communications 98, April 1998、を参照)。このアプローチは非常に密なテーブルを生じるが、これも効率的更新をサポートするようには設計されていない。トライを圧縮することにより探索あたりの平均メモリアクセス数を低減するもう1つのアプローチは、Tzeng(H. H.−Y. Tzeng, ”Longest prefix search using compresses trees”, in GLOBE−COM’98, Global Internet Mini Conference, pp.88−93, November 1998、を参照)に記載されている。
【0017】
Lampson et al.は、LMP問題を二分探索の変形と見なすことにより、LMP問題へのかなり異なるアプローチを提案している(B. Lampson, V. Srinivasan, and G. Varghese, ”IP lookups using multiway and multicolumn search”, in Proceedings IEEE INFOCOM’98, pp.1248−1256, 1998、を参照)。プレフィクスはIPアドレスの範囲を表すため、プレフィクスは、2個のIPアドレス、すなわち、その範囲の最小値及び最大値によって表すことができる。p個のプレフィクスに対して(高々)2p個の境界アドレスをソートすることによって、実質的に、アドレスのバケット(バケット内の各アドレスは同じ次ホップを有する)を定義する。このアプローチは極めてメモリ効率が良いが、挿入及び削除は比較的非効率的なオペレーションである。
【0018】
Srinivasan and Vargheseは、周知のプレフィクス拡張法を活用している。これは、メモリ必要量を増大させフォワーディングテーブルの更新を困難にする可能性があるという犠牲のもとで、一般的な探索におけるメモリアクセス数を低減する(V. Srinivasan and G. Varghese, ”Faster IP lookups using controlled prefix expansion”, in ACM SIGMETRICS’98, pp.1−10, June 1998、を参照)。この論文の主要な寄与は、メモリ利用率を最小にする探索法を与える動的計画法に基づく形式的アプローチの記述である。プレフィクス拡張に基づく同様の方式が、Gupta et al.(P. Gupta, S. Lin, and N. McKeown, ”Routing lookups in hardware at memory access speeds”, in Proceedings IEEE INFOCOM’98, pp.1240−1247, 1998、を参照)に記載されている。しかし、彼らのアプローチは、最適性よりも、提案したハードウェア実装に焦点を置いている。
【0019】
以上説明した従来のアプローチは、主にルックアップ速度を最適化するように設計されている。これらのアプローチとは異なり、DPトライ(DP−Trie)に関するDoeringer et al.の研究は、ルックアップ速度とともに、フォワーディングテーブル更新速度も最適化しようとしている(W. Doeringer, G. Karjoth, and M. Nassehi, ”Routing on logest−matching prefixes”, IEEE/ACM Transactions on Networking, vol.4, no.1, pp.86−97, February 1996、を参照)。彼らのアプローチはパトリシアトライの変形であり、探索とともに、効率的な挿入及び削除のアルゴリズムを定義したものである。注意すべき点であるが、フォワードテーブルによって定期的にアクセスされる最新のルーティングテーブルを維持することによって、ルックアップ速度に重きを置くアプローチを補完するために、DPトライのようなより動的な構造を使用することができる。
【0020】
【発明が解決しようとする課題】
ますます拡大するアプリケーション(特にネットワーキングアプリケーション)の需要に適応するために、アドレスに関するプレフィクスを格納するための、少なくとも以下の基準を満たす構造及び方法が要求される。
・効率的でスケーラブルなメモリ使用;
・その構造は、効率的で単純な挿入、削除、及び探索オペレーションをサポートすること;
・その構造は、パイプライン化ハードウェア実装をサポートすること。
【0021】
【課題を解決するための手段】
従来技術における課題を解決するため、本発明の目的は、アドレスに関するプレフィクスを格納する方法を提供することである。本発明のもう1つの目的は、ネットワーキングシステムにおいてネットワークアドレスに関するプレフィクスを格納する方法を提供することである。本発明のもう1つの目的は、効率的にアドレスに関するプレフィクスを格納するネットワーキングシステムを提供することである。本発明のさらにもう1つの目的は、ネットワーキングシステムにおけるルータに関連するコンピュータが、アドレスに関するプレフィクスを効率的に格納することを可能にするコンピュータプログラム製品を提供することである。
【0022】
本発明の目的を実現するため、アドレスのセットに関するプレフィクスのセットを格納する方法が提供される。この方法は、二分トライ方式でプレフィクスを格納する。前記二分トライ内の各ノードは、前記プレフィクスのうちの少なくとも1つに関連づけられ、前記二分トライ内のいずれのノードも空でない。
【0023】
好ましくは、第1のプレフィクスは、ルートノードを割り当て、該ルートノードに該プレフィクスを置くことによって、空トライに挿入される。
【0024】
好ましくは、第1のプレフィクス以外のプレフィクス(kビットからなり、b,b,...,bk−1の表示を有し、kは0より大きい整数である)は、以下のプロセスを用いて挿入される。
・前記トライのルートノードをカレントノードに指定し、b=bと置き、前記プレフィクスをカレントプレフィクスとして指定するステップ;
・カレントノードに既にカレントプレフィクスが格納されている場合には挿入を終了するステップ;
・b=0の場合にカレントノードの左の子を検査し、b=1の場合にカレントノードの右の子を検査するステップ;
・新たなノードを割り当て、左の子及び右の子のいずれかが存在しない場合にカレントプレフィクスを入れ、この新たなノードをカレントノードに指定するステップ;
・n=n+1の代入を行うステップ;
・n=kになるまで繰り返すステップ;及び
・カレントノードに以前に格納されたプレフィクスをカレントプレフィクスで置き換え、この以前に格納されたプレフィクスをカレントプレフィクスに指定し、上記ステップを繰り返すステップ。
【0025】
好ましくは、トライは、アドレス(kビットからなり、b,b,...,bk−1の表示を有し、kは0より大きい整数である)のLMPを求めて、以下のプロセスを用いて探索される。
・ルートノードが一致プレフィクスを有する場合、ルートノードをカレントノード及びLMPノードに指定し、b=bと置くステップ;
・カレントノードをLMPノードに指定し、カレントノードが一致プレフィクスを有しかつ当該一致プレフィクスがLMPノードより長い場合、このLMPノードを下方に移動するステップ;
・b=0の場合にカレントノードの左の子をカレントノードに指定し、b=1の場合にカレントノードの右の子をカレントノードに指定するステップ;
・n=n+1とするステップ;
・カレントノードがトライの最低レベルになるまで上記ステップを繰り返すステップ;及び
・最低のトライに対応するプレフィクスが一致する場合に該プレフィクスをLMPとして選択するステップ。
【0026】
好ましくは、アドレスに対応するプレフィクスは、以下のプロセスを用いて前記トライにおいて削除される。
・前記プレフィクスに対応する一致ノードを探索するステップ;
・前記一致ノードが葉ノードである場合に前記一致ノードを削除してプロセスを終了するステップ;
・前記一致ノードが葉ノードでない場合、前記一致ノードを削除して前記一致ノードの一方の子を上方に移動し、当該一方の子を削除するステップ;及び
・葉ノードが削除されるまで上記ステップを繰り返すステップ。
【0027】
好ましくは、最悪の場合の探索における深さを最小にするために、トライは平衡化される。
【0028】
本発明のもう1つの特徴によれば、アドレスが格納された単純トライを、すべてのノードがアドレスを表す深さ最適サブトライに変換する方法が提供される。この方法は以下のステップを有する。
・前記単純トライで占有ノードを有する最低レベルを見出し、該最低レベルをi(iは整数)とするステップ;
・i−1に対応するレベルにおける各ノードを検査するステップ;
・レベルi−1に空ノードがある場合、該空ノードの深いほうのサブトライのボトムからプレフィクスを上方に移動するステップ;及び
・ルートノードに到達するまで上記の併合を続けるステップ。
【0029】
本発明のさらにもう1つの特徴によれば、アドレスが格納された単純トライ(該単純トライ内の各ノードを訪れる確率は既知)を、探索あたりの期待ステップ数が最小である探索最適トライに変換する方法が提供される。この方法は、動的計画法を使用し、以下のステップを有する。
・ボトムアッププロセスを用いて各ノードαに対して配列Aαを計算するステップ。ただし、αをルートとするサブトライからi個のノードが昇格すると仮定してAα[i]は最小期待探索ステップ数を保持し、
Aα[i]=f(Aβ,Aγ,Pβ,Pγ)
であり、β及びγはαの左及び右の子であり、Pβ及びPγはαが既に訪れられたと仮定した場合に探索中にβ及びγが訪れられる確率を表す;
・各Aα[i]に対応する最適サブトライを生成するためにβ及びγから昇格させなければならないプレフィクス数を各Aα[i]に関連づけるステップ;
・ルートから再帰的にトップダウンに、子ノードに対してプレフィクスを昇格させる要求を発行するように操作するステップ。ルートノードは、プレフィクスを保持していない場合に1個のプレフィクスを要求し、プレフィクスを保持している場合に0個のプレフィクスを要求し、該要求は、配列A及び該配列Aに関連づけられたプレフィクス数に基づく。
【0030】
好ましくは、格納されたプレフィクスはインターネットアドレスに関連し、前記トライはIPルータにある。
【0031】
本発明のさらにもう1つの特徴によれば、複数のルータを有するネットワーキングシステムが提供される。各ルータはアドレス記憶領域を有し、各アドレス記憶領域には、前記ネットワーキングシステムに対応するネットワークアドレスに関するプレフィクスのセットが二分トライの形式で格納される。前記二分トライは複数のノードを有し、各ノードは前記ネットワークアドレスのうちの少なくとも1つのプレフィクスに関連づけられ、前記二分トライ内のいずれのノードも空でない。
【0032】
好ましくは、最悪の場合の探索における深さを最小にするために、二分トライは平衡化される。
【0033】
本発明のさらにもう1つの特徴によれば、コンピュータ読み取り可能媒体を含むコンピュータプログラム製品が提供される。このプログラムは、ネットワーキングシステムに関連する1つ以上のコンピュータが、該ネットワーキングシステム内の各ルータに二分トライ方式でアドレスのセットを格納することを可能にする。前記二分トライ内の各ノードには、前記アドレスのうちの少なくとも1つのプレフィクスが関連づけられ、前記二分トライ内のいずれのノードも空でない。
【0034】
好ましくは、前記コンピュータプログラム製品において、最悪の場合の探索における深さを最小にするために、二分トライは平衡化される。
【0035】
本発明のさらにもう1つの特徴によれば、二分トライ方式でアドレスのセットを格納するシステムが提供される。前記二分トライ内の各ノードには、前記アドレスのうちの少なくとも1つのプレフィクスが関連づけられる。前記システムはパイプラインを有し、該パイプラインは複数の段を有し、該複数の段のうちの各段は、前記二分トライ内の1つのレベルに対応し、該段は本質的に、メモリコンポーネントと、ラッチのバンクと、単純なロジックとからなり、前記ラッチのバンクは、1個のプレフィクスと、1個のデスティネーションIPアドレスと、適当なノードを指す1個のポインタと、対応する段のタスクを指示する命令と、該命令の状態に関する情報を含むステートとを格納する。
【0036】
好ましくは、前記パイプラインの各段は、入力及び出力の情報を保持するラッチと、1つのレベルにおけるノードに対応する情報を含むメモリと、未使用のノードアドレスへのポインタを含むスタックと、コンパレータとを有する。
【0037】
【発明の実施の形態】
設計目標に関しては、本発明のアプローチはDoeringer et al.のDPトライと多くの共通点を有するが、以下のようないくつかの注目すべき相違点がある。
・探索、挿入、及び削除のアルゴリズムは、DPトライのものよりもかなり単純である。
・本発明におけるノードは、DPトライノードに比べて比較的単純である。各DPトライノードは、他のノードへの3個のポインタ、2個のプレフィクス、及び、0からIPアドレス内のビット数までの範囲の整数を表すことができなければならない1個のインデックス値とを必要とする。本発明におけるノードは、1個のプレフィクスと、他のノードへの2個のポインタを含む。
・DPトライは一般に、プレフィクス数より多くのノードを有する。これらの「オーバーヘッド」ノードは、テーブルを探索するのに必要な情報を格納する。本発明にはオーバーヘッドノードはない。
【0038】
DPトライの構造は、テーブル内のプレフィクスのみに依存し、プレフィクスの挿入及び削除の順序には依存しない。本発明で使用されるトライの構造は一般に、挿入及び削除の順序に依存する。
【0039】
直観的には、本発明は、トライ法の変形である。本発明は、すべてのノードが1個のプレフィクスに関連づけられるまで、トライの上方に向かってプレフィクスを移動することによって、テーブルエントリに関連づけられていないノードを消去する。このようなアプローチは、好ましい効果を有する。第1に、このようなアプローチは、メモリ使用量を低減する。第2に、このようなアプローチは、トライをより「浅く」することにより、探索あたりのメモリルックアップを少なくする可能性がある。
【0040】
例として、図1に、深さ最適bonsai(セクションIVC.1で詳述する)と、mae−eastフォワーディングテーブル(セクションIVDで詳述する)に対する、トライプレフィクス分布、トライノード分布、及びプレフィクス/ノード分布を示す。トライのレベルは0(ルート)から32(プレフィクスの最大長)までラベルづけられている。本発明は、必要なノード数を大幅に低減し、さらに、プレフィクスはトライの上方に移動することにより、探索あたりのステップ数が低減される。
【0041】
[IVA.bonsai]
本発明の好ましい実施例はbonsaiと名づけられる。bonsaiは、インターネットアドレスに関するプレフィクスを格納する。bonsaiは二分トライであり、各ノードは対応するプレフィクスを有する。挿入、探索、及び削除のオペレーションについて、いくつかの実装の問題とともに、以下で詳細に説明する。bonsaiは、ここで説明するいくつかの不変表明を有する。以下は、コレラの不変表明が挿入及び削除のオペレーションのもとで成り立つことを示す証明である。
【0042】
補助定理1(bonsai不変表明)
bonsaiは、以下の性質を有する。
1.bonsaiは、ルーティングテーブルエントリを表すノードのみを含むという意味で、「パックされた」トライである;
2.IPアドレスに一致する可能性のあるすべてのプレフィクスは、一般的なトライ方式でbonsaiを降下することによって、すなわち、IPアドレスの第iビットを用いてbonsaiのレベルiでとられる方向を選択することによって、求められる。
【0043】
[IVA.1 挿入]
第1のプレフィクスが空トライに挿入されると、ルートノードが割り当てられ、そのノードのプレフィクスポインタが適当に設定される。その後の挿入は、最初の空き位置が見つかるまで通常の方法でトライ構造を降下して行われる。2進表示b,b,...,bk−1を有するkビットのプレフィクスが挿入される場合、アルゴリズムはルートノードから出発する。b=0の場合、ルートノードの左の子が検査される。そうでない場合、右の子が検査される。左(右)の子が存在しない場合、1つのノードがその位置に割り当てられ、プレフィクスがそこに置かれる。左(右)の子が既に存在する場合、ビットbが子ノードのコンテクストで検査される。1個のプレフィクスの1個のコピーのみがトライ内で許される。複数のコピーが挿入される場合、それはトライを降下中に発見され、現在の挿入は、トライを変更することなく停止される。図2に、プレフィクスのシーケンスが挿入された後のbonsaiの状態を示す。
【0044】
しかし、すべてのプレフィクスがトライを降下して葉ノードとなるわけではない。例えば、図2に示すトライにプレフィクス01を挿入することを考える。プレフィクス10011を有するノードの0−子(0−child)、及び、プレフィクス01100を有するノードの1−子(1−child)をたどった後、トライをさらに降下する方法はない。プレフィクスxができる限りトライを降下し、既にプレフィクスyを有するノードを見つけた場合、プレフィクスyは追い出され、あたかもyが挿入されていたかのように、トライをさらに降下することを可能にする。なお、挿入は、多くのプレフィクスを追い出す可能性があるが、この手続きは、最悪の場合でも、O(d)回のオペレーション(ただし、dはトライの深さ)しか必要としない。例えば、図3に、01プレフィクスが挿入された後のトライ例の状態を示す。01プレフィクスは0100プレフィクスを追い出し、0100プレフィクスはトライを2レベル降下し、そこで葉ノードを生成する。
【0045】
[IVA.2 探索]
IPアドレスが与えられた場合にbonsaiを探索することはかなり直観的である。挿入について説明した上記のセクションで述べたように、トライを通常のように降下する。降下の各ステップで、IPアドレスが、格納されているプレフィクスと一致するかどうかの比較を行う。一致する場合、かつ、そのプレフィクスが前に発見した一致よりも長い場合、トライのさらに低いレベルが探索される間はそのノードへのポインタが運ばれる。トライを降下する間に1つのIPアドレスがいくつかのプレフィクスに一致する可能性もあるが、すべての可能な一致はその経路にある。
【0046】
このアプローチの1つの結果は、トライの各レベルで、格納されているプレフィクスとの比較が必要となることである。このような比較は、純粋なトライ方式では必要でないものであり、一定の割合のコストが加わる。
【0047】
図2のbonsaiで、IPアドレス01000000...のLMPを探索することを考える。ルートノードでは、プレフィクス10011との一致はない。0−子を訪れるが、プレフィクス01100との一致はない。そのノードの1−子を訪れると、プレフィクス0100との一致があるため、このプレフィクスが記憶される。最後に、そのノードの0−子を訪れると、今度もプレフィクス010との一致が見つかる。しかし、この新しい一致は、前の一致よりも短い。さらにトライを降下することができないため、0100がLMPでなければならない。
【0048】
[IVA.3 削除]
挿入及び探索の場合と同様に、削除オペレーションでも、プレフィクスとの一致を探索してトライを降下する。削除すべきプレフィクスが葉ノードにある場合、そのプレフィクスは削除され、そのノードはトライから除去され、その親ノードの子ポインタのうちの1つの更新が必要となる。しかし、削除すべきプレフィクスが葉ではないノードに対応する場合、トライ構造を維持するように注意しなければならない。重要な点は、そのノードのサブトライ内の任意のプレフィクスが、削除されたプレフィクスを置き換える可能性があることである。置換を選択するには多くの方法があるが、本発明では、容易にパイプライン化可能なものが選択される。最終的に葉ノードに到達するまで、子ノードに対応するプレフィクスが上方に移動し、その子のうちの1つのプレフィクスと置換される。その後、その葉ノード(そのプレフィクスは親ノードに移動した)を削除することができる。このような場合、プレフィクスがトライを上方に「パーコレート(浸透)する(percolate)」とみなすことができる。なお、削除されるのは常に葉ノードである。
【0049】
1個のノードに2個の子がある場合、左または右のいずれの子のプレフィクスを上方にパーコレートさせるかを選択する可能性がある。(ノードが1個しか子を有しない場合、選択の余地はない。)選択の余地がある場合、静的アプローチ(例えば、0−子を優先する)、または、動的なアプローチ(例えば、ランダム選択)を使用する可能性がある。
【0050】
例えば、図3からプレフィクス01100を削除することを考える。このプロセス及び結果として得られるトライを図4に示す。このプロセスは、ルートノードから出発するが、プレフィクス10011との一致はない。次に、ルートノードの0−子を訪れると、削除すべき一致プレフィクスが見つかる。0−子または1−子のいずれかのプレフィクスをパーコレートすることができる。1−子を優先すると仮定すると、01が上方にパーコレートする。次に、さらに0−子または1−子のいずれかのプレフィクスをパーコレートすることができる。今度は0−子を優先すると仮定すると、010が上方にパーコレートする。このノードは1個の子しか有しないため、0100が上方にパーコレートする。葉ノードに到達したので、この葉ノードが削除される。
【0051】
[IV.B 最適bonsaiトライ]
bonsaiオペレーションの1つの結果は、トライの構造が、挿入及び削除のオペレーションの順序に(一般的には)依存することである。例えば、図5のbonsaiは、図2のbonsaiと同じプレフィクスを含む。しかし、図5のbonsaiのほうが、プレフィクスの平均深さが小さい。従って、何らかの性能メトリックを最適化するようにトライを操作することが可能である。例えば、最悪の場合の探索の深さを最小にするように、トライをできるだけ平衡化することが好ましいことがある。あるいは、平均の場合の探索の深さを最小にするのが好ましい場合もある。
【0052】
注意すべき点であるが、最悪の場合の探索を最小にすることと平均の場合の探索を最小にすることとは衝突する基準である。例えば、図6に示す2個の小さいbonsai構造を考える。すべてのIPアドレスに対して一様な確率を仮定すると、トライ(a)を探索するための期待比較数は2となる。すべての探索は正確に2回の比較を必要とするからである。トライ(b)の場合、期待比較数は(50%)(1)+(25%)(2)+(25%)(3)=1.75となる。
【0053】
一様分布を仮定すると、不平衡トライのほうが、平衡トライよりも、平均の場合の探索性能は良好である。もちろん、一様分布の改定は、実際のルータでは妥当でない。しかし、確率分布が既知であるか、あるいは、推定可能(例えば、探索中にノードがアクセスされるごとに記録することによって)である場合、平均の場合の挙動を最適化するようにトライを調節することが可能である。最適bonsaiの計算は、それぞれの挿入または削除のオペレーションの後には時間がかかりすぎるかもしれないが、最適化基準をより良く満たすように定期的にbonsaiを再構成することは合理的である。
【0054】
以下のセクションでは、2種類の最適bonsaiを計算する方法の好ましい実施例について説明する。第1の実施例は、全体の深さが最小のbonsaiトライを計算する欲張り法(greedy algorithm)である。第2の実施例は、デスティネーションIPアドレスの任意の分布に基づいて、最小の期待探索ステップ数のbonsaiを導出する動的計画法アプローチである。
【0055】
まず、最適化方法に関連する用語について説明する。空ノードとは、ルーティングテーブルエントリを表さないトライノードである。占有ノードは、エントリを表す。サブトライは、いくつかのレベルのノードからなり、レベルiのノードは、そのサブトライのルートからiホップにある。サブトライのルートはレベル0の唯一のノードである。ノードを表すのにギリシア文字を用いる。ノードαのレベルをdαで表す。このレベルに対するルートノードは文脈から明らかなはずである。あるサブトライのルートノードがαで表される場合、これは、αをルートとするサブトライ全体を表すのにも使用することがある。この場合も、その意味は文脈から明らかなはずである。αをルートとする任意のサブトライに対して、wαで、レベルi以下のプレフィクスの総数を表す。wαを、αをルートとするサブトライのレベルiの重みという。例えば、αが図2の完全トライのルートノードである場合、wα=8、wα=7、wα=5、wα=2、及び、すべてのi≧4に対して、wα=0である。βを、プレフィクス0100のノードとすると、wβ=3、wβ=2、及び、すべてのi≧2に対して、wβ=0である。サブトライが文脈から明らかなとき、サブトライを表すのにwも用いられる。最後に、サブトライの深さとは、最も深いノードのレベルである。
【0056】
[IVB.1 深さ最適bonsai]
ここでは欲張り法について説明する。このアルゴリズムは、単純なトライから出発して、ルーティングテーブルエントリを表さないすべてのノードを除去することによってそのトライを圧縮し、深さが最小で平均ノード(プレフィクス)レベルが最小のbonsaiを生成する。この好ましい実施例を、深さ最適bonsaiと呼ぶ。深さ最適サブトライとは、同じプレフィクスのセットを有する他のいかなるサブトライも、任意のiに対して、より小さいwを有しないようなサブトライである。
【0057】
このアルゴリズムは、ボトムアップで動作する。空ノード及び占有ノードの両方を含む、ルーティングテーブルの基本トライ構造から、深さ最適サブトライへと再帰的に併合される。占有ノードがあるトライの最低レベルが見出される。これをレベルiとする。(このレベルに見出されるすべてのノードは必ず占有ノードである。)レベルi−1におけるトライの各ノードを検査する。(トライ内の任意のレベルにノードが存在するためには、そのノードは占有ノードであるか、または、少なくとも1つの占有子孫を有していなければならない。)レベルi−1において、ノードが占有ノードである場合、サブトライの併合は不可能であるため、何のアクションもとられない。そのノードが空である場合、これは、そのサブトライのうちの1つからプレフィクスを上方に移動(昇格)させ、レベルi−1をルートとする深さ最適サブトライを得ることができることを意味する。図7に示すように、任意の(占有)ノードにおいて、深いほうのサブトライの最低レベルから昇格すべきものが選択される。いずれのサブトライも同じ深さである場合、いずれかのサブトライの最低レベルから1個のノードが任意に選択される。この併合プロセスは、ルートノードに到達するまで、トライのレベルを上って続けられる。
【0058】
補助定理2(深さ最適サブトライ不変表明)
上記のアルゴリズムを使用すると、それぞれの深さ最適サブトライは以下の性質を有する。
1.サブトライ内のすべてのプレフィクスは、トライ内のサブトライルートノードの位置によって表される共通のサブストリングを有し、そのサブストリングを共有するすべてのプレフィクスはそのサブトライ内にある。
2.サブトライは、レベル重みwを小さくすることができるようにプレフィクスを再配置することが不可能であるという意味で、深さ最適である。
【0059】
証明:レベルi、すなわち、もとのトライ内の最も深い(占有)ノードのレベルから出発して、トライのレベルに関する帰納法を用いる。
【0060】
レベルiのノードαは占有ノードでなければならず、子を有することはできない。この場合、補題2の不変表明が維持されることは明らかである。次に、レベルjをルートとするすべてのサブトライが不変表明を維持すると仮定すると、レベルj−1をルートとするすべてのサブトライが不変表明を維持することが示される。レベルj−1のノードαは、占有ノードであるか空ノードであるかのいずれかである。
【0061】
αが占有ノードである場合、任意のiに対してwを小さくするような、αをルートとするサブトライの構造に対する変形はない。これは背理法により証明される。あるwを改善するようなサブトライの再編成が存在すると仮定する。この再編成は、αに対応するプレフィクスをより低いレベルに移動することは含み得ない。そのプレフィクスは既に可能な最低レベルにあるので、これは第1のサブトライ不変表明に違反することになるからである。従って、この再編成は、αに対応するプレフィクスをそのままにして実行されなければならない。あるサブトライから別のサブトライにプレフィクスを移動することは不可能となる。サブトライのルートノードは、ネストすることができない相異なるプレフィクスを表すからである。これは、与えられた現在のプレフィクスに対して、左のサブトライまたは右のサブトライのいずれかを改善することができることを意味するが、これは、サブトライの併合が深さ最適であるという仮定に反する。
【0062】
αが空である場合、アルゴリズムは、さらに深いサブトライの最低レベルから、αの位置をとるように、プレフィクスδを選択する。βを、αの左の深さ最適サブトライのルートとし、γを、αの右の深さ最適サブトライのルートとする。一般性を失うことなく、サブトライβがγより深いと仮定する。δを昇格させることにより、結果として得られる、αをルートとするサブトライでは、wα=1、及び、wβi−1が0より大きいようなすべてのiに対してwα=wβi−1+wγi−1−1である。実際、δの昇格の結果、左サブトライでは、レベル重みwβが、それぞれの0でない重みに対して1だけ低くなる。結果として得られるサブトライが深さ最適であることを証明するため、δの代わりに他のノードεを昇格させることにより、優位な(さらに深さの小さい)サブトライを得ることはできないことを示さなければならない。εはβをルートとするサブトライ内にあると仮定する。εの昇格が優位であるためには、結果として得られる左サブトライが、あるレベルjに対してwβ−1より小さいレベル重みを有していなければならない。しかし、プレフィクスの挿入はレベル重みに高々1しか加えない。従って、εのない左サブトライから出発してεを挿入した場合、レベルjの重みがwβより小さい、新しい(完全な)左サブトライが生成される。これは、左サブトライに対する深さ最適の仮定に反する。こうして、最低レベルにあるプレフィクスを昇格させること以外には、いかなるノードもサブトライを改善することはない。同様の議論が、εが右サブトライからのものであると仮定した場合にも成り立つ。
【0063】
補題2の結果は、このアルゴリズムが、上記の意味で深さ最適なbonsaiトライを生成することである。また、bonsaiトライ内のレベル数が最小になること、及び、ノードの平均深さが最小になることも示すことができる。
【0064】
[IVB.2 探索最適bonsai]
このセクションでは、探索あたりの期待ステップ数が最小のbonsaiトライを計算する動的計画法の実施例について説明する。このアプローチは、デスティネーションIPアドレスの任意の分布を仮定する。構造は、任意の探索で各ノードを訪れる確率が既知であるように拡張された単純トライとして出発する。(例えば、ルートノードはあらゆる探索で訪れなければならないため、その確率は1に設定される。)実際には、この確率分布は時間とともに変化する可能性がある。しかし、分布は、単純トライの各探索で訪れられるノードを記録することによって、任意の所望の時間周期で容易に推定することができる。
【0065】
動的計画法は、問題が最適な部分構造及び重なり合う部分問題の両方を示すために、ここでは有用である(T. H. Cormen, C. E. Leiserson, and R. L. Rivest, ”Introduction to Algorithms”, MIT Press, 1990、を参照)。この好ましい実施例では、単純トライの低いレベルから出発し、適当にプレフィクスを昇格させることによって上方に進む。しかし、任意のサブトライから昇格させなければならないプレフィクスの数は直ちにはわからない。従って、このアプローチは2段階を使用する。
【0066】
第1段階では、単純トライ内の各ノードαに対して、Aαを計算する。i個のプレフィクスがこのサブトライから昇格すると仮定すると、Aα[i]は、このサブトライに対する最適(最小)の期待探索ステップ数を保持することになる。これらの配列はどのくらい大きくする必要があるであろうか。ノードは、その直接の祖先にプレフィクスを昇格させることしかできないため、ノードαは、dα個より多くのノードの昇格を考慮する必要はない。従って、Aα[i]の値は0≦i≦dαの範囲にある。注意すべき点であるが、アレイ要素に対して、実現不可能な昇格の数を表す特殊な値が存在しなければならない。例えば、最初に3個のプレフィクスしか含まないサブトライから4個のプレフィクスを昇格させることは不可能である。これらのアレイの計算中に(これはボトムアッププロセスである)、最適なサブトライを生成するために左及び右の両方のサブトライから昇格させなければならないプレフィクスの数も、保持しなければならない。アレイが計算された後、最適構造を発見して対応するbonsaiを生成するために、第2段階がトップダウンで実行される。ルートノード(これは、いかなるプレフィクスも昇格させる必要がない)から出発して、各ノードは、いくつかのプレフィクスを昇格させる要求をその左及び右の子に対して発行し、その数に基づいて、最適なサブトライを生成する。
【0067】
A配列の計算である第1段階を考える。図8に、基本的な状況を示す。サブトライのルートノードをα、左の子をβ、右の子をγで表す。Aαを計算するためには、Aβ及びAγの情報とともに、それぞれの子が訪れられる確率(ルートノードが既に訪れられたと仮定して)が必要である。それらの確率をpβ及びpγで表す。(なお、左及び右の両方の子が存在する場合、pβ+pγは1に等しくなる。)
【0068】
まず、ノードαが既にプレフィクスを含む場合を考える。Aα[0]に対応するサブトライ構造は直ちにわかる。これは、左または右のいずれのサブトライからもノードが昇格しない場合である。Aα[0]=1+pβAβ[0]+pγAγ[0]となる。Aα[1]の計算では、考慮すべき2つの可能性がある。すなわち、左から1及び右から0の昇格、または、左から0及び右から1の昇格の場合である。最良の選択は、pβAβ[1]+pγAγ[0]またはpβAβ[0]+pγAγ[1]のいずれの値のほうが小さいかに依存する。この手続きは、Aαの必要なすべての値が計算されるまで続けられる。一般に、0≦i≦dαの範囲内で、
【数1】
Figure 0003570323
である。この場合も、最小のAα[i]を生成したj及びkの値も保持しなければならない。
【0069】
αが空の場合、プレフィクスをαに昇格させる必要があるとともに、プレフィクスをαより上に昇格させる必要もある。αから0個のプレフィクスを昇格させることでさえ、2つのサブトライのうちの一方から1個のプレフィクスの昇格を必要とする。最良の選択は、pβAβ[1]+pγAγ[0]またはpβAβ[0]+pγAγ[1]のいずれの値のほうが小さいかに依存する。一般に、0≦i≦dαの範囲内で、
【数2】
Figure 0003570323
である。
【0070】
[IV.C 実験結果及び解析]
実験では、IPMA(Internet Performance Measurement and Analysis)のウェブサイトで入手可能ないくつかのインターネットフォワーディングテーブル(http://nic.merit.edu/ipma/のIPMA(Internet Performance Measurement and Analysis Project)を参照)を使用する。これらのフォワーディングテーブルは、毎日更新されており、IPフォワーディング実験の標準になっている。ここで使用するデータは、1998年8月17日からのものである。IPデータグラムデスティネーションの現実的な分布をシミュレートするために、fix−westからの実際のデータグラムデスティネーションIPアドレスのトレースを使用する。このトレースは、1997年2月22に記録された、2,146,573個のアドレス(5分間分)を含む。このトレースは、NLANR(National Laboratory for Applied Network Research)で入手可能である(http://www.nlanr.net/NA/のNLANR(National Laboratory for Applied Network Research)を参照)。なお、このトレースは、IPMAページで入手可能なフォワーディングテーブルを有するルータから集められたものではない。
【0071】
bonsaiの次の4つのメトリックを考える。
・深さ;
・ノード/プレフィクスの平均レベル;
・デスティネーションIPアドレスの一様分布を仮定した場合の、探索あたりの期待ステップ(すなわち比較)数;
・fix−westトレースによって規定されるデスティネーションIPアドレスの分布を仮定した場合の、探索あたりの期待ステップ数。
【0072】
表2に、5個の地点のルーティングテーブルのいくつかの記述を与える。各サイトごとに、bonsai内のノード数に等しい、テーブル内のプレフィクスの数がリストされている。また、与えられたフォワーディングテーブルに関して、fix−westのヒット率及びミス率もリストされている。上述したように、トレースはこれらのフォワーディングテーブルに関連しておらず、かなりの割合のミスの確率が生じている。
【0073】
表2は、1998年8月17日の、5つの地点におけるルーティングテーブルのメトリックである。1997年2月22日正午ごろのfix−westからのデスティネーションIPアドレスの5分間のヒット率及びミス率を示す。トレースは2,146,573個のIPデータグラムを含む。
【表2】
Figure 0003570323
【0074】
表3は、プレフィクスがランダム順序で挿入された場合の100個のbonsaiの情報を含む。各メトリックごとに、最小値、平均値、及び最大値を示す。すべてのルータでかなり一貫性のある挙動が注目される。paixの数が一般にやや小さいが、これはpaixが保持しているプレフィクスが少ないことによる。bonsaiは一般に、深さは約24であるが、ノードの平均レベルは、大きいテーブルでは約18である。また、探索あたりの平均比較数は、fix−westトレースの場合よりも一様分布の場合のほうがずっと小さい。この理由は、一様分布は、大きい割合のデスティネーションアドレスがbonsaiの非常に疎な領域にあることを仮定しており、そこでは可能な一致がほとんどないためである。この現象についてはこのセクションで後で詳細に説明する。
【0075】
表3は、各地点の100個のbonsaiの統計であり、プレフィクスはランダム順序で挿入された。
【表3】
Figure 0003570323
【0076】
深さ最適bonsaiに対するメトリックを表4にリストする。すべての場合で、深さ最適bonsaiは、100個のランダムなbonsaiのうちの最良のものよりも浅い。また、深さ最適bonsaiは、最小の平均ノードレベルを有する。興味深い点であるが、深さ最適bonsaiは、探索あたりの比較数に関しては平均ランダムbonsaiより悪い。直観的には、これが起こる理由は、トライの深いノードは、深さを加える可能性があるが、トライの情報のノードよりも探索中に訪れられる可能性が低いためである。
【0077】
表4は、各地点の深さ最適bonsaiの統計である。
【表4】
Figure 0003570323
【0078】
表5は、探索最適bonsaiのデータを含む。この最適化では、深さ及び平均ノードレベルはランダムbonsaiの場合より悪いが、探索あたりの比較数に関しては実質的な利益がある。この場合も、これは、深さと探索時間の間のトレードオフを示す。
【0079】
表5は、各地点の探索最適bonsai(トレースの分布に対する)の統計である。
【表5】
Figure 0003570323
【0080】
相異なるbonsaiアプローチの間の直接の比較を容易にするため、深さ(図9)、平均ノードレベル(図10)、及び、fix−westトレースに対する探索あたりの平均比較数(図11)の棒グラフを添付している。注意すべき点であるが、深さ最適bonsaiは、深さ及び平均ノードレベルの両方に関して、他のアプローチに比べて注意程度であるが一貫性のある効果を有する。ランダム挿入と比較して深さの改善は4%〜11%の範囲であるが、平均ノードレベルの改善は1%〜2%の範囲である。また、注意すべき点であるが、探索最適bonsaiは、これらのメトリックに関しては、平均ランダムbonsaiより悪い。
【0081】
しかし、探索あたり平均比較数に関するデータは、探索最適bonsaiの利点を示している。平均ランダムbonsaiと比較しての改善は9%〜13%の範囲である。また、注意すべき点であるが、深さ最適bonsaiは、このメトリックに関しては、mae−westフォワーディングテーブルの場合のランダムbonsaiよりはわずかに性能が良いものの、比較的性能が悪い。
【0082】
一般に、この結果は、プレフィクスのランダム挿入は、考慮されるすべてのメトリックに関して、適当な性能を提供することを示唆している。
【0083】
これらの実験結果の解釈に関していくつかの注意事項がある。第1に、トレースは、検査されたルータからとったものではなく、完全に別の地点からのものである。従って、このトレースが現実的な分布を提供する程度については議論の余地がある。しかし、性能に対する効果を考えるときに、ミスは必ずしも問題とはならない。ミスでさえも完全bonsai探索を必要とするからである。すなわち、ミスは必ずしも性能と無関係ではない。
【0084】
もう1つの問題は、性能に影響を及ぼす可能性のあるIPアドレスの割当てに関するいくつかの特殊事項がある。例えば、
・フォワーディングテーブルは、クラスDのIPアドレス(これは「1110」で始まり、マルチキャストに使用される)や、クラスEのIPアドレス(これは「11110」で始まり、将来の使用のために予約されている)に対するエントリを有しない。
・fix−westトレースはクラスEアドレスを有しないが、25,719個(約1.2%)のデスティネーションアドレスはクラスDである。
・一様分布は、クラスD及びクラスEのアドレスが、それぞれ約6.3%及び3.1%の頻度で可能であることを仮定する。
bonsaiは、クラスDやクラスEのアドレスに対するプレフィクスを含まないため、「1110」及び「11110」のロケーション以下のノードを有することはない。実際、クラスDまたはEのアドレスのみが、「111」で始まることができる。従って、クラスD及びEの探索は平均よりも高速である(bonsaiの高々3レベルが探索されることになる)。同様の効果は、アドレス空間の他の領域にも見られる。いずれのフォワーディングテーブルも、「111」や「010」で始まるプレフィクスを含まず、各テーブルは、「011」で始まるプレフィクスを1個しか含まない。(「011」で始まるエントリはすべての場合に127/255であり、これはループバックテストのために予約されている。)
【0085】
プレフィクス及びIPデスティネーションアドレス分布の重要性に照らして、実際のフォワーディングテーブル及び実際のトレースを調べることは価値がある。図12に、プレフィクスの第1バイトのドット10進表記法(dotted decimal notation)に基づく、mae−eastフォワーディングテーブルのプレフィクスの分布を示す。線形スケール及び対数スケールの両方を示す。このデータは、クラスCプレフィクスが他に比べてずっと一般的であることを示している。クラスAアドレスはほとんどないが、クラスBアドレスはある範囲内でかなり均一に分布している。この場合も、これらの分布は、トライ方式にとって重要な結果を有する。例えば、bonsaiの左側は右側に比べて非常に疎に埋められることになる。また、同様の議論は、トライの下方でも成り立つ。
【0086】
図13に、fix−westトレースのデスティネーションIPアドレスの第1バイトの分布を示す。このデータも、一様分布はトラフィックの良好なモデルではないことを示している。クラスB及びクラスCのトラフィックはクラスAよりもずっと大きい。実際、2つのバイト(10進表記で128及び192)は、すべてのデスティネーションアドレスの3分の1より多くを占める。
【0087】
[IVD.パイプライン実装]
ここまでの議論は暗黙のうちにソフトウェア実装に集中していたが、bonsaiの好ましい実施例は、専用ハードウェア実装にも向いている。スループットは、メモリアクセスあたり1探索程度にまで高くすることができる。挿入及び削除は、パイプラインの2クロックサイクル以下のストールで実行可能である。このセクションでは、bonsaiのパイプライン実装の好ましい実施例について説明する。注意すべき点であるが、パイプライン化方法は、bonsaiには限定されない。多くのLMP探索アプローチも同様にしてパイプライン化することができる。Gupta et al.には1つの例が記載されている(しかしこれらのアプローチの多くの場合、挿入及び削除には問題がある。P. Gupta, S. Lin, and N. McKeown, ”Routing lookups in hardware at memory access speeds”, in Proceedings IEEE INFOCOM’98, pp.1240−1247, 1998、を参照)。
【0088】
図14において、bonsaiの抽象的パイプラインを考える。1個のパイプライン段は、メモリコンポーネント、何らかの単純なロジック(論理回路)、及びラッチのバンクからなる。最も単純な実装では、各段でbonsaiの1レベルを処理し、深さdのbonsaiではd個の段が必要となる。(段数を少なくするには、深さ最適bonsaiを構成することが有効となり得る。)段0への入力で、探索の場合にはデスティネーションIPアドレスが入力され、挿入または削除の場合にはプレフィクスが入力される。パイプラインが探索、挿入、及び削除を区別することを可能にする小さい命令コードも送られる。
【0089】
この説明のために、このパイプラインはbonsaiの各レベルごとに1個の段を有すると仮定する。各段の前のラッチは、以下の情報を格納することになる。
・挿入及び削除の場合に入力として、また、探索の場合に出力として使用されるプレフィクスP。
・探索の場合に入力として使用されるデスティネーションIPアドレスD。
・現在のレベルの適当なノードを指すポインタR。
・パイプラインのこの段が探索、挿入、または削除のいずれを実行しているのかを示す命令I。
・現在の命令の状態に関する情報を含むステートS。例えば、探索中には、前の一致見つかっているかどうかを知る必要があり、削除中には、この時点で削除ではなくプレフィクスを昇格させている可能性もある。
【0090】
パイプラインの各段の基本ハードウェアは以下のものを含む。
・上記のような、関連する入力及び出力の情報を保持するラッチ。
・そのレベルのノードに関する情報を含むメモリ。ノードは固定サイズであり、1個のプレフィクス及び2個のポインタを含む。ノードへの書き込みの際には、ノードのプレフィクスへの書き込みまたは2個の子ポインタのうちの一方への書き込みのみが可能である。
・後続の段の未使用ノードアドレスへのポインタを含むスタック(またはその他の構造体)。例えば、挿入中には、ノードは子のためにメモリを割り当てる必要が生じることがある。同様に、削除中には、ノードは子のためのメモリを解放しなければならないことがある。メモリ管理は、ノードが固定サイズであることにより極めて単純である。
・例えばプレフィクス一致をチェックするためあるいはプレフィクス長を比較するためのコンパレータ。
・マルチプレクサや論理ゲートのような、さまざまな基本構成ブロック。
【0091】
注意すべき点であるが、パイプラインにおける後続の命令は独立であるが、場合によってはパイプラインをストールさせる必要がある。これは、挿入または削除中にのみ起こり得るが、2クロックサイクルより長いストールは決して生じない。
【0092】
パイプライン設計の完全な記述はここでは不適当であるが、設計に必要なものに対する感じをつかむために、いくつかの特定の場合に必要なハードウェアについて調べる。図15に、探索中に可能性のあるオペレーションの詳細な例を示す。この時点で、関連するノードが段iに存在し、もう1つの関連するノードが段i+1に存在すると仮定する。デスティネーションIPアドレスが段iのプレフィクスに一致するかどうかがチェックされる。プレフィクスが一致する場合、かつ、これがいずれの前の一致よりも長い場合、次のノードの適当なポインタとともに次の段に送られる。
【0093】
挿入されるプレフィクスが最初の空ノードに入るときに、挿入の簡単な場合が起こる。これは、パイプラインにおける1ストールで実行可能である。このストールは、新しい葉ノードの親に新しいポインタを書き込むために必要となる。図16にこの場合を示す。まず、メモリが読み出され、適当な子ノードがないことがわかる。新しいノードに対するポインタがポインタスタックに割り当てられる。このポインタは、(第2のクロックサイクル中に)メモリに書き戻され、また、挿入されるべきプレフィクスとともに後続の段に送られる。もう1つの場合は、挿入により別のプレフィクスが追い出されるときに生じる。プレフィクスが段iで追い出される場合、これは段iにおける2回のメモリアクセスを必要とする。すなわち、追い出されるプレフィクスの読み出しと、それに続く、挿入されるプレフィクスの書き込みとである。これは、パイプラインの1回のストールで実行可能である。なお、パイプラインの下流でこの挿入に対してさらに多くのプレフィクスが追い出される場合であっても、これ以上のストールは不要である。
【0094】
削除のほうが困難である。レベルiで削除されるプレフィクスはレベルi−1におけるポインタ更新を必要とし、これは、段間のバイパスハードウェアを必要とすることになるからである。レベルiは、クロックサイクルjの期間中に読み出される。レベルi−1は、クロックサイクルj+1の期間中に書き込まれる(なお、親ノードへのポインタがラッチに保存されていなければならない)。一般に、削除されるプレフィクスの子を昇格させる必要がある。段i+1はクロックサイクルj+1において読み出され、クロックサイクルj+2の期間中に段iに書き戻される。このアクションの開始を図17に示す。段iには一致がないことがわかる。注意すべき点であるが、子が存在するため、プレフィクスを昇格させる必要がある。書き戻しに必要なバイパスハードウェアは明確化のために図示していない。最悪の場合、削除は2クロックサイクルのストールを余儀なくされる。
【0095】
この設計の1つの問題点は、bonsaiレベルあたりのノード数の不均衡であり、これは、パイプライン段によって必要とされるメモリサイズの不均衡に対応する。例えば図1に示すように、あるレベルにはノードがなく他には数千のノードがある。1つの段に必要なメモリが不十分なときにbonsaiの1レベルを数個の連続するパイプライン段に分割するのは比較的容易であるが、依然として、ルート付近のレベルは非常に限定された量のメモリしか必要としない。
【0096】
[IVE.bonsaiを用いたネットワークシステム]
図18に、本発明によるネットワークシステムの好ましい実施例の実装を示す。このネットワークシステムは、複数のホスト18.10〜18.13を有する。各ホストは対応するルータ18.20〜18.23を有する。アドレスのプレフィクスは、bonsaiトライを用いてルータに格納される。bonsaiトライは、上記のように、bonsaiトライ内の各ノードに1個のプレフィクスが格納されいずれのノードも空でないようにアドレスに関するプレフィクスが格納された二分トライの実現である。
【0097】
【発明の効果】
本発明の効果は以下の通りである。
・メモリ使用は効率的かつスケーラブルである。bonsai(後述する)は、各プレフィクスごとに1個のノードしか使用せず、各ノードは2個のノードポインタ及び1個のプレフィクスポインタを有する。ノード及びプレフィクスを配列に格納するのは容易である。従って、ポインタサイズをlog(p)ビット(ただし、pは格納されるプレフィクスの数)に制限することが可能である。
・構造は、効率的で単純な挿入、削除、及び探索オペレーションをサポートする。IPアドレスのビット数をbとした場合、アルゴリズムはO(b)時間を必要とする。
・本発明によるプレフィクス格納方法は、挿入オペレーションの順序に依存する。本発明は、複数の最適性基準を備える。第1の基準は、全体の深さが最小の二分トライを計算する欲張り法である。第2の基準は、探索ごとの期待ステップ数が最小のbonsaiトライを導出する動的計画法アプローチである。この探索最適bonsaiアプローチは、IPデスティネーションアドレスの任意の分布を仮定することが可能である。
・本発明は、パイプライン化ハードウェア実装に特に適している。スループットは、メモリアクセスあたり1回の探索(すなわち、1つの最小プレフィクス一致)程度にまで高めることが可能である。挿入及び削除は、パイプラインにおける2クロックサイクル以下のストールで実行可能である。
【0098】
本発明に対するその他の修正や変形は、上記の記載から当業者には明らかである。すなわち、本明細書では、本発明のいくつかの実施例のみについて具体的に説明したが、明らかなように、本発明の技術思想及び技術的範囲から離れることなく、さまざまな変形を行うことが可能である。
【図面の簡単な説明】
【図1】mae−eastプレフィクスのプレフィクス分布、ノード分布、及び深さ最適分布の図である。
【図2】シーケンス(10011,01100,1111,0100,011110,10100,010,00011)の挿入後の、本発明の好ましい実施例の図である。
【図3】プレフィクス01の挿入後の好ましい実施例の図である。
【図4】プレフィクス01100の削除後の好ましい実施例の図である。
【図5】図2と同じプレフィクスであるが、異なる挿入シーケンス(0100,01,10011,000111,010,10100,1111,011110)の場合の好ましい実施例の図である。
【図6】2つの可能なbonsai構造の図である。
【図7】2つの深さ最適サブトライの併合の図である。
【図8】探索最適サブトライの図である。
【図9】ランダム、深さ最適、及び探索最適サブトライの深さの図である。
【図10】ランダム、深さ最適、及び探索最適bonsaiの平均ノードレベルの図である。
【図11】ランダム、深さ最適、及び探索最適bonsaiの探索あたり平均比較数の図である。
【図12】mae−eastフォワーディングテーブルのプレフィクスの第1バイトの分布の図である。
【図13】fix−westが記録したデスティネーションIPアドレスの第1バイトの分布の図である。
【図14】bonsaiのパイプライン実装の例を示す図である。
【図15】図14のパイプライン実装を用いた段iにおける探索の例を示す図である。
【図16】図14のパイプライン実装を用いた段iにおける挿入の例を示す図である。
【図17】図14のパイプライン実装を用いた段iにおける削除の例を示す図である。
【図18】本発明により効率的な方法でアドレスに関するプレフィクスを格納するルータを有するネットワークシステムの実施例の図である。
【図19】従来のトライ構造の例を示す図である。
【図20】従来のトライ構造、及び、等価な従来のパトリシアトライ構造の例を示す図である。
【符号の説明】
18.10〜18.13 ホスト
18.20〜18.23 ルータ

Claims (10)

  1. アドレスを表す占有ノードとアドレスを表さない空ノードとを含む単純トライを、すべてのノードがアドレスを表す二分トライに変換する方法において、
    a)iは整数として、前記単純トライで占有ノードを有する最低レベルを見出し、該最低レベルをiとするステップと、
    b)i−1に対応するレベルにおける各ノードを検査するステップと、
    c)レベルi−1に空ノードがある場合、該空ノードの深いほうのサブトライのボトムからプレフィクスを上方に移動するステップと、
    d)前記ステップa)〜c)をルートノードに到達するまで繰り返すステップと、
    を有することを特徴とする方法。
  2. アドレスが格納された単純トライ内の各ノードを訪れる確率は既知として、該単純トライを、探索あたりの期待ステップ数が最小である二分トライに変換する方法において、
    動的計画法を使用し、
    a)ボトムアッププロセスを用いて各ノードαに対して、Aα[i]は最小期待探索ステップ数を保持し、
    Aα[i]=f(Aβ,Aγ,Pβ,Pγ)
    であり、β及びγは、αの左及び右の子であり、Pβ及びPγは、αが既に訪れられたと仮定した場合に探索中にβ及びγが訪れられる確率を表すとして、αをルートとするサブトライからi個のノードが昇格すると仮定して配列Aαを計算するステップと、
    b)各Aα[i]に対応する最適サブトライを生成するためにβ及びγから昇格させなければならないプレフィクス数を各Aα[i]に関連づけるステップと、
    c)配列A及び該配列Aに関連づけられたプレフィクス数に基づいて、ルートノードが、プレフィクスを保持していない場合に1個のプレフィクスを要求し、プレフィクスを保持している場合に0個のプレフィクスを要求することにより、ルートから再帰的にトップダウンに、子ノードに対してプレフィクスを昇格させる要求を発行するステップと、
    を有することを特徴とする方法。
  3. 前記二分トライはいずれのノードも空でないようにプレフィクスが格納されることを特徴とする請求項1または2に記載の方法。
  4. 第1のプレフィクスは、ルートノードを割り当て、該ルートノードに該プレフィクスを置くことによって、空トライに挿入されることを特徴とする請求項記載の方法。
  5. kは0より大きい整数であるとして、kビットからなり、b0,b1,...,bk-1の表示を有する、第1のプレフィクス以外のプレフィクスの挿入は、
    a)前記トライのルートノードをカレントノードに指定し、bn=b0と置き、前記プレフィクスをカレントプレフィクスとして指定するステップと、
    b)カレントノードに既にカレントプレフィクスが格納されている場合には挿入を終了するステップと、
    c)bn=0の場合にカレントノードの左の子を検査し、bn=1の場合にカレントノードの右の子を検査するステップと、
    d)新たなノードを割り当て、左の子及び右の子のいずれかが存在しない場合にカレントプレフィクスを入れ、該新たなノードをカレントノードに指定するステップと、
    e)n=n+1の代入を行うステップと、
    f)n=kになるまで前記ステップb〜eを繰り返すステップと、
    g)カレントノードに以前に格納されたプレフィクスをカレントプレフィクスで置き換え、該以前に格納されたプレフィクスをカレントプレフィクスに指定し、前記ステップb〜gを繰り返すステップと、
    を有するプロセスを用いて行われることを特徴とする請求項記載の方法。
  6. kは0より大きい整数であるとして、kビットからなり、b0,b1,...,bk-1の表示を有するアドレスのLMPを求める前記トライの探索は、
    a)ルートノードが一致プレフィクスを有する場合、ルートノードをカレントノード及びLMPノードに指定し、bn=b0と置くステップと、
    b)カレントノードをLMPノードに指定し、カレントノードが一致プレフィクスを有しかつ該一致プレフィクスがLMPノードより長い場合、該LMPノードを下方に移動するステップと、
    c)bn=0の場合にカレントノードの左の子をカレントノードに指定し、bn=1の場合にカレントノードの右の子をカレントノードに指定するステップと、
    d)n=n+1とするステップと、
    e)カレントノードがトライの最低レベルになるまで前記ステップb〜dを繰り返すステップと、
    f)最低のトライに対応するプレフィクスが一致する場合に該プレフィクスをLMPとして選択するステップと、
    を有するプロセスを用いて行われることを特徴とする請求項記載の方法。
  7. アドレスに対応するプレフィクスの前記トライにおける削除は、
    a)前記プレフィクスに対応する一致ノードを探索するステップと、
    b)前記一致ノードが葉ノードである場合に前記一致ノードを削除してプロセスを終了するステップと、
    c)前記一致ノードが葉ノードでない場合、前記一致ノードを削除して前記一致ノードの一方の子を上方に移動し、該一方の子を削除するステップと、
    d)葉ノードが削除されるまで前記ステップb〜cを繰り返すステップと、
    を有するプロセスを用いて行われることを特徴とする請求項記載の方法。
  8. 前記アドレスはインターネットアドレスであり、前記二分トライはIPルータにあることを特徴とする請求項1記載の方法。
  9. コンピュータに、アドレスを表す占有ノードとアドレスを表さない空ノードとを含む単純トライをすべてのノードがアドレスを表す二分トライに変換する方法を実装するためのプログラムを記録したコンピュータ読み取り可能記録媒体において、
    a)iは整数として、前記単純トライで占有ノードを有する最低レベルを見出し、該最低レベルをiとするステップと、
    b)i−1に対応するレベルにおける各ノードを検査するステップと、
    c)レベルi−1に空ノードがある場合、該空ノードの深いほうのサブトライのボトムからプレフィクスを上方に移動するステップと、
    d)前記ステップa)〜c)をルートノードに到達するまで繰り返すステップと、
    を有することを特徴とするプログラムを記録したコンピュータ読み取り可能記録媒体
  10. コンピュータに、アドレスが格納された単純トライ内の各ノードを訪れる確率は既知として、該単純トライを探索あたりの期待ステップ数が最小である二分トライに変換する方法を実装するためのプログラムを記録したコンピュータ読み取り可能記録媒体において、
    動的計画法を使用し、
    a)ボトムアッププロセスを用いて各ノードαに対して、Aα[i]は最小期待探索ステップ数を保持し、
    Aα[i]=f(Aβ,Aγ,Pβ,Pγ)
    であり、β及びγは、αの左及び右の子であり、Pβ及びPγは、αが既に訪れられたと仮定した場合に探索中にβ及びγが訪れられる確率を表すとして、αをルートとするサブトライからi個のノードが昇格すると仮定して配列Aαを計算するステップと、
    b)各Aα[i]に対応する最適サブトライを生成するためにβ及びγから昇格させなければならないプレフィクス数を各Aα[i]に関連づけるステップと、
    c)配列A及び該配列Aに関連づけられたプレフィクス数に基づいて、ルートノードが、プレフィクスを保持していない場合に1個のプレフィクスを要求し、プレフィクスを保持している場合に0個のプレフィクスを要求することにより、ルートから再帰的にトップダウンに、子ノードに対してプレフィクスを昇格させる要求を発行するステップと、
    を有することを特徴とするプログラムを記録したコンピュータ読み取り可能記録媒体
JP2000007545A 1999-05-11 2000-01-17 アドレスに関するプレフィクスの格納方法 Expired - Fee Related JP3570323B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30927099A 1999-05-11 1999-05-11
US09/309270 1999-05-11

Publications (2)

Publication Number Publication Date
JP2000324172A JP2000324172A (ja) 2000-11-24
JP3570323B2 true JP3570323B2 (ja) 2004-09-29

Family

ID=23197472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000007545A Expired - Fee Related JP3570323B2 (ja) 1999-05-11 2000-01-17 アドレスに関するプレフィクスの格納方法

Country Status (3)

Country Link
EP (1) EP1063827B1 (ja)
JP (1) JP3570323B2 (ja)
DE (1) DE60032674T2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757779B1 (en) 1999-09-23 2004-06-29 Netlogic Microsystems, Inc. Content addressable memory with selectable mask write mode
US6542391B2 (en) 2000-06-08 2003-04-01 Netlogic Microsystems, Inc. Content addressable memory with configurable class-based storage partition
JP3589349B2 (ja) * 2001-01-12 2004-11-17 日本電気株式会社 経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体
US6910097B1 (en) 2001-04-09 2005-06-21 Netlogic Microsystems, Inc. Classless interdomain routing using binary content addressable memory
JP3639553B2 (ja) * 2001-10-23 2005-04-20 インターナショナル・ビジネス・マシーンズ・コーポレーション ルーティング処理装置およびルーティング方法
KR100424614B1 (ko) 2002-04-27 2004-03-27 삼성전자주식회사 인터넷 프로토콜 기반 통신 시스템 및 그의 호스트 주소설정 및 소스 주소 선택 방법
KR100918733B1 (ko) * 2003-01-30 2009-09-24 삼성전자주식회사 포워딩정보를 동적으로 관리하는 분산구조라우터 및 그방법
US7633886B2 (en) * 2003-12-31 2009-12-15 University Of Florida Research Foundation, Inc. System and methods for packet filtering
KR100887104B1 (ko) * 2007-06-12 2009-03-04 건국대학교 산학협력단 Ip 패킷의 라우팅을 위한 세그먼트 트리 구성 장치 및방법
CN101577662B (zh) 2008-05-05 2012-04-04 华为技术有限公司 一种基于树形数据结构的最长前缀匹配方法和装置
JP5278534B2 (ja) 2009-03-19 2013-09-04 富士通株式会社 記憶媒体
JP5387092B2 (ja) * 2009-03-27 2014-01-15 富士通株式会社 記憶媒体およびトライ木生成方法
JP5493431B2 (ja) * 2009-03-31 2014-05-14 富士通株式会社 記憶媒体、トライ木生成方法およびトライ木生成装置
JP5667158B2 (ja) * 2012-12-25 2015-02-12 日本電信電話株式会社 部分木集約による木構造の再構成装置及び方法及びプログラム
JP5670993B2 (ja) * 2012-12-25 2015-02-18 日本電信電話株式会社 単一パス集約による木構造の再構成装置及び方法及びプログラム
CN103560962A (zh) * 2013-11-04 2014-02-05 神州数码网络(北京)有限公司 以太网交换机主机路由表项自动更新方法及交换机
JP6006740B2 (ja) * 2014-02-27 2016-10-12 ウイングアーク1st株式会社 インデックス管理装置
CN106416152B (zh) * 2014-06-10 2019-09-27 华为技术有限公司 一种查找装置、查找配置方法和查找方法
WO2019074744A1 (en) * 2017-10-09 2019-04-18 Fovia Inc. METHOD AND SYSTEM FOR PREDICTING BITS USING A STATISTICAL MODEL
EP4175233B1 (en) 2021-06-25 2024-05-08 New H3C Technologies Co., Ltd. Packet matching method and apparatus, network device, and medium

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202986A (en) * 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
EP0804769B1 (en) * 1994-06-30 2000-02-02 International Business Machines Corporation Variable length data sequence matching method and apparatus
JP3152868B2 (ja) * 1994-11-16 2001-04-03 富士通株式会社 検索装置および辞書/テキスト検索方法
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
CA2303118A1 (en) * 1997-09-15 1999-03-25 Effnet Group Ab Method and system for fast routing lookups

Also Published As

Publication number Publication date
EP1063827A3 (en) 2005-11-02
EP1063827B1 (en) 2007-01-03
JP2000324172A (ja) 2000-11-24
DE60032674D1 (de) 2007-02-15
EP1063827A2 (en) 2000-12-27
DE60032674T2 (de) 2007-05-16

Similar Documents

Publication Publication Date Title
JP3570323B2 (ja) アドレスに関するプレフィクスの格納方法
US7089240B2 (en) Longest prefix match lookup using hash function
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
US6553370B1 (en) Flexible search engine having sorted binary search tree for perfect match
US7782853B2 (en) Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US6564211B1 (en) Fast flexible search engine for longest prefix match
US8295286B2 (en) Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware
KR100745693B1 (ko) Tcam 테이블 관리 방법
Waldvogel et al. Scalable high-speed prefix matching
KR100612256B1 (ko) 터너리 내용 주소화 메모리 관리 장치 및 그 방법
Warkhede et al. Multiway range trees: scalable IP lookup with fast updates
US20080192754A1 (en) Routing system and method for managing rule entries of ternary content addressable memory in the same
JP4995125B2 (ja) 固定長データの検索方法
US6839703B2 (en) Information apparatus, table retrieval apparatus, table retrieval method, and recording medium
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
CN108134739B (zh) 一种基于索引特里树的路由查找方法及装置
CN102484610A (zh) 路由表建立方法和装置及路由表查找方法和装置
Hasan et al. Dynamic pipelining: Making IP-lookup truly scalable
US6925503B2 (en) Method and system for performing a longest prefix match search
KR100999408B1 (ko) 해시트리를 이용한 url 검색방법
CN110995876B (zh) 一种ip存储与查找的方法及装置
Sun et al. An on-chip IP address lookup algorithm
KR20050066903A (ko) 고속 라우팅 시스템에서의 패킷 포워딩 처리장치 및 그를이용한 라우팅 룩업 방법
JP2008065716A (ja) データ管理装置、データ管理方法及びデータ管理プログラム
Pao et al. Enabling incremental updates to LC-trie for efficient management of IP forwarding tables

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040510

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: 20040601

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040614

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: 20070702

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080702

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090702

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100702

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110702

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110702

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120702

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120702

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130702

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees