DE10085387T5 - Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung - Google Patents

Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung Download PDF

Info

Publication number
DE10085387T5
DE10085387T5 DE2000185387 DE10085387T DE10085387T5 DE 10085387 T5 DE10085387 T5 DE 10085387T5 DE 2000185387 DE2000185387 DE 2000185387 DE 10085387 T DE10085387 T DE 10085387T DE 10085387 T5 DE10085387 T5 DE 10085387T5
Authority
DE
Germany
Prior art keywords
subtree
mapper
lookup
key
saved
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.)
Withdrawn
Application number
DE2000185387
Other languages
English (en)
Inventor
David A. Carp Brown
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.)
Mosaid Technologies Inc
Original Assignee
Mosaid Technologies 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 Mosaid Technologies Inc filed Critical Mosaid Technologies Inc
Publication of DE10085387T5 publication Critical patent/DE10085387T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • 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/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • 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/7453Address table lookup; Address filtering using hashing
    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Abstract

Nachschlagetabelle, umfassend:
eine erste Nachschlageeinheit, welche einen Schlüssel empfängt und ein erstes Ergebnis durch eine Mehrstufensuche in der ersten Nachschlageeinheit bereitstellt; und
eine zweite Nachschlageeinheit, welche den Schlüssel empfängt und ein zweites Ergebnis durch eine Mehrstufensuche in der zweiten Nachschlageeinheit bereitstellt, wobei sowohl die erste Nachschlageeinheit als auch die zweite Nachschlageeinheit den Schlüssel parallel empfangen und nur eine der Einheiten ein Endergebnis für den Schlüssel bereitstellt, welches nur in einer der Nachschlageeinheiten in Abhängigkeit von dem ersten Ergebnis und dem zweiten Ergebnis gespeichert wird.

Description

  • HINTERGRUND DER ERFINDUNG
  • Das Internet ist eine Reihe von Netzwerken, welche durch Router verbunden sind. Ein Router unterhält eine Routentabelle, welche für jedes mögliche Zielnetzwerk den nächsten Sprung anzeigt, zu welchem ein empfangenes Datenpaket weitergeleitet werden soll. Der nächste Sprung kann ein anderer Router oder das Endziel sein.
  • Ein Internetprotokoll ("IP")-Datenpaket, welches an einem Port in einem Router empfangen wird, enthält eine IP-Zieladresse. Die IP-Zieladresse ist das Endziel des IP-Datenpakets. Gegenwärtig gibt es zwei Versionen von IP, und zwar IP-Version 4 ("IPv4") und IP-Version 6 ("IPv6"). Die IPv4 stellt ein 32-Bit-Feld in einem IP-Header, welcher im Datenpaket enthalten ist, zum Speichern der IP-Zieladresse bereit. Der Router leitet ein empfangenes Datenpaket verbunden an einen Folgeschleifen-Router oder die Zieladresse weiter, wenn das Ziel das örtliche Netzwerk ist, in Abhängigkeit von der IP-Zieladresse, welche im IP-Header gespeichert ist.
  • Eine 32-Bit-IPv4-Zieladresse stellt 4 Milliarden mögliche Routen bereit. Ein Internet-Router speichert normalerweise 50.000 der 4 Milliarden möglichen Routen. Die Anzahl von gespeicherten Routen nimmt jedoch mit dem Wachstum des Internets und der weitverbreiteten Verwendung von IPv6 zu.
  • Ursprünglich war der IP-Adreßraum in drei Klassen von IP-Adressen unterteilt; und zwar A, B und C. Jeder IP-Adreßraum war in eine Netzwerkadresse und eine Host-Adresse untereilt. Klasse A berücksichtigte 126 Netzwerke und 16 Milliarden Hosts pro Netzwerk. Klasse B berücksichtigte 16.382 Netzwerke mit 64.000 Hosts pro Netzwerk und Klasse C berücksichtigte 2 Millionen Netzwerke mit 256 Hosts pro Netzwerk. Das Unterteilen des IP-Adreßraums in verschiedene Klassen verringerte jedoch die Anzahl von verfügbaren IP-Adressen. Klasse C erlaubte nur ein Maximum von 256 Hosts pro Netzwerk, was für die meisten Organisationen zu wenig ist. Daher wurde den meisten Organisationen eine Adresse der Klasse B zugeteilt, welche 64.000 Host-Adressen aufnahm, die nicht durch andere Organisationen verwendet werden konnten, selbst wenn sie durch die Organisation, der sie zugeteilt waren, nicht verwendet wurden. Hosts in einer Organisation mit einer IP-Adresse der Klasse B speichern alle dieselbe Netzwerkadresse in den 16 höchstwertigen Bits ("MBSs", nach Engl. Most Significant Bits), zum Beispiel 27.32.xx.xx.
  • Klassenloses InterDomain-Routing ("CIDR") wurde eingeführt, um nicht verwendete IP-Hostadressen verfügbar zu machen. Die restlichen unbenutzten Netzwerke werden Organisationen in Blöcken veränderlicher Größe zugeordnet. Eine Organisation, welche 500 Adressen benötigt, bekommt 500 kontinuierliche Adressen. Zum Beispiel können einer Organisation 500 verfügbare Adressen zugeordnet werden, welche bei 128.32.xx beginnen. Die Anzahl von Routen, welche durch einen Router gespeichert werden, nahm seit der Einführung des klassenlosen InterDomain-Routings zu. Klassenloses InterDomain-Routing erfordert längste Präfixübereinstimmung, um die entsprechende Route zu finden, anstelle des Suchens nach einer übereinstimmenden Netzwerkadresse, um den entsprechenden nächsten Sprung für die IP-Zieladresse zu finden. Zum Beispiel kann eine Suche nach den 16 MBSs einer IP-Adresse der Klasse B, zum Beispiel 128.xx.xx, nicht mehr eingestellt werden, da 128.32.4.xx einer anderen Organisation zugeteilt sein kann, welche einen anderen nächsten Sprung erfordert.
  • Ein Verfahren zur Suche nach einer längsten Präfixübereinstimmung für einen Schlüssel ist durch die Verwendung einer Binärbaumsuche. Eine Binärbaumsuche gleicht eine 32-Bit-Eingabe bitweise mit 32 Stufen ab, wobei 32 Suchen erforderlich sind, um die Eingabe zu finden, welche mit dem 32-Bit-Schlüssel übereinstimmt. Ein anderes Verfahren zur Suche nach einer Übereinstimmung ist durch die Verwendung eines Patricia-Baumes. Ein Patricia-Baum verringert die Anzahl von Suchen, welche erforderlich sind, wenn es keine Eingaben unter einem Blatt des Binärbaums gibt.
  • Ein weiteres Verfahren zum wirksamen Suchen nach einem nächsten Sprung, welcher mit einer IP-Zieladresse verbunden ist, wird in der PCT-Anmeldung Serie Nummer PCT/SE98/00854 mit dem Titel "Method and Systems for Fast Routing Lookups" durch Brodnick et al., eingereicht am 11. Mai 1998, beschrieben. Das Verfahren, welches durch Brodnick beschrieben wird, verringert die Anzahl von nächsten Sprüngen, welche gespeichert werden, durch Nichtspeichern von Duplikatrouten. Durch Verringern der Anzahl von nächsten Sprüngen wird der Speicherplatzbedarf verringert, so daß eine Routen-Nachschlagetabelle in einem Cache-Schnellspeicher gespeichert werden kann.
  • Brodnick et al. unterteilt den Binärbaum in drei Stufen. Das Unterteilen des Binärbaums in 3 Stufen verringert die Anzahl von Suchen auf drei. Die indexierte Eingabe auf der ersten Stufe zeigt an, ob die Suche auf der ersten Stufe enden kann, wobei die Route von der Eingabe genommen wird, oder ob die Suche auf einer nachfolgenden Stufe unter Verwendung eines weiteren Abschnitts der IP-Zieladresse fortgesetzt werden muß.
  • 1A veranschaulicht eine 64-KB (65536)-Bitmap nach dem Stand der Technik, welche die erste Stufe eines Binärbaums darstellt. Eine 64-KB-Bitmap 30 stellt die Blätter oder Knoten 44 des Binärbaums bei Tiefe 16 mit einem Bit pro Knoten 44 dar. Die Bitmap ist in Bitmasken mit einer Länge von 16 unterteilt. Es sind 212 = 4.096 Bitmasken in der 64-KB-Bitmap vorhanden. Eine Bitmaske ist in 1A dargestellt. Ein Bit in der Bitmap 30 wird auf '1' gesetzt, wenn ein Teilbaum oder ein Routenindex in einem Feld von Zeigern, welche dem Knoten 44 entsprechen, gespeichert wird. Ein Bit in der Bitmap 30 wird auf '0' gesetzt, wenn der Knoten sich eine Routeneingabe mit einem vorhergehenden Knoten 44 teilt.
  • 1B veranschaulicht eine Nachschlagetabelle nach dem Stand der Technik, welche im Cache-Speicher realisiert ist. Die Nachschlagetabelle umfaßt ein Feld von Codewörtern 36, ein Feld von Basisindizes 34 und eine Map-Tabelle 40. Eine 32-Bit-IP-Adresse 38 ist ebenfalls in 1B dargestellt. Ein Codewort 46 wird in dem Feld von Codewörtern 36 für jede Bitmaske in der Bitmap 30 (1A) gespeichert. Das Codewort 46 umfaßt einen Sechs-Bit-Wert 46a und ein 10-Bit-Offset 46b. Ein Basisindex 42 wird in dem Feld von Basisindizes 34 für jede vier Codewörter 46 in dem Feld von Codewörtern 36 gespeichert.
  • Das Feld von Codewörtern 36, das Feld von Basisindizes 34 und die Map-Tabelle 40 werden verwendet, um einen Zeiger in einem Feld von Zeigern (nicht dargestellt) auszuwählen. Der Zeiger speichert einen Routenindex oder einen Index, um eine weitere Suche durchzuführen.
  • Eine Gruppe von Zeigern in dem Feld von Zeigern wird durch auswählen eines Codewortes 46 in dem Feld von Codewörtern 36 und eines Basisindexes 42 in dem Feld von Basisindizes 34 ausgewählt. Das Codewort 46 wird unter Verwendung der ersten 12 Bits 50 der IP-Adresse 38 ausgewählt. Der Basisindex 42 wird unter Verwendung der ersten 10 Bits 48 der IP-Adresse 38 ausgewählt. Der richtige Zeiger in der Gruppe von Zeigern wird unter Verwendung der Map-Tabelle 32 ausgewählt.
  • Der 10-Bit-Wert 46b in dem ausgewählten Codewort 36 ist ein Index zur Map-Tabelle 32. Die Map-Tabelle 32 bildet Bitzahlen innerhalb einer Bitmaske zu 4-Bit-Offsets ab. Das Offset spezifiziert den Zeiger innerhalb der ausgewählten Gruppe von Zeigern in dem Feld von Zeigern. Der 10-Bit-Wert 46b wählt die Reihe in der Map-Tabelle 32 aus und Bits 19:16 der IP-Adresse 52 wählt das 4-Bit-Offset 54 aus.
  • Infolgedessen erfordert eine Suche nach einem Zeiger die folgenden Cache-Speicherzugriffe: (1) ein 16-Bit-Codewort 46 lesen, (2) eine 16-Bit-Basisadresse 42 lesen; (3) ein 4-Bit-Offset 54 von der Map-Tabelle 32 ablesen; (4) einen Zeiger bei einem Zeigerindex lesen, wobei der Zeigerindex die Summe der Basisadresse 42, des Codewort-Offsets 46a und des 4-Bit-Offsets 54 ist.
  • Dieselben Speicherzugriffe sind für jede Stufe des Binärbaumes erforderlich. Infolgedessen erfordert ein Absuchen von drei Stufen 12 Speicherzugriffe.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Anwaltverzeichnis Nummer 2037.2004-001 mit dem Titel "Verfahren und Vorrichtung zur Adressuche längster Übereinstimmung" durch David A. Brown beschreibt eine Nachsclilagetabelle zum Durchführen von Mehrstufensuchen nach einem Wert, welcher einem Schlüssel entspricht. Die Anzahl von Routenindizes, welche in der Nachschlagetabelle gespeichert werden können, ist durch die Anzahl von Speicherstellen in der Nachschlagetabelle beschränkt.
  • Gemäß den Prinzipien der Erfindung wird eine Nachschlagetabelle vorgestellt, welche eine erste Nachschlageeinheit und eine zweite Nachschlageeinheit umfaßt. Die erste Nachschlageeinheit empfängt einen Schlüssel und stellt ein erstes Ergebnis durch eine Mehrstufensuche in der ersten Nachschlageeinheit bereit. Die zweite Nachschlageeinheit empfängt den Schlüssel und stellt ein zweites Ergebnis durch eine Mehrstufensuche in der zweiten Nachschlageeinheit bereit. Sowohl die erste Nachschlageeinheit als auch die zweite Nachschlageeinheit empfangen den Schlüssel parallel und nur eine der Einheiten stellt ein Endergebnis für den Schlüssel bereit, welcher nur in einer der Nachschlageeinheiten gespeichert wird, in Abhängigkeit von dem ersten Ergebnis und dem zweiten Ergebnis.
  • Die Endergebnisse werden unter den Tabellen in Abhängigkeit von der Gesamtzahl von Endergebnissen, welche in der Nachschlagetabelle zu speichern sind, verteilt. Der Schlüssel kann eine IP-Adresse sein und das Endergebnis ist ein Routenindex für die IP-Adresse.
  • Eine erste Speicherstelle in der ersten Nachschlageeinheit, welche durch den Schlüssel indexiert wird, speichert das Endergebnis und eine zweite Speicherstelle in der zweiten Nachschlageeinheit, welche durch den Schlüssel indexiert wird, speichert eine Anzeige, daß das Endergebnis in der ersten Nachschlageeinheit gespeichert wird. Jede der ersten Nachschlageeinheit und der zweiten Nachschlageeinheit umfaßt eine Mehrzahl von Mapper-Stufen und jede der Mapper-Stufen umfaßt Speicherstellen zum Speichern von Ergebnissen.
  • In einem Ausführungsbeispiel wird das Endergebnis, welches dem Schlüssel entspricht, der an einer Stelle in irgendeiner der Mehrzahl von Mapper-Stufen in der ersten Nachschlageeinheit gespeichert wird, an die zweite Nachschlageeinheit weitergeleitet und durch die Nachschlageeinheit bereitgestellt.
  • In einem alternativen Ausführungsbeispiel wird das Endergebnis, welches dem Schlüssel entspricht, durch die Nachschlageeinheit bereitgestellt, in welcher das Endergebnis gespeichert wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1A veranschaulicht eine Bitmap nach dem Stand der Technik zur Darstellung der ersten Stufe eines Binärbaumes;
  • 1B veranschaulicht eine Nachschlagetabelle nach dem Stand der Technik, welche im Cache-Speicher realisiert ist;
  • 2A veranschaulicht eine Präfixnachschlagetabelle längster Übereinstimmung gemäß den Prinzipien der vorliegenden Erfindung;
  • 2B veranschaulicht eine Binärbaumdarstellung der Routenindizes, welche in der Nachschlagetabelle, die in 2A dargestellt ist, gespeichert werden;
  • 3 veranschaulicht eine Präfixnachschlagetabelle längster Übereinstimmung für einen 40-Bit-Schlüssel gemäß den Prinzipien der vorliegenden Erfindung;
  • 4 veranschaulicht die Typen von Mapper-Eingaben, welche in dein direkt abgebildeten Mapper, der in 2A dargestellt ist, gespeichert werden können;
  • 5 veranschaulicht den Mapper, welcher den Knoten auf der Mapper-Stufe_2 112b, die in 2B dargestellt ist, entspricht;
  • 6A ist eine Binärbaumdarstellung eines Teilbaumes;
  • 6B veranschaulicht den dichtbesiedelten Teilbaum-Deskriptor, welcher in dem Datenfeld gespeichert wird, das in 5 dargestellt ist, und den Knoten auf der unteren Stufe des Teilbaumes entspricht, welcher in 6A dargestellt ist;
  • 7 veranschaulicht das Zeigerfeld, welches in 5 dargestellt ist;
  • 8 veranschaulicht die Mapper-Adreßlogik, welche in 5 dargestellt ist;
  • 9 ist ein Ablaufdiagramm, welches die Schritte zur Suche nach der längsten Übereinstimmung veranschaulicht;
  • 10A veranschaulicht ein Ausführungsbeispiel zur Bereitstellung von Tiefenerweiterung;
  • 10B veranschaulicht eine von Nachschlagetabellen in dem Ausführungsbeispiel, welches in 10A dargestellt ist;
  • 10C veranschaulicht ein anderes Ausführungsbeispiel zur Bereitstellung von Tiefenerweiterung, um die Anzahl von Mapper-Eingaben, welche zum Speichern von Werten verfügbar sind, zu erhöhen;
  • 10D veranschaulicht die Nebennachschlagetabelle in dem Ausführungsbeispiel, welches in 10C dargestellt ist;
  • 11–B veranschaulichen eine Binärbaumdarstellung der Verteilung der Knoten in der Binärbaumdarstellung von Routenindizes, welche in 2B dargestellt sind, unter den Mapper-Eingaben in den Nachschlagetabellen, welche in 10A und 10C dargestellt sind;
  • 12 ist ein Ablaufdiagramm, welches ein Verfahren zur Verteilung von Werten unter den Mapper-Eingaben in den Nachschlagetabellen, die in 10A und 10C dargestellt sind, veranschaulicht;
  • 13 ist ein Ablaufdiagramm, welches ein Verfahren zur Suche nach einem Wert veranschaulicht, der einem Suchschlüssel entspricht, welcher in einer von Mapper-Eingaben in den Nachschlagetabellen gespeichert ist, die in 10C dargestellt sind;
  • 14 ist ein Ablaufdiagramm, welches ein Verfahren zur Suche nach einem Wert veranschaulicht, der einem Suchschlüssel entspricht, welcher in einer der Mapper-Eingaben in den Nachschlagetabellen gespeichert ist, die in 10A dargestellt sind;
  • 15 veranschaulicht eine Binärbaumdarstellung eines dünnbesiedelten Teilbaumes und eines dichtbesiedelten Teilbaumes auf der zweiten Mapper-Stufe, welche durch die erste Mapper-Stufe indexiert wird;
  • 16A–C veranschaulichen die Abänderung des Datenfeldes und des Zeigerfeldes in der Teilbaumeingabe, welche in 5 dargestellt ist, und der Teilbaumeingabe, welche in 4 dargestellt ist, um die Speicherung einer Mehrzahl von dünnbesiedelten Teilbaum-Deskriptoren in der Teilbaumeingabe zu erlauben;
  • 17 veranschaulicht die Teilbaum-Logik des dünnbesiedelten Modus in der Offset-Logik, welche in 8 dargestellt ist, um ein Block-Offset für einen Knoten in einem dünnbesiedelten Teilbaum auszuwählen;
  • 18 veranschaulicht die Logik des dünnbesiedelten Modus, welche in der Offset-Logik in 17 dargestellt ist;
  • 19A–D veranschaulichen die Auswahl eines Block-Offsets für einen Knoten in einem dünnbesiedelten Teilbaum;
  • 20 ist ein Blockdiagramm, welches die Basisauswahl-Logik des dünnbesiedelten Modus in der Zeigerlogik, die in 8 dargestellt ist, veranschaulicht;
  • 21 veranschaulicht einen dichtbesiedelten Teilbaum-Deskriptor und einen dünnbesiedelten Teilbaum-Deskriptor, welche im Teilbaumspeicher gespeichert sind;
  • 22 ist ein Ablaufdiagramm, welches ein Verfahren zur Bereitstellung einer Mapper-Adresse für eine Mapper-Eingabe in einem Teilbaum-Mapper veranschaulicht, welcher eine Route für einen Knoten in einem dünnbesiedelten Teilbaum und einem dichtbesiedelten Teilbaum speichert;
  • 23 veranschaulicht eine Binärbaumdarstellung einer neuen Route, welche zur Nachschlagetabelle zu addieren ist;
  • 24 veranschaulicht Aktualisierungsrouten, welche in einem Prozessorspeicher gespeichert werden;
  • 25 veranschaulicht die neue Route, welche in 23 dargestellt ist und in der Nachschlagetabelle gespeichert wird;
  • 26 ist ein Ablaufgramm, welches die Schritte zum Addieren der neuen Route zur Nachschlagetabelle, welche in 25 dargestellt ist, veranschaulicht.
  • Die vorhergehenden und andere Aufgaben, Merkmale und Vorteile der Erfindung sind ersichtlich aus der anschließenden ausführlicheren Beschreibung von bevorzugten Ausführungsbeispielen der Erfindung, wie in den beiliegenden Zeichnungen veranschaulicht, in welchen ähnliche Bezugszeichen dieselben Teile durch die verschiedenen Ansichten hindurch bezeichnen. Die Zeichnungen sind nicht unbedingt maßstabsgerecht, sondern das Hauptaugenmerk wird auf die Veranschaulichung der Prinzipien der Erfindung gelegt.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Es folgt eine Beschreibung von bevorzugten Ausführungsbeispielen der Erfindung.
  • Dichtbesiedelter Modus
  • 2A veranschaulicht eine Präfixnachschlagetabelle 100 längster Übereinstimmung gemäß den Prinzipien der vorliegenden Erfindung. Die Nachschlagetabelle 100 stellt einen Routenindex 102 für einen Schlüssel 104 bereit. Der Routenindex 102 wird verwendet, um auf den nächsten Sprung für die IP-Zieladresse zuzugreifen. In dem Ausführungsbeispiel, welches in 2A dargestellt ist, ist der Schlüssel 104 zwar 32 Bits breit, ist der Schlüssel 104 jedoch nicht auf 32 Bits beschränkt. Die Nachschlagetabelle 100 umfaßt drei Mapper 106a–c. Jeder Mapper 106a–c umfaßt einen getrennt adressierbaren Speicher. Der Routenindex 102 oder ein Standardroutenindex, welcher dem Schlüssel 104 entspricht, wird an einer Stelle in einem der Mapper 106a–c gespeichert. Die Mapper-Ausgaben 110a–c von jedem Mapper werden in einem Verzögerungsspeicher 150a–c gespeichert, bis auf alle Mapper 106a–c für den Schlüssel zugegriffen wurde, wenn mehrfache Mapper abgesucht werden müssen.
  • Der Multiplexer 108 wählt eine der Mapper-Ausgaben 110a–c, welche zu den Eingängen des Multiplexers 108 weitergeleitet werden, als den Routenindex 102 aus. Die Mapper-Ausgabe 110a–c wird in Abhängigkeit vom höchstwertigen Bit ("MSB", nach Engl. Most Important Bit) der Mapper-Ausgabe 110a–c ausgewählt. Das MSB der Mapper-Ausgabe 110a–c ist nur dann '1', wenn die Mapper-Ausgabe 110a–c einen Routenindex 102 beinhaltet.
  • 2B veranschaulicht eine Binärbaumdarstellung der Eingaben, welche in den Mappern 106a–c in der Nachschlagetabelle 100, welche in 2A dargestellt ist, gespeichert werden. 2B wird in Verbindung mit 2A beschrieben. Der 32-Bit-Schlüssel 104 kann als ein Binärbaum mit 32 Stufen dargestellt werden. Eine Binärbaumrealisierung erfordert 32 Suchen, um bitweise 32 Stufen abzusuchen. Um die Anzahl von Suchen zu verringern, werden die 32 Stufen des Binärbaumes in drei Mapper-Stufen 112a–c unterteilt, wobei jede Mapper-Stufe 112a–c einem Mapper 106a–c (2A) entspricht. Die Mapper-StufeM1 112a enthält die ersten 16 der 32 Stufen des Binärbaumes. Der Einfachheit halber sind jedoch nur 5 der 16 Stufen in 2B dargestellt. Die Mapper-Stufe_2 112b enthält die nächsten 8 Stufen des 32-stufigen Binärbaumes, wobei drei der acht Stufen in 2B dargestellt sind. Die Mapper-Stufe_3 112c enthält die letzten 8 Stufen des 32-stufigen Binärbaumes, wobei drei der acht Stufen in 1B dargestellt sind. Jede Mapper-Stufe 112a–c umfaßt eine Mehrzahl von Knoten. Die 32 Stufen so zu unterteilen, daß 16 Stufen (16 MSBs des Schlüssels 104) auf der Mapper-Stufe_1 112a, 8 Stufen auf der Mapper-Stufe_2 112b und 8 Stufen auf der Mapper-Stufe_3 112c sind, scheint in der gegenwärtigen Speichertechnologie optimal zu sein; die Erfindung ist jedoch nicht auf diese Konfiguration beschränkt.
  • Anstatt 16 getrennte bitweise Suchen nach den ersten 16 Bits des Schlüssels 104 durchzuführen, werden die Routenindizes 102, welche mit den ersten 16 Bits des Schlüssels 104 verbunden sind, im Mapper 106a (2A) gespeichert. Der Mapper 106a (2A) wird mit den ersten 16 MSBs-Bits des Schlüssels 104 direkt indexiert. Der nächste Mapper 106b wird abgesucht in Abhängigkeit davon, ob der vorhergehende Mapper 106a den Routenindex 102 speichert, welcher verwendet wird, um auf die nächste Sprunginformation, die mit dem Schlüssel 104 verbunden ist, zuzugreifen.
  • Wie in 2B dargestellt, umfassen die Knoten oder Blätter, welche auf der Mapper-Stufe_1 112a dargestellt sind, zwei Routen 114, 116, welche mit r0 bzw. s1 gekennzeichnet sind, und zwei Zeiger 1304 und 13023 zu Mapper-Stufe_2 112b, welche mit s0 bzw. s1 gekennzeichnet sind. Ein Routenindex 102 für jede Route 114, 116 wird im L1-Mapper 106a gespeichert. Ebenso wird ein Adreßzeiger 120 für den L2-Mapper 106b für den Teilbaumindex 1304 gespeichert und wird ein Adreßzeiger (nicht dargestellt) für den L2-Mapper 106b für den Teilbaum 13023 gespeichert. Ein Adreßzeiger 120, welcher für den Teilbaumindex 1304 in der Mapper-Eingabe 1404 im Mapper 106a gespeichert wird, zeigt an, daß ein Absuchen der nächsten Stufe notwendig ist, um einen Routenindex 102, welcher mit dem Schlüssel 104 verbunden ist, zu finden.
  • Der Wert irgendeines Knotens im Baum kann durch Verfolgen eines Pfades von der Wurzel 114 bestimmt werden. Jeder Knoten im Binärbaum ist mit zwei Nachfolgern dargestellt, einem rechten Nachfolger und einem linken Nachfolger. Der rechte Nachfolger wird gewählt, wenn der Vorgängerknoten '1' ist. Der linke Nachfolger wird gewählt, wenn der Vorgängerknoten '0' ist. Bei Verfolgen des Pfades von der Wurzel 114 zum Knoten wird r1 als der Routenindex 102 im L1-Mapper 106a für alle Schlüssel mit den MSBs auf '010' gesetzt gespeichert. Bei Verfolgen des Pfades vom Wurzelknoten 114 zum s0-Knoten 1304 wird s0 im L1-Mapper 106a für alle Schlüssel mit den MSBs auf '00011' gesetzt gespeichert.
  • Der L1-Mapper 106a ist ein direkt abgebildeter Mapper und speichert einen Routenindex 102 für jeden/s Unterstufen-Knoten oder -Blatt auf der unteren Stufe der Mapper-Stufe_1 112a. Die untere Stufe der Mapper-Stufe_1 112a ist die sechzehnte Stufe des 32-stufigen Binärbaumes. Die sechzehnte Stufe weist 64-KB-Knoten auf. Zum Zwecke der Veranschaulichung ist die untere Stufe der Mapper-Stufe_1 112a jedoch als Stufe 5 des 32-stufigen Binärbaumes dargestellt. Die Routenindizes 102, welche im L1-Mapper 106a dargestellt sind, entsprechen den Knoten 1301–13032 von Stufe 5 der Mapper-Stufe_1 112a. Bei Verfolgen des Pfades vom Wurzelknoten 114 zu den Knoten 1301 , 1302 , 1303 der Stufe 5 ist der Routenindex 102 r0. Infolgedessen wird r0 an den Stellen 1401 , 1402 , 1403 des L1-Mappers 106a gespeichert; das heißt, bei Index 00000, 00001 und 00010. Knoten 1304 speichert einen Teilbaumindex s0, weshalb s0 an der Stelle 1404 im L1-Mapper 106a bei Adresse 00011 gespeichert wird. Auf ähnliche Weise ist der Routenindex 102 für die Knoten 1305-1308 Stufe 5 r0, weshalb die Stellen 1405 , 1406 , 1407 , 1408 bei den Adressen 00100, 00101, 00110 und 00111 im L1-Mapper 106a r0 speichern. Der Routenindex 102 für die Knoten 1309–13012 der Stufe 5 ist r1, weshalb die Stellen 1409 , 14010 bei den Adressen 01000 und 010001 im L1-Mapper 106a r1 speichern.
  • Jede Stelle im L1-Mapper 106a speichert einen Routenindex 102, welcher dem Knoten 3001 30032 der Stufe 5 direkt oder durch einen Vorgänger des Knotens 3001–32 der Stufe 5 oder einen Adreßzeiger zum nächsten Mapper 106b–c zugeteilt ist. Die Mapper-Stufe_3 106c umfaßt zwei Host-Knoten h0 bei Knoten 138 und h1 bei Knoten 140 auf der unteren Stufe des 32-stufigen Binärbaumes. Eine Suche nach einem Host-Knoten erfordert ein Absuchen aller Bits des Schlüssels 104. Wie in 2A dargestellt, wird der Routenindex 102 für h0 an der Stelle 1464 im L3-Mapper 106c gespeichert. Im Gegensatz zum L1-Mapper 106a werden der L2-Mapper 106b und der L3-Mapper 106c nicht direkt abgebildet.
  • In den Mappern 106b und 106c wird ein Routenindex 102 nicht für jede mögliche Eingabe gespeichert. Ein Routenindex 102 wird nur gespeichert, wenn der Routenindex 102 für den Knoten sich von dem zuvor gespeicherten Routenindex 102 im Mapper 106b–c unterscheidet. Bei Betrachten der Knoten der Stufe 3 im ersten Teilbaumn A, welcher auf der Mapper-Stufe_2 112b dargestellt ist, ist der Routenindex 102 für den Knoten 1321 und Knoten 1322 r0, weshalb ein Routenindex für r0 an der Stelle 1421 sowohl für den Knoten 1321 als auch den Knoten 1322 im L2-Mapper 106b gespeichert wird. Ein Teilbaumindex s0 für den Knoten 1322 wird an der Stelle 1422 gespeichert. Der Routenindex 102, welcher mit dem Knoten 1324 der Stufe 3 und den Knoten 1325 und 1326 der Stufe 3 verbinden ist, ist r0, welcher sich vom s0, welcher für den vorhergehenden Knoten 1322 gespeichert wurde, unterscheidet, weshalb r0 an der nächsten Stelle 1423 im L2-Mapper 106b gespeichert wird. Die Route r2 wird an der Stelle 1424 im L2-Mapper 106b für den Knoten 1327 gespeichert, da der Knoten 1327 nicht dieselbe Route benutzt wie der vorhergehende Knoten 1326 . Der Teilbaumindex s3 wird für den nächsten Knoten 132 der Stufe 3 gespeichert, weshalb s3 an der Stelle 1425 im L2-Mapper 106b gespeichert wird. Dadurch, daß ein Routenindex nur gespeichert wird, wenn es eine Routenänderung von dem vorhergehenden Knoten gibt, wird der Speicher, welcher zum Speichern von Routenindizes 102 erforderlich ist, verringert. Wie dargestellt, werden nur fünf Stellen im L2-Mapper 106b zum Speichern von Routenindizes für die acht Knoten 1321–8 der Stufe 3 im ersten Teilbaum A auf der Mapper-Stufe_2 112b benötigt. Der nicht direkt abgebildete Mapper 1066, 106c wird später in Verbindung mit 5 ausführlicher beschrieben.
  • 3 veranschaulicht eine Präfixnachschlagetabelle 200 längster Übereinstimmung für einen 40-Bit-Schlüssel 210 gemäß den Prinzipien der vorliegenden Erfindung. In einem Ausführungsbeispiel umfaßt der 40-Bit-Schlüssel ein 8-Bit-Präfix und eine 32-Bit-IP-Adresse. Das 8-Bit-Präfix kann ein Identifikator für ein virtuelles Privatnetz ("VPN") sein, welcher mit der 32-Bit-IP-Adresse verbunden ist. Die Nachschlagetabelle 200 umfaßt vier Mapper 106a–d. Der Mapper 106a ist ein direkt abgebildeter Mapper, wie in Verbindung mit 2A beschrieben. Die Mapper 106a–d sind indirekte Mapper. Der Mapper 106a speichert einen Routenindex 102 oder einen Teilbaumindex für den L2-Mapper 106b, welcher den 16 MSBs des 40-Bit-Schlüssels 210 entspricht. Infolgedessen weist der L1-Mapper 64 KB möglicher Stellen, eine für jeden 64-KB-Knoten auf der ersten Mapper-Stufe 112a (2B), auf. Die Eingabedaten 220a des L1-Mappers, welche an der entsprechenden Stelle im L1-Mapper 106a gespeichert werden, werden an ein Fließband 208 und den indirekten L2-Mapper 106b weitergeleitet. Wenn die Eingabedaten 220a des L1-Mappers anzeigen, daß ein Absuchen der nächsten Stufe unter Verwendung der nächsten acht Bits des Schlüssels 210b erforderlich ist, wird eine Suche im indirekten L2-Mapper 106b in Abhängigkeit von den nächsten acht Bits des Schlüssels 210b und der Eingabedaten 220a des L1-Mappers durchgeführt.
  • Das Ergebnis der Suche auf der zweiten Stufe wird auf den Eingabedaten 220b des L2-Mappers bereitgestellt, welche an das Fließband 208 und den indirekten L3-Mapper 106c weitergeleitet werden. Eine Suche auf der dritten Stufe wird im indirekten L3-Mapper 106c in Abhängigkeit von den nächsten acht Bits des Schlüssels 210c und den Eingabedaten 220b des L2-Mappers durchgeführt.
  • Das Ergebnis der Suche wird auf den Eingabedaten 220c des L3-Mappers bereitgestellt, welche an das Fließband 208 und den indirekten L4-Mapper 106d weitergeleitet werden. Die Eingabedaten 220c des L3-Mappers bestimmen, ob eine vierte Suche im indirekten L4-Mapper 106d in Abhängigkeit von den letzten acht Bits des Schlüssels 210d und den Eingabedaten 220c des L3-Mappers durchgeführt wird.
  • Das Ergebnis der vierten Suche wird auf den Eingabedaten 220d des L4-Mappers bereitgestellt. Der Routenindex 102, welcher mit dem Präfix längster Übereinstimmung für den Schlüssel 210 verbunden ist, wird nur an einer Stelle in einem der Mapper 106a–d gespeichert. Infolgedessen ist der Routenindex 102, welcher an das Fließband 208 weitergeleitet, nur in einer der Mapper-Eingabedaten 220a–d enthalten. Wenn der Routenindex 102 in einem der Mapper 106a–d, zum Beispiel Mapper 106b, gefunden wird, ist ein Absuchen der restlichen Mapper 106c–d nicht notwendig, und es wird nicht auf die Mapper 106c–d zugegriffen. Das Fließband 208 umfaßt einen Multiplexer 108 (2a) zum Auswählen des Routenindexes 102, welcher in einer der Mapper-Eingabedaten 220a–d enthalten ist. Zum Beispiel kann das MSB der Mapper-Eingabedaten 220a–d eine Anzeige, ob ein Routenindex enthalten ist, bereitstellen.
  • Durch Verwenden eines Fließbandes 208 in Verbindung mit den Mappern 106a–d kann mehrfaches Absuchen der Präfixtabelle 20 längster Übereinstimmung mit verschiedenen Schlüsseln 210 parallel durchgeführt werden. Das Fließband 208 erlaubt es, daß mehrfaches Absuchen der 40-Bit-Nachschlagetabelle 200 parallel stattfindet, indem die Mapper-Eingabedaten 220a–d für jeden Mapper 106a–d, welcher mit dem 40-Bit-Schlüssel verbunden ist, gespeichert werden, bis ein Absuchen jedes der anderen Mapper 106a–d abgeschlossen ist, falls notwendig, um den Routenindex zu finden, welcher dem 40-Bit-Schüssel 210 entspricht. Infolgedessen wird eine Suchaufforderung nach einem Routenindex, welcher einer empfangenen IP-Adresse entspricht, durch Durchführen eines einzelnen Speicherzugriffs auf den direkt abgebildeten Mapper 106a an die Nachschlagetabelle 200 ausgegeben. Eine anschließende Suche nach einem Routenindex, welcher einem anderen Schlüssel entspricht, kann an die Nachschlagetabelle 200 im nächsten Speicherzugriffzyklus für den direkt abgebildeten Mapper 106a ausgegeben werden.
  • 4 veranschaulicht die Typen von Mapper-Eingaben, welche in dein direkt abgebildeten Mapper 106a, welcher in 3 dargestellt ist, gespeichert werden können. Eine Mapper-Eingabe für irgendeinen Knoten im Binärbaum, welcher in 2B dargestellt ist, kann eine Leereingabe 300, eine Routeneingabe 302 oder einen Teilbaumeingaben-Deskriptor 304 speichern. Jeder Typ von Mapper-Eingabe 300, 302, 304 umfaßt ein Teilbaum-Flag 306. Der Zustand des Teilbaum-Flags 306 zeigt an, ob die Mapper-Eingabe ein Teilbaumeingaben-Deskriptor 304 ist. Wenn das Teilbaum-Flag 306 auf '1' gesetzt wird, ist die Mapper-Eingabe ein Teilbaumeingaben-Deskriptor 304 und enthält einen Teilbaumindex 312. Der Teilbaumindex 312 ist die Adresse des Teilbaumeingaben-Deskriptors 304, welcher im nächsten nicht direkt abgebildeten Mapper 106b–d gespeichert wird. Die Teilbaumeingabe wird später in Verbindung mit 4 beschrieben. Wenn das Teilbaum-Flag 306 '0' ist, wird das Leereingabe-Flag 314 überprüft, um festzustellen, ob die Mapper-Eingabe eine Leereingabe 300 oder eine Routeneingabe 302 ist. Wenn das Leereingabe-Flag 314 '0' ist, ist die Eingabe eine Leereingabe 300. Wenn das Leereingabe-Flag 314 '1' ist, ist die Eingabe eine Routeneingabe 302 und speichert den Routenindex 102 (3), welcher mit dem Schlüssel 104 im Routenindexfeld 310 verbunden ist. Das Teilbaum-Flag 306 wird durch den Multiplexer 108 (2A) verwendet, um die Mapper-Eingabedaten 220a–d, welche den Routenindex 102 ( 3) enthalten, auszuwählen.
  • 5 veranschaulicht den Mapper 106b, welcher den Knoten auf der Mapper-Stufe_2 112b, welche in 2B dargestellt sind, entspricht. Der Mapper 106b umfaßt einen Teilbaumspeicher 400, eine Mapper-Adreßlogik 402 und einen Teilbaum-Mapper 418. Der Teilbaumindex 312, welcher durch den ersten Abschnitt des Schlüssels 210a, welcher im Mapper 106a gespeichert wird, ausgewählt wird, wird an den Teilbaumspeicher 400 weitergeleitet. Der Teilbaumspeicher 400 enthält eine Teilbaumeingabe 404, welche durch den Teilbaumindex 312 ausgewählt wird. Die Teilbaumeingabe 404 umfaßt ein Datenfeld 406 und ein Zeigerfeld 408.
  • Rückblickend auf 2B entspricht die Teilbaumeingabe 404 der unteren Stufe eines der Teilbäume, welche auf der Mapper-Stufe_2 112b dargestellt sind. Wenn die Mapper-Stufe_2 112b acht Stufen aufweist, weist die untere Stufe jedes Teilbaumes (nicht dargestellt) ein Maximum von 256 Routen, eine für jeden Knoten, auf.
  • Um wieder mit 5 fortzufahren, stellt die Teilbaumeingabe 404 Zugriff auf 256 mögliche Routenindizes 102 (3) bereit, welche jedem Knoten auf der unteren Stufe des Teilbaumes entsprechen. Die Routenindizes 102 (3) werden in dem Teilbaum-Mapper 418 gespeichert. Um Zugriff auf 256 mögliche Routenindizes bereitzustellen, wird ein dichtbesiedelter Teilbaum-Deskriptor in dem Datenfeld 406 gespeichert. Das Datenfeld 406 ist 256 Bits breit und stellt ein Bit für jeden Knoten auf der unteren Stufe des Teilbaumes bereit. Das Datenfeld 406 wird später in Verbindung mit 6A und 6B ausführlicher beschrieben. Das Zeigerfeld 408 ist 256 Bits breit, um die Speicherung von sechzehn 16-Bit-Zeigern zu berücksichtigen, wobei jeder Zeiger die Basisadresse für 16 benachbarte Mapper-Eingaben im Teilbaum-Mapper 418 speichert, um Zugriff auf 256 Routenindizes bereitzustellen. Infolgedessen kann das Zeigerfeld 408 indirekt einen Zeiger zu einer Mapper-Eingabe im Teilbaum-Mapper 418 für jeden Knoten auf der unteren Stufe des Teilbaumes bereitstellen. Das Zeigerfeld 408 wird in Verbindung mit 6 ausführlicher beschrieben.
  • Die Teilbaumdaten 412, welche im dichtbesiedelten Teilbaum-Deskriptor im Datenfeld 406 gespeichert werden, und der Teilbaumzeiger 414, welcher im Zeigerfeld 408 gespeichert wird, werden an die Mapper-Adreßlogik 402 weitergeleitet. Die Mapper-Adreßlogik 402 empfängt auch den nächsten Abschnitt des Schlüssels 210b (die nächsten acht Bits).
  • Die Mapper-Adreßlogik 402 bestimmt die Mapper-Adresse 416 der Mapper-Eingabe, welche mit dem Knoten auf der unteren Stufe des Teilbaumes verbinden ist, in Abhängigkeit von den nächsten acht Bits des Schlüssels 212b, den Teilbaumdaten 412 und den Teilbaumzeigern 414, welche mit dem Teilbaum verbunden sind. Die Mapper-Adresse 416 wählt die Mapper-Eingabe im Teilbaum-Mapper 418 aus. Der Teilbaum-Mapper 418 beinhaltet dieselben Typen von Mapper-Eingaben, wie in Verbindung mit 4 für den direkt abgebildeten Mapper 106a beschrieben. Der Inhalt der Mapper-Dateneingabe 220b bestimmt, ob eine nachfolgende Suche notwendig ist. Eine nachfolgende Suche ist erforderlich, wenn die Mapper-Eingabedaten 220b einen Teilbaumindex 312 (4) enthalten, welcher anzeigt, daß es eine andere Teilbaumeingabe 404 auf der nächsten Mapper-Stufe 112c (2B) gibt.
  • Der zweite Abschnitt des Schlüssels 210b wählt den Knoten auf der unteren Stufe des ausgewählten Teilbaumes aus. Der Teilbaumzeiger 414 wählt die Basisadresse aus, welche mit dem Knoten in dem Teilbaum verbunden ist, und die Teilbaumdaten 412 wählen das Offset innerhalb des Blocks von Mapper-Eingaben, welche mit der Basisadresse verbunden sind. Die Mapper-Adreßlogik 401 wird später in Verbindung mit 7 beschrieben.
  • 6A ist eine Binärbaumdarstellung eines Teilbaumes. Der dargestellte Teilbaum umfaßt 5 Stufen. Der Teilbaum umfaßt drei Routenindizes r1, r2 und r3 und zwei Teilbaumindizes s0 und s1. Es gibt 32 Knoten 5001–5002 auf der unteren Stufe des Teilbaumes. Der Routenindex oder Teilbaumindex, welcher mit jedem Knoten 5001–50032 auf der unteren Stufe verbunden ist, ist in der folgenden Tabelle dargestellt.
  • Figure 00150001
    Tabelle 1
  • 6B veranschaulicht den dichtbesiedelten Teilbaum-Deskriptor, welcher im Datenfeld 406 gespeichert wird, das in 5 dargestellt ist und den Knoten auf der unteren Stufe des Teilbaumes, welcher in 6A dargestellt sind, entspricht. Das Datenfeld 406 enthält 32 Bits, ein Bit für jeden Knoten 500 auf der unteren Stufe des Teilbaumes, welcher in 6A dargestellt ist. Die Bits 5001–50032 in dem Datenfeld 406 werden folgendemnaßen zugeteilt: ein Bit im Datenfeld 406 wird auf '0' gesetzt, wenn der Routenindex für den vorhergehenden Knoten zu verwenden ist, und wird auf '1' gesetzt, um die nächste Mapper-Adresseingabe zu erhöhen, wenn der nächste Routenindex, welcher im Teilbaum-Mapper 418 (5) gespeichert ist, zu verwenden ist. Das erste Bit im Datenfeld 402 wählt die Standardroute r0, welche in der Mapper-Eingabe 5041 gespeichert wird, sofern die Route nicht spezifiziert wird. Infolgedessen wird das Bit 502' auf '0' gesetzt, um die Standardroute auszuwählen, da keine Route spezifiziert ist. Die Standardroute r0, welche in der Mapper-Eingabe 504' gespeichert wird, wird für die nächsten drei Knoten 5002–5004 ausgewählt, weshalb die entsprechenden Bits 5021–5024 im Datenfeld 406 auf '0' gesetzt werden, um den vorhergehenden Routenindex zu verwenden, welcher durch 5021 verwendet wurde. Es erfolgt eine Routenänderung bei Knoten 5005 .
  • Die Route r1, die für den Knoten 5005 verwendet wird, welcher in der Mapper-Eingabe 504' gespeichert wird, wird auch durch den Knoten 5006 benutzt. Daher ist das Bit 5025 '1' und zeigt eine Routenänderung an, um die Mapper-Eingabe 5042 im Teilbaum-Mapper 418 (5) auszuwählen. Das Bit 5026 ist '0' und zeigt an, daß der Routenindex, welcher in 5025 gespeichert wird, für diesen Knoten zu verwenden ist. Keine Route wird für den Knoten 500 bereitgestellt, weshalb eine Routenänderung erfolgt und ein '1' in Bit 502' gespeichert wird, wodurch eine Mapper-Eingabe 5043 im Teilbaum-Mapper 418 (5) notwendig ist, welche die Standardroute r0 speichert.
  • Der Knoten 50010 weist eine Route auf welche sich vom vorhergehenden Knoten 5009 unterscheidet, eine neue Routeneingabe ist im Teilbaum-Mapper 418 (5) erforderlich. Das Bit 50210 , welches dem Knoten 50010 entspricht, wird auf '1' gesetzt und die Mapper-Eingabe 5045 , welche s0 speichert, wird an der nächsten benachbarten Speicherstelle zum Teilbaum-Mapper 418 (5) addiert.
  • Der Knoten 50011 weist eine Route auf welche sich vom vorhergehenden Knoten 50010 unterscheidet, eine neue Mapper-Eingabe ist im Teilbaum-Mapper 418 (5) erforderlich. Das Bit 50211 , welches dem Knoten 50011 entspricht, wird auf '1' gesetzt und die Mapper-Eingabe 5046 , welche r2 speichert, wird an der nächsten benachbarten Speicherstelle zum Teilbaum-Mapper 418 (5) addiert.
  • Die Knoten 50012 und 50013 benutzen dieselbe Route wie der vorhergehende Knoten 50011 , eine neue Mapper-Eingabe ist im Teilbaum-Mapper 418 (5) nicht erforderlich. Das Bit 50212 , welches dem Knoten 50012 entspricht, und das Bit 50213 , welches dem Knoten 50013 entspricht, werden im Datenfeld 406 auf '0' gesetzt.
  • Der Knoten 50014 weist eine Route auf, welche sich vom vorhergehenden Knoten 50013 unterscheidet, eine neue Mapper-Eingabe ist im Teilbaum-Mapper 418 (5) erforderlich. Das Bit 50214 im Datenfeld 406, welches dem Knoten 50014 entspricht, wird auf '1' gesetzt und die Mapper-Eingabe 504, welche s1 speichert, wird zum Teilbaum-Mapper 418 (5) addiert. Der Knoten 50015 weist eine Route auf, welche sich vom vorhergehenden Knoten 50014 unter scheidet, eine neue Mapper-Eingabe ist im Teilbaum-Mapper 418 (5) erforderlich. Das Bit 50215 im Datenfeld 406, welches dem Knoten 50015 entspricht, wird auf '1' gesetzt und die Mapper-Eingabe 5048 , welche r2 speichert, wird zum Teilbaum-Mapper 418 (5) addiert. Der Knoten 50016 benutzt dieselbe Route wie der vorhergehende Knoten 50015 , eine neue Mapper-Eingabe im Teilbaum-Mapper 418 (5) ist nicht erforderlich.
  • Der Knoten 50017 weist eine Route auf, welche sich vom vorhergehenden Knoten 50016 unterscheidet, eine neue Mapper-Eingabe ist im Teilbaum-Mapper 418 (5) erforderlich. Das Bit 50217 im Datenfeld 406, welches dem Knoten 50017 entspricht, wird auf '1' gesetzt und die Mapper-Eingabe 5049 , welche r3 speichert, wird zum Teilbaum-Mapper 418 (5) addiert.
  • Die Knoten 50018–50032 benutzen alle dieselbe Route wie der Knoten 50017 , eine neue Mapper-Eingabe ist im Teilbaum-Mapper 418 (5) nicht erforderlich. Die entsprechenden Bits 50218–50232 werden auf '0' gesetzt. Infolgedessen sind neun Mapper-Eingaben 5041–9 notwendig, um die Routeneingaben 302 (4) oder die Teilbaumeingaben 304 (4) für die 32 Knoten 5001–50032 zu speichern.
  • Eine Mapper-Eingabe 5041–5049 , welche einem Knoten 5001–50032 entspricht, wird im Teilbaum-Mapper 418 (5) indexiert durch Berechnen der Anzahl von '1', die im dichtbesiedelten Teilbaum-Deskriptor gespeichert werden, welcher im Datenfeld 406 gespeichert wird. Um zum Beispiel die Mapper-Eingabe 5041–5049 , welche dem Knoten 50028 entspricht, zu finden, wird die Anzahl von '1', welche in den Bits 502–50228 des Datenfeldes 406 gespeichert werden, gezählt. Die Anzahl von '1' beträgt 8 und die entsprechende Mapper-Eingabe ist die achte Stelle von der Standardroute aus; d.h., Mapper-Eingabe 5049 .
  • Mapper-Eingaben nur zu speichern, wenn eine Routenänderung erfolgt, verringert die Anzahl von Mapper-Eingaben 5041–5049 pro Teilbaum im Teilbaum-Mapper 418 (5).
  • 7 veranschaulicht das Zeigerfeld 408, welches in 5 dargestellt ist. Das Zeigerfeld 408 umfaßt die Blockbasisadreßfelder 6001 , 6002 zum Speichern von Basisadressen für Blöcke von 16 benachbarten Mapper-Eingabestellen 5041–50416 (6B) im Teilbaum-Mapper 418 ( 5). Speicher wird im Teilbaum-Mapper 418 (5) in Blöcken 6021 , 6022 von 16 benachbarten Mapper-Eingaben zugeordnet. Ein 8-stufiger Teilbaum kann bis zu 256 verschiedene Routen aufweisen, welche 16 Blöcke 6021 , 6022 erfordern, um alle 256 Routen zu speichern. Die Anzahl von Blöcken 602, welche benötigt werden, hängt von der Anzahl von Routen für den Teilbaum ab. Ein Block 602 wird einem konkreten Teilbaum durch Entfernen der Blockbasisadresse 6021 , 6022 von einer freien Liste von Blockbasisadressen (nicht dargestellt) zugeordnet. Verfahren zur Bereitstellung einer freien Liste von Adressen für einen Speicher sind in der Technik wohlbekannt.
  • Durch Zuordnen von Speicherblöcken von 16 Mapper-Eingaben 5041–16 ist der Speicher im Teilbaum-Mapper 418 (5) leichter zu verwalten, da die zugeordneten 16 Stellen benachbart sind.
  • 8 veranschaulicht die Mapper-Adreßlogik 402, welche in 5 dargestellt ist. Die Mapper-Adreßlogik 402 umfaßt die Offset-Logik 700, die Zeiger-Logik 702 und die Addierer-Logik 704.
  • Die Offset-Logik 700 umfaßt die Knotenauswahl-Logik 706 und Einserzähl-Logik 708. Die Zeiger-Logik umfaßt die Basisadreßauswahl-Logik 710.
  • Die Knotenauswahl-Logik 706 wählt den Knoten 500 (6B) auf den Teilbaumdaten 412, welche den acht Bits des Schlüssels 210b entsprechen, aus. Die entsprechende Knotenzahl wird auf der Knotenauswahl 718 an die Einserzähl-Logik 708 weitergeleitet. Die Einserzähl-Logik 708 zählt die Anzahl von '1', welche im Teilbaum-Datenfeld 406 gespeichert werden, bis zu dem Bit, welches dem ausgewählten Knoten 500 entspricht. Die Anzahl von Einsern wird auf der Blockauswahl 712 an die Zeiger-Logik 702 und Block-Offset 714 an die Addierer-Logik 704 weitergeleitet.
  • Es kann ein Maximum von 256 '1' in einem Teilbaum-Datenfeld 406 von 256 Bits gespeichert werden, was ein 8 Bit breites Zählfeld erfordert. Das 8-Bit-Zählfeld wird in zwei Felder unterteilt, wobei die 4 MSBs die Blockauswahl 712 bereitstellen und die 4 niedrigstwertigen Bits ("LSBs", nach Engl. Least Significant Bits) das Block-Offset 714 bereitstellen.
  • Wenn zum Beispiel der Acht-Bit-Schlüssel 210b '0100 0100' ist, um die Knotenzahl 68 zu wählen, und 27 '1' in den ersten 68 Bits der Teilbaumeingaben 412 gespeichert werden, ist die Zählung 1C Hex (0001 1100), die MSBs (0001); das heißt, Blockauswahl 714, wählen Block 6021 (6) und die LSBs (1100), das heißt, das Basisblock-Offset, wählen die Mapper-Eingabe 50411 (6); das heißt, die zwölfte Eingabe in Block 5021 .
  • Die Basisadreßauswahl-Logik 710 wählt die Basisadresse 716 vom Teilbaumzeiger 414 in Abhängigkeit von der Blockauswahl 712, welche von der Offset-Logik 700 weitergeleitet wird, aus. Die Addierer-Logik 704 addiert das Block-Offset 714, welches von der Offset-Logik 700 weitergeleitet wurde, zur Basisadresse 716 und stellt die Mapper-Adresse 416 bereit. Die Mapper-Adresse 416 ist der Index der Mapper-Eingabe 504 (6B) im Mapper 106b–d.
  • 9 ist ein Ablaufdiagramm, welches die Schritte zur Suche nach dem Präfix längster Übereinstimmung für einen Schlüssel 210 (3) in der Nachschlagetabelle 200 gemäß den Prinzipien der vorliegenden Erfindung veranschaulicht.
  • Bei Schritt 800 wird der erste Abschnitt des Schlüssels 210a (3) als der Index an den Mapper 106a weitergeleitet. Die Verarbeitung wird bei Schritt 802 fortgesetzt.
  • Bei Schritt 802 bestimmen die Mapper-Eingabedaten 220a (3), welche in der Mapper-Eingabe 504 (6B) im Mapper der ersten Stufe gespeichert werden, der durch den ersten Abschnitt des Schlüssels 210a (3) indexiert wird, ob ein weiteres Absuchen der nächsten Stufe notwendig ist. Wenn dem so ist, wird die Verarbeitung bei Schritt 804 fortgesetzt. Wenn dem nicht so ist, speichert die Routeneingabe 302 (4) in der indexierten Mapper-Eingabe 504 (6B) im Mapper der ersten Stufe die entsprechende längste Präfixroute für den Schlüssel und die Verarbeitung wird bei Schritt 808 fortgesetzt.
  • Bei Schritt 804 wird der Mapper 106b–d der nächsten Stufe abgesucht. Der Index für den Mapper der nächsten Stufe hängt vom Teilbaumindex 312, welcher im Teilbaumeingaben-Deskriptor 304 (4) in der indexierten Mapper-Eingabe 504 (6B) im Mapper der vorhergehenden Stufe gespeichert wird, und dem nächsten Abschnitt des Schlüssels 210b –d ab. Die Verarbeitung wird bei Schritt 806 fortgesetzt.
  • Bei Schritt 806 speichert die indexierte Mapper-Eingabe 504 (6B) im Mapper der nächsten Stufe den entsprechenden längsten Präfixroutenindex für den Schlüssel oder einen Teilbaumindex, welcher anzeigt, daß eine weitere Suche notwendig ist. Wenn eine weitere Suche erforderlich ist, wird die Verarbeitung bei Schritt 804 fortgesetzt. Wenn dem nicht so ist, wird die Verarbeitung bei Schritt 808 fortgesetzt.
  • Bei Schritt 808 wird der Routenindex 102 (3), welcher in einer Mapper-Eingabe 504 (6B) in einem der Mapper 106a–d gespeichert wird, von der Nachschlagetabelle 200 als der Routenindex 102 (3) weitergeleitet. Die Verarbeitung ist abgeschlossen.
  • Tiefenerweiterung
  • Die Anzahl von Routenindizes 102 (3), welche in der Nachschlagetabelle 200, welche in 3 dargestellt ist, gespeichert werden können, wird durch die Anzahl von verfügbaren Mapper-Eingaben 504 (6B) im Teilbaum-Mapper 418 (5) eingeschränkt. Wenn zum Beispiel jeder Teilbaum-Mapper 418 (5) 128-KB-Mapper-Eingaben enthält und es zwei Teilbaum-Mapper 418 (5) in der Nachschlagetabelle gibt, kann ein Maximum von 256-KB-Routenindizes 102 (3) in der Nachschlagetabelle 200 gespeichert werden. Ein Teilbaum-Mapper 418 (5) mit 128-KB-Mapper-Eingaben erfordert einen 17-Bit-Index. Ein Teilbaum-Mapper 418 (5) mit 512-KB-Mapper-Eingaben erfordert einen 19-Bit-Index. Zwei 512-KB-Teilbaum-Mapper 418 (5) in der Nachschlagetabelle 200 stellen Speicherung für 1 Million von möglichen 4 Milliarden Routenindizes 102 (3) für eine 32-Bit-IPv4-Zieladresse bereit.
  • Die Anzahl von Mapper-Eingaben 504 (6B) zum Speichern von Routenindizes 102 (3) kann durch die Bereitstellung einer Mehrzahl von Nachschlagetabellen 200 erhöht werden. Die Mehrzahl von Nachschlagetabellen werden parallel nach dem Wert abgesucht, welcher einem Suchschlüssel 210 entspricht, der in einer Mapper-Eingabe 504 (6B) im Teilbaum-Mapper 418 (5) in einer der Nachschlagetabellen 200 gespeichert wird.
  • 10A veranschaulicht ein Ausführungsbeispiel für Tiefenerweiterung. Zwei Nachschlagetabellen sind dargestellt, und zwar eine Hauptnachschlagetabelle 200a und eine Nebennachschlagetabelle 200b. Die Anzahl von Nachschlagetabellen ist jedoch nicht auf die beiden dargestellten beschränkt, sondern es können mehr als eine Nebennachschlagetabelle 200b addiert werden.
  • Jede der Nachschlagetabellen 200a–b wird mit demselben Suchschlüssel 210 parallel abgesucht. Der Routenindex 102 (3), welcher dem Suchschlüssel 210 entspricht, wird in einem Teilbaum-Mapper 418 (5) in einer der Nachschlagetabellen 200a–b oder im direkten Mapper 106a in beiden Nachschlagetabellen 200a, 200b gespeichert. Der Endroutenindex 900 wird nach dem parallelen Absuchen der beiden Nachschlagetabellen 200a, 200b gefunden.
  • 10B veranschaulicht eine der Nachschlagetabellen 200a in der Ausführungsform, welche in 10A dargestellt ist. Jede der Nachschlagetabellen 200a–b umfaßt Mapper 106a–d und ein Fließband 208, wie bereits für die Nachschlagetabelle 200 in Verbindung mit 3 beschrieben wurde, und eine Treiber-Logik 902. Die Nachschlagetabelle 200a führt eine Mehrstufensuche in den Mappern 106a–d nach einem Routenindex, welcher dem Suchschlüssel entspricht, durch. Das Ergebnis jeder Stufensuche wird auf den Mapper-Eingabedaten 220a–b an das Fließband 208 weitergeleitet. Das Fließband 208 leitet das Ergebnis der Suche 904 an die Treiber-Logik 902 weiter. Die Mapper-Eingaben 504 (6B) im Mapper 106a in jeder der Nachschlagetabellen 200a–b speichern die Teilbaumeingaben 304 (4), aber die Routeneingaben 302 (4) werden nur im Mapper 106a in der Hauptnachschlagetabelle 200a gespeichert. Die Leereingabe 300 (4) wird in den Mapper-Eingaben 504 (6B) im Mapper 106a in der Nebennachschlagetabelle 200b anstelle der Routeneingaben 302 gespeichert. Nur eine Nachschlagetabelle mit den Routenindizes im Mapper 106a zu bestücken, vermeidet das auswählen einer Nachschlagetabelle, um den Endroutenindex 900 bereitzustellen. Dies führt zu 64 KB von Speicher in der Nebennachschlagetabelle 200b, welcher zwar nicht verwendet werden kann, um Routenindizes zu speichern, es aber ermöglicht, daß dieselbe Nachschlagetabelle als eine Hauptnachschlagetabelle oder eine Nebennachschlagetabelle konfiguriert wird, wie in Verbindung mit 3 beschrieben. In einem alternativen Ausführungsbeispiel kann ein Nebennachschlagegerät ohne den Mapper 106a bereitgestellt werden. Eine Suche endet im Mapper 106a in der Hauptnachschlagetabelle 200a, wenn ein Routenindex 102 (3) in einer Routeneingabe 302 (4) im Mapper 106a gespeichert wird.
  • Wie in 10A dargestellt, teilen sich die Hauptnachschlagetabelle 200a und die Nebennachschlagetabelle 200b den Endroutenindex 900. Die Nachschlagetabelle 200a, 200b, in welcher der Endroutenindex 900 gespeichert wird, stellt den Routenindex 102 (3) bereit. Wenn jede der Nachschlagetabellen 200a, 200b ein getrenntes Gerät ist, verringert das Teilen des Endroutenindexes 900 die Summe der externen Anschlüsse jedes Geräts. Nur eine der Nachschlagetabellen 200a,b treibt den Endroutenindex 900 zu jeder Zeit an.
  • Um einen Fehlerzustand zu vermeiden, bei welchem der Routenindex, welcher mit dein Suchschlüssel 210 verbunden ist, in beiden Nachschlagetabellen 200a, 200b gespeichert wird, wobei beide Nachschlagetabellen den Endroutenindex 900 gleichzeitig antreiben würden, speichert jede Nachschlagetabelle 200a,b einen Gerätecode 906. Ein 3-Bit-Gerätecode erlaubt der erweiterten Nachschlagetabelle, 8 Geräte zu umfassen.
  • Die Treiber-Logik 902 bestimmt, ob das Ergebnis der Suche 904 einen Routenindex 102 ( 3) enthält. Wenn dem so ist, signalisiert die Treiber-Logik 902 in der Nachschlagetabelle 200a einen Versuch, den Endroutenindex 900 auf einem Busanforderungssignal (nicht dargestellt) anzutreiben. Wenn zwei oder mehr Nachschlagetabellen 200a, 200b den Versuch signalisieren, die Routenindexsignale gleichzeitig anzutreiben, wird der Routenindex durch die Nachschlagetabelle 200a, 200b mit dem niedrigsten Gerätecode bereitgestellt. Verfahren zum Lösen von Buskonflikten durch die Verwendung eines Busanforderungssignals sind in der Technik wohlbekannt.
  • 10C veranschaulicht ein anderes Ausführungsbeispiel zur Bereitstellung von Tiefenerweiterung, um die Anzahl von Mapper-Eingaben zu erhöhen, welche zum Speichern eines Wertes verfügbar sind, der einem Suchschlüssel 210 entspricht. In dem Ausführungsbeispiel, welches in 10C dargestellt ist, werden zwei Nachschlagetabellen 200a–b zum Speichern von Werten bereitgestellt, und zwar eine Hauptnachschlagetabelle 200c und eine Nebennachschlagetabelle 200d. Die Anzahl von Nachschlagetabellen ist jedoch nicht auf die beiden dargestellten beschränkt, die Anzahl von Mapper-Eingaben kann durch Addieren von mehr Nebennachschlagetabellen 200d erhöht werden. Eine Suche nach dem Wert, welcher in einer Mapper-Eingabe in einer der Nachschlagetabellen 200c–b gespeichert wird und dem Suchschlüssel [39:0] 210 entspricht, wird in den Nachschlagetabellen 200c–b parallel durchgeführt.
  • 10D veranschaulicht die Nebennachschlagetabelle 200d in der Ausführungsform, welche in 10C dargestellt ist. Jede Nachschlagetabelle umfaßt Mapper 106a–b, wie für die Nachschlagetabelle 200 in Verbindung mit 3 beschrieben. Mapper-Eingaben im Mapper 106a in jeder der Nachschlagetabellen 200c–b speichern Teilbaumeingaben 304 (4). Jede Nachschlagetabelle 200c–b leitet einen Teilbaumindex 312, welcher in einem Teilbaumeingaben-Deskriptor 304 (4) gespeichert wird, der in einer Mapper-Eingabe 504 (6B) im Mapper 106a gespeichert wird, an den nächsten Mapper 106b–b weiter. Ein Routenindex 102 (3) wird jedoch nur im Mapper 106a in einer Hauptnachschlagetabelle 200c gespeichert. Eine Leereingabe wird im Mapper 106a in einer Nebennachschlagetabelle 200d gespeichert, um das Speichern eines Routenindexes, welcher dem Schlüssel entspricht, in mehr als einer Nachschlagetabelle 200b, 200d zu vermeiden.
  • Das Ergebnis der Mehrstufensuche 904 in der Nebennachschlagetabelle 200d wird an die Endindex-Logik 1004 weitergeleitet. Die Endindex-Logik 1004 leitet das Ergebnis der Mehrstufensuche 904 oder das ankommende Ergebnis 1000a, welches von der Hauptnachschlagetabelle 200c weitergeleitet wird, als das abgehende Ergebnis 1002a weiter. Wenn ein Routenindex 102 (3) im Ergebnis der Mehrstufensuche 904 enthalten ist, wird das Ergebnis der Mehrstufensuche als das abgehende Ergebnis 1002a weitergeleitet. Wenn der Routenindex 102 (3) in dem ankommenden Ergebnis 1000a enthalten ist, wird das ankommende Ergebnis 1000a als das abgehende Ergebnis 1002a weitergeleitet. Wenn der Routenindex 102 (3) weder im ankommenden Ergebnis 1000a noch dem Ergebnis der Mehrstufensuche 904 enthalten ist, wird das Ergebnis der Mehrstufensuche 904 als das abgehende Ergebnis 1002a weitergeleitet.
  • Wie in 10C dargestellt, sind die Hauptnachschlagetabelle 200c und die Nebennachschlagetabelle 200d durch einen gemeinsamen Bus, welcher als ankommendes Ergebnis 1000a gekennzeichnet ist, verbunden. Der Routenindex 102 (3) wird von der Nebennachschlagetabelle 200d nur auf dem abgehenden Ergebnis 1002a weitergeleitet. Wenn es mehr als eine Nebennachschlagetabelle 200d gibt, wird der Routenindex 102 (3) für die erweiterte Nachschlagetabelle durch die letzte Nebennachschlagetabelle bereitgestellt. Diese Ausführungsform vermeidet zwar die Realisierung des Mehr-Treiber-Endroutenindexes 900, welcher in Verbindung mit 10A beschrieben wurde, erfordert aber mehr externe Gerätanschlüsse für das ankommende Ergebnis 1000a.
  • 11A–B veranschaulichen eine Binärbaumdarstellung der Verteilung der Routen, welche in 2B dargestellt sind, unter den Nachschlagetabellen 200a–b (10A) oder 200c–b ( 10C).
  • 11A veranschaulicht eine Binärbaumdarstellung der Routen, welche in der Hauptnachschlagetabelle 200a (10A) oder 200c (10C) gespeichert werden. Teilbaum B, welcher in der Binärbaumdarstellung der Routen dargestellt ist, welche in 2B dargestellt sind, ist in der Hauptnachschlagetabelle 200a nicht enthalten. Die Knoten 1301–13022 und 13024–32 werden im Mapper 106a in der Nachschlagetabelle 200a codiert, wie in Verbindung mit 3 beschrieben. Der Knoten, an welchem der Teilbaum B indexiert wäre, wenn er in der Hauptnachschlagetabelle 200a gespeichert werden würde, ist grafisch durch ein X dargestellt, welches einen ausgeästeten Teilbaum anzeigt. Die Mapper-Eingabe 504 (6B), welche dem Knoten 13023 in der Hauptnachschlagetabelle 200a entspricht, speichert keinen Teilbaumindex 312 (4) zu Teilbaum B mehr. Stattdessen wird die Leereingabe 300 (4) in der Mapper-Eingabe 504 (6B), welche dem Knoten 13023 entspricht, in der Hauptnachschlagetabelle 200a gespeichert und zeigt an, daß die Mapper-Eingabe, welche dem Knoten 13023 entspricht, in einem Teilbaum-Mapper 418 (5) in einer anderen Nebennachschlagetabelle 200b gespeichert wird.
  • 11B veranschaulicht eine Binärbaumdarstellung der Routen, welche in den Mapper-Eingaben 504 (6B) in den Teilbaum-Mappern 418 (5) in der Nebennachschlagetabelle 200b (10A) oder 200d (10C) gespeichert werden. Die Binärbaumdarstellung der Routen, welche in der Nebennachschlagetabelle 200b gespeichert sind, unterscheidet sich von der Binärbaumdarstellung, welche in 2B dargestellt ist, darin, daß der Teilbaum A nicht enthalten ist. Infolgedessen sind die Knoten 1301–1303 und 1305–13032 codiert, wie in Verbindung mit 2B beschrieben. Die Mapper-Eingabe 504 (6B), welche dem Knoten 1304 in der Nebennachschlagetabelle 200b entspricht, speichert keinen Teilbaumindex 312
  • (4) zu Teilbaum A mehr. Stattdessen speichert die Mapper-Eingabe, welche dem Knoten 1304 in der Nebennachschlagetabelle 200b entspricht, die Leereingabe 300 (4), welche anzeigt, daß die Mapper-Eingabe, welche dem Knoten 1304 entspricht, in einer anderen Nachschlagetabelle gespeichert wird. Der Teilbaumindex für den Teilbaum A und infolgedessen der Routenindex für den Host 138 (11A) wird in der Hauptnachschlagetabelle 200a gespeichert und der Teilbaumindex für den Teilbaum B und infolgedessen der Routenindex für den Host 140 wird in der Nebennachschlagetabelle 200b gespeichert. Die Nebennachschlagetabelle 200b, 200d speichern nur Ergebnisse für einen Teilbaum; das heißt, eine Nebennachschlagetabelle 200b, 200d speichert kein Ergebnis im Mapper 106a der ersten Stufe.
  • Unter Bezugnahme auf 11A und 11B führt eine Suche nach irgendeinem der Knoten 130–13012 auf der Hauptmapper-Stufe_1 1102a (3) oder Nebenmapper-Stufe_1 104a mit einem ersten Abschnitt des Schlüssels 210a zu r1 116, welcher in einer Routeneingabe 302 ( 4) in einer Mapper-Eingabe 504 (6B) im Mapper 106a in der Hauptnachschlagetabelle 200a, 200c gespeichert wird, und einer Leereingabe 300 (4), welche in einer Mapper-Eingabe 504 (6B) im Mapper 106a in der Nebennachschlagetabelle 200b, 200d gespeichert wird. Die Routeneingabe 302 (4), welche in der Hauptnachschlagetabelle 200a, 200c gespeichert wird, wird auf dem ankommenden Ergebnis 1000a an die Nebennachschlagetabelle 200b, 200d weitergeleitet und durch die Nebennachschlagetabellen 200b, 200d auf dem abgehenden Ergebnis 1002a weitergeleitet.
  • Eine Suche nach dem Knoten 1304 mit einem ersten Abschnitt des Schlüssels 210a führt zu einem Teilbaumindex 312 (4) für den Teilbaum A, welcher in einem Teilbaumeingaben-Deskriptor 304 (4) in einer Mapper-Eingabe 504 (6B) im Mapper 106a in der Hauptnachschlagetabelle 200a gespeichert wird. Der Teilbaumindex 312 wird an den Mapper 106b in der Hauptnachschlagetabelle 200a weitergeleitet, um die Suche nach der Routeneingabe 302 (4), welche in der Hauptnachschlagetabelle 200a gespeichert wird, fortzusetzen.
  • Eine Suche nach dem Knoten 13023 mit einem ersten Abschnitt des Schlüssels 210a führt zu einer Leereingabe 300 (4), welche in einer Mapper-Eingabe 504 (6B) im Mapper 106a in der Hauptnachschlagetabelle 200a gespeichert wird, und einem Teilbaumeingaben-Deskriptor 304 (4), welcher in einer Mapper-Eingabe 504 (6B) im Mapper 106a in der Nebennachschlagetabelle 200b gespeichert wird. Infolgedessen geht die Suche nach der Routeneingabe 302 (4) mit dem nächsten Abschnitt des Schlüssels 210b im Mapper 106b in der Nebennachschlagetabelle 200b weiter.
  • 12 ist ein Ablaufdiagramm, welches veranschaulicht ein Verfahren zur Verteilung von Routeneingaben 320 (4), welche in Mapper-Eingaben 504 (6B) zu speichern sind, unter den Nachschlagetabellen 200a–b, welche in 10A dargestellt sind. Dasselbe Verfahren gilt für die Nachschlagetabellen 200c–b, welche in 10C dargestellt sind. Die Routeneingaben 320 (4), welche in den Mapper-Eingaben zu speichern sind, werden anfänglich durch einen Prozessor (nicht dargestellt) in einem Speicher gespeichert, bevor sie in den Nachschlagetabellen 200a–b gespeichert werden.
  • Während die Routeneingaben 302 (4) im Speicher gespeichert werden, wird die Anzahl der Routeneingaben 302 (4), welche in jeder der Nachschlagetabellen 200a–b (10A) zu speichern sind, gezählt. Die Routeneingaben 302 (4) für die Mapper-Stufe_1 1104a ( 11B) werden im Mapper 106a in der Nachschlagetabelle 200a gespeichert. Die Teilbaumeingaben 304 (4) für die Mapper-Stufe_1 1104a (11B) werden im Mapper 106a in jeder der Nachschlagetabellen 200a–200b gespeichert.
  • Bei Schritt 1200 wird die Anzahl von Routeneingaben 302 (4), welche für jede der Teilbaumeingaben 304 (4) im Mapper 106a in jeder der Nachschlagetabellen 200a–b ( 10A) zu speichern sind, berechnet, um zu bestimmen, wie die Routeneingaben 302 (4) unter den Nachschlagetabellen 200a–b (10A) zu verteilen. Nachdem die Gesamtzahl von Mapper-Eingaben 504 (6B), welche erforderlich sind, um die Routeneingaben 302 (4) zu speichern, bestimmt wurde, wird die Verarbeitung bei Schritt 1202 fortgesetzt.
  • Bei Schritt 1202 wird die Gesamtzahl von Mapper-Eingaben 504 (6B), welche für die Teilbäume zu speichern sind, durch die Anzahl von Nachschlagetabellen 200a–b (10A) geteilt, um die Anzahl von Routeneingaben 302 (4) zu bestimmen, welche in jeder Nachschlagetabelle 200a–b (10A) zu speichern sind. Die Verarbeitung wird bei Schritt 1204 fortgesetzt.
  • Bei Schritt 1204 wird eine Routeneingabe 302 (4) in einer Mapper-Eingabe 504 (6B) in einem Teilbaum-Mapper 418 (5) in der ausgewählten Nachschlagetabelle 200a–b gespeichert. Die Verarbeitung wird bei Schritt 1206 fortgesetzt.
  • Wenn bei Schritt 1206 die Anzahl von Routeneingaben, welche in den Mapper-Eingaben 504 (6B) im Teilbaum-Mapper 418 (5) in der ausgewählten Nachschlagetabelle 200a–b (10A) gespeichert werden, kleiner als 1/n ist, wobei n die Anzahl von verfügbaren Nachschlagetabellen 200a–b (10A) ist, wird die Verarbeitung bei Schritt 1204 fortgesetzt.
  • Wenn dem nicht so ist, speichert die ausgewählte Nachschlagetabelle 200a–b bereits 1/n der Gesamtzahl von Mapper-Eingaben und wird die Verarbeitung bei Schritt 1208 fortgesetzt.
  • Bei Schritt 1208 speichert die ausgewählte Nachschlagetabelle 200a–b 1/n der Gesamtzahl von Mapper-Eingaben und wird eine Leereingabe 300 (4) für jeden restlichen Teilbaumknoten in der ausgewählten Nachschlagetabelle 200a–b gespeichert, da Routenindizes für den jeweiligen Teilbaum nicht in der gegenwärtig ausgewählten Nachschlagetabelle gespeichert werden. Die Verarbeitung wird bei Schritt 1210 fortgesetzt.
  • Bei Schritt 1210 ist die Verarbeitung abgeschlossen, wenn alle Routeneingaben gespeichert wurden. Wenn dem nicht so ist, wird die Verarbeitung bei Schritt 1212 fortgesetzt.
  • Bei Schritt 1212 wird die nächste Nachschlagetabelle 200a–b (10A) ausgewählt. Die Verarbeitung wird bei Schritt 1204 fortgesetzt.
  • Die Routeneingaben werden unter den Nachschlagetabellen 200a–b (10A) verteilt, bevor nach einem Routenindex gesucht wird, welcher einer IP-Adresse entspricht. Diese Suche wird in jeder der Nachschlagetabellen 200a–b (10A) parallel durchgeführt. Das Verfahren zur Suche, welche in jeder der Nachschlagetabellen parallel realisiert wird, wird für eine der Nachschlagetabellen 200a–b (10A) beschrieben.
  • 13 ist ein Ablaufdiagramm, welches ein Verfahren zur Suche mit einem Suchschlüssel nach einem Wert veranschaulicht, welcher dem Suchschlüssel entspricht, der in irgendeiner der Nachschlagetabellen 200c–d, welche in 10C dargestellt sind, gespeichert wird.
  • Bei Schritt 1300 empfängt jede der Nachschlagetabellen 200c–d (10C) einen Suchschlüssel 210. Der Mapper 106a in jeder der Nachschlagetabellen 200c–d wird nach einem Wert abgesucht, welcher dem ersten Abschnitt des Schlüssels 210a entspricht. Die Verarbeitung wird bei Schritt 1302 fortgesetzt.
  • Bei Schritt 1302 wird die Eingabe gelesen, welche in der Mapper-Eingabe 504 (6B) im Mapper 106a gespeichert wird. Die Mapper-Eingabe 504 (6B) in der Hauptnachschlagetabelle 200c kann die Leereingabe 300 (4), eine Routeneingabe 302 (4) oder einen Teilbaumeingaben-Deskriptor 304 (4) speichern. Die Mapper-Eingabe 504 (6B) in der Nebennachschlagetabelle 200d kann die Leereingabe 300 (4) und den Teilbaumeingaben-Deskriptor 304 (4) speichern. Wenn die Mapper-Eingabe in der jeweiligen Nachschlagetabelle 200 eine Routeneingabe 302 (4) speichert, ist die Eingabe ein gültiger Wert, kein weiteres Absuchen der nachfolgenden Mapper 106b–d in der Nachschlagetabelle 200c–d ist erforderlich und die Verarbeitung wird bei Schritt 1310 fortgesetzt. Wenn dem nicht so ist, wird die Verarbeitung bei Schritt 1304 fortgesetzt.
  • Wenn bei Schritt 1304 die Eingabe einen Teilbaumeingaben-Deskriptor 304 (4) speichert, ist eine weitere Suche in der Nachschlagetabelle 200c–d erforderlich und die Verarbeitung wird bei Schritt 1306 fortgesetzt. Wenn dem nicht so ist, speichert die Eingabe die Leereingabe, welche anzeigt, daß eine weitere Suche nicht notwendig ist, und die Verarbeitung wird bei Schritt 1310 fortgesetzt.
  • Bei Schritt 1306 wird die Suche in dein ausgewählten Teilbaum fortgesetzt. Der Mapper 106b–d (3) der nächsten Stufe wird in Abhängigkeit von einem nächsten Abschnitt des Schlüssels 210b–d und einem Teilbaumindex 312 (4), welcher aus einer Suche auf der vorhergehenden Stufe resultiert, abgesucht. Die Verarbeitung wird bei Schritt 1308 fortgesetzt.
  • Bei Schritt 1308 wird bestimmt, ob die Suche in Abhängigkeit von der Mapper-Eingabe, welche aus der Suche im Mapper 106b–d auf der gegenwärtigen Stufe resultiert, fortgesetzt wird. Wenn die Mapper-Eingabe 504 (6B) einen Teilbaumeingaben-Deskriptor 304 (4) speichert, wird die Suche mit dem Mapper 106b–d der nächsten Stufe fortgesetzt und wird die Verarbeitung bei Schritt 1306 fortgesetzt. Wenn die Mapper-Eingabe 504 (6B) keinen Teilbaumeingaben-Deskriptor 304 (4) speichert, ist eine weitere Suche nicht erforderlich und die Verarbeitung wird bei Schritt 1310 fortgesetzt.
  • Bei Schritt 1310 wird das Ergebnis der Suche mit dem ankommenden Ergebnis 1000a, welches von einer anderen Nachschlagetabelle empfangen wird, verglichen. Wenn zum Beispiel die Nachschlagetabelle Nebennachschlagetabelle 200d ist, wird das ankommende Ergebnis von der Suche in der Hauptnachschlagetabelle 200c auf dem ankommenden Ergebnis 1000a an die Nachschlagetabelle 200d weitergeleitet und mit dem Ergebnis der Suche in der Nebennachschlagetabelle 200d verglichen. Die Verarbeitung wird bei Schritt 1312 fortgesetzt.
  • Wenn bei Schritt 1312 das ankommenden Ergebnis 1000a und das Ergebnis der Suche in der gegenwärtigen Nachschlagetabelle 200d verschieden sind, wird die Verarbeitung bei Schritt 1314 fortgesetzt. Wenn das ankommende Ergebnis 1000a und das Ergebnis der Suche in der gegenwärtigen Nachschlagetabelle 200d gleich sind, wurden zwei gültige Ergebnisse in den Mapper-Eingaben 504 (6B) in getrennten Nachschlagetabellen 200c–d gespeichert. Zwei gültige Ergebnisse sollten für denselben Schlüssel 210 nicht gespeichert werden, die Verarbeitung wird bei Schritt 1316 fortgesetzt.
  • Bei Schritt 1314 wird das ankommende Ergebnis 1000a überprüft, um festzustellen, ob es gültig ist. Ein ankommendes Ergebnis 1000a ist ungültig, wenn es eine Routeneingabe 302 (4) ist. Das ankommende Ergebnis 1000a ist ungültig, wenn es eine Leereingabe 300 (4) oder ein Teilbaumeingaben-Deskriptor 304 (4) ist. Teilbaumeingaben-Deskriptor 304 (4), Routeneingabe 302 (4) und Leereingabe 300 (4) wurden bereits in Verbindung mit 4 beschrieben. Wenn das ankommende Ergebnis 1000a ungültig ist, wird die Verarbeitung bei Schritt 1318 fortgesetzt. Wenn dem nicht so ist, wird die Verarbeitung bei Schritt 1320 fortgesetzt.
  • Bei Schritt 1318 ist das ankommende Ergebnis 1000a gültig und das Ergebnis, welches aus der Suche in der gegenwärtigen Nachschlagetabelle 200d resultiert, ist ungültig. Das ankommende Ergebnis 1000a wird auf dem abgehenden Ergebnis 1002a von der gegenwärtigen Nachschlagetabelle 200d weitergeleitet. Das ankommende Ergebnis 1000a wird als der Routenindex 102 (3) weitergeleitet, wenn die gegenwärtige Nachschlagetabelle 200d die letzte Nachschlagetabelle ist, oder als das ankommende Ergebnis 1000a zur nächsten Nachschlagetabelle weitergeleitet. Die Verarbeitung ist abgeschlossen.
  • Bei Schritt 1316 werden zwei gültige Ergebnisse für den Schlüssel in verschiedenen Nachschlagetabellen gespeichert. Ein Fehler ist während des Speicherns der Routeneingaben in den Nachschlagetabellen 200c–d aufgetreten. Ein Fehlercode wird erzeugt, so daß der Fehler korrigiert werden kann. Die Verarbeitung ist abgeschlossen.
  • Bei Schritt 1320 ist weder das Ergebnis aus einem Absuchen der gegenwärtigen Nachschlagetabelle 200d noch das ankommende Ergebnis 1000a gültig. Obwohl es ungültig ist, wird das Ergebnis der Suche in der gegenwärtigen Nachschlagetabelle 200d als das ankommende Ergebnis 1000a an die nächste Nachschlagetabelle weitergeleitet. Die Verarbeitung ist abgeschlossen.
  • 14 ist ein Ablaufdiagramm, welches ein Verfahren zur Suche nach einem Wert veranschaulicht, welcher einem Suchschlüssel entspricht, der in einer der Nachschlagetabellen 200a–b gespeichert wird, welche in 10A dargestellt sind.
  • Bei Schritt 1340 wird der Mapper 106a der ersten Stufe in beiden Nachschlagetabellen 200a–b nach einem Wert abgesucht, welcher einem ersten Abschnitt eines Schlüssels 210a entspricht. Die Verarbeitung wird bei Schritt 1342 fortgesetzt.
  • Wenn bei Schritt 1342 ein gültiger Ergebniswert gefunden wird, nachdem der Mapper 106a der ersten Stufe mit dem ersten Abschnitt des Schlüssels 210a abgesucht wurde, wird die Verarbeitung bei Schritt 1352 fortgesetzt. Wenn dem nicht so ist, wird die Verarbeitung bei Schritt 1344 fortgesetzt.
  • Wenn bei Schritt 1344 der Wert, welcher aus dem Absuchen des Mappers 106a der ersten Stufe mit dem ersten Abschnitt des Schlüssels 210a resultiert, ein Teilbaumeingaben-Deskriptor 304 (4) ist, wird die Verarbeitung bei Schritt 1346 fortgesetzt. Wenn dem nicht so ist, wird der gültige Wert für den Schlüssel nicht in der gegenwärtigen Nachschlagetabelle gespeichert und ist die Verarbeitung abgeschlossen.
  • Bei Schritt 1346 wird die Suche nach einem gültigen Wert in dem Teilbaum fortgesetzt, welcher im Teilbaumeingaben-Deskriptor 304 (4) identifiziert wurde, welcher während des Absuchens des Mappers der vorhergehenden Stufe gefunden wurde. Der Mapper der nächsten Stufe wird in Abhängigkeit von einem nächsten Abschnitt des Schlüssels 210b–c und einer Teilbaumauswahl, welche aus einem Absuchen der nächsten Stufe resultiert, nach einem Wert abgesucht. Die Verarbeitung wird bei Schritt 1348 fortgesetzt.
  • Bei Schritt 1348 bestimmt das Ergebnis der Suche, ob ein Absuchen eines Mappers der nächsten Stufe notwendig ist. Die Eingabe, welche aus der gegenwärtigen Suche resultiert, kann eine Routeneingabe 302 (4), eine Leereingabe 300 (4) oder einen Teilbaumeingaben-Deskriptor 304 (4) speichern. Wenn die Eingabe einen Teilbaumeingaben-Deskriptor 304 (4) speichert, ist eine weitere Suche erforderlich und wird die Verarbeitung bei Schritt 1346 fortgesetzt. Wenn die Eingabe keinen Teilbaumeingaben-Deskriptor 304 (4) speichert, wird die Verarbeitung bei Schritt 1350 fortgesetzt.
  • Wenn bei Schritt 1350 die Eingabe einen Routenindex 102 (3) speichert, wird die Verarbeitung bei Schritt 1352 fortgesetzt. Wenn dem nicht so ist, wird die Eingabe in einer anderen Nachschlagetabelle gespeichert. De Verarbeitung ist abgeschlossen.
  • Bei Schritt 1352 wird ein gültiger Wert, welcher dem Schlüssel entspricht, in der gegenwärtigen Nachschlagetabelle gespeichert. Der gültige Wert wird als der Routenindex 102 (3), welcher dem Schlüssel entspricht, weitergeleitet. Die Verarbeitung ist abgeschlossen.
  • Dünnbesiedelter Modus Um wieder auf 5 zurückzukommen, sorgt die Teilbaumeingabe 404 für den Zugriff auf bis zu 256 mögliche Routenindizes, einen pro Knoten in dem Teilbaum mit 256 Knoten. Die Routenindizes werden in den Mapper-Eingaben 5041–50411 im Teibaum-Mapper 418 ((5) gespeichert (5). Die Mapper-Adresse 416 für eine Mapper-Eingabe 504 (6B) im Teilbaum-Mapper 418 (5) wird in Abhängigkeit von einem dichtbesiedelten Teilbaum-Deskriptor, welcher im Datenfeld 406 gespeichert ist, und einem Teilbaumzeiger, welcher im Zeigerfeld 408 in der Teilbaumeingabe 404 gespeichert ist, bestimmt. Das Format des dichtbesiedelten Teilbaum-Deskriptors wurde bereits in Verbindung mit 6A–6B beschrieben. Der dichtbesiedelte Teilbaum-Deskriptor speichert ein Knoten-Bit 502 (6B) für jeden Knoten in dem 256-Knoten-Teilbaum. Alle Teilbäume weisen jedoch einen verschiedenen Routenindex für jeden der 256 Knoten auf, so kann zum Beispiel ein Teilbaum nur einen Routenindex haben.
  • 15 veranschaulicht eine Binärbaumdarstellung eines dünnbesiedelten Teilbaumes A und eines dichtbesiedelten Teilbaumes B auf der zweiten Mapper-Stufe 112b, welche durch Teilbaumeingaben 304 (4) auf der ersten Mapper-Stufe 112a indexiert sind. Ein Teilbaumeingaben-Deskriptor 304 (4) für s1 im Mapper 106a speichert einen Teilbaumindex 312 für die Teilbaumeingabe 404 für den Teilbaum A. Ein Teilbaumeingaben-Deskriptor 304 (4) für s0 im Mapper 106a speichert einen Teilbaumindex 312 für die Teilbaumeingabe 404 für den Teilbaum B.
  • Der dichtbesiedelten Teilbaum B weist elf Routenindizes, und zwar r6–r16, und sechs Teilbaumeingaben, und zwar s2–s7, auf. Die Mapper-Adressen 416, welche den Mapper-Eingaben 504 (6B) entsprechen, welche die Routeneingaben 302 (4) und die Teilbaumeingaben 304 (4) für den Teilbaum B speichern, sind in einem dichtbesiedelten Teilbaum-Deskriptor codiert, wie bereits in Verbindung mit 6B beschrieben wurde.
  • Der dünnbesiedelte Teilbaum A speichert zwei Routenindizes, und zwar r1 und r2. Wenn sie in einem dichtbesiedelten Teilbaum-Deskriptor gespeichert werden, wird eine ganze Teilbaumeingabe 404 verwendet, um drei Mapper-Adressen 416 für die Mapper-Eingaben 504 (6B) bereitzustellen, und zwar r0, r1 und r2.
  • Die Anzahl von Routen, welche in der Nachschlagetabelle 200 gespeichert werden, kann durch Codieren eines dünnbesiedelten Teilbaums in einem von einer Mehrzahl von dünnbesiedelten Teilbaum-Deskriptoren und Codieren eines dichtbesiedelten Teilbaums in einem dichtbesiedelten Teilbaum-Deskriptor in einer Teilbaumeingabe 404 erhöht werden.
  • Ein dichtbesiedelter Teilbaum weist 16 oder mehr Mapper-Eingaben 504 (6B) auf; das Datenfeld 406 in der Teilbaumeingabe 404 speichert einen dichtbesiedelten Teilbaum-Deskriptor, wie in Verbindung mit 6A-6B beschrieben. Ein dünnbesiedelter Teilbaum weist 15 oder weniger Mapper-Eingaben 504 (6B) auf das Datenfeld in der Teilbaumeingabe 404 speichert eine Mehrzahl von dünnbesiedelten Teilbaum-Deskriptoren. Durch Bereitstellen der Fähigkeit, dünnbesiedelte Teilbäume in dünnbesiedelten Teilbaum-Deskriptoren zu speichern, können mehr Teilbäume im Teilbaumspeicher 400 gespeichert werden und können infolgedessen mehr Routeneingaben in der Nachschlagetabelle 200 gespeichert werden.
  • 16A–C veranschaulichen die Abänderungen des Datenfeldes 406 und des Zeigerfeldes 408 in der Teilbaumeingabe 404, welche in 5 dargestellt ist, und des Teilbaumeingaben-Deskriptors 304 (4), welcher in 4 dargestellt ist, um die Speicherung einer Mehrzahl von dünnbesiedelten Teilbaum-Deskriptoren in der Teilbaumeingabe 404 zu erlauben.
  • Unter Zuwendung zu 16A umfaßt das Datenfeld 406 in einer Teilbaumeingabe 404, welche im dünnbesiedelten Modus konfiguriert ist, eine Mehrzahl von dünnbesiedelten Teilbaum-Deskriptoren 14001–140011 anstelle des dichtbesiedelten Teilbaum-Deskriptors mit einem Bit pro Knoten des Teilbaumes, welcher in Verbindung mit 6B beschrieben wurde. Jeder dichtbesiedelte Teilbaum-Deskriptor 14001–140011 umfaßt einen Knoten-Deskriptor 14021–140211 . Ein Knoten-Deskriptor 14021–140211 ist ein 9-Bit-Wert, welcher eine vollcodierte Route in dem Teilbaum darstellt. Der Knoten-Deskriptor 14021–140211 beschreibt einen einzelnen Knoten oder eine Mehrzahl von Knoten im Teilbaum.
  • Unter Zuwendung zu 16B wird, um die Speicherung von dünnbesiedelten Teilbaum-Deskriptoren zu unterstützen, ein Modusfeld 1404 zum Zeigerfeld 408 in der Teilbaumeingabe 404 addiert. Das Zeigerfeld 408 speichert auch die Blockbasisadresse 600' und die Blockbasisadresse 6002 , wobei jeder Block 16 zugeordnete Mapper-Adressen 416 umfaßt, welche insgesamt 32 Mapper-Adressen 416 pro Teilbaumeingabe 404 bereitstellen. Das Modusfeld 1404 speichert einen Moduswert.
  • Der Moduswert, welcher im Modusfeld 1404 gespeichert wird, zeigt die Anzahl von dünnbesiedelten Teilbaum-Deskriptoren 14001–140011 , welche in der Teilbaumeingabe 404 gespeichert werden, und die Anzahl von Knoten-Deskriptoren 14021–140211 , welche in jedem dünnbesiedelten Teilbaum-Deskriptoren 14001–140011 gespeichert werden, an.
  • Tabelle 2 veranschaulicht die Konfiguration der Teilbaum-Eingabe 404 für jeden Modus.
  • Figure 00320001
    Tabelle 2
  • Wenn zum Beispiel unter Bezugnahme auf Tabelle 2 der Moduswert, welcher im Modusfeld 1404 im Zeigerfeld 408 in der Teilbaumeingabe 404 gespeichert wird, auf '4' gesetzt wird, speichert jeder dünnbesiedelte Teilbaum-Deskriptor 1400 in der Teilbaumeingabe 404 zwischen 5 und 7 Knoten-Deskriptoren 14021–140211 . Jeder Knoten-Deskriptor 14021–140211 speichert 9 Bits. Die Gesamtzahl von Bits, welche im dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden, wird durch Multiplizieren der Anzahl der Knoten-Deskriptoren 14021–140211 pro dünnbesiedelten Teilbaum-Deskriptor 14001–140011 mit 9 (der Anzahl von Bits pro Knoten-Deskriptor 14021–140211 ) berechnet. Bei Berechnung der Anzahl von Bits pro dünnbesiedelten Teilbaum-Deskriptor 1400 für Modus 4 speichert ein dünnbesiedelter Teilbaum-Deskriptor 1400 mit 7 Knoten-Deskriptoren 1402 63 Bits (7 Knoten-Deskriptoren * 9 Bits = 63).
  • Die Anzahl der dünnbesiedelten Teilbaum-Deskriptoren 1400 pro Teilbaumeingabe 404 wird durch Dividieren der Anzahl von Bits im Datenfeld 406 durch die Anzahl von Bits im dünnbesiedelten Teilbaum-Deskriptor 14001–140011 berechnet. Für Modus 4 ist die Anzahl von Bits im Datenfeld 406 256 und ist die Anzahl von Bits im dünnbesiedelten Teilbaum-Deskriptor 63. Infolgedessen ist die Anzahl von dünnbesiedelten Teilbaum-Deskriptoren 14001–140011 4 (int(256/63) = 4).
  • Die Gesamtzahl von Knoten-Deskriptoren 14021–140211 pro Teilbaumeingabe 404 ist die Anzahl der Knoten pro Teilbaum multipliziert mit der Anzahl von Teilbäumen pro Teilbaumeingabe 404. Bei der Berechnung fair Modus 4 ist die Gesamtzahl der Knoten-Deskriptoren 1402 pro Teilbaumeingabe 404 28, wenn 7 Knoten-Deskriptoren 14021–140211 in einem dünnbesiedelten Teilbaum-Deskriptor 14001–140011 gespeichert werden (7·4 = 28), und 20, wenn 5 Knoten-Deskriptoren 1402 pro dünnbesiedelten Teilbaum-Deskriptor 14001–140011 gespeichert werden (5·4 = 20).
  • Die Spalte der Tabelle 2 mit den Mapper-Eingaben zeigt an, wie viele Mapper-Eingaben 504 (6B) im Teilbaum-Mapper 418 (5) durch die Teilbaumeingabe 404 verwendet werden. Der Mapper-Wert wird durch Erhöhen der Knoten pro Teilbaum um eins und durch Multiplizieren mit der Anzahl von Teilbäumen im dünnbesiedelten Teilbaum-Deskriptor berechnet. Die Knoten pro Teilbaum werden um eins erhöht, da eine Mapper-Eingabe mehr als die Anzahl von Knoten pro Teilbaumn erforderlich ist, um die Standardeingabe für den Teilbaum speichern.
  • Unter Bezugnahme auf die Reihe von Modus 4 in Tabelle 2 sind 32 ((7 + 1)·4 = 32) Mapper-Eingaben pro Teilbaumeingabe 404 erforderlich, wenn sieben Knoten-Deskriptoren 1402 pro dünnbesiedelten Teilbaum-Deskriptor 1400 vorhanden sind, und sind 24 ((5 + 1)·4 = 24) Knoten-Deskriptoren 1402 pro dünnbesiedelten Teilbaum-Deskriptor 1400 erforderlich, wenn fünf Knoten-Deskriptoren 1402 pro dünnbesiedelten Teilbaum-Deskriptor 1400 vorhanden sind. Die Anzahl von Knoten pro Teilbaum und Teilbäumen pro Teilbaumeingabe 404 wird so ausgewählt, daß die größtmögliche Anzahl von Knoten-Deskriptoren pro Teilbaumeingabe 404 30 nicht überschreitet, da die Mapper-Adressen 416 im Teilbaum-Mapper 418 (5) in 16 Blockzunahmen zugeordnet werden. Die 32 Mapper-Eingaben 416 werden durch Speichern von zwei Blockbasisadressen 6001 , 6002 , welche im Zeigerfeld 408 gespeichert werden, bereitgestellt.
  • Unter Zuwendung zu 16C kann jede Teilbaumeingabe 404 im Teilbaumspeicher 400 im dichtbesiedelten Modus konfiguriert werden, wie in Verbindung mit 6B beschrieben, oder im dünnbesiedelten Modus. Der Teilbaumeingaben-Deskriptor 304 (4), welcher im Teilbaum-Mapper 418 (5) gespeichert wird und welcher in Verbindung mit 4 für den dichtbesiedelten Modus beschrieben wurde, wird abgeändert, um durch Bereitstellen einer Anzeige, ob die Teilbaumeingabe 404 im dichtbesiedelten Modus oder dünnbesiedelten Modus ist, den dünnbesiedelten Modus zu erlauben. Der Anzeiger wird durch das Typfeld 1406 bereitgestellt.
  • Der Zustand des Typfelds 1406 zeigt an, ob die Teilbaumeingabe 4004 im dichtbesiedelten Modus oder im dünnbesiedelten Modus konfiguriert ist. Wenn die Teilbaumeingabe 404 im dünnbesiedelten Modus konfiguriert ist, werden die Werte, welche im Auswahlfeld 1408 des dünnbesiedelten Teilbaum-Deskriptors gespeichert werden, und der Teilbaumindex 312 verwendet, um einen dünnbesiedelten Teilbaum-Deskriptor 1400 auszuwählen. Die Auswahl 1408 des dünnbesiedelten Teilbaum-Deskriptors wird später in Verbindung mit 16 ausführlicher beschrieben.
  • 17 veranschaulicht die Logik 1502 des dünnbesiedelten Modus in der Offset-Logik 700, welche in 8 dargestellt ist, zum Bereitstellen eines Block-Offsets 714, um eine Mapper-Eingabe 504 (6B) für einen Knoten in einem dünnbesiedelten Teilbaum auszuwählen. Die Logik 1502 des dünnbesiedelten Modus stellt das Block-Offset 7l4 in Abhängigkeit von einem Knoten-Deskriptor 1420 bereit, welcher in einem dünnbesiedelten Teilbaum-Deskriptor 1400 in einer Teilbaumeingabe 404 gespeichert wird. Die Offset-Logik 700 umfaßt auch die Logik 1500 des dichtbesiedelten Modus. Die Logik 1500 des dichtbesiedelten Modus umfaßt die Knotenauswahl 706 und die Einserzähl-Logik 708 zum Bereitstellen eines Block-Offsets 714 für eine Route in einem dichtbesiedelten Teilbaum. Die Logik 1500 des dichtbesiedelten Modus wurde bereits in Verbindung mit 8 beschrieben.
  • Wenn der Zustand des Typfeldes 1406 anzeigt, daß die Teilbaumeingabe 404 im dünnbesiedelten Modus konfiguriert ist, werden die Teilbaumdaten 412 von der Teilbaumeingabe 404 an die Logik 1502 des dünnbesiedelten Modus weitergeleitet. Die Logik 1502 des dünnbesiedelten Modus wird in Verbindung mit 18 beschrieben.
  • 18 veranschaulicht die Logik 1502 des dünnbesiedelten Modus, welche in der Offset-Logik 700 in 17 dargestellt ist. Die Logik 1502 des dünnbesiedelten Modus umfaßt eine Teilbaumauswahl-Logik 1600, einen Multiplexer 1602, einen Assoziativspeicher ("CAM", nach Engl. Content Adressable Memory) 1606 und eine Umwandlungslogik 1604. Die dünnbesiedelten Teilbaum-Deskriptoren 14001–140011 , welche im Datenfeld 406 in der ausgewählten Teilbaumeingabe 404 gespeichert werden, werden auf den Teilbaumdaten 412 an die Offset-Logik 700 weitergeleitet. Die Offset-Logik 700 leitet die dünnbesiedelten Teilbaum-Deskriptoren 14001–140011 an den Multiplexer 1602 in der Logik 1502 des dünnbesiedelten Modus weiter. Einer der dünnbesiedelten Teilbaum-Deskriptoren 1400' in den Teilbaumdaten 412 wird durch die Auswahl 1614, welche durch die Teilbaumauswahl-Logik 1600 erzeugt wird, ausgewählt.
  • Die Teilbaumauswahl-Logik 1600 erzeugt die Auswahl 1614, um den dünnbesiedelten Teilbaum-Deskriptor 1400' auszuwählen in Abhängigkeit von der Auswahl 1408 dünnbesiedelter Teilbaum-Deskriptoren, welche von der Mapper-Eingabe weitergeleitet wird, die auf der vorhergehenden Mapper-Stufe ausgewählt wurde, und dem Modus 1404, welcher im Zeigerfeld 408 in der ausgewählten Teilbaumeingabe 404 gespeichert wird. Tabelle 3 veranschaulicht den ausgewählten dünnbesiedelten Teilbaum-Deskriptor 14001 und die jeweiligen Teilbaumdatenbits 412, welche auf dem ausgewählten dünnbesiedelten Teilbaum-Deskriptor 1610 vom Multiplexer 1602 für eine Teilbaumeingabe 404 des Modus 4 weitergeleitet werden. Unter Bezugnahme auf die Reihe von Modus 4 in Tabelle 2 können in der Teilbaumeingabe 404 des Modus 4 vier dünnbesiedelte Teilbaum-Deskriptoren gespeichert werden. Jeder der vier dünnbesiedelten Teilbaum-Deskriptoren 1400 ist 63 Bits und kann von sieben bis fünf Knoten-Deskriptoren 1402 speichern. Infolgedessen beginnt jeder der vier dünnbesiedelten Teilbaum-Deskriptoren 1400 bei einer 63-Bit-Grenze. Der erste dünnbesiedelte Teilbaum-Deskriptor 14001 wird bei 62:0 im Datenfeld 406 gespeichert. Der zweite dünnbesiedelte Teilbaum-Deskriptor 14002 wird bei 125:63 im Datenfeld 406 gespeichert. Der dritte dünnbesiedelte Teilbaum-Deskriptor 14003 wird bei 188:126 im Datenfeld 406 gespeichert und der vierte dünnbesiedelte Teilbaum-Deskriptor 14004 wird bei 251:189 Bits im Datenfeld gespeichert. Die jeweiligen Bits im Datenfeld 406 werden durch die Auswahl 1408 dünnbesiedelter Teilbaum-Deskriptoren ausgewählt. Wenn zum Beispiel bei Betrachtung von Tabelle 3 die Auswahl 1408 dünnbesiedelter Teilbaum-Deskriptoren '0001' ist, wird der zweite dünnbesiedelte Teilbaum-Deskriptor 14002 ausgewählt und werden die Bits 125:63 der 256-Bit-Teilbaumdaten 412 durch den Multiplexer 1602 auf dem ausgewählten dünnbesiedelten Teilbaum-Deskriptor 1610 an die Uinwandlungslogik 1604 weitergeleitet.
  • Figure 00350001
    Tabelle 3
  • Jede Teilbaumeingabe 404 im Teilbaumspeicher 400 kann im dünnbesiedelten Modus oder im dichtbesiedelten Modus konfiguriert werden. Jede Teilbaumeingabe 404, welche im dünnbesiedelten Modus konfiguriert ist, kann so konfiguriert werden, daß sie eine verschiedene Anzahl von Knoten-Deskriptoren 1402 pro dünnbesiedelten Teilbaum-Deskriptor 1400 durch Modus 1404 speichert. Alle dünnbesiedelten Teilbaum-Deskriptoren 1400 in der Teilbaumeingabe 404, welche im dünnbesiedelten Modus konfiguriert ist, speichern dieselbe Anzahl von Knoten-Deskriptoren 1402 pro dünnbesiedelten Teilbaum-Deskriptor 1400.
  • Ein Knoten-Deskriptor 1402 kann codiert werden, um mehrfache Knoten im Teilbaum darzustellen. Mehrfache Acht-Bit-Knoten, welche durch den Knoten-Deskriptor 1402 dargestellt werden, werden durch Maskieren von einigen der acht Bits identifiziert. Anstelle des Speicherns von Maskenbits bei jedem Knoten-Deskriptor 1402 wird ein Neun-Bit-Knoten-Deskriptor 1402 verwendet, um die acht Bit breiten Knoten, welche durch den Knoten-Deskriptor 1402 dargestellt werden, voll zu codieren. Der acht Bit breite Knoten wird in einem neun Bit breiten Knoten-Deskriptor 1402 unter Verwendung der Bit-Lauflängencodierung codiert. Die Bit-Lauflängencodierung erlaubt es, zu identifizieren, welche der acht Bits des Knoten maskiert sind.
  • Die Umwandlungslogik 1604 wandelt die neun Bit breiten Knoten-Deskritporen 14021–14024 , welche im ausgewählten dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden, in Acht-Bit-CAM-Werte 1612 um, welche Bits enthalten, die auf 'X' (beliebig) gesetzt sind, und lädt die Acht-Bit-CAM-Werte 1612 in den CAM 1606. Ein Beispiel der Umwandlung der 9-Bit-Knoten-Deskriptoren 1402 in 8-Bit-CAM-Werte 1612 durch die Umwandlungslogik 1604 ist in der folgenden Tabelle 4 dargestellt.
  • Figure 00360001
    Tabelle 4
  • Die Spalte mit den 9-Bit-Codes veranschaulicht Werte, welche in den Knoten-Deskriptoren 1402 gespeichert werden. Bei Betrachtung der ersten Reihe in Tabelle 4 ist der 9-Bit-Code, welcher im Knoten-Deskriptor 1402 gespeichert wird, '101100100' und wird der entsprechende 8-Bit-Wert '101100XX' im CAM 1606 gespeichert. Die Umwandlungslogik 1604 wandelt den 9-Bit-Code durch Absuchen des 9-Bit-Codes von rechts nach links nach dem ersten Bit, welches auf '1' gesetzt ist, um. Bei Betrachtung der Bits im 9-Bit-Code von rechts nach links sind die ersten beiden Bits auf '0' gesetzt und ist das dritte Bit auf '1' gesetzt. Die Umwandlungslogik 1604 wandelt die '100' in zwei Beliebige ('XX') um, da zwei '0' rechts vom ersten '1' stehen. Der erste '1' wird ignoriert und die restlichen Bits werden direkt in die nächsten Bits des 8-Bit-Wertes kopiert.
  • Bei Betrachtung der zweiten Reihe in Tabelle 4 ist der 9-Bit-Code, welcher im Knoten-Deskriptor 1402 gespeichert ist, '100100000'. Die Umwandlungslogik 1604 wandelt den 9-Bit-Code durch Absuchen des 9-Bit-Codes von rechts nach links nach dem ersten '1' um. Die fünfte Ziffer speichert einen '1'. Der 9-Bit-Code wird in einen 8-Bit-Wert umgewandelt, wobei die fünf niedrigstwertigen Bits ("LSBs", nach Engl. Least Significant Bits) auf "beliebig" ("X") gesetzt werden. durch Speichern der Knoten-Deskriptoren 1402 unter Verwendung der 9-Bit-Bit-Lauflängencodierung wird die Anzahl von Bits, welche pro Knoten-Deskriptor 1402 erforderlich sind, auf ein Minimum herabgesetzt, wodurch die Anzahl von Knoten-Deskriptoren 1402, welche in der Nachschlagetabelle 200 gespeichert werden können, erhöht wird.
  • Nach der Umwandlung der 9-Bit-Knoten-Deskriptoren 1402 in 8-Bit-Werte lädt die Umwandlungslogik 1604 die 8-Bit-Werte in den CAM 1606. Die 8-Bit-Werte werden in derselben Reihenfolge in den CAM 1606 geladen, wie die Knoten-Deskriptoren 1402 im ausgewählten dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden; das heißt, von der kürzesten zur längsten Übereinstimmung. Der CAM 1606 stellt Speicherung zum Speichern der größtmöglichen Anzahl von Knoten-Deskriptoren 1402 pro dünnbesiedelten Teilbaum-Deskriptor 1400 bereit. Infolgedessen ist der CAM 8 Bits breit mal sechzehn Eingaben tief, um fünfzehn Eingaben bereitzustellen, um die größtmögliche Anzahl von Knoten-Deskriptoren 1402 für einen dünnbesiedelten Teilbaum-Deskriptor 1400 des Modus 5 und eine Mapper-Standardadresse zu speichern. Der CAM 1606 hat einen Resolver für Ternär-Fähigkeit und Mehrfachübereinstimmung eingebaut. Ein CAM 1606 kleiner Größe kann im Gegensatz zur Bereitstellung eines echten Assoziativspeichers in Gattern realisiert werden; das heißt, der CAM 1606 kann in einer Hardware-Schaltungsanordnung realisiert werden, welche einen CAM emuliert.
  • Die Anzahl von Knoten-Deskriptoren 1402, welche in einem dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden, bestimmt die Teilbaumeingabe 402, in welcher der dünnbesiedelte Teilbaum-Deskriptor 1400 gespeichert wird. Dünnbesiedelte Teilbaum-Deskriptoren 1400, welche Knoten-Deskriptoren 1402 innerhalb des Bereichs für einen bestimmten Modus speichern, werden in derselben Teilbaumeingabe 404 gespeichert. Eine Mapper-Standardadresse wird für eine Standardroute für jeden Teilbaum berechnet. Ein 8-Bit-Standardwert wird an der ersten Stelle im CAM 1606 dauerhaft gespeichert, um die Mapper-Standardadresse zu berechnen.
  • Nachdem die 8-Bit-Werte für den ausgewählten dünnbesiedelten Teilbaum 1400 in den CAM 1606 geladen wurden, wird der CAM 1606 mit dem nächsten Abschnitt des Schlüssels 210b abgesucht. Die Eingabe im CAM 1606, welche mit der größten Anzahl von Bits im nächsten Abschnitt des Schlüssels 210b übereinstimmt, wird ausgewählt. Die Übereinstimmungsadresse, welche aus dem Absuchen des CAMs resultiert, wird als das Block-Offset 714 weitergeleitet. Das Block-Offset 714 wird verwendet, um die Mapper-Adresse 416 für die Mapper-Eingabe zu bestimmen, welche der Route entspricht, die im Teilbaum-Mapper 418 (5) gespeichert wird.
  • 19A–D veranschaulichen die Auswahl eines Block-Offsets 714 für einen Knoten in einem dünnbesiedelten Teilbaum 1700. 19A ist eine grafische Darstellung der Routen in dem dünnbesiedelten Teilbaum 1700. Knoten im Teilbaum 1700 entsprechen einer von drei Routen r0, r1 und r2, wobei r0 die Standardroute für den Teilbaum 1700 ist. Zwei Routen r1, r2 werden in den Knoten-Deskriptoren 14021 und 14022 in einem dünnbesiedelten Teilbaum-Deskriptor 1400 codiert. Ein Wert für die Standardroute r0 wird in der ersten Eingabe 1702 im CAM 1606 dauerhaft gespeichert. Unter Bezugnahme auf Tabelle 2 wird ein dünnbesiedelter Teilbaum-Deskriptor 1400 mit zwei Knoten-Deskriptoren 1402 in der Teilbaumeingabe 404 gespeichert, wobei das Modusfeld 1404 auf '1' gesetzt wird.
  • Bei Betrachtung des Teilbaums 1700 entspricht r2 allen Knoten, welche mit 10xxxxxx übereinstimmen, und entspricht r1 allen Knoten, welche mit 010xxxxx übereinstimmen. Um die Anzahl von Bits, welche durch jeden Knoten-Deskriptor 14021 , 14022 benötigt werden, um jede Route im dünnbesiedelten Teilbaum-Deskriptor 1400 zu beschreiben, auf ein Minimum herabzusetzen, wird der Knoten-Deskriptor 14021 , 14022 unter Verwendung der die Bit-Lauflängencodierung codiert. Das Codierungsverfahren verwendet ein Bit mehr als die Anzahl von Bits, welche zum Vollcodieren des Knotens verwendet werden. Ein '1' wird an der Stelle des ersten 'X' ('beliebig') eingefügt und die restlichen X werden als 0 codiert. Infolgedessen wird die Route 10xxxxxx in 101000000 übersetzt und wird 010xxxxx in 010100000 übersetzt.
  • 19B veranschaulicht die Speicherung der Knoten-Deskriptoren 14021 und 14022 im dünnbesiedelten Teilbaum-Deskriptor 1400. Die Knoten-Deskriptoren 14021 und 14022 werden in einer Teilbaumeingabe 404 gespeichert, wobei das Modusfeld 1404 auf '1' gesetzt wird, da zwei Knoten-Deskriptoren 14021 und 14022 in dem dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden. Die längste Übereinstimmung für den Teilbaum ist r1, da r1 eine Übereinstimmung der ersten drei Bits erfordert und r2 eine Übereinstimmung der ersten zwei Bits erfordert. Die Knoten-Deskriptoren 14021 und 14022 werden in der Reihenfolge von der kürzesten zur längsten Übereinstimmung im dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert, wobei der Knoten-Deskriptor 1402' für r2 zuerst gespeichert wird und der Knoten-Deskriptor 14022 für r1 anschließend gespeichert wird.
  • 19C veranschaulicht die Umwandlung des Knoten-Deskriptors 14022 in einen 8-Bit-Maskenwert 1706. Bei Betrachtung der Knoten-Deskriptor-Bits 17081–17089 von links nach rechts wird der erste '1' in Bit 17086 gespeichert, was das Ende des Maskenbits für den 8-Bit-Maskenwert 1706 markiert. Um den Knoten-Deskriptor 1402' in einen 8-Bit-Maskenwert 1706 umzuwandeln, werden die folgenden Bit-Umwandlungen durchgeführt. Der '0', welcher im Knoten-Deskriptor-Bit 17081 gespeichert wird, wird in 'X' umgewandelt und im 8-Bit-Maskenwert-Bit 17101 gespeichert. Der '0', welcher im Knoten-Deskriptor-Bit 17082 gespeichert wird, wird in 'X' umgewandelt und im 8-Bit-Maskenwert-Bit 17102 gespeichert. Der '0', welcher im Knoten-Deskriptor-Bit 17083 gespeichert wird, wird in 'X' umgewandelt und im 8-Bit-Maskenwert-Bit 17103 gespeichert. Der '0', welcher im Knoten-Deskriptor-Bit 17084 gespeichert wird, wird in 'X' umgewandelt und im 8-Bit-Maskenwert-Bit 17104 gespeichert. Der '0', welcher im Knoten-Deskriptor-Bit 17085 gespeichert wird, wird in 'X' umgewandelt und im 8-Bit-Maskenwert-Bit 17105 gespeichert. Der '1', welcher im Knoten-Deskriptor-Bit 17086 gespeichert wird, wird ignoriert. Der '0', welcher im Knoten-Deskriptor-Bit 17087 gespeichert wird, wird im 8-Bit-Maskenwert-Bit 17106 gespeichert. Der '1', welcher im Knoten-Deskriptor-Bit 17088 gespeichert wird, wird im 8-Bit-Maskenwert-Bit 17107 gespeichert. Der '0', welcher im Knoten-Deskriptor-Bit 17089 gespeichert wird, wird im 8-Bit-Maskenwert-Bit 17108 gespeichert.
  • 19D veranschaulicht die Speicherung der Knoten-Deskriptoren 14021 und 14022 im CAM 1606 und die entsprechenden Mapper-Eingaben 5041–5043 , welche im Teilbaum-Mappen 418 (5) für den ausgewählten dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden. Die 9-Bit-Knoten-Deskriptoren 14021 und 14022 , welche in dem ausgewählten Teilbaum-Deskriptor 1400 gespeichert werden, werden in der Umwandlungslogik 1604 (18) umgewandelt und in den CAM 1606 geladen. Die erste Eingabe 1702 im CAM 1606 ist die Standardeingabe für r0, welche in Teilbaum 1700 in 19A dargestellt ist. Die zweite Eingabe 1704 wird vom ersten Knoten-Deskriptor 14021 umgewandelt, welcher in dem ausgewählten dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert wird. Die zweite Eingabe 1704 ist die kürzeste Übereinstimmung, welche für r2 umgewandelt wird. Der zweite Knoten-Deskriptor 14022 , welcher in dem ausgewählten Teilbaum-Deskriptor 1400 gespeichert wird, wird von 010100000 in 010XXXXX umgewandelt und in der dritten Eingabe 1706 im CAM 1606 gespeichert.
  • Ein Absuchen des CAM 1606 führt zum Block-Offset 714 (18). Das Block-Offset 714 wird verwendet, um die Mapper-Adresse 416 für die Mapper-Eingabe 5041–5043 , welche im Teilbaum-Mapper 418 (5) gespeichert ist, zu bestimmen. Der CAM 1606 wird mit zweitem Abschnitt des Schlüssels 210b nach der Eingabe 1702, 1704, 1706, welche die längste Übereinstimmung speichert, abgesucht Das Block-Offset 714, welche durch den CAM 1606 bereitgestellt wird, wird in Abhängigkeit von einer der Blockbasisadressen 6001 , 6002 , welche im Zeigerfeld 408 in der ausgewählten Teilbaumeingabe 404 gespeichert sind, mit einer Teilbaum-Basisadresse kombiniert.
  • 20 ist ein Bockdiagramm, welches die Basisauswahl-Logik 1800 des dünnbesiedelte Modus in der Zeiger-Logik 702, welche in 8 dargestellt ist, veranschaulicht. Die Zeiger-Logik 702 wählt die Basisadresse 716 aus, welche verwendet wird, um die Mapper-Adresse 416 für die Mapper-Eingabe 504 (6B) im Teilbaum-Mapper 418 (5) zu berechnen. Die Zeiger-Logik 701 umfaßt die Basisauswahl-Logik 710 des dichtbesiedelten Modus und die Basisauswahl-Logik 1800 des dünnbesiedelten Modus, von welchen eine ausgewählt wird in Abhängigkeit des Zustandes von Typ 1406, welcher im Teilbaumeingaben-Deskriptor 304 ( 4) gespeichert wird, welcher von der vorhergehenden Mapper-Stufe weitergeleitet wurde. Wie bereits beschrieben wurde, zeigt der Zustand von Typ 1406 an, ob die Teilbaumeingabe 404 im dichtbesiedelten Modus konfiguriert ist.
  • Die Basisauswahl-Logik 1800 des dünnbesiedelten Modus berechnet die Basisadresse 716 für den dünnbesiedelten Teilbaum-Deskriptor 1400, wenn die Teilbaumeingabe 404 eine Mehrzahl von dünnbesiedelten Teilbaum-Deskriptoren 1400 speichert. Die Basisauswahl-Logik 1800 des dünnbesiedelten Modus berechnet die Basisadresse 716 unter Verwendung des Moduswertes 1608, welcher im Modusfeld 1404 gespeichert ist, und des Teilbaumzeigers 414, welcher im Blockbasisadreßfeld 6001 , 6002 in der Teilbaumeingabe 404 gespeichert ist, und der Auswahl 1408 dünnbesiedelter Teilbaum-Deskriptoren, welche im Teilbaumeingaben-Deskriptor 304 (4) gespeichert wird, welcher von der vorhergehenden Mapper-Stufe weitergeleitet wurde. Die Basisadresse 716 wird folgendermaßen berechnet: Basisadresse (für den dünnbesiedelten Teilbaum-Deskriptor) = Blockbasisadresse + Basis-Offset, wobei Basis-Offset = ((1 + Knoten/Teilbaum)·Auswahl dünnbesiedelter Teilbaum-Deskriptoren).
  • Um zum Beispiel die Basisadresse 716 für den Beginn von Teilbaumzahl 2 in einer Teilbaumeingabe 404, welche im dünnbesiedelten Modus 4 konfiguriert ist, zu finden, wird zuerst das Basis-Offset berechnet. Die Auswahl 1408 dünnbesiedelter Teilbaum-Deskriptoren für die Teilbaumzahl 2 ist '1' und die Anzahl von Knoten/Teilbäumen ist 7 (siehe Tabelle 2). Das Basis-Offset ist 8 ((1 + 7)·1). Jede Blockbasisadresse 6001 , 6002 ist die Basisadresse für einen Block von 16 Mapper-Adressen, welche für die Teilbaumeingabe 404 zugeordnet werden.
  • Das Basis-Offset für die Teilbaumzahl 2 ist 8, was weniger als 16 ist, weshalb die Blockadresse für Teilbaum 2 die Blockbasisadresse 6001 ist und die Basisadresse 716 für den dünnbesiedelten Teilbaum-Deskriptor die Blockbasisadresse 6001 + 8 ist. Die folgende Tabelle 5 veranschaulicht die Teilbaum-Basisadresse für jeden der vier Teilbäume in einer Teilbaumeingabe 404, welche im Modus 4 konfiguriert ist.
  • Figure 00410001
    Tabelle 5
  • 21 veranschaulicht einen dichtbesiedelten Teilbaum-Deskriptor und einen dünnbesiedelten Teilbaum-Deskriptor, welche im Teilbaumspeicher 400 gespeichert werden. 21 wird in Verbindung mit 15 beschrieben. Ein dichtbesiedelter Teilbaum-Deskriptor für Teilbaum B (21) wird im Datenfeld 4061 in der Teilbaumeingabe 4041 gespeichert. Ein dünnbesiedelter Teilbaum-Deskriptor 14001 für Teilbaum A (21) wird im Datenfeld 4062 in der Teibaumeingabe 4042 gespeichert. Der dichtbesiedelte Teilbaum-Deskriptor speichert ein Knoten-Bit für jeden Knoten auf der unteren Stufe von Teilbaum B, wie bereits in Verbindung mit 6B beschrieben wurde. Der dünnbesiedelte Teilbaum-Deskriptor 14001 umfaßt die Knoten-Deskriptoren 14021 und 14022 , welche den Routen r4 und r5 entsprechen, wie in Verbindung mit 19B beschrieben wurde. Der Teilbaumindex 312 wählt die Teilbaumeingabe 4041 , 4042 aus.
  • Der Teilbaumindex 312, welcher in einem Teilbaumeingaben-Deskriptor 304 (4) in einer Mapper-Eingabe 504 (6B) im Mapper 106a für s0 (15) gespeichert wird, wählt die Teilbaumeingabe 4041 aus. Der Teilbaumindex 312, welcher in einem Teilbaumeingaben-Deskriptor 304 (4) in einer Mapper-Eingabe 504 (6B) im Mapper 106a für s1 (15) gespeichert wird, wählt die Teilbaumeingabe 4042 aus. Infolgedessen kann der Teilbaumspeicher 400 Teilbaumeingaben 4041 , 4042 für dünnbesiedelte Teilbäume und dichtbesiedelte Teilbäume speichern.
  • 22 ist ein Ablaufdiagramm, welches ein Verfahren zur Bereitstellung einer Mapper-Adresse 416 (5) für eine Mapper-Eingabe 504 (6B) in einem Teilbaum-Mapper 418 (5) veranschaulicht, welche eine Route für einen Knoten in einem dünnbesiedelten Teilbaum und einem dichtbesiedelten Teilbaum speichert. Jede Teilbaumeingabe 404 kann eine Mehrzahl von dünnbesiedelten Teilbaum-Deskriptoren oder einen einzelnen dichtbesiedelten Teilbaum-Deskriptor speichern. Eine Kombination von dünnbesiedelten Teilbaum-Deskriptoren und dichtbesiedelten Teilbaum-Deskriptoren ist möglich in Abhängigkeit davon, wie die Routen im Binärbaum verteilt werden. Die Flexibilität, dünnbesiedelten Modus und dichtbesiedelte Teilbaum-Deskriptoren in Teilbaumeingaben 404 im Teilbaumspeicher 400 zu mischen und übereinzustimmen, erlaubt einen besseren Gebrauch des Teilbaumspeichers 400.
  • Bei Schritt 1900 wird die Konfiguration der ausgewählten Teilbaumeingabe 404 vom Zustand von Typ 1406 (16C) bestimmt, welcher im Teilbaumeingaben-Deskriptor 304 (4) gespeichert wird, welcher auf der vorhergehenden Mapper-Stufe ausgewählt wurde. Wenn der Typ der Teilbaumeingabe 404 im dünnbesiedelten Modus konfguriert ist, wird die Verarbeitung bei Schritt 1902 fortgesetzt. Wenn dem nicht so ist, wird die Verarbeitung bei Schritt 1914 fortgesetzt.
  • Bei Schritt 1902 wird die Teileingabe 404 im dünnbesiedelten Modus konfiguriert. Eine Teilbaumeingabe 404, welche im dünnbesiedelten Modus konfiguriert ist, speichert eine Mehrzahl von dünnbesiedelten Teilbaum-Deskriptoren 1400. Die Anzahl von dünnbesiedelten Teilbaum-Deskriptoren 1400, welche in der Teilbaumeingabe 404 gespeichert werden, hängt vom Zustand des Modusfeldes 1404 ab. Die Logik 1502 des dünnbesiedelten Modus in der Offset-Logik 700 wählt den dünnbesiedelten Teilbaum-Deskriptor 1400 aus der Teilbaumeingabe 404 in Abhängigkeit von der Auswahl 1408 dünnbesiedelter Teilbaum-Deskriptoren, welche im Teilbaumeingaben-Deskriptor 304 (4) gespeichert wird, welcher von der vorhergehende Mapper-Stufe weitergeleitet wurde, und dem Inhalt des Modusfeldes 1404 aus, wie bereits in Verbindung mit 14 beschrieben wurde. Die Verarbeitung wird bei Schritt 1904 fortgesetzt.
  • Bei Schritt 1904 werden die codierten 9-Bit-Werte, welche in den Knoten-Deskriptoren 1402 im ausgewählten dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden, in 8-Bit-Werte umgewandelt und in der Reihenfolge von der kürzesten zur längsten Übereinstimmung im CAM 1606 gespeichert. Die Verarbeitung wird bei Schritt 1906 fortgesetzt.
  • Bei Schritt 1906 wird der CAM 1606 mit dem nächsten Abschnitt des Schlüssels 2106 nach der CAM-Eingabe, welche die längste Übereinstimmung speichert, abgesucht. Die Verarbeitung wird bei Schritt 1908 fortgesetzt.
  • Bei Schritt 1908 wird die Adresse der Stelle im CAM 1606, welche die längste Übereinstimmüng für den nächsten Abschnitt des Schlüssels 210b speichert, als das Block-Offset 714 weitergeleitet. Das Block-Offset 714 wird verwendet, um die Mapper-Adresse 416 (5) der Mapper-Eingabe 504 (6B) im Teilbaum-Mapper 418 (5) zu berechnen. Die Verarbeitung wird bei Schritt 1910 fortgesetzt.
  • Bei Schritt 1910 wird die Basisadresse 716 (20) für den ausgewählten dünnbesiedelten Teilbaum-Deskriptor 1400 berechnet in Abhängigkeit von der Auswahl 1408 dünnbesiedelter Teilbaum-Deskriptoren, welche im Teilbaumeingaben-Deskriptor 304 (4) gespeichert wird, welcher von der vorhergehenden Mapper-Stufe weitergeleitet wurde, und dem Inhalt des Modusfeldes 1404, welches in der ausgewählten Teilbaumeingabe 404 gespeichert wird. Die Verarbeitung wird bei Schritt 1912 fortgesetzt.
  • Bei Schritt 1912 wird die Mapper-Adresse 416 durch Addieren des Block-Offsets 714 und der Basisadresse 716 in der Addierer-Logik 704 (8) berechnet. Die Mapper-Eingabe 504 ( 6B), welche durch die Mapper-Adresse 416 im Teilbaum-Mapper 418 (5) identifiziert wird, speichert entweder eine Routeneingabe 302 (4) oder einen Teilbaumeingaben-Deskriptor 304 (4). Wenn die Mapper-Eingabe 504 (6B) eine Routeneingabe 302 (4) speichert, ist die Suche abgeschlossen. Wenn die Mapper-Eingabe 504 (6B) einen Teilbaumeingaben-Deskriptor 304 (4) speichert, wird die Suche nach dem Wert, welcher dem Schlüssel 210 entspricht, auf der nächsten Mapper-Stufe fortgesetzt.
  • Bei Schritt 1914 wird die Teilbaumeingabe 404 im dichtbesiedelten Modus konfiguriert und speichert einen einzelnen dichtbesiedelten Teilbaum-Deskriptor im Datenfeld 406. Das Block-Offset 714 wird durch Zählen der Anzahl von '1', welche im dichtbesiedelten Teilbaum-Deskriptor gespeichert werden, welcher im Datenfeld 406 in der Teilbaumeingabe 404 gespeichert wird, berechnet, wie bereits in Verbindung mit 6B beschrieben. Die Verarbeitung wird bei Schritt 1916 fortgesetzt.
  • Bei Schritt 1916 speichert die Teilbaumeingabe 404 sechzehn Blockbasisadressen 600 im Zeigerfeld 408 in der Teilbaumeingabe 404. Einer der Blockbasiszeiger 600 wird durch die Basisauswahl-Logik 710 des dichtbesiedelten Modus in der Zeigerlogik 702 ausgewählt, welche in Verbindung mit 8 bereits beschrieben wurde. Die Verarbeitung wird bei Schritt 1912 fortgesetzt.
  • Schrittweise Aktualisierung
  • 23 veranschaulicht eine Binärbaumdarstellung einer neuen Route, welche zur Nachschlagetabelle 200 zu addieren ist. Der Binärbaum veranschaulicht Routen, welche in der Nachschlagetabelle 200 für Mapper-Stufe_1 2000, Mapper-Stufe_2 2002 und Mapper-Stufe_3 2004 gespeichert werden. Die Mapper-Stufe_2 2002 speichert Routen für die Teilbäume A und B. Die Mapper-Stufe_3 2004 speichert Routen für die Teilbäume A1, A2 B1 und B2. s5 stellt einen Teilbaumeingaben-Deskriptor 304 (4), welcher in einem Teilbaum-Mapper 418 ( 5) gespeichert wird, dar. Der Teilbaumeingaben-Deskriptor 304 (5) für s5 speichert einen Zeiger zu Teilbaum B2, welcher es erlaubt, die Suche nach einer Route längster Übereinstimmung für einen Schlüssel 210 auf der Mapper-Stufe_3 2004 fortzusetzen.
  • Teilbaum B2 2006 ist ein dünnbesiedelter Teilbaum, da er nur zwei Routen, r6 und h1, aufweist. Infolgedessen werden die Knoten-Deskriptoren 1402 (16A) für die Knoten r6 und h1 in einem dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert, wie bereits in Verbindung mit 14A beschrieben wurde. Der dünnbesiedelte Teilbaum-Deskriptor 1400 für den Teilbaum B2 2006 wird in einer Teilbaumeingabe 404 gespeichert, wobei das Modusfeld 1404 im Teilbaumspeicher 400 auf '1' gesetzt wird, da zwei Knoten-Deskriptoren 1402 vorhanden sind, welche im dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden.
  • Eine neue Route h2, welche im Teilbaum B2' 2008 dargestellt ist, ist zu Nachschlagetabelle 200 zu addieren. Die neue Route h1 kann nicht direkt zum Teilbaum B2 2006 in der Nachschlagetabelle addiert werden, da die Addition einer Route zum Teilbaum B2 2006 die Anzahl von Knoten-Deskriptoren 1402, welche im dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden, von 2 auf 3 erhöht. Die Addition eines Knoten-Deskriptors 1402 zum dünnbesiedelten Teilbaum-Deskriptor 1400 erfordert die Zuordnung eines neuen dünnbesiedelten Teilbaum-Deskriptors 1400 in einer Teilbaumeingabe 404, wobei das Modusfeld 1404 auf '2' gesetzt wird. Infolgedessen erfordert die Addition der neuen Route hl die Ersetzung des Teilbaumes B2 2006 durch den Teilbaum B2' 2008.
  • 24 veranschaulicht Aktualisierungsrouten, welche in einem Prozessorspeicher 2400 gespeichert werden. Eine Kopie des Binärbaumes, welcher in der Nachschlagetabelle 200 gespeichert wird, wird auch im Prozessorspeicher 2400 getrennt von der Nachschlagetabelle 200 gespeichert. Die Routen, welche für den Teilbaum B2 2006 gespeichert werden, werden auf den Teilbaum B2' 2008 im Prozessorspeicher 2400 kopiert und die neue Route h2 wird zum Teilbaum B2' 2008 addiert.
  • Eine Routen-Aktualisierungsroutine 2402 erzeugt eine Folge von Routen-Aktualisierungsbefehlen 2404, um den Teilbaum B2' 2008 zu Nachschlagetabelle 200 zu addieren, und leitet die Routenaktualisierungen 2404 an die Tabellen-Aktualisierungsroutine 2406 weiter. Die Tabellen-Aktualisierungsroutine 2406 erzeugt Tabellenaktualisierungen 2410 für die Routenaktualisierungen 2402 und leitet die Aktualisierungszyklen 2412 weiter, um die Nachschlagetabelle 200 mit den Routenaktualisierungen 2404 zu aktualisieren. Die Aktualisierungszyklen 2412 schreiben die Routenaktualisierungen in die geeigneten Speicherstellen in dem Teilbaumspeicher 400 (5) und dem Teilbaum-Mapper 418 (5).
  • Um auf 23 zurückzukommen, umfassen die Aktualisierungszyklen 2412 Befehle, um einen Abschnitt des Teilbaum-Mappers 418 (5) zuzuordnen, um die Routen für den neuen Teilbaum B2' 2008 in den Mapper-Eingaben 504 (6B) zu speichern. Der Teilbaum B2' 2008 enthält Routeneingaben, welche in den Mapper-Eingaben 504 (6B) für die Routen h1 und r6 und die neue Route h2 gespeichert werden. Nachdem die Routeneingaben für den Teilbaum B2' 2008 in den Mapper-Eingaben 504 (6B) im Teilbaum-Mapper 418 (5) gespeichert wurden, werden die Knoten-Deskriptoren 1402 geschaffen und in einem dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert. Der dünnbesiedelte Teilbaum-Deskriptor 1400 wird in der Teilbaumeingabe 404 gespeichert. Der Modus 1404 der Teilbaumeingabe 404 hängt mit der Anzahl von Knoten-Deskriptoren 1402, welche im dünnbesiedelten Teilbaum-Deskriptor 1400 gespeichert werden, zusammen.
  • Nachdem der dünnbesiedelte Teilbaum-Deskriptor 1400 für den Teilbaum B2' 2088 in einer Teilbaumeingabe 404 im Teilbaumspeicher 400 in der Nachschlagetabelle 200 gespeichert wurde, wird der Teilbaumeingaben-Deskriptor 304 (4), welcher durch s5 dargestellt ist, abgeändert, umstatt auf den Teilbaum B2 2006 auf den Teilbaum B2' 2008 zu zeigen. Während der Teilbaum B2' 2008 zu Nachschlagetabelle addiert wird, kann auf die Routen r6 und h1, welche im Teilbaum B2 2006 gespeichert werden, durch s5 zugegriffen werden. Danach wird Teilbaum B2' 2008 in der Nachschlagetabelle gespeichert und wird s5 abgeändert, um auf den Teilbaum B2' 2008 zu zeigen, und es kann auf die Routen r6, h1 und die neue Route h2 zugegriffen werden. Infolgedessen kann der Teilbaum B2 2006 weiterhin nach Routenindizes abgesucht werden, welche Route r6 und h1 entsprechen, während die neue Route h2 zur Nachschlagetabelle 200 addiert wird.
  • 25 veranschaulicht die neue Route h2, welche in 23 dargestellt ist, gespeichert in der Mapper-Eingabe 504c4 im Teilbaum-Mapper 418b in der Nachschlagetabelle 200. 25 wird in Verbindung mit der Binärbaumdarstellung beschrieben, welche in 24 dargestellt ist.
  • Teilbaum B auf der Mapper-Stufe_2 2002 weist drei Routen auf; und zwar r3, s4 und s5. Teilbaum B ist ein dünnbesiedelter Teilbaum, da er weniger als sechzehn Routen aufweist. Die Knoten-Deskriptoren 1402a1–1402a3 für den Teilbaum B r3, s4 und s5 werden in einem dünnbesiedelten Teilbaum-Deskriptor 1400a1 in Teilbaumeingabe 404a im Teilbaumspeicher 400a gespeichert. Eine Mapper-Eingabe 504a2–504a4 wird im Teilbaum-Mapper 418a für jede Route in Teilbaum B gespeichert. Eine Standardroute für de Teilbaum B wird in der Mapper-Eingabe 504a1 im Teilbaum-Mapper 418a gespeichert. Jede Mapper-Eingabe 504a2–504a4 speichert eine Routeneingabe 302 (4) oder einen Teilbaumeingaben-Deskriptor 304 (4) für den Knoten. Ein Teilbaumeingaben-Deskriptor 304 (4) wird für Route s4 in 504a3 und s5 in 504a4 gespeichert. Der Teilbaumeingaben-Deskriptor 304 (4), welcher in der Mapper-Eingabe 504a4 für s5 gespeichert wird, stellt den Teilbaumindex 312b für den Teilbaumspeicher 400b bereit, um die Suche auf der nächsten Stufe zu beginnen; das heißt, für Mapper-Stufe_3 2004.
  • Der Teilbaum B2 ist ebenfalls ein dünnbesiedelter Teilbaum, da er zwei Routen aufweist; und zwar h1 und r6. Die Knoten-Deskriptoren 1402b1–1402b2 werden in dem dünnbesiedelten Teilbaum-Deskriptor 1400b1 in der Teilbaumeingabe 404b im Teilbaumspeicher 400b gespeichert. Jede Route im Teilbaum B2 wird in einer Mapper-Eingabe 504b2–504b3 gespeichert und die Standardroute für den Teilbaum B2 wird in der Mapper-Eingabe 504b1 gespeichert.
  • Um im Teilbaum B2 2006 nach Route h1 zu suchen, wird die Adresse der Teilbaumeingabe 404a, welche den dünnbesiedelten Teilbaum-Deskriptor 1400a speichert, welcher den Knoten-Deskriptor 1402 für Route s5 speichert, auf dem Teilbaumindex 312a an den Teilbaumspeicher 400a weitergeleitet. Das Datenfeld 406 und das Zeigerfeld 408, welche in der ausgewählten Teilbaumeingabe 404a gespeichert werden, werden auf den Teilbaumdaten 412a und den Teilbaumzeigern 414a an die Mapper-Adreßlogik 402a weitergeleitet. Die Mapper-Adreßlogik 402a erzeugt die Mapper-Adresse 416a für die Mapper-Eingabe 504a4 , welche die Teilbaumeingabe für s5 speichert. Die Mapper-Adresse 416a hängt von den Teilbaumdaten 412a, den Teilbaumzeigern 414a und einem nächsten Abschnitt des Schlüssels 210b ab. Die Teilbaumeingabe für s5 wird auf dem Teilbaumindex 312b an den Teilbaumspeicher 400b weitergeleitet.
  • Der Teilbaumspeicher 400b speichert die Knoten-Deskriptoren 1402b2 , 1402b1 für den Teilbaum B2 2006. Der dünnbesiedelte Teilbaum-Deskriptor 1400b1 für B2 wird in der Teilbaumeingabe 404b gespeichert. Das Datenfeld 406 und das Zeigerfeld 408, welche in der Teilbaumeingabe 404b gespeichert werden, werden auf den Teilbaumdaten 412b und den Teilbaumzeigern 414b an die Mapper-Adreßlogik 402b weitergeleitet. Die Mapper-Adreßlogik 402b erzeugt die Mapper-Adresse 416b für die Mapper-Eingabe 504b3 , welche die Routeneingabe für h1 speichert. Die Mapper-Adresse 416b hängt von den Teilbaumdaten 412b, den Teilbaumzeigern 414b und einem nächsten Abschnitt des Schlüssels 210c ab.
  • Um Route h2 zum Teilbaum B2 2006 zu addieren, wird ein Block von zuvor unbenutzten Mapper-Eingaben 602c im Teilbaum-Mapper 418b zugeordnet, um die Mapper-Eingaben 504c2–504c4 zu speichern, welche die Routen r6, h1 und h2 für den Teilbaum B2' 2008 speichern. Die Mapper-Eingabe 504c1 speichert die Standardeingabe für den Teilbaum B2' 2008; das heißt, denselben Wert, welcher in der Mapper-Eingabe 504b1 gespeichert wird. Die Mapper-Eingabe 504c2 speichert die Routeneingabe für Route r6, das heißt, denselben Wert, welcher in der Mapper-Eingabe 504b2 gespeichert wird. Die Mapper-Eingabe 504c3 speichert die Routeneingabe für Route h1, das heißt, denselben Wert, welcher in der Mapper-Eingabe 504b3 gespeichert wird. Die Mapper-Eingabe 504c4 speichert die Routeneingabe für die neue Route h2. Während der Block von Mapper-Eingaben 504c1–4 geschrieben wird, kann auf die Routeneingaben, welche in den Mapper-Eingaben 504b1–504b3 gespeichert werden, durch die Teilbaumeingabe, welche für die Route s5 in 504a4 im Teilbaum-Mappert 418a gespeichert wird, zugegriffen werden.
  • Nach Speichern der Mapper-Eingaben 504c1–4 für den Teilbaum B2' 2008 im Teilbaum-Mapper 418b wird ein dünnbesiedelter Teilbaum-Deskriptor 1400c1 zum Teilbaumspeicher 400b addiert. Die Anzahl von Knoten-Deskriptoren 1402c1–3 ist kleiner als sechzehn, weshalb die Knoten-Deskriptoren 1402c1–3 in einem dünnbesiedelten Teilbaum-Deskriptor 1400c1 gespeichert werden. Die Stelle des Teilbaum-Deskriptors 14001 im Teilbaumspeicher 400b hängt von der Anzahl von Knoten-Deskriptoren 1402c1–3 ab, welche mit dem dünnbesiedelten Teilbaum-Deskriptor 1400c1 verbunden sind. durch Addieren einer neuen Route zum Teilbaum B2 2006 erhöhte sich die Anzahl von Knoten-Deskriptoren 1402c1– 1402c3 , welche für den dünnbesiedelten Teilbaum-Deskriptor 1400c1 zu speichern sind, von zwei auf drei. Der dünnbesiedelte Teilbaum-Deskriptor 1400c1 wird in einer Teilbaumeingabe 404c gespeichert mit drei Knoten-Deskriptoren pro dünnbesiedelten Teilbaum-Deskriptor und dem Modusfeld 1404 auf '2' gesetzt. Der dünnbesiedelte Teilbaum-Deskriptor 1400c1 wird in einer gegenwärtigen Teilbaumeingabe 404c des Modus 3 gespeichert, wenn Platz verfügbar ist, oder es wird eine Teilbaumeingabe des Modus 3 zugeordnet. Knoten-Deskriptoren für Routen in B2' 2008 werden in den Knoten-Deskriptoren 1402c1–3 im dünnbesiedelten Teilbaum-Deskriptor 1400c1 in der Teilbaumeingabe 404c des Modus 3 gespeichert.
  • Nachdem der dünnbesiedelte Teilbaum-Deskriptor 1400c1 und die Knoten-Deskriptoren 1402c1–3 im Teilbaumspeicher 400b gespeichert wurden, kann auf den Teilbaum B2' 2008 zugegriffen werden. Um Zugriff auf B2' 2008 bereitzustellen, wird die Teilbaumeingabe 504a4 abgeändert, um den dünnbesiedelten Teilbaum-Deskriptor 1400c1 in der Teilbaumeingabe 404c statt des dünnbesiedelten Teilbaum-Deskriptors 1400b1 in der Teilbaumeingabe 404b zu indexieren. Es kann auf die Routeneingabe für Route h2, welche in der Mapper-Eingabe 504c4 gespeichert wird, und die Routen r6 und h1, welche in den Mapper-Eingaben 504c2 bzw. 504c3 gespeichert werden, zugegriffen werden.
  • Auf die Mapper-Eingaben 504b1–504b3 kann nicht mehr zugegriffen werden und sie werden freigegeben und zur künftigen Zuordnung auf eine frei Liste (nicht dargestellt) gesetzt. auch auf den dünnbesiedelten Teilbaum-Deskriptor 1400b1 kann nicht mehr zugegriffen werden. Infolgedessen wird der dünnbesiedelte Teilbaum-Deskriptor 1400b1 freigegeben und zur künftigen Zuordnung auf eine frei Liste (nicht dargestellt) gesetzt.
  • Die Addition einer Route zu einem dünnbesiedelten Teilbaum wurde beschrieben. Eine Route kann auch zu einem dichtbesiedelten Teilbaum addiert werden durch Speichern eines neuen dichtbesiedelten Teilbaum-Deskriptors in einer neu zugeordneten Teilbaumeingabe 404 und der entsprechenden Mapper-Eingaben im Teilbaum-Mapper 418 und Abändern der Teilbaumeingabe, welche in der Mapper-Eingabe 504a4 gespeichert wird, um die neu zugeordnete Teilbaumeingabe 404 zu indexieren.
  • 26 ist ein Ablaufdiagramm, welches die Schritte zur Durchführung einer schrittweisen Aktualisierung veranschaulicht, um eine Route zur Nachschlagetabelle 200 zu addieren, welche in 25 dargestellt ist.
  • Bei Schritt 2200 wird die Anzahl von Routen pro Teilbaum berechnet, um zu bestimmen, ob die Routenaktualisierung zu einem dünnbesiedelten oder dichtbesiedelten Teilbaum führt. Wenn der Teilbaum nach der Routenaktualisierung dichtbesiedelt ist, wird die Verarbeitung bei Schritt 2218 fortgesetzt. Wenn der Teilbaum nach der Routenaktualisierung dünnbesiedelt ist, wird die Verarbeitung bei Schritt 2202 fortgesetzt.
  • Bei Schritt 2202 ist der Teilbaum dünnbesiedelt. Der dünnbesiedelte Teilbaum-Modus wird festgelegt. Die Verarbeitung wird bei Schritt 2204 fortgesetzt.
  • Bei Schritt 2204 wird eine Liste von teilweise gefüllten Teilbaumeingaben 404, welche im Teilbaum-Mapper 418 (5) gespeichert sind, abgesucht, um zu bestimmen, ob der neue dünnbesiedelte Teilbaum-Deskriptor 1400c1 in einer zuvor zugeordneten Teilbaumeingabe 404 gespeichert werden kann. Zum Beispiel können vier dünnbesiedelte Teilbaum-Deskriptoren 1400c1–1400c4 in einer Teilbaumeingabe 404 des Modus 4 gespeichert werden. Wenn nur drei gespeichert werden, ist die Teilbaumeingabe 404 teilweise gefüllt und wird auf einer Liste von teilweise gefüllten Teilbaumeingaben 404 gespeichert. Wenn eine teilweise gefüllte Teilbaumeingabe 404 verfügbar ist, wird die Verarbeitung bei Schritt 2208 fortgesetzt. Wenn dem nicht so ist, wird die Verarbeitung bei Schritt 2206 fortgesetzt.
  • Bei Schritt 2206 wird eine neue Teilbaumeingabe 404c zum Speichern des dünnbesiedelten Teilbaum-Deskriptors 1400c1 zugeordnet und die Mapper-Eingaben 504c1–504c4 werden zugeordnet im Teilbaum-Mapper zum Speichern der Mapper-Eingaben 504 (6B) für die Knoten-Deskriptoren 1402c1–1402c3 , welche im dünnbesiedelten Teilbaum-Deskriptor 1400c1 in der neu zugeordneten Teilbaumeingabe 404c gespeichert werden. Ein Zeiger zu einem zugeordneten Block von Mapper-Eingaben 540c1–504c4 im Teilbaum-Mapper 418 (5) wird im Zeigerfeld 408 in der neuen Teilbaumeingabe 404c gespeichert. Die Verarbeitung wird bei Schritt 2208 fortgesetzt.
  • Bei Schritt 2208 wird die Stelle der ersten Mapper-Eingabe 504c1 im Teilbaum-Mapper für den dünnbesiedelten Teilbaum-Deskriptor 1400c1 bestimmt von Zeigern, welche im Zeigerfeld 408 in der Teilbaumeingabe 404c gespeichert werden, und dem Modus, welcher im Modusfeld 1404 in der Teilbaumeingabe 404c gespeichert wird. Die Verarbeitung wird bei Schritt 2210 fortgesetzt.
  • Bei Schritt 2210 werden die Routeneingaben für den dünnbesiedelten Teilbaum in den Mapper-Eingaben 504c1–504c4 im Teilbaum-Mapper 418b gespeichert. Die Verarbeitung wird bei Schritt 2212 fortgesetzt.
  • Bei Schritt 2212 wird der dünnbesiedelte Teilbaum-Deskriptor 1400c1 , welcher die Knoten-Deskriptoren 1402c1–1402c3 speichert, in der Teilbaumeingabe 404c gespeichert. Die Verarbeitung wird bei Schritt 2214 fortgesetzt.
  • Bei Schritt 2214 wird der Teilbaumeingaben-Deskriptor 304 (4), welcher in der Mapper-Eingabe 504a4 gespeichert wird, abgeändert, um den neuen dünnbesiedelten Teilbaum-Deskriptor 1400c1 , welcher in der Teilbaumeingabe 404c gespeichert wird, zu indexieren. Die Verarbeitung wird bei Schritt 2216 fortgesetzt.
  • Bei Schritt 2216 kann auf die Mapper-Eingaben 504b1–504b3 und den dünnbesiedelten Teilbaum-Deskriptor 1400b nicht mehr zugegriffen werden. Die Mapper-Eingaben 504b1–504b3 werden auf eine freie Liste von Mapper-Eingaben 504 (6B) für den Teilbaum-Mapper 418b gesetzt und können zum Speichern anderer Routen zugeordnet werden. Die erste verfügbare Stelle in der Teilbaumeingabe 404b wird in der Liste von teilweise gefüllten Teilbaumeingaben aktualisiert. Die Verarbeitung ist abgeschlossen.
  • Bei Schritt 2218 wird eine neue Teilbaumeingabe 404 aus einer Liste von freien Teilbaumeingaben 404, welche im Prozessorspeicher 2400 (24) gespeichert werden, zugeordnet. Die neue Teilbaumeingabe 404 wird zum Speichern eines neuen dichtbesiedelten Teilbaum-Deskriptors zugeordnet. Blöcke von Mapper-Eingaben 504 (6B) im Teilbaum-Mapper 418b werden zum Speichern der Routen zugeordnet. Die Zeiger zu den Blöcken von zugeordneten Mapper-Eingaben 504 (6B) werden im Zeigerfeld 408 (7) in der Teilbaumeingabe 404 (5) gespeichert. Die Verarbeitung wird bei Schritt 2220 fortgesetzt.
  • Bei Schritt 2220 wird der neue dichtbesiedelte Teilbaum-Deskriptor in das Datenfeld 406 in der neuen Teilbaumeingabe 404 geschrieben, wie bereits in Verbindung mit 6A–B beschrieben wurde. Die Verarbeitung wird bei Schritt 2222 fortgesetzt.
  • Bei Schritt 2222 werden die Routeneingaben für den dichtbesiedelten Teilbaum in den Mapper-Eingaben 504 (6B) im Teilbaum-Mapper 418 (5) gespeichert, welcher durch die Zeiger identifiziert wird, welche im Zeigerfeld 408 in der Mapper-Eingabe 404 gespeichert werden. Die Verarbeitung wird bei Schritt 2224 fortgesetzt.
  • Bei Schritt 2224 wird der Teilbaumeingaben-Deskriptor 304 (4), welcher in der Mapper-Eingabe 504a4 gespeichert wird, abgeändert, um den neuen dichtbesiedelten Teilbaum-Deskriptor, welcher in der neuen Teilbaumeingabe 404c gespeichert wird, zu indexieren. Es kann nun auf Routeneingabe für h2, welche in der Mapper-Eingabe 504c4 gespeichert wird, zugegriffen werden. Die Verarbeitung wird bei Schritt 2226 fortgesetzt.
  • Bei Schritt 2226 werden die Mapper-Eingaben 504 (6B), welche durch die Zeiger indexiert werden, welche im Zeigerfeld 408 in der alten Teilbaumeingabe 404 gespeichert werden, an die freie Liste von Mapper-Eingaben zurückgegeben, welche im Prozessorspeicher 2400 (24) gespeichert werden. Die alte Teilbaumeingabe 404b wird zu der freien Liste von Teilbaumeingaben addiert, welche im Prozessorspeicher 2400 (24) gespeichert werden.
  • Der Prozeß wurde für die Addition einer Route zur Nachschlagetabelle beschrieben. Ein ähnlicher Prozeß wird durchgeführt, um eine Route von der Nachschlagetabelle zu löschen. Um zum Beispiel h2 504c4 vom Teilbaum B2' zu löschen, ist erforderlich Speichern eines neuen dünnbesiedelten Teilbaum-Deskriptors mit zwei Knoten-Deskriptoren für die Routen r6 und h1, Speichern des dünnbesiedelten Teilbaum-Deskriptors in einer Teilbaumeingabe des Modus 2, Aktualisieren des entsprechenden Teilbaum-Mappers und Abändern des Teilbaumeingaben-Deskriptors 304 (4), welcher in der Mapper-Eingabe 504a4 gespeichert wird, um den aktualisierten Teilbaumeingaben-Deskriptor zu indexieren, welcher in der neuen Teilbaumeingabe 404 gespeichert wird.
  • Obwohl diese Erfindung insbesondere unter Bezugnahmen auf bevorzugte Ausführungsbeispiele davon dargestellt und beschrieben wurde, ist für den Durchschnittsfachmann leicht erkennbar, daß verschiedene Änderungen in Form und Einzelheiten daran vorgenommen werden können, ohne sich vom Rahmen der Erfindung, welcher durch die beigefügten Patentansprüche umfaßt wird, zu entfernen.
  • Zusammenfassung: Wir stellen ein Verfahren und eine Vorrichtung zum Steigern der Tiefe einer Nachschlagetabelle vor. Die Nachschlagetabelle umfaßt wenigstens zwei Nachschlageeinheiten. Eine Suchanforderung nach einem Endergebniswert, welcher dem Schlüssel entspricht, wird an jede der Nachschlageeinheiten parallel ausgegeben. Jede der Nachschlageeinheiten führt parallel eine Mehrstufensuche nach dem Endergebniswert durch. Der Endergebniswert, welcher nur in einer der Nachschlageeinheiten gespeichert wird, wird durch eine der Nachschlageeinheiten bereitgestellt.

Claims (21)

  1. Nachschlagetabelle, umfassend: eine erste Nachschlageeinheit, welche einen Schlüssel empfängt und ein erstes Ergebnis durch eine Mehrstufensuche in der ersten Nachschlageeinheit bereitstellt; und eine zweite Nachschlageeinheit, welche den Schlüssel empfängt und ein zweites Ergebnis durch eine Mehrstufensuche in der zweiten Nachschlageeinheit bereitstellt, wobei sowohl die erste Nachschlageeinheit als auch die zweite Nachschlageeinheit den Schlüssel parallel empfangen und nur eine der Einheiten ein Endergebnis für den Schlüssel bereitstellt, welches nur in einer der Nachschlageeinheiten in Abhängigkeit von dem ersten Ergebnis und dem zweiten Ergebnis gespeichert wird.
  2. Nachschlagetabelle nach Anspruch 1, wobei Endergebnisse für den Schlüssel unter den Nachschlageeinheiten in Abhängigkeit von der Gesamtzahl von Endergebnissen, welche in der Nachschlagetabelle zu speichern sind, verteilt werden.
  3. Nachschlagetabelle nach Anspruch 1, wobei der Schlüssel eine IP-Adresse ist und das Endergebnis ein Routenindex ist.
  4. Nachschlagetabelle nach Anspruch 1, wobei eine erste Speicherstelle in der ersten Nachschlageeinheit, welche durch den Schlüssel indexiert wird, das Endergebnis speichert und eine zweite Speicherstelle in der zweiten Nachschlageeinheit, welche durch den Schlüssel indexiert wird, eine Anzeige speichert, daß das Endergebnis in der ersten Nachschlageeinheit gespeichert wird.
  5. Nachschlagetabelle nach Anspruch 1, wobei jede der ersten Nachschlageeinheit und der zweiten Nachschlageeinheit eine Mehrzahl von Mapper-Stufen umfaßt und jede der Mapper-Stufen Speicherstellen zum Speichern von Ergebnissen umfaßt.
  6. Nachschlagetabelle nach Anspruch 4, wobei das Endergebnis, welches dem Schlüssel entspricht, welcher an einer Stelle auf irgendeiner der Mehrzahl von Mapper-Stufen in der ersten Nachschlageeinheit gespeichert wird, an die zweite Nachschlageeinheit weitergeleitet wird und durch die zweite Nachschlageeinheit bereitgestellt wird.
  7. Nachschlagetabelle nach Anspruch 1, wobei das Endergebnis, welches dem Schlüssel entspricht, durch die Nachschlageeinheit, in welcher das Endergebnis gespeichert wird, bereitgestellt wird.
  8. Verfahren zur Bereitstellüng eines Endergebnisses für einen Schlüssel, umfassend de folgenden Schritte: Paralleles Empfangen des Schlüssels durch eine erste Nachschlageeinheit und eine zweite Nachschlageeinheit; Durchführen einer Mehrstufensuche durch die erste Nachschlageeinheit, welche zu einem ersten Ergebnis führt; durchführen einer Mehrstufensuche durch die zweite Nachschlageeinheit, welche zu einem zweiten Ergebnis führt; und Bereitstellen des Endergebnisses für den Schlüssel durch eine der Einheiten in Abhängigkeit von dem ersten Ergebnis und dem zweiten Ergebnis.
  9. Verfahren nach Anspruch 8, welches des Weiteren die folgenden Schritte umfaßt: Verteilen der Endergebnisse unter den Einheiten in Abhängigkeit von der Gesamtzahl von Endergebnissen, welche in den Nachschlagetabellen zu speichern sind.
  10. Verfahren nach Anspruch 8, wobei der Schlüssel eine IP-Adresse ist und das Endergebnis ein Routenindex ist.
  11. Verfahren nach Anspruch 8, wobei eine erste Speicherstelle in der ersten Nachschlageeinheit, welche durch einen Schlüssel indexiert wird, das Endergebnis speichert und eine zweite Speicherstelle in der zweiten Nachschlageeinheit, welche durch den Schlüssel indexiert wird, eine Anzeige speichert, daß das Endergebnis in der ersten Nachschlageeinheit gespeichert wird.
  12. Verfahren nach Anspruch 8, wobei jede der ersten Nachschlageeinheit und der zweiten Nachschlageeinheit eine Mehrzahl von Mapper-Stufen umfaßt und jede der Mapper-Stufen Speicherstellen zum Speichern von Ergebnissen umfaßt.
  13. Verfahren nach Anspruch 12, wobei das Ergebnis, welches dem Schlüssel entspricht, welcher an einer Stelle auf einer der Mehrzahl von Mapper-Stufen in der ersten Nachschlageeinheit gespeichert wird, an die zweite Nachschlageeinheit weitergeleitet wird und durch die zweite Nachschlageeinheit bereitgestellt wird.
  14. Verfahren nach Anspruch 8, wobei das Endergebnis, welches dem Schlüssel entspricht, durch die Nachschlageeinheit, in welcher das Endergebnis gespeichert wird, bereitgestellt wird.
  15. Nachschlagetabelle, umfassend: eine erste Nachschlageeinheit, welche einen Schlüssel empfängt und ein erstes Ergebnis durch eine Mehrstufensuche in der ersten Nachschlageeinheit bereitstellt; eine zweite Nachschlageeinheit, welche den Schlüssel empfängt und ein zweites Ergebnis durch eine Mehrstufensuche in der zweiten Nachschlageeinheit bereitstellt, und Mittel zum Bereitstellen eines Endergebnisses, welches nur in einer der Nachschlageeinheiten gespeichert wird, für den Schlüssel, welcher sowohl von der ersten Nachschlageeinheit als auch der zweiten Nachschlageeinheit parallel empfangen wird, in Abhängigkeit von dem ersten Ergebnis und dem zweiten Ergebnis.
  16. Nachschlagetabelle nach Anspruch 15, wobei die Endergebnisse für den Schlüssel unter den Nachschlageeinheiten in Abhängigkeit von der Gesamtzahl von Endergebnissen, welche in der Nachschlagetabelle zu speichern sind, verteilt werden.
  17. Nachschlagetabelle nach Anspruch 15, wobei der Schlüssel eine IP-Adresse ist und das Endergebnis ein Routenindex ist.
  18. Nachschlagetabelle nach Anspruch 15, wobei eine erste Speicherstelle in der ersten Nachschlageeinheit, welche durch den Schlüssel indexiert wird, das Ergebnis speichert und eine zweite Speicherstelle in der zweiten Nachschlageeinheit, welche durch den Schlüssel indexiert wird, eine Anzeige speichert, daß das Ergebnis in der ersten Nachschlageeinheit gespeichert wird.
  19. Nachschlagetabelle nach Anspruch 15, wobei jede der ersten Nachschlageeinheit und der zweiten Nachschlageeinheit eine Mehrzahl von Mapper-Stufen umfaßt und jede der Mapper-Stufen Speicherstellen zum Speichern umfaßt.
  20. Nachschlagetabelle nach Anspruch 19, wobei das Endergebnis, welches dem Schlüssel entspricht, welcher an einer Stelle auf einer der Mehrzahl von Mapper-Stufen in der ersten Nachschlageeinheit gespeichert wird, an die zweite Nachschlageeinheit weitergeleitet wird und durch die zweite Nachschlageeinheit bereitgestellt wird.
  21. Nachschlagetabelle nach Anspruch 15, wobei das Endergebnis, welches dem Schlüssel entspricht, durch die Nachschlageeinheit, in welcher das Endergebnis gespeichert wird, bereitgestellt wird.
DE2000185387 1999-12-10 2000-12-08 Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung Withdrawn DE10085387T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US17023299P 1999-12-10 1999-12-10
US60/170,232 1999-12-10
US21296600P 2000-06-21 2000-06-21
US60/212,966 2000-06-21
PCT/CA2000/001441 WO2001043400A2 (en) 1999-12-10 2000-12-08 Method and apparatus for longest match address lookup

Publications (1)

Publication Number Publication Date
DE10085387T5 true DE10085387T5 (de) 2004-07-01

Family

ID=26865861

Family Applications (4)

Application Number Title Priority Date Filing Date
DE2000185387 Withdrawn DE10085387T5 (de) 1999-12-10 2000-12-08 Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE2000185388 Ceased DE10085388T1 (de) 1999-12-10 2000-12-08 Verfahren und Vorrichtung zur Adressuche längster Übereinstimmung
DE2000185390 Ceased DE10085390T1 (de) 1999-12-10 2000-12-08 Verfahren und Vorrichtung zur Adressuche längster Übereinstimmung
DE2000185389 Ceased DE10085389T1 (de) 1999-12-10 2000-12-08 Verfahren und Vorrichtung zur Adressuche längster Übereinstimmung

Family Applications After (3)

Application Number Title Priority Date Filing Date
DE2000185388 Ceased DE10085388T1 (de) 1999-12-10 2000-12-08 Verfahren und Vorrichtung zur Adressuche längster Übereinstimmung
DE2000185390 Ceased DE10085390T1 (de) 1999-12-10 2000-12-08 Verfahren und Vorrichtung zur Adressuche längster Übereinstimmung
DE2000185389 Ceased DE10085389T1 (de) 1999-12-10 2000-12-08 Verfahren und Vorrichtung zur Adressuche längster Übereinstimmung

Country Status (10)

Country Link
US (5) US7423981B2 (de)
EP (4) EP1250779A2 (de)
JP (4) JP2003516670A (de)
KR (4) KR100748772B1 (de)
CN (5) CN100432991C (de)
AU (4) AU2133901A (de)
CA (4) CA2393760C (de)
DE (4) DE10085387T5 (de)
GB (4) GB2373082B (de)
WO (4) WO2001043346A2 (de)

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4156112B2 (ja) * 1998-12-25 2008-09-24 富士通株式会社 高速検索方法及び高速検索装置
JP2003516670A (ja) * 1999-12-10 2003-05-13 モサイド・テクノロジーズ・インコーポレイテッド 最長一致アドレスルックアップのための方法および装置
US6996808B1 (en) * 2000-02-12 2006-02-07 Microsoft Corporation Function injector
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US7089240B2 (en) * 2000-04-06 2006-08-08 International Business Machines Corporation Longest prefix match lookup using hash function
US6947931B1 (en) * 2000-04-06 2005-09-20 International Business Machines Corporation Longest prefix match (LPM) algorithm implementation for a network processor
US6826561B2 (en) * 2000-05-22 2004-11-30 Broadcom Corporation Method and apparatus for performing a binary search on an expanded tree
US7047317B1 (en) * 2000-06-14 2006-05-16 Altera Corporation High performance network address processor system
US6555511B2 (en) * 2000-06-19 2003-04-29 Lance L. Renfrow Stable hydrotropic surfactants comprising alkylamino propionate
US7966421B2 (en) * 2000-06-21 2011-06-21 SAtech Group, A.B. Limited Liability Company Method and apparatus for logically expanding the length of a search key
US7111071B1 (en) * 2000-06-29 2006-09-19 Intel Corporation Longest prefix match for IP routers
JP2002026973A (ja) * 2000-07-12 2002-01-25 Nec Corp 経路検索システム及びその方法並びにそれに使用するルータ装置
US8161081B2 (en) 2001-03-16 2012-04-17 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
KR100488414B1 (ko) * 2000-12-30 2005-05-11 한국전자통신연구원 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법
US6826669B1 (en) * 2001-05-08 2004-11-30 Lewiz Communications Multi-protocol memory lookup system and method
US6917954B2 (en) * 2001-05-30 2005-07-12 Mosaid Technologies, Inc. Load balancing in IP address lookup
US7062493B1 (en) * 2001-07-03 2006-06-13 Trilogy Software, Inc. Efficient technique for matching hierarchies of arbitrary size and structure without regard to ordering of elements
JP3845845B2 (ja) * 2001-07-24 2006-11-15 株式会社テルミナス・テクノロジー 連想メモリ・システムおよびネットワーク機器およびネットワーク・システム
US20030031179A1 (en) * 2001-08-08 2003-02-13 Jintae Oh Self-updateable longest prefix matching method and apparatus
US7143382B2 (en) * 2001-08-23 2006-11-28 Cadence Design Systems, Inc. Method and apparatus for storing routes
US6665202B2 (en) 2001-09-25 2003-12-16 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that can identify highest priority matches in non-sectored CAM arrays and methods of operating same
US20030217062A1 (en) * 2001-12-18 2003-11-20 Shawn Thomas Method and system for asset transition project management
US6691171B1 (en) * 2002-02-01 2004-02-10 Micrel, Inc. Method and system for address lookup in data communication
US7274698B2 (en) * 2002-03-15 2007-09-25 Broadcom Corporation Multilevel parser for conditional flow detection in a network device
US7764687B1 (en) * 2002-03-28 2010-07-27 Meriton Networks Us Inc. Longest prefix match search technique
US20030210654A1 (en) * 2002-05-07 2003-11-13 Dongguk University Method of parallel packet switching
US7325071B2 (en) * 2002-06-04 2008-01-29 Lucent Technologies Inc. Forwarding traffic in a network using a single forwarding table that includes forwarding information related to a plurality of logical networks
US6925464B2 (en) * 2002-06-13 2005-08-02 Intel Corporation Method and system for performing inserts and lookups in memory
JP4048861B2 (ja) * 2002-07-23 2008-02-20 日本電気株式会社 アドレス検索装置
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
US7782853B2 (en) * 2002-12-06 2010-08-24 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US8018935B2 (en) * 2002-12-12 2011-09-13 Intel Corporation Address search
US7890633B2 (en) * 2003-02-13 2011-02-15 Oracle America, Inc. System and method of extending virtual address resolution for mapping networks
US7443854B2 (en) * 2003-04-02 2008-10-28 Intel Corporation Methods and apparatus to route packets in a policy driven networked environment
US9014195B2 (en) * 2003-05-02 2015-04-21 Vitesse Semiconductor Corporation Packet forwarding method and system
US7260675B1 (en) 2003-07-15 2007-08-21 Integrated Device Technology, Inc. CAM-based search engines that support pipelined multi-database search operations using encoded multi-database identifiers
US7058757B1 (en) * 2003-07-15 2006-06-06 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that support distributed CAM control and methods of operating same
US7840696B2 (en) * 2003-07-25 2010-11-23 Broadcom Corporation Apparatus and method for classifier identification
US7299227B2 (en) * 2003-09-09 2007-11-20 Stmicroelectronics, Inc. Method and system for providing cascaded trie-based network packet search engines
US7028106B2 (en) * 2003-12-05 2006-04-11 Hewlett-Packard Development Company, L.P. Remapping routing information entries in an expander
US8868745B1 (en) * 2003-12-22 2014-10-21 Avaya Inc. Method and system for providing configurable route table limits in a service provider for managing VPN resource usage
US7937413B2 (en) * 2004-05-04 2011-05-03 International Business Machines Corporation Self-adaptive prefix encoding for stable node identifiers
US7483426B2 (en) * 2004-05-13 2009-01-27 Micrel, Inc. Look-up table expansion method
RU2408075C2 (ru) * 2004-07-12 2010-12-27 Фекско Прямая конвертация валюты
US7603346B1 (en) 2004-07-23 2009-10-13 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein
US7747599B1 (en) 2004-07-23 2010-06-29 Netlogic Microsystems, Inc. Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations
US8886677B1 (en) 2004-07-23 2014-11-11 Netlogic Microsystems, Inc. Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length
US7653619B1 (en) 2004-07-23 2010-01-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height
US7725450B1 (en) * 2004-07-23 2010-05-25 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations
CN100366023C (zh) * 2004-07-28 2008-01-30 国家数字交换系统工程技术研究中心 路由查找装置
KR100735577B1 (ko) 2004-08-12 2007-07-04 삼성전자주식회사 무선 네트워크의 적응형 키검색장치 및 방법
US7590130B2 (en) * 2004-12-22 2009-09-15 Exar Corporation Communications system with first and second scan tables
US20060133383A1 (en) * 2004-12-22 2006-06-22 Russell Homer Communications system with scan table identification
US7590119B2 (en) * 2005-01-27 2009-09-15 Cisco Technology, Inc. Method and apparatus for context-based prefix updates in border gateway protocol
US20060187923A1 (en) * 2005-02-18 2006-08-24 Broadcom Corporation Dynamic filter processor key generation based on packet type
US7876747B2 (en) * 2005-03-04 2011-01-25 Cisco Technology, Inc. Method and apparatus for efficient load distribution on link aggregations
US7839854B2 (en) * 2005-03-08 2010-11-23 Thomas Alexander System and method for a fast, programmable packet processing system
US8572125B2 (en) 2005-08-22 2013-10-29 International Business Machines Corporation Scalable storage schemes for native XML column data of relational tables
US7529726B2 (en) * 2005-08-22 2009-05-05 International Business Machines Corporation XML sub-document versioning method in XML databases using record storages
US8543614B2 (en) * 2005-08-22 2013-09-24 International Business Machines Corporation Packing nodes into records to store XML XQuery data model and other hierarchically structured data
CN100401723C (zh) * 2005-10-13 2008-07-09 华为技术有限公司 一种快速索引方法
US7869411B2 (en) * 2005-11-21 2011-01-11 Broadcom Corporation Compact packet operation device and method
US7889676B1 (en) * 2006-04-13 2011-02-15 Infoblox Inc. Systems and methods for storing and retrieving data
CN100421114C (zh) * 2006-04-21 2008-09-24 华为技术有限公司 基于关键字进行数据匹配查询的方法
US7817629B2 (en) * 2006-05-12 2010-10-19 Agere Systems Inc. Methods and apparatus for performing network operations on packets of data in response to content of particular user-specified protocol header fields
US7697518B1 (en) 2006-09-15 2010-04-13 Netlogic Microsystems, Inc. Integrated search engine devices and methods of updating same using node splitting and merging operations
US8194664B2 (en) * 2006-10-10 2012-06-05 Cisco Technology, Inc. Two-level load-balancing of network traffic over an MPLS network
US8189585B2 (en) * 2006-10-10 2012-05-29 Cisco Technology, Inc. Techniques for virtual private network fast convergence
US7937541B2 (en) * 2006-10-12 2011-05-03 International Business Machines Corporation Speed selective table scan operation
SE531557C2 (sv) * 2006-10-20 2009-05-19 Oricane Ab Förfarande, klassificeringsanordning, datorprogramprodukt och system för att representera en del av n w-bit-intervall hörande till d-bit data i ett datakommunikationsnätverk
WO2008048185A1 (en) * 2006-10-20 2008-04-24 Oricane Ab Method, device, computer program product and system for representing a partition of n w-bit intervals associated to d-bit data in a data communications network
US7987205B1 (en) 2006-11-27 2011-07-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
US7831626B1 (en) 2006-11-27 2010-11-09 Netlogic Microsystems, Inc. Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node
US8086641B1 (en) 2006-11-27 2011-12-27 Netlogic Microsystems, Inc. Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
US7953721B1 (en) 2006-11-27 2011-05-31 Netlogic Microsystems, Inc. Integrated search engine devices that support database key dumping and methods of operating same
CN100531140C (zh) * 2006-12-20 2009-08-19 中国科学院计算技术研究所 一种实现无回溯的最长前缀匹配搜索的方法和装置
US20110019662A1 (en) 2007-06-28 2011-01-27 Rebelvox Llc Method for downloading and using a communication application through a web browser
US11095583B2 (en) 2007-06-28 2021-08-17 Voxer Ip Llc Real-time messaging method and apparatus
US8645477B2 (en) 2009-01-30 2014-02-04 Voxer Ip Llc Progressive messaging apparatus and method capable of supporting near real-time communication
US20100198923A1 (en) 2009-01-30 2010-08-05 Rebelvox Llc Methods for using the addressing, protocols and the infrastructure of email to support near real-time communication
US9178916B2 (en) 2007-06-28 2015-11-03 Voxer Ip Llc Real-time messaging method and apparatus
US8825772B2 (en) * 2007-06-28 2014-09-02 Voxer Ip Llc System and method for operating a server for real-time communication of time-based media
US8180029B2 (en) 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8688789B2 (en) 2009-01-30 2014-04-01 Voxer Ip Llc Progressive messaging apparatus and method capable of supporting near real-time communication
US7886176B1 (en) 2007-09-24 2011-02-08 Integrated Device Technology, Inc. DDR memory system for measuring a clock signal by identifying a delay value corresponding to a changed logic state during clock signal transitions
US20090100219A1 (en) * 2007-10-15 2009-04-16 Anurag Bhargava Method and apparatus for efficient cam lookup for internet protocol addresses
CN101420415B (zh) * 2007-10-23 2012-08-22 华为技术有限公司 形成路由表的方法及装置
US7716204B1 (en) 2007-12-21 2010-05-11 Netlogic Microsystems, Inc. Handle allocation managers and methods for integated circuit search engine devices
TWI413910B (zh) * 2008-01-25 2013-11-01 Univ Nat Taiwan 數值資料範圍區間查詢方法及系統
CN102780624B (zh) * 2008-02-05 2016-02-03 华为技术有限公司 一种建立路由的方法和装置
US8335780B2 (en) * 2008-03-11 2012-12-18 James Madison Kelley Scalable high speed relational processor for databases and networks
US7801877B1 (en) 2008-04-14 2010-09-21 Netlogic Microsystems, Inc. Handle memory access managers and methods for integrated circuit search engine devices
US7933885B1 (en) 2008-04-25 2011-04-26 Netlogic Microsystems, Inc. Longest matching prefix search engine with hierarchical decoders
US8036141B2 (en) * 2008-08-15 2011-10-11 At&T Intellectual Property I, L.P Apparatus and method for managing a network
DE102008059204B9 (de) * 2008-11-27 2011-05-05 Infineon Technologies Ag Verfahren zum Suchen eines Slave-Knotens in einem Kommunikationsnetz, Master-Knoten und Slave-Knoten für ein Kommunikationsnetz
US8849927B2 (en) 2009-01-30 2014-09-30 Voxer Ip Llc Method for implementing real-time voice messaging on a server node
US20100245582A1 (en) * 2009-03-25 2010-09-30 Syclipse Technologies, Inc. System and method of remote surveillance and applications therefor
US20100245072A1 (en) * 2009-03-25 2010-09-30 Syclipse Technologies, Inc. System and method for providing remote monitoring services
US20100246669A1 (en) * 2009-03-25 2010-09-30 Syclipse Technologies, Inc. System and method for bandwidth optimization in data transmission using a surveillance device
US9049157B1 (en) * 2009-08-16 2015-06-02 Compass Electro-Optical Systems Ltd Method and device for improving scalability of longest prefix match
US8363662B2 (en) * 2010-03-19 2013-01-29 Cisco Technology, Inc. Alternate down paths for directed acyclic graph (DAG) routing
EP2552059B1 (de) * 2010-03-24 2014-12-03 Nec Corporation Paketübertragungssystem, steuervorrichtung, übertragungsvorrichtung, verfahren zur erstellung von verarbeitungsregeln und programm
US8751687B2 (en) 2010-04-30 2014-06-10 Microsoft Corporation Efficient encoding of structured data
WO2011137914A1 (en) * 2010-05-04 2011-11-10 Mingoa Limited Identification and verification of management points in telecommunications systems
US9077669B2 (en) * 2010-06-14 2015-07-07 Dynamic Invention Llc Efficient lookup methods for ternary content addressable memory and associated devices and systems
US20140185614A1 (en) * 2012-12-28 2014-07-03 General Instrument Corporation Multiple domain addressing in message routing
CN104052669B (zh) * 2013-03-12 2018-12-07 凯为公司 用于处理交替配置的最长前缀匹配表的装置
US9331942B2 (en) * 2013-03-12 2016-05-03 Xpliant, Inc. Apparatus and method for processing alternately configured longest prefix match tables
CN104426770A (zh) * 2013-09-09 2015-03-18 中兴通讯股份有限公司 路由查找方法及装置、B-Tree树结构的构建方法
JP5950285B2 (ja) * 2013-12-19 2016-07-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
US9553829B2 (en) 2014-11-13 2017-01-24 Cavium, Inc. Apparatus and method for fast search table update in a network switch
US9485179B2 (en) 2014-11-13 2016-11-01 Cavium, Inc. Apparatus and method for scalable and flexible table search in a network switch
US10091056B1 (en) * 2015-08-06 2018-10-02 Amazon Technologies, Inc. Distribution of modular router configuration
US10419282B1 (en) 2015-09-24 2019-09-17 Amazon Technologies, Inc. Self-configuring network devices
US9584155B1 (en) * 2015-09-24 2017-02-28 Intel Corporation Look-ahead hash chain matching for data compression
US10063407B1 (en) 2016-02-08 2018-08-28 Barefoot Networks, Inc. Identifying and marking failed egress links in data plane
US10313231B1 (en) * 2016-02-08 2019-06-04 Barefoot Networks, Inc. Resilient hashing for forwarding packets
US10521411B2 (en) * 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
CN106549872B (zh) * 2016-10-31 2019-05-24 西安空间无线电技术研究所 最长前缀匹配与精确匹配结合的星载快速路由查找系统
US10237206B1 (en) 2017-03-05 2019-03-19 Barefoot Networks, Inc. Equal cost multiple path group failover for multicast
US10404619B1 (en) 2017-03-05 2019-09-03 Barefoot Networks, Inc. Link aggregation group failover for multicast
CN107169054A (zh) * 2017-04-26 2017-09-15 四川长虹电器股份有限公司 基于前缀森林的ip索引方法
US10224957B1 (en) 2017-11-27 2019-03-05 Intel Corporation Hash-based data matching enhanced with backward matching for data compression
JP7088868B2 (ja) * 2019-03-22 2022-06-21 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信装置、通信方法及びプログラム
CN111367665B (zh) * 2020-02-28 2020-12-18 清华大学 一种并行通信路由建立方法及系统

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4450525A (en) * 1981-12-07 1984-05-22 Ibm Corporation Control unit for a functional processor
US4661658A (en) 1985-02-12 1987-04-28 International Business Machines Corporation Offline PIN validation with DES
AU620994B2 (en) 1989-07-12 1992-02-27 Digital Equipment Corporation Compressed prefix matching database searching
US5202986A (en) * 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
US5261088A (en) * 1990-04-26 1993-11-09 International Business Machines Corporation Managing locality in space reuse in a shadow written B-tree via interior node free space list
JPH0522297A (ja) * 1991-07-09 1993-01-29 Nec Corp 通信ネツトワークシステム
US5359724A (en) * 1992-03-30 1994-10-25 Arbor Software Corporation Method and apparatus for storing and retrieving multi-dimensional data in computer memory
US5329618A (en) 1992-04-02 1994-07-12 Fibronics Ltd. Look-up table for a bridge in a data communications system
CA2119788C (en) * 1992-07-24 1996-12-31 Peter L. Morse Computer method and system for allocating and freeing memory
US5323389A (en) * 1992-08-14 1994-06-21 Fore Systems, Inc. ATM cell interface and method for dispatching an ATM cell
US5386413A (en) 1993-03-19 1995-01-31 Bell Communications Research, Inc. Fast multilevel hierarchical routing table lookup using content addressable memory
CA2643234C (en) * 1993-10-29 2012-05-15 Microsoft Corporation Method and system for generating a computer program
US5384568A (en) * 1993-12-02 1995-01-24 Bell Communications Research, Inc. Data compression
US5854196A (en) * 1994-08-23 1998-12-29 The Procter & Gamble Company Detergent compositions
US5754854A (en) * 1994-11-14 1998-05-19 Microsoft Corporation Method and system for providing a group of parallel resources as a proxy for a single shared resource
JP3101767B2 (ja) * 1995-05-18 2000-10-23 ノーテル・ネットワークス・コーポレーション 選択された挨拶を含むメッセージ電話ベース配送システム
US5699276A (en) 1995-12-15 1997-12-16 Roos; Charles E. Utility meter providing an interface between a digital network and home electronics
US5857196A (en) * 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
JP3520709B2 (ja) * 1997-03-13 2004-04-19 三菱電機株式会社 ネットワークアドレス検索方式
US6034958A (en) * 1997-07-11 2000-03-07 Telefonaktiebolaget Lm Ericsson VP/VC lookup function
US5946679A (en) * 1997-07-31 1999-08-31 Torrent Networking Technologies, Corp. System and method for locating a route in a route table using hashing and compressed radix tree searching
US6512766B2 (en) 1997-08-22 2003-01-28 Cisco Systems, Inc. Enhanced internet packet routing lookup
JPH1166096A (ja) * 1997-08-25 1999-03-09 Nippon Telegr & Teleph Corp <Ntt> データ蓄積方法、そのデータ蓄積方法によって蓄積されたデータベース及びそのデータベースの検索方法
US6553002B1 (en) * 1997-08-29 2003-04-22 Ascend Communications, Inc. Apparatus and method for routing data packets through a communications network
KR20010030607A (ko) * 1997-09-15 2001-04-16 에프넷 그룹 에이비 고속 라우팅 룩업 방법 및 시스템
US6266706B1 (en) * 1997-09-15 2001-07-24 Effnet Group Ab Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams
US6141655A (en) * 1997-09-23 2000-10-31 At&T Corp Method and apparatus for optimizing and structuring data by designing a cube forest data structure for hierarchically split cube forest template
US6563823B1 (en) * 1997-10-30 2003-05-13 Marconi Communications, Inc. Multi-resolution tree for longest match address lookups
US6223172B1 (en) * 1997-10-31 2001-04-24 Nortel Networks Limited Address routing using address-sensitive mask decimation scheme
JP3186681B2 (ja) * 1997-12-25 2001-07-11 日本電気株式会社 経路検索回路及び通信制御装置
JP3570606B2 (ja) * 1998-02-12 2004-09-29 日本電信電話株式会社 データ検索装置および方法
JP3166700B2 (ja) * 1998-03-12 2001-05-14 日本電気株式会社 ルータ及び最長一致検索装置
US6085188A (en) * 1998-03-30 2000-07-04 International Business Machines Corporation Method of hierarchical LDAP searching with relational tables
BRPI9906335B1 (pt) * 1998-03-31 2015-08-25 Samsung Electronics Co Ltd Sistema de comunicação móvel, e, processos para codificação e decodificação de canal para um sistema de comunicação móvel.
US6067574A (en) * 1998-05-18 2000-05-23 Lucent Technologies Inc High speed routing using compressed tree process
US6247014B1 (en) 1998-07-01 2001-06-12 Nortel Networks Limited Method and apparatus for performing hash lookups using valid bit tables with pointers
US6526055B1 (en) 1998-10-20 2003-02-25 Sun Microsystems, Inc. Method and apparatus for longest prefix address lookup
IT1305140B1 (it) * 1998-10-27 2001-04-10 Cselt Centro Studi Lab Telecom Memoria per la ricerca di informazioni mediante analisi di prefissi inparticolare per la realizzazione di tabelle di instradamento in nodi
TW468116B (en) * 1999-02-08 2001-12-11 Wen-Shian Chen High speed Internet protocol address lookups method for saving memory
US6460112B1 (en) 1999-02-23 2002-10-01 Netlogic Microsystems, Llc Method and apparatus for determining a longest prefix match in a content addressable memory device
US6678274B1 (en) 1999-07-30 2004-01-13 Riverstone Networks, Inc. Method and system for managing forwarding tables
EP1083768A1 (de) * 1999-09-08 2001-03-14 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Verfahren zur Erleichterung der Datenübertragung
US6744775B1 (en) * 1999-09-27 2004-06-01 Nortel Networks Limited State information and routing table updates in large scale data networks
US6687247B1 (en) * 1999-10-27 2004-02-03 Cisco Technology, Inc. Architecture for high speed class of service enabled linecard
JP2003516670A (ja) * 1999-12-10 2003-05-13 モサイド・テクノロジーズ・インコーポレイテッド 最長一致アドレスルックアップのための方法および装置
US6826561B2 (en) * 2000-05-22 2004-11-30 Broadcom Corporation Method and apparatus for performing a binary search on an expanded tree
US7106732B2 (en) 2000-12-27 2006-09-12 Mosaid Technologies Incorporated Default route coding

Also Published As

Publication number Publication date
US6539369B2 (en) 2003-03-25
US20020116526A1 (en) 2002-08-22
CN1435030A (zh) 2003-08-06
KR100748772B1 (ko) 2007-08-13
GB2373082B (en) 2004-03-17
WO2001043370A3 (en) 2001-11-08
WO2001043400A3 (en) 2001-11-08
CN1174587C (zh) 2004-11-03
US20010043602A1 (en) 2001-11-22
CN101510839B (zh) 2014-07-09
US6836771B2 (en) 2004-12-28
WO2001043345A3 (en) 2001-11-29
CA2395151A1 (en) 2001-06-14
WO2001043346A3 (en) 2001-11-29
CN1434950A (zh) 2003-08-06
KR100748773B1 (ko) 2007-08-13
GB2373083B (en) 2004-03-17
GB2373084A (en) 2002-09-11
WO2001043346A2 (en) 2001-06-14
AU2133801A (en) 2001-06-18
GB0213390D0 (en) 2002-07-24
GB2373083A (en) 2002-09-11
JP4741134B2 (ja) 2011-08-03
KR20020081681A (ko) 2002-10-30
US6691218B2 (en) 2004-02-10
GB0213391D0 (en) 2002-07-24
GB0213389D0 (en) 2002-07-24
CN1278525C (zh) 2006-10-04
CA2397608C (en) 2010-08-24
KR20020081680A (ko) 2002-10-30
GB2373082A (en) 2002-09-11
AU2133701A (en) 2001-06-18
GB2374174B (en) 2004-03-03
EP1250779A2 (de) 2002-10-23
CA2395151C (en) 2008-07-22
US20030126113A1 (en) 2003-07-03
CA2393760A1 (en) 2001-06-14
EP1250775A2 (de) 2002-10-23
KR100748771B1 (ko) 2007-08-13
JP4565793B2 (ja) 2010-10-20
GB0213387D0 (en) 2002-07-24
JP2003516666A (ja) 2003-05-13
DE10085388T1 (de) 2003-07-17
JP2003516670A (ja) 2003-05-13
WO2001043370A2 (en) 2001-06-14
CA2397608A1 (en) 2001-06-14
KR20020081679A (ko) 2002-10-30
KR20020082465A (ko) 2002-10-31
DE10085389T1 (de) 2003-07-17
AU2133901A (en) 2001-06-18
WO2001043345A2 (en) 2001-06-14
GB2374174A (en) 2002-10-09
JP2003516660A (ja) 2003-05-13
WO2001043400A2 (en) 2001-06-14
JP2003516661A (ja) 2003-05-13
AU2334101A (en) 2001-06-18
US20010042130A1 (en) 2001-11-15
CA2393760C (en) 2010-07-13
EP1250778A2 (de) 2002-10-23
CA2393764A1 (en) 2001-06-14
US20010044876A1 (en) 2001-11-22
US7423981B2 (en) 2008-09-09
CN101510839A (zh) 2009-08-19
CN1435032A (zh) 2003-08-06
CN100432991C (zh) 2008-11-12
CN1435031A (zh) 2003-08-06
EP1250662A2 (de) 2002-10-23
DE10085390T1 (de) 2003-04-30

Similar Documents

Publication Publication Date Title
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE60129643T2 (de) Verfahren und Gerät für die Ermittlung vom längsten Prefixzusammenbringen in einem Kommunikationsnetz
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen &#34;bitmap&#34; datenstrukturen
EP0010195B1 (de) Vorrichtung zur Adressumwandlung in einer Datenverarbeitungsanlage
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE19810843B4 (de) Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung
DE19743267C1 (de) Verfahren zum Aufsuchen einer Adresse in einem teilbesetzten, nicht balancierten Binären Baum
WO1999017226A1 (de) Verfahren zum hinzufügen bzw. entfernen einer adresse in einem teilbesetzten, nicht-balancierten binären baum
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE69820230T2 (de) N-weg verarbeitung von bitketten in einer datenflussarchitektur
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
DE19860120A1 (de) Routensuchschaltung und diese verwendende Kommunikationsvorrichtung
EP1744257B1 (de) Vorrichtung und Verfahren zum Abrufen/Speichern von elektronischen Daten in einem System mit mehreren Datenverarbeitungseinheiten
DE60114299T2 (de) Verfahren und Vorrichtung zum Übersetzen von IP Telekommunikationsnetzwerkadressen mit einem gesteuerten undichten Speicher
DE60024611T2 (de) Längentestvergleich in präfixnachschlagtabellen
EP1162789A1 (de) Verfahren zur Verwaltung von Pfadinformationen und deren Änderungen in einem MPLS-Netzwerk
DE69930493T2 (de) Aktualisierungsverfahren für einen inhaltsadressierbaren Trietypspeicher, und Router um solch ein Verfahren zu implementieren
DE19810784A1 (de) Hardwareunterstützung für Datenumsetzung
DE1487637B2 (de) Verfahren und anordnung zur wegesuche in mit schalt matrizen aufgebauten koppelfeldern
DE102006044859B4 (de) Verfahren zum Betrieb eines dezentralen Datennetzes
DE60132117T2 (de) Verfahren und einrichtung zum speichern und anpassen beliebig breiter ausdrücke an inhaltsadressierbare speicher
DE69827121T2 (de) Verfahren zur Adressenkompression für zellbasierte und paketbasierte Protokolle und Hardware-Ausführungen davon
DE102004006102B4 (de) Datenverarbeitungseinrichtung zur schnellen Suche von Datenworten

Legal Events

Date Code Title Description
8139 Disposal/non-payment of the annual fee