-
Die
vorliegende Anmeldung beansprucht die Priorität der am 09.03.2000 hinterlegten
Vorläufigen US-Patentanmeldung
mit dem amtlichen Aktenzeichen Nr. 60/188,335. Auf den Inhalt dieser
Patentanmeldung wird hiermit vollinhaltlich Bezug genommen.
-
HINTERGRUND
DER ERFINDUNG
-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein ein Verfahren und eine
Vorrichtung zum Suchen einer elektronisch gespeicherten Informationstabelle,
die eine Mehrzahl von Tabelleneinträgen enthält, und genauer ein Verfahren
und eine Vorrichtung zum Erleichtern einer linearen Hochgeschwindigkeitsdurchsuchung
einer Tabelle durch eine Mehrzahl von Agenten, von denen jeweils
gefordert wird, dass sie viele Einträge der Tabelle unter Verwendung
von verschiedenen Suchargumenten durchsuchen.
-
BESCHREIBUNG
DES EINSCHLÄGIGEN
STANDES DER TECHNIK
-
Auf
den Gebieten der elektronischen Datenkommunikationen und Datenverarbeitung
werden elektronisch gespeicherte Tabellen in einer großen Vielfalt
von Anwendungen verwendet, um ein Mapping zwischen zwei oder mehr
Informationsräumen zur
Verfügung
zu stellen. Die Tabellen mit Informationen, die eine Mehrzahl von
Einträgen
enthalten, können
gemäß vielen
verschiedenen Verfahren durchsucht werden.
-
Im
Allgemeinen durchsucht ein Suchagent eine Tabelle unter Verwendung
eines Suchargumentes und kann einen oder mehr Tabelleneinträge lesen,
um je nach den Anforderungen bestimmter Anwendungen einen exakten
Abgleich oder einen besten Abgleich zu bestimmen. Es ist ein allgemeines Entwurfserfordernis,
dass von jedem von einer Mehrzahl von Suchagenten mit verschiedenen
Suchargumenten verlangt wird, eine einzelne Informationstabelle
zu durchsuchen. Für
Anwendungen, bei denen es im allgemeinen nicht machbar ist, eine
Vielzahl von Speichervorrichtungen zu verwenden, welche die Informationstabelle
speichern, wird typischerweise eine Arbitrationsmethode angewendet,
um Anforderungen von jedem der Suchagenten für einen Zugriff auf die einzelne
Tabelle aufzulösen.
-
Es
wurden viele Algorithmen und Vorrichtungen zum effizienten Durchsuchen
von Tabellen mit Informationen entwickelt. Ein grundlegendes Verfahren,
das rein auf der Menge von Ressourcen beruht, ist die lineare Suche,
wobei eine Vorrichtung eine Tabelle linear, Eintrag um Eintrag,
durchsucht. Eine lineare Suche ist das einfachste Suchverfahren
und ist ideal zum Durchsuchen von kleinen Tabellen in Anwendungen
mit langsamen Sucherfordernissen. Die lineare Suche wird jedoch
unpraktikabel, sobald die Tabellengröße zunimmt, da die maximale
Suchzeit proportional zur Tabellengröße ist.
-
Um
die Tabellensuchzeit zu verkürzen,
können
binäre
Suchverfahren verwendet werden, wobei alle Einträge der Tabelle in einer bestimmten
Reihenfolge sortiert werden, und die Suchzeiten sind gleich log2
(Tabellengröße). Binäre Suchverfahren
sind insbesondere wünschenswert
für das
Durchsuchen von großen
Tabellen unter Verwendung von Software, jedoch ist das Sortieren
der Tabelleneinträge
in einer bestimmten Reihenfolge keine einfache Aufgabe. Aufgrund
dieses hohen Wartungserfordernisses ist es häufig nicht durchführbar, die
binäre
Suche als Hardware auszuführen.
-
Eines
der schnellsten Verfahren der Tabellensuche verwendet eine inhaltsadressierbare
Speicher (CAM)-Suche, wobei alle Tabelleneinträge gleichzeitig mit einem Suchargument
verglichen werden, und das Suchergebnis sofort an einen Ausgang geliefert
wird. Eine CAM-Suche stellt jedoch eine hohe Suchleistung auf Kosten
der Ausführung
einer größeren Logik
unter Verwendung einer größeren Menge
von Siliziumplatz zur Verfügung.
Darüber
hinaus gibt es typischerweise eine Grenze für die Größe von Vergleichsfeldern (d.h.
der Datenbreite) und die Größe von Nutzlastfeldern,
die bei einer CAM-Suche verwendet werden können.
-
Einige
der üblichsten
Verfahren der Tabellensuche wenden Hash-Algorithmen an, bei denen
Tabelleneinträge
gemäß dem bestimmten
Typ von Hash-Algorithmus (d.h. crc32) in verschiedene Buckets gruppiert
werden. Suchsysteme, die Hash-Algorithmen anwenden, sind in der
Lage, den Suchbereich auf eine spezifische Stelle (ein Bucket) einzuengen,
und dies begrenzt die maximale Suchzeit. Die maximale Tabellensuchzeit
basiert auf der Größe des Bucket,
und die Tabellensuchzeit bleibt konstant, auch wenn sich die Anzahl
von Buckets vergrößert. Während die
Anzahl der Tabelleneinträge
zunimmt, erhöht
sich auch die Möglichkeit,
dass zwei oder mehr Einträge
in einen gleichen Bucket gehasht werden. Falls der maximale Tabelleneintrag
(die Tabellengröße) beträchtlich
größer als
die typische Anzahl von Einträgen
ist, die zur gleichen Zeit verwendet werden, und der Hash-Algorithmus
die Einträge gleichmäßig verteilt,
besteht durchaus die Möglichkeit,
dass sich ein oder zwei Einträge
in einem Bucket befinden. In diesem Fall ist die durchschnittliche Suchzeit
eher kurz (ein oder zwei Taktzyklen pro Suche). Ein guter Hash-Algorithmus
verstreut Tabelleneinträge
gleichmäßig über die
Suchtabelle, jedoch besteht eine Möglichkeit, dass viele Tabelleneinträge in das
gleiche Bucket gehasht werden können.
Somit ist die Verwendung von 100 Prozent einer Tabelle nicht praktisch,
und die Größe der Tabelle
muss oft viel größer als
die typische Anzahl von Tabelleneinträgen sein.
-
Auf
dem Gebiet der Datenkommunikationen gibt es viele Anwendungen, wobei
es erforderlich ist, dass jeder von einer Mehrzahl von Suchagenten
eine einzelne Informationstabelle durchsucht. Bei Routing- und Schaltvorrichtungen
wird häufig
eine Informationstabelle verwendet, um einen Mappingmechanismus
zum Weiterleiten von Daten zur Verfügung zu stellen, typischerweise
in Form eines Paketes (z.B. eines Ethernet-Paketes), von einer Stelle
zu einer anderen Stelle.
-
Während Pakete
an jedem von einer Mehrzahl von zugeordneten Ports einer Schalt-
oder Routervorrichtung eintreffen, muss eine Mehrzahl von Port-Suchagenten,
die jeweils einem der Ports zugeordnet sind, in der Tabelle gespeicherte
Informationen durchsuchen, um eine angemessene Aktion zu bestimmen.
Falls die Tabelle beispielsweise einen Eintrag enthält, der
eine Richtung für
das angekommene Paket zur Verfügung
stellt, leitet die Vorrichtung das Paket in die angegebene Richtung
weiter. Falls die Tabelle keinen Eintrag enthält, der eine Richtung für das angekommene
Paket zur Verfügung stellt,
kann die Vorrichtung das Paket basierend auf einer vorgegebenen
Einstellung behandeln. Beispiele für vorgegebene Einstellungen
umfassen das Senden des Paketes an alle verfügbaren Ports (Broadcasting),
Senden des Paketes an eine zentrale Verarbeitungseinheit (CPU) für eine Analyse
gemäß einer vorausgehend
definierten Gruppe von Regeln, oder Fallenlassen des Paketes. Für Ethernet-Routinganwendungen
wird eine Informationstabelle typischerweise auf der Grundlagen
von bestimmten Feldern (z.B. einer Mediumzugriffsteuerungs(MAC)-Adresse, einer Ix-Adresse,
einer Virtual LAN ID o.dgl.) eines Paketes organisiert.
-
Wenn
bestimmte Felder des Paketes mit bestimmten Feldern der Tabelle übereinstimmen,
verwendet die Vorrichtung die entsprechenden Informationen in der
Tabelle, um das Paket weiter zu leiten.
-
Bei
herkömmlichen
Tabellensuchsystemen, bei denen es erforderlich ist, dass eine Mehrzahl
von Suchagenten eine einzelne Informationstabelle durchsucht, wird
typischerweise ein "Pull"-Suchverfahren angewendet,
wobei es erforderlich ist, dass jeder der Suchagenten eine Tabellensuche
initiiert. Es wird üblicherweise
eine Arbitrationsmethode angewendet, um Anforderungen aufzulösen, die
von jedem von einer Mehrzahl von Suchagenten für einen Zugriff auf die einzelne
Tabelle initiiert wurden.
-
1 zeigt
ein verallgemeinertes Blockdiagramm eines herkömmlichen Tabelleninformationen-Suchsystems
unter 10, wobei das System gemäß herkömmlichen Pull-Suchmethoden
arbeitet. Das System 10 weist eine Mehrzahl von N + 1 Suchagenten 12 auf,
die als AGENT_0, AGENT_1, ... AGENT_N bezeichnet sind. Als ein Beispiel
kann jeder der Suchagenten 12 ein Portagent sein, der kommunikationsmäßig mit
einem Empfangsport einer Schaltvorrichtung gekoppelt ist. Jeder
der Suchagenten 12 weist einen Empfängerport 14 zum Empfangen
eines Suchargumentes (z.B. einer Bestimmungsadresse einer Datenhülle) auf;
einen Arbitrations-Anforderungssignal-Ausgangsport 16 zum
Liefern eines von einer Mehrzahl von N + 1 Anforderungssignalen,
die als REQ_0, REQ_1, ... REQ_N bezeichnet sind; einen Arbitrationserteilungssignal-Eingangsport 18 zum
Empfangen eines zugeordneten von einer Mehrzahl von N + 1 Erteilungssignalen,
die als GNT_0, GNT_1, ... GNT_N bezeichnet sind; einen Tabellendateneingangsport 20 zum
Empfangen von Tabelleninformationen über einen Tabellendatenbus 21,
wie weiter unten erläutert
wird; und einen Speicheradressen-Ausgangsport 22 zum Liefern
von Adressenwerten an einen Suchadressenbus 23, wie weiter
unten erläutert
wird.
-
Das
System 10 weist ferner auf eine Arbitrationslogikeinheit 26 mit
einer Mehrzahl von Anforderungssignal-Eingangsports 28 zum
Empfangen von zugeordneten der Arbitrations-Anforderungssignale, und
eine Mehrzahl von N + 1 Arbitrations-Erteilungssignal-Ausgangsports 30,
die jeweils ein zugeordnetes der Arbitrations-Erteilungssignale
an den Port 18 eines zugeordneten der Agenten 12 liefern;
und eine Tabelleninformationen-Speichereinheit 36 zum Speichern
einer Informationstabelle, die einen Tabellendaten-Ausgangsport 38 zum
Liefern von Tabellendaten an den Tabellendaten-Eingangsport 20 von
ausgewählten
der Suchagenten 12 über
den Bus 21 aufweist, und einen Suchadressen-Eingangsport 40 zum
Empfangen der Speicheradressenwerte von den Ports 22 von
ausgewählten
der Agenten 12.
-
Die
Tabelleninformationen-Speichereinheit 36 ist typischerweise
unter Verwendung von SRAM (Static Random Access Memory)-Technologie
ausgeführt,
weshalb jeweils nur auf einen der Einträge der darin gespeicherten
Informationstabelle zugegriffen werden kann. Wegen dieses grundlegenden Merkmals
der SRAM-Technologie kann jeweils nur einer der Agenten 12 auf
die Tabelleninformationeneinheit 36 zugreifen. Es kann
jedoch jeder der Agenten 12 einen verschiedenen Suchargumentwert
zum Durchsuchen der in der Speichereinheit 36 gespeicherten
Tabelle besitzen, so dass ein Konflikt besteht.
-
Da
jeweils nur auf einen der in der Speichereinheit 36 gespeicherten
Tabelleneinträge
zugegriffen werden kann, wird die Arbitrationslogikeinheit 26 benötigt, um
zwischen Anforderungen zu vermitteln, die von den Suchagenten 12 für einen
Zugriff auf die Speichereinheit empfangen werden. Die Arbitrationslogikeinheit 26 empfängt die
Anforderungen und löst sie
auf, und gestattet, dass entsprechende der Suchagenten 12 ausgewählt werden.
Im Ansprechen auf das Aktivieren des zugeordneten Erteilungssignals
beginnt ein ausgewählter
Suchagent 12, einen oder mehr Adressenwerte sequentiell über den
Bus 23 an den Port 40 der Speichereinheit 36 zu
liefern. Im Ansprechen auf jeden der Adressenwerte liefert die Speichereinheit
die Inhalte eines an der angegebenen Adresse gespeicherten Tabelleneintrags
an alle Agenten über
den Datenbus, obgleich nur ausgewählte Agenten die Daten aus
dem Speicher verarbeiten. Jeder der Agenten hat die Funktion, einen Suchvorgang
auszuführen,
um einen Abgleich zwischen dem Suchargumentwert und einem der Tabelleneinträge zu bestimmen.
Falls das Suchsystem jeden Tabelleneintrag durchsuchen muss, um
einen besten verfügbaren
Abgleich anstelle eines exakten Abgleichs zu bestimmen, wird die
erforderliche Suchzeit sehr lang.
-
Ein
Problem im Zusammenhang mit dem Tabellensuchsystem 10 des
Standes der Technik besteht darin, dass das System nicht auf eine
große
Anzahl von Suchagenten 12 skalierbar ist, da jeweils nur
einer der Agenten 12 auf die Tabelleninformationeneinheit 36 zugreifen
kann, so dass bei einer zunehmenden Anzahl von Suchagenten die insgesamt erforderliche
Suchzeit zum Verarbeiten aller Suchargument linear zunimmt, gemäß "Pull"-Suchmethoden jeweils
nur ein Suchargument verarbeitet werden kann. Anders ausgedrückt, die
Gesamtzahl von Zyklen, die für
eine Suche erforderlich ist, ist proportional zu der Anzahl von
Suchagenten.
-
Beispielsweise
nimmt in einer Schaltvorrichtung, während die Anzahl von Port-Suchagenten
(mit jeweils einer anderen Bestimmungsadresse eines zugeordneten
ankommenden Paketes) linear zunimmt, die erforderliche Suchzeit
linear zu, da gemäß "Pull"-Suchmethoden jeweils
nur ein Paket verarbeitet werden kann. Dies wird zu einem engen
Flaschenhals, wenn es nötig
ist, dass die Schaltvorrichtung eine große Anzahl von Paketen gleichzeitig
verarbeitet. Wenn z.B. die minimale Paketweiterleitungszeit 80 Taktzyklen
beträgt
und die maximale Suchzeit acht Taktzyklen beträgt, kann die Schaltvorrichtung
ein Maximum von zehn Paketen zur selben Zeit weiter leiten. Falls
die Schaltvorrichtung gleichzeitig mehr als zehn Pakete weiter leiten
soll, wird die Suchtabelle unter Verwendung einer "Pull"-Suchmethode zu einem
Leistungsflaschenhals. Dies ist von besonderer Wichtigkeit, wenn
die maximale Suchzeit sehr lang ist. Falls das Suchsystem jeden
Tabelleneintrag durchsuchen soll, um einen besten verfügbaren Abgleich
anstatt eines exakten Abgleichs zu bestimmen, ist die Suchzeit zum
Verarbeiten mehrerer Pakete ziemlich lang.
-
Das
Dokument "SCHULTZ
K J ET AL.: "Architectures
for large-capacity CAMs" INTEGRATION, THE
VLSI JOURNAL, NORTH-HOLLAND PUBLISHING COMPANY. AMSTERDAM, NL, Vol.
18, No. 2, 1. Juni 1995 (1995-06-01), S. 151–171, ISBN: 0167-9260" beschreibt mehrere
Speicherarchitekturen zum Überwinden
von Nachteilen der Schaltungsdichte von inhaltsadressierbaren Speichern
(CAMs).
-
Es
ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren und eine
Vorrichtung zum Erleichtern einer linearen Hochgeschwindigkeitsdurchsuchung
einer Informationstabelle durch eine Mehrzahl von Suchagenten zur
Verfügung
zu stellen, die jeweils die Inhalte von vielen Einträgen der
Tabelle unter Verwendung von verschiedenen Suchargumenten durchsuchen
sollen.
-
Es
ist auch eine Aufgabe der vorliegenden Erfindung, ein hochleistungsfähiges und
kostengünstiges
Verfahren sowie eine solche Vorrichtung zum Erleichtern einer linearen
Hochgeschwindigkeitsdurchsuchung einer Tabelle durch eine Mehrzahl
von Suchagenten zur Verfügung
zu stellen.
-
Es
ist eine weitere Aufgabe der vorliegenden Erfindung, ein Verfahren
und eine Vorrichtung zum Erleichtern einer linearen Hochgeschwindigkeitsdurchsuchung
einer Informationstabelle durch eine Mehrzahl von Agenten zur Verfügung zu
stellen, wobei die Anzahl von Suchagenten leicht skalierbar ist, ohne
dabei Suchleistung zu opfern.
-
Diese
Aufgaben werden durch ein Tabellensuchverfahren gemäß den Angaben
in Patentanspruch 1 und ein Tabellensuchsystem gemäß den Angaben
in Patentanspruch 10 gelöst.
-
Vorteilhafte
Ausführungsformen
der Erfindung sind in den Unteransprüchen definiert.
-
Bei
einer Ausführungsform
ist die vorliegende Erfindung auf ein Tabellensuchverfahren gerichtet.
Bei dem Verfahren wird mindestens eine Speichereinheit vorgesehen,
die eine Informationstabelle mit einer Mehrzahl von Dateneinträgen aufweist,
und es wird eine Mehrzahl von Suchagenten vorgesehen, wobei jeder
Agent kommunikationsmäßig mit
der Speichereinheit gekoppelt ist. Jeder der Suchagenten empfängt einen
zugeordneten Suchwert und empfängt
auch einen Tabelleneintrag von der Mehrzahl von Dateneinträgen. Die
Agenten verarbeiten den Tabelleneintrag, um zu bestimmen, ob ein
Abgleich zwischen dem zugeordneten Suchwert und dem Tabelleneintrag
auftritt.
-
Darüber hinaus
kann das Tabellensuchverfahren angewendet werden, wenn die Speichereinheit
eine Mehrzahl von Tabellen aufweist und die Agenten sowohl den Tabelleneintrag
als auch eine Tabellenadresse empfangen, die einer ausgewählten Tabelle
der Mehrzahl von Tabellen zugeordnet ist. Die Abgleichbestimmung
kann als ein zugeordnetes bestes Abgleichen einer Mehrzahl von Tabelleneinträgen gemäß einem
Longest-Prefix-Match-Suchvorgang oder einem Policy-Match-Suchvorgang
bewerkstelligt werden.
-
Das
Tabellensuchverfahren stellt auch eine Controllereinheit zur Verfügung, welche
die Speichereinheit steuert und eine Reihe von Speicheradressenwerten
an die Speichereinheit durch die Controllereinheit zur Verfügung stellt.
In diesem Fall basieren die von jedem der Agenten empfangenen Tabelleneinträge auf den
Speicherad ressenwerten. Zusätzlich
ist jeder der Agenten kommunikationsmäßig mit der Controllereinheit
gekoppelt, und jeder der Agenten liefert ein Suche-Freigabesignal
an die Controllereinheit im Ansprechen auf den Empfang des zugeordneten
Suchwertes. Somit liefert die Controllereinheit nicht die Reihe
von Speicheradressenwerten, bis ein Suche-Freigabesignal von mindestens
einem der Agenten empfangen wird.
-
Bei
einer Ausführungsform
ist die vorliegende Erfindung auf ein Tabellensuchverfahren gerichtet.
Bei dem Verfahren wird mindestens eine Speichereinheit mit einer
Informationstabelle vorgesehen, die eine Mehrzahl von Dateneinträgen und
eine Mehrzahl von Suchagenten aufweist, wobei jeder Agent kommunikationsmäßig mit
der Speichereinheit gekoppelt ist. Ein Tabelleneintrag von der Mehrzahl von
Dateneinträgen
wird durch die mindestens eine Speichereinheit an jeden der Agenten
ausgesendet ("broadcast"), wobei jeder der
Suchagenten bestimmt, ob ein Abgleich zwischen dem zugeordneten Suchwert
und dem Tabelleneintrag auftritt.
-
Die
vorliegende Erfindung ist auch auf ein Tabellensuchsystem gerichtet,
welches aufweist: eine Speichereinheit zum Speichern einer Informationstabelle,
welche eine Mehrzahl von Dateneinträgen beinhaltet, die jeweils
Dateninhalte aufweisen; eine Mehrzahl von Suchagenten, die jeweils
kommunikationsmäßig mit
der Speichereinheit gekoppelt sind und einen Port zum Empfangen
eines zugeordneten Suchargumentwertes aufweisen; und eine Speicher-Controllereinheit,
die eine Oberflächenschnittstelle
zwischen der Speichereinheit und jedem der Agenten zur Verfügung stellt.
Die Controllereinheit ist zum Steuern der Speichereinheit operativ,
um während
eines jeden von einer Mehrzahl von Operationszyklen die Inhalte
eines aktuellen der Tabelleneinträge an jeden der Agenten zu
liefern. Jeder der Suchagenten ist operativ, um einen zugeordneten, am
besten übereinstimmenden
der Dateneinträge basierend
auf Vergleichen zwischen dem zugeordneten Argumentwert und den Inhalten
der von der Speichereinheit gelieferten Dateneinträge zu bestimmen.
-
Bei
einer Ausführungsform
der vorliegenden Erfindung ist jeder der Suchagenten operativ, um
den zugeordneten, am besten übereinstimmenden
der Dateneinträge
gemäß einem
Longest-Prefix-Match-Suchvorgang zu bestimmen. Bei einer anderen
Ausführungsform
der vorliegenden Erfindung ist jeder der Suchagenten operativ, um
den zugeordneten, am besten übereinstimmenden
der Dateneinträge
gemäß einem
Policy-Match-Suchvorgang zu bestimmen.
-
Die
Controllereinheit steuert die Speichereinheit, indem sie eine Reihe
von Speicheradressenwerten an die Speichereinheit liefert. Die Speichereinheit
spricht auf die Speicheradressenwerte an und ist operativ, um die
Inhalte eines der Tabelleneinträge während jedes
der Zyklen an jeden der Agenten zu liefern.
-
Ein
wichtiger Vorteil des linearen Aussendesuche ("broadcast linear search")-Verfahrens und der entsprechenden Vorrichtung
der vorliegenden Erfindung besteht darin, dass es das Problem des
Leistungsflaschenhalses im Zusammenhang mit der Tabellensuche löst, unter
Verwendung von Schiebesuchmethoden, wobei eine Mehrzahl von Paketen gleichzeitig
durchsucht und weiter geleitet werden kann. Gemäß Schiebesuchmethoden bleibt
die gesamte Suchzeit konstant, wenn die Anzahl von Suchagenten zunimmt.
Dieses Verfahren ist ideal, wenn mehrere Agenten während einer
gegebenen Zeitperiode ein gleiches Feld durchsuchen müssen. Beispielsweise
muss jeder Agent jeden der Tabelleneinträge durchsuchen, um einen besten
Abgleich zu bestimmen, wenn die Priorität des besten Abgleichs nicht
in der Reihenfolge ist.
-
Diese
und weitere Aufgaben, Merkmale und Vorteile der Erfindung ergeben
sich aus der nachfolgenden Beschreibung der bevorzugten Ausführungsform
in Verbindung mit der beigefügten
Zeichnung.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
1 ist
ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung
eines herkömmlichen
Tabellensuchsystems mit einer Arbitrationseinheit zum Auflösen von
Anforderungen von einer Mehrzahl von Suchagenten für den Zugriff
auf eine Informationstabelle gemäß einem
Suchverfahren des Standes der Technik vom Pull-Typ.
-
2A ist
ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung
eines linearen Aussendesuchsystems gemäß der vorliegenden Erfindung,
wobei das System eine Controllereinheit aufweist, die eine zentralisierte
Schnittstelle zwischen einer Informationstabelle und einer Mehrzahl von
Suchagenten zur Verfügung
stellt, und die Steuereinheit operativ ist, um die Inhalte von Tabelleneinträge gleichzeitig
an alle der Agenten zu schieben.
-
2B ist
ein Tabellendiagramm, das allgemein eine beispielhafte Informationstabelle
veranschaulicht, die unter Verwendung des linearen Aussendesuchsystems
von 2A durchsucht werden kann.
-
2C ist
ein verallgemeinertes Schaltungsblockdiagramm, das Komponenten eines
der Suchagenten von 2A veranschaulicht, wobei der Agent
operativ ist, um einen besten Abgleich zu bestimmen.
-
3 ist
ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung
einer Datenweiterleitungsvorrichtung, die ein lineares Aussendesuchsystem
gemäß der vorliegenden
Erfindung aufweist.
-
4 ist
ein Tabellendiagramm, das allgemein eine Longest-Prefix-Match-Tabelle (LPM-Tabelle)
mit Informationen veranschaulicht, welche durch das lineare Aussendesuchsystem
der Datenweiterleitungsvorrichtung von 3 durchsucht
wird.
-
5 ist
ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung
von Komponenten eines von einer Mehrzahl von Portagenten des linearen
Aussendesuchsystems von 3.
-
6 ist
ein Tabellendiagramm, das allgemein eine Policy-Matching-Tabelle
(PM-Tabelle) von Informationen veranschaulicht, die durch das lineare Aussendesuchsystem
der Datenweiterleitungsvorrichtung von 3 gemäß einer
alternativen Ausführungsform
der vorliegenden Erfindung durchsucht wird.
-
7 ist
ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung
eines linearen Aussendesuchsystems gemäß einer alternativen Ausführungsform
der Erfindung.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
2A zeigt
ein verallgemeinertes Schaltungsblockdiagramm, das ein lineares
Aussendesuchsystem bei 50 gemäß der vorliegenden Erfindung
veranschaulicht. Das System 50 weist auf eine Mehrzahl
von N Suchagenten 52, die mit AGENT_1, AGENT_2, ... AGENT_N
bezeichnet sind, von denen jeder einen Suchargument- Eingangsport 53 zum Empfangen
von Suchargumentwerten aufweist, einen Suche-Freigabeausgang 54 zum Liefern
eines zugeordneten von einer Mehrzahl von Suche-Freigabesignalen, die mit SEARCH_EN_1, SEARCH_EN_2,
... SEARCH_EN_N bezeichnet sind, und einen Dateneingangsport 56,
der kommunikationsmäßig mit
einem Datenbus 57 gekoppelt ist, wie weiter unten erläutert ist.
Jeder Agent weist auch einen Eingangsport 58 auf, der die
Tabellenadresse der aktuellen Daten von der Tabellenspeichereinheit empfängt. Obgleich
nur eine Tabellenspeichereinheit 60 in 2A veranschaulicht
ist, kann das System bei bestimmten Ausführungsformen mehrere Tabellenspeichereinheiten
aufweisen, oder eine Tabellenspeichereinheit kann mehrere Tabellen
aufweisen, und die Tabellenadresse ist dafür wichtig, es den Agenten zu
ermöglichen,
zwischen Tabellenspeichereinheiten oder Tabellen zu unterscheiden.
-
Das
System weist auch eine Tabellenspeichereinheit 60 zum Speichern
einer Informationstabelle auf, die einen Datenausgangsport 62 aufweist, um
Tabelleninformationen an den Port 56 eines jeden der Suchagenten 52 über den
Datenbus 57 zu liefern, und einen Adressensteuersignal-Eingangsport 64 zum
Empfangen eines Adressensteuersignals, um die Tabellenspeichereinheit
anzuweisen, auf bestimmte Tabelleneinträge an bestimmten Speicheradressen
zuzugreifen, und die Dateninhalte der Einträge ihrem Datenausgangsport 62 zur
Verfügung
zu stellen. Eine Tabellensteuereinheit 68 ist ebenfalls Teil
des Systems und weist einen Adressensteuersignal-Ausgangsport 70 auf,
um das Adressensteuersignal an den Port 64 der Tabellenspeichereinheit
zu liefern, und weist auch eine Mehrzahl von N Suche-Freigabeeingänge 72 zum
Empfangen von zugeordneten der Suche-Freigabesignale von zugeordneten
der Suchagenten 52 auf. Die Tabellensteuereinheit 68 weist
auch einen Port 74 auf, der die Tabellenadresse der aktuellen
Daten von der angegebenen Tabelle liefert, von der die aktuelle
Daten kommen. Bei einer Ausführungsform
ist die Speichereinheit 60 eine SRAM(Static Random Access
Memory)-Vorrichtung, und jeder von einer Mehrzahl von Tabelleneinträgen ist
an einer zugeordneten Adresse der SRAM-Vorrichtung gespeichert.
-
2B zeigt
ein Tabellendiagramm, das allgemein eine beispielhafte Informationstabelle
bei 80 veranschaulicht, die unter Verwendung des linearen Aussendesuchsystems 50 (2A)
durchsucht werden kann. Die Tabelle 80 weist eine Mehrzahl
von Tabelleneinträgen 82 auf,
die jeweils ein zugeordnetes Suchargumentfeld 84 und mindestens
ein zugeordnetes Informationsfeld 86 aufweisen. Die Tabelle 80 ist in
der Tabellenspeichereinheit 60 (2A) gespeichert.
Bei der Ausführungsform
der vorliegenden Erfindung, bei der die Tabellenspeichereinheit 60 (2A)
eine SRAM-Vorrichtung ist, kann jeweils nur auf einen Tabelleneintrag 82 an
der Speichereinheit zugegriffen werden.
-
Unter
erneuter Bezugnahme auf 2A muss
jeder der Suchagenten 52, der zugeordnete Suchargumentwerte
an seinem Port 53 empfängt, eine
lineare Durchsuchung der Inhalte der Tabelleneinträge 82 (2B)
durchführen,
um Tabelleneinträge
zu finden, die mit zugeordneten Suchargumentwerten übereinstimmen,
um einen Abgleich zu bestimmen. Wie ferner im Nachfolgenden erläutert wird, weist
jeder der Agenten eine Logik zum Vergleichen der Inhalte der Tabelleneinträge 82 (2B)
mit Suchargumentwerten auf. Gemäß der linearen
Suche muss jeder der Agenten mindestens eine Mehrzahl von Tabelleneinträgen durchsuchen,
bevor er einen Abgleich bestimmt. Bei einer Ausführungsform muss jeder der Agenten 52 alle
der Tabelleneinträge 82 (2B)
durchsuchen und einen besten Abgleich für jeden zugeordneten Suchargumentwert
durch Vergleichen des zugeordneten Suchargumentwertes mit den Inhalten
von einem oder beiden der Inhalte des Suchargumentfeldes 84 (2B)
und des Tabelleninformationsfeldes (bzw. der Tabelleninformationsfelder) 86 (2B)
bestimmen. Die Priorität
des Abgleichs kann auch durch die Adresse der Tabelle beschrieben
werden, und diese kann dazu verwendet werden, die Bestimmung des
Abgleichs durchzuführen.
Obgleich die vorliegende Erfindung nicht auf die Suche nach einem
besten Abgleich beschränkt ist,
sind einige wenige Beispiele für
Anwendungen des linearen Aussendesuchsystems 50 für eine lineare
Suchanwendung für
den besten Abgleich im Nachfolgenden beschrieben.
-
Gemäß der vorliegenden
Erfindung stellt die Tabellen-Controllereinheit 68 eine
zentralisierte Schnittstelle zwischen der Tabellenspeichereinheit 60 und
jedem der Suchagenten 52 zur Verfügung. Die Controllereinheit 68 ist
operativ, um die Inhalte der Tabelleneinträge 82 (2B)
jeweils einzeln an den Dateneingangsport 56 von jedem der
Suchagenten gleichzeitig über
den Datenbus 57 zu schieben. Anders als Tabellensuchsysteme
des Standes der Technik, die gemäß einem
Suchverfahren vom Pull-Typ arbeiten, ist es nicht erforderlich,
dass die Agenten 52 einen Zugriff auf eine bestimmte Stelle der
Tabellenspeichereinheit 60 jeweils einzeln initiieren,
weshalb keine Arbitrationslogik erforderlich ist, um Anforderungen
von Agenten 52 für
einen Zugriff auf die Speichereinheit aufzulösen. Bei der vorliegenden Erfindung
werden die Inhalte der Tabelleneinträge jeweils einzeln an jeden
der Agenten gleich zeitig "geschoben", wie im Nachfolgenden
ausführlich
erläutert
wird. Daher kann jeder der Agenten 52 gleichzeitig auf
die einzelne Tabellenspeichereinheit 60 zugreifen, um eine
lineare Durchsuchung der Tabelle durchzuführen, und die Suchleistung
insgesamt wird verbessert. Auch werden die Ausführungskosten minimiert, da
nicht eine verschiedene Speichereinheit für jeden Agenten erforderlich
ist.
-
Wenn
ein gültiger
Suchargumentwert an dem Port 53 des einen der Suchagenten 52 empfangen
wird, ist der Suchagent operativ, sein zugeordnetes Suche-Freigabesignal zu
aktivieren, das an seinem Port 54 erzeugt wird. Die Tabellen-Controllereinheit 68 spricht
auf das Aktivieren von mindestens einem der N Suche-Freigabesignal
an, und ist operativ, um mit dem sequentiellen Zugreifen auf die
Tabelleneinträge 82 (2B)
der in der Tabellenspeichereinheit 60 gespeicherten Tabelle
zu beginnen, indem sie sequentiell Speicheradressenwerte an den
Port 64 der Speichereinheit über das am Port 70 des
Controllers erzeugte Adressensteuersignal überträgt. Im Ansprechen auf das Adressensteuersignal
schiebt die Tabellenspeichereinheit die Sequenz der Tabelleneinträge 82 (2B),
welche die Inhalte der Tabelleneinträge enthalten, an den Port 56 eines
jeden der Agenten 52 über
den Datenbus 57. Bei einer Ausführungsform der vorliegenden
Erfindung schiebt die Tabellenspeichereinheit 60, unter
der Steuerung der Tabellensteuereinheit 68, einen der Tabelleneinträge 82 (2B)
bei jedem Zyklus eines Taktes (nicht gezeigt) an jeden der Agenten 52.
Für Anwendungen, bei
denen jeder der Agenten 52 dazu ausgelegt ist, einen Suchalgorithmus
vom besten Abgleichtyp durchzuführen,
müssen
die tatsächlichen
Inhalte eines jeden der Tabelleneinträge 82 (2B)
an jeden der Agenten 52 geliefert werden, weil die Abgleichspriorität der Einträge durch
das Lesen zumindest von ausgewählten
Abschnitten der Inhalte der Einträge oder der Adresse des Eintrags
in dem Speicher bestimmt werden muss. Dies trifft insbesondere auf Suchalgorithmen
zu, bei denen die Tabelleneinträge nicht
in irgendeiner bestimmten Reihenfolge sortiert werden.
-
Es
wird angemerkt, dass, wenn einer der Agenten 52 sein zugeordnetes
Suche-Freigabesignal aktiviert, der Tabellencontroller 68 bereits
im Begriff sein kann, die Tabelleneinträge sequentiell zu senden. Daher
kann ein Portagent anfänglich
die Inhalte eines anderen Eintrags als des Eintrags an der Spitze
der Liste empfangen, d.h. eines anderen Eintrags als desjenigen
Eintrags, der an der ersten Speicheradresse gespeichert ist, auf
die sequentiell durch den Controller 68 zugegriffen wird.
Wenn jeder der Agenten dazu ausgelegt ist, einen Suchalgorithmus vom
besten Abgleichtyp durchzuführen,
wobei die Inhalte eines jeden einer vorgegebenen Anzahl von Tabelleneinträge 82 (2B)
durch jeden der Agenten verarbeitet werden muss, bevor ein bester
Abgleich erreicht wird, muss daher jeder der Agenten Einrichtungen
zum Zählen
der Anzahl von Tabelleneinträgen
aufweisen, die von dem Agenten verarbeitet werden, da der Tabellencontroller 68 fortfährt, Einträge zu senden,
bis keines der an seinen Ports 72 empfangenen Suche-Freigabesignale
aktiviert ist.
-
Obgleich 2A eine
einzelne Tabellenspeichereinheit 60 zeigt, ist die Erfindung
auch dann anwendbar, wenn mehrere Tabellenspeichereinheiten verwendet
werden. Um die Anzahl von Einträgen
für einige
Anwendungen zu erhöhen,
können
mehrere Tabellen den Inhalt zur gleichen Zeit aussenden. Somit hätte jede
zusätzliche
Tabellenspeichereinheit auch Verbindungen mit den Agenten, wie in 2A für die Tabellenspeichereinheit 60 und
die Agenten 52 gezeigt ist. Um beispielsweise 128 Regeln
in 64 Taktzyklen zu durchsuchen, muss jeder Agent die Tabelleneinträge von zwei
Tabellen zur gleichen Zeit empfangen, und die Gesamtanzahl von Regeln
ist linear proportional zu der Anzahl von 64 Eintragtabellen.
-
2C zeigt
ein schematisches Schaltungsblockdiagramm zur Veranschaulichung
von Komponenten bei 90 von einem der Suchagenten 52 (2A),
die für
einen linearen Suchalgorithmus vom besten Abgleichtyp ausgelegt
sind. Jeder der Suchagenten 52 weist auf eine Vergleichslogikeinheit 92 mit
einem Eingangsport, der zum Empfangen von Suchargumentwerten mit
dem Port 53 des Agent verbunden ist, und einen Ausgangsport,
der mit dem Port 54 des Agenten verbunden ist, um das zugeordnete
Suche-Freigabesignal zur Verfügung
zu stellen. Jeder Suchagent weist auch einen Datenport auf, der mit
dem Port 56 des Agenten verbunden ist, um Tabellendaten
zu empfangen, welche die Inhalte der Tabelleneinträge 82 (2B)
beinhalten, die sequentiell von der Tabellenspeichereinheit durch
den Tabellencontroller ausgesendet werden; eine Inhaltsregistereinheit 94,
die kommunikationsmäßig mit
der Vergleichslogikeinheit 92 gekoppelt ist, wie durch
eine Leitung 96 veranschaulicht ist; und eine Abgleichqualitätsregistereinheit 98,
die kommunikationsmäßig mit
der Vergleichslogikeinheit 92 gekoppelt ist, wie ebenfalls
durch die Leitung 96 veranschaulicht ist.
-
Gemäß der vorliegenden
Erfindung kann die Vergleichslogikeinheit 92 dazu ausgelegt
sein, jeden aktuelle Suchargumentwert mit jedem der Tabelleneinträge 82 (2B)
gemäß einer
linearen Suchmethode zu vergleichen, die auf eine spezifische Anwendung
zugeschnitten ist. Für
jeden aktuellen der Tabelleneinträge 82 (2B),
die sequentiell über den
Datenport 56 empfangen werden, ist die Vergleichslogikeinheit 92 operativ,
um die folgenden Schritte durchzuführen: Vergleichen des aktuellen Suchargumentwertes
mit einem ausgewählten
Abschnitt der Dateninhalte des aktuellen Tabelleneintrags; Bestimmen,
ob ein Abgleich zwischen dem aktuellen Suchargumentwert und dem
ausgewählten Abschnitt
der Dateninhalte des aktuellen Tabelleneintrags vorliegt, basierend
auf Kriterien, die auf eine spezifische Anwendung zugeschnitten
sind; und falls ein Abgleich für
den aktuellen Tabelleneintrag bestimmt wird, Bestimmen eines dem übereinstimmenden
Tabelleneintrag zugeordneten Abgleichqualitätswertes, wobei der Abgleichqualitätswert die
Qualität des
Abgleichs zwischen dem aktuellen Suchargumentwert und dem ausgewählten Abschnitt
der Dateninhalte des aktuellen Eintrags angibt.
-
Die
Inhaltsregistereinheit 94 stellt ein vorübergehendes
Speichern der Inhalte der gegenwärtig ausgewählten, übereinstimmenden
der Tabelleneinträge
zur Verfügung,
die gegenwärtig
von der Vergleichslogikeinheit 92 als ein möglicher
bester Abgleich ausgewählt
wurden. Die Abgleichqualitätsregistereinheit 98 stellt
ein vorübergehendes
Speichern von Abgleichqualitätswerten
zur Verfügung,
die gegenwärtig
ausgewählten, übereinstimmenden
Tabelleneinträgen
zugeordnet wurden. Gemäß der vorliegenden
Erfindung sind die Regeln zum Bestimmen der Abgleichqualitätswert anwendungsspezifisch. Beispiele
für bestimmte
Ausführungsformen
sind im Nachfolgenden ausführlich
beschrieben. Bei einer Ausführungsform
der vorliegenden Erfindung wird der Abgleichqualitätswert,
der jedem übereinstimmenden
Tabelleneintrag zugeordnet ist, durch Lesen eines bestimmten Feldes
des übereinstimmenden Tabelleneintrags
bestimmt.
-
Im
Betrieb der Suchagenteinheit 52 werden die Inhalte der
Temporärspeicherregister 94 und 98 durch
die Vergleichslogikeinheit auf vorgegebene Werte initialisiert.
Bei jedem Zyklus, in dem ein aktueller der Tabelleneinträge 82 (2B)
empfangen wird, führt
die Vergleichslogikeinheit 92 im Allgemeinen die folgenden
Schritte aus: Vergleichen eines ausgewählten Abschnitts der Dateninhalte
des aktuellen Tabelleneintrags mit dem Suchargumentwert, um zu bestimmen,
ob ein aktueller Abgleich vorliegt; falls ein aktueller Abgleich
vorliegt, Bestimmen eines aktuellen Abgleichqualitätswertes,
der dem aktuellen Tabelleneintrag zugeordnet ist, wobei der Abgleichqualitätswert die
Qualität
des Abgleichs zwischen dem ausgewählten Abschnitt der Dateninhalte
des aktuellen Tabelleneintrages und dem Suchargument wert angibt;
Vergleichen des aktuellen Abgleichqualitätswertes mit den Inhalten des
Abgleichqualitätsregisters 98,
um zu bestimmen, ob der aktuelle übereinstimmende Tabelleneintrag
einen Abgleich liefert, der wünschenswerter
ist als ein übereinstimmender Tabelleneintrag,
der dem im dem Register 98 gespeicherten Abgleichqualitätswert zugeordnet
ist; und falls der aktuelle übereinstimmende
Tabelleneintrag einen wünschenswerteren
Abgleich zur Verfügung stellt
als der Eintrag, der dem in dem Register 98 gespeicherten
Abgleichqualitätswert
zugeordnet ist, Ersetzen der Inhalte des Abgleichqualitätsregisters 98 mit
dem aktuellen Abgleichqualitätswert,
und Ersetzen der Inhalte der Registereinheit 94 mit den
Dateninhalten des aktuellen übereinstimmenden
Tabelleneintrags. Dieser Zyklus wird für eine vorgegebene Anzahl von
Tabelleneinträgen 82 (2B)
wiederholt, und nach einer Anzahl von Taktzyklen, die gleich der
vorgegebenen Anzahl von Einträgen
ist, speichert die Inhaltsregistereinheit 94 die Inhalte
eines übereinstimmenden
Tabelleneintrags, der den höchsten
Qualitätsbegleichwert
besitzt, und somit den besten verfügbaren Abgleich.
-
Bei
verschiedenen Ausführungsformen
der vorliegenden Erfindung kann das lineare Aussendesuchsystem 50 (2A)
bei jedem von einer Vielfalt von elektronischen Systemen angewendet
werden, um die Tabellensuche durch eine Mehrzahl von Agenten zu
vereinfachen, die jeweils die Inhalte von vielen Einträgen der
Tabelle unter Verwendung von verschiedenen Suchargumenten durchsuchen
sollen. Bei einer Ausführungsform
der vorliegenden Erfindung wird das lineare Aussendesuchsystem der vorliegenden
Erfindung in einer Datenweiterleitungsvorrichtung verwendet, wobei
die in der Speichereinheit 60 (2A) gespeicherte
Tabelle Datenweiterleitungsinformationen zum Bestimmen von optimalen Weiterleitungsrouten
für Abschnitte
von Daten (z.B. Datenpaketen) aufweist, und wobei jeder der Suchagenten 52 (2A)
operativ ist, um die optimalen Weiterleitungsrouten für jeden
der Abschnitte von Daten zu bestimmen. Beispiele für Datenweiterleitungsvorrichtungen,
bei denen das lineare Aussendesuchsystem der vorliegenden Erfindung
angewendet werden kann, umfassen Netzwerkschaltvorrichtungen, Netzwerkroutervorrichtungen,
Bridges, Gateways, und jegliche andere Datenweiterleitungsvorrichtung.
-
3 zeigt
ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung
einer Datenweiterleitungsvorrichtung bei 100, die ein lineares
Aussendesuchsystem gemäß der vorliegenden Erfindung
aufweist. Bei der dargestellten Ausführungsform ist die Datenweiterleitungsvorrichtung 100 eine
Routervorrichtung, die in einem Internetprotokoll(IP)-Netzwerk zum
Routen von IP-Paketen basierend auf Netzwerkschicht(Schicht 3)-Informationen verwendet
wird. Bei einer alternativen Ausführungsform kann die Datenweiterleitungsvorrichtung 100 eine
Schaltvorrichtung sein, die in einem Netzwerk zum Schalten von Paketen
basierend auf Datenlinkschicht(Schicht 2)-Informationen (z.B. MAC-Adresseninformationen)
verwendet wird.
-
Die
Datenweiterleitungsvorrichtung 100 weist: eine Mehrzahl
von N Paketweiterleitungsmodulen 102 auf, die als MODULE_0,
MODULE_1, ... MODULE_N bezeichnet sind, und die jeweils aufweisen:
einen Paketempfangsport 104 zum Empfangen von IP-Datenpaketen über einen
zugeordneten Quellport der Vorrichtung 100, einen verarbeitete-Pakete-Ausgangsport 106 zum
Liefern von Datenpaketen, die gemäß der linearen Aussendesuche
der vorliegenden Verfahren verarbeitet wurden, wie weiter unten
erläutert
ist, einen Suchetreffer-Eingangsport 108 zum Empfangen
eines zugeordneten von einer Mehrzahl von N Suchetreffersignalen,
die mit HIT_0, HIT_1, ... HIT_N bezeichnet sind, wie weiter unten
erläutert
ist, einen Suche-erledigt-Eingangsport 110 zum Empfangen
eines zugeordneten einer Mehrzahl von N Sucheerledigt-Signalen,
die mit DN_0, DN_1, ... DN_N bezeichnet sind, wie weiter unten erläutert ist,
einen Paket-fertig-Ausgangsport 112 zum Liefern eines zugeordneten
von einer Mehrzahl von N Paket-fertig-Signalen, die mit RDY_0, RDY_1,
... RDY_N bezeichnet sind, wie weiter unten erläutert ist, und einen Datenport 114 zum
Liefern von geparsten Abschnitten der empfangenen Datenpakete zur Verwendung
als Suchargumentwert zum Durchsuchen einer Tabelle, und auch zum
Empfangen von Tabellensuchergebnissen, wie weiter unten erläutert ist;
einen gemeinsam genutzten Paketpuffer 116 mit einem Datenport,
der kommunikationsmäßig mit
dem verarbeitete-Pakete-Ausgangsport 116 eines jeden der
Paketweiterleitungsmodule über
einen Bus 119 gekoppelt ist; und eine Mehrzahl von N Portagenten 120,
die mit AGENT_0, AGENT_1, ... AGENT_N bezeichnet sind, die jeweils
einem der Paketweiterleitungsmodul 102 zugeordnet sind
und einen Suchetreffer-Ausgangsport 122 zum Liefern eines
zugeordneten der Suchetreffersignal an den Port 108 des
zugeordneten Paketweiterleitungsmoduls 102 aufweisen, einen
Suche-erledigt-Ausgangsport 124 zum Liefern eines zugeordneten
der Suche-erledigt-Signale an den Port 110 des zugeordneten
Paketweiterleitungsmoduls, einen Paket-fertig-Eingangsport 126 zum
Empfangen eines zugeordneten der fertig-Signale von dem Port 112 des
zugeordneten Paketweiterleitungsmoduls, einen Datenport 128,
der kommunikationsmäßig mit
dem Datenport 114 des zugeordneten Paketweiterleitungsmoduls
gekoppelt ist, einen Suche-Freigabe-Ausgangsport 130 zum
Liefern eines zugeordneten von einer Mehr zahl von N Suche-Freigabesignalen,
die mit SEARCH_EN_0, SEARCH_EN_1, ... SEARCH_EN_N bezeichnet sind,
wie weiter unten erläutert
ist, und einen Tabellendaten-Eingangsport 132, der unten
weiter erläutert
wird. Jeder Agent besitzt auch einen Eingangsport 129,
der die Tabellenadresse der aktuellen Daten von der Tabellenspeichereinheit
empfängt.
Bei einer Ausführungsform
der vorliegenden Erfindung weist die Vorrichtung 100 N
= 22 Portagenten zum Empfangen von Datenpaketen von zwölf 1 GBit-Ports
(nicht gezeigt) der Vorrichtung und einem 10 GBit-Port (nicht gezeigt)
der Vorrichtung auf.
-
Die
Vorrichtung 100 weist ferner auf eine Speichereinheit 134 zum
Speichern einer Datenweiterleitungs-Informationstabelle mit einer
Mehrzahl von Einträgen
und einem Datenausgangsport 136 zum Senden der Dateninhalte
eines jeden der Einträge
an den Dateneingangsport 132 eines jeden der Portagenten 120,
und einen Speicheradressensteuerungs-Eingangsport 138 zum
Empfangen eines Speicheradressensteuersignals zum Zugreifen auf
bestimmte der Einträge;
und eine Tabellen-Controllereinheit 140 mit einer Mehrzahl
von N Suche-Freigabeeingängen 142 jeweils
zum Empfangen eines zugeordneten der Suche-Freigabesignale von dem
Port 130 eines zugeordneten der Portagenten 120,
einen Adressensteuersignal-Ausgangsport 144 zum Liefern
des Adressensteuersignals an den Port 138 der Tabellenspeichereinheit 134.
Die Tabellen-Controllereinheit 140 weist auch einen Port 149 auf,
der die Tabellenadresse der aktuellen Daten von der spezifischen
Tabelle liefert, von der die aktuellen Daten stammen. Bei einer
Ausführungsform
ist die Tabellenspeichereinheit 134 eine SRAM-Vorrichtung,
und jeder der Tabelleneinträge
wird an einer zugeordneten Speicheradresse gespeichert.
-
Jedes
der Paketweiterleitungsmodule 102 weist auf: einen First-In-First-Out
(FIFO)-Puffer (nicht gezeigt) zum vorübergehenden Speichern der über den
Port 104 empfangenen IP-Pakete, während Suchoperationen durchgeführt werden,
um geeignete Routing-Informationen zu bestimmen, die dem empfangenen
Paket zugeordnet sind, wie weiter unten erläutert ist; eine Parserlogik
(nicht gezeigt), die zum Parsen der empfangenen Pakete operativ
ist, und eine Internetprotokoll(IP)-Bestimmungsadresse aus den Paketen
extrahiert zur Verwendung als Suchargumente an die in der Speichereinheit 134 gespeicherten
Tabelle, um die geeigneten Weiterleitungsinformationen zu bestimmen,
die dem Paket zugeordnet sind; und eine Ersetzungslogik zum Ersetzen
von vorgegebenen Feldern der empfangenen Pakete mit Informationen,
die aus der in der Speichereinheit 134 gespeicherten Tabelle
ausgelesen werden, wie im Folgenden ferner erläutert ist. Jedes Paketweiterleitungsmodul 102 ist
operativ, um eine IP-Adresse zu liefern, die von den empfangenen
Datenpaketen an den Datenport 128 seines zugeordneten Portagenten 120 geparst
wird.
-
Wenn
ein gültiges
Datenpaket von einem der Paketweiterleitungsmodule 102 empfangen
wird, ist das Modul operativ, um sein zugeordnetes Paket-fertig-Signal
zu aktivieren, das an seinem Port 112 erzeugt wird. Im
Wesentlichen zur gleichen Zeit liefert das Paketweiterleitungsmodul 102 eine
IP-Adresse, die ein 32-Bitwert ist, von seinem Datenport 114 an den
Port 128 seines zugeordneten Portagenten 120. Jeder
der Portagenten 120 spricht auf die Aktivierung des zugeordneten
Paket-fertig-Signals an, das an seinem Port 126 empfangen
wird, und ist operativ, um sein zugeordnetes Suche-Freigabesignal
zu aktivieren, das an seinem Port 130 zur Verfügung gestellt wird.
Die Tabellen-Controllereinheit 140 spricht auf das Aktivieren
von mindestens einem der N Suche-Freigabesignale an und ist operativ,
um mit dem sequentiellen Zugreifen auf Tabelleneinträge der in der
Speichereinheit 134 gespeicherten Tabelle zu beginnen,
indem sie über
das an dem Port 144 erzeugte Adressensteuersignal sequentiell
Speicheradressenwerte an den Port 138 der Speichereinheit überträgt. Im Ansprechen
auf das Adressensteuersignal schiebt die Tabellenspeichereinheit 134 die
Sequenz der Tabelleneinträge,
jeweils einzeln, einschließlich der
Inhalte der Tabelleneinträge, über den
Datenbus 133 an den Port 132 eines jeden der Agenten 120. Bei
einer Ausführungsform
der vorliegenden Erfindung schiebt die Tabellenspeichereinheit 134 unter Steuerung
durch die Tabellensteuereinheit 140 bei jedem Zyklus eines
Taktes (nicht gezeigt) einen der Tabelleneinträge an jeden der Agenten.
-
4 zeigt
ein Tabellendiagramm, das allgemein eine Longest-Prefix-Match-Tabelle (LPM) der Informationen
bei 180 veranschaulicht, die gemäß einer Ausführungsform
der vorliegenden Erfindung in der Tabellenspeichereinheit 134 (3)
gespeichert sind. Bei verschiedenen Ausführungsformen der vorliegenden
Erfindung kann die in der Speichereinheit 134 gespeicherte
Informationstabelle verschiedene Typen von Tabelleninformationen
beinhalten mit Dateneinträgen,
die für
verschiedene Typen von Tabellensuchalgorithmen geeignet sind. Bei
einer alternativen Ausführungsform,
die im Nachfolgenden weiter erläutert
ist, ist die Tabelle eine Policy-Match(PM)-Informationstabelle.
-
Die
Tabelle 180 weist auf: eine Mehrzahl von Tabelleneinträgen 182,
die jeweils einer Speicherfeldadresse zum Speichern eines zugeordneten Speicheradressenwertes
der Speichereinheit 184 zugeordnet sind; ein zugeordnetes
IP-Adressenfeld 186 zum Speichern eines zugeordneten 32 Bit-IP-Adressenwertes;
ein Maskenwertfeld 188 zum Speichern eines zugeordneten
5 Bit-Maskenwertes zur Verwendung gemäß der LPM-Suche; ein zugeordnetes
MAC-Adressenfeld 190 zum Speichern eines zugeordneten 48
Bit-MAC-Adressenwertes; ein Zielportfeld 192 zum Speichern
eines zugeordneten 5 Bit-Zielportwertes, der einen zugeordneten
Zielport der Routing-Vorrichtung 100 (3)
angibt; und ein VLAN-Identifikationsfeld (VLAN ID-Feld) 194 zum Speichern
eines zugeordneten 12 Bit-VLAN ID-Wertes. Bei der beschriebenen
Ausführungsform
weist die Tabelle 180 64 der Tabelleneinträge 182 auf,
und die Tabellen-Controllereinheit 140 (3)
liefert bei jedem Takt SRAM-Adressenwerte zwischen 6'H0 und 6'H3f. Im Ansprechen
auf jeden Adressenwert sendet die Tabellenspeichereinheit 134 (3)
102 Bits von Daten (fünf
verkettete Felder) aus. Bei einer Ausführungsform der vorliegenden
Erfindung wird das Senden angehalten, um Leistung zu sparen, wenn
die LPM-Suche (unter Verwendung eines Konfigurationsbits) deaktiviert
wird oder wenn keine Notwendigkeit besteht, auf die LPM-Tabelle
zuzugreifen (wenn kein vorliegendes Paket in einem Paketverarbeitungsagenten,
und kein vorliegender CPU-Zugriff vorhanden ist).
-
5 zeigt
bei 200 ein verallgemeinertes Schaltungsblockdiagramm zur
Veranschaulichung von Komponenten von einem der Portagenten 120 (3).
Bei der dargestellten Ausführungsform
weist der Suchagent 120 auf eine Vergleichslogikeinheit 202 mit
einem Port, der mit dem Port 122 des Agenten 120 verbunden
ist, zum Liefern des zugeordneten Suchetreffersignals, einen Port,
der mit dem Port 124 des Agenten zum Liefern des zugeordneten
Suche-erledigt-Signals verbunden ist, einen Port, der mit dem Port 126 des
Agenten zum Empfangen des zugeordneten Paket-fertig-Signals verbunden
ist, einen Port, der mit dem Port 128 des Agenten zum Empfangen
der IP-Adressenwerte verbunden ist, welche von den Datenpaketen
geparst werden, die von dem zugeordneten Weiterleitungsmodul 102 empfangen
werden (3), einen Port, der mit dem Port 130 des
Agenten zum Liefern des zugeordneten Suche-Freigabesignals verbunden
ist, einen Port, der mit dem Port 132 des Portagenten zum
Empfangen der Dateninhalte der Tabelleninformationen verbunden ist,
welche von der Tabellenspeichereinheit 134 ausgesendet
werden (3), und einen Port 204;
und eine Temporärregistereinheit 206,
die kommunikationsmäßig mit
dem Port 204 der Vergleichslogikeinheit 202 gekoppelt
ist, wie durch eine Leitung 208 veranschaulicht ist. Die
Temporärregistereinheit 206 weist
auf: ein Temporär-Maskenlängeregister 210,
das kommunikationsmäßig mit
der Vergleichslogikeinheit 202 gekoppelt ist; ein Temporär-MAC-Adressenregister 212,
das kommunikationsmäßig mit
der Vergleichslogikeinheit gekoppelt ist; ein Temporär-Portnummerregister 214,
das kommunikationsmäßig mit
der Vergleichslogikeinheit 202 gekoppelt ist; und ein Temporär-VLAN ID-Register 216,
das kommunikationsmäßig mit
der Vergleichslogikeinheit 202 gekoppelt ist.
-
Bei
einer Ausführungsform
der vorliegenden Erfindung ist die Vergleichslogikeinheit 202 operativ, um
einen LPM-Suchalgorithmus durchzuführen, der LPM-Maskier- und Vergleichsoperationen
umfasst, wobei unmaskierte Abschnitte eines jeden der empfangenen
IP-Adressenwerte, die über
den Port 128 des Portagenten empfangen werden, mit unmaskierten
Abschnitten der Inhalte des IP-Adressenfeldes 186 (4)
eines jeden der Tabelleneinträge 182 gemäß dem LPM-Algorithmus
verglichen werden. Für jeden
aktuellen der Tabelleneinträge 82 (2B),
die sequentiell über
den Datenport 132 des Portagenten empfangen werden, liest
die Vergleichslogikeinheit 202 zuerst die Inhalte des Maskenwertfeldes 188 (4)
aus, um einen Maskenwert M zu bestimmen, der dem aktuellen Eintrag
zugeordnet ist. Die Vergleichslogikeinheit 202 ist dann
operativ, um den unmaskierten Abschnitt des aktuellen IP-Adressenwertes
mit dem unmaskierten Abschnitt der Inhalte des IP-Adressenfeldes
des aktuellen Eintrages zu vergleichen, wobei die geringstwertigen
M Bits eines jeden der verglichenen Werte ausmaskiert werden.
-
Gemäß der LPM-Suche
wird ein bester verfügbarer
Abgleich für
einen bestimmten empfangenen IP-Adressenwert bestimmt durch eine
Bestimmung, welcher der Tabelleneinträge einen IP-Adressenwert in
seinem Feld 186 (4) aufweist,
der die größte Anzahl
von höchstwertigen
Bits beinhaltet, die mit zugeordneten höchstwertigen Bits des bestimmten
IP-Adressenwertes übereinstimmen.
Beispielsweise in dem Fall von 32 Bit-IP-Adressenwerten, falls die
Tabellensuche zwei übereinstimmende
Tabelleneinträge
ergibt (einen, bei dem die Inhalte des Tabelleneintrags 20 übereinstimmende
Bits aufweisen, und einen, bei dem die Inhalte des Tabelleneintrags 19 übereinstimmende
Bits aufweisen), wird der Tabelleneintrag mit der größten Anzahl
von übereinstimmenden
Bits (20 Abgleiche) gewählt.
In dem Fall einer 32 Bit-IF-Adresse ist der längste mögliche Abgleich eine Übereinstimmung
aller 32 Bits, wobei es sich um einen exakten Abgleich handelt,
während
der kürzeste mögliche Abgleich
eine Übereinstimmung von
nur einem Bit ist. Das LPM durchsucht alle Tabelleneinträge und findet
den besten verfügbaren
Abgleich.
-
Die
Temporärregistereinheit 206 stellt
ein vorübergehendes
Speichern der Inhalte der gegenwärtig
ausgewählten
der Tabelleneinträge
zur Verfügung,
die gegenwärtig
von der Vergleichslogikeinheit 202 als ein möglicher
bester Abgleich ausgewählt wurden.
Im Besonderen stellt das Maskenlängeregister 210 ein
Speichern des Maskenwertes eines vorübergehend ausgewählten der
Tabelleneinträge
zur Verfügung,
das MAC-Adressenregister 212 stellt ein Speichern des MAC-Adressenwertes
eines vorübergehend
ausgewählten
der Tabelleneinträge
zur Verfügung,
das Portnummerregister stellt ein Speichern der Portnummer von einem
vorübergehend
ausgewählten
der Tabelleneinträge
zur Verfügung,
und das VLAN ID-Register 216 stellt ein Speichern des VLAN ID-Adressenwertes
eines vorübergehend
ausgewählten
der Tabelleneinträge
zur Verfügung.
-
Im
Betrieb des Suchagenten 120 werden die Inhalte der Temporärspeicherregister 212, 214 und 216 durch
die Vergleichslogikeinheit 202 anfänglich auf Null gesetzt. Auch
jedes Bit des Temporär-Maskenlängeregisters 210 wird
von der Vergleichslogikeinheit 202 anfänglich auf hex 1 F gesetzt.
Bei einer Ausführungsform
der vorliegenden Erfindung ist das Temporär-Maskenlängeregister 210 ein
5 Bit-Register, das ein Speichern eines Maskenlänge-Dezimalwertes von 32 zur
Verfügung
stellt, was das Maskieren von bis zu 32 Bits der IF-Adressenwerte
ausmacht, die gemäß einem
Schritt des LPM-Suchalgorithmus verglichen werden. Bei dieser Ausführungsform
werden die Inhalte des Temporär-Maskenlängeregisters 210 anfänglich auf
1 F (Hexadezimal) gesetzt.
-
Für jede bestimmte
empfangene IP-Adresse, die über
den Datenport 128 des Agenten von dem zugeordneten Paketweiterleitungsmodule 102 empfangen
wird (3), führt
die Vergleichslogikeinheit 202 bei jedem Zyklus, in dem
ein aktueller der Tabelleneinträge 182 (4)
von der Tabellenspeichereinheit 134 empfangen wird (3),
die LPM-Suchoperation durch, um den aktuellen Eintrag zu verarbeiten. Für jeden
aktuellen der Tabelleneinträge
umfasst die von der Vergleichslogikeinheit 202 ausgeführte LPM-Suchoperation:
Lesen der Inhalte des Maskenwertfeldes 188 (4)
des aktuellen Tabelleneintrags, um einen aktuellen Maskenwert M
zu bestimmen, der dem aktuellen Eintrag zugeordnet ist; Vergleichen
eines unmaskierten Abschnitts des empfangenen IP-Adressenwertes
mit einem unmaskierten Ab schnitt der Inhalte des IP-Adressenfeldes 186 (4)
des aktuellen Eintrags, wobei die geringstwertigen M Bits eines
jeden der verglichenen Werte ausmaskiert werden; Bestimmen, ob ein
Abgleich vorliegt; und, falls ein Abgleich vorliegt, daraufhin Bestimmen,
ob der aktuelle Maskenwert geringer als die gespeicherten Inhalte
des Temporär-Maskenlängeregisters 210 ist;
und falls der aktuelle Maskenwert geringer als die gespeicherten
Inhalte des Temporär-Maskenlängeregisters 210 ist,
Ersetzen der Inhalte des Temporär-Maskenlängeregisters 210 mit
dem aktuellen Maskenwert, und Ersetzen der Inhalte der Temporärregister 212, 214 und 216 mit
dem MAC-Adressenwert, Zielportnummerwert, und VLAN ID-Wert des aktuellen
Tabelleneintrags.
-
Falls
die Vergleichslogikeinheit 202 bestimmt, dass ein Abgleich
zwischen dem angegebenen unmaskierten Abschnitt des empfangenen IP-Adressenwertes
und dem angegebenen unmaskierten Abschnitt der Inhalte des IP-Adressenfeldes 186 vorliegt
(4), und falls der aktuelle Maskenwert geringer
als die gespeicherten Inhalte des Temporär-Maskenlängeregisters 210 ist,
dann aktiviert die Vergleichslogikeinheit 202 das zugeordnete
Suchetreffersignal, das am Port 122 des Portagenten zur
Verfügung
gestellt wird. Sobald es aktiviert wurde, bleibt das Suchetreffersignal
aktiviert, bis alle der 64 Tabelleneinträge 182 (4)
empfangen und von der Vergleichslogikeinheit verarbeitet worden
sind. Nachdem alle der 64 Tabelleneinträge empfangen und verarbeitet
worden sind, aktiviert die Vergleichslogikeinheit das zugeordnete
Suche-erledigt-Signal, das am Port 124 des Portagenten
zur Verfügung
gestellt wird, und liefert die endgültigen gespeicherten Inhalte
der Temporärregister 212, 214 und 216 (einschließlich eines
MAC-Adressenwertes, einer Weiterleitungsportnummer, und eines VLAN
ID-Wertes des am besten übereinstimmenden
Tabelleneintrags) an das zugeordneten der Paketweiterleitungsmodule 102 (3) über den
Datenport 128 des Portagenten. Falls das zugeordnete Suchetreffersignal
zu dem Zeitpunkt, an dem das zugeordnete Suche-erledigt-Signal aktiviert
wird, nicht aktiviert ist, bestimmt das zugeordnete Paketweiterleitungsmodul 102 (3),
das diese Signale empfängt,
dass für
den aktuellen empfangenen IP-Adressenwert, d.h. für das aktuelle
Paket, kein Abgleich gefunden wurde. Wie bereits erwähnt wurde,
weist jedes der Paketweiterleitungsmodule 102 (3)
auf einen FIFO-Puffer (nicht gezeigt) zum vorübergehenden Speichern der Pakete,
die über
seinen Empfangsport 104 empfangen werden, während Suchoperationen
durchgeführt werden,
um geeignete Routing-Informationen zu bestimmen; und eine Ersetzungslogik
zum Ersetzen von Feldern der empfangenen Pakete mit Informationen,
die in dem am besten über einstimmenden
Tabelleneintrag enthalten sind. Bei der Ausführungsform, bei der die Datenweiterleitungsvorrichtung 100 (3)
eine Netzwerkschicht-Routervorrichtung ist, in der die empfangenen
Datenpakete basierend auf ihrer IP-Adresse geroutet werden, werden
die MAC-Adressenwerte und VLAN ID-Werte der Pakete ersetzt, wenn
ein übereinstimmender
Tabelleneintrag gefunden wird.
-
Unter
der Voraussetzung, dass ein Abgleich wie oben beschrieben gefunden
wurde, ist jedes der Paketweiterleitungsmodule 102 (3)
operativ, um das MAC-Adressenfeld
und das VLAN ID-Feld der empfangenen Pakete mit der MAC-Adresse
und der VLAN ID des am besten übereinstimmenden
der Tabelleneinträge 182 zu
ersetzen (4). Jedes der Paketweiterleitungsmodule 102 (3)
ist ferner operativ, um das geroutete Datenpaket, bei dem Felder
ersetzt wurden, falls ein Abgleich gefunden wurde, an den Port 118 des
gemeinsam genutzten Paketpuffers 116 über den Bus 119 zu übertragen.
-
6 zeigt
ein Tabellendiagramm, das allgemein eine Policy-Matching-Tabelle
(PM-Tabelle) von Informationen bei 240 veranschaulicht,
die in der Tabellenspeichereinheit 134 gespeichert sind
(3), gemäß einer
anderen Ausführungsform
der vorliegenden Erfindung. Die Tabelle 240 weist eine
Mehrzahl von Tabelleneinträgen 242 auf,
die jeweils umfassen: ein IP-Bestimmungsadressen(IPDA)-Feld 244 zum
Speichern eines zugeordneten 32 Bit-IP-Bestimmungsadressenwertes;
ein IP-Quelladressen(IPSA)-Feld 186 zum
Speichern eines zugeordneten 32 Bit-IP-Quelladressenwertes; ein TDS/UDS-Feld 248 zum
Speichern eines zugeordneten TDS/UDS-Wertes; ein TSS/USS-Feld 250 zum Speichern
eines zugeordneten TSS/USS-Wertes; ein Protokollfeld 252 zum
Speichern eines zugeordneten Protokollwertes; ein Type-Of-Service(TOS)-Feld 254 zum
Speichern eines zugeordneten TOS-Wertes; und mindestens ein programmierbares
Feld 256 zum Speichern von zugeordneten programmierbaren
Parametern.
-
Die
Abgleichfelder 244 bis 256 der Tabelle 240 werden
zusammen mit entsprechenden Aktionen (Paket weiter leiten, Paket
fallen lassen, VLAN ID ändern,
Priorität ändern) verwendet.
-
Ein
Beispiel für
eine PM-Regel ist: "(1)
zulassen, dass das Paket nur an das IP-Unternetz von 0ABC_XX:XX
weiter geleitet wird; (2) alle anderen Pakete sollen fallen gelassen
werden. Jedes Paket mit einer TCP-Quellportnummer von größer als 'd15 sollte DSCP zu
6'b11 0000 ändern und
an CPU senden." Um
einen Konflikt zu lösen,
der entsteht, wenn für
mehr als eine Regel ein Abgleich vorliegt, sollten die Regeln in
der PM-Tabelle Vorrang haben. Die PM-Suche ist jedoch ein Best-Match-Suchalgorithmus,
da es nötig
sein kann, dass ein Portagent jeden Eintrag der Tabelle 240 durchsucht,
bevor er einen besten verfügbaren
Abgleich findet. Die PM-Suche wird üblicherweise in Firewall-Anwendungen
allgemein für
Sicherheitszwecke angewendet. Basierend auf PM-Tabelleninformationen
kann ein Anwender der Vorrichtung 100 (3)
Aktionen (Policies) definieren, die programmierbar sind. Ein übliches
Beispiel für
eine Policy-Regel umfasst Regeln zum Fallenlassen eines jeden Paketes,
das von einer Konkurrenzfirma stammt.
-
7 veranschaulicht
ein verallgemeinertes Schaltungsblockdiagramm einer alternativen
Ausführungsform
der Erfindung. In den 2A und 3 besitzt
die Tabelleneinheit eine direkte Verbindung mit jedem der Agenten.
Je nach der Anzahl von Agenten können
die Verbindungen eine Menge Platz einnehmen. Um das hohe Ausfächern aus
dem Tabellenspeicher zu minimieren, ist es eine Alternative, die
Daten unter Verwendung einer Ringtopographie zu liefern. Der Tabellencontroller 302 liefert
eine Adresse an die Tabellenspeichereinheit 301, und der Tabelleneintrag
und die Adresse werden an einen ersten Portagenten 300 gesendet.
Daraufhin werden die Daten und die Adresse an den nächsten Portagenten 300 weiter
geleitet, und so weiter. In diesem Modus können Daten N Taktzyklen am
N-ten Port benötigen;
das Ausfächern
beträgt
jedoch nur Eins. Die Einschränkung
dieses Modus ist es, dass die Tabelleneinträge kontinuierlich ausgesendet
werden müssen.