-
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.