-
Diese
Erfindung betrifft die Verarbeitung von Datenpaketen. Konkret betrifft
die Erfindung Verfahren und eine Vorrichtung zur Syntaxanalyse von
Informationen in einem Protokoll-Stack. Die Erfindung kann beispielsweise
in Telekommunikations-Switches, Routern, Netzwerk-Prozessoren und
Komponenten für
solche Vorrichtungen eingesetzt werden.
-
Moderne
Telekommunikationssysteme tauschen Daten in Paketen aus. Ein typisches
Paket hat einen Datenkopf und eine Daten-Nutzlast. Ein IP-Paket
(Internet Protocol) ist ein Beispiel eines solchen Pakets. Ein einzelnes
Paket kann eine Reihe verschiedener Protokolle haben. Es gibt zahlreiche
Umstände,
in denen die Verarbeitung von Paketen wünschenswert ist. Allgemein
umfasst die Paketverarbeitung das Abrufen von Informationen aus
einem Paket und anschließend
die Ausführung
von Aktionen mit einem Paket. Ein triviales Beispiel für die Paketverarbeitung
ist das Suchen einer Ziel-IP-Adresse in einem IP-Paket und die Verwendung
der IP-Adresse zum Ermitteln eines Ports, über den das Paket weitergeleitet
werden soll, um die Ziel-IP-Adresse zu erreichen.
-
Paketverarbeitungssysteme
müssen
typischerweise schnell genug sein, um Pakete in Echtzeit zu verarbeiten,
wenn diese an einer Vorrichtung empfangen werden. Hochgeschwindigkeits-Paketprozessoren
werden daher typischerweise in der Hardware implementiert. Ein typischer
Paketprozessor umfasst eine fest verdrahtete anwendungsspezifische
integrierte Schaltung („Application-Specific
Integrated Circuit",
ASIC) zur Ermittlung von Werten mit einem spezifischen Versatz innerhalb
der empfangenen Pakete und zur Ausführung bestimmter Aktionen auf
der Basis dieser Werte. ASICs können sehr
große
Paketraten verarbeiten, sind jedoch nicht sehr flexibel. Bei der Änderung
eines Protokolls durch Änderung
des Versatzes innerhalb eines Pakets, an dem sich bestimmte Informationen
befinden, funktioniert die ASIC nicht mehr richtig.
-
Programmierbare
Netzwerkprozessoren sind weitaus flexibler als ASICs, bieten jedoch
keine ausreichende Leistung. Einige Netzwerkprozessoren verwenden
eine Baumstruktur-Suchmethode, um zu ermitteln, welche Aktion(en)
mit einem Paket ausgeführt
werden soll(en). In einem solchen Netzwerkprozessor wird ein erstes
Bit-Feld, das normalerweise nur wenige Bits umfasst, aus dem Paket
abgerufen und als Index für
den Zugriff auf einen Speicher verwendet. Der Speicher umfasst einen
Wert, der ein Feld für
das nächste
zu verwendende Bit angibt (darüber
hinaus kann er eine auf das Paket anzuwendende Aktion angeben).
Eine Sequenz aus einem oder mehreren Speicherzugriffen ist erforderlich
zum Ermitteln einer abschließenden,
auf das Paket anzuwendenden Aktion. Die abschließende Aktion kann beispielsweise
angeben, ob das Paket gelöscht
oder an einen spezifischen Port weitergeleitet werden soll, ob es
eine bestimmte Dienstgüte
erhalten soll, etc.
-
Einige
gängige
Protokolle sind gekennzeichnet durch Protokollkopf-Felder mit einem
verstreuten Inhalt. Solche Protokolle sind, zumindest teilweise, gekennzeichnet
durch einen Parameter mit einem großen Gültigkeitsbereich, bei dem jedoch
nur wenige spezifische Parameterwerte signifikant sind. Ein Beispiel
eines solchen Protokolls ist das Internet Protokol Version 4 (IP
v4). In diesem gängigen
Protokoll ist das Paketziel durch 32-Bit-Zahlen angegeben. Gültige IP-Adressen
können
beliebige Werte aus fast 232 möglichen
Werten haben. In den meisten realen Situationen einer Paketverarbeitung
müssen
jedoch bestimmte Aktionen nur für
spezifische IP-Adressen oder Teilnetze ausgeführt werden.
-
Das
Dokument
WO 01/48975 zeigt
ein bekanntes illustratives Verfahren zum Durchsuchen eines Speichers
mit einem Kopfdaten-Feld
einer anderen Protokollebene, um ein Paket gemäß einem im Speicher gefundenen
Eintrag über
einen Switch weiterzuleiten.
-
Jedes
aus einem verarbeiteten Paket abgerufene Bit-Feld wird normalerweise
als Adresse für den
direkten Zugriff auf einen Speicher verwendet. Wenn das Bit-Feld
einen Parameterwert in einem verstreuten Protokoll-Datenkopffeld
enthält,
beispielsweise eine IP-Adresse, so ist typischerweise ein großer Speicher
erforderlich für
den Gültigkeitsbereich
der möglichen
Werte, die der Parameter in verarbeiteten Paketen haben könnte.
-
Häufig kann
ein Paket einen großen
Speicher nicht intern unterbringen, daher müssen die großen Speicher
von der Paketverarbeitungsvorrichtung aus gesehen extern sein. Dies
verlangsamt den Speicherzugriff und verringert die Anzahl der Speicherzugriffe,
die in der für
die Verarbeitung der einzelnen Pakete zulässigen Zeit verarbeitet werden
können. Dies
stellt ein Problem dar, da im Allgemeinen mehrere Speicherzugriffe
erforderlich sind, um die abschließende Aktion für ein bestimmtes
Paket zu ermitteln. Das Paket kann einen Protokoll-Stack mit Informationen
zu verschiedenen Protokollen umfassen.
-
Eine
Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines
Verfahrens für
die Paketverarbeitung, das einen hohen Durchsatz ermöglicht und
doch flexibler ist als Verfahren mit fest verdrahteten ASICs.
-
Konkret
bedeutet dies, die Erfindung bietet ein Verfahren zur Paketverarbeitung
mit einem Schritt zum Abrufen einer ersten Information zu einem
Paket, dadurch gekennzeichnet, dass dieses Verfahren die folgenden
Schritte umfasst:
- a) Verwendung der ersten
Information als Index auf einen Syntaxanalysespeicher;
- b) Abrufen eines Eintrags aus dem Syntaxanalysespeicher, der
eine Position eines oder mehrerer Protokoll-Bits im Paket umfasst,
die ein dem Paket zugeordnetes Protokoll angeben;
- c) Abrufen eines Abstimmungssystemindex („Match Engine Index"); und
- d) Verwendung der Protokoll-Bits und des Abstimmungssystemindex
als Schlüssel
zum Abrufen eines Abstimmungssystemeintrags aus einem Abstimmungssystemspeicher,
wobei der Abstimmungssystemeintrag eine Aktion umfasst, die auf das
Paket angewendet werden soll.
-
Die
Erfindung bietet somit ein konfigurierbares Verfahren zur Paketverarbeitung,
die mithilfe eines internen Abstimmungssystems Aktionen sucht, die
mit den zu verarbeitenden Paketen ausgeführt werden sollen. Die Verwendung
eines Abstimmungssystems im Kontext der Erfindung ermöglicht die
Bereitstellung flexibler Paketverarbeitungsvorrichtungen, die der
Leistung von ASICs nahe kommen.
-
Die
erste Information kann einen Kanal umfassen, dem das Paket zugeordnet
ist. Der Begriff Kanal umfasst eine ATM-Verbindung (oder einen ATM-Kanal), die über ein
VPI/VCI-Paar (Virtual Path Identifier/Virtual Channel Identifier)
angegeben werden kann, einen POS-Paketstrom (Packet Over SONST),
einen Ethernet-Strom oder Ähnliches.
-
Der
Abstimmungssystemindex kann in einem Eintrag des Syntaxanalysespeichers
enthalten sein. Der Syntaxanalysespeicher kann eine Kontextspeicher-Basisadresse
umfassen und entweder eine Position eines Sets von Label-Bits im
Paket oder einen Hinweis darauf, dass keine Label-Bits vorhanden sind.
Wenn der Syntaxanalysespeicher eine Position im Paket eines Sets
von Label-Bits enthält,
umfasst das Verfahren den Abruf aus den Paket-Label-Bits, und das
Abrufen des Abstimmungssystemindex umfasst die Verwendung der Kontextspeicher-Basisadresse und
der Label-Bits zum Abrufen eines Eintrags mit dem Abstimungssystemindex
aus einem Kontextspeicher. Wenn die Position eines Sets von Label-Bits
im Paket angibt, dass keine Label-Bits vorhanden sind, umfasst das
Abrufen des Abstimmungssystemindex auch das Abrufen eines im Eintrag
des Syntaxanalysespeichers enthaltenen Abstimmungssystemindex.
-
Ein
weiterer Aspekt der Erfindung umfasst ein Verfahren zur Paketverarbeitung
in einem Paketverarbeitungssystem. Das Verfahren umfasst: einen Schritt
zum Abrufen erster Informationen zu einem Paket; einen Schritt zum
Abrufen eines Eintrags gemäß den ersten
Informationen aus einem Syntaxanalysespeicher; einen Schritt zum
Abrufen eines oder mehrerer durch einen Eintrag im Syntaxanalysespeicher
angegebener Protokoll-Bits
aus dem Paket; einen Schritt zum Abrufen eines Eintrags im Abstimmungssystem
mit einer Aktion, die mit einem Abstimmungssystemschlüssel mit
einer Kombination aus den Protokoll-Bits und dem Abstimmungssystemindex
ausgeführt
werden soll, aus einem Abstimmungssystemspeicher; und einen Schritt
zur Ausführung
der im abgerufenen Abstimmungssystemeintrag angegebenen Aktion.
-
Die
Aktion kann das Extrahieren eines weiteren Protokoll-Datenkopffelds aus
dem Paket umfassen. Die Aktion kann aus der Gruppe Weiterleiten des
Pakets, Löschen
des Pakets, Hinzufügen
zusätzlicher
Kopfdateninformationen zum Paket, Zuordnen eines Dienstgüte-Levels
zu dem Paket, Zuordnen eines Sicherheits-Levels zu dem Paket und Extrahieren
eines weiteren Protokoll-Datenkopffelds
aus dem Paket ausgewählt
werden. Die Aktion kann eine Kombination von Aktionen sein, z. B.
Hinzufügen
zusätzlicher
Kopfdateninformationen zum Paket und Weiterleiten des Pakets; oder
Zuordnen eines Dienstgüte-Levels
zu dem Paket und Weiterleiten des Pakets; oder Zuordnen eines Dienstgüte-Levels zu dem Paket
und Extrahieren eines weiteren Protokoll-Datenkopffelds aus dem Paket. Einige
Aktionen schließen
sich gegenseitig aus und können
nicht die Basis einer kombinierten Aktion bilden. Das Löschen des
Pakets und das Weiterleiten des Pakets schließen sich beispielsweise gegenseitig
aus.
-
Ein
weiterer Aspekt der Erfindung bietet eine Vorrichtung zur Paketverarbeitung,
die Folgendes umfasst: Eine Steuerlogikschaltung; einen Syntaxanalysespeicher,
der von der Steuerlogikschaltung aufgerufen werden kann, wobei der
Syntaxanaly sespeicher eine Vielzahl von Einträgen umfasst, die jeweils eine
Position eines oder mehrerer Protokoll-Bits in einem Paket angeben,
von denen zumindest einige einen Abstimmungssystemindex angeben;
einen Abstimmungssystemspeicher, der von der Steuerlogikschaltung
aufgerufen werden kann, wobei der Abstimmungssystemspeicher eine
Vielzahl von Einträgen
umfasst, die jeweils eine auszuführende Aktion
angeben; und einen Kontextspeicher, der von der Steuerlogikschaltung
aufgerufen werden kann, wobei der Kontextspeicher eine Vielzahl
von Einträgen
umfasst, die jeweils einen Abstimmungssystemindex angeben. Die Steuerlogikschaltung
ist so konfiguriert, dass sie einen Abstimmungssystemschlüssel erzeugt
durch Kombinieren von Protokoll-Bits eines in einem Eintrag eines
Syntaxanalysespeichers angegebenen Pakets mit einem Abstimmungssystemindex
aus einem Eintrag entweder des Syntaxanalysespeichers oder des Kontextspeichers,
zum Abrufen eines Eintrags entsprechend dem Abstimmungssystemschlüssel aus
dem Abstimmungssystemspeicher sowie zur Ausführung einer in dem Abstimmungssystemeintrag
angegebenen Aktion. Die Steuerlogikschaltung kann eine integrierte
Schaltung umfassen. Der Syntaxanalysespeicher und der Abstimmungssystemspeicher
können
mit der Steuerlogikschaltung integriert werden. Der Kontextspeicher kann
außerhalb
der Steuerlogikschaltung liegen, und die Steuerlogikschaltung kann
eine integrierte Schnittstelle zum Kontextspeicher umfassen.
-
Ein
weiterer Aspekt der Erfindung bietet eine konfigurierbare Vorrichtung
zur Paketverarbeitung. Die Vorrichtung unterstützt eine Vielzahl von Protokollen.
Die Vorrichtung umfasst Folgendes: einen ersten internen Speicher
mit einer Vielzahl von Einträgen;
einen zweiten internen Speicher mit einer Vielzahl von Einträgen, die
jeweils eine mit dem Paket auszuführende Aktion umfassen; eine
Logikschaltung zur Ermittlung eines dem Paket zugeordneten Kanalwerts,
zum Abrufen eines Eintrags aus dem ersten Speicher mithilfe des
Kanalwerts als Index, und zum Abrufen von Adressinformationen aus dem
Ein trag, die ein Set von Einträgen
in einem externen Kontextspeicher kennzeichnen, die auf den Kanalwert
angewendet werden können;
eine Logikschaltung zur Verwendung der Adressinformationen und eines
oder mehrerer Bitwerte aus dem Paket zum Abrufen eines Eintrags
aus dem Set von Einträgen
aus dem externen Kontextspeicher; und eine Logikschaltung zur Verwendung
von Informationen aus dem einen aus dem externen Kontextspeicher
abgerufenen Eintrag, um damit aus dem zweiten Speicher eine Aktion
abzurufen, die mit dem Paket ausgeführt werden soll. Der zweite
Speicher kann einen inhaltsadressierbaren Speicher umfassen, bei
dem es sich um einen ternären
inhaltsadressierbaren Speicher handeln kann.
-
Ein
weiterer Aspekt der Erfindung bietet eine Vorrichtung zur Paketverarbeitung,
die Folgendes umfasst: Mittel zum Abrufen von ersten Informationen
zu einem empfangenen Paket; Mittel zum Abrufen eines Eintrags entsprechend
den ersten Informationen, wobei der Eintrag eine Position eines
oder mehrerer Protokoll-Bits im Paket umfasst, die ein dem Paket
zugeordnetes Protokoll und einen Abstimmungssystemindex angeben;
Mittel zum Erzeugen eines Abstimmungssystemschlüssels; Mittel zum Abrufen einer
Aktion entsprechend einer Vielzahl von Abstimmungssystemeinträgen, die
dem Abstimmungssystemschlüssel
entsprechen; und Mittel zur Ausführung
der Aktion.
-
Weitere
Merkmale und Vorteile der Erfindung sind nachfolgend beschrieben.
-
In
Zeichnungen, die nicht-einschränkende Ausführungsformen
der Erfindung darstellen, gilt:
-
1 zeigt
ein Blockdiagramm einer Vorrichtung zur Paketweiterleitung gemäß einer
Ausführungsform
der Erfindung;
-
2 zeigt
ein Diagramm mit dem Inhalt der Speicher in der Vorrichtung zur
Paketweiterleitung aus 1;
-
3 zeigt
ein Diagramm mit der Struktur eines Beispielpakets;
-
4 zeigt
ein Ablaufdiagramm eines Verfahrens für die Paketverarbeitung gemäß der Erfindung;
-
5 zeigt
ein Zeitschaubild für
eine mögliche
Pipeline-Ausführungsform
der Erfindung;
-
6A zeigt
ein Diagramm zur Illustration der Struktur eines Beispielpakets;
und
-
6B zeigt
ein Ablaufdiagramm dazu, wie ein Paketprozessor gemäß der Erfindung
das Paket aus 6A verarbeiten könnte.
-
In
der folgenden Beschreibung sind spezifische Details beschrieben
für ein
gründlicheres
Verständnis
der Erfindung. Die Erfindung kann jedoch auch ohne diese spezifischen
Details realisiert werden. In anderen Beispielen werden bekannte
Elemente nicht dargestellt oder detailliert beschrieben, um die
Erfindung nicht unnötig
unklar darzustellen. Entsprechend sind die Spezifikationen und Zeichnungen
als Verdeutlichung zu verstehen und nicht als Einschränkung.
-
1 zeigt
einen Beispiel-Paketprozessor 10 gemäß der Erfindung. Der Beispiel-Paketprozessor 10 hat
einen Eingang 11, an dem Pakete 13 empfangen werden.
Bei den Paketen kann es sich beispielsweise um ATM-Zellen (Asynchronous
Transfer Mode), IP-Pakete oder ähnliche
Pakete handeln. Pakete 13 sind in einem Puffer 12 platziert.
Eine Steuerlogikschaltung 14 gemäß der Erfindung ruft ausgewählte Bitwerte
aus jedem Paket 13 ab und veranlasst eine E/A-Komponente 16,
eine gewünschte
Aktion mit dem zu verarbeitenden Paket auszuführen.
-
Die
Steuerlogikschaltung 14 hat Zugriff auf drei Speicher:
einen Syntaxanalysespeicher 20, einen Abstimmungssystemspeicher 30 und
einen Kontextspeicher 40. Der Inhalt dieser Speicher ist über die
Software konfigurierbar. Der Syntaxanalysespeicher 20 und
der Abstimmungssystemspeicher 30 sind vorzugsweise mit
der Steuerlogikschaltung 14 integriert. Der Syntaxanalysespeicher 20 kann
einen RAM-Speicher (Random Access Memory) oder dergleichen umfassen.
Der Syntaxanalysespeicher 20 kann eine angemessen kleine
Anzahl von Einträgen 22 umfassen,
z. B. 256 Einträge
oder 512 Einträge. Der
Kontextspeicher 40 ist ein größerer Speicher, der außerhalb
des Chips auf einer separaten Vorrichtung platziert sein kann. Eine
Schnittstelle 41 ermöglicht das
Lesen des Kontextspeichers 40 durch die Steuerlogikschaltung 14.
Der Kontextspeicher 40 kann beispielsweise eine Kapazität von 1
Million Einträgen haben.
-
2 zeigt
die Inhalte der Speicher 20, 30 und 40.
Jeder Eintrag 22 des Syntaxanalysespeichers 20 umfasst
eine Länge
und einen Versatz (22C, 22D) in Paket 13 eines
Labels zum Extrahieren aus einem Paket 13 sowie eine Länge und
einen Versatz (22E, 22F) in Paket 13 eines
Protokoll-Kopfdatenfelds zum Extrahieren aus Paket 13.
Jeder Eintrag 22 umfasst außerdem eine Abstimmungssystembasis 22G,
eine Gesamtlänge 22A und
eine Kontextspeicher-Basisadresse 22B. Ein Eintrag 22 kann
abgerufen werden durch Bereitstellen eines Index im Syntaxanalysespeicher 20.
Der Index kann beispielsweise eine Ganzzahl im Bereich von 0 bis
N – 1
sein, wobei N die Anzahl von Einträgen im Syntaxanalysespeicher 20 ist.
-
Die
Einträge 32 des
Abstimmungssystemspeichers 30 umfassen jeweils Informationen
mit einem Hinweis auf eine oder zwei Aktionen, die mit dem Paket 13 ausgeführt werden
sollen, und einen Index auf den Syntaxanalysespeicher 20.
Ein Eintrag 32 wird abgerufen, indem einem Abstimmungssystemspeicher 30 ein
Abstimmungssystemschlüssel bereitgestellt
wird. Der Abstimmungssystemspeicher 30 prüft, ob der
bereitgestellte Schlüssel
dem Schlüssel
einer seiner Einträge
entspricht. Ist dies der Fall, gibt der Abstimmungssystemspeicher 30 eine
auszuführende
Aktion zurück
(die das Extrahieren eines weiteren Protokoll-Kopfdatenfelds aus dem zu verarbeitenden
Paket 13 umfassen kann). Die auszuführende Aktion kann Aktionen
umfassen wie das Löschen
des Pakets, das Weiterleiten des Pakets an einen angegebenen Ausgangs-Port,
das Hinzufügen zusätzlicher
Kopfdateninformationen zum Paket zur nachgeschalteten Verarbeitung,
das Zuordnen eines bestimmten Dienstgüte-Levels (QoS) zu dem Paket, das
Extrahieren eines weiteren Protokoll-Datenkopffelds aus dem Paket
oder ähnliche
Aktionen.
-
Der
Abstimmungssystemspeicher 30 kann arbeiten wie ein ternärer CAM-Speicher
(„Content Addressable
Memory", inhaltsadressierbarer
Speicher). In diesem Fall kann der Abstimmungssystemspeicher 30 bei
der Ermittlung, ob eine Übereinstimmung
vorliegt, einige Teile des Abstimmungssystemschlüssels ignorieren. Der Abstimmungssystemschlüssel kann
einen „Masken"-Teil und einen „Übereinstimmungs-"Teil umfassen. Der Übereinstimmungs-Teil
wird mit den Schlüsseln
verglichen, die den Einträgen
des Abstimmungssystems 30 entsprechen. Der Masken-Teil gibt Teile des
Schlüssels
an, die beim Vergleich des Schlüssels
mit den Schlüsseln,
die den Einträgen
des Abstimmungssystems 30 entsprechen, ignoriert werden.
Der Masken-Teil kann beispielsweise eine Bit-Zeichenfolge umfassen,
von der jeweils ein Bit einem Bit des Übereinstimmungs-Teils entspricht.
-
Der
Abstimmungssystemspeicher 30 kann eine relativ kleine Anzahl
von Einträgen
umfassen. Die Anzahl hat für
die Erfindung keine wesentliche Bedeutung; typische Implementierungen
des Abstimmungssystemspeichers 30 können beispielsweise 128 oder
256 Einträge
umfassen. Der Abstimmungssystemspeicher 30 kann mithilfe
von Flipflops und Kombinations-Logikschaltungen implementiert werden,
die so konfiguriert sind, dass sie feststellen, ob ein bereitgestellter
Schlüssel
dem Schlüssel
für einen
Eintrag des Abstimmungssystemspeichers 30, gekoppelt mit
einem Speicher (z. B. RAM), der Informationen zu allen Einträgen des
Abstimmungssystemspeichers 30 umfasst, entspricht. Der
Abstimmungssystemspeicher 30 kann beispielsweise ein Set
von Flipflops zu jedem Eintrag, eine Vergleichslogik und einen RAM-Speicher
umfassen, in dem Daten gespeichert sind, die die auszuführende(n)
Aktion(en) angeben. Jedes Set von Flipflops ist einer Adresse im
RAM-Speicher zugeordnet. Die Vergleichs logik vergleicht einen bereitgestellten
Abstimmungssystemschlüssel
mit den von den einzelnen Sets von Flipflops dargestellten Werten,
um Übereinstimmungen
zu erkennen.
-
Wenn
eine Maske verwendet wird, kann es mehrere Einträge geben, die einem bestimmten
Abstimmungssystemschlüssel
entsprechen. In diesem Fall sollte der Abstimmungssystemspeicher 30 eine geeignete
Logik zur Auswahl eines der entsprechenden Einträge implementieren. So könnte beispielsweise
der Eintrag, der dem „Anfang" des Abstimmungssystemspeichers 30 am
nächsten
liegt, ausgewählt
werden. Wird diese Vorgehensweise verwendet, kann es wünschenswert
sein, die Einträge
des Abstimmungssystemspeichers 30, die wahrscheinlich einem
vollständigen
Abstimmungssystemschlüssel
entsprechen (ohne dass dabei Teile durch eine Maskierung von der
Berücksichtigung
ausgenommen sind), am „Anfang" des Abstimmungssystemspeichers 30 zu
platzieren.
-
In
der bevorzugten Ausführungsform
der Erfindung umfasst jeder der Abstimmungssystemschlüssel einen
Abstimmungssystemindex, der mit einem oder mehreren aus einem Paket 13 abgerufenen
Protokoll-Bits kombiniert ist. Die Kombination lässt sich beispielsweise erzielen
durch Verketten des Abstimmungssystemindex mit den Werten der Protokoll-Bits.
-
Der
Kontextspeicher 40 umfasst eine relativ große Anzahl
von Einträgen,
er kann außerhalb
der Paketverarbeitungsvorrichtung 10 liegen. Der Speicher 40 umfasst
beispielsweise einen ZBTTM (Zero Bus Turnaround)
SRAM-Speicher, erhältlich über Integrated
Device Technology Inc. in Santa Clara, Kalifornien. Der Speicher 40 kann
in einer beliebigen zum Abrufen von Einträgen innerhalb eines zugeteilten
Zeitfensters geeigneten Weise organisiert werden. In der bevorzugten
Ausführungsform
der Erfindung kann jeder Eintrag des Kontextspeichers 40 abgerufen
werden durch Bereitstellen einer Adresse, die ein Label umfasst,
das aus einem einer Kontextbasisadresse hinzugefügten Paket 13 abgerufen wurde.
-
Jedes
Paket 13 kann Informationen zu einer Reihe von Protokollen
umfassen. 3 zeigt beispielsweise die Gesamtstruktur
eines Pakets 13 mit einem Level-2-Datenkopf 13A (Datenkopf 13A könnte z.
B. ein PPP-Datenkopf (Point-to-Point Protocol) oder ein ähnliches
Protokoll sein), einem MPLS-Datenkopf
(Multiprotocol Layer Switching) 13B, einem IP-Datenkopf 13C und
einem TCP-Datenkopf 13D zusätzlich zur Daten-Nutzlast 13E.
-
4 zeigt
ein Verfahren 100 gemäß der Erfindung.
Das Verfahren 100 beginnt mit dem Empfang eines Pakets
(Block 102) und dem Empfang erster Informationen zum Paket,
beispielsweise dem physischen Kanal, dem ATM-Kanal, dem Port oder ähnlichen
Informationen über
die Stelle, an der das Paket an der Paketverarbeitungsvorrichtung
angekommen war. Wenn Pakete 13 auch ATM-Zellen umfassen,
so können
die ersten Informationen eine ATM-Kanalnummer umfassen. Das Verfahren 100 wird
fortgesetzt mit Verwendung der ersten Informationen als Index zum
Abrufen eines Eintrags 22 aus dem Syntaxanalysespeicher 20 (Block 108).
Das Verfahren 100 ruft anschließend aus Zelle 13 die durch
den Label-Versatz 22C und die Label-Länge 22D sowie durch
den Protokoll-Versatz 22E und die Protokoll-Länge 22F angegebenen
Label- und Protokoll-Bits ab (Block 112).
-
In
bevorzugten Ausführungsformen
der Erfindung ist es günstig,
den Label-Versatz 22C und den Protokoll-Versatz 22E relativ
zu einem „Stake" anzugeben; ein solcher
Stake wird normalerweise gesetzt als Beginn des Protokoll-Datensatzes,
ab dem die Protokoll-Bits derzeit aus einem Paket extrahiert werden.
Nach dem Extrahieren der aktuellen Protokoll-Bits kann die „Gesamtlänge" 22A zum
Stake addiert werden, sodass der Stake am Anfang des nächsten Protokoll-Datenkopfs
im Paket positioniert ist.
-
Wenn
die durch die ersten Informationen indexierte Label-Länge 22D im Eintrag 22 nicht
Null ist, so erstellt das Verfahren 100 einen Index im
Kontextspeicher 40 aus dem Label und der Kontext-Basisadresse 22B (Block 116).
Das Verfahren 100 verwendet den Index zum Abrufen eines
Eintrags 42 aus dem Kontextspeicher 40 (Block 118).
Der Eintrag 42 umfasst einen Abstimmungssystemindex 42B.
Der Eintrag 42 kann auch Informationen umfassen, die zur
Durchführung
einer anschließenden
Aktion mit dem zu verarbeitenden Paket nützlich oder erforderlich sind.
-
Wenn
die Label-Länge
Null ist, braucht der Kontextspeicher 40 nicht zum Abrufen
eines Abstimmungssystemindex verwendet zu werden. In diesem Fall
wird der Abstimmungssystemindex 22G aus dem Eintrag 22 des
Protokollspeichers 20 verwendet (Block 122).
-
Wie
in 2 gezeigt, umfasst das Abstimmungssystem 30 einen
inhaltsadressierbaren Speicher. Der in Block 118 und Block 122 abgerufene
Abstimmungssystemindex wird mit Protokolldaten aus dem Paket 13 kombiniert
(Block 126), um einen Abstimmungssystemschlüssel zu
erzeugen. Der Abstimmungssystemschlüssel wird auf den Abstimmungssystemspeicher 30 angewendet,
um einen entsprechenden Abstimmungssystemeintrag 32 zu ermitteln
(Block 128). Der Eintrag 32 im Abstimmungssystem 30,
der dem Abstimmungssystemschlüssel
entspricht, umfasst Informationen mit dem Hinweis auf ein oder mehrere
auszuführende
Aktionen. Die Aktionen können
das Extrahieren von Informationen zu einem anderen Protokoll aus
Paket 13 umfassen; in diesem Fall umfasst der Eintrag 32 einen
Index zum Syntaxanalysespeicher 20. Das Verfahren 100 führt eine
beliebige im Abstimmungssystemeintrag 32 angegebene Aktion
aus (Block 130). Bei der Ausführung dieser Aktion kann das
Verfahren 100 zuvor aus dem Kontextspeicher 40 abgerufene Informationen
verwenden.
-
Wenn
der Abstimmungssystemeintrag 32 einen weiteren Syntaxanalysespeicher-Index
(wie in Block 132 ermittelt) umfasst, sucht das Verfahren 100 mithilfe
dieses Syntaxanalysespeicher-Index
einen Eintrag 22 im Syntaxanalysespeicher 20,
und der Prozess wird wiederholt. Wenn der Abstimmungssystemeintrag 32 keinen
weiteren Syntaxanalysespeicher-Index umfasst, ist die im Abstimmungssystemeintrag 32 angegebene
Aktion die abschließende Aktion,
und die Verarbeitung kann nach Ausführung der im Eintrag 32 angegebenen
Aktion für
das jeweilige Paket beendet werden.
-
Die
Aktion kann eine der Aktionen Weiterleiten des Pakets, Löschen des
Pakets, Hinzufügen
zusätzlicher
Kopfdateninformationen zum Paket, Zuordnen eines Dienstgüte-Levels
zu dem Paket, Zuordnen eines Sicherheits-Levels zu dem Paket und Extrahieren
eines weiteren Protokoll-Datenkopfs aus dem Paket sein.
-
Eine
Aktion kann eine Kombination aus anderen Aktionen umfassen. Beispiele:
Hinzufügen
zusätzlicher
Kopfdateninformationen zum Paket und Weiterleiten des Pakets; oder
Zuordnen eines Dienstgüte-Levels
zu dem Paket und Weiterleiten des Pakets; oder Zuordnen eines Dienstgüte-Levels zu
dem Paket und Extrahieren von Bits aus einem anderen Protokoll-Datenkopf
aus dem Paket. Einige Aktionen schließen sich gegenseitig aus und
können nicht
die Basis einer kombinierten Aktion bilden. Das Löschen des
Pakets und das Weiterleiten des Pakets schließen sich beispielsweise gegenseitig
aus.
-
Die
Ausführung
einer Aktion kann zusätzliche
Informationen erfordern. Wenn die Aktion beispielsweise das Weiterleiten
eines Pakets ist, muss eventuell ein Ausgangs-Port angegeben werden, über den
das Paket weitergeleitet werden soll, und/oder eine Ausgangswarteschlange,
in der das Paket platziert wird. Wenn die Aktion das Zuordnen eines
Dienstgüte-Levels zum Paket
ist, muss dem Paket eventuell eine Dienstklasse und eine Löschreihenfolge
(die angibt, wie akzeptabel das Löschen des Pakets ist) zugeordnet
werden. Die zusätzlichen für solche
Aktionen erforderlichen Informationen können im Kontextspeicher 40 gespeichert
und vor der Ausführung
der Aktion abgerufen werden.
-
Diese
Erfindung kann in einer Pipeline-Architektur ausgeführt werden,
wobei mehrere Pakete gleichzeitig verarbeitet werden. Die Anzahl
von Schritten, die mit jedem Paket ausgeführt werden können, ist
eine Funktion der für
die Bearbeitung jedes Pakets verfügbaren Zeit. Wenn der Paketprozessor 10 beispielsweise
53-Byte-ATM-Pakete verarbeitet, die in einem OC-192-Datenstrom mit
einer Rate von 10 Gbit/s ankommen, muss die Verarbeitung eines Pakets
ca. alle 40 ns abgeschlossen werden. Wenn in diesem Beispiel der
Paketprozessor 10 in einer mit 150 MHz getakteten Hardware
implementiert wird, so muss ein Paket in jeweils 6 Taktzyklen verarbeitet
werden.
-
Der
Ablauf der Verarbeitung von Paketen kann auf verschiedene Weise
in Pipeline-Form angeordnet gesteuert werden. Es kann ein Rahmen
definiert werden als eine Anzahl von Taktzyklen, innerhalb derer
der Paketprozessor 10 in der Lage sein muss, ein Paket
zu verarbeiten. Im vorstehenden Beispiel könnte ein Rahmen 6 Taktzyklen
umfassen. Im ungünstigsten
Fall kann in jedem Rahmen ein Paket ankommen. Zur Aufrechterhaltung
des Durchsatzes entsprechend der Kabelgeschwindigkeit muss für jeden
Rahmen ein Paket verarbeitet werden. Eine Implementierung der Erfindung
verwendet eine Pipeline mit 15 Rahmen, wie in 5 dargestellt.
In dieser Ausführungsform
der Erfindung durchläuft
jedes Paket 13 jeweils 15 Verarbeitungsstufen. Jedes Paket 13 wechselt
am Ende jedes Rahmens in die nächste
Stufe.
-
5 zeigt
die Verarbeitung für
6 Pakete (gekennzeichnet durch die Bezugszeichen 0 bis 5). Weitere
nachfolgend empfangene Pakete sind nicht dargestellt. Alle möglichen
Verarbeitungsschritte sind für
alle Pakete 0 bis 5 dargestellt. Für die meisten Pakete mit einem
realistischen Protokoll-Stack brauchen nicht alle Operationen durchgeführt zu werden. Wie
in 5 gezeigt, nutzt diese Pipeline-Implementierung
bei direkt aufeinander folgenden Paketen mit minimaler Größe den Syntaxanalysespeicher 20 und den
Abstimmungssystemspeicher 30 in vollem Umfang. Außerdem vermeidet
sie den Zugriff auf den Kontextspeicher 40 während der
in 5 schattiert dargestellten Taktzyklen. Diese Taktzyklen
können für Operationen
wie beispielsweise die Aktualisierung des Inhalts des Kontextspeichers 40 verwendet werden.
-
Beispiel
-
6A zeigt
ein Paket 13',
das einen 2-Byte PPP-Datenkopf 13A', einen 4-Byte
MPLS-Datenkopf 13B',
einen 20-Byte IP-Datenkopf 13C' und eine Nutzlast 13D' umfasst. 6B zeigt
ein Verfahren 200, bei dem das Paket 13' gemäß der Erfindung
verarbeitet wird. Das Paket 13' wird an einem Kanal an einer Vorrichtung
zur Paketverarbeitung empfangen (Block 202). Der Kanal
ist ein den PPP-Paketen zugeordneter Kanal. Die Vorrichtung zur
Paketverarbeitung verwendet zunächst
die Kanalnummer als Index auf den Syntaxanalysespeicher 20.
Der Index führt zum
Abrufen eines hinsichtlich des Protokolls PPP(1) relevanten Eintrags 22 im
Syntaxanalysespeicher 20 (Block 204). Der Eintrag 22 enthält die folgenden
Informationen:
Gesamtlänge
= 16 Bit
Kontext-Basisadresse = N/A
Label-Versatz = N/A
Label-Länge = 0
Protokoll-Versatz
= 0
Protokoll-Länge
= 16 Bit
AS-Index = PPP(1)
-
Der
Paketprozessor 10 ruft daher die ersten 16 Bit (d. h. den
gesamten PPP-Datenkopf 13A' aus dem
Paket 13' ab
(Block 208). Der Paketprozessor 10 erstellt einen
Abstimmungssystemschlüssel
durch Verketten dieser Bits mit dem AS-Index PPP(1) (Block 210)
und stellt den resultierenden Abstimmungssystemschlüssel dem
Abstimmungssystemspeicher 30 zur Verfügung (Block 212).
In diesem Beispiel entspricht der Abstimmungssystemschlüssel dem
Abstimmungssystemeintrag für
MPLS. Der Ab stimmungssystemspeicher 30 gibt einem Eintrag
im Syntaxanalysespeicher 20, der dem MPLS-Protokoll entspricht,
einen Index MPLS(2) zurück.
Dies ist ein Hinweis darauf, dass die mit dem Paket 13' auszuführende Aktion
das Extrahieren von Informationen zu einem anderen Protokoll ist.
Wenn der Abstimmungssystemschlüssel
diesem Eintrag des Abstimmungssystemspeichers 30 nicht
entsprochen hätte, so
hätte das
Abstimmungssystem 30 eventuell eine andere mit dem Paket 13' auszuführende Aktion
zurückgegeben.
Der Paketprozessor 10 setzt einen Stake auf die „Gesamtlänge", sodass Label- und
Protokoll-Versatz für
das nächste
Protokoll vom Stake aus gemessen werden können (Block 216).
-
Der
Paketprozessor 10 verwendet den Index MPLS(2) zum Abrufen
eines weiteren Eintrags aus dem Syntaxanalysespeicher 20 (Block 218).
In diesem Fall umfasst der resultierende Eintrag die folgenden Informationen:
Gesamtlänge = 32
Bit
Kontext-Basisadresse = MPLS-Basis
Label-Versatz =
0
Label-Länge
= 20 Bit
Protokoll-Versatz = 23 Bit
Protokoll-Länge = 1
Bit
AS-Index = MPLS(2)
-
Da
das Feld mit der Label-Länge
einen Wert ungleich Null enthält,
ruft der Paketprozessor 10 sowohl das 20-Bit-Label als
auch ein 1-Bit-Protokoll aus dem Paket 13' ab (Block 220). Da der
Stake sich am Anfang des MPLS-Datenkopfs 13B' befindet und der Label-Versatz
0 beträgt,
entspricht das erste abgerufene Label den ersten 20 Bit des MPLS-Datenkopfs 13B'. Der Paketprozessor 10 fordert
anschließend den
Eintrag aus dem Kontextspeicher 40 ab, der dem MPLS-Basiswert
entspricht, der dem abgerufenen Label entspricht (Block 222).
-
Der
Paketprozessor 10 empfängt
vom Kontextspeicher 40 einen Abstimmungssystemindex MPLS(2).
Zusammen mit dem Abstim mungssystemindex ruft der Paketprozessor 10 aus
dem Kontextspeicher 40 Informationen zu mit dem Paket auszuführenden
Aktionen, beispielsweise zum Weiterleiten des Pakets, ab. Der Paketprozessor 10 kombiniert anschließend die
oben abgerufenen Protokoll-Bits mit dem Abstimmungssystemindex (Block 224)
und liefert den resultierenden Schlüssel an den Abstimmungssystemspeicher 30 (Block 226).
In diesem Fall umfasst das Protokoll-Bit das „S"-Bit im MPLS-Datenkopf, und es hat den
Wert 1, was darauf hinweist, dass der MPLS-Datenkopf 13B' der letzte
MPLS-Datenkopf für das Paket 13' ist. Der Abstimmungssystemspeicher 30 gibt
die Aktion „Paket
weiterleiten" zurück. Der
Paketprozessor 10 leitet anschließend mithilfe von Informationen
im IP-Datenkopf 13' und zusätzlichen,
aus dem Kontextspeicher 40 abgerufenen Informationen, das
Paket 13' als
IP-Paket zurück (Block 230).
-
Der
Paketprozessor 10 ist bevorzugt als eine „fest verdrahtete" ASIC implementiert.
Neue Protokolle und Änderungen
an vorhandenen Protokollen können
durch einfaches Ändern
des Inhalts des Syntaxanalysespeichers 20, der Schlüssel und
der Inhalte des Abstimmungssystemspeichers 30 sowie des Inhalts
des Kontextspeichers 40 außerhalb des Chips erzielt werden.
Somit behält
ein Paketprozessor 10 gemäß der Erfindung die Geschwindigkeitsvorteile
von ASICs und bleibt gleichzeitig konfigurierbar.
-
Wenn
in der obigen Beschreibung auf eine Komponente (z. B. Baugruppe,
Vorrichtung, Speicher etc.) verwiesen wird, so ist dieser Verweis
(einschließlich
eines Verweises auf „Mittel"), sofern nichts
Gegenteiliges angegeben ist, als Verweis auf eine beliebige Komponente
anzusehen, die die Funktion der beschriebenen Komponente ausführt (d.
h. die der beschriebenen Komponente funktional äquivalent ist) einschließlich Komponenten,
deren Struktur nicht mit der beschriebenen Struktur äquivalent ist,
die die Funktion in den dargestellten exemplarischen Ausführungsformen
der Erfindung ausführt. Wenn
in der obigen Beschreibung auf einen Schritt verwiesen wird, so
ist dieser Verweis, sofern nichts Gegenteiliges angegeben ist, als
Verweis auf einen beliebigen Schritt anzusehen, mit dem das gleiche Ergebnis
erzielt wird (d. h. der dem beschriebenen Schritt funktional äquivalent
ist), einschließlich
der Schritte, die ein angegebenes Ergebnis auf andere Weise erzielen
als in der illustrierten exemplarischen Ausführungsform der Erfindung beschrieben.
-
Wie
für den
Fachmann ersichtlich, sind vor dem Hintergrund der vorstehenden
Beschreibung zahlreiche Änderungen
und Modifikationen an der Erfindung möglich, ohne vom Anwendungsbereich der
Erfindung abzuweichen. Beispiel:
Der Syntaxanalysespeicher 20 könnte ein
Teil des gleichen RAM-Speichers sein, der zum Speichern der vom
Abstimmungssystemspeicher 30 zurückgegebenen Daten verwendet
wird. Bevorzugt werden jedoch separate Speicher bereitgestellt,
um das Suchen im Syntaxanalysespeicher 20 und im Abstimmungssystemspeicher 30 im
gleichen Taktzyklus zu ermöglichen.
-
Entsprechend
ist der Anwendungsbereich der Erfindung als in Übereinstimmung mit dem durch die
folgenden Patentansprüche
definierten Gegenstand zu interpretieren.