DE102021203777A1 - Flexibles lenken - Google Patents

Flexibles lenken Download PDF

Info

Publication number
DE102021203777A1
DE102021203777A1 DE102021203777.1A DE102021203777A DE102021203777A1 DE 102021203777 A1 DE102021203777 A1 DE 102021203777A1 DE 102021203777 A DE102021203777 A DE 102021203777A DE 102021203777 A1 DE102021203777 A1 DE 102021203777A1
Authority
DE
Germany
Prior art keywords
action
match
header section
header
cumulative
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
DE102021203777.1A
Other languages
English (en)
Inventor
Avi Urman
Lior Narkis
Ariel Shahar
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.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies Ltd
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 Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of DE102021203777A1 publication Critical patent/DE102021203777A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering

Abstract

In einer Ausführungsform enthält eine Netzwerkvorrichtung eine Schnittstelle, die so konfiguriert ist, dass sie ein Datenpaket empfängt, das einen Header-Abschnitt enthält, mindestens einen Parser, um die Daten des Header-Abschnitts zu parsen, wodurch sich ein erster Header-Abschnitt und ein zweiter Header-Abschnitt ergibt, eine Paketverarbeitungsmaschine, um eine erste Abgleich-und-Aktions-Tabelle abzurufen, einen ersten Index mit einem entsprechenden ersten Lenkaktionseintrag in der ersten Abgleich-und-Aktions-Tabelle in Reaktion auf den ersten Header-Abschnitt abzugleichen, einen kumulativen Nachschlagewerts basierend auf dem ersten Header-Abschnitts und des zweiten Header-Abschnitts in Reaktion auf den ersten Lenkaktionseintrag zu berechnen, eine zweite Abgleichs- und Aktionstabelle in Reaktion auf den ersten Lenkaktionseintrag abzurufen, einen zweiten Index mit einem entsprechenden zweiten Lenkaktionseintrag in der zweiten Abgleichs- und Aktionstabelle in Reaktion auf den kumulativen Nachschlagewert abzugleichen, und das Paket in Reaktion auf den zweiten Lenkaktionseintrag zu lenken.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf Computernetzwerke und insbesondere, aber nicht ausschließlich, auf das Lenken in Netzwerkvorrichtungen.
  • HINTERGRUND
  • Ein Netzwerk-Schnittstellen-Controller (NIC) (in bestimmten Netzwerken auch als Host-Bus-Adapter (HBA) oder Host-Channel-Adapter (HCA) bezeichnet) ist eine Einheit, die die Kommunikation zwischen einem Computer (z. B. einem Server) und einem Netzwerk, wie einem lokalen Netzwerk oder einem Switch-Fabric, verwaltet. Der NIC leitet Pakete vom Netzwerk zu ihrem Ziel im Computer, z. B. indem er die Pakete in einem Puffer einer Zielanwendung in einer Speichereinheit des Computers ablegt, und leitet ausgehende Pakete weiter, z. B. indem er sie entweder an das Netzwerk oder an einen Loopback-Port sendet. Das Steuern von Paketen zu ihrem Ziel wird allgemein als Steering bzw. Lenken bezeichnet, was die Bestimmung eines gewünschten Ziels des Pakets und die Weiterleitung des Pakets zu seinem Ziel beinhaltet.
  • Das Lenken bzw. Steering kann bei der Empfangsseitenskalierung (RSS) verwendet werden, einer Netzwerktreibertechnologie, die die effiziente Verteilung der Netzwerk-Empfangsverarbeitung auf mehrere Zentraleinheiten (CPUs) in Multiprozessorsystemen ermöglicht. Um empfangene Daten effizient zu verarbeiten, plant die Empfangsinterrupt-Servicefunktion eines Miniport-Treibers einen Deferred Procedure Call (DPC). Ohne RSS zeigt ein typischer DPC alle empfangenen Daten innerhalb des DPC-Aufrufs an. Daher läuft die gesamte Empfangsverarbeitung, die mit dem Aussetzer bzw. Interrupt verbunden ist, in der CPU, in der der Empfangsinterrupt auftritt. Mit RSS bieten die NIC und der Miniport-Treiber die Möglichkeit, Empfangs-DPCs auf anderen Prozessoren zu planen. Außerdem stellt das RSS-Design sicher, dass die Verarbeitung, die mit einer bestimmten Verbindung verbunden ist, auf einer zugewiesenen CPU bleibt. Der NIC kann eine Hash-Funktion implementieren, die 5-Tupel-Header-Informationen als Eingabe verwendet, und der resultierende Hash-Wert liefert die Mittel zur Auswahl einer CPU.
  • Die US-Patentanmeldung 2017/0286292 von Levy, et al. beschreibt ein Netzelement mit einer Entscheidungsvorrichtung, die eine Vielzahl von Mehrweg-Hashtabellen mit einfach großen und doppelt großen assoziativen Einträgen aufweist. Eine Logikpipeline extrahiert einen Suchschlüssel aus jeder einer Folge von empfangenen Datenelementen. Eine Hash-Schaltung wendet erste und zweite Hash-Funktionen auf den Suchschlüssel an, um erste und zweite Indizes zu erzeugen. Eine Lookup-Schaltung bzw. Nachschlage-Schaltung liest assoziative Einträge in den Hash-Tabellen, die jeweils durch den ersten und zweiten Index angegeben werden, und gleicht den Suchschlüssel mit den assoziativen Einträgen auf allen Wegen ab. Wenn eine Übereinstimmung zwischen dem Suchschlüssel und einem Eintragsschlüssel in einem angegebenen assoziativen Eintrag gefunden wird. Ein Prozessor verwendet den Wert des angezeigten assoziativen Eintrags, um assoziative Einträge aus einem Vorrat an assoziativen Einträgen in die Hash-Tabellen in Übereinstimmung mit einem einfach großen und einem doppelt großen Kuckucks-Einfügeverfahren bzw. „cuckoo insertion procedure“ einzufügen.
  • US-Patent 10.015.090 an Arad, et al., beschreibt ein Verfahren zum Lenken von Paketen, das den Empfang eines Pakets und die Bestimmung von Parametern, die bei der Lenkung des Pakets zu einem bestimmten Ziel verwendet werden sollen, in einer oder mehreren anfänglichen Lenkungsstufen auf der Grundlage eines oder mehrerer paketspezifischer Attribute umfasst. Das Verfahren umfasst ferner die Bestimmung einer Identität des spezifischen Ziels des Pakets in einer oder mehreren nachfolgenden Lenkungsstufen, die durch die in der einen oder den mehreren anfänglichen Stufen bestimmten Parameter und ein oder mehrere paketspezifische Attribute bestimmt werden, und die Weiterleitung des Pakets an das bestimmte spezifische Ziel.
  • Das US-Patent '090 beschreibt die Paketlenkung durch einen Netzwerk-Schnittstellen-Controller (NIC). Die Lenkung umfasst optional die Bestimmung eines Ziels für Pakete, basierend auf deren Header, an das sie weitergeleitet werden. Das Ziel kann z. B. durch eine virtuelle Einheitenidentität, wie eine virtuelle HCA-ID, und durch eine Flussschnittstelle, z. B. ein InfiniBand-Warteschlangenpaar (QP) oder einen Ethernet-Empfangsring, identifiziert werden. In einigen Ausführungsformen führt die Paketsteuerungseinheit einen mehrstufigen Steuerungsprozess bei der Bestimmung eines einzelnen Ziels des Pakets durch. Der mehrstufige Lenkungsprozess umfasst mehrere Stufen, in denen eine Tabellensuche basierend auf paketspezifischen Informationen, z. B. Adressinformationen im Paket, durchgeführt wird. Die paketspezifischen Informationen können Informationen im Paket und/oder Informationen über das Paket enthalten, die nicht im Paket enthalten sind, wie z. B. der Port, über den das Paket empfangen wurde. Es wird darauf hingewiesen, dass der mehrstufige Lenkungsprozess das Paket neben dem einzelnen Ziel auch an weitere Ziele weiterleiten kann. Außerdem kann eine einzige Stufe verwendet werden, um das Paket an eine Vielzahl der zusätzlichen Ziele zu lenken.
  • Die Verwendung mehrerer Stufen für die Weiterleitung von Paketen an ihr Ziel ermöglicht es, den Lenkungsprozess auf das jeweilige Paket abzustimmen. In jeder Stufe werden optional die Parameter der nächsten Nachschlage-Stufe ausgewählt, so dass in jeder Stufe nur die relevanten Parameter herangezogen werden. Dadurch sind die Lenkungs-Tabellen kleiner, die Hardware der Packet-Lenkungs-Einheit ist einfacher und die Lenkungs-Konfiguration ist flexibler. In einigen Ausführungsformen werden verschiedene Pakete in einer unterschiedlichen Anzahl von Stufen zu ihrem Ziel gelenkt. Die Verwendung einer unterschiedlichen Anzahl von Stufen für verschiedene Pakete ermöglicht eine effizientere Lenkung, indem mehr Stufen auf Pakete angewendet werden, die eine komplexe Lenkung erfordern, und die Weiterleitung einiger Pakete mit geringer Latenz ermöglicht wird. Dadurch, dass die Paketinformationen für die Lenkung in einer Vielzahl von verschiedenen Stufen konsultiert werden können, kann die Menge der Paketinformationen, die für einige Pakete konsultiert werden, größer sein als für andere Pakete, was mehr Flexibilität im Lenkungsprozess ermöglicht. Darüber hinaus kann sich die Lenkung auf unterschiedliche Paketfelder für unterschiedliche Pakete beziehen. Beispielsweise kann die Paketsteuerung für bestimmte Datenströme, die einen Lastausgleich zwischen CPU-Kernen erfordern, ein oder mehrere Felder, wie Quell- und Ziel-IP-Adressfelder und/oder UDP- oder TCP-Portfelder, bei der Durchführung des Lastausgleichs durch die Steuerungseinheit berücksichtigen. Für andere Datenströme, die keinen Lastausgleich erfordern, untersucht die Lenkungseinheit diese Felder überhaupt nicht, so dass die Lenkung dieser anderen Datenströme viel schneller erreicht wird.
  • KURZFASSUNG
  • Die Erfindung wird durch die Ansprüche definiert. Zur Veranschaulichung der Erfindung werden hier Aspekte und Ausführungsformen beschrieben, die in den Anwendungsbereich der Ansprüche fallen können oder auch nicht.
  • In einer Ausführungsform enthält eine Netzwerkvorrichtung eine Schnittstelle, die so konfiguriert ist, dass sie ein Datenpaket empfängt, das einen Header-Abschnitt enthält, mindestens einen Parser, um die Daten des Header-Abschnitts zu parsen bzw. zu analysieren, wodurch sich ein erster Header-Abschnitt und ein zweiter Header-Abschnitt ergeben, eine Paketverarbeitungsmaschine, um eine erste Abgleich-und-Aktions-Tabelle abzurufen, einen ersten Index mit einem entsprechenden ersten Lenkaktionseintrag in der ersten Abgleich-und-Aktions-Tabelle in Reaktion auf den ersten Header-Abschnitt abzugleichen, einen kumulativen Nachschlagewert auf der Grundlage des ersten Header-Abschnitts und des zweiten Header-Abschnitts in Reaktion auf den ersten Lenkaktionseintrag zu berechnen, eine zweite Abgleichs- und Aktionstabelle in Reaktion auf den ersten Lenkaktionseintrag abzurufen, einen zweiten Index mit einem entsprechenden zweiten Lenkaktionseintrag in der zweiten Abgleichs- und Aktionstabelle in Reaktion auf den kumulativen Nachschlagewert abzugleichen, und das Paket in Reaktion auf den zweiten Lenkaktionseintrag zu lenken.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung wird eine Netzwerkvorrichtung bereitgestellt, die eine Schnittstelle, die so konfiguriert ist, dass sie ein Datenpaket empfängt, das einen Header-Abschnitt enthält, mindestens einen Parser, der so gekoppelt ist, dass er Daten des Header-Abschnitts des Pakets empfängt, und so konfiguriert ist, dass er die Daten des Header-Abschnitts parst bzw. analysiert, wodurch sich ein erster Header-Abschnitt und ein zweiten Header-Abschnitt ergeben, einen Speicher, der so konfiguriert ist, dass er eine Vielzahl von Abgleichs- und Aktionstabellen speichert, wobei jede Abgleichs- und Aktionstabelle jeweilige Indizes und einen jeweiligen Lenkaktionseintrag enthält, der jedem der jeweiligen Indizes entspricht, und eine Paketverarbeitungsmaschine aufweist, die so gekoppelt ist, dass sie den ersten Header-Abschnitt und den zweiten Header-Abschnitt empfängt, und konfiguriert ist, um aus dem Speicher eine erste Abgleichs- und Aktionstabelle der Vielzahl von Abgleichs- und Aktionstabellen abzurufen, einen ersten Index mit einem entsprechenden ersten Lenkaktionseintrag in der ersten Abgleichs- und Aktionstabelle in Reaktion auf den ersten Header-Abschnitt abzugleichen, einen kumulativen Nachschlagewert auf der Grundlage des ersten Header-Abschnitts und des zweiten Header-Abschnitts in Reaktion auf den ersten Lenkaktionseintrag zu berechnen, eine zweite Abgleichs- und Aktionstabelle der Vielzahl von Abgleichs- und Aktionstabellen aus dem Speicher in Reaktion auf den ersten Lenkaktionseintrag abzurufen, einen zweiten Index mit einem entsprechenden zweiten Lenkaktionseintrag in der zweiten Abgleichs- und Aktionstabelle in Reaktion auf den kumulativen Suchwert abzugleichen, und das Paket in Reaktion auf den zweiten Lenkaktionseintrag zu lenken.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung gibt der erste Lenkaktionseintrag an, dass der kumulative Nachschlagewert auf der Grundlage des zweiten Header-Abschnitts berechnet werden soll.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung gibt der erste Lenkaktionseintrag der Paketverarbeitungsmaschine an, den kumulativen Nachschlagewert zu verwenden, wenn ein Abgleich in der zweiten Abgleichs- und Aktionstabelle durchgeführt wird.
  • Zusätzlich gibt gemäß einer Ausführungsform der vorliegenden Offenbarung ein Lenkaktionseintrag der Paketverarbeitungsmaschine an, den kumulativen Nachschlagewert zurückzusetzen, und die Paketverarbeitungsmaschine ist dazu konfiguriert, den kumulativen Nachschlagewert zurückzusetzen.
  • Darüber hinaus gibt gemäß einer Ausführungsform der vorliegenden Offenbarung ein Lenkaktionseintrag der Paketverarbeitungsmaschine an, den kumulativen Nachschlagewert nicht zu verwenden, wenn ein Abgleich in der zweiten Abgleichs- und Aktionstabelle durchgeführt wird.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung ist der mindestens eine Parser auch so konfiguriert, dass er die Daten des Header-Abschnitts parst, wodurch sich ein dritter Header-Abschnitt ergibt, und die Paketverarbeitungsmaschine ist so konfiguriert, dass sie eine dritte Abgleichs- und Aktionstabelle aus der Vielzahl von Abgleichs- und Aktionstabellen abruft und einen dritten Index mit einem entsprechenden dritten Steueraktionseintrag in der dritten Abgleichs- und Aktionstabelle in Reaktion auf den dritten Header-Abschnitt abgleicht.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung ist die Paketverarbeitungsmaschine so konfiguriert, dass sie den kumulativen Nachschlagewert auf der Grundlage des ersten Header-Abschnitts, des zweiten Header-Abschnitts und des dritten Header-Abschnitts berechnet.
  • Zusätzlich ist gemäß einer Ausführungsform der vorliegenden Offenbarung die Paketverarbeitungsmaschine so konfiguriert, dass sie einen ersten Hash-Wert in Reaktion auf den ersten Header-Abschnitt berechnet, den ersten Index in der ersten Abgleichs- und Aktionstabelle in Reaktion auf den ersten Hash-Wert abgleicht, einen zweiten Hash-Wert in Reaktion auf den zweiten Header-Abschnitt berechnet und den kumulativen Nachschlagewert auf der Grundlage des ersten Hash-Wertes und des zweiten Hash-Wertes in Reaktion auf den ersten Lenkaktionseintrag berechnet.
  • Außerdem gibt gemäß einer Ausführungsform der vorliegenden Offenbarung der erste Lenkaktionseintrag an, dass der kumulative Nachschlagewert auf der Grundlage des zweiten Hash-Werts berechnet werden soll.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung gibt der erste Lenkaktionseintrag der Paketverarbeitungsmaschine an, den kumulativen Nachschlagewert zu verwenden, wenn ein Abgleich in der zweiten Abgleichs- und Aktionstabelle durchgeführt wird.
  • Noch weiter in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung zeigt ein Lenkaktionseintrag der Paketverarbeitungsmaschine an, den kumulativen Nachschlagewert zurückzusetzen, und die Paketverarbeitungsmaschine ist dazu konfiguriert, den kumulativen Nachschlagewert zurückzusetzen.
  • Zusätzlich gibt gemäß einer Ausführungsform der vorliegenden Offenbarung ein Lenkaktionseintrag der Paketverarbeitungsmaschine an, den kumulativen Nachschlagewert nicht zu verwenden, wenn ein Abgleich in der zweiten Abgleichs- und Aktionstabelle durchgeführt wird.
  • Darüber hinaus ist gemäß einer Ausführungsform der vorliegenden Offenbarung der mindestens eine Parser auch so konfiguriert, dass er die Daten des Header-Abschnitts parst bzw. analysiert, wodurch sich ein dritter Header-Abschnitt ergibt, und die Paketverarbeitungsmaschine ist so konfiguriert, dass sie in Reaktion auf den dritten Header-Abschnitt einen dritten Hash-Wert berechnet, aus dem Speicher eine dritte Abgleichs- und Aktionstabelle aus der Vielzahl von Abgleichs- und Aktionstabellen abruft und in Reaktion auf den dritten Hash-Wert einen dritten Index abgleicht, der einen entsprechenden dritten Steueraktionseintrag in der dritten Abgleichs- und Aktionstabelle hat.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung ist die Paketverarbeitungsmaschine so konfiguriert, dass sie den kumulativen Nachschlagewert basierend auf dem ersten Hash-Wert, dem zweiten Hash-Wert und dem dritten Hash-Wert berechnet.
  • Noch weiter in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung umfasst der erste Lenkaktionseintrag eines oder mehreres aus Folgendem: Weiterleiten des zu verarbeitenden Pakets durch mindestens eine ausgewählte zentrale Verarbeitungseinheit, Weiterleiten des Pakets an mindestens ein ausgewähltes Ziel, Verwerfen des Pakets, Weiterleiten des Pakets an ein angegebenes Ziel, Fortsetzen der Verarbeitung mit einer anderen der Abgleichs- und Aktionstabellen, Hinzufügen eines aktuellen Hash-Wertes zu dem kumulativen Nachschlagewert, Hinzufügen von Daten eines Header-Abschnitts zu dem kumulativen Nachschlagewert, Verwenden des kumulativen Nachschlagewertes beim Durchführen eines Abgleichs, Nicht-Verwenden des kumulativen Nachschlagewertes beim Durchführen eines Abgleichs, Verwenden eines spezifischen Teil des Header-Abschnitts oder Verwenden eines spezifischen Teils des Header-Abschnitts beim Berechnen eines Hashs.
  • In Übereinstimmung mit einer anderen Ausführungsform der vorliegenden Offenbarung wird auch ein Netzwerkverfahren bereitgestellt, das Folgendes umfasst: Empfangen eines Datenpakets, das einen Header-Abschnitt enthält, Parsen von Daten des Header-Abschnitts, wodurch sich ein erster Header-Abschnitt und ein zweiter Header-Abschnitt ergeben, Speichern einer Vielzahl von Abgleichs- und Aktionstabellen, wobei jede Abgleichs- und Aktionstabelle entsprechende Indizes und einen entsprechenden Lenkaktionseintrag enthält, der jedem der entsprechenden Indizes entspricht, Abrufen einer ersten Abgleichs- und Aktionstabelle aus der Vielzahl von Abgleichs- und Aktionstabellen, Abgleichen eines ersten Index mit einem entsprechenden ersten Lenkaktionseintrag in der ersten Abgleich- und Aktionstabelle in Reaktion auf den ersten Header-Abschnitt, Berechnen eines kumulativen Nachschlagewerts auf der Grundlage des ersten Header-Abschnitts und des zweiten Header-Abschnitts in Reaktion auf den ersten Lenkaktionseintrag, Abrufen einer zweiten Abgleich- und Aktionstabelle aus der Vielzahl von Abgleich- und Aktionstabellen in Reaktion auf den ersten Lenkaktionseintrag, Abgleichen eines zweiten Index mit einem entsprechenden zweiten Lenkaktionseintrag in der zweiten Abgleich- und Aktionstabelle in Reaktion auf den kumulativen Nachschlagewert, und Lenken des Pakets in Reaktion auf den zweiten Lenkaktionseintrag.
  • Zusätzlich umfasst das Verfahren gemäß einer Ausführungsform der vorliegenden Offenbarung das Parsen der Daten des Header-Abschnitts, was einen dritten Header-Abschnitt ergibt, das Abrufen einer dritten Abgleich- und Aktionstabelle aus der Vielzahl von Abgleich- und Aktionstabellen und das Abgleichen eines dritten Index mit einem entsprechenden dritten Lenkaktionseintrag in der dritten Abgleich- und Aktionstabelle in Reaktion auf den dritten Header-Abschnitt.
  • Darüber hinaus umfasst das Verfahren gemäß einer Ausführungsform der vorliegenden Offenbarung das Berechnen eines ersten Hash-Wertes in Reaktion auf den ersten Header-Abschnitt, das Abgleichen des ersten Index in der ersten Abgleichs- und Aktionstabelle in Reaktion auf den ersten Hash-Wert, das Berechnen eines zweiten Hash-Wertes in Reaktion auf den zweiten Header-Abschnitt und das Berechnen des kumulativen Nachschlagewertes auf der Grundlage des ersten Hash-Wertes und des zweiten Hash-Wertes in Reaktion auf den ersten Lenkaktionseintrag.
  • Gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung umfasst das Verfahren das Parsen der Daten des Header-Abschnitts, wodurch sich ein dritter Header-Abschnitt ergibt, das Berechnen eines dritten Hash-Werts in Reaktion auf den dritten Header-Abschnitt, das Abrufen einer dritten Abgleichs- und Aktionstabelle aus der Vielzahl von Abgleichs- und Aktionstabellen und das Abgleichen eines dritten Index mit einem entsprechenden dritten Steuerungsaktionseintrag in der dritten Abgleichs- und Aktionstabelle in Reaktion auf den dritten Hash-Wert.
  • Noch weiter in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung umfasst der erste Lenkaktionseintrag eines oder mehreres aus Folgendem: Weiterleiten des Pakets zur Verarbeitung durch mindestens eine ausgewählte zentrale Verarbeitungseinheit, Weiterleiten des Pakets an mindestens ein ausgewähltes Ziel, Verwerfen des Pakets, Weiterleiten des Pakets an ein angegebenes Ziel, Fortsetzen der Verarbeitung mit einer anderen der Abgleichs- und Aktionstabellen, Hinzufügen eines aktuellen Hash-Wertes zu dem kumulativen Nachschlagewert, Hinzufügen von Daten eines Header-Abschnitts zu dem kumulativen Nachschlagewert, Verwenden des kumulativen Nachschlagewertes beim Durchführen eines Abgleichs, Nicht-Verwenden des kumulativen Nachschlagewertes beim Durchführen eines Abgleichs, Verwenden eines spezifischen Teils des Header-Abschnitts oder Verwenden eines spezifischen teils des Header-Abschnitts beim Berechnen eines Hashs.
  • Jedes Merkmal eines Aspekts oder einer Ausführungsform kann auf andere Aspekte oder Ausführungsformen angewandt werden, in jeder geeigneten Kombination. Insbesondere kann jedes Merkmal eines Verfahrensaspekts oder einer Ausführungsform auf einen Vorrichtungsaspekt oder eine Ausführungsform angewandt werden und umgekehrt.
  • Figurenliste
  • Die vorliegende Erfindung wird aus der folgenden detaillierten Beschreibung in Verbindung mit den Zeichnungen besser verständlich, in denen:
    • 1 eine Blockdiagrammansicht einer Netzwerkvorrichtung ist, das gemäß einer Ausführungsform der vorliegenden Erfindung aufgebaut ist und funktioniert;
    • 2 eine Blockdiagrammansicht der Hardware-Parser in der Vorrichtung von 1 ist, die gemäß einer Ausführungsform der vorliegenden Erfindung arbeiten;
    • 3 eine Blockdiagrammansicht von Hardwareparsern ist, die auf Daten aus einem Parsing-Konfigurationsdatensatz gemäß einer Ausführungsform der vorliegenden Erfindung zugreifen;
    • 4 eine Blockdiagrammansicht ist, die Felder im Parsing-Konfigurationsdatensatz von 3 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 5-9 Blockdiagramm-Ansichten sind, die einen mehrstufigen Steuerungsprozess auf der Netzwerkvorrichtung von 1 illustrieren; und
    • 10A und 10B zwei Teile eines Flussdiagramms sind, das Schritte in einem Verfahren zum Betrieb der Netzwerkvorrichtung von 1 enthält.
  • BESCHREIBUNG VON AUSFÜHRUNGSBEISPIELEN
  • ÜBERSICHT
  • Wie bereits erwähnt, sorgt RSS (Receive Side Scaling) dafür, dass die Verarbeitung, die mit einer bestimmten Verbindung verbunden ist, auf einer zugewiesenen CPU bleibt. Der Netzwerkschnittstellen-Controller (NIC) implementiert typischerweise eine Hash-Funktion, die 5-Tupel-Header-Informationen (z. B. Quell-IP-Adresse/Port-Nummer, Ziel-IP-Adresse/Port-Nummer und das verwendete Protokoll) als Eingabe verwendet, und der resultierende Hash-Wert liefert die Mittel zur Auswahl einer CPU.
  • Lenkungsentscheidungen, die auf Basis von 5-Tupel-Header-Informationen getroffen werden, können in einigen Szenarien zu einschränkend sein. Zum Beispiel bei der Netzwerkfunktionsvirtualisierung (NFV), bei der Pakete mehrere Virtualisierungs- und Tunneling-Protokolle wie General Packet Radio Service (GPRS) Tunneling Protocol (GTP), Virtual Local Area Network (LAN) (VLAN), Multiprotocol Label Switching (MPLS) und Virtual Extensible LAN (VXLAN) haben können, müssen Lenkungsentscheidungen möglicherweise den Header eines oder mehrerer der Virtualisierungs- oder Tunneling-Protokolle berücksichtigen.
  • Auf der Übertragungsseite können Lenkungsentscheidungen verwendet werden, um z. B. einen Lastausgleich zwischen verschiedenen physischen Ports oder zwischen verschiedenen Zielen (z. B. verschiedenen Servern, die denselben Dienst bereitstellen) durchzuführen. Um die übertragungsseitigen Lenkungsentscheidungen durchzuführen, können Header-Informationen aus einem oder mehreren Headern verwendet werden.
  • Unabhängig davon, ob es sich um die Empfangs- oder die Sendeseite handelt, können die Lenkungsentscheidungen nicht standardisiert sein und daher ist die einfache Verwendung der 5-Tupel-Header-Informationen für diese Lenkungsentscheidungen nicht ausreichend. Eine Lösung für nicht standardmäßige Lenkungsentscheidungen ist die Verwendung eines mehrstufigen Lenkungsprozesses, bei dem mehrere Tabellen abgerufen werden und ein einzelner Header-Eintrag pro Tabelle nachgeschlagen wird (z. B. kann ein Hash des MAC-Headers in einer Hash-Tabelle nachgeschlagen werden und ein Hash des IP-Headers in einer IP-Tabelle und so weiter). Diese Lösung ist möglicherweise nicht effizient und erfordert große Tabellen.
  • Ausführungsformen der vorliegenden Erfindung lösen die obigen Probleme, indem sie eine Netzwerkvorrichtung bereitstellen, in dem eine Lenkungsentscheidung auf der Grundlage eines mehrstufigen Lenkungsprozesses unter Verwendung einer beliebigen geeigneten Kombination geeigneter, vom Benutzer auswählbarer Headerfelder getroffen wird, was zu einem effizienteren mehrstufigen Lenkungsprozess führt. Der Benutzer kann einen beliebigen Satz von Feldern aus den Paket-Headern auswählen, die als Eingabe für eine Hash-Funktion verwendet werden sollen. Die Ergebnisse der Hashes werden zum Nachschlagen in Abgleichs- und Aktionstabellen entsprechend der Konfiguration der Tabellen verwendet. Jede Abgleichs- und Aktionstabelle enthält mehrere Lenkungseinträge, wobei jeder Eintrag einen Index und einen entsprechenden Lenkaktionseintrag enthält. Der Lenkaktionseintrag kann eine CPU zur Verarbeitung des Pakets, eine Warteschlange, in der das Paket eingereiht werden soll, einen Zielport und/oder - knoten, an den das Paket gesendet werden soll, eine Änderung des Paketheaders und/oder eine nächste Abgleichs- und Aktionstabelle angeben, die als Teil des Lenkungsprozesses verwendet werden soll. Der Eintrag für die Lenkungsaktion kann angeben, welche Header-Daten verwendet werden sollen und wie die Header-Daten für das Nachschlagen in der nächsten Abgleichs- und Aktionstabelle verarbeitet werden sollen. Auf diese Weise kann die Verarbeitung von einer Abgleichs- und Aktionstabelle zu einer anderen übergehen. Ein für die Suche in einer vorherigen Tabelle verwendeter Hash-Wert kann mit einem oder mehreren zukünftigen berechneten Hash-Werten akkumuliert werden, so dass die Suche in einer oder mehreren Tabellen auf dem akkumulierten Hash-Wert basieren kann. Der Eintrag für die Lenkungsaktion kann angeben, ob der Hash-Wert akkumuliert werden soll. Beispielsweise kann das Nachschlagen in einer Tabelle auf einem Hash-Wert des MAC-Headers basieren, das Nachschlagen in einer anderen Tabelle kann auf dem Hash-Wert des MAC-Headers und einem Hash-Wert des IP-Headers basieren, die mit einer beliebigen geeigneten Methode kombiniert wurden (z. B. unter Verwendung von Verkettung und/oder Durchführung eines Hash-Werts auf dem kombinierten MAC-Header-Hash-Wert und IP-Header-Hash-Wert), und das Nachschlagen in einer anderen Tabelle kann auf dem Hash-Wert des MAC-Headers, dem Hash-Wert des IP-Headers und einem Hash-Wert eines Tunneling-Headers basieren.
  • Die Netzwerkvorrichtung kann als jede geeignete Netzwerkvorrichtung implementiert werden, z. B. ein NIC oder ein Switch.
  • In einigen Ausführungsformen enthält die Netzwerkvorrichtung eine Schnittstelle, die ein Datenpaket mit einem Header-Abschnitt empfängt, und mindestens einen Parser, der Daten des Header-Abschnitts des Pakets empfängt und die Daten des Header-Abschnitts parst, was einen ersten Header-Abschnitt, einen zweiten Header-Abschnitt und optional einen dritten Header-Abschnitt usw. ergibt. Ein Speicher der Netzwerkvorrichtung speichert Abgleichs- und Aktionstabellen. Jede Abgleichs- und Aktionstabelle enthält entsprechende Indizes und einen entsprechenden Lenkaktionseintrag, der jedem der entsprechenden Indizes entspricht. Eine Paketverarbeitungsmaschine der Netzwerkvorrichtung empfängt den ersten Header-Abschnitt, den zweiten Header-Abschnitt usw. und holt aus dem Speicher eine erste Abgleichs- und Aktionstabelle und gleicht einen ersten Index mit einem entsprechenden ersten Lenkaktionseintrag in der ersten Abgleichs- und Aktionstabelle in Reaktion auf den ersten Header-Abschnitt ab. In einigen Ausführungsformen berechnet die Paketverarbeitungsmaschine einen ersten Hash-Wert in Reaktion auf den ersten Header-Abschnitt und gleicht den ersten Index in der ersten Abgleich- und Aktionstabelle in Reaktion auf den ersten Hash-Wert ab, was den ersten Lenkaktionseintrag ergibt.
  • Die Paketverarbeitungsmaschine berechnet auch einen kumulativen Nachschlagewert auf der Grundlage des ersten Header-Abschnitts und des zweiten Header-Abschnitts in Reaktion auf den ersten Lenkaktionseintrag. In einigen Ausführungsformen gibt der erste Lenkaktionseintrag an, dass der kumulative Nachschlagewert auf der Grundlage des zweiten Header-Abschnitts berechnet werden soll, der mit dem ersten Header-Abschnitt in einem Register kombiniert wird.
  • In einigen Ausführungsformen berechnet die Paketverarbeitungsmaschine einen zweiten Hash-Wert in Reaktion auf den zweiten Header-Abschnitt. Der erste Lenkaktionseintrag zeigt an, dass der kumulative Nachschlagewert basierend auf dem zweiten Hash-Wert (und dem zuvor gespeicherten ersten Hash-Wert) berechnet werden soll. Daher berechnet die Paketverarbeitungsmaschine den kumulativen Nachschlagewert basierend auf dem ersten Hash-Wert und dem zweiten Hash-Wert in Reaktion auf den ersten Lenkaktionseintrag. Auf diese Weise kann das Nachschlagen in einer zweiten Abgleichs- und Aktionstabelle auf der Kombination des ersten Hash-Werts und des zweiten Hash-Werts basieren, d. h. auf kumulative Weise.
  • In einigen Ausführungsformen gibt ein Lenkaktionseintrag der Paketverarbeitungsmaschine an, den kumulativen Nachschlagewert zurückzusetzen. Die Paketverarbeitungsmaschine setzt daraufhin den kumulativen Nachschlagewert zurück. Dies kann durchgeführt werden, bevor der aktuelle Header-Teil oder der berechnete Hash-Wert in das Register geschrieben wird.
  • Die Paketverarbeitungsmaschine holt aus dem Speicher die zweite Abgleichs- und Aktionstabelle in Reaktion auf den ersten Lenkaktionseintrag (d. h., der erste Lenkaktionseintrag zeigt an, dass die zweite Abgleichs- und Aktionstabelle als nächstes für die Suche nach dem berechneten Hash-Wert oder dem zweiten Header-Teil abgerufen werden sollte).
  • In einigen Ausführungsformen zeigt der erste Lenkaktionseintrag der Paketverarbeitungsmaschine an, den kumulativen Nachschlagewert zu verwenden, wenn ein Abgleich in der zweiten Abgleichs- und Aktionstabelle durchgeführt wird. Die Paketverarbeitungsmaschine ist so konfiguriert, dass sie einen zweiten Index mit einem entsprechenden zweiten Lenkaktionseintrag in der zweiten Abgleichs- und Aktionstabelle in Reaktion auf den kumulativen Nachschlagewert abgleicht.
  • In einigen Ausführungsformen kann ein Lenkaktionseintrag der Paketverarbeitungsmaschine anzeigen, dass der kumulative Nachschlage-Wert nicht verwendet werden soll, wenn ein Abgleich in einer der Abgleichs- und Aktionstabellen durchgeführt wird (obwohl der kumulative Nachschlage-Wert noch für die zukünftige Verwendung für den Abgleich in anderen Abgleichs- und Aktionstabellen beibehalten wird).
  • Die Paketverarbeitungsmaschine lenkt das Paket in Abhängigkeit von einem der Lenkaktionseinträge der Tabellen, die während des mehrstufigen Lenkungsprozesses durchlaufen werden.
  • Der kumulative Nachschlagewert kann aus zwei, drei oder mehr Hash-Werten von Header-Abschnitten bestehen, abhängig von der Konfiguration der Tabellen und der Lenkungsstufe. Beispielsweise ruft die Paketverarbeitungsmaschine eine dritte Abgleichs- und Aktionstabelle ab und gleicht einen dritten Index mit einem entsprechenden dritten Lenkaktionseintrag in der dritten Abgleichs- und Aktionstabelle in Reaktion auf den dritten Header-Abschnitt oder den kumulativen Nachschlagewert ab. In einigen Ausführungsformen berechnet die Paketverarbeitungsmaschine den kumulativen Nachschlagewert auf der Grundlage des ersten Header-Abschnitts, des zweiten Header-Abschnitts und des dritten Header-Abschnitts.
  • In einigen Ausführungsformen berechnet die Paketverarbeitungsmaschine einen dritten Hash-Wert in Reaktion auf den dritten Header-Abschnitt und gleicht den dritten Index in der dritten Abgleichs- und Aktionstabelle in Reaktion auf den dritten Hash-Wert oder den kumulativen Nachschlagewert ab. In einigen Ausführungsformen ist die Paketverarbeitungsmaschine so konfiguriert, dass sie den kumulativen Nachschlagewert basierend auf dem ersten Hash-Wert, dem zweiten Hash-Wert und dem dritten Hash-Wert berechnet.
  • Ein Lenkaktionseintrag kann eines oder mehrere der folgenden Elemente enthalten: Weiterleiten des Pakets zur Verarbeitung durch mindestens eine ausgewählte zentrale Verarbeitungseinheit; Weiterleiten des Pakets an mindestens ein ausgewähltes Ziel; Verwerfen des Pakets; Weiterleiten des Pakets an ein angegebenes Ziel; Fortsetzen der Verarbeitung mit einer anderen der Abgleichs- und Aktionstabellen; Hinzufügen eines aktuellen Hash-Werts zum kumulativen Nachschlage-Wert Hinzufügen von Daten eines Header-Abschnitts zu dem kumulativen Nachschlagewert; Verwenden des kumulativen Nachschlagewerts beim Durchführen eines Abgleichs; Nicht-Verwenden des kumulativen Nachschlagewerts beim Durchführen eines Abgleichs; Verwenden eines spezifischen Teils des Header-Abschnitts; oder Verwenden eines spezifischen Teils des Header-Abschnitts beim Berechnen eines Hashs.
  • SYSTEMBESCHREIBUNG
  • Es wird nun auf 1 verwiesen, die eine Blockdiagrammansicht einer Netzwerkvorrichtung 10 darstellt, das gemäß einer Ausführungsform der vorliegenden Erfindung aufgebaut und funktionsfähig ist. Die Netzwerkvorrichtung 10 kann jede geeignete Vorrichtung sein, zum Beispiel, aber nicht beschränkt auf, einen Router, einen Switch oder eine Netzwerkschnittstellenkarte (NIC). Die Netzwerkvorrichtung 10 umfasst mindestens eine Netzwerkschnittstelle 12, die so konfiguriert ist, dass sie als mindestens ein Eingangsport und mindestens ein Ausgangsport zum Empfangen von Paketen von und Senden von Paketen an ein Paketdatennetzwerk 14 arbeitet.
  • Die Netzwerkvorrichtung 10 umfasst außerdem einen Puffer 16, Hardware-Parser 18, eine Paketverarbeitungsmaschine 20, einen Controller 22, Parser-Konfigurationsregister 24, einen Cache-Speicher 26, einen Speicher 27, der zum Speichern von Abgleichs- und Aktionstabellen 28 konfiguriert ist, und optional eine Kommunikationsbus-Schnittstelle 30.
  • Die von der Netzwerkschnittstelle 12 empfangenen Pakete werden im Puffer 16 gespeichert. Header-Abschnitte der empfangenen Pakete werden von den Hardware-Parsern 18 geparst, die vom Controller 22 gesteuert werden, typischerweise unter Anweisung der Paketverarbeitungsmaschine 20. Zumindest einige der Hardware-Parser 18 parsen die Header-Abschnitte entsprechend den Daten, die in die Parser-Konfigurationsregister 24 geladen wurden. Der Cache-Speicher 26 speichert eine Auswahl von Parsing-Konfigurationsdatensätzen 32, die von der Steuerung 22 auf Anweisung der Paketverarbeitungsmaschine 20 selektiv in die Parser-Konfigurationsregister 24 aus dem Cache-Speicher 26 geladen werden. Beispielsweise kann einer der Parsing-Konfigurationsdatensätze 32, wenn er in einen der Hardware-Parser 18 geladen wird, diesen Hardware-Parser 18 veranlassen, einen Header-Abschnitt als MPLS-Header zu parsen. Ein anderer der Parsing-Konfigurationsdatensätze 32 kann, wenn er in einen der Hardware-Parser 18 geladen wird, diesen Hardware-Parser 18 veranlassen, einen Header-Abschnitt als VLAN-Header zu parsen, und so weiter.
  • Die Hardware-Parser 18 parsen die verschiedenen Header, die in den Header-Abschnitten der Pakete enthalten sind, und können optional zusätzliche Informationen aus den Header-Abschnitten extrahieren. Die geparsten Informationen werden im Puffer 16 zum Abruf durch die Paketverarbeitungsmaschine 20 gespeichert und/oder an die Paketverarbeitungsmaschine 20 gesendet. In einigen Ausführungsformen wird der Header-Abschnitt auch von den Hardware-Parsem 18 an die Paketverarbeitungsmaschine 20 gesendet. Die Hardware-Parser 18 werden mit Bezug auf die 2-4 näher beschrieben.
  • Die Paketverarbeitungsmaschine 20 verwendet die Abgleichs- und Aktionstabellen 28, um zu bestimmen, wie jedes Paket gemäß den geparsten Informationen, die von den Hardware-Parsern 18 erzeugt wurden, verarbeitet werden soll. Die Abgleichs- und Aktionstabellen 28 enthalten Indizes, die mit den geparsten Informationen übereinstimmen sollen, sowie zugehörige Aktionen, die ausgeführt werden sollen, wenn eine Übereinstimmung gefunden wird. Die abzugleichenden Indizes können auf jedem Feld oder Unterfeld des Pakets basieren, z. B. MAC- oder IP-Adressen, Sicherheitsinformationen, Transmission Control Protocol (TCP)-Daten, User Datagram Protocol (UDP)-Daten, Virtual Extensible Local Area Network (VXLAN)-Daten, Generic Routing Encapsulation (GRE)-Daten und Generic Network Virtualization Encapsulation (GENEVE)-Daten, um nur ein Beispiel zu nennen. Die Aktionen können jede geeignete Aktion oder Aktionen pro Übereinstimmung umfassen, z. B., aber nicht beschränkt auf, das Reparieren des Header-Abschnitts unter Verwendung eines anderen Parsing-Konfigurations-Sets, das Senden des Pakets an einen gegebenen Netzwerkknoten 36 über das Paketdatennetzwerk 14, das Senden des Pakets an eine gegebene CPU 38 eines Hosts 34, der mit der Netzwerkvorrichtung 10 über die Kommunikationsbus-Schnittstelle 30 verbunden ist, das Ändern des Header-Abschnitts, das Hinzufügen eines neuen Headers und/oder das Entfernen eines Headers, z. B. VLAN oder Multi-Protocol Label Switching (MPLS). Weitere Aktionen werden unter Bezugnahme auf 7 beschrieben. Die Kommunikationsbus-Schnittstelle 30 kann in Übereinstimmung mit jedem geeigneten Protokoll arbeiten, z. B., aber nicht beschränkt auf den Schnittstellenstandard PCIe (Peripheral Component Interconnect Express).
  • Wenn z. B. eine MAC-Adresse im Header-Abschnitt mit einer gegebenen MAC-Adresse übereinstimmt, soll das Paket von den Hardware-Parsem 18 repariert werden, nachdem die Parser-Konfigurationsregister 24 mit dem Parsing-Konfigurationsdatensatz A geladen sind. In diesem Beispiel weist die Paketverarbeitungsmaschine 20 den Controller 22 an, den Parsing-Konfigurationsdatensatz A aus dem Cache-Speicher 26 zu laden und den Header-Abschnitt oder einen Link zum Header-Abschnitt im Puffer 16 an die Hardware-Parser 18 zu senden, damit der Header-Abschnitt entsprechend dem Parsing-Konfigurationsdatensatz A repariert werden kann. Ein weiteres Beispiel: Wenn die geparsten Informationen Daten D enthalten, wird der Header-Abschnitt geändert. Ein weiteres Beispiel: Wenn die geparsten Informationen Daten E enthalten, wird das Paket über Port F an das Paketdatennetz 14 zurückgesendet.
  • Die Funktionalität der Paketverarbeitungsmaschine 20 wird auch mit Bezug auf die 5-9 beschrieben. In der Praxis können einige oder alle Funktionen der Paketverarbeitungsmaschine 20 in einer einzigen physikalischen Komponente kombiniert oder alternativ unter Verwendung mehrerer physikalischer Komponenten implementiert werden. Diese physikalischen Komponenten können fest verdrahtete oder programmierbare Geräte oder eine Kombination aus beidem umfassen. In einigen Ausführungsformen können zumindest einige der Funktionen der Paketverarbeitungsmaschine 20 von einem programmierbaren Prozessor unter der Steuerung einer geeigneten Software ausgeführt werden. Diese Software kann in elektronischer Form auf ein Gerät heruntergeladen werden, z. B. über ein Netzwerk. Alternativ oder zusätzlich kann die Software in greifbaren, nicht übertragbaren, computerlesbaren Speichermedien gespeichert werden, wie z. B. in einem optischen, magnetischen oder elektronischen Speicher.
  • In der Praxis können einige oder alle Funktionen des Controllers 22 in einer einzigen physikalischen Komponente kombiniert oder alternativ mit mehreren physikalischen Komponenten implementiert werden. Diese physikalischen Komponenten können fest verdrahtete oder programmierbare Geräte oder eine Kombination aus beidem umfassen. In einigen Ausführungsformen können zumindest einige der Funktionen des Steuergeräts 22 von einem programmierbaren Prozessor unter der Steuerung einer geeigneten Software ausgeführt werden. Diese Software kann in elektronischer Form, z. B. über ein Netzwerk, auf ein Gerät heruntergeladen werden. Alternativ oder zusätzlich kann die Software in greifbaren, nicht übertragbaren, computerlesbaren Speichermedien gespeichert sein, wie z. B. in einem optischen, magnetischen oder elektronischen Speicher. In einigen Ausführungsformen kann die Funktionalität des Controllers 22 in der Paketverarbeitungsmaschine 20 implementiert sein.
  • Im Beispiel von 1 kann die Netzwerkvorrichtung 10 als Netzwerkschnittstellenkarte für den Host 34 implementiert sein. Der Host 34 kann mehrere CPUs 38 enthalten, die verschiedenen virtuellen Netzwerkfunktionen (VNFs) entsprechen. Jede VNF kann eine oder mehrere virtuelle Maschinen (VMs) enthalten. Ein Hypervisor, der auf dem Host 34 läuft, kann die VMs implementieren. In einigen Beispielen können verschiedene VMs für verschiedene Kunden betrieben werden, die jeweils ihre eigenen Anforderungen an das Parsing und die Paketverarbeitung haben. Jeder Kunde kann in der Lage sein, die Hardware-Parser 18 der Netzwerkvorrichtung 10 nach seinen eigenen Anforderungen zu konfigurieren. Da die Anzahl der Hardware-Parser 18 jedoch begrenzt ist, können die Hardware-Parser 18 nicht mit einem einzigen Parsing-Konfigurationsdatensatz programmiert werden, um die Daten der verschiedenen Kunden gemäß den Kundenanforderungen zu parsen. Wenn ein Paket im Puffer 16 empfangen wird, parsen die Hardware-Parser 18 zumindest einen Teil des Header-Abschnitts gemäß einem Standard-Parsing-Konfigurationsdatensatz. Die Paketverarbeitungsmaschine 20 verwendet die Abgleichs- und Aktionstabellen 28, um zu bestimmen, welche Aktion durchgeführt werden soll. Eine Aktion kann das Reparieren des Header-Abschnitts unter Verwendung des spezifischen Parsing-Konfigurationsdatensatzes für den mit dem Header-Abschnitt verbundenen Kunden oder die VM umfassen. Zum Beispiel kann eine im Header-Abschnitt enthaltene MAC-Adresse die mit diesem Header-Abschnitt verbundene VM angeben.
  • Es wird nun auf 2 verwiesen, die eine Blockdiagrammansicht der Hardware-Parser 18 in der Vorrichtung 10 von 1 darstellt, die gemäß einer Ausführungsform der vorliegenden Erfindung arbeitet. Die Hardware-Parser 18 umfassen flexible Hardware-Parser 40 und optional einen oder mehrere native Hardware-Parser 42, wie in 2 gezeigt. Die flexiblen Hardware-Parser 40 sind so konfiguriert, dass sie Header-Abschnittsdaten entsprechend den Daten in den Parser-Konfigurationsregistern 24 parsen. Die flexiblen Hardware-Parser 40 sind daher auch nach der Herstellung der Netzwerkvorrichtung 10 rekonfigurierbar. Die nativen Hardware-Parser 42 hingegen sind im Allgemeinen nicht rekonfigurierbar, nachdem der Netzwerkvorrichtung 10 hergestellt wurde. Beispielsweise kann einer der nativen Hardware-Parser 42 so konfiguriert sein, dass er einen MAC-Header parst, ein anderer der nativen Hardware-Parser 42 kann so konfiguriert sein, dass er einen Multi-Protocol Label Switching (MPLS)-Header parst, während ein weiterer der nativen Hardware-Parser 42 so konfiguriert sein kann, dass er einen User Datagram Protocol (UDP)-Header parst. Die nativen Hardware-Parser 42 können in einer festen Reihenfolge miteinander verbunden sein, wie in 2 gezeigt, so dass, wenn einer der nativen Hardware-Parser 42 das Parsen eines Teils eines Headers (z. B. eines der Header) beendet, der Header-Abschnitt über eine der Verbindungen 46 an den nächsten nativen Hardware-Parser 42 in der Reihe übergeben wird. Zusätzlich oder alternativ kann jeder der nativen Hardware-Parser 42 über Verbindungen 44 mit einem oder mehreren (typischerweise mit jedem) der flexiblen Hardware-Parser 40 verbunden sein. Zum Beispiel wird, nachdem einer der nativen Hardware-Parser 42 das Parsen eines Teils eines Header-Abschnitts (z. B. eines der Header) beendet hat, der Header-Abschnitt über eine der Verbindungen 44 an einen der flexiblen Hardware-Parser 40 übergeben. Die flexiblen Hardware-Parser 40 sind ebenfalls über die Verbindungen 44 miteinander verbunden, so dass, wenn einer der flexiblen Hardware-Parser 40 das Parsen eines Teils eines Header-Abschnitts (z. B. eines der Header) beendet, der Header-Abschnitt über eine der Verbindungen 44 an einen anderen der flexiblen Hardware-Parser 40 weitergegeben wird. Die Verbindungen 44 zwischen den Hardware-Parsern 40, 42 (d. h., welcher Parser 40, 42 den Header-Abschnitt als nächstes zur Verarbeitung erhalten soll) können anhand der Daten in den Parser-Konfigurationsregistern 24 konfiguriert werden.
  • Zum Beispiel kann eine Identifikation der Verbindung 44, die verwendet wird, um den Header-Abschnitt an den nächsten Parser 40, 42 zu senden, in den Daten enthalten sein, die in den Parser-Konfigurationsregistern 24 gespeichert sind. Für eine gegebene Konfiguration der Hardware-Parser 40, 42 können einige der Verbindungen 44 aktiviert sein, während andere deaktiviert sind. Die Konfiguration der Verbindungen 44 wird unter Bezugnahme auf die 3-4 näher beschrieben.
  • In einigen Ausführungsformen kann einer der flexiblen Hardware-Parser 40 als Zero-Length-Parser konfiguriert werden, der weiter unten unter Bezugnahme auf 4 näher beschrieben wird, wobei der flexible Hardware-Parser 40 dazu verwendet wird, den Header-Abschnitt zwischen zwei nativen Hardware-Parsern 42 weiterzuleiten, ohne den Header-Abschnitt tatsächlich zu parsen.
  • Die Reihenfolge der Weitergabe des Header-Abschnitts zwischen den Hardware-Parsern 40, 42 wird durch die Reihenfolge der Header im Header-Abschnitt bestimmt. Wenn der Header-Abschnitt z. B. einen MAC-Header, gefolgt von einem Internet Protocol (IP)-Header, gefolgt von einem UDP-Header, gefolgt von einem Virtual Extensible Local Area Network (VXLAN)-Header enthält, sind die Hardware-Parser 40, 42 und ihre Verbindungen 44 so konfiguriert, dass sie den MAC-Header analysieren, gefolgt vom IP-Header, gefolgt vom UDP-Header, gefolgt vom VXLAN-Header. In einigen Ausführungsformen kann der Header-Abschnitt mehr als ein bestimmtes Header-Protokoll enthalten. Wenn z. B. Tunneling verwendet wird, kann es zwei MAC-Header geben. In einem solchen Fall können beide MAC-Header mit demselben flexiblen Hardware-Parser 40 oder nativen Hardware-Parser 42 zu unterschiedlichen Zeitpunkten im Parsing-Prozess geparst werden. Alternativ können die MAC-Header jeweils von verschiedenen der Hardware-Parser 40, 42 geparst werden. Das Tunneling wird im Folgenden unter Bezugnahme auf 4 näher beschrieben.
  • Es wird nun auf 3 verwiesen, die eine Blockdiagrammansicht des flexiblen Hardware-Parsers 40 darstellt, der auf Daten aus einem Parsing-Konfigurationsdatensatz 48 gemäß einer Ausführungsform der vorliegenden Erfindung zugreift. 3 zeigt, dass der Parsing-Konfigurationsdatensatz 48 gerade in die Parser-Konfigurationsregister 24 geladen ist. Der Parsing-Konfigurationsdatensatz 48 umfasst eine Vielzahl von Daten-Teilmengen 50. Jeweilige der Daten-Teilsätze 50 werden verwendet, um entsprechende der flexiblen Hardware-Parser 40 zu konfigurieren. Zum Beispiel wird der flexible Hardware-Parser 40-1 gemäß den Daten im Daten-Teilsatz 1 konfiguriert, der flexible Hardware-Parser 40-2 wird gemäß den Daten im Daten-Teilsatz 2 konfiguriert, der flexible Hardware-Parser 40-3 wird gemäß den Daten im Daten-Teilsatz 3 konfiguriert und der flexible Hardware-Parser 40-4 wird gemäß den Daten im Daten-Teilsatz 4 konfiguriert.
  • Es wird nun auf 4 verwiesen, die eine Blockdiagramm-Ansicht ist, die Felder im Parsing-Konfigurationsdaten-Teilsatz 1 (Bezugszahl 50) von 3 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • Der Daten-Teilsatz 50 kann ein Headergrößenfeld (nicht dargestellt) enthalten, das die Größe der Header angibt, die der flexible Hardware-Parser 40-1 parsen soll. Dieses Feld kann nützlich sein, wenn die vom flexiblen Hardware-Parser 40-1 geparsten Header alle die gleiche Länge haben. Alternativ kann der Daten-Teilsatz 50 ein Header-Größen-Offset-Feld 52 enthalten, das den Offset eines „Header-Größen-Feldes“ im Header angibt, den der flexible Hardware-Parser 40-1 zu parsen konfiguriert ist. Das „Headergrößenfeld“ im Header gibt die Größe des Headers an. Der Offset der Headergröße ist nicht der absolute Offset in Bezug auf den Anfang des Header-Abschnitts, sondern der relative Offset vom Anfang des aktuellen Headers, der geparst wird. Die Datenuntermenge 50 kann optional ein Headergrößen-Maskenfeld 54 enthalten, das die Anzahl der Bits angibt, die im Headergrößenfeld im Header enthalten sind.
  • Die Datenuntergruppe 50 kann ein Feld 56 für den nächsten Header enthalten, das eine Kennung für den nächsten zu parsenden Header im Header-Abschnitt angibt. Dieses Feld kann nützlich sein, wenn es nur eine Option für den nächsten Header vom aktuellen Header gibt. Alternativ kann die Datenuntermenge 50 ein Offsetfeld 58 für den nächsten Header und ein Maskenfeld 60 für den nächsten Header enthalten. Das Offset-Feld 58 für den nächsten Header liefert den relativen Offset eines Identifikationsfeldes für den nächsten Header im Header, das die Identifikation des nächsten zu parsenden Headers im Header-Abschnitt angibt.
  • Die Datenuntermenge 50 kann auch eine nächste Protokolltabelle 62 enthalten, die die nächsten Header-Identifikationen den Protokollen zuordnet. Der Protokollwert, der in der nächsten Protokolltabelle 62 gefunden wird, kann die Identifikation einer der Verbindungen 44 (2) liefern, die den aktuellen flexiblen Hardware-Parser 40 mit einem anderen Hardware-Parser 40, 42 verbindet. Das nächste Header-Maskenfeld 60 liefert die Anzahl der Bits, die im nächsten Header-Identifikationsfeld im Header enthalten sind.
  • Der Daten-Teilsatz 50 kann ein Datenextraktions-Offsetfeld 64 enthalten, das den/die Offset(s) im Header der zu extrahierenden Daten angibt. Die Daten-Teilsätze 50 können ein Datenextraktions-Maskenfeld enthalten, das die Anzahl der Bits angibt, die an dem/den Offset(s) extrahiert werden sollen.
  • Der Daten-Teilsatz 50 kann ein Zero-Size-Feld 66 enthalten, das anzeigt, ob der flexible Hardware-Parser 40-1 ein Zero-Size-Parser ist. Wie bereits erwähnt, kann ein Zero-Size-Parser verwendet werden, um den Header-Abschnitt zwischen zwei nativen Hardware-Parsern 42 (oder zwei beliebigen Parsern) weiterzuleiten, ohne weiter in das Paket vorzudringen.
  • Der Daten-Teilsatz 50 kann ein Tunneling-Verhaltensfeld 68 enthalten. Wie oben erwähnt, kann derselbe Parser 40, 42 mehr als einen Header desselben Typs aus einem Header-Abschnitt parsen, wenn Tunneling verwendet wird. Wenn ein getunnelter Header (innerer Header) verarbeitet werden soll, wird ein Tunneling-Bit mit dem Header-Abschnitt an den nächsten Hardware-Parser 40, 42 gesendet. Wenn der nächste Parser 40, 42 den Header-Abschnitt mit dem Tunneling-Bit empfängt, verarbeitet der Parser 40, 42 den Header gemäß Tunneling, was bedeutet, dass die aus dem Parsing-Prozess erzeugten Daten (z. B. Offset und extrahierte Daten) an einem Ort im Puffer 16 gespeichert werden, der im Tunneling-Verhaltensfeld 68 definiert ist.
  • Wenn die von einem der flexiblen Hardware-Parser 40 verwendete Daten-Teilmenge 50 keine Nächster-Header-Informationen enthält oder der Header keine Nächster-Header-Informationen enthält, wird das Parsen gestoppt (und der Header-Abschnitt nicht an einen anderen Hardware-Parser 40, 42 weitergegeben) und die weitere Verarbeitung des Pakets an die Paketverarbeitungsmaschine 20 (1) übergeben.
  • Wie bereits erwähnt, wird das von den nativen Hardwareparsern 42 durchgeführte Parsing nicht durch den in den Parserkonfigurationsregistern 24 gespeicherten Parsing-Konfigurationsdatensatz konfiguriert. Um jedoch einen der nativen Hardware-Parser 42 in die Lage zu versetzen, den Header-Abschnitt an einen der flexiblen Hardware-Parser 40 weiterzugeben, enthalten die Datenteilsätze 50 ein Vergleichsdatenfeld 70 und ein Start-Header-Feld 72. Jeder native Hardware-Parser 42 enthält einen Multiplexer (nicht dargestellt), der den Header-Abschnitt und den von diesem nativen Hardware-Parser 42 berechneten Offset von diesem nativen Hardware-Parser 42 empfängt und den Header-Abschnitt und den Offset über eine der Verbindungen 44 an den nächsten flexiblen Hardware-Parser 40 weiterleitet. Der Multiplexer wählt die entsprechende Verbindung 44 wie folgt aus. Der Multiplexer holt sich eine nächste Header-Identifikation aus dem Header, der von diesem nativen Hardware-Parser 42 verarbeitet wurde. Der Multiplexer durchsucht das Vergleichsdatenfeld 70 der Datenteilmengen 50, bis eine Übereinstimmung gefunden wird. Eine Übereinstimmung bedeutet, dass der Multiplexer den Header-Abschnitt und den Offset an den flexiblen Hardware-Parser 40 senden sollte, der zu der Datenuntermenge 50 gehört, in der die Übereinstimmung gefunden wurde. Der Multiplexer ruft dann den im Start-Header-Feld 72 gefundenen Protokollwert derjenigen Datenuntermenge 50 ab, in der die Übereinstimmung gefunden wurde, und liefert die Identifikation einer der Verbindungen 44 (2), die mit dem flexiblen Hardware-Parser 40 verbunden sind, der zu dieser Datenuntermenge 50 gehört. Wenn der Multiplexer keine Übereinstimmung mit der nächsten Header-Identifikation in einer der Daten-Teilmengen 50 finden kann, wird das Parsen gestoppt und die weitere Verarbeitung des Pakets wird an die Paketverarbeitungsmaschine 20 (1) übergeben.
  • Das Parsing-Verfahren wird nun der Übersichtlichkeit halber mit Bezug auf den flexiblen Hardware-Parser 40-1 beschrieben. Das Verfahren kann jedoch auf jeden der flexiblen Hardware-Parser 40 angewendet werden.
  • Der flexible Hardware-Parser 40-1 ist so konfiguriert, dass er den absoluten Offset (vom Beginn des Header-Abschnitts) empfängt, an dem der vorherige Hardware-Parser 40, 42 das Parsen beendet hat. Wenn der flexible Hardware-Parser 40-1 der erste Parser ist, der den Header-Abschnitt parst, empfängt der flexible Hardware-Parser 40-1 keinen Offset und nimmt an, dass der Offset Null ist. Der Offset wird in dem unten beschriebenen Parsing-Prozess verwendet. Daher sind die jeweiligen Hardware-Parser 40, 42 so konfiguriert, dass sie den Header-Abschnitt entsprechend der jeweiligen Offsets im Header-Abschnitt nacheinander parsen.
  • Der flexible Hardware-Parser 40-1 ist so konfiguriert, dass er den Headergrößenoffset aus dem Headergrößenoffsetfeld 52 (4) und optional die Maskendaten aus dem Headergrößenmaskenfeld 54 (4) abruft. Der flexible Hardware-Parser 40-1 ist so konfiguriert, dass er die Headergröße aus dem (relativen) Headergrößenoffset im Header abruft. Der flexible Hardware-Parser 40-1 ist so konfiguriert, dass er einen Offset zur Weitergabe an den nächsten Hardware-Parser 40, 42 in Abhängigkeit von der abgerufenen Headergröße und dem empfangenen Offset berechnet. Der berechnete Offset liefert den Offset des letzten Bits in diesem Header. Daher ist der flexible Hardware-Parser 40-1 so konfiguriert, dass er den Offset in Reaktion auf das Headergrößenoffset-Feld 52 (und optional das Headergrößenmaskenfeld 54) der Parsing-Konfigurationsdaten und die HeaderGröße aus dem Header-Abschnitt sowie auf den empfangenen Offset berechnet. Der berechnete Offset kann im Puffer 16 gespeichert und/oder an die Paketverarbeitungsmaschine 20 weitergegeben werden, zusätzlich zur Weitergabe an den nächsten Hardware-Parser 40, 42.
  • Wie oben erwähnt, enthält der Daten-Teilsatz 50 des Parsing-Konfigurationsdatensatzes 48 für den flexiblen Hardware-Parser 40-1 ein Datenextraktions-Offset-Feld 64, das einen oder mehrere Offsets im Header-Abschnitt identifiziert, aus dem Daten extrahiert werden sollen. Der flexible Hardware-Parser 40-1 ist so konfiguriert, dass er den/die Offset(s) aus dem Datenextraktions-Offsetfeld 64 abruft und Daten aus dem Header des Header-Abschnitts in Abhängigkeit von dem/den Datenextraktions-Offset(s) extrahiert. Die extrahierten Daten können im Puffer 16 gespeichert und/oder an die Paketverarbeitungsmaschine 20 weitergeleitet werden.
  • Wie oben erwähnt, enthält die Datenuntermenge 50 für den flexiblen Hardware-Parser 40-1: das nächste Header-Offset-Feld 58, das den nächsten Header-Offset der nächsten Header-Identifikation (ID) im Header des Header-Abschnitts bereitstellt; und die nächste Protokolltabelle 62, die die nächsten Header-IDs mit den nächsten Protokollen verknüpft. Der flexible Hardware-Parser 40-1 ist gekoppelt, um den nächsten Header-Offset aus der Datenuntermenge 50 für den flexiblen Hardware-Parser 40-1 in den Parser-Konfigurationsregistern 24 (1) abzurufen. Der flexible Hardware-Parser 40-1 ist gekoppelt, um die nächste Header-ID, die sich im Header des Header-Abschnitts am nächsten Header-Offset befindet, in Reaktion auf den abgerufenen nächsten Header-Offset aus dem Header-Abschnitt abzurufen. Der flexible Hardware-Parser 40-1 ist gekoppelt, um eine Identifikation eines nächsten zu verarbeitenden Protokolls aus der nächsten Protokolltabelle 62 der Datenuntermenge 50 für den flexiblen Hardware-Parser 40-1 in den Parser-Konfigurationsregistern 24 (1) in Reaktion auf die abgerufene nächste Header-ID abzurufen. Der flexible Hardware-Parser 40-1 ist so gekoppelt, dass er den Header-Abschnitt an einen der Hardware-Parser 40, 42 übergibt, der so konfiguriert ist, dass er den nächsten Header des Header-Abschnitts gemäß dem nächsten Protokoll parst. Die Kennung des nächsten Protokolls liefert die Kennung der Verbindung 44, über die der flexible Hardware-Parser 40-1 mit dem nächsten Hardware-Parser 40, 42 verbunden ist. Der flexible Hardware-Parser 40-1 ist gekoppelt, um den berechneten Offset an den nächsten Hardware-Parser 40, 42 zu senden. Die obigen Schritte werden vom nächsten Hardware-Parser 40 wiederholt, und so weiter.
  • Es wird nun auf die 5-9 verwiesen, die Blockdiagramme sind, die einen mehrstufigen Steuerungsprozess auf der Netzwerkvorrichtung 10 von 1 veranschaulichen. Es wird auch auf 1 verwiesen. Wie bereits erwähnt, empfängt die Netzwerkschnittstelle 12 und/oder die Kommunikationsbusschnittstelle 30 Datenpakete, wobei jedes Datenpaket einen Header-Abschnitt enthält. Der/die Hardware-Parser 18 ist/sind so gekoppelt, dass er/sie Daten der Header-Abschnitte der Pakete empfängt/empfangen und die Daten des Header-Abschnitts jedes Pakets analysiert/analysieren, was eine Vielzahl von Header-Abschnitten ergibt, beispielsweise einen ersten Header-Abschnitt, einen zweiten Header-Abschnitt und optional einen dritten Header-Abschnitt und so weiter. Der Hardware-Parser 18 kann so konfiguriert sein, dass er nach dem oben unter Bezugnahme auf die 2-4 beschriebenen Verfahren oder nach jedem anderen geeigneten Parsing-Verfahren parst. Das Parsen kann flexibles Parsen und/oder Parsen auf der Basis von fest verdrahteten und/oder fest kodierten Parsern umfassen.
  • Jede Abgleichs- und Aktionstabelle 28 enthält entsprechende Indizes und einen entsprechenden Lenkaktionseintrag, der jedem der entsprechenden Indizes entspricht. 5 zeigt eine MAC-Abgleichs- und Aktionstabelle 28-1, die Indizes 100 und Lenkaktionseinträge 102 enthält, wobei jeder Index 100 und der entsprechende Lenkaktionseintrag einen Lenkeintrag in der Tabelle 28-1 bilden.
  • Es wird nun auf 5 verwiesen. Die Paketverarbeitungsmaschine 20 (1) ist so konfiguriert, dass sie eine anfängliche Aktion 104 aus dem Speicher 27 abruft. Die anfängliche Aktion 104 kann in Form einer Tabelle oder eines Strings oder einer anderen geeigneten Datenform vorliegen. Die anfängliche Aktion 104 kann angeben, welche Tabelle 28 als nächstes aus dem Speicher 27 geholt werden soll, welcher Hash berechnet werden soll und ob der berechnete Hash akkumuliert werden soll. Im Beispiel von 5 gibt die anfängliche Aktion 104 an, dass die MAC-Abgleichs- und Aktionstabelle 28-1 geholt werden soll, dass ein Hash 106-1 eines MAC-Headers 108-1 berechnet werden soll und dass der berechnete Hash in einem kumulativen Nachschlage-Register 110 akkumuliert werden soll. 5 zeigt, wie der Hash 106-1 zum kumulativen Nachschlage-Register 110 hinzugefügt wird. 5 zeigt auch, dass der Hash 106-1 zum Nachschlagen der Indizes 100 in der Abgleichs- und Aktionstabelle 28-1 verwendet wird, was einen passenden Index 100-1 und einen entsprechenden Lenkaktionseintrag 102-1 ergibt, der anzeigt, dass als nächstes eine IP-Abgleichs- und Aktionstabelle 28-2 (6) abgerufen werden sollte, ein Hash eines IP-Headers berechnet werden sollte, der berechnete IP-Hash akkumuliert werden sollte und der kumulative Nachschlagwert zum Nachschlagen in der IP-Abgleichs- und Aktionstabelle 28-2 verwendet werden sollte.
  • Daher ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie einen ersten Header-Abschnitt (z. B. den MAC-Header 108) empfängt und aus dem Speicher 27 eine erste Abgleichs- und Aktionstabelle (z. B. die Abgleichs- und Aktionstabelle 28-1) abruft. Die Paketverarbeitungsmaschine 20 ist so konfiguriert, dass sie einen Index 100-1 mit einem entsprechenden Lenkaktionseintrag 102-1 in der Abgleichs- und Aktionstabelle 28-1 in Reaktion auf den ersten Header-Abschnitt (z. B. den MAC-Header 108-1) abgleicht. In einigen Ausführungsformen ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie den Hash-Wert 106-1 in Reaktion auf den ersten Header-Abschnitt (z. B. den MAC-Header 108-1) berechnet und den Index 100-1 in der Abgleichs- und Aktionstabelle 28-1 in Reaktion auf den Hash-Wert 1061 abgleicht. Die Hash-Funktion, die von der Paketverarbeitungsmaschine 20 verwendet wird, um den Hash-Wert eines der Header-Abschnitte zu berechnen, kann jede geeignete Hash-Funktion umfassen, z. B., aber nicht beschränkt auf CRC32, Toeplitz, Murmur oder Jenkins.
  • Es wird nun auf 6 verwiesen. Wie mit Bezug auf 5 erwähnt, gibt der Lenkaktionseintrag 102-1 an, dass die IP-Abgleichs- und Aktionstabelle 28-2 als nächstes abgerufen werden soll, ein Hash 106-2 eines IP-Headers 1082 berechnet werden soll, der berechnete IP-Hash 106-2 akkumuliert werden soll und der kumulative Nachschlagewert zum Nachschlagen in der IP-Abgleichs- und Aktionstabelle 28-2 verwendet werden soll.
  • 6 zeigt, wie der Hash 106-2 zum kumulativen Nachschlagregister 110 hinzugefügt wird (Pfeil 109). 6 zeigt auch, wie der kumulative Suchwert (basierend auf den Hashes 106-1 und 106-2) aus dem kumulativen Nachschlagregister 110 abgerufen wird (Pfeil 111), um die Indizes 100 in der Abgleichs- und Aktionstabelle 28-2 nachzuschlagen, was einen übereinstimmenden Index 100-2 und einen entsprechenden Lenkaktionseintrag 102-2 ergibt, was anzeigt, dass eine Tunneling-Abgleichs- und Aktionstabelle 28-3 (7) als nächstes geholt werden sollte, ein Hash eines Tunneling-Headers berechnet werden sollte, der berechnete Tunneling-Hash akkumuliert werden sollte und der kumulative Nachschlagwert für den Nachschlag in der Tunneling-Abgleichs- und Aktionstabelle 28-3 verwendet werden sollte.
  • Daher ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie den IP-Header 108-2 empfängt. Die Paketverarbeitungsmaschine 20 ist so konfiguriert, dass sie einen kumulativen Nachschlagewert basierend auf dem ersten Header-Abschnitt (z. B. dem MAC-Header 108-1) und einem zweiten Header-Abschnitt (z. B. dem IP-Header 108-2) in Reaktion auf den Lenkaktionseintrag 102-1 berechnet. In einigen Ausführungsformen gibt der Lenkaktionseintrag 102-1 an, dass der kumulative Suchwert auf der Grundlage des zweiten Header-Abschnitts berechnet werden soll.
  • In einigen Ausführungsformen ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie einen Hash-Wert (z. B. den Hash 106-2 des IP-Headers) in Reaktion auf den zweiten Header-Abschnitt (z. B. den IP-Header 108-2) berechnet. Der Lenkaktionseintrag 102-1 zeigt an, dass der kumulative Nachschlagewert basierend auf dem Hash-Wert 106-2 berechnet werden soll. Die Paketverarbeitungsmaschine 20 ist so konfiguriert, dass sie den kumulativen Nachschlagewert basierend auf dem Hash-Wert 106-1 und dem Hash-Wert 106-2 in Reaktion auf den Lenkaktionseintrag 102-1 berechnet. In einigen Ausführungsformen -werden die Hash-Werte 106-1, 106-2 verkettet und dann wird das Ergebnis der Verkettung optional gehasht oder durch eine andere Funktion verarbeitet.
  • Die Paketverarbeitungsmaschine 20 ist so konfiguriert, dass sie die Abgleichs- und Aktionstabelle 28-2 in Reaktion auf den Lenkaktionseintrag 102-1 aus dem Speicher 27 abruft. Wie in 6 gezeigt, gibt der Lenkaktionseintrag 102-1 der Paketverarbeitungsmaschine 20 an, den kumulativen Nachschlagewert zu verwenden, wenn ein Abgleich in der Abgleichs- und Aktionstabelle 28-2 durchgeführt wird. Die Paketverarbeitungsmaschine 20 ist so konfiguriert, dass sie den Index 100-2 mit dem entsprechenden Lenkaktionseintrag 102-2 in der Abgleichs- und Aktionstabelle 28-2 in Reaktion auf den kumulativen Nachschlagewert abgleicht.
  • Es wird nun auf 7 verwiesen. Wie bereits in 6 erwähnt, gibt der Lenkaktionseintrag 102-2 an, dass als nächstes die Tunneling-Abgleichs- und Aktionstabelle 28-3 abgerufen werden soll, ein Hash eines Tunneling-Headers 108-3 berechnet werden soll, der berechnete Tunneling-Header-Hash 106-3 akkumuliert werden soll und der kumulative Nachschlage-Wert für den Nachschlage in der Tunneling-Abgleichs- und Aktionstabelle 28-3 verwendet werden soll.
  • 7 zeigt, wie der Hash 106-3 zum kumulativen Nachschlageregister 110 hinzugefügt wird (Pfeil 109). 7 zeigt auch, wie der kumulative Suchwert (basierend auf den Hashes 106-1, 106-2, 106-3) aus dem kumulativen Suchregister 110 abgerufen wird (Pfeil 111), um die Indizes 100 in der Abgleichs- und Aktionstabelle 28-3 nachzuschlagen, was einen passenden Index 100-3 und einen entsprechenden Lenkaktionseintrag 102-3 ergibt.
  • Daher ist in einigen Ausführungsformen die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie den Hash-Wert 106-3 in Reaktion auf den dritten Header-Abschnitt (z. B. den Tunneling-Header 108-3) berechnet. In einigen Ausführungsformen ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie den kumulativen Nachschlagewert basierend auf dem ersten Header-Abschnitt (z. B. dem MAC-Header 108-1 oder dem Hash-Wert 106-1), dem zweiten Header-Abschnitt (z. B. dem IP-Header 108-2 oder dem Hash-Wert 106-2) und dem dritten Header-Abschnitt (z. B. dem Tunneling-Header 108-3 oder dem Hash-Wert 106-3) berechnet. In einigen Ausführungsformen werden die Hash-Werte 106-1, 1062-, 1063 -verkettet und dann wird das Ergebnis der Verkettung optional gehasht oder durch eine andere Funktion verarbeitet. Die Paketverarbeitungsmaschine 20 ist so konfiguriert, dass sie die Abgleichs- und Aktionstabelle 283 abruft und den Index 100-3 mit dem entsprechenden Lenkaktionseintrag 102-3 in der Abgleichs- und Aktionstabelle 28-3 in Reaktion auf den dritten Header-Abschnitt (z. B. den Tunneling-Header 108-3 oder den Hash-Wert 106-3 oder den kumulativen Nachschlage-Wert) abgleicht.
  • Die Paketverarbeitungsmaschine 20 ist so konfiguriert, dass sie das Paket in Reaktion auf einen der passenden Lenkaktionseinträge 102 lenkt. Zum Beispiel -kann der Lenkaktionseintrag 102-3 angeben, dass das Paket zur CPU1 im Host 34 oder zum Netzwerkknoten 36 gelenkt werden soll. Ein Lenkaktionseintrag 102 kann einen oder mehrere der folgenden Punkte enthalten: Weiterleiten des Pakets zur Verarbeitung durch mindestens eine ausgewählte Zentraleinheit; Weiterleiten des Pakets an mindestens ein ausgewähltes Ziel; Verwerfen des Pakets; Weiterleiten des Pakets an ein angegebenes Ziel; Fortsetzen der Verarbeitung mit einer anderen der Abgleichs- und Aktionstabellen 28; Hinzufügen eines aktuellen Hash-Werts zum kumulativen Nachschlage-Wert; Hinzufügen von Daten eines Header-Abschnitts zu dem kumulativen Nachschlagewert; Verwenden des kumulativen Nachschlagewerts beim Durchführen eines Abgleichs; nicht Verwenden des kumulativen Nachschlagewerts beim Durchführen eines Abgleichs; Verwenden eines spezifischen Abschnitts des Header-Abschnitts; oder Verwenden eines spezifischen Teils des Header-Abschnitts beim Berechnen eines Hashs.
  • Es wird nun auf 8 verwiesen. 8 veranschaulicht, wann der Lenkaktionseintrag 102-2 der Paketverarbeitungsmaschine 20 anzeigt, den kumulativen Nachschlage-Wert (im kumulativen Nachschlage-Register 110) zurückzusetzen. 8 zeigt, dass das kumulative Nachschlage-Register 110 zurückgesetzt wird und die Hash-Werte 106-1 und 106-2 aus dem kumulativen Nachschlage-Register 110 entfernt werden. Daher ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie den kumulativen Nachschlage-Wert zurücksetzt. Der Tunneling-Header-Hash 106-3 wird dann zum kumulativen Nachschlageregister 110 hinzugefügt. Die Abgleichs- und Aktionstabelle 28-3 kann auf der Grundlage des kumulativen Suchwerts oder des Tunneling-Headers 106-3 nachgeschlagen werden, wobei es sich um denselben Wert handeln kann.
  • Es wird nun auf 9 verwiesen. 9 veranschaulicht, wenn der Lenkaktionseintrag 102-2 der Paketverarbeitungsmaschine 20 anzeigt, den kumulativen Nachschlagewert bei der Durchführung des Abgleichs in der Abgleichs- und Aktionstabelle 28-3 nicht zu verwenden, obwohl (in diesem Beispiel) der kumulative Nachschlagewert immer noch für die zukünftige Verwendung im kumulativen Nachschlageregister 110 beibehalten wird. 9 zeigt, dass der Hash-Wert 106-3 im kumulativen Nachschlage-Register 110 gespeichert wird und der Hash-Wert 106-3 für die Suche in der Abgleichs- und Aktionstabelle 28-3 verwendet wird, anstatt den kumulativen Nachschlage-Wert zu verwenden.
  • Die 5-9 illustrieren den mehrstufigen Lenkungsprozess anhand von drei beispielhaften Abgleichs- und Aktionstabellen 28 unter Verwendung des MAC-Headers, des IP-Headers und eines Tunneling-Headers als Eingabe. Der mehrstufige Lenkungsprozess kann jede geeignete Header-Information verwenden, die auf jedem der Header-Felder und/oder Unterdaten von jedem der Header-Felder basiert.
  • Es wird nun auf 10A und 10B verwiesen, die zwei Teile eines Flussdiagramms 200 darstellen, das Schritte in einem Verfahren zum Betrieb der Netzwerkvorrichtung 10 von 1 enthält. Es wird auch auf 1 verwiesen. Beginnend mit Bezug auf 10A ist die Netzwerkvorrichtung 10 konfiguriert, um ein Paket zu empfangen (Block 202). Der/die Hardware-Parser 18 ist so konfiguriert, dass er/sie den Paket-Header parst (Block 204). Die Paketverarbeitungsmaschine 20 ist konfiguriert, um die anfängliche Lenkungsaktion 104 (5) aus dem Speicher 27 zu holen (Block 206). In einem Entscheidungsblock 208 bestimmt die Paketverarbeitungsmaschine 20, ob dies der letzte Lenkaktionseintrag im Prozess ist oder ob eine der Abgleichs- und Aktionstabellen 28 als Teil des mehrstufigen Lenkungsprozesses abgerufen und abgeglichen werden muss. Wenn dies der letzte Lenkaktionseintrag ist (Zweig 210), ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie das Paket zu einer Zielwarteschlange (optional basierend auf einem kumulativen Nachschlagewert, der einen Index für die Warteschlange bereitstellt) oder zu einem externen Ziel lenkt (Block 211), wenn die Lenkung auf der Sendeseite erfolgt. Wenn dies nicht der letzte Lenkaktionseintrag ist (Zweig 212), ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie auf der Grundlage der Angaben im Lenkaktionseintrag einen Hash zum Nachschlagen in der nächsten Tabelle berechnet (Block 214).
  • Unter Bezugnahme auf 10B bestimmt die Paketverarbeitungsmaschine 20 in einem Entscheidungsblock 216, ob der Lenkaktionseintrag angibt, den Hash-Wert 106 im kumulativen Nachschlageregister 110 (5) zu akkumulieren. Wenn der Lenkaktionseintrag nicht angibt, den Hash-Wert 106 im kumulativen Nachschlagregister 110 zu akkumulieren (Zweig 218), ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie die nächste Abgleichs- und Aktionstabelle 28 (wie im Lenkaktionseintrag angegeben) abruft (Block 220) und den berechneten Hash-Wert 106 mit den Indizes 100 in der abgerufenen Abgleichs- und Aktionstabelle 28 abgleicht, was den nächsten Lenkaktionseintrag 102 ergibt. Die Verarbeitung wird dann mit dem in 10A gezeigten Entscheidungsblock 208 fortgesetzt.
  • Wenn der Lenkaktionseintrag angibt, den Hash-Wert 106 im kumulativen Nachschlage-Register 110 zu akkumulieren (Zweig 222), ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie in einem Entscheidungsblock 224 bestimmt, ob der Lenkaktionseintrag angibt, den kumulativen Nachschlagewert zurückzusetzen. Wenn der Lenkaktionseintrag das Zurücksetzen des kumulativen Nachschlagewerts spezifiziert (Zweig 226), ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie den kumulativen Nachschlagewert in dem kumulativen Nachschlageregister 110 zurücksetzt (Block 228) und dann den berechneten Hash zu dem kumulativen Nachschlageregister 110 hinzufügt (Block 230). Wenn der Eintrag für die Lenkungsaktion nicht angibt, dass der kumulative Nachschlagewert zurückgesetzt werden soll (Zweig 232), ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass der berechnete Hash zum kumulativen Nachschlageregister 110 hinzugefügt wird (Block 230).
  • In einem Entscheidungsblock 234 ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie feststellt, ob der Lenkaktionseintrag angibt, den kumulativen Nachschlagewert für die nächste Tabellensuche zu verwenden. Wenn der Lenkaktionseintrag angibt, den kumulativen Nachschlagewert für die nächste Tabellensuche zu verwenden (Zweig 236), ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie die nächste Abgleichs- und Aktionstabelle 28 (wie im Lenkaktionseintrag angegeben) abruft (Block 238) und den kumulativen Nachschlagewert mit den Indizes 100 in der abgerufenen Abgleichs- und Aktionstabelle 28 abgleicht, was den nächsten Lenkaktionseintrag 102 ergibt, und die Verarbeitung wird dann mit dem in 10A gezeigten Entscheidungsblock 208 fortgesetzt. Wenn der Lenkaktionseintrag nicht angibt, den kumulativen Nachschlagewert für die nächste Tabellensuche zu verwenden (Zweig 240), ist die Paketverarbeitungsmaschine 20 so konfiguriert, dass sie die nächste Abgleich- und Aktionstabelle 28 (wie im Lenkaktionseintrag angegeben) abruft (Block 220) und den berechneten Hash-Wert 106 mit den Indizes 100 in der abgerufenen Abgleich- und Aktionstabelle 28 abgleicht, was den nächsten Lenkaktionseintrag 102 ergibt, und die Verarbeitung dann mit dem in 10A gezeigten Entscheidungsblock 208 fortgesetzt wird.
  • Verschiedene Merkmale der Erfindung, die der Übersichtlichkeit halber im Zusammenhang mit separaten Ausführungsformen beschrieben sind, können auch in Kombination in einer einzigen Ausführungsform vorgesehen sein. Umgekehrt können verschiedene Merkmale der Erfindung, die der Kürze halber im Zusammenhang mit einer einzelnen Ausführungsform beschrieben sind, auch separat oder in jeder geeigneten Unterkombination bereitgestellt werden.
  • Die oben beschriebenen Ausführungsformen sind beispielhaft angeführt, und die vorliegende Erfindung ist nicht durch das beschränkt, was hierin besonders gezeigt und beschrieben wurde. Vielmehr umfasst der Umfang der Erfindung sowohl Kombinationen und Unterkombinationen der verschiedenen hierin beschriebenen Merkmale als auch Variationen und Modifikationen davon, die dem Fachmann beim Lesen der vorstehenden Beschreibung einfallen würden und die im Stand der Technik nicht offenbart sind.
  • Es versteht sich, dass Aspekte und Ausführungsformen oben rein beispielhaft beschrieben sind und dass Modifikationen im Detail im Rahmen der Ansprüche vorgenommen werden können.
  • Jede Vorrichtung, jedes Verfahren und jedes Merkmal, die in der Beschreibung und (wo zutreffend) in den Ansprüchen und Zeichnungen offengelegt werden, können unabhängig oder in jeder geeigneten Kombination bereitgestellt werden.
  • Die in den Ansprüchen enthaltenen Bezugszahlen dienen nur der Veranschaulichung und haben keine einschränkende Wirkung auf den Umfang der Ansprüche.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2017/0286292 [0004]
    • US 10015090 [0005]

Claims (20)

  1. Eine Netzwerkvorrichtung, aufweisend: eine Schnittstelle, die so konfiguriert ist, dass sie ein Datenpaket mit einem Header-Abschnitt empfängt; mindestens einen Parser, der so gekoppelt ist, dass er Daten des Header-Abschnitts des Pakets empfängt, und der so konfiguriert ist, dass er die Daten des Header-Abschnitts parst, wodurch sich ein erster Header-Abschnitt und ein zweiter Header-Abschnitt ergeben; einen Speicher, der so konfiguriert ist, dass er eine Vielzahl von Abgleichs- und Aktionstabellen speichert, wobei jede Abgleichs- und Aktionstabelle entsprechende Indizes und einen entsprechenden Lenkaktionseintrag enthält, der jedem der entsprechenden Indizes entspricht; und eine Paketverarbeitungsmaschine, die so gekoppelt ist, dass sie den ersten Header-Abschnitt und den zweiten Header-Abschnitt empfängt, und wobei sie konfiguriert ist zum: Abrufen einer ersten Abgleichs- und Aktionstabelle aus der Vielzahl der Abgleichs- und Aktionstabellen aus dem Speicher; Abgleichen eines ersten Index mit einem entsprechenden ersten Lenkaktionseintrag in der ersten Abgleichs- und Aktionstabelle in Reaktion auf den ersten Header-Abschnitt; Berechnen eines kumulativen Nachschlagewerts auf der Grundlage des ersten Header-Abschnitts und des zweiten Header-Abschnitts in Reaktion auf den ersten Lenkaktionseintrag; Abrufen einer zweiten Abgleichs- und Aktionstabelle aus der Vielzahl der Abgleichs- und Aktionstabellen aus dem Speicher in Reaktion auf den ersten Lenkaktionseintrag; Abgleichen eines zweiten Index mit einem entsprechenden zweiten Lenkaktionseintrag in der zweiten Abgleichs- und Aktionstabelle in Reaktion auf den kumulativen Nachschlagewert; und Lenken des Pakets in Reaktion auf den zweiten Lenkaktionseintrag.
  2. Vorrichtung nach Anspruch 1, wobei der erste Lenkaktionseintrag angibt, dass der kumulative Nachschlagewert auf der Grundlage des zweiten Header-Abschnitts berechnet werden soll.
  3. Vorrichtung nach Anspruch 1 oder 2, wobei der erste Lenkaktionseintrag der Paketverarbeitungsmaschine anzeigt, den kumulativen Nachschlagewert zu verwenden, wenn ein Abgleich in der zweiten Abgleichs- und Aktionstabelle durchgeführt wird.
  4. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei: ein Lenkaktionseintrag der Paketverarbeitungsmaschine anzeigt, den kumulativen Nachschlagewert zurückzusetzen; und die Paketverarbeitungsmaschine konfiguriert ist, den kumulativen Nachschlagewert zurückzusetzen.
  5. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei ein Lenkaktionseintrag der Paketverarbeitungsmaschine anzeigt, den kumulativen Nachschlagewert nicht zu verwenden, wenn ein Abgleich in einer der Abgleichs- und Aktionstabellen durchgeführt wird.
  6. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei: der mindestens eine Parser auch konfiguriert ist, um die Daten des Header-Abschnitts zu parsen, woraus sich ein dritter Header-Abschnitt ergibt; und ist die Paketverarbeitungsmaschine konfiguriert ist zum: Abrufen einer dritten Abgleichs- und Aktionstabelle aus der Vielzahl der Abgleichs- und Aktionstabellen; und Abgleichen eines dritten Index mit einem entsprechenden dritten Lenkaktionseintrag in der dritten Abgleich- und Aktionstabelle in Reaktion auf den dritten Header-Abschnitt.
  7. Vorrichtung nach Anspruch 6, wobei die Paketverarbeitungsmaschine so konfiguriert ist, dass sie den kumulativen Nachschlagewert basierend auf dem ersten Header-Abschnitt, dem zweiten Header-Abschnitt und dem dritten Header-Abschnitt berechnet.
  8. Vorrichtung nach einem der Ansprüche 1 bis 5, wobei die Paketverarbeitungsmaschine konfiguriert ist zum: Berechnen eines ersten Hash-Wertes in Reaktion auf den ersten Header-Abschnitt; Abgleichen des ersten Index in der ersten Abgleichs- und Aktionstabelle in Reaktion auf den ersten Hash-Wert; Berechnen eines zweiten Hash-Wertes in Reaktion auf den zweiten Header-Abschnitt; und Berechnen des kumulativen Nachschlagewerts basierend auf dem ersten Hash-Wert und dem zweiten Hash-Wert in Reaktion auf den ersten Lenkaktionseintrag.
  9. Vorrichtung nach Anspruch 8, wobei der erste Lenkaktionseintrag angibt, dass der kumulative Nachschlagewert basierend auf dem zweiten Hash-Wert berechnet werden soll.
  10. Vorrichtung nach Anspruch 8 oder 9, wobei der erste Lenkaktionseintrag der Paketverarbeitungsmaschine anzeigt, den kumulativen Nachschlagewert zu verwenden, wenn ein Abgleich in der zweiten Abgleichs- und Aktionstabelle durchgeführt wird.
  11. Vorrichtung nach einem der Ansprüche 8 bis 10, wobei ein Lenkaktionseintrag der Paketverarbeitungsmaschine anzeigt, den kumulativen Nachschlagewert zurückzusetzen; und die Paketverarbeitungsmaschine konfiguriert ist, den kumulativen Nachschlagewert zurückzusetzen.
  12. Vorrichtung nach einem der Ansprüche 8 bis 11, wobei ein Lenkaktionseintrag der Paketverarbeitungsmaschine anzeigt, den kumulativen Nachschlagewert nicht zu verwenden, wenn ein Abgleich in einer der Abgleichs- und Aktionstabellen durchgeführt wird.
  13. Vorrichtung nach einem der Ansprüche 8 bis 12, wobei: der mindestens eine Parser auch konfiguriert ist, um die Daten des Header-Abschnitts zu parsen, wodurch sich ein dritter Header-Abschnitt ergibt; und die Paketverarbeitungsmaschine konfiguriert ist zum: Berechnen eines dritten Hash-Wertes in Reaktion auf den dritten Header-Abschnitt; Abrufen einer dritten Abgleichs- und Aktionstabelle aus der Vielzahl der Abgleichs- und Aktionstabellen aus dem Speicher; und Abgleichen eines dritten Index mit einem entsprechenden dritten Lenkaktionseintrag in der dritten Abgleich- und Aktionstabelle in Reaktion auf den dritten Hash-Wert.
  14. Vorrichtung nach Anspruch 13, wobei die Paketverarbeitungsmaschine so konfiguriert ist, dass sie den kumulativen Nachschlagewert basierend auf dem ersten Hash-Wert, dem zweiten Hash-Wert und dem dritten Hash-Wert berechnet.
  15. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei der erste Lenkaktionseintrag eines oder mehreres aus Folgendem enthält: Weiterleiten des zu verarbeitenden Pakets durch mindestens eine ausgewählte zentrale Verarbeitungseinheit; Weiterleiten des Pakets an mindestens ein ausgewähltes Ziel; Verwerfen des Pakets; Weiterleiten des Pakets an ein angegebenes Ziel; Fortsetzen der Verarbeitung mit einer anderen der Abgleichs- und Aktionstabellen; Hinzufügen eines aktuellen Hash-Werts zu dem kumulativen Nachschlagewert; Hinzufügen von Daten eines Header-Abschnitts zu dem kumulativen Nachschlagewert; Verwenden des kumulativen Nachschlagewerts beim Durchführen eines Abgleichs; Nicht-Verwenden des kumulativen Nachschlagewerts beim Durchführen eines Abgleichs; Verwenden eines spezifischen Teils des Header-Abschnitts; oder Verwenden eines spezifischen Teils des Header-Abschnitts beim Berechnen eines Hashs.
  16. Netzwerkverfahren, aufweisend die Schritte: Empfangen eines Datenpakets, das einen Header-Abschnitt enthält; Parsen von Daten des Header-Abschnitts, wodurch sich ein erster Header-Abschnitt und einen zweiter Header-Abschnitt ergeben; Speichern einer Vielzahl von Abgleichs- und Aktionstabellen, wobei jede Abgleichs- und Aktionstabelle entsprechende Indizes und einen entsprechenden Lenkaktionseintrag enthält, der jedem der entsprechenden Indizes entspricht; Abrufen einer ersten Abgleichs- und Aktionstabelle aus der Vielzahl der Abgleichs- und Aktionstabellen; Abgleichen eines ersten Index mit einem entsprechenden ersten Lenkaktionseintrag in der ersten Abgleichs- und Aktionstabelle in Reaktion auf den ersten Header-Abschnitt; Berechnen eines kumulativen Nachschlagewertes basierend auf dem ersten Header-Abschnitt und dem zweiten Header-Abschnitt in Reaktion auf den ersten Lenkaktionseintrag; Abrufen einer zweiten Abgleichs- und Aktionstabelle aus der Vielzahl der Abgleichs- und Aktionstabellen in Reaktion auf den ersten Lenkaktionseintrag; Abgleichen eines zweiten Index mit einem entsprechenden zweiten Lenkaktionseintrag in der zweiten Abgleich- und Aktionstabelle in Reaktion auf den kumulativen Nachschlagewert; und Lenken des Pakets in Reaktion auf den zweiten Lenkaktionseintrag.
  17. Verfahren nach Anspruch 16, ferner aufweisend: Parsen der Daten des Header-Abschnitts, wodurch sich ein dritter Header-Abschnitt ergibt; Abrufen einer dritten Abgleichs- und Aktionstabelle aus der Vielzahl der Abgleichs- und Aktionstabellen; und Abgleichen eines dritten Index mit einem entsprechenden dritten Lenkaktionseintrag in der dritten Abgleich- und Aktionstabelle in Reaktion auf den dritten Header-Abschnitt.
  18. Verfahren nach Anspruch 16 oder 17, ferner aufweisend: Berechnen eines ersten Hash-Wertes in Reaktion auf den ersten Header-Abschnitt; Abgleichen des ersten Index in der ersten Abgleichs- und Aktionstabelle in Reaktion auf den ersten Hash-Wert; Berechnen eines zweiten Hash-Wertes in Reaktion auf den zweiten Header-Abschnitt; und Berechnen des kumulativen Nachschlagewerts basierend auf dem ersten Hash-Wert und dem zweiten Hash-Wert in Reaktion auf den ersten Lenkaktionseintrag.
  19. Verfahren nach Anspruch 16, 17 oder 18, ferner aufweisend: Parsen der Daten des Header-Abschnitts, was einen dritten Header-Abschnitt ergibt; Berechnen eines dritten Hash-Wertes in Reaktion auf den dritten Header-Abschnitt; Abrufen einer dritten Abgleichs- und Aktionstabelle aus der Vielzahl der Abgleichs- und Aktionstabellen; und Abgleichen eines dritten Index mit einem entsprechenden dritten Lenkaktionseintrag in der dritten Abgleich- und Aktionstabelle in Reaktion auf den dritten Hash-Wert.
  20. Verfahren nach einem der Ansprüche 16 bis 19, wobei der erste Lenkaktionseintrag eines oder mehreres aus Folgendem enthält: Weiterleiten des zu verarbeitenden Pakets durch mindestens eine ausgewählte zentrale Verarbeitungseinheit; Weiterleiten des Pakets an mindestens ein ausgewähltes Ziel; Verwerfen des Pakets; Weiterleiten des Pakets an ein angegebenes Ziel; Fortsetzen der Verarbeitung mit einer anderen der Abgleichs- und Aktionstabellen; Hinzufügen eines aktuellen Hash-Werts zu dem kumulativen Nachschlagewert; Hinzufügen von Daten eines Header-Abschnitts zu dem kumulativen Nachschlagewert; Verwenden des kumulativen Nachschlagewerts beim Durchführen eines Abgleichs; Nicht-Verwenden des kumulativen Nachschlagewerts beim Durchführen eines Abgleichs; Verwenden eines spezifischen Teils des Header-Abschnitts; oder Verwenden eines spezifischen Teils des Header-Abschnitts beim Berechnen eines Hashs.
DE102021203777.1A 2020-04-21 2021-04-16 Flexibles lenken Pending DE102021203777A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/853,783 2020-04-21
US16/853,783 US11323372B2 (en) 2020-04-21 2020-04-21 Flexible steering

Publications (1)

Publication Number Publication Date
DE102021203777A1 true DE102021203777A1 (de) 2021-10-21

Family

ID=77919701

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021203777.1A Pending DE102021203777A1 (de) 2020-04-21 2021-04-16 Flexibles lenken

Country Status (3)

Country Link
US (1) US11323372B2 (de)
CN (1) CN113542210B (de)
DE (1) DE102021203777A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11711453B2 (en) 2021-10-24 2023-07-25 Mellanox Technologies, Ltd. Template-based packet parsing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170286292A1 (en) 2016-03-31 2017-10-05 Mellanox Technologies Tlv Ltd. Single Double Cuckoo Hash
US10015090B2 (en) 2011-11-08 2018-07-03 Mellanox Technologies, Ltd. Packet steering

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5394394A (en) 1993-06-24 1995-02-28 Bolt Beranek And Newman Inc. Message header classifier
US6504842B1 (en) * 1998-07-30 2003-01-07 Alcatel Internetworking, Inc. Hardware copy assist for data communication switch
US6308219B1 (en) 1998-07-31 2001-10-23 Cisco Technology, Inc. Routing table lookup implemented using M-trie having nodes duplicated in multiple memory banks
US7333484B2 (en) 1998-08-07 2008-02-19 Intel Corporation Services processor having a packet editing unit
US6356951B1 (en) 1999-03-01 2002-03-12 Sun Microsystems, Inc. System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction
US7154858B1 (en) 1999-06-30 2006-12-26 Cisco Technology, Inc. System and method for measuring latency of a selected path of a computer network
US6788680B1 (en) 1999-08-25 2004-09-07 Sun Microsystems, Inc. Defferrable processing option for fast path forwarding
US6807172B1 (en) * 1999-12-21 2004-10-19 Cisco Technology, Inc. Method and apparatus for learning and switching frames in a distributed network switch
US7082569B2 (en) 2001-01-17 2006-07-25 Outlooksoft Corporation Systems and methods providing dynamic spreadsheet functionality
US7102996B1 (en) * 2001-05-24 2006-09-05 F5 Networks, Inc. Method and system for scaling network traffic managers
US20030043848A1 (en) 2001-08-30 2003-03-06 Sonksen Bradley Stephen Method and apparatus for data item processing control
US7269663B2 (en) * 2001-09-28 2007-09-11 Intel Corporation Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
US7881214B2 (en) 2002-10-25 2011-02-01 General Instrument Corporation Method for performing remote testing of network using IP measurement protocol packets
EP1416682B1 (de) 2002-10-31 2009-07-29 Alcatel Lucent Verfahren zur Bearbeitung von Datenpaketen auf Schicht Drei in einer Telekommunikationsvorrichtung
US7599287B2 (en) * 2002-11-15 2009-10-06 Cisco Technology, Inc. Tokens in token buckets maintained among primary and secondary storages
US7047453B2 (en) * 2003-11-13 2006-05-16 Nokia, Inc. Method and apparatus for managing network traffic using cyclical redundancy check hash functions
US7586851B2 (en) 2004-04-26 2009-09-08 Cisco Technology, Inc. Programmable packet parsing processor
GB2438455A (en) 2006-05-23 2007-11-28 Agilent Technologies Inc Generation of data packet decoding instructions
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7668161B2 (en) 2006-07-27 2010-02-23 Cisco Technology, Inc. Classifying data packet protocol values
US8218539B2 (en) 2006-10-18 2012-07-10 Broadcom Corporation Flexible packet field processor
CN101246486B (zh) 2007-02-13 2012-02-01 国际商业机器公司 用于改进的表达式处理的方法和装置
US20090097418A1 (en) * 2007-10-11 2009-04-16 Alterpoint, Inc. System and method for network service path analysis
US8694448B2 (en) 2008-12-16 2014-04-08 At&T Intellectual Property I, L.P. Method and apparatus for providing an adaptive parser
US8705533B1 (en) 2010-12-10 2014-04-22 Juniper Networks, Inc. Fast packet encapsulation using templates
US9665540B2 (en) 2011-07-21 2017-05-30 Arm Limited Video decoder with a programmable inverse transform unit
US9282173B2 (en) 2012-02-17 2016-03-08 Viavi Solutions Inc. Reconfigurable packet header parsing
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9071529B2 (en) * 2012-10-08 2015-06-30 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for accelerating forwarding in software-defined networks
US9537771B2 (en) * 2013-04-04 2017-01-03 Marvell Israel (M.I.S.L) Ltd. Exact match hash lookup databases in network switch devices
US9602398B2 (en) * 2013-09-15 2017-03-21 Nicira, Inc. Dynamically generating flows with wildcard fields
US9444914B2 (en) 2013-09-16 2016-09-13 Annapurna Labs Ltd. Configurable parser and a method for parsing information units
US9973599B2 (en) 2013-12-04 2018-05-15 Mediatek Inc. Parser for parsing header in packet and related packet processing apparatus
US9363178B2 (en) 2013-12-18 2016-06-07 Telefonaktiebolaget L M Ericsson (Publ) Method, apparatus, and system for supporting flexible lookup keys in software-defined networks
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9762488B2 (en) 2014-03-06 2017-09-12 Cisco Technology, Inc. Segment routing extension headers
BR112016025264B1 (pt) * 2014-05-05 2022-02-01 Telefonaktiebolaget Lm Ericsson (Publ) Dispositivo de plano de controle em um sistema de computação em nuvem para executar uma pluralidade de máquinas virtuais para implantar a virtualização de função de rede
US9531847B2 (en) 2014-05-22 2016-12-27 International Business Machines Corporation Skipping and parsing internet protocol version 6 (IPv6) extension headers to reach upper layer headers
US10237354B2 (en) 2014-09-25 2019-03-19 Intel Corporation Technologies for offloading a virtual service endpoint to a network interface card
US9606781B2 (en) 2014-11-14 2017-03-28 Cavium, Inc. Parser engine programming tool for programmable network devices
US9826071B2 (en) 2015-08-26 2017-11-21 Barefoot Networks, Inc. Configuring a switch for extracting packet header fields
US9892075B2 (en) * 2015-12-10 2018-02-13 Cisco Technology, Inc. Policy driven storage in a microserver computing environment
US10277511B2 (en) * 2015-12-16 2019-04-30 Nxp Usa, Inc. Hash-based packet classification with multiple algorithms at a network processor
CN106961412B (zh) * 2016-01-11 2020-04-24 中国移动通信集团公司 一种报文转换方法、装置及系统
US10616111B1 (en) * 2017-01-18 2020-04-07 Arista Networks, Inc. Consistent hashing for packets across multi-stage lookups
US10798633B2 (en) * 2017-02-23 2020-10-06 Cisco Technology, Inc. Heterogeneous access gateway for an information-centric networking environment
WO2018182604A1 (en) 2017-03-30 2018-10-04 Intel Corporation Wifi protected access 2 (wpa2) pass-through virtualization
US11159427B2 (en) * 2017-03-31 2021-10-26 Intel Corporation Single lookup entry for symmetric flows
US11366588B2 (en) 2017-07-03 2022-06-21 Intel Corporation Tier-aware read and write
US10541893B2 (en) * 2017-10-25 2020-01-21 Cisco Technology, Inc. System and method for obtaining micro-service telemetry data
US10911570B2 (en) 2017-11-02 2021-02-02 Utech, Inc. System and method for content parsing
US10841243B2 (en) * 2017-11-08 2020-11-17 Mellanox Technologies, Ltd. NIC with programmable pipeline
US10757230B2 (en) 2017-12-11 2020-08-25 Mellanox Technologies Tlv Ltd. Efficient parsing of extended packet headers
US10701190B2 (en) 2018-01-10 2020-06-30 Mellanox Technologies Tlv Ltd. Efficient parsing of optional header fields
US11469995B2 (en) * 2018-06-14 2022-10-11 Nokia Solutions And Networks Oy Flow-specific fast rerouting of source routed packets

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015090B2 (en) 2011-11-08 2018-07-03 Mellanox Technologies, Ltd. Packet steering
US20170286292A1 (en) 2016-03-31 2017-10-05 Mellanox Technologies Tlv Ltd. Single Double Cuckoo Hash

Also Published As

Publication number Publication date
CN113542210B (zh) 2022-12-20
US20210328923A1 (en) 2021-10-21
CN113542210A (zh) 2021-10-22
US11323372B2 (en) 2022-05-03

Similar Documents

Publication Publication Date Title
DE60213509T2 (de) Verfahren und Vorrichtung zur Verbesserung der Verfügbarkeit von Wegeleitsystemen mit mehrwege-Kostengleichheit
DE60021846T2 (de) Leitweglenkungsanordnung
DE60222622T2 (de) Verfahren und Vorrichtung zur Paketkopfteilverarbeitung
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE60016574T2 (de) Verfahren und vorrichtung zur belastungsverteilung uphänging von datenflussen
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE69829645T2 (de) Verfahren zur Änderung von dynamischen Entscheidungsbäume
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
DE69937185T2 (de) Verfahren und vorrichtung zum paketbeförderungsnachschlagen mit einer reduzierten anzahl von speicherzugriffen
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE102015102871B4 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
DE60120790T2 (de) Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE60202136T2 (de) Cache-eintrag-auswahlverfahren und -vorrichtung
DE112011103561T5 (de) Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse
DE60018780T2 (de) Verfahren und vorrichtung zur erkennung von datenpaketen in echtzeit in dem anschluss einer netzwerkvermittlungsstelle
DE602004005785T2 (de) Dynamische Leitweglenkung in einem inhaltbasierten verteilten Netzwerk
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation
DE60112011T2 (de) Verfahren und Vorrichtung zum Filtern von Paketen basierend auf Datenströme unter Verwendung von Addressentabellen
DE602004008911T2 (de) Verfahren und system um die reihenfolge von paketen mit hilfe eines zwischenspeichers zu gewährleisten
DE112007001529T5 (de) Flexibles und erweiterbares Receive Side Scaling
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE60009884T2 (de) Verfahren und vorrichtung zur identifizierung und klassifizierung von netzwerkverkehr in einer hochleistungs netzwerkschnittstelle
DE112019002591T5 (de) Weiterleitungselement-datenebene mit flussgrössendetektor

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012741000

Ipc: H04L0045740000