DE60313371T2 - Verwendung von baumartigen "Bitmap" Datenstrukturen - Google Patents

Verwendung von baumartigen "Bitmap" Datenstrukturen Download PDF

Info

Publication number
DE60313371T2
DE60313371T2 DE60313371T DE60313371T DE60313371T2 DE 60313371 T2 DE60313371 T2 DE 60313371T2 DE 60313371 T DE60313371 T DE 60313371T DE 60313371 T DE60313371 T DE 60313371T DE 60313371 T2 DE60313371 T2 DE 60313371T2
Authority
DE
Germany
Prior art keywords
node
search
tree
leaf
pointer
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
DE60313371T
Other languages
English (en)
Other versions
DE60313371D1 (de
Inventor
Vijay San Jose Rangarajan
Dalit Ramat Hagolan Sagi
William N. 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
Publication of DE60313371D1 publication Critical patent/DE60313371D1/de
Application granted granted Critical
Publication of DE60313371T2 publication Critical patent/DE60313371T2/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Silicon Polymers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Small-Scale Networks (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft vor allem Kommunikations- und Computersysteme; und insbesondere betrifft die Erfindung die Erzeugung und die Verwendung von verbesserten Baum-Bitmap-Datenstrukturen beim Bestimmen einer Übereinstimmung eines längsten Präfix, wie z.B. in einem Router, in einem Paketvermittlungssystem oder in einem anderen Kommunikations- oder Computersystem, ohne darauf begrenzt zu sein.
  • HINTERGRUND DER ERFINDUNG
  • Die Kommunikationsindustrie ändert sich schnell, um sich auf die aufkommenden Technologien und den immer weiter zunehmenden Kundenbedarf einzustellen. Dieser Kundenbedarf bezüglich neuer Anwendungen und erhöhter 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 ergriffen 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 von dem 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 bei 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 übereinstimmenden Präfix bei Leitungsgeschwindigkeiten. Die aktuelle IP-Version IPv4 verwendet 32-Bit-zieladressen, und ein Kern-Internet-Router kann über 200.000 Präfixe besitzen. Ein Präfix wird typischerweise mit einem Bitstring (z.B. 01*), gefolgt von einem '*', bezeichnet, um anzugeben, dass der Wert dieser rechts davon stehenden Bits egal ist. Für das Ziel-Routing besteht jeder Präfix-Eintrag in einer Routing-Tabelle typischerweise aus einem Präfix und einem Wert des nächsten Sprungs (hext Hop). Es sei zum Beispiel angenommen, 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, stimmt die Adresse sowohl mit dem ersten Präfix (01*) als auch mit dem zweiten Präfix (0100*) überein. Da das zweite Präfix die längste Übereinstimmung ist, sollte das Präfix zum nächsten Sprung L2 gesandt werden. Andererseits soll ein Paket mit einer Zieladresse, die mit 01010 beginnt, zum nächsten Sprung L1 gesandt werden. Die Next-Hop-Informationen legen typischerweise einen Ausgangsort am Router und möglicherweise eine Datenübermittlungsabschnittsadresse fest.
  • 1A veranschaulicht ein Beispiel eines Satzes von Präfixen P1–9, die als Knoten 1A9A in Tabelle 10A und als Knoten 1B9B im Unibit-Trie 10B gezeigt sind. Im Unibit-Trie 10B sind auch Platzhalter-/unbesetzte Knoten 11B18B gezeigt, die nicht übereinstimmende Knoten darstellen (d.h., Knoten, die nicht mögliche Ergebnisse als ein längstes übereinstimmendes Präfix sind). Ein String bzw. Strang von 1110000 stimmt beispielsweise mit den Präfixen P1 (1B), P2 (2B) und P5 (5B) überein, wobei das längste übereinstimmende Präfix P5 (5B) 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 und ausgegeben als US-Patent Nr. 6,560,610 , beschrieben ist. Die Baum-Bitmap ist ein Multibit-Trie-Algorithmus, der eine Darstellung des Trie durch Gruppieren von Knoten in Sätze von Schrittweiten (Strides) implementiert. Eine Schrittweite ist typischerweise als die Anzahl von Baum-Levels des binären Trie, die zusammen gruppiert werden, oder als die Anzahl von Levels in einem Baum definiert, auf die in einer einzelnen Leseoperation zugegriffen wird, welche mehrere Levels in einem Baum oder Trie darstellt. 1B stellt eine solche Unterteilung von Knoten P1–P9 (1B9B) und unbesetzten Knoten 11B18B (1A) in Schrittweiten 2025 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 benachbart zueinander 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 ein Versatz (Offset) von dem 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, eine für alle intern gespeicherten Präfixe und eine für die externen Zeiger. Die interne Bitmap weist ein 1-Bit auf, das für alle Präfixe gesetzt ist, die innerhalb dieses Knotens gespeichert sind. Auf diese Weise sind für einen r-Bit-Trie-Knoten (2')-1 mögliche Präfixe mit Längen von weniger als r vorhanden, und folglich wird eine (2')-1-Bitmap verwendet. Die 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 eine Bitmap für externe Zeiger, eine interne Bitmap für Next-Hop-Informationen und einen einzelnen Zeiger auf den Block von Sohnknoten. Die mit den internen Präfixen assoziierten nächsten Sprünge (hext Hops) werden innerhalb jedes Trie-Knotens in einem mit diesem Trie-Knoten assoziierten separaten Array gespeichert. Für Speicherplatzzuweisungszwecke sind Ergebnis-Arrays normalerweise ein geradzahliges Vielfaches der gemeinsamen Knotengröße (z.B. ist bei 16-Bit-Next-Hop-Zeigern und 8-Byte-Knoten ein Ergebnisknoten für bis zu vier Next-Hop-Zeiger erforderlich, zwei Ergebnisknoten sind für bis zu 8 erforderlich, usw.). Das Setzen von Next-Hop-Zeigern in ein separates Ergebnis-Array erfordert potentiell zwei Speicherzugriffe pro Trie-Knoten (einen für den Trie-Knoten und einen zum Abrufen des Ergebnisknotens für gespeicherte Präfixe). Typischerweise wird eine einfache verzögerte Strategie, nicht auf die Ergebnisknoten zuzugreifen, bis die Suche endet, verwendet. Dann wird auf den Ergebnisknoten zugegriffen, der dem letzten Trie-Knoten entspricht, der in dem Pfad angetroffen wird, der ein gültiges Präfix enthielt. Dies fügt nur eine einzelne Speicherreferenz am Ende neben der pro Trie-Knoten erforderlichen einen Speicherreferenz hinzu.
  • Das Dokument US 5 787 430 offenbart die Suche nach einem längsten übereinstimmenden Präfix in einer Datenbank, die eine Trie-Struktur aufweist. Bedingt durch die Zurückverfolgung des eingerichteten Pfades verwendet die Datenbank den Speicher auf effiziente Weise.
  • 1C veranschaulicht eine Darstellung einer Baum-Bitmap-Implementierung des in den 1A1B gezeigten Präfixbeispieles. Wie gezeigt ist, stellt der Wurzelknoten 30 den Trie des ersten Level dar. Der Sohn-Zeiger 31 verbindet den Wurzelknoten 30 mit dem Sohn-Array 40, das die Schrittweiten des zweiten Level enthält. In dem Level 3 sind zwei Sohn-Arrays 50 und 60 vorhanden, die von dem Sohn-Array 40 aus jeweils durch Sohn-Zeiger 41 und 42 verbunden sind.
  • Eine Übereinstimmung eines längsten Präfix wird gefunden, indem mit dem Wurzelknoten begonnen wird. Die ersten Bits der Zieladresse (entsprechend der Schrittweite des Wurzelknotens, drei in diesem Beispiel) werden verwendet, um in die externe Bitmap am Wurzelknoten in beispielsweise der Position P zu indizieren. 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 (zum Beispiel I), wird bestimmt. Da der Zeiger auf die Startposition des Sohn-Blocks (zum Beispiel C) und die Größe jedes Trie-Knotens (zum Beispiel S) bekannt ist, kann der Zeiger auf den Sohnknoten als C + (I·S) berechnet werden.
  • Vor dem Weiterbewegen zum Sohn wird die interne Bitmap geprüft, um festzustellen, ob ein gespeichertes Präfix vorhanden ist, das der Position P entspricht. Dazu sei angenommen, dass beginnend von rechts nacheinander Bits von P entfernt werden und in die entsprechende Position der internen Bitmap indiziert wird, wobei nach der ersten angetroffenen 1 gesucht wird. Es sei beispielsweise angenommen, dass P 101 ist und eine Schrittweite von drei Bits an der 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 in der internen Bitmap entspricht, wird eine Prüfung durchgeführt, um festzustellen, ob sich eine 1 in dieser Position befindet. Wenn nicht, dann werden die am weitesten rechts liegenden zwei Bits entfernt (was zum Präfix 1* führt). Da 1* der dritten Position in der internen Bitmap entspricht, wird eine Prüfung durchgeführt, um festzustellen, ob sich dort eine 1 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 Eintrag, der * entspricht, im ersten Eintrag der internen Bitmap wird durchgeführt.
  • Sobald festgestellt wurde, dass ein übereinstimmendes gespeichertes Präfix innerhalb eines Trie-Knotens existiert, werden die Informationen, die dem nächsten Sprung entsprechen, 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 in dem Ergebnis-Array anzugeben. Das Zugreifen auf das Ergebnis-Array würde eine zusätzliche Speicherreferenz pro Trie-Knoten benötigen. Statt dessen wird der Sohnknoten untersucht, während sich an die gespeicherte Präfixposition und den entsprechenden Vater-Trie-Knoten erinnert wird. Die Absicht besteht darin, sich den letzten Trie-Knoten T im Suchpfad, der ein gespeichertes Präfix enthielt, und die entsprechende Präfixposition zu merken. Wenn die Suche endet (d.h., ein Trie-Knoten mit einer in der entsprechenden Position der externen Bitmap gesetzten 0 angetroffen wird), wird auf das Ergebnis-Array, das T entspricht, in der bereits berechneten Position zugegriffen, um die Informationen des nächsten Sprungs abzulesen.
  • 1D veranschaulicht einen Pseudocode einer Implementierung der vollen Baum-Bitmap-Suche. Er nimmt eine Funktion treeFunction (Baum-Funktion) an, die die Position des längsten übereinstimmenden Präfix, falls vorhanden, innerhalb eines gegebenen Knotens finden kann, indem er die interne Bitmap zu Rate zieht. "LongestMatch" (längste Übereinstimmung) verfolgt einen Zeiger auf die bisher gesehene längste Übereinstimmung. Die Schleife endet, wenn kein Sohn-Zeiger vorhanden ist (d.h., kein Bit in der 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 Sprung (hext Hop) 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 bzw. direkten Zugriff darin, die internen und externen Bitmaps aufzuteilen, was manchmal als Spalt-Baum-Bitmaps bezeichnet wird. Dies wird durchgeführt, indem nur die externe Bitmap in jedem Trie-Knoten angeordnet wird. Wenn keine Speichersegmentierung besteht, können die Sohn-Trie-Knoten und die internen Knoten von dem gleichen Vater im Speicher benachbart zueinander 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-Array, den internen Knoten und auf das Ergebnis-Array aufweist.
  • Bei einer Alternative, wie sie in 1E veranschaulicht ist, liegt der Trie-Knotenpunkt am internen Knoten und der interne Knotenpunkt am Ergebnis-Array. Um zu bewirken, dass diese Optimierung funktioniert, muss jeder Sohn ein Bit aufweisen, das angibt, ob der Vaterknoten ein Präfix enthält, das eine bisher längste Übereinstimmung ist. Wenn sich ein Präfix im Pfad befinden würde, zeichnet die Lookup-Maschine den Ort des internen Knotens (aus der Datenstruktur des letzten Knotens berechnet) als das bisher längste übereinstimmende 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 zugegriffen. Es ist zu beachten, dass der Kernalgorithmus auf die Next-Hop-Informationen verzögert zugreift; der Spalt-Baum-Algorithmus greift selbst auf die interne Bitmap verzögert zu. Was bewirkt, dass dies funktioniert, ist, dass zu jedem Zeitpunkt, an dem ein Präfix P in einem Knoten X gespeichert ist, alle Söhne von X, die mit P übereinstimmen, ein Bit speichern können, das besagt, dass der Vater ein gespeichertes Präfix aufweist. 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 angenehmer Vorteil von Spalt-Baum-Bitmaps besteht darin, dass dann, wenn ein Knoten, der nur Pfade und keine internen Präfixe enthalten würde, ein Zeiger von internen Knoten von Null verwendet werden kann und kein Platz in der internen Bitmap verschwendet wird.
  • Mit dieser Optimierung werden die externen und internen Bitmaps jeweils zwischen dem Suchknoten und dem internen Knoten aufgeteilt. Das Auf teilen der Bitmaps auf diese Art und Weise führt zu einer verringerten Knotengröße, was von Vorteil bei Hardwareimplementierungen ist. 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 verwaltet einen Zeiger auf das Blatt-Array LAj von Blättern, die Präfixen entsprechen, die zu diesem Knoten gehören. 1E veranschaulicht zum Beispiel Suchknoten S1 (111), S2 (112) und S3 (113), interne Knoten I1 (121), I2 (115) und I3 (114), und Blatt-Arrays LA1 (122), LA2 (116) und LA3 (123) und ihre Verbindung miteinander durch Zeiger. Außerdem umfassen die Blatt-Arrays LA1 (122), LA2 (116) bzw. LA3 (123) jeweils Blattknoten L1 (122A), L2 (116A) und L3 (123A). Es sei angemerkt, dass die in durchgezogenen Linien dargestellten Knoten die Knoten sind, auf die während eines nachstehend beschriebenen Baum-Bitmap-Lookup-Beispiels zugegriffen wird.
  • Nun soll der Fall betrachtet werden, in dem ein Lookup vor sich geht, indem auf die Suchknoten S1 (111), S2 (112) und S3 (113) zugegriffen wird. Wenn das Flag parent_has_match (Vater besitzt Übereinstimmung) in S3 (113) gesetzt ist, impliziert dies, dass irgendein Präfix in einem der Blattknoten L2 (116A) in dem Blatt-Array LA2 (116) vorliegt, welches die aktuell längste Übereinstimmung ist. In diesem Fall wird die Adresse des internen Knotens I2 (115) im Lookup-Kontext gespeichert. Nun soll angenommen werden, dass S3 (113) für dieses Lookup Pfade nicht erweitert. Es könnte sich irgendein Präfix im Blatt-Array LA3 (123) befinden, das das längste übereinstimmende Präfix ist. Daher wird zuerst auf I3 (114) zugegriffen und seine interne Bitmap auf ein längstes übereinstimmendes Präfix überprüft. Wenn kein längstes übereinstimmendes Präfix gefunden wird, wird der interne Knoten I2 (115), dessen Adresse gespeichert wurde, wiedergewonnen, seine Bitmap wird analysiert und der Blattknoten L2 (116A), der der längsten Übereinstimmung 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 Übereinstimmung 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-Lookup-Maschine 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 Lookup aufeinander folgende Knoten, auf die zugegriffen wird, in verschiedene Speicherkanäle fallen. Wenn ein einzelner Speicherkanal "x" Zugriffe pro Sekunde unterstützen kann, dann können, wenn mehrere Lookup-Vorgänge gleichzeitig in Gang sind, "x" Lookup-Vorgänge pro Sekunde im Durchschnitt erreicht werden, vorausgesetzt, dass auf jeden Speicherkanal höchstens einmal pro Lookup zugegriffen wird. Wenn auf irgendeinen der Kanäle zweimal pro Lookup 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 Baumes in unterschiedlichen Speicherkanälen gespeichert werden. Das Zugreifen auf zwei interne Knoten stellt ein Problem dar, wenn eine begrenzte Anzahl von Speicherkanälen vorhanden sind, da beide internen Knoten in verschiedenen Speicherkanälen angeordnet werden müssen, und auf welche zwei internen Knoten zugegriffen werden soll, von der speziellen Baum-Bitmap und vom speziellen Lookup-Wert 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.
  • Neue Verfahren und Vorrichtungen zum Erzeugen und Verwenden von verbesserten Baum-Bitmap-Datenstrukturen beim Bestimmen einer längsten Präfix Übereinstimmung sind erforderlich, insbesondere, jedoch nicht auf diejenigen Verfahren und Vorrichtungen begrenzt, die die Anzahl von Speicherzugriffen verringern und/oder einen Vorteil gegenüber früheren Baum-Bitmap-Implementierungen bereitstellen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Verfahren und Vorrichtungen zum Erzeugen und Verwenden von verbesserten baumartigen Bitmap-Datenstrukturen bzw. Baum-Bitmap-Datenstrukturen beim Bestimmen einer längsten Präfix-Übereinstimmung, wie z.B. in einem Router, einem Paketvermittlungssystem oder einer anderen Kommunikations- oder Computerkomponente, -vorrichtung oder einem anderen Kommunikations- oder Computersystem, werden offenbart. Ein Ausführungsbeispiel umfasst eine Datenstruktur. Die Datenstruktur umfasst einen ersten Suchknoten, ein erstes Sohn-Array mit einem ersten internen Knoten und einem zweiten Suchknoten; und ein erstes Blatt-Array mit mehreren ersten Blatt-Array-Einträgen. Der erste Suchknoten umfasst einen Zeiger auf das erste Sohn-Array. Der erste interne Knoten umfasst einen Zeiger auf das erste Blatt-Array. Der zweite Suchknoten umfasst einen Zeiger auf einen oder mehrere erste Blatt-Array-Einträge.
  • KURZE BESCHREIBUNG 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:
  • 1A1E Blockdiagramme oder andere Veranschaulichungen eines bekannten Baum-Bitmap-Systems sind;
  • 2A ein Blockdiagramm einer verbesserten Baum-Bitmap-Datenstruktur ist, die in einem Ausführungsbeispiel verwendet wird;
  • 2B ein Blockdiagramm einer verbesserten Baum-Bitmap-Datenstruktur ist, die in einem Ausführungsbeispiel verwendet wird;
  • 3A ein Blockdiagramm eines Prozesses ist, der in einem Ausführungsbeispiel verwendet wird, um eine Operation einer längsten Präfix-Übereinstimmung unter Verwendung einer Baum-Bitmap durchzuführen;
  • 3B3C einen Pseudocode von Prozessen veranschaulichen, die in einem Ausführungsbeispiel verwendet werden, um Knoten zu einer Baum-Bitmap hinzuzufügen und aus dieser zu löschen;
  • 4 ein Blockdiagramm eines Ausführungsbeispiels ist, das eine Baum-Bitmap-Datenstruktur erzeugt und/oder verwendet, um eine Übereinstimmung eines längsten Präfix zu bestimmen;
  • 5 ein Blockdiagramm eines Ausführungsbeispiels ist, das eine Baum-Bitmap-Datenstruktur erzeugt und/oder verwendet, um eine Übereinstimmung eines längsten Präfix zu bestimmen;
  • 6A Suchanfrage- und Ergebnismeldungsformate veranschaulicht, die in einem Ausführungsbeispiel verwendet werden;
  • 6B ein Format von Knotendatenelementen veranschaulicht, die in einem Ausführungsbeispiel verwendet werden;
  • 6C einen Prozess darstellt, der in einem Ausführungsbeispiel verwendet wird, um eine Adresse eines nächsten relevanten Knotens oder Elements in einem Ausführungsbeispiel einer Baum-Bitmap-Datenstruktur zu bestimmen;
  • 7 einen Prozess veranschaulicht, der in einem Ausführungsbeispiel verwendet wird, um Daten aus einem empfangenen Paket oder anderen Informationen zu extrahieren, 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
  • 8A8D Prozesse darstellen, die in einem Ausführungsbeispiel verwendet werden, um eine Baum-Bitmap-Operation eines längsten Präfix oder eine andere Lookup-Operation durchzuführen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Verfahren und Vorrichtungen zum Erzeugen und Verwenden von verbesserten Baum-Bitmap-Datenstrukturen beim Bestimmen einer längsten Präfix-Übereinstimmung wie z.B. in einem Router, einem Paketvermittlungssystem oder einer anderen Kommunikations- oder Computerkomponente, -vorrichtung oder einem anderen Kommunikations- oder Computersystem werden offenbart. Die hier beschriebenen Ausführungsbeispiele 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. Darüber hinaus können einige beschriebene Ausführungsbeispiele unter anderem Systeme, Netze, integrierte Schaltungschips, eingebettete Prozessoren, ASICs, Verfahren und computerlesbare Medien, die Befehle enthalten, umfassen, sind jedoch nicht auf diese begrenzt. Die nachstehend beschriebenen Ausführungsbeispiele verkörpern verschiedene Aspekte und Konfigurationen innerhalb des Schutzbe reichs und Gedankens der Erfindung, wobei die Figuren beispielhafte und nicht-begrenzende Konfigurationen veranschaulichen.
  • So, wie er hier verwendet wird, 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", so, wie er hier verwendet wird, bezieht sich auch auf sowohl das Paket selbst als auch auf eine Paketangabe, wie z.B. jedoch nicht begrenzt auf alles oder einen Teil eines Pakets oder Paket-Header, 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 Sprach-, Daten-, Video- und Audioinformationen. Der Begriff "Datenelement" wird hier verwendet, um sich auf ein Paket oder irgendeine andere Einheit oder ein Stück von Informationen oder Daten zu beziehen.
  • Der Begriff "System" wird hier 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 hier allgemein verwendet, um eine beliebige Anzahl von Computern zu beschreiben, einschließlich, jedoch nicht begrenzt auf Personal Computer, eingebettete Prozessoren und Systeme, eine Steuerlogik, ASICs, Chips, Arbeitsplatzrechner, Großrechner, usw.. Der Begriff "Vorrichtung" wird hier allgemein verwendet, um jede Art von Mechanismus, einschließlich eines Computers oder Systems oder einer Komponente davon, zu beschreiben. Die Begriffe "Aufgabe" und "Prozess" werden hier 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 im Hintergrund ausführen, in den 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 Figuren veranschaulicht 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 unterschiedliche Komponenten und/oder Prozesse, Threads, usw. und/oder über unterschiedliche Verbindungen durchgeführt werden und mit anderen Funktionen in anderen Ausführungsbeispielen kombiniert werden, wobei am Schutzbereich und Gedanken der vorliegenden Erfindung festgehalten wird.
  • Darüber hinaus werden die Begriffe "Netz" und "Kommunikationsmechanismus" hier allgemein verwendet, um ein oder mehrere Netze, Kommunikationsmedien oder Kommunikationssysteme zu beschreiben, einschließlich, jedoch nicht begrenzt auf das Internet, private oder öffentliche Telefon-, zellulare, drahtlose, Satelliten-, Kabel-, lokale, Stadtbereichs- und/oder Weitbereichs-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 "computer-lesbares 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 computergestütztes 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 Diens te, Bandlaufwerke und andere Speichervorrichtungen. Speicher und Speichervorrichtungen können von einem Computer ausführbare Befehle, die von einem Prozessor und/oder einer Steuerlogik ausgeführt werden sollen, und Daten speichern, die von einem Prozessor und/oder einer Steuerlogik manipuliert 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 (Heaps), Listen, verkettete Listen, Arrays, 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 oder ternärem Inhalt, Hash-Tabellen, TRIE oder andere Datenstrukturen, usw..
  • Der Begriff "ein Ausführungsbeispiel" wird hier verwendet, um auf ein spezielles Ausführungsbeispiel zu verweisen, wobei sich jeder Verweis auf "ein Ausführungsbeispiel" auf ein anderes Ausführungsbeispiel beziehen kann, und die wiederholte Verwendung des Begriffes hier 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 jedes Ausführungsbeispiel umfassen muss, obwohl ein Ausführungsbeispiel typischerweise alle diese Merkmale, Elemente und/oder Begrenzungen umfassen kann. Außerdem umfasst der Ausdruck "Einrichtung zum xxx" typischerweise ein computer-lesbares Medium, das vom Computer ausführbare Befehle zum Durchführen von xxx enthält.
  • Außerdem werden die Begriffe "erstes", "zweites", usw. typischerweise hier verwendet, um verschiedene Einheiten (z.B. ein erstes Element, ein zweites Element) zu bezeichnen. Die Verwendung dieser Begriffe hier schließt nicht notwendigerweise eine Reihenfolge ein, wie z.B. eine Einheit oder ein Ereignis, die/das vor dem anderen stattfindet oder kommt, sondern stellt vielmehr einen Mechanismus zum Unterscheiden zwischen speziellen Einheiten bereit. Überdies werden die Ausdrücke "auf der Basis von x" und "in Reaktion auf x" verwendet, um einen minimalen Satz von Datenelementen x anzugeben, von dem etwas abgeleitet oder durch den etwas verursacht wird, wobei "x" erweiterbar ist und nicht notwendigerweise eine vollständige Liste von Datenelementen 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/nicht modifizieren. Der Begriff "Teilmenge" wird verwendet, um eine Gruppe von allen oder weniger als allen der Elemente einer Menge anzugeben. Überdies wird der Begriff "oder" hierin verwendet, um eine alternative Auswahl von einem oder mehreren, einschließlich allen der konjunktiven Datenelementen anzugeben.
  • Verfahren und Vorrichtungen zum Erzeugen und Verwenden einer verbesserten Baum-Bitmap-Datenstruktur beim Bestimmen einer Übereinstimmung eines längsten Präfix, wie z.B. in einem Router, einem Paketvermittlungssystem, werden offenbart. Ein Ausführungsbeispiel organisiert die Baum-Bitmap, um die Anzahl von internen Knoten zu minimieren, auf die während einer Lookup-Operation zugegriffen werden muss. Ein Zeiger ist in jedem der Trie- oder Suchknoten auf den besten übereinstimmenden Eintrag im Blatt- oder Ergebnis-Array des Vaters enthalten, was einen direkten Zugriff auf dieses Ergebnis ermöglicht, ohne einen entsprechenden internen Knoten analysieren zu müssen. Überdies speichert ein Ausführungsbeispiel den internen Knoten für ein spezielles Level als erstes Element in seinem Sohn-Array. Außerdem verwendet ein Ausführungsbeispiel eine Universal-Lookup-Maschine, die mehrere Baum-Bitmaps oder andere Datenstrukturen simultan durchlaufen kann und vollständige Suchen, teilweise Suchen durchführen kann und teilweise Suchen wiederaufnehmen kann, wie z.B. nach dem Empfang von zusätzlichen Daten, in denen zu suchen ist.
  • Ein Ausführungsbeispiel umfasst eine Verbesserung an der Baum-Bitmap-Datenstruktur und den zugehörigen Lookup- und Aktualisierungsschemen. Diese verbessern typischerweise die Lookup-Leistung und können einen Speicherzugriff für bestimmte Hardwareausführungsbeispiele einsparen. Ein Ausführungsbeispiel organisiert die Baum-Bitmap in einer solchen Weise, dass höchstens ein Zugriff auf einen internen Knoten pro Lookup erforderlich ist. Ein Ausführungsbeispiel modifiziert zum Beispiel die Baum-Bitmap-Struktur so, dass vermieden wird, dass auf den internen Knoten I2 in der Zugriffsequenz 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 übereinstimmende Blattknoten L2 (116A) nach dem Analysieren der internen Bitmap in I2 (115) bestimmt. Eine Analyse dieser Zugriffssequenz führt zu der Beobachtung, dass für jedes Lookup, das durch den Knoten S3 (113) läuft, das anschließende Analysieren der internen Bitmap I2 (115) immer denselben übereinstimmenden Blattknoten L2 (116) ergibt. In einem Ausführungsbeispiel werden folglich eine neue Baum-Bitmap-Datenstruktur und zugehörige Lookup- und Aktualisierungsschemen verwendet, um das Analysieren der internen Bitmap in I2 (122) in dieser beispielhaften Lookup-Sequenz zu vermeiden.
  • Ein Ausführungsbeispiel verwendet eine Datenstruktur, die einen ersten Suchknoten, ein erstes Sohn-Array mit einem ersten internen Knoten und einem zweiten Suchknoten und ein erstes Blatt-Array mit mehreren ersten Blatt-Array-Einträgen verwendet. Typischerweise umfasst der erste Suchknoten einen Zeiger auf das erste Sohn-Array, der erste interne Knoten umfasst einen Zeiger auf das erste Blatt-Array; und der zweite Suchknoten umfasst einen Zeiger auf einen der mehreren ersten Blatt-Array-Einträge.
  • In einem Ausführungsbeispiel ist der erste interne Knoten das erste Element des ersten Sohn-Array. In einem Ausführungsbeispiel geben der Zeiger des ersten internen Knotens und der Zeiger des zweiten Suchknotens verschiedene erste Blatt-Array-Einträge an. In einem Ausführungsbeispiel umfasst die Datenstruktur ferner ein zweites Sohn-Array, wobei der zweite Suchknoten einen Zeiger auf das zweite Sohn-Array umfasst. In einem Ausführungsbeispiel umfasst die Datenstruktur ferner ein zweites Blatt-Array mit mehreren zweiten Blatt-Array-Einträgen, wobei das zweite Sohn-Array einen zweiten internen Knoten umfasst, wobei der zweite interne Knoten einen Zeiger auf das zweite Blatt-Array umfasst. In einem Ausführungsbeispiel ist der zweite interne Knoten das erste Element des zweiten Sohn-Array. In einem Ausführungsbeispiel umfasst das zweite Sohn-Array einen dritten Such- oder Endknoten, wobei der zweite Such- oder Endknoten einen Zeiger auf einen von mehreren zweiten Blatt-Array-Einträgen umfasst. In einem Ausführungsbeispiel geben der Zeiger des zweiten internen Knotens und der Zeiger des dritten Such- oder Endknotens verschiedene zweite Blatt-Array-Einträge an. In einem Ausführungsbeispiel stellt der erste Suchknoten eine Schrittweite (stride) 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 einem Ausführungsbeispiel umfasst der erste Suchknoten einen ersten Indikator der ersten Länge und der zweite Suchknoten umfasst einen zweiten Indikator der zweiten Länge.
  • Ein Ausführungsbeispiel durchläuft eine baumartige Datenstruktur, die mehrere Präfixe darstellt, die in mehrere Schrittweiten einer Anzahl von Baum-Levels unterteilt sind, die größer sind als Eins, wobei jede der mehreren Schrittweiten durch eine Baum-Bitmap dargestellt wird und Angaben von Sohn-Pfaden durch eine erweiterte Bitmap dargestellt werden. In einem Ausführungsbeispiel wird ein Suchknoten auf einem aktuellen Level innerhalb der baumartigen Datenstruktur bzw. Baumdatenstruktur empfangen. Eine Kennung der aktuell besten Übereinstimmung wird in Reaktion auf die Feststellung, ob eine neue beste Übereinstimmung existiert, aktualisiert. In eine Bitmap, die das aktuelle Level erweitert, wird bei der Feststellung indiziert, ob ein übereinstimmender Knoten des nächsten Level existiert oder nicht. In einem Ausführungsbeispiel wird dieser Durchlauf wiederholt, bis ein übereinstimmender Knoten des nächsten Level nicht existiert, und dann wird der durch den Suchknoten des aktuellen Level angegebene Knoten wiedergewonnen und ein Suchergebnis wird auf der Basis der Kennung der aktuell besten Übereinstimmung oder auf der Basis eines Zeigers im Suchknoten des aktuellen Levels auf einen Blattknoten identifiziert. In einem Ausführungsbeispiel wird in Reaktion auf die Feststellung, dass der Suchknoten auf dem aktuellen Level nicht existiert, in einen Endknoten indiziert, um das Suchergebnis zu identifizieren. In einem Ausführungsbeispiel wird die Kennung der aktuell besten Übereinstimmung auf der Basis eines Zeigers in dem Endknoten aktualisiert.
  • Ein Ausführungsbeispiel durchläuft eine Baumdatenstruktur, die in einem oder mehreren computer-lesbaren Medium/Medien gespeichert ist, auf der Basis eines Eingangssuchdatenstrangs. Typischerweise wird ein Suchprogessionskontext eines teilweise beendeten Baumdurchlaufs empfangen, wobei der Suchprogessionskontext typischerweise eine Adresse eines nächsten Kno tens oder irgendeinen anderen Knotenindikator umfasst. Der Durchlauf der Baumdatenstruktur wird ab diesem Knoten für einen nächsten Abschnitt des Eingangsstrangs wieder aufgenommen. Ein Ausführungsbeispiel verteilt eine Lookup-Anfrage, die typischerweise die Adresse des nächsten Knotens umfasst, zu einer von mehreren Speichervorrichtungen. Ein Lookup-Ergebnis wird von einer der mehreren Speichervorrichtungen empfangen, wobei das Lookup-Ergebnis einen Suchknoten umfasst. Ein Kennung der aktuell besten Übereinstimmung wird in Reaktion auf die Feststellung, ob eine neue beste Übereinstimmung existiert, aktualisiert. In eine erweiterte Bitmap des aktuellen Level des Suchknotens wird indiziert, um festzustellen, ob ein übereinstimmender Knoten des nächsten Level existiert oder nicht. Ein neuer Wert der Adresse des nächsten Knotens wird erzeugt, wie es auch ein neuer Wert für den Suchprogessionskontext wird.
  • In einem Ausführungsbeispiel umfasst der Suchprogessionskontext ferner eine Angabe der besten Übereinstimmung und eine Länge eines verwendeten Eingangssuchdatenstrangs. In einem Ausführungsbeispiel umfasst die Angabe der besten Übereinstimmung ein Übereinstimmungs-Flag und einen Blattzeiger (leaf pointer). In einem Ausführungsbeispiel sind mehrere baumartigen bzw. Baumdatenstrukturen in den computer-lesbaren Medien gespeichert, und diese baumartigen Datenstrukturen können simultan durchlaufen werden.
  • Eine Vorrichtung eines Ausführungsbeispiels zum Durchlaufen von Knoten einer oder mehrerer baumartigen bzw. Baumdatenstrukturen auf der Basis eines Eingangsdatenstrangs 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 Eingangsdatenstrangs entspricht, mehrere Speichervorrichtungen zum Speichern von einer oder mehreren Baumdatenstrukturen und zum Zurückführen des nächsten Knotens in Reaktion auf eine Wiedergewinnungsanfrage; und einen Speichermanager, der mit dem Baum-Bitmap-Mechanismus für die nächste Adresse und den mehreren Speichervorrichtungen gekoppelt ist, zum Verteilen der Wiedergewinnungsanfrage zu einer der mehreren Speichervorrichtungen. Typischerweise umfasst jede von einer oder mehreren Baumdatenstrukturen einen ersten Suchknoten, ein erstes Sohn-Array mit einem ersten internen Knoten und einem zweiten Suchknoten, und ein erstes Blatt-Array mit mehreren ersten Blatt-Array-Einträgen. In einem Ausführungsbeispiel umfasst der erste Suchknoten einen Zeiger auf das erste Sohn-Array, der erste interne Knoten umfasst einen Zeiger auf das erste Blatt-Array; und der zweite Suchknoten umfasst einen Zeiger auf einen der mehreren ersten Blatt-Array-Einträge.
  • In einem Ausführungsbeispiel umfassen eine oder mehrere Baumdatenstrukturen Knoten von mindestens zwei verschiedenen Bäumen. In einem Ausführungsbeispiel bestimmt die nächste Adresse der Baum-Bitmap ferner eine der mehreren Speichervorrichtungen und stellt eine Angabe von einer der mehreren Speichervorrichtungen zum Speichermanager bereit. In einem Ausführungsbeispiel umfasst der nächste Knoten eine Angabe von einer speziellen der mehreren Speichervorrichtungen, wobei der Speichermanager die Wiedergewinnungsanfrage zu der speziellen der mehreren Speichervorrichtungen verteilt. In einem Ausführungsbeispiel 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 einem Ausführungsbeispiel speichert der erste Speichertyp einen Knoten eines ersten Level für jede der Baumdatenstrukturen.
  • 2A veranschaulicht ein solches Ausführungsbeispiel mit Suchknoten S1 (211), S2 (212) und S3 (213), internen Knoten I1 (221), I2 (224) und I3 (214) und Blatt-Arrays LA1 (222), LA2 (215), LA3 (223), Blattknoten L1 (222A–B), L2 (215A–B) und L3 (223A–B) und ihre Verbindungen miteinander durch Zeiger. Es sei angemerkt, dass die in durchgezogenen Linien dargestellten Knoten die Knoten sind, auf die während eines nachstehend beschriebenen Baum-Bitmap-Lookup-Beispiels zugegriffen wird. Wie ebenfalls in 2A gezeigt ist, zeigen die Zeiger 220, 230 und 240 direkt von ihren jeweiligen Suchknoten 212, 213 und 225 auf einen Blattknoten 222A, 215A und 223B des Vaters (entsprechend dem Eintrag der besten Übereinstimmung). Es sei auch angemerkt, dass 2A nur einen Pfad zeigt, während Suchknoten andere Pfade auf unterschiedliche Blattknoten (222A–B, 215A–B, 223A–B) innerhalb der Blatt-Arrays (222, 215, 223) zeigen. In einem Ausführungsbeispiel ist zur Steuerzeit (z.B. wenn die Baum-Bitmap programmiert wird) bekannt, dass das Blatt L2 (215A) die dem Knoten S3 (213) entsprechende längste Übereinstimmung 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 einem Ausführungsbeispiel umfassen der Suchknoten S1 (211), S2 (212), S3 (213) bzw. S4 (225) jeweils einen parent_best_leaf_pointer (Zeiger auf bestes Vater-Blatt) (210, 220, 230 und 240) auf das beste übereinstimmende Blatt in ihrem entsprechenden Vater-Blatt-Array. Gezeigt sind der Suchknoten S2 (212) mit dem Zeiger 220 auf den Blattknoten L1 (222A) im Blatt-Array LA1 (222), der Suchknoten S3 (213) mit dem Zeiger 230 auf den Blattknoten L2 (215A) im Blatt-Array LA2 (215) und der Suchknoten S4 (225) mit dem Zeiger 240 auf den Blattknoten L3 (23B) im Blatt-Array LA3 (223). In einem Ausführungsbeispiel gibt ein parent_best_leaf_pointer von Null an, dass kein aktualisiertes derartiges längstes übereinstimmendes Präfix im Vaterknoten vorhanden ist.
  • In bestimmten Ausführungsbeispielen ist das Minimieren der Größe eines Knotens sehr wichtig. In einem Ausführungsbeispiel 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-Array 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 übereinstimmenden Blattknoten im Vater-Blatt-Array zu speichern. Mit Bezug auf das Beispiel wird der Zeiger 235 des internen Knotens in S3 (d.h., S3 → I3) durch die Verbindung S3 → L2 (230) ausgetauscht, wobei L2 die längste Übereinstimmung in dem Level 2 entsprechend S3 (213) ist.
  • 2B veranschaulicht ein Ausführungsbeispiel einer neuen Baum-Bitmap-Datenstruktur. Wie gezeigt ist, ist der interne Knoten als das erste Element im Sohn-Array des Suchknotens angeordnet. Daher wird auf die Söhne sowie den internen Knoten unter Verwendung desselben Zeigers zugegriffen. Der interne Knoten I1 (261) ist zum Beispiel das erste Element des Sohn-Array 260 und der interne Knoten I2 (281) ist das erste Element des Sohn-Array 280.
  • Genauer umfasst der Suchknoten S1 (250) einen Zeiger 256 auf das Sohn-Array 260, das den internen Knoten I1 (261) und die Sohnelemente 265 umfasst. Der interne Knoten I1 (261) umfasst einen Zeiger 267 auf das Blatt-Array LA1 (270), der null oder mehr Elemente umfassen kann, einschließlich des Elements Blattknoten L1 (271), der in diesem Beispiel das beste Blatt-Vater-Ergebnis für den Suchknoten S2 (262) ist. Es sei angemerkt, 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 sei angemerkt, dass eine Reihe von Punkten in den Sohnelementen 265 und im Blatt-Array LA1 (270) verwendet wird, um mehr mögliche Suchknoten in den Sohnelementen 265 und den Zeigern auf Einträge im Blatt-Array LA1 (270) darzustellen. Der Suchknoten S2 (262) umfasst auch einen Zeiger 266 auf das Sohn-Array 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-Array LA2 (290). Der Endknoten E3 (282) umfasst einen Zeiger 288 direkt auf den Blattknoten L2 (291), der das beste Blatt-Vater-Ergebnis für den Endknoten E3 (282) ist.
  • Wenn ein Ausführungsbeispiel in verallgemeinerten Begriffen beschrieben wird, wird auf den internen Knoten Ik des Suchknotens Sk nur dann zugegriffen, wenn Sk nicht Präfixe für einen speziellen Lookup erweitert. Wenn Sk Präfixe erweitert, dann muss auf Ik niemals zugegriffen werden. Mit anderen Worten, in einem Ausführungsbeispiel ist es niemals der Fall, dass sowohl auf Ik als auch Sk+1 beim gleichen Lookup zugegriffen werden muss. Daher können sowohl Ik als auch Sk+1 typischerweise im gleichen Speichermodul angeordnet sein. In einem Ausführungsbeispiel wird an die Adresse Ik des internen Knotens beim Lookup erinnert, wenn das Flag "parent_has_match" im Suchknoten Sk+1 auf dem nächsten Level gesetzt ist. Wenn "parent_best_leaf-pointer" in Sk+1 nicht Null ist, zeigt er mit diesem neuen Schema direkt auf den Blattknoten auf dem Level "k", welches das längste übereinstimmende Präfix ist. In einem Ausführungsbeispiel würden die obigen Knotenstrukturmodifikationen für alle Baum-Bitmap-Knoten außer den internen Knoten und Blattknoten gelten.
  • 3A veranschaulicht einen Prozess, der in einem Ausführungsbeispiel verwendet wird, um ein Lookup bei einer 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 dem Level k=0 beginnt. Als nächstes wird im Prozessblock 304 das current_best_leaf (aktuell bestes Blatt) auf Null=0 initialisiert (d.h., bisher keine Übereinstimmung) und der parent_best_leaf_pointer wird auf Null=0 initialisiert (d.h., bisher keine Übereinstimmung).
  • Wie im Prozessblock 306 bestimmt, wird als nächstes, wenn der aktuelle 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, im Prozessblock 310 das current_best_leaf auf den Wert von parent_best_leaf_pointer gesetzt.
  • Im Prozessblock 312 wird als nächstes in die "erweiternde Bitmap" von Sk unter Verwendung der nächsten paar Bits vom Lookup-Schlüssel in Abhängigkeit von der Schrittweite indiziert. Wenn, wie im Prozessblock 314 bestimmt, Sk Präfixe erweitert, dann wird im Prozessblock 316 die Adresse des Knotens des nächsten Level im Sohn-Array (typischerweise einschließlich einer Einstellung, um zu berücksichtigen, dass der interne Knoten Ik der erste Knoten in dem Sohn-Array ist) berechnet. Als nächstes wird im Prozessblock 318 der Knoten auf dem Level 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 Ik wiedergewonnen, wobei Ik das erste Element im Sohn-Array von Sk ist. Wenn, wie im Prozessblock 322 bestimmt, ein längstes übereinstimmendes Präfix in Ik vorhanden ist, indem die interne Bitmap analysiert wird, dann wird im Prozessblock 324 das Ergebnis vom Blattknoten auf dem Level k wiedergewonnen und die Verarbeitung ist vollständig, wie durch den Prozessblock 338 angegeben ist. 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 wird.
  • Ansonsten wurde im Prozessblock 306 der aktuelle Knoten als ein 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 im Prozessblock 332 auf den Wert von parent_best_leaf_pointer gesetzt.
  • Als nächstes wird, wie im Prozessblock 334 bestimmt, dann, wenn ein längstes übereinstimmendes Präfix in Ek vorhanden ist, im Prozessblock 336 das Ergebnis aus dem Blattknoten auf dem Level K wiedergewonnen, und die Verarbeitung ist vollständig, wie durch den Prozessblock 338 angegeben wird. 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 wird.
  • 3B veranschaulicht einen Prozess, der in einem Ausführungsbeispiel 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 dem level k eingefügt wird. Sk soll der entsprechende Suchknoten sein. Setk+1 soll die Menge von denjenigen Knoten im Sohn-Array von Sk sein, die die Abkömmlinge von Pk sind. Mit anderen Worten, Pk ist ein Präfix aller Suchknoten im Setk +1. In einem Ausführungsbeispiel ist Setk +1 die Menge aller Knoten, in denen das Flag "parent_has_match" gesetzt werden muss, wenn Pk eingefügt wird.
  • In einem Software-Ausführungsbeispiel werden die folgenden zusätzlichen Variablen zusammen mit dem "parent_best_leaf_pointer" in jedem Suchknoten aufrechterhalten. Es sei angemerkt, dass in einem Ausführungsbeispiel diese nur in der Steuersoftware-Knotenstruktur und nicht in der Hardwarestruktur erforderlich sind. Der bestleaf_offset (Sk +1) (Versatz des besten Blattes) ist grundsätzlich der Versatz des Blattes, auf das durch parent_best_leaf (Sk +1) (bestes Vaterblatt) in seinem Blatt-Array gezeigt wird. Die "bestleaf_length" (Länge des besten Blattes) 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-Array) ist der Sohn-Arrayzeiger des Suchknotens Sk. Bestleaf_offset (Sk +1) ist der Wert der Variablen "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 Variablen "bestleaf_length" nur der Software des Suchknotens Sk+1. "New_leaf_array_base (Pk) (Basis des neuen Blatt-Array) ist die Adresse der Stelle in der Baum-Bitmap, wenn ein neues Präfix in einem existierenden Blatt-Array eingefügt wird, in das das gesamte Blatt-Array zusammen mit dem eingefügten Präfix Pk kopiert wird.
  • Wie in dem in 3B veranschaulichten Pseudocode beschrieben ist, 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 des nächsten Level, 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 ist, die auf die korrekten Blätter zeigen, zeigt der in 3B veranschaulichte 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-Array von Sk eingefügt wird (z.B. wenn neue Zweige des Baumes 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-Array Lk von Sk, der das längste Präfix entsprechend Sk+1 ist, durch Analysieren der 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 dem Level k gelöscht wird. Sk soll der entsprechende Suchknoten sein. Setk+1 soll die Menge von denjenigen Knoten im Sohn-Array von Sk sein, für die Pk das beste Blatt ist. 3C veranschaulicht einen Prozess, der in einem Ausführungsbeispiel verwendet wird, um die parent_best_leaf_pointers in den Sohnknoten des Suchknotens zu aktualisieren, aus dem das Präfix gelöscht wird.
  • 4 veranschaulicht ein Ausführungsbeispiel eines Systems 400, wie z.B., jedoch nicht begrenzt auf ein Computer- oder Kommunikationssystem, zum Implementieren einer Baum-Bitmap-Datenstruktur. In einem Ausführungsbeispiel verwendet das System 400 eine solche Baum-Bitmap-Datenstruktur zum Bestimmen der Übereinstimmungen des längsten Präfix gemäß der Erfindung. In einem Ausführungsbeispiel programmiert das System 400 eine andere Vorrichtung, wie z.B. eine Durchlaufmaschine 500 (5), über die Schnittstelle 404 mit einer Baum-Bitmap-Datenstruktur.
  • In einem Ausführungsbeispiel 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 veranschaulichende Zwecke als Bus gezeigt) gekoppelt sind. Verschiedene Ausführungsbeispiele 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 Zeitablausteueraufgaben oder -prozesse durchzuführen. Der Speicher 402 ist ein Typ eines computer-lesbaren Mediums und umfasst typischerweise einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen Flash-Speicher, integrierte Schaltungen und/oder andere Speicherkomponenten. Der Speicher 402 speichert typischerweise von einem Computer ausführbare Befehle, die vom Prozessor 401 ausgeführt werden sollen, und/oder Daten, die vom Prozessor 401 manipuliert werden, um eine Funktionalität gemäß der Erfindung zu implementieren. Die Speichervorrichtungen 403 sind ein anderer Typ von computer-lesbarem Medium und umfassen typischerweise Festkörper-Speichermedien, Plattenlaufwerke, Disketten, vernetzte Dienste, Bandlaufwerke und andere Speichervorrichtungen. Die Speichervorrichtungen 403 speichern typischerweise von einem Computer ausführbare Befehle, die vom Prozessor 401 ausgeführt werden sollen, und/oder Daten, die vom Prozessor 401 manipuliert werden, um eine Funktionalität gemäß der Erfindung zu implementieren.
  • 5 veranschaulicht ein Blockdiagramm eines Ausführungsbeispiels zum Durchlaufen einer hierarchischen Datenstruktur, einschließlich, jedoch nicht begrenzt auf eine Baum-Bitmap- oder andere Baumdatenstruktur. Eine Anfragevorrichtung 501, wie z.B. ein Prozessor oder eine andere Steuerlogik, erzeugt Lookup-Anfragen, die von der Durchlaufmaschine 500 empfangen werden, und speichert sie im Anfragepuffer 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 in mehreren und sogar unabhängigen Baum-Bitmap- und/oder anderen Datenstrukturen durchzuführen. In einem Ausführungsbeispiel entsprechen die Anfragevorrichtung 501 und/oder der Wartungsprozessor dem System 400 (4). In einem Ausführungsbeispiel sind die Anfragevorrichtung 501 und/oder der Wartungsprozessor 502 in der Durchlaufmaschine 500 enthalten.
  • In einem Ausführungsbeispiel umfasst die Durchlaufmaschine 500 einen Anfragepuffer 512, um Suchanfragen zu empfangen und zu Puffern, einen Speichermanager 520, um Lese- und Schreiboperationen an der Speichervorrichtung und Steuerung 521529 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 Ausgabewarteschlange 535 gelenkt wird. Die Ausgabewarteschlange 535 kommuniziert Suchergebnisse zur Anfragevorrichtung 501. Die Baum-Bitmap-Logik 514 für die nächste Adresse verarbeitet Suchanfragen, die vom Anfragepuffer 512 empfangen werden, und Zwischenergebnisse, die von den Speichervorrichtungen und Steuerungen 521529 und vom SRAM und der Steuerung 530 empfangen werden, und bestimmt möglicherweise die Speicheradresse des nächsten Knotens und leitet die Speicherleseanfrage zum Speichermanager 520 weiter.
  • Suchanfragen, die von der Durchlaufmaschine 500 empfangen oder erzeugt werden, können einen vollständigen oder teilweisen String (Strang) umfassen, auf dessen Basis ein längstes übereinstimmendes Präfix oder ein anderes Ergebnis zu finden ist. In einem Ausführungsbeispiel umfasst die Durchlaufmaschine 500 beispielsweise die Fähigkeit, auf der Basis eines ersten Abschnitts eines Lookup-Strangs zu suchen, ein Ergebnis zurückzuführen und dann die Suche auf der Basis des Ergebnisses und eines zusätzlichen Abschnitts des Lookup-Strangs ab dort fortzusetzen, wo sie aufgehört wurde. Außerdem setzt in einem Ausführungsbeispiel die Durchlaufmaschine 500 die Suche durch die Datenstruktur fort, bis ein Ergebnis empfangen wird, Suchdaten ausgeschöpft sind oder ein Stoppknoten (nachstehend weiter beschrieben) angetroffen wird.
  • Formate, die in einem Ausführungsbeispiel einer Suchanfrage verwendet werden, sind in 6A gezeigt. Die anfängliche Suchanfrage 601 umfasst ein Suchtypen-Feld, das eine anfängliche (im Gegensatz zu einer fortgesetzten) Suchanfrage angibt, und ein Suchdaten-Feld, das Informationen enthält, mit denen sie abgeglichen werden sollen. Die fortgesetzte Suchanfrage 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 Lookup-Strangs, 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 (was während eines vorherigen Teils der Suche bestimmt worden ist).
  • 6A veranschaulicht zusätzlich Formate, die in einem Ausführungsbeispiel 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 Anfragen zur Aktualisierungssteuerung 539 übermittelt werden, die Aktualisierungsanfragen zum Speichermanager 520 sendet und Informationen von Speichervorrichtungen und Steuerungen 521529 und vom SRAM und von der Steuerung 530 empfangen kann.
  • 6B veranschaulicht das Format von Knoten oder Datenstrukturelementen, die in einem Ausführungsbeispiel verwendet werden. Der Such-/End-/Stopp-Knoten 611 umfasst ein Knotentypenfeld, eine Sohn-Array-Clustergröße, die eine im aktuellen Knoten verwendete Schrittweitengröße angibt, so dass die Datenstruktur Schrittweiten und Knoten mit variablen Längen verwenden kann. Der Such-/End/-Stopp-Knoten 611 umfasst ferner die erweiternde Bitmap, ein Sohn- (z.B. Sohn-Arrays) Zeiger-Feld, 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 Knotentypenfeld, ein Blatt-Array-Zeigerfeld, ein Feld für den Zeiger auf das bisher beste Blatt, ein internes Bitmap-Feld und ein Fehlerkorrekturcode-Feld. Der Blattknoten 613 umfasst ein Knotentypenfeld, ein Feld für assoziative Rückführungsdaten und ein Fehlerkorrekturcode-Feld. Der Überspringknoten 614 umfasst ein Knotentypenfeld, 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-Arrays) Zeiger-Feld und ein Fehlerkorrekturcode-Feld.
  • Mit Rückbezug auf 5 werden Suchanfragen wie z.B., jedoch nicht begrenzt auf diejenigen, die hier beschrieben werden, vom Anfragepuffer 512 empfangen. Wenn die Speicheradresse des Knotens auf der Basis der empfangenen Suchanfrage leicht erhältlich ist, wird die Anfrage direkt zum Speichermanager 520 weitergeleitet. Ansonsten wird die Anfrage zur Baum-Bitmap-Logik 514 für die nächste Adresse weitergeleitet, in der die Speicheradresse berechnet wird. Es sei angemerkt, 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 Ausgabewarteschlange 535 weiterleitet.
  • 6C veranschaulicht einen Prozess, der in einem Ausführungsbeispiel 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 aktuelle Schrittweitenlänge des nächsten Abschnitts des Lookup-Strangs und die Sohn-Bitmap wiedergewonnen werden. Es sei angemerkt, dass die Schrittweitenlänge eines Eintrages in einem Ausführungsbeispiel zwischen jedem Eintrag variieren kann. Überdies unterstützt ein Ausführungsbeispiel variierende Größen des Sohn-Array, wobei diese Größe durch die Sohn-Array-Clustergröße identifiziert wird. Im Prozessblock 654 wird als nächstes die Anzahl von Einsen in der Sohn-Bitmap des Eintrags bis zu der Position gezählt, die dem Lookup-Strang entspricht. Folglich identifiziert diese Zählung, welches Element das nächste von Interesse ist. Im Prozessblock 656 wird die nächste Adresse auf der Basis des Sohn-Zeigers plus der Zählung, multipliziert mit der Breite eines Zeiger-Feldes, berechnet. Dann wird im Prozessblock 658 die Lookup-Anfrage, einschließlich der bestimmten nächsten Adresse, Speicherbank und des zu verwendenden Kanals, zum Speichermanager weitergeleitet und die Verarbeitung ist beendet, wie durch den Prozessblock 659 angegeben wird.
  • Die Verarbeitung durch die Anfragevorrichtung 501 (5) und die Durchlaufmaschine 500 wird durch die Ablaufdiagramme weiter beschrieben, die in 7 und 8A8D dargestellt sind, denen wir uns nun zuwenden.
  • 7 veranschaulicht einen Prozess, der in einem Ausführungsbeispiel durch die Anfragevorrichtung 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 Speichersuchanfrage wie z.B. eine anfängliche Suchanfrage 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, kehrt die Verarbeitung dann, wenn die Suche nicht beendet ist (z.B. es sind mehr Bits zur Durchlaufmaschine in einer Suchanfrage zu liefern, wie etwa für eine fortgesetzte Suchanfrage 602 von 6A), zum Prozessblock 704 zurück, um die Suchanfrage 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 ist.
  • Die 8A8D veranschaulichen einen Prozess, der in einem Ausführungsbeispiel 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 Suchanfrage empfangen wird. Als nächstes wird, wie im Prozessblock 804 bestimmt, dann, wenn der erste Speicherzugriff im SRAM und der Steuerung 530 durchgeführt werden sollte, im Prozessblock 806 die SRAM-Lookup-Adresse bestimmt, und die Speicherzugriffsanfrage (d.h., Lookup-Anfrage) wird im Prozessblock 808 zur SRAM-Steuereinheit weitergeleitet, um den Speicherzugriff durchzuführen. Ansonsten oder bei Fortsetzung über das Verbindungselement 8A (811) wird die Lookup-Anfrage im Prozessblock 810 zu einer der externen Speichervorrichtungen auf der Basis irgendeines Verteilungsschemas für die Speichervorrichtungen, das verfügbar ist, weitergeleitet, um die Anfragen zu bedienen. In einem Ausführungsbeispiel wird jede der einen oder mehreren Baum-Bitmap- oder anderen Datenstrukturen in jedem der externen Speicher repliziert. In einem Ausführungsbeispiel besetzen bestimmte der Baum-Bitmap- oder anderen Datenstrukturen eine Teilmenge der externen Speicher.
  • Im Prozessblock 812 wird als nächstes das Lookup-Ergebnis empfangen. Wenn, wie im Prozessblock 814 bestimmt, das Lookup-Ergebnis 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 Lookup-Ergebnis 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 Lookup-Ergebnis einen Blattknoten umfasst, dann wird ansonsten im Prozessblock 824 der Rückführungswert des Lookup im Prozessblock 824 gesandt und die Verarbeitung ist beendet, wie durch den Prozessblock 826 angegeben ist. Ansonsten geht die Verarbeitung über das Verbindungselement 8D (828) zum Verbindungselement 8D (870) in 8D weiter.
  • Unter Bezugnahme auf 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 aktuellen Knoten entspricht, dann dieses beste Blatt als in der Suche bisher entdecktes aktuell bestes Blatt im Prozessblock 834 gespeichert. Wie im Prozessblock 836 bestimmt, entsprechen die im Überspringknoten bereitgestellten Überspringbits den nächsten Datenbits des Lookup-Strangs, dann wird als nächstes im Prozessblock 838 die spezifizierte Adresse im Überspringknoten als der nächste Adresswert 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 Lookup-Zeit zu sparen. Dieses Überspringknotenmerkmal ist besonders nützlich, wenn lange Strings im Lookup-Strang vorhanden sind, die nicht variieren, wie z.B. bei einem IPv6-Lookup.
  • Ansonsten oder bei Fortsetzung ausgehend vom Verbindungselement 8E (840) wird, wenn eine beste Übereinstimmung im Prozessblock 842 bestimmt wurde, dann dieser Wert der besten Übereinstimmung als die 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 Übereinstimmung aufgefunden und das Ergebnis bezüglich keiner Übereinstimmung wird im Prozessblock 844 gesandt, und die Verarbeitung dieser Suche wird beendet, wie durch den Prozessblock 845 angegeben ist.
  • Unter Bezugnahme auf 8C, wobei ab dem Verbindungselement 8C (850) begonnen wird, wird, wie im Prozessblock 852 bestimmt wird, wenn ein bestes Blatt vorhanden ist, das dem aktuellen Knoten entspricht, dann dieses beste Blatt als in der Suche bisher entdecktes aktuell bestes Blatt im Prozessblock 854 gespeichert. Wie im Prozessblock 856 bestimmt, wird als nächstes dann, wenn das Versatzbit-Flag in der Baum-Bitmap gesetzt ist (d.h., die Baum-Bitmap soll analysiert werden), 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.
  • Unter Bezugnahme auf 8D, wobei ab dem Verbindungselement 8D (870) begonnen wird, wird, wie im Prozessblock 872 bestimmt, dann, wenn ein bestes Blatt vorhanden ist, das dem aktuellen Knoten entspricht, dieses beste Blatt als bisher in der Suche entdecktes aktuell bestes Blatt im Prozessblock 873 gespeichert. Wie im Prozessblock 874 bestimmt, geht als nächstes dann, wenn das entsprechende Bit in der externen Bitmap nicht gesetzt ist (z.B. kein externes Lookup für dieses Lookup besteht), die Verarbeitung zum Prozessblock 876 weiter. Wenn der Sohnknoten kein interner Knoten ist, dann wird, wie im Prozessblock 880 bestimmt, dann, wenn eine Übereinstimmung des Lookup-Strangs 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 bezüglich keiner Übereinstimmung im Prozessblock 882 gesandt, und die Verarbeitung ist beendet, wie durch den Prozessblock 883 angegeben wird. 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 aktuelle 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 ist. Ansonsten geht die Verarbeitung über das Verbindungselement 8A (887) zum Verbindungselement 8A (811), 8A, weiter.
  • Angesichts der vielen möglichen Ausführungsbeispiele, auf die die Prinzipien unserer Erfindung angewendet werden können, ist zu erkennen, dass die Ausführungsbeispiele und Ausführungsformen davon, die hier unter Bezugnahme auf die Zeichnungen/Figuren beschrieben worden sind, nur veranschaulichend sind und nicht als Begrenzung des Schutzbereichs der Erfindung aufgefasst werden sollen. Beispielsweise und wie für einen Fachmann auf diesem Gebiet 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. Es können auch viele verschiedene Formen von Datenstrukturen in verschiedenen Ausführungsbeispielen verwendet werden. Die Erfindung, wie sie hier beschrieben worden ist, zieht alle solchen Ausführungsbeispiele in Betracht, die in den Schutzbereich der folgenden Ansprüche und Äquivalente davon fallen können.

Claims (8)

  1. Verfahren zum Durchlaufen einer baumartigen Datenstruktur, die auf einem oder mehreren computerlesbaren Medium/Medien gespeichert ist, auf der Grundlage eines Eingangssuchdatenstrangs, wobei das Verfahren für jeden einer Vielzahl von Abschnitten des Eingangssuchdatenstrangs das Durchführen eines Satzes von Schritten umfasst, mit: (a) Empfangen eines Suchprogressions-Kontexts eines teilweise durchgeführten baumartigen Durchlaufens, wobei der Suchprogressions-Kontext eine nächste Knotenadresse aufweist; (b) Wiederaufnehmen des Durchlaufens der baumartigen Datenstruktur einschließlich des wiederholten Durchführens der Schritte (i) bis (iv) zum Durchlaufen der baumartigen Datenstruktur entsprechend einem nächsten der Vielzahl von Abschnitten des Eingangsstrangs: (i) Verteilen einer Lookup (810) – Anfrage, die die nächste Knotenadresse enthält, an eine einer Vielzahl von Speichervorrichtungen; (ii) Empfangen eines Lookup (812) – Ergebnisses von der einen der Vielzahl von Speichervorrichtungen, wobei das Lookup-Ergebnis einen Suchknoten enthält; (iii) Aktualisieren einer aktuell besten Übereinstimungs-Kennung (842) im Ansprechen auf das Ermitteln, ob eine neue beste Übereinstimmung existiert; (iv) Indizieren in eine sich auf dem aktuellen Level erstreckende Bitmap des Suchknotens, um zu ermitteln, ob ein übereinstimmender Knoten des nächsten Levels existiert, oder nicht; (v) Erzeugen eines neuen Werts der nächsten Knotenadresse (884); und (c) Erzeugen eines neuen Werts für den Suchprogressions-Kontext.
  2. Verfahren nach Anspruch 1, wobei der Suchprogressions-Kontext eine Angabe der besten Übereinstimmung sowie der Länge des verwendeten Eingangssuchdatenstrangs enthält.
  3. Verfahren nach Anspruch 2, wobei die Angabe der besten Übereinstimmung einen Übereinstimmungs-Flag und einen Blattzeiger (leaf_pointer) enthält.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei das eine oder mehrere computer-lesbare Medium/Medien eine Vielzahl verschiedener baumartiger Datenstrukturen aufweist/aufweisen; und wobei die Schritte (a), (b) und (c) für jeden einer Vielzahl von Eingangssuchdatensträngen entsprechend jeder der Vielzahl verschiedener baumartiger Datenstrukturen durchgeführt werden.
  5. Vorrichtung zum Durchlaufen einer baumartigen Datenstruktur, die auf einem oder mehreren computerlesbaren Medium/Medien gespeichert ist, auf der Grundlage eines Eingangssuchdatenstrangs, wobei die Vorrichtung aufweist: eine Einrichtung zum Empfangen eines Suchprogressions-Kontexts eines teilweise durchgeführten baumartigen Durchlaufens, wobei der Suchprogressions-Kontext eine nächste Knotenadresse aufweist; und eine Einrichtung zum Wiederaufnehmen des Durchlaufens der baumartigen Datenstruktur; eine Einrichtung zum Verteilen einer Lookup–Anfrage, die die nächste Knotenadresse enthält, an eine einer Vielzahl von Speichervorrichtungen; eine Einrichtung zum Empfangen eines Lookup–Ergebnisses von der einen der Vielzahl von Speichervorrichtungen, wobei das Lookup-Ergebnis einen Suchknoten enthält; eine Einrichtung zum Aktualisieren einer aktuell besten Übereinstimungs-Kennung im Ansprechen auf das Ermitteln, ob eine neue beste Übereinstimmung existiert; eine Einrichtung zum Indizieren in eine sich auf dem aktuellen Level erstreckende Bitmap des Suchknotens, um zu ermitteln, ob ein übereinstimmender Knoten des nächsten Levels existiert, oder nicht; eine Einrichtung zum Erzeugen eines neuen Werts der nächsten Knotenadresse; und eine Einrichtung zum Erzeugen eines neuen Werts für den Suchprogressions-Kontext.
  6. Vorrichtung nach Anspruch 5, wobei der Suchprogressions-Kontext eine Angabe der besten Übereinstimmung sowie der Länge des verwendeten Eingangssuchdatenstrangs enthält.
  7. Vorrichtung nach Anspruch 6, wobei die Angabe der besten Übereinstimmung einen Übereinstimmungs-Flag und einen Blattzeiger (leaf pointer) enthält.
  8. Computerprogramm, Computerprogramm-Erzeugnis oder computerlesbares Medium, die von einem Computer ausführbare Befehle zum Durchführen des Verfahrens gemäß einem der Ansprüche 1 bis 4 enthalten.
DE60313371T 2002-05-31 2003-03-15 Verwendung von baumartigen "Bitmap" Datenstrukturen Expired - Lifetime DE60313371T2 (de)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
DE60313371D1 DE60313371D1 (de) 2007-05-31
DE60313371T2 true DE60313371T2 (de) 2008-01-03

Family

ID=29709760

Family Applications (3)

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

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

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE60305035T Expired - Lifetime DE60305035T2 (de) 2002-05-31 2003-03-15 Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen

Country Status (8)

Country Link
US (4) US7899067B2 (de)
EP (3) EP1808987B1 (de)
CN (1) CN100465947C (de)
AT (3) ATE360312T1 (de)
AU (1) AU2003214223B2 (de)
CA (1) CA2484446A1 (de)
DE (3) DE60322756D1 (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
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
US9461859B2 (en) 2005-03-17 2016-10-04 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
US8879511B2 (en) 2005-10-27 2014-11-04 Qualcomm Incorporated Assignment acknowledgement for a wireless communication system
US8565194B2 (en) 2005-10-27 2013-10-22 Qualcomm Incorporated Puncturing signaling channel 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
US9179319B2 (en) 2005-06-16 2015-11-03 Qualcomm Incorporated Adaptive sectorization in cellular systems
US8599945B2 (en) 2005-06-16 2013-12-03 Qualcomm Incorporated Robust rank prediction for a MIMO system
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
US9209956B2 (en) 2005-08-22 2015-12-08 Qualcomm Incorporated Segment sensitive scheduling
US20070041457A1 (en) 2005-08-22 2007-02-22 Tamer Kadous Method and apparatus for providing antenna diversity in a wireless communication system
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
US9172453B2 (en) 2005-10-27 2015-10-27 Qualcomm Incorporated Method and apparatus for pre-coding frequency division duplexing system
US8693405B2 (en) 2005-10-27 2014-04-08 Qualcomm Incorporated SDMA resource management
US8477684B2 (en) 2005-10-27 2013-07-02 Qualcomm Incorporated Acknowledgement of control messages in a wireless communication system
US8582509B2 (en) 2005-10-27 2013-11-12 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US9144060B2 (en) 2005-10-27 2015-09-22 Qualcomm Incorporated Resource allocation for shared signaling channels
US9225488B2 (en) 2005-10-27 2015-12-29 Qualcomm Incorporated Shared signaling channel
US9088384B2 (en) 2005-10-27 2015-07-21 Qualcomm Incorporated Pilot symbol transmission in wireless communication systems
US8045512B2 (en) 2005-10-27 2011-10-25 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US9225416B2 (en) 2005-10-27 2015-12-29 Qualcomm Incorporated Varied signaling channels for a reverse link 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
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
EP2055050A1 (de) * 2006-07-27 2009-05-06 University Of Florida Research Foundation, Inc. Dynamische baum-bitmap für ip-suche und -aktualisierung
US7689889B2 (en) 2006-08-24 2010-03-30 Cisco Technology, Inc. Content addressable memory entry coding for error detection and correction
WO2008024971A1 (en) * 2006-08-25 2008-02-28 University Of Florida Research Foundation Inc. Recursively partioned static ip router tables
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
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
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
US8028090B2 (en) 2008-11-17 2011-09-27 Amazon Technologies, Inc. Request routing utilizing client location information
US7991910B2 (en) 2008-11-17 2011-08-02 Amazon Technologies, Inc. Updating routing information based on client location
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
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US8321568B2 (en) 2008-03-31 2012-11-27 Amazon Technologies, Inc. Content management
US7962597B2 (en) 2008-03-31 2011-06-14 Amazon Technologies, Inc. Request routing based on class
US7970820B1 (en) 2008-03-31 2011-06-28 Amazon Technologies, Inc. Locality based content distribution
US8533293B1 (en) 2008-03-31 2013-09-10 Amazon Technologies, Inc. Client side cache management
US8447831B1 (en) 2008-03-31 2013-05-21 Amazon Technologies, Inc. Incentive driven content delivery
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
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US9912740B2 (en) 2008-06-30 2018-03-06 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 삼성전자주식회사 경량진동체를 구비한 초음파 모터
US8286176B1 (en) 2008-09-29 2012-10-09 Amazon Technologies, Inc. Optimizing resource configurations
US8051166B1 (en) 2008-09-29 2011-11-01 Amazon Technologies, Inc. Service provider optimization of content management
US8122124B1 (en) 2008-09-29 2012-02-21 Amazon Technologies, Inc. Monitoring performance and operation of data exchanges
US8117306B1 (en) 2008-09-29 2012-02-14 Amazon Technologies, Inc. Optimizing content management
US7930393B1 (en) 2008-09-29 2011-04-19 Amazon Technologies, Inc. Monitoring domain allocation performance
US8316124B1 (en) 2008-09-29 2012-11-20 Amazon Technologies, Inc. Managing network data display
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
US7961734B2 (en) * 2008-09-30 2011-06-14 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
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
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US8798057B1 (en) 2008-09-30 2014-08-05 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
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
US8645177B2 (en) 2008-10-01 2014-02-04 Accenture Global Services Limited Single step flight schedule optimization
US8122098B1 (en) 2008-11-17 2012-02-21 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US8732309B1 (en) 2008-11-17 2014-05-20 Amazon Technologies, Inc. Request routing utilizing cost information
US8060616B1 (en) 2008-11-17 2011-11-15 Amazon Technologies, Inc. Managing CDN registration by a storage provider
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
US8065417B1 (en) 2008-11-17 2011-11-22 Amazon Technologies, Inc. Service provider registration by a content broker
US8255496B2 (en) 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
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
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US7917618B1 (en) * 2009-03-24 2011-03-29 Amazon Technologies, Inc. Monitoring web site content
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
US8688837B1 (en) 2009-03-27 2014-04-01 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
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
US8331371B2 (en) 2009-12-17 2012-12-11 Amazon Technologies, Inc. Distributed routing architecture
US8331370B2 (en) 2009-12-17 2012-12-11 Amazon Technologies, Inc. Distributed routing architecture
US8325730B2 (en) * 2009-12-17 2012-12-04 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
US8468247B1 (en) 2010-09-28 2013-06-18 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
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US8938526B1 (en) 2010-09-28 2015-01-20 Amazon Technologies, Inc. Request routing management based on network components
US8577992B1 (en) 2010-09-28 2013-11-05 Amazon Technologies, Inc. Request routing management based on network components
US8819283B2 (en) 2010-09-28 2014-08-26 Amazon Technologies, Inc. Request routing in a networked environment
US8930513B1 (en) 2010-09-28 2015-01-06 Amazon Technologies, Inc. Latency measurement in resource requests
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US10097398B1 (en) 2010-09-28 2018-10-09 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
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US8667501B2 (en) 2011-08-10 2014-03-04 International Business Machines Corporation Performing a local barrier operation
US9152661B1 (en) * 2011-10-21 2015-10-06 Applied Micro Circuits Corporation System and method for searching a data structure
US8898204B1 (en) * 2011-10-21 2014-11-25 Applied Micro Circuits Corporation System and method for controlling updates of 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
US9135048B2 (en) 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage
US9323577B2 (en) 2012-09-20 2016-04-26 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
EP3014482B1 (de) * 2013-06-28 2018-03-07 Khalifa University of Science, Technology and Research Verfahren und system zum suchen und speichern von daten
US9715525B2 (en) 2013-06-28 2017-07-25 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 华为技术有限公司 一种消息访存的编译方法及相关装置
EP3145134B1 (de) 2014-06-10 2019-12-18 Huawei Technologies Co., Ltd. Umsetzungsvorrichtung und umsetzungskonfigurationsverfahren
CN104090942A (zh) * 2014-06-30 2014-10-08 中国电子科技集团公司第三十二研究所 应用于网络处理器中的Trie搜索方法及装置
CN104063507B (zh) * 2014-07-09 2017-10-17 时趣互动(北京)科技有限公司 一种图计算方法及系统
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
US10033627B1 (en) 2014-12-18 2018-07-24 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
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887932B1 (en) 2015-03-30 2018-02-06 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
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
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
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US11212297B2 (en) * 2016-06-17 2021-12-28 Nippon Telegraph And Telephone Corporation Access classification device, access classification method, and recording medium
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
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
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
CN111373389B (zh) * 2017-11-20 2023-11-17 华为技术有限公司 数据存储系统以及用于提供数据存储系统的方法
WO2019098871A1 (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
ATE210856T1 (de) * 1994-06-06 2001-12-15 Nokia Networks Oy Verfahren zum daten speichern und daten wiederfinden und eine speicheranordnung
WO1996000945A1 (en) * 1994-06-30 1996-01-11 International Business Machines Corp. Variable length data sequence matching method and apparatus
JP3152868B2 (ja) 1994-11-16 2001-04-03 富士通株式会社 検索装置および辞書/テキスト検索方法
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
US7433871B2 (en) * 2002-02-14 2008-10-07 Transwitch Corporation Efficient ipv4/ipv6 best matching prefix method and apparatus
US20030152092A1 (en) * 2002-02-14 2003-08-14 Kai Lu Multilevel hierarchical addressing and routing mechanism for high-speed internet
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
US7349415B2 (en) 2008-03-25
EP1510046B1 (de) 2006-05-03
US7352739B1 (en) 2008-04-01
US7613134B2 (en) 2009-11-03
ATE360312T1 (de) 2007-05-15
AU2003214223B2 (en) 2008-03-20
EP1510046A1 (de) 2005-03-02
DE60322756D1 (de) 2008-09-18
AU2003214223A1 (en) 2003-12-19
US20050157712A1 (en) 2005-07-21
WO2003103240A1 (en) 2003-12-11
DE60313371D1 (de) 2007-05-31
CN100465947C (zh) 2009-03-04
US20080181139A1 (en) 2008-07-31
EP1808987B1 (de) 2008-08-06
DE60305035T2 (de) 2006-11-23
US7899067B2 (en) 2011-03-01
ATE325488T1 (de) 2006-06-15
US20040008634A1 (en) 2004-01-15
CA2484446A1 (en) 2003-12-11
DE60305035D1 (de) 2006-06-08
EP1808987A1 (de) 2007-07-18
CN1462004A (zh) 2003-12-17
ATE404007T1 (de) 2008-08-15
EP1605646B1 (de) 2007-04-18
EP1605646A1 (de) 2005-12-14

Similar Documents

Publication Publication Date Title
DE60313371T2 (de) Verwendung von baumartigen "Bitmap" Datenstrukturen
DE69838180T2 (de) Verfahren und rechnerprogrammprodukt zur klassifizierung von in einem netzwerkstack verarbeiteten netzübertragungspaketen
DE60131596T2 (de) Stapelbare Sucheinrichtung
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE69934644T2 (de) Netzwerkvermittlungseinrichtung mit auf der Basis von Benutzung verteilten Umleitungsdatenbanken
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
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
DE60008102T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE60026676T2 (de) Paketklassifizierungsautomat
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE69829645T2 (de) Verfahren zur Änderung von dynamischen Entscheidungsbäume
DE19747583B4 (de) Kommunikationssystem und Verfahren
DE10028563B4 (de) Kommunikationssteuerungseinheit
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE10058443A1 (de) Verfahren zum Klassifizieren von Datenpaketen
DE19860120B4 (de) Routensuchschaltung und diese verwendende Kommunikationsvorrichtung
DE102005013301A1 (de) Verteiltes Datenmodell
DE102021209768A1 (de) Kuckucks- hashing umfassend das zugreifen auf hashtabellen unter verwendung einer affinitätstabelle
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
EP1162789A1 (de) Verfahren zur Verwaltung von Pfadinformationen und deren Änderungen in einem MPLS-Netzwerk

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M