DE112011103561T5 - Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse - Google Patents

Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse Download PDF

Info

Publication number
DE112011103561T5
DE112011103561T5 DE112011103561T DE112011103561T DE112011103561T5 DE 112011103561 T5 DE112011103561 T5 DE 112011103561T5 DE 112011103561 T DE112011103561 T DE 112011103561T DE 112011103561 T DE112011103561 T DE 112011103561T DE 112011103561 T5 DE112011103561 T5 DE 112011103561T5
Authority
DE
Germany
Prior art keywords
parser
data
rule
data packet
loaded
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.)
Pending
Application number
DE112011103561T
Other languages
English (en)
Inventor
Fabrice Jean Verplanken
Jean Calvignac
Francois Abel
Chih-Jen Chang
Damon Philippe
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112011103561T5 publication Critical patent/DE112011103561T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control

Abstract

Die Erfindung stellt einen Netzwerkprozessor bereit, der einen Parser aufweist, wobei der Parser funktionsmäßig in der Lage ist, in einer normalen Betriebsart oder in einer Wiederholungs-Betriebsart zu arbeiten, wobei der Parser in der normalen Betriebsart wenigstens eine erste Regel in einem ersten bzw. einem zweiten Arbeitszyklus lädt und ausführt, wobei der Parser in der Wiederholungs-Betriebsart betrieben werden kann, um einen Wiederholungsbefehl wiederholt auszuführen, wobei die Ausführung jeder Wiederholung einem Arbeitszyklus entspricht.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf das Gebiet von Netzwerkprozessoren und insbesondere auf einen Netzwerkprozessor und ein Verfahren zum Beschleunigen der Syntaxanalyse von Datenpaketen mittels eines Parsers (Syntaxanalysators).
  • Technischer Hintergrund
  • Infolge der ansteigenden Nutzung von datenintensiven Anwendungen wie etwa Video-Streaming oder Voice-over-IP über das Internet werden Datenübertragungsverbindungen (z. B. Lichtwellenleiter- oder Kupferkabel) und Datenverarbeitungseinheiten benötigt, die in der Lage sind, eine große Anzahl von Datenpaketen in Sekundenbruchteilen zu übertragen und zu verarbeiten. Die Unterstützung der Datenpaketverarbeitung dieser datenintensiven Anwendungen erfordert eine immense Rechenleistung, und die Forderung nach Verarbeitungsleistung zum Verwalten des Internetverkehrs steigt ständig an. Neue Typen von spezialisierten Prozessoren, sogenannte „Netzwerkprozessoren”, wurden entwickelt, die für die Abwicklung und Verarbeitung von Datenpaketen besonders geeignet sind, die über ein Netzwerk, insbesondere das Internet, zu übertragen sind.
  • In der Vergangenheit wurden Netzwerkprozessoren entweder als Mehrzweck-Prozessoren (general purpose processors – GPPs) oder als anwendungsspezifische integrierte Schaltungen (application-specific integrated circuits – ASICs) ausgelegt. Während GPPs eine hohe Flexibilität gewährleisten, wurden sie nicht speziell für die Bedürfnisse in Bezug auf eine Netzwerkverarbeitung entwickelt, und sie sind daher häufig zu langsam. ASICs sind dagegen integrierte Schaltungen (ICs), die für die besonderen Erfordernisse der Verarbeitung von Datenpaketen entwickelt wurden, die über ein Netzwerk zu übertragen sind. ASICs können deswegen ihre speziellen Aufgaben sehr schnell und effizient lösen, sie sind jedoch teuer und unflexibel.
  • Die Verarbeitung von Datenpaketen durch einen Netzwerkprozessor weist üblicherweise einen Schritt der Syntaxanalyse auf, wobei ein Parser des Netzwerkprozessors die Inhalte von Paket-Vorsätzen (packet headers) und Paketfeldern extrahiert und analysiert und analysierte Pakete oder Teile hiervon zu anderen Komponenten des Netzwerkprozessors leitet. Die Geschwindigkeit des programmierbaren Parsers wird im Allgemeinen durch die Zeit festgelegt, die der Parser benötigt, um einen Befehl zu laden und ihn auszuführen. Die Analyseleistung wird üblicherweise erhöht durch Erhöhung der Taktfrequenz der Logik, die einen Analysebefehl speichert und/oder ausführt. Dieser Ansatz erfordert eine leistungsfähigere und teurere Hardware und führt zu einem erhöhten Energieverbrauch, ein in finanzieller und ökologischer Hinsicht unwillkommener Effekt.
  • Kurzdarstellung der Erfindung
  • Eine Aufgabe von Ausführungsformen der vorliegenden Erfindung besteht darin, einen verbesserten Netzwerkprozessor und ein Verfahren zum Erhöhen der Leistungsfähigkeit bei der Syntaxanalyse von Datenpaketen durch einen Parser eines Netzwerkprozessors, insbesondere im Kontext von Netzwerken mit einem Durchsatz von mehreren Gigabit bereitzustellen.
  • Ausführungsformen der Erfindung beruhen auf der Beobachtung, dass ein Analyseschritt im Allgemeinen in zwei Kategorien klassifiziert werden kann, d. h. a) Schritte, die ein Feld eines Datenpakets analysieren und anhand des Analyseergebnisses eine Syntaxanalyseentscheidung treffen, und b) Schritte, die eine Funktion ausführen, ohne eine Syntaxanalyseentscheidung zu treffen; wobei die Schritte der Kategorie a) das Analysieren eines IP-Vorsatzfelds eines Datenpakets und das Springen zu einer TCP-Syntaxanalyse aufweisen können, falls der Parser feststellt, dass der Wert des analysierten Felds ,06' beträgt, was eine Anzeige des TCP-Protokolls darstellt. Schritte der Kategorie b) können z. B. Schritte zum Akkumulieren der Prüfsumme über ein Quellenadress-(source address – SA) oder ein Zieladress-(destination address – DA)Feld eines IP-Vorsatzes, das Weiterleiten von Datenpaketen oder Teilen von ihnen zu einer Komponente des Ziel-Netzwerkprozessors oder dergleichen aufweisen.
  • Die Schritte der Kategorie b) können einmalig oder wiederholt ausgeführt werden. Die Anzahl von „Wiederholungen”, d. h. die Anzahl der Ausführungen der Funktion, wird dynamisch festgelegt. In Abhängigkeit von Ausführungsformen kann die Anzahl von Wiederholungen als das Ergebnis der Ausführung der Schritte der Kategorie a) durch den Parser festgelegt werden. Unter bestimmten Umständen kann der Parser festlegen, dass überhaupt keine Wiederholungen ausgeführt werden müssen.
  • Ein mittels Computer umgesetzter Befehl, der durch den Parser wiederholt ausgeführt werden kann, jedoch nicht notwendigerweise ausgeführt werden muss, wird im Folgenden als „Wiederholungsbefehl” bezeichnet. Durch die Wiederverwendung von Wiederholungsbefehlen, die bereits in ein oder mehrere Register der Verarbeitungseinheit geladen sind, die die Befehle des Parsers ausführt, können Taktzyklen vermieden werden, die zum Laden der Wiederholungsbefehle erforderlich sind.
  • Ausführungsformen der Erfindung beruhen auf der Beobachtung, dass das Festlegen der Anzahl von Wiederholungszyklen, die auszuführen sind, wenn sie durch vorhandene Netzwerkprozessor-Architekturen ausgeführt werden, zusätzliche Taktzyklen benötigen können. In einem nützlichen Aspekt der Erfindung wird eine Lösung für diese Aufgabe bereitgestellt, die keine zusätzlichen Taktzyklen benötigt, wodurch die Anzahl von Taktzyklen, die zum Analysieren und Verarbeiten einer Gruppe von Datenpaketen benötigt werden, weiter verringert wird.
  • In einem nützlichen Aspekt stellen Ausführungsformen der Erfindung einen Netzwerkprozessor und ein Verfahren zum Betreiben des Netzwerkprozessors bereit, das die Geschwindigkeit der Analyse von Datenpaketen erhöht, ohne die Notwendigkeit der Verwendung von teurerer Hardware bei einer erhöhten Taktzyklusfrequenz.
  • In einem weiteren nützlichen Aspekt von Ausführungsformen der Erfindung werden ein Netzwerkprozessor und ein Verfahren zum Betreiben des Netzwerkprozessors bereitgestellt, das an eine Vielzahl von unterschiedlichen Protokollen und Formaten der Datenpakete und an eine Vielzahl von unterschiedlichen Hardware-Architekturen des Netzwerkprozessors flexibel angepasst werden kann.
  • In einem weiteren nützlichen Aspekt von Ausführungsformen der Erfindung werden ein Netzwerkprozessor und ein Verfahren zum Betreiben des Netzwerkprozessors bereitgestellt, das sehr flexibel und gleichzeitig schnell ist, indem die Leistungsfähigkeit auf Hardware-Ebene durch einen Parser umgesetzt wird, der in der Lage ist, flexibel anpassungsfähige, durch einen Computer interpretierbare Befehle in der Form von Software, d. h. in Form von Befehlen, die in einer Programmiersprache geschrieben sind, auszuführen.
  • Definitionen
  • Ein in diesem Zusammenhang verwendeter „Netzwerkprozessor” stellt eine integrierte Schaltung dar, die einen Merkmalsatz aufweist, der speziell auf die Anwendungsdomäne Vernetzung zielt. Netzwerkprozessoren enthalten gewöhnlich mehrere heterogene verbundene Verarbeitungs- und Speichereinheiten. Netzwerkprozessoren sind Komponenten aus vielen verschiedenen Typen von Netzwerkausrüstungen wie etwa Routers, Switches, Firewalls, Session Border Controllers und dergleichen.
  • Eine in diesem Zusammenhang verwendete „Regel” ist ein Satz von durch einen Computer interpretierbaren Befehlen, die festlegen, wie ein oder mehrere Datenpakete zu verarbeiten sind. Eine Regel gemäß Ausführungsformen der Erfindung ist eine durch einen Computer interpretierbare Anweisung mit wenigstens zwei logischen Teilen: eine if-Klausel und eine then-Klausel, wobei die then-Klausel nur dann ausgeführt wird, wenn die if-Klausel zu dem booleschen Wert „true” zurückkehrt.
  • Eine in diesem Zusammenhang verwendete „Regel-Repository” ist jedes flüchtige oder nichtflüchtige computerlesbare Datenspeichermedium, in dem eine Vielzahl von Regeln gespeichert ist.
  • Der in diesem Zusammenhang verwendete Ausdruck „Aktionsmaschinen” (Action Machines) bezeichnet Hardware-Beschleuniger, die Teil des Netzwerkprozessors sind. Aktionsmaschinen verarbeiten ausgewählte Teile von Datenpaketen und unterstützen Funktionen wie etwa Paketanalyse und -klassifikation, schnelle Mustersuche, Prüfsummenberechnung u. a.
  • Der in diesem Zusammenhang verwendete Ausdruck „Picoprozessor” bezeichnet einen reduzierten RISC-Prozessor. Ein Picoprozessor gemäß einigen Ausführungsformen weist sechzehn 32-Bit- oder zweiunddreißig 16-Bit-Mehrzweck-Register pro Thread und eine Ein-Zyklus-Arithmetik-Logik-Einheit (one-cycle ALU) auf, die einen Befehlssatz unterstützt, der z. B. binäre Addition und Subtraktion, bitweise logische AND-, OR- und NOT-Operationen, eine logische oder arithmetische Links- und Rechts-Verschiebung, Bit-Manipulationsbefehle u. a. enthält.
  • Ein in diesem Zusammenhang verwendeter „Wiederholungsbefehl” ist jede Art eines durch einen Computer interpretierbaren Befehls, der durch den Parser eines Netzwerkprozessors wiederholt ausgeführt werden kann. In Abhängigkeit von der Hardware-Umgebung kann der Wiederholungsbefehl in jeder Art von Programmiersprache umgesetzt sein wie etwa ASSEMBLER oder C und in jeder Art einer höheren Datenstruktur, z. B. in der Form von Regeln.
  • Ein in diesem Zusammenhang verwendeter „Paketzeiger” ist eine Speicheradresse, die auf ein bestimmtes Bit oder Byte eines Pakets zeigt.
  • Der in diesem Zusammenhang verwendete Ausdruck „Arbeitszyklus” bezeichnet eine logische Arbeitseinheit. In Abhängigkeit von der Ausführungsform und insbesondere von der Hardware-Infrastruktur des in diesen Ausführungsformen verwendeten Netzwerkprozessors kann jeder Arbeitszyklus genau einem Taktzyklus oder n Taktzyklen entsprechen, wobei n eine ganze Zahl größer als 1 ist.
  • Der in diesem Zusammenhang verwendete Ausdruck „geladene Daten” bezeichnet alle Daten, einschließlich durch einen Computer interpretierbare Befehle, die für einen Prozessor ohne zusätzlichen Taktzyklus zum Laden der Daten zur Verfügung stehen. „Geladene Daten” können z. B. in einem oder mehreren Registern des Prozessors gespeichert sein oder können Teil des systemimmanenten Befehlssatzes des Prozessors sein.
  • In einem Aspekt enthalten Ausführungsformen der Erfindung einen Netzwerkprozessor, der eine Regel-Repository und einen Parser aufweist. Die Regel-Repository kann jede Art eines Datenspeichers sein, z. B. ein flüchtiges oder nichtflüchtiges Speichermedium, das Teil des Netzwerkprozessors ist oder funktionsmäßig mit diesem verbunden ist. Gemäß Ausführungsformen kann die Regel-Repository Teil des Parsers oder mit diesem funktionsmäßig verbunden sein. Eine Regel-Repository kann z. B. als relationale Datenbank, als Datenspeicher, der eine oder mehrere Dateien aufweist, wobei die Dateien eine oder mehrere Regeln aufweisen, als Datenspeicher, der Regeln in einem seriellen Datenformat aufweist, und dergleichen umgesetzt sein. Die Regel-Repository kann eine Vielzahl von Regeln aufweisen. Der Parser weist eine oder mehrere Verarbeitungseinheiten auf, die eine oder mehrere Regeln ausführen, die durch den Parser von der Regel-Repository geladen wurden. In Abhängigkeit von der Ausführungsform können die eine oder die mehreren Verarbeitungseinheiten z. B. als Picoprozessoren umgesetzt sein.
  • Der Parser ist in der Lage, in wenigstens einer „normalen Betriebsart” und einer „Wiederholungs-Betriebsart” zu arbeiten. In der normalen Betriebsart ist der Parser in der Lage, wenigstens eine Regel von der Regel-Repository in einem ersten Arbeitszyklus zu laden. In der normalen Betriebsart ist der Parser außerdem in der Lage, die wenigstens eine geladene Regel an einem Datenpaket in einem zweiten Arbeitszyklus auszuführen, wodurch das Datenpaket analysiert wird, wobei ein Analyseergebnis durch den Parser erzeugt wird.
  • In der Wiederholungs-Betriebsart ist der Parser in der Lage, einen Wiederholungsbefehl an dem Datenpaket bei jeder von einer oder mehreren Wiederholungen erneut anzuwenden. Jede Wiederholung wird durch den Parser in einem zweiten Arbeitszyklus ausgeführt. Das Ausführen des ersten Arbeitszyklus zum Laden des Wiederholungsbefehls ist in der Wiederholungs-Betriebsart nicht erforderlich und wird deswegen in der Wiederholungs-Betriebsart des Parsers nicht ausgeführt. Der Parser ist funktionsmäßig in der Lage, in Abhängigkeit des Analyseergebnisses dynamisch von der normalen Betriebsart zur Wiederholungs-Betriebsart umzuschalten. In Abhängigkeit von dem Analyseergebnis kann der Parser gleichfalls in der normalen Betriebsart bleiben.
  • Der Parser ermittelt die Anzahl von Wiederholungen, die in der Wiederholungs-Betriebsart auszuführen sind, dynamisch durch das Bewerten geladener Daten. Die geladenen Daten sind alle Daten oder Befehle, die zum Zeitpunkt des Beginns der Wiederholungs-Betriebsart für eine Ausführung durch eine oder mehrere Verarbeitungseinheiten, die Befehle des Parsers ausführen, unmittelbar zur Verfügung stehen. Der Ausdruck „unmittelbar” bedeutet hierbei, dass zum Laden der Daten oder Befehle kein zusätzlicher Taktzyklus erforderlich ist.
  • Gemäß Ausführungsformen ist das Analyseergebnis das Ergebnis des Vergleichens eines oder mehrerer Bits oder Bytes des Datenpakets mit einem oder mehreren Bits oder Bytes der wenigstens einen geladenen Regel.
  • Der Parser weist gemäß Ausführungsformen einen Gruppe von einem oder mehreren programmierbaren Picoprozessoren auf, die funktionsmäßig in der Lage sind, eine oder mehrere Regeln auszuführen, die von der Regel-Repository geladen wurden. Diese Regeln weisen durch einen Computer interpretierbare Befehle zum Analysieren von Datenpaketen auf. Das in diesem Zusammenhang verwendete Analysieren ist der Vorgang zum Ermitteln der Struktur eines Datenpakets und Verarbeiten seines Inhalts. Der Parser ist „programmierbar”, wenn die Regeln an jede Änderung an dem Typ des verarbeiteten Datenpakets oder gemäß neuen Anforderungen in Bezug auf den Verarbeitungsablauf leicht angepasst werden können. Der Parser, der die Picoprozessoren aufweist, die die Regeln ausführen, kann als eine finite Zustandsmaschine beschrieben werden. Gemäß einigen Ausführungsformen weisen die Picoprozessoren des Parsers ferner einen Satz von Befehlen auf, die Bestandteil der Picoprozessoren sind und für eine Ausführung durch die Picoprozessoren ohne jeden zusätzlichen Ladeschritt unmittelbar zur Verfügung stehen.
  • Gemäß Ausführungsformen ist ein „Arbeitszyklus” eine Folge von Schritten, die bei einer Ausführung zu einem Zustandsübergang des Parsers führen können, wobei der Parser als eine finite Zustandsmaschine beschrieben wird. Gemäß Ausführungsformen der Erfindung ist der Parser als eine finite Zustandsmaschine umgesetzt, die funktionsmäßig in der Lage ist, zwischen einer „Wiederholungs-Betriebsart”, bei der ein Zustandsübergang nach der Ausführung jedes einzelnen Arbeitszyklus realisiert wird, und einer „normalen Betriebsart”, bei der ein Zustandsübergang nach jedem zweiten Arbeitszyklus auftritt, dynamisch umzuschalten.
  • Gemäß einigen Ausführungsformen der Erfindung können die geladenen Daten, die durch den Parser verwendet werden, um die Anzahl von Wiederholungen zu ermitteln, sein: a) Daten, die in einer Regel enthalten sind, die die Wiederholungsbefehle in einem ersten Abschnitt aufweist und die die Anzahl von Wiederholungen, die durch die Wiederholungsbefehle auszuführen sind, in einem anderen Abschnitt der Regel aufweist; und/oder b) Daten, die in einem Abschnitt eines Datenpakets enthalten sind, z. B. in dem Vorsatz des Datenpakets, die eine Angabe der Länge z. B. des Nutzdatenabschnitts des Datenpakets sind, die durch den Parser verwendet werden können, um die Anzahl von auszuführenden Wiederholungen zu ermitteln.
  • Gemäß Ausführungsformen der Erfindung ermittelt der Parser dynamisch die Anzahl der einen oder der mehreren Wiederholungen, die in der Wiederholungs-Betriebsart auszuführen sind, durch das Ausführen der folgenden Schritte:
    Lesen einer Wiederholungszahl, die in der geladenen Regel, z. B. in einem speziellen „RC”-Feld der Regel, codiert ist;
    Aufrufen einer Routine, die in der geladenen Regel gekennzeichnet ist, wobei die aufgerufene Routine die Anzahl von auszuführenden Wiederholungen dynamisch berechnet z. B. durch Analysieren des Datenpakets. Gemäß bevorzugten Ausführungsformen ist die aufgerufene Routine Teil des Befehlssatzes der einen oder der mehreren Verarbeitungseinheiten, die Befehle des Parsers ausführen, oder
    Lesen des Wiederholungszählwerts aus dem Datenpaket.
  • Die Schritte können durch ein spezielles Wiederholungs-Steuereinheit-Softwaremodul des Parsers ausgeführt werden. Die Ausdrücke „Programmroutine” und „Programmcode” werden in diesem Zusammenhang synonym verwendet.
  • Eine Routine zum dynamischen Ermitteln der Anzahl von Wiederholungen ist gemäß Ausführungsformen der Erfindung Teil des Befehlssatzes der einen oder der mehreren Verarbeitungseinheiten, die Befehle des Parsers ausführen, z. B. Befehle, die Teil der einen oder der mehreren Regeln sind, die in den Parser geladen werden. Da die Routine Teil des Befehlssatzes der Verarbeitungseinheiten ist, muss sie nicht geladen werden; die Routine steht ohne einen Ladeschritt unmittelbar zur Verfügung. Gemäß bevorzugten Ausführungsformen handelt es sich bei dem einen oder den mehreren Verarbeitungseinheiten um Picoprozessoren.
  • Gemäß bevorzugten Ausführungsformen schaltet der Parser wieder automatisch zur normalen Betriebsart, nachdem alle Wiederholungen ausgeführt wurden, die für den Wiederholungsbefehl in der Wiederholungs-Betriebsart auszuführen sind. Gemäß bevorzugten Ausführungsformen wurden die Wiederholungsbefehle, die in der Wiederholungs-Betriebsart auszuführen sind, in die Register einer oder mehrerer Verarbeitungseinheiten geladen, bevor der Parser die Wiederholungs-Betriebsart beginnt. Die Wiederholungsbefehle können z. B. als Teil oder als Erweiterung einer Regel umgesetzt sein, die bereits in einem Arbeitszyklus, der in der normalen Betriebsart des Parsers ausgeführt wurde, geladen wurde.
  • Ein äußerst vorteilhaftes Merkmal von Ausführungsformen der Erfindung besteht darin, dass durch den Parser kein zusätzlicher Arbeitszyklus erforderlich ist, um die Anzahl von Wiederholungen zu ermitteln, die in der Wiederholungs-Betriebsart auszuführen sind, da die Anzahl von Wiederholungen oder Befehle zum dynamischen Ermitteln der Anzahl in dem Moment, wenn der Parser die Wiederholungs-Betriebsart beginnt, bereits zur Verfügung stehen (d. h. in das Register der Verarbeitungseinheiten, die die Befehle des Parsers ausführen, geladen wurden oder Teil des Befehlssatzes der Verarbeitungseinheiten sind).
  • Gemäß weiteren Ausführungsformen der Erfindung weist der Netzwerkprozessor ferner eine oder mehrere Aktionsmaschinen zum Verarbeiten von Datenpaketen auf, und das Ausführen der Wiederholungsbefehle in der Wiederholungs-Betriebsart weist ein Verschieben von einem oder mehreren Teilen des Datenpakets zu der einen oder den mehreren Aktionsmaschinen auf.
  • Gemäß weiteren Ausführungsformen der Erfindung kann das Ausführen der wenigstens einen geladenen Regel in der normalen Betriebsart außerdem ein Verschieben von einem oder mehreren Teilen des Datenpakets zu der einen oder den mehreren Aktionsmaschinen oder ein Ausführen anderer Datenverarbeitungsschritte aufweisen, die wiederholt ausgeführt werden müssen.
  • Gemäß weiteren Ausführungsformen werden die Befehle der Wiederholungs-Betriebsart, die durch den Parser auszuführen sind, als Teil der geladenen wenigstens einen Regel oder als Erweiterung der wenigstens einen Regel umgesetzt. Gemäß Ausführungsformen lädt der Parser eine Vielzahl von ersten Regeln und die Wiederholungsbefehle werden als Teil einer der geladenen ersten Regeln umgesetzt, wodurch die eine erste Regel eine Regel ist, die Bits oder Bytes aufweist, die mit einem ausgewählten Satz von Bits oder Bytes des Datenpakets identisch sind. Gemäß Ausführungsformen wird die Identität der Bits oder Bytes der ersten Regel und der Bits und Bytes des Datenpakets als das Analyseergebnis oder als Teil des Analyseergebnisses zurückgegeben.
  • Gemäß weiteren Ausführungsformen weisen die Regeln der Regel-Repository Regeln wenigstens eines ersten und eines zweiten Regeltyps auf.
  • Jeder Regeltyp wird durch einen oder mehrere Datenwerte angegeben und festgelegt, die in der Regel enthalten sind. Jede Regel des ersten Regeltyps (d. h. des „normalen Regeltyps”) wird durch den Parser in der normalen Betriebsart ausgeführt. Jede Regel des zweiten Regeltyps (d. h. des „Wiederholungs-Regeltyps”) wird durch den Parser in der normalen Betriebsart ausgeführt, wenn die Regel in einer ersten Wiederholung von einer Gruppe von einer oder mehreren Wiederholungen ausgeführt wird oder wird in einer Wiederholungs-Betriebsart in einer m-ten Wiederholung der einen oder der mehreren Wiederholungen ausgeführt, wobei m eine ganze Zahl größer als 1 ist.
  • Gemäß weiteren Ausführungsformen sind die Wiederholungsbefehle, die durch den Parser auszuführen sind, als Teil von Regeln oder als Erweiterungen von Regeln umgesetzt, die eine Kennung des Wiederholungs-Regeltyps aufweisen, wobei die Regeltyp-Kennung angibt, ob die Regel Wiederholungsbefehle aufweist oder Wiederholungsbefehle angibt, die durch den Parser in der Wiederholungs-Betriebsart wiederholt ausgeführt werden können. Die Kennung der Wiederholungs-Betriebsart kann durch den Parser verwendet werden, wenn ein Datenpaket analysiert wird und entschieden wird, welcher Regelsatz für den nachfolgenden Arbeitszyklus zu laden ist.
  • Gemäß weiteren Ausführungsformen weisen wenigstens einige der Regeln einen Eingabevektor, der bei der Analyse des Datenpakets zu verwenden ist, und einen Ausgabevektor auf, wobei ein Ausgabevektor ein Platzhalter für das Speichern von Teilen der analysierten Datenpakete in Abhängigkeit von dem Analyseergebnis ist. Der Eingabevektor ist ein Platzhalter für Daten und weist ein Feld „Identitätsvergleichsmaske” und ein Feld „Identitätsvergleichswert” auf, wobei das Feld „Identitätsvergleichswert” Datenbits aufweist, die mit Datenbits an einer bestimmten Position des Datenpakets zu vergleichen sind, wobei ein oder mehrere Datenbits von dem Vergleich ausgeschlossen sind, wenn das Feld „Identitätsvergleichsmaske” eine Maskierung von einem oder mehreren Datenbits vorschreibt, die in dem Feld „Identitätsvergleichswert” enthalten sind. Wenn z. B. das Feld Identitätsvergleichsmaske ein „1”-Bit an der 9. Bit-Position des Felds aufweist, kann das 9. Bit des Felds Identitätsvergleichswert maskiert sein und nicht für den Vergleich verwendet werden.
  • Gemäß weiteren Ausführungsformen wird die Routine zum Berechnen der Anzahl von Wiederholungen, die durch den Parser in der Wiederholungs-Betriebsart auszuführen ist, vor oder in dem Moment, wenn der Parser das Ausführen des Wiederholungsbefehls in der Wiederholungs-Betriebsart beginnt.
  • Gemäß weiteren Ausführungsformen wird wenigstens ein Protokoll, das zu verwenden ist, um das Datenpaket weiterzuleiten oder zu verarbeiten, durch Vergleichen von Daten, die in einem Vorsatzfeld des Datenpakets enthalten sind, mit Daten, die in dem Felds Identitätsvergleichswert der geladenen Regel enthalten sind, identifiziert.
  • Gemäß weiteren Ausführungsformen weist das Datenpaket einen Begleitdatenabschnitt und einen Nutzdatenabschnitt auf. Ein erster Satz von Regeln wird geladen und durch den Parser verwendet, um den Begleitdatenabschnitt des Datenpakets in einem ersten Arbeitszyklus zu analysieren. Als ein Ergebnis der Ausführung der Regel an dem Datenpaket, die ein Beispiel für die Ausführung eines Analyseschritts darstellt, um eine Analyseentscheidung zurückzugeben, wird durch den Parser ein zweiter Satz von Regeln ermittelt, der durch den Parser in einem nachfolgenden Arbeitszyklus zu laden ist. Der zweite Satz von Regeln wird verwendet, um den Nutzdatenabschnitt des Datenpakets zu verarbeiten, wobei die Verarbeitung eine oder mehrere Wiederholungen aufweisen kann, die jeweils in einem entsprechenden Arbeitszyklus auszuführen sind. Gemäß Ausführungsformen ist wenigstens eine Regel des zweiten Satzes von Regeln eine Wiederholungsregel, die einen Wiederholungsbefehl oder eine Kennung des Wiederholungsbefehls aufweist, der Bestandteil des Befehlssatzes der Picoprozessoren ist, wobei der Wiederholungsbefehl an dem Datenpaket durch den Parser wiederholt auszuführen ist.
  • Eine in diesem Zusammenhang verwendete „Analyseentscheidung” ist eine Verarbeitungsoperation, die durch den Parser ausgeführt wird, indem ein oder mehrere Bytes eines Datenpakets bewertet werden, insbesondere Bits und Bytes, die in einem Vorsatzfeld des Datenpakets enthalten sind, um zu ermitteln, wie das Datenpaket in nachfolgenden Analyseschritten zu verarbeiten ist. Üblicherweise beinhaltet die Analyseentscheidung komplexe Operationen und kann in Bezug auf Rechenleistung aufwändig sein.
  • Gemäß weiteren Ausführungsformen weist das Datenpaket zwei oder mehrere verschachtelte Datenschichten auf, wobei jede Datenschicht einen Begleitdaten- und einen Nutzdatenabschnitt aufweist, wobei der Nutzdatenabschnitt der ersten Datenschicht die Begleitdaten und den Nutzdatenabschnitt einer zweiten Datenschicht aufweist. Der Schritt zum Laden einer oder mehrerer zweiter Regeln, denen zufolge die Daten verarbeitet werden, die in der zweiten Datenschicht enthalten sind, wird durch die wenigstens eine erste Regel ermittelt, die Datenwerte analysiert, die in den Begleitdaten der ersten Datenschicht enthalten sind.
  • Eine in diesem Zusammenhang verwendete „Schicht” kann sich auf verschiedene Schichten der Datenübertragung beziehen, insbesondere Schichten, die gemäß dem OSI-Schema klassifiziert sind, z. B. die L2-L4-OSI-Schichten. Unterschiedliche Datenübertragungsprotokolle und Datenformate können verwendet werden, um Daten in Datenpaketen zu speichern, die über ein Netzwerk zu anderen Anwendungen übertragen werden sollen. Jede Schicht kann zwei Typen von Daten aufweisen: „Begleit-”Daten (envelope data) und „Nutz-”Daten (payload data). Die in diesem Zusammenhang verwendeten Begleitdaten weisen Meta-Informationen auf, die durch Netzwerkeinheiten wie etwa Router, Switches usw. verwendet werden können, um das Datenpaket zu verwalten und das Datenpaket zu dem geeigneten Empfänger umzuleiten. Der „Begleitdaten-”Abschnitt eines Datenpakets ist häufig, jedoch nicht notwendigerweise ein linear kohärenter Abschnitt von Daten, die in einem Datenpaket enthalten sind, und weist Meta-Informationen auf, die eine Angabe darstellen, wie die in dem Nutzdatenabschnitt enthaltenen Daten verarbeitet werden sollten und an welches Ziel das Datenpaket gesendet werden soll. Üblicherweise werden die Meta-Daten in Form eines Vorsatzabschnitts einer Datenschicht eines Datenpakets gespeichert.
  • Zum Beispiel weist die erste Schicht des Nutzdatenabschnitts eines Datenpakets erste Nutzdaten der ersten Datenschicht auf. Bei den ersten Nutzdaten kann es sich um einen Begleitdatenabschnitt und einen Nutzdatenabschnitt einer zweiten Datenschicht handeln. Bei dem zweiten Nutzdatenabschnitt kann es sich um einen Begleitdatenabschnitt und einen Nutzdatenabschnitt einer dritten Datenschicht handeln usw. die Daten, die in jeder Datenschicht enthalten sind, können gemäß Datenformaten organisiert sein, die für jede Schicht speziell sind.
  • Gemäß Ausführungsformen der Erfindung ist es möglich, ein Datenpaket zu verarbeiten, das mehrere verschachtelte Datenschichten anhand einer Kaskade von unterschiedlichen Sätzen von Regeln aufweist, wobei aufgrund jedes Satzes von Regeln wenigstens der Begleitdatenabschnitt einer entsprechenden Datenschicht analysiert und verarbeitet wird. Ein erster Satz von Regeln kann zum Analysieren der Begleitdaten einer ersten Datenschicht geeignet sein und kann ermöglichen, dass der Parser einen zweiten Satz von Regeln ermittelt, aufgrund derer wenigstens der Begleitdatenabschnitt einer zweiten Datenschicht analysiert wird, wobei der Begleitdatenabschnitt und der Nutzdatenabschnitt der zweiten Datenschicht in dem Nutzdatenabschnitt der ersten Datenschicht enthalten sind. Das Analysieren einer dritten Datenschicht kann das Laden eines dritten Satzes von Regeln erfordern usw.
  • Gemäß nochmals weiteren Ausführungsformen wird die Anzahl von Wiederholungen durch den Parser ermittelt, der eine Programmroutine ausführt, die aus einer Gruppe ausgewählt ist, die aufweist:
    Programmcode, die den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines vorgegebenen Abschnitts des Datenpakets durch den Parser erreicht wird;
    Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines IPv4-Vorsatzabschnitts durch den Parser erreicht wird;
    Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines IPv6-Erweiterungsvorsatzabschnitts durch den Parser erreicht wird;
    Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines TCP-Vorsatzabschnitts durch den Parser erreicht wird;
    Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position von Nutzdaten einer Schicht 4 durch den Parser erreicht wird;
    Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl bis zur letzten Byte-Position des analysierten Datenpakets auszuführen. Die letzte Option kann als eine „Sicherungs-Analysestrategie” wirken: Falls das Format des Datenpakets nicht erfasst wird, stellt dieser Programmcode sicher, dass das Datenpaket trotzdem verarbeitet wird.
  • Das Ermitteln der Anzahl von Wiederholungen, die durch den Parser durch Ausführen des Wiederholungsbefehls auszuführen sind, wird nicht als „Analyseentscheidung” betrachtet. Gemäß Ausführungsformen der Erfindung ist das Ermitteln der Anzahl von auszuführenden Wiederholungen rechentechnisch nicht aufwändig, da der Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines bestimmten Abschnitts des Datenpakets erreicht wird, gemäß Ausführungsformen durch Programmcode festgelegt ist, der Bestandteil des Befehlssatzes der Verarbeitungseinheiten (z. B. der Picoprozessoren) ist und deswegen zur Ausführung unmittelbar zur Verfügung steht. Üblicherweise ist das Ermitteln der Anzahl von erforderlichen Wiederholungen rechentechnisch kostengünstig, da die Länge eines Datenpaketabschnitts, der verarbeitet werden soll, in Abhängigkeit vom Typ des Abschnitts eine feststehende bekannte Länge ist oder einfach ermittelt werden kann. Wenn eine bestimmte Gruppe von Bits oder Bytes, die in einer Wiederholung verarbeitet wird, vorgegeben ist, kann die Anzahl von Wiederholungen, die auszuführen sind, anhand der Anzahl von Bits oder Bytes, die pro Wiederholungsbefehl verarbeitet werden, und bei gegebener Länge des Abschnitts des Datenpakets, der in der Wiederholungs-Betriebsart zu verarbeiten ist, üblicherweise leicht und schnell berechnet werden.
  • Gemäß Ausführungsformen kann der Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis eine bestimmte Position in dem Datenpaket durch den Parser erreicht wird, Teil des Befehlssatzes der Verarbeitungseinheiten des Parsers sein oder kann Teil von einer oder mehreren Regeln sein, die durch den Parser bereits geladen wurden. Gemäß Ausführungsformen weist der Programmcode den eigentlichen Wiederholungsbefehl und Befehle zum Ermitteln der Anzahl von Wiederholungen auf. Der Programmcode könnte z. B. eine Kopie des Wiederholungsbefehls und eine Beendigungsbedingung aufweisen. Der Programmcode kann außerdem so viele Kopien des Wiederholungsbefehls aufweisen wie erforderlich sind, um ein Datenpaketfeld von vorgegebener bekannter Größe zu verarbeiten. Gemäß nochmals weiteren Ausführungsformen kann der Wiederholungsbefehl in der einen oder den mehreren geladenen Regeln gespeichert sein, wobei die Regeln zusätzlich eine Kennung für Programmcode aufweisen, der bei der Ausführung einen numerischen Wert zurückgibt und lediglich zum Ermitteln der Anzahl von auszuführenden Wiederholungen verwendet wird. Gemäß Ausführungsformen der Erfindung kann ein Parser eine oder mehrere der Umsetzungsvarianten verwenden, indem z. B. unterschiedliche Regeln und unterschiedliche Arten von Programmcode, der Teil des Befehlssatzes der Verarbeitungseinheiten ist, in Kombination verwendet werden.
  • Gemäß weiteren Ausführungsformen ist der Parser während der Ausführung von Wiederholungsbefehlen in der Wiederholungs-Betriebsart funktionsmäßig in der Lage, Paketzeiger zu lesen und zu verwenden, die während der Ausführung der Wiederholungsbefehle dynamisch aktualisiert werden. Die Paketzeiger zeigen auf den Beginn eines Abschnitts von Daten des Datenpakets, der in einer Wiederholung durch den Parser gemäß den Wiederholungsbefehlen zu verarbeiten ist.
  • Der Parser weist gemäß Ausführungsformen wenigstens einen Paketzeiger auf, der die Position des ersten Bit oder Byte angibt, an dem der Parser gegenwärtig arbeitet. Mittels des dynamisch aktualisierten wenigstens einen Paketzeigers kann der Parser stets die Anfangsposition des Datenabschnitts des Datenpakets ermitteln, der im nächsten Arbeitszyklus verarbeitet werden soll. Der Parser kann z. B. wiederholt Blöcke aus 4 Bytes eines Datenpakets zu anderen Hardware-Komponenten des Netzwerkprozessors z. B. zu Aktionsmaschinen verschieben. Bei jedem Schritt der Verschiebung eines 4-Byte-Blocks zu den Aktionsmaschinen wird der Paketzeiger um 4 Byte erhöht und zeigt folglich auf den Beginn des 4-Byte-Blocks, der in dem nächsten Arbeitszyklus zu den Aktionsmaschinen verschoben werden soll.
  • Gemäß weiteren Ausführungsformen entspricht jede Regel, die durch den Parser geladen wird, einem der wenigstens einen Paketzeiger. Gemäß weiteren Ausführungsformen zeigt jeder Paketzeiger auf ein erstes Bit einer Gruppe von benachbarten Bits in dem Datenpaket. In jedem Arbeitszyklus, der in der Wiederholungs-Betriebsart des Parsers ausgeführt wird, wird eines der einen oder mehreren Gruppen von benachbarten Bits zu den Aktionsmaschinen übertragen.
  • In einem weiteren Aspekt beziehen sich Ausführungsformen der Erfindung auf ein Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse, die durch einen Netzwerkprozessor ausgeführt wird, wobei das Verfahren aufweist:
    Laden einer Regel von einer Regel-Repository in einem Arbeitszyklus durch einen Parser, wobei die Regel-Repository eine Vielzahl von Regeln aufweist, wobei der Parser in einer normalen Betriebsart betrieben wird;
    Ausführen der wenigstens einen geladenen Regel an einem Datenpaket in einem zweiten Arbeitszyklus in der normalen Betriebsart, um das Datenpaket zu analysieren, wodurch durch den Parser ein Analyseergebnis erzeugt wird;
    dynamisches Umschalten zwischen der normalen Betriebsart und einer Wiederholungs-Betriebsart des Parsers, wobei das Umschalten in Abhängigkeit von dem Analyseergebnis ausgeführt wird,
    falls der Parser zur Wiederholungs-Betriebsart umschaltet, erneutes Anwenden eines Wiederholungsbefehls auf das Datenpaket in jeder von einer oder mehreren Wiederholungen, wobei jede Wiederholung in einem zweiten Arbeitszyklus ausgeführt wird, wobei ein Ausführen eines ersten Arbeitszyklus zum Laden des Wiederholungsbefehls in der Wiederholungs-Betriebsart nicht erforderlich ist und weggelassen wird, und wodurch der Parser eine Anzahl von Wiederholungen, die in der Wiederholungs-Betriebsart auszuführen sind, durch Bewerten von geladenen Daten dynamisch ermittelt, wobei die geladenen Daten:
    Daten sind, die Teil der geladenen wenigstens einen Regel sind, oder
    Daten sind, die Teil des Datenpakets sind.
  • Ausführungsformen des Verfahrens zum Beschleunigen der Datenpaket-Syntaxanalyse wurden zuvor für verschiedene Ausführungsformen des Netzwerkprozessors beschrieben.
  • In einem weiteren Aspekt bezieht sich die Erfindung auf ein computerlesbares nichtflüchtiges Speichermedium, das Befehle aufweist, die bei Ausführung durch eine Verarbeitungseinheit die Schritte des Verfahrens zum Betreiben eines Netzwerkprozessors gemäß einer der oben angegebenen Ausführungsformen ausführt.
  • Wie dem Fachmann klar sein wird, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden. Dementsprechend können, falls nicht ausdrücklich anders angegeben, Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (die Firmware, residente Software, Mikrocode usw. enthält) oder einer Ausführungsform, die Software- und Hardware-Aspekte kombiniert, annehmen, die hier alle allgemein als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, die computerlesbaren Programmcode aufweisen, der darauf verkörpert ist. Jede Kombination aus einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Bei dem computerlesbaren Speichermedium kann es sich z. B. um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede geeignete Kombination des Vorhergehenden sein, ist jedoch nicht auf diese beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten oder speichern kann.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache ”C” oder ähnliche Programmiersprachen.
  • Aspekte der vorliegenden Erfindung sind im Folgenden unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Bockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch Computerprogrammbefehle umgesetzt werden können und durch einen Prozessor z. B. durch einen oder mehrere Picoprozessoren verarbeitet werden können. Diese Computerprogrammbefehle können als Regeln einer Regel-Repository und als Programmbefehle umgesetzt sein, die die Funktionseinheiten des Parsers spezifizieren. Die Computerprogrammbefehle können in einem computerlesbaren Medium gespeichert sein, das einen Netzwerkprozessor, eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, wozu Befehle gehören, die die Funktion/Wirkung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaubilds festgelegt sind.
  • Die Computerprogrammbefehle können außerdem in einen Netzwerkprozessor, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Netzwerkprozessor, der anderen programmierbaren Vorrichtung oder anderen Einheiten ausgeführt werden sollen, um einen mittels Computer umgesetzten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen bereitstellen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaubilds festgelegt sind.
  • Gemäß der Erfindung werden ein Netzwerkprozessor, ein Verfahren zum Betreiben des Netzwerkprozessors und computerlesbare Medien wie in den angefügten unabhängigen Ansprüchen beschrieben, bereitgestellt. Ausführungsformen der Erfindung sind in den angefügten abhängigen Ansprüchen beschrieben. Weitere Aspekte der Erfindung werden im Folgenden durch bevorzugte Umsetzungen und Beispiele unter Bezugnahme auf die angefügten Figuren beschrieben.
  • Kurzbeschreibung der Zeichnungen
  • Die oben genannten und weitere Elemente, Merkmale und Vorteile der Erfindung werden durch Lesen der folgenden genaueren Beschreibung von Ausführungsformen der Erfindung in Verbindung mit den Figuren besser verstanden, worin:
  • 1 eine höhere Netzwerkprozessor-Architektur darstellt;
  • 2 den Host-Ethernet-Adapter, der Teil des Netzwerkprozessors ist, genauer darstellt;
  • 3 eine Regel und ihre Nutzung durch Funktionseinheiten eines Parsers darstellt;
  • 4 die Struktur eines IPv6-Datenpakets darstellt;
  • 5 eine Darstellung von acht Arbeitszyklen in der normalen Betriebsart und in der Wiederholungs-Betriebsart ist;
  • 6 ein Ablaufplan eines Verfahrens zum Betreiben eines Netzwerkprozessors ist; und
  • 7 ein Blockschaubild einer Einheit ist, die einen Netzwerkprozessor aufweist.
  • Genaue Beschreibung der Erfindung
  • Ausführungsformen der Erfindung werden im Folgenden beispielhaft unter Bezugnahme auf die beigefügten Figuren und Zeichnungen beschrieben.
  • 1 stellt einen Netzwerkprozessor 101 des Architekturtyps „Prism” dar. Der Netzwerkprozessor weist eine Vielzahl von Komponenten zum Empfangen, Puffern, Verarbeiten und Weiterleiten von Datenpaketen auf. Einige wesentliche Komponenten können aus einer höheren Perspektive identifiziert werden, z. B.: Die Prozessoren 102 bis 105 sind gemäß bevorzugten Ausführungsformen Mehrzweck-Prozessoren. Jeder Prozessor kann einen L2-Cachespeicher aufweisen und kann als eine Kombination aus einer Mikromaschine, die eine bitweise serielle Verarbeitung ausführt, und einem RISC-Prozessor, der eine Paket/Zellen-Warteschlangenbildung ausführt, umgesetzt sein. Die Kanalprozessoren können in ein Cluster aus z. B. vier Kanalprozessoren gruppiert sein, um eine kombinierte Verarbeitung für schnelle Schnittstellen wie etwa bei Gigabit-Ethernet zu gewährleisten.
  • Die Speicherzugriffeinheit 106 ist zuständig für das Ausführen von E/A-Operationen an dem Systemspeicher. Der Systemspeicher ist der Hauptspeicher der Einheit, die den Netzwerkprozessor aufweist. Die Einheit könnte z. B. ein Router oder ein Switch sein.
  • Mehrere Netzwerkprozessormodule 107 bis 110 führen zusätzliche Funktionen aus, z. B. Sicherheitsfunktionen wie Verschlüsselung, Berechtigung, Firewall-Bildung und/oder Eindringungserfassung; Musterübereinstimmung; Kompression und Dekompression u. a.
  • Ein Host-Ethernet-Adapter (HEA) 116 ist ein physischer Ethernet-Adapter für die Prozessoren 102 bis 105 des Netzwerkprozessors. HEAs bieten eine hohen Durchsatz, eine geringe Latenzzeit und eine Visualisierungsunterstützung für Ethernet-Verbindungen. HEAs sind außerdem als Integrated Virtual Ethernet Adapters (IVE-Adapter) bekannt. Gemäß Ausführungsformen unterstützt der HEA Geschwindigkeiten des Netzwerkverkehrs von z. B. 4 × 10 GB/s. Eine wesentliche Funktion des HEA besteht darin, dass er als ein Modul betrachtet werden kann, das eine Hardware-Beschleunigung für Netzwerk-Verarbeitungsaufgaben bereitstellt. Der HEA weist einen Host-Ethernet-Controller und eine Medienzugangs-Steuereinheit (MAC-Einheit) auf. Ein MAC ist eine eindeutige Kennung, die Netzwerkschnittstellen für Datenübertragungen auf dem physischen Netzwerksegment zuweist. MAC-Adressen sind am häufigsten durch den Hersteller einer Netzwerkschnittstellenkarte zugewiesen und sind z. B. in ihrer Hardware, dem Festwertspeicher der Karte oder einem anderen Firmware-Mechanismus gespeichert.
  • PBIC-Einheiten 115 sind Schnittstellen zwischen dem Bus 113 und anderen Komponenten des Netzwerkprozessors.
  • Der Bus 113 verbindet die Elemente des Netzwerkprozessors.
  • Die Paketprozessoreinheit 117 weist mehrere Module für Quality-of-Service-Funktionen (QoS-Funktionen) und Datenpaketplanung auf. Sie weist ein DMA-Modul für einen Systemspeicher-Direktzugriff auf. Die Paketprozessoreinheit 117 führt eine Datenpaketverarbeitung von Datenpaketen aus, die durch die Switch-Schnittstelle 119 zu transportieren sind. Die Switch-Schnittstelle 119 wirkt als Schnittstelle der Paketprozessoreinheit 117, des HEA und mehrerer E/A-Kanäle, die in 1 unten angegeben sind.
  • Zusätzliche Module 121 bis 125 werden für zahlreiche E/A-betreffende Funktionen verwendet.
  • Im Folgenden werden Figuren, Funktionsmodule und/oder Verfahrensschritte, die durch den HEA ausgeführt werden, genauer beschrieben.
  • 2 stellt den Host-Ethernet-Adapter 116, der eine Vielzahl von Modulen zum Empfangen, Verarbeiten und Übertragen von Datenpaketen aufweist, genauer dar. Lediglich eine kleine Teilmenge von Komponenten und Modulen des HEA sind in 2 dargestellt. Module zum Verarbeiten von Datenpaketen 210, 212 und Module 211, 213 zum Übertragen der Datenpakete können in Abhängigkeit von der Umsetzung des HEA auf einer Vielzahl von unterschiedlicher Hardware- und/oder Software-Komponenten wie etwa Speicher, ICs, Software-Module und dergleichen beruhen.
  • Datenpakete werden von einer RxXGMAC/RxXGXSPCS-Komponente 209 und einer RxGMAC/RxSGMIIPCS-Komponente 216 empfangen. Die Komponenten 209, 216 sind Hardware-Komponenten, die einfache Hardware-Operationen gewährleisten, zu denen z. B. das Empfangen von Datenpaketen, das Klassifizieren der empfangenen Pakete und das Weiterleiten der Datenpakete zu der RBB-Einheit 214 gehören. Der RBB ist funktionsmäßig in der Lage komplexe, anspruchsvollere Operationen an den Datenpaketen auszuführen, die eine beträchtliche Menge von Verarbeitungszeit erfordern können. Da die Anzahl von Datenpaketen, die durch den RBB von den Modulen 209, 216 pro Zeiteinheit empfangen werden, die Menge von Datenpaketen übersteigen kann, die die RBB-Einheit verarbeiten kann, werden die empfangenen Datenpakete in dem Zeilenpuffer 205 gespeichert. Ein Zeilenpuffer ist eine Datenstruktur, die eine feststehende Menge von Daten in einer sequenziellen Reihenfolge speichert, z. B. in Übereinstimmung mit der Reihenfolge, in der die Datenpakete von dem Zeilenpuffer empfangen werden; wobei der Zeilenpuffer 205 gemeinsam mit der RBB-Einheit 214 einen temporären Datenpaketpuffer bildet, der dabei hilft, Unterschiede der Geschwindigkeit bei Empfang und Verarbeitung von Datenpaketen durch die RBB-Einheit auszugleichen. Die in diesem Zusammenhang verwendeten Ausdrücke „einfache” und „anspruchsvollere” geben an, dass „anspruchsvollere” Operationen üblicherweise, jedoch nicht notwendigerweise von komplexer Struktur, rechentechnisch aufwändig und durch ein Software-Modul umgesetzt sind, während „einfache” Operationen üblicherweise, jedoch nicht notwendigerweise, von einfacherer Natur und üblicherweise durch Hardware-Module, z. B. ASICs umgesetzt sind.
  • Nachdem die Datenpakete durch die RBB-Einheit verarbeitet wurden, werden sie von der RBB-Einheit zu dem BPFC-Modul 201 weitergeleitet. Das BPFC-Modul („BFSM Parser Filter Checksum”) ist ein Modul, das Datenpakete von der RBB-Einheit empfängt, die empfangenen Datenpakete verarbeitet und sie an die RBB-Einheit zurückgibt (Pfeil 219). Eine der Hauptfunktionen, die durch die BPFC-Einheit 201 ausgeführt wird, besteht darin zu ermitteln, welche von einer Vielzahl von Paketwarteschlangen ein bestimmtes verarbeitetes Datenpaket tatsächlich empfangen sollte, und zu prüfen, ob die bestimmte Paketwarteschlange zur Verfügung steht und bereit ist, ein Paket zu empfangen. Eine Liste von verfügbaren Warteschlangen kann in einer QPN-Tabelle gespeichert sein. Die BPFC-Einheit oder deren Komponenten sind ferner für das Verfolgen der Datenpakete und Bytes, die empfangen und verarbeitet werden, das Klassifizieren empfangener Pakete, die Prüfsummenberechnung und andere Aufgaben verantwortlich.
  • Das BPFC-Modul 201 weist drei hauptsächliche physische und/oder Funktionseinheiten auf: eine Datenwegeinheit 217, einen Parser 207 und eine Gruppe von Aktionsmaschinen 208.
  • Die Ausdrücke „Einheit” und „Modul” werden in diesem Zusammenhang synonym verwendet und bezeichnen Funktionseinheiten einer Software- oder Hardware-Komponente des Netzwerkprozessors. In Abhängigkeit von der Ausführungsform kann eine „Einheit” einer physischen Einheit entsprechen, z. B. einer bestimmten Hardware-Komponente oder einem Programmmodul, es kann jedoch auch der Fall sein, dass mehrere Funktionseinheiten für einen monolithischen Hardware-Block oder ein Software-Modul oder Funktionen einer Funktionseinheit über mehrere unterschiedliche Hardware- oder Software-Module verteilt sind.
  • Die Hauptfunktion der Datenwegeinheit besteht darin, Datenpakete, die von der RBB-Einheit empfangen wurden, dem Parser 207 bereitzustellen. Die Durchlasseinheit 204, die eine Komponente der Datenwegeinheit ist, steuert, welches Datenpaket, das von der RBB-Einheit empfangen wurde, in den Datenweg und mit welcher Geschwindigkeit eintreten darf. Der Datenweg stellt sicher, dass die Geschwindigkeit der Datenpakete, die in den Datenweg eintreten, auf die Datenpaket-Verarbeitungsgeschwindigkeit des Parsers 207 abgestimmt ist.
  • Die Hauptfunktion des Parsers 207 besteht darin, Datenpakete, die von der Datenwegeinheit empfangen wurden, zu verarbeiten (d. h. zu analysieren, zu untersuchen und zu verwalten). Der Parser decodiert ein oder mehrere Felder der Pakete, um das Paketformat zu ermitteln (d. h. das Protokoll, das zum Speichern und Übertragen der in dem Datenpaket enthaltenen Daten verwendet wurde). Gemäß bevorzugten Ausführungsformen ist der Parser als Software-Modul umgesetzt und wird durch einen oder mehrere Picoprozessoren 218 ausgeführt. Die Hauptaufgabe des Parsers gemäß Ausführungsformen der Erfindung besteht darin, das Paket zu analysieren und anderen Netzwerkprozessorkomponenten, insbesondere Paketwarteschlangen und Aktionsmaschinen, die Datenpaketen zuzuführen, wobei das Zuführen von dem Ergebnis der Datenpaketanalyse abhängt. Der Parser 207 ist funktionsmäßig in der Lage, eine oder mehrere Regeln zu lesen, die in der Regel-Repository 215 gespeichert sind, die Regeln in ein oder mehrere Register des Prozessors zu laden, der die Befehle des Parsers ausführt, und die geladenen eine oder mehreren Regeln an dem Datenpaket auszuführen. Gemäß der dargestellten Ausführungsform kann es sich bei dem einen oder den mehreren Registern um die Register der Picoprozessoren 218 handeln.
  • Gemäß Ausführungsformen der Erfindung kann der Parser als finite Zustandsmaschine betrachtet werden, und die Regeln, die durch den Parser verwendet werden, um Datenpakete zu analysieren, können als Befehle betrachtet werden, die ermitteln, wann und wie ein Zustandsübergang der finiten Zustandsmaschine erfolgt. Die Regel, wenn sie durch den Parser ausgeführt werden, beschreiben und ermitteln, wie der Parser durch eine Gruppe von unterschiedlichen Zuständen fortschreitet. Die Regeln gemäß Ausführungsformen der Erfindung ermöglichen, dass der softwaregestützte Parser effizienter an den Picoprozessoren 218 betrieben werden kann.
  • Die dritte Hauptkomponente der BPFC-Einheit ist eine Gruppe von Aktionsmaschinen 208. Die Aktionsmaschinen 208 sind Hardware-Komponenten, z. B. Logikblöcke, die Teil des Netzwerkprozessorchips sind. Gemäß einigen Ausführungsformen können die Logikblöcke als ASICs umgesetzt sein. Die Aktionsmaschinen sind für typische Netzwerkaufgaben wie etwa die Bereitstellung eines MAC-Filters oder von VLAN-Filtern oder zum Berechnen einer IT/TCP-Prüfsumme zuständig.
  • 3 stellt genauer dar, wie der Parser 207 und seine Funktionseinheiten 330, 331, 332, 333 geladene Regeln R1, R2, R3, R4 verwenden, um ein Datenpaket zu verarbeiten. Ein Beispiel einer Regel R1 ist im oberen Teil von 3 genauer dargestellt.
  • Das „Identitätsvergleichswert”-(ECV-)Feld 305 weist einen Datenwert auf, der mit einem Datenwert eines zu analysierenden Datenpakets verglichen werden soll. Das Identitätsvergleichsmasken-(ECM-)Feld legt fest, welche Teile des in dem ECV-Feld gespeicherten Datenwerts maskiert sind und deswegen aus einem Vergleich mit einem Datenwert des zu analysierenden Datenpakets ausgeschlossen sind. Zum Beispiel kann ein Bit-Wert, der in der Bit-Position 3 des ECM-Felds der Regel R1 enthalten ist, festlegen, dass der Bit-Wert an der Bit-Position 3 des ECV-Felds der Regel während des Vergleichs durch die Vergleichs-Funktionseinheit 330 ignoriert wird. Der Datenwert des Datenpakets, das mit jedem (maskierten) ECV-Feld jeder geladenen Regel verglichen werden soll, wird durch den Parser in den Registerabschnitt 328 geladen, der gemäß Ausführungsformen genau drei Bytes aufweist. Das Lesen der Bits oder Bytes des Datenpakets in den Registerabschnitt 328 ist durch den gestrichelten Pfeil 317 angegeben.
  • Gemäß einigen Ausführungsformen weisen die in der Regel-Repository gespeicherten Regeln ein Regeltyp-(RT-)Feld 307 auf. Dieses Feld gibt den Typ der Regel an. Ein Bit ,0' kann angeben, dass die Regel vom ,Typ normale Regel' ist und komplexe Befehle 314 aufweist, die durch den Parser in der normalen Betriebsart auszuführen sind, während ein Bit ,1' des RT-Felds angibt, dass die Regel vom ,Typ Wiederholungsregel' ist und die Regel Befehle aufweist oder eine Anzeige für Befehle darstellt, die wiederholt auszuführen sind. Eine Regel des ,Typs Wiederholungsregel', die in dem RT-Feld ein Bit ,1' aufweist, kann ein erstes Mal in der normalen Betriebsart durch den Parser ausgeführt werden. Wenn der Parser in diesem ersten Schritt ermittelt, dass einige Wiederholungsbefehle, die Teil des Felds 314 der Regel sein können, wiederholt auszuführen sind, schaltet der Parser zur Wiederholungs-Betriebsart und führt die Wiederholungsbefehle erneut aus.
  • Gemäß Ausführungsformen besteht der Hauptunterschied zwischen Wiederholungsregel und normalen Regeln darin, dass eine Wiederholungsregel ein Wiederholungszählwert-(RC-)Feld 303 aufweist, während das bei einer normalen Regel nicht der Fall ist. Ein Wiederholungszählwertfeld weist in Abhängigkeit von der Ausführungsform der Erfindung und/oder in Abhängigkeit von jeder spezifischen Wiederholungsregel auf
    einen numerischen Datenwert, der eine Angabe der Anzahl von Wiederholungen darstellt, die der Parser ausführen muss, während die Wiederholungsregel geladen ist,
    einen durch einen Computer interpretierbaren Code, der bewirken kann, dass die Anzahl von Wiederholungen, die durch den Parser auszuführen sind, dynamisch ermittelt wird (der Parser kann z. B. die Anzahl von 4-Byte-Blöcken eines Datenpakets dynamisch ermitteln, die zu den Aktionsmaschinen verschoben werden sollen), oder
    eine Kennung für eine Hardware-Routine, die Teil des Befehlssatzes der Picoprozessoren 218 ist, wobei die Hardware-Routine bewirken kann, dass die Anzahl von Wiederholungen, die durch den Parser auszuführen sind, dynamisch ermittelt wird. Gemäß Ausführungsformen können Kennungen wie etwa ,3FFB', ,3FFC', ,3FFD', ,3FFE', ,3FFF' jeweils einen Befehl des Picoprozessors angeben, der auszuführen ist, wenn eine Regel geladen ist, die die Kennung in ihrem RC-Feld aufweist. Die Kennungen ,3FFB' bis ,3FFF' werden in der Beschreibung von 4 genauer beschrieben. Gemäß einigen Ausführungsformen können die Hardware-Routinen außerdem den Wiederholungsbefehl aufweisen, der in Kombination mit Befehlen zum Ermitteln der Anzahl von auszuführenden Wiederholungen auszuführen ist, z. B. Befehlen zum Bewerten einer Beendigungsbedingung.
  • Die Picoprozessoren sind Verarbeitungseinheiten, die gemäß der dargestellten Ausführungsform die regelgestützten Paketverarbeitungsbefehle des Parsers ausführen.
  • Ein ,Feld' ist ein Abschnitt eines Datenpakets oder einer Regel, der Daten und/oder Befehle aufweist. Die Grenzen eines Felds können durch das Format des Datenpakets oder der Regel, durch das Analyseschema des Parsers oder eine Kombination hiervon ermittelt werden.
  • Das Paketzeiger-Erhöhungsfeld 308 und die Offset-Felder 309, 310 und 311 der Regel 301 spezifizieren die Position der Bits und Bytes in einem analysierten Datenpaket, die durch den Parser zu extrahieren sind und in den Registerabschnitt 328 für einen Vergleich in einem nachfolgenden Arbeitszyklus zu laden sind, falls ermittelt wird, dass der Datenwert des ECV-Felds einer gegenwärtig geladenen Regel gleich den Bits oder Bytes eines analysierten Satzes von Bits und Bytes des Datenpakets ist. Wenn z. B. bei einem Vergleich die Bits und Bytes eines in den logischen Schlitz 335 geladenen Datenwerts gleich dem Datenwert 305 des ECV-Felds der Regel R1 301 sind, können die Bits und Bytes, die in den Feldern 308 bis 311 der Regel festgelegt sind, durch den Parser aus dem Datenpaket ausgewählt werden, nachdem er die Vergleichsoperation ausgeführt hat, die ein positives Ergebnis zurückgibt. Die ausgewählten Bits und Bytes können durch den Parser z. B. zu den Aktionsmaschinen 208 verschoben werden und/oder können durch den Parser verwendet werden, um weitere Verarbeitungsschritte an den ausgewählten Bits oder Bytes in einem nachfolgenden Arbeitszyklus durch einen anderen Regelsatz auszuführen.
  • Die Schlitze 335 bis 338 sind logische Schlitze der Vergleichs-Funktionseinheit des Parsers, die angeben sollen, dass die Vergleichs-Funktionseinheit funktionsmäßig in der Lage ist, den Inhalt des ECV-Felds von jeder der vier geladenen Regeln R1 bis R4 mit einem Datenwert VP zu vergleichen, der parallel im Registerabschnitt gespeichert ist. Der Datenwert VP wurde aus dem Datenpaket in einem vorhergehenden Arbeitszyklus geladen, wobei die Bit- und Byte-Positionen des zu extrahierenden Datenwerts VP in den Feldern 308 bis 311 einer anderen Regel festgelegt wurden, die mit anderen Bits und Bytes des Datenpakets in einem vorhergehenden Arbeitszyklus erfolgreich verglichen wurden. Der Ausdruck ,erfolgreich verglichen' bedeutet in diesem Zusammenhang, dass beim Vergleichen das (gemäß Ausführungsformen: maskierte) ECV-Feld der einen Regel mit dem Datenwert VP, der in den Registerabschnitt 328 geladen wurde, identisch ist.
  • Gemäß Ausführungsformen ist der Registerabschnitt 328 Teil einer Registerzeile 321. Die Registerzeile ist ein Element eines Registers 316 der einen oder der mehreren Verarbeitungseinheiten 218. Gemäß Ausführungsformen kann ein derartiges Register z. B. 256 Registerzeilen aufweisen. Die Verarbeitungseinheiten 218 haben Zugriff auf Datenwerte, die in einem oder mehreren Registern 316 gespeichert sind, ohne dass ein weiterer Taktzyklus ausgeführt wird.
  • Jeder Schlitz 335 bis 338 entspricht einer gleichzeitig ausgeführten Vergleichsoperation. Die verglichenen „Datenwerte” des Datenpakets können, müssen jedoch nicht notwendigerweise ein Datenwert sein, der einen bestimmten Abschnitt kohärenter Informationen darstellt. Bei dem verglichenen Datenwert VP des Datenpakets kann es sich um eine Gruppe von mehreren Bits und Bytes handeln, die aus einer Reihe von benachbarten Bits oder Bytes des Datenpakets ausgewählt sind oder aus einer Gruppe von Bits und Bytes ausgewählt sind, die aus verschiedenen Abschnitten des Datenpakets ausgewählt wurden.
  • Gemäß Ausführungsformen der Erfindung wird der Datenwert VP in einem vorhergehend ausgeführten Arbeitszyklus durch die Ausführungs-Funktionseinheit des Parsers aus dem Datenpaket ausgewählt und in den Registerabschnitt 328 geladen. Die ECV-Feldinhalte VR1 bis VR4 wurden aus vier unterschiedlichen Regeln R1 bis R4 abgeleitet und in die Registerabschnitte 340 bis 343 des Registers 340 geladen. Die ECV-Feldinhalte werden für den Vergleich mit dem Datenwert VP verwendet, der durch die Vergleichs-Funktionseinheit 330 des Parsers vorliegt. Die ECV-Feldwerte VR1 bis VR4 unterscheiden sich üblicherweise, jedoch nicht notwendigerweise untereinander für jede der geladenen Regeln R1 bis R4.
  • Das Regelbefehlsfeld 314 weist durch einen Computer interpretierbare Befehle auf, die durch eine oder mehrere Verarbeitungseinheiten, z. B. die Picoprozessoren 218, ausgeführt werden, wenn die Regel ausgeführt wird. Die Befehle spezifizieren, welche Datenpaket-Verarbeitungs- und/oder Verschiebungsschritte durch den Parser ausgeführt werden müssen.
  • Ein oder mehrere Zielfelder 315 spezifizieren, zu welcher Aktionsmaschine oder zu welchem Typ von Aktionsmaschine Bits oder Bytes, die aus einem Datenpaket als eine Folge des Ausführens der Regel und des erfolgreichen Vergleichs des ECV-Feldinhalts der Regel mit dem VP-Wert extrahiert wurden, durch den Parser verschoben werden.
  • Gemäß Ausführungsformen können die durch den Parser von der Regel-Repository geladenen Regeln in einem Cachespeicher der Verarbeitungseinheiten gespeichert werden, die Befehle des Parsers ausführen.
  • Gemäß Ausführungsformen der Erfindung kann das Register 316 der Picoprozessoren 218, das alle oder eine Teilmenge der Regeln R1 bis R4 der Regel-Repository 215 speichert, als ein SRAM-Speichermodul (statischer Direktzugriffsspeicher) umgesetzt sein. SRAM ist ein schneller und zuverlässiger Speichertyp, der durch kurze Zugriffs- und Zykluszeiten gekennzeichnet ist und der für die Verwendung als Register der Picoprozessoren 218 besonders geeignet ist, wobei die Picoprozessoren Befehle des Parsers 207 ausführen.
  • Ein Register (der prozessorinterne Speicher) der Picoprozessoren 218 ist in Form einer Gruppe von Registerzeilen dargestellt. Eine Registerzeile 316 ist als schraffierter Kasten 321 genauer gezeigt. Die Kästen 340 bis 343 sind Registerabschnitte, die Bits und Bytes VR1 bis VR4 aufweisen, die von einer oder mehreren Regeln R1 bis R4 gelesen wurden. Die logischen Schlitze 335 bis 338 geben die Fähigkeit der Vergleichs-Funktionseinheit 330 an, vier Vergleichsoperationen der Datenwerte VR1 bis VR4, die aus einem Satz von gleichzeitig geladenen Regeln R1 bis R4 abgeleitet wurden, mit VR-Bits und -Bytes in dem Registerabschnitt 328 parallel auszuführen. Der Datenwert VR1 wurde aus der Regel R1 abgeleitet und wird durch die Vergleichs-Funktionseinheit 330 des Parsers mit dem VR-Wert verglichen, der aus dem Datenpaket gelesen wird. Der Vergleich der vier Datenwerte VR1 bis VR4 mit den VR-Datenwerten ist in 3 in Form von acht Doppelpfeilen angegeben.
  • Gemäß einigen Ausführungsformen weist der VR1-Datenwert lediglich jene Bits und Bytes des ECV-Felds 305 der entsprechenden Regel R1 auf, die nicht durch das ECM-Feld 306 dieser Regel maskiert sind.
  • Der Registerabschnitt 325 weist die Anzahl von Wiederholungen auf, die durch den Parser ausgeführt werden müssen, wenn ein bestimmter Satz von Regeln R1 bis R4 vorgegeben ist. Die Anzahl von Wiederholungen wurde durch den Parser ermittelt, indem z. B. der Wiederholungszählwert von einem RC-Feld 303 der Regel gelesen wird, Informationen gelesen werden, die in dem Datenpaket gespeichert sind, oder indem ein Befehl ausgeführt wird, der bewirken kann, dass der Wiederholungszählwert dynamisch ermittelt wird. Der Befehl kann Teil einer oder mehrerer der geladenen Regeln sein oder kann Teil des Befehlssatzes der Picoprozessoren sein.
  • Der Registerabschnitt 327 weist einen Paketzeigerwert auf, der eine Angabe des ersten Bits oder Bytes der Daten des Datenpakets darstellt, das in einem nachfolgenden Arbeitszyklus verarbeitet werden soll. Diese Verarbeitung kann das Verschieben eines Datenblocks, der an dem ersten Bit oder Byte beginnt, zu einer Gruppe von Aktionsmaschinen aufweisen. Das Aktualisieren des Paketzeigerwerts, der im Registerzeilenabschnitt 327 gespeichert ist, ist in 3 durch den gepunkteten Pfeil 318 angegeben.
  • Gemäß Ausführungsformen ist ein Paketzeiger eine Speicheradresse, die eine Angabe der genauen Anfangsbit- oder Anfangsbyte-Position einer Gruppe von Bits oder Bytes in dem Datenpaket darstellt. Die Bits oder Bytes sollen durch den Parser analysiert oder anderweitig verarbeitet werden. Der Paketzeiger ermöglicht, dass der Parser eine bestimmte Gruppe von Bits oder Bytes aus dem Datenpaket liest, wenn das Datenpaket auf dem Datenweg 217 zu dem Parser 207 übertragen wird oder wenn das Datenpaket den Parser bereits erreicht hat. Gemäß Ausführungsformen werden Informationen darüber, ob das analysierte Datenpaket gegenwärtig in dem Datenweg oder in dem Parser enthalten ist, durch andere (nicht gezeigte) Komponenten des Netzwerkprozessors für den Parser zur Verfügung gestellt, so dass der eigentliche Paketzeiger lediglich eine Angabe der relativen Bit- oder Byte-Position der gegenwärtig geprüften Daten des Datenpakets enthält, die zur Analyse und/oder Verarbeitung zu verwenden sind, z. B. Positionsinformationen in Bezug auf das Anfangsbit oder -byte des Datenpakets. Eine Verarbeitungsoperation würde z. B. das Verschieben der Gruppe von Bits oder Bytes zu einer oder mehreren Aktionsmaschinen darstellen.
  • Der Registerabschnitt 328 weist eine Gruppe von Bits oder Bytes mit einer im Voraus definierten Länge, z. B. 3 Byte, auf, die aus dem Datenpaket in Abhängigkeit eines von der Vergleichs-Funktionseinheit 330 bereitgestellten Vergleichsergebnisses extrahiert werden. Die extrahierten Datenwerte werden als Eingabe für die Vergleichs-Funktionseinheit 330 im nachfolgenden Arbeitszyklus verwendet.
  • Jeder der Schlitze 335 bis 338 des Parsers entspricht einer geladenen Regel, wobei jede Regel Befehle 314 aufweist. Die Befehle sind an einem Datenpaket durch die Picoprozessoren 218 auszuführen. Gemäß der dargestellten Ausführungsform können die Picoprozessoren vier Befehle, d. h. vier Abschnitte oder Erweiterungen der Regeln R1 bis R4, parallel ausführen.
  • Gemäß bevorzugten Ausführungsformen werden lediglich Befehle 314 ausgeführt, die in jeder geladenen Regel enthalten sind, die mit dem VP-Datenwert erfolgreich abgestimmt wurde. Die in allen anderen geladenen Regeln enthaltenen Befehle werden an dem Datenpaket nicht ausgeführt. Die ausgeführten Befehle können z. B. Befehle aufweisen, die das Laden eines neuen Satzes von Regeln auslösen, die in einem Vergleichsschritt eines nachfolgenden Arbeitszyklus zu verwenden sind. Demzufolge werden lediglich diese Aktionsmaschinen z. B. während des Verschiebens von Datenblöcken verwendet, die in dem Abschnitt 315 dieser Regel festgelegt sind, die erfolgreich mit dem VP-Datenwert abgestimmt wurde, und lediglich jene Bits und Bytes werden aus dem Datenpaket für einen Vergleich in einem nachfolgenden Arbeitszyklus gelesen, die in den Felder 308 bis 311 der nachfolgenden erfolgreich abgestimmten Regel festgelegt sind.
  • Jede der Funktionseinheiten 330, 331, 332 und 333 kann als Hardware- oder Software-Komponente des Parsers oder als eine beliebige Kombination hiervon umgesetzt sein. Die Komponenten 330 bis 333 können physisch getrennt sein oder können Teil eines einzigen monolithischen Software-Blocks sein. Gemäß bevorzugten Ausführungsformen werden jedoch alle Funktionseinheiten des Parsers und der eigentliche Parser vollständig oder wenigstens teilweise in Form von Hardware umgesetzt, d. h. als durch die Picoprozessoren 218 spezifizierte Verarbeitungslogik, wobei die Flexibilität des Parsers durch die Befehle gewährleistet ist, die in den in den Parser geladenen Befehlen enthalten sind. Die Befehle der Regel sind gemäß bevorzugten Ausführungsformen durch einen Computer interpretierbare Befehle, die in einer Programmiersprache geschrieben sind. Die Befehle können gemäß neuen Anforderungen leicht geändert werden und gewährleisten einen sehr flexiblen Parser.
  • Die Vergleichs-Funktionseinheit 330 ist funktionsmäßig in der Lage, mehrere Vergleichsoperationen („Identitätsvergleich”) parallel auszuführen. In der dargestellten Ausführungsform werden vier Vergleichsoperationen durch die Vergleichs-Funktionseinheit parallel ausgeführt. Die Regeln R1 bis R4 können untereinander verschieden sein.
  • Zunächst wird eine Gruppe von Bits oder Bytes aus einem analysierten Datenpaket durch der Parser extrahiert. Gemäß bevorzugten Ausführungsformen sind die Größe oder Position der extrahierten Bits und Bytes in einer geladenen und zuvor erfolgreich abgestimmten Regel in den Abschnitten 308 bis 311 festgelegt. Die extrahierten VP-Bits oder -Bytes werden im Datenregisterbereich 328 gespeichert. Die Vergleichseinheit 330 lädt die ECV-Werte VR1 bis VR4 der geladenen Regeln R1 bis R4 in Registerabschnitte 340 bis 343 und vergleicht jeden der Werte VR1 bis VR4 in einem entsprechenden logischen Schlitz 335 bis 338 des Parsers mit VP-Datenwerten. Gemäß bevorzugten Ausführungsformen weist jede Regel zusätzlich ein Identitätsvergleichsmaskenfeld ECM 306 auf. Das ECM gibt an, welche Bits und Bytes VR1 bis VR4 einer jeden der vier Regeln R1 bis R4, die in die Registerbereiche 340 bis 343 geladen sind, um mit einem geladenen Datenwert VP des Datenpakets verglichen zu werden, während der Analyse eines Datenpakets ignoriert („maskiert”) werden sollten. Die Regel R1 kann z. B. bewirken, dass ein Parser drei bestimmte Datenbytes in den Registerbereich 340 für einen Identitätsvergleich lädt. Das ECM-Feld von R1 kann spezifizieren, dass tatsächlich lediglich zwei der drei Bytes für einen Vergleich verwendet werden sollen, während die anderen Bits maskiert werden.
  • Gemäß bevorzugten Ausführungsformen wird der Vergleich als ein „Vergleich nach Identität” ausgeführt. Der Vergleich gibt einen binären Ergebniswert für jeden der vier logischer Vergleichsschlitze der Vergleichs-Funktionseinheit des Parsers zurück, wobei ein erster Ergebnistyp die Identität der verglichenen Bits oder Bytes bestätigt, während ein zweiter Ergebnistyp eine Angabe von ungleichen Datenwerten ist.
  • In der dargestellten Ausführungsform enthalten die Ergebnisinformationen einen 4-Bit-Datenwert. Für jeden der vier Vergleichsschlitze der Vergleichs-Funktionseinheit 330 des Parsers wird ein Bit („gleich” oder „ungleich”) zurückgegeben. Durch Laden eines Feldes „Nächster Vorsatz” (NV) eines Datenpakets in den Registerabschnitt 328 der Registerzeile 321 der Picoprozessoren 218, durch Vergleichen des Dateninhalts VP des geladenen Felds mit einer Regel R1, die den Datenwert ,06' in ihrem ECV-Feld aufweist, gibt ein auch als „Analyseergebnis” bezeichnetes Vergleichsergebnis, das eine Identität zwischen dem Wert ,06' und dem NV-Paketvorsatzfeld angibt, zum Beispiel an, dass das analysierte Paket gemäß dem TCP-Protokoll formatiert ist.
  • In Abhängigkeit von dem Analyseergebnis, d. h. der Identität des ECM-Feldinhalts der Regel R1 und der ausgewählten Bits oder Bytes eines analysierten Datenpakets, extrahiert die Bewertungs-Funktionseinheit 332 aus dem analysierten Datenpaket Informationen, die von der Ausführungs-Funktionseinheit 333 in dem gegenwärtigen Arbeitszyklus benötigt werden und/oder extrahiert aus dem analysierten Datenpaket Informationen, die durch die Vergleichs-Funktionseinheit 330 in dem nachfolgenden Arbeitszyklus benötigt werden.
  • Gemäß dem dargestellten Beispiel empfängt die Bewertungs-Funktionseinheit einen 4-Bit-Analyseergebniswert von der Vergleichs-Funktionseinheit und verarbeitet dieses Analyseergebnis, um zu ermitteln, ob und welche Bits oder Bytes aus dem analysierten Datenpaket extrahiert werden müssen und/oder welche Regeln für eine weitere Verarbeitung oder Analyse des Datenpakets geladen werden müssen. Falls die Bewertungs-Funktionseinheit gemäß dem vorgegebenen Beispiel ermittelt, dass das analysierte Datenpaket ein TCP-Paket ist (d. h. ein Datenpaket, das wenigstens einen TCP-Vorsatzabschnitt aufweist), kann die Bewertungs-Funktionseinheit das Laden eines neuen Satzes von Regeln auslösen, der zum Analysieren und/oder Verarbeiten von TCP-Paketen besonders geeignet ist. Gemäß den dargestellten Ausführungsformen weist der neue Satz von Regeln eine Regel für jeden der Vergleichsschlitze der Vergleichs-Funktionseinheit des Parsers auf.
  • Falls eine Regel Befehle aufweist, die an einem Datenpaket unabhängig von dem Analyseergebnis ausgeführt werden müssen, werden die Befehle gemäß Ausführungsformen durch den Parser parallel zu der Datenpaketanalyse ausgeführt, die durch die Vergleichs-Funktionseinheit 330 ausgeführt wird. Falls z. B. einige Bits oder Bytes des Paketvorsatzes durch den Parser ungeachtet des durch die Vergleichs-Funktionseinheit erzeugten Analyseergebnisses zu den Aktionsmaschinen verschoben werden müssen (d. h. ungeachtet der Frage, auf welchem Format oder Protokoll das Datenpaket beruht), kann der Parser die Bits oder Bytes zu den Aktionsmaschinen verschieben und die Analyse wie beschrieben parallel ausführen. In Abhängigkeit von dem analysierten Datenpaket und den geladenen Regeln kann der Parser einen Schritt der Datenpaketanalyse unter Beteiligung der Vergleichs-Funktionseinheit und einen Verschiebeschritt unter Beteiligung der Ausführungs-Funktionseinheit 333 parallel ausführen. In einigen Ausführungsformen und einigen Verarbeitungsszenarien kann der Parser einen reinen Analyseschritt oder einen reinen Verschiebeschritt ausführen. Regeln, die reine Verschiebezwecke erfüllen, können kein ECV- und ECM-Feld aufweisen oder sie können ein ECM-Feld aufweisen, das die Datenwerte des ECV-Felds vollständig maskiert.
  • Die Wiederholungssteuereinheit 331 ist für das Ermitteln der Anzahl von Wiederholungen, die durch den Parser ausgeführt werden sollen, zuständig. Das Ermitteln beruht auf Daten, die in der geladenen Regel und/oder in dem verarbeiteten Datenpaket enthalten sind. Die Bewertungsfunktionseinheit 332 ist funktionsmäßig in der Lage, das Vergleichsergebnis zu bewerten (d. h. das Analyseergebnis einer Regel, die auf das Datenpaket angewendet wird), das von der Vergleichs-Funktionseinheit bereitgestellt wird. Anhand des Ergebnisses ermittelt die Bewertungs-Funktionseinheit einen Satz Regeln, der in einem zukünftigen Arbeitszyklus geladen werden muss, ermittelt, welche Bits und Bytes von Daten des Datenpakets für die Analyse/den Vergleich in dem nachfolgenden Arbeitszyklus gelesen werden müssen, und ermittelt, welche Aktionen an dem Datenpaket in dem laufenden Arbeitszyklus ausgeführt werden müssen. Zu derartigen Aktionen könnte z. B. das Verschieben von Datenblöcken zu den Aktionsmaschinen gehören.
  • Die Ausführungsfunktionseinheit (Funktionseinheit) 333 ist funktionsmäßig in der Lage, Aktionen wie etwa das Verschieben von Datenblöcken eines analysierten Datenpakets zu den Aktionsmaschinen auszuführen. In Abhängigkeit von der Ausführungsform kann es in dem laufenden Arbeitszyklus gegebenenfalls notwendig sein, eine Aktion, z. B. das Verschieben von Daten zu den Aktionsmaschinen, auszuführen.
  • 4 stellt ein Datenpaket 401 dar, das dem IPv6-Protokoll entspricht. Das Datenpaket weist einen IPv6-Vorsatz 402 auf. Der IPv6-Vorsatz weist einen ersten Abschnitt 408 auf, der mehrere Felder aufweist wie etwa ,IP-Version', ,Dienste', ,Verkehrsklasse', Ablaufbezeichnung', ,Nutzdatenlänge', ,Sprunggrenze' (Hop Limit, HL) und ein (nicht gezeigtes) Feld ,Nächster Vorsatz' (NV). Der IPv6-Vorsatz weist ferner ein Quellenadressenfeld SA 403 aus 16 Bytes (128 Bits) und ein Zieladressenfeld DA 404 aus 16 Bytes (128 Bits) auf. Das Datenpaket 401 kann keinen, einen oder mehrere IPv6-Erweiterungsvorsätze 410 aufweisen (4 zeigt ein Datenpaket mit einem IPv6-Erweiterungsvorsatz). Das Datenpaket weist ferner einen TCP-Vorsatz 405 aus 20 bis 60 Bytes und einen L5-Abschnitt 406 (,Schicht5') auf, bei dem es sich um einen L4-Nutzdatenabschnitt handelt.
  • Das NV-Feld gibt den Typ des nächsten Vorsatzes an, der in dem Datenpaket 401 folgt. Falls der folgende Vorsatz vom TCP-Format ist, weist das NV-Feld den Wert ,06' auf. Das NV-Feld kann durch eine oder mehrere Regeln des Parsers bewertet werden und zum Berechnen eines Analyseergebnisses und zum Treffen einer Syntaxanalyseentscheidung verwendet werden.
  • Die Netzwerkschicht (L3) definiert logische Adressen, die einem speziellen Protokoll zugehörig sind, um zu entscheiden, wie Daten zwischen Netzwerkeinheiten zu übertragen sind. Der Satz von Protokollen, der in dieser Schicht verwendet wird, weist IP, ICMP, ARP, RIP, OSI, IPX und OSPF auf.
  • 'L4' ist die vierte Schicht des OSI-Modells und wird auch als 'Transportschicht' bezeichnet. Diese Schicht stellt hauptsächlich Dienste für den Transfer und die Segmentierung von Daten einer oberen Schicht bereit. Transportschicht (L4). L4-Datentransfer kann z. B. auf dem TCP- oder UDP-Protokoll beruhen. Des Weiteren gibt es L4-Protokolle wie etwa SPX, NETBIOS und NKWLINK. Gemäß anderen Ausführungsformen der Erfindung ist der Parser funktionsmäßig in der Lage, Regeln auszuführen, die Datenpakete bewerten und verarbeiten können, die gemäß den L4-Protokollen formatiert sind.
  • Die Kommunikationssteuerungsschicht (L5) verwaltet und handhabt den Aufbau, das Aufrechterhalten und den Abbau von Datenübertragungen zwischen diesen beiden Hosts.
  • Der IPv6-Vorsatz 402 und die optionalen IPv6-Erweiterungsvorsätze 410 entsprechen deswegen der dritten Schicht des OSI-Modells. Der TCP-Vorsatz und der L4-Nutzdatenabschnitt 406 gehören zu der vierten OSI-Schicht. Der Nutzdatenabschnitt 406 weist Daten auf, die zu der fünften OSI-Ebene gehören, die einen L5-Vorsatzabschnitt und einen L5-Nutzdatenabschnitt (nicht gezeigt) aufweisen kann. Das beschriebene Datenpaket ist ein Beispiel für ein Datenpaket, das mehrere verschachtelte Datenschichten aufweist, wobei der Nutzdatenabschnitt einer ersten Datenschicht einen Begleitdatenabschnitt (z. B. einen Vorsatzabschnitt) und einen Nutzdatenabschnitt einer zweiten Datenschicht aufweist.
  • Das SA-Feld gibt die Quellenadresse an, d. h. die Adresse des Absenders des Pakets, während das DA-Feld das Ziel des Pakets angibt, d. h. den vorgesehenen Empfänger des Pakets.
  • Falls der Parser den Dateninhalt des SA-Felds zu Aktionsmaschinen verschieben muss, gibt es eine Einschränkung, dass die Anzahl von Bytes die durch die Aktionsmaschinen pro Zeiteinheit empfangen kann, beschränkt ist. Gemäß der dargestellten Ausführungsform beträgt die maximale Anzahl von Bytes, die pro Transaktion von den Aktionsmaschinen empfangen werden kann, fünf Bytes. Da das SA-Feld 16 Bytes aufweist, ist das SA-Feld zu groß, um in einer Transaktion zu den Aktionsmaschinen verschoben zu werden. Stattdessen muss das SA-Feld in wenigstens vier Byteblöcke 407 S1 bis S4 aufgeteilt werden. Jeder Byteblock hat eine Länge von 4 Byte und kann in jeweils einer Transaktion zu den Aktionsmaschinen verschoben werden.
  • Das Verschieben von Byteblöcken, die in einem Datenpaket enthalten sind, zu den Action Machines ist ein typisches, jedoch in keiner Weise einschränkendes Beispiel von Aufgaben, die durch Netzwerkprozessoren wiederholt ausgeführt werden müssen.
  • Bei der Annahme, dass eine Transaktion einem Arbeitszyklus des Netzwerkprozessors entspricht, würden Netzwerkprozessoren nach dem Stand der Technik 8 Arbeitszyklen benötigen, um die vier Byteblöcke zu den Aktionsmaschinen zu verschieben: für das Verschieben jedes der vier Byteblöcke wären zwei Arbeitszyklen erforderlich: ein erster Arbeitszyklus zum Laden von Befehlen (z. B. in der Form von Regeln) in das Register der Picoprozessoren 218 und ein zweiter Arbeitszyklus zum Ausführen der geladenen Befehle (z. B. Verschieben von Datenblöcken) wären erforderlich. Gemäß der vorliegenden Erfindung muss der erste Arbeitszyklus, der dem Laden der Verschiebebefehle entspricht, lediglich einmal ausgeführt werden, wodurch das wiederholte Laden der Verschiebebefehle vermieden wird. Gemäß der vorliegenden Erfindung wären ein erster Arbeitszyklus zum Laden der Verschiebebefehle und vier zusätzliche Arbeitszyklen zum Ausführen des geladenen Verschiebebefehls für jeden der vier Byteblöcke erforderlich. Das Verhältnis von 8:5 Arbeitszyklen (das noch eindrucksvoller wäre, wenn mehr als vier Byteblöcke zu den Aktionsmaschinen verschoben würden) zeigt deutlich, dass Ausführungsformen der vorliegenden Erfindung Netzwerkprozessoren ungemein beschleunigen, ohne dass eine Hardware mit einer höheren Taktzykluszahl erforderlich ist. Demzufolge kann die Idee, die hinter der dargestellten Ausführungsform der Erfindung steht, gleichfalls durch das Bereitstellen eines Parsers ausgedrückt werden, der funktionsmäßig in der Lage ist, eine Wiederholungsaufgabe auszuführen, z. B. das Verschieben von Datenblöcken zu Aktionsmaschinen, ohne den Zustand des Parsers zu ändern und indem lediglich ein Arbeitszyklus pro wiederholt ausgeführter Operation benötigt wird.
  • Gemäß bevorzugten Ausführungsformen geht der Parser bei der Verarbeitung des Datenpakets von links nach rechts vor. Falls der Parser eine Regel ausführt, die ein Wiederholungszählwertfeld aufweist, kann das Wiederholungszählwertfeld die folgenden Kennungen aufweisen:
    Die Kennung '3FFB' gibt an, dass ein Befehl der Picoprozessoren ausgeführt werden sollte, der folgendermaßen umschrieben werden kann: Verschiebe Byte-Blöcke eines IPv6-Erweiterungsvorsatzes 410 eines analysierten Datenpakets, bis die letzte Byte-Position des IPv6-Erweiterungsvorsatzes 410 des Pakets erreicht ist;
    Die Kennung '3FFC' gibt an, dass ein Befehl der Picoprozessoren ausgeführt werden sollte, der folgendermaßen umschrieben werden kann: Verschiebe Byte-Blöcke eines TCP-Erweiterungsvorsatzes eines analysierten Datenpakets, bis die letzte Byte-Position des TCP-Erweiterungsvorsatzes 405 des Pakets erreicht ist;
    Die Kennung '3FFD' gibt an, dass ein Befehl der Picoprozessoren ausgeführt werden sollte, der folgendermaßen umschrieben werden kann: Verschiebe Byte-Blöcke von Schicht-4-Nutzdaten eines analysierten Datenpakets, bis die letzte Byte-Position der Schicht-4-Nutzdaten des Pakets erreicht ist;
    Die Kennung '3FFE' gibt an, dass ein Befehl der Picoprozessoren ausgeführt werden sollte, der folgendermaßen umschrieben werden kann: Verschiebe Byte-Blöcke eines IPv4-Vorsatzes eines analysierten Datenpakets, bis die letzte Byte-Position des IPv4-Vorsatzes des Pakets erreicht ist;
    Die Kennung '3FFF' gibt an, dass ein Befehl der Picoprozessoren ausgeführt werden sollte, der folgendermaßen umschrieben werden kann: Verschiebe Byte-Blöcke eines analysierten Datenpakets, bis die letzte Byte-Position des Pakets erreicht ist; wobei der Befehl als ein „Sicherheits”-Befehl wirkt, der ausgeführt werden kann, falls das Format (z. B. Protokoll) des Pakets durch den Parser nicht erkannt wurde. Der Parser geht durch das Datenpaket von links nach rechts vor und verschiebt Byte-Blöcke zu den Aktionsmaschinen, bis das Ende des Pakets erreicht wird.
  • Gemäß bevorzugten Ausführungsformen gehören die durch die Kennung des Wiederholungszählwertfelds einiger Regeln angegebenen Befehle zu dem Befehlssatz der Picoprozessoren, mit denen der Parser betrieben wird. Das ist sehr vorteilhaft, da diese Befehle Bestandteil der Picoprozessoren sind und kein Lese- oder Ladeschritt erforderlich ist, um die Befehle während des Betriebs des Parsers zur Verfügung zu stellen. Das erhöht die Geschwindigkeit, indem zusätzliche Arbeitszyklen zum Laden der Befehle vermieden werden.
  • Das Wiederholungszählwertfelds einer Regel kann eine Kennung eines Befehls zum dynamischen Ermitteln des Wiederholungszählwerts aufweisen, wobei der Befehl Teil des Befehlssatzes der Prozessoren (z. B. Picoprozessoren) ist, mit denen der Parser betrieben wird. Gemäß Ausführungsformen hat der Parser verschiedene Optionen, um die Anzahl von auszuführenden Wiederholungen zu ermitteln. Gemäß anderen Regeln oder Ausführungsformen wird diese Anzahl aus dem Wiederholungszählwertfeld einer Regel gelesen, aus einem Feld des analysierten Datenpakets gelesen oder dynamisch ermittelt, indem eine Programmroutine ausgeführt wird, die als Teil oder als Erweiterung einer geladenen Regel umgesetzt ist. Falls die Befehle als Teil oder Erweiterung einer geladenen Regel umgesetzt sind, kann ein zusätzlicher Schritt zum Laden von Befehlen zum Ermitteln des Wiederholungszählwerts vermieden werden. Dieses Merkmal beschleunigt die Parser-Geschwindigkeit aus den gleichen Gründen wie Regeln, die ein RC-Feld mit einer Kennung eines Befehls aufweisen, der zu dem Befehlssatz eines Prozessors gehört: es ist kein besonderer Ladeschnitt zum Laden von Befehlen zum Ermitteln des Wiederholungszählwerts erforderlich.
  • In 5a werden acht Arbeitszyklen dargestellt, die durch den Parser gemäß Ausführungsformen der Erfindung in der normalen Betriebsart ausgeführt werden. Die „4-Regel”-Linie gibt den Satz von Regeln an, die gegenwärtig geladen sind und ausgeführt werden. Jeder Schlitz der Vergleichs-Funktionseinheit, die eine Vergleichsoperation an Datenabschnitten des Parsers ausführt, entspricht einer Regel. Gemäß der dargestellten Ausführungsform weist jeder Regelsatz vier Regeln auf. Die Balken PP1, PP2, PP3 und PP4 (5b) geben Änderungen des Paketzeigers an. PP1 gibt einen Paketzeiger an, der auf einen ersten Datenabschnitt eines Datenpakets zeigt; PP2 gibt an, dass der Paketzeiger seinen Wert geändert hat und nun auf einen zweiten Datenabschnitt des Datenpakets zeigt, usw.
  • In einem ersten Arbeitszyklus (z. B. w3) kann der Parser Aufgaben ausführen wie etwa das Vergleichen von Datenabschnitten des Pakets mit Daten in dem ECV-Feld jeder gegenwärtig geladenen Regel, das Auswählen anderer Datenabschnitte des Datenpakets zur Analyse oder andere Arten der Verarbeitung in einem zukünftigen Arbeitszyklus und/oder das Ausführen eines (Wiederholungs-)Befehls wie etwa das Verschieben von Byte-Blöcken zu den Aktionsmaschinen. In dem nächsten Arbeitszyklus (z. B. w4) liest der Parser eine Regel aus der Regel-Repository. Die Forderung von wenigstens zwei unterschiedlichen Arbeitszyklen (einer zum Laden von Befehlen und einer zum Ausführen der geladenen Befehle) ist für viele gegenwärtige Prozessoren typisch.
  • Gemäß Ausführungsformen ist ein Arbeitszyklus eine Folge von Schritten, die bei der Ausführung zu einem Zustandsübergang in einer finiten Zustandsmaschine, z. B. dem Parser, führen. Gemäß der in 5a dargestellten Ausführungsform werden zwei Arbeitszyklen, z. B. w3 und w4, durch den Parser gefordert, um einen Zustandsübergang auszuführen.
  • In 5a ist ein Parser dargestellt, der in der normalen Betriebsart arbeitet. Die arabischen Zahlen 1 bis 8 an der Oberseite der Figur geben den gegenwärtigen Arbeitszyklus an, wobei jeder Arbeitszyklus einen ersten Taktzyklus c0 und einen zweiten Taktzyklus c1 aufweist, wobei die Länge jedes Taktzyklus durch den Typ des Takts 120 des Netzwerkprozessors festgelegt ist.
  • In dem zweiten Arbeitszyklus w2 wird ein erster Regelsatz, der die Regeln 1, 2, 3 und 4 aufweist, im Schritt 501 durch den Parser gelesen und in ein oder mehrere Register 316 der Picoprozessoren geladen. Der geladene Regelsatz wird in dem dritten Arbeitszyklus w3 durch den Parser verwendet, um Vergleichsoperationen auszuführen, um Datenabschnitte aus dem Datenpaket für zukünftige Verarbeitungsschritte auszuwählen und/oder wiederholte Aufgaben wie etwa das Verschieben von Byte-Blöcken zu Aktionsmaschinen auszuführen. Die Vergleichsoperationen sind als vier Cp-Kästen angegeben, die den vier parallelen Vergleichsoperationen entsprechen, die gemäß 3 durch die Vergleichseinheit 330 des Parsers ausgeführt werden. Die Auswahl von Datenabschnitten für eine weitere Verarbeitung anhand des Ergebnisses des Vergleichs ist in 5a durch die Ellipse „Eval” 505 angegeben. Die „Eval”-Operation wird durch die Funktionseinheit 332 von 3 ausgeführt. Das Ausführen eines Befehls, z. B. eines Wiederholungsbefehls, wie etwa ein Verschieben eines Datenblocks zu den Aktionsmaschinen wird in dem dritten Arbeitszyklus in einem „Exec”-Schritt 506 ausgeführt. Der „Exec”-Schritt 506 wird durch die Ausführungs-Funktionseinheit 333 von 2 ausgeführt. Gemäß der dargestellten Ausführungsform weist der „Exec”-Schritt 506 das Verschieben eines Byte-Blocks zu den Aktionsmaschinen auf, wie durch den Pfeil an der Unterseite des Kastens 506 angegeben. Nachdem die Byte-Blöcke zu den Aktionsmaschinen verschoben wurden, ändert der Paketzeiger seinen Wert (Übergang PP1 → PP2).
  • Der Schritt 505 und/oder der Schritt 506 weisen eine Analyseentscheidung auf, da in Abhängigkeit von dem Ergebnis der Analyse des Datenpakets (in diesem Fall: in Abhängigkeit von dem Ergebnis des Vergleichs von Datenwerten des Datenpakets mit Datenwerten der Regel) durch den Parser im Schritt 506 unterschiedliche Operationen ausgeführt werden können und festgestellt werden kann, dass ein anderer Regelsatz für die Ausführung eines zukünftigen Arbeitszyklus (w5) erforderlich ist.
  • In dem ersten Taktzyklus des vierten Arbeitszyklus wird die Position (d. h. die Speicheradresse) des nächsten Satzes von Regeln, der geladen werden soll, in dem „Addr.”-Schritt 507 ermittelt und der Satz von Regeln wird im Schritt 502 von der Regel-Repository gelesen.
  • Im Arbeitszyklus w5 der Vergleichsoperationen werden Bit- oder Byte-Auswahloperationen ausgeführt, und weitere Operationen 508, 509 werden auf der Grundlage eines neuen Satzes von Regeln 5, 6, 7 und 8 ausgeführt, wie für den Arbeitszyklus w5 beschrieben. Der Regelsatz, der in c1 des Arbeitszyklus 4 geladen wurde und in w5 verwendet wird, sind „normale Regeln”, die bewirken, dass eine Analyseentscheidung in Abhängigkeit von dem analysierten Datenpaket und/oder anderen Faktoren getroffen wird.
  • Im Arbeitszyklus w6, Schritt 510 wird die Adresse eines neuen Satzes von Regeln 9, 10, 11 und 12 ermittelt, und die Regeln werden in dem zweiten Taktzyklus des Arbeitszyklus 6 in ein oder mehrere Register 316 geladen. Nachdem der Schritt 509 ausgeführt wurde, ändert der Paketzeiger seinen Wert, wie durch das neue Symbol PP3 angegeben. Im siebten Arbeitszyklus w7 werden die geladenen Regeln 9 bis 12 verwendet, um Vergleichs-, Bewertungs- und/oder Datenabschnitt-Manipulationsaufgaben auszuführen, wie oben beschrieben. Im Arbeitszyklus w7 wird eine Analyseentscheidung anhand der Analyse des Datenpakets getroffen, wobei die Analyseentscheidung eine Entscheidung aufweist, dass die Regeln 13 bis 16 für zukünftige Arbeitszyklen (nicht gezeigt) erforderlich sind. Die ermittelten Regeln werden im Arbeitszyklus 8 gelesen.
  • Die acht Arbeitszyklen w1 bis w8, die in 5a oben dargestellt sind, werden durch den Parser in der normalen Betriebsart ausgeführt. In der normalen Betriebsart ist ein erster Arbeitszyklus w2, w4, w6, w8 erforderlich zum Lesen von Regeln in das eine oder die mehreren Register 316. Ein zweiter Arbeitszyklus w3, w5, w7 ist erforderlich, um die gelesenen und geladenen Regeln auszuführen, um dadurch eine Analyseentscheidung z. B. darüber zu treffen, wie die Daten des analysierten Datenpakets zu verarbeiten sind und/oder in Bezug auf die Frage, welcher Satz von Regeln in dem nachfolgenden Arbeitszyklus zu laden und zu verwenden ist.
  • Die in 5b gezeigten Arbeitszyklen zeigen den „Übergang” oder das „Umschalten” des Parsers von der Funktion in der normalen Betriebsart (in den Arbeitszyklen w1 bis w4) zur Funktion in der Wiederholungs-Betriebsart (in den Arbeitszyklen w5 bis w7). Im Arbeitszyklus w8 von 5b wird der Parser wieder in der normalen Betriebsart betrieben.
  • Der Satz von Regeln 21, 22, 23, 24, der in w3 von 5b ausgeführt wird, ist vom Typ Wiederholungsregel und weist ein Wiederholungszählwertfeld auf. Im Arbeitszyklus w3 wird eine Analyseentscheidung in einem der Schritte 523, 524 anhand eines Analyseergebnisses getroffen, und es wird im Schritt 524 eine Aktion ausgeführt. Im Arbeitszyklus w4 von 5b stellt der Parser fest, dass ein Wiederholungsbefehl ausgeführt werden soll. Da der Wiederholungsbefehl bereits in einem oder mehreren Registern geladen ist (z. B. als Teil oder Erweiterung der geladenen Regeln 21 bis 24) oder Teil des Befehlssatzes des Picoprozessors ist, ist ein Laden der Wiederholungsbefehle nicht erforderlich, und im Arbeitszyklus w4 muss keine Aktion erfolgen. Stattdessen schaltet der Parser zur Wiederholungs-Betriebsart um, in der die Wiederholungsbefehle, wie durch die „Exec”-Kästen angegeben, in den Schritten 525, 526 und 527 in jedem nachfolgenden Arbeitszyklus ausgeführt werden können, im Vergleich zu lediglich jedem zweiten Arbeitszyklus w3, w5 und w7, wie das der Fall für die normale Betriebsart war (siehe 5a). Folglich führt jeder einzelne Arbeitszyklus w5, w6 und w7, die in 5b dargestellt sind, in der Wiederholungs-Betriebsart Wiederholungsbefehle aus, verschiebt z. B. einen Byteblock zu den Aktionsmaschinen, wie durch den Pfeil in den „Exec.”-Kästen angegeben, wodurch sich die Geschwindigkeit des Netzwerkprozessors im Vergleich zur normalen Betriebsart verdoppelt. Wenn alle Wiederholungsbefehle ausgeführt wurden (wobei die Anzahl von Wiederholungen z. B. in dem Wiederholungszählwertfeld einer Wiederholungsregel oder in dem analysierten/verarbeiteten Datenpaket direkt oder indirekt spezifiziert ist), schaltet der Parser wieder zur normalen Betriebsart und lädt einen neuen Satz von Regeln in den Schritten 528 und 522 des Arbeitszyklus w8. Diese neu geladenen Regeln werden im Arbeitszyklus w9 (nicht gezeigt) verwendet.
  • Es sollte in diesem Zusammenhang ausdrücklich erwähnt werden, dass das Verhältnis zwischen Taktzyklen und Arbeitszyklen von der Hardware des Netzwerkprozessors abhängt, die in jeder einzelnen Ausführungsform verwendet wird. Die in den 5a, 5b beschriebenen Ausführungsformen, bei denen ein Arbeitszyklus zwei Taktzyklen entspricht, sollte deswegen lediglich als Entwurfsentscheidung betrachtet werden und sollte nicht als Beschränkung der vorliegenden Erfindung auf das Verhältnis zwischen Arbeitszyklen und Taktzyklen, das in den verschiedenen Ausführungsformen der Erfindung beschrieben ist, betrachtet werden.
  • 6 stellt einen Ablaufplan eines Verfahrens zum Betreiben eines Netzwerkprozessors gemäß Ausführungsformen der Erfindung dar. Im Schritt 601 wird wenigstens eine Regel aus einer Regel-Repository in einem ersten Arbeitszyklus durch einen Parser geladen, der in einer normalen Betriebsart arbeitet. Im Schritt 602 wird die wenigstens eine geladene Regel in einem zweiten Arbeitszyklus in der normalen Betriebsart ausgeführt, um das Datenpaket zu analysieren und ein Analyseergebnis zu erzeugen. In Abhängigkeit von dem Analyseergebnis kann der Parser im Schritt 603 dynamisch von der normalen Betriebsart zur Wiederholungs-Betriebsart umschalten. Wenn der Parser im Schritt 603 zur Wiederholungs-Betriebsart umschaltet, wird ein Wiederholungsbefehl in jeder von einer oder mehreren Wiederholungen auf das Datenpaket angewendet. Jede der Wiederholungen wird in einem zweiten Arbeitszyklus ausgeführt, wobei das Ausführen des ersten Arbeitszyklus zum Laden des Wiederholungsbefehls in der Wiederholungs-Betriebsart nicht erforderlich ist. Der Parser ermittelt die Anzahl von in der Wiederholungs-Betriebsart auszuführenden Wiederholungen dynamisch durch das Bewerten von geladenen Daten. Die „geladenen Daten” sind Daten, die durch den Parser zum Zeitpunkt des Beginns der Wiederholungs-Betriebsart bereits geladen sind. Wenn der Parser zu der Wiederholungs-Betriebsart umschaltet, wendet der Parser im Schritt 604 einen Wiederholungsbefehl auf das Datenpaket in jeder der einen oder mehreren Wiederholungen (erneut) an. Jede Wiederholung wird in einem zweiten Arbeitszyklus ausgeführt, wodurch das Ausführen des ersten Arbeitszyklus zum Laden des Wiederholungsbefehls in der Wiederholungs-Betriebsart nicht erforderlich ist und nicht ausgeführt wird. Der Parser ermittelt die Anzahl von in der Wiederholungs-Betriebsart auszuführenden Wiederholungen dynamisch durch Bewerten von geladenen Daten, z. B. durch Bewerten einer oder mehrerer geladenen Regeln, durch Bewerten des analysierten Datenpakets oder eine Kombination hiervon.
  • 7 stellt ein Blockschaubild einer Einheit 700, z. B. einen Router oder einen Switch, dar, die einen Netzwerkprozessor 101 gemäß Ausführungsformen der Erfindung aufweist. Der Netzwerkprozessor weist ein nichtflüchtiges computerlesbares Speichermedium 701 und eine oder mehrere Verarbeitungseinheiten 218 auf. Das Speichermedium 701 weist durch einen Computer interpretierbare Befehle auf, die bei einer Ausführung durch die eine oder die mehreren Verarbeitungseinheiten 218 ein Verfahren zum Betreiben eines Netzwerkprozessors gemäß einer der oben beschriebenen Ausführungsformen der Erfindung bereitstellen.
  • Obwohl das computerlesbar nichtflüchtige Speichermedium 701 in einer beispielhaften Ausführungsform als ein einzelnes Medium gezeigt ist, sollte der Ausdruck so verwendet werden, dass er ein einzelnes Medium oder mehrere Medien einschließt (z. B. eine zentrale oder verteilte Datenbank und/oder zugehörige Cachespeicher und Server), die einen oder mehrere Sätze von Befehlen speichern. Der Ausdruck „computerlesbares nichtflüchtiges Speichermedium” soll so verwendet werden, dass er jedes Medium einschließt, das einen Satz von Befehlen zur Ausführung durch den Parser speichern oder codieren kann, die bewirken, dass der Parser eine oder mehrere der Methodiken der vorliegenden Erfindung ausführt oder Regeln, die durch den Parser verwendet werden, speichern oder codieren kann. Der Ausdruck „computerlesbares nichtflüchtiges Speichermedium” soll dementsprechend so verwendet werden, dass er Festkörperspeicher, optische und magnetische Medien usw. einschließt, wie etwa jeden Typ von Platten, darunter Disketten, optische Platten, CD-ROMs und magneto-optische Karten oder jeden Typ von Medien, die zum Speichern elektronischer Befehle geeignet sind, ohne jedoch auf diese beschränkt zu sein.
  • Bezugszeichenliste
  • 101
    Netzwerkprozessor
    102–105
    Prozessoren
    106
    Speicherzugriffseinheit
    107–108
    Netzwerkprozessorkomponenten
    113
    Netzwerkprozessorbus
    115
    Busschnittstelle(n)
    116
    Host-Ethernet-Adapter HEA
    117
    Paketprozessoreinheit
    119
    Schaltschnittstelle für Paketprozessoreinheit
    120
    Takt
    121–125
    Netzwerkprozessormodule
    204
    Genehmigungseinheit
    205
    Zeilenpuffer
    207
    Parser
    208
    Action Machines
    209
    RxXGMAC/RxXGXSPCS
    210, 212
    HEA-Komponenten zum Verwalten von Datenpaketen
    211, 213
    HEA-Komponenten zum Übertragen von Datenpaketen
    214
    RBB-Einheit
    215
    Regel-Repository
    216
    RxGMAC/RxSGMIIPCS
    217
    Datenweg
    218
    Picoprozessoren
    219
    Datenpaketübergabe an RBB-Einheit
    301
    Regel R1
    303
    Wiederholungszählwertfeld (bei Regeln des Typs Wiederholungsregel)
    305
    Identitätsvergleichswertfeld (ECV)
    306
    Identitätsvergleichsmaskenfeld (ECM)
    307
    Regeltypfeld
    308
    Paketzeiger-Erhöhungsfeld
    309–311
    Paketzeiger-Offsetfeld
    314
    Befehle/Wiederholungsbefehle
    315
    Ziel-Aktionsmaschine
    316
    Register der Verarbeitungseinheiten
    317
    Laden von Bits oder Bytes des Datenpakets
    318
    Aktualisieren des Paketzeigers
    321
    Registerzeile
    325
    Registerabschnitt, der Wiederholungszählwert enthält
    327
    Registerabschnitt, der Paketzeigerwert enthält
    328
    Registerabschnitt, der drei Bytes des Datenpakets enthält
    330
    Vergleichs-Funktionseinheit
    331
    Wiederholungs-Steuereinheit
    332
    Bewertungs-Funktionseinheit
    333
    Ausführungs-Funktionseinheit
    335
    Schlitz zum Vergleichen des ECV-Felds der Regel R1
    336
    Schlitz zum Vergleichen des ECV-Felds der Regel R2
    337
    Schlitz zum Vergleichen des ECV-Felds der Regel R3
    338
    Schlitz zum Vergleichen des ECV-Felds der Regel R4
    401
    Datenpaket
    402
    IPv6-Vorsatz
    403
    Quellen-Adressfeld
    404
    Ziel-Adressfeld
    405
    TCP-Vorsatzfeld
    406
    Nutzdatenabschnitt der Schicht 4 (L4)
    407
    4 × 4-Byte-Blöcke S1, S2, S3, S4
    408
    IPv6-Vorsatzabschnitt
    410
    IPv6-Erweiterungsvorsatz
    501–504
    Leseoperation
    505
    Bewertungs-/Analyseschritt
    506
    Ausführungsschritt
    507
    Speicheradresse der Regel(n)
    508
    Bewertungs-/Analyseschritt
    509
    Ausführungsschritt
    510
    Speicheradresse der Regel(n)
    511
    Bewertungs/Analyse-Schritt
    512
    Ausführungsschritt
    513
    Speicheradresse der Regel(n)
    520
    Leseoperation
    522
    Leseoperation
    523
    Bewertungs/Analyse-Schritt
    524
    Ausführungsschritt
    525
    Ausführungsschritt
    526
    Ausführungsschritt
    527
    Ausführungsschritt
    528
    Speicheradresse der Regel(n)
    601–604
    Schritte
    700
    Netzwerkeinheit
    701
    computerlesbares Speichermedium

Claims (15)

  1. Netzwerkprozessor (101), der aufweist: eine Regel-Repository (215), wobei die Regel-Repository eine Vielzahl von Regeln aufweist; einen Parser (207), der funktionsmäßig in der Lage ist, wenigstens in einer normalen Betriebsart und in einer Wiederholungs-Betriebsart zu arbeiten, wobei der Parser in der normalen Betriebsart wenigstens eine erste Regel (301) von der Regel-Repository in einem ersten Arbeitszyklus lädt und die geladene wenigstens eine erste Regel in einem zweiten Arbeitszyklus an einem Datenpaket (401) ausführt, wobei die wenigstens eine erste Regel durch den Parser ausgeführt wird zum Analysieren des Datenpakets, wodurch ein Analyseergebnis erzeugt wird, und wobei der Parser in der Wiederholungs-Betriebsart einen Wiederholungsbefehl (314) an dem Datenpaket bei jeder von einer oder mehreren Wiederholungen erneut anwendet, wobei jede Wiederholung in einem zweiten Arbeitszyklus ausgeführt wird, wodurch kein erster Arbeitszyklus zum Laden des Wiederholungsbefehls durch den Parser in der Wiederholungs-Betriebsart ausgeführt wird; wobei der Parser funktionsmäßig in der Lage ist, von der normalen Betriebsart in Abhängigkeit von dem Analyseergebnis zur Wiederholungs-Betriebsart dynamisch umzuschalten; und wobei der Parser die Anzahl der einen oder mehreren Wiederholungen durch Bewerten geladener Daten dynamisch ermittelt, wobei die geladenen Daten Daten sind, die Teil der geladenen wenigstens einen ersten Regel sind, und/oder Daten sind, die Teil des Datenpakets sind.
  2. Netzwerkprozessor nach Anspruch 1, wobei das dynamische Ermitteln der Anzahl der einen oder mehreren Wiederholungen durch Bewerten geladener Daten durch einen der folgenden Schritte ausgeführt wird: Lesen einer Wiederholungsanzahl (303), die in der geladenen wenigstens einen ersten Regel codiert ist, Aufrufen einer Routine, die durch die geladene wenigstens eine erste Regel gekennzeichnet ist, wobei die aufgerufene Routine die Anzahl von auszuführenden Wiederholungen berechnet, wobei die aufgerufene Routine Teil des Befehlssatzes einer oder mehrerer Verarbeitungseinheiten (218) ist, die Befehle des Parsers ausführen, oder Lesen einer Anzahl von einem Feld des Datenpakets (401).
  3. Netzwerkprozessor nach Anspruch 1, der ferner eine oder mehrere Aktionsmaschinen (208) zum Verarbeiten des Datenpakets aufweist, wobei das Ausführen der Wiederholungsbefehle in der Wiederholungs-Betriebsart das Verschieben eines oder mehrerer Teile des Datenpakets zu der einen oder den mehreren Aktionsmaschinen aufweist.
  4. Netzwerkprozessor nach Anspruch 1, wobei die Wiederholungsbefehle als Teil der geladenen wenigstens einen ersten Regel oder als eine Erweiterung der geladenen wenigstens einen ersten Regel umgesetzt sind.
  5. Netzwerkprozessor nach Anspruch 4, wobei die geladene wenigstens eine erste Regel eine Kennung (307) des Wiederholungsregeltyps aufweist
  6. Netzwerkprozessor nach Anspruch 1, wobei die Regeln der Regel-Repository Regeln wenigstens eines ersten und eines zweiten Regeltyps aufweisen, wobei der Regeltyp jeder Regel durch einen oder mehrere Datenwerte der Regel angegeben wird, wobei jede Regel des ersten Regeltyps durch den Parser in der normalen Betriebsart ausgeführt wird; und jede Regel des zweiten Regeltyps durch den Parser in der normalen Betriebsart ausgeführt wird, wenn die Regel das erste Mal ausgeführt wird, nachdem die Regel in ein oder mehrere Register (316) einer oder mehrerer Verarbeitungseinheiten (218) geladen wurde, die Befehle des Parsers ausführen, und in der Wiederholungs-Betriebsart ausgeführt wird, wenn die Regel bei einer m-ten Wiederholung ausgeführt wird, wobei m eine ganze Zahl größer als 1 ist.
  7. Netzwerkprozessor nach Anspruch 1, wobei wenigstens eine der wenigstens einen ersten Regeln einen Eingabevektor, der bei der Analyse des Datenpakets zu verwenden ist, und einen Ausgabevektor zum Speichern von Teilen des analysierten Datenpakets in Abhängigkeit von dem Analyseergebnis aufweist, wobei der Eingabevektor ein Identitätsvergleichsmaskenfeld (306) und ein Identitätsvergleichswertfeld (305) aufweist, wobei das Identitätsvergleichswertfeld erste Datenbits (VR1 bis VR4) aufweist, die mit zweiten Datenbits (VR) zu vergleichen sind, wobei die zweiten Datenbits von einer bestimmten Position des Datenpakets gelesen werden, wobei die ersten Datenbits in dem Identitätsvergleichswertfeld von dem Vergleich ausgeschlossen sind, wenn dritte Bits an entsprechenden Positionen in dem Identitätsvergleichsmaskenfeld eine Maskierung der ersten Datenbits in dem Identitätsvergleichswertfeld vorschreiben.
  8. Netzwerkprozessor nach Anspruch 1, wobei das Ermitteln der Anzahl von Wiederholungen, das durch den Parser auszuführen ist, vor dem Zeitpunkt oder in dem Moment ausgeführt wird, in dem der Parser die Ausführung des Wiederholungsbefehls in der Wiederholungs-Betriebsart beginnt.
  9. Netzwerkprozessor nach Anspruch 1, wobei die Anzahl von Wiederholungen durch den Parser ermittelt wird, der eine Programmroutine ausführt, wobei die Programmroutine aus der Gruppe ausgewählt ist, die aufweist: Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines vorgegebenen Abschnitts des Datenpakets durch den Parser erreicht wird; Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines IPv4-Vorsatzes durch den Parser erreicht wird; Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines IPv6-Erweiterungsvorsatzes (410) durch den Parser erreicht wird; Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position eines TCP-Vorsatzes (405) durch den Parser erreicht wird; Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl auszuführen, bis die letzte Byte-Position der Nutzdaten der Schicht 4 durch den Parser erreicht wird; und Programmcode, der den Parser veranlasst, in der Wiederholungs-Betriebsart den Wiederholungsbefehl bis zur letzten Byte-Position des analysierten Datenpakets (401) auszuführen.
  10. Netzwerkprozessor nach Anspruch 7, wobei das wenigstens eine Protokoll, das zu verwenden ist, um das Datenpaket weiterzuleiten oder zu verarbeiten, durch Vergleichen von Daten, die in einem Vorsatzfeld des Datenpakets enthalten sind, mit Daten, die in dem Identitätsvergleichswertfeld (305) der geladenen wenigstens einen ersten Regel enthalten sind, identifiziert wird.
  11. Netzwerkprozessor nach Anspruch 1, wobei das Datenpaket zwei oder mehrere verschachtelte Datenschichten aufweist, wobei jede Datenschicht einen Begleitdaten- und einen Nutzdatenabschnitt aufweist, wobei der Nutzdatenabschnitt einer ersten Datenschicht den Begleitdaten- und Nutzdatenabschnitt einer zweiten Datenschicht aufweist und wobei wenigstens eine zweite Regel, die geladen werden soll und bewirken kann, dass die Daten, die in der zweiten Datenschicht enthalten sind, durch den Parser ermittelt werden, indem die wenigstens eine erste Regel an Datenwerten ausgeführt wird, die in den Begleitdaten der ersten Datenschicht enthalten sind.
  12. Netzwerkprozessor nach Anspruch 1, wobei der Parser während des Ausführens von Wiederholungsbefehlen in der Wiederholungs-Betriebsart funktionsmäßig in der Lage ist, Paketzeiger (327) zu lesen und zu verwenden, die während des Ausführens der Wiederholungsbefehle dynamisch aktualisiert werden, und wobei jeder Paketzeiger auf den Beginn eines Abschnitts von Daten des Datenpakets zeigt, die bei einer Wiederholung durch die Wiederholungsbefehle verarbeitet werden sollen.
  13. Netzwerkprozessor nach Anspruch 12, wobei jeder Paketzeiger auf das erste Bit einer Gruppe von benachbarten Bits in dem Datenpaket zeigt, wobei für jede Wiederholung, die durch den Parser ausgeführt wird, ein Bit aus der Gruppe von benachbarten Bits (S1, S2, S3, S4) zu den Aktionsmaschinen übertragen wird.
  14. Verfahren, das durch einen Netzwerkprozessor (101) zum Beschleunigen einer Datenpaket-Syntaxanalyse ausgeführt wird, wobei das Verfahren aufweist: Laden (601) wenigstens einer Regel (301) von einer Regel-Repository (215) in einem ersten Arbeitszyklus durch einen Parser, wobei die Regel-Repository eine Vielzahl von Regeln aufweist; Ausführen (602) der wenigstens einen geladenen Regel an einem Datenpaket (401) in einem zweiten Arbeitszyklus durch den Parser, wobei der Parser in der normalen Betriebsart betrieben wird, wobei der Parser dadurch das Datenpaket analysiert und ein Analyseergebnis berechnet; dynamisches Umschalten (603) von der normalen Betriebsart zu einer Wiederholungs-Betriebsart durch den Parser, wobei das Umschalten in Abhängigkeit von dem Analyseergebnis ausgeführt wird, wenn der Parser zur Wiederholungs-Betriebsart schaltet, erneutes Anwenden (604) eines Wiederholungsbefehls auf das Datenpaket in jeder der einen oder mehreren Wiederholungen, wobei jede Wiederholung in einem zweiten Arbeitszyklus ausgeführt wird, wobei dann, wenn der Parser in der Wiederholungs-Betriebsart betrieben wird, der erste Arbeitszyklus nicht ausgeführt wird und wobei der Parser eine Anzahl von in der Wiederholungs-Betriebsart auszuführenden Wiederholungen durch Bewerten von geladenen Daten dynamisch ermittelt, wobei die geladenen Daten Daten sind, die Teil der geladenen wenigstens einen Regel sind, und/oder Daten sind, die Teil des Datenpakets sind.
  15. Computerlesbares nichtflüchtiges Speichermedium (701), das Befehle aufweist, die bei Ausführung durch eine Verarbeitungseinheit die Schritte des Verfahrens nach Anspruch 14 ausführen.
DE112011103561T 2010-12-16 2011-12-12 Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse Pending DE112011103561T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10306437 2010-12-16
EP10306437.4 2010-12-16
PCT/EP2011/072452 WO2012080170A1 (en) 2010-12-16 2011-12-12 Network processor and method for accelerating data packet parsing

Publications (1)

Publication Number Publication Date
DE112011103561T5 true DE112011103561T5 (de) 2013-08-08

Family

ID=45346475

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011103561T Pending DE112011103561T5 (de) 2010-12-16 2011-12-12 Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse

Country Status (6)

Country Link
US (2) US8854996B2 (de)
CN (1) CN103415836B (de)
DE (1) DE112011103561T5 (de)
GB (1) GB2502455B (de)
TW (1) TWI505185B (de)
WO (1) WO2012080170A1 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8804764B2 (en) 2010-12-21 2014-08-12 International Business Machines Corporation Data path for data extraction from streaming data
US20120198213A1 (en) * 2011-01-31 2012-08-02 International Business Machines Corporation Packet handler including plurality of parallel action machines
FR2973188B1 (fr) * 2011-03-25 2013-04-19 Qosmos Procede et dispositif d'extraction de donnees
US9282173B2 (en) 2012-02-17 2016-03-08 Viavi Solutions Inc. Reconfigurable packet header parsing
WO2014070883A2 (en) * 2012-10-30 2014-05-08 Jds Uniphase Corporation Method and system for identifying matching packets
US20140160954A1 (en) 2012-12-12 2014-06-12 International Business Machines Corporation Host ethernet adapter frame forwarding
US9560661B2 (en) 2013-05-22 2017-01-31 Microsoft Technology Licensing, Llc Allocation of shared resources for virtualized networking
US9426081B2 (en) * 2013-06-01 2016-08-23 Microsoft Technology Licensing, Llc Management of multilevel queues for shared network adapters
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US10447823B2 (en) * 2014-01-08 2019-10-15 Marvell Semiconductor, Inc. Packet parsing engine
WO2015187200A1 (en) * 2014-06-04 2015-12-10 Nicira, Inc. Efficient packet classification for dynamic containers
US9774707B2 (en) 2014-06-04 2017-09-26 Nicira, Inc. Efficient packet classification for dynamic containers
US10110712B2 (en) 2014-06-04 2018-10-23 Nicira, Inc. Efficient packet classification for dynamic containers
US9628385B2 (en) 2014-06-19 2017-04-18 Cavium, Inc. Method of identifying internal destinations of networks packets and an apparatus thereof
US10616380B2 (en) * 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US9742694B2 (en) 2014-06-19 2017-08-22 Cavium, Inc. Method of dynamically renumbering ports and an apparatus thereof
US9560136B2 (en) * 2014-08-07 2017-01-31 Sap Se High speed communication protocol
GB2549442A (en) * 2014-09-24 2017-10-25 Ibm Data packet processing
GB2530513B (en) * 2014-09-24 2016-08-24 Ibm Assembling response packets
GB2532055B (en) * 2014-11-07 2016-12-14 Ibm Sticky and transient markers for a packet parser
GB2532208A (en) 2014-11-07 2016-05-18 Ibm Host network controller
US20160179538A1 (en) * 2014-12-19 2016-06-23 Intel Corporation Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor
CN107592287A (zh) * 2016-07-07 2018-01-16 深圳市中兴微电子技术有限公司 一种报文加速方法及装置
US10091137B2 (en) * 2017-01-30 2018-10-02 Cavium, Inc. Apparatus and method for scalable and flexible wildcard matching in a network switch
CN111324382B (zh) * 2018-12-13 2023-03-03 华为技术有限公司 指令处理方法和芯片
CN109474641B (zh) * 2019-01-03 2020-05-12 清华大学 一种可破坏硬件木马的可重构交换机转发引擎解析器
CN110177083B (zh) * 2019-04-26 2021-07-06 创新先进技术有限公司 一种网卡、数据发送/接收方法及设备
US11082410B2 (en) 2019-04-26 2021-08-03 Advanced New Technologies Co., Ltd. Data transceiving operations and devices
US11088784B1 (en) 2020-12-24 2021-08-10 Aira Technologies, Inc. Systems and methods for utilizing dynamic codes with neural networks
US11368251B1 (en) 2020-12-28 2022-06-21 Aira Technologies, Inc. Convergent multi-bit feedback system
US11575469B2 (en) 2020-12-28 2023-02-07 Aira Technologies, Inc. Multi-bit feedback protocol systems and methods
US11477308B2 (en) 2020-12-28 2022-10-18 Aira Technologies, Inc. Adaptive payload extraction in wireless communications involving multi-access address packets
US11483109B2 (en) * 2020-12-28 2022-10-25 Aira Technologies, Inc. Systems and methods for multi-device communication
US11489624B2 (en) 2021-03-09 2022-11-01 Aira Technologies, Inc. Error correction in network packets using lookup tables
US11489623B2 (en) 2021-03-15 2022-11-01 Aira Technologies, Inc. Error correction in network packets
US11496242B2 (en) 2021-03-15 2022-11-08 Aira Technologies, Inc. Fast cyclic redundancy check: utilizing linearity of cyclic redundancy check for accelerating correction of corrupted network packets
CN113055081B (zh) * 2021-04-06 2022-09-27 北京控制工程研究所 一种高可靠低开销的跨周期数据处理方法
US11711453B2 (en) * 2021-10-24 2023-07-25 Mellanox Technologies, Ltd. Template-based packet parsing
CN114356827B (zh) * 2021-12-23 2024-03-22 海光信息技术股份有限公司 数据解析方法、装置、设备及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339421A (en) * 1991-03-22 1994-08-16 International Business Machines Corporation General data stream parser for encoding and decoding data and program interface for same
US6876653B2 (en) 1998-07-08 2005-04-05 Broadcom Corporation Fast flexible filter processor based architecture for a network device
US6393551B1 (en) 1999-05-26 2002-05-21 Infineon Technologies North America Corp. Reducing instruction transactions in a microprocessor
US6598034B1 (en) 1999-09-21 2003-07-22 Infineon Technologies North America Corp. Rule based IP data processing
US7178013B1 (en) * 2000-06-30 2007-02-13 Cisco Technology, Inc. Repeat function for processing of repetitive instruction streams
US7719980B2 (en) * 2002-02-19 2010-05-18 Broadcom Corporation Method and apparatus for flexible frame processing and classification engine
JP2005117206A (ja) * 2003-10-06 2005-04-28 Hitachi Ltd ネットワークプロセッサアクセラレータ
US20050100019A1 (en) * 2003-11-10 2005-05-12 Sahita Ravi L. Rule based packet processing engine
US7463630B2 (en) 2005-02-18 2008-12-09 Broadcom Corporation Multi-part parsing in a network device
US8179896B2 (en) * 2006-11-09 2012-05-15 Justin Mark Sobaje Network processors and pipeline optimization methods
US7813337B2 (en) 2007-01-19 2010-10-12 Broadcom Corporation Network packet processing using multi-stage classification
US8126014B2 (en) * 2008-04-09 2012-02-28 Qualcomm Incorporated Methods and apparatus for improved decoding of hybrid automatic repeat request transmissions
CN101656634B (zh) * 2008-12-31 2012-06-06 暨南大学 基于IPv6网络环境的入侵检测方法

Also Published As

Publication number Publication date
GB2502455B (en) 2015-09-16
GB201312415D0 (en) 2013-08-28
GB2502455A (en) 2013-11-27
CN103415836A (zh) 2013-11-27
WO2012080170A1 (en) 2012-06-21
US8867395B2 (en) 2014-10-21
TWI505185B (zh) 2015-10-21
US20120159132A1 (en) 2012-06-21
CN103415836B (zh) 2015-12-16
TW201241746A (en) 2012-10-16
US8854996B2 (en) 2014-10-07
US20120300642A1 (en) 2012-11-29

Similar Documents

Publication Publication Date Title
DE112011103561T5 (de) Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse
DE60016574T2 (de) Verfahren und vorrichtung zur belastungsverteilung uphänging von datenflussen
DE60222622T2 (de) Verfahren und Vorrichtung zur Paketkopfteilverarbeitung
DE69829645T2 (de) Verfahren zur Änderung von dynamischen Entscheidungsbäume
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE102013207049B4 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE60019401T2 (de) Verfahren und gerät für die dynamische und stapelweise verarbeitung von paketen mit einer netzwerkschnittstelle
DE102013209118B4 (de) Beibehaltung und Änderung von Netzwerküberlastungsbenachrichtigungen während der Übertragung von Netzwerkdaten zwischen einem physischen Netzwerk und einem virtuellen Netzwerk
DE112016005924T5 (de) Beschleunigte Netzwerkpaketverarbeitung
DE112020002481T5 (de) System und verfahren zur erleichterung der selbststeuerung von reduktionsmotoren
DE112013000752T5 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
EP2882144B1 (de) Verfahren und Filteranordnung zum Filtern von über einen seriellen Datenbus eines Kommunikationsnetzwerks in einem Teilnehmer des Netzwerks eingehenden Nachrichten
DE112019002585T5 (de) Datenebene mit heavy-hitter-detektor
DE602004009574T2 (de) System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden
DE112016002952T5 (de) Systeme und Verfahren zum Verarbeiten von Paketen in einem Computernetz
DE112010004809B4 (de) Mehrfachgranulare Datenstromverarbeitung
DE60009884T2 (de) Verfahren und vorrichtung zur identifizierung und klassifizierung von netzwerkverkehr in einer hochleistungs netzwerkschnittstelle
EP1911216B1 (de) Verfahren zum phasenbezogenen scheduling des datenflusses in geschalteten netzwerken
DE112019005382T5 (de) Auslegung und durchführung einer zeichenmustererkennung in einer schaltung auf datenebene
DE112005002981T5 (de) Maskierbarer inhaltsadressierbarer Speicher
DE202015009265U1 (de) Einheitliche api zur programmierung beider server und des fabric für die feinoptimieirung von netzwerken
DE112016001193T5 (de) Protokollunabhängiger, programmierbarer Schalter für durch Software definierte Datenzentrumsnetzwerke
DE202014010912U1 (de) Konsistentes Hashing anhand genauer Übereinstimmung mit Anwendung für Hardware-Lastausgleich
DE112021000455T5 (de) Deep packet analyse

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence