DE60032674T2 - Verfahren zum Suchen von Adressen - Google Patents

Verfahren zum Suchen von Adressen Download PDF

Info

Publication number
DE60032674T2
DE60032674T2 DE60032674T DE60032674T DE60032674T2 DE 60032674 T2 DE60032674 T2 DE 60032674T2 DE 60032674 T DE60032674 T DE 60032674T DE 60032674 T DE60032674 T DE 60032674T DE 60032674 T2 DE60032674 T2 DE 60032674T2
Authority
DE
Germany
Prior art keywords
node
prefix
trie
bonsai
prefixes
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 - Lifetime
Application number
DE60032674T
Other languages
English (en)
Other versions
DE60032674D1 (de
Inventor
Mark Princeton Goudreau
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
Application granted granted Critical
Publication of DE60032674D1 publication Critical patent/DE60032674D1/de
Publication of DE60032674T2 publication Critical patent/DE60032674T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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

  • IA. Bereich der Erfindung
  • Die vorliegende Erfindung betrifft das effiziente Speichern von mit Adressen in Beziehung stehenden Präfixen. Die vorliegende Erfindung betrifft insbesondere das Speichern von mit Adressen in Beziehung stehenden Präfixen in einer binären Trie-Struktur, wobei in jedem Knoten des binären Trie ein Präfix gespeichert und kein Knoten leer ist. Die vorliegende Erfindung wird implementiert durch ein Verfahren zum Speichern von mit Adressen in Beziehung stehenden Präfixen in einer binären Trie-Struktur; ein Verfahren zum Speichern von mit Netzwerkadressen in Beziehung stehenden Präfixen in einer binären Trie-Struktur, wobei in jedem Knoten des binären Trie ein Präfix gespeichert und kein Knoten leer ist; ein Netzwerksystem, in dem Netzwerkadressen in einer binären Trie-Struktur gespeichert sind, wobei in jedem der Knoten ein Präfix gespeichert und kein Knoten leer ist; und ein Computerprogramm, das es einem Computer ermöglicht, Adressen in einer binären Trie-Struktur zu speichern, wobei in jedem der Knoten ein Präfix gespeichert und kein Knoten leer ist.
  • IB. Hintergrund der Erfindung
  • Das effiziente Speichern von Adressen und von mit den Adressen in Beziehung stehenden Präfixen ist für jedes System wichtig, das mehrere Adressen verwendet. In diesem Hintergrundabschnitt werden Forwarding- oder Weiterleitungstabellen beschrieben, die Routern zugeordnet sind, die in vie len Internetanwendungen verwendet werden. Die diskutierten Techniken und Prinzipien sind jedoch für ein beliebiges System anwendbar, in dem eine Tabelle zum Speichern von mit mehreren Adressen in Beziehung stehenden Präfixen erforderlich ist. In Netzwerksystemen muss eine große Anzahl von Netzwerkadressen effizient gespeichert werden.
  • IP-Adressen haben typischerweise 32 Bits. Ein IP-Datagramm enthält sowohl eine Quellen- als auch eine Ziel-IP-Adresse. An einem Router muss ein ankommendes IP-Datagramm zur nächsten Zwischenstation bzw. zum Next Hop weitergeleitet werden, die/der typischerweise eine benachbarte Maschine ist. Der Router bestimmt den Next Hop unter Bezug auf seine Routingtabelle. Diese Verarbeitung wird als IP-Weiterleitung (Forwarding) oder Tabellen-Lookup bezeichnet. Eine Weiterleitung unterscheidet sich von der Berechnung der Routen, was als Routing bezeichnet werden kann und durch einen Routingalgorithmus gehandhabt wird. IP-Weiterleitung ist für ein typisches Datagramm manchmal die zeitaufwendigste Aufgabe.
  • Die Weiterleitung von Datagrammen in neueren IP-Versionen basiert auf der Speicherung eines Satzes von IP-Adressen-Präfixen, wobei jede Adresse einem Next Hop innerhalb des Netzwerksystems unter Verwendung eines IP zugewiesen ist. Wenn ein IP-Datagramm an einem Router innerhalb des Netzwerksystems ankommt, wird die Zieladresse mit den Adressen abgeglichen, die in der dem Router zugeordneten Weiterleitungstabelle gespeichert sind. Das längste Präfix, das mit der Ziel-IP-Adresse übereinstimmt, wird bestimmt, und die mit diesem Präfix in Beziehung stehende Next-Hop-Information wird zum Weiterleiten des Datagramms verwendet. Dieses Problem wird als Longest Matching Prefix (LMP) Problem bezeichnet. Es ist leicht ersichtlich, dass die effiziente Speicherung von mit Adressen in Beziehung stehenden Präfixen ein wichtiger Faktor zum Lösen des LMP-Problems ist.
  • Eine herkömmliche Technik zum Speichern von Präfixen in einer Weiterleitungstabelle, die einem Router in einem Netzwerksystem zugeordnet ist, unter Verwendung einer IP ist als "Classless Inter-Domain-Routing" (CIDR) bekannt. Vergl. V. Fuller, T. Li, J. Yu und K. Varadhan, "Classless inter-domain routing (CIDR): An adress assignment and aggregation strategy", RFC-1519, September 1993. Durch diese Technik soll die Größe von Tabellen reduziert werden, in denen Adressen im Internet gespeichert sind. Die IP-Weiterleitungstechniken basierten vor dem CDIR-Verfahren auf einer Fixierung der Adressenformate, so dass die Zielnetzwerknummer leicht extrahiert werden konnte. Datagramme wurden in Zuordnung zu jedem Zielnetzwerk zum Next Hop weitergeleitet. Für jeden Router ist eine Weiterleitungstabelleneintragung pro Netzwerk erforderlich. Derartige Speicheranforderungen wurden problematisch, als die Anzahl von Netzwerken auf dem Internet zunahm. Durch CIDR-Routing wird die Größe dieser Weiterleitungstabellen durch Gruppieren von IP-Adressen mit der gleichen Next-Hop-Information unter einem einzelnen Präfix vermindert, insofern eine solche Gruppierung möglich ist.
  • Tabelle 1: Beispiel einer Weiterleitungstabelle, die einen Satz von 6 Präfixen enthält.
    Figure 00040001
  • Als ein Beispiel des vorstehend erwähnten Weiterleitungsprozesses wird Tabelle 1 betrachtet, die einen Satz von Präfixen enthält, die einem Next Hop zugeordnet sind. (Die Next-Hop-Information wird typischerweise aus der IP-Adresse des nächsten Routers der abgehenden physikalischen Schnittstelle bestehen.) Wenn beispielsweise ein IP-Datagramm die Zieladresse "4.123.33.12" hat, haben die am weitesten links angeordneten acht Bits die Werte "00000100". Für diese Adresse hat das LMP-Präfix gemäß Tabelle den Wert "0000", wodurch ein Next Hop H0 angezeigt wird. Ein anderes Beispiel ist die Zieladresse "109.12.12.12", wobei die am weitesten links angeordneten Bits die Werte "01101101" haben. Diese Adresse stimmt sowohl mit "01101" als auch mit "011011" überein, weil die letztgenannte Bitfolge jedoch das längere Präfix ist, ist der Next Hop H3.
  • Zahlreiche frühere Untersuchungen bezüglich Informationsspeicherung und -abruf sind auch auf das LMP-Problem anwendbar, normalerweise mit lediglich geringen Modifikationen. Insbesondere sind in diesem Zusammenhang insbesondere Suchtechniken populär geworden, die anstatt auf einem direkten Vergleich von Kennzahlen auf einer Binärdarstellung von Kennzahlen basieren. Eine Übersicht über verschiedenartige "digitale Suchtechniken" ist von D. E. Knuth, "The Art of Computer Programming" Band 3, Sorting and Searching, Addison Wesley, 2. Ausgabe, 1998 dargestellt.
  • Eine Trie-Struktur ist eine Art Baumstruktur, wobei eine Verzweigung auf jeder Ebene oder Stufe nur durch einen Teil eines in den Knoten des Trie gespeicherten Wertes bestimmt ist. Fredkins Trie-Struktur ist zwar elegant, weist jedoch eine unzureichende Speicherausnutzung auf, die möglicherweise weitaus mehr Knoten als gespeicherte Präfixe erfordert. Vergl. E. Fredkin, "Trie memory", Communications of the ACN, Bd. 3, Seiten 490–500, 1960. Morisons Patricia-Trie eliminiert dieses Problem, indem jeder Trie-Knoten entfernt wird, der keiner Tabelleneintragung zugeordnet ist und nur ein Kind hat. Vergl: D. Morrison, "Patricia-practical algorithm to retrieve information coded in alphanumeric", Journal of the ACM, Bd. 15, Nr. 4, Seiten 515–534, Oktober 1968. Diese beiden von Fredkin und Morrison vorgeschlagenen Strukturen haben die jüngsten Arbeiten auf dem Gebiet der IP-Weiterleitung am meisten beeinflusst. 19 zeigt ein Beispiel einer herkömmlichen Trie-Struktur. 20 zeigt ein Beispiel einer herkömmlichen Trie und einer äquivalenten herkömmlichen Patricia-Trie-Struktur. In den 1920 speichern geschwärzte Knoten ein Präfix und nicht geschwärzte Knoten speichern kein Präfix.
  • Jüngste Vorschläge zum Handhaben von IP-Weiterleitung sind im Hinblick auf verschiedene Ziele optimiert worden. Viele dieser Techniken legen eher besonderes Gewicht auf die Lookup- oder Suchgeschwindigkeit als auf die Aktualisierung der Tabellen (d.h. auf Einfüge- und Löschoperationen). Vergl. M. Degermark, A. Brodnik, S. Carlsson und S. Pink, "Small forwarding tables für fast routing Lookups", Proceedings ACM SIGCOMM'97, Seiten 3–14, 1997; B. Lampson, V. Srinivasan und G. Varghese, "IP lookups using multiway and multicolumns search", Proceedings IEEE INFOCOM'98, Seiten 1248– 1256, 1998; S. Nilsson und G. Karlsson, "Fast address lookup for internet routers", Proceedings of IEEE Broadband Communications 98, April 1998; H. H.-Y. Tzeng, "Longest prefix search using compressed trees", GLOBE-COM'98, Global Internet Mini Conference, Seiten 88–93, November 1998; und M. Waldvogel, G. Varghese, J. Turner und B. Plattner, "Scalable high speed IP routing lookups", Proceedings ACM SIGCOMM'97. Seiten 25–36, 1997.
  • Ein besonderes Gewicht wird auf die Suche (Lookup) gelegt, weil, obwohl Routing-Aktualisierungen ziemlich häufig auftreten, Routing-Protokolle mehrere Minuten benötigen können, um eine Aktualisierung aufzunehmen; Weiterleitungstabellen auf irgendeinem bestimmten Router müssen in herkömmlichen Systemen nicht häufiger als höchstens einmal pro Sekunde geändert werden. Daher kommt die Verwendung einer dynamischen Routingtabellenstruktur anderswo auf dem Router in Betracht, der die Weiterleitungstabellen periodisch aktualisiert.
  • Weil gegenwärtig besonderes Gewicht auf die Suchgeschwindigkeit gelegt wird, wird ein unausgeglichenes Design erhalten, d.h. ein Design, das nicht Schritt halten kann mit den aktuellen und zukünftigen Anforderungen des Internet. Labovitz et al. zeigen auf, dass Internet-Kernrouter im Jahr 1996 typischerweise zwischen drei und sechs Millionen Updates pro Tag ausgetauscht haben. Vergl. C. Labovitz, G. R. Malan und F. Jahanian, "Internet routing instability", IEEE/ACM Transactions on Networking, Bd. 6, Nr. 5, Seiten 515–528, Oktober 1998. Wenn das Internet wächst und die Unterstützung für Mobilität erweitert wird, kann ein noch größerer Bedarf für Weiterleitungstabellen erwartet werden, die effizient aktualisierbar sind.
  • In der jüngsten Zeit gab es zahlreiche Arbeiten bezüglich des IP-Weiterleitungsproblems. In der vorliegenden Dis kussion wird der Schwerpunkt auf Softwaretechniken gelegt. Viele Softwaretechniken können auch effizient in Hardware implementiert werden. Es wird auch eine derartige Hardware-Implementierung der vorliegenden Erfindung dargestellt. Ein Vergleich mehrerer derartiger Techniken kann in einer Arbeit von Filippi et al. gefunden werden. Vergl. E. Filippi, V. Innocenti und V. Vercellone, "Address lookup solutions for gigabit switch/router", GLOBECOM'98, Global Internet Mini Conference, Seiten 82–87, November 1998.
  • Degermark et al. beschreiben eine für eine Ausführung auf einem Off-the-Shelf-Prozessor optimierte Technik. Für einen effizienten Betrieb halten Degermark et al. die Tabellendaten klein (so dass die gesamte Weiterleitungstabelle in einen Cache-Speicher passt), während gleichzeitig versucht wird, die Anzahl von zum Durchsuchen der Tabelle erforderlichen Speicherzugriffen zu minimieren. Vergl. M. Degermark, A. Brodnik, S. Carlsson und S. Pink, "Small forwarding tables for fast routing lookups", Proceedings ACM SIGCOMM'97, Seiten 3–14, 1997. Durch dieses Speicherverfahren wird die Anzahl der Speicherzugriffe (zu Lasten einer größerern Speichernutzung) vermindert, indem der Präfixbaum (der tatsächlich ein Trie ist) nur auf drei getrennten Ebenen durchsucht wird, anstatt dass für jede der 32 Trie-Ebenen ein Speicherzugriff ausgeführt wird. In der Präfixbaumstruktur sind bei der Durchsuchung einer Ebene nur bestimmte Bitmuster möglich; Degermark et al. sind daher in der Lage, eine Datenkompressionstechnik zu verwenden. Obwohl die Gewinne in ihrem Beispiel etwas eingeschränkt sind (sie können effektiv 16 Bits eines Bitvektors mit nur 10 Bits speichern, wobei dies nur für eine Komponente der Gesamtdatenstruktur zutrifft), ist ihre Kompressionstechnik bemerkenswert. Dieses Verfahren zum Speichern von Adressen ist nicht dafür geeignet, effiziente Aktualisierungen zu unterstützen.
  • Waldvogel et al. (vergl. M. Waldvogel, G. Varghese, J. Turner und B. Plattner, "Scalable high speed IP routing lookups", Proceedings ACM SIGCOMM'97, Seiten 25–36, 1997, beschreiben eine andere Technik zum Durchsuchen einer Trie-Struktur. Anstatt an der Wurzel oder Basis des Trie zu beginnen und eine abwärts gerichtete Verarbeitung auszuführen, beginnt ihre Technik auf einer mittleren Ebene, wobei die Verarbeitung in Abhängigkeit von der Information, die dort vorgefunden wird, nach oben oder unten fortschreitet. Eine Ebene wird durch Hashing rasch durchsucht. Es werden lediglich Knoten gespeichert, die im Trie vorhanden wären. Wenn eine Ebene durchsucht und keine Übereinstimmung gefunden wird, ist klar, dass nur ein kleinerer Präfix möglich ist. Andererseits könnte ein Treffer in der Hash-Tabelle entweder bedeuten, dass der längste übereinstimmende Präfix gefunden worden ist, oder dass noch tiefer nach einem längeren Präfix gesucht werden sollte. Die Schlüsselidee ist jedoch, dass nicht jede Ebene des Trie durchsucht werden muss. Diese Technik ist skalierbar und erfordert lediglich lg b Ebenensuchoperationen für b-Bit-Präfixe. Die Auswahl geeigneter Hash-Funktionen, die schnell berechnet werden können und die Knoten gleichmäßig verteilen können, wird hierin nicht diskutiert, ist jedoch ein wichtiger Punkt. Außerdem nutzt die Technik intensiv eine Vorausberechnung und unterstützt keine effizienten Aktualisierungen. Diese Technik wird für einen spezifischen Router verwendet, der von Partridge et al. konstruiert wurde. Vergl. 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 und S. Winterble, "A 50-Gb/s IP router", IEEE/ACM Transactions on Networking, Bd. 6, Nr. 3, Seiten 237–248, Juni 1998.
  • Nilsson und Karlsson verwenden eine Modifikation eines Patricia-Trie, wobei i vollständige Ebenen eines binären Trie durch einen einzelnen Knoten des Grads 21 ersetzt werden. Vergl. S. Nilsson und G. Karlsson, "Fast address lookup for Internet routers", Proceedings of IEEE Broadband Communications 98, April 1998. Dieses Verfahren führt zu einer sehr dichten Tabelle, ist jedoch ebenfalls nicht dazu geeignet, effiziente Aktualisierungen zu unterstützen. Ein anderes Verfahren, gemäß dem der Trie komprimiert wird, wodurch die mittlere Anzahl von Speicherzugriffen pro Suchvorgang vermindert wird, wird von Tzeng beschrieben. Vergl. H. H.-Y. Tzeng, "Longest prefix search using compressed trees", GLOBE-COM'98, Global Internet Mini Conference, Seiten 88–93, November 1998.
  • Lampson et al. schlagen eine ganz andere Lösung für das LMP-Problem vor, indem es als Änderung einer Binärsuche betrachtet wird. Vergl. B. Lampson, V. Srinivasan und G. Varghese, "IP lookups using multiway und multicolumn search", Proceedings IEEE INFOCOM'98, Seiten 1248–1256, 1998. Weil ein Präfix einen Bereich von IP-Adressen darstellt, kann der Präfix durch zwei IP-Adressen dargestellt werden, d.h. durch die kleinste und die größte in dem Bereich. Durch Sortieren der (höchstens) 2p Grenzadressen für p Präfixe werden im tatsächlich Buckets von Adressen definiert, wobei jede Adresse im Bucket den gleichen Next Hop aufweist. Dieses Verfahren ist ziemlich speichereffizient, Einfüge- und Löschoperationen sind jedoch relativ ineffiziente Operationen.
  • Srinivasan und Varghese nutzen die bekannte Technik der Präfixerweiterung aus, wodurch die Anzahl von Speicherzugriffen bei einer typischen Suche zu Lasten potenziell zunehmender Speicheranforderungen vermindert und Aktualisierungen der Weiterleitungstabelle schwieriger gemacht werden. Vergl. V. Srinivasan und G. Varghese, "Faster IP lookups using controlled prefix expansion", ACM SIGMETRICS'98, Seiten 1–10, Juni 1998. Der Hauptbeitrag dieses Dokuments ist die Beschreibung eines auf einer dynamischen Programmierung basierenden formalen Verfahrens zum Bereitstellen einer Suchoperation, durch das die Speichernutzung minimiert wird. Ein ähnliches, auf einer Präfixerweiterung basierendes Verfahren wird von Gupta et al. beschrieben. Vergl. P. Gupta, S. Lin und N. McKeown, "Routing lookups in hardware at memory access speeds", Proceedings IEEE INFOCOM'98, Seiten 1240–1247, 1998. Ihr Verfahren konzentriert sich jedoch eher auf eine Hardware-Implementierung als auf eine Optimierung.
  • In M. Shishibori et al., "Design of a Compact Data Structure for Patricia Trie", IEICE, Bd. E81, Nr. 4, April 1998, wird ein Patricia-Trie beschrieben, der eine Baumstruktur aufweist, in der alle Knoten, die nur einen Bogen aufweisen, eliminiert sind, wobei dieser Knoten als Single Arc Node (Einbogenknoten) bezeichnet wird.
  • Die vorstehend beschriebenen herkömmlichen Techniken oder Verfahren sind primär derart konstruiert, dass die Such(Lookup)geschwindigkeit optimiert wird. Im Gegensatz zu diesen Techniken wird in einer Arbeit von Doeringer et al. über DP-Tries versucht, sowohl die Weiterleitungstabellenaktualisierungsgeschwindigkeit als auch die Such(Lookup)geschwindigkeit zu optimieren. Vergl. W. Doeringer, Günter Karjoth und M. Nassehi, "Routing on longest-matching prefixes", IEEE/ACM Transactions on Networking, Bd. 4, Nr. 1, Seiten 86–97, Februar 1996. Ihre Technik ist eine Modifikation des Patricia-Trie, wobei effiziente Einfüge- und Löschalgorithmen definiert sind, sowie der Suchoperation. Es können noch dynamischere Strukturen, wie beispielsweise DP-Tries, verwendet werden, um eine Technik zu ergänzen, in der der Schwerpunkt auf die Such(Lookup)geschwindigkeit gelegt wird, indem eine aktualisierte Routingtabelle aufrechterhalten wird, auf die Weiterleitungstabellen periodisch zugreifen.
  • Um den immer weiter zunehmenden Anforderungen von Anwendungen, insbesondere Netzwerkanwendungen, Rechnung zu tragen, sind eine Struktur und ein Verfahren zum Speichern von mit Adressen in Beziehung stehenden Präfixen erforderlich, die mindestens die folgenden Kriterien erfüllen:
    • • eine effiziente und skalierbare Speichernutzung.
    • • die Struktur sollte effiziente und einfache Einfüge-, Lösch- und Suchoperationen unterstützen.
    • • die Struktur sollte eine pipelined Hardware-Implementierung unterstützen.
  • II. Kurze Beschreibung der Erfindung
  • Es ist eine Aufgabe der vorliegenden Erfindung, diese Probleme des Stands der Technik zu lösen und ein Verfahren zum Speichern von mit Adressen in Beziehung stehenden Präfixen bereitzustellen.
  • Es ist eine andere Aufgabe der vorliegenden Erfindung, ein Verfahren zum Speichern von mit Netzwerkadressen in einem Netzwerksystem in Beziehung stehenden Präfixen bereitzustellen.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein Netzwerksystem bereitzustellen, das mit Adressen in Beziehung stehende Präfixe auf eine effiziente Weise speichert.
  • Es ist eine noch andere Aufgabe der vorliegenden Erfindung, ein Computerprogramm bereitzustellen, das es einem Computer, der Routern in einem Netzwerksystem zugeordnet ist, ermöglicht, mit Adressen in Beziehung stehende Präfixe auf eine effiziente Weise zu speichern.
  • Diese Aufgaben der vorliegenden Erfindung werden durch die Merkmale der Patentansprüche gelöst.
  • Ein exemplarisches Verfahren zum Speichern eines mit einem Satz von Adressen in Beziehung stehenden Satzes von Präfixen weist das Speichern der Präfixe in einer binären Trie-Struktur auf, wobei jedem Knoten in der binären Trie-Struktur mindestens einer der Präfixe zugeordnet und kein Knoten in der binären Trie-Struktur leer ist.
  • Vorzugsweise wird ein erster Präfix in einen leeren Trie eingefügt durch Bestimmen eines Wurzelknotens und Platzieren des Präfix im Wurzelknoten.
  • Vorzugsweise wird ein von einem ersten Präfix verschiedener Präfix mit k Bits mit einer Darstellung b0, b1, ..., bk-1, wobei k eine ganze Zahl ist, die größer ist als 0, unter Verwendung eines Prozesses eingefügt, der die Schritte aufweist: Spezifizieren eines Wurzelknotens des Trie als aktueller Knoten und bn = b0 und des Präfix als aktueller Präfix; Beenden der Einfügeoperation, wenn der aktuelle Präfix bereits im aktuellen Knoten gespeichert ist; Untersuchen des linken Kindes des aktuellen Knotens, wenn bn = 0 ist, und Untersuchen des rechten Kindes des aktuellen Knotens, wenn bn = 1 ist; Zuweisen eines neuen Knotens und Platzieren des aktuellen Präfix, wenn das linke oder das rechte Kind nicht existiert, und Spezifizieren des neuen Knotens als aktueller Knoten; Zuweisen von n = n + 1; Wiederholen der Schritte, bis n = k ist; Ersetzen eines zuvor gespeicherten Präfix im aktuellen Knoten durch den aktuellen Präfix, und Spezifizieren des zuvor gespeicherten Präfix als der aktuelle Präfix und Wiederholen der Schritte.
  • Vorzugsweise wird ein Trie nach einem LMP einer Adresse, die k Bits mit einer Darstellung b0, b1, ..., bk-1 aufweist, wobei k eine ganze Zahl ist, die größer ist als 0, unter Verwendung eines Prozesses durchsucht, der die Schritte auf weist: Spezifizieren eines Wurzelknotens als aktueller Knoten sowie eines LMP-Knotens, wenn der Wurzelknoten einen übereinstimmenden Präfix aufweist und bn = b0 ist; Spezifizieren eines aktuellen Knotens als LMP-Knoten und Verschieben des LMP-Knotens nach unten, wenn der aktuelle Knoten einen übereinstimmenden Präfix aufweist und der übereinstimmende Präfix länger ist als der LMP-Präfix des LMP-Knoten; Spezifizieren des linken Kindes des aktuellen Knotens als aktueller Knoten, wenn bn = 0 ist, und Spezifizieren des rechten Kindes des aktuellen Knotens als aktueller Knoten, wenn bn = 1 ist; n = n + 1; Wiederholen der Schritte, bis der aktuelle Knoten sich auf der untersten Ebene des Trie befindet; und Auswählen eins der untersten Ebene des Trie entsprechenden Präfix als LMP, wenn der Präfix übereinstimmt.
  • Vorzugsweise wird ein einer Adresse entsprechender Präfix im Trie unter Verwendung eines Prozesses gelöscht, der die Schritte aufweist: Suchen eines dem Präfix entsprechenden übereinstimmenden Knotens; Löschen des übereinstimmenden Knotens, wenn der übereinstimmende Knoten ein Blattknoten ist, und Beenden des Prozesses; Löschen des übereinstimmenden Knotens und Verschieben eines der Kinder des übereinstimmenden Knotens nach oben, wenn der übereinstimmende Knoten kein Blattknoten ist, und Löschen des einen Kindes des übereinstimmenden Knotens; und Wiederholen der Schritte, bis ein Blattknoten gelöscht wird.
  • Vorzugsweise wird ein Trie ausbalanciert, um eine Tiefe für einen Worst-Case-Suchvorgang zu minimieren.
  • Durch die vorliegende Erfindung wird ein Verfahren zum Umwandeln eines Trie mit gespeicherten Adressen in einen tiefenoptimierten Subtrie bereitgestellt, in dem alle Knoten Adressen darstellen, wobei das Verfahren die Schritte aufweist: Finden einer untersten Ebene des Trie, die einen vollen Knoten aufweist, und Spezifizieren der untersten Ebene durch i, wobei i eine ganze Zahl ist; Untersuchen jedes Knotens auf einer Ebene i – 1; Verschieben eines Präfix, wenn ein leerer Knoten auf der Ebene i – 1 vorhanden ist, bezüglich des Bodens des tieferen Subtrie des leeren Knotens nach oben; und Fortsetzen des Vereinigungsprozesses, bis der Wurzelknoten erreicht ist.
  • Ein weiteres Beispiel betrifft ein Verfahren zum Umwandeln eines einfachen Trie mit gespeicherten Adressen und bekannten Wahrscheinlichkeiten des Besuchs jedes Knotens im einfachen Trie in einen suchoptimierten Trie mit einer minimalen Anzahl erwarteter Schritte pro Suchvorgang, wobei das Verfahren eine dynamische Programmierung verwendet und die Schritte aufweist: Berechnen eines Arrays Aα für jeden Knoten α unter Verwendung eines Bottom-Up-Prozesses derart, dass Aα[i] eine minimal erwartete Anzahl von Suchschritten enthält, wobei vorausgesetzt wird, dass i Knoten aus einem Subtrie mit dem Knoten α als Wurzel heraus versetzt werden, wobei
    Aα[i] = f(Aβ, Aγ, Pβ, Pγ) ist,
    und wobei β und γ das linke und das rechte Kind des Knotens α darstellen.
  • Pβ und Pγ stellen die Wahrscheinlichkeit dar, dass β und γ während eines Suchvorgangs besucht werden; jedem Array Aα[i] wird eine Anzahl von Präfixen zugeordnet, die von β und γ verschoben werden müssen, um optimale Subtries zu erzeugen, die jedem Array Aα[i] zugeordnet sind; der Prozess wird von oben nach unten (Top-Down) von der Wurzel ausgehend rekursiv ausgeführt, um Anforderungen an Kindknoten auszugeben, Präfixe nach oben zu verschieben, wobei der Wurzelknoten ein "1"-Präfix anfordert, wenn der Wurzelknoten kein Präfix hält, und wobei der Wurzelknoten ein "0"-Präfix an fordert, wenn der Wurzelknoten ein Präfix hält, wobei die Anforderungen auf dem Array A und der zugeordneten Anzahl basieren.
  • Erfindungsgemäß stehen die gespeicherten Präfixe vorzugsweise mit Internetadressen in Beziehung, und der Trie ist in einem IP-Router angeordnet.
  • Ein noch anderes Beispiel ist ein Netzwerksystem mit mehreren Routern, wobei jeder Router einen Adressenspeicher aufweist, wobei in jedem Adressenspeicher ein Satz von Präfixen, die mit Netzwerkadressen in Beziehung stehen, die dem Netzwerksystem entsprechen, in der Form eines binären Trie gespeichert ist, wobei der binäre Trie mehrere Knoten aufweist, wobei jedem Knoten ein Präfix mindestens einer der Netzwerkadressen zugeordnet und kein Knoten des binären Trie leer ist.
  • Vorzugsweise wird der binäre Trie für eine Minimierung einer Tiefe in einem Worst-Case-Suchvorgang ausbalanciert.
  • Ein weiteres Beispiel ist ein Computerprogrammprodukt mit einem computerlesbaren Medium, wobei einem oder mehreren Computern, die einem Netzwerksystem zugeordnet sind, durch das Programm ermöglicht wird, einen in jedem Router im Netzwerksystem gespeicherten Adressensatz in einer binären Trie-Struktur zu speichern, wobei jedem Knoten des binären Trie ein Präfix mindestens einer der Adressen zugeordnet und kein Knoten im binären Trie leer ist.
  • Vorzugsweise wird in diesem Beispiel des Computerprogrammprodukts der Trie für eine Minimierung einer Tiefe in einem Worst-Case-Suchvorgang ausbalanciert.
  • Ein noch anderes Beispiel ist ein System zum Speichern eines Adressensatzes in einer binären Trie-Struktur, wobei jedem Knoten in des binären Trie ein Präfix mindestens einer der Adressen zugeordnet ist, wobei das System eine Pipelinestruktur aufweist, wobei die Pipelinestruktur ferner mehrere Stufen aufweist, wobei jede der mehreren Stufen einer Ebene im binären Trie entspricht, wobei jede Stufe im wesentlichen aus einer Speicherkomponente, einer Bank von Signalspeichern und einer einfachen Logik besteht, wobei in der Signalspeicherbank ein Präfix, eine Ziel-IP-Adresse, ein zu einem geeigneten Knoten zeigender Zeiger, ein Befehl, der die Aufgabe der entsprechenden Stufe anzeigt, und eine Zustandsinformation über den Zustand des Befehls gespeichert sind.
  • Vorzugsweise weist jede Stufe der Pipelinestruktur auf: Signalspeicher, die Eingangs- und Ausgangsinformation halten, einen Speicher zum Speichern von Information über Knoten auf einer Ebene, einen Stack- oder Stapelspeicher, der Zeiger zu nicht verwendeten Knotenadressen enthält, und Vergleicher.
  • III. Kurze Beschreibung der Zeichnungen
  • Die vorstehenden Aufgaben und Vorteile der vorliegenden Erfindung werden nachstehend unter Bezug auf bevorzugte Ausführungsformen der Erfindung in Verbindung mit den beigefügten Zeichnungen ausführlich beschrieben; es zeigen:
  • 1 eine Präfixverteilung, eine Knotenverteilung und eine tiefenoptimierte Verteilung für Mae-East-Präfixe;
  • 2 eine bevorzugte Ausführungsform der vorliegenden Erfindung, nachdem eine Sequenz (10011, 01100, 1111, 0100, 011110, 10100, 010, 00011) eingefügt wurde;
  • 3 die bevorzugte Ausführungsform, nachdem ein Präfix 01 eingefügt wurde;
  • 4 die bevorzugte Ausführungsform, nachdem das Präfix 01100 gelöscht wurde;
  • 5 die bevorzugte Ausführungsform mit den gleichen Präfixen wie in 2, jedoch mit einer anderen Einfügesequenz (0100, 01, 10011, 000111, 010, 10100, 1111, 011110);
  • 6 zwei mögliche Bonsai-Strukturen;
  • 7 die Vereinigung zweier tiefenoptimierter Subtries;
  • 8 einen suchoptimierten Subtrie;
  • 9 Tiefen für einen Random-, einen tiefenoptimierten und einen suchoptimierten Subtrie;
  • 10 eine mittlere Knotenebene für eine Random-, eine tiefenoptimierte und eine suchoptimierte Bonsai-Struktur;
  • 11 mittlere Vergleiche pro Suchvorgang für eine Random-, eine tiefenoptimierte und eine suchoptimierte Bonsai-Struktur;
  • 12 eine Verteilung für das erste Byte der Präfixe für die Mae-East-Weiterleitungstabelle;
  • 13 eine Verteilung für das erste Byte der Ziel-IP-Adressen für den Fix-West-Pfad (Trace);
  • 14 ein Beispiel einer Pipelineimplementierung einer Bonsai-Struktur;
  • 15 ein Beispiel einer Suchoperation in einer Stufe i unter Verwendung der Pipelineimplementierung von 14;
  • 16 ein Beispiel einer Einfügeoperation in eine Stufe i unter Verwendung der Pipelineimplementierung von 14;
  • 17 ein Beispiel einer Löschoperation in einer Stufe i unter Verwendung der Pipelineimplementierung von 14;
  • 18 eine Ausführungsform eines erfindungsgemäßen Netzwerksystems mit Routern, in denen mit Adressen in Beziehung stehende Präfixe auf eine effiziente Weise gespeichert sind;
  • 19 ein Beispiel einer herkömmlichen Trie-Struktur; und
  • 20 ein Beispiel einer herkömmlichen Trie-Struktur und einer äquivalenten herkömmlichen Patricia-Trie-Struktur.
  • Ausführliche Beschreibung der vorliegenden Erfindung
  • Hinsichtlich der Konstruktion hat die vorliegende Erfindung vieles gemeinsam mit den von Doeringer et al. beschriebenen Tries, es bestehen jedoch auch mehrere wesentliche Unterschiede:
    • • Die Algorithmen für eine Such-, Einfüge- und Löschoperation sind erheblich einfacher als diejenigen für DP-Tries.
    • • Knoten sind in der vorliegenden Erfindung im Vergleich zu den DP-Trie-Knoten relativ einfach. Jeder DP-Trie-Knoten erfordert drei Zeiger zu anderen Knoten, zwei Präfixe und einen Indexwert, der dazu geeignet sein muss, ganze Zahlen im Bereich von 0 bis zur Bitanzahl einer IP-Adresse darzustellen. Die erfindungsgemäßen Knoten weisen einen Präfix und zwei Zeiger zu anderen Knoten auf.
    • • DP-Tries weisen im Allgemeinen mehr Knoten auf als die Anzahl von Präfixen. Diese "überschüssigen" Knoten speichern zum Durchsuchen der Tabelle erforderliche Information.
  • Die DP-Trie-Struktur ist nur von den Präfixen in der Tabelle, jedoch nicht von der Folge der Einfüge- und Löschoperationen für die Präfixe abhängig. Die in der vorliegednen Erfindung verwendete Trie-Struktur ist im Allgemeinen von der Folge der Einfüge- und Löschoperationen abhängig.
  • Durch das erfindungsgemäße Verfahren werden unter anderem folgende Vorteile erzielt:
    • • Die Speichernutzung ist effizient und skalierbar. Die Bonsai-Struktur verwendet nur einen Knoten für jeden Präfix, wobei jeder Knoten zwei Knotenzeiger und einen Präfixzeiger aufweist. Die Speicherung von Knoten und Präfixen in Arrays ist unkompliziert, so dass die Zei gergrößen auf lg p Bits beschränkt werden kann, wobei p die Anzahl gespeicherter Präfixe darstellt.
    • • Die Struktur unterstützt effiziente und einfache Einfüge-, Lösch- und Suchoperationen. Wenn b die Bitanzahl einer IP-Adresse ist, wird für die Algorithmen eine Zeitdauer 0(b) erforderlich sein.
    • • Das erfindungsgemäße Verfahren zum Speichern von Präfixen ist von der Folge von Einfügeoperationen abhängig. Durch die vorliegende Erfindung werden verschiedene Optimalitätskriterien bereitgestellt. Das erste ist ein Greedy-Algorithmus, der den Binär-Trie mit einer minimalen Gesamttiefe berechnet. Das zweite ist ein dynamisches Programmierverfahren, durch das der Bonsai-Trie mit einer minimalen Anzahl erwarteter Schritte pro Suchvorgang erhalten wird. Für dieses suchoptimierte Bonsaiverfahren kann eine beliebige Verteilung von IP-Zieladressen vorausgesetzt werden.
    • • Die vorliegende Erfindung ist insbesondere für eine pipelined Hardware-Implementierung geeignet. Der Durchsatz kann mit einem Suchvorgang (d.h. einer Übereinstimmung des längsten Präfix) pro Speicherzugriffszeit groß sein. Einfüge- und Löschoperationen können mit Unterbrechungen von nicht mehr als zwei Taktzyklen in der Pipelinestruktur ausgeführt werden.
  • Die vorliegende Erfindung ist intuitiv eine Variante der Trie-Technik. Sie eliminiert Knoten, die keinen Tabelleneintragungen zugeordnet sind, indem Präfixe in einem Trie nach oben verschoben werden, bis allen Knoten ein Präfix zugewiesen ist. Ein derartiges Verfahren hat zwei positive Effekte. Erstens wird die Speichernutzung reduziert. Zweitens wird der Trie "flacher", so dass weniger Speicherdurchsuchungen (Memory Lookups) pro Suchvorgang möglich sind. 1 zeigt ein Beispiel der Trie-Präfixverteilung, der Trie- Knotenverteilung und der Präfix/Knotenverteilung für die tiefenoptimierte Bonsai-Struktur (die in Abschnitt IVC.1 näher diskutiert wird) und für die Mae-West-Weiterleitungstabelle (die im Abschnitt IVD näher diskutiert wird). Die Ebenen des Trie sind von 0 (Wurzel) bis 32 (maximale Länge eines Präfix) bezeichnet. Durch die vorliegende Erfindung wird die erforderliche Anzahl von Knoten wesentlich vermindert, werden Präfixe im Trie nach oben verschoben, und wird die Anzahl von Schritten pro Suchvorgang vermindert.
  • IVA. Bonsai-Struktur
  • Die hierin beschriebene bevorzugte Ausführungsform der vorliegenden Erfindung wird als Bonsai-Struktur (Bonsai) bezeichnet. Ein Bonsai ist ein Trie, wobei jedem Knoten ein Präfix zugeordnet ist. Nachstehend werden Einfüge-, Such- und Löschoperationen sowie bestimmte Implementierungsmerkmale ausführlich diskutiert. Der Bonsai hat bestimmte Invarianten, die hierin dargestellt werden. Nachstehend wird dargestellt, dass diese Invarianten unter den Einfüge- und Löschoperationen gelten.
  • Lemma 1 (Bonsai-Invarianten)
  • Ein Bonsai hat folgende Eigenschaften:
    • 1. Der Bonsai ist ein "Packed"-Trie in dem Sinn, dass er nur Knoten enthält, die eine Routingtabelleneintragung darstellen.
    • 2. Alle möglichen übereinstimmenden Präfixe für eine IP-Adresse können durch eine Abwärtsbewegung im Bonsai wie in einer typischen Trie-Struktur gefunden werden, d.h. unter Verwendung des i-ten Bits der IP-Adresse, um die Richtung zu wählen, die auf der Ebene i des Bonsai gewählt werden soll.
  • IVA.1 Einfügeoperation
  • Wenn der erste Präfix in einen leeren Trie eingefügt wird, wird ein Wurzelknoten zugewiesen, und der Präfixzeiger des Knotens wird geeignet gesetzt. Anschließende Einfügeoperationen folgen ihrem Weg nach unten im Trie auf normale Weise, bis die erste freie Position gefunden wird. Wenn ein k-Bit-Präfix mit einer Binärdarstellung b0, b1, ..., bk-1 eingefügt wird, startet der Algorithmus am Wurzelknoten. Wenn b0 = 0 ist, wird das linke Kind des Wurzelknotens untersucht, andernfalls wird das rechte Kind untersucht. Wenn kein linkes (rechtes) Kind existiert, wird an dieser Position ein Knoten zugewiesen und ein Präfix gesetzt. Wenn bereits ein linkes (rechtes) Kind existiert, wird das Bit b1 im Zusammenhang mit dem Kindknoten untersucht. Im Trie ist nur eine Kopie eines Präfix erlaubt. Wenn eine zweite Kopie eingefügt ist, wird sie während der Abwärtsbewegung im Trie gefunden, und die aktuelle Einfügeoperation wird gestoppt, ohne dass der Trie modifiziert wird. 2 zeigt den Zustand des Bonsai, nachdem eine Folge von Präfixen eingefügt worden ist.
  • Nicht alle Präfixe werden durch den Trie fallen und zu einem Blattknoten werden. Beispielsweise wird die Einfügung des Präfix 01 in den in 2 dargestellten Trie betrachtet. Nach dem 0-Kind des Knotens mit dem Präfix 10011 und dem 1-Kind des Knotens mit dem Präfix 01100 besteht keine Möglichkeit einer weiteren Abwärtsbewegung im Trie. Wenn ein Präfix x soweit wie möglich durch den Trie fällt und einen Knoten findet, der bereits einen Präfix y aufweist, wird der Präfix y entfernt und kann weiter im Trie herabfallen, so als ob y eingefügt würde. Wenn y ungleich x ist (wobei die Einfügeoperation in diesem Fall beendet wird), wird y länger sein als x und daher in der Lage sein, im Trie weiter herabzufallen. Durch eine Einfügeoperation kann veranlasst werden, dass zahlreiche Präfixe entfernt werden, der Prozess wird jedoch im Worst-Case-Fall lediglich O(d) Operationen erfordern, wobei d die Tiefe des Trie ist. 3 zeigt beispielsweise den Zustand eines beispielhaften Trie, nachdem der Präfix 01 eingefügt worden ist. Der Präfix 01 entfernt den Präfix 0100, der im Trie zwei Ebenen herabfällt und dann einen Blattknoten bildet.
  • IVA.2 Suchoperation
  • Das Durchsuchen des Bonsai nach einer vorgegebenen IP-Adresse ist relativ intuitiv. Der Trie wird auf gewöhnliche Weise abwärts gerichtet durchsucht, wie vorstehend im Abschnitt "Einfügeoperation" beschrieben wurde. Bei jedem Schritt der Abwärtsbewegung wird eine Vergleichsoperation ausgeführt, um zu entscheiden, ob die IP-Adresse mit dem gespeicherten Präfix übereinstimmt. Wenn dies der Fall ist, und wenn dieser Präfix länger ist als bei irgendeiner vorangehenden Übereinstimmung, wird ein Zeiger zu dem Knoten mitgeführt, wenn tiefere Ebenen des Trie durchsucht werden. Eine IP-Adresse kann mit mehreren Präfixen übereinstimmen, während sie im Trie abwärts bewegt wird, aber alle möglichen Übereinstimmungen werden auf ihrem Weg liegen.
  • Bei diesem Verfahrens ist auf jeder Ebene des Trie ein Vergleich mit dem gespeicherten Präfix erforderlich. Diese Vergleiche sind bei einem reinem Trie-Verfahren nicht erforderlich und werden zu einem zusätzlichen konstanten Kostenfaktor führen.
  • Es wird eine Durchsuchung der Bonsai-Struktur in 2 nach dem LMP 01000000 ... einer IP-Adresse betrachtet. Am Wurzelknoten besteht keine Übereinstimmung mit dem Präfix 10011. Dann wird der 0-Kind-Knoten besucht, aber auch dort besteht keine Übereinstimmung mit dem Präfix 01100. Dann wird das 1-Kind dieses Knotens besucht, dort besteht eine Übereinstimmung mit dem Präfix 0100, so dass dieser Präfix gemerkt wird. Schließlich wird das 0-Kind dieses Knotes besucht, und erneut wird eine Übereinstimmung mit dem Präfix 010 gefunden. Der neue übereinstimmende Präfix ist jedoch kürzer als der vorangehende übereinstimmende Präfix. Weil der Trie nicht weiter nach unten durchsucht werden kann, muss 0100 der LMP-Präfix sein.
  • IVA.3 Löschoperation
  • Ähnlich wie bei der Einfüge- und Suchoperation beinhaltet die Löschoperation eine Abwärtsbewegung im Trie, um Übereinstimmungen mit Präfixen zu suchen. Wenn der zu löschende Präfix sich an einem Blattknoten befindet, wird der Präfix gelöscht, und der Knoten wird vom Trie entfernt, wobei einer der Kind-Zeiger des Elternknotens aktualisiert werden muss. Wenn der zu löschende Präfix einem Knoten zugeordnet ist, der kein Blattkonten ist, muss jedoch darauf geachtet werden, dass die Trie-Struktur erhalten bleibt. Der Schlüsselfaktor ist, dass jeder Präfix im Subtrie eines Knotens den gelöschten Präfix ersetzen kann. Es existieren jedoch viele Ersetzungsverfahren. In Verbindung mit der vorliegenden Erfindung wird ein Verfahren gewählt, das leicht pipelined werden kann. Der einem Kindknoten zugeordnete Präfix wird aufwärts bewegt und durch ein Präfix eines seiner Kinder ersetzt, usw., bis schließlich ein Blattknoten erreicht ist. Dann kann der Blattknoten (dessen Präfix zum Elternknoten aufwärts bewegt wurde) gelöscht werden. In diesen Fällen können die Präfixe als Präfixe betrachtet werden, die im der Trie zu einer höheren Position "sickern". Beachte: es wird immer ein Blattknoten gelöscht.
  • Wenn ein Knoten zwei Kinder aufweist, kann entweder der Präfix des linken oder der Präfix des rechten Kindes ausgewählt werden, der aufwärts "sickert". (Wenn ein Knoten lediglich ein Kind aufweist, besteht keine Auswahlmöglich keit). Wenn eine Auswahlmöglichkeit besteht, kann ein statisches Verfahren verwendet werden (gemäß dem z.B. das 0-Kind bevorzugt wird), oder ein dynamisches Verfahren (z.B. eine Zufallsauswahl).
  • Es wird beispielsweise eine Löschoperation zum Löschen des Präfix 01100 in 3 betrachtet. Der Prozess und der erhaltene Trie sind in 4 dargestellt. Dieser Prozess startet am Wurzelknoten, bei dem keine Übereinstimmung mit dem Präfix 10011 gefunden wird. Als nächstes wird das 0-Kind des Wurzelknotens besucht, wobei ein zu löschender übereinstimmender Präfix gefunden wird. Es kann entweder das 0-Kind oder das 1-Kind nach oben sickern. Es wird zunächst vorausgesetzt, dass das 1-Kind bevorzugt ist und 01 nach oben sickert. Nun wird vorausgesetzt, dass das 0-Kind bevorzugt ist, so dass 010 nach oben sickert. Dieser Knoten hat nur ein Kind, so dass 0100 nach oben sickert. Weil der Blattknoten erreicht wurde, wird er gelöscht.
  • IV.B Optimale Bonsai-Tries
  • Eine Konsequenz der Operationen in der Bonsai-Struktur ist, dass die Struktur des Trie (im Allgemeinen) von der Folge der Einfüge- und Löschoperationen abhängt. Beispielsweise weist der Bonsai von 5 die gleichen Präfixe auf wie der Bonsai von 2. Der Bonsai von 5 hat jedoch eine geringere mittlere Tiefe für die Präfixe. Daher kann der Trie manipuliert werden, um eine Performance-Metrik zu optimieren. Beispielsweise kann es wünschenswert sein, den Trie so gut wie möglich auszubalancieren, um die Tiefe für eine Worst-Case-Suchoperation zu minimieren. Oder es kann wünschenswert sein, die Tiefe für eine Suchoperation für einen durchschnittlichen Fall zu minimieren.
  • Die Minimierung für den Worst-Case-Fall und den durchschnittlichen Fall stehen miteinander in Konflikt. Bei spielsweise werden die beiden kleinen Bonsai-Strukturen von 6 betrachtet. Wenn eine gleichmäßige Wahrscheinlichkeit für alle IP-Adressen vorausgesetzt wird, wird die erwartete Anzahl von Vergleichen bei einer Durchsuchung des Trie (a) "2" betragen, weil für alle Suchoperationen 2 Vergleiche erforderlich sein werden. Für den Trie (b) beträgt die erwartete Anzahl (50%) (1) + (25%) (2) + (25%) (3) = 1,75.
  • Wenn eine gleichmäßige Verteilung vorausgesetzt wird, hat ein unbalancierter Trie eine bessere Such-Performance für einen durchschnittlichen Fall als der balancierte Trie. Natürlich wird die Annahme einer gleichmäßigen Verteilung in realen Routern nicht gültig sein. Immer wenn eine Wahrscheinlichkeitsverteilung bekannt ist oder geschätzt werden kann, indem beispielsweise jeder Zugriff auf einen Knoten während einer Suchoperation registriert wird, kann der Trie jedoch derart strukturiert werden, dass das Verhalten für den durchschnittlichen Fall optimiert wird. Obwohl eine Berechnung einer optimalen Bonsai-Struktur nach jeder Einfüge- oder Löschoperation zu zeitaufwendig sein kann, kann es geeignet sein, die Bonsai-Struktur periodisch umzustrukturieren, so dass sie dem Optimierungskriterium besser entspricht.
  • In den folgenden Abschnitten werden bevorzugte Ausführungsformen von Verfahren zum Berechnen zweier verschiedener Typen optimaler Bonsai-Strukturen beschrieben. Das erste ist ein Greedy-Algorithmus zum Berechnen der Bonsai-Trie-Struktur mit einer minimalen Gesamttiefe. Das zweite ist ein dynamisches Programmierungsverfahren zum Bereitstellen einer Bonsai-Struktur mit einer minimalen erwarteten Anzahl von Suchschritten basierend auf einer beliebigen Verteilung von Ziel-IP-Adressen.
  • Nachstehend wird die mit den Optimierungsverfahren in Beziehung stehende Terminologie diskutiert. Ein leerer Kno ten ist ein Trie-Knoten, der keine Routingtabelleneintragung darstellt. Ein voller Knoten stellt eine Eintragung dar. Ein Subtrie besteht aus Ebenen von Knoten, wobei Knoten einer Ebene i Hops oder Sprünge von der Wurzel des Subtrie darstellen. Die Wurzel des Subtrie besteht nur aus dem Knoten auf der Ebene 0. Zum Darstellen von Knoten werden griechische Buchstaben verwendet. Die Ebene eines Knotens α wird durch dα bezeichnet. Der Wurzelknoten, der dieser Ebene zugeordnet ist, sollte anhand des Kontextes klar sein. Wenn der Wurzelknoten eines Subtrie durch α bezeichnet ist, kann er auch zum Darstellen des gesamten Subtrie mit einer Wurzel beim Knoten α verwendet werden, wobei die Bedeutung hiervon anhand des Kontextes klar sein sollte. Für einen beliebigen Subtrie mit einer Wurzel beim Knoten α soll wα die Gesamtanzahl von Präfixen an oder unterhalb der Ebene i darstellen. wi α wird als Gewicht der Ebene i des Substrie mit einer Wurzel beim Knoten α bezeichnet. Wenn beispielsweise α der Wurzelknoten des vollen Trie von 2 ist, betragen w0 α = 8, w1 α = 7, w2 α = 5, w3 α = 2 und wi α = 0 für alle i ≥ 4. Es sei β der Knoten mit dem Präfix 0100: dann gilt: w0 β = 3, w1 α = 2 und wi β = 0 für alle i ≥ 2. Wenn der Subtrie anhand des Kontextes offensichtlich ist, wird wi auch zum Darstellen des Subtrie verwendet. Schließlich ist die Tiefe eines Subtrie die Ebene seines tiefsten Knotens.
  • IVB.1 Tiefenoptimierte Bonsai-Struktur
  • Nachstehend wird ein Greedy-Algorithmus beschrieben, der mit einem einfachen Trie beginnt, diesen durch Entfernen aller Knoten, die keine Routingtabelleneintragung darstellen, komprimiert und eine Bonsai-Struktur mit einer minimalen Tiefe und einer minimalen mittleren Knoten(Präfix)ebene erzeugt. Diese bevorzugte Ausführungsform wird als tiefenoptimierte Bonsai-Struktur bezeichnet. Ein tiefenoptimnierter Subtrie ist ein Subtrie mit einer Struktur, gemäß der kein anderer Subtrie mit dem gleichen Satz von Präfixen für eine beliebige Ebene i ein kleineres Gewicht wi aufweist.
  • Der Algorithmus arbeitet von oben nach unten (Bottom-Up). Von der Basis-Trie-Struktur für die Routingtabelle, die sowohl leere als auch volle Knoten aufweist, werden tiefenoptimierte Subtries rekursiv nach oben vereinigt. Es wird die unterste Ebene des Trie gefunden, auf der ein voller Knoten gefunden wird. Diese Ebene wird als Ebene i bezeichnet. (Alle auf dieser Ebene gefundenen Knoten werden notwendigerweise voll sein.) Jeder Knoten des Trie auf der Ebene i – 1 wird untersucht. (Damit ein Knoten auf einer beliebigen Ebene des Trie vorhanden ist, muss er entweder voll sein oder mindestens einen vollen Abkömmling aufweisen.) Wenn ein Knoten auf der Ebene i – 1 voll ist, ist keine Vereinigung von Subtries möglich, so dass keine Operation ausgeführt wird. Wenn der Knoten leer ist, bedeutet dies, dass ein Präfix von einem seiner Subtries aufwärts bewegt werden kann, wodurch eine tiefenoptimierte Subtrie mit einer Wurzel auf der Ebene i – 1 erhalten wird. Ein beliebiger (voller) Knoten von der untersten Ebene des tieferen Subrie wird ausgewählt, um nach oben bewegt (verschoben) zu werden, wie in 7 dargestellt ist. Wenn beide Subtries die gleiche Tiefe haben, wird ein beliebiger Knoten von der untersten Ebene eines beliebigen der Subtries ausgewählt. Dieser Vereinigungsprozess wird im Trie ebenenweise nach oben ausgeführt, bis der Wurzelknoten erreicht ist.
  • Lemma 2 (Tiefenoptimierte Subtrie-Invarianten)
  • Unter Verwendung des vorstehend beschriebenen Algorithmus hat jeder tiefenoptimierte Subtrie die folgenden Eigenschaften:
    • 1. Alle Präfixe des Subtrie haben einen gemeinsamen Substring, der durch die Position des Subtrie-Wurzelknotens im Trie dargestellt wird, und alle Präfixe, die den Substring gemeinsam verwenden, befinden sich im Subtrie.
    • 2. Der Subtrie ist in dem Sinne tiefenoptimiert, dass es unmöglich ist, die Präfixe derart umzuordnen, dass die Ebenengewichte wi vermindert werden können.
  • Probe: Eine Induktion auf den Ebenen des Trie wird verwendet, beginnend mit der Ebene i, der Ebene des tiefsten (vollen) Knotens im ursprünglichen Trie.
  • Der Knoten α auf der Ebene i muss voll sein und darf keine Kinder haben. In diesem Fall ist klar, dass die Invarianten des Lemmas 2 erhalten bleiben. Es wird nun dargestellt, dass in allen Subtries mit einer Wurzel auf einer Ebene j – 1 die Invarianten erhalten bleiben, vorausgesetzt, dass sie in allen Subtries mit einer Wurzel auf der Ebene j erhalten bleiben. Der Knoten α auf der Ebene j – 1 wird entweder voll oder leer sein.
  • Wenn der Knoten α voll ist, existiert keine Variation der Subtrie-Struktur mit einer Wurzel bei α, die eine kleineren Wert wi für eine beliebige Ebene i ermöglichen würde. Dies wird durch Widerspruch geprüft. Es wird vorausgesetzt, dass keine Umorganisation des Subtries existiert, durch die ein Wert wi verbessert würde. Diese Umorganisation kann keine Verschiebung des dem Knoten zugeordneten Präfix zu einer tieferen Ebene beinhalten, weil dadurch die erste Sub trie-Invariante verletzt würde; der Präfix ist bereits auf der untersten möglichen Ebene angeordnet. Daher muss die Umorganisation derart ausgeführt werden, dass der dem Knoten α zugeordnete Präfix in Position verbleibt. Es ist unmöglich, einen Präfix von einem Subtrie zu einem anderen zu verschieben, weil die Wurzelknoten der Subtries spezifische Präfixe darstellen, die nicht verschachtelt werden können. Dies bedeutet, dass entweder der linke Subtrie oder der rechte Subtrie mit seinen aktuellen Präfixen verbessert werden kann, was im Widerspruch zu der Voraussetzung steht, dass die vereinigten Subtries tiefenoptimiert sind.
  • Wenn der Knoten α leer ist, wählt der Algorithmus einen Präfix δ von der untersten Ebene des tieferen Subtrie aus, um dessen Position zu erfassen. Es sei β die Wurzel des linken tiefenoptimierten Subtrie des Knotens α und γ die Wurzel des rechten tiefenoptimierten Substrie des Knotens α. Ohne Verlust der Allgemeingültigkeit wird vorausgesetzt, dass der Subtrie β tiefer ist als γ. Durch Verschieben von δ wird der erhaltene Subtrie mit der Wurzel bei α Gewichte w0 α = 1 und wi α = Wi-1 β + wi-1 γ – 1 für alle i derart aufweisen, dass wi-1 β größer ist als 0. Tatsächlich hat die Verschiebung von δ zu einem linken Subtrie mit dem Ebenengewicht wi β geführt, das für jedes von null verschiedene Gewicht um eins vermindert ist. Um zu überprüfen, ob der erhaltene Subtrie tiefenoptimiert ist, muss gezeigt werden, dass kein anderer Knoten ε existiert, der an Stelle von δ verschoben werden kann, wodurch ein besserer Subtrie erhalten würde. Es wird vorausgesetzt, dass ε sich innerhalb eines Subtrie mit einer Wurzel bei β befindet. Damit die Verschiebung von ε zu einem besseren Subtrie führt, muss der erhaltene linke Subtrie ein Ebenengewicht aufweisen, das für eine Ebene j kleiner ist als wi β – 1. Durch Einfügen eines Präfix, kann einem beliebigen Ebenengewicht jedoch höchstens der Wert "1" hinzugefügt werden. Daher würde, wenn mit dem linken Subtrie ohne ε begonnen würde, und ε dann eingefügt würde, ein (vollständig) neuer linker Subtrie mit einem Gewicht einer Ebene j erhalten werden, das kleiner ist als wi β. Dadurch wird die Voraussetzung einer Tiefenoptimierung des linken Subtrie verletzt. Daher wird der Subtrie durch keinen Knoten weiter verbessert als durch Verschieben eines Präfix auf der untersten Ebene. Ein ähnliches Argument handhabt den Fall, wenn vorausgesetzt wird, dass ε vom rechten Subtrie kommt.
  • Eine Konsequenz des Lemmas 2 ist, dass der Algorithmus einen Bonsai-Trie erzeugt, der im vorstehend beschriebenen Sinn tiefenoptimiert ist. Es kann außerdem gezeigt werden, dass die Anzahl von Ebenen im Bonsai-Trie minimal und die mittlere Tiefe der Knoten minimal ist.
  • IVB.2 Suchoptimierte Bonsai-Struktur
  • In diesem Abschnitt wird eine bevorzugte Ausführungsform eines dynamischen Programmierungsverfahrens zum Berechnen des Bonsai-Trie mit einer minimalen Anzahl erwartetet Schritte pro Suchoperation beschrieben. In dem Verfahren wird eine beliebige Verteilung von Ziel-IP-Adressen vorausgesetzt. Die Struktur startet als einfacher Trie, der derart erweitert wird, dass die Wahrscheinlichkeit eines Besuchs jedes Knotens bei einer beliebigen Suchoperation bekannt ist. (Beispielsweise muss der Wurzelknoten bei jeder Suche besucht werden, so dass seine Wahrscheinlichkeit auf "1" gesetzt wird.) In der Praxis wird sich diese Wahrscheinlichkeitsverteilung wahrscheinlich mit der Zeit ändern. Eine Verteilung kann jedoch einfach für jede gewünschte Zeitdauer geschätzt werden, indem die Knoten, die bei jeder Durchsuchung des einfachen Trie besucht werden, registriert werden.
  • Eine dynamische Verarbeitung ist hierbei besonders nützlich, weil das Problem sowohl eine optimale Unterstruktur als auch überlappende Teilprobleme aufweist. Vergl. T. H. Cormen, C. E. Leiserson und R. L. Rivest, "Introduction to Algorithms", MIT Press, 1990. In dieser bevorzugten Ausführungsform wird bei den unteren Ebenen des einfachen Trie gestartet, und die Verarbeitung schreitet durch geeignetes Verschieben von Präfixen nach oben fort. Die Anzahl von Präfixen, die aus einem beliebigen Subtrie verschoben werden müssen, ist jedoch nicht sofort bekannt. Daher verwendet das Verfahren zwei Phasen.
  • In der ersten Phase wird für jeden Knoten α im einfachen Trie ein Array Aα berechnet. Aα[i] wird die optimale (kleinste) erwartete Anzahl von Suchschritten für diesen Subtrie enthalten, wobei vorausgesetzt wird, dass i Präfixe aus dem Subtrie heraus verschoben werden. Wie groß müssen diese Arrays nun sein? Weil ein Knoten nur Präfixe zu seinen direkten Vorfahren verschieben kann, wird der Knoten α niemals die Verschiebung von mehr als dα Knoten betrachten müssen. Daher liegen die Werte von Aα[i] im Bereich 0 ≤ i ≤ dα. Es muss ein besonderer Wert für die Arrayelemente existieren, der eine nicht handhabbare Anzahl von Verschiebungen darstellt. Beispielsweise ist es unmöglich, 4 Präfixe von einem Subtrie zu verschieben, der anfangs lediglich 3 Präfixe aufweist. Während der Berechnung dieser Arrays, die einen Bottom-Up-Prozess darstellt, muss außerdem die Anzahl von Präfixen gehalten werden, die vom linken und vom rechten Subtrie verschoben werden müssen, um den optimalen Subtrie zu erzeugen. Nachdem die Arrays berechnet worden sind, arbeitet die zweite Phase von oben nach unten (Top-Down), um die optimale Struktur zu untersuchen und die entsprechende Bonsai-Struktur zu erzeugen. Es wird mit dem Wurzelknoten begonnen, für den kein Präfix verschoben werden muss, und jeder Knoten wird an sein linkes und rechtes Kind eine Anforderung ausgeben, eine gewisse Anzahl von Präfixen zu verschieben, um basierend auf dieser Anzahl einen optimalen Subtrie zu erzeugen.
  • Es wird die erste Phase betrachtet, d.h. die Berechnung der Arrays A. 8 beschreibt die Basissituation. Der Wurzelknoten des Subtrie ist durch α, das linke Kind durch β und das rechte Kind durch γ bezeichnet. Um Aα berechnen zu können, müssen Aβ und Aγ sowie die Wahrscheinlichkeiten pβ und pγ bekannt sein, mit der jedes Kind besucht werden wird (wobei vorausgesetzt wird, dass der Wurzelknoten besucht worden ist). (Wenn sowohl das linke als auch das rechte Kind existieren, wird pβ + pγ = 1 sein.) Zunächst wird der Fall betrachtet, gemäß dem der Knoten α bereits einen Präfix aufweist. Die dem Array Aα[i] entsprechende Subtrie-Struktur ist unkompliziert; dies ist der Fall, in dem keine Knoten aus dem linken oder rechten Subtrie verschoben werden. Aα[0] = 1 + pβAβ[0] + pγAγ[0]. Zum Berechnen von Aα[1] müssen zwei Möglichkeiten betrachtet werden. Eine Verschiebung von "1" vom linken und eine Verschiebung von "0" vom rechten Subtrie, oder eine Verschiebung von "0" vom linken und eine Verschiebung von "1" vom rechten Subtrie. Die beste Auswahl ist davon abhängig, welcher der folgenden Werte kleiner ist: pβAβ[1] + pγAγ[0] oder pβAβ[0] + pγAγ[1]. Dieses Verfahren wird fortgesetzt, bis alle erforderlichen Werte von Aα berechnet sind. Im Allgemeinen gilt:
    Figure 00320001
    innerhalb des Bereichs 0 ≤ i ≤ dα. Wiederum sollten auch die Werte j und k, die den minimalen Array Aα[i] erzeugten, gehalten werden.
  • Wenn der Knoten α leer ist, müssen sowohl ein Präfix in den Knoten α verschoben werden als auch Präfixe oberhalb von α verschoben werden. Auch bei der Verschiebung von null Präfixen vom Knoten α muss ein Präfix von einem der beiden Subtries verschoben werden; die beste Auswahl hängt davon ab, welcher der folgenden Werte kleiner ist: pβAβ[1] + pγAγ[0] oder pβAβ[0] + pγAγ[1]. Im Allgemeinen gilt
    Figure 00330001
    innerhalb des Bereichs 0 ≤ i ≤ dα.
  • IV.C Experimentelle Ergebnisse und Analyse
  • In den Experimenten werden Internet-Weiterleitungstabellen verwendet, die auf der Internet Performance Measurement and Analysis (IPMA) Website verfügbar sind. Vergl. Internet Performance Measurement and Analysis Project (IPMA), verfügbar unter http://nic.merit.edu/ipma/. Diese Weiterleitungstabellen, die täglich aktualisiert werden, sind Standards für IP-Weiterleitungsexperimente geworden. Die hierin verwendeten Daten stammen vom Datum 17. August 1998. Um eine realistische Verteilung von IP-Datagrammzielen zu simulieren, wird ein Trace oder Pfad realer Datagrammziel-IP-Adressen von Fix-West verwendet. Der Trace oder Pfad enthält 2146573 Adressen ("Fünf Minuten"-Wert), die am 22. Februar 1997 aufgezeichnet wurden. Dieser Trace oder Pfad ist von National Laboratory for Applied Network Research (NLANR) erhältlich. Vergl. National Laboratory for Applied Network Research (NLANR), verfügbar unter http://www.nlanr.net/NA/. Dieser Trace oder Pfad wurde von Routern erhalten, deren Weiterleitungstabellen auf der IPMA-Seite erhältlich sind.
  • Es werden vier Metriken für die Bonsai-Struktur betrachtet
    • • die Tiefe;
    • • die durchschnittliche Ebene eines Knotens/Präfix;
    • • die erwartete Anzahl von Schritten (oder Vergleichen) je Suchoperation, wobei eine gleichmäßige Verteilung der Ziel-IP-Adressen vorausgesetzt wird; und
    • • die erwartete Anzahl von Schritten je Suchoperation, wobei die durch den Fix-West-Trace oder Pfad definierte Verteilung von Ziel-IP-Adressen ist.
  • Tabelle 2 zeigt die Routingtabellen für die fünf Positionen. Für jede Position ist die Anzahl der Präfixe in der Tabelle aufgelistet, die der Anzahl der Knoten in der Bonsai-Struktur gleicht. Außerdem sind die Hit-Rate und die Miss-Rate für den Fix-West-Trace oder Pfad bezüglich der vorgegebenen Weiterleitungstabelle aufgelistet. Wie vorstehend diskutiert wurde, ist der Trace oder Pfad nicht den Weiterleitungstabellen zugeordnet, wodurch ein erheblicher Fehlanteil erhalten werden kann.
  • Figure 00340001
    Tabelle 2: Metriken für Routingtabellen an fünf Positionen, 17. August 1998. Hit-Rate und Miss-Rate für fünf Minuten der Ziel-IP-Adressen von Fix-West um Mittag, 22. Februar 1997. Der Trace oder Pfad enthält 2146573 IP-Datagramme.
  • Tabelle 3 enthält Information für 100 Bonsai-Strukturen, wobei die Präfixe in zufälliger Folge eingefügt sind. Für jede Metrik sind der Minimalwert, der Durchschnittswert und der Maximalwert dargestellt. Es wird ein ziemlich konsistentes Verhalten aller Router beobachtet, wobei die Zahlen für die Position PAIX typischerweise etwas kleiner sind, weil sie weniger Präfixe hält. Die Bonsai-Struktur hat eine typische Tiefe von etwa 24, während die durchschnittliche Ebene eines Knotens für die großen Tabellen etwa 18 beträgt. Außerdem ist die mittlere Anzahl von Vergleichen pro Suchvorgang für die gleichmäßige Verteilung wesentlich kleiner als für den Fix-West-Trace oder Pfad. Dies ist der Fall, weil bei einer gleichmäßigen Verteilung ein großer Prozentanteil von Zieladressen in sehr spärlichen Bereichen der Bonsai-Struktur angenommen wird, in denen sehr wenig mögliche Übereinstimmungen auftreten. Diese Erscheinung wird später in diesem Abschnitt näher diskutiert.
  • Metriken für die tiefenoptimierte Bonsai-Struktur sind in Tabelle 4 aufgelistet. In allen Fällen ist die tiefenoptimierte Bonsai-Struktur flacher als die beste der 100 zufälligen Bonsai-Strukturen. Die tiefenoptimierte Bonsai-Struktur wird außerdem die kleinste durchschnittliche Knotenebene aufweisen. Interessanterweise ist die tiefenoptimierte Bonsai-Struktur hinsichtlich der Anzahl der Vergleiche pro Suchvorgang schlechter als die durchschnittliche zufällige Bonsai-Struktur. Intuitiv tritt dies auf, weil die tiefen Knoten des Trie, obwohl sie zur Tiefe beitragen können, während eines Suchvorgangs mit geringerer Wahrscheinlichkeit besucht werden als Knoten, die weiter oben im Trie angeordnet sind.
  • Tabelle 5 enthält Daten für die suchoptimierte Bonsai-Struktur. Für diese Optimierung sind die Tiefe und die durchschnittliche Knotenebene schlechter als für die zufällige Bonsai-Struktur, es treten tatsächlich jedoch Gewinne hinsichtlich der Anzahl von Vergleichen pro Suchvorgang auf. Auch dies zeigt den Kompromiss zwischen Tiefe und Suchzeit.
  • Um direkte Vergleiche zwischen den verschiedenen Bonsai-Verfahren zu ermöglichen, werden Balkendiagramme für die Tiefe (9), die durchschnittliche Knotenebene (10) und die mittlere Anzahl von Vergleichen pro Suchvorgang für den Fix-West-Trace oder Pfad (11) betrachtet. Die tiefenoptimierte Bonsai-Struktur hat moderate, aber konsistente Vorteile im Vergleich zu anderen Techniken oder Verfahren sowohl für die Tiefe als auch für die durchschnittliche Knotenebene: Verbesserungen in der Tiefe bezüglich eines zufälligen Einfügungsbereichs von 4% bis 11% und Verbesserungen in der durchschnittlichen Knotenebene von 1% bis 2%. Die suchoptimierte Bonsai-Struktur ist für diese Metriken schlechter als die durchschnittliche zufällige Bonsai-Struktur.
  • Tabelle 3: Statistik für 100 Bonsai-Strukturen für jede Position. Präfixe wurden in zufälliger Folge eingefügt.
    Figure 00370001
  • Tabelle 4: Statistiken für tiefenoptimierte Bonsai-Struktur für jede Position.
    Figure 00370002
  • Tabelle 5: Statistiken für suchoptimierte Bonsai-Struktur (bezüglich der Trace-Verteilung) für jede Position.
    Figure 00380001
  • Die Daten für die durchschnittliche Anzahl von Vergleichen pro Suchvorgang zeigen jedoch die Vorteile der suchoptimierten Bonsai-Struktur. Verbesserungen bezüglich der durchschnittlichen zufälligen Bonsai-Struktur liegen im Bereich von 9% bis 13%. Die tiefenoptimierte Bonsai-Struktur verhält sich für diese Metrik relativ schlecht, obwohl sie sich für die Mae-West-Weiterleitungstabelle etwas besser verhält als die zufällige Bonsai-Struktur.
  • Das Ergebnis zeigt allgemein, dass durch eine zufällige Einfügung von Präfixen ein geeignetes Verhalten für alle betrachteten Metriken erhalten wird.
  • Es gibt mehrere Einsprüche bezüglich der Interpretation dieser experimentellen Ergebnisse. Beispielsweise wird der Trace oder Pfad nicht von den Routern ausgehend genommen, die untersucht werden, sondern von einer vollständig anderen Position. Das Maß, in dem durch den Trace eine realistische Verteilung bereitgestellt wird, ist daher diskutierbar. Hinsichtlich der Auswirkung auf die Performance oder Leistungsfähigkeit sind Fehlstellen nicht unbedingt problematisch, weil auch Fehlstellen eine vollständige Durchsuchung der Bonsai-Struktur erfordern. D.h., Fehlstellen beeinträchtigen daher nicht notwendigerweise die Performance oder Leistungsfähigkeit.
  • Ein anderer Punkt ist, dass bestimmte Besonderheiten mit der Zuweisung von IP-Adressen in Beziehung stehen, die die Leistungsfähigkeit beeinflussen können. Beispielsweise
    • • haben die Weiterleitungstabellen keine Eintragungen für IP-Adressen der Klasse D (die mit "1110" beginnen und für Multicast verwendet werden) oder IP-Adressen der Klasse E (die mit "11110" beginnen und für eine zukünftige Verwendung reserviert sind);
    • • hat der Fix-West-Trace keine Adressen der Klasse E, aber 25719 Ziel-Addressen der Klasse D (etwa 1,2%); und
    • • wird in der gleichmäßigen Verteilung vorausgesetzt, dass Adressen der Klassen D und E mit Häufigkeiten von 6,3% bzw. 3,1% möglich sind.
  • Weil die Bonsai-Struktur keine Präfixe für Adressen der Klasse D oder der Klasse E aufweisen wird, wird sie keinen Knoten bei oder unterhalb der Positionen "1110" und "11110" aufweisen. Tatsächlich können Adressen der Klassen D und E mit "111" beginnen. Daher sind Suchvorgänge bezüglich Adressen der Klassen D und E schneller als im Durchschnitt – es werden höchstens 3 Ebenen der Bonsai-Struktur durchsucht. Ähnliche Wirkungen können in anderen Bereichen des Adressenraums beobachtet werden: keine der Weiterleitungstabellen enthält ein Präfix, das mit "111" oder "010" beginnt, und jede Tabelle enthält nur ein Präfix, das mit "011" beginnt. (Die Eintragung, die mit "011" beginnt, ist in allen Fällen 127/255, wobei diese Eintragung für einen Loopback-Test reserviert ist.)
  • Hinsichtlich der Wichtigkeit der Präfix- und der IP-Zieladressenverteilungen ist es lohnend, reale Weiterleitungstabellen und reale Traces oder Pfade zu untersuchen. 12 zeigt die Verteilung von Präfixen von der Mae-East- Weiterleitungstabelle basierend auf der Dezimalschreibweise mit Punkt des ersten Byte des Präfix. Es sind sowohl ein linearer als auch ein logarithmischer Maßstab dargestellt. Die Daten zeigen, dass Präfixe der Klasse C weitaus häufiger sind als andere. Es existieren sehr wenig Adressen der Klasse A, während Adressen der Klasse B innerhalb eines bestimmten Bereichs ziemlich gleichmäßig verteilt sind. Auch diese Verteilungen haben wichtige Konsequenzen für Trie-basierte Verfahren. Beispielsweise wird die linke Seite einer Bonsai-Struktur im Vergleich zur rechten Seite sehr spärlich besetzt sein. Ähnliche Argumente gelten für weiter unten angeordnete Positionen im Trie.
  • 13 zeigt die Verteilung für das erste Byte der Ziel-IP-Adressen für den Fix-West-Trace. Auch diese Daten zeigen, dass eine gleichmäßige Verteilung ein gutes Modell des Verkehrs ist. Der Verkehr für die Klasse B und die Klasse C ist wesentlich größer als für die Klasse A. Tatsächlich treten zwei Bytes – 128 und 192 in der Desimaldarstellung – für mehr als ein Drittel aller Zieladressen auf.
  • IVD. Pipeline-Implementierung
  • Obwohl die Diskussion sich bisher zur Vereinfachung auf eine Software-Implementierung konzentrierte, ist die bevorzugte Ausführungsform einer Bonsai-Struktur auch für eine dedizierte Hardware-Implementierung geeignet. Der Durchsatz kann mit einer Suche pro Speicherzugriffszeit hoch sein. Einfüge- und Löschoperationen können mit nicht mehr als zwei Taktzyklusunterbrechungen in der Pipeline ausgeführt werden. In diesem Abschnitt wird eine bevorzugte Ausführungsform einer Pipeline-Implementierung einer Bonsai-Struktur dargestellt. Das Pipelining-Verfahren ist nicht auf eine Bonsdai-Struktur beschränkt. Viele LMP-Suchverfahren können auf ähnliche Weise pipelined werden. Gupta et al. zeigen ein Bei spiel – aber für viele dieser Verfahren sind Einfüge- und Löschoperationen problematisch. Vergl. P. Gupta, S. Lin und N. McKeown, "Routing lookups in Hardware at memory access speeds", Proceedings IEEE INFOCOM'98, Seiten 1240–1247, 1998.
  • 14 zeigt eine abstrakte Pipeline-Implementierung für eine Bonsai-Struktur. Eine Pipeline-Stufe besteht aus einer Speicherkomponente, einer einfachen Logik und einer Bank von Signalspeichern. Die einfachste Implementierung würde in jeder Stufe eine Ebene der Bonsai-Struktur handhaben, so dass für eine Bonsai-Struktur mit der Tiefe d "d" Stufen erforderlich sind. (Um die Anzahl der Stufen zu vermindern, kann es hilfreich sein, die tiefenoptimierte Bonsai-Struktur zu konstruieren.) Am Eingang zur Stufe 0 wird die Ziel-IP-Adresse für eine Suche nach einem Präfix für eine Einfüge- oder Löschoperation übertragen. Außerdem wird ein kleiner Befehlscode übertragen, durch den ermöglicht wird, dass die Pipeline zwischen Such-, Einfüge- und Löschoperationen unterscheiden kann.
  • Für die vorliegende Diskussion wird vorausgesetzt, dass die Pipeline für jede Ebene der Bonsai-Struktur eine Stufe aufweist. Die Daten in einer Ebene i der Bonsai-Struktur werden in einer Stufe i der Pipeline gespeichert. Die Signalspeicher vor jeder Stufe werden folgende Information speichern:
    • • Ein Präfix P, das als Eingangswert für Einfüge- und Löschoperationen und als Ausgangswert für Suchoperationen verwendet wird;
    • • Eine Ziel-IP-Adresse D, die als Eingangswert für Suchoperationen verwendet wird;
    • • Einen Zeiger R, der zum geeigneten Knoten in der aktuellen Ebene zeigt;
    • • Einen Befehl I, der anzeigt, ob in dieser Stufe der Pipeline eine Such-, Einfüge- oder Löschoperation ausgeführt wird;
    • • Einen Zustand S, der Information über den Zustand des aktuellen Befehls enthält. Beispielsweise kann während einer Suchoperation Information darüber bereitgestellt werden, ob vorangehende Übereinstimmungen gefunden worden sind, oder während einer Löschoperation können Präfixe an dieser Stelle anstatt gelöscht zu werden verschoben werden.
  • Die Basis-Hardware für jede Stufe der Pipeline wird folgende Komponenten enthalten:
    • • Signalspeicher, die relevante Ein- und Ausgangsinformation halten, wie vorstehend beschrieben wurde;
    • • Einen Speicher, der Information über die Knoten der Ebene speichert. Knoten haben eine feste Größe und enthalten ein Präfix und zwei Zeiger. Beim Schreiben in einen Knoten kann lediglich in den Präfix des Knotens oder in einen Zeiger eines seiner beiden Kinder geschrieben werden;
    • • Einen Stack-Speicher (oder eine andere Struktur), der Zeiger zu ungenutzten Knotenadressen in der nachfolgenden Stufe enthält. Beispielsweise wird irgendeinem Knoten während einer Einfügeoperation ein Speicher für ein Kind zugewiesen werden müssen. Ähnlicherweise wird während einer Löschoperation irgendeinem Knoten ein Speicher für ein Kind zugewiesen werden müssen. Das Speichermanagement ist aufgrund der festen Größe der Knoten relativ einfach;
    • • Vergleicher, z.B. zum Prüfen von Präfixübereinstimmungen oder zum Vergleichen von Präfixlängen; und
    • • Verschiedene weitere Basiskomponenten, wie beispielsweise Multiplexer und Logik-Torschaltungen.
  • Obwohl nachfolgende Befehle in der Pipeline unabhängig sind, wird es erforderlich sein, die Pipeline in einigen Fällen zu unterbrechen. Dies kann während Einfüge- oder Löschoperationen auftreten und wird niemals eine Unterbrechung von mehr als 2 Taktzylklen verursachen.
  • Obwohl hierin die Pipelinekonstruktion nicht ausführlich beschrieben wird, wird die für einige spezifische Fälle erforderliche Hardware untersucht, um ein Gefühl für die Anforderungen an die Pipelinekonstruktion zu vermitteln. 15 zeigt ein detailliertes Beispiel einer möglichen Arbeitsweise während einer Suchoperation. An dieser Stelle wird vorausgesetzt, dass ein relevanter Knoten an der Stufe i und ein anderer relevanter Knoten an der Stufe i + 1 existiert. Es wird geprüft, ob die Ziel-IP-Adresse mit dem Präfix in der Stufe i übereinstimmt. Wenn das Präfix nicht übereinstimmt, und wenn es länger ist als bei irgendwelchen früheren Übereinstimmungen, wird es zusammen mit dem geeigneten Zeiger für den nächsten Knoten zur nächsten Stufe verschoben.
  • Ein einfacher Fall für eine Einfügeoperation tritt auf, wenn ein eingefügter Präfix in den ersten leeren Knoten fällt. Dies kann mit einer einfachen Unterbrechung der Pipeline erreicht werden, die erforderlich ist, um einen neuen Zeiger in den Elternknoten des neuen Blattknotens zu schreiben. 16 zeigt diesen Fall. Zunächst wird der Speicher ausgelesen, wobei festgestellt wird, dass ein geeigneter Kindknoten vorhanden ist. Ein Zeiger wird im Zeiger-Stack-Speicher für den neuen Knoten zugewiesen. Dieser Zeiger wird (während des zweiten Taktzyklus) in den Speicher zurück geschrieben, und außerdem zusammen mit dem einzufügenden Präfix zur nachfolgenden Stufe verschoben. Ein weiterer Fall tritt auf, wenn durch eine Einfügeoperation veranlasst wird, dass ein anderer Präfix entfernt wird. Wenn ein Präfix in der Stufe i entfernt wird, werden dafür zwei Speicherzugrif fe in der Stufe i erforderlich sein: zum Lesen des zu entfernenden Präfix und zum anschließenden Schreiben des einzufügenden Präfix. Dies kann durch eine Unterbrechung der Pipeline erreicht werden. Auch wenn für diese Einfügeoperation mehr Präfixe weiter unten in der Pipeline entfernt würden, werden nicht mehr Unterbrechungen erforderlich sein.
  • Löschoperationen sind schwieriger, weil für einen gelöschten Präfix in der Ebene i eine Zeigeraktualisierung in der Ebene i – 1 erforderlich ist, wofür eine Umgehungs-Hardware zwischen Stufen erforderlich ist. Die Ebene i kann während eines Taktzyklus j gelesen werden. In die Ebene i – 1 kann während eines Taktzyklus j + 1 geschrieben werden (beachte, dass der Zeiger zum Elternknoten in den Signalspeichern gespeichert worden sein muss). Im Allgemeinen müssen auch die Kinder des gelöschten Präfix verschoben werden. Die Stufe i + 1 kann im Taktzyklus j + 1 gelesen werden, und in die Stufe i + 1 kann während des Taktzyklus j + 2 zurück geschrieben werden. Der Beginn dieser Verarbeitung ist in 17 dargestellt. Es zeigt sich, dass in der Stufe i keine Übereinstimmung vorliegt. Es existiert ein Kind, so dass ein Präfix verschoben werden muss. Die für den Rückschreibvorgang erforderliche Hardware ist zur Verdeutlichung nicht dargestellt. Im Worst-Case-Fall wird für eine Löschoperation eine Unterbrechung von zwei Taktzyklen erforderlich sein.
  • Ein Problem bei dieser Konstruktion besteht in der Unausgeglichenheit der Anzahl der Knoten pro Bonsai-Ebene, die einer Unausgeglichenheit der für die Pipelinestufen erforderlichen Speichergrößen entspricht. 1 zeigt beispielsweise, dass einige Ebenen keine Knoten aufweisen, während andere tausende Knoten aufweisen. Es sollte ziemlich einfach sein, eine Ebene einer Bonsai-Struktur über viele zusammenhängende Pipelinestufen zu verteilen, wenn die Speicheranforderungen einer einzigen Stufe unzureichend sind, für die Ebenen in der Nähe der Wurzel wird jedoch weiterhin nur eine sehr begrenzte Speichergröße erforderlich sein.
  • IVE.A Netzwerksystem unter Verwendung einer Bonsai-Struktur
  • 18 zeigt eine Implementierung einer bevorzugten Ausführungsform eines erfindungsgemäßen Netzwerksystems. Dieses Netzwerksystem weist mehrere Hosts 18.10–18.13 auf. Jeder Host weist einen ihm zugeordneten Router 18.20 – 18.23 auf. Präfixe von Adressen werden unter Verwendung von Bonsai-Tries in den Routern gespeichert. Bonsai-Tries sind, wie vorstehend beschrieben wurde, Implementierungen von Binär-Tries, wobei mit Adressen in Beziehung stehende Präfixe derart gespeichert sind, dass in jedem Knoten des Bonsai-Trie ein Präfix gespeichert und kein Knoten leer ist.
  • Vorstehend wurden lediglich bestimmte Ausführungsformen der vorliegenden Erfindung beschrieben, für Fachleute ist jedoch ersichtlich, dass innerhalb des Schutzumfangs der vorliegenden Erfindung Modifikationen und Änderungen vorgenommen werden können.

Claims (2)

  1. Verfahren zum Umwandeln eines Trie mit gespeicherten Adressen in einen tiefenoptimierten Subtrie, in dem alle Knoten Adressen darstellen, wobei das Verfahren die Schritte aufweist: a) Finden einer untersten Ebene des Trie, die einen vollen Knoten aufweist, und Spezifizieren der untersten Ebene durch i, wobei i eine ganze Zahl ist; b) Untersuchen jedes Knotens auf einer Ebene i – 1; c) Verschieben eines Präfix nach oben, wenn auf der Ebene i – 1 ein leerer Knoten vorhanden ist, vom Boden des tieferen Subtries des leeren Knotens; und d) Fortsetzen der Vereinigung, bis der Wurzelknoten erreicht ist.
  2. Verfahren nach Anspruch 1, wobei die Adressen Internetadressen sind und der Trie in einem IP-Router angeordnet ist.
DE60032674T 1999-05-11 2000-02-09 Verfahren zum Suchen von Adressen Expired - Lifetime DE60032674T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30927099A 1999-05-11 1999-05-11
US309270 1999-05-11

Publications (2)

Publication Number Publication Date
DE60032674D1 DE60032674D1 (de) 2007-02-15
DE60032674T2 true DE60032674T2 (de) 2007-05-16

Family

ID=23197472

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60032674T Expired - Lifetime DE60032674T2 (de) 1999-05-11 2000-02-09 Verfahren zum Suchen von Adressen

Country Status (3)

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

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 华为技术有限公司 一种基于树形数据结构的最长前缀匹配方法和装置
WO2010106680A1 (ja) * 2009-03-19 2010-09-23 富士通株式会社 記憶媒体、トライ木生成方法およびトライ木生成装置
JP5387092B2 (ja) * 2009-03-27 2014-01-15 富士通株式会社 記憶媒体およびトライ木生成方法
JP5493431B2 (ja) * 2009-03-31 2014-05-14 富士通株式会社 記憶媒体、トライ木生成方法およびトライ木生成装置
JP5670993B2 (ja) * 2012-12-25 2015-02-18 日本電信電話株式会社 単一パス集約による木構造の再構成装置及び方法及びプログラム
JP5667158B2 (ja) * 2012-12-25 2015-02-12 日本電信電話株式会社 部分木集約による木構造の再構成装置及び方法及びプログラム
CN103560962A (zh) * 2013-11-04 2014-02-05 神州数码网络(北京)有限公司 以太网交换机主机路由表项自动更新方法及交换机
JP6006740B2 (ja) * 2014-02-27 2016-10-12 ウイングアーク1st株式会社 インデックス管理装置
EP3145134B1 (de) * 2014-06-10 2019-12-18 Huawei Technologies Co., Ltd. Umsetzungsvorrichtung und umsetzungskonfigurationsverfahren
WO2019074744A1 (en) * 2017-10-09 2019-04-18 Fovia Inc. METHOD AND SYSTEM FOR PREDICTING BITS USING A STATISTICAL MODEL
EP4175233B1 (de) * 2021-06-25 2024-05-08 New H3C Technologies Co., Ltd. Paketanpassungsverfahren und -vorrichtung, netzwerkvorrichtung und 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
WO1996000945A1 (en) * 1994-06-30 1996-01-11 International Business Machines Corp. 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
JP2001517024A (ja) * 1997-09-15 2001-10-02 エフィシャント ネットワーキング アクティエボラーグ 高速ルーティング・ルックアップのための方法とシステム

Also Published As

Publication number Publication date
JP3570323B2 (ja) 2004-09-29
EP1063827A2 (de) 2000-12-27
DE60032674D1 (de) 2007-02-15
EP1063827A3 (de) 2005-11-02
EP1063827B1 (de) 2007-01-03
JP2000324172A (ja) 2000-11-24

Similar Documents

Publication Publication Date Title
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE60313371T2 (de) Verwendung von baumartigen "Bitmap" Datenstrukturen
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE60216938T2 (de) Gleichzeitiges durchsuchen verschiedener tabellen in einem inhaltsadressierbaren speicher
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE69912410T2 (de) Schnelles zeichenkettensuchen und -indizieren
DE69831246T2 (de) Verfahren zur einrichtung eines assoziativen speichers mit digitaler trie struktur
DE69838180T2 (de) Verfahren und rechnerprogrammprodukt zur klassifizierung von in einem netzwerkstack verarbeiteten netzübertragungspaketen
US6594655B2 (en) Wildcards in radix- search tree structures
DE69330675T2 (de) Verbesserte Paketstruktur für Netzschicht
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
DE69422935T2 (de) Verfahren und vorrichtung zum vergleichen von datensequenzen variabler länge
DE69927109T2 (de) Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen
US6625612B1 (en) Deterministic search algorithm
DE60311462T2 (de) Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation
Warkhede et al. Multiway range trees: scalable IP lookup with fast updates
DE69424315T2 (de) Vorrichtung und verfahren zum abbilden von bits
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition