DE112017003294T5 - Technologien für ein skalierbares Senden und Empfangen von Paketen - Google Patents

Technologien für ein skalierbares Senden und Empfangen von Paketen Download PDF

Info

Publication number
DE112017003294T5
DE112017003294T5 DE112017003294.6T DE112017003294T DE112017003294T5 DE 112017003294 T5 DE112017003294 T5 DE 112017003294T5 DE 112017003294 T DE112017003294 T DE 112017003294T DE 112017003294 T5 DE112017003294 T5 DE 112017003294T5
Authority
DE
Germany
Prior art keywords
network device
nic
ring
descriptors
packets
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
DE112017003294.6T
Other languages
English (en)
Inventor
John J. Browne
Tomasz Kantecki
Chris Macnamara
Pierre Laurent
Sean Harte
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112017003294T5 publication Critical patent/DE112017003294T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • H04L12/43Loop networks with decentralised control with synchronous transmission, e.g. time division multiplex [TDM], slotted rings
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • H04L12/4625Single bridge functionality, e.g. connection of two networks over a single bridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/803Application aware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3063Pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Technologien zum skalierbaren Empfangen und Senden von Paketen enthalten eine Netzwerkvorrichtung. Die Netzwerkvorrichtung soll einen Ring errichten, der als ein kreisförmiger Puffer definiert ist und eine Vielzahl von Slots zum Speichern von Einträgen enthält, die für Pakete repräsentativ sind. Die Netzwerkvorrichtung soll auch Empfangsdeskriptoren generieren und den Slots im Ring zuzuweisen. Jeder Empfangsdeskriptor enthält einen Pointer auf einen entsprechenden Speicherpuffer, um Paketdaten zu speichern. Die Netzwerkvorrichtung soll ferner bestimmen, ob die NIC ein oder mehrere Pakete empfangen hat, und, mit direktem Speicherzugriff (DMA) und in Antwort auf eine Bestimmung, dass die NIC ein oder mehrere Pakete empfangen hat, Paketdaten des einen oder der mehreren empfangenen Pakete aus der NIC zu den Speicherpuffern kopieren, die mit den Empfangsdeskriptoren verknüpft sind, die den Slots im Ring zugewiesen sind.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Die vorliegende Anmeldung beansprucht Priorität der US Gebrauchspatentanmeldung, Seriennr. 15/199,110, mit dem Titel „TECHNOLOGIES FOR SCALABLE PACKET RECEPTION AND TRANSMISSION“, die am 30. Juni 2016 eingereicht wurde.
  • HINTERGRUND
  • In typischen Systemen werden alle Paketpointer, die von einer Netzwerkschnittstellenkarte empfangen werden, von einem Thread, der auf einem Kern eines Prozessors ausgeführt wird, aus einer Empfangsdeskriptorstelle genommen und in eine Warteschlange zur Verarbeitung durch eine Anwendung gestellt. Dieser Prozess erzeugt einen Flaschenhals auf einem Kern und verhindert eine Skalierbarkeit, wenn ein Durchsatz die Kapazität des einzelnen Kerns übersteigt, um die Empfangsdatenpointer in die Anwendungswarteschlange zu bewegen. Zusätzlich ist in typischen Systemen ein Flaschenhals auch beim Senden von Paketen vorhanden, da ein einzelner Kern einen Thread ausführt, um einen ähnlichen Prozess zum Bewegen von Daten von einer Anwendungswarteschlange zu einer Netzwerkschnittstellenkarte zum Senden verwendet.
  • Figurenliste
  • Die hier beschriebenen Konzepte sind als Beispiel und nicht zur Einschränkung in den beiliegenden Figuren gezeigt. Der Einfachheit und Klarheit der Darstellung wegen sind Elemente, die in den Figuren gezeigt sind, nicht unbedingt im Maßstab gezeichnet. Falls als angemessen erachtet, werden Bezugszeichen in den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben.
    • 1 ist ein vereinfachtes Blockdiagramm zumindest einer Ausführungsform eines Systems, das eine Netzwerkvorrichtung zum Bereitstellen eines skalierbaren Empfangens und Sendens von Paketen enthält;
    • 2 ist ein vereinfachtes Blockdiagramm zumindest einer Ausführungsform einer Netzwerkvorrichtung des Systems von 1;
    • 3 ist ein vereinfachtes Blockdiagramm zumindest einer Ausführungsform einer Umgebung, die durch die Netzwerkvorrichtung von 1 und 2 errichtet werden kann;
    • 4-5 sind ein vereinfachtes Flussdiagramm zumindest einer Ausführungsform eines Verfahrens zur Verarbeitung von Paketen, das durch die Netzwerkvorrichtung von 1 und 2 durchgeführt werden kann;
    • 6-7 sind ein vereinfachtes Flussdiagramm zumindest einer Ausführungsform eines Verfahrens zum Empfangen von Datenpaketen, das durch die Netzwerkvorrichtung von 1 und 2 durchgeführt werden kann;
    • 8-9 sind ein vereinfachtes Flussdiagramm zumindest einer Ausführungsform eines Verfahrens zum Ausgeben von Paketen, das durch die Netzwerkvorrichtung von 1 und 2 durchgeführt werden kann;
    • 10 ist ein vereinfachtes Diagramm von Prozessen, die durch Komponenten innerhalb der Netzwerkvorrichtung von 1 und 2 in zumindest einer Ausführungsform eines Verfahrens zum Empfangen von Datenpaketen durchgeführt werden;
    • 11 ist ein vereinfachtes Diagramm von Prozessen, die durch Komponenten innerhalb der Netzwerkvorrichtung von 1 und 2 in zumindest einer anderen Ausführungsform eines Verfahrens zum Empfangen von Datenpaketen durchgeführt werden;
    • 12 ist ein vereinfachtes Diagramm von Prozessen, die durch Komponenten innerhalb der Netzwerkvorrichtung von 1 und 2 in zumindest einer Ausführungsform eines Verfahrens zum Ausgeben von Datenpaketen durchgeführt werden; und
    • 13 ist ein vereinfachtes Diagramm von Prozessen, die durch Komponenten innerhalb der Netzwerkvorrichtung von 1 und 2 in zumindest einer anderen Ausführungsform eines Verfahrens zum Ausgeben von Datenpaketen durchgeführt werden.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Während die Konzepte der vorliegenden Offenbarung verschiedenen Modifizierungen und alternativen Formen unterliegen, sind spezielle Ausführungsformen derselben als Beispiel in den Zeichnungen dargestellt und werden hier ausführlich beschrieben. Es sollte jedoch klar sein, dass die Konzepte der vorliegenden Offenbarung nicht auf die besonderen offenbarten Formen beschränkt sein sollen, sondern im Gegensteil alle Modifizierungen, Äquivalente und Alternativen in Übereinstimmung mit der vorliegenden Offenbarung und den beiliegenden Ansprüchen abdecken sollen.
  • Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „eine veranschaulichende Ausführungsform“ usw., geben an, dass die beschriebene Ausführungsform ein besonderes Merkmal, eine besondere Struktur oder Eigenschaft enthalten kann, aber jede Ausfiihrungsform kann oder muss nicht unbedingt dieses besondere Merkmal, diese besondere Struktur oder Eigenschaft enthalten. Ferner beziehen sich solche Phasen nicht unbedingt auf dieselbe Ausführungsform. Wenn ferner ein besonderes Merkmal, eine besondere Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben ist, wird vorausgesetzt, dass es in der Kenntnis eines Fachmanns auf dem Gebiet liegt, ein solches Merkmal, eine solche Struktur oder Eigenschaft in Verbindung mit anderen Ausführungsformen auszuführen, sei es nun ausdrücklich beschrieben oder nicht. Zusätzlich sollte klar sein, dass Artikel, die in einer Liste in der Form „zumindest ein A, B und C“ enthalten sind, bedeuten kann (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C). Ebenso können Artikel, die in der Form „zumindest eines von A, B oder C“ aufgelistet sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten.
  • Die offenbarten Ausführungsformen können in einigen Fällen in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert sein. Die offenbarten Ausführungsformen können auch als Anweisungen implementiert sein, die durch ein transitorisches oder nicht transitorisches, maschinenlesbares (z.B. rechnerlesbares) Datenspeichermedium befördert werden oder auf diesem gespeichert sind, das durch einen oder mehrere Prozessoren gelesen oder ausgeführt werden kann. Ein maschinenlesbares Datenspeichermedium kann als jede(r) Datenspeichervorrichtung, Mechanismus oder andere physische Struktur zum Speichern oder Senden von Informationen in einer Form verkörpert sein, die durch eine Maschine (z.B. einen flüchtigen oder nicht flüchtigen Speicher, eine Medienplatte oder andere Medienvorrichtung) lesbar ist.
  • In den Zeichnungen können einige Struktur- oder Verfahrensmerkmale in speziellen Anordnungen und/oder Reihenfolgen dargestellt sein. Es sollte jedoch klar sein, dass solche speziellen Anordnungen und/oder Reihenfolgen nicht erforderlich sein können. Vielmehr können in einigen Ausführungsformen solche Merkmale in einer anderen Weise und/oder Reihenfolge angeordnet sein als in den veranschaulichenden Figuren dargestellt. Zusätzlich soll die Aufnahme einer Struktur oder eines Verfahrensmerkmals in eine bestimmte Figur nicht bedeuten, dass ein solches Merkmal in allen Ausführungsformen enthalten ist, und kann in einigen Ausführungsformen nicht enthalten oder mit anderen Merkmalen kombiniert sein.
  • Unter Bezugnahme nun auf 1 enthält in einer veranschaulichenden Ausführungsform ein System 100 zum Bereitstellen eines skalierbaren Empfangens und Sendens von Paketen einen Quellenendpunktknoten 102 und einen Zielortendpunktknoten 108, die durch eine oder mehrere Netzwerkvorrichtungen 106 über ein Netzwerk 104 in Kommunikation stehen. In Verwendung erleichtert die Netzwerkvorrichtung 106 die Sendung von Netzwerkpaketen (z.B. basierend auf der Art der Arbeitslast, dem Informationsfluss usw.) zwischen dem Quellenendpunktknoten 102 und dem Zielortendpunktknoten 108 über das Netzwerk 104. Wie hierin ausführlicher beschrieben ist, verwendet die veranschaulichende Netzwerkvorrichtung 106 einen gemeinsam benutzten Ring (d.h. einen kreisförmigen Puffer) im Speicher und ordnet Kerne eines oder mehrerer Prozessoren der Netzwerkvorrichtung 106 verschiedenen Stufen einer Verarbeitungs-Pipeline zu. In der veranschaulichenden Ausführungsform enthalten die Stufen eine oder mehrere Eingabestufen, eine oder mehrere Arbeitsstufen und eine oder mehrere Ausgabestufen. Die Eingabestufen führen einen Priming-Prozess aus, in dem die Eingabestufen Puffer im Hauptspeicher zum Speichern von Paketdaten zuordnen und Empfangsdeskriptoren generieren. Jeder Empfangsdeskriptor enthält eine Anweisung zum Empfangen eines Pakets und einen Pointer zum Puffer zum Speichern der Paketdaten. Die Eingabestufen fügen dann diese Empfangsdeskriptoren als Einträge zu Slots des gemeinsam benutzten Rings der Reihe nach hinzu. Ferner können die Eingabestufen einen Abfrageprozess durchführen, um diese Empfangsdeskriptoren aus dem Ring einer Netzwerkschnittstellensteuerung (NIC) bereitzustellen, die auch als eine Host-Fabric-Schnittstelle (HFI) bezeichnet werden kann. Die NIC speichert dann unter Verwendung eines direkten Speicherzugriffs (DMA) die Daten aus empfangenen Paketen in Puffern.
  • Die Arbeitsstufen führen Operationen („Arbeiterfunktionen“) an den empfangenen Paketdaten durch, wie Kompression, Dekompression, Verschlüsselung, Entschlüsselung, Firewall-Dienste und/oder andere Funktionen, und aktualisieren Metadaten, die mit den entsprechenden Einträgen in den Slots des Rings verknüpft sind, um einen Fertigstellungsstatus jeder Arbeitsstufe anzugeben. Ferner generieren die Ausgabestufen Sendedeskriptoren und fügen sie zu den Slots im Ring der Reihe nach hinzu. Die Sendedeskriptoren sind ähnlich den Empfangsdeskriptoren, da sie eine Anweisung an die NIC (d.h. eine Anweisung, ein Paket zu senden) und einen Pointer zu einem Speicherpuffer enthalten, der die zu sendenden Paketdaten enthält. Wenn die Metadaten eines Eintrags in einem Slot angeben, dass die Arbeitsstufen die Verarbeitung der Paketdaten beendet haben und dass die Paketdaten zur Sendung bereit sind, kopiert die Ausgabestufe die Paketdaten unter Verwendung von DMA zur NIC. Es sollte klar sein, dass in der veranschaulichenden Ausführungsform die Eingabe- und Ausgabestufen die Slots im Ring mit Empfangsdeskriptoren und Sendedeskriptoren bei einer Rate füllen, die von der Rate unabhängig ist, bei der Pakete durch die NIC tatsächlich empfangen und/oder gesendet werden, wodurch der Flaschenhals verringert wird, der in typischen Systemen vorhanden ist. Mit anderen Worten, ein Vorrat an Empfangsdeskriptoren und Sendedeskriptoren und der zugehörigen Speicherpuffer wird zur Verfügung gestellt, bevor die NIC diese benutzt. Wie ferner hierin ausführlicher beschrieben ist, sind in einigen Ausführungsformen, um weitere Effizienzen bereitzustellen, Operationen der Eingabe- und Ausgabestufen durch Hardware-Komponenten der NIC selbst implementiert, anstatt durch Software-Threads, die auf Kernen des Prozessors ausgeführt werden.
  • Der Quellenendpunktknoten 102 kann als jede Art von Berechnungs- oder Rechenvorrichtung implementiert sein, die imstande ist, die hier beschriebenen Funktionen durchzuführen, enthaltend, ohne Einschränkung, einen Computer, einen Desktop-Computer, ein Smartphone, eine Workstation, einen Laptop-Computer, einen Notebook-Computer, einen Tablet-Computer, eine mobile Rechenvorrichtung, eine tragbare Rechenvorrichtung, eine Netzwerkanwendung, eine Web-Anwendung, ein verteiltes Rechensystem, ein Prozessor-basiertes System und/oder eine Gebrauchselektronikvorrichtung. Ebenso kann der Zielortendpunktknoten 108 als eine Art von Berechnungs- oder Rechenvorrichtung verkörpert sein, die imstande ist, die hier beschriebenen Funktionen durchzuführen, enthaltend, ohne Einschränkung, einen Computer, einen Desktop-Computer, ein Smartphone, eine Workstation, einen Laptop-Computer, einen Notebook-Computer, einen Tablet-Computer, eine mobile Rechenvorrichtung, eine tragbare Rechenvorrichtung, eine Netzwerkanwendung, eine Web-Anwendung, ein verteiltes Rechensystem, ein Prozessor-basiertes System und/oder eine Gebrauchselektronikvorrichtung. Jeder von dem Quellenendpunktknoten 102 und dem Zielortendpunktknoten 108 kann Komponenten enthalten, die allgemein in einer Rechenvorrichtung vorgefunden werden, wie einen Prozessor, Speicher, ein Eingabe-/Ausgabe-Teilsystem, Datenspeicher, Kommunikationsschaltkreis usw.
  • Das Netzwerk 104 kann als eine Art von verdrahtetem oder drahtlosem Kommunikationsnetzwerk verkörpert sein, enthaltend Funknetzwerke (z.B. Global System for Mobile Communications (GSM), 3G, Long Term Evolution (LTE), Worldwide Interoperability for Microwave Access (WiMAX) usw.), digitale Teilnehmerleitungs- (DSL) Netzwerke, Kabelnetzwerke (z.B. koaxiale Netzwerke, Fasernetzwerke usw.), Telefonie-Netzwerke, lokale Netzwerke (LANs) oder Weitverkehrsnetzwerke (WANs), globale Netzwerke (z.B. das Internet) oder eine beliebigen Kombination davon. Zusätzlich kann das Netzwerk 104 eine Anzahl von Netzwerkvorrichtungen 106 enthalten, die notwendig sind, um eine Kommunikation zwischen dem Quellenendpunktknoten 102 und dem Zielortendpunktknoten 108 zu erleichtern.
  • Jede Netzwerkvorrichtung 106 kann als eine Art von Rechenvorrichtung verkörpert sein, die zu einer Erleichterung verdrahteter und/oder drahtloser Netzwerkkommunikationen zwischen dem Quellenendpunktknoten 102 und dem Zielortendpunktknoten 108 imstande ist. Zum Beispiel können die Netzwerkvorrichtungen 106 als ein (z.B. alleinstehender, Rack-montierter, Blade- usw.) Server, ein Router, ein Schalter, ein Netzwerk-Hub, ein Zugangspunkt, eine Datenspeichervorrichtung, eine Rechenvorrichtung, ein Multiprozessorsystem, eine (z.B. physische oder virtuelle) Netzwerkanwendung, ein Computer, ein Desktop-Computer, ein Smartphone, eine Workstation, ein Laptop-Computer, ein Notebook-Computer, ein Tablet-Computer, eine mobile Rechenvorrichtung oder jede andere Rechenvorrichtung verkörpert sein, die zur Verarbeitung von Netzwerkpaketen imstande ist. Wie in 2 dargestellt, enthält eine veranschaulichende Netzwerkvorrichtung 106 eine zentrale Verarbeitungseinheit (CPU) 210, einen Hauptspeicher 212, ein Eingabe-/Ausgabe- (I/O) Teilsystem 214 und einen Kommunikationsschaltkreis 216. Natürlich kann in anderen Ausführungsformen die Netzwerkvorrichtung 106 andere oder zusätzliche Komponenten enthalten, wie jene, die üblicherweise in einem Computer vorgefunden werden (z.B. Datenspeicher, Anzeige usw.). Zusätzlich können in einigen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten in einer anderen Komponente eingefügt sein oder auf andere Weise einen Teil derselben bilden. Zum Beispiel kann in einigen Ausführungsformen der Hauptspeicher 212, oder können Teile davon, in die CPU 210 eingefügt sein.
  • Die CPU 210 kann als eine Art von Prozessor verkörpert sein, der imstande ist, die hierin beschriebenen Funktionen durchzuführen. Die CPU 210 kann als ein oder mehrere Einzel- oder Mehrfachkern-Prozessoren, eine Mikrosteuerung oder anderer Prozessor oder andere Verarbeitungs-/Steuerschaltung verkörpert sein. In einigen Ausführungsformen kann die CPU 210 als eine feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), eine Grafikverarbeitungseinheit (GPU), rekonfigurierbare Hardware oder Hardware-Schaltkreis oder eine andere spezialisierte Hardware verkörpert sein, diese enthalten oder an diese gekoppelt sein, um eine Durchführung der hierin beschriebenen Funktionen zu erleichtern. In der veranschaulichenden Ausführungsform ist die CPU 210 als ein Prozessor verkörpert, der einen Satz 230 aus mehreren Kernen 232, 234, 236, 238, 240, 242, 244 und 246 enthält. Während in 2 acht Kerne dargestellt sind, sollte klar sein, dass in anderen Ausführungsformen die CPU 210 eine andere Anzahl von Kernen enthalten kann. Ebenso kann der Hauptspeicher 212 als eine Art von flüchtigem (z.B. dynamischer Direktzugriffsspeicher (DRAM) usw.) oder nicht flüchtigem Speicher oder Datenspeicher verkörpert sein, der imstande ist, die hierin beschriebenen Funktionen durchzuführen. In einigen Ausführungsformen kann der gesamte Hauptspeicher 212 oder ein Teil davon in die CPU 210 integriert sein. In Betrieb kann der Hauptspeicher 212 verschiedene Daten und Software speichern, die während des Betriebs der Netzwerkvorrichtung 106 verwendet werden, wie Ringdaten, Paketdaten, Stufendaten, NIC-Warteschlangendaten, Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber.
  • Das I/O-Teilsystem 214 kann als Schaltkreis und/oder Komponenten verkörpert sein, um Eingabe-/Ausgabe-Operationen mit der CPU 210, dem Hauptspeicher 212 und anderen Komponenten der Netzwerkvorrichtung 106 zu erleichtern. Zum Beispiel kann das I/O-Teilsystem 214 als Speichersteuerung-Hubs, Eingabe-/Ausgabesteuerung-Hubs, integrierte Sensor-Hubs, Firmware-Vorrichtungen, Kommunikationslinks (d.h. Punkt-zu-Punkt-Links, Bus-Links, Drähte, Kabel, Lichtleiter, Leiterplattenspuren usw.) und/oder andere Komponenten und Teilsysteme verkörpert sein oder diese auf andere Weise enthalten, um die Eingabe-/Ausgabe-Operationen zu erleichtern. In einigen Ausführungsformen kann das I/O-Teilsystem 214 einen Teil eines System-on-Chip (SoC) bilden und gemeinsam mit einem oder mehreren der CPU 210, des Hauptspeichers 212 und anderer Komponenten der Netzwerkvorrichtung 106 auf einem einzigen integrierten Schaltungs-Chip eingefügt sein.
  • Der Kommunikationsschaltkreis 216 kann als eine Kommunikationsschaltung, -vorrichtung oder Sammlung davon verkörpert sein, imstande, Kommunikationen über das Netzwerk 104 zwischen der Netzwerkvorrichtung 106 und dem Quellenendpunktknoten 102, einer anderen Netzwerkvorrichtung 106 und/oder dem Zielortendpunktknoten 108 zu ermöglichen. Der Kommunikationsschaltkreis 216 kann konfiguriert sein, eine oder mehrere Kommunikationstechnologien (z.B. verdrahtete oder drahtlose Kommunikationen) und zugehörige Protokolle (z.B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX usw.) zu verwenden, um eine solche Kommunikation auszuführen.
  • Der veranschaulichende Kommunikationsschaltkreis 216 enthält eine Netzwerkschnittstellensteuerung (NIC) 218, die auch als eine Host-Fabric-Schnittstelle (HFI) bezeichnet werden kann. Die NIC 218 kann als eine oder mehrere Erweiterungsplatten, Tochterkarten, Netzwerkschnittstellenkarten, Steuer-Chips, Chipsets oder andere Vorrichtungen verkörpert sein, die durch die Netzwerkvorrichtung 106 zur Verbindung des Quellenendpunktknotens 102, des Zielortendpunktknotens 108 und/oder einer anderen Netzwerkvorrichtung 106 verwendet werden. In einigen Ausführungsformen kann die NIC 218 als Teil eines System-on-Chip (SoC) verkörpert sein, der einen oder mehrere Prozessoren enthält, oder auf einem Multichip-Gehäuse enthalten sein, das auch einen oder mehrere Prozessoren beinhaltet. In einigen Ausführungsformen kann die NIC 218 einen lokalen Prozessor (nicht dargestellt) und/oder einen lokalen Speicher (nicht dargestellt) enthalten, die beide lokal bei der NIC 218 sind. In solchen Ausführungsformen kann der lokale Prozessor der NIC 218 imstande sein, eine oder mehrere der hierin beschriebenen Funktionen der CPU 210 durchzuführen. Zusätzlich oder alternativ kann in solchen Ausführungsformen der lokale Speicher der NIC 218 in eine oder mehrere Komponenten der Netzwerkvorrichtung 106 auf Plattenebene, Sockelebene, Chip-Ebene und/oder anderen Ebenen integriert sein. Ferner kann die NIC 218 eine Ringzugriffslogik 220 enthalten, die als ein Prozessor, eine Mikrosteuerung, ein FPGA, eine ASIC oder eine andere Vorrichtung verkörpert sein kann, die der NIC 218 einen direkten Zugang zu Empfangsdeskriptoren und Sendedeskriptoren ermöglicht, die in Slots des gemeinsam benutzten Rings gespeichert sind, anstatt auf Software-Threads zu beruhen, die durch einen oder mehrere der Kerne 230 der CPU 210 ausgeführt werden, um unabhängig diese Deskriptoren in separate Warteschlangen für die NIC 218 zu kopieren. Die Ringzugriffslogik 220 ermöglicht der NIC 218 auf nicht kontinuierlich gespeicherte Empfangsdeskriptoren und Sendedeskriptoren im Ring zuzugreifen, anstatt sich auf die Kerne der CPU 210 zu verlassen, die Empfangsdeskriptoren und die Sendedeskriptoren separat in separate Warteschlanges für die NIC 218 zu kopieren, wo diese Deskriptoren kontinuierlich gespeichert werden.
  • Die Netzwerkvorrichtung 106 kann zusätzlich eine Datenspeichervorrichtung 222 enthalten, die als eine Art von Vorrichtung oder Vorrichtungen verkörpert sein kann, die für eine kurzfristige oder langfristige Speicherung von Daten konfiguriert sein kann, wie zum Beispiel Speichervorrichtungen und -schaltungen, Speicherkarten, Festplattenlaufwerke, Solid-State-Laufwerke oder andere Datenspeichervorrichtungen. Die Datenspeichervorrichtung 222 kann eine Systempartition enthalten, die Daten und Firmware-Code für die Netzwerkvorrichtung 106 speichert. Die Datenspeichervorrichtung 222 kann auch eine Betriebssystempartition enthalten, die Datendateien und ausführbare Programme für ein Betriebssystem der Netzwerkvorrichtung 106 speichert.
  • Zusätzlich kann die Netzwerkvorrichtung 106 eine Anzeige 224 enthalten. Die Anzeige 224 kann als jede geeignete Anzeigetechnologie verkörpert sein oder diese verwenden, enthaltend zum Beispiel eine Flüssigkristallanzeige (LCD), eine Leuchtdioden- (LED) Anzeige, eine Kathodenstrahlröhren- (CRT) Anzeige, eine Plasmaanzeige und/oder andere Anzeige, die in einer Rechenvorrichtung verwendbar ist. Die Anzeige kann einen Berührungsschirmsensor enthalten, der jede geeignete Berührungsschirmeingabetechnologie zum Erfassen der taktilen Auswahl von Informationen, die auf der Anzeige angezeigt werden, durch den Benutzer verwendet, enthaltend, ohne aber darauf beschränkt zu sein, resistive Berührungsschirmsensoren, kapazitive Berührungsschirmsensoren, Oberflächenakustikwellen-, (SAW-), Berührungsschirmsensoren, Infrarot-Berührungsschirmsensoren, optische Bildgebungs-Berührungsschirmsensoren, akustische Berührungsschirmsensoren und/oder eine andere Art von Berührungsschirmsensoren. Zusätzlich oder alternativ kann die Netzwerkvorrichtung 106 eine oder mehrere periphere Vorrichtungen 226 enthalten. Solche peripheren Vorrichtungen 226 können jede Art von peripherer Vorrichtung enthalten, die üblicherweise in einer Rechenvorrichtung vorgefunden wird, wie Lautsprecher, eine Maus, eine Tastatur und/oder andere Eingabe-/Ausgabevorrichtungen, Schnittstellenvorrichtungen und/oder andere periphere Vorrichtungen.
  • Unter Bezugnahme nun auf 3 kann in der veranschaulichenden Ausführungsform jede Netzwerkvorrichtung 106 während des Betriebs eine Umgebung 300 errichten. Die veranschaulichende Umgebung 300 enthält ein Netzwerkkommunikationsmodul 320, ein DMA-Modul 330 und ein Ringmanagementmodul 340, das ein Ringeinrichtungsmodul 350, ein Deskriptormanagementmodul 360 und ein Stufenmanagementmodul 370 enthält. Jedes von den Modulen, der Logik und anderen Komponenten der Umgebung 300 kann als Hardware, Firmware, Software oder eine Kombination davon verkörpert sein. Als solches können in einigen Ausführungsformen eine oder mehrere der Module der Umgebung 300 als Schaltkreis oder Sammlung elektrischer Vorrichtungen (z.B. Netzwerkkommunikationsschaltkreis 320, DMA-Schaltkreis 330, Ringmanagementschaltkreis 340, Ringeinrichtungsschaltkreis 350, Deskriptormanagementschaltkreis 360, Stufenmanagementschaltkreis 370 usw.) verkörpert sein. Es sollte klar sein, dass in solchen Ausführungsformen einer oder mehrere des Netzwerkkommunikationsschaltkreises 320, DMA-Schaltkreises 330, Ringmanagementschaltkreises 340, Ringeinrichtungsschaltkreises 350, Deskriptormanagementschaltkreises 360 oder Stufenmanagementschaltkreises 370 einen Teil eines oder mehrerer der CPU 210, des Kommunikationsschaltkreises 216, Hauptspeichers 212, I/O-Teilsystems 214 und/oder anderer Komponenten der Netzwerkvorrichtung 106 bilden können. Zusätzlich können in einigen Ausführungsformen eine oder mehrere der veranschaulichenden Module einen Teil eines anderen Moduls bilden und/oder eine oder mehrere der veranschaulichenden Module können voneinander unabhängig sein. Ferner können in einigen Ausführungsformen eines oder mehrere der Module der Umgebung 300 als virtualisierte Hardware-Komponenten oder emulierte Architektur verkörpert sein, die durch die CPU 210 oder andere Komponenten der Netzwerkvorrichtung 106 errichtet und aufrechterhalten werden können.
  • In der veranschaulichenden Umgebung 300 enthält die Netzwerkvorrichtung 106 auch Ringdaten 302, Paketdaten 304, Stufendaten 306 und NIC-Warteschlangendaten 308. Die Ringdaten 302 stellen einen Ring dar, der im Speicher 212 errichtet ist und einen Satz von Einträgen enthält. Wie in der Folge ausführlicher in Bezug auf 8 besprochen ist, ist jeder Eintrag mit einer laufenden Nummer (d.h. einer Slot-Nummer) versehen und enthält einen Pointer auf die Daten eines Pakets und Metadaten, die zum Paket gehören. Die Metadaten definieren Eigenschaften des Datenpakets, wie die Paketgröße, eine Eingabeportnummer, eine Ausgabeportnummer und Zustandsdaten, die angeben, welche Stufen eine Verarbeitung des Datenpakets beendet haben und ob das Datenpaket bereit ist, zu einer anderen Vorrichtung (z.B. zum Zielortendpunktknoten 108) gesendet zu werden. Jeder Eintrag enthält auch einen Empfangsdeskriptor, der einen Pointer zu den Paketdaten enthält, und einen Sendedeskriptor, der auch einen Pointer zu den Paketdaten enthält. Die Paketdaten 304 sind in der veranschaulichenden Ausführungsform als der Inhalt der Datenpakete verkörpert, der durch die verschiedenen Stufen empfangen und bearbeitet werden, die den Kernen 230 zugewiesen sind. Als solche können die Paketdaten 304 Header, Nutzlastdaten und/oder andere Informationen enthalten, die anfänglich in einem Datenpaket enthalten sind, und/oder Informationen, die dem Datenpaket als Ergebnis einer Verarbeitung durch die Stufen hinzugefügt oder darin modifiziert wurden. Die Stufendaten 306 enthalten in der veranschaulichenden Ausführungsform Informationen, die zum Verwalten des Status der verschiedenen Stufen, die durch die Kerne 230 ausgeführt werden, in der Netzwerkvorrichtung 106 verwendet werden. Als solches enthalten die Stufendaten 306 eine gegenwärtige laufende Nummer (d.h. den Index des gegenwärtigen Eintrags im Ring, den eine bestimmte Stufe bearbeitet) jeder Stufe und eine Stufeninstanzkennung, die zur Unterscheidung zwischen separaten Instanzen derselben Stufe verwendet werden kann. Die NIC-Warteschlangendaten 308 enthalten eine Empfangswarteschlange, die einen kontinuierlichen Satz von Empfangsdeskriptoren aus dem Ring speichert, für Pakete, die zu empfangen sind, und eine Sendewarteschlange, die einen kontinuierlichen Satz von Sendedeskriptoren aus dem Ring für Pakete speichert, die bereit sind, aus der Netzwerkvorrichtung gesendet zu werden. Auf die Ringdaten 302, Paketdaten 304, Stufendaten 306 und NIC-Warteschlangendaten 308 kann durch die verschiedenen Module und/oder Teilmodule der Netzwerkvorrichtung 106 zugegriffen werden. Es sollte klar sein, dass die Netzwerkvorrichtung 106 andere Komponenten, Teilkomponenten, Module, Teilmodule und/oder Vorrichtungen enthalten kann, die üblicherweise in einer Netzwerkvorrichtung vorgefunden werden, die der deutlichen Beschreibung wegen in 3 nicht dargestellt sind.
  • Das Netzwerkkommunikationsmodul 320, das als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon verkörpert sein kann, wie oben besprochen, ist konfiguriert, eingehende oder ausgehende Netzwerkkommunikationen (z.B. Netzwerkverkehr, Netzwerkpakete, Netzwerkströme usw.) zu bzw. von der Netzwerkvorrichtung 106 zu erleichtern. Dazu ist die Netzwerkkommunikationsmodul 320 konfiguriert, Datenpakete von einer Rechenvorrichtung (z.B. dem Quellenendpunktknoten 102, einer anderen Netzwerkvorrichtung 106, dem Zielortendpunktknoten 108) zu empfangen und zu verarbeiten und Datenpakete zu primen und zu einer anderen Rechenvorrichtung (z.B. dem Quellenendpunktknoten 102, einer anderen Netzwerkvorrichtung 106, dem Zielortendpunktknoten 108) zu senden. Daher kann in einigen Ausführungsformen zumindest ein Teil der Funktionalität des Netzwerkkommunikationsmoduls 320 durch den Kommunikationsschaltkreis 216 durchgeführt werden und in der veranschaulichenden Ausfiihrungsform durch die NIC 218. Das DMA-Modul 330, das als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon, wie oben besprochen, verkörpert sein kann, ist konfiguriert zu ermöglichen, dass Paketdaten unter Verwendung eines direkten Speicherzugangs (DMA) zwischen der NIC 218 und den Speicherpuffern, die in den Pointern in den Deskriptoren spezifiziert sind, die in den Slots des gemeinsam benutzten Rings enthalten sind, kopiert werden.
  • Das Ringmanagementmodul 340, das als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon, wie oben besprochen, verkörpert sein kann, ist konfiguriert, den Ring im Speicher 212 der Netzwerkvorrichtung 106 zu errichten, die Kerne 230 der CPU 210 den Stufen zuzuweisen, enthaltend eine oder mehrere Eingabestufen, eine oder mehrere Ausgabestufen und verschiedene Arbeitsstufen, und einen gleichzeitigen Zugriff der Stufen auf Einträge im Ring zu verwalten. Dazu enthält das Ringmanagementmodul 340 in der veranschaulichenden Ausführungsform das Ringeinrichtungsmodul 350, das Deskriptormanagementmodul 360 und das Stufenmanagementmodul 370. Das Ringeinrichtungsmodul 350 ist in der veranschaulichenden Ausfiihrungsform konfiguriert, eine Abschnitt eines Speichers zuzuordnen und einen Ringpuffer (hier einfach als ein „Ring“ bezeichnet) im Speicher zu errichten. In der veranschaulichenden Ausführungsform ist der Ring als eine Reihe von Slots organisiert, von welchen jeder einen Eintrag beinhalten kann, der Metadaten, einen Empfangsdeskriptor und einen Sendedeskriptor, wie oben beschrieben, enthält. Die Slots und, durch Verknüpfung, die darin gespeicherten Einträge haben laufende Nummern. Wie hierin ausführlicher beschrieben ist, kann ein Prozess wie eine Stufe durch die Einträge im Ring laufen, indem er seine eigene interne laufende Nummer erhöht und eine Modulus-Funktion bei der internen laufenden Nummer basierend auf der Größe (d.h. Anzahl von Slots) des Rings anwendet, sodass die resultierende laufende Nummer in den Bereich von 0 bis zur Größe des Rings minus Eins fällt. In der veranschaulichenden Ausführungsform ist das Ringeinrichtungsmodul 350 konfiguriert, einen Ring mit einer Größe zu errichten, die eine Potenz von Zwei ist, die die Verwendung einer Maskierung ermöglicht, um von einer laufenden Nummer einer Stufe zu einem Index (d.h. Slot-Nummer) in den Ring umzuwandeln.
  • Das Deskriptormanagementmodul 360, das als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon, wie oben besprochen, verkörpert sein kann, ist konfiguriert, das Generieren von Empfangsdeskriptoren und Sendedeskriptoren zur Verwendung durch die NIC 218 zu verwalten. Dazu kann das Deskriptormanagementmodul 360 ein Deskriptorkopiermodul 362 und ein Aktualisierungsmeldemodul 364 enthalten. Das Deskriptorkopiermodul 362 kann konfiguriert sein, generierte Empfangsdeskriptoren und Sendedeskriptoren zu entsprechenden Warteschlangen für die NIC 218 zu kopieren. Das Aktualisierungsmeldemodul 364 kann konfiguriert sein, der NIC 218 eine Aktualisierung bereitzustellen, dass ein neuer Empfangsdeskriptor oder Sendedeskriptor der entsprechenden Warteschlange der NIC 218 hinzugefügt wurde, wie durch Aktualisieren eines Tail-Registers, das mit der NIC 218 verknüpft ist. Wie hierin beschrieben, kann in anderen Ausführungsformen die NIC 218 konfiguriert sein, direkt auf die nicht kontinuierlich gespeicherten Deskriptoren in dem gemeinsam benutzten Ring zuzugreifen, anstatt sich auf einen separaten Prozess zum Kopieren dieser Deskriptoren zu den Warteschlangen der NIC 218 zu verlassen. Es sollte klar sein, dass jedes von dem Deskriptorkopiermodul 362 und dem Aktualisierungsmeldemodul 364 separat als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon verkörpert sein kann. Zum Beispiel kann das Deskriptorkopiermodul 362 als eine Hardware-Komponente verkörpert sein, während das Aktualisierungsmeldemodul 364 als virtualisierte Hardware-Komponenten oder als eine andere Kombination aus Hardware, Firmware, Software, virtualisierter Hardware, emulierter Architektur und/oder einer Kombination davon verkörpert ist.
  • Das Stufenmanagementmodul 370, das als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon, wie oben besprochen, verkörpert sein kann, ist konfiguriert, den Kernen 230 der CPU 210 und/oder der NIC 218 Stufen zuzuweisen und deren Zugriff auf die Einträge im Ring zu verwalten. Dazu enthält das veranschaulichende Stufenmanagementmodul ein Eingabestufenmanagementmodul 372, ein Arbeitsstufenmanagementmodul 374 und ein Ausgabestufenmanagementmodul 376. Das Eingabestufenmanagementmodul 372 ist in der veranschaulichenden Ausführungsform konfiguriert, einen oder mehrere Kerne 230 oder die NIC 218 einer oder mehreren Eingabestufen zuzuweisen und die zugewiesene Komponente zum Priming (d.h. Füllen) verfügbarer Einträge im Ring mit Empfangsdeskriptoren, Empfangen von Paketen mit dem Kommunikationsschaltkreis 216, wie der NIC 218, Hinzufügen der empfangenen Paketdaten zu den Puffern, die mit den Empfangsdeskriptoren verknüpft sind, für jeden Eintrag im Ring, und Hinzufügen oder Aktualisieren von Metadaten für jeden Eintrag im Ring zu verwenden, die angeben, dass die Daten bereit sind, durch eine oder mehrere Arbeitsstufen verarbeitet zu werden. Das Arbeitsstufenmanagementmodul 374 ist in der veranschaulichenden Ausführungsform konfiguriert, Kerne 230 zu Arbeitsstufen zuzuweisen und/oder erneut zuzuweisen, um Einträge im Ring zu identifizieren, die mit Datenpaketen verknüpft sind, die bereit sind, durch die Arbeitsstufen verarbeitet zu werden, und die zugewiesenen Kerne 230 zur Ausführung von Arbeiterfünktionen, wie Kompression, Dekompression, Verschlüsselung, Entschlüsselung, Firewall-Dienste und/oder andere Funktionen an den Paketdaten zu verwenden und die Metadaten zu aktualisieren, um einen Fertigstellungsstatus jeder Arbeitsstufe anzugeben. Das Ausgabestufenmanagementmodul 376 ist in der veranschaulichenden Ausführungsform konfiguriert, einen oder mehrere Kerne 230 oder die NIC 218 einer oder mehreren Ausgabestufen zuzuweisen und die zugewiesenen Komponenten zur Iteration durch die Slots im Ring zu verwenden, um Einträge im Ring mit Sendedeskriptoren zu primen (d.h. zu füllen), Einträge mit Metadaten zu identifizieren, die angeben, dass die verknüpften Datenpakete zum Senden bereit sind, und die empfangenen verarbeiteten Paketdaten dem Kommunikationsschaltkreis 216 (z.B. der NIC 218) unter Verwendung von DMA bereitzustellen, um diese zu einer anderen Vorrichtung, wie den Zielortendpunktknoten 108 zu senden.
  • Es sollte klar sein, dass jedes von dem Eingabestufenmanagementmodul 372, dem Arbeitsstufenmanagementmodul 374 und dem Ausgabestufenmanagementmodul 376 separat als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon verkörpert sein kann. Zum Beispiel kann das Eingabestufenmanagementmodul 372 als eine Hardware-Komponente verkörpert sein, während das Arbeitsstufenmanagementmodul 374 und das Ausgabestufenmanagementmodul 376 als virtualisierte Hardware-Komponenten oder als eine andere Kombination aus Hardware, Firmware, Software, virtualisierter Hardware, emulierter Architektur und/oder einer Kombination davon verkörpert sind.
  • Unter Bezugnahme nun auf 4 kann die Netzwerkvorrichtung 106 in Verwendung ein Verfahren 400 zur Verarbeitung von Paketen ausführen. Das Verfahren 400 beginnt mit Block 402, in dem die Netzwerkvorrichtung 106 bestimmt, ob Pakete in einem Ring zu verarbeiten sind. In der veranschaulichenden Ausführungsform bestimmt die Netzwerkvorrichtung 106, ob Hardware-Komponenten (d.h. Kerne 230 und/oder die NIC 218) zur Ausführung verschiedener Verarbeitungsstufen (d.h. eine oder mehrere Eingabestufen, eine oder mehrere Ausgabestufen und eine oder mehrere Arbeitsstufen) verfügbar sind, und bestimmt, Pakete in einem Ring zu verarbeiten, falls die Komponenten verfügbar sind. Zusätzlich oder alternativ kann die Netzwerkvorrichtung 106 auf Basis von Konfigurationseinstellungen, einer Anfrage, die von einer anderen Rechenvorrichtung oder von einem Benutzer (z.B. durch eine grafische Benutzerschnittstelle) bereitgestellt wird, oder anderen Faktoren bestimmen, Pakete in einem Ring zu verarbeiten. Unabhängig davon, ob die Netzwerkvorrichtung 106 bestimmt, Datenpakete in einem Ring zu verarbeiten, fährt das Verfahren 400 mit Block 404 fort, in dem die Netzwerkvorrichtung 106 einen Ring (d.h. einen kreisförmigen Puffer) im Speicher 212 errichtet. In der veranschaulichenden Ausführungsform ordnet die Netzwerkvorrichtung 106 einen Puffer mit einer Größe, die ein Potenz von Zwei ist, zu. Dadurch ist eine einfache Maskierung möglich, um von einer internen laufenden Nummer einer Stufe zu einem Index (d.h. Slot-Nummer) in den Ring umzuwandeln. Die Netzwerkvorrichtung 106 errichtet Slots im Puffer. Wie oben beschrieben, hat jeder Slot eine laufende Nummer (d.h. einen Index oder eine Slot-Nummer) und kann einen Eintrag (d.h. einen Empfangsdeskriptor, Metadaten und einen Sendedeskriptor) halten, der mit einem Datenpaket verknüpft ist. In Block 406 identifiziert die Netzwerkvorrichtung 106 durchzuführende Paketverarbeitungsstufen. Da Einträge nicht aus dem Ring entfernt werden, ist keine Neuordnung erforderlich und laufende Nummern geben eine Reihenfolge der Ankunft an. Die Netzwerkvorrichtung 106 kann die Paketverarbeitungsstufen auf Basis einer zugewiesenen Funktion der Netzwerkvorrichtung 106, die in den Konfigurationseinstellungen definiert ist, einer oder mehrerer Anwendungen, die auf die Netzwerkvorrichtung 106 geladen sind, oder auf andere Weise identifizieren. Zum Beispiel können einige Ausführungsformen der Netzwerkvorrichtung 106 konfiguriert sein, Firewall- oder Malware-Detektionsdienste durchzuführen, während andere Ausführungsformen konfiguriert sein können, Datenverschlüsselungs- oder Kompressionsdienste auszuführen. Noch andere Ausführungsformen können konfiguriert sein, eine Kombination dieser Dienste und/oder anderer Dienste durchzuführen. Beim Identifizieren der Stufen identifiziert die veranschaulichende Netzwerkvorrichtung 106 eine oder mehrere Eingabestufen zum Durchführen eines Priming der Slots im Ring mit Empfangsdeskriptoren und Verwalten eines Empfangs von Paketen, eine oder mehrere Arbeitsstufen, und eine oder mehrere Ausgabestufen für ein Priming der Slots im Ring mit Sendedeskriptoren und Verwalten einer Sendung von Paketen, wie in Block 408 angegeben.
  • Sobald die Stufen identifiziert sind, fährt das Verfahren 400 mit Block 410 fort, in dem die Netzwerkvorrichtung 106 den Stufen Hardware-Ressourcen zuordnet werden. Dabei kann die Netzwerkvorrichtung 106 einen oder mehrere Kerne 230 der CPU 210 den Stufen zuordnen, wie in Block 412 angegeben. Die Netzwerkvorrichtung 106 weist den verschiedenen Stufen standardmäßig Kerne 230 zu, falls die NIC 218 nicht eine oder mehrere Komponenten, wie die Ringzugriffslogik 220, enthält, um die Eingabe- und/oder Ausgabestufen zu erleichtern. In solchen Ausführungsformen kann die Netzwerkvorrichtung 106 der NIC 218 alle oder einen Teil der Operationen der Eingabe- und Ausgabestufen zuordnen, wie in Block 414 angegeben. In Bezug auf die Arbeitsstufen kann die Netzwerkvorrichtung 106 mehrere Kerne 230, wie Kerne 234, 236 mehreren Instanzen derselben Arbeitsstufe zuordnen und/oder kann verschiedene Kerne 230 verschiedenen Arbeitsstufen zuordnen. Wie hierin ausführlicher beschrieben ist, wenn mehrere Instanzen derselben Stufe (z.B. Eingabestufe, Arbeitsstufe oder Ausgabestufe) zugeordnet wurden, benutzt die veranschaulichende Netzwerkvorrichtung 106 Verfahren um zu verhindern, dass zwei oder mehr Instanzen derselben Stufe versuchen, denselben Eintrag im Ring zu bearbeiten. In Ausführungsformen mit mehreren verschiedenen Arbeitsstufen können einige Arbeitsstufen von den Ergebnissen anderer Arbeitsstufen abhängig sein. Zum Beispiel kann eine Datenanalysenstufe von einer Fertigstellung einer Datendekompressionsstufe abhängig sein.
  • Unter Bezugnahme nun auf 5, fügt die Netzwerkvorrichtung 106, sobald die Hardware-Ressourcen den Stufen zugeordnet wurden, dem Ring mit der Eingabestufe eingehende Datenpakete hinzu. Dabei werden die eingehenden Pakete Einträgen in Slots des Rings zugewiesen, die mit Empfangsdeskriptoren durch die Eingabestufe(n) geprimt wurden. Wie oben beschrieben, enthält jeder Empfangsdeskriptor einen Pointer zu einem Speicherpuffer im Hauptspeicher 212, wo die Paketdaten gespeichert werden sollen. Beim Speichern der Paketdaten bei diesen Speicherpuffern kopiert die Netzwerkvorrichtung 106 die Paketdaten aus der NIC 218 zum Hauptspeicher 212 unter Verwendung von DMA. Der Paketempfangsprozess ist unter Bezugnahme auf 6 und 7 ausführlicher beschrieben.
  • Ferner verarbeitet die Netzwerkvorrichtung 106 in Block 426 die Datenpakete, die durch die Einträge im Ring dargestellt sind, mit den Arbeitsstufen. Dabei greifen die Arbeitsstufen, die in der veranschaulichenden Ausführungsform als Software-Prozesse oder Threads durch einen oder mehrere der Kerne 230 ausgeführt werden, auf die Paketdaten zu, die durch DMA aus der NIC 218 in die Speicherpuffer im Hauptspeicher 212 kopiert wurden, wie in Block 428 angegeben. In Block 430 markiert die Netzwerkvorrichtung 106 ein vollständig verarbeitetes Paket als zum Senden bereit, wenn die Arbeitsstufen eine Durchführung ihrer jeweiligen Operationen an den Paketdaten beendet haben. Beim Markieren eines Pakets als zum Senden bereit, kann die Netzwerkvorrichtung 106 die Metadaten modifizieren, die mit dem entsprechenden Eintrag im Ring verknüpft sind, um anzugeben, dass die Paketdaten zum Senden bereit sind, wie in Block 432 angegeben.
  • Zusätzlich gibt die Netzwerkvorrichtung 106 in Block 434 die verarbeiteten Pakete mit der einen oder den mehreren Ausgabestufen aus (d.h. stellt die verarbeiteten Pakete der NIC 218 bereit). Wie hierin ausführlicher unter Bezugnahme auf 8 und 9 beschrieben ist, primen die eine oder mehreren Ausgabestufen die Einträge im Ring mit Sendedeskriptoren, die jeweils einen Pointer zum Speicherpuffer enthalten, der die Paketdaten für den entsprechenden Ringeintrag beinhaltet. Als Teil einer Ausgabe der verarbeiteten Pakete kopiert die Netzwerkvorrichtung 106 die Paketdaten aus den Puffern im Hauptspeicher 212 zur NIC 218 unter Verwendung von DMA, wie in Block 436 angegeben. Während die Blöcke 422 durch 434 in der veranschaulichenden Ausführungsform der Reihe nach dargestellt sind, werden die Stufen gleichzeitig ausgeführt, sodass die eine oder mehreren Eingabestufen Einträge im Ring bei einer Rate primen können, während Pakete bei einer anderen Rate empfangen und zu den Speicherpuffern bewegt werden, während die Arbeitsstufen andere Datenpakete verarbeiten, die bereits im Ring sind, und während die eine oder mehreren Ausgabestufen eine Sendung von Paketen aus der Netzwerkvorrichtung 106 bei anderen Raten verwalten. In Block 438 bestimmt die Netzwerkvorrichtung 106, ob mit der Operation der Stufen an den Datenpaketen fortgefahren werden soll. In der veranschaulichenden Ausführungsform kann die Netzwerkvorrichtung 106 konfiguriert sein, mit dem Betrieb der Stufen fortzufahren, falls eine Expressanfrage zum Stoppen bereitgestellt wird, wie eine Anfrage, die von einer anderen Vorrichtung gesendet wird, eine Anfrage von einem Prozess oder einer Anwendung, der bzw. die auf der Netzwerkvorrichtung 106 läuft, oder eine Anfrage, die von einer Person durch eine grafische Benutzerschnittstelle eingegeben wird. Falls die Netzwerkvorrichtung 106 bestimmt fortzufahren, kehrt das Verfahren 400 zu Block 422 zurück, in dem die Netzwerkvorrichtung 106 wieder ein oder mehrere eingehende Pakete zu dem Ring mit der Eingabestufe hinzufügt. Anderenfalls kehrt das Verfahren 400 zu Block 402 zurück um zu bestimme, ob Pakete in einem Ring zu verarbeiten sind.
  • Unter Bezugnahme nun auf 6 kann das Netzwerkvorrichtung 106 in Verwendung ein Verfahren 600 zum Empfangen von Datenpaketen durch eine oder mehrere Eingabestufen durchführen. Das Verfahren 600 entspricht Block 422 von 5. In der veranschaulichenden Ausführungsform führen die Hardware-Ressourcen, die der einen oder den mehreren Eingabestufen (d.h. einem oder mehrerer der Kerne 230 und/oder der NIC 218) zugeordnet sind, das Verfahren 600 durch. Das Verfahren 600 beginnt mit Block 602, in dem die Netzwerkvorrichtung 106 bestimmt, ob Datenpakete zu empfangen sind. In der veranschaulichenden Ausführungsform bestimmt die Netzwerkvorrichtung 106, Netzwerkpakete zu empfangen, falls Hardware-Ressourcen der einen oder den mehreren Eingabestufen zugewiesen wurden und die Netzwerkvorrichtung 106 keine Anfrage von einer anderen Vorrichtung, einem Prozess oder einer Anwendung, die auf der Netzwerkvorrichtung 106 ausgeführt wird, oder einem Benutzer empfangen hat, den Empfang von Paketen zu stoppen. In Antwort auf eine Bestimmung, Datenpakete zu empfangen, fährt das Verfahren 600 mit Block 604 fort, in dem die Netzwerkvorrichtung 106 den Ring mit Empfangsdeskriptoren geprimt. Dabei, wie in Block angegeben 606, generiert die Netzwerkvorrichtung 106 Empfangsdeskriptoren und weist sie Slots im Ring als Einträge zu. Als Teil dieses Prozesses ordnet die Netzwerkvorrichtung 106 einen Speicherpuffer für Paketdaten, wie in Block 608 angegeben, zu und fügt einen Pointer auf den Speicherpuffer zu einem entsprechenden Empfangsdeskriptor hinzu, wie in Block 610 angegeben. Die Netzwerkvorrichtung 106 führt Block 608 und 610 für jeden Empfangsdeskriptor durch, der einem entsprechenden Slot im Ring zugewiesen ist. In Ausführungsformen, in welchen die NIC 218 keine Hardware (z.B. die Ringzugriffslogik 220) enthält, um den Ring direkt zu primen, primt die Netzwerkvorrichtung 106 ferner den Ring unter Verwendung eines oder mehrerer Kerne 230, die der einen oder den mehreren Eingabestufen zugewiesen sind, wie in Block 612 angegeben. In anderen Ausführungsformen, wie in Block 614 angegeben, kann die Netzwerkvorrichtung 106 den Ring unter Verwendung der NIC- 218 Hardware (d.h. der Ringzugriffslogik 220) primen. In Ausführungsformen, in welchen mehrere Eingabestufen den Ring primen sollen, koordiniert die Netzwerkvorrichtung 106 ferner ihren Zugang zu den Ring-Slots, um diese daran zu hindern, denselben Slot zu primen, wie in Block 616 angegeben. In der veranschaulichenden Ausführungsform können die Eingabestufen eine Modulo-Funktion verwenden, in der jede Instanz der Eingabestufe einer Regel folgt, dass sie nur einen Eintrag verarbeitet, wenn die laufende Nummer der Instanz der Eingabestufe, modulo der Anzahl von Instanzen der Eingabestufe, gleich einer Stufeninstanzkennung ist, die dieser Instanz der Eingabestufe zugewiesen ist. Wenn ferner ein bestimmter Ringeintrag geprimt wurde (d.h. der Empfangsdeskriptor wurde diesem Eintrag hinzugefügt), fügt die entsprechende Eingabestufe dem Eintrag auch Metadaten hinzu, die angeben, dass der Eintrag geprimt wurde und dass der Speicherpuffer, der mit dem Empfangsdeskriptor verknüpft ist, für einen Empfang von Paketdaten verfügbar ist.
  • In Block 618 identifiziert die Netzwerkvorrichtung 106 verfügbare Empfangsdeskriptoren, die den Slots im Ring zugewiesen wurden, wie durch Identifizieren von Einträgen im Ring mit Metadaten, die angeben, dass der Speicherpuffer, der mit einem Deskriptor verknüpft ist, für einen Empfang von Paketdaten verfügbar ist. Dieser Prozess kann als Abfrage bezeichnet werden und kann durch einen oder mehrere Kerne 230 der CPU 210 durchgeführt werden, wie in Block 620 angegeben. Alternativ, wie in Block 622 angegeben, kann dieser Abfrageprozess durch die NIC 218 ausgeführt werden, wie in Ausführungsformen angegeben ist, in welchen die NIC 218 die Ringzugriffslogik 220 enthält.
  • In Block 624 bestimmt die Netzwerkvorrichtung 106, ob Deskriptoren im Ring verfügbar sind. Falls nicht, kehrt das Verfahren 600 zu Block 618 zurück, in dem die Netzwerkvorrichtung 106 wieder verfügbare Empfangsdeskriptoren im Ring identifiziert. Andernfalls kann das Verfahren 600 mit Block 626 von 7 fortfahren, in dem die Netzwerkvorrichtung 106 unter Verwendung zumindest eines Kerns 230, der einer Eingabestufe zugewiesen wurde, den einen oder die mehreren verfügbaren Empfangsdeskriptoren aus dem Ring zur NIC-Empfangswarteschlange (d.h. den NIC-Warteschlangendaten 308) kopiert. Während der Ring und die NIC-Empfangswarteschlange beide im Hauptspeicher 212 gespeichert werden können, kann die Struktur des Rings im Vergleich zur NIC-Empfangswarteschlange anders sein. Insbesondere, während die Einträge, die in den Slots des Rings gespeichert sind, Empfangsdeskriptoren, Metadaten und Sendedeskriptoren enthalten können, die miteinander verschachtelt sind, enthält die NIC-Empfangswarteschlange kontinuierliche Empfangsdeskriptoren. In Ausführungsformen, in welchen die NIC 218 nicht ausgestattet ist, auf die Empfangsdeskriptoren im Ring direkt zuzugreifen (d.h. nicht ausgestattet ist, die Nicht-Empfangsdeskriptordaten zu überspringen), kopiert die Netzwerkvorrichtung 106 daher die Empfangsdeskriptoren aus den Ringeinträgen zu der separaten NIC-Empfangswarteschlange, um die sequenzielle, kontinuierliche Anordnung der Empfangsdeskriptoren der NIC 218 für einen Zugriff bereitzustellen.
  • In Block 628 bestimmt die Netzwerkvorrichtung 106, ob die NIC 218 neue Pakete empfangen hat. Dabei kann die NIC 218 diese Bestimmung direkt durchführen, wie in Block 630 angegeben. Alternativ kann ein Kern 230 der CPU 210, die einen Software-Thread durchführt, diese Bestimmung durch Abfrage der NIC 218 durchführen, wie in Block 632 angegeben. In Block 634 bestimmt die Netzwerkvorrichtung 106, ob neue Pakete empfangen wurden. Falls nicht, kehrt das Verfahren 600 zu Block 628 zurück, in dem die Netzwerkvorrichtung 106 erneut bestimmt, ob die NIC 218 neue Pakete empfangen hat. Andernfalls fährt das Verfahren 600 mit Block 636 fort, in dem die Netzwerkvorrichtung 106 unter Verwendung von DMA empfangene Paketdaten aus der NIC 218 zu den Speicherpuffern kopiert, die mit den entsprechenden Empfangsdeskriptoren verknüpft sind. Dadurch sind die Paketdaten nun in den Speicherpuffern verfügbar, auf die durch die Einträge im Ring verwiesen wird, und auf sie kann durch die Arbeitsstufen zur Verarbeitung zugegriffen werden. In einigen Ausführungsformen aktualisiert die Netzwerkvorrichtung 106 die Metadaten für diese Ringeinträge um anzugeben, dass die Einträge zur Verarbeitung durch die Arbeitsstufen bereit sind. In Block 638 bestimmt die Netzwerkvorrichtung 106, ob sie ein statisches Priming verwendet oder nicht. In der veranschaulichenden Ausführungsform bedeutet statisches Priming, dass die Netzwerkvorrichtung 106 die Slots des Rings nur einmal primt und dann dieselben Deskriptoren und Speicherpuffer immer wieder verwendet, anstatt kontinuierlich die Deskriptoren neu zu generieren und sie für anschließende Pakete erneut neuen Speicherpuffern zuzuordnen. Ob ein statisches Priming verwendet wird, kann auf einer Konfigurationseinstellung basieren, die im Speicher gespeichert ist, einer Hardware-Konfiguration oder anderen Kriterien basieren. Unabhängig davon, in Antwort auf eine Bestimmung, ein statisches Priming nicht zu verwenden, kehrt das Verfahren 600 zu Block 604 von 6 zurück, um erneut den Ring mit Empfangsdeskriptoren zu primen. Andernfalls kehrt das Verfahren 600 zu Block 618 zurück, um verfügbare Empfangsdeskriptoren im Ring zu identifizieren.
  • Unter Bezugnahme nun auf 8, kann die Netzwerkvorrichtung 106 in Verwendung ein Verfahren 800 zum Ausgeben (d.h. Senden) von Datenpaketen durch eine oder mehrere Ausgabestufen durchführen. Das Verfahren 800 entspricht Block 434 von 5. In der veranschaulichenden Ausführungsform führen die Hardware-Ressourcen, die der einen oder den mehreren Ausgabestufen (d.h. einem oder mehreren der Kerne 230 und/oder der NIC 218) zugeordnet sind, das Verfahren 800 aus. Das Verfahren 800 beginnt mit Block 802, in dem die Netzwerkvorrichtung 106 bestimmt, ob Datenpakete auszugeben sind. In der veranschaulichenden Ausführungsform bestimmt die Netzwerkvorrichtung 106, Datenpakete auszugeben, falls Hardware-Ressourcen der einen oder den mehreren Ausgabestufen zugeordnet sind, die Netzwerkvorrichtung 106 keine Anfrage von einer anderen Vorrichtung, einem Prozess oder einer Anwendung, die auf der Netzwerkvorrichtung 106 ausgeführt wird, oder einem Benutzer empfangen hat, die Ausgabe von Datenpaketen zu stoppen, und ein Eintrag oder mehrere Einträge im Ring vollständig durch die Arbeitsstufen verarbeitet wurde(n) (wie z.B. durch Metadaten angegeben, die durch die Arbeitsstufen in Verknüpfung mit jedem Ringeintrag gespeichert sind). In Antwort auf eine Bestimmung, Datenpakete auszugeben, fährt das Verfahren 800 mit Block 804 fort, in dem die Netzwerkvorrichtung 106 den Ring mit Sendedeskriptoren primt. Wie in Block 806 angegeben, generiert dabei die Netzwerkvorrichtung 106 Sendedeskriptoren und weist sie Slots im Ring als Einträge zu. Als Teil dieses Prozesses ordnet die Netzwerkvorrichtung 106 einen Speicherpuffer für Paketdaten zu, wie in Block 808 angegeben, und fügt einen Pointer auf den Speicherpuffer einem entsprechenden Sendedeskriptor zu, wie in Block 810 angegeben. Die Netzwerkvorrichtung 106 führt Blöcke 808 und 810 für jeden Sendedeskriptor durch, der einem entsprechenden Slot im Ring zugewiesen wurde. In Ausführungsformen, in welchen die NIC 218 keine Hardware (z.B. die Ringzugriffslogik 220) enthält, um den Ring direkt zu primen, primt die Netzwerkvorrichtung 106 den Ring unter Verwendung eines oder mehrerer Kerne 230, die der einen oder den mehreren Ausgabestufen zugewiesen sind, wie in Block 812 angegeben. In anderen Ausführungsformen, wie in Block 814 angegeben, kann die Netzwerkvorrichtung 106 den Ring unter Verwendung der NIC- 218 Hardware (d.h. der Ringzugriffslogik 220) primen. In Ausführungsformen, in welchen mehrere Ausgabestufen den Ring primen sollen, koordiniert ferner die Netzwerkvorrichtung 106 ihren Zugriff auf die Ring-Slots, um diese an dem Versuch zu hindern, denselben Slot zu primen, wie in Block 816 angegeben. In der veranschaulichenden Ausführungsform können die Ausgabestufen eine Modulo-Funktion verwenden, in der jede Instanz der Ausgabestufe einer Regel folgt, dass sie einen Eintrag nur verarbeitet, wenn die laufende Nummer der Instanz der Ausgabestufe, modulo der Anzahl von Instanzen der Ausgabestufe, gleich einer Stufeninstanzkennung ist, die dieser Instanz der Ausgabestufe zugewiesen wurde. Wenn ferner ein bestimmter Ringeintrag geprimt wurde (d.h. der Sendedeskriptor wurde diesem Eintrag hinzugefügt), fügt die entsprechende Ausgabestufe dem Eintrag auch Metadaten hinzu, was angibt, dass der Eintrag geprimt wurde und die verknüpften Paketdaten verfügbar sind, der NIC 218 bereitgestellt zu werden.
  • In Block 818 identifiziert die Netzwerkvorrichtung 106 verfügbare Sendedeskriptoren, die den Slots im Ring zugewiesen wurden, wie durch Identifizieren von Einträgen im Ring mit Metadaten, die angeben, dass die Paketdaten verfügbar sind, um der NIC 218 zum Senden bereitgestellt zu werden. Dieser Prozess kann als Abfragen bezeichnet werden und kann durch einen oder mehrere Kerne 230 der CPU 210 ausgeführt werden, wie in Block 820 angegeben. Alternativ, wie in Block 822 angegeben, kann dieser Abfrageprozess durch die NIC 218 ausgeführt werden, wie in Ausführungsformen, in welchen die NIC 218 die Ringzugriffslogik 220 enthält.
  • In Block 824 bestimmt die Netzwerkvorrichtung 106, ob Sendedeskriptoren im Ring verfügbar sind. Falls nicht, kehrt das Verfahren 800 zu Block 818 zurück, in dem die Netzwerkvorrichtung 106 erneut verfügbare Sendedeskriptoren im Ring identifiziert. Andernfalls kann das Verfahren 800 mit Block 826 von 9 fortfahren, in dem die Netzwerkvorrichtung 106 unter Verwendung zumindest eines Kerns 230, der einer Eingabestufe zugewiesen wurde, den einen oder die mehreren verfügbaren Sendedeskriptoren aus dem Ring zur NIC-Sendewarteschlange (d.h. den NIC-Warteschlangendaten 308) kopiert. Ähnlich wie bei der NIC-Empfangswarteschlange, in der Empfangsdeskriptoren kontinuierlich der Reihe nach angeordnet sind, enthält die NIC-Sendewarteschlange Sendedeskriptoren, die kontinuierlich der Reihe nach angeordnet sind. Ähnlich dem Block 626, der durch Ausführungsformen durchgeführt wird, in welchen die NIC 218 nicht ausgestattet ist, auf die Empfangsdeskriptoren direkt im Ring zuzugreifen, wird Block 826 durch jene Ausführungsformen durchgeführt, in welchen die NIC 218 nicht ausgestattet ist, auf die Sendedeskriptoren direkt im Ring zuzugreifen (d.h. Ausführungsformen, in welchen die NIC 218 die Ringzugriffslogik 220 nicht enthält).
  • In Block 828 kopiert die Netzwerkvorrichtung 106, unter Verwendung von DMA, die Paketdaten aus den Speicherpuffern, die mit den Sendedeskriptoren verknüpft sind, die verfügbar sind (d.h. jene Einträge mit Metadaten, die angeben, dass die Arbeitsstufen ihre Verarbeitung der Paketdaten beendet haben) zur NIC 218 zum Senden zu einer anderen Vorrichtung (d.h. den Zielortendpunktknoten 108). In Block 830 kann die Netzwerkvorrichtung 106 die NIC 218 nach dem Sendestatus abfragen um zu bestimmen, wann die Sendung beendet wurde.
  • In Block 832 bestimmt die Netzwerkvorrichtung 106, ob sie ein statisches Priming verwendet. Diese Bestimmung ist der Bestimmung ähnlich, die in Block 632 von 7 vorgenommen wurde und basiert auf ähnlichen Kriterien (d.h. einer Konfigurationseinstellung, die im Speicher gespeichert ist, einer Hardware-Konfiguration usw.). In Antwort auf eine Bestimmung, dass die Netzwerkvorrichtung 106 kein statisches Priming verwendet, kehrt das Verfahren 800 zu Block 804 von 8 zurück, in dem die Netzwerkvorrichtung 106 den Ring erneut mit Sendedeskriptoren primt. Andernfalls kehrt das Verfahren 800 zu Block 818 von 8 zurück, in dem die Netzwerkvorrichtung 106 erneut verfügbare Sendedeskriptoren für Paketdaten identifiziert, die zum Senden bereit sind.
  • Unter Bezugnahme nun auf 10 ist ein Prozess 1000 entsprechend den Ausführungsformen des Verfahrens 600 dargestellt, in welchen die NIC 218 die Ringzugriffslogik 220 nicht enthält. Wie dargestellt, sind ein oder mehrere Priming-Threads 1010, die mit einer oder mehreren Eingabestufen verknüpft sind, durch einen oder mehrere Kerne 230 der CPU 210 ausgeführt. Diese Priming-Threads 1010 füllen unabhängig Slot-Einträge eines Rings 1020 mit Empfangsdeskriptoren und Pointern auf Puffer im Hauptspeicher 212, die zum Speichern von Paketdaten zugeordnet wurden. Ein Abfrage-Thread 1030, der mit einer Eingabestufe verknüpft ist, wird auch durch einen der Kerne 230 der CPU 210 ausgeführt. Der Abfrage-Thread 1030 fragt den Ring 1020 ab, um verfügbare (d.h. freie) geprimte Empfangsdeskriptoren im Ring 1020 zu identifizieren. Wie unter Bezugnahme auf das Verfahren 600 beschrieben wurde, kann ein Empfangsdeskriptor basierend auf Metadaten, die im Ringeintrag durch eine der Eingabestufen (d.h. einen der Priming-Threads) gespeichert wurden, als verfügbar (d.h. frei oder geprimt) identifiziert werden. In anderen Ausführungsformen kann ein Empfangsdeskriptor auf Basis anderer Kriterien als verfügbar identifiziert werden. Der Abfrage-Thread 1030 fügt die verfügbaren Empfangsdeskriptoren der Empfangswarteschlange der NIC 218 hinzu (d.h. kopiert die Empfangsdeskriptoren aus dem Ring zur NIC-Empfangswarteschlange). Ferner fragt der Abfrage-Thread 1030 Pakete ab, die durch die NIC 218 empfangen wurde. In Antwort darauf, dass die NIC 218 ein Paket empfängt, kopiert die NIC 218 die Daten des Pakets direkt zu einem entsprechenden Speicherpuffer, auf den der verknüpfte Empfangsdeskriptor verweist, der, wie oben beschrieben, als Teil eines Eintrags in einem Slot des Rings 1020 gespeichert ist. Ferner können ein oder mehrere Arbeits-Threads 1040 (d.h. Arbeitsstufen) nach Paketdaten abfragen und diese identifizieren, die zur Verarbeitung bereit sind, und auf die Paketdaten vor Ort am Ring 1020 zugreifen (d.h. durch Zugriff auf die Paketdaten, die im Speicherpuffer gespeichert sind, auf den durch den Eintrag im Ring 1020 verwiesen wird).
  • Unter Bezugnahme nun auf 11 ist ein Prozess 1100 entsprechend den Ausführungsformen des Verfahrens 600 dargestellt, in welchen die NIC 218 die Ringzugriffslogik 220 nicht enthält. In dem Prozess 1100 füllen ein oder mehrere Priming-Threads 1110 unabhängig Slot-Einträge eines Rings 1120 mit Empfangsdeskriptoren und Puffer-Pointern, wie oben unter Bezugnahme auf 10 beschrieben. In dem Prozess 1100 können die Priming-Threads jedoch durch einen oder mehrere Kerne 230 der CPU 210 oder durch die NIC 218 selbst ausgeführt werden, abhängig davon, ob diese Priming-Funktion in der Ringzugriffslogik 220 der NIC 218 implementiert wird. Falls nicht, wird das Priming durch einen oder mehrere der Kerne 230 der CPU 210 durchgeführt. Die NIC 218 führt unter Verwendung der Ringzugriffslogik 220 einen Abfrageprozess 1130 zum Abfragen des Rings durch, um verfügbare geprimte Deskriptoren im Ring 1120 zu identifizieren, wie durch Lesen der Metadaten der Einträge, um Einträge mit Metadaten zu identifizieren, die angeben, dass der Empfangsdeskriptor geprimt wurde und/oder dass der Speicherpuffer für einen Empfang von Paketdaten verfügbar ist. Ferner, wenn die NIC 218 ein oder mehrere neue Pakete empfängt, kopiert die NIC 218 die Paketdaten zu den Speicherpuffern, die durch die Empfangsdeskriptoren in Ringeinträgen identifiziert sind. Wie oben beschrieben fragen ferner ein oder mehrere Arbeits-Threads (d.h. Arbeitsstufen) 1140 Paketdaten ab und identifizieren jene, die zur Verarbeitung bereit sind, und greifen auf die Paketdaten vor Ort am Ring 1120 zu (d.h. durch Zugriff auf die Paketdaten, die im Speicherpuffer gespeichert sind, auf den durch den Eintrag im Ring 1120 verwiesen wird). Angesichts dessen, dass die NIC 218 eine Eingabestufenfunktionalität aus den Kernen 230 der CPU 210 abgeladen hat, kann der Prozess 1100 effizienter sein als der Prozess 1000 und kann mehr der Kerne 230 zur Verwendung durch die Arbeitsstufen freistellen.
  • Unter Bezugnahme nun auf 12 ist ein Prozess 1200 dargestellt, der Ausführungsformen des Verfahrens 800 entspricht, in welchen die NIC 218 die Ringzugriffslogik 220 nicht enthält. Wie dargestellt, markieren eine oder mehrere Arbeitsstufen (d.h. Arbeits-Threads) 1210 Pakete als zum Senden bereit, wie durch Aktualisieren der Metadaten der Ringeinträge, die mit jenen Paketen verknüpft sind. Ferner werden ein oder mehrere Priming-Threads 1220, wie dargestellt, die mit einer oder mehreren Ausgabestufen verknüpft sind, durch einen oder mehrere Kerne 230 der CPU 210 ausgeführt. Die Priming-Threads 1220 füllen unabhängig Slot-Einträge eines Rings 1230 mit Sendedeskriptoren und Pointern zu den Puffern im Hauptspeicher, die die verarbeiteten Paketdaten beinhalten, die zum Senden bereit sind. Ein Abfrage-Thread 1240, der mit einer Ausgabestufe verknüpft ist, wird auch durch einen der Kerne 230 der CPU 210 ausgeführt. Der Abfrage-Thread 1240 fragt den Ring ab, um verfügbare (d.h. freie) geprimte Sendedeskriptoren im Ring 1230 zu identifizieren. Wie unter Bezugnahme auf das Verfahren 800 beschrieben ist, kann ein Sendedeskriptor auf Basis von Metadaten, die im Ringeintrag durch eine der Ausgabestufen (d.h. einen der Priming-Threads) gespeichert wurden, als verfügbar (d.h. frei oder geprimt) identifiziert werden. In anderen Ausführungsformen kann ein Sendedeskriptor auf Basis andere Kriterien als verfügbar bestimmt werden. Der Abfrage-Thread 1240 fügt die verfügbaren Sendedeskriptoren der Sendewarteschlange der NIC 218 hinzu (d.h. kopiert die Sendedeskriptoren aus dem Ring 1230 zur NIC-Sendewarteschlange). Ferner kopiert die Netzwerkvorrichtung 106 die Paketdaten aus den Speicherpuffern, auf die im Ring 1230 verwiesen wurde, zur NIC 218 unter Verwendung von DMA. Die NIC 218 sendet die Paketdaten, die zu ihr kopiert wurden, mittels DMA und der Abfrage-Thread 1240 fragt die NIC 218 nach dem Sendestatus ab.
  • Unter Bezugnahme nun auf 13 ist ein Prozess 1300 dargestellt, der den Ausführungsformen des Verfahrens 800 entspricht, in welchen die NIC 218 die Ringzugriffslogik 220 nicht enthält. In dem Prozess 1300 markieren eine oder mehrere Arbeitsstufen (d.h. Arbeits-Threads) 1310 Pakete als zum Senden bereit, wie oben unter Bezugnahme auf 12 beschrieben. Ferner füllen ein oder mehrere Priming-Threads 1320 unabhängig Slot-Einträge eines Rings 1330 mit Sendedeskriptoren und Pointern auf die Speicherpuffer, wo die verarbeiteten Paketdaten gespeichert sind. Im Prozess 1300 können die Priming-Threads 1320 durch einen oder mehrere Kerne 230 der CPU 210 oder durch die NIC 218 selbst ausgeführt werden, abhängig davon, ob diese Priming-Funktion in der Ringzugriffslogik 220 der NIC 218 implementiert ist. Falls nicht, wird das Priming durch einen oder mehrere der Kerne 230 der CPU 210 ausgeführt. Die NIC 218 fragt unter Verwendung der Ringzugriffslogik 220 den Ring 1330 ab, um verfügbare geprimte Deskriptoren im Ring 1330 zu identifizieren, wie durch Lesen der Metadaten der Einträge, um Einträge mit Metadaten zu identifizieren, die angeben, dass der Sendedeskriptor geprimt wurde. Ferner kopiert die NIC 218 die Paketdaten aus den Speicherpuffern, auf die durch die geprimten Sendedeskriptoren im Ring 1330 verwiesen wird, zur NIC 218 unter Verwendung von DMA und sendet die Paketdaten zu einer anderen Vorrichtung (z.B. dem Zielortendpunktknoten 108). Zusätzlich generiert die NIC 218 eine Statusaktualisierung, die angibt, dass das eine oder die mehreren Pakete gesendet wurden. Anschließend kann der Speicherpuffer, der die Paketdaten gehalten hat, zum Speichern anderer Paketdaten verwendet werden. Durch Abladen von Ausgabestufenfunktionen (d.h. Priming und/oder Abfragen) auf die NIC 218 kann der Prozess 1300 effizienter sein als der Prozess 1200 und es können mehr Kerne 230 der CPU 210 zur Verwendung durch die Arbeitsstufen verfügbar sein.
  • BEISPIELE
  • In der Folge sind veranschaulichende Beispiele der hierin offenbarten Technologien bereitgestellt. Eine Ausführungsform der Technologien kann eines oder mehrere und jede Kombination der in der Folge beschriebenen Beispiele enthalten.
  • Beispiel 1 enthält eine Netzwerkvorrichtung zur Verarbeitung von Paketen, die Netzwerkvorrichtung umfassend einen oder mehrere Prozessoren, die eine Vielzahl von Kernen enthalten; eine Netzwerkschnittstellensteuerung (NIC), die an den einen oder die mehreren Prozessoren gekoppelt ist; und eine oder mehrere Speichervorrichtungen, auf welchen eine Vielzahl von Anweisungen gespeichert ist, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, die Netzwerkvorrichtung veranlassen, einen Ring in einem Speicher der einen oder mehreren Speichervorrichtungen zu errichten, wobei der Ring als ein kreisförmiger Puffer definiert ist und eine Vielzahl von Slots zum Speichern von Einträgen enthält, die für Pakete repräsentativ sind; Empfangsdeskriptoren zu generieren und den Slots im Ring zuzuweisen, wobei jeder Empfangsdeskriptor einen Pointer auf einen entsprechenden Speicherpuffer zum Speichern von Paketdaten enthält; zu bestimmen, ob die NIC ein oder mehrere Pakete empfangen hat; und mit direktem Speicherzugriff (DMA) und in Antwort auf eine Bestimmung, dass die NIC ein oder mehrere Pakete empfangen hat, Paketdaten des einen oder der mehreren empfangenen Pakete aus der NIC zu den Speicherpuffern zu kopieren, die mit den Empfangsdeskriptoren verknüpft sind, die den Slots im Ring zugewiesen sind.
  • Beispiel 2 enthält den Gegenstand von Beispiel 1 und wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einem oder mehreren der Kerne umfasst.
  • Beispiel 3 enthält den Gegenstand eines der Beispiele 1 und 2 und wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 4 enthält den Gegenstand eines der Beispiele 1-3 und wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren unter Verwendung mehrerer Instanzen einer Eingabestufe umfasst, die als separate Threads ausgeführt werden.
  • Beispiel 5 enthält den Gegenstand eines der Beispiele 1-4 und wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, einen Zugriff der mehreren Instanzen der Eingabestufe auf die Slots mit einer Modulo-Funktion zu koordinieren.
  • Beispiel 6 enthält den Gegenstand eines der Beispiele 1-5 und wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, verfügbare Empfangsdeskriptoren im Ring zu identifizieren, bevor die Paketdaten aus der NIC kopiert werden, und wobei ein Kopieren der Paketdaten aus der NIC ein Kopieren der Paketdaten aus der NIC zu den Speicherpuffern umfasst, die mit den identifizierten verfügbaren Empfangsdeskriptoren verknüpft sind.
  • Beispiel 7 enthält den Gegenstand eines der Beispiele 1-6 und wobei das Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einem oder mehreren der Kerne umfasst.
  • Beispiel 8 enthält den Gegenstand eines der Beispiele 1-7 und wobei das Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 9 enthält den Gegenstand eines der Beispiele 1-8 und wobei das Identifizieren der verfügbaren Empfangsdeskriptoren ein Iterieren der Reihe nach durch jeden Slot im Ring und Analysieren von Metadaten, die in Verknüpfung mit jedem Slot gespeichert sind, auf eine Angabe, dass ein oder mehrere der Empfangsdeskriptoren verfügbar sind, umfasst.
  • Beispiel 10 enthält den Gegenstand eines der Beispiele 1-9 und wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, die Empfangsdeskriptoren aus dem Ring zu einer NIC-Empfangswarteschlange vor der Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat, zu kopieren.
  • Beispiel 11 enthält den Gegenstand eines der Beispiele 1-10 und wobei eine Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat, ein Abfragen der NIC mit einem oder mehreren der Kerne umfasst.
  • Beispiel 12 enthält den Gegenstand eines der Beispiele 1-11 und wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, Sendedeskriptoren zu generieren und den Slots im Ring zuzuweisen, wobei jeder Sendedeskriptor einen Pointer auf einen entsprechenden Speicherpuffer enthält, wo zu sendende Paketdaten gespeichert sind; Sendedeskriptoren für Slots des Rings zu identifizieren, die mit Paketdaten verknüpft sind, die als zum Senden bereit markiert sind; mit DMA Paketdaten aus den Speicherpuffern, die mit den identifizierten Sendedeskriptoren verknüpft sind, zur NIC zum Senden zu kopieren.
  • Beispiel 13 enthält den Gegenstand eines der Beispiele 1-12 und wobei ein Generieren und Zuweisen der Sendedeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Sendedeskriptoren mit einem oder mehreren der Kerne umfasst.
  • Beispiel 14 enthält den Gegenstand eines der Beispiele 1-13 und wobei ein Generieren und Zuweisen der Sendedeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Sendedeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 15 enthält den Gegenstand eines der Beispiele 1-14 und wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, die Paketdaten mit einer oder mehreren Arbeitsstufen zu verarbeiten; und Metadaten, die mit den Slots verknüpft sind, die mit den Paketdaten verknüpft sind, zu modifizieren um anzugeben, dass die Paketdaten zum Senden bereit sind, bevor die Paketdaten zur NIC zum Senden kopiert werden.
  • Beispiel 16 enthält den Gegenstand eines der Beispiele 1-15 und wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, die identifizierten Sendedeskriptoren zu einer NIC-Sendewarteschlange zu kopieren, bevor die Paketdaten aus den Speicherpuffern zur NIC kopiert werden.
  • Beispiel 17 enthält eine Verfahren zur Verarbeitung Pakete, umfassend ein Errichten, durch eine Netzwerkvorrichtung, eines Rings in einem Speicher der Netzwerkvorrichtung, wobei der Ring als ein kreisförmiger Puffer definiert ist und eine Vielzahl von Slots zum Speichern von Einträgen enthält, die für Pakete repräsentativ sind; Generieren und Zuweisen, durch die Netzwerkvorrichtung, von Empfangsdeskriptoren zu den Slots im Ring, wobei jeder Empfangsdeskriptor einen Pointer auf einen entsprechenden Speicherpuffer zum Speichern von Paketdaten enthält; Bestimmen, durch die Netzwerkvorrichtung, ob eine Netzwerkschnittstellensteuerung (NIC) der Netzwerkvorrichtung ein oder mehrere Pakete empfangen hat; und Kopieren, mit direktem Speicherzugriff (DMA) und in Antwort auf eine Bestimmung, dass die NIC ein oder mehrere Pakete empfangen hat, von Paketdaten des einen oder der mehreren empfangenen Pakete aus der NIC zu den Speicherpuffern, die mit den Empfangsdeskriptoren verknüpft sind, die den Slots im Ring zugewiesen sind.
  • Beispiel 18 enthält den Gegenstand von Beispiel 17 und wobei das Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  • Beispiel 19 enthält den Gegenstand eines der Beispiele 17 und 18 und wobei das Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 20 enthält den Gegenstand eines der Beispiele 17-19 und wobei das Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren unter Verwendung mehrerer Instanzen einer Eingabestufe umfasst, die als separate Threads ausgeführt werden.
  • Beispiel 21 enthält den Gegenstand eines der Beispiele 17-20, und ferner enthalten ein Koordinieren, durch die Netzwerkvorrichtung, eine Zugriffs der mehreren Instanzen der Eingabestufe auf die Slots mit einer Modulo-Funktion.
  • Beispiel 22 enthält den Gegenstand eines der Beispiele 17-21, und ferner enthaltend ein Identifizieren, durch die Netzwerkvorrichtung, verfügbarer Empfangsdeskriptoren im Ring, bevor die Paketdaten aus der NIC kopiert werden und wobei ein Kopieren der Paketdaten aus der NIC ein Kopieren der Paketdaten aus der NIC zu den Speicherpuffern umfasst, die mit den identifizierten verfügbaren Empfangsdeskriptoren verknüpft sind.
  • Beispiel 23 enthält den Gegenstand eines der Beispiele 17-22 und wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  • Beispiel 24 enthält den Gegenstand eines der Beispiele 17-23 und wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 25 enthält den Gegenstand eines der Beispiele 17-24 und wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren ein Iterieren der Reihe nach durch jeden Slot im Ring; und ein Analysieren von Metadaten, die in Verknüpfung mit jedem Slot gespeichert sind, auf eine Angabe, dass ein oder mehrere der Empfangsdeskriptoren verfügbar sind, umfasst.
  • Beispiel 26 enthält den Gegenstand eines der Beispiele 17-25, und ferner enthaltend ein Kopieren, durch die Netzwerkvorrichtung, der Empfangsdeskriptoren aus dem Ring zu einer NIC-Empfangswarteschlange vor der Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat.
  • Beispiel 27 enthält den Gegenstand eines der Beispiele 17-26 und wobei ein Bestimmen, ob die NIC ein oder mehrere Pakete empfangen hat, ein Abfragen der NIC mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  • Beispiel 28 enthält den Gegenstand eines der Beispiele 17-27, und ferner enthaltend ein Generieren und Zuweisen, durch die Netzwerkvorrichtung, von Sendedeskriptoren zu den Slots im Ring, wobei jeder Sendedeskriptor einen Pointer auf einen entsprechenden Speicherpuffer enthält, wo zu sendende Paketdaten gespeichert sind; ein Identifizieren, durch die Netzwerkvorrichtung, von Sendedeskriptoren für Slots des Rings, die mit Paketdaten verknüpft sind, die als zum Senden bereit markiert sind; und ein Kopieren, mit DMA, von Paketdaten aus den Speicherpuffern, die mit den identifizierte n Sendedeskriptoren verknüpft sind, zur NIC zum Senden.
  • Beispiel 29 enthält den Gegenstand eines der Beispiele 17-28 und wobei das Generieren und Zuweisen der Sendedeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Sendedeskriptoren mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  • Beispiel 30 enthält den Gegenstand eines der Beispiele 17-29 und wobei das Generieren und Zuweisen der Sendedeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Sendedeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 31 enthält den Gegenstand eines der Beispiele 17-30, und ferner enthaltend eine Verarbeitung, durch die Netzwerkvorrichtung, der Paketdaten mit einer oder mehreren Arbeitsstufen; und ein Modifizieren, durch die Netzwerkvorrichtung, von Metadaten, die mit den Slots verknüpft sind, die mit den Paketdaten verknüpft sind, um anzugeben, dass die Paketdaten zum Senden bereit sind, bevor die Paketdaten zur NIC zum Senden kopiert werden.
  • Beispiel 32 enthält den Gegenstand eines der Beispiele 17-31, und ferner enthaltend ein Kopieren, durch die Netzwerkvorrichtung, der identifizierten Sendedeskriptoren zu einer NIC-Sendewarteschlange, bevor die Paketdaten aus den Speicherpuffern zur NIC kopiert werden.
  • Beispiel 33 enthält eine Netzwerkvorrichtung, umfassend einen oder mehrere Prozessoren; und einen Speicher, auf dem eine Vielzahl von Anweisungen gespeichert ist, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, die Netzwerkvorrichtung veranlassen, das Verfahren eines der Beispiele 17-32 durchzuführen.
  • Beispiel 34 enthält ein oder mehrere maschinenlesbare Speichermedien, die eine Vielzahl von darauf gespeicherten Anweisungen umfassen, die infolge ihrer Ausführung dazu führen, dass eine Netzwerkvorrichtung das Verfahren eines der Beispiele 17-32 ausführt.
  • Beispiel 35 enthält eine Netzwerkvorrichtung zur Verarbeitung von Paketen, die Netzwerkvorrichtung umfassend einen oder mehrere Prozessoren, die eine Vielzahl von Kernen enthalten; eine oder mehrere Speichervorrichtungen, die an den einen oder die mehreren Prozessoren gekoppelt sind; eine Netzwerkschnittstellensteuerung (NIC), die an den einen oder die mehreren Prozessoren gekoppelt ist; einen Ringmanagementschaltkreis zum (i) Errichten eines Rings in einem Speicher der einen oder mehreren Speichervorrichtungen, wobei der Ring als ein kreisförmiger Puffer definiert ist und eine Vielzahl von Slots zum Speichern von Einträgen enthält, die für Pakete repräsentativ sind, und (ii) Generieren und Zuweisen von Empfangsdeskriptoren zu den Slots im Ring, wobei jeder Empfangsdeskriptor einen Pointer auf einen entsprechenden Speicherpuffer zum Speichern von Paketdaten enthält; einen Netzwerkkommunikationsschaltkreis zum Bestimmen, ob die NIC ein oder mehrere Pakete empfangen hat; und einen direkten Speicherzugriffs- (DMA) Schaltkreis zum Kopieren, mit DMA und in Antwort auf eine Bestimmung, dass die NIC ein oder mehrere Pakete empfangen hat, von Paketdaten des einen oder der mehreren empfangenen Pakete aus der NIC zu den Speicherpuffern, die mit den Empfangsdeskriptoren verknüpft sind, die den Slots im Ring zugewiesen sind.
  • Beispiel 36 enthält den Gegenstand von Beispiel 35 und wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einem oder mehreren der Kerne umfasst.
  • Beispiel 37 enthält den Gegenstand eines der Beispiele 35 und 36 und wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 38 enthält den Gegenstand eines der Beispiele 35-37 und wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren unter Verwendung mehrerer Instanzen einer Eingabestufe umfasst, die als separate Threads ausgeführt werden.
  • Beispiel 39 enthält den Gegenstand eines der Beispiele 35-38, und wobei der Ringmanagementschaltkreis ferner einen Zugriff der mehreren Instanzen der Eingabestufe auf die Slots mit einer Modulo-Funktion koordinieren soll.
  • Beispiel 40 enthält den Gegenstand eines der Beispiele 35-39, und wobei der Ringmanagementschaltkreis ferner verfügbare Empfangsdeskriptoren im Ring identifizieren soll, bevor die Paketdaten aus der NIC kopiert werden, und wobei ein Kopieren der Paketdaten aus der NIC ein Kopieren der Paketdaten aus der NIC zu den Speicherpuffern umfasst, die mit den identifizierten verfügbaren Empfangsdeskriptoren verknüpft sind.
  • Beispiel 41 enthält den Gegenstand eines der Beispiele 35-40 und wobei das Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einem oder mehreren der Kerne umfasst.
  • Beispiel 42 enthält den Gegenstand eines der Beispiele 35-41 und wobei das Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 43 enthält den Gegenstand eines der Beispiele 35-42 und wobei das Identifizieren der verfügbaren Empfangsdeskriptoren ein Iterieren der Reihe nach durch jeden Slot im Ring und ein Analysieren von Metadaten, die in Verknüpfung mit jedem Slot gespeichert sind, auf eine Angabe, dass ein oder mehrere der Empfangsdeskriptoren verfügbar sind, umfasst.
  • Beispiel 44 enthält den Gegenstand eines der Beispiele 35-43, und wobei der Ringmanagementschaltkreis ferner die Empfangsdeskriptoren aus dem Ring zu einer NIC-Empfangswarteschlange vor der Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat, kopieren soll.
  • Beispiel 45 enthält den Gegenstand eines der Beispiele 35-44 und wobei eine Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat, ein Abfragen der NIC mit einem oder mehreren der Kerne umfasst.
  • Beispiel 46 enthält den Gegenstand eines der Beispiele 35-45, und wobei der Ringmanagementschaltkreis ferner Sendedeskriptoren generieren und den Slots im Ring zuweisen soll, wobei jeder Sendedeskriptor einen Pointer auf einen entsprechenden Speicherpuffer enthält, wo zu sendende Paketdaten gespeichert sind, und Sendedeskriptoren für Slots des Rings identifizieren soll, die mit Paketdaten verknüpft sind, die als zum Senden bereit markiert sind; und der DMA-Schaltkreis ferner mit DMA Paketdaten aus den Speicherpuffern, die mit den identifizierten Sendedeskriptoren verknüpft sind, zur NIC zum Senden kopieren soll.
  • Beispiel 47 enthält den Gegenstand eines der Beispiele 35-46 und wobei ein Generieren und Zuweisen der Sendedeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Sendedeskriptoren mit einem oder mehreren der Kerne umfasst.
  • Beispiel 48 enthält den Gegenstand eines der Beispiele 35-47 und wobei ein Generieren und Zuweisen der Sendedeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Sendedeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 49 enthält den Gegenstand eines der Beispiele 35-48, und wobei der Ringmanagementschaltkreis ferner die Paketdaten mit einer oder mehreren Arbeitsstufen verarbeiten soll; und Metadaten, die mit den Slots verknüpft sind, die mit den Paketdaten verknüpft sind, modifizieren soll um anzugeben, dass die Paketdaten zum Senden bereit sind, bevor die Paketdaten zur NIC zum Senden kopiert werden.
  • Beispiel 50 enthält den Gegenstand eines der Beispiele 35-497, und wobei der Ringmanagementschaltkreis ferner die identifizierten Sendedeskriptoren zu einer NIC-Sendewarteschlange kopieren soll, bevor die Paketdaten aus den Speicherpuffern zur NIC kopiert werden.
  • Beispiel 51 enthält eine Netzwerkvorrichtung zur Verarbeitung von Paketen, die Netzwerkvorrichtung umfassend Mittel zum Errichten eines Rings in einem Speicher der Netzwerkvorrichtung, wobei der Ring als ein kreisförmiger Puffer definiert ist und eine Vielzahl von Slots zum Speichern von Einträgen enthält, die für Pakete repräsentativ sind; Mittel zum Generieren und Zuweisen von Empfangsdeskriptoren zu den Slots im Ring, wobei jeder Empfangsdeskriptor einen Pointer auf einen entsprechenden Speicherpuffer zum Speichern von Paketdaten enthält; einen Netzwerkkommunikationsschaltkreis zum Bestimmen, ob eine Netzwerkschnittstellensteuerung (NIC) der Netzwerkvorrichtung ein oder mehrere Pakete empfangen hat; und einen direkten Speicherzugriffs- (DMA) Schaltkreis zum Kopieren, mit DMA und in Antwort auf eine Bestimmung, dass die NIC ein oder mehrere Pakete empfangen hat, von Paketdaten des einen oder der mehreren empfangenen Pakete aus der NIC zu den Speicherpuffern, die mit den Empfangsdeskriptoren verknüpft sind, die den Slots im Ring zugewiesen sind.
  • Beispiel 52 enthält den Gegenstand von Beispiel 51 und wobei das Mittel zum Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Mittel zum Generieren und Zuweisen der Empfangsdeskriptoren mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  • Beispiel 53 enthält den Gegenstand eines der Beispiele 51 und 52 und wobei das Mittel zum Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Mittel zum Generieren und Zuweisen der Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 54 enthält den Gegenstand eines der Beispiele 51-53 und wobei das Mittel zum Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Mittel zum Generieren und Zuweisen der Empfangsdeskriptoren unter Verwendung mehrerer Instanzen einer Eingabestufe, die als separate Threads ausgeführt werden, umfasst.
  • Beispiel 55 enthält den Gegenstand eines der Beispiele 51-54, und ferner enthaltend Mittel zum Koordinieren eines Zugriffs der mehreren Instanzen der Eingabestufe auf die Slots mit einer Modulo-Funktion umfasst.
  • Beispiel 56 enthält den Gegenstand eines der Beispiele 51-55, und ferner enthaltend Mittel zum Identifizieren verfügbarer Empfangsdeskriptoren im Ring, bevor die Paketdaten aus der NIC kopiert werden, und wobei das Mittel zum Kopieren der Paketdaten aus der NIC Mittel zum Kopieren der Paketdaten aus der NIC zu den Speicherpuffern, die mit den identifizierten verfügbaren Empfangsdeskriptoren verknüpft sind, umfasst.
  • Beispiel 57 enthält den Gegenstand eines der Beispiele 51-56 und wobei das Mittel zum Identifizieren der verfügbaren Empfangsdeskriptoren Mittel zum Identifizieren der verfügbaren Empfangsdeskriptoren mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  • Beispiel 58 enthält den Gegenstand eines der Beispiele 51-57 und wobei das Mittel zum Identifizieren der verfügbaren Empfangsdeskriptoren Mittel zum Identifizieren der verfügbaren Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 59 enthält den Gegenstand eines der Beispiele 51-58 und wobei das Mittel zum Identifizieren der verfügbaren Empfangsdeskriptoren Mittel zum Iterieren der Reihe nach durch jeden Slot im Ring; und Mittel zum Analysieren von Metadaten, die in Verknüpfung mit jedem Slot gespeichert sind, auf eine Angabe, dass ein oder mehrere der Empfangsdeskriptoren verfügbar sind, umfasst.
  • Beispiel 60 enthält den Gegenstand eines der Beispiele 51-59, und ferner enthaltend Mittel zum Kopieren der Empfangsdeskriptoren aus dem Ring zu einer NIC-Empfangswarteschlange vor der Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat.
  • Beispiel 61 enthält den Gegenstand eines der Beispiele 51-60 und wobei der Netzwerkkommunikationsschaltkreis zum Bestimmen, ob die NIC ein oder mehrere Pakete empfangen hat, einen Schaltkreis zum Abfragen der NIC mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  • Beispiel 62 enthält den Gegenstand eines der Beispiele 51-61, und ferner enthaltend Mittel zum Generieren und Zuweisen von Sendedeskriptoren zu den Slots im Ring, wobei der Sendedeskriptor einen Pointer auf einen entsprechenden Speicherpuffer enthält, wo zu sendende Paketdaten gespeichert sind; Mittel zum Identifizieren von Sendedeskriptoren für Slots des Rings, die mit Paketdaten verknüpft sind, die als zum Senden bereit markiert sind; und wobei der DMA-Schaltkreis einen Schaltkreis zum Kopieren, mit DMA, von Paketdaten aus den Speicherpuffern, die mit den identifizierte n Sendedeskriptoren verknüpft sind, zur NIC zum Senden umfasst.
  • Beispiel 63 enthält den Gegenstand eines der Beispiele 51-62 und wobei das Mittel zum Generieren und Zuweisen der Sendedeskriptoren zu den Slots im Ring Mittel zum Generieren und Zuweisen der Sendedeskriptoren mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  • Beispiel 64 enthält den Gegenstand eines der Beispiele 51-63 und wobei das Mittel zum Generieren und Zuweisen der Sendedeskriptoren zu den Slots im Ring Mittel zum Generieren und Zuweisen der Sendedeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  • Beispiel 65 enthält den Gegenstand eines der Beispiele 51-64, und ferner enthaltend Mittel zur Verarbeitung der Paketdaten mit einer oder mehreren Arbeitsstufen; und Mittel zum Modifizieren von Metadaten, die mit den Slots verknüpft sind, die mit den Paketdaten verknüpft sind, um anzugeben, dass die Paketdaten zum Senden bereit sind, bevor die Paketdaten zur NIC zum Senden kopiert werden.
  • Beispiel 66 enthält den Gegenstand eines der Beispiele 51-65, und ferner enthaltend Mittel zum Kopieren der identifizierten Sendedeskriptoren zu einer NIC-Sendewarteschlange, bevor die Paketdaten aus den Speicherpuffern zur NIC kopiert werden.

Claims (25)

  1. Netzwerkvorrichtung zur Verarbeitung von Paketen, die Netzwerkvorrichtung umfassend: einen oder mehrere Prozessoren, die eine Vielzahl von Kernen enthalten; eine Netzwerkschnittstellensteuerung (NIC), die an den einen oder die mehreren Prozessoren gekoppelt ist; und eine oder mehrere Speichervorrichtungen, auf welchen eine Vielzahl von Anweisungen gespeichert ist, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, die Netzwerkvorrichtung veranlassen zum: Errichten eines Rings in einem Speicher der einen oder mehreren Speichervorrichtungen, wobei der Ring als ein kreisförmiger Puffer definiert ist und eine Vielzahl von Slots zum Speichern von Einträgen enthält, die für Pakete repräsentativ sind; Generieren und Zuweisen von Empfangsdeskriptoren zu den Slots im Ring, wobei jeder Empfangsdeskriptor einen Pointer auf einen entsprechenden Speicherpuffer zum Speichern von Paketdaten enthält; Bestimmen, ob die NIC ein oder mehrere Pakete empfangen hat; und Kopieren, mit direktem Speicherzugriff (DMA) und in Antwort auf eine Bestimmung, dass die NIC ein oder mehrere Pakete empfangen hat, von Paketdaten des einen oder der mehreren empfangenen Pakete aus der NIC zu den Speicherpuffern, die mit den Empfangsdeskriptoren verknüpft sind, die den Slots im Ring zugewiesen sind.
  2. Netzwerkvorrichtung nach Anspruch 1, wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einem oder mehreren der Kerne umfasst.
  3. Netzwerkvorrichtung nach Anspruch 1, wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  4. Netzwerkvorrichtung nach Anspruch 1, wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren unter Verwendung mehrerer Instanzen einer Eingabestufe umfasst, die als separate Threads ausgeführt werden.
  5. Netzwerkvorrichtung nach Anspruch 4, wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, einen Zugriff der mehreren Instanzen der Eingabestufe auf die Slots mit einer Modulo-Funktion zu koordinieren.
  6. Netzwerkvorrichtung nach Anspruch 1, wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, verfügbare Empfangsdeskriptoren im Ring zu identifizieren, bevor die Paketdaten aus der NIC kopiert werden, und wobei ein Kopieren der Paketdaten aus der NIC ein Kopieren der Paketdaten aus der NIC zu den Speicherpuffern umfasst, die mit den identifizierten verfügbaren Empfangsdeskriptoren verknüpft sind.
  7. Netzwerkvorrichtung nach Anspruch 6, wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einem oder mehreren der Kerne umfasst.
  8. Netzwerkvorrichtung nach Anspruch 6, wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  9. Netzwerkvorrichtung nach Anspruch 6, wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren ein Iterieren der Reihe nach durch jeden Slot im Ring und Analysieren von Metadaten, die in Verknüpfung mit jedem Slot gespeichert sind, auf eine Angabe, dass ein oder mehrere der Empfangsdeskriptoren verfügbar sind, umfasst.
  10. Netzwerkvorrichtung nach Anspruch 1, wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen, die Empfangsdeskriptoren aus dem Ring zu einer NIC-Empfangswarteschlange vor der Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat, zu kopieren.
  11. Netzwerkvorrichtung nach Anspruch 1, wobei eine Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat, ein Abfragen der NIC mit einem oder mehreren der Kerne umfasst.
  12. Netzwerkvorrichtung nach Anspruch 1, wobei die Vielzahl von Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, ferner die Netzwerkvorrichtung veranlassen zum: Generieren und Zuweisen von Sendedeskriptoren zu den Slots im Ring, wobei jeder Sendedeskriptor einen Pointer auf einen entsprechenden Speicherpuffer enthält, wo zu sendende Paketdaten gespeichert sind; Identifizieren von Sendedeskriptoren für Slots des Rings, die mit Paketdaten verknüpft sind, die als zum Senden bereit markiert sind; Kopieren, mit DMA, von Paketdaten aus den Speicherpuffern, die mit den identifizierten Sendedeskriptoren verknüpft sind, zur NIC zum Senden.
  13. Verfahren zur Verarbeitung von Paketen, umfassend: Errichten, durch eine Netzwerkvorrichtung, eines Rings in einem Speicher der Netzwerkvorrichtung, wobei der Ring als ein kreisförmiger Puffer definiert ist und eine Vielzahl von Slots zum Speichern von Einträgen enthält, die für Pakete repräsentativ sind; Generieren und Zuweisen, durch die Netzwerkvorrichtung, von Empfangsdeskriptoren zu den Slots im Ring, wobei jeder Empfangsdeskriptor einen Pointer auf einen entsprechenden Speicherpuffer zum Speichern von Paketdaten enthält; Bestimmen, durch die Netzwerkvorrichtung, ob eine Netzwerkschnittstellensteuerung (NIC) der Netzwerkvorrichtung ein oder mehrere Pakete empfangen hat; und Kopieren, mit direktem Speicherzugriff (DMA) und in Antwort auf eine Bestimmung, dass die NIC ein oder mehrere Pakete empfangen hat, von Paketdaten des einen oder der mehreren empfangenen Pakete aus der NIC zu den Speicherpuffern, die mit den Empfangsdeskriptoren verknüpft sind, die den Slots im Ring zugewiesen sind.
  14. Verfahren nach Anspruch 13, wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  15. Verfahren nach Anspruch 13, wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  16. Verfahren nach Anspruch 13, wobei ein Generieren und Zuweisen der Empfangsdeskriptoren zu den Slots im Ring ein Generieren und Zuweisen der Empfangsdeskriptoren unter Verwendung mehrerer Instanzen einer Eingabestufe umfasst, die als separate Threads ausgeführt werden.
  17. Verfahren nach Anspruch 16, ferner umfassend ein Koordinieren, durch die Netzwerkvorrichtung, eines Zugriffs der mehreren Instanzen der Eingabestufe auf die Slots mit einer Modulo-Funktion.
  18. Verfahren nach Anspruch 13, ferner umfassend ein Identifizieren, durch die Netzwerkvorrichtung, verfügbarer Empfangsdeskriptoren im Ring, bevor die Paketdaten aus der NIC kopiert werden, und wobei ein Kopieren der Paketdaten aus der NIC ein Kopieren der Paketdaten aus der NIC zu den Speicherpuffern umfasst, die mit den identifizierten verfügbaren Empfangsdeskriptoren verknüpft sind.
  19. Verfahren nach Anspruch 18, wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  20. Verfahren nach Anspruch 18, wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren ein Identifizieren der verfügbaren Empfangsdeskriptoren mit einer oder mehreren Hardware-Komponenten der NIC umfasst.
  21. Verfahren nach Anspruch 18, wobei ein Identifizieren der verfügbaren Empfangsdeskriptoren umfasst: Iterieren der Reihe nach durch jeden Slot im Ring; und Analysieren von Metadaten, die in Verknüpfung mit jedem Slot gespeichert sind, auf eine Angabe, dass ein oder mehrere der Empfangsdeskriptoren verfügbar sind.
  22. Verfahren nach Anspruch 13, ferner umfassend ein Kopieren, durch die Netzwerkvorrichtung, der Empfangsdeskriptoren aus dem Ring zu einer NIC-Empfangswarteschlange vor der Bestimmung, ob die NIC ein oder mehrere Pakete empfangen hat.
  23. Verfahren nach Anspruch 13, wobei ein Bestimmen, ob die NIC ein oder mehrere Pakete empfangen hat, ein Abfragen der NIC mit einem oder mehreren Kernen eines Prozessors der Netzwerkvorrichtung umfasst.
  24. Netzwerkvorrichtung umfassend: einen oder mehrere Prozessoren; und einen Speicher, auf welchem eine Vielzahl von Anweisungen gespeichert ist, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, die Netzwerkvorrichtung veranlassen, das Verfahren nach einem der Ansprüche 13-23 durchzuführen.
  25. Ein oder mehrere maschinenlesbare Speichermedien, die eine Vielzahl von darauf gespeicherten Anweisungen umfassen, die infolge ihrer Ausführung dazu führen, dass eine Netzwerkvorrichtung das Verfahren nach einem der Ansprüche 13-23 durchführt.
DE112017003294.6T 2016-06-30 2017-05-31 Technologien für ein skalierbares Senden und Empfangen von Paketen Pending DE112017003294T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/199,110 US10341264B2 (en) 2016-06-30 2016-06-30 Technologies for scalable packet reception and transmission
US15/199,110 2016-06-30
PCT/US2017/035205 WO2018004953A1 (en) 2016-06-30 2017-05-31 Technologies for scalable packet reception and transmission

Publications (1)

Publication Number Publication Date
DE112017003294T5 true DE112017003294T5 (de) 2019-03-21

Family

ID=60787790

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017003294.6T Pending DE112017003294T5 (de) 2016-06-30 2017-05-31 Technologien für ein skalierbares Senden und Empfangen von Paketen

Country Status (3)

Country Link
US (2) US10341264B2 (de)
DE (1) DE112017003294T5 (de)
WO (1) WO2018004953A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11671382B2 (en) 2016-06-17 2023-06-06 Intel Corporation Technologies for coordinating access to data packets in a memory
US10999209B2 (en) 2017-06-28 2021-05-04 Intel Corporation Technologies for scalable network packet processing with lock-free rings
US10547491B2 (en) * 2017-08-28 2020-01-28 Genband Us Llc Transcoding with a vector processing unit
US10846223B2 (en) * 2017-10-19 2020-11-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Cache coherency between a device and a processor
US20190044860A1 (en) * 2018-06-18 2019-02-07 Intel Corporation Technologies for providing adaptive polling of packet queues
US20190044879A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Technologies for reordering network packets on egress
US10795840B2 (en) 2018-11-12 2020-10-06 At&T Intellectual Property I, L.P. Persistent kernel for graphics processing unit direct memory access network packet processing
US10834006B2 (en) * 2019-01-24 2020-11-10 Mellanox Technologies, Ltd. Network traffic disruptions
US20220197729A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Advanced queue monitoring system
US20230328032A1 (en) * 2022-04-06 2023-10-12 Mellanox Technologies, Ltd. Efficient and flexible flow inspector

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778180A (en) * 1995-11-06 1998-07-07 Sun Microsystems, Inc. Mechanism for reducing data copying overhead in protected memory operating systems
US7562366B2 (en) * 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
US9137179B2 (en) * 2006-07-26 2015-09-15 Hewlett-Packard Development Company, L.P. Memory-mapped buffers for network interface controllers
US8667187B2 (en) * 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
US8112491B1 (en) * 2009-01-16 2012-02-07 F5 Networks, Inc. Methods and systems for providing direct DMA
US8103809B1 (en) * 2009-01-16 2012-01-24 F5 Networks, Inc. Network devices with multiple direct memory access channels and methods thereof
US9455915B2 (en) * 2013-12-12 2016-09-27 Broadcom Corporation Hierarchical congestion control with congested flow identification hardware

Also Published As

Publication number Publication date
US10341264B2 (en) 2019-07-02
US20190327190A1 (en) 2019-10-24
US20180006970A1 (en) 2018-01-04
WO2018004953A1 (en) 2018-01-04

Similar Documents

Publication Publication Date Title
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE112016001075B4 (de) Verteiltes speichern und abrufen von datensätzen
US10114682B2 (en) Method and system for operating a data center by reducing an amount of data to be processed
CN107590001B (zh) 负载均衡方法及装置、存储介质、电子设备
CN105071976B (zh) 数据传输方法和装置
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE112012004747B4 (de) Verborgenes automatisiertes Spiegeln von Daten für native Schnittstellen in verteilten virtuellen Maschinen
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE112018004464T5 (de) Technologien zur Programmierung flexibler, beschleunigter Netzwerk-Pipelines unter Verwendung von eBPF
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE112018006769B4 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE112006001167T5 (de) Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken
CN104750690B (zh) 一种查询处理方法、装置及系统
DE112012002404B4 (de) Konfiguration und Management virtueller Netzwerke
CN109726004B (zh) 一种数据处理方法及装置
DE112012003342T5 (de) Dynamisches Anpassen und Begrenzen der Größe des Netzwerkadapterspeichers zur Speicherung von Umsetzungseinträgen für virtuelle Funktionen
DE112013001904T5 (de) Paketvermittlung auf der Ebene 2 ohne Nachschlagetabelle für Ethernet-Switches
CN107959582A (zh) 一种切片实例的管理方法及装置
DE102016102424A1 (de) Auf Inhalt beruhende Hardware-Sicherheitsmodulzuweisung zu virtuellen Maschinen
DE112013000904T5 (de) Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird
DE202020005703U1 (de) Auf verteilten Metadaten basierendes Cluster-Computing
DE112012006148B4 (de) Verfahren, Vorrichtung und Maschinenlesbares Medium zur gemeinsamen Benutzung von Puffern für Verarbeitungselemente bei einem Netzwerkgerät
DE102018209188A1 (de) Technologien zum Verwalten der Dienstgüte für Plattformverbindungen
DE112017003018T5 (de) Technologien zum koordinieren des zugriffs auf datenpakete in einem speicher
DE112013000599T5 (de) Konfigurieren von Rechenknoten in einem parallelen Computer unter Verwendung eines entfernt angeordneten direkten Speicherzugriffs

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: H04L0012861000

Ipc: H04L0049900000

R016 Response to examination communication