-
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.
-
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 19–20 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:
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
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.
-
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.
-
Tabelle
4: Statistiken für
tiefenoptimierte Bonsai-Struktur für jede Position.
-
Tabelle
5: Statistiken für
suchoptimierte Bonsai-Struktur (bezüglich der Trace-Verteilung)
für jede
Position.
-
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.