-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft die Suche nach dem längsten passenden
Präfix,
insbesondere zur Ermittlung einer Ausgangsleitung oder eines Weiterleitungsweges
in einem Vermittlungsknoten als Reaktion auf ein vorgegebenes Suchargument
wie beispielsweise eine IP-Adresse.
-
HINTERGRUND
DER ERFINDUNG
-
In
modernen Kommunikationsnetzen, insbesondere im Internet, werden
viele Benutzer mit dem Netz verbunden, um adressierte Nachrichten
(oder Pakete) auszutauschen. Übertragungsleitungen
des Netzes werden durch Vermittlungszentralen oder Leitwegknoten
(Weiterleitungsknoten) miteinander verbunden, die als Reaktion auf
die Adresse einer empfangenen Nachricht (Paket) diese Nachricht
zu einer aus mehreren Ausgangsleitungen ausgewählten Leitung weiterleiten.
Die Leitwegknoten müssen
zur Weiterleitung jedes Paketes dessen Adresse prüfen. Dies
trifft auch auf die Nachrichtenübermittlung
in OSI-, ATM- und anderen Kommunikationsnetzen zu.
-
Die
Probleme der heutigen Netze bestehen (a) in der großen Anzahl
verschiedener Benutzer oder Adressen im System und (b) in der riesigen
Anzahl zu übertragender
Nachrichten (Pakete). Ein Leitwegknoten (Leitwegzentrale) im Internet
muss möglicherweise
etwa eine Million Nachrichten pro Sekunde bearbeiten.
-
Eine
weitere Herausforderung besteht darin, dass es unterschiedliche „Domänen" der Adressen gibt. Jede
der verwendeten Adressen kann eine fest vorgegebene Gesamtlänge (z.B.
32 Bit) haben; ganze Gruppen von Adressen mit einem gemeinsamen „Präfix" werden derselben
Domäne
zugeordnet und benötigen
somit denselben Leitweg, z.B. alle Adressen mit dem Präfix „4.22/16". Ein Problem besteht
darin, dass diese bei der Prüfung
der Leitwege zu untersuchenden Domänen und somit Präfixe in
vielen Systemen (z.B. im Internet) unterschiedlich groß sind.
Ein weiteres Problem besteht darin, dass es dabei Ausnahmen geben
kann, d.h., dass die Adressen von Unterdomänen möglicherweise andere Leitwege
erfordern als die Mehrzahl der Adressen der jeweiligen Hauptdomäne. Deshalb
müssen
diese bestimmten Adressen während
der Leitwegermittlung „herausgefiltert" werden. Wenn sich
zum Beispiel die Benutzer mit Adressen der Gruppe 4.22xxx.xxx (4.22/16)
im selben Bereich befinden, können
die Adressen der Unterdomäne
4.22.48.xxx ... 4.22.55.xxx (4.22.48/20) und die Adressen einer
anderen, noch kleineren Unterdomäne
4.22.17.192 ... 4.22.17.255 (4.22.17.192/26) die Weiterleitung über andere
Leitungen erfordern, da sich ihre jeweiligen Empfänger (Benutzer)
in einem anderen Bereich befinden.
-
Dies
führt zu
dem Leitwegverfahren gemäß dem längsten passenden
Präfix
(oder dem am besten übereinstimmenden
Präfix),
bei dem jeweils eine Prüfung
der Adressen in jedem Leitwegknoten (Leitwegzentrum) durchgeführt werden
muss.
-
Zur
Leitwegermittlung gemäß dem längsten passenden
Präfix
sind mehrere Verfahren entwickelt worden. Die meisten Verfahren
beruhen auf der Verwendung hierarchischer baumartiger Strukturen.
In solchen Baumstrukturen sind die Informationen über die
zu wählende
Ausgangsleitung bzw. den zu wählenden
Leitweg (z.B. ein Zeiger auf den nächsten Rechnerstandort) in
einem Blatt (Ausgangspunkt/Endpunkt) des Baums gespeichert, während der
Pfad durch den Baum durch die geprüften Adressen festgelegt wird.
Um den richtigen Pfad zu finden, d.h., um die Verzweigung (in jedem
Knoten des Baums) zu ermitteln, wird jede Adresse (oder Teile der
Adresse) entweder (a) in jedem Knoten mit darin gespeicherten Adressinformationen
verglichen oder (b) direkt (oder indirekt) zur Steuerung der Verzweigung,
d.h. zum Auswählen
des nächsten
zu verfolgenden Teilpfades, verwendet.
-
Unabhängig vom
eingesetzten Verfahren muss immer Folgendes erreicht werden:
- (1) die Adressprüfung und die Leitwegermittlung
muss innerhalb eines Zeitintervalls erfolgen, welches der im schlimmsten
Fall (worst case) zur Verfügung
stehenden mittleren Zeit (d.h. bei hohem Verkehrsaufkommen) für jede Nachricht
(Paket) entspricht;
- (2) jede Adressprüfung
sollte so wenige Speicherzugriffe und Verarbeitungsschritte wie
möglich
beanspruchen; und
- (3) das für
die Tabellen (Datenbanken) benötigte
Speichervolumen sollte so klein wie möglich sein.
-
Während zwischen
den Punkten (2) und (3) ein Kompromiss eingegangen wird kann, muss
das erste Kriterium unbedingt erfüllt werden, um zu große Verzögerungen
oder gar das Blockieren eines Leitwegknotens zu vermeiden.
-
Ein
weiterer Aspekt beim Aufbau solcher Leitwegsysteme besteht in deren
Flexibilität,
d.h. in der Möglichkeit,
die Struktur an veränderliche
Domänengrößen und
Adressverteilungen im System anzupassen.
-
Bekannte Lösungsansätze
-
Zur
Ermittlung des längsten
passenden Präfixes
eines vorgegebenen Sucharguments und zum Erstellen eines entsprechenden
(zugehörigen)
Zeigers oder einer Ausgangskennung wurden mehrere Verfahren und Systeme
vorgeschlagen.
-
In
der Patentanmeldung WO 99/14906 werden ein Verfahren und ein System
für die
schnelle Leitwegermittlung beschrieben. Bei einem Verfahren zur
IP-Leitwegermittlung in einer Leitwegtabelle, welche Einträge von beliebig
langen Präfixen
mit zugehörigen
Informationen über
den nächsten
Vermittlungsstandort in einer Tabelle der nächsten Standorte umfasst, wird
eine Darstellung der Leitwegtabelle in Form eines durch die Präfixe aller
Leitwegtabelleneinträge
definierten vollständigen
Präfixbaums
(7) gespeichert, um zu ermitteln, wohin die IP-Datenpakete weitergeleitet
werden sollen. Ferner werden eine Darstellung eines Bitvektors (8), welcher
Daten eines Querschnitts durch den Präfixbaum (7) in einer bestimmten
Tiefe (D) umfasst, und eine Matrix aus Zeigern gespeichert, welche
auf die Tabelle der nächsten Standorte
und auf einen Block der nächsten
Ebene hinweisende Indizes umfasst. Der Bitvektor (8) wird in Bitmasken
aufgeteilt und eine Darstellung der Bitmasken in einer Zuordnungstabelle
gespeichert. Dann werden eine Matrix von Codewörtern, die jeweils einen Zeilenindex
in der Zuordnungstabelle und einen Zeigerversatz codieren, und eine
Matrix von Basisadressen gespeichert. Zum Schluss wird die Suche
durchgeführt.
Dieses Schema lässt
keine schnelle inkrementelle Suche zu und führt zu einer langsamen Aktualisierung.
-
T.
Bell und D. Kulp stellen in dem Artikel „Longest-match String Searching
for Ziv-Lempel Compression",
SOFTWARE PRACTICE & EXPERIENCE,
GB, JOHN WILEY & SONS
LTD., CHICHESTER, Bd. 23, Nr. 7, 12. Juli 1993, S. 757 bis 771,
XP000655855, ISSN 0038-0644, acht Strukturen vor, die zur Beschleunigung der
Suche eingesetzt werden können,
darunter Anpassungen von vier Verfahren, die normalerweise zur Suche mit
genauer Übereinstimmung
verwendet werden. Zur Suche nach genauer Übereinstimmung werden bisher das
Hash-Verfahren; binäre
Suchbäume,
gekoppelte Bäume
und der Boyer-Moore-Suchalgorithmus
verwendet, es wird jedoch gezeigt, wie diese Verfahren zum Ermitteln
der längsten Übereinstimmungen
angepasst werden können.
Diese Algorithmen benötigen
zur Speicherung einer Leitwegtabelle bestimmter Größe ein größeres Speichervolumen.
-
In
dem Artikel „Faster
Lookups using Controlled Prefix Expansion" von V. Srinivasan und G. Varghese, Perform.
Eval. Rev. (USA), Bd. 26, Nr. 1, Juni 1998, S. 1 bis 10, wird ein
verfahren beschrieben, bei welchem nur eine ausgewählte Anzahl
unterschiedlicher Präfixlängen zugelassen
wird und die Länge der
Präfixe
von vorliegenden Adressen erweitert wird, wenn diese nicht den ausgewählten Längen entspricht.
Die Suchdatenbank ist so aufgebaut, dass sie mehrere Tabellenebenen
aufweist, wobei jede Ebene einer der Präfixlängen entspricht. Dann kann
eine inkrementale Suche durchgeführt
werden, indem auf jeder Ebene nur ein Teil der vorliegenden Suchadresse
verwendet wird. Die Tabelleneinträge auf jeder Ebene enthalten
Zeiger auf die nächste
zu durchsuchende Tabelle mit dem nächsten Teil der Suchadresse.
Durch diesen Suchansatz können das
erforderliche Speichervolumen und die Anzahl der benötigten Arbeitsschritte
verringert werden. Damit kann jedoch kein direkter Vergleich eines
Abschnitts der Suchadresse mit einem Prüfwert durchgeführt werden,
um eine sofortige Entscheidung zu fällen, wenn ein bestimmtes Präfix vorliegt.
Außerdem
müssen
bei dem vorgeschlagenen Verfahren Präfixe erweitert werden, anstatt
alle Präfixe
direkt in ihrer wahren Länge
zu vergleichen. Infolge der auf vorher ausgewählten Längen beruhenden Struktur muss
die gesamte Struktur der Datenbank angepasst werden, wenn sich die
ausgewählten
Längen ändern. Ferner
kann auf jeder Ebene nur eine Abschnittslänge genommen werden, obwohl
auf den verschiedenen Ebenen unterschiedlich lange Abschnitte der
Suchadressen verwendet werden können.
-
In
der US-Patentschrift Nr. 5 781 772 (Wilkinson et al.) mit dem Titel „Compressed
Prefix Matching Database Searching" wird ein Verfahren zur Verringerung
des Suchaufwandes und der Speicheranforderungen durch Zeigerkomprimierung
(d.h. Ausschließen
von Zeigern auf NULL-Knoten) und Pfadkomprimierung (Ausschließen von
Knoten, die keine brauchbaren Zusatzinformationen liefern, und Speichern
der zugehörigen Stelle(n)
als Pfadzeichenfolge, die mit entsprechenden Teilen der vorliegenden
Adresse verglichen wird). Dieses Verfahren liefert jedoch nur eine
Aufteilung von Suchadressen in Abschnitte einer fest vorgegebenen
Länge (oder
eines Mehrfachen dieser Länge)
und bietet offenbar keine Kombination aus indexierter Zeigeradressierung
von Knoteneinträgen
und dem Vergleich von Adressenteilen ausgewählter Länge mit gespeicherten Werten.
-
In
dem Artikel von T. Harbaum, D. Meier, M. Zitterbart und D. Brokelmann „Hardware-Assist
for IPv6 Routing Table Lookup",
veröffentlich
in Proc. Internat. Symposium on Broadband Networks (SYBEN '98), Zürich, Schweiz,
Mai 1998, wird ein Suchverfahren mit einem binären Baum zur Ermittlung der
bestmöglichen Übereinstimmung
für Präfixe unterschiedlicher
Länge von
IP-Adressen beschrieben. Das Verfahren gestattet den Vergleich von
Teilen unterschiedlicher Länge
in Adresspräfixen
mit gespeicherten Werten, um eine kompaktere Suchdatenbank zu ermöglichen.
Dabei sind aber nur binäre
Suchentscheidungen möglich,
sodass in vielen Fällen
für ein
und dieselbe Ausgangsleitung mehrere Vergleiche und Entscheidungen
erforderlich sind.
-
Ein
anderer Lösungsansatz
zur Verarbeitung von unterschiedlichen Präfixlängen bei einer Suche mit Vergleichsoperationen
wird in einem Artikel von P. Gupta, S. Lin und N. McKeown mit dem
Titel „Routing Lookups
in Hardware at Memory Access Speeds", veröffentlicht in Proc. IEEE INFOCOM '98, Bd. 3, S. 240
bis 247, beschrieben. Das beschriebene Verfahren liefert für 32-Bit-Adressen
zwei Tabellen. Eine Tabelle wird durch die ersten 24 Bits adressiert
und weist 224 Einträge auf, das heißt einen
Eintrag für
jeden der 24-Bit-Präfixe. Wenn
das vorliegende Präfix
24 Bits oder weniger aufweist, enthält der betreffende Eintrag
den Zeiger auf die zugehörige
Ausgangsleitung. Wenn das vorliegende Präfix länger ist, enthält der Eintrag
einen Zeiger auf eine zweite Tabelle, die durch Kombination des
Zeigers mit den restlichen acht Bits des Präfixes (also nach Erweiterung
auf 32 Bits) adressiert wird. Die Einträge der zweiten Tabelle enthalten
die Zeiger auf die Ausgangsleitungen für die längeren Präfixe. Durch eine zusätzliche
Zwischentabelle kann die Größe der zweiten Tabelle
in speziellen Fällen
(bei Präfixen
mit weniger als 32 Bits) verringert werden. Bei diesem Verfahren
sind je Adressenvergleich nur ein, zwei oder drei Speicherzugriffe
erforderlich, jedoch müssen
ein großes
Speichervolumen bereitgestellt und beim Zufügen oder Löschen eines Präfixes viele
Einträge
geändert
werden.
-
Die
US-Patentschrift Nr. 5 386 413 (McAuley et al.) mit dem Titel „Fast Multilevel
Hierarchical Routing Table Lookup Using Content Adressable Memory" ermöglicht eine
schnelle Simultansuche nach verschiedenen Präfixabschnitten einer vorliegenden
Adresse, erfordert jedoch einen inhaltsadressierbaren Speicher.
-
Keines
dieser beschriebenen Verfahren und Systeme ermöglicht die Verwendung von Abschnitten ausgewählter Länge von
Suchargumenten in einer flexiblen Kombination, bei der sie teilweise
als Prüfwerte und
teilweise als Adressindizes verwendet werden, um die längsten passenden
Präfixe
in einer Mehrtabellenstruktur mit Einträgen zu ermitteln, für die veränderliche,
unterschiedliche Zugriffskriterien gelten.
-
AUFGABEN DER EFINDUNG
-
Eine
Aufgabe der Erfindung besteht darin, ein Verfahren und eine Datenstruktur
zur Ermittlung eines längsten
passenden Präfixes
für eine
vorliegende Eingangsadresse oder ein Suchargument in einer Mehrebenenargumentanordnung
von gespeicherten Tabellen bereitzustellen, das bei jeder Suche
nur wenige Suchschritte erfordert, nur geringe Forderungen an das
Speichervolumen stellt und eine flexible Anpassung der gespeicherten
Datenstruktur an die Verteilung verwendeter Präfixe in einem System erlaubt.
-
Die
Erfindung zur Lösung
dieser Aufgabe ist in den Ansprüchen
definiert. Die Erfindung ermöglicht
insbesondere die Verwendung von Abschnitten veränderlicher Länge des
vorliegenden Sucharguments entweder als Prüfwerte oder als Adressierungsindizes
sowie eine Kombination aus Prüfung
und anschließenden
indexierten Zugriff mit solchen Abschnitten veränderlicher Länge während des
Suchvorgangs zur Ermittlung der längsten passenden Präfixe und
deren zugehörigen
Ausgangskennungen.
-
Mit
Hilfe der Erfindung ist es möglich,
die Datenstruktur der verwendeten Knotentabelle und die Suchprozedur
nach den längsten
passenden Präfixen
optimal an die reale Verteilung der Präfixe im gesamten Adressraum
anzupassen, d.h. in Abhängigkeit
davon, ob eine weit verstreute oder eine gehäufte Verteilung vorliegt, unterschiedliche
Strukturen zu verwenden.
-
Der
Suchpfad nach den am häufigsten
verwendeten Präfixen
kann je nach der Zugriffshäufigkeit
einzelner Präfixe
optimiert werden, indem sie einer Behandlung unterzogen werden,
welche die Suche verkürzt, während bei
seltener verwendeten Präfixen
mit einer etwas längeren
Suche andere Vorteile zum Tragen kommen, z.B. die Einsparung von
Speichervolumen. Die Erfindung erlaubt infolge des möglichen
Direktvergleichs eines langen Adressenabschnitts mit einem gespeicherten
Prüfwert
bei bestimmten Präfixen
eine schnelle Beendigung der Suche. Außerdem ist es durch die Verwendung
der Erfindung möglich,
bei einer einzelnen Suchoperation zwischen mehreren (mehr als zwei)
Alternativen auszuwählen.
-
Mit
Hilfe der Erfindung ist auch eine zweistufige Adressierung von Tabelleneinträgen möglich, d.h., eine
Knotentabelle wird durch einen Tabellenbasiszeiger und der Eintrag
innerhalb der Tabelle durch einen Versatz als Reaktion auf ein Prüfergebnis
oder eine Indexoperation ausgewählt,
sodass zwischen den Einträgen
schnell und flexibel hin- und hergesprungen werden kann.
-
Die
Erfindung ermöglicht
auch die Verwendung von Einträgen
mit konstanter Größe in den
Knotentabellen, wodurch sich die Datenstruktur und der Zugriff auf
Einträge
sowie deren Aktualisierung vereinfachen.
-
Schließlich bietet
eine Wiederverwendungsfunktion in einem System, welches die Erfindung
verwendet, die Möglichkeit,
zuerst eine Prüfung
an einem langen Abschnitt des Sucharguments und anschließend in Abhängigkeit
vom Prüfergebnis
eine Feinprüfung
in kleineren Schritten durchzuführen.
-
Im
Folgenden werden beispielhafte Ausführungsarten der Erfindung unter
Bezug auf die Zeichnungen beschrieben.
-
LISTE DER
ZEICHNUNGEN
-
1 zeigt
eine erste allgemeine, beispielhafte Ausführungsart der Erfindung.
-
2 ist
ein Flussdiagramm für
die Ausführungsart
von 1, welches die verschiedenen möglichen Schritte zur Prüfung eines
Sucharguments zeigt.
-
3 veranschaulicht
ein zweites Beispiel eines Ausführungsart
der Erfindung, bei welchem Prüfwerte
nicht für
sich, sondern in entsprechenden Tabelleneinträgen gespeichert werden.
-
4 zeigt
ein drittes Beispiel einer Ausführungsart,
bei welcher Teile von Suchargumenten (IP-Adressen) wiederverwendet
werden können,
die bereits geprüft
worden sind.
-
5 (5A und 5B)
veranschaulichen das Erstellen der Struktur einer Knotentabelle
für einen bestimmten
Satz unterschiedlicher Präfixwerte.
-
6 (6A und 6B)
zeigt das Erstellen der optimalen Struktur einer Knotentabelle ausgehend von
dem in 5 gezeigten Fall.
-
7 veranschaulicht
die Auswahl von Prüfwerten
und Indizes sowie das sich daraus ergebende Verzweigungsschema für die Prozedur
von 5 zum Erstellen der Tabellenstruktur.
-
8 veranschaulicht
die Auswahl von Prüfwerten
und Indizes sowie das sich daraus ergebende Verzweigungsschema für die Prozedur
von 6 zum Erstellen der Tabellenstruktur.
-
DETAILLIERTE
BESCHREIBUNG DER ERFINDUNG
-
Im
Folgenden werden drei Beispiele einer Ausführungsart der Erfindung beschrieben
(eine Basisausführung
und zwei Varianten). In einem der letzten Abschnitte wird ein Beispiel
einer optimierten Datenstruktur angegeben, welches zeigt, wie eine
solche Datenstruktur für
einen bestimmten Satz von Präfixen
von Suchargumenten erstellt und optimiert werden kann.
-
Es
ist wichtig anzumerken, dass ausgewählte Teile des Sucharguments
mit veränderlicher
Länge entweder
als Index (Wert) zum Auswählen/Zugreifen
auf Knotentabelleneinträge
oder als Prüfargumente
verwendet werden, die mit gespeicherten Prüfwerten verglichen werden sollen,
dass aber eine Kombination beider Möglichkeiten verwendet wird,
um die Suchprozedur an die vorhandene oder erwartete Verteilung
der vorhandenen Präfixe
anzupassen. Dadurch können
entweder die Verarbeitungsgeschwindigkeit, die Anzahl der Arbeitsschritte
oder die Speicheranforderungen für
die Suchdatenbank optimiert werden. Darüber hinaus ist es nicht erforderlich,
zum Zugreifen auf einen Eintrag in der Suchdatenbank die volle Adresse
anzugeben. Stattdessen wird zum Auswählen der entsprechenden Knotentabelle
ein Tabellenbasiszeiger verwendet, und der Zugriff innerhalb der
Tabelle kann mit Hilfe eines Versatzwertes (ausgehend von der Basisadresse
der Tabelle) oder eines Prüfergebnisses
erfolgen.
-
Bei
der anschließenden
Beschreibung werden die folgenden Begriffe und Abkürzungen
verwendet:
- • Suchargument:
eine IP-Adresse oder Paketadresse oder ein Schlüsselwort usw.
- • Knotentabelle:
eine Tabelle mit Einträgen,
die jeweils Suchinformationen oder eine Information zum Ausgangsleitweg
enthalten (die Knotentabellen sind in mehreren aufeinander folgenden
Ebenen angeordnet)
- • Index:
ein Wert zur Ermittlung des Versatzwertes von der Basisadresse beim
Zugreifen auf die Einträge der
Knotentabelle
- • Versatzwert:
ein Wert zur Kennzeichnung des Abstands zwischen der Startadresse
einer Knotentabelle und dem Platz des Eintrags, auf den zugegriffen
werden soll
- • Tabellenbasiszeiger:
ein Zeiger zum Anzeigen der Startadresse einer Knotentabelle = PTR
- • Abschlusskennung:
eine Kennung in einem letzten Eintrag in einem Suchpfad = ENDE;
entweder eine Ausgangskennung oder eine Stoppkennung, die nicht
zu einem Ausgang führt
(dies kann eine leere Kennung = NULL sein).
- • Ausgangskennung:
ein Zeiger des ausgewählten
Ausgangsleitpfades (z.B. ein Next Hop Pointer (Zeiger auf den nächstgelegenen
Rechnerstandort) = NHP)
- • Prüfwert: eine
in einem Tabelleneintrag gespeicherte Bitfolge = TV, die mit einem
Teil eines Sucharguments verglichen werden soll
- • Prüfergebnis:
das Ergebnis des Vergleichs zwischen einem Prüfwert und einem Prüfargument
(einem ausgewählten
Teil des Sucharguments); dies ist ein Binärwert (Übereinstimmung/keine Übereinstimmung oder
1/0).
-
Erstes Beispiel einer
Ausführungsart
(Basisausführung)
-
1 zeigt
schematisch eine Basisausführung
einer Suchdatenstruktur gemäß der Erfindung;
die Beschreibung wird durch das Flussdiagramm von 2 unterstützt. Es
werden ausgewählte
Knotentabellen (nur solche, die im Beispiel verwendet werden) in
verschiedenen Ebenen zusammen mit der entsprechend markierten IP-Adresse
(= Suchargument) gezeigt.
-
Beim
ersten Beispiel kommen in den Knotentabellen die folgenden vier
verschiedenen Einträge
vor:
– Basiseinträge: | 1)
F1 + F2/CNT1/CNT2/PTR 2) F1 + F2/CNT/PTR |
– Zusatzeinträge: | 3)
F1 + F2/ENDE = Ausgangskennung (NHP) ODER Stoppkennung (NULL) 4)
TV = nur Prüfwert
(TV) |
-
Bei
den Basiseinträgen
zeigen F1 + F2 die auszuführende
Operation an (Vergleich mit einem Prüfwert/einfach indexierter Zugriff
auf einen Tabelleneintrag/Kombination beider); CNT oder CNT1 und
CNT2 stellen Auswahlinformationen dar, welche die Anzahl der Bits
anzeigen, welche für
die geforderte(n) Operation(einen) dem Suchargument (als Prüfargument
oder als Index) entnommen werden sollen; und PTR ist ein Tabellenbasiszeiger,
der die Startadresse in einer Knotentabelle anzeigt, an welcher
sich der Prüfwert
befindet oder von welcher der(die) nächste(n) Eintrag(Einträge) abgerufen
werden soll(en).
-
Ein
Zusatzeintrag enthält:
Eine der Markierungen F1 und F2 (welche einen letzten Eintrag kennzeichnen)
mit einer Ausgangskennung (nächstgelegener
Rechnerstandort NHP) oder mit einer Stoppkennung (NULL), welche
anzeigt, dass die Suche abgeschlossen ist (kein Ausgangsleitweg
verfügbar);
oder der Zusatzeintrag enthält
nur einen einzigen Prüfwert
(TV).
-
Bei
diesem sowie weiteren Beispielen verwendete Markierungskombinationen
haben folgende Bedeutung:
-
-
Der
hierfür
(sowie für
die beiden anderen Beispiele) verwendete Satz an Präfixen und
zugehörigen
Informationen zum nächstgelegenen
Rechnerstandort sieht wie folgt aus:
-
-
Das
bei diesem Beispiel beschriebene Basisverfahren ist durch Folgendes
gekennzeichnet:
- • der Prüfwert ist am Anfang einer Knotentabelle
auf der nächsten
Ebene gespeichert
- • jede
Prüfung
hat ein binäres
Ergebnis: „Übereinstimmung" oder „keine Übereinstimmung"
- • keine
Wiederverwendungsmarkierung; jeder Teil der IP-Adresse wird höchstens einmal verwendet
-
Die
Prozedur der Basisausführungsart
verläuft
wie folgt:
-
Schritt 1:
-
Die
ersten 16 Bits der IP-Adresse (Suchargument) werden als ein erster
Abschnitt ausgewählt
und als Index für
eine Tabelle der Ebene 1 mit 216 = 65 536
Einträgen
verwendet. Der Eintrag mit dem Index 1046 wird ausgewählt, wenn
die IP-Adresse mit 4.22/16 (d.h. einem Präfix gleich 4.22/16) beginnt.
-
Schritt 2:
-
Dieser
Eintrag mit dem Index 1046 weist eine Markierungskombination „11" auf; das bedeutet,
dass zuerst eine Prüfung
und dann – unter
bestimmten Bedingungen – eine
Indexadressierung durchgeführt
werden soll. Ausgehend von dem ausgewählten Eintrag wird ein in der
IP-Adresse aus 8 aufeinander folgenden Bits bestehender Abschnitt
(= CNT1) ausgewählt
und mit einem Prüfwert
17 verglichen. Dieser Prüfwert
befindet sich im ersten (untersten) Eintrag der Knotentabelle auf
der nächsten
Ebene 2, die durch den Tabellenbasiszeiger im Eintrag 1046 gekennzeichnet
wird. Wenn die Prüfung
zum Ergebnis „keine Übereinstimmung" führt, wird
in der Tabelle auf der Ebene 2 der Eintrag „keine Übereinstimmung" ausgewählt, welcher
ein letzter Eintrag ist, der eine Stoppkennung „-" enthält, mit der Bedeutung, dass
für dieses
Präfix
kein Ergebnis (Ausgangsleitweg) vorliegt.
-
Wenn
die Prüfung
zum Ergebnis „Übereinstimmung" führt, wird
innerhalb der IP-Adresse ein aus 2 aufeinanderfolgenden Bits (=
CNT2) ausgewählt
und im Teil „Übereinstimmung" der ausgewählten Tabelle
auf der Ebene 2 als Index verwendet. Dieser Teil beginnt oberhalb
der beiden „fest
vorgegebenen" Einträge für den Prüfwert, und
das Ergebnis „keine Übereinstimmung" umfasst 4 Einträge, auf
die mittels eines vom Index abgeleiteten Versatzwertes zugegriffen
wird. (In der Figur sind die Indexwerte 0 ... 3 dargestellt; diese
ergeben die Versatzwerte 2 ... 5, welche zu den Einträgen 2 ...
5 in der entsprechenden Knotentabelle führen, deren Eintrag 0, der
den Prüfwert
enthält,
durch den Tabellenbasiszeiger gekennzeichnet wird.
- – Eine
IP-Adresse mit dem Präfix
B (Indexbits 00) führt
zur Auswahl des Eintrags mit dem Index 0, der ein letzter Eintrag
(Markierungen = 00) ist und den NHP „2" (Zeiger auf den nächstgelegenen Rechnerstandort) enthält.
- – Eine
IP-Adresse mit dem Präfix
C (Indexbits 01) führt
zur Auswahl des Eintrags mit dem Index 1, der ebenfalls ein letzter
Eintrag (Markierungen = 00) ist und den NHP „3" enthält.
- – Eine
IP-Adresse, deren erste 26 Bits denen des Präfixes D gleich sind (gegenwärtig verwendete
Indexbits 11), führt
zur Auswahl des Eintrags mit dem Index 3, der eine zusätzliche
Prüfung
erfordert (Markierungen = 10), die im Folgenden als Schritt 3 beschrieben
wird.
- – Alle
anderen IP-Adressen, bei denen das Ergebnis der früheren Prüfung „Übereinstimmung" lautete (das sind
die restlichen übereinstimmenden
Adressen mit den Indexbits 10), haben das Präfix A und führen zur Auswahl des Eintrags
mit dem Index 2, der ein letzter Eintrag (Markierungen = 00) ist
und den NHP „1" enthält.
-
Schritt 3:
-
Ausgehend
vom Eintrag mit dem Index 3 im Übereinstimmungsteil
der Tabelle auf der Ebene 2 wird ein aus 6 aufeinander folgenden
Bits (CNT = 6) in der IP-Adresse bestehender Abschnitt ausgewählt und
mit einem Prüfwert
51 verglichen (der im untersten Eintrag der Tabelle auf der Ebene
3 zu finden ist, welcher durch den im entsprechenden Eintrag der
zuletzt verwendeten Knotentabelle auf der Ebene 2 enthaltenen Tabellenbasiszeiger
gekennzeichnet wird).
- – Für eine IP-Adresse mit dem Präfix D (mit
einer Bitfolge 110011 = 51 an den entsprechenden Adresspositionen)
führt die
Prüfung
zum Ergebnis „Übereinstimmung" und dieses zum Eintrag „Übereinstimmung" in der ausgewählten Knotentabelle
auf der Ebene 3, welcher ein letzter Eintrag (Markierungen = 00)
ist, der den NHP „4" enthält.
- – Für IP-Adressen,
die kein Präfix
D haben, führt
der Vergleich mit dem Wert 51 zu einem Zustand „keine Übereinstimmung", sodass in der ausgewählten Knotentabelle
auf der Ebene 3 der Eintrag „keine Übereinstimmung" ausgewählt wird,
der ebenfalls ein letzter Eintrag (Markierungen = 00) ist und den
NHP „1" enthält. Diese
Adressen haben ein Präfix
A (alle restlichen Adressen mit dem Präfix A, d.h. alle außer denen, die
bereits in Schritt 2 verarbeitet worden sind).
-
Das
Flussdiagramm von 2 veranschaulicht, wie die Einträge als Reaktion
auf die Markierungen (Bitpaar an den ersten Positionen) verarbeitet
werden, die in jedem Basiseintrag enthalten sind. Dieses Schema
entspricht der obigen Beschreibung.
-
Zweites Beispiel einer
Ausführungsart
-
3 zeigt
ein zweites Beispiel einer Ausführungsart.
Dieses ist dem ersten Beispiel sehr ähnlich, wobei der Unterschied
darin besteht, dass die zu verwendenden Prüfwerte nicht in separaten Einträgen (einer Knotentabelle
auf der nächsten
Ebene), sondern direkt in dem betreffenden Eintrag, für den die
Prüfung
durchgeführt
werden soll, enthalten sind. Aus diesem Grunde müssen die Einträge der Knotentabelle
ein Zusatzfeld haben, das in der folgenden Aufstellung gezeigt wird:
– Basiseinträge: | 1)
F1 + F2/CNT1/CNT2/TV/PTR 2) F1 + F2/CNT/TV/PTR |
– Zusatzeinträge: | 3)
F1 + F2/ENDE = Ausgangskennung (NHP) oder Stoppkennung (NULL) |
-
Es
ist klar, dass diese Variante besonders dann von Vorteil ist, wenn
die Prüfwerte
für gewöhnlich kurz (nur
wenige Bits lang) sind, während
die Lösung
des ersten Beispiels besser geeignet ist, wenn die Suchdatenbank
viele lange Prüfwerte
enthält.
Diese zweite Lösung
spart den für
die separaten Prüfwerteinträge benötigten Speicherplatz
ein und vermeidet außerdem
die zusätzlichen
Abrufoperationen zum Abrufen der Prüfwerte.
-
Es
liegt auf der Hand, dass ausgehend von 3 und nach
der Beschreibung des ersten Beispiels für das zweite Beispiel keine
weitere detaillierte Beschreibung erforderlich ist.
-
Drittes Beispiel
einer Ausführungsart
-
4 zeigt
ein weiteres, drittes Beispiel einer Ausführungsart. Auch dieses Beispiel ähnelt im
Großen und
Ganzen dem ersten Beispiel. Hier wird ebenfalls derselbe Satz von
Präfixen
A ... D verwendet. Im Gegensatz zum ersten (und zweiten) Beispiel
ist beim vorliegenden Beispiel die Wiederverwendung von Teilen (Bitgruppen)
des Sucharguments (IP-Adresse) vorgesehen, die in einem vorangehenden
Schritt bereits bewertet wurden. Beim ersten (und zweiten) Beispiel
werden immer nachfolgende (neue) Bitgruppen aus dem Suchargument
für Prüfoperationen
oder als Indizes zum Zugreifen auf die Einträge der Knotentabellen verwendet.
-
Die
mehrfache Verwendung eines ausgewählten Teils (Bitgruppe) aus
einer IP-Adresse (Suchargument) kann sich in der folgenden Situation
als vorteilhaft erweisen: Wenn ein bei einer Anwendung vorkommender
Satz von Präfixen
eines oder einige wenige sehr spezielle (lange) Präfixe enthält, kann
zuerst ein langer Abschnitt dieses speziellen Präfixes mit einem entsprechenden
Prüfwert
verglichen werden, um bei Übereinstimmung
sofort ein Ergebnis zu erhalten. Wenn hingegen das Ergebnis „keine Übereinstimmung" lautet und anzeigt,
dass dieses spezielle Präfix
nicht vorhanden ist, wird ein Teil des bereits verwendeten langen
Präfixes
für eine
weitere Operation verwendet, um andere, ähnlichere Präfixe in
mehreren nachfolgenden Operationen voneinander zu unterscheiden.
Dies kann in Systemen, in denen solche speziellen isolierten Präfixe vorkommen,
die Suche (Prüfung
der IP-Adresse) beschleunigen.
-
Die
Gruppe der für
dieses Beispiel zu verwendenden Einträge der Knotentabelle ähnelt der
des Beispiels 1, mit dem Unterschied, dass die Basiseinträge eine
zusätzliche
Markierung („Wiederverwendung") enthalten.
– Basiseinträge: | 1)
F1 + F2/R/CNT1/CNT2/PTR 2) F1 + F2/R/CNT/PTR |
– Zusatzeinträge: | 3)
F1 + F2/ENDE = Ausgangskennung (NHP) oder Stoppkennung (NULL) 4)
TV = nur Prüfwert
(TV) |
-
Die
Prozedur bei diesem dritten Beispiel gemäß 4 verläuft wird
folgt (der Satz der Präfixe
A ... D ist dem des ersten Beispiels gleich, aber die in den Knotentabellen
gespeicherte Datenstruktur ist natürlich verschieden):
Die
Markierung Wiederverwendung (Reuse, R) in einem Basiseintrag wird
gesetzt, wenn ein bestimmter Abschnitt einer IP-Adresse zum ersten
Mal verwendet wird und (unter bestimmten, vom Prüfwert abhängenden Bedingungen) noch einmal
verwendet werden soll.
-
Schritt 1: (wie beim Basisverfahren
von Beispiel 1)
-
Die
ersten 16 Bits der IP-Adresse werden als erster Abschnitt ausgewählt und
als Index zur Suche in einer Tabelle auf der Ebene 1 verwendet,
die 216 = 65 536 Adressen umfasst. Der Eintrag
beim Index 1046 wird ausgewählt,
wenn die IP-Adresse mit 4.22/16 beginnt (d.h. ein Präfix gleich
4.22/16 hat).
-
Schritt 2:
-
Ausgehend
von dem ausgewählten
Eintrag beim Index 1046 in der Tabelle auf der Ebene 1 wird aus der
IP-Adresse ein aus 16 aufeinander folgenden Bits (CNT) bestehender
Abschnitt ausgewählt
und mit einem Prüfwert
17 243 (Bitfolge 0001 0001 1111 0011) verglichen. Die Markierung
R (Wiederverwendung) wird gesetzt und zeigt an, dass mindestens
ein Teil des ausgewählten
Abschnitts noch einmal verwendet werden kann. Der Prüfwert befindet
sich an der untersten Position einer Knotentabelle auf der Ebene
2, die durch den Tabellenbasiszeiger im Eintrag 1046 gekennzeichnet
wird.
-
Wenn
die Prüfung
zum Ergebnis „Übereinstimmung" führt, wird
der Eintrag „Übereinstimmung" aus der ausgewählten Knotentabelle
auf der Ebene 2 abgerufen. Dies ist ein letzter Eintrag (Markierung
= 00), welcher den NHP „4" enthält. Dieser
Fall gilt für
IP-Adressen mit dem Präfix
D.
-
Wenn
die Prüfung
zum Ergebnis „keine Übereinstimmung" führt, wird
der Eintrag „keine Übereinstimmung" aus der ausgewählten Knotentabelle
auf der Ebene 2 abgerufen. Dieser Eintrag zeigt eine kombinierte Prüf-/Indexoperation
(Markierung = 11) an, die im folgenden Schritt 3 beschrieben wird,
und wird für
alle IP-Adressen ausgewählt,
die mit 4.22 (Bitfolge 0000 0100 0001 0110) beginnen, aber keinen
Präfix
D haben.
-
Schritt 3:
-
Ausgehend
von dem Eintrag „keine Übereinstimmung" in der Knotentabelle
auf der Ebene 2 (der zuerst eine Prüfoperation ausgehend von CNT1
= 8 angibt) wird aus dem bei der vorigen Operation verwendeten Abschnitt
der 16 Bits der IP-Adresse ein neuer Abschnitt von 8 aufeinander
folgenden Bits ausgewählt.
Diese erneute Verwendung wurde durch die im Eintrag 1046 auf der
Ebene 1 auf 1 gesetzte Markierung R festgelegt. Die Markierung R
(Wiederverwendung) im Eintrag „keine Übereinstimmung" auf der Ebene 2
wird auf 0 gesetzt, da der jetzt ausgewählte Abschnitt von 8 Bits nicht
noch einmal verwendet wird.
-
Wenn
die Prüfung
zum Ergebnis „keine Übereinstimmung" führt, wird
in einer Knotentabelle auf der Ebene 3 der durch den Tabellenbasiszeiger
in dem zuletzt abgerufenen Eintrag angegebene Eintrag „keine Übereinstimmung" ausgewählt. Der
neu ausgewählte
Eintrag ist ein letzter Eintrag (Markierungen = 00), der eine Stoppkennung „-" enthält (dieser
bedeutet, dass für
IP-Adressen mit einem vom 4.22.17 abweichenden Präfix kein
Ausgangsleitweg angegeben ist und die Suche beendet ist).
-
Wenn
die Prüfung
zum Ergebnis „Übereinstimmung" führt, wird
die im Eintrag „keine Übereinstimmung" der Tabelle auf
der Ebene 2 angegebene Indexierungsoperation unter Verwendung von
CNT2 = 2 ausgeführt.
Somit wird ein Abschnitt von zwei aufeinander folgenden Bits (nach
den 8 Adressbits, die für
die Prüfoperation
im vorigen Schritt ausgewählt
wurden) aus der IP-Adresse ausgewählt und als Index zum Abrufen eines
Eintrags im Teil „Übereinstimmung" der ausgewählten Tabelle
auf der Ebene 3 verwendet. Dieser Teil hat vier Einträge, von
denen einer durch einen Versatzwert gekennzeichnet wird, der von
den beiden soeben ausgewählten
Indexbits abgeleitet wurde.
- – Eine IP-Adresse
mit dem Präfix
B (Indexbits 00) führt
zur Auswahl des Eintrags im Teil „Übereinstimmung" der Tabelle auf
der Ebene 3, der dem Index 0 zugeordnet ist. Dies ist ein letzter
Eintrag, welcher den NHP „2" enthält.
- – Eine
IP-Adresse mit dem Präfix
C (Indexbits 01) führt
zur Auswahl des Eintrags im Teil „Übereinstimmung" der Tabelle auf
der Ebene 3, der dem Index 1 zugeordnet ist. Dies ist ebenfalls
ein letzter Eintrag, welcher den NHP „3" enthält.
- – IP-Adressen,
die kein Präfix
B, C oder D haben (aber mit der Folge 4.22.17 beginnen), müssen an
dieser Stelle die Indexbits 10 oder 11 haben und führen somit
zur Auswahl eines der beiden übrigen
Einträge
im Bereich „Übereinstimmung" der Tabelle auf
der Ebene 3, d.h. der Einträge
mit dem Index 2 oder 3. Beide enthalten den NHP „1", der dem Präfix A entspricht.
-
Schlussfolgerung:
Aus dem Vergleich der Basislösung
von Beispiel 1 mit der Variante von Beispiel 3 ist zu erkennen,
dass beide zu demselben Ergebnis führen: IP-Adressen mit den Präfixen A,
B, C oder D werden richtig zu den Ausgangsleitwegen geleitet, welche
den NHP 1, 2, 3 bzw. 4 entsprechen. Bei allen anderen IP-Adressen
wird die Suche beendet. Die Basislösung (Beispiel 1) kann jedoch
in Situationen vorteilhafter sein, bei denen Adressen mit den Präfixen B
und C häufiger
vorkommen, da die Suche für
diese Präfixe
schneller erfolgt. Die Variante von Beispiel 3 wiederum eignet sich
besonders in Situationen, bei denen das Präfix D häufiger vorkommen, da die hier
Suche für
dieses Präfix
D schneller erfolgt.
-
Anmerkung
zur Auswahl von Einträgen:
Wie bereits zu Anfang erwähnt
und bei den drei Beispielen gezeigt, kann die Auswahl eines Eintrags
in einer Knotentabelle, der durch einen Tabellenbasiszeiger angezeigt
wurde, auf dreierlei Weise erfolgen:
Wenn eine Prüfung (Vergleich
mit einem gespeicherten Prüfwert)
durchgeführt
wurde, erhält
man ein binäres Ergebnis „Übereinstimmung" oder „keine Übereinstimmung". Dann gibt es zwei
Möglichkeiten:
- a) Jedes der beiden Ergebnisse löst eine
Auswahl eines bestimmten Eintrags aus der Knotentabelle aus, der
immer mit dem Ergebnis zusammenhängt
(vergleiche 4, Übergang von Ebene 1 zu Ebene
2).
- b) Eines der beiden Ergebnisse („keine Übereinstimmung") löst die Auswahl
eines bestimmten Eintrags in der Knotentabelle aus, der immer mit
dem Ergebnis zusammenhängt.
Das andere der beiden Ergebnisse („Übereinstimmung") löst die zusätzliche
Auswahl eines Indexwertes aus, der dann wiederum zur Auswahl eines
von zwei (oder vier, oder acht) Einträgen in einem speziellen Teil
(„Übereinstimmung") der entsprechenden
Knotentabelle verwendet wird (vergleiche 4, Übergang
von Ebene 2 zu Ebene 3).
-
Die
direkte Adressierung eines Eintrags (in einer Tabelle, in der keine
fest mit dem Ergebnis einer Prüfoperation
zusammenhängenden
Einträge
enthalten sind) unter Verwendung eines Indexwertes ist natürlich auch
möglich.
Dies ist z.B. im ersten Schritt auf der Ebene 1 von 1 und 4 der
Fall.
-
Diese
unterschiedlichen Möglichkeiten
zur Auswahl von Einträgen
ermöglichen
eine sehr flexible Anpassung der Suchprozedur und der Suchdatenbank
an die voraussichtliche Verteilung der Präfixe.
-
Erzeugung einer optimierten
Datenstruktur zur Präfixsuche
-
Bei
den drei oben beschriebenen Beispielen wurden die Elemente der unterschiedlichen
Datenstrukturen und die Basisoperationen allein und in Kombination
vorgestellt und erläutert,
wie sie von der erfindungsgemäßen Suchprozedur
zur Ermittlung der längsten
passenden Präfixe
verwendet werden. Wie oben erwähnt, ermöglichen
sie eine Optimierung des Suchprozesses in Bezug auf die Arbeits-
bzw. Speichergeschwindigkeit und die Anforderungen an den Prozessor.
Die Suchdatenbank muss so strukturiert und die Einträge müssen so
in der Knotentabelle angeordnet sein, dass sie am besten der voraussichtlichen
Verteilung der vorkommenden Präfixe
entsprechen.
-
Ein
Beispiel für
eine solche Optimierung wird in 5 (5A und 5B)
und 6 (6A und 6B)
sowie in 7 und 8 veranschaulicht
und im Folgenden erläutert.
-
Die
Art der Einträge
und die Bezeichnung der Felder sind genauso wie beim ersten Beispiel,
das am Anfang dieser detaillierten Beschreibung dargelegt wurde.
-
Der
für das
vorliegende Optimierungsbeispiel zugrunde gelegte Satz von Präfixen wird
im Folgenden gezeigt. Dieser Satz verschiedener Präfixe ist
natürlich
wesentlich kleiner als in Wirklichkeit. Zur Veranschaulichung des
Prinzips reicht dies jedoch aus.
-
-
5 zeigt für diesen Satz von Präfixen eine
erste Datenstruktur der Anordnung von Knotentabellen mit mehreren
Ebenen. Diese Datenstruktur wird auf folgende Weise erzeugt: Wenn
Präfixe
einen höchstwertigen
Teil (führendes
Präfix)
gemeinsam haben, wird dieser Teil ausgewählt und als Prüfwert für eine erste
Prüfoperation
gespeichert. Dann wird das nächste
Bit, d.h. das erste sich unterscheidende Bit, ermittelt, das als Index
zur Auswahl zwischen getrennten Suchpfaden dienen soll. Auf dieselbe
Weise wird auf einem bestimmten Suchpfad der gemeinsame höchstwertige
Teil des restlichen Teils der Präfixe
in diesem Suchpfad ausgewählt
und als Prüfwert
für Prüfoperationen
gespeichert. Dann wird das nächste
Bit, d.h. wiederum das erste sich unterscheidende Bit im restlichen
Teil der Präfixe
in diesem Suchpfad ermittelt, das als Index zur Auswahl zwischen
weiteren Suchpfaden dienen soll, usw. Wenn ein Präfix Teil
eines anderen, aber längeren
Präfixes ist
(und somit nur kürzer
ist, aber kein unterschiedliches Bit hat), wird kein Index verwendet,
da der Prüfwert bereits
die Bits bis zum Ende des kürzeren
Präfixes
erfasst, welche Teil des anderen Präfixes sind.
-
Die
Auswahl von Prüfwerten
und Indizes während
dieses Prozesses und das sich ergebende Verzweigungsschema sind
in 7 dargestellt. In dieser Figur zeigt ein rechteckiger
Kasten eine Testoperation (Vergleichsoperation) zwischen einem Abschnitt
der Adresse und der im Kasten gezeigten Bitfolge (Prüfwert).
Diese Prüfwerte
sind in den entsprechenden Einträgen
der Knotentabelle gespeichert. Ein doppelter Kreis zeigt eine Indexoperation
an, wobei die Anzahl der „b"s die Anzahl der
aufeinander folgenden Bits der zur Indexsuche verwendeten Bits darstellt
und ihre tatsächlichen
Werte auf den Ausgangsleitungen angegeben sind. Wenn das Ergebnis
einer Prüf-
oder Indexoperation zu einem Eintrag mit einer Ausgangskennung (NHP)
für ein
Präfix
führt,
wird das an diesem Ausgang durch den Buchstaben des Präfixes in
einem Kreis dargestellt.
-
Einzelheiten
der Prozedur: Das Präfix
A ist den Präfixen
B, C und D gemeinsam. Deshalb beginnt die Datenstruktur (5) mit einer Prüfoperation, die bis zum Ende
des Präfixes
A ('0000 1001 0001
01b') läuft. Die
restliche Teilen der Präfixe
B, C und D haben den Teil '00
100b' gemeinsam.
Daraus wird der Prüfwert,
der in der Tabelle auf der Ebene 2 gespeichert wird. Ein negatives
Prüfergebnis
bedeutet, dass das Präfix
A das längste
passende Präfix
für die
betreffenden Suchargumente war, und der zugehörige NHP „1" wird im Eintrag „keine Übereinstimmung" in der Tabelle auf
der Ebene 2 gespeichert.
-
Anschließend wird
ein Index aus einem Bit zur Auswahl zwischen zwei verschiedenen
Pfaden verwendet. Nur das Präfix
C ,verfolgt' den
Suchpfad mit einem Indexwert „0" weiter. Die restlichen
Bits des Präfixes C
werden als Prüfwert
in die untere Tabelle auf der Ebene 3 eingefügt. Ein positiver Prüfwert bedeutet,
dass das Präfix
C das längste
passende Präfix
ist, und deshalb wird der dem Präfix
C entsprechende NHP „3" im Eintrag „Übereinstimmung" gespeichert. Ein
negatives Prüfergebnis
bedeutet, dass das Präfix
A das längste passende
Präfix
für alle
entsprechenden Suchargumente ist, und deshalb wird der einem Präfix A entsprechende
NHP „1" im Eintrag „keine Übereinstimmung" gespeichert. Derselbe
Ansatz findet Verwendung entlang dem anderen Suchpfad für die Präfixe B und
D.
-
Die
in 5 (5A und 5B)
gezeigte Datenstruktur, die gemäß den oben
angegebenen Regeln erstellt wurde, kann weiter optimiert werden,
um die Suche für
bestimmte Präfixe
zu beschleunigen, indem die entlang des Suchpfades verwendeten Indizes
für diese
speziellen Präfixe
vergrößert und
die restlichen Teile der nachfolgenden Suchpfade angepasst werden
(zum Beispiel durch Beseitigen von Bits, die jetzt Bestandteil eines
Index geworden sind, aus einem Prüfwert in der nachfolgenden
Prüfoperation). 6 (6A und 6B)
zeigt eine optimierte Datenstruktur, in welcher die Suchgeschwindigkeit
für die
Präfixe
B und D durch Vergrößerung (Erhöhung der
Bitzahl) des Index von 1 auf 3 erhöht wird (dem Feld CNT2 im Eintrag „Übereinstimmung" beim Index „1" in Tabelle auf der
Ebene 2 von 6B wird ein Wert 3 zugewiesen).
-
8 zeigt
die Auswahl von Prüfwerten
und Indizes während
der Erstellung einer optimierten Suchdatenstruktur nach 6 und das sich ergebende Verzweigungsschema.
Ein Vergleich von 7 mit 8 zeigt,
wie die Struktur an einer bestimmten Stelle des Suchbaums geändert werden
kann, um die Suchgeschwindigkeit durch Verringerung der benötigten Operationen
zu erhöhen,
indem die Anzahl der in der Tabelle gespeicherten Einträge erhöht wird
und umgekehrt.