DE60305035T2 - Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen - Google Patents

Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen Download PDF

Info

Publication number
DE60305035T2
DE60305035T2 DE60305035T DE60305035T DE60305035T2 DE 60305035 T2 DE60305035 T2 DE 60305035T2 DE 60305035 T DE60305035 T DE 60305035T DE 60305035 T DE60305035 T DE 60305035T DE 60305035 T2 DE60305035 T2 DE 60305035T2
Authority
DE
Germany
Prior art keywords
node
search
pointer
field
leaf
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
DE60305035T
Other languages
English (en)
Other versions
DE60305035D1 (de
Inventor
Vijay San Jose Rangarajan
Dalit Sagi
William San Jose EATHERTON
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.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Application granted granted Critical
Publication of DE60305035D1 publication Critical patent/DE60305035D1/de
Publication of DE60305035T2 publication Critical patent/DE60305035T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • 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]

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft insbesondere Kommunikationen und Computersysteme; und insbesondere betrifft die Erfindung die Erzeugung und Verwendung von verbesserten Baum-Bitmap-Datenstrukturen beim Bestimmen einer Anpassung eines längsten Präfix, wie z. B. in einem Router, einem Paketvermittlungssystem oder anderen Kommunikationen oder einem anderen Computersystem, ohne jedoch darauf eingeschränkt zu sein.
  • HINTERGRUND DER ERFINDUNG
  • Die Kommunikationsindustrie ändert sich schnell, um sich auf aufkommende Technologien und den immer weiter zunehmenden Kundenbedarf einzustellen. Dieser Kundenbedarf für neue Anwendungen und erhöhte Leistung von existierenden Anwendungen treibt Kommunikationsnetz- und Systemanbieter dazu, Netze und Systeme mit größerer Geschwindigkeit und Kapazität (z. B. größerer Bandbreite) zu verwenden. Beim Versuch, diese Ziele zu erreichen, besteht eine übliche Vorgehensweise, die von vielen Kommunikationsanbietern angenommen wird, darin, die Paketvermittlungstechnologie zu verwenden. Öffentliche und private Kommunikationsnetze werden zunehmend unter Verwendung von verschiedenen Pakettechnologien, wie z. B. des Internetprotokolls (IP), aufgebaut und erweitert.
  • Eine Netzvorrichtung wie z. B. eine Vermittlungsstelle oder ein Router, empfängt typischerweise ein Paket, verarbeitet dieses und leitet dieses weiter oder verwirft dieses auf der Basis von einem oder mehreren Kriterien, einschließlich der Art des vom Paket verwendeten Protokolls, Adressen des Pakets (z. B. Quelle, Zielort, Gruppe), und der Art oder Qualität des angeforderten Dienstes. Außerdem werden typischerweise eine oder mehrere Sicherheitsoperationen an jedem Paket durchgeführt. Bevor jedoch diese Operationen durchgeführt werden können, muss typischerweise eine Paketklassifizierungsoperation am Paket durchgeführt werden.
  • Die IP-Weiterleitung erfordert eine Berechnung des längsten angepassten Präfix bei Drahtgeschwindigkeiten. Die aktuelle IP-Version IPv4 verwendet 32-Bit-Zieladressen und ein Kern-Internet-Router kann über 200000 Präfixe besitzen. Ein Präfix wird typischerweise mit einem Bitstring (z. B. 01*), gefolgt von einem "*", bezeichnet, um anzugeben, dass der Wert dieser nachlaufenden Bits egal ist. Für die Ziellenkung besteht jeder Präfix-Eintrag in einer Lenkungstabelle typischerweise aus einem Präfix und einem Wert des nächsten Abschnitts. Es soll beispielsweise angenommen werden, dass die Datenbank aus nur zwei Präfix-Einträgen (01* → L1; 0100* → L2) besteht. Wenn der Router ein Paket mit einer Zieladresse empfängt, die mit 01000 beginnt, entspricht die Adresse sowohl dem ersten Präfix (01*) als auch dem zweiten Präfix (0100*). Da das zweite Präfix die längste Anpassung ist, sollte das Präfix zum nächsten Abschnitt L2 gesandt werden. Andererseits solle ein Paket mit einer Zieladresse, die mit 01010 beginnt, zum nächsten Abschnitt L1 gesandt werden. Die Informationen des nächsten Abschnitts legen typischerweise einen Ausgangsport am Router und möglicherweise eine Datenübermittlungsabschnittsadresse fest.
  • 1A stellt ein Beispiel eines Satzes von Präfixen P1-9 dar, die als Knoten 1A-9A in Tabelle 10A und als Knoten 1B-9B im Ein-Bit-Trie 10B gezeigt sind. Im Ein-Bit-Trie 10B sind auch Platzhalter-/leere Knoten 11B-18B gezeigt, die nicht angepasste Knoten darstellen (d. h. Knoten, die nicht mögliche Ergebnisse als längstes angepasstes Präfix sind). Ein String von beispielsweise 1110000 entspricht beispielsweise den Präfixen P1 (1B), P2 (2B) und P5 (5B), wobei das längste angepasste Präfix P5 (B5) ist.
  • Eine bekannte Vorgehensweise wird typischerweise als "Baum-Bitmap" bezeichnet, die in Eatherton et al., "Data Structure Using a Tree Bitmap and Method for Rapid Classification of Data in a Database", US-Patentanmeldung 09/371 907, eingereicht am 10. August 1999, herausgegeben als US-Patent Nr. 6 560 610, beschrieben ist. Das Baum-Bitmap ist ein Mehrbit-Trie-Algorithmus, der eine Darstellung des Trie durch Gruppieren von Knoten in Sätze von Schrittweiten implementiert. Eine Schrittweite ist typischerweise als Anzahl von Baumebenen des binären Trie, die zusammen gruppiert werden, oder als Anzahl von Ebnen in einem Baum, auf die in einer einzelnen Leseoperation zugegriffen wird, welche mehrere Ebenen in einem Baum oder Trie darstellt, definiert. 1B stellt eine solche Unterteilung von Knoten P1-P9 (1B-9B) und leeren Knoten 11B-18B (1A) in Schrittweiten 20-25 dar. In diesem Beispiel besitzt die Schrittweite die Größe drei.
  • In einer bekannten Implementierung des Baum-Bitmap-Algorithmus werden alle Sohnknoten eines gegebenen Trie-Knotens zusammenhängend gespeichert, was die Verwendung von nur einem Zeiger für alle Söhne ermöglicht (der Zeiger zeigt auf den Beginn des Sohnknotenblocks), da jeder Sohnknoten als Versatz vom einzelnen Zeiger berechnet werden kann. Dies kann die Anzahl von erforderlichen Zeigern verringern und verkleinert die Größe von Trie-Knoten.
  • Außerdem sind zwei Bitmaps pro Trie-Knoten vorhanden, eines für die intern gespeicherten Präfixe und eines für die externen Zeiger. Das interne Bitmap weist ein 1-Bit auf, das für alle Präfixe gesetzt ist, die innerhalb dieses Knotens gespeichert sind. Für einen r-Bit-Trie-Knoten sind folglich (2')-1 mögliche Präfixe mit Längen von weniger als r vorhanden und folglich wird ein (2')-1-Bitmap verwendet. Das externe Bitmap enthält ein Bit für alle möglichen 2' Sohn-Zeiger. Ein Trie-Knoten besitzt eine feste Größe und enthält nur ein Bitmap für einen externen Zeiger, ein internes Bitmap für Informationen des nächsten Abschnitts und einen einzelnen Zeiger auf den Block von Sohnknoten. Die den internen Präfixen zugeordneten nächsten Abschnitte werden innerhalb jedes Trie-Knotens in einem diesem Trie-Knoten zugeordneten separaten Feld gespeichert. Für Speicherbelegungszwecke sind Ergebnis-Felder normalerweise ein geradzahliges Vielfaches der gemeinsamen Knotengröße (z. B. ist bei 16-Bit-Zeigern des nächsten Abschnitts und 8-Byte-Knoten ein Ergebnisknoten für bis zu vier Zeiger des nächsten Abschnitts erforderlich, zwei Ergebnisknoten sind für bis zu 8 erforderlich usw.). Das Setzen von Zeigern für nächste Abschnitte in ein separates Ergebnis-Feld erfordert potentiell zwei Speicherzugriffe pro Trie-Knoten (einen für den Trie-Knoten und einen zum Abrufen des Ergebnisknotens für gespeicherte Präfixe). Eine einfache verzögerte Strategie, nicht auf die Ergebnisknoten zuzugreifen, bis die Suche endet, wird typischerweise verwendet. Auf den Ergebnisknoten, der dem letzten Trie-Knoten entspricht, der in dem Pfad angetroffen wird, der ein gültiges Präfix enthielt, wird dann zugegriffen. Dies fügt nur eine einzelne Speicherreferenz am Ende neben der pro Trie-Knoten erforderlichen einen Speicherreferenz hinzu.
  • 1C stellt eine Darstellung einer Baum-Bitmap-Implementierung des in 1A-B gezeigten Präfixbeispiels dar. Wie gezeigt, stellt der Wurzelknoten 30 den Trie erster Ebene dar. Der Sohn-Zeiger 31 verbindet den Wurzelknoten 30 mit dem Sohn-Feld 40, das die Schrittweiten zweiter Ebene enthält. In der Ebene 3 sind zwei Sohn-Felder 50 und 60 vorhanden, die vom Sohn-Feld 40 jeweils durch Sohn-Zeiger 41 und 42 verbunden sind.
  • Eine Anpassung eines längsten Präfix wird gefunden, indem mit dem Wurzelkno ten begonnen wird. Die ersten Bits der Zieladresse (entsprechend der Schrittweite des Wurzelknotens, drei in diesem Beispiel) werden verwendet, um in das externe Bitmap am Wurzelknoten in beispielsweise der Position P zu indexieren. Wenn sich eine 1 in dieser Position befindet, dann ist ein gültiger Sohn-Zeiger vorhanden. Die Anzahl von 1-en, nicht einschließlich und links von dieser 1 (beispielsweise I), wird bestimmt. Da der Zeiger auf die Startposition des Sohn-Blocks (beispielsweise C) und die Größe jedes Trie-Knotens (beispielsweise S) bekannt ist, kann der Zeiger auf den Sohnknoten als C + (I * S) berechnet werden.
  • Vor dem Weiterbewegen zum Sohn wird das interne Bitmap geprüft, um festzustellen, ob ein gespeichertes Präfix vorhanden ist, das der Position P entspricht. Dazu soll sich vorgestellt werden, ausgehend von rechts nacheinander Bits von P zu entfernen und in die entsprechende Position des internen Bitmap zu indexieren, wobei nach der ersten angetroffenen 1 gesucht wird. Es soll beispielsweise angenommen werden, dass P 101 ist und eine Schrittweite von drei Bits am Wurzelknoten-Bitmap verwendet wird. Das am weitesten rechts liegende Bit wird zuerst entfernt, was zum Präfix 10* führt. Da 10* der sechsten Bitposition im internen Bitmap entspricht, wird eine Prüfung durchgeführt, um festzustellen, ob sich eine 1 in dieser Position befindet. Wenn nicht, werden die am weitesten rechts liegenden zwei Bits entfernt (was zum Präfix 1* führt). Da 1* der dritten Position im internen Bitmap entspricht, wird eine Prüfung durchgeführt, um festzustellen, ob sich eine 1 dort befindet. Wenn dort eine 1 gefunden wird, dann endet die Suche. Wenn dort keine 1 gefunden wird, dann werden die ersten drei Bits entfernt und eine Suche nach dem Eintag, der * entspricht, im ersten Eintrag des internen Bitmap wird durchgeführt.
  • Sobald festgestellt wurde, dass ein angepasstes gespeichertes Präfix innerhalb eines Trie-Knotens existiert; werden die Informationen entsprechend dem nächsten Abschnitt vom Ergebnisknoten, der dem Trie-Knoten zugeordnet ist, nicht unmittelbar wiedergewonnen. Vielmehr wird die Anzahl von Bits vor der Präfixposition gezählt, um seine Position im Ergebnis-Feld anzugeben. Das Zugreifen auf das Ergebnis-Feld würde eine zusätzliche Speicherreferenz pro Trie-Knoten brauchen. Stattdessen wird der Sohnknoten untersucht, während an die gespeicherte Präfixposition und den entsprechenden Mutter-Trie-Knoten erinnert wird. Die Absicht besteht darin, an den letzten Trie-Knoten T im Suchpfad, der ein gespeichertes Präfix enthielt, und an die entsprechende Präfixposition zu erinnern. Wenn die Suche endet (d. h. ein Trie-Knoten mit einer in der entsprechenden Position des externen Bitmap gesetzten 0 angetroffen wird), wird auf das Ergebnis-Feld entsprechend T in der bereits berechneten Position zugegriffen, um die Informationen des nächsten Abschnitts abzulesen.
  • 1D stellt einen Pseudocode einer Implementierung der vollen Baum-Bitmap-Suche dar. Er nimmt eine Funktion treeFunction (Baum-Funktion) an, die die Position des längsten angepassten Präfix, falls vorhanden, innerhalb eines gegebenen Knotens finden kann, indem er das interne Bitmap zu Rate zieht. "LongestMatch" (längste Anpassung) verfolgt einen Zeiger auf die bisher gesehene längste Anpassung. Die Schleife endet, wenn kein Sohn-Zeiger vorhanden ist (d. h. kein Bit im externen Bitmap eines Knotens gesetzt ist), auf den der verzögerte Zugriff des Ergebnisknotens, auf den durch LongestMatch gezeigt wird, durchgeführt wird, um den endgültigen nächsten Abschnitt zu erhalten. Der Pseudocode nimmt an, dass die gesuchte Adresse bereits in Schrittweiten unterteilt ist und stride[i] die der i-ten Schrittweite entsprechenden Bits enthält.
  • Indem die Schrittweite konstant gehalten wird, besteht ein Verfahren zum Verringern der Größe von jedem wahlfreien Zugriff darin, die internen und externen Bitmaps aufzuteilen, was manchmal als Spalt-Baum-Bitmaps bezeichnet wird. Dies wird durchgeführt, indem nur das externe Bitmap in jedem Trie-Knoten angeordnet wird. Wenn keine Speichersegmentierung besteht, können die Sohn-Trie-Knoten und die internen Knoten von der gleichen Mutter im Speicher zusammenhängend angeordnet werden. Wenn eine Speichersegmentierung existiert, ist es eine schlechte Konstruktion, dass die internen Knoten über mehrere Speicherbänke gestreut sind. Im Fall eines segmentierten Speichers, ist eine Option, dass ein Trie-Knoten Zeiger auf das Sohn-Feld, den internen Knoten und auf das Ergebnis-Feld aufweist.
  • Bei einer Alternative, wie in 1E dargestellt, liegt der Trie-Knotenpunkt am internen Knoten und der interne Knotenpunkt am Ergebnis-Feld. Um zu bewirken, dass diese Optimierung funktioniert, muss jeder Sohn ein Bit aufweisen, das angibt, ob der Mutterknoten ein Präfix enthält, das eine bisher längste Anpassung ist. Wenn sich ein Präfix im Pfad befinden würde, zeichnet die Nachschlagemaschine den Ort des internen Knotens (aus der Datenstruktur des letzten Knotens berechnet) als das bisher längste angepasste Präfix enthaltend auf, Wenn die Suche endet, dann wird auf den entsprechenden internen Knoten zugegriffen und dann wird auf den dem internen Knoten entsprechenden Ergebnisknoten zuge griffen. Es ist zu beachten, dass der Kernalgorithmus auf die Informationen des nächsten Abschnitts verzögert zugreift; der Spalt-Baum-Algorithmus greift selbst auf das interne Bitmap verzögert zu. Was bewirkt, dass dies funktioniert, ist, dass jedes Mal, wenn ein Präfix P in einem Knoten X gespeichert wird, alle Söhne von X, die P entsprechen, ein Bit speichern können, das angibt, dass die Mutter ein gespeichertes Präfix hat. Die Softwarereferenzimplementierung verwendet diese Optimierung, um die Verarbeitung von internen Bitmaps zu sparen; die Hardwareimplementierungen verwenden sie nur, um die Zugriffsbreitengröße zu verringern (da die Bitmapverarbeitung in der Hardware kein Problem ist). Ein netter Vorteil von Spalt-Baum-Bitmaps besteht darin, dass, wenn ein Knoten, der nur Pfade und keine interne Präfixe enthalten würde, ein Zeiger von internen Knoten von Null verwendet werden kann und kein Platz am internen Bitmap verschwendet wird.
  • Mit dieser Optimierung werden die externen und internen Bitmaps zwischen dem Suchknoten bzw. dem internen Knoten aufgeteilt. Das Aufteilen der Bitmaps in dieser Weise führt zu einer verringerten Knotengröße, die von Hardwareimplementierungen profitiert. Jeder Suchknoten Sj weist zwei Zeiger auf – wobei einer auf die Söhne und der andere auf den internen Knoten Ij zeigt. Der interne Knoten Ij wartet einen Zeiger des Blatt-Feldes LAj von Blättern entsprechend Präfixen, die zu diesem Knoten gehören. 1E stellt beispielsweise Suchknoten S1 (111), S2 (112) und S3 (113), interne Knoten I1 (121), I2 (115) und I3 (114) und Blatt-Felder LA1 (122), LA2 (116) und LA3 (123) und ihre Verbindung durch Zeiger dar. Außerdem umfassen die Blatt-Felder LA1 (122), LA2 (116) bzw. LA3 (123) Blattknoten L1 (122A), L2 (116A) und L3 (123A). Es ist zu beachten, dass die in durchgezogenen Linien dargestellten Knoten die Knoten sind, auf die während eines nachstehend beschriebenen Baum-Bitmap-Nachschlagebeispiels zugegriffen wird.
  • Nun soll der Fall betrachtet werden, in dem ein Nachschlagen vor sich geht, indem auf die Suchknoten S1 (111), S2 (112) und S3 (113) zugegriffen wird. Wenn das Flag parent_has_match (Mutter besitzt Anpassung) in S3 (113) gesetzt ist, impliziert dies, dass irgendein Präfix in einem der Blattknoten L2 (116A) im Blatt-Feld LA2 (116) vorliegt, welches die momentane längste Anpassung ist. In diesem Fall wird die Adresse des internen Knotens I2 (115) im Nachschlagekontext gespeichert. Nun soll angenommen werden, dass S3 (113) für dieses Nachschlagen Pfade nicht erweitert. Es könnte sich irgendein Präfix im Blatt-Feld LA3 (123) befinden, das das längste angepasste Präfix ist. Daher wird zuerst auf I3 (114) zugegriffen und sein internes Bitmap auf ein längstes angepasstes Präfix überprüft. Wenn kein längstes angepasstes Präfix gefunden wird, wird der interne Knoten I2 (115), dessen Adresse gespeichert wurde, wiedergewonnen, sein Bitmap analysiert und der Blattknoten L2 (116A), der der längsten Anpassung entspricht, wird zurückgeführt. Die obige Zugriffssequenz ist S1 (111), S2 (112), S3 (113), I3 (114), I2 (115), L2 (116A). Dieses Beispiel zeigt, dass es Fälle gibt, in denen auf zwei interne Knoten zugegriffen werden muss und zwei interne Bitmaps analysiert werden müssen, bevor die längste Anpassung bestimmt werden kann.
  • In Hardwareimplementierungen sind die Speicherzugriffsgeschwindigkeiten im Allgemeinen der Engpass im Gegensatz zur Knotenverarbeitungszeit. Eine typische Implementierung einer auf Hardware basierenden Baum-Bitmap-Nachschlagemaschine verwendet mehrere Speicherkanäle, um die Baum-Bitmap-Datenstruktur zu speichern. In diesem Fall werden die Baum-Bitmap-Knoten über die Speicherkanäle derart verteilt, dass pro Nachschlagen aufeinander folgende Knoten, auf die zugegriffen wird, in verschiedene Speicherkanäle fallen. Wenn ein einzelner Speicherkanal "x" Zugriffe pro Sekunde aushalten kann, dann können, wenn mehrere Nachschlagevorgänge gleichzeitig in Gang sind, "x" Nachschlagevorgänge pro Sekunde im Durchschnitt erreicht werden, vorausgesetzt, dass auf jeden Speicherkanal höchstens einmal pro Nachschlagen zugegriffen wird. Wenn auf irgendeinen der Kanäle zweimal pro Nachschlagen zugegriffen wird, dann fällt die Paketweiterleitungsrate um die Hälfte, da dieser spezielle Kanal zum Engpass wird.
  • Daher müssen alle internen Knoten entlang irgendeines Pfades von der Wurzel bis zum Boden des Baums in verschiedenen Speicherkanälen gespeichert werden. Das Zugreifen auf zwei interne Knoten stellt ein Problem dar, wenn eine begrenzte Anzahl von Speicherkanälen vorhanden sind, da sowohl interne Knoten in verschiedenen Speicherkanälen angeordnet werden müssen, als auch, auf weche zwei internen Knoten zugegriffen wird, vom speziellen Baum-Bitmap und vom speziellen Nachschlagewert abhängt. Mit Bezug auf 1E könnten beispielsweise die internen Knoten, auf die zugegriffen wird, I3 (114) und I2 (115) oder I3 (114) und I1 (121) oder I2 (115) und I1 (121) sein. In diesem Beispiel müssen sich daher alle sieben Knoten S1 (111), S2 (112), S3 (113), I1 (121), I2 (115), I3 (114) und L2 (116) in separaten Speichermodulen befinden. Dies ist problematisch, wenn weniger als sieben Speichermodule vorhanden sind.
  • US-A-5 787 430 offenbart eine Baumdatenstruktur zum Bestimmen des größten angepassten Präfix. Der Baum besteht aus Knoten, die ohne Anwendung von r-kursiven Prozeduren durchlaufen werden, bis ein angepasstes Präfix gefunden ist. Wenn der momentane Knoten der letzte Knoten ist und kein angepasstes Präfix aufweist, wird der obere Mutterknoten durch Zurückverfolgen mit einem Mutter-Zeiger wiedergewonnen.
  • Neue Verfahren und Vorrichtungen zum Erzeugen und Verwenden von verbesserten Baum-Bitmap-Datenstrukturen beim Bestimmen einer längsten Präfixanpassung sind erforderlich, insbesondere, jedoch nicht auf diejenigen Verfahren und Vorrichtungen begrenzt, die die Anzahl von Speicherzugriffen verringern und/oder einen Vorteil gegenüber vorherigen Baum-Bitmap-Implementierungen schaffen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Verfahren und Vorrichtungen zum Erzeugen und Verwenden von verbesserten Baum-Bitmap-Datenstrukturen beim Bestimmen einer längsten Präfixanpassung, wie z. B. in einem Router, einem Paketvermittlungssystem oder einer anderen Kommunikations- oder Computerkomponente, -vorrichtung oder einem anderen Kommunikations- oder Computersystem, werden offenbart. Eine Ausführungsform umfasst eine Datenstruktur. Die Datenstruktur umfasst einen ersten Suchknoten, ein erstes Sohn-Feld mit einem ersten internen Knoten und einem zweiten Suchknoten; und ein erstes Blatt-Feld mit mehreren ersten Blatt-Feldeinträgen. Der erste Suchknoten umfasst einen Zeiger auf das erste Sohn-Feld. Der erste interne Knoten umfasst einen Zeiger auf das erste Blatt-Feld. Der zweite Suchknoten umfasst einen Zeiger auf einen der mehreren ersten Blatt-Feldeinträge.
  • Aspekte der Erfindung sind in den unabhängigen Ansprüchen dargelegt und bevorzugte Merkmale sind in den abhängigen Ansprüchen dargelegt. Insbesondere schafft ein Aspekt ein Verfahren zum Durchlaufen von Knoten von einer oder mehreren Baumdatenstrukturen auf der Basis eines Eingangsdaten-Strings, wobei das Verfahren umfasst: Bestimmen einer Speicheradresse eines nächsten Knotens einer speziellen Baumdatenstruktur der einen oder mehreren Baumdatenstrukturen, wobei der nächste Knoten einem Abschnitt des Eingangsdaten-Strings entspricht; Speichern der einen oder mehreren Baumdatenstrukturen und Zurückführen des nächsten Knotens in Reaktion auf eine Wiedergewinnungsan forderung; Verteilen der Wiedergewinnungsanforderung zu einer Speichervorrichtung; wobei jede der einen oder mehreren Baumdatenstrukturen umfasst: einen ersten Suchknoten; ein erstes Sohn-Feld mit einem ersten internen Knoten und einem zweiten Suchknoten; und ein erstes Blatt-Feld mit einer Vielzahl von ersten Blatt-Feldeinträgen; wobei der erste Suchknoten einen Zeiger auf das erste Sohn-Feld umfasst; wobei der erste interne Knoten einen Zeiger auf das erste Blatt-Feld umfasst; und wobei der zweite Suchknoten einen Zeiger auf einen der Vielzahl von ersten Blatt-Feldeinträgen umfasst. Entsprechende Aspekte von Vorrichtungen und computerlesbaren Medien werden auch geschaffen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die beigefügten Ansprüche legen die Merkmale der Erfindung mit Besonderheit dar. Die Erfindung kann zusammen mit ihren Vorteilen aus der folgenden ausführlichen Beschreibung in Verbindung mit den begleitenden Zeichnungen am besten verstanden werden, in denen:
  • 1A-E Blockdiagramme oder andere Darstellungen eines bekannten Baum-Bitmap-Systems sind;
  • 2A ein Blockdiagramm einer verbesserten Baum-Bitmap-Datenstruktur ist, die in einer Ausführungsform verwendet wird;
  • 2B ein Blockdiagramm einer verbesserten Baum-Bitmap-Datenstruktur ist, die in einer Ausführungsform verwendet wird;
  • 3A ein Blockdiagramm eines Prozesses ist, der in einer Ausführungsform verwendet wird, um eine Anpassungsoperation eines längsten Präfix unter Verwendung eines Baum-Bitmap durchzuführen;
  • 3B-C einen Pseudocode von Prozessen darstellen, der in einer Ausführungsform verwendet wird, um Knoten zu einem Baum-Bitmap hinzuzufügen und aus diesem zu löschen;
  • 4 ein Blockdiagramm einer Ausführungsform ist, die eine Baum-Bitmap-Datenstruktur erzeugt und/oder verwendet, um eine Anpassung eines längsten Präfix zu bestimmen;
  • 5 ein Blockdiagramm einer Ausführungsform ist, die eine Baum-Bitmap-Datenstruktur erzeugt und/oder verwendet, um eine Anpassung eines längsten Präfix zu bestimmen;
  • 6A Suchanforderungs- und Ergebnismeldungsformate darstellt, die in einer Ausführungsform verwendet werden;
  • 6B ein Format von Knotendatenelementen darstellt, die in einer Ausführungsform verwendet werden;
  • 6C einen Prozess darstellt, der in einer Ausführungsform verwendet wird, um eine Adresse eines nächsten relevanten Knotens oder Elements in einer Ausführungsform einer Baum-Bitmap-Datenstruktur zu bestimmen;
  • 7 einen Prozess darstellt, der in einer Ausführungsform verwendet wird, um Daten von einem empfangenen Paket oder anderen Informationen zu gewinnen, solche Daten zu einem Baum-Bitmap-System weiterzuleiten und das empfangene Paket oder andere Informationen gemäß einem vom Baum-Bitmap-System empfangenen Ergebnis zu verarbeiten; und
  • 8A-D Prozesse darstellen, die in einer Ausführungsform verwendet werden, um eine Operation eines längsten Präfix eines Baum-Bitmap oder eine andere Nachschlageoperation durchzuführen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Verfahren und Vorrichtungen zum Erzeugen und Verwenden von verbesserten Baum-Bitmap-Datenstrukturen beim Bestimmen einer längsten Präfixanpassung wie z. B. in einem Router, einem Paketvermittlungssystem oder einer anderen Kommunikations- oder Computerkomponente, -vorrichtung oder einem anderen Kommunikations- oder Computersystem werden offenbart. Die hierin beschriebenen Ausführungsformen umfassen verschiedene Elemente und Begrenzungen, wobei kein Element oder keine Begrenzung als kritisches Element oder kritische Begrenzung betrachtet wird. Jeder der Ansprüche führt individuell einen Aspekt der Erfindung in ihrer Gesamtheit an. Überdies können einige beschriebenen Ausführungsformen umfassen, sind jedoch nicht begrenzt auf unter anderem Sys teme, Netze, integrierte Schaltungschips, eingebettete Prozessoren, ASICs, Verfahren und ein computerlesbares Medium, das Befehle enthält. Die nachstehend beschriebenen Ausführungsformen verkörpern verschiedene Aspekte und Konfigurationen innerhalb des Schutzbereichs und Gedankens der Erfindung, wobei die Fig. beispielhafte und nicht-begrenzende Konfigurationen darstellen.
  • Wie hierin verwendet, bezieht sich der Begriff "Paket" auf Pakete aller Arten oder irgendwelche anderen Informations- oder Dateneinheiten, einschließlich, jedoch nicht begrenzt auf Zellen mit fester Länge und Pakete mit variabler Länge, von denen jedes) in kleinere Pakete oder Zellen unterteilbar sein kann oder nicht. Der Begriff "Paket", wie hierin verwendet, bezieht sich auch auf sowohl das Paket selbst als auch eine Paketangabe, wie z. B., jedoch nicht begrenzt auf alles oder einen Teil eines Pakets oder Paketkopfs, einen Datenstrukturwert, einen Zeiger oder Index oder irgendeinen anderen Teil oder eine Identifikation eines Pakets. Überdies können diese Pakete eine oder mehrere Arten von Informationen enthalten, einschließlich, jedoch nicht begrenzt auf Sprache, Daten, Video- und Audioinformationen. Der Begriff "Punkt" wird hierin verwendet, um sich auf ein Paket oder irgendeine andere Einheit oder ein Stück von Informationen oder Daten zu beziehen.
  • Der Begriff "System" wird hierin allgemein verwendet, um eine beliebige Anzahl von Komponenten, Elementen, Untersystemen, Vorrichtungen, Paketvermittlungselementen, Paketvermittlungsstellen, Routern, Netzen, Computer- und/oder Kommunikationsvorrichtungen oder -mechanismen oder Kombinationen von Komponenten davon zu beschreiben. Der Begriff "Computer" wird hierin allgemein verwendet, um eine beliebige Anzahl von Computern zu beschreiben, einschließlich, jedoch nicht begrenzt auf Personalcomputer, eingebettete Prozessoren und Systeme, eine Steuerlogik, ASICs, Chips, Arbeitsplatzrechner, Großrechner, usw. Der Begriff "Vorrichtung" wird hierin allgemein verwendet, um eine beliebige Art von Mechanismus, einschließlich eines Computers oder Systems oder einer Komponente davon, zu beschreiben. Die Begriffe "Aufgabe" und "Prozess" werden hierin allgemein verwendet, um eine beliebige Art von laufendem Programm zu beschreiben, einschließlich, jedoch nicht begrenzt auf einen Computerprozess, eine Computeraufgabe, einen Computer-Thread, eine Ausführungsanwendung, ein Betriebssystem, einen Anwenderprozess, einen Vorrichtungstreiber, einen nativen Code, eine Maschinen- oder andere Sprache usw., und kann interaktiv und/oder nicht-interaktiv sein, lokal und/oder entfernt ausführen, im Vordergrund und/oder Hintergrund ausführen, in Anwender- und/oder Betriebssystem-Adressenräumen ausführen, eine Routine einer Bibliothek und/oder eine eigenständige Anwendung sein, und ist nicht auf irgendein spezielles Speicherpartitionierungsverfahren begrenzt. Die Schritte, Verbindungen und Verarbeitung von Signalen und Informationen, die in den Fig. dargestellt sind, einschließlich, jedoch nicht begrenzt auf irgendwelche Block- und Ablaufdiagramme und Nachrichtensequenzdiagramme, können in derselben oder in einer anderen seriellen oder parallelen Reihenfolge und/oder durch andere Komponenten und/oder Prozesse, Threads usw. und/oder über andere Verbindungen durchgeführt werden und mit anderen Funktionen in anderen Ausführungsformen kombiniert werden, wobei am Schutzbereich und Gedanken der vorliegenden Erfindung festgehalten wird.
  • Überdies werden die Begriffe "Netz" und "Kommunikationsmechanismus" hierin allgemein verwendet, um ein oder mehrere Netze, Kommunikationsmedien oder Kommunikationssysteme zu beschreiben, einschließlich, jedoch nicht begrenzt auf das Internet, private oder öffentliche Telephon-, Zellen-, drahtlose, Satelliten-, Kabel-, lokale, Stadtbereichs- und/oder weiträumige Netze, ein Kabel, eine elektrische Verbindung, einen Bus usw. und interne Kommunikationsmechanismen wie z. B. Nachrichtenleitung, Kommunikationen zwischen Prozessen, einen gemeinsam genutzten Speicher usw.
  • Der Begriff "Speichermechanismus" umfasst eine beliebige Art von Speicher, Speichervorrichtung oder einen anderen Mechanismus zum Halten von Befehlen oder Daten in einem beliebigen Format. Ein "computerlesbares Medium" ist ein erweiterbarer Begriff, der irgendeinen Speicher, eine Speichervorrichtung, einen Speichermechanismus und andere Speicher- und Signalisierungsmechanismen umfasst, einschließlich Schnittstellen und Vorrichtungen wie z. B. Netzschnittstellenkarten und Puffer darin, sowie irgendwelche Kommunikationsvorrichtungen und Signale, die empfangen und gesendet werden, und andere aktuelle und sich entwickelnde Technologien, die ein computerisiertes System interpretieren, empfangen und/oder senden kann. Der Begriff "Speicher" umfasst irgendeinen Direktzugriffsspeicher (RAM), Festwertspeicher (ROM), Flash-Speicher, integrierte Schaltungen und/oder andere Speicherkomponenten oder -elemente. Der Begriff "Speichervorrichtung" umfasst beliebige Festkörper-Speichermedien, Plattenlaufwerke, Disketten, vernetzte Dienste, Bandlaufwerke und andere Speichervorrichtungen. Speicher und Speichervorrichtungen können vom Computer ausführbare Befehle speichern, die von einem Prozessor und/oder einer Steuerlogik ausgeführt werden sollen, und Daten, die von einem Prozessor und/oder einer Steuerlogik verarbeitet werden. Der Begriff "Datenstruktur" ist ein erweiterbarer Begriff, der sich auf irgendein Datenelement, irgendeine Variable, irgendeine Datenstruktur, irgendeine Datenbank und/oder ein oder mehrere Organisationsschemen bezieht, die auf Daten angewendet werden können, um die Interpretation der Daten oder das Durchführen von Operationen an diesen zu erleichtern, wie z. B., jedoch nicht begrenzt auf Speicherstellen oder -vorrichtungen, Sätze, Warteschlangen, Bäume, Halden, Listen, verkettete Listen, Felder, Tabellen, Zeiger usw. Eine Datenstruktur wird typischerweise in einem Speichermechanismus gehalten. Der Begriff "assoziativer Speicher" bezieht sich auf alle Arten von bekannten oder entwickelten assoziativen Speichern, einschließlich, jedoch nicht begrenzt auf adressierbare Speicher mit binärem und ternärem Inhalt, Hash-Tabellen, TRIE oder andere Datenstrukturen usw.
  • Der Begriff "eine Ausführungsform" wird hierin verwendet, um auf eine spezielle Ausführungsform zu verweisen, wobei jeder Verweis auf "eine Ausführungsform" sich auf eine andere Ausführungsform beziehen kann, und die wiederholte Verwendung des Begriffes hierin beim Beschreiben von zugehörigen Merkmalen, Elementen und/oder Begrenzungen, stellt keinen kumulativen Satz von zugehörigen Merkmalen, Elementen und/oder Begrenzungen fest, die absolut jede Ausführungsform umfassen muss, obwohl eine Ausführungsform typischerweise alle diese Merkmale, Elemente und/oder Begrenzungen umfassen kann. Außerdem umfasst der Ausdruck "Mittel für xxx" typischerweise ein computerlesbares Medium, das vom Computer ausführbare Befehle zum Durchführen von xxx enthält.
  • Außerdem werden die Begriffe "erstes", "zweites" usw. typischerweise hierin verwendet, um verschiedene Einheiten (z. B. ein erstes Element, ein zweites Element) zu bezeichnen. Die Verwendung dieser Begriffe hierin suggeriert nicht notwendigerweise eine Reihenfolge, wie z. B. eine Einheit oder ein Ereignis, die/das vor dem anderen vorkommt oder kommt, sondern sieht vielmehr einen Mechanismus zum Unterscheiden zwischen speziellen Einheiten vor. Überdies werden die Ausdrücke "auf der Basis von x" und "in Reaktion auf x" verwendet, um einen minimalen Satz von Punkten x anzugeben, von dem etwas abgeleitet oder durch den etwas verursacht wird, wobei "x" erweiterbar ist und nicht notwendigerweise eine vollständige Liste von Punkten beschreibt, an denen die Operation durchgeführt wird, usw. Außerdem wird der Ausdruck "gekoppelt mit" verwendet, um ein gewisses Niveau an direkter oder indirekter Verbindung zwischen zwei Elementen oder Vorrichtungen anzugeben, wobei die Kopplungsvorrichtung oder -vorrichtungen das gekoppelte Signal oder die übertragenen Informationen modifiziert (modifizieren) oder nicht modifiziert (modifizieren). Der Begriff "Teilmenge" wird verwendet, um eine Gruppe von allen oder weniger als allen der Elemente eines Satzes anzugeben. Überdies wird der Begriff "oder" hierin verwendet, um eine alternative Auswahl von einem oder mehreren, einschließlich allen, der Verbindungspunkte anzugeben.
  • Verfahren und Vorrichtungen zum Erzeugen und Verwenden einer verbesserten Baum-Bitmap-Datenstruktur beim Bestimmen einer Anpassung eines längsten Präfix, wie z. B. in einem Router, einem Paketvermittlungssystem, werden offenbart. Eine Ausführungsform organisiert das Baum-Bitmap, um die Anzahl von internen Knoten zu minimieren, auf die während einer Nachschlageoperation zugegriffen werden muss. Ein Zeiger ist in jedem der Trie- oder der Suchknoten auf den besten angepassten Eintrag im Blatt- oder Ergebnis-Feld der Mutter enthalten, der einen direkten Zugriff auf dieses Ergebnis ermöglicht, ohne einen entsprechenden internen Knoten analysieren zu müssen. Überdies speichert eine Ausführungsform den internen Knoten für eine spezielle Ebene als erstes Element in seinem Sohn-Feld. Außerdem verwendet eine Ausführungsform eine Universal-Nachschlagemaschine, die mehrere Baum-Bitmaps oder andere Datenstrukturen simultan durchlaufen kann und vollständige Suchen, teilweise Suchen durchführen kann und teilweise Suchen wieder aufnehmen kann, wie z. B. nach dem Empfang von zusätzlichen Daten, in denen zu suchen ist.
  • Eine Ausführungsform umfasst eine Verbesserung an der Baum-Bitmap-Datenstruktur und den zugehörigen Nachschlage- und Aktualisierungsschemen. Diese verbessern typischerweise die Nachschlageleistung und können einen Speicherzugriff für bestimmte Hardwareausführungsformen sparen. Eine Ausführungsform organisiert das Baum-Bitmap in einer solchen Weise, dass höchstens ein Zugriff auf einen internen Knoten pro Nachschlagen erforderlich ist. Eine Ausführungsform modifiziert beispielsweise die Baum-Bitmap-Struktur so, dass vermieden wird, dass auf den internen Knoten I2 in der Zugriffssequenz S1, S2, S3, I3, I2 und L2 (d. h. der vorher in Bezug auf 1E beschriebenen Sequenz) zugegriffen werden muss. In diesem Beispiel und auch mit Bezug auf 1E wird der entsprechende Blattknoten L2 (116A) nach dem Analysieren des internen Bitmap in I2 (115) bestimmt. Eine Analyse dieser Zugriffssequenz führt zu der Beobachtung, dass für jedes Nachschlagen, das durch den Knoten S3 (113) läuft, das anschließende Analysieren des internen Bitmap I2 (115) immer denselben entsprechenden Blattknoten L2 (116) ergibt. In einer Ausführungsform werden folglich eine neue Baum-Bitmap-Datenstruktur und zugehörige Nachschlage- und Aktualisierungsschemen verwendet, um das Analysieren des internen Bitmap in I2 (122) in dieser beispielhaften Nachschlagesequenz zu vermeiden.
  • Eine Ausführungsform verwendet eine Datenstruktur, die einen ersten Suchknoten, ein erstes Sohn-Feld mit einem ersten internen Knoten und einem zweiten Suchknoten und ein erstes Blatt-Feld mit mehreren ersten Blatt-Feldeinträgen verwendet. Typischerweise umfasst der erste Suchknoten einen Zeiger auf das erste Sohn-Feld, der erste interne Knoten umfasst einen Zeiger auf das erste Blatt-Feld; und der zweite Suchknoten umfasst einen Zeiger auf einen der mehreren ersten Blatt-Feldeinträge.
  • In einer Ausführungsform ist der erste interne Knoten das erste Element des ersten Sohn-Feldes. In einer Ausführungsform geben der Zeiger des ersten internen Knotens und der Zeiger des zweiten Suchknotens verschiedene erste Blatt-Feldeinträge an. In einer Ausführungsform umfasst die Datenstruktur ferner ein zweites Sohn-Feld, wobei der zweite Suchknoten einen Zeiger auf das zweite Sohn-Feld umfasst. In einer Ausführungsform umfasst die Datenstruktur ferner ein zweites Blatt-Feld mit mehreren zweiten Blatt-Feldeinträgen, wobei das zweite Sohn-Feld einen zweiten internen Knoten umfasst, wobei der zweite interne Knoten einen Zeiger auf das zweite Blatt-Feld umfasst. In einer Ausführungsform ist der zweite interne Knoten das erste Element des zweiten Sohn-Feldes. In einer Ausführungsform umfasst das zweite Sohn-Feld einen dritten Such- oder Endknoten, wobei der zweite Such- oder Endknoten einen Zeiger auf einen von mehreren zweiten Blatt-Feldeinträgen umfasst. In einer Ausführungsform geben der Zeiger des zweiten internen Knotens und der Zeiger des dritten Such- oder Endknotens verschiedene zweite Blatt-Feldeinträge an. In einer Ausführungsform stellt der erste Suchknoten eine Schrittweite einer ersten Länge dar und der zweiten Suchknoten stellt eine Schrittweite einer zweiten Länge dar, wobei die erste und die zweite Länge unterschiedlich sind. In einer Ausführungsform umfasst der erste Suchknoten einen ersten Indikator der ersten Länge und der zweite Suchknoten umfasst einen zweiten Indikator der zweiten Länge.
  • Eine Ausführungsform durchläuft eine Baumdatenstruktur, die mehrere Präfixe darstellt, die in mehrere Schrittweiten einer Anzahl von Baumebenen, die größer sind als Eins, unterteilt sind, wobei jede der mehreren Schrittweiten durch ein Baum-Bitmap dargestellt wird und Angaben von Sohn-Pfaden durch ein erweitertes Bitmap dargestellt werden. In einer Ausführungsform wird ein Suchknoten auf einer momentanen Ebene innerhalb der Baumdatenstruktur empfangen. Ein Identifizierer der momentanen besten Anpassung wird in Reaktion auf die Feststellung, ob eine neue beste Anpassung existiert, aktualisiert. In ein erweitertes Bitmap der momentanen Ebene wird bei der Feststellung indexiert, ob ein angepasster Knoten der nächsten Ebene existiert oder nicht. In einer Ausführungsform wird dieser Durchlauf wiederholt, bis ein angepasster Knoten der nächsten Ebene nicht existiert, und dann wird der durch den Suchknoten der momentanen Ebene angegebene Knoten wiedergewonnen und ein Suchergebnis wird auf der Basis des Identifizierers der momentanen besten Anpassung oder auf der Basis eines Zeigers im Suchknoten der momentanen Ebene auf einen Blattknoten identifiziert. In einer Ausführungsform wird in Reaktion auf die Feststellung, dass der Suchknoten auf der momentanen Ebene nicht existiert, in einen Endknoten indexiert, um das Suchergebnis zu identifizieren. In einer Ausführungsform wird der Identifizierer der momentanen besten Anpassung auf der Basis eines Zeigers im Endknoten aktualisiert.
  • Eine Ausführungsform durchläuft eine Baumdatenstruktur, die in einem oder mehreren computerlesbaren Medien gespeichert ist, auf der Basis eines Eingangssuchdaten-Strings. Typischerweise wird ein Suchfortschrittskontext eines vollständig beendeten Baumdurchlaufs empfangen, wobei der Suchfortschrittskontext typischerweise eine Adresse eines nächsten Knotens oder irgendeinen anderen Knotenindikator umfasst. Der Durchlauf der Baumdatenstruktur wird ab diesem Knoten für einen nächsten Abschnitt des Eingangs-Strings wieder aufgenommen. Eine Ausführungsform verteilt eine Nachschlageanforderung, die typischerweise die Adresse des nächsten Knotens umfasst, zu einer von mehreren Speichervorrichtungen. Ein Nachschlageergebnis wird von einer der mehreren Speichervorrichtungen empfangen, wobei das Nachschlageergebnis einen Suchknoten umfasst. Ein Identifizierer der momentanen besten Anpassung wird in Reaktion auf die Feststellung, ob eine neue beste Anpassung existiert, aktualisiert. In ein erweitertes Bitmap der momentanen Ebene des Suchknotens wird indexiert, um festzustellen, ob ein angepasster Knoten der nächsten Ebene existiert oder nicht. Ein neuer Wert der Adresse des nächsten Knotens wird erzeugt, wie es ein neuer Wert für den Suchfortschrittskontext ist.
  • In einer Ausführungsform umfasst der Suchfortschrittskontext ferner eine Angabe der besten Anpassung und eine Länge eines verwendeten Eingangssuchdaten-Strings. In einer Ausführungsform umfasst die Angabe der besten Anpassung ein Anpassungs-Flag und einen Blatt-Zeiger. In einer Ausführungsform sind mehrere Baumdatenstrukturen in den computerlesbaren Medien gespeichert und diese Baumdatenstrukturen können simultan durchlaufen werden.
  • Eine Vorrichtung einer Ausführungsform zum Durchlaufen von Knoten von einer oder mehreren Baumdatenstrukturen auf der Basis eines Eingangsdaten-Strings umfasst einen Baum-Bitmap-Mechanismus für die nächste Adresse zum Bestimmen einer Speicheradresse eines nächsten Knotens einer speziellen Baumdatenstruktur von einer oder mehreren Baumdatenstrukturen, wobei der nächste Knoten einem Abschnitt des Eingangsdaten-Strings entspricht, mehrere Speichervorrichtungen zum Speichern von einer oder mehreren Baumdatenstrukturen und zum Zurückführen des nächsten Knotens in Reaktion auf eine Wiedergewinnungsanforderung; und einen Speicher-Manager, der mit dem Baum-Bitmap-Mechanismus für die nächste Adresse und den mehreren Speichervorrichtungen gekoppelt ist, zum Verteilen der Wiedergewinnungsanforderung zu einer der mehreren Speichervorrichtungen. Typischerweise umfasst jede von einer oder mehreren Baumdatenstrukturen einen ersten Suchknoten, ein erstes Sohn-Feld mit einem ersten internen Knoten und einem zweiten Suchknoten, und ein erstes Blatt-Feld mit mehreren ersten Blatt-Feldeinträgen. In einer Ausführungsform umfasst der erste Suchknoten einen Zeiger auf das erste Sohn-Feld, der erste interne Knoten umfasst einen Zeiger auf das erste Blatt-Feld; und der zweite Suchknoten umfasst einen Zeiger auf einen der mehreren ersten Blatt-Feldeinträge.
  • In einer Ausführungsform umfassen eine oder mehrere Baumdatenstrukturen Knoten von mindestens zwei verschiedenen Bäumen. In einer Ausführungsform bestimmt die nächste Adresse des Baum-Bitmap ferner eine der mehreren Speichervorrichtungen und liefert eine Angabe von einer der mehreren Speichervorrichtungen zum Speicher-Manager. In einer Ausführungsform umfasst der nächste Knoten eine Angabe von einer speziellen der mehreren Speichervorrichtungen, wobei der Speicher-Manager die Wiedergewinnungsanforderung zu der speziellen der mehreren Speichervorrichtungen liefert. In einer Ausführungsform umfassen die mehreren Speichervorrichtungen eine erste Speichervorrichtung eines ersten Typs und eine zweite Speichervorrichtung eines zweiten Typs, wobei der erste und der zweite Typ unterschiedlich sind. In einer Ausführungsform speichert der erste Speichertyp einen Knoten erster Ebene für jede der Baumdatenstrukturen.
  • 2A stellt eine solche Ausführungsform mit Suchknoten S1 (211), S2 (212) und S3 (213), internen Knoten I1 (221), I2 (224) und I3 (214) und Blatt-Feldern LA1 (222), LA2 (215), LA3 (223), Blattkoten L1 (222A-B), L2 (215A-B) und L3 (223A-B) und ihre Verbindungen durch Zeiger dar. Es ist zu beachten, dass in durchgezogenen Linien dargestellte Knoten die Knoten sind, auf die während eines nachstehend beschriebenen Baum-Bitmap-Nachschlagebeispiels zugegriffen wird. Wie in 2A gezeigt, zeigen auch die Zeiger 220, 230 und 240 direkt von ihrem jeweiligen Suchknoten 212, 213 und 225 auf einen Blattknoten 222A, 215A und 223B der Mutter (entsprechend dem Eintrag der besten Anpassung). Es ist auch zu beachten, dass 2A nur einen Pfad zeigt, während Suchknoten anderer Pfade auf andere Blattknoten (222A-B, 215A-B, 223A-B) innerhalb der Blatt-Felder (222, 215, 223) zeigen. In einer Ausführungsform ist zur Steuerzeit (z. B. wenn das Baum-Bitmap programmiert wird) bekannt, dass das Blatt L2 (215A) die dem Knoten S3 (213) entsprechende längste Anpassung enthält. Durch direktes Speichern eines Zeigers auf den Blattknoten L2 (215A) im Knoten S3 (213) muss somit dann auf I2 (224) nicht zugegriffen werden, bevor auf das Blatt L2 (215) in der vorstehend erwähnten Zugriffssequenz zugegriffen wird.
  • In einer Ausführungsform umfassen der Suchknoten S1 (211), S2 (212), S3 (213) bzw. S4 (225) jeweils einen parent_best_leaf_pointer (Zeiger auf bestes Mutter-blatt) (210, 220, 230 und 240) auf das beste angepasste Blatt in ihrem entsprechenden Mutter-Blatt-Feld. Gezeigt sind der Suchknoten S2 (212) mit dem Zeiger 220 auf den Blattknoten L1 (222A) im Blatt-Feld LA1 (222), der Suchknoten S3 (213) mit dem Zeiger 230 auf den Blattknoten L2 (215A) im Blatt-Feld LA2 (215) und der Suchknoten S4 (225) mit dem Zeiger 240 auf den Blattknoten L3 (23B) im Blatt-Feld LA3 (223). In einer Ausführungsform gibt ein parent_best_leaf_pointer von Null an, dass kein aktualisiertes derartiges längstes angepasstes Präfix im Mutterknoten vorhanden ist.
  • In bestimmten Ausführungsformen ist das Minimieren der Größe eines Knotens sehr wichtig. In einer Ausführungsform wird Raum in einem Suchknoten von früheren Baum-Bitmap-Implementierungen zurückgewonnen, indem der Zeiger des internen Knotens in einem Suchknoten befreit wird und indem der interne Knoten als erster Knoten im Sohn-Feld angeordnet wird. Dann kann auf einen internen Knoten durch einen Sohn-Zeiger im Suchknoten zugegriffen werden und der befreite Zeigerraum des internen Knotens in der Knotenstruktur eines Suchknotens (von einer früheren Implementierung) wird verwendet, um den Zeiger auf den besten angepassten Blattknoten im Mutter-Blatt-Feld zu speichern. Mit Bezug auf das Beispiel wird der Zeiger 235 des internen Knotens in S3 (d. h. S3 → I3) gegen die Verknüpfung S3 → L2 (230) ausgetauscht, wobei L2 die längste Anpassung in der Ebene 2 entsprechend S3 (213) ist.
  • 2B stellt eine Ausführungsform einer neuen Baum-Bitmap-Datenstruktur dar. Wie gezeigt, ist der interne Knoten als erstes Element im Sohn-Feld des Suchknotens angeordnet. Daher wird auf die Söhne sowie den internen Knoten unter Verwendung desselben Zeigers zugegriffen. Der interne Knoten I1 (261) ist beispielsweise das erste Element des Sohn-Feldes 260 und der interne Knoten I2 (281) ist das erste Element des Sohn-Feldes 280.
  • Genauer umfasst der Suchknoten S1 (250) einen Zeiger 256 auf das Sohn-Feld 260, das den internen Knoten I1 (261) und Sohnelemente 265 umfasst. Der interne Knoten I1 (261) umfasst einen Zeiger 267 auf das Blatt-Feld LA1 (270), der null oder mehr Elemente umfassen kann, einschließlich des Element-Blattknotens L1 (271), der in diesem Beispiel das beste Blattmutterergebnis für den Suchknoten S2 (262) ist. Es ist zu beachten, dass die Sohnelemente 265 den Suchknoten S2 (262) umfassen, der einen Zeiger 268 direkt auf den Blattknoten L2 271 umfasst. Für ein leichtes Verständnis des Lesers ist zu beachten, dass eine Kette von Punkten in den Sohnelementen 265 und im Blatt-Feld LA1 (270) verwendet wird, um mehr mögliche Suchknoten in den Sohnelementen 265 und Zeiger auf Einträge im Blatt-Feld LA1 (270) darzustellen. Der Suchknoten S2 (262) umfasst auch einen Zeiger 266 auf das Sohn-Feld 280, das den internen Knoten I2 (281) und die Sohnelemente 285 umfasst, einschließlich des Endknotens E3 (282). Der interne Knoten I2 (281) umfasst einen Zeiger 277 auf das Blatt-Feld LA2 (290). Der Endknoten E3 (282) umfasst einen Zeiger 288 direkt auf den Blattknoten L2 (291), der das beste Blattmutterergebnis für den Endknoten E3 (282) ist.
  • Wenn eine Ausführungsform in verallgemeinerten Begriffen beschrieben wird, wird auf den internen Knoten Ik des Suchknotens Sk nur zugegriffen, wenn Sk nicht Präfixe für einen speziellen Nachschlag erweitert. Wenn Sk Präfixe erweitert, dann muss auf Ik niemals zugegriffen werden. Mit anderen Worten, in einer Ausführungsform ist es niemals der Fall, dass sowohl auf Ik als auch Sk+1 beim gleichen Nachschlagen zugegriffen werden muss. Daher können sowohl Ik als auch Sk+1 typischerweise im gleichen Speichermodul angeordnet sein. In einer Ausführungsform wird an die Adresse 1k des internen Knotens beim Nachschlagen erinnert, wenn das Flag "parent_has_match" im Suchknoten Sk+1 auf der nächsten Ebene gesetzt ist. Wenn "parent_best_leaf_pointer" in Sk+1 nicht Null ist, zeigt er mit diesem neuen Schema direkt auf den Blattknoten auf der Ebene "k", welches das längste angepasste Präfix ist. In einer Ausführungsform würden die obigen Knotenstrukturmodifikationen für alle drei Bitmap-Knoten außer den internen Knoten und Blattknoten gelten.
  • 3A stellt einen Prozess dar, der in einer Ausführungsform verwendet wird, um ein Nachschlagen an einem Baum-Bitmap durchzuführen. Die Verarbeitung beginnt mit dem Prozessblock 300 und geht zum Prozessblock 302 weiter, in dem die Suche mit dem Wurzelknoten auf der Ebene k=0 beginnt. Als nächstes wird im Prozessblock 304 das current_best_leaf (aktuelles bestes Blatt) auf Null=0 initialisiert (d. h. bisher keine Anpassung) und der parent_best_leaf_pointer wird auf Null=0 initialisiert (d. h. bisher keine Anpassung).
  • Wie im Prozessblock 306 bestimmt, wird als nächstes, wenn der momentane Knoten ein Suchknoten Sk ist (z. B. kein Endknoten Ek), dann, wie im Prozessblock 308 bestimmt, wenn der parent_best_leaf_pointer in Sk nicht Null ist, dann im Prozessblock 310 das current_best_leaf auf den Wert von parent_best_leaf_pointer gesetzt.
  • Im Prozessblock 312 wird als nächstes in das "erweiterte Bitmap" von Sk unter Verwendung der nächsten paar Bits vom Nachschlageschlüssel in Abhängigkeit von der Schrittweite indexiert. Wenn, wie im Prozessblock 314 bestimmt, Sk Präfixe erweitert, dann wird im Prozessblock 316 die Adresse des Knotens der nächsten Ebene im Sohn-Feld (typischerweise einschließlich einer Einstellung, um zu berücksichtigen, dass der interne Knoten 1k der erste Knoten im Sohn-Feld ist) berechnet. Als nächstes wird im Prozessblock 318 der Knoten auf der Ebene k+1 wiedergewonnen und die Verarbeitung kehrt zum Prozessblock 306 zurück.
  • Ansonsten wird, wenn Sk keine Präfixe erweitert (wie im Prozessblock 314 bestimmt), dann im Prozessblock 320 der interne Knoten 1k wiedergewonnen, wobei Ik das erste Element im Sohn-Feld von Sk ist. Wenn, wie im Prozessblock 322 bestimmt, ein längstes angepasstes Präfix in Ik vorhanden ist, indem das interne Bitmap analysiert wird, dann wird im Prozessblock 324 das Ergebnis vom Blattknoten auf der Ebene k wiedergewonnen und die Verarbeitung ist vollständig, wie durch den Prozessblock 338 angegeben. Ansonsten wird im Prozessblock 326 das Ergebnis unter Verwendung des gespeicherten current_best_leaf wiedergewonnen, um direkt auf das Blatt zuzugreifen, das dem bisher längsten Präfix entspricht, und die Verarbeitung ist vollständig, wie durch den Prozessblock 338 angegeben.
  • Ansonsten wurde im Prozessblock 306 der momentane Knoten als Endknoten bestimmt und die Verarbeitung geht zum Prozessblock 330 weiter. Wenn, wie im Prozessblock 330 bestimmt, der parent_best_leaf_pointer in Ek nicht Null ist, dann wird das current_best_leaf auf den Wert von parent_best_leaf_pointer im Prozessblock 332 gesetzt.
  • Wie im Prozessblock 334 bestimmt, wird als nächstes, wenn ein längstes angepasstes Präfix in Ek vorhanden ist, dann im Prozessblock 336 das Ergebnis vom Blattknoten auf der Ebene K wiedergewonnen und die Verarbeitung ist vollständig, wie durch den Prozessblock 338 angegeben. Ansonsten wird im Prozessblock 326 das Ergebnis unter Verwendung des gespeicherten current_best_leaf wiedergewonnen, um direkt auf das Blatt zuzugreifen, das dem bisher längsten Präfix entspricht, und die Verarbeitung ist vollständig, wie durch den Prozessblock 338 angegeben.
  • 3B stellt einen Prozess dar, der in einer Ausführungsform verwendet wird, um die parent_best_leaf_pointers zu aktualisieren, wenn Präfixe in eine Baum-Bitmap-Datenstruktur eingefügt werden, wenn ein Blattknoten hinzugefügt wird. Pk soll das Präfix sein, das auf der Ebene k eingefügt wird. Sk soll der entsprechende Suchknoten sein. Setk+1 soll die Menge von denjenigen Knoten im Sohn-Feld von Sk sein, die die Nachfolger von Pk sind. Mit anderen Worten, Pk ist ein Präfix aller Suchknoten in Setk+1. In einer Ausführungsform ist Setk+1 die Menge aller Knoten, in denen das Flag "parent_has_match" gesetzt werden muss, wenn Pk eingefügt wird.
  • In einer Ausführungsform in der Software werden die folgenden zusätzlichen Variablen zusammen mit dem "parent_best_leaf_pointer" in jedem Suchknoten aufrechterhalten. Es ist zu beachten, dass in einer Ausführungsform diese nur in der Steuersoftware-Knotenstruktur und nicht in der Hardwarestruktur erforderlich sind. Der bestleaf_offset(Sk+1) (Versatz des besten Blatts) ist grundsätzlich der Versatz des Blatts, auf das durch parent_best_leaf(Sk+1) (bestes Mutterblatt) in seinem Blatt-Feld gezeigt wird. Die "bestleaf_length" (Länge des besten Blatts) ist die Länge des Präfix, auf das durch parent_best_leaf(Sk+1) gezeigt wird.
  • Das Folgende sind die Definitionen von Begriffen/Funktionen/Variablen, die in dem in 3B dargestellten Pseudocode verwendet werden. Children_array(Sk) (Sohn-Feld) ist der Sohn-Feldzeiger des Suchknotens Sk. Bestleaf_offset(Sk+1) ist der Wert der Variable "bestleaf_offset" nur der Software des Suchknotens Sk+1. Parent_best_leaf(Sk+1) ist der Wert des neu eingeführten "parent_best_leaf_pointer" im Suchknoten Sk+1. Bestleaf_length(Sk+1) ist der Wert der Variable "bestleaf_length" nur der Software des Suchknotens Sk+1. "New_leaf_array_base(Pk) (Basis des neuen Blatt-Feldes) ist die Adresse der Stelle im Baum-Bitmap, wenn ein neues Präfix in einem existierenden Blatt-Feld eingefügt wird, in das das ganze Blatt-Feld zusammen mit dem eingefügten Präfix Pk kopiert wird.
  • Wie in dem in 3B beschriebenen Pseudocode dargestellt, geht grundsätzlich das eigentliche Einfügen des Präfix genauso vor sich wie frühere Implementierungen, mit dem Hinzufügen der Aktualisierung der parent_best_leaf_pointers in den Suchknoten der nächsten Ebene, anstatt das Flag parent_has_match zu aktualisieren. Für eine Baum-Bitmap-Datenstruktur, die in einem konsistenten Zustand mit allen parent_best_leaf_pointers, die auf die korrekten Blätter zeigen, ist, zeigt der in 3B dargestellte Pseudocode, wie alle parent_best_leaf_pointers nach dem Einfügen eines Präfix wieder in einen konsistenten Zustand gebracht werden.
  • Wenn ein neuer Suchknoten Sk+1 in das Sohn-Feld von Sk eingefügt wird (z. B. wenn neue Zweige des Baums infolge des Einfügens des Präfix erzeugt werden), muss außerdem das parent_best_leaf (Sk+1) bestimmt werden. Im Wesentlichen wird der Versatz des Blattknotens im Blatt-Feld Lk von Sk, der das längste Präfix entsprechend Sk+1 ist, durch Analysieren des internen Bitmap im internen Knoten Ik von Sk bestimmt.
  • Außerdem müssen die parent_best_leaf_pointers aktualisiert werden, wenn ein Präfix gelöscht wird. Pk soll das Präfix sein, das auf der Ebene k gelöscht wird. Sk soll der entsprechende Suchknoten sein. Setk+1 soll die Menge von denjenigen Knoten im Sohn-Feld von Sk sein, für die Pk das beste Blatt ist. 3C stellt einen Prozess dar, der in einer Ausführungsform verwendet wird, um die parent_best_leaf_pointers in den Sohnknoten des Suchknotens zu aktualisieren, aus dem das Präfix gelöscht wird.
  • 4 stellt eine Ausführungsform eines Systems 400, wie z. B., jedoch nicht begrenzt auf ein Computer- oder Kommunikationssystem, zum Implementieren einer Baum-Bitmap-Datenstruktur dar. In einer Ausführungsform verwendet das System 400 eine solche Baum-Bitmap-Datenstruktur zum Bestimmen der Anpassungen des längsten Präfix gemäß der Erfindung. In einer Ausführungsform programmiert das System 400 eine andere Vorrichtung, wie z. B. eine Durchlaufmaschine 500 (5), über die Schnittstelle 404 mit einer Baum-Bitmap-Datenstruktur.
  • In einer Ausführungsform umfasst das System 400 einen Prozessor 401, einen Speicher 402, Speichervorrichtungen 403 und wahlweise eine Schnittstelle 404, die typischerweise über einen oder mehrere Kommunikationsmechanismen 409 (für Erläuterungszwecke als Bus gezeigt) gekoppelt sind. Verschiedene Ausführungsformen des Systems 400 können mehr oder weniger Elemente umfassen. Der Betrieb des Systems 400 wird typischerweise durch den Prozessor 401 unter Verwendung des Speichers 402 und der Speichervorrichtungen 403 gesteuert, um eine oder mehrere Zeitablaufsteueraufgaben oder -prozesse durchzuführen. Der Speicher 402 ist ein Typ eines computerlesbaren Mediums und umfasst typischerweise einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen Flash-Speicher, integrierte Schaltungen und/oder andere Speicherkomponenten. Der Speicher 402 speichert typischerweise vom Computer ausführbare Befehle, die vom Prozessor 401 ausgeführt werden sollen, und/oder Daten, die vom Prozessor 401 verarbeitet werden, um eine Funktionalität gemäß der Erfindung zu implementieren. Die Speichervorrichtungen 403 sind ein anderer Typ von computerlesbarem Medium und umfassen typischerweise Festkörper-Speichermedien, Plattenlaufwerke, Disketten, vernetzte Dienste, Bandlaufwerke und andere Speichervorrichtungen. Die Speichervorrichtungen 403 speichern typischerweise vom Computer ausführbare Befehle, die vom Prozessor 401 ausgeführt werden sollen, und/oder Daten, die vom Prozessor 401 verarbeitet werden, um eine Funktionalität gemäß der Erfindung zu implementieren.
  • 5 stellt ein Blockdiagramm einer Ausführungsform zum Durchlaufen einer hierarchischen Datenstruktur dar, einschließlich, jedoch nicht begrenzt auf eine Baum-Bitmap- oder andere Baumdatenstruktur. Eine Anforderungsvorrichtung 501, wie z. B. ein Prozessor oder eine andere Steuerlogik, erzeugt Nachschlageanforderungen, die von einer Durchlaufmaschine 500 empfangen werden, und speichert sie im Anforderungspuffer 512. Ein Wartungsprozessor 502 programmiert die Durchlaufmaschine 500 mit einer oder mehreren Baum-Bitmap- und/oder anderen Datenstrukturen, da die Durchlaufmaschine gleichzeitig verwendet werden kann, um Suchen an mehreren und sogar unabhängigen Baum-Bitmap- und/oder anderen Datenstrukturen durchzuführen. In einer Ausführungsform entsprechen die Anforderungsvorrichtung 501 und/oder der Wartungsprozessor dem System 400 (4). In einer Ausführungsform sind die Anforderungsvorrichtung 501 und/oder der Wartungsprozessor 502 in der Durchlaufmaschine 500 enthalten.
  • In einer Ausführungsform umfasst die Durchlaufmaschine 500 einen Anforderungspuffer 512, um Suchanforderungen zu empfangen und zu puffern, einen Speicher-Manager 520, um Lese- und Schreiboperationen an der Speichervorrichtung und Steuerung 521-529 und an dem SRAM und der Steuerung 530 zu steuern, wobei die Ergebnisse zu einer Baum-Bitmap-Logik 514 für die nächste Adresse oder eine Ausgangswarteschlange 535 gelenkt wird. Die Ausgangswarteschlange 535 überträgt Suchergebnisse zur Anforderungsvorrichtung 501. Die Baum-Bitmap-Logik 514 für die nächste Adresse verarbeitet Suchanforderungen, die vom Anforderungspuffer 512 empfangen werden, und Zwischenergebnisse, die von den Speichervorrichtungen und Steuerungen 521-529 und vom SRAM und der Steuerung 530 empfangen werden, und bestimmt möglicherweise die Speicheradresse des nächsten Knotens und leitet die Speicherleseanforderung zum Speicher-Manager 520 weiter.
  • Suchanforderungen, die von der Durchlaufmaschine 500 empfangen oder erzeugt werden, können einen vollständigen oder teilweisen String umfassen, auf dessen Basis ein längstes angepasstes Präfix oder anderes Ergebnis zu finden ist. In einer Ausführungsform umfasst die Durchlaufmaschine 500 beispielsweise die Fähigkeit, auf der Basis eines ersten Abschnitts eines Nachschlage-Strings zu suchen, ein Ergebnis zurückzuführen und dann die Suche auf der Basis des Ergebnisses und eines zusätzlichen Abschnitts des Nachschlage-Strings ab dort fortzusetzen, wo sie aufgehört wurde. Außerdem setzt in einer Ausführungsform die Durchlaufmaschine 500 die Suche durch die Datenstruktur fort, bis ein Ergebnis empfangen wird, Suchdaten ausgegeben werden oder ein Stoppknoten (nach stehend weiter beschrieben) angetroffen wird.
  • Formate, die in einer Ausführungsform einer Suchanforderung verwendet werden, sind in 6A gezeigt. Die anfängliche Suchanforderung 601 umfasst ein Suchtypen-Feld, das eine anfängliche (im Gegensatz zu einer fortgesetzten) Suchanforderung angibt, und ein Suchdaten-Feld mit den Informationen, mit denen sie zu vergleichen sind. Die fortgesetzte Suchanforderung 602 umfasst ein Suchtypen-Feld, das eine fortgesetzte Suche angibt, ein Startadressen-Feld, das angibt, von wo aus die Suche wieder aufzunehmen ist, ein Suchdaten-Feld mit einem zusätzlichen Abschnitt des Nachschlage-String, ein Flag für ein bisher gültiges Blatt und ein Feld für einen Zeiger auf das bisher beste Blatt, wobei dieses Flag angibt, ob das Feld für den Zeiger auf das bisher beste Blatt mit dem entsprechenden Zeiger besetzt ist (während eines vorherigen Teils der Suche bestimmt).
  • 6A stellt zusätzlich Formate dar, die in einer Ausführungsform einer Suchantwort verwendet werden. Das Antwort- (fortgesetzte Suche) Ergebnis 603 umfasst ein Suchergebnistypen-Feld, ein Feld für die Adresse des nächsten Knotens, ein Flag für ein bisher gültiges Blatt, ein Feld für einen Zeiger auf das bisher beste Blatt und ein Feld für eine Länge von verwendeten Suchdaten. Das Antwortergebnis (Blattzugriffsergebnis) 604 umfasst ein Suchergebnistypen-Feld und das resultierende Blattknotendaten-Feld.
  • Eine oder mehrere Baum-Bitmap- oder andere Datenstrukturen werden in den Wartungsprozessor 502 (5) geladen und können von diesem wiedergewonnen werden, indem Anforderungen zur Aktualisierungssteuerung 539 übermittelt werden, die Aktualisierungsanforderungen zum Speicher-Manager 520 sendet und Informationen von Speichervorrichtungen und Steuerungen 521-529 und vom SRAM und von der Steuerung 530 empfangen kann.
  • 6B stellt das Format von Knoten oder Datenstrukturelementen dar, die in einer Ausführungsform verwendet werden. Der Such/End/Stopp-Knoten 611 umfasst ein Knotentyp-Feld, eine Sohn-Feld-Clustergröße, die eine im momentanen Knoten verwendete Schrittweitengröße angibt, folglich kann die Datenstruktur Schrittweiten und Knoten mit variablen Längen verwenden. Der Such/End/Stopp-Knoten 611 umfasst ferner das erweiterte Bitmap, ein Sohn- (z. B. Sohn-Felder) Zeigerfeld, einen Zeiger auf das bisher beste Blatt, ein Flag für die Existenz eines internen Knotens und ein Fehlerkorrekturcode-Feld. Der interne Knoten 612 umfasst ein Knotentypfeld, ein Blatt-Feld-Zeigerfeld, ein Feld für den Zeiger auf das beste Blatt bis jetzt, ein internes Bitmap-Feld und ein Fehlerkorrekturcode-Feld. Der Blattknoten 613 umfasst ein Knotentypfeld, ein Feld für assoziative Rückführungsdaten und ein Fehlerkorrekturcode-Feld. Der Überspringknoten 614 umfasst ein Knotentypfeld, ein Feld für verglichene Daten, ein Feld für eine verglichene Länge, ein Feld für das bisher beste Blatt, ein Sohn- (z. B. Sohn-Felder) Zeiger-Feld und ein Fehlerkorrekturcode-Feld.
  • Bei Rückkehr zu 5 werden Suchanforderungen wie z. B., jedoch nicht begrenzt auf die hierin beschriebenen, vom Anforderungspuffer 512 empfangen. Wenn die Speicheradresse des Knotens auf der Basis der empfangenen Suchanforderung leicht erhältlich ist, wird die Anforderung direkt zum Speicher-Manager 520 weitergeleitet. Ansonsten wird die Anforderung zur Baum-Bitmap-Logik 514 für die nächste Adresse weitergeleitet, in der die Speicheradresse berechnet wird. Es ist zu beachten, dass die Baum-Bitmap-Logik 514 für die nächste Adresse auch Speicherleseergebnisse empfängt und die Speicheradresse des nächsten Knotens berechnet oder das Speicherleseergebnis (z. B. Knoten) zur Ausgangswarteschlange 535 weiterleitet.
  • 6C stellt einen Prozess dar, der in einer Ausführungsform verwendet wird, um die nächste Adresse (z. B. die Adresse des relevanten nächsten Knotens oder Elements in der Datenstruktur) zu berechnen oder zu bestimmen. Die Verarbeitung beginnt mit dem Prozessblock 650 und geht zum Prozessblock 652 weiter, in dem die momentane Schrittweitenlänge des nächsten Abschnitts des Nachschlange-String und das Sohn-Bitmap wiedergewonnen werden. Es ist zu beachten, dass die Schrittweitenlänge eines Eintrages in einer Ausführungsform unter jedem Eintrag variieren kann. Überdies unterstützt eine Ausführungsform variierende Größen des Sohn-Feldes, wobei diese Größe durch die Sohn-Feld-Clustergröße identifiziert wird. Im Prozessblock 654 wird als nächstes die Anzahl von Einsen im Sohn-Bitmap des Eintrags bis zu der Position, die dem Nachschlage-String entspricht, gezählt. Folglich identifiziert dieser Zählstand, welches Element das nächste interessierende ist. Im Prozessblock 656 wird die nächste Adresse auf der Basis des Sohn-Zeigers plus dem Zählstand, multipliziert mit der Breite eines Zeiger-Feldes, berechnet. Dann wird im Prozessblock 658 die Nachschlageanforderung, einschließlich der bestimmten nächsten Adresse, Speicherbank und des zu verwendenden Kanals, zum Speicher-Manager weitergeleitet und die Verarbeitung ist beendet, wie durch den Prozessblock 659 angegeben.
  • Die Verarbeitung durch die Anforderungsvorrichtung 501 (5) und die Durchlaufmaschine 500 wird durch die Ablaufdiagramme, die in 7 und 8A-D dargestellt sind, denen wir uns nun zuwenden, weiter beschrieben.
  • 7 stellt einen Prozess dar, der in einer Ausführungsform durch die Anforderungsvorrichtung 501 (5) verwendet wird. Die Verarbeitung beginnt mit dem Prozessblock 700 und geht zum Prozessblock 702 weiter, in dem ein Paket oder andere Informationen empfangen werden. Als nächstes wird im Prozessblock 704 eine Speichersuchanforderung wie z. B. eine anfängliche Suchanforderung 601 (6A) zur Durchlaufmaschine 500 (5) weitergeleitet. Im Prozessblock 706 wird als nächstes das Ergebnis von der Durchlaufmaschine 500 empfangen. Wie im Prozessblock 708 bestimmt, wenn die Suche nicht beendet ist (z. B. mehr Bits zur Durchlaufmaschine in einer Suchanforderung zu liefern sind, wie z. B. für eine fortgesetzte Suchanforderung 602 von 6A), kehrt die Verarbeitung zum Prozessblock 704 zurück, um die Suchanforderung zu erzeugen und zu übertragen. Ansonsten wird im Prozessblock 710 das Paket oder die anderen Informationen auf der Basis des empfangenen Ergebnisses verarbeitet. Die Verarbeitung ist für diese Suche beendet, wie durch den Prozessblock 712 angegeben.
  • 8A-D stellen einen Prozess dar, der in einer Ausführungsform verwendet wird, um die Baum-Bitmap- oder eine andere Datenstruktur zu durchlaufen. Die Verarbeitung beginnt mit dem Prozessblock 800 und geht zum Prozessblock 802 weiter, in dem die anfängliche oder fortgesetzte Suchanforderung empfangen wird. Wie im Prozessblock 804 bestimmt, wird, wenn der erste Speicherzugriff im SRAM und der Steuerung 530 durchgeführt werden sollte, dann als nächstes im Prozessblock 808 die SRAM-Nachschlageadresse im Prozessblock 806 bestimmt und die Speicherzugriffsanforderung (d. h. Nachschlageanforderung) wird zur SRAM-Steuereinheit weitergeleitet, um den Speicherzugriff durchzuführen. Ansonsten oder bei Fortsetzung über das Verbindungselement 8A (811) im Prozessblock 810 wird die Nachschlageanforderung zu einer der externen Speichervorrichtungen auf der Basis irgendeines Verteilungsschemas für die Speichervorrichtungen, das verfügbar ist, um die Anforderungen zu bedienen, weitergeleitet. In einer Ausführungsform wird jede der einen oder mehreren Baum-Bitmap- oder anderen Datenstrukturen in jedem der externen Speicher wiederholt. In einer Ausführungsform besetzen bestimmte der Baum-Bitmap- oder anderen Daten strukturen eine Teilmenge der externen Speicher.
  • Im Prozessblock 812 wird als nächstes das Nachschlageergebnis empfangen. Wenn, wie im Prozessblock 814 bestimmt, das Nachschlageergebnis einen Überspringknoten umfasst, dann geht die Verarbeitung über das Verbindungselement 8B (816) zum Verbindungselement 8B (830) in 8B weiter. Wenn, wie im Prozessblock 818 bestimmt, das Nachschlageergebnis einen internen Knoten umfasst, dann geht die Verarbeitung ansonsten über das Verbindungselement 8C (820) zum Verbindungselement 8C (850) in 8C weiter. Wenn, wie im Prozessblock 822 bestimmt, das Nachschlageergebnis einen Blattknoten umfasst, dann wird ansonsten im Prozessblock 824 der Rückführungswert des Nachschlagens im Prozessblock 824 gesandt und die Verarbeitung ist beendet, wie durch den Prozessblock 826 angegeben. Ansonsten geht die Verarbeitung über das Verbindungselement 8D (828) zum Verbindungselement 8D (870) in 8D weiter.
  • Beim Zuwenden zu 8B fährt die Verarbeitung über das Verbindungselement 8B (830) oder 8E (840) fort. Beim Beginnen ab dem Verbindungselement 8B (830), wie im Prozessblock 832 bestimmt, wird, wenn ein bestes Blatt vorhanden ist, das dem momentanen Knoten entspricht, dann dieses beste Blatt als in der Suche bisher entdecktes momentanes bestes Blatt im Prozessblock 834 gespeichert. Wie im Prozessblock 836 bestimmt, entsprechen die im Überspringknoten bereitgestellten Überspringbits den nächsten Datenbits des Nachschlage-Strings, dann wird als nächstes im Prozessblock 838 die festgelegte Adresse im Überspringknoten als nächster Adressenwert verwendet und die Verarbeitung kehrt über das Verbindungselement 8A (839) zum Verbindungselement 8A (811) in 8A zurück. Der Überspringknoten ermöglicht, dass ein String von Suchdaten mit einem programmierten String verglichen wird, der einem oder mehreren Tries entsprechen kann und folglich verwendet werden kann, um Speicherzugriffe und Nachschlagezeit zu sparen. Dieses Überspringknotenmerkmal ist besonders nützlich, wenn lange Strings im Nachschlage-String vorhanden sind, die nicht variieren, wie z. B. bei einem IPv6-Nachschlagen.
  • Ansonsten oder bei Fortsetzung vom Verbindungselement 8E (840), wenn eine beste Anpassung im Prozessblock 842 bestimmt wurde, dann wird dieser Wert der besten Anpassung als nächste Adresse verwendet und die Verarbeitung geht über das Verbindungselement 8A (847) zum Verbindungselement 8A (811), 8A, weiter. Ansonsten wurde kein Ergebnis einer besten Anpassung aufgefunden und das Ergebnis für keine Anpassung wird im Prozessblock 844 gesandt und die Verarbeitung dieser Suche wird beendet, wie durch den Prozessblock 845 angegeben.
  • Beim Zuwenden zu 8C, wobei ab dem Verbindungselement 8C (850) begonnen wird, wird, wie im Prozessblock 852 bestimmt, wenn ein bestes Blatt vorhanden ist, das dem momentanen Knoten entspricht, dann dieses beste Blatt als in der Suche bisher entdecktes momentanes bestes Blatt im Prozessblock 854 gespeichert. Wie im Prozessblock 856 bestimmt, wird als nächstes, wenn das Versatzbit-Flag im Baum-Bitmap (d. h. das Baum-Bitmap soll analysiert werden) gesetzt ist, dann im Prozessblock 858 die Adresse des Blattknotens im Prozessblock 858 berechnet und die Verarbeitung geht über das Verbindungselement 8A (859) zum Verbindungselement 8A (811), 8A, weiter. Ansonsten geht die Verarbeitung über das Verbindungselement 8E (857) zum Verbindungselement 8E (840) in 8B weiter.
  • Beim Zuwenden zu 8D, wobei ab dem Verbindungselement 8D (870) begonnen wird, wird, wie im Prozessblock 872 bestimmt, wenn ein bestes Blatt vorhanden ist, das dem momentanen Knoten entspricht, dann dieses beste Blatt als bisher in der Suche entdecktes momentanes bestes Blatt im Prozessblock 873 gespeichert. Wie im Prozessblock 874 bestimmt, geht als nächstes, wenn das entsprechende Bit im externen Bitmap nicht gesetzt ist (z. B. kein externes Nachschlagen für dieses Nachschlagen besteht), dann die Verarbeitung zum Prozessblock 876 weiter. Wenn der Sohnknoten kein interner Knoten ist, dann wird, wie im Prozessblock 880 bestimmt, wenn eine Anpassung des Nachschlage-String besteht, im Prozessblock 881 die nächste Adresse auf die beste Adresse gesetzt und die Verarbeitung geht über das Verbindungselement 8A (883) zum Verbindungselement 8A (811), 8A, weiter. Ansonsten wird im Prozessblock 882 ein Ergebnis für keine Anpassung im Prozessblock 882 gesandt und die Verarbeitung wird beendet, wie durch den Prozessblock 883 angegeben. Wenn ein interner Knoten, wie im Prozessblock 876 bestimmt, vorliegt, dann wird ansonsten im Prozessblock 878 die nächste Adresse auf den Wert des Sohn-Zeigers gesetzt und die Verarbeitung geht über das Verbindungselement 8A (879) zum Verbindungselement 8A (811), 8A, weiter.
  • Ansonsten wird die nächste Adresse des Sohnknotens im Prozessblock 884 berechnet. Wenn der momentane Knoten ein Stoppknoten ist (z. B. eine Durchlaufstoppangabe angibt), wie im Prozessblock 886 bestimmt, dann wird der Zustand der Suche im Prozessblock 888 zurückgeführt oder gesandt und die Verarbeitung wird beendet, wie durch den Prozessblock 889 angegeben. Ansonsten geht die Verarbeitung über das Verbindungselement 8A (887) zum Verbindungselement 8A (811), 8A, weiter.
  • Angesichts der vielen möglichen Ausführungsformen, auf die die Prinzipien unserer Erfindung angewendet werden können, ist zu erkennen, dass die Ausführungsformen und Aspekte davon, die hierin mit Bezug auf die Zeichnungen/Fig.- beschrieben sind, nur erläuternd sind und nicht als Begrenzung des Schutzbereichs der Erfindung aufgefasst werden sollten. Beispielsweise und wie für einen Fachmann ersichtlich wäre, können viele der Prozessblockoperationen umgeordnet werden, so dass sie vor, nach oder im Wesentlichen gleichzeitig mit anderen Operationen durchgeführt werden. Viele verschiedene Formen von Datenstrukturen könnten auch in verschiedenen Ausführungsformen verwendet werden. Die Erfindung, wie hierin beschrieben, zieht alle solchen Ausführungsformen in Betracht, die in den Schutzbereich der folgenden Ansprüche und Äquivalente davon fallen können.

Claims (23)

  1. Computerlesbares Medium, in dem eine Datenstruktur gespeichert ist, wobei die Datenstruktur umfasst: einen ersten Suchknoten (211); ein erstes Sohn-Feld, das einen ersten internen Knoten (221) und einen zweiten Suchknoten (212) enthält; und ein erstes Blatt-Feld (222), das mehrere erste Blatt-Feldeinträge (222A, 222B) enthält; wobei der erste Suchknoten (211) einen Zeiger auf das erste Sohn-Feld enthält; wobei der erste interne Knoten (221) einen Zeiger auf das erste Blatt-Feld (222) enthält; und wobei der zweite Suchknoten (212) einen Zeiger (220) auf einen der mehreren ersten Blatt-Feldeinträge (222A, 222B) enthält.
  2. Computerlesbares Medium nach Anspruch 1, bei dem der erste interne Knoten das erste Element des ersten Sohn-Feldes ist.
  3. Computerlesbares Medium nach Anspruch 1, bei dem der Zeiger des ersten internen Knotens (221) und der Zeiger (220) des zweiten Suchknotens unterschiedliche erste Blatt-Feldeinträge (222A, 222B) angeben.
  4. Computerlesbares Medium nach Anspruch 1, das ein zweites Sohn-Feld umfasst; und wobei der zweite Suchknoten einen Zeiger auf das zweite Sohn-Feld enthält.
  5. Computerlesbares Medium nach Anspruch 4, das ein zweites Blatt-Feld (215) mit mehreren zweiten Blatt-Feldeinträgen (215A, 215B) umfasst; und wobei das zweite Sohn-Feld einen zweiten internen Knoten (224) enthält, wobei der zweite interne Knoten einen Zeiger auf das zweite Blatt-Feld (215) enthält.
  6. Computerlesbares Medium nach Anspruch 5, bei dem der zweite interne Knoten (224) das erste Element des zweiten Sohn-Feldes ist.
  7. Computerlesbares Medium nach Anspruch 6, bei dem das zweite Sohn-Feld einen dritten Suchknoten (213) oder Endknoten enthält, wobei der dritte Such- oder Endknoten einen Zeiger (230) auf einen der mehreren zweiten Blatt-Feldeinträge enthält.
  8. Computerlesbares Medium nach Anspruch 7, bei dem der Zeiger des zweiten internen Knotens und der Zeiger des dritten Such- oder Endknotens auf unterschiedliche zweite Blatt-Feldeinträge zeigen.
  9. Computerlesbares Medium nach Anspruch 1, bei dem der erste Suchknoten (211) eine Schrittweite einer ersten Länge repräsentiert und der zweite Suchknoten (212) eine Schrittweite einer zweiten Länge repräsentiert, wobei die erste und die zweite Länge unterschiedlich sind.
  10. Computerlesbares Medium nach Anspruch 9, bei dem der erste Suchknoten einen ersten Indikator der ersten Länge enthält und der zweite Suchknoten einen zweiten Indikator der zweiten Länge enthält.
  11. Vorrichtung zum Durchlaufen von Knoten einer oder mehrerer Baum-Datenstrukturen anhand eines Eingangsdaten-Strings, wobei die Vorrichtung umfasst: einen Baum-Bitmap-Mechanismus (514) für die nächste Adresse, um eine Speicheradresse eines nächsten Knotens einer bestimmten Baumdatenstruktur der einen oder der mehreren Baumdatenstrukturen zu bestimmen, wobei der nächste Knoten einem Abschnitt des Eingangsdaten-Strings entspricht; mehrere Speichervorrichtungen (521, 529), um die eine oder die mehreren Baumdatenstrukturen zu speichern und um den nächsten Knoten in Reaktion auf eine Wiedergewinnungsanforderung zurückzuführen; und einen Speicher-Manager (520), der mit dem Baum-Bitmap-Mechanismus (514) für die nächste Adresse und mit den mehreren Speichervorrichtungen (521, 529) gekoppelt ist, um die Wiedergewinnungsanforderung auf eine der mehreren Speichervorrichtungen zu verteilen; wobei jede der einen oder der mehreren Baumdatenstrukturen umfasst: einen ersten Suchknoten (211); ein erstes Sohn-Feld, das einen ersten internen Knoten (221) und einen zweiten Suchknoten (212) enthält; und ein erstes Blatt-Feld (222), das mehrere erste Blatt-Feldeinträge (222A, 222B) enthält; wobei der erste Suchknoten (211) einen Zeiger auf das erste Sohn-Feld enthält; wobei der erste interne Knoten (221) einen Zeiger auf das erste Blatt-Feld (222) enthält; und wobei der zweite Suchknoten (212) einen Zeiger (220) auf einen der mehreren ersten Blatt-Feldeinträge (222A, 222B) enthält.
  12. Vorrichtung nach Anspruch 11, bei der die eine oder die mehreren Datenstrukturen Knoten wenigstens zweier unterschiedlicher Bäume enthalten.
  13. Vorrichtung nach Anspruch 11 oder 12, bei der der Baum-Bitmap-Mechanismus (514) für die nächste Adresse ferner die eine der mehreren Speichervorrichtungen (521, 529) bestimmt und einen Hinweis auf die eine der mehreren Speichervorrichtungen für den Speicher-Manager (520) bereitstellt.
  14. Vorrichtung nach einem der Ansprüche 11 bis 13, bei der der nächste Knoten einen Hinweis auf eine Bestimmte der mehreren Speichervorrichtungen (521, 529) enthält, wobei der Speichermanager (520) die Wiedergewinnungsanforderung auf die Bestimmte der mehreren Speichervorrichtungen verteilt.
  15. Vorrichtung nach einem der Ansprüche 11 bis 14, bei der die mehreren Speichervorrichtungen eine erste Speichervorrichtung eines ersten Typs (521) und eine zweite Speichervorrichtung eines zweiten Typs (529) enthalten, wobei der erste Typ und der zweite Typ verschieden sind.
  16. Vorrichtung nach einem der Ansprüche 11 bis 15, bei der der erste Speichertyp einen Knoten erster Ebene für jede der Baumdatenstrukturen speichert.
  17. Verfahren zum Durchlaufen von Knoten einer oder mehrerer Baumdatenstrukturen anhand eines Eingangsdaten-Strings, wobei das Verfahren umfasst: Bestimmen einer Speicheradresse eines nächsten Knotens einer bestimmten Baumdatenstruktur der einen oder der mehreren Baumdatenstrukturen, wobei der nächste Knoten einem Abschnitt des Eingangsdaten-Strings entspricht; Speichern der einen oder der mehreren Baumdatenstrukturen und Zurückführen des nächsten Knotens in Reaktion auf eine Wiedergewinnungsanforderung; Verteilen der Wiedergewinnungsanforderung auf eine Speichervorrichtung; wobei jede der einen oder der mehreren Baumdatenstrukturen enthält: einen ersten Suchknoten (211); ein erstes Sohn-Feld, das einen ersten internen Knoten (221) und einen zweiten Suchknoten (212) enthält; und ein erstes Blatt-Feld (222), das mehrere erste Blatt-Feldeinträge (222A, 222B) enthält; wobei der erste Suchknoten (211) einen Zeiger auf das erste Sohn-Feld enthält; wobei der erste interne Knoten (221) einen Zeiger auf das erste Blatt-Feld (222) enthält; und wobei der zweite Suchknoten (212) einen Zeiger (220) auf einen der mehreren ersten Blatt-Feldeinträge (222A, 222B) enthält.
  18. Verfahren nach Anspruch 17, das ferner das Bestimmen einer Speichervorrichtung aus mehreren Speichervorrichtungen (521, 529) anhand der Speicheradresse des nächsten Knotens und das Bereitstellen eines Hinweises auf die eine der mehreren Speichervorrichtungen für einen Speicher-Manager (520) umfasst.
  19. Verfahren nach Anspruch 28, das ferner das Verteilen der Wiedergewinnungsanforderung auf die Speichervorrichtung, die aus den mehreren Speichervorrichtungen (521, 529) bestimmt wurde, umfasst.
  20. Verfahren nach Anspruch 17, bei dem die eine oder die mehreren Baumdatenstrukturen mehrere Präfixe repräsentieren, die in mehrere Schrittweiten einer Anzahl von Baumebenen größer als Eins partitioniert sind, wobei jede der mehreren Schrittweiten durch ein Baum-Bitmap präsentiert wird, wobei Hinweise auf Pfade in einem Sohn-Feld durch ein erweitertes Bitmap repräsentiert werden und wobei die Baumdatenstruktur ausgehend von einem Suchknoten (211) auf einer momentanen Ebene in der Baumdatenstruktur durchlaufen wird, wobei das Verfahren ferner umfasst: (a) Aktualisieren eines Identifizierers (834) der momentanen besten Anpassung anhand des nächsten Knotens, der in Reaktion auf eine Wiedergewinnungsanforderung zurückgeführt wird; und wobei das Bestimmen einer Speicheradresse eines nächsten Knotens (884) umfasst: (b) Indexieren in einem erweiterten Bitmap, um festzustellen, ob ein angepasster Knoten (886) der nächsten Ebene existiert oder nicht; in Reaktion auf die Bestimmung der Existenz des angepassten Knotens der nächsten Ebene Wiederholen der Schritte (a) und (b) für die momentane Ebene, die eine nächste Ebene ist, die anhand der Indexierung in dem erweiterten Bitmap identifiziert wird, um einen Versatz in einem Sohn-Feld, auf das der Suchknoten (211) zeigt, zu bestimmen; in Reaktion auf die Bestimmung der Nichtexistenz des angepassten Knotens der nächsten Ebene Ausführen der folgenden Schritte, die umfassen: Wiedergewinnen eines internen Knotens, auf den der Suchknoten (818) der momentanen Ebene hinweist; und Identifizieren eines Suchergebnisses (824) anhand des Identifizierers der momentanen besten Anpassung oder anhand eines Zeigers in dem Suchknoten der momentanen Ebene auf einen Blatt-Knoten (822).
  21. Verfahren nach Anspruch 20, das ferner in Reaktion auf die Bestimmung der Nichtexistenz des Suchknotens auf der momentanen Ebene das Indexieren in einem Endknoten umfasst, um das Suchergebnis zu identifizieren.
  22. Verfahren nach Anspruch 21, das ferner das Aktualisieren des Identifizierers der momentanen besten Anpassung anhand eines Zeigers in dem Endknoten umfasst.
  23. Computerlesbares Medium oder Computerprogramm oder Computerprogrammprodukt, das von einem Computer ausführbare Befehle enthält, um das Verfahren nach einem der Schritte 17 bis 22 auszuführen.
DE60305035T 2002-05-31 2003-03-15 Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen Expired - Lifetime DE60305035T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US161504 1980-06-20
US10/161,504 US7899067B2 (en) 2002-05-31 2002-05-31 Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
PCT/US2003/008308 WO2003103240A1 (en) 2002-05-31 2003-03-15 Longest prefix matching using tree bitmap data structures

Publications (2)

Publication Number Publication Date
DE60305035D1 DE60305035D1 (de) 2006-06-08
DE60305035T2 true DE60305035T2 (de) 2006-11-23

Family

ID=29709760

Family Applications (3)

Application Number Title Priority Date Filing Date
DE60313371T Expired - Lifetime DE60313371T2 (de) 2002-05-31 2003-03-15 Verwendung von baumartigen "Bitmap" Datenstrukturen
DE60322756T Expired - Lifetime DE60322756D1 (de) 2002-05-31 2003-03-15 Finden des längsten passenden Präfix unter Verwendung von baumartigen Bitmap-Datenstrukturen
DE60305035T Expired - Lifetime DE60305035T2 (de) 2002-05-31 2003-03-15 Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE60313371T Expired - Lifetime DE60313371T2 (de) 2002-05-31 2003-03-15 Verwendung von baumartigen "Bitmap" Datenstrukturen
DE60322756T Expired - Lifetime DE60322756D1 (de) 2002-05-31 2003-03-15 Finden des längsten passenden Präfix unter Verwendung von baumartigen Bitmap-Datenstrukturen

Country Status (8)

Country Link
US (4) US7899067B2 (de)
EP (3) EP1510046B1 (de)
CN (1) CN100465947C (de)
AT (3) ATE404007T1 (de)
AU (1) AU2003214223B2 (de)
CA (1) CA2484446A1 (de)
DE (3) DE60313371T2 (de)
WO (1) WO2003103240A1 (de)

Families Citing this family (243)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7295509B2 (en) 2000-09-13 2007-11-13 Qualcomm, Incorporated Signaling method in an OFDM multiple access system
US9130810B2 (en) 2000-09-13 2015-09-08 Qualcomm Incorporated OFDM communications methods and apparatus
US8532127B2 (en) 2001-10-19 2013-09-10 Juniper Networks, Inc. Network routing using indirect next hop data
US7899067B2 (en) * 2002-05-31 2011-03-01 Cisco Technology, Inc. Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
US7058725B2 (en) * 2002-06-13 2006-06-06 Intel Corporation Method and apparatus to perform network routing using multiple length trie blocks
US7039018B2 (en) * 2002-07-17 2006-05-02 Intel Corporation Technique to improve network routing using best-match and exact-match techniques
US7684400B2 (en) * 2002-08-08 2010-03-23 Intel Corporation Logarithmic time range-based multifield-correlation packet classification
US6934252B2 (en) * 2002-09-16 2005-08-23 North Carolina State University Methods and systems for fast binary network address lookups using parent node information stored in routing table entries
US7346009B2 (en) * 2002-09-30 2008-03-18 Mosaid Technologies, Inc. Dense mode coding scheme
US20040071139A1 (en) * 2002-10-10 2004-04-15 Burnett Charles James Method and apparatus for efficient administration of memory resources in a data network tester
JP3842250B2 (ja) * 2003-07-08 2006-11-08 インターナショナル・ビジネス・マシーンズ・コーポレーション 経路制御装置、経路制御方法及びそのプログラム
KR100586461B1 (ko) * 2003-10-15 2006-06-08 임혜숙 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
US7240149B1 (en) 2003-11-06 2007-07-03 Cisco Technology, Inc. Multiple branch operations in an associative memory
US7249228B1 (en) 2004-03-01 2007-07-24 Cisco Technology, Inc. Reducing the number of block masks required for programming multiple access control list in an associative memory
US7515588B2 (en) * 2004-03-18 2009-04-07 Intel Corporation Method and apparatus to support a large internet protocol forwarding information base
US7486672B2 (en) * 2004-04-20 2009-02-03 Samsung Electronics Co., Ltd. Apparatus and method for searching trie trees using masks with non-symbol boundaries and flooding default routes in a massively parallel router
US7403526B1 (en) 2004-05-17 2008-07-22 Cisco Technology, Inc. Partitioning and filtering a search space of particular use for determining a longest prefix match thereon
US7567571B2 (en) * 2004-05-26 2009-07-28 Samsung Electronics Co., Ltd. Apparatus and method using vector table indirection to maintain forwarding tables in a router
US7290083B2 (en) * 2004-06-29 2007-10-30 Cisco Technology, Inc. Error protection for lookup operations in content-addressable memory entries
JP4309818B2 (ja) * 2004-07-15 2009-08-05 株式会社東芝 構造化文書管理装置、検索装置、記憶方法、検索方法及びプログラム
US9137822B2 (en) 2004-07-21 2015-09-15 Qualcomm Incorporated Efficient signaling over access channel
US9148256B2 (en) 2004-07-21 2015-09-29 Qualcomm Incorporated Performance based rank prediction for MIMO design
US7219195B2 (en) * 2004-12-21 2007-05-15 Cisco Technology, Inc. Associative memory with invert result capability
CN100349418C (zh) * 2004-12-22 2007-11-14 华为技术有限公司 生成通信设备树型结构的方法
US7523251B2 (en) * 2005-01-18 2009-04-21 Cisco Technology, Inc. Quaternary content-addressable memory
US9246560B2 (en) 2005-03-10 2016-01-26 Qualcomm Incorporated Systems and methods for beamforming and rate control in a multi-input multi-output communication systems
US9154211B2 (en) 2005-03-11 2015-10-06 Qualcomm Incorporated Systems and methods for beamforming feedback in multi antenna communication systems
US8446892B2 (en) 2005-03-16 2013-05-21 Qualcomm Incorporated Channel structures for a quasi-orthogonal multiple-access communication system
US9461859B2 (en) 2005-03-17 2016-10-04 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9143305B2 (en) 2005-03-17 2015-09-22 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9520972B2 (en) 2005-03-17 2016-12-13 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9184870B2 (en) 2005-04-01 2015-11-10 Qualcomm Incorporated Systems and methods for control channel signaling
US9408220B2 (en) 2005-04-19 2016-08-02 Qualcomm Incorporated Channel quality reporting for adaptive sectorization
US9036538B2 (en) * 2005-04-19 2015-05-19 Qualcomm Incorporated Frequency hopping design for single carrier FDMA systems
US8565194B2 (en) 2005-10-27 2013-10-22 Qualcomm Incorporated Puncturing signaling channel for a wireless communication system
US8879511B2 (en) 2005-10-27 2014-11-04 Qualcomm Incorporated Assignment acknowledgement for a wireless communication system
US8611284B2 (en) 2005-05-31 2013-12-17 Qualcomm Incorporated Use of supplemental assignments to decrement resources
US8462859B2 (en) 2005-06-01 2013-06-11 Qualcomm Incorporated Sphere decoding apparatus
US8599945B2 (en) 2005-06-16 2013-12-03 Qualcomm Incorporated Robust rank prediction for a MIMO system
US9179319B2 (en) 2005-06-16 2015-11-03 Qualcomm Incorporated Adaptive sectorization in cellular systems
US8885628B2 (en) 2005-08-08 2014-11-11 Qualcomm Incorporated Code division multiplexing in a single-carrier frequency division multiple access system
US7739314B2 (en) * 2005-08-15 2010-06-15 Google Inc. Scalable user clustering based on set similarity
US20070041457A1 (en) 2005-08-22 2007-02-22 Tamer Kadous Method and apparatus for providing antenna diversity in a wireless communication system
US9209956B2 (en) 2005-08-22 2015-12-08 Qualcomm Incorporated Segment sensitive scheduling
US8644292B2 (en) 2005-08-24 2014-02-04 Qualcomm Incorporated Varied transmission time intervals for wireless communication system
US9136974B2 (en) 2005-08-30 2015-09-15 Qualcomm Incorporated Precoding and SDMA support
CN100418090C (zh) * 2005-08-31 2008-09-10 国际商业机器公司 一种存储数据的方法
US7551609B2 (en) * 2005-10-21 2009-06-23 Cisco Technology, Inc. Data structure for storing and accessing multiple independent sets of forwarding information
US7489689B2 (en) * 2005-10-26 2009-02-10 Cisco Technology, Inc. Method, system and apparatus for scheduling a large pool of resources
US9144060B2 (en) 2005-10-27 2015-09-22 Qualcomm Incorporated Resource allocation for shared signaling channels
US8477684B2 (en) 2005-10-27 2013-07-02 Qualcomm Incorporated Acknowledgement of control messages in a wireless communication system
US9210651B2 (en) 2005-10-27 2015-12-08 Qualcomm Incorporated Method and apparatus for bootstraping information in a communication system
US8582509B2 (en) 2005-10-27 2013-11-12 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US8045512B2 (en) 2005-10-27 2011-10-25 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US8693405B2 (en) 2005-10-27 2014-04-08 Qualcomm Incorporated SDMA resource management
US9172453B2 (en) 2005-10-27 2015-10-27 Qualcomm Incorporated Method and apparatus for pre-coding frequency division duplexing system
US9225488B2 (en) 2005-10-27 2015-12-29 Qualcomm Incorporated Shared signaling channel
US9225416B2 (en) 2005-10-27 2015-12-29 Qualcomm Incorporated Varied signaling channels for a reverse link in a wireless communication system
US9088384B2 (en) 2005-10-27 2015-07-21 Qualcomm Incorporated Pilot symbol transmission in wireless communication systems
US8582548B2 (en) 2005-11-18 2013-11-12 Qualcomm Incorporated Frequency division multiple access schemes for wireless communication
US7536507B1 (en) * 2006-03-30 2009-05-19 Emc Corporation Methods, systems, and computer program products for preserving atomic writes using leaves and bitmaps
CN100421114C (zh) * 2006-04-21 2008-09-24 华为技术有限公司 基于关键字进行数据匹配查询的方法
US20070255676A1 (en) * 2006-04-27 2007-11-01 Brown David A Methods and apparatus for performing tree-based processing using multi-level memory storage
FR2902954B1 (fr) * 2006-06-21 2008-10-17 Netasq Sa Systeme et procede de stockage d'un inventaire des systemes et/ou services presents sur un reseau de communication
US20080022079A1 (en) * 2006-07-24 2008-01-24 Archer Charles J Executing an allgather operation with an alltoallv operation in a parallel computer
US8284787B2 (en) * 2006-07-27 2012-10-09 University Of Florida Research Foundation, Incorporated Dynamic tree bitmap for IP lookup and update
US7689889B2 (en) * 2006-08-24 2010-03-30 Cisco Technology, Inc. Content addressable memory entry coding for error detection and correction
CN101507191A (zh) * 2006-08-25 2009-08-12 佛罗里达大学研究基金公司 被递归地分割的静态ip路由表
SE531557C2 (sv) 2006-10-20 2009-05-19 Oricane Ab Förfarande, klassificeringsanordning, datorprogramprodukt och system för att representera en del av n w-bit-intervall hörande till d-bit data i ett datakommunikationsnätverk
WO2008048185A1 (en) * 2006-10-20 2008-04-24 Oricane Ab Method, device, computer program product and system for representing a partition of n w-bit intervals associated to d-bit data in a data communications network
US7895164B1 (en) * 2007-03-13 2011-02-22 Librato, Inc. Efficient checkpoint process
JP5105922B2 (ja) * 2007-03-22 2012-12-26 日本電気株式会社 情報更新システム、情報記憶サーバ、情報更新方法、及び、プログラム
US8806059B1 (en) * 2007-04-05 2014-08-12 Juniper Networks, Inc. Rule tree for network device
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
US20090006663A1 (en) * 2007-06-27 2009-01-01 Archer Charles J Direct Memory Access ('DMA') Engine Assisted Local Reduction
US7991910B2 (en) 2008-11-17 2011-08-02 Amazon Technologies, Inc. Updating routing information based on client location
US8028090B2 (en) 2008-11-17 2011-09-27 Amazon Technologies, Inc. Request routing utilizing client location information
CN101141389B (zh) * 2007-09-29 2010-06-16 华为技术有限公司 增强多位Trie树查找方法和装置
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US8156243B2 (en) 2008-03-31 2012-04-10 Amazon Technologies, Inc. Request routing
US7970820B1 (en) 2008-03-31 2011-06-28 Amazon Technologies, Inc. Locality based content distribution
US8447831B1 (en) 2008-03-31 2013-05-21 Amazon Technologies, Inc. Incentive driven content delivery
US8533293B1 (en) 2008-03-31 2013-09-10 Amazon Technologies, Inc. Client side cache management
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US7962597B2 (en) 2008-03-31 2011-06-14 Amazon Technologies, Inc. Request routing based on class
US8321568B2 (en) 2008-03-31 2012-11-27 Amazon Technologies, Inc. Content management
US8422402B2 (en) * 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
CN101572647B (zh) * 2008-04-30 2012-07-04 华为技术有限公司 一种数据查找的方法及装置
CN101577662B (zh) 2008-05-05 2012-04-04 华为技术有限公司 一种基于树形数据结构的最长前缀匹配方法和装置
US8484440B2 (en) 2008-05-21 2013-07-09 International Business Machines Corporation Performing an allreduce operation on a plurality of compute nodes of a parallel computer
US7925782B2 (en) 2008-06-30 2011-04-12 Amazon Technologies, Inc. Request routing using network computing components
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
KR101531268B1 (ko) * 2008-08-05 2015-06-26 삼성전자주식회사 경량진동체를 구비한 초음파 모터
US8316124B1 (en) 2008-09-29 2012-11-20 Amazon Technologies, Inc. Managing network data display
US8122124B1 (en) 2008-09-29 2012-02-21 Amazon Technologies, Inc. Monitoring performance and operation of data exchanges
US8051166B1 (en) 2008-09-29 2011-11-01 Amazon Technologies, Inc. Service provider optimization of content management
US8286176B1 (en) 2008-09-29 2012-10-09 Amazon Technologies, Inc. Optimizing resource configurations
US7930393B1 (en) 2008-09-29 2011-04-19 Amazon Technologies, Inc. Monitoring domain allocation performance
US8117306B1 (en) 2008-09-29 2012-02-14 Amazon Technologies, Inc. Optimizing content management
US7865594B1 (en) 2008-09-29 2011-01-04 Amazon Technologies, Inc. Managing resources consolidation configurations
US7738454B1 (en) * 2008-09-30 2010-06-15 Juniper Networks, Inc. Methods and apparatus related to packet classification based on range values
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US7835357B2 (en) 2008-09-30 2010-11-16 Juniper Networks, Inc. Methods and apparatus for packet classification based on policy vectors
US8675648B1 (en) 2008-09-30 2014-03-18 Juniper Networks, Inc. Methods and apparatus for compression in packet classification
US7961734B2 (en) * 2008-09-30 2011-06-14 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US8798057B1 (en) 2008-09-30 2014-08-05 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
US7796541B1 (en) 2008-09-30 2010-09-14 Juniper Networks, Inc. Methods and apparatus for range matching during packet classification based on a linked-node structure
US8645177B2 (en) 2008-10-01 2014-02-04 Accenture Global Services Limited Single step flight schedule optimization
US8732309B1 (en) 2008-11-17 2014-05-20 Amazon Technologies, Inc. Request routing utilizing cost information
US8122098B1 (en) 2008-11-17 2012-02-21 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US8065417B1 (en) 2008-11-17 2011-11-22 Amazon Technologies, Inc. Service provider registration by a content broker
US8521880B1 (en) 2008-11-17 2013-08-27 Amazon Technologies, Inc. Managing content delivery network service providers
US8073940B1 (en) 2008-11-17 2011-12-06 Amazon Technologies, Inc. Managing content delivery network service providers
US8060616B1 (en) 2008-11-17 2011-11-15 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US8255496B2 (en) 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8488588B1 (en) 2008-12-31 2013-07-16 Juniper Networks, Inc. Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric
US7917618B1 (en) * 2009-03-24 2011-03-29 Amazon Technologies, Inc. Monitoring web site content
US8688837B1 (en) 2009-03-27 2014-04-01 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US8756341B1 (en) 2009-03-27 2014-06-17 Amazon Technologies, Inc. Request routing utilizing popularity information
US8412823B1 (en) 2009-03-27 2013-04-02 Amazon Technologies, Inc. Managing tracking information entries in resource cache components
US8521851B1 (en) 2009-03-27 2013-08-27 Amazon Technologies, Inc. DNS query processing using resource identifiers specifying an application broker
CN101515298B (zh) * 2009-03-30 2013-09-25 华为技术有限公司 基于树形数据结构节点的插入的方法和存储装置
US8179898B2 (en) * 2009-06-11 2012-05-15 Alcatel Lucent Packet processing using braided tries
US8782236B1 (en) 2009-06-16 2014-07-15 Amazon Technologies, Inc. Managing resources using resource expiration data
EP2264626B1 (de) * 2009-06-19 2021-02-24 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum speichereffizienten Suchen mindestens eines Anfragedatenelementes
US8397073B1 (en) 2009-09-04 2013-03-12 Amazon Technologies, Inc. Managing secure content in a content delivery network
US8433771B1 (en) 2009-10-02 2013-04-30 Amazon Technologies, Inc. Distribution network with forward resource propagation
US8325730B2 (en) * 2009-12-17 2012-12-04 Amazon Technologies, Inc. Distributed routing architecture
US8331370B2 (en) * 2009-12-17 2012-12-11 Amazon Technologies, Inc. Distributed routing architecture
US8331371B2 (en) * 2009-12-17 2012-12-11 Amazon Technologies, Inc. Distributed routing architecture
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US8417253B2 (en) * 2010-02-23 2013-04-09 Intel Corporation Bandwidth and channel notification for wide-channel wireless communication
US8565089B2 (en) * 2010-03-29 2013-10-22 International Business Machines Corporation Performing a scatterv operation on a hierarchical tree network optimized for collective operations
US8332460B2 (en) 2010-04-14 2012-12-11 International Business Machines Corporation Performing a local reduction operation on a parallel computer
US8949577B2 (en) 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
US8489859B2 (en) 2010-05-28 2013-07-16 International Business Machines Corporation Performing a deterministic reduction operation in a compute node organized into a branched tree topology
US8880507B2 (en) * 2010-07-22 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match using binary search tree
US8776081B2 (en) 2010-09-14 2014-07-08 International Business Machines Corporation Send-side matching of data communications messages
US8577992B1 (en) 2010-09-28 2013-11-05 Amazon Technologies, Inc. Request routing management based on network components
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US8468247B1 (en) 2010-09-28 2013-06-18 Amazon Technologies, Inc. Point of presence management in request routing
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US8924528B1 (en) 2010-09-28 2014-12-30 Amazon Technologies, Inc. Latency measurement in resource requests
US8819283B2 (en) 2010-09-28 2014-08-26 Amazon Technologies, Inc. Request routing in a networked environment
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US8930513B1 (en) 2010-09-28 2015-01-06 Amazon Technologies, Inc. Latency measurement in resource requests
US8938526B1 (en) 2010-09-28 2015-01-20 Amazon Technologies, Inc. Request routing management based on network components
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US8447849B2 (en) 2010-11-09 2013-05-21 Cisco Technology, Inc. Negotiated parent joining in directed acyclic graphs (DAGS)
US8406153B2 (en) 2010-11-09 2013-03-26 Cisco Technology, Inc. Affecting node association through load partitioning
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
US8452874B2 (en) 2010-11-22 2013-05-28 Amazon Technologies, Inc. Request routing processing
US9391949B1 (en) 2010-12-03 2016-07-12 Amazon Technologies, Inc. Request routing processing
US8626950B1 (en) 2010-12-03 2014-01-07 Amazon Technologies, Inc. Request routing processing
US9282060B2 (en) 2010-12-15 2016-03-08 Juniper Networks, Inc. Methods and apparatus for dynamic resource management within a distributed control plane of a switch
US8891406B1 (en) 2010-12-22 2014-11-18 Juniper Networks, Inc. Methods and apparatus for tunnel management within a data center
CN102045412B (zh) * 2010-12-28 2013-01-16 赛尔网络有限公司 IPv6地址前缀压缩存储方法及设备
US8615015B1 (en) * 2010-12-30 2013-12-24 Juniper Networks, Inc. Apparatus, systems and methods for aggregate routes within a communications network
US8472350B2 (en) * 2010-12-31 2013-06-25 Telefonaktiebolaget L M Ericsson (Publ) Bank aware multi-bit trie
US10467042B1 (en) 2011-04-27 2019-11-05 Amazon Technologies, Inc. Optimized deployment based upon customer locality
EP2541439A1 (de) * 2011-06-27 2013-01-02 Amadeus s.a.s. Verfahren und System zur Verarbeitung einer Suchanfrage
CN102254012B (zh) * 2011-07-19 2012-11-14 北京大学 一种基于外存的图数据存储方法及子图查询方法
US8880494B2 (en) 2011-07-28 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match scheme
US8893083B2 (en) 2011-08-09 2014-11-18 International Business Machines Coporation Collective operation protocol selection in a parallel computer
US8667501B2 (en) 2011-08-10 2014-03-04 International Business Machines Corporation Performing a local barrier operation
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US8898204B1 (en) * 2011-10-21 2014-11-25 Applied Micro Circuits Corporation System and method for controlling updates of a data structure
US9152661B1 (en) * 2011-10-21 2015-10-06 Applied Micro Circuits Corporation System and method for searching a data structure
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US8904009B1 (en) 2012-02-10 2014-12-02 Amazon Technologies, Inc. Dynamic content delivery
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US9172674B1 (en) 2012-03-21 2015-10-27 Amazon Technologies, Inc. Managing request routing information utilizing performance information
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US9154551B1 (en) 2012-06-11 2015-10-06 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9680747B2 (en) * 2012-06-27 2017-06-13 Futurewei Technologies, Inc. Internet protocol and Ethernet lookup via a unified hashed trie
US8583659B1 (en) * 2012-07-09 2013-11-12 Facebook, Inc. Labeling samples in a similarity graph
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US9135048B2 (en) 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US9378304B2 (en) * 2013-01-16 2016-06-28 Google Inc. Searchable, mutable data structure
US9444731B2 (en) * 2013-05-24 2016-09-13 Cisco Technology, Inc. Methods and systems for data packet routing
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9715525B2 (en) 2013-06-28 2017-07-25 Khalifa University Of Science, Technology And Research Method and system for searching and storing data
WO2014207416A1 (en) * 2013-06-28 2014-12-31 Khalifa University of Science, Technology, and Research Method and system for searching and storing data
GB2517477A (en) * 2013-08-22 2015-02-25 Deep Secure Ltd A method of transmitting data structures from one computer to another computer
US9602407B2 (en) 2013-12-17 2017-03-21 Huawei Technologies Co., Ltd. Trie stage balancing for network address lookup
CN103714134B (zh) * 2013-12-18 2017-01-18 中国科学院计算技术研究所 一种网络流量数据索引方法及系统
CN104932982B (zh) * 2014-03-21 2019-02-12 华为技术有限公司 一种消息访存的编译方法及相关装置
WO2015188319A1 (zh) 2014-06-10 2015-12-17 华为技术有限公司 一种查找装置、查找配置方法和查找方法
CN104090942A (zh) * 2014-06-30 2014-10-08 中国电子科技集团公司第三十二研究所 应用于网络处理器中的Trie搜索方法及装置
CN104063507B (zh) * 2014-07-09 2017-10-17 时趣互动(北京)科技有限公司 一种图计算方法及系统
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
KR101666307B1 (ko) * 2015-05-14 2016-10-13 영남대학교 산학협력단 메모리 장치 기반의 힙 정렬 방법 및 장치
US10402452B1 (en) 2015-06-12 2019-09-03 Amazon Technologies, Inc. Distributed hash table based logging service
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US9841912B1 (en) * 2015-12-18 2017-12-12 EMC IP Holding Company LLC Memory efficient block allocation map to support online growth of different storage attributes
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
WO2017217163A1 (ja) * 2016-06-17 2017-12-21 日本電信電話株式会社 アクセス分類装置、アクセス分類方法及びアクセス分類プログラム
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10616250B2 (en) 2016-10-05 2020-04-07 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10282436B2 (en) * 2017-01-04 2019-05-07 Samsung Electronics Co., Ltd. Memory apparatus for in-place regular expression search
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
CN107122398B (zh) * 2017-03-17 2021-01-01 武汉斗鱼网络科技有限公司 一种数据展示图表生成方法及系统
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10742593B1 (en) 2017-09-25 2020-08-11 Amazon Technologies, Inc. Hybrid content request routing system
CN111316255B (zh) * 2017-11-20 2023-11-03 华为技术有限公司 数据存储系统以及用于提供数据存储系统的方法
WO2019098870A1 (en) * 2017-11-20 2019-05-23 Huawei Technologies Co., Ltd. Data storage system and method of providing a data storage system
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
CN110309368B (zh) * 2018-03-26 2023-09-22 腾讯科技(深圳)有限公司 数据地址的确定方法、装置、存储介质和电子装置
US10397115B1 (en) 2018-04-09 2019-08-27 Cisco Technology, Inc. Longest prefix matching providing packet processing and/or memory efficiencies in processing of packets
US11178054B1 (en) * 2018-08-22 2021-11-16 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for longest prefix match search
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
KR102195836B1 (ko) * 2019-02-07 2020-12-28 주식회사 티맥스티베로 인덱스 관리 방법
US11288244B2 (en) * 2019-06-10 2022-03-29 Akamai Technologies, Inc. Tree deduplication
US11416473B2 (en) * 2019-12-20 2022-08-16 Oracle International Corporation Using path encoding method and relational set operations for search and comparison of hierarchial structures
CN112182310B (zh) * 2020-11-04 2023-11-17 上海德拓信息技术股份有限公司 一种内置实时搜索的通用树形组件实现方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU620994B2 (en) * 1989-07-12 1992-02-27 Digital Equipment Corporation Compressed prefix matching database searching
US5528701A (en) * 1994-09-02 1996-06-18 Panasonic Technologies, Inc. Trie based method for indexing handwritten databases
US5848416A (en) * 1994-06-06 1998-12-08 Nokia Telecommunications Oy Method and apparatus for storing and retrieving data and a memory arrangement
US5787430A (en) * 1994-06-30 1998-07-28 International Business Machines Corporation Variable length data sequence backtracking a trie structure
JP3152868B2 (ja) 1994-11-16 2001-04-03 富士通株式会社 検索装置および辞書/テキスト検索方法
US5651099A (en) * 1995-01-26 1997-07-22 Hewlett-Packard Company Use of a genetic algorithm to optimize memory space
US5721889A (en) * 1995-11-13 1998-02-24 Motorola, Inc. Data transfer between integrated circuit timer channels
US5884297A (en) * 1996-01-30 1999-03-16 Telefonaktiebolaget L M Ericsson (Publ.) System and method for maintaining a table in content addressable memory using hole algorithms
US5809501A (en) * 1996-01-30 1998-09-15 Telefonaktiebolaget L M Ericsson (Publ) Method and system of database management in an asynchronous transfer mode (ATM) environment
US5829004A (en) * 1996-05-20 1998-10-27 Au; Lawrence Device for storage and retrieval of compact contiguous tree index records
US6115716A (en) * 1997-03-14 2000-09-05 Nokia Telecommunications Oy Method for implementing an associative memory based on a digital trie structure
US6018524A (en) * 1997-09-09 2000-01-25 Washington University Scalable high speed IP routing lookups
SE513248C2 (sv) * 1997-12-19 2000-08-07 Ericsson Telefon Ab L M Metod för hantering av datastrukturer
US6188694B1 (en) * 1997-12-23 2001-02-13 Cisco Technology, Inc. Shared spanning tree protocol
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6067574A (en) * 1998-05-18 2000-05-23 Lucent Technologies Inc High speed routing using compressed tree process
US6876655B1 (en) * 1999-04-22 2005-04-05 Ramot At Tel Aviv University Ltd. Method for routing with a clue
US6724734B1 (en) * 1999-06-15 2004-04-20 Avaya Communication Israel, Ltd. Creating a spanning tree of a network including clusters
US6560610B1 (en) * 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database
US6891834B1 (en) * 1999-09-09 2005-05-10 Avici Systems Apparatus and method for packet scheduling
US7089240B2 (en) * 2000-04-06 2006-08-08 International Business Machines Corporation Longest prefix match lookup using hash function
US6697363B1 (en) * 2000-06-28 2004-02-24 Alcatel Canada Inc. Method and apparatus for longest matching prefix determination in a communication network
CA2355473A1 (en) * 2000-09-29 2002-03-29 Linghsiao Wang Buffer management for support of quality-of-service guarantees and data flow control in data switching
US7106732B2 (en) * 2000-12-27 2006-09-12 Mosaid Technologies Incorporated Default route coding
KR100488414B1 (ko) * 2000-12-30 2005-05-11 한국전자통신연구원 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법
US20030031167A1 (en) * 2001-02-28 2003-02-13 Singh Abhishek Ranjan Methods and system for efficient route lookup
JP2002330152A (ja) * 2001-04-27 2002-11-15 Fujitsu Ltd 障害時/増設時におけるスパニングツリー制御装置及び方法
US6917954B2 (en) * 2001-05-30 2005-07-12 Mosaid Technologies, Inc. Load balancing in IP address lookup
US7116663B2 (en) * 2001-07-20 2006-10-03 Pmc-Sierra Ltd. Multi-field classification using enhanced masked matching
US7386846B2 (en) * 2001-07-26 2008-06-10 Kyocera Wireless Corp. System and method for the management of wireless communications device system software downloads in the field
US7054315B2 (en) * 2001-09-17 2006-05-30 Pmc-Sierra Ltd. Efficiency masked matching
FR2835991B1 (fr) * 2002-02-12 2004-04-23 France Telecom Procede de configuration d'une memoire trie pour le traitement de paquets de donnees, et dispositif de traitement de paquets mettant en oeuvre un tel procede
US20030152092A1 (en) * 2002-02-14 2003-08-14 Kai Lu Multilevel hierarchical addressing and routing mechanism for high-speed internet
AU2003219765A1 (en) * 2002-02-14 2003-09-04 Transwitch Corporation Efficient ipv4/ipv6 best matching prefix method and apparatus
US20030174717A1 (en) * 2002-03-15 2003-09-18 Boris Zabarski System and method for longest prefix match for internet protocol lookup
US7899067B2 (en) * 2002-05-31 2011-03-01 Cisco Technology, Inc. Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
US6915291B2 (en) * 2002-06-07 2005-07-05 International Business Machines Corporation Object-oriented query execution data structure

Also Published As

Publication number Publication date
WO2003103240A1 (en) 2003-12-11
US7349415B2 (en) 2008-03-25
AU2003214223A1 (en) 2003-12-19
ATE404007T1 (de) 2008-08-15
US20050157712A1 (en) 2005-07-21
EP1605646A1 (de) 2005-12-14
AU2003214223B2 (en) 2008-03-20
US7352739B1 (en) 2008-04-01
EP1808987A1 (de) 2007-07-18
DE60305035D1 (de) 2006-06-08
US20080181139A1 (en) 2008-07-31
DE60313371D1 (de) 2007-05-31
DE60313371T2 (de) 2008-01-03
EP1510046A1 (de) 2005-03-02
CA2484446A1 (en) 2003-12-11
CN1462004A (zh) 2003-12-17
DE60322756D1 (de) 2008-09-18
US7613134B2 (en) 2009-11-03
EP1510046B1 (de) 2006-05-03
EP1605646B1 (de) 2007-04-18
ATE360312T1 (de) 2007-05-15
ATE325488T1 (de) 2006-06-15
EP1808987B1 (de) 2008-08-06
US7899067B2 (en) 2011-03-01
CN100465947C (zh) 2009-03-04
US20040008634A1 (en) 2004-01-15

Similar Documents

Publication Publication Date Title
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE60216938T2 (de) Gleichzeitiges durchsuchen verschiedener tabellen in einem inhaltsadressierbaren speicher
DE60131596T2 (de) Stapelbare Sucheinrichtung
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE60026676T2 (de) Paketklassifizierungsautomat
DE60316696T2 (de) Verfahren zum Routen von Datenpaketen und Routing-Vorrichtung
DE60311462T2 (de) Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation
DE10058443A1 (de) Verfahren zum Klassifizieren von Datenpaketen
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE602004009574T2 (de) System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden
DE19860120A1 (de) Routensuchschaltung und diese verwendende Kommunikationsvorrichtung
DE602004012210T2 (de) Verfahren and System für eine beschleunigte Paketverarbeitung
DE112019005382T5 (de) Auslegung und durchführung einer zeichenmustererkennung in einer schaltung auf datenebene
DE112016001193T5 (de) Protokollunabhängiger, programmierbarer Schalter für durch Software definierte Datenzentrumsnetzwerke
DE102021209768A1 (de) Kuckucks- hashing umfassend das zugreifen auf hashtabellen unter verwendung einer affinitätstabelle
EP1162789A1 (de) Verfahren zur Verwaltung von Pfadinformationen und deren Änderungen in einem MPLS-Netzwerk
DE60024611T2 (de) Längentestvergleich in präfixnachschlagtabellen
DE102021203777A1 (de) Flexibles lenken

Legal Events

Date Code Title Description
8364 No opposition during term of opposition