DE69927109T2 - Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen - Google Patents

Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen Download PDF

Info

Publication number
DE69927109T2
DE69927109T2 DE69927109T DE69927109T DE69927109T2 DE 69927109 T2 DE69927109 T2 DE 69927109T2 DE 69927109 T DE69927109 T DE 69927109T DE 69927109 T DE69927109 T DE 69927109T DE 69927109 T2 DE69927109 T2 DE 69927109T2
Authority
DE
Germany
Prior art keywords
information
memory
cell
search
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69927109T
Other languages
English (en)
Other versions
DE69927109D1 (de
Inventor
Enrica Filippi
Viviana Innocenti
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.)
TELEKOM ITALIA SpA
Original Assignee
TELEKOM ITALIA SpA
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 TELEKOM ITALIA SpA filed Critical TELEKOM ITALIA SpA
Publication of DE69927109D1 publication Critical patent/DE69927109D1/de
Application granted granted Critical
Publication of DE69927109T2 publication Critical patent/DE69927109T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/104Asynchronous transfer mode [ATM] switching fabrics
    • H04L49/105ATM switching elements
    • 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/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • H04L49/309Header conversion, routing tables or routing tags
    • 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
    • Y10S707/99936Pattern matching access

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Instructional Devices (AREA)
  • Computer And Data Communications (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf einen Speicher zur Informationssuche durch eine Präfixanalyse, der insbesondere für die Verwendung zum Errichten von Leitwegtabellen für Hochgeschwindigkeitsnetze bestimmt ist, vorzugsweise für das Internet.
  • Kommunkationsprotokolle für moderne Hochgeschwindigkeitsnetze wie die ATM-Netze, das Internet usw. beruhen auf der Übertragung von Informationspaketen, die im Vorlaufteil ["header"] Informationen enthalten, die sich auf die Zieladresse des Pakets beziehen. In einem Netzknoten verwenden bei Empfang eines Pakets die Leitwegsuchsteuerungseinheiten die Adresse, um eine Suche in einer geeigneten Tabelle oder einer Datenbank durchzuführen und die Ausgangsschnittstelle zu ermitteln, an die das Paket für die Weiterleitung an eine nachfolgende Netzeinheit geliefert werden muß. Gegenwärtig sind Übertragungsraten in der Größenordnung des Bereichs von Gbits/s üblich, und deshalb muß die Leitwegsuchzeit in einem Knoten sehr kurz sein, um zu vermeiden, daß der Fluß des regulären Verkehrs leidet. Um eine quantitative Angabe zu liefern, muß berücksichtigt werden, daß eine Übertragung mit 1 Gbits/s mit Paketen von etwa 1.000 Bits erfordert, daß die Knoten etwa eine 1 Mio. Pakete pro Sekunde handhaben: Werden die Schaltzeit, die für eine eventuelle Verarbeitung des Paket-Vorlaufteils erforderliche Zeit und eventuelle Schutzzeiten zwischen aufeinanderfolgenden Paketen berücksichtigt, so muß die Suche in der Leitwegsuchtabelle, was die längste Operation ist, in einer Zeit durchgeführt werden, die etwas kürzer ist als 1 μs. Die Situation wird noch kritischer, wenn die Kommunikationsgeschwindigkeit noch weiter anwächst.
  • Wird zur Vereinfachung der Beschreibung und nur als ein Beispiel auf das Internet Bezug genommen, so gibt es ein exponentielles Anwachsen sowohl der Zahl der Host-Rechner, die mit dem Netz verbunden sind, als auch des Verkehrs als auch der Banderfordernisse, wofür auch die stetige Entwicklung neuer Anwendungen verantwortlich ist, die das Internet verwenden. Alles dies führt zu einem Anwachsen der Größe der Leitwegsuchtabelle, was wiederum eine längere Suchoperation zur Folge hat. Es ist jedoch dem Fachmann gut bekannt, daß, während es immer leichter wird, eine hohe Speicherkapazität zu niedrigen Kosten bereitzustellen, die Verkürzung der Zugriffszeit auf große Speicher erhebliche technologische Probleme mit sich bringt.
  • Zum Zweck der leichteren Anpassung an die Netzvergrößerung können die Internetadressen nach einer hierarchischen Struktur organisiert werden, in dem Sinne, daß Gruppen von Adressen, die beispielsweise zur selben geographischen Region oder zum selben Provider gehören, die Bits der hohen Stellenwertigkeit (Präfix) teilen. Diese Präfixe können unterschiedlich lang sein und können ihrerseits den Teil höchster Wertigkeit von anderen Präfixen bilden (Präfixe von Präfixen). Weitere Einzelheiten über die Struktur von Internetadressen können beispielsweise gefunden werden in dem Dokument "Das Internet-Protokoll der nächsten Generation" von H. P. Giesinger, Comtec 5, 1998, Seiten 20 bis 26, oder "IP Next Generation Overview" von R. M. Hinden, datiert 14. Mai 1995 und zu finden auf der Internetseite
    http:\\playground.sun.com/pub/ipng/html/INET-Ipng-Paper.html
  • Um die Suchkomplexität zu verringern, wird berücksichtigt, daß die Leitwegsuchinformation im Netz sich vor allem auf die Adresse eines nachfolgenden Knotens im Pfad, der zum Ziel des gerade verarbeiteten Pakets führt, bezieht. Diese Adresse wird gemeinhin bezeichnet mit dem Ausdruck "nächste Etappe" ["next hop"]. Da in einer Leitwegsuchtabelle die möglichen unterschiedlichen nächsten Etappen in der Größenordnung von 100 vorhanden sein können, kann die diesbezügliche Information extrahiert und in eine andere Datenstruktur gespeichert werden. Unter Berücksichtigung der kleinen Dimensionen kann der Zugang zu dieser Struktur unter Verwendung eines direkten Zugriffs durch einen Index erfolgen, der in der Literatur als "ZIEL" ["TARGET"] bezeichnet wird und der ausgehend von der Adresse des empfangenen Pakets identifiziert wird. In der Praxis wird in einer Leitwegsuchhandhabungseinheit unter Verwendung der Paketzieladresse als Suchschlüssel Zugang zu einer weiterleitenden Tabelle gewonnen, die eine Untergruppe der vollständigen Leitwegsuchtabelle eines Netzes ist und in der jede Zeile ein Präfix (Adressenmasken-Paar, bei dem die Maske die Zahl der Bits hoher Wertigkeit der Adresse angibt, nämlich der das Präfix bildenden Bits) und entsprechende Daten (das Ziel, gewöhnlich ein Zeiger zur Ausgangsschnittstelle, zusammen mit weiterer Information) enthält. Ein Präfix schafft dann eine Übereinstimmung mit dem Suchschlüssel (d. h. es erlaubt das Erreichen eines Ziels), wenn die Bit-um-Bit-UND-Verknüpfung des Schlüssels mit der der Adresse zugeordneten Maske gleich der Adresse selbst ist.
  • Die Variabilität der Länge der Präfixe bewirkt weitere Komplikationen, da die Indexsuche das Ergebnis haben kann, daß verschiedene Ziele gefunden werden, da der Vergleich ein positives Ergebnis für verschiedene Präfixe unterschiedlicher Länge geben kann. Unter diesen Bedingungen ist das aktuelle Ziel dasjenige, das dem längsten Präfix entspricht, also dem spezifischsten für den Zielpunkt. Dieses Kriterium ist bekannt als "Übereinstimmung der längsten Präfixe" ["longest prefix match"].
  • Theoretisch besteht die effizienteste und schnellste Methode der Durchführung einer Suche auf der Grundlage der Übereinstimmung des längsten Präfixes darin, die Informationsblöcke (Einträge) in einen oder mehrere ternäre CAMs zu speichern (CAM = Content Addressable Memory, inhaltadressierbarer Speicher, Assoziativspeicher). In einem ternären CAM kann jedes Speicherbit drei Werte einnehmen: 0, 1 und irrelevant ["don't care"]. Der Vergleich zwischen den Bits des Vergleichsregisters und den Speicherbits, die auf dem logischen Wert "irrelevant" stehen, ist offensichtlich stets positiv: Es ist also möglich, die den Daten zugeordneten Masken implizit zu implementieren, indem man einfach die betreffenden Bits der Daten auf den Pegel "irrelevant" setzt. Der Nachteil dieser Art von Vorrichtungen liegt hauptsächlich im hohen Preis und in der schwachen Integrierbarkeit.
  • Um billige konventionelle Speicher verwenden zu können, müssen deshalb Algorithmen zum Suchen in den Datenbanken verwendet werden, die sowohl schnell als auch kompakt sind. Die Geschwindigkeit eines Suchalgorithmus ist strikt mit der Zahl der Speicherzugriffe verbunden, während die Kompaktheit bestimmt wird durch die Speicherquantität, die zum Speichern der verwendeten Datenstruktur benötigt wird. Das schließliche Ziel ist es, sowohl die Zahl der Zugriffe als auch die zum Speichern der Information für den Suchprozeß benötigte Speichergröße soweit als möglich zu minimieren.
  • Die praktischen Implementierungen der Leitwegsuchalgorithmen, die sich zur Erfüllung des Kriteriums der Übereinstimmung des längsten Präfixes eignen, können sowohl softwaremäßig als auch hardwaremäßig sein. Allgemein müssen sie jedenfalls eine bestimmte Zahl von gemeinsamen Anforderungen erfüllen, wie z. B.:
    • – eine Suchgeschwindigkeit, die so unabhängig wie möglich von den Tabellendimensionen ist;
    • – kleine Variabilität der Algorithmusdurchführung zwischen dem schlechtesten Fall und dem besten Fall;
    • – leichte inkrementelle (oder lokalisierte) Tabellenfortschreibung (d. h. die Einfügung oder Löschung einiger Informationsblöcke sollte nicht die Neuschreibung der gesamten Tabelle oder wesentlicher Teile derselben erforderlich machen);
    • – Flexibilität zum Zweck einer leichten Anpaßbarkeit an künftige technologische Entwicklungen und an Veränderungen in der Adressenorganisation;
    • – eine Speicherorganisation so regulär als möglich zur Vermeidung von Ausschuß.
  • Es wurden bereits verschiedene Lösungen zum Lösen des Problems der Internet-Leitwegsuche in solcher Weise, daß das Erfordernis der Implementierung der Übereinstimmung des längsten Präfixes in Betracht gezogen wird, vorgeschlagen.
  • Eine erste Gruppe von Lösungen beruht auf einem Algorithmus, der als "PATRICIA" bekannt ist. Dies ist ein Algorithmus für die Speicherung, Indexierung und Abfrage von Informationen in großen Verzeichnissen, insbesondere in Katalogen von Bibliotheken. Die Prinzipien dieses Algorithmus sind beschrieben in dem Artikel "PATRICIA – Practical Algorithm To Retrieve Information Coded in Alphanumeric" von D. R. Morrison, Journal of the Association for Computing Machinery, Band 15, Nr. 4, Oktober 1968, Seiten 155 ff., und seine Anwendung bei der Lösung von Leitwegsuchproblemen im Internet ist ausführlich in der zutreffenden technischen Literatur dokumentiert. Der Algorithmus PATRICIA ist im wesentlichen ein Algorithmus, der an einem Präfix-Baum arbeitet, der auf den Adressenbits aufbaut, wobei jedes Bit einem Knoten entspricht. Die Adressenbits werden jeweils einzeln geprüft. Um die Prüfung von Knoten zu vermeiden, die nicht-existierenden Zweigen entsprechen, ist jedem Bit eine Angabe des zu prüfenden nachfolgenden Bits zugeordnet. Nachdem die Suche abgeschlossen ist, wird eine Überprüfung der tatsächlichen Existenz des Präfixes durchgeführt. Da jeder Knoten einem oder mehreren Speicherzugriffen entspricht, und unter Berücksichtigung der Tatsache, daß der Speicherzugriff viel langsamer ist als die Datenverarbeitung, schafft der Algorithmus eine tatsächliche Reduktion der Gesamtzeit zum Ermitteln der Adresse.
  • Der wesentliche Nachteil der auf dem Algorithmus PATRICIA beruhenden Lösungen ist, daß eine praktische Implementierung auf den schlechtesten Fall geeicht werden muß (in der Praxis muß der Durchgang durch alle Knoten des Baums berücksichtigt werden), während beim derzeitigen Internet festgestellt wurde, daß statistisch etwa 20 Knoten analysiert werden müssen, bevor das Ziel (die Adresse, nach der man sucht) erreicht wird. Diese Lösungen sind also von Natur aus recht langsam und weisen außerdem einen starken Unterschied zwischen dem schlechtesten Fall und dem typischen Fall auf.
  • Zur Beschleunigung des Suchprozesses sind einige Algorithmen vorgeschlagen worden, bei denen bei jedem Suchschritt entlang dem Baum, anstelle von nur einem Bit, mehrfache Adressenbits in Betracht gezogen werden. Der Artikel "Putting Routing Tables in Silicon" von T. Pei und C. Zukowski, IEEE Network Magazine, January 1992, Seite 42 ff., beschreibt, wie diese Algorithmen hardwaremäßig mit Hilfe von sogenannten Trie-Speichern ["trie memories"] implementiert werden können. Das Hauptproblem in diesem Fall ist, daß die üblichen Trie-Speicher nur verwendbar sind, wenn keine mehrfachen Übereinstimmungen vorliegen.
  • Aus diesem Grund beruhen viele Vorschläge von Algorithmen, die der Durchführung von Suchvorgängen in Leitwegsuchtabellen für das Internet so, daß der für die Tabelle benötigte Speicher reduziert oder allgemein der Suchprozeß beschleunigt wird, dienen sollen, auf der Restrukturierung der Präfixe so, daß die mehrfachen Übereinstimmungen eliminiert werden: Auf dieses Weise könnten die Algorithmen theoretisch unter Verwendung der Trie-Speicher implementiert werden.
  • Beispiele für die Restrukturierung von Präfixen sind beschrieben in EP 0 408 188 A und von M. Degemark u. a. im Artikel "Small Forwarding Tables for Fast Routing Lookups", vorgelegt bei der Konferenz ACM SIGCOMM '97, Cannes (Frankreich), 16.–18. September 1997, und von V. Srinivasan und G. Varghese im Artikel "Faster IP Lookups using Controlled Prefix Expansion", vorgelegt auf der Konferenz ACM SIGMETRICS '98, Madison (Wisconsin, USA), 22.–26. Juni 1998.
  • Die von Degemark u. a. vorgeschlagene Lösung führt zu einem Dreiebenenbaum, bei dem jede Ebene 16, 8 bzw. 8 Bits der Adresse deckt und in einer speziell kompakten Struktur gespeichert wird, die durch eine geeignete Restrukturierung der Präfixe ermöglicht wird, aufgrund derer jedes Präfix im Baum ein Intervall von Adressen ermittelt. Diese Lösung minimiert drastisch die benötigte Speichermenge und die Zugriffszeiten zum Speicher für die Suche im Vergleich zu der auf PATRICIA beruhenden Lösung (etwa 400 ns für den schlechtesten Fall, der 12 Zugriffe vorsieht); die Restrukturierung der Präfixe macht jedoch die inkrementelle Fortschreibung unmöglich und erfordert die gesamte Neuschreibung des Speichers bei jeder Fortschreibung: Der Fortschreibungsprozeß ist dann sehr langsam und kann für die normale Netzverwaltung Probleme bewirken.
  • Die von V. Srinivasan und G. Varghese vorgeschlagene Lösung restrukturiert die Präfixe so, daß sie nur eine beschränkte Zahl von Längenwerten (möglicherweise variabel) heranziehen, und expandiert die kürzesten Präfixe, indem sie sie durch die Gruppe von Präfixen ersetzt, die den nächsten vorgegebenen Längenwert haben. Die Leitwegsuchtabelle wird in eine bestimmte Zahl von Untertabellen transformiert, von denen jede Zeiger zu den nachfolgenden Untertabellen speichert, und die Länge dieser Untertabellen ist so optimiert, daß für eine gegebene Zahl von Zugriffen eine Reduktion des für diese spezifische Gruppe von Präfixen benötigten Speichers erhalten wird. Durch diese Konstruktion wird allgemein eine Reduktion der verwendeten Speichermenge erhalten, obwohl die Tabellenlänge allgemein nicht vorhersagbar ist und dann keine optimale Ausnützung des physikalischen Speichers erhalten wird. Zusätzlich ist die resultierende Datenstruktur für eine gegebene Gruppe von Präfixen optimiert und ist deshalb kaum allgemein.
  • Die vorliegende Erfindung zielt darauf, eine Struktur zu schaffen, die eine optimale Ausnützung des physikalischen Speichers und eine inkrementelle Fortschreibung der Leitwegsuchtabelle (oder allgemein der Gruppe von Einträgen) sicherstellt.
  • Der erfindungsgemäße Speicher umfaßt:
    • – ein Speicherelement, das eine Mehrzahl von Zeilen und Spalten von Speicherzellen umfaßt, wobei jede Zelle einen Block speichert, der zu einer Gruppe von Informationsblöcken gehört, und jeder Informationsblock einer Maske zugeordnet ist, die eine Zahl von Zeichen hoher Wertigkeit eines jeweiligen Präfixes angibt, und einem Ziel zugeordnet ist, das Daten darstellt, die möglicherweise zum Zugreifen auf eine weitere Gruppe von Informationsblöcken verwendbar sind, und
    • – Steuervorrichtungen zum Steuern der Suche nach einem spezifischen Informationsblock im Speicher und zum Fortschreiben des Speichers, wobei die Steuervorrichtungen über den Vergleich zwischen aufeinanderfolgenden Teilen vorgegebener Länge einer Kette von Zeichen, die am Eingang empfangen werden, mit entsprechenden Teilen gespeicherter Präfixe arbeiten, und wobei diese Präfixe unterschiedlich lang sein können und ihre Länge nicht ein Vielfaches der Länge dieser Teile ist;
    und ist dadurch gekennzeichnet, daß zum Implementieren eines auf der Übereinstimmung des längsten Präfixes beruhenden Suchkriteriums:
    • – jede Zeile in ein Informationsfeld, das die Adresse einer nachfolgenden Zeile zum Fortsetzen einer Suche oder eine Information, die sich auf ein erreichtes Ziel bezieht, und zwei Kennfelder ["flags"], die den Inhalt des Informationsfelds spezifizieren, speichert, und
    • – ein Hilfsvektor vorhanden ist, der so viele Zellen aufweist, als es Zeilen in diesem Speicherelement gibt, und der, wenn die Kennfelder einer der Zellen des Speicherelements anzeigen, daß ein Ziel erreicht worden ist, zusammen mit der Notwendigkeit, die Suche in eine nachfolgende Zeile zu bringen, in der Lage ist, die Zielinformation in die dieser nachfolgenden Zeile zugeordnete Zelle zu speichern, wobei jede Zelle dieses Hilfsvektors ein Informationsfeld und zwei Kennfelder speichert, die die gleichen Aufgaben haben wie die der Zellen des Speicherelements.
  • Die Erfindung betrifft auch ein Verfahren zum Betreiben des oben beschriebenen Speichers. Für eine detaillierte Erläuterung wird auf die anliegenden Zeichnungen Bezug genommen. Es zeigen:
  • 1 einen Grundschaltplan eines Leitwegsuchknotens in das Internet;
  • 2 ein Schema, das die Organisation des erfindungsgemäßen Speichers zeigt;
  • 3A bis 3C Darstellungen von Datenorganisationen in einer Speicherzelle;
  • 4, 5 Diagramme, die Suchvorgänge im Speicher von 2 betreffen;
  • 6 ein numerisches Beispiel der Suche;
  • 7 bis 15 Ablaufdiagramme, die das Einfügen und Löschen von Daten im erfindungsgemäßen Speicher betreffen.
  • Bezugnehmend auf 1, kann ein Leitwegsucher ["Router"] in einem Knoten eines Netzes wie dem Internet schematisch wiedergegeben werden als eine Gruppe von Eingangs-Schnittstellenschaltungen IFa ... IFx und Ausgangs-Schnittstellenschaltungen IFb ... IFy, von denen jede auf einer Seite mit Leitungen verbunden ist, die allgemein mit a, x, b, y bezeichnet sind, und auf der anderen Seite mit einer Schalteinheit SW verbunden sind, der eine Steuervorrichtung oder ein Netzwerkprozessor PR zugeordnet ist. Generell enthalten die Eingangs-Schnittstellenschaltungen Puffer für die eingehenden Daten (in der Figur nicht dargestellt) und Informationsverarbeitungsvorrichtungen, die dazu ausgebildet sind, die Leitwegsuche im Knoten durchzuführen, d. h. die Ausgangs-Schnittstellenschaltung zu ermitteln, an die das an einer der Eingangs-Schnittstellenschaltungen eintreffende Paket weitergeleitet werden muß. Der Prozessor PR erledigt die gesamte weitere Verarbeitung, die dafür erforderlich ist, die Verbindungen herzustellen und den Knoten zu steuern. Bei anderen Leitwegsucherkonstruktionen kann die Leitwegsuche auch speziellen Verarbeitungseinheiten zugewiesen sein. Die Leitwegsucheinheiten sind insgesamt mit FE bezeichnet.
  • Um die Suche durchzuführen, sollen die Einheiten FE eine örtliche replizierte Kopie des Teils der Leitwegsuchtabelle haben, der sich auf die Präfixe der Zielpunkte bezieht, die vom Knoten selbst erreicht werden können. Wie in der Einleitung angegeben wurde, können die Leitwegsuchtabellen in zwei Ebenen strukturiert sein (und deshalb zwei Speichervorrichtungen verwenden): In der ersten Ebene wird, ausgehend von der Paketadresse, ein Index oder ein Ziel ermittelt, der bzw. das dem längsten Präfix entspricht, der in der Tabelle für diese Zieladresse enthalten ist, während in der zweiten Ebene mit Hilfe dieses Indexes ein Zugang direkt zur geforderten Information zum Weiterleiten des Pakets erhalten wird. Die beiden Vorrichtungen sind für die Schnittstellenschaltung IFx dargestellt und mit M1 bzw. M2 bezeichnet. Das Bezugszeichen CT bezeichnet die Verarbeitungs- und Steuervorrichtungen, die das Suchen in der Tabelle und außerdem das Forschreiben der Tabelle ermöglichen.
  • Die Erfindung betrifft eine Implementierung des Speichers M1 in der Form eines sogenannten Multibit-Trie-Speichers, der dazu erweitert ist, eine auf der Übereinstimmung des längsten Präfixes basierende Suche zu implementieren.
  • In 2 ist die logische Struktur des erfindungsgemäßen Speichers dargestellt, und zwar unter der beispielhaften Annahme, daß bei jedem Suchschritt ein Maximum von k Bits des Präfixes in Betracht gezogen wird. Wie ersichtlich ist, besteht der Trie-Speicher in konventioneller Weise aus einer Matrix mit L = 2k Spalten und R Zeilen, von denen jede Spalte einer der möglichen Kombinationen der Adressenbits, nämlich k zu einem Zeitpunkt, entspricht und die Zahl der Zeilen von der Zahl und der Verteilung der Adressen und vom Wert von k abhängt. Jede Speicherzelle kann leer sein (d. h. sie entspricht einer Kombination, die in keiner der gespeicherten Adressen vorhanden ist) oder kann die Adresse einer nachfolgenden zu erreichenden Zeile und/oder die Angabe bezüglich der Tatsache, daß ein Ziel erreicht worden ist, enthalten.
  • Im Fall, daß die Suche auf der Übereinstimmung der längsten Präfixe beruht, sind die beiden Angaben "Ziel erreicht" und "Fortgang zur nachfolgenden Zeile" nicht gegenseitig exklusiv, und dies muß beim Organisieren der Daten berücksicht werden. Für diesen Zweck wäre es offensichtlich möglich, einen Aufbau anzunehmen, bei dem die Zellen ein Feld für die Adresse der nachfolgenden Zeile und ein Feld für die Angabe "Ziel erreicht" enthalten. Diese Lösung würde jedoch eine nutzlose Verschwendung von Speicherplatz darstellen, da das gleichzeitige Vorhandensein der beiden Anzeigen eine Ausnahme und nicht die Regel ist, so daß für nahezu sämtliche Zellen eines der Felder frei sein würde. Auch die in der Literatur beschriebene Lösung, die eine Restrukturierung oder Erweiterung der Präfixe so, daß die mehrfachen Übereinstimmungen beseitigt werden und die Ziele in die Endebene des Baums verschoben werden, in Betracht zieht, ist nicht zweckmäßig, da eine solche Lösung viel größere Speicherdimensionen erfordert, insbesondere dann, wenn die Zahl der Einträge in die Tabelle groß ist, und das inkrementelle Fortschreiben zu einer schwierigen Aufgabe macht.
  • Um die angegebenen Erfordernisse zu erfüllen, wird jede Zelle des erfindungsgemäßen Speichers durch ein einziges Informationsfeld und durch zwei Kennfelder ["flags"] (GO und TARGET) gebildet, deren Kombination die Bedeutung des Inhalts des Informationsfelds definiert. Das Informationsfeld kann beispielsweise 22 Bits umfassen (im vorliegenden Fall, der Internetadressen auf 32 Bits betrifft), so daß jede Zelle insgesamt drei Bytes enthält.
  • Das erste Kennfeld, GO, erlaubt die Bestimmung, ob die Suche andauern soll oder nicht, während das zweite Kennfeld, TARGET, anzeigt, ob ein gültiges Ziel existiert oder nicht. Ist GO "1", so enthält das Feld mit den 22 Bits die Angabe der nächsten bei der Suche einer Adresse zu betrachtenden Zeile, und zwar sowohl in der Phase der Leitwegsuche für ein Paket als auch in der Phase des Einsetzens und Löschens von Einträgen in die/von der Tabelle (Feld NEXT_ROW). Ist GO "0", so enthält das Feld mit den 22 Bits keine gültige Information, wenn das Kennfeld TARGET "0" ist; andernfalls kann es als Angabe, daß als Ergebnis der Suche ein gültiges Ziel am Ausgang abgegeben werden soll, interpretiert werden. In diesem Fall ist das Feld mit den 22 Bits aus den folgenden Unterfeldern zusammengesetzt:
    VALUE: 9 Bits, die die tatsächliche Identität des Ziels kodieren;
    MASK: 4 Bits, die die dem Ziel, das im Unterfeld VALUE gespeichert ist, zugeordnete Maske kodieren, wobei, wenn k der Suchschritt ist, der Wert MASK von 0 bis k – 1 variieren kann. Ein Wert unter k – 1 zeigt ein Präfix an, dessen Länge nicht ein Vielfaches von k ist.
    T_BAK: 9 Bits, die ein sogenanntes "echtes Ziel" [proper target] (oder "Backup-Ziel") kodieren: Dieser Ausdruck bezeichnet ein Ziel, das "überdeckt" werden kann, nämlich ein Präfix, das eine Länge hat, die kein Vielfaches des Suchschritts ist, und das verborgen (überdeckt) werden kann durch eine Gruppe von längeren Präfixen. Die Information über das Vorhandensein dieses kürzeren Ziels muß gespeichert werden, um zu vermeiden, daß, nachdem ein Präfix der entsprechenden Zeile des Speichers gelöscht worden ist, eine Suche ein nicht korrektes Ergebnis liefern könnte, wie später erläutert wird. Die Zelle, in der die Information T_BAK gespeichert wird, wird bestimmt durch eine einfache mathematische Beziehung, die später erläutert wird. Im Fall, daß kein Präfix, das überdeckt werden kann, vorliegt, wird ein vorgegebener Wert NULL dem Unterfeld T_BAK zugeordnet: Wird beispielsweise angenommen, daß die Tabelle Zugriff zu einem Maximum von 512 (d. h. 29) Zielen geben kann, so kann der Wert NULL 511 sein, nämlich 29 – 1. Es ist zu beachten, daß zum Speichern der Information T_BAK die Tatsache ausgenützt wird, daß die Felder VALUE, MASK des Ziels eine Gesamtlänge haben, die geringer ist als die Länge des Informationsfelds der Zelle, und dann wird ein Teil der Zelle ausgenützt, der andernfalls unausgenützt bleiben würde. Das Wählen der Dimensionen der Unterfelder VALUE und MASK so, daß solche Eigenschaften ermöglicht werden, bringt keinen Verlust an Allgemeinheit des Aufbaus mit sich.
  • Der Fall GO = 1 und TARGET = 1 entspricht dem Erreichen eines Ziels und der gleichzeitigen Notwendigkeit, die Suchoperationen fortzusetzen. Da, wie gesagt, eine Zelle nicht gleichzeitig die Angabe einer zu prüfenden Zeile und das längste Ziel, das der erreichten Ebene zugeordnet ist, enthalten darf, muß die zweite Information verschoben werden. Die Zielinformation ist gemeinsam für alle Zellen in der durch das Feld NEXT_ROW bezeichneten Zeile, somit ist es möglich, sie "ideal" am Anfang der Zeile selbst zu speichern. Um eine Zahl von Spalten, die eine Potenz von 2 ist, beizubehalten, ist gemäß der Erfindung ein Hilfsvektor von R Zellen, der mit AUX bezeichnet ist, dem Speicher M1 zugeordnet. Jede Zelle im Vektor ist einer Zeile des Speichers M1 zugeordnet und hat die selbe Struktur wie die Zellen im Speicher M1. Ein solcher Vektor enthält für jede Zeile die Zielinformation, die er von einer Zelle der vorhergehenden Ebene übernommen hat, aufgrund der Notwendigkeit, in dieser Zelle einen Wert der nächsten zu prüfenden Zeile zu speichern. Von nun an wird die Notierung AUX[NEXT_ROW(current cell)] verwendet, um anzuzeigen, daß die in Übereinstimmung mit einer Zelle gefundene Zielinformation im Hilfsvektor in der Zeile zu speichern ist, die ausgehend von der Zelle selbst zu erreichen ist.
  • Für alle anderen Kombinationen der Kennfelder GO und TARGET ist die Zelle AUX[NEXT_ROW(current cell)] leer. In der Folge ist die Bedeutung der beiden Kennfelder:
  • Figure 00110001
  • Zurückkommend auf die Information T_BAK, beruht die Position im Speicher, auf der diese Information zu speichern ist, auf der Betrachtung, daß für einen Suchschritt k die Zahl der Präfixe, die überdeckt werden können,
    Figure 00110002
    ist. Es ist also möglich, in einer Speicherzeile die Präfixe zu speichern, die überdeckt werden können und zur selben Zeile gehören, indem man die Tatsache ausnützt, daß die Zahl der Zellen in der Zeile exakt 2k beträgt. Die Präfixe einer Länge, die ein Vielfaches von k sind, können nicht durch andere längere Präfixe überdeckt werden, da sie selbst die längsten in der Zeile speicherbaren Präfixe sind. Tatsächlich existiert eine Funktion, die eine Eins-zu-eins-Entsprechung zwischen jedem Paar: "Adressenteil von k Bits, Maske des Teils geringer als k" und einer Zelle in der Zeile, herstellt. Falls "index" der Adressenteil ist und MASK (niedriger als k) die dem Teil entsprechende Maske ist, hat die Zelle, in der das überdeckbare Ziel gespeichert werden soll, innerhalb der Zeile eine Position "offset" [versetzt], die durch die folgende Beziehung identifiziert ist: offset = index – 1 + 2(k-MASK-1)
  • Die Verwendung der Information "offset" ergibt sich aus der Beschreibung der Einfügungs- und Löschoperationen.
  • Es werden nun die Operationen der Suche, des Einfügens und des Löschens im erfindungs gemäßen Speicher beschrieben, wobei auch auf die anliegenden Ablaufdiagramme Bezug genommen wird. In diesen wurde die folgende abgekürzte Terminologie angewandt:
    • – dest_add, dest_route = Zieladresse bzw. Zielausgang [destination address, destination output];
    • – prow = Zeiger an der zu erreichenden Zeile (gegenwärtige Zeile) ([pointer at the row to be reached];
    • – ptarget = Zeiger an einem möglichen Ziel (verwendet, um schrittzuhalten bis zum Such-Ende eines möglicherweise zu überdeckenden Ziels, das während des Suchvorgangs ermittelt wird [pointer at a possible target];
    • – t_info = ausgangsseitig abzugebendes Ziel;
    • – cell.go, cell.target, cell.value, cell.row, cell.mask, cell.t_bak = Werte der homonymen Kennfelder/Felder einer Zelle (zur Vereinfachung der graphischen Wiedergabe und Notierung wird in den Diagrammen eine Zelle so behandelt, als ob sie so viele Felder enthalten würde, als es Informationen gibt, die sie liefern muß;
    • – maskbit = Maske des zu prüfenden Adressenteils.
  • 1) Suche (4 bis 6)
  • Während der Suchphase empfängt der Speicher als Eingang die gesuchte Zieladresse. Die Zeile 0 des Speichers ist stets die Startzeile und die Suche geht jedesmal von einer Zeile auf die nächste über, wenn eine Gruppe von k Bits ("index") des Zielpunkts geprüft worden ist: Die Analyse beginnt mit den k Bits höchster Wertigkeit und geht mit Gruppen von k Bits weiter, bis die Zahl der Maskenbits, die noch zu prüfen sind, im Vergleich zum Schritt k kleiner oder gleich wird: Die korrekte Zelle innerhalb der Zeile ist diejenige, die dem Wert der gerade geprüften Gruppe entspricht.
  • In jeder Zeile ist dann, wenn das Kennfeld GO "1" ist, die nächste zu prüfende Zeile im Feld NEXT_ROW der gegenwärtigen Zeile angegeben. Vor dem Zugriff auf die nächste Zeile muß jedoch das Kennfeld TARGET geprüft werden. Ist es "1", so bedeutet dies, daß die nächste Zeile das Ziel von der gegenwärtigen Zelle während der Einfügungsphase übernommen hat, wie später besser ersichtlich sein wird. Dieses Ziel ist das am meisten spezifische, das bisher gefunden wurde, und muß deshalb gespeichert werden. Die Verwendung des Zeigers "ptarget" sorgt für eine solche Speicherungsoperation, ohne einen tatsächlichen Zugriff auf den Speicher zum Schreiben einer Information zu benötigen, die während der Suchphase veraltet werden könnte.
  • Ist das Kennfeld GO "0", so ist die Suche vorüber. Jedenfalls ist zur Bestimmung der am Ausgang abzugebenden Information das Kennfeld TARGET zu prüfen. Ist dieses "1", so enthält die gegenwärtige Zelle das spezifischste Ziel für die Adresse am Eingang, und im anderen Fall ist das Ziel bereits während der Suchphase bestimmt worden und ist gespeichert in der Zelle von AUX, die mit "ptarget" bezeichnet ist. Es sollte jedoch zur Kenntnis genommen werden, daß in diesem zweiten Fall der Zielwert in der Zelle AUX NULL sein könnte, was bedeutet, daß die Suche erfolglos war, da für den gesuchten Zielpunkt kein gültiges Präfix im Speicher existiert.
  • Der Suchprozeß ist in 5 in Vektorform dargestellt und ist in 6 durch numerische Beispiele veranschaulicht, wobei zur Vereinfachung eine 8-Bit-Zieladresse und ein Schritt k = 2 betrachtet werden. In dieser Figur geben G und T die Kennfelder GO und TARGET an.
  • Es wird angenommen, daß die folgenden Adressen, mit darauf bezogenen Masken und Zielen, gespeichert worden sind:
    Figure 00130001
    und daß ein Leitweg für zwei Nachrichten, deren Adressen 01101100 bzw. 00100101 sind, gesucht werden soll.
  • Für die erste Nachricht ist der Suchpfad:
    • – Zeile 0, Zelle 01 → nächste Zeile = 4 (GO = 1, TARGET = 0)
    • – Zeile 4, Zelle 10 → nächste Zeile = 5 (GO = 1, TARGET = 0)
    • – Zeile 5, Zelle 11: in dieser Zelle ist GO = 0 und TARGET = 1; die Suche muß enden, obwohl das Bitpaar 00 noch zu prüfen ist: Dies bedeutet, daß jedenfalls spezifischere Präfixe im Speicher nicht vorliegen; ein Ziel (C, das sich auf das dritte gespeicherte Präfix bezieht) wurde gefunden und wird abgegeben; außerdem überdeckt, da die Maske des Präfixes, mit dem die Übereinstimmung überreicht wird, 5 ist, das Präfix (01101) die beiden Zellen 10 und 11, und in der ersten wird der Wert des Ziels auch im Feld T_BAK gespeichert. Es ist ohne weiteres ersichtlich, daß die Zelle 10 die oben angegebene Beziehung für die Speicherung des Ziels in T_BAK erfüllt.
  • Für die zweite Nachricht ist der Suchpfad:
    • – Zeile 0, Zelle 00 → nächste Zeile = 1
    • – Zeile 1, Zelle 10 → an dieser Stelle wird die Suche nicht abgeschlossen (GO = "1"), jedoch gibt es auch TARGET = "1", da es eine Übereinstimmung mit dem Präfix der ersten gespeicherten Adresse mit dem Ziel A gibt (die zweite gespeicherte Adresse, selbst wenn sie das gleiche Anfangsbit wie das Bit der ersten hat, hat die Maske 8 und die Übereinstimmung wird dann erst nach der Prüfung aller 8 Bits erkannt); es muß deshalb der Vektor AUX verwendet werden und die Werte von MASK und VALUE des gefundenen Ziels werden in der Zeile dieses Vektors gespeichert, die durch das Feld NEXT_ROW der Zelle 10 der Zeile 1 (Zeile 2) angegeben ist;
    • – Zeile 2, Zelle 01 → nächste Zeile = 3
    • – Zeile 3, Zelle 01 → die Zelle enthält keine Daten und das zu verwendende Ziel ist dann das von AUX.
  • 2) Einfügung (7 bis 10)
  • Im Fall der Einfügung umfaßt der in den Speicher zu ladende Eintrag eine Adresse, die Maske und das Ziel (der Adresse zugeordneter Ausgang). Die Vorgänge laufen wie bei der Suche, ausgehend von der Anfangszeile (Zeile 0) des Speichers und jedesmal um eine Zeile fortschreitend (Subroutine I_SEARCH_ROW), bis die Zahl der bis dahin nicht geprüften Bits in der Maske kleiner oder gleich dem Schritt k wird. Die Zeile, in der dieser Zustand erreicht wird, stellt die Zeile dar, in die der neue Eintrag gespeichert werden muß (Subroutine I_MODIFY_ROW).
  • Es wird zuerst die Zeilensuche betrachtet (Subroutine I_SEARCH_ROW, 8); die hierbei in einer Zeile durchzuführenden Operationen hängen vom Wert des Kennfelds GO ab. Wenn GO = 1, existiert die Zeile bereits und es muß auf die nächste im Feld NEXT_ROW angegebene Zeile zugegriffen werden, ohne daß irgendwelche speziellen Operationen durchzuführen sind. Wenn GO = 0, muß die Zeile geschaffen werden. Die zu schaffende Zeile ist z. B. die erste einer Liste von leeren Zeilen (HEAD(row_free_list)), die folglich fortgeschrieben wird (UPDATE (row_free_list)). Die Art und Weise, in der eine einem Speicher zugeordnete leere Zeilenliste organisiert sein kann, ist dem Fachmann gut bekannt und stellt keinen Teil der vorliegenden Erfindung dar, so daß keine Beschreibung erforderlich ist. Außerdem gilt, daß, wenn TARGET = 1, das in der Zelle gespeicherte Ziel in den Hilfsvektor AUX an der Adresse kopiert wird, die der neuen Zeile entspricht. Jedenfalls wird das Kennfeld GO auf "1" gesetzt, um anzuzeigen, daß jetzt die vorliegende Zelle die Angabe der nächsten zu prüfenden Zeile enthält.
  • Nun fortschreitend zu den Operationen, die in der Bestimmungszeile durchzuführen sind (Subroutine I_MODIFY_ROW, 9), hängen diese davon ab, ob die Zahl der zu prüfenden Bits tatsächlich k ist oder niedriger als k ist. Im ersteren Fall ist wirklich die für die Einfügung interessierende Zelle eine einzige, während im zweiten Fall der Vorgang eine Gruppe von Zellen betrifft.
  • Ist die Zahl der zu prüfenden Bits k, so kann das Ziel nicht überdeckt werden und wird sicher in eine Zelle gespeichert. Die zu verwendende Zelle hängt vom Wert des Kennfelds GO ab und ist die Zelle der vorliegenden Zeile des Speichers, wenn GO = "0", oder die Zelle des Hilfsvektors, die vom Inhalt der vorliegenden Zelle adressiert wird, wenn GO = "1". In beiden Fällen werden das Ziel und die Maske in der Zelle gespeichert, und wenn GO = "0", wird das Kennfeld TARGET der Zelle des Vektors AUX auf "1" gesetzt. Anschließend wird das Kennfeld TARGET der Zelle der vorliegenden Zeile auf "1" gesetzt.
  • Ist die Zahl zu prüfenden Bits kleiner als k, so betrifft das Eingangsadressenziel alle Gruppen benachbarter Zellen in der vorliegenden Zeile von der Spalte "index" bis zur durch den "offset"-Wert angegebenen Spalte ("sup" im Diagramm) – d. h. alle Intervalle der Zellen, die in den k vorhergehenden Schritten entlang dem Baum erreicht werden können. Für jede dieser Zellen werden die Operationen der Subroutine I_MODIFY_CELL (10) durchgeführt. Auch diese Operationen werden durch die Werte von GO und TARGET geführt:
    • – wenn GO "1" ist: Die Zelle enthält bereits einen Zeilenzeiger und das Ziel muß in AUX gespeichert werden, wenn das Kennfeld TARGET "0" ist, oder auch wenn TARGET "1" ist, jedoch die in der Zelle AUX gespeicherte Maske niedriger als die oder gleich der Eingangsmaske ist;
    • – wenn GO "0" ist: Die Zelle enthält keinen Zeilenzeiger; sofern TARGET "1" ist, wird das Eingangsziel in die Trie-Speicherzelle gespeichert, falls die darin gespeicherte Maske niedriger als die oder gleich der Eingangsmaske ist;
    • – wenn die Zelle leer ist (GO = "0" und TARGET = "0"): Das Ziel wird gespeichert, während vorübergehend das Kennfeld TARGET auf "1" gesetzt wird und das Feld T_BAK auf den Wert NULL gesetzt wird.
  • Wenn die letzte Zelle erreicht wird (9, Ausgang "nein" von i < sup), wird das betreffende Kennfeld GO weiterhin geprüft und das Ziel im Feld T_BAK der Zelle der gegenwärtigen Zeile oder des Hilfsvektors gespeichert in Abhängigkeit davon, ob GO "0" oder "1" ist.
  • Es muß beachtet werden, daß die Zeilenmodifikationsoperation unter der Hypothese beschrieben wurde, daß der Speicher auf 0 initialisiert ist; andernfalls kann die Überprüfung des Werts von T_BAK notwendig werden.
  • 3) Löschen eines Eintrags (11 bis 15)
  • Zum Löschen eines Eintrags muß der Speicher abgetastet werden, bis die Zeile erreicht wird, die den gewünschten Eintrag enthält. Die schließliche Zeile wird, ebenso wie für die Suche oder die Einfügung, durch die Tatsache angegeben, daß maskbit niedriger oder gleich k ist. Die Löschung besteht darin, daß man von der Zelle oder von einer Gruppe von Zellen die Werte MASK, VALUE des Ziels löscht und sie, falls nötig, mit den Werten eines weniger spezifischen Ziels ersetzt, das von dem Ziel, das zu löschen ist, überdeckt wird.
  • Zur korrekten Durchführung dieser Operationen ist es notwendig, daß mit den geprüften Zeilen schrittgehalten wird, und für diesen Zweck verwenden wir einen Vektor "STEP", der so viele Zellen hat, als es Speicherzeilen gibt, und die Adresse einer geprüften Zeile (prow) speichert, und einen Zähler "ACTUAL", der die geprüften Zeilen zählt.
  • Der allgemeine Prozeß des Löschens ist in 11 dargestellt.
  • Jedesmal, wenn eine neue Zeile geprüft wird, wird die zuständige Adresse an der richtigen Position des Vektors "step" gespeichert. Für jede empfangene Zelle wird auch das Kennfeld GO geprüft; ist dieses "0", so bedeutet das, daß der Löschvorgang eine Zieladresse betrifft, die in Wirklichkeit nicht gespeichert ist, und dies hat offensichtlich ein Ende der Operationen zur Folge. Sobald die Ziel-Zeile erreicht ist, wird in der selben Zeile nach dem Vorhandensein eines Ersatzziels gesucht (Subroutine D_SEARCH_T_BAK), die Zeile, in die das Präfix eingefügt ist, wird durch Verwendung des gefundenen Ersatzziels, sofern vorhanden, modifiziert (Subroutine D_MODIFY_ROW), und es wird eine Rückwärtsprüfung auf den Zeilen durchgeführt, die leer geworden sind (Subroutine D_BACKTRACE), um sie zu eliminieren.
  • In der Subroutine D_SEARCH_T_BAK (12) werden die Zellen geprüft, die ein Präfix eines zu löschenden Eintrags identifizieren, wobei dieses Präfix aufgrund der Speicherkonstruktion in der interessierenden Zeile gespeichert sein könnte: Nämlich werden die Zellen geprüft, die in T_BAK ein mögliches kürzeres Präfix aufweisen könnten. Diese Suche erfordert die Prüfung der Zellen, die demjenigen Teil des Suchbaums entsprechen, der von der vorhergehenden Zeile zur gegenwärtigen Zeile geführt hat. Die Suche setzt sich fort, bis ein gültiges Ziel gefunden worden ist (in der Zelle des Speichers oder in der Zelle des Hilfsvektors, entsprechend dem Wert von GO) oder bis alle Zellen geprüft worden sind, ohne daß das Ziel gefunden wurde. Sofern das Feld T_BAK der interessierenden Zelle nicht den Wert NULL hat, ist ein Ersatzziel gefunden worden, was der entsprechenden Maske zugeordnet wird. Das Auffinden des Ziels wird signalisiert, indem ein Kennfeld "found" auf "1" gesetzt wird.
  • Für die Zeilenmodifikation (Subroutine D_MODIFY_ROW, 13) muß wie im Fall der Einfügung geprüft werden, ob die Bitgruppe genau k Bits hat oder weniger als k Bits hat, um festzulegen, ob die Maske nur eine Zelle oder eine Gruppe von Zellen identifiziert.
  • Im ersten Fall muß unterschieden werden, ob man den Eintrag im Vektor AUX oder in der zutreffenden Speicherzelle, je nach dem Wert GO, suchen soll. Wenn mit der vorhergehenden Subroutine ein Ersatzziel gefunden wurde (Kennfeld "found" auf 1), ersetzt dieses das zu löschende Ziel und die Operation ist beendet. Wurde, wenn die Löschoperation bewirkt wird, kein Ersatzziel gefunden, so muß man sich weiterhin vergewissern, daß die Zeile nicht leer geworden ist.
  • Im Fall, daß maskbit < k, wird der mögliche zu löschende Eintrag im Feld T_BAK der Zelle mit der Adresse "offset" im Speicher oder in der entsprechenden Zelle im Vektor AUX gespeichert. Es werden alle Zellen geprüft, die dem "sup"-Intervall entsprechen (Subroutine D_MODIFY_CELL). Wird ein Ersatzziel gefunden, so müssen die Felder VALUE und MASK der Zelle modifiziert werden; wird kein Ziel gefunden, so werden die beiden Kennfelder GO und TARGET auf "0" gesetzt, um anzuzeigen, daß die Zelle leer ist, und zusätzlich wird das Feld T_BAK auf NULL gesetzt.
  • Es ist zu beachten, daß bei der Ausführung der Subroutine D_MODIFY_ROW auch geprüft wird, daß die Anforderung nicht ein nicht-existierendes Element enthält (das für maskbit = k angezeigt wird durch TARGET = "0" oder durch MASK ☐k – 1 oder VALUE ☐ t_info, und für maskbit < k durch das Nichtvorhandensein des Zielwerts im Feld T_BAK): In diesen Fällen kommt die Suche offensichtlich sofort zum Ende.
  • Schließlich werden zur Beseitigung der leeren Zeilen (Subroutine D_BACKTRACE, 15) alle in der Suche geprüften Zeilen zurückverfolgt und für jede von ihnen werden die Kennfelder GO und TARGET aller Zellen überprüft. Sind die Kennfelder aller Zellen in einer Zeile "0", so ist die Zeile leer und es ist dann notwendig, zurückzugehen zum Zellen-"Vater", von dem der Übergang zur leeren Zeile erfolgt ist. Zu diesem Zweck werden der Zähler ACTUAL und der Vektor STEP verwendet. Ist für diesen Zellen-"Vater" das Kennfeld TARGET gleich "1", so müssen die Daten der entsprechenden Zelle von AUX in diese Zelle übertragen werden. Nachdem dies bewirkt ist, wird die Identität der geleerten Zeile an die Liste der leeren Zeilen angehängt (prow = TAIL(row_free_list), UPDATE row_free_list) und wird die nächste Zeile, nämlich die Zeile, die den Zellen-"Vater" enthält, geprüft. Sobald eine Zeile erreicht wird, in der wenigstens eine Zelle nicht leer ist, kommt die Operation zu einem Ende. Es wird als nützlich erachtet, einige Betrachtungen über die Hardware-Ausführung des soeben beschriebenen Speichers zu machen. Die Architektur wird im wesentlichen durch eine Zustandsmaschine gebildet (die einen Teil der Steuervorrichtung CT in 1 ausmacht), die die Zugriffsfolge zu der in der einem externen Speicher (M1 in 1) gespeicherten Datenstruktur steuert, wobei der externe Speicher vorteilhafterweise ein dynamischer RAM-Speicher ist. Die Gesamtarchitektur arbeitet als ternärer CAM-Speicher. Die Speicherinitialisierung und -fortschreibung kann entweder von einer anderen Zustandsmaschine oder von einem üblichen Mikroprozessor gesteuert werden, die zur Einfachheit ebenfalls in der Steuervorrichtung CT eingebaut sind. Die Architektur ist extrem flexibel, da eine Kette einer beliebigen Länge empfangen werden kann, während der Ausgang ein Index (oder komprimierter Identifizierer) ist, dessen Bedeutung freigelassen ist und vom Anwendungskontext abhängt. Im betrachteten Fall des Internets ist der Ausgang üblicherweise ein Zeiger zur Tabelle M2, die die nächsten Etappendaten [hop] (Adressen der zweiten Ebene) enthält, die benötigt werden, um die Pakete zu der als Eingangsidentifizierer gelieferten Zieladresse zu befördern. Die externe Datenstruktur ist durch eine programmierbare Anzahl von Zeilen aufgebaut, von denen jede 2L identische aneinanderliegende Zellen enthält, zusammen mit einer Hilfszelle, die die für alle Zellen der Zeile gemeinsame Zielinformation enthält. Zum Erhalten der Zellenadressen dadurch, daß man eine Zeilenadresse plus eine Zellenadresse Seite an Seite zusammenfügt, werden die Hilfsziel-Zellen der Zeile getrennt gespeichert – in der selben Datenstruktur -, beispielsweise nach der letzten Zeile, die die zutreffenden Daten enthält. Die Speichergröße hängt von der Präfixverteilung und dem Suchschritt ab. So benötigt z. B. eine existierende weiterleitende Tabelle mit etwa 40.000 Einträgen etwa 14.000 Zeilen (entsprechend etwa 0,7 MBytes des Speichers), wenn k = 4, und etwa 3.000 Zeilen (für eine Gesamtmenge von etwa 2,4 MBytes des Speichers), wenn k = 8. Die Dimensionen sind somit genau steuerbar.
  • Aus dem oben Beschriebenen werden die durch die Erfindung gebotenen Vorteile klar:
    • – die Anwendung der beiden Kennfelder zum Charakterisieren des Inhalts der Zelle und die Verwendung eines Hilfsvektors für die Ausnahmefälle, in denen ein vor dem Ende der Suchphase gefundenes Ziel zu speichern ist, machen den Speicher sehr kompakt und vermeiden die in einer möglichen Duplizierung der Informationsfelder systemgegebene Verschwendung;
    • – unter Berücksichtigung der Tatsache, daß der Hilfsvektor in der Hardwarekonstruktion einfach eine zusätzliche Kette von Zellen für den tatsächlichen Trie-Speicher bildet, kann die selbe Vorrichtung auch für Masken fester Länge verwendet werden, wenn also das Problem der Übereinstimmung der längsten Präfixe nicht auftritt: Der einzige Unterschied ist der, daß in diesem Fall der Hilfsvektor nie adressiert wird. In diesem Fall arbeitet der Aufbau als normaler binärer CAM-Speicher, wobei ein einzelnes Bit pro Zelle nicht ausgenützt wird;
    • – Aufgrund des Felds T_BAK wird das Auftreten möglicher Ziele mit kürzerem Präfix direkt bei den Einsetz- und Löschoperationen gehandhabt, und diese erfordern nur die Prüfung einer begrenzten und vorgegebenen Zahl von Zellen (k – 2, wenn k der Suchschritt ist);
    • – Aufgrund der Verwendung eines expliziten Endes des Such-Kennfelds ist die Struktur nicht an eine bestimmte Länge der Adressen oder Masken gebunden und ist deshalb, was die bevorzugte Anwendung betrifft, auch verwendbar, wenn Adressen mit 128 Bits zur Anwendung kommen;
    • – Schließlich ist der Mechanismus des Einfügens und Löschens speziell einfach und ist lokalisiert, d. h. er erfordert nicht das vollständige Schreiben des Speichers oder von Teilen des Speichers.
  • Es ist ersichtlich, daß das Beschriebene nur als nicht begrenzendes Beispiel angegeben wurde und daß Variationen und Veränderungen möglich sind, ohne den Umfang der Erfindung zu verlassen. Speziell ist die Erfindung, obwohl Bezug auf das Internet genommen wurde, auf ein beliebiges Kommunikationsprotokoll anwendbar, bei dem die Leitwegsuche der Pakete auf der Übereinstimmung von Präfixen fester oder variabler Länge beruht, beispielsweise auf die Identifizierung von ATM-Verbindungen oder MAC-Adressen (MAC = Medium Access Control, Steuerung für mittleren Zugriff, was eine Ebene in genormten Kommunikationsprotokollen ist). Im allgemeinen ist die Erfindung nicht nur für die Knoten von Kommunikationssystemen anwendbar, sondern auch in allen Fällen, in denen eine Informationssuche oder Nachforschung durchzuführen ist, die von einem Präfix ausgeht (beispielsweise für die Suche nach Informationen aus Datenbanken, die nicht zu einem Kommunikationsnetzwerk gehören), selbst wenn bei diesen Anwendungen generell die von den Kommunikationsnetzwerken benötigten Geschwindigkeitserfordernisse nicht vorliegen.

Claims (9)

  1. Speicher für die Durchführung einer Informationssuche auf Basis der Analyse von Präfixen, die den Teil höchster Stellenwertigkeit individueller Informationsblöcke bilden, umfassend: – ein erstes Speicherelement (M1), das eine Gruppe der Informationsblöcke speichert, die jeweils einer Maskeninformation, die die Stellenzahl der höchsten Wertigkeiten im jeweiligen Präfix angibt, sowie einer Zielinformation, die Daten darstellt, die für den Zugang zu einer Gruppe weiterer Informationen verwendbar ist, zugeordnet sind, wobei die Informationsblöcke in jeweiligen Zellen von Speichern gespeichert sind, die in Zeilen und Spalten organisiert sind, und – Steuervorrichtungen (CT) für die Steuerung der Suche nach einem spezifischen Informationsblock im Speicher und das Fortschreiben des Speichers, die durch den Vergleich zwischen aufeinanderfolgenden, eine gegebene Länge aufweisenden Teilen einer Eingangskette von Zeichen und entsprechenden Teilen der gespeicherten Präfixe, die eine variable Länge haben können, die nicht ein Vielfaches der Länge dieser Teile sind, arbeiten; dadurch gekennzeichnet, daß zur Implementierung eines Suchkriteriums, das auf der Übereinstimmung des längsten Präfixes beruht, also eines Suchkriteriums, das als ein Ergebnis das längste Präfix in Übereinstimmung mit der Eingangskette ergibt: – jede Zelle ein Informationsfeld, das entweder eine Adresse einer nächsten Zeile für die Fortsetzung der Suche oder eine auf ein erreichtes Ziel bezogene Information liefert, sowie zwei Kennfelder (GO, TARGET), die den Inhalt des Informationsfelds spezifizieren, umfaßt, und – ein Hilfsvektor (AUX) vorhanden ist, der so viele Zellen aufweist, als der Speicher Zeilen hat, und der, wenn die Kennfelder dieser Zellen im Speicherelement (M1) anzeigen, daß ein Ziel erreicht worden ist, zusammen mit dem Erfordernis, die Suche in einer nächsten Zeile fortzusetzen, dazu ausgebildet ist, die Zielinformation in die der nächsten Zeile zugeordnete Zelle zu speichern, wobei jede Zelle des Hilfsvektors ein Informationsfeld und zwei Kennfelder, die identisch denen der Zellen des Speicherelements (M1) sind, umfaßt.
  2. Speicher nach Anspruch 1, dadurch gekennzeichnet, daß das Informationsfeld in den Zellen des Speicherelements (M1) und des Hilfsvektors (AUX) dazu ausgebildet ist, für die Information, daß das Ziel erreicht ist, die Zielidentität und einen Wert, der die dem Ziel zugeordnete Maske wiedergibt, zu speichern.
  3. Speicher nach Anspruch 2, dadurch gekennzeichnet, daß dann, wenn die Information, daß das Ziel erreicht ist, einer Mehrzahl von Zellen gemeinsam ist, das Informationsfeld in einer von diesen Zellen auch dazu ausgebildet ist, eine Hilfsinformation zu speichern, die sich auf ein kürzeres Präfix bezieht, das vom Präfix überdeckt werden kann, dem das erreichte Ziel zugeordnet ist.
  4. Speicher nach Anspruch 3, dadurch gekennzeichnet, daß diese Zelle innerhalb der Zeile an einer Adresse positioniert ist, die in einer Eins-zu-eins-Entsprechung zum geprüften Eingangskettenteil, zu einer Maske, die diesem Teil zugeordnet ist, und zur Länge des Teils steht.
  5. Speicher nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß er eine Leitwegsuchtabelle für einen Knoten eines Hochgeschwindigkeits-Kommunikationsnetzes implementiert und daß die Präfixe Zieladressen oder Teile von Zieladressen sind, die den in diesem Netz übertragenen Informationen zugeordnet sind.
  6. Speicher nach Anspruch 5, dadurch gekennzeichnet, daß das Netz das Internet-Netz ist.
  7. Verfahren zum Betrieb eines Speichers für die Informationssuche, basierend auf der Analyse von Präfixen, die einen Teil der höchsten Stellenwertigkeit individueller Informationsblöcke darstellen, wobei die Informationen in Zellen eines Speicherelements (M1) zusammen mit einer Maskeninformation, die die Stellenzahl der höchsten Wertigkeiten im jeweiligen Präfix angibt, und einer Zielinformation, die als Zeiger für eine weitere Gruppe von Informationen verwendet wird, gespeichert sind und wobei dieser Speicherbetrieb erfordert, daß man aufeinanderfolgende Teile einer empfangenen Zeichenkette und entsprechende Teile der gespeicherten Präfixe, die eine variable Länge haben können, welche nicht ein Vielfaches der Länge dieser Teile ist, vergleicht, dadurch gekennzeichnet, daß für die Implementierung eines Suchkriteriums, das auf der Übereinstimmung des längsten Präfixes basiert: – man jeder Zelle des Speicherelements (M1) zwei Kennfelder (GO, TARGET) zuordnet, die durch ihren logischen Wert spezifizieren, ob ein Suchvorgang an einer Zeile, zu der die Zelle gehört, endet oder in einer nächsten Zeile fortgesetzt werden muß und, in diesem zweiten Fall, ob eine Übereinstimmung mit einem möglichen Präfix in der interessierenden Zeile gefunden wurde und dann ein Ziel erreicht worden ist, – man jeder Zeile des Speicherelements (M1) eine Zelle eines Hilfsvektors zuordnet, der dazu bestimmt ist, Informationen über ein erreichtes Ziel in Übereinstimmung mit einer Zeile, die nicht die Zeile ist, an der die Suche endet, zu speichern, – eine Zelle, die innerhalb einer Gruppe von Zellen ausgewählt ist, die Präfixen einer Länge entsprechen, die das Vielfache der Länge jener Teile sind, außerdem die sich auf ein kürzeres Präfix, das nicht ein Vielfaches der Länge jener Teile ist, beziehende Zielinformationen speichert, wobei das kürzere Präfix von den Präfixen vielfacher Länge überdeckt werden kann und wobei die Zelle eine Zelle des Speicherelements (M1) oder des Hilfsvektors (AUX) in Abhängigkeit davon ist, ob sie die Schlußzelle einer Suche oder eine Zwischenzelle während der Suche ist.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß zum Beseitigen eines Informationsblocks bei Erreichen der Zeile, die diesen Informationsblock enthält: a) man innerhalb der Gruppe von Zellen im Speicher oder im Hilfsvektor ein mögliches Ersatzziel erreicht, das wiedergegeben wird durch ein einem kürzeren Präfix zugeordnetes Ziel; b) man, wenn ein solches Ersatzziel existiert, es an der Stelle des zu beseitigenden Präfixes speichert.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß man die Identität sämtlicher während der Suche eines Informationsblocks, der beseitigt werden soll, geprüfter Zeilen vorübergehend speichert und im Fall einer Zielbeseitigung ohne Ersatz eine Rückwärtsüberprüfung in den Zeilen, die als Ergebnis einer Informationsbeseitigung leer wurden, durchführt, und daß man die betreffende Identität in einer dem Speicher zugeordneten Liste von leeren Zeilen speichert.
DE69927109T 1998-10-27 1999-10-26 Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen Expired - Lifetime DE69927109T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
ITTO980909 1998-10-27
IT1998TO000909A IT1305140B1 (it) 1998-10-27 1998-10-27 Memoria per la ricerca di informazioni mediante analisi di prefissi inparticolare per la realizzazione di tabelle di instradamento in nodi

Publications (2)

Publication Number Publication Date
DE69927109D1 DE69927109D1 (de) 2005-10-13
DE69927109T2 true DE69927109T2 (de) 2006-06-29

Family

ID=11417138

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69927109T Expired - Lifetime DE69927109T2 (de) 1998-10-27 1999-10-26 Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen

Country Status (7)

Country Link
US (1) US6571313B1 (de)
EP (1) EP0998162B1 (de)
JP (1) JP3299528B2 (de)
AT (1) ATE304276T1 (de)
CA (1) CA2287041C (de)
DE (1) DE69927109T2 (de)
IT (1) IT1305140B1 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2393764A1 (en) * 1999-12-10 2001-06-14 Mosaid Technologies Incorporated Method and apparatus for longest match address lookup
US6947931B1 (en) * 2000-04-06 2005-09-20 International Business Machines Corporation Longest prefix match (LPM) algorithm implementation for a network processor
US6880064B1 (en) * 2000-06-21 2005-04-12 Mosaid Technologies, Inc. Method and apparatus for physical width expansion of a longest prefix match lookup table
JP2002026973A (ja) * 2000-07-12 2002-01-25 Nec Corp 経路検索システム及びその方法並びにそれに使用するルータ装置
KR100686732B1 (ko) * 2000-08-26 2007-02-23 삼성전자주식회사 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
US20020089937A1 (en) 2000-11-16 2002-07-11 Srinivasan Venkatachary Packet matching method and system
US7274697B2 (en) * 2000-11-16 2007-09-25 Tensilica, Inc. Fast IP route lookup with 16/K and 16/Kc compressed data structures
US6888838B1 (en) * 2000-11-16 2005-05-03 Tensilica, Inc. Fast IP route lookup with configurable processor and compressed routing table
KR100493099B1 (ko) * 2000-12-22 2005-06-02 삼성전자주식회사 고속 인터넷프로토콜 라우터의 라우팅/포워딩 룩업 및라우팅 테이블 관리
US7031320B2 (en) * 2000-12-22 2006-04-18 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed IP route lookup and managing routing/forwarding tables
US7227842B1 (en) 2001-04-24 2007-06-05 Tensilica, Inc. Fast IP packet classification with configurable processor
US7230912B1 (en) * 2001-06-14 2007-06-12 Juniper Networks, Inc. Sampling to a next hop
US6985483B2 (en) * 2001-07-31 2006-01-10 North Carolina State University Methods and systems for fast packet forwarding
US20030031179A1 (en) * 2001-08-08 2003-02-13 Jintae Oh Self-updateable longest prefix matching method and apparatus
US7007101B1 (en) * 2001-11-09 2006-02-28 Radisys Microware Communications Software Division, Inc. Routing and forwarding table management for network processor architectures
US7180887B1 (en) 2002-01-04 2007-02-20 Radisys Patent Properties Routing and forwarding table management for network processor architectures
US20030174717A1 (en) * 2002-03-15 2003-09-18 Boris Zabarski System and method for longest prefix match for internet protocol lookup
US6925464B2 (en) * 2002-06-13 2005-08-02 Intel Corporation Method and system for performing inserts and lookups in memory
US7162481B2 (en) * 2002-12-06 2007-01-09 Stmicroelectronics, Inc. Method for increasing storage capacity in a multi-bit trie-based hardware storage engine by compressing the representation of single-length prefixes
KR100918733B1 (ko) * 2003-01-30 2009-09-24 삼성전자주식회사 포워딩정보를 동적으로 관리하는 분산구조라우터 및 그방법
US7426518B2 (en) * 2003-03-28 2008-09-16 Netlogic Microsystems, Inc. System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size
US7571156B1 (en) * 2003-03-28 2009-08-04 Netlogic Microsystems, Inc. Network device, storage medium and methods for incrementally updating a forwarding database
CN100452732C (zh) * 2003-08-19 2009-01-14 华为技术有限公司 路由查找方法及其系统
US7702882B2 (en) * 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US8024176B2 (en) * 2003-09-30 2011-09-20 Dictaphone Corporation System, method and apparatus for prediction using minimal affix patterns
US7694068B1 (en) 2005-12-08 2010-04-06 Netlogic Microsystems, Inc. Re-entrant processing in a content addressable memory
US7933282B1 (en) 2007-02-08 2011-04-26 Netlogic Microsystems, Inc. Packet classification device for storing groups of rules
DE102009046995A1 (de) * 2008-11-21 2010-05-27 Continental Teves Ag & Co. Ohg Datenübertragungsprotokoll
US8438330B2 (en) 2010-05-17 2013-05-07 Netlogic Microsystems, Inc. Updating cam arrays using prefix length distribution prediction
DE102011009518B4 (de) * 2011-01-26 2013-09-12 Ruprecht-Karls-Universität Heidelberg Schaltungsanordnung für Verbindungsschnittstelle
CN103973571A (zh) * 2013-02-05 2014-08-06 中兴通讯股份有限公司 网络处理器及其路由查找方法
CN103458479A (zh) * 2013-09-17 2013-12-18 清华大学 Wsn中基于内容的路由表的数据路由方法及系统
US10496631B2 (en) * 2017-03-10 2019-12-03 Symphony Communication Services Holdings Llc Secure information retrieval and update
US10776185B2 (en) 2018-12-10 2020-09-15 International Business Machines Corporation Messaging software management for network devices supporting hardware tag matching
US11126374B2 (en) * 2019-03-28 2021-09-21 Intel Corporation Technologies for efficient stochastic associative search operations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU620994B2 (en) * 1989-07-12 1992-02-27 Digital Equipment Corporation Compressed prefix matching database searching
US5787430A (en) * 1994-06-30 1998-07-28 International Business Machines Corporation Variable length data sequence backtracking a trie structure
US6052683A (en) * 1998-02-24 2000-04-18 Nortel Networks Corporation Address lookup in packet data communication networks
US6396842B1 (en) * 1998-04-30 2002-05-28 3Com Corporation Method of searching using longest match based Randix Search Trie with variable length keys and having prefix capability
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6434115B1 (en) * 1998-07-02 2002-08-13 Pluris, Inc. System and method for switching packets in a network
US6237061B1 (en) * 1999-01-05 2001-05-22 Netlogic Microsystems, Inc. Method for longest prefix matching in a content addressable memory

Also Published As

Publication number Publication date
DE69927109D1 (de) 2005-10-13
ATE304276T1 (de) 2005-09-15
JP2000151691A (ja) 2000-05-30
EP0998162B1 (de) 2005-09-07
CA2287041A1 (en) 2000-04-27
EP0998162A2 (de) 2000-05-03
JP3299528B2 (ja) 2002-07-08
IT1305140B1 (it) 2001-04-10
EP0998162A3 (de) 2004-06-23
US6571313B1 (en) 2003-05-27
CA2287041C (en) 2003-12-30
ITTO980909A1 (it) 2000-04-27

Similar Documents

Publication Publication Date Title
DE69927109T2 (de) Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE2131066C3 (de) Anordnung zum Adressieren eines Tabellenspeichers
DE2139731C2 (de) Anordnung zur Code-Umsetzung
DE10012123B4 (de) Verfahren zum Suchen einer MAC-Adresse in einem Netzwerk-Switch
DE60316696T2 (de) Verfahren zum Routen von Datenpaketen und Routing-Vorrichtung
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE69829645T2 (de) Verfahren zur Änderung von dynamischen Entscheidungsbäume
DE2210044C2 (de) Verfahren zum Umsetzen von Codewörtern
DE2346525C3 (de) Virtuelle Speichereinrichtung
DE3131341C2 (de)
US7613134B2 (en) Method and apparatus for storing tree data structures among and within multiple memory channels
DE60026676T2 (de) Paketklassifizierungsautomat
DE10028563B4 (de) Kommunikationssteuerungseinheit
DE69433812T2 (de) Etikettbehandlung in paketnetzen
DE2163342C3 (de) Hierarchische binäre Speichervorrichtung
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
EP0675617A1 (de) Schaltungsanordnung für Anschlusseinheiten einer ATM-Koppeleinrichtung
EP0651536A2 (de) Verfahren zur Wiederherstellung einer vorgegebenen Reihenfolge für ATM-Zellen
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE2047062A1 (de) Verfahren und Einrichtung zur Messung der Effektivität einer Daten Verarbeitungsanlage mit virtueller Adre»»ici uiig
DE69629540T2 (de) Verfahren und Gerät zum Sortieren von Elementen
EP0700007A2 (de) Hash-Adressierungs- und Speicherverfahren zum Ablegen und Wiedergewinn von Daten in einem adressierbaren Speicher
DE60114299T2 (de) Verfahren und Vorrichtung zum Übersetzen von IP Telekommunikationsnetzwerkadressen mit einem gesteuerten undichten Speicher
DE60024611T2 (de) Längentestvergleich in präfixnachschlagtabellen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition