DE60307241T2 - Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben - Google Patents

Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben Download PDF

Info

Publication number
DE60307241T2
DE60307241T2 DE60307241T DE60307241T DE60307241T2 DE 60307241 T2 DE60307241 T2 DE 60307241T2 DE 60307241 T DE60307241 T DE 60307241T DE 60307241 T DE60307241 T DE 60307241T DE 60307241 T2 DE60307241 T2 DE 60307241T2
Authority
DE
Germany
Prior art keywords
pointer
memory
location
key
data
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
DE60307241T
Other languages
English (en)
Other versions
DE60307241D1 (de
Inventor
Muraleedhara Santa Clara NAVADA
Sreenath Santa Clara KURUPATI
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE60307241D1 publication Critical patent/DE60307241D1/de
Publication of DE60307241T2 publication Critical patent/DE60307241T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • H04L12/4645Details on frame tagging
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft das Gebiet der Datenverarbeitung und insbesondere ein speichereffizientes schnelles VLAN-Auslesen und -Einschreiben in hardwarebasierten Paketvermittlungsstellen.
  • ALLGEMEINER STAND DER TECHNIK
  • Mit dem Schnellerwerden von Rechner- und Vernetzungsvorrichtungen stellt die Erfordernis für Schnelligkeit in der Verwaltung von Datentabellen eine Herausforderung für herkömmliche Ansätze dar. Zum Beispiel ist die Geschwindigkeit einer Schlüsselsuche, bei der Daten, die einem Schlüssel zugeordnet sind, rasch in einer Tabelle gefunden werden müssen, in vielen Vorrichtungen und Anwendungen zu einem kritischen Punkt und manchmal zu einer Engstelle geworden. Ein Schlüssel kann jedes beliebige Stück von Daten sein, das als ein Verweis oder ein Suchkriterium zum Finden zusätzlicher Daten verwendet wird, doch im Vernetzungskontext sind Schlüssel typischerweise Internetprotokoll(IP)-Adressen, Medienzugriffssteuerungs(MAC)-Adressen, Kennzeichnungen eines virtuellen lokalen Netzes (VLAN), und andere Netzkennungen.
  • Lösungen, die die Geschwindigkeit der Schlüsselsuche beschleunigen, hängen manchmal von den Eigenschaften des Speichers ab, der verwendet wird, um die durchsuchte Datentabelle zu speichern. Ein Direktzugriffsspeicher (RAM) speichert Daten an einer bestimmten Stelle, die durch eine Adresse bezeichnet ist. Wenn die Adresse dem RAM zugeführt wird, gibt der RAM die dort gespeicherten Daten zurück. Um die richtige Adresse zu finden, muss jedoch entweder ein Index aller Schlüssel sortiert und nach einer Adresse durchsucht werden, die dem Schlüssel zugeordnet ist, oder müssen alle zugeordneten Dateneinträge nach einer Darstellung des Schlüssels und seiner zugeordneten RAM-Adresse durchsucht werden. Es gibt viele Algorithmen, die danach trachten, die Suchzeit nach einer Adresse, die einem Schlüssel zugeordnet ist, zu verkürzen.
  • Eine Art von Hardwarespeicher, der inhaltsadressierbare Speicher (CAM), beschleunigt die Suche nach einem gespeicherten Datenpunkt durch Auffinden der Daten auf Basis des Inhalts der Daten selbst, anstelle ihrer Adresse im Speicher. Wenn die Daten einem CAM zugeführt werden, gibt der CAM direkt eine Adresse zurück, an der die zugeordneten Daten gefunden werden. Für viele Anwendungen stellt der CAM durch gleichzeitiges Vergleichen gewünschter Informationen mit einer ganzen Liste von gespeicherten Dateneinträgen eine bessere Leistung als herkömmliche Speichersuchalgorithmen bereit. Daher wird der CAM in Anwendungen verwendet, in denen die Suchzeit ein wichtiges Anliegen ist und auf sehr kurze Dauern beschränkt werden muß.
  • Unglücklicherweise können CAM-Ausführungen sowohl in diskreter Hardware als auch in Form einer integrierten Schaltung von den Chipflächenanforderungen und auch/oder von der Gestaltungskomplexität her verhältnismäßig teuer sein. In einigen Anwendungen könnte ein direkt abgebildeter Pufferspeicher als ein Ersatz für einen CAM verwendet werden, doch wird die voll assoziative Eigenschaft eines CAM – wobei ein Dateneintrag irgendwo in der Datenstruktur angeordnet werden kann – verloren und werden unerwünschte Eigenschaften wie etwa Datenkollisionen und unverwendete Speicherstellen eingebracht.
  • US-A-6,034,958 beschreibt ein Verfahren zum Auslesen von Verbindungsinformationen in einer Tabelle zur Verbindung einer Vermittlungsstelle im asynchronen Übertragungsmodus (ATM) mit einem virtuellen Pfad/virtuellen Kanal, das auf Zerhacken und einer Binärsuche beruht. Der Zerhackungscode wird verwendet, um einen Verweis in eine Tabelle zu bilden, die so in der Größe bemessen ist, daß sie zumindest der Höchstanzahl von aktiven Verbindungen entspricht, die die ATM-Vermittlungsstelle unterhalten kann.
  • US-A-6,091,707 beschreibt ein Verfahren zur Verhinderung von Unterlaufbedingungen in einer Mehrtor-Vermittlungsvorrichtung.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung ist beispielhaft, und nicht als Beschränkung, in den Figuren der beiliegenden Zeichnungen veranschaulicht, in denen sich gleiche Bezugszeichen auf ähnliche Elemente beziehen, und wobei
  • 1 ein Blockdiagramm eines beispielhaften Rechnernetzsystems, das beispielhafte Tabellenverwaltungsmodule (TMEs) einsetzt, nach einer Vernetzungsausführungsform der vorliegenden Erfindung ist;
  • 2 ein Blockdiagramm einer beispielhaften TME nach einer Ausführungsform der Erfindung ist;
  • 3 eine graphische Darstellung eines beispielhaften Speichers, der gemäß dem Inhalt eines Schlüssels verwiesen oder zugegriffen wird, nach einer Ausführungsform der Erfindung ist;
  • 4 ein Blockdiagramm eines beispielhaften ausführenden Tabellenmoduls von 2 ist;
  • 5 eine graphische Darstellung einer beispielhaften Verbunden-Liste von freien Dateneintragspeicherstellen nach einer Dateneinfügeausführungsform der Erfindung ist;
  • 6 eine graphische Darstellung einer beispielhaften Verbunden-Liste von freien Dateneintragspeicherstellen nach einer Datenlöschausführungsform der Erfindung ist;
  • 7 ein Ablaufdiagramm eines beispielhaften Verfahrens zum Abruf eines Dateneintrags nach einer Ausführungsform der Erfindung ist;
  • 8 ein Ablaufdiagramm eines beispielhaften Verfahrens zum Einfügen eines Schlüssels nach einer Ausführungsform der Erfindung ist;
  • 9 ein Ablaufdiagramm eines beispielhaften Verfahrens zum Löschen eines Dateneintrags nach einer Ausführungsform der Erfindung ist; und
  • 10 eine graphische Darstellung eines beispielhaften Speichermediums ist, das einen Inhalt umfaßt, der bei seiner Ausführung verursacht, daß ein Zugriffsmodul eine oder mehrere Ausführungsformen, Gesichtspunkte und/oder Verfahren eines TME ausführt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Erfindung zielt im Allgemeinen auf ein Verfahren und eine Vorrichtung für speichereffizientes schnelles VLAN-Auslesen und -Einschreiben in hardwarebasierten Paketvermittlungsstellen ab.
  • Nach den Lehren der vorliegenden Erfindung wird ein Tabellenverwaltungsmodul (TME) eingebracht, um das Durchsuchen und die Verwaltung der Datentabelle zu beschleunigen. Da so viele Rechner- und Vernetzungsvorrichtungen Daten speichern und abrufen, kann ein TME die Leistung der Datenauslesegeschwindigkeit und der Verwaltung von vielen Arten von Tabellen, Listen und Datenbanken verbessern. Zum Beispiel kann das TME auf dem Gebiet der Datenkommunikation Vorrichtungen und Anwendungen beschleunigen, die Adressentabellen, Umsetzungstabellen, Filtertabellen und/oder VLAN-Regeltabellen verwenden.
  • Beispielhafter Kontext zur Ausführung von Gesichtspunkten der Erfindung
  • 1 ist ein Blockdiagramm eines beispielhaften Rechnernetzes 100, in dem TMEs 102, 104, 106 die Leistung der Datenpaketvermittlung und das Routen beschleunigen. Das veranschaulichte beispielhafte Netz 100 umfasst einen Router 112, zwei Vermittlungsstellen 108,108 und sechs Rechnerwirte 120 bis 130, die kommunikativ wie veranschaulicht gekoppelt sind. Das beispielhafte Rechnernetz 100 ist logisch in ein VLAN A 114, ein VLAN B 116 und ein VLAN C 118 unterteilt. Beispielhafte Netzvorrichtungen wie die veranschaulichten Vermittlungsstellen 108, 110 und der Router 112 verwenden typischerweise interne Tabellen, um einer Quellenadresse für jedes empfangene Datenpaket eine Bestimmungsinformation, die in den Tabellen gespeichert ist, zuzuordnen.
  • Wenn VLAN-Regeln als ein Beispiel für Bestimmungsinformationen verwendet werden, kann es sich bei jeder VLAN-Regel um eine oder mehrere Tor- und/oder Bestimmungsadressen und/oder andere Paketlenkungsinformationen handeln. Demgemäß wird jedes Datenpaket wie durch eine bestimmte VLAN-Regel gelenkt zu einer richtigen Hardwareadresse und/oder IP-Adresse (je nach der Vorrichtung) gesendet. Obwohl das Rechnernetz 100 als eine Umgebung dargestellt ist, die einen Kontext benötigt, in dem TMEs 102, 104, 106 ausgeführt sein könnten, sind viele andere Umgebungen und Verwendungen möglich.
  • Da ein Rechnernetz 100 Datenpakete routet und lenkt, können sich in den verschiedenen Komponenten, die an der Vernetzung Teil haben, wie etwa im veranschaulichten Router 112 und den zwei Vermittlungen 108, 110, ein oder mehrere TMEs 102, 104, 106 befinden. Die TMEs 102, 104, 105 könnten in Wirten 120 bis 130 wie auch in Kunden ausgeführt sein. Tatsächlich können die TMEs 102, 104, 106 in jedem beliebigen Teil des Rechnernetzes 100 verwendet werden, in dem ein Auslesen von Daten stattfindet und/oder eine Tabelle von Informationen unterhalten wird.
  • Die TMEs 102, 104, 106 können die Leistung und die Verwaltung der IP-Adressen-, Toradressen- und Hardwareadressentabellen in einem Rechnernetzwerk 100 verbessern. Wenn ein Datenpaket in einer Vorrichtung empfangen wird, die das Datenpaket weiterleitet, indem sie die Informationen im Datenpaket verwendet, um über die Weiterleitung zu entscheiden, verwendet ein TME (102, 104, 106) einen Inhalt vom Datenpaket, um direkt einen Verweis in eine Tabelle herzustellen, die einen Dateneintrag, der dem Datenpaket entspricht, speichert (oder fähig ist, diesen zu speichern). Der Dateneintrag wird für andere Datenpakete verwendet, die den gleichen Inhalt besitzen oder gelesen und/oder zerhackt werden können, um den gleichen Inhalt zu liefern.
  • Der Dateneintrag enthält die Weiterleitungsinformationen. Mit anderen Worten wird der Inhalt vom Datenpaket direkt als eine Speicheradresse verwendet, um den Dateneintrag, der dem Schlüssel zugeordnet ist, zu finden, ohne eine weitere Suche durch eine Liste von Schlüsseln durchzuführen, um eine Speicheradresse für den Schlüssel zu finden. Im einfachsten Sinn wird der Schlüsselinhalt im Wesentlichen als eine Speicheradresse verwendet. Die TMEs 102, 104, 106 führen diese Funktion des Ansprechens des Speichers durch den Inhalt ohne den Zusatz bekannter CAM-Hardwareelemente durch.
  • Im veranschaulichten Rechnernetz 100 wird ein Datenpaket von einem ersten Wirt 120 im VLAN A 114 von einer ersten Vermittlungsstelle 108, die ein TME 104 aufweist, empfangen. Das TME 104 liest und/oder zerhackt das Datenpaket nach einem Inhalt wie etwa der VLAN-Kennzeichnung des VLAN A 114. Dieser Inhalt entspricht einer Stelle in einer Tabelle, die so erstellt ist, daß die Tabellenstellen verschiedenen Inhalten entsprechen, die aus Datenpaketen erhalten (gelesen und/oder zerhackt) werden können. Somit stellt der Inhalt direkt eine Adresse zum Verweis in die Tabelle und zum Erhalt der Bestimmungsinformation (oder einen Zeiger zur Bestimmungsinformation) für das Datenpaket bereit, ohne einen Suchalgorithmus zu verwenden, um eine Speicheradresse zu finden, die dem Inhalt entspricht. Die Bestimmungsinformation kann eine VLAN-Regel sein, die Tor- und Adresseninformationen aufweist. Das Ansprechen der Tabelle durch den Inhalt wird ohne bekannte CAM-Hardwareelemente durchgeführt. Das Datenpaket wird unter Verwendung der Bestimmungsinformation im Dateneintrag für den Schlüssel zur zweiten Vermittlungsstelle 110, die ebenfalls ein TME 106 aufweist, weitergeleitet. Das TME 106 spricht seine Dateneintragtabelle wie oben beschrieben durch den Inhalt an und lenkt das Datenpaket zum Router 112. Der Router besitzt ebenfalls ein TME 102, das wie oben beschrieben funktioniert. Somit wird das Datenpaket durch verschiedene Netzvorrichtungen gelenkt und geroutet, um seinen endgültigen Bestimmungsort, den zweiten Wirt im VLAN A 114, zu erreichen. Die TMEs 102, 104, 106 stellen eine schnellere Datenpaketlenkung als bekannte Nicht-CAM-Verfahren bereit, und stellen im veranschaulichten Beispiel das schnellere VLAN-Auslesen bereit, während sie effizienter vom Speicher Gebrauch machen, als bekannte Verfahren, die einen Such- und/oder Auslesealgorithmus benötigen, um für jeden Schlüssel eine Speicheradresse zu finden.
  • Beispielhafte Architektur
  • 2 ist ein Blockdiagramm eines beispielhaften TME 200 nach einer Ausführung der Erfindung, um die Lei stung von Datentabellen 203, 205 in einem oder mehreren Speichern ("im Speicher") zu beschleunigen. Es wird ein Überblick über beispielhafte Komponenten bereitgestellt, um eine beispielhafte Architektur vorzustellen. In dieser Ausführungsform umfasst das TME 200 einen Leser/Zerhacker ("Leser") 206, ein ausführendes Tabellenmodul 208, ein Freilistenmodul 210, ein Freistellenkopfzeigerregister 212, und ein Steuerelement 214, die wie veranschaulicht kommunikativ gekoppelt sind. Das TME 200 ist mit einer Speichersteuerung 215 gekoppelt, die mit den Tabellen 203, 205 im Speicher gekoppelt ist. Es könnte mehr als eine Speichersteuerung 215 verwendet werden. In dieser Ausführung enthält eine erste Tabelle 203 Dateneinträge ("Dateneintragtabelle" 203"), und enthält eine zweite Tabelle 205 Zeiger und Gültigkeitsbits ("Zeigertabelle" 205). Es sollte bemerkt werden, daß die Tabelle(n) 203, 205, die in einem TME 200 enthalten sind oder durch dieses verwendet werden, richtig entweder als eine einzelne Tabelle oder mehrere Tabellen bezeichnet werden können, da sie relational sind und auf verschiedene Weisen und in verschiedene unterschiedliche Speicher oder Speicherteile geteilt sein können.
  • Zum Zweck der Erklärung von Gesichtspunkten der Erfindung kann die erste Tabelle 203 auch als der erste Speicher 203 und/oder der Dateneintragspeicher 203 bezeichnet werden. Die zweite Tabelle 205 kann auch als der zweite Speicher 205 und/oder der Zeigerspeicher 205 bezeichnet werden. Demgemäß kann eine bestimmte Stelle in einer Tabelle auch als eine Speicherstelle bezeichnet werden. Fachleute werden verstehen, daß diese alternativen Ausdrücke für die erste Tabelle 203 und die zweite Tabelle 205 und bestimmte Stellen darin im Wesentlichen gleichwertig sind, da Tabellen, die in Rechner- und Vernetzungsvorrichtungen verwendet werden, gewöhnlich im Speicher ausgeführt sind. Die Dateneinträge, Zeiger und Gültigkeitsbits in den Tabellen und/oder Speichern können auch in unterschiedlichen Anordnungen gespeichert sein.
  • Die Speicheransprechbarkeit durch den Inhalt
  • Das beispielhafte TME 200 erhält Daten wie etwa einen Schlüssel 216 und/oder einen Dateneintrag 290. Wenn die Anwendung ein Rechnernetz 100 ist, kann der Schlüssel 216 eine Hardwareadresse, eine Softwareadresse und/oder eine VLAN-Kennzeichnung sein, die im Datenkopf eines Datenpakets/Datagramms enthalten ist, doch kann es sich beim Schlüssel 216 in anderen Nicht-IP-Anwendungen um beliebige Daten handeln. Der Inhalt, der aus dem Schlüssel 216 erhalten wird, wird verwendet, um eine Tabelle/Speicherstelle direkt anzusprechen oder darauf zu verweisen. Wie hierin verwendet, bedeutet "direkt", daß kein Suchalgorithmus benötigt wird, um eine Liste und/oder eine Indexdatei, die mehrere Schlüssel oder Dateneinträge enthält, durchzugehen, um eine Speicheradresse, die in der Liste/Indexdatei gespeichert ist, mit dem Schlüssel 216 in Verbindung zu bringen. Zum Beispiel ist wie in 3 veranschaulicht ein beispielhafter Inhalt von "7" 302 von einem Schlüssel im Wesentlichen die Adresse und/oder Position einer Speicherstelle "7" 304 für den Schlüssel, wodurch eine Inhaltsansprechbarkeit für Standard-Speicherarten wie etwa RAM bereitgestellt wird und eine Suche durch eine Liste von Schlüsseln, Inhalten oder Aufzeichnungen vermieden wird.
  • Unter Rückkehr zu 2 erhält der Leser 206 unter Verwendung aller oder eines Teil der Daten im Schlüssel 216 einen Inhalt vom Schlüssel 216. Das heißt, der Leser 206 kann den Inhalt zusätzlich zum bloßen Lesen des Schlüssels 216, um seinen Inhalt zu erhalten, auch durch Zerhacken des gesamten oder eines Teils des Schlüssels 216 erhalten. In dieser Hinsicht muß der Inhalt, der durch den Leser 206 bestimmt wird, nicht eine buchstäbliche Eins-zu-Eins-Übersetzung der Daten im Schlüssel sein. Die einzige Anforderung für den Leser 206 und den erhaltenen Inhalt ist, daß von einem gegebenen Schlüssel 216 stets der gleiche Inhalt er halten werden kann. In einem Vernetzungskontext bedeutet das, daß Datenpakete, die den gleichen Inhalt ergeben, zum gleichen Bestimmungsort (zu den gleichen Bestimmungsorten) gelenkt werden. Zusätzlich zum direkten Lesen und/oder Zerhacken des Schlüssels 216, um den Inhalt zu erhalten, kann der Inhalt auch durch Ersetzen eines vorbestimmten Inhalts für den tatsächlichen Inhalt, der durch den Leser 206 gelesen wird, das heißt, durch Bitmaskieren, und/oder durch andere Verfahren, die von einem gegebenen Schlüssel 216 einen reproduzierbaren Inhalt ergeben, erhalten werden.
  • Um die Inhaltsansprechbarkeit nach einem Gesichtspunkt der Erfindung näher zu veranschaulichen, zeigt 2 einen Zeiger 224 für einen Schlüssel mit dem Inhalt "4" an der vierten (von "0" an gezählt) Stelle 246 der zweiten Tabelle 205, einen Zeiger 226 für einen Schlüssel mit dem Inhalt "6" an der sechsten Stelle 250 der zweiten Tabelle 205, und einen Zeiger 228 für einen Schlüssel mit dem Inhalt "12" an der zwölften Stelle 262 der zweiten Tabelle 205. Es sollte bemerkt werden, daß der tatsächliche Wert des Zeigers (die Adresse, zu der der Zeiger zeigt) anders als die Stelle des Zeigers in einer Tabelle oder in einem Speicher, außer zufällig, nicht mit dem Inhalt des Schlüssels, dem er zugeordnet ist, übereinstimmt. Der Adressenwert des Zeigers ist vielmehr auf eine Dateneintragstelle irgendwo in der ersten Tabelle 203 gerichtet.
  • 4 ist ein Blockdiagramm eines beispielhaften ausführenden Tabellenmoduls von 2. Ein Schlüsselindizierer 402, ein Zeigermodul 404, ein Dateneintragabrufer 406, und ein Dateneintrageinfüger/löscher 408 sind wie gezeigt gekoppelt. Der Schlüsselindizierer 402 erhält einen Inhalt des Schlüssels 216 vom Leser 406 und verwendet den Inhalt, um in den zweiten Speicher 205 zu verweisen. An der Speicherstelle 246, die dem Inhalt des Schlüssels 216 entspricht, liest der Schlüsselindizierer das dort gespeicherte Gültigkeitsbit, um festzustellen, ob es einen gültigen Dateneintrag gibt, der dem Schlüssel 216 zugeordnet ist. Der Schlüsselindizierer 402 spricht den zweiten Speicher 205 unter Verwendung des Inhalts des Schlüssels 216 direkt an, da der Inhalt des Schlüssels 216 im Wesentlichen die benötigte Speicheradresse ist.
  • Unter Verwendung eines Schlüsselinhalts von "4" als Beispiel erstellt das Zeigermodul 404 einen Zeiger 224 zwischen einem neu eingefügten Dateneintrag an der Speicherstelle 272 und einer Speicherstelle 246, die dem Inhalt "4" des Schlüssels 216 im zweiten Speicher 205 entspricht. Der Zeiger 224, der durch das Zeigermodul 404 erstellt wurde, ist die Adresse der Speicherstelle 272, die den Dateneintrag enthält, im ersten Speicher 203. Während einer Schlüssellöschtätigkeit löscht das Zeigermodul 404 auch den Zeiger 224 und setzt es das zugeordnete Gültigkeitsbit auf Null.
  • In einigen Ausführungsformen führt das Zeigermodul 404 bei der Ausführung einer Zeigertätigkeit auch die Funktion des Setzens des Gültigkeitsbits durch, das heißt, setzt es das Gültigkeitsbit, um das Vorhandensein oder Fehlen eines Zeigers und daher eines Dateneintrags, der einem Schlüssel 216 zugeordnet ist, anzugeben.
  • Der Dateneintragabrufer 406 liest den Zeiger 224, der an der Speicherstelle 246, die durch den Schlüsselindizierer 402 bereitgestellt wird, gespeichert ist und folgt dem Zeiger 224 zur Speicherstelle 272 im ersten Speicher 203, die den gespeicherten Dateneintrag zurückgibt.
  • Wenn der Dateneintrageinfüger/löscher 408 einen Dateneintrag, der an einer Speicherstelle im ersten Speicher 203 gespeichert ist, einfügt oder löscht, setzt er das Zeigermodul 404 davon in Kenntnis, daß es den Zeiger 224 in den zweiten Speicher 205 hinzufügen bzw. daraus löschen soll und der Speicherstelle 246 ein Gültigkeitsbit zuweisen soll, um das Vorhandensein bzw. Fehlen des Dateneintrags, der hinzugefügt oder gelöscht wird, widerzuspiegeln.
  • VLAN-Ausführungsform
  • Im Kontext von Tabellen, die für IP-Datenkommunikationen verwendet werden, wird häufig eine IP-Adresse vom Datenkopf eines Datenpakets/Datagramms ("Pakets") als der Schlüssel 216 verwendet, um zugeordnete Informationen über das Paket, wie etwa die Bestimmungstornummer, die Zugriffsprivilegien und die Stelle des Senders in einem Netz, oder anwendbare VLAN-Regeln zu finden. In einer beispielhaften Ausführungsform wird das beispielhafte TME 200 als eine VLAN-Regeltabelle oder zur Verwaltung einer VLAN-Regeltabelle verwendet.
  • Zum Beispiel müssen VLAN-Regeln in Ethernet-Vermittlungsstellen gespeichert und unter Verwendung der VLAN-Kennzeichnungen von ankommenden Datenpaketen ausgelesen werden. Es muß eine bestimmte Anzahl von VLAN-Regeleinträgen, zum Beispiel 1K Einträge, gespeichert und für ankommende Pakete ausgelesen werden.
  • Das TME 200 kann den Umstand, daß VLAN-Kennzeichnungen 12 Bit breit sind, ausnutzen, um die Funktionalität, die ein VLAN-Regel- und/oder Adressenraum aufweisen würde, wenn er in einem herkömmlichen CAM-Chip ausgeführt wäre, bereitzustellen, jedoch ohne die Chipflächenanforderungen und/oder die Gestaltungskomplexität von CAM-Hardware. Wie ein CAM kann das TME 200 alle Speicherstellen in einem ausgewählten RAM benutzen, wodurch Paketkollisionen vermieden werden und die Inhaltsansprechbarkeit eines CAM nachgeahmt wird.
  • Obwohl es einen Speicherverwaltungsaufwand geben kann, wenn eine VLAN-Regeltabelle in einem RAM wie etwa einem 1K-RAM ausgeführt wird, ist das Verwenden des TME 200 als VLAN-Regeltabelle und/oder VLAN-Regeltabellenverwaltung besser als das Verwenden eines Zerhackungsaufbaus und/oder eines Pufferspeichers mit einer festen Größe, um das Auslesen von VLAN-Regeln durchzuführen, da das TME 200 eine CAM-Funktionalität bereitstellt, wodurch der (beispielhafte 1K) Adressenraum garantiert wird, indem Paketkollisionen vermieden werden. Das letztere Merkmal ist für Chiphändler, die das TME 200 verwenden und garantieren müssen, daß eine bestimmte Anzahl von Einträgen gespeichert werden kann, kritisch.
  • Unter Bezugnahme auf 2 können bei der Ausführung einer VLAN-Regeltabelle unter Verwendung des TME 200 RAMs mit verschiedensten Größen für den ersten Speicher 203 und den zweiten Speicher 205 gewählt werden. Für den ersten Speicher 203 könnte ein 1K-RAM (oder eine so große Speicherkapazität wie gewünscht) verwendet werden, um die beispielhaften 1K VLAN-Regeleinträge zu speichern. Für den zweiten Speicher 205 könnte, da 4K die gewöhnliche Höchstanzahl von VLAN-Regeleinträgen ist, die in einer VLAN-Regeltabelle benötigt wird, ein kompletter 4K-RAM verwendet werden, um einen Höchstwert von 4K Zeigern und zugeordneten Gültigkeitsbits zu speichern.
  • Für den Zeiger und das Gültigkeitsbit, die an einer Speicherstelle im zweiten Speicher 205 gespeichert werden sollen, genügt eine Breite von elf Bit für eine VLAN-Regeltabelle, die eine Tiefe von 1K aufweist. Jede Speicherstelle in der Zeigertabelle 205 könnte ein Bit aufweisen, das für das Gültigkeitsbit bestimmt ist, und zehn Bits aufweisen, die für den Zeiger bestimmt sind. Im Beispiel werden Zehn-Bit-Zeiger 224, 226, 228 verwendet, da eine Binärzahl, die zehn Bits aufweist, die gewünschten 1K (1024 Bits) Speicherstellen für die VLRN-Regeleinträge in der Dateneintragtabelle 202 darstellen können. Die Länge der VLAN-Regeleinträge kann schwanken und kann durch Wählen eines Speichers, der breit genug ist, zum Beispiel eines 200 Bit breiten Speichers für entsprechend breite Regeleinträge, untergebracht werden. Somit stellt das TME 200 eine bequeme, schnelle und speichereffiziente VLAN-Regeltabelle mit allen Vorteilen, die ein CAM-Chip bereitstellen würde, bereit, ohne einen CAM-Chip zu verwenden.
  • Das Freilistenmodul
  • Unter nach wie vor erfolgender Bezugnahme auf 2 kann ein TME 200 in einigen Ausführungsformen ein Freilistenmodul 210 enthalten. Das Freilistenmodul 210 verwaltet und unterhält eine Liste von verfügbaren ("freien") Speicherstellen (z.B. 275 bis 276) im ersten Speicher 203. In einer Ausführungsform ist das Freistellenkopfzeigerregister 212 im Freilistenmodul 210 enthalten, um auf die erste verfügbare freie Speicherstelle 275 in einer Liste von freien Speicherstellen 275 bis 276 zu zeigen. Die erste verfügbare freie Speicherstelle 275 wird dem nächsten Dateneintrag, der eingefügt werden soll, zugeteilt, sofern nicht zuerst irgend eine andere belegte Dateneintragstelle 275 bis 274 frei wird.
  • In einer Ausführungsform wird eine Verbunden-Liste von freien Speicherstellen 275 bis 276 verwendet, um Dateneinträge zu speichern, die Schlüsseln zugeordnet sind. Um beispielhafte Tätigkeiten zur Unterhaltung der Verbunden-Liste zu veranschaulichen, ist 5 eine graphische Darstellung einer beispielhaften Verbunden-Liste von freien Speicherstellen nach einem Dateneinfügegesichtspunkt der Erfindung. Ein erster Speicher 203 zum Speichern von Dateneinträgen, die Schlüsseln zugeordnet sind, ein Freilistenmodul 210 und ein Freistellenkopfzeigerregister 212 sind beispielhafte Komponenten, die an der Unterhaltung der Verbunden-Liste Teil haben.
  • Bei einem beispielhaften Einfügen von Daten wird ein Dateneintrag für einen Schlüssel "13" 502 in die erste ver fügbare Speicherstelle 275 eingefügt. Die Adresse der nächsten freien Speicherstelle 276 wird zum Freistellenkopfzeigerregister 212 übertragen, um den Kopfzeiger 504 zu aktualisieren, damit er nicht länger zur nun belegten Speicherstelle 275 zeigt, sondern statt dessen zur nächsten freien Speicherstelle 276 in der Verbunden-Liste zeigt. Die nächste freie Speicherstelle 276 wird nun die erste verfügbare Speicherstelle.
  • 6 ist wie die vorhergehende Figur eine graphische Darstellung einer beispielhaften Verbunden-Liste von freien Speicherstellen nach einem Datenlöschgesichtspunkt der Erfindung. Der erste Speicher 203 zum Speichern von Dateneinträgen, die Schlüsseln zugeordnet sind, und ein Freilistenmodul 210, das ein Freistellenkopfzeigerregister 212 aufweist, sind unter den beispielhaften Komponenten, die an der Tätigkeit Teil haben.
  • Um beispielhafte Dynamiken für die Unterhaltung der Verbunden-Liste von freien Speicherstellen während des Löschens eines Dateneintrags zu veranschaulichen, betrachte man den Zustand des Freistellenkopfzeigerregisters 212 und der Verbunden-Liste von freien Speicherstellen vor dem Löschen eines Dateneintrags. Das Freistellenkopfzeigerregister 212 enthält die Adresse der ersten verfügbaren freien Speicherstelle 276, die durch einen Zeiger 604 dargestellt ist. Dann kommt es zum Löschen des Dateneintrags: der Dateneintrag für den Schlüssel "12" 602 wird aus seiner Speicherstelle 274 gelöscht. Die Adresse der ersten freien Speicherstelle 276 wird vom Freistellenkopfzeigerregister 212 in die neu geleerte Speicherstelle 274 kopiert, wodurch ein Zeiger 603 erstellt wird, der von der neu geleerten Speicherstelle 274 zur (früheren) ersten verfügbaren freien Speicherstelle 276 zeigt. Die Adresse der neu geleerten freien Speicherstelle 274 wird in das Freistellenkopfzeigerregister 212 kopiert. Somit wird die neu geleerte Speicherstelle 274 die neue erste verfügbare freie Speicher stelle am Kopf der Verbunden-Liste von freien Speicherstellen. Die Speicherstelle, aus der der Dateneintrag gelöscht wird, wird in dieser Ausführungsform immer die erste verfügbare freie Speicherstelle am Kopf der Verbunden-Liste von freien Speicherstellen.
  • Nachdem Tätigkeiten beschrieben wurden, die durch ein TME 200 durchgeführt werden können, werden Durchschnittsfachleute verstehen, daß Veränderungen in der Architektur eines TME 200 zulässig sind. Zum Beispiel kann die Anzahl der Speichersteuerungen 215 und die Anzahl der verwendeten Speicher 203, 205 verschieden sein. Anstatt eine diskrete Speichersteuerung 215 zu verwenden, könnte die Speichersteuerfunktion auch in das Steuerelement 214 integriert sein. In einigen Ausführungsformen kann der erste Speicher 203 und/oder der zweite Speicher 205 völlig oder teilweise mit dem TME 200 vereinigt sein, doch in anderen Ausführungsformen können der erste Speicher 203 und der zweite Speicher 205 vom TME 200 getrennt sein, zum Beispiel, wenn ein TME 200 nachträglich in einer Vorrichtung oder Gestaltung ausgeführt wird, die bereits einen Speicher aufweist, den das TME 200 verwendet kann.
  • Obwohl die Ausführungsformen der Vorrichtung in Form von Teilen, modularen Blöcken, und Modulen beschrieben wurden, um die Beschreibung zu erleichtern, könnten ein oder mehrere der Teile, modularen Blöcke und/oder Module durch ein oder mehrere Programme, Unterprogramme, Komponenten, Subkomponenten, Register, Prozessoren, Schaltungen, Softwareunterprogramme und/oder Softwareobjekte, oder jede beliebige Kombination davon ersetzt werden.
  • Verfahren
  • Sobald der Leser 206 den Inhalt vom Schlüssel 216 erhalten hat, kann das TME 200 unter Verwendung des Inhalts verschiedenste Funktionen durchführen; zum Beispiel kann das TME 200 eine Suche nach der Existenz des Schlüssels 216, einen Datenabruf unter Verwendung des Schlüssels, ein Einfügen des Schlüssels 216 (und des zugeordneten Dateneintrags), und ein Löschen des Schlüssels 216 (und des zugeordneten Dateneintrags) durchführen. Nachstehend wird jede der obenerwähnten Tätigkeiten besprochen werden.
  • Durchführung des Auslesens eines Schlüssels/eines Dateneintragabrufs
  • Die Durchführung des Auslesens eines Schlüssels 216 und die Durchführung eines Dateneintragabrufs auf Basis eines abgerufenen Schlüssels 216 sind ähnlich. Zu Erläuterungszwecken wird angenommen werden, daß in den Tabellen 203, 205 bereits einige Dateneinträge (in den Stellen 272, 273, 274) und einige damit zusammenhängende Zeiger 224, 226, 228 vorhanden sind, obwohl die zweite Tabelle 205 anfänglich, vor jeglichen Dateneinfügungen, ohne jeden Zeiger sein würde und alle ihre Gültigkeitsbits auf "ungültig" gesetzt sein würden. In der gleichen Weise würden alle Speicherstellen der ersten Tabelle 203 frei sein und in einer Ausführungsform in einer Verbunden-Liste miteinander verbunden sein.
  • 7 ist ein Ablaufdiagramm eines beispielhaften Datenabrufverfahrens nach einem Gesichtspunkt der Erfindung. Zuerst wird ein Schlüssel hinsichtlich eines Inhalts gelesen und/oder zerhackt 700. Unter Verwendung des Inhalts wird eine dem Inhalt entsprechende Zeigerspeicherstelle angesprochen 702. Ein Gültigkeitsbit in der Zeigerspeicherstelle wird gelesen, um zu bestimmen, ob in einer ersten Stelle in einem ersten Speicher ein Dateneintrag vorhanden ist, der dem Schlüssel zugeordnet ist 704, 706. Wenn das Gültigkeitsbit angibt, daß für den Schlüssel kein Dateneintrag vorhanden ist, endet der Dateneintragabruf 708. Wenn das Gültigkeitsbit angibt, dass für den Schlüssel ein Dateneintrag vorhanden ist, wird ein Zeiger, der in der Zei gerspeicherstelle gespeichert ist, verwendet, um den Dateneintrag in der ersten Stelle zu finden 710. Das Verfahren ist besonders zur Verwaltung einer VLAN-Regeltabelle geeignet, in welchem Fall der Schlüssel eine VLAN-Kennzeichnung und jeder Dateneintrag eine VLAN-Regel ist.
  • Ein TME 200 kann verwendet werden, um das oben beschriebene Verfahren durchzuführen.
  • Nach einem Gesichtspunkt der Erfindung wird der zweite Speicher 205 beim Erhalt eines Schlüssels 216 durch das TME 200 so eingerichtet und/oder gewählt, daß die logische und/oder physische Position jeder Speicherstelle 238 bis 262 dem Inhalt des Schlüssels 216 entspricht. Jede physische und/oder logische Stelle (z.B. 238 bis 262) im zweiten Speicher 205 speichert einen Zeiger und ein Gültigkeitsbit, die dem Inhalt eines möglichen Schlüssels 216, der erhalten werden könnte, entsprechen. Der Inhalt des Schlüssels beschreibt eine physische und/oder logische Position in der Tabelle/im Speicher oder stellt diese dar. Somit kann das ausführende Tabellenmodul 208 nach dem Lesen und/oder Zerhacken des Schlüssels 216 durch den Leser 206 unter Verwendung des Schlüsselinhalts als Adresse direkt zur richtigen Stelle im zweiten Speicher 205 übergehen.
  • Sowohl für die Tätigkeit des Auslesens des Schlüssels als auch für die Tätigkeit des Abrufs des Dateneintrags geht das ausführende Tabellenmodul 208 zur Stelle im zweiten Speicher 205, die durch den Inhalt des Schlüssels 216 angegeben ist, und liest ein Gültigkeitsbit, das an der gegebenen Stelle gespeichert ist, um zu bestimmen, ob dort ein Zeiger gespeichert wurde, der zu einem Dateneintrag für den Schlüssel 216 gerichtet ist. Wenn nur das Auslesen eines Schlüssels durchgeführt wird und das Gültigkeitsbit "richtig" ist, das heißt, das Gültigkeitsbit angibt, daß für den Schüssel 216 ein gültiger Dateneintrag vorhanden ist, ist die Tätigkeit des Auslesens des Schlüssels abge schlossen und benötigt sie keine weitere Handlung. Mit anderen Worten muß die Tätigkeit für das Auslesen von Schlüsseln, das das bloße Vorhandensein des Schlüssels 216 oder eine Darstellung des Schlüssels prüft, nicht weiter als bis zum Lesen des Gültigkeitsbits vorgehen. Eine Dateneintragabruftätigkeit benötigt jedoch zusätzliche Handlungen.
  • Für eine Datenabruftätigkeit wird, sobald das Gültigkeitsbit in der Stelle, die dem Inhalt des Schlüssels 216 entspricht, das Vorhandensein eines Zeigers für den Schlüssel 216 angibt, dem Zeiger zu einem Dateneintrag für den Schlüssel in einer Dateneintragstelle im ersten Speicher 203 gefolgt. Wenn der Inhalt des Schlüssels 216 zum Beispiel "4" ist, geht das ausführende Tabellenmodul 208 zur Speicherstelle "4" 246 des zweiten Speichers 205 und liest das Gültigkeitsbit, das an der Speicherstelle "4" 246 gespeichert ist, welches im veranschaulichten Beispiel auf richtig ("1") gesetzt ist, was das Vorhandensein eines gültigen Zeigers 224 für den Schlüssel 216 angibt. Der Zeiger 224 leitet das ausführende Tabellenmodul 208 zum Dateneintrag, der an der Speicherstelle 272 des ersten Speichers 203 gespeichert ist. Das ausführende Tabellenmodul 208 kann dann den Dateneintrag abrufen.
  • Obwohl in dieser Ausführungsform ein Gültigkeitsbitwert von "1" die Existenz eines Dateneintrags für den Schlüssel 216 im ersten Speicher 203 angibt, und eine "0" das Fehlen eines Dateneintrags angibt, kann in anderen Ausführungsformen auch gut das Gegenteil zutreffen, wobei "0" verwendet wird, um Gültigkeit anzugeben, und "1" verwendet wird, um Ungültigkeit anzugeben.
  • Durchführung des Einfügens oder Löschens eines Schlüssels
  • Das TME 200 kann zusätzlich zu den oben beschriebenen Tätigkeiten des Auslesens eines Schlüssels und des Abrufens eines Dateneintrags Tätigkeiten des Einfügens eines Dateneintrags 290 oder des Löschens eines Dateneintrags 209 durchführen. Obwohl ein TME 200 mit einer statischen Tabelle von Dateneinträgen verwendet werden kann, können die Tätigkeiten des Einfügens und Löschens in vielen Arten von Anwendungen verwendet werden, die eine Tabelle von sich dynamisch verändernden Dateneinträgen, nicht nur einer statischen Tabelle mit einer festen Anzahl von Dateneinträgen, benötigen.
  • 8 ist ein Ablaufdiagramm eines beispielhaften Verfahrens zur Durchführung des "Einfügens eines Schlüssels" nach einem Gesichtspunkt der Erfindung, das heißt, des Einfügens eines Dateneintrags für den Schlüssels und des Setzens eines Zeigers zum Dateneintrag in einer Speicherstelle, die den Schlüssel darstellt. Somit ist das Verfahren zum Einfügen eines Schlüssels ein Verfahren zum Aufbau einer Datentabelle. Ein Dateneintrag, der einem Schlüssel zugeordnet ist, wird in eine erste Stelle eines ersten Speichers eingefügt, um mit dem Aufbau einer Tabelle von Dateneinträgen zu beginnen 800. Der Dateneintrag kann durch ein ausführendes Tabellenmodul 208 eines TME 200 eingefügt werden. Insbesondere kann der Dateneintrageinfüger/löscher 408 des TME 200 verwendet werden, um das Einfügen durchzuführen. Ein Zeiger zum Dateneintrag wird in eine zweite Stelle in einem zweiten Speicher eingefügt, um mit dem Aufbau einer Tabelle von Zeigern zu beginnen 802. Die zweite Stelle ist so gewählt, daß ein Inhalt des Schlüssels die Adresse und/oder Position der zweiten Stelle ohne Durchsuchen einer Liste von Schlüsseln oder anderen Einträgen direkt angibt. Somit stellt die Adresse und/oder Position der zweiten Stelle einen Inhalt des Schlüssels dar. Eine Zeigermodulkomponente 404 des ausführenden Tabellenmoduls 208 kann verwendet werden, um das Einfügen des Zeigers durchzuführen. Ein Gültigkeitsbit in der zweiten Stelle wird so gesetzt, daß es das Vorhandensein des Dateneintrags, der dem Schlüssel zugeordnet ist, angibt 804. Das Zeigermodul 404 kann auch verwendet werden, um das Gültigkeitsbit zu setzen.
  • Unter Verwendung eines Schlüssels mit einem Inhalt von "4" als Beispiel für das Einfügen eines Dateneintrags 290 führt das TME 200 zuerst die oben besprochene Tätigkeit des Auslesens des Schlüssels 216 durch und liest es das Gültigkeitsbit in der Speicherstelle 246, die den Schlüssel 216 darstellt, um zu bestimmen, ob für den Schlüssel 216 gegenwärtig ein Dateneintrag gespeichert ist. Sobald es bestimmt hat, daß für den Schlüssel 216 noch kein Dateneintrag gespeichert ist, erhält das TME 200 den Dateneintrag, der eingefügt werden soll, und speichert das ausführende Tabellenmodul 208 den Dateneintrag 290 in der ersten verfügbaren freien Speicherstelle 272 im ersten Speicher 203. Wenn eine Liste von freien Speicherstellen für Dateneinträge unterhalten wird, wird die Speicherstelle, die durch den eingefügten Dateneintrag verwendet wird, aus der Liste gelöscht und erstellt das Freilistenmodul 210 eine neue erste verfügbare freie Stelle. Das ausführende Tabellenmodul 208 stellt dann einen Zeiger 224, der zum gespeicherten Dateneintrag zeigt, in die Speicherstelle 246 im zweiten Speicher 205; die Speicherstelle 246, die dem Inhalt "4" des Schlüssels 216 entspricht. Da die Speicherstelle 272, die den Dateneintrag 290 erhält, eine Adresse von "0000000000" aufweist, besteht der Zeiger 224 aus der Adresse "0000000000". Schließlich setzt das ausführende Tabellenmodul 208 das Gültigkeitsbit für die Speicherstelle 246, in der sich der neue Zeiger befindet, auf "gültig", was angibt, daß für den Schlüssel 216 mit dem Inhalt "4" ein gültiger Dateneintrag angeordnet wurde.
  • In dieser Ausführungsform wird das Gültigkeitsbit für den Fall des Auftretens eines Fehlers während der Tätigkeit als letztes gesetzt, damit der Wert des Gültigkeitsbits eine so genaue Angabe als möglich für das Vorhandensein oder Fehlen eines Dateneintrags für einen gegebenen Schlüssel geben kann. Ein Fehler wird dazu führen, daß das Gültigkeitsbit in einem "ungültigen" Zustand verbleibt, was keinen Dateneintrag für den Schlüssel 216 angibt.
  • In einer Ausführungsform folgt die Tätigkeit des Löschens eines Dateneintrags einer Abfolge, die der Einfügeabfolge ähnlich ist, außer daß ein Dateneintrag und ein Zeiger entfernt anstatt eingefügt werden.
  • 9 ist ein Ablaufdiagramm eines beispielhaften Verfahrens zum Löschen von Daten nach einem Gesichtspunkt der Erfindung. Der Dateneintrag, der einem Schlüssel zugeordnet ist, wird aus einer Dateneintragstelle in einem ersten Speicher 900 gelöscht. Zeiger in einer Verbunden-Liste von freien Dateneintragstellen werden eingestellt, um die vom gelöscht werdenden Dateneintrag befreite Dateneintragstelle aufzunehmen 902. Ein Zeiger zum Dateneintrag, der gerade entfernt wurde, wird aus einer Zeigerstelle in einem zweiten Speicher gelöscht, wobei die Zeigerstelle den Inhalt des Schlüssels darstellt 904. Dann wird ein Gültigkeitsbit in der Zeigerstelle gesetzt, um das Fehlen eines Dateneintrags, der dem Schlüssel zugeordnet ist, anzugeben 906.
  • Ein TME 200 kann verwendet werden, um das Verfahren zum Löschen eines Dateneintrags durchzuführen. Unter Verwendung eines Schlüssels 216 mit einem Inhalt "4" als Beispiel wird der Dateneintrag, der sich an der Speicherstelle 272 befindet, durch das ausführende Tabellenmodul 208 gelöscht. Der Zeiger 224 von der Speicherstelle 246 im zweiten Speicher 205 wird ebenfalls entfernt. Die neu befreite Speicherstelle 272 im ersten Speicher 203 wird wieder in die Liste von freien Dateneintragspeicherstellen (z.B. den Speicherstellen 275 bis 276 und anderen in der Tabelle 203, die leer sind) aufgenommen. Zuletzt wird das Gültigkeitsbit 246 gesetzt, um das Fehlen eines Dateneintrags für den bestimmten Schlüssel 216 anzugeben. Die Wiederaufnahme der befreiten Speicherstelle 272 in die Liste von freien Dateneintragspeicherstellen 275 bis 276 kann in ihrer Zeitsteuerung in Bezug auf das Löschen eines Dateneintrags und eines Zeigers unterschiedlich sein. Doch in dieser Ausführungsform wird die Wiederaufnahme des befreiten Speicherraums (272, wenn der Dateneintrag dort gelöscht wird) in die Liste von freien Dateneintragspeicherstellen 275 bis 276 dynamisch ausgeführt, da Zeiger zum und vom Dateneintrag, der gelöscht wird, neuangeordnet werden, und wird sie durch das Freilistenmodul 210 ausgeführt.
  • Alternative Ausführungsform
  • 10 ist eine graphische Darstellung eines Gegenstands, der ein maschinenlesbares Medium 1000 umfaßt, das einen Inhalt 1002 aufweist, der verursacht, daß eine Wirtsvorrichtung eine oder mehrere Ausführungsformen, Gesichtspunkte und/oder Verfahren eines Tabellenverwaltungsmoduls der Erfindung ausführt. Beim Inhalt kann es sich um Befehle wie etwa Computerbefehle handeln, oder kann es sich um Gestaltungsinformationen handeln, die eine Ausführung gestatten. Der Inhalt verursacht, daß ein Modul ein Verfahren und/oder eine Vorrichtung der Erfindung einschließlich des Einfügens eines Dateneintrags, der einem Schlüssel zugeordnet ist, in eine Dateneintragstelle 272 eines ersten Speichers 203, des Einfügens eines Zeigers 224 zum Dateneintrag in eine Zeigerstelle in einem zweiten Speicher 205, wobei die Adresse und/oder Position der Zeigerstelle 246 einen Inhalt des Schlüssels darstellt, und des Setzens eines Gültigkeitsbits in der Speicherstelle 246, um das Vorhandensein des Dateneintrags, der dem Schlüssel zugeordnet ist, in der Dateneintragstelle 272 anzugeben, ausführt.
  • Der Schlüssel, der durch das Wirtsmodul erhalten wird, kann eine 12-Bit-VLAN-Kennzeichnung sein. Das Wirtsmodul kann eine VLAN-Regeltabelle ausführen, die einen 1K-VLAN-Regel-RAM aufweist, wobei jede VLAN-Regel der Daten eintrag für einen Schlüssel ist. Wenn eine VLAN-Regel im 1K-Regel-RAM gespeichert wird, wird in einem zweiten RAM, insbesondere einem 4K-Zeiger-RAM, an einer Stelle im 4K-Zeiger-RAM, die den Inhalt des Schlüssels darstellt, ein Zeiger zur VLAN-Regel angeordnet. Um den gesamten 1K-VLAN-Regel-RAM zu verwenden, weist der Zeiger eine Länge von zehn Bits auf. Ein Gültigkeitsbit wird ebenfalls an der Zeigerstelle im 4K-Zeiger-RAM gespeichert, um anzugeben, ob für einen gegebenen Schlüsselinhalt eine gültige VLAN-Regel vorhanden ist. Somit spricht das TME, das durch das Modul ausgeführt wird, den 4K-Zeiger-RAM unter Verwendung einer erhaltenen VLAN-Kennzeichnung schnell an und stellt es durch bloßes Lesen des Gültigkeitsbits schnell das Vorhandensein oder Fehlen einer gültigen VLAN-Regel für den Schlüssel fest. Die hohe Geschwindigkeit des TME, das durch das Modul ausgeführt wird, wird ohne die besonderen Hardwareanforderungen und/oder die Gestaltungskomplexität eines CAM-Chips erreicht.
  • Die Verfahren und Vorrichtungen der Erfindung können teilweise als Computerprogrammprodukt bereitgestellt sein, welches das maschinenlesbare Medium beinhalten kann. Das maschinenlesbare Medium kann, jedoch ohne Beschränkung darauf, Floppy-Disketten, optische Platten, CD-ROMs, magnetooptische Platten, ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, Flash-Speicher, oder andere Medien umfassen, die zum Speichern elektronischer Befehle geeignet sind. Überdies können Teile auch als ein Computerprogrammerzeugnis heruntergeladen werden, wobei das Programm durch Datensignale, die in einer Trägerwelle oder einem anderen Ausbreitungsmedium aufgenommen sind, über eine Kommunikationsverbindung (z.B. ein Modem oder einen Netzanschluß) von einem entfernten Computer zu einem anfordernden Computer übertragen werden kann. In dieser Hinsicht kann der Gegenstand auch gut eine derartige Trägerwelle oder ein derartiges anderes Ausbreitungsmedium umfassen.
  • Obwohl die Erfindung in Form von mehreren Ausführungsformen beschrieben wurde, werden Fachleute erkennen, daß die Erfindung nicht auf die beschriebenen Ausführungsformen beschränkt ist, sondern innerhalb des Umfangs der beiliegenden Ansprüche mit Abwandlungen und Abänderungen ausgeführt werden kann. Die Beschreibung soll daher als erläuternd anstatt als beschränkend angesehen werden.

Claims (15)

  1. Vorrichtung (200), umfassend einen Leser (206), um einen Schlüssel (216) zu lesen und/oder zu zerhacken, um einen Schlüsselinhalt zu bestimmen; und ein ausführendes Tabellenmodul (208), um den Schlüsselinhalt vom Leser zu erhalten, einen Dateneintrag (290), der dem Schlüssel zugeordnet ist, in einer Datenstelle in einem Speicher zu speichern, der Datenstelle einen Zeiger zuzuweisen, den Zeiger an einer Zeigerstelle im Speicher zu speichern, wobei die Speicheradresse der Zeigerstelle der Schlüsselinhalt ist, und ein Gültigkeitsbit (230) in der Zeigerstelle zu setzen, um das Vorhandensein des Dateneintrags in der Datenstelle anzugeben.
  2. Vorrichtung (200) nach Anspruch 1, wobei das ausführunge Tabellenmodul (208) dazu konfiguriert ist, den Dateneintrag (290) aus der Datenstelle zu löschen, den Zeiger aus der Zeigerstelle zu löschen, und das Gültigkeitsbit (230) zurückzusetzen.
  3. Vorrichtung (200) nach Anspruch 1, ferner umfassend ein Freilistenmodul (210), um eine Liste von freien Speicherstellen für Dateneinträge zu verwalten, und ein Kopfzeigerregister (212), um freie Speicherstellenzeiger in einer Verbunden-Liste der freien Speicherstellen zu unterhalten.
  4. Vorrichtung (200) nach Anspruch 1, wobei das ausführende Tabellenmodul (208) ferner Folgendes umfaßt: einen Schlüsselindizierer (402), um die Zeigerstelle auf Basis des Schlüsselinhalts zu finden und um das Gültigkeitsbit (230) in der Zeigerstelle zu lesen; einen Dateneintragabrufer (406), um den Dateneintrag (290) abzurufen, wenn das Gültigkeitsbit das Vorhandensein des dem Schlüssel (216) zugeordneten Dateneintrags angibt; einen Dateneintrageinfüger/löscher (418), um den Dateneintrag in die Datenstelle einzufügen und/oder daraus zu löschen; und ein Zeigermodul (404), um den Zeiger einzufügen und/oder zu löschen und das Gültigkeitsbit, das der Zeigerstelle zugeordnet ist, zu setzen/zurückzusetzen.
  5. Verfahren, umfassend: Lesen und/oder Zerhacken eines Schlüssels (216), um einen Schlüsselinhalt zu bestimmen; Einfügen (800) eines Dateneintrags (290), der einem Schlüssel zugeordnet ist, in eine Datenstelle in einem ersten Speicher (203); Einfügen (802) eines Zeigers zu der Datenstelle in eine Zeigerstelle in einem zweiten Speicher (205), wobei die Speicheradresse der Zeigerstelle der Schlüsselinhalt ist; und Setzen (804) eines Gültigkeitsbits (203) in die Zeigerstelle, um das Vorhandensein des dem Schlüssel zugeordneten Dateneintrags anzugeben.
  6. Verfahren nach Anspruch 5, wobei die Tiefe des ersten Speichers (203) auf einer Zeigerlänge beruht, die im zweiten Speicher (205) verwendet wird.
  7. Verfahren nach Anspruch 5, wobei leere Dateneintragstellen im ersten Speicher (203) in einer Liste von freien Datenstellen miteinander verbunden sind.
  8. Verfahren nach Anspruch 7, ferner umfassend das Zeigen zu einer ersten freien Datenstelle in der Liste der freien Datenstellen unter Verwendung eines Kopfzeigerregisters (212).
  9. Verfahren nach Anspruch 8, wobei die erste freie Datenstelle zum Einfügen des Dateneintrags durch Aktualisieren des Kopfzeigers, damit dieser auf eine nächste freie Datenstelle zeigt, von der Liste von freien Datenstellen entbunden wird.
  10. Verfahren nach Anspruch 5, wobei im zweiten Speicher (205) eine Zehn-Bit-Zeigerlänge verwendet wird, und im ersten Speicher (203) 1024 Speicherstellen verwendet werden.
  11. Verfahren, umfassend: Lesen und/oder Zerhacken (700) eines Schlüssels (216), um einen Inhalt zu bestimmen; Lesen (704) eines Gültigkeitsbits (230) in einer Zeigerstelle im Speicher, um zu bestimmen, ob ein Dateneintrag, der dem Schlüssel zugeordnet ist, in einer Datenstelle im Speicher vorhanden ist, wobei die Speicheradresse der Zeigerstelle der Schlüsselinhalt ist; und Folgen (710) einem Zeiger in der Zeigerstelle zum Dateneintrag, wenn das Gültigkeitsbit das Vorhandensein des Dateneintrags im Speicher angibt.
  12. Verfahren, umfassend: Löschen (900) eines Dateneintrags, der einem Schlüssel zugeordnet ist, aus einer Datenstelle in einem Datenspeicher; Einstellen (902) eines oder mehrerer Zeiger zu freien Speicherstellen, um die Dateneintragstelle in eine Verbunden-Liste von freien Datenstellen aufzunehmen; Löschen (904) eines Zeigers zum Dateneintrag aus einer Zeigerstelle im Speicher, wobei die Speicheradresse der Zeigerstelle ein Schlüsselinhalt eines zugeordneten Schlüssels ist; und Zurücksetzen (906) eines Gültigkeitsbits (230) in der Dateneintragszeigerstelle, um das Fehlen des Dateneintrags, der dem Schlüssel zugeordnet ist, anzugeben.
  13. Verfahren nach einem der Ansprüche 5 bis 12, wobei der Schlüssel eine Kennzeichnung eines virtuellen lokalen Netzes VLAN ist, und der Dateneintrag eine VLAN-Regel ist.
  14. Verfahren nach Anspruch 13, wobei die VLAN-Kennzeichnung einen Inhalt aufweist, der durch eine Speicherstelle im zweiten Speicher dargestellt ist.
  15. Gegenstand, umfassend ein maschinenlesbares Medium, das einen Inhalt enthält, der bei seiner Ausführung verursacht, daß ein Zugriffsmodul das Verfahren nach einem der Ansprüche 5 bis 14 ausführt.
DE60307241T 2002-03-20 2003-03-04 Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben Expired - Lifetime DE60307241T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US103470 2002-03-20
US10/103,470 US6842791B2 (en) 2002-03-20 2002-03-20 Method and apparatus for memory efficient fast VLAN lookups and inserts in hardware-based packet switches
PCT/US2003/006641 WO2003081857A1 (en) 2002-03-20 2003-03-04 Vlan table management for memory efficient lookups and inserts in hardware-based packet switches

Publications (2)

Publication Number Publication Date
DE60307241D1 DE60307241D1 (de) 2006-09-14
DE60307241T2 true DE60307241T2 (de) 2007-07-12

Family

ID=28452370

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60307241T Expired - Lifetime DE60307241T2 (de) 2002-03-20 2003-03-04 Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben

Country Status (8)

Country Link
US (1) US6842791B2 (de)
EP (1) EP1486040B1 (de)
CN (1) CN100450073C (de)
AT (1) ATE335334T1 (de)
AU (1) AU2003228273A1 (de)
DE (1) DE60307241T2 (de)
TW (1) TWI293224B (de)
WO (1) WO2003081857A1 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7356030B2 (en) * 2000-11-17 2008-04-08 Foundry Networks, Inc. Network switch cross point
US7236490B2 (en) 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7447777B1 (en) 2002-02-11 2008-11-04 Extreme Networks Switching system
US7814204B1 (en) 2002-02-11 2010-10-12 Extreme Networks, Inc. Method of and system for analyzing the content of resource requests
US7584262B1 (en) 2002-02-11 2009-09-01 Extreme Networks Method of and system for allocating resources to resource requests based on application of persistence policies
FR2837587B1 (fr) * 2002-03-22 2008-04-11 St Microelectronics Sa Procede et circuit pour fournir une donnee de contexte d'un dispositif a partir d'une adresse associee a ce dispositif
US20090279558A1 (en) * 2002-05-06 2009-11-12 Ian Edward Davis Network routing apparatus for enhanced efficiency and monitoring capability
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US7266117B1 (en) 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US20120155466A1 (en) * 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US20040001492A1 (en) * 2002-07-01 2004-01-01 Johnson Erik J. Method and system for maintaining a MAC address filtering table
US8289836B2 (en) 2003-02-27 2012-10-16 Intel Corporation Apparatus and associated methods to introduce diversity in a multicarrier communication channel
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
US7474653B2 (en) * 2003-12-05 2009-01-06 Hewlett-Packard Development Company, L.P. Decision cache using multi-key lookup
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US7292591B2 (en) 2004-03-30 2007-11-06 Extreme Networks, Inc. Packet processing system architecture and method
US7613209B1 (en) 2004-03-30 2009-11-03 Extreme Networks, Inc. System and method for egress packet marking
US8161270B1 (en) 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US7463628B2 (en) 2004-03-30 2008-12-09 Extreme Networks, Inc. Packet data modification processor command instruction set
US7385984B2 (en) 2004-03-30 2008-06-10 Extreme Networks, Inc. Packet processing system architecture and method
US7822032B1 (en) * 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US7649879B2 (en) 2004-03-30 2010-01-19 Extreme Networks, Inc. Pipelined packet processor
US7304996B1 (en) * 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
US7580350B1 (en) 2004-03-30 2009-08-25 Extreme Networks, Inc. System for deriving packet quality of service indicator
US7453874B1 (en) 2004-03-30 2008-11-18 Extreme Networks, Inc. Method and system for incrementally updating a checksum in a network data packet
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US7752355B2 (en) * 2004-04-27 2010-07-06 International Business Machines Corporation Asynchronous packet based dual port link list header and data credit management structure
US7889750B1 (en) 2004-04-28 2011-02-15 Extreme Networks, Inc. Method of extending default fixed number of processing cycles in pipelined packet processor architecture
US8943050B2 (en) * 2004-05-21 2015-01-27 Ca, Inc. Method and apparatus for optimizing directory performance
US7646773B2 (en) * 2004-08-02 2010-01-12 Extreme Networks Forwarding database in a network switch device
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
US7882086B1 (en) * 2005-12-21 2011-02-01 Network Appliance, Inc. Method and system for portset data management
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US7817633B1 (en) * 2005-12-30 2010-10-19 Extreme Networks, Inc. Method of providing virtual router functionality through abstracted virtual identifiers
US7822033B1 (en) * 2005-12-30 2010-10-26 Extreme Networks, Inc. MAC address detection device for virtual routers
US7894451B2 (en) * 2005-12-30 2011-02-22 Extreme Networks, Inc. Method of providing virtual router functionality
US7903654B2 (en) 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US8238255B2 (en) * 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US7978614B2 (en) 2007-01-11 2011-07-12 Foundry Network, LLC Techniques for detecting non-receipt of fault detection protocol packets
US8037399B2 (en) 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8271859B2 (en) 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8509236B2 (en) 2007-09-26 2013-08-13 Foundry Networks, Llc Techniques for selecting paths and/or trunk ports for forwarding traffic flows
CN101459679A (zh) * 2007-12-12 2009-06-17 华为技术有限公司 网络存储设备及数据读写控制方法
US7852486B2 (en) * 2008-02-07 2010-12-14 Board Of Regents, The University Of Texas System Wavelength and intensity monitoring of optical cavity
US8139583B1 (en) 2008-09-30 2012-03-20 Extreme Networks, Inc. Command selection in a packet forwarding device
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US10719387B2 (en) * 2018-04-25 2020-07-21 Oracle International Corporation Memory interface with tamper-evident features to enhance software security
US10887221B2 (en) * 2018-08-28 2021-01-05 Mediatek Inc. Methods of synchronization mode of flow table and apparatus using the same

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386532A (en) * 1991-12-30 1995-01-31 Sun Microsystems, Inc. Method and apparatus for transferring data between a memory and a plurality of peripheral units through a plurality of data channels
US5386578A (en) * 1992-01-02 1995-01-31 Lin; Min H. Method for sorting and merging in a data processing system using a matrix of cells
US6032207A (en) * 1996-12-23 2000-02-29 Bull Hn Information Systems Inc. Search mechanism for a queue system
US6034958A (en) 1997-07-11 2000-03-07 Telefonaktiebolaget Lm Ericsson VP/VC lookup function
US6091707A (en) 1997-12-18 2000-07-18 Advanced Micro Devices, Inc. Methods and apparatus for preventing under-flow conditions in a multiple-port switching device
US6601150B1 (en) * 1999-05-10 2003-07-29 Nortel Networks Limited Memory management technique for maintaining packet order in a packet processing system
US6901452B1 (en) 2000-03-02 2005-05-31 Alcatel Selectable prioritization for data communication switch

Also Published As

Publication number Publication date
CN1653763A (zh) 2005-08-10
US20030214956A1 (en) 2003-11-20
TWI293224B (en) 2008-02-01
ATE335334T1 (de) 2006-08-15
AU2003228273A1 (en) 2003-10-08
WO2003081857A1 (en) 2003-10-02
EP1486040B1 (de) 2006-08-02
DE60307241D1 (de) 2006-09-14
US6842791B2 (en) 2005-01-11
CN100450073C (zh) 2009-01-07
EP1486040A1 (de) 2004-12-15
TW200305321A (en) 2003-10-16

Similar Documents

Publication Publication Date Title
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE68925557T2 (de) Verfahren zum Zugriff von Daten in einer Tabelle und seine Anwendung zum Lenken von Daten zwischen entfernten Stationen
DE60222622T2 (de) Verfahren und Vorrichtung zur Paketkopfteilverarbeitung
DE69927109T2 (de) Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen
DE69935683T2 (de) Paketversendegerät mit einer Flussnachweistabelle
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE69934644T2 (de) Netzwerkvermittlungseinrichtung mit auf der Basis von Benutzung verteilten Umleitungsdatenbanken
DE60120790T2 (de) Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE69817328T2 (de) Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE602004011721T2 (de) Zugriffssteurungsmechanismus für Router
DE60021846T2 (de) Leitweglenkungsanordnung
DE602004008911T2 (de) Verfahren und system um die reihenfolge von paketen mit hilfe eines zwischenspeichers zu gewährleisten
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation
DE60100927T2 (de) Verbesserter Internet Protocolpaketrouter
DE10028563B4 (de) Kommunikationssteuerungseinheit
DE69027017T2 (de) Anordnung und Verfahren zur Speicherverwaltung in einem Mikrorechner
DE60306209T2 (de) Verfahren, mobile vorrichtungen und rechnerlesbare media zur datenverwaltung
DE3853162T2 (de) Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren.
DE19928666A1 (de) Erweitertes Telefonbuch für ein Mobiltelefon
DE602004009574T2 (de) System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden

Legal Events

Date Code Title Description
8364 No opposition during term of opposition