DE60222622T2 - Verfahren und Vorrichtung zur Paketkopfteilverarbeitung - Google Patents

Verfahren und Vorrichtung zur Paketkopfteilverarbeitung Download PDF

Info

Publication number
DE60222622T2
DE60222622T2 DE60222622T DE60222622T DE60222622T2 DE 60222622 T2 DE60222622 T2 DE 60222622T2 DE 60222622 T DE60222622 T DE 60222622T DE 60222622 T DE60222622 T DE 60222622T DE 60222622 T2 DE60222622 T2 DE 60222622T2
Authority
DE
Germany
Prior art keywords
memory
voting system
entry
packet
package
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60222622T
Other languages
English (en)
Other versions
DE60222622D1 (de
Inventor
Tom Ottawa Davis
Chad Vancouver Kendall
Shay Ottawa Nahum
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Canada Inc
Original Assignee
Alcatel Canada Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alcatel Canada Inc filed Critical Alcatel Canada Inc
Application granted granted Critical
Publication of DE60222622D1 publication Critical patent/DE60222622D1/de
Publication of DE60222622T2 publication Critical patent/DE60222622T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Description

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

Claims (26)

  1. Verfahren zur Paketverarbeitung mit einem Schritt zum Abrufen von ersten Informationen zu einem Paket (13), dadurch gekennzeichnet, dass dieses Verfahren die folgenden Schritte umfasst: a) Abrufen eines Eintrags (22) aus einem Syntaxanalysespeicher (20), der den ersten Informationen entspricht und eine Position (22E, 22F) eines oder mehrerer Protokoll-Bits (13A, 13B, 13C) im Paket (13) umfasst, die ein dem Paket (13) zugeordnetes Protokoll angeben; b) Abrufen eines oder mehrerer Protokoll-Bits (13A13D) aus dem durch den Eintrag im Syntaxanalysespeicher (22) angegebenen Paket (13); c) Abrufen eines Abstimmungssystemeintrags (32) aus einem Abstimmungssystemspeicher (30) mithilfe eines Abstimmungssystemschlüssels, der eine Kombination aus den Protokoll-Bits (13A13D) und einem Abstimmungssystemindex umfasst, wobei der Abstimmungssystemeintrag (32) eine Aktion (34) angibt, die mit dem Paket (13) ausgeführt werden soll.
  2. Verfahren gemäß Anspruch 1, wobei der Schritt a) zum Abrufen des Weiteren die Verwendung der ersten Informationen als Index auf den Syntaxanalysespeicher (20) umfasst.
  3. Verfahren gemäß Anspruch 1 bis 2, wobei der Schritt c) zum Abrufen des Weiteren Folgendes umfasst: i) Abrufen eines Abstimmungssystemindex; und ii) Kombinieren der Protokoll-Bits und des Abstimmungssystemindex zu einem Abstimmungssystemschlüssel; und iii) Verwendung dieses Abstimmungssystemschlüssels als Schlüssel zum Abstimmungssystemspeicher (30).
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, der des Weiteren den Schritt zur Ausführung der im abgerufenen Abstimmungssystemeintrag (32) angegebenen Aktion (34) umfasst.
  5. Verfahren gemäß Anspruch 3 oder 4, wobei der Abstimmungssystemindex im Eintrag des Syntaxanalysespeichers (22) enthalten ist.
  6. Verfahren gemäß Anspruch 3 oder 5, wobei der Eintrag des Syntaxanalysespeichers (22) eine Kontextspeicher-Basisadresse (22B) und entweder eine Position (22C) im Paket (13) eines Sets von Label-Bits umfasst oder einen Hinweis darauf, dass keine Label-Bits vorliegen, wobei das Verfahren, wenn der Eintrag des Syntaxanalysespeichers (22) eine Position (22C) eines Sets von Label-Bits umfasst, das Abrufen der Label-Bits aus dem Paket (13) umfasst, und wobei das Abrufen des Abstimmungssystemindex mithilfe der Kontextspeicher-Basisadresse (22B) und der Label-Bits zum Abrufen eines Eintrags (42) mit dem Abstimmungssystemindex aus einem Kontextspeicher (40) umfasst.
  7. Verfahren gemäß Anspruch 1, wobei das Abrufen des Abstimmungssystemindex, wenn der Eintrag des Syntaxanalysespeichers (22) einen Hinweis darauf umfasst, dass keine Label-Bits vorliegen, das Abrufen eines im Eintrag des Syntaxanalysespeichers (22) enthaltenen Abstimmungssystemindex umfasst.
  8. Verfahren gemäß einem der Ansprüche 1 bis 7, wobei der Abstimmungssystemspeicher (30) einen inhaltsadressierbaren Speicher umfasst.
  9. Verfahren gemäß einem der Ansprüche 1 bis 8, wobei der Abstimmungssystemspeicher (30) einen ternären inhaltsadressierbaren Speicher umfasst, der einige Teile des Abstimmungssystemschlüssels ignorieren kann bei der Bestimmung, ob eine Entsprechung vorliegt.
  10. Verfahren gemäß einem der Ansprüche 1 bis 9, wobei das Abrufen der ersten Informationen das Ermitteln eines Kanals, dem das Paket (13) zugeordnet ist, umfasst.
  11. Verfahren gemäß einem der Ansprüche 1 bis 10, wobei die Aktion (34) das Extrahieren von Informationen zu einem weiteren Protokoll aus dem Paket (13) umfasst.
  12. Verfahren gemäß einem der Ansprüche 1 bis 11, wobei die Aktion (34) ausgewählt wird 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 und Extrahieren von Informationen zu einem weiteren Protokoll aus dem Paket.
  13. Konfigurierbare Vorrichtung zur Paketverarbeitung, angepasst zum Abrufen erster Informationen zu einem Paket, zum Abrufen eines Eintrags aus dem Syntaxanalysespeicher entsprechend den ersten Informationen, und zum Abrufen der in diesem Eintrag angegebenen Protokoll-Bits aus dem Paket, wobei diese Vorrichtung Folgendes umfasst: eine Steuerlogikschaltung (14); einen Syntaxanalysespeicher (20), der von der Steuerlogikschaltung (14) aufgerufen werden kann, wobei der Syntaxanalysespeicher (20) eine Vielzahl von Einträgen umfasst, die jeweils eine Position eines oder mehrerer Pro tokoll-Bits in einem Paket (13) angeben, von denen zumindest einige einen Abstimmungssystemindex angeben; einen Abstimmungssystemspeicher (30), der von der Steuerlogikschaltung (14) aufgerufen werden kann, wobei der Abstimmungssystemspeicher (30) eine Vielzahl von Einträgen umfasst, die jeweils eine auszuführende Aktion angeben; einen Kontextspeicher (40), der von der Steuerlogikschaltung (14) aufgerufen werden kann, wobei der Kontextspeicher (40) eine Vielzahl von Einträgen umfasst, die jeweils einen Abstimmungssystemindex angeben; wobei die Steuerlogikschaltung (14) so konfiguriert ist, dass sie einen Abstimmungssystemschlüssel erzeugt durch Kombinieren von Protokoll-Bits (13A-C) eines in einem Eintrag eines Syntaxanalysespeichers (22) angegebenen Pakets (13) mit einem Abstimmungssystemindex aus einem Eintrag (22, 42) entweder des Syntaxanalysespeichers oder des Kontextspeichers, zum Abrufen eines Eintrags (32) entsprechend dem Abstimmungssystemschlüssel aus dem Abstimmungssystemspeicher (30), und zur Ausführung einer in dem Abstimmungssystemeintrag (32) angegebenen Aktion (34).
  14. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß Anspruch 13, wobei die Steuerlogikschaltung (14) eine integrierte Schaltung umfasst und wobei der Syntaxanalysespeicher (20) mit der Steuerlogikschaltung (14) integriert ist.
  15. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß Anspruch 13 oder 14, wobei die Steuerlogikschaltung (14) eine integrierte Schaltung umfasst und wobei der Abstimmungssystemspeicher (30) mit der Steuerlogikschaltung (14) integriert ist.
  16. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 15, wobei der Kontextspeicher (40) außerhalb der Steuerlogikschaltung (14) liegt und die Steuerlogikschaltung (14) eine integrierte Schnittstelle (41) zum Kontextspeicher (40) umfasst.
  17. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 16, wobei der Syntaxanalysespeicher (20) 512 oder weniger Einträge umfasst.
  18. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 17, wobei der Abstimmungssystemspeicher (30) 512 oder weniger Einträge umfasst.
  19. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 18, wobei die Steuerlogikschaltung (14) in einer Pipeline-Architektur implementiert ist, wobei mehrere Pakete gleichzeitig verarbeitet werden.
  20. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 19, wobei die mit dem Paket (13) auszuführende Aktion (34) das Extrahieren von Informationen zu einem anderen Protokoll aus Paket (13) umfasst.
  21. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 20, wobei der Abstimmungssystemspeicher (30) einen inhaltsadressierbaren Speicher umfasst.
  22. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 21, wobei der Syntaxanalysespeicher (20) einen RAM-Speicher (Random Access Memory) umfasst.
  23. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 22, wobei die ersten Informationen eine dem Paket zugeordnete ATM-Kanalnummer umfassen.
  24. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 23, wobei die Steuerlogikschaltung (14) des Weiteren Mittel zur Ausführung der Aktion umfasst, die Mittel zur Weiterleitung des Pakets an eine andere Vorrichtung zur Paketverarbeitung umfassen.
  25. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß einem der Ansprüche 13 bis 24, wobei die Steuerlogikschaltung (14) des Weiteren Mittel umfasst, um aus dem Eintrag zu ermitteln, ob ein Eintrag aus einem externen Kontextspeicher (40) abgerufen werden sollen, und Mittel zum Abrufen eines Eintrags aus dem externen Kontextspeicher (40), und Mittel zum Erzeugen des Abstimmungssystemschlüssels, die so angepasst sind, dass sie den Abstimmungssystemschlüssel mithilfe der Informationen in dem Eintrag aus dem externen Kontextspeicher (40) erzeugen.
  26. Konfigurierbare Vorrichtung zur Paketverarbeitung gemäß Anspruch 25, wobei die Mittel zum Erzeugen des Abstimmungssystemschlüssels, die Mittel zur Ausführung einer Aktion und die Mittel zum Abrufen eines Eintrags aus dem externen Kontextspeicher (40) in einer einzigen integrierten Schaltung implementiert sind.
DE60222622T 2001-11-21 2002-11-18 Verfahren und Vorrichtung zur Paketkopfteilverarbeitung Expired - Lifetime DE60222622T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/988,939 US7236492B2 (en) 2001-11-21 2001-11-21 Configurable packet processor
US988939 2001-11-21

Publications (2)

Publication Number Publication Date
DE60222622D1 DE60222622D1 (de) 2007-11-08
DE60222622T2 true DE60222622T2 (de) 2008-06-26

Family

ID=25534612

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60222622T Expired - Lifetime DE60222622T2 (de) 2001-11-21 2002-11-18 Verfahren und Vorrichtung zur Paketkopfteilverarbeitung

Country Status (3)

Country Link
US (1) US7236492B2 (de)
EP (1) EP1315357B1 (de)
DE (1) DE60222622T2 (de)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7382736B2 (en) 1999-01-12 2008-06-03 Mcdata Corporation Method for scoring queued frames for selective transmission through a switch
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7236490B2 (en) 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US7002980B1 (en) 2000-12-19 2006-02-21 Chiaro Networks, Ltd. System and method for router queue and congestion management
JP3965283B2 (ja) * 2001-07-02 2007-08-29 株式会社日立製作所 複数種類のパケット制御機能を備えたパケット転送装置
US7580408B2 (en) * 2001-11-21 2009-08-25 Alcatel Lucent Configurable packet processor
WO2003056763A1 (en) * 2001-12-21 2003-07-10 Chip Engines Reconfigurable data packet header processor
SE525183C2 (sv) * 2002-04-04 2004-12-21 Xelerated Ab Förfarande och medel för behandling med pipelining av datapaket
US7266117B1 (en) 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US7649885B1 (en) 2002-05-06 2010-01-19 Foundry Networks, Inc. Network routing system for enhanced efficiency and monitoring capability
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US20030231627A1 (en) * 2002-06-04 2003-12-18 Rajesh John Arbitration logic for assigning input packet to available thread of a multi-threaded multi-engine network processor
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
US7496684B2 (en) * 2004-01-20 2009-02-24 International Business Machines Corporation Developing portable packet processing applications in a network processor
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US7646770B1 (en) * 2004-03-30 2010-01-12 Extreme Networks, Inc. Systems for supporting packet processing operations
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US7492763B1 (en) * 2004-07-16 2009-02-17 Applied Micro Circuits Corporation User-specified key creation from attributes independent of encapsulation type
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
US7903687B2 (en) 2005-04-01 2011-03-08 International Business Machines Corporation Method for scheduling, writing, and reading data inside the partitioned buffer of a switch, router or packet processing device
US7586936B2 (en) 2005-04-01 2009-09-08 International Business Machines Corporation Host Ethernet adapter for networking offload in server environment
US7881332B2 (en) 2005-04-01 2011-02-01 International Business Machines Corporation Configurable ports for a host ethernet adapter
US7606166B2 (en) 2005-04-01 2009-10-20 International Business Machines Corporation System and method for computing a blind checksum in a host ethernet adapter (HEA)
US7492771B2 (en) 2005-04-01 2009-02-17 International Business Machines Corporation Method for performing a packet header lookup
US7577151B2 (en) 2005-04-01 2009-08-18 International Business Machines Corporation Method and apparatus for providing a network connection table
US7508771B2 (en) * 2005-04-01 2009-03-24 International Business Machines Corporation Method for reducing latency in a host ethernet adapter (HEA)
US7697536B2 (en) * 2005-04-01 2010-04-13 International Business Machines Corporation Network communications for operating system partitions
US7706409B2 (en) 2005-04-01 2010-04-27 International Business Machines Corporation System and method for parsing, filtering, and computing the checksum in a host Ethernet adapter (HEA)
US20060221953A1 (en) * 2005-04-01 2006-10-05 Claude Basso Method and apparatus for blind checksum and correction for network transmissions
US7823185B1 (en) * 2005-06-08 2010-10-26 Federal Home Loan Mortgage Corporation System and method for edge management of grid environments
JP2007006054A (ja) * 2005-06-23 2007-01-11 Hitachi Ltd パケット中継装置及びパケット中継システム
US7599364B2 (en) * 2005-09-13 2009-10-06 Agere Systems Inc. Configurable network connection address forming hardware
US8521955B2 (en) 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
US8218770B2 (en) * 2005-09-13 2012-07-10 Agere Systems Inc. Method and apparatus for secure key management and protection
FI119166B (fi) * 2005-11-30 2008-08-15 Tellabs Oy Menetelmä ja laitteisto palvelunlaatuluokasta riippuvan reitityspäätöksen muodostamiseksi
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US7903654B2 (en) 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US7978614B2 (en) 2007-01-11 2011-07-12 Foundry Network, LLC Techniques for detecting non-receipt of fault detection protocol packets
US8271859B2 (en) 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8037399B2 (en) 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8509236B2 (en) 2007-09-26 2013-08-13 Foundry Networks, Llc Techniques for selecting paths and/or trunk ports for forwarding traffic flows
US8171539B2 (en) * 2009-01-07 2012-05-01 Symbol Technologies, Inc. Methods and apparatus for implementing a search tree
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US8743877B2 (en) 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US9282173B2 (en) 2012-02-17 2016-03-08 Viavi Solutions Inc. Reconfigurable packet header parsing
US9438502B2 (en) 2012-02-17 2016-09-06 Viavi Solutions Inc. Controlling generation of filtered result packets
US20140233582A1 (en) * 2012-08-29 2014-08-21 Marvell World Trade Ltd. Semaphore soft and hard hybrid architecture
US20140340200A1 (en) * 2013-05-20 2014-11-20 Fortune Advance Development Limited Electronic Device and Method for Starting Electronic Device Through Remote Control

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289414B1 (en) * 1998-10-08 2001-09-11 Music Semiconductors, Inc. Partially ordered cams used in ternary hierarchical address searching/sorting
US6661791B1 (en) 1999-12-28 2003-12-09 Mosaid Technologies, Inc. Method and apparatus for generating forward overrides in a packet switch
US6775284B1 (en) * 2000-01-07 2004-08-10 International Business Machines Corporation Method and system for frame and protocol classification
US6778498B2 (en) * 2001-03-20 2004-08-17 Mci, Inc. Virtual private network (VPN)-aware customer premises equipment (CPE) edge router
US6944168B2 (en) * 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US6904057B2 (en) 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US20030007489A1 (en) * 2001-07-09 2003-01-09 Ram Krishnan Data extraction system for packet analysis
US7389359B2 (en) * 2001-10-19 2008-06-17 Foundry Networks, Inc. Method and system for intelligently forwarding multicast packets

Also Published As

Publication number Publication date
US7236492B2 (en) 2007-06-26
EP1315357B1 (de) 2007-09-26
DE60222622D1 (de) 2007-11-08
EP1315357A2 (de) 2003-05-28
EP1315357A3 (de) 2004-06-30
US20030103499A1 (en) 2003-06-05

Similar Documents

Publication Publication Date Title
DE60222622T2 (de) Verfahren und Vorrichtung zur Paketkopfteilverarbeitung
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE60213509T2 (de) Verfahren und Vorrichtung zur Verbesserung der Verfügbarkeit von Wegeleitsystemen mit mehrwege-Kostengleichheit
DE60026676T2 (de) Paketklassifizierungsautomat
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
DE60120847T2 (de) Mehrprotokollvermittler und Verfahren dazu
DE69934644T2 (de) Netzwerkvermittlungseinrichtung mit auf der Basis von Benutzung verteilten Umleitungsdatenbanken
DE60300333T2 (de) Verfahren und Vorrichtung für ein flexibles Rahmenverarbeitungs und Klassifikationssystem
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen
DE69829645T2 (de) Verfahren zur Änderung von dynamischen Entscheidungsbäume
DE60216938T2 (de) Gleichzeitiges durchsuchen verschiedener tabellen in einem inhaltsadressierbaren speicher
DE60018780T2 (de) Verfahren und vorrichtung zur erkennung von datenpaketen in echtzeit in dem anschluss einer netzwerkvermittlungsstelle
DE60021846T2 (de) Leitweglenkungsanordnung
DE69937185T2 (de) Verfahren und vorrichtung zum paketbeförderungsnachschlagen mit einer reduzierten anzahl von speicherzugriffen
DE60316696T2 (de) Verfahren zum Routen von Datenpaketen und Routing-Vorrichtung
DE69730452T2 (de) Verfahren und vorrichtung zur cachespeicherung von politik zur verwendung in einem kommunikationsgerät
DE69531337T2 (de) Weglenkung von Transaktionsnachrichten in einem digitalen Kommunikationsnetz
DE60131596T2 (de) Stapelbare Sucheinrichtung
DE112011103561T5 (de) Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse
DE69927109T2 (de) Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen
DE10028563B4 (de) Kommunikationssteuerungseinheit
DE60311800T2 (de) Verfahren und vorrichtung zur verbesserung der netzwerkleitweglenkung
DE10058443A1 (de) Verfahren zum Klassifizieren von Datenpaketen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition