DE60024611T2 - Längentestvergleich in präfixnachschlagtabellen - Google Patents

Längentestvergleich in präfixnachschlagtabellen Download PDF

Info

Publication number
DE60024611T2
DE60024611T2 DE60024611T DE60024611T DE60024611T2 DE 60024611 T2 DE60024611 T2 DE 60024611T2 DE 60024611 T DE60024611 T DE 60024611T DE 60024611 T DE60024611 T DE 60024611T DE 60024611 T2 DE60024611 T2 DE 60024611T2
Authority
DE
Germany
Prior art keywords
entry
section
value
search
node table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60024611T
Other languages
English (en)
Other versions
DE60024611D1 (de
Inventor
Patrick Droz
Jan Van Lunteren
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE60024611D1 publication Critical patent/DE60024611D1/de
Application granted granted Critical
Publication of DE60024611T2 publication Critical patent/DE60024611T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

  • 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:
  • Figure 00150001
  • 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:
  • Figure 00150002
  • 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.
  • Figure 00260001
  • 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.

Claims (21)

  1. Verfahren zum Ermitteln einer Ausgangsleitung als Reaktion auf ein bestimmtes eingehendes Suchargument anhand der Auswahl des längsten passenden Präfixes und mit Hilfe von Suchoperationen in einer Mehrebenenanordnung von Knotentabellen; bei welchem Tabelleneinträge in Knotentabellen aufeinander folgender Ebenen in aufeinander folgenden Schritten so lange abgefragt werden, bis eine Abschlusskennung gefunden wird; wobei das Verfahren mit einem ausgewählten Abschnitt des Sucharguments beginnt, welches eine einzeln zu ermittelnde Länge aufweist, die als Index für das Zugreifen auf einen ersten Tabelleneintrag in einer ersten Ebene der Knotentabellen dient, und in Abhängigkeit von dem eine Arbeitskennung (F1, F2) umfassenden Tabelleneintrag so lange sucht, bis ein letzter Tabelleneintrag gefunden wird, und dann die Suche mittels eines der folgenden Schritte auf der nächsten Ebene fortsetzt: (a) Durchführen einer Prüfung anhand einer Auswahlinformation (CNT), um einen weiteren Abschnitt auszuwählen; (b) Definieren des ausgewählten Abschnitts durch einen für diesen Abschnitt charakteristischen Index mit Hilfe der Auswahlinformation (CNT); (c) Durchführen der Prüfung und anschließend Definieren des Abschnitts durch den Index mit Hilfe der Auswahlinformation (CNT1, CNT2).
  2. Verfahren nach Anspruch 1, bei welchem das Auswählen und das Zugreifen auf einen Eintrag in der Knotentabelle durch Folgendes bewirkt wird: – einen Tabellenbasiszeiger (PTR), der auf eine Knotentabelle mit einem Eintrag zeigt, auf den anschließend zugegriffen werden soll, und – einen Versatzwert.
  3. Verfahren nach Anspruch 2, bei welchem der Versatzwert ermittelt wird: – ENTWEDER mit Hilfe eines Abschnitts (Index) des Sucharguments, wobei dieser Abschnitt als Reaktion auf die im betreffenden Eintrag enthaltene Auswahlinformation (CNT) ausgewählt wird; – ODER mit Hilfe des binären Prüfergebnisses eines Vergleichs zwischen einem gespeicherten Prüfwert (Test Value, TV) und einem ausgewählten Abschnitt (Prüfargument) des Sucharguments.
  4. Verfahren nach Anspruch 2, bei welchem der Versatzwert als Reaktion auf das binäre Prüfergebnis eines Vergleichs zwischen einem Prüfwert, der in einem Eintrag der Knotentabelle gespeichert ist, und einem ausgewählten Abschnitt des Sucharguments ermittelt wird und, a) wenn das Prüfergebnis gleich einem ersten Binärwert (z.B. „0") ist, der Versatzwert einen bestimmten Wert aufweist, der in der vom Tabellenbasiszeiger (PTR) ausgewählten Knotentabelle einen vorgegebenen Eintrag auswählt, und, b) wenn das Prüfergebnis gleich einem zweiten Binärwert (z.B. „1") ist, als Reaktion auf die im betreffenden Eintrag enthaltene zweite Auswahlinformation (CNT2) ein anderer Abschnitt des Sucharguments ausgewählt und als Index zum Ermitteln eines Versatzwertes für das Zugreifen auf einen Eintrag in der Knotentabelle verwendet wird, die durch den Tabellenbasiszeiger (PTR) ausgewählt wurde.
  5. Verfahren nach Anspruch 2, bei welchem der Versatzwert als Reaktion auf das binäre Prüfergebnis eines Vergleichs zwischen einem Prüfwert, der in einem Eintrag der Knotentabelle gespeichert ist, und einem ausgewählten Abschnitt des Sucharguments ermittelt wird und, a) wenn das Prüfergebnis gleich einem ersten Binärwert (z.B. „0") ist, der Versatzwert einen bestimmten ersten Wert aufweist, der in der vom Tabellenbasiszeiger (PTR) ausgewählten Knotentabelle einen vorgegebenen ersten Eintrag auswählt, und, b) wenn das Prüfergebnis gleich einem zweiten Binärwert (z.B. „1") ist, der Versatzwert einen bestimmten zweiten Wert aufweist, der in der vom Tabellenbasiszeiger (PTR) ausgewählten Knotentabelle einen vorgegebenen zweiten Eintrag auswählt.
  6. Verfahren nach Anspruch 1, welches die folgenden Schritte umfasst: – Auswählen eines Eintrags in einer Knotentabelle; – Entnehmen eines Prüfwertes (TV) aus dem Eintrag der Knotentabelle oder aus einem vorgegebenen Eintrag in einer Knotentabelle, wenn die Anwendung eines Prüfwertes angezeigt wird; – Auswählen eines Abschnitts als Prüfargument aus dem Suchargument als Reaktion auf die zum Prüfwert gehörende Auswahlinformation (CNT; CNT1), die im Eintrag der ausgewählten Knotentabelle enthalten ist; – Vergleichen des Prüfwertes mit dem aus dem Suchargument ausgewählten Abschnitt des Prüfarguments; und – Verwenden des Prüfergebnisses zum Ermitteln des nächsten Schrittes in der Suchprozedur.
  7. Verfahren nach Anspruch 6, bei welchem – ein Tabellenbasiszeiger (PTR) dem Eintrag der ausgewählten Knotentabelle entnommen wird, um eine andere Knotentabelle auszuwählen; und – der Prüfwert (TV) einem vorgegebenen Eintrag der anderen ausgewählten Knotentabelle entnommen wird.
  8. Verfahren nach Anspruch 6, bei welchem – ein Tabellenbasiszeiger (PTR) dem Eintrag der ausgewählten Knotentabelle entnommen wird, um eine andere Knotentabelle auszuwählen; und – der Prüfwert (TV) ebenfalls demselben Eintrag der ausgewählten Knotentabelle entnommen wird.
  9. Verfahren nach Anspruch 6, bei welchem der Tabellenbasiszeiger (PTR) dem Eintrag der ausgewählten Knotentabelle entnommen wird, um eine andere Knotentabelle auszuwählen; und bei welchem als Reaktion auf das binäre Prüfergebnis die weiteren folgenden Teilschritte ausgeführt werden: – ENTWEDER Ermitteln einer zweiten Auswahlinformation (CNT2) aus dem betreffenden Eintrag und Verwenden dieser Information zum Entnehmen eines anderen Abschnittes aus dem Suchargument, wobei dieser Abschnitt wiederum als Index zum Ermitteln eines Versatzwertes für das Zugreifen auf einen Eintrag in der anderen ausgewählten Knotentabelle verwendet wird; – ODER Zugreifen auf einen vorgegebenen Speicherplatz in der anderen Knotentabelle.
  10. Verfahren nach Anspruch 6, bei welchem dem Eintrag der ausgewählten Knotentabelle ein Tabellenbasiszeiger (PTR) entnommen wird, um eine andere Knotentabelle auszuwählen; und – in Abhängigkeit vom binären Prüfergebnis auf einen von zwei vorgegebenen Einträgen in der anderen Knotentabelle zugegriffen wird.
  11. Verfahren nach Anspruch 6, bei welchem, wenn im betreffenden Eintrag eine Wiederholungskennung (Reuse, R) enthalten ist und eines von zwei möglichen Prüfergebnissen erhalten wurde: – eine andere Auswahlinformation (CNT2) zum Ermitteln eines anderen ausgewählten Abschnitts aus dem Suchargument verwendet wird, wobei dieser Abschnitt zumindest teilweise oder ganz mit einem Teil des zuvor als Prüfargument aus dem Suchargument ausgewählten Abschnitts identisch ist, und – der andere ausgewählte Abschnitt dann ENTWEDER als Indexwert für das Zugreifen auf einen anderen Eintrag in der Knotentabelle ODER als Prüfargument verwendet wird, das mit einem anderen Prüfwert verglichen werden soll.
  12. Verfahren nach Anspruch 11, bei welchem – der andere ausgewählte Abschnitt Teil des zuvor verwendeten Abschnitts des Prüfarguments ist.
  13. Verfahren nach Anspruch 11, bei welchem – der andere ausgewählte Abschnitt gleich dem zuvor verwendeten Abschnitt des Prüfarguments ist oder dieses einschließt.
  14. Gespeicherte Datenstruktur, welche Knotentabellen mit jeweils einer Vielzahl von Einträgen umfasst, in einem System zum Ermitteln einer Ausgangsleitung als Reaktion auf ein bestimmtes eingehendes Suchargument anhand der Auswahl des längsten passenden Präfixes und mit Hilfe von Suchoperationen in einer Mehrebenenanordnung von Knotentabellen; – in welcher auf jeden Eintrag der Knotentabelle entweder als Reaktion auf einen ausgewählten Abschnitt des Sucharguments, der als Tabellenindex dient, oder als Reaktion auf das Ergebnis einer Vergleichsprüfung direkt zugegriffen wird; wobei die Einträge der Knotentabelle Basiseinträge enthalten, in denen jeweils zumindest Folgendes enthalten ist: – eine Arbeitskennung (F1, F2), mit deren Hilfe mindestens Folgendes ausgewählt werden kann: eine Prüfung, ein Index, eine Prüfung mit nachfolgender Definition eines Index, ein letzter Eintrag; – eine Auswahlinformation (CNT; CNT1, CNT2) zum Auswählen eines Abschnitts des Sucharguments zur Verwendung als Tabellenindex und/oder für den Prüfschritt, wenn die Arbeitskennung (F1, F2) nicht dem letzten Eintrag entspricht; und – einen Tabellenbasiszeiger (PTR), der die nächste zu verwendende Knotentabelle anzeigt.
  15. Gespeicherte Datenstruktur nach Anspruch 14, welche ferner Folgendes umfasst: – einen Prüfwert (TV), der mit einem ausgewählten Abschnitt des Sucharguments verglichen werden soll; oder – eine Abschlusskennung (END), die entweder eine Ausgangsleitungskennung (NHP) oder eine Stoppkennung (NIL) ist.
  16. Gespeicherte Datenstruktur nach Anspruch 14, bei welcher ein Basiseintrag zusätzlich noch Folgendes beinhalten kann: – eine zweite Auswahlinformation (CNT2) zum Entnehmen eines weiteren Abschnitts aus dem Suchargument während der Verarbeitung desselben Eintrags.
  17. Gespeicherte Datenstruktur nach Anspruch 14, bei welcher mindestens einige der Basiseinträge in einer Knotentabelle Folgendes enthalten: – zwei unterschiedliche Auswahlinformationen (CNT1, CNT2) zum Auswählen jeweils eines Abschnitts aus dem betreffenden Suchargument, wobei einer der ausgewählten Abschnitte einen Indexwert für das Zugreifen auf einen Eintrag in einer Knotentabelle, die durch einen Tabellenbasiszeiger (PTR) ausgewählt wurde, und der andere der ausgewählten Abschnitte ein Prüfargument darstellt, das mit einem gespeicherten Prüfwert (TV) verglichen werden soll.
  18. Gespeicherte Datenstruktur nach Anspruch 14, bei welcher mindestens eine der Knotentabellen Folgendes enthält: a) einen Bereich mit vorgegebenen Einträgen, auf die als Reaktion auf ein Prüfergebnis direkt zugegriffen wird, und b) einen anderen Bereich mit Einträgen, auf die als Reaktion auf einen Versatzwert zugegriffen wird, der von einem Indexwert abgeleitet wurde, welcher ein ausgewählter Abschnitt des Sucharguments ist.
  19. Gespeicherte Datenstruktur nach Anspruch 14, bei welcher – mindestens einer der Basiseinträge zusätzlich einen Prüfwert (TV) enthält, der mit einem ausgewählten Abschnitt des Sucharguments verglichen werden soll.
  20. Gespeicherte Datenstruktur nach Anspruch 14, bei welcher – mindestens einer der Basiseinträge außer einem Tabellenbasiszeiger (PTR) für die nächste zu verwendende Knotentabelle noch eine Kennung enthält, dass ein Prüfwert (TV) verwendet werden soll, der in einem vorgegebenen Speicherplatz in der durch den Tabellenbasiszeiger bestimmten nächsten Knotentabelle enthalten ist.
  21. Gespeicherte Datenstruktur nach Anspruch 14, bei welcher – ein Basiseintrag eine Wiederholungsmarkierung (R) beinhaltet, welche anzeigt, dass nach der ersten Auswahl eines ersten Abschnitts als Prüfargument ein anderer Abschnitt aus dem Suchargument ausgewählt wird, der zumindest teilweise mit dem gesamten zuvor ausgewählten Abschnitt des Sucharguments oder einem Teil davon identisch ist.
DE60024611T 1999-05-12 2000-05-09 Längentestvergleich in präfixnachschlagtabellen Expired - Lifetime DE60024611T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP99810421 1999-05-12
EP99810421 1999-05-12
PCT/IB2000/000596 WO2000070832A1 (en) 1999-05-12 2000-05-09 Longest matching prefix lookup

Publications (2)

Publication Number Publication Date
DE60024611D1 DE60024611D1 (de) 2006-01-12
DE60024611T2 true DE60024611T2 (de) 2006-07-27

Family

ID=8242826

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60024611T Expired - Lifetime DE60024611T2 (de) 1999-05-12 2000-05-09 Längentestvergleich in präfixnachschlagtabellen

Country Status (5)

Country Link
EP (1) EP1175756B1 (de)
JP (1) JP3663355B2 (de)
KR (1) KR100424244B1 (de)
DE (1) DE60024611T2 (de)
WO (1) WO2000070832A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW494322B (en) * 2000-05-29 2002-07-11 Ibm Prefix search method and data structure using compressed search tables
EP1423957A1 (de) 2001-08-29 2004-06-02 Nokia Corporation Verfahren und vorrichtung zurbinarendatenfolgeklassifizierung
CN1319325C (zh) * 2003-04-16 2007-05-30 华为技术有限公司 一种采用哈希链表查找路由表项的方法
US7565343B2 (en) 2004-03-31 2009-07-21 Ipt Corporation Search apparatus and search management method for fixed-length data
CN114448890B (zh) * 2021-12-22 2023-10-10 天翼云科技有限公司 寻址方法、装置、电子设备及存储介质
CN115174373B (zh) * 2022-06-30 2024-04-30 山东有人智能科技有限公司 modbus设备点表生成方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266706B1 (en) * 1997-09-15 2001-07-24 Effnet Group Ab Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams

Also Published As

Publication number Publication date
EP1175756B1 (de) 2005-12-07
EP1175756A1 (de) 2002-01-30
JP3663355B2 (ja) 2005-06-22
DE60024611D1 (de) 2006-01-12
KR100424244B1 (ko) 2004-03-22
WO2000070832A1 (en) 2000-11-23
KR20020015687A (ko) 2002-02-28
JP2003500901A (ja) 2003-01-07

Similar Documents

Publication Publication Date Title
DE60313371T2 (de) Verwendung von baumartigen "Bitmap" Datenstrukturen
DE69927109T2 (de) Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE60129643T2 (de) Verfahren und Gerät für die Ermittlung vom längsten Prefixzusammenbringen in einem Kommunikationsnetz
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE60222622T2 (de) Verfahren und Vorrichtung zur Paketkopfteilverarbeitung
DE60316696T2 (de) Verfahren zum Routen von Datenpaketen und Routing-Vorrichtung
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE60026676T2 (de) Paketklassifizierungsautomat
DE69333422T2 (de) Auffindung von Zeichenketten in einer Datenbank von Zeichenketten
DE19743266C1 (de) Verfahren zum Hinzufügen bzw. Entfernen einer Adresse in einem teilbesetzten Suchbaum
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE10012123A1 (de) Speicherzugriff im Ethernet
EP0619667A1 (de) Verfahren zum Zugriff auf Adressmerkmale von Kommunikationsteilnehmern mit einem ersten Adress Bereich, beim Versenden von Datenpaketen
DE19743267C1 (de) Verfahren zum Aufsuchen einer Adresse in einem teilbesetzten, nicht balancierten Binären Baum
DE10058443A1 (de) Verfahren zum Klassifizieren von Datenpaketen
DE10028563B4 (de) Kommunikationssteuerungseinheit
DE69937185T2 (de) Verfahren und vorrichtung zum paketbeförderungsnachschlagen mit einer reduzierten anzahl von speicherzugriffen
DE60311588T2 (de) Verfahren und Vorrichtung zum hierarchischen präfixbasierten Routen
DE602004012210T2 (de) Verfahren and System für eine beschleunigte Paketverarbeitung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)