DE102020109669A1 - Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen - Google Patents

Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen Download PDF

Info

Publication number
DE102020109669A1
DE102020109669A1 DE102020109669.0A DE102020109669A DE102020109669A1 DE 102020109669 A1 DE102020109669 A1 DE 102020109669A1 DE 102020109669 A DE102020109669 A DE 102020109669A DE 102020109669 A1 DE102020109669 A1 DE 102020109669A1
Authority
DE
Germany
Prior art keywords
priority
packet
memory
buffer
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
DE102020109669.0A
Other languages
English (en)
Inventor
Jasvinder Singh
Pablo De Lara Guarch
Kevin LAATZ
Ciara Power
Greg CURRAN
John J. Browne
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 DE102020109669A1 publication Critical patent/DE102020109669A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • 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
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • H04L49/9052Buffering arrangements including multiple buffers, e.g. buffer pools with buffers of different sizes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

An einer Netzschnittstelle werden empfangene Pakete gemäß einer Prioritätsebene oder einer Verkehrsklasse klassifiziert. Basierend auf einer Prioritätsebene kann ein empfangenes Paket zum Verwenden einer Deskriptorwarteschlange, die der zugewiesenen Prioritätsebene zugeordnet ist, zugewiesen werden. Die Deskriptorwarteschlange kann einen zugeordneten Pufferbereich aufweisen, in dem Abschnitte der empfangenen Pakete gespeichert sind. Die Länge der Deskriptorwarteschlange kann von der Prioritätsebene abhängen, so dass eine Deskriptorwarteschlange der höchsten Priorität länger sein kann als eine Deskriptorwarteschlange der niedrigsten Priorität. Die Größe des Puffers kann von der Prioritätsebene abhängen, so dass einer höchsten Prioritätsebene ein separater Pufferplatz anderer Größe zugewiesen sein kann als der, der einer niedrigeren Prioritätsebene zugewiesen ist. Eine Abfragerate für eine Deskriptorwarteschlange kann basierend auf einer Prioritätsebene konfiguriert sein, so dass eine Deskriptorwarteschlange der höchsten Prioritätsebene häufiger abgefragt werden kann als das Abfragen einer Deskriptorwarteschlange einer niedrigeren Prioritätsebene.

Description

  • TECHNISCHES GEBIET
  • Verschiedene hier beschriebene Beispiele beziehen sich auf Techniken zum Verarbeiten empfangener Pakete basierend auf einer Prioritätsebene.
  • HINTERGRUND
  • Da die Anzahl von mit dem Internet verbundenen Vorrichtungen wächst, werden ansteigende Mengen von Daten und Inhalt unter Verwendung von, unter anderem, drahtgebundenen und drahtlosen Netzschnittstellen, Switches, Routern übertragen. Da die Paketübertragungsraten zunehmen, hat die Geschwindigkeit, mit der Paketverarbeitung stattfinden muss, ebenfalls zugenommen. Wenn ein Paketverarbeitungssystem mit Paketen für empfangsseitiges Verarbeiten oder sendeseitiges Verarbeiten überflutet wird, kann das System in einigen Fällen Pakete fallenlassen. Fallengelassene Pakete werden nicht empfangen, und es kann notwendig sein, sie erneut zu senden, was zusätzliche Latenz einführen und die Verarbeitungsbetriebsmittel, die zum Senden und Empfangen von Paketen benötigt werden, erhöhen kann.
  • Figurenliste
    • 1 bildet ein Beispiel eines Eingangsverkehrsmanagement-Paket-Eingabe/Ausgabe-(I/O-) Systems ab.
    • 2A bildet ein Beispiel eines Speicherzuweisungs- und Abfragesystems ab.
    • 2B bildet ein Beispiel eines Speicherzuweisungs- und Abfragesystems ab.
    • 2C bildet ein Beispiel eines einer Implementierung eines virtuellen Switch ab.
    • 3 bildet eine beispielhafte Netzschnittstellensteuereinheit in Übereinstimmung mit einigen Ausführungsformen ab.
    • 4A und 4B bilden Beispiele für Speicherzuweisungen für einen oder mehrere Eingangsanschlüsse ab.
    • 4C bildet ein Beispiel von Zuweisungen von Speicherpuffern für Pakete von mehreren NICs ab.
    • 5A und 5B bilden Konfigurationsprozesse ab.
    • 6 bildet einen Prozess zum Verarbeiten empfangener Pakete ab.
    • 7 bildet ein System ab.
    • 8 bildet einen Switch ab.
    • 9 bildet ein Beispiel eines Datenzentrums ab.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 bildet ein Beispiel eines Eingangsverkehrsmanagement-Paket-Eingabe/Ausgabe-(I/O-) Systems ab. Eine Netzschnittstellenkarte (NIC) 100 empfängt ankommende Pakete. Ethernet-Bitübertragungsschicht- und Medienzugangssteuerungsschicht-Verarbeitung wird auf den ankommenden Paketen ausgeführt. Ankommende Pakete werden unter Verwendung des Merkmals für empfangsseitige Skalierung (RSS) der NIC oder unter Verwendung einer Entscheidung durch ein Filter klassifiziert. RSS ermöglicht die Zuweisung von Verkehrsströmen zu unterschiedlichen Deskriptorwarteschlangen unter Verwendung von Hash-Berechnung basierend auf einem oder mehreren Abschnitten eines Pakets. Basierend auf der Klassifizierung unter Verwendung von RSS oder eines Filters werden Pakete Empfangs- (Rx-) Deskriptorwarteschlangen zugewiesen in gemeinsam verwendeten Speicher-Pools, die zum Speichern der ankommenden Pakete in dem Host-System zugewiesen sind, platziert. Ein Kern einer zentralen Verarbeitungseinheit (CPU-Kern) fragt die Deskriptorwarteschlangen gleichmäßig in einem Rundlaufverfahren ab, um die Pakete zur weiteren Verarbeitung abzurufen. In einem solchen Szenario werden alle Pakete unabhängig von ihrer Wichtigkeit oder Priorität gleich behandelt. Pakete können an der Eingangsschnittstelle (z. B. der Netzschnittstellensteuereinheit 100) aufgrund unzureichender Speicherbetriebsmittel oder unzureichender CPU-Zyklen, die zum Abfragen der Paketwarteschlangen zugewiesen sind, fallengelassen werden (z. B. verworfen oder nicht zu dem Host-System 150 kopiert werden).
  • In einem Fall einer Netzschnittstellenkarte mit großer Bandbreite gibt es keine Garantie, dass Pakete, die unter Verwendung von RSS oder mit IEEE 802.1-kompatiblem „Data Center Bridging“ (DCB) klassifiziert und denen unterschiedliche Prioritäten zugewiesen sind, nicht verlorengehen, falls die Systembetriebsmittel nicht korrekt bereitgestellt werden. Die Paketpriorisierung in der NIC kann das Eingangsverkehrsmanagement durch Berücksichtigung der Dienstgüte (QoS) nicht vollständig adressieren. Beispielsweise kann das Verwenden eines globalen Speicherbetriebsmittels (Speicher-Pools) in dem CPU-System zum Fallenlassen (Verlusten) Pakete hoher Priorität führen, wenn Verkehr mit großem Volumen und niedriger Priorität die gesamten zugewiesenen Speicherbetriebsmittel verbraucht. Als ein Ergebnis können die Pakete hoher Priorität vor der Paketverarbeitungsstufe fallengelassen werden. Darüber hinaus werden mehrere NIC-Warteschlangen unabhängig vom Verkehrstyp in einem Rundlaufverfahren durch die CPU-Kerne bedient. Als ein Ergebnis wird Verkehr mit hoher Priorität mit Einschränkungen für geringe Latenz (z. B. „Voice-over-IP“ (VoIP), Videokonferenz, Online-Spiele usw.) gleich behandelt wie nicht kritischer Verkehr.
  • Das Datenebenenentwicklungs-Kit (DPDK) ist eine Gruppe von Datenebenenbibliotheken und Netzschnittstellensteuereinheitstreibern zur Paketverarbeitung. Typischerweise weist das DPDK einen Kern einer zentralen Verarbeitungseinheit (CPU-Kern) zu, um mehrere Eingangswarteschlangen (z. B. Empfangs-Deskriptorwarteschlangen) kontinuierlich abzufragen, um empfangene Pakete unter Verwendung desselben Kerns oder eines weiteren Kerns zu verarbeiten. In diesem Szenario unterscheiden Anwendungen nicht zwischen den unterschiedlichen Typen des Verkehrs und weisen Speicher und CPU-Betriebsmittel unabhängig von der Verkehrspriorität zu. In einigen Fällen besitzen alle Pakete einen gleichen Anspruch auf verfügbare Speicherbetriebsmittel (z. B. Warteschlangen und Speicher-Pools). In einem typischen Szenario wird ein globales Speicherbetriebsmittel (Speicher-Pool) allen Treiber-Deskriptorwarteschlangen (z. B. Ringpuffern) zugewiesen, wobei die Warteschlangengrößen auf den gleichen Wert eingestellt sind. Verkehr mit großem Volumen und niedriger Priorität kann schnell die gesamten zugewiesenen Speicherbetriebsmittel verbrauchen, was zu einem unterschiedslosen Fallenlassen von Netzverkehr hoher Priorität (z. B. einem Fehlschlagen des Speicherns von Netzverkehr hoher Priorität) führt. In einigen Fällen werden Pakete hoher Priorität vor der Paketverarbeitungsstufe fallengelassen.
  • In dem Fall mehrerer Empfangs-Deskriptorwarteschlangen pro Kern werden die Warteschlangen durch einen Kern in einem Rundlaufverfahren bedient, unabhängig von dem Verkehrstyp. Als ein Ergebnis wird Verkehr mit hoher Priorität mit Einschränkungen für geringe Latenz (z. B. „Voice-over-IP“ (VoIP), Videokonferenz, Online-Spiele usw.) gleich behandelt wie nicht kritischer Verkehr (z. B. Webseitenverkehr). Dementsprechend kann Verkehr hoher Priorität nicht schnell genug verarbeitet werden, und die Anwenderwahrnehmung kann einen Schaden nehmen.
  • Die IOS-Lösung von Cicso verwendet dedizierte Speicher-Pools und Größen, um Stauungs- und Überlastzustände zu handhaben. Die existierende Cisco-Lösung implementiert einen „Policer“, um die QoS-Strategie durch Ratenbegrenzung des eingehenden Verkehrs und Fallenlassen der Pakete, die die konfigurierten Grenzen an der Eingangsschnittstelle übersteigen, zu erzwingen. Die Cicso-Lösung weist jedoch keine Speicherbetriebsmittel (Puffer-Pool-Größe oder Deskriptorwarteschlangengrößen) basierend auf dem Verkehrstyp zu oder priorisiert nicht die CPU-Zyklen zum Verarbeiten von Paketen von Verkehr höherer Priorität.
  • Um eine adäquate hohe Leistung sicherzustellen, beruhen virtuelle Switches/Router zunehmend auf Hochgeschwindigkeits-Paket-I/O-Frameworks, z. B. Datenebenenentwicklungs-Kit (DPDK), die eine Abfragemodusinfrastruktur zum Senden und Empfangen von Paketen wie schnell wie möglich verwenden, ohne einen Interrupt-basierenden Mechanismus zu verwenden. In solchen Abfragemodus-Paket-I/O-Frameworks wird, während von Hardware-Schnittstellen (z. B. Netzschnittstellensteuereinheiten oder Karten, Beschleunigern usw.) oder Software-Schnittstellen (virtuellen Switches oder virtuellen Warteschlangen) abgefragt wird, die Paketpriorität beim Einstellen der Abfragerate nicht berücksichtigt. Als ein Ergebnis wird der kritische Verkehr (z. B. Steuerungs/Signalisierungs-Pakete, Videopakete) gleich behandelt wie nicht kritischer Verkehr, was wiederum einen starken Einfluss auf die Dienstgüte von kritischem Verkehr (höherer Priorität) haben kann.
  • Verschiedene Ausführungsformen stellen das Zuweisen verfügbarer Speicherbetriebsmittel (z. B. Warteschlangen, Speicher-Pools) basierend auf der Paketpriorität bereit, so dass Pakete verschiedener Prioritätsebenen separate dedizierte Warteschlangen- und Speicher-Pool-Zuweisungen erhalten. Verschiedene Ausführungsformen verwenden Netzschnittstellenfähigkeiten, um die Pakete auf Zeilenbasis zu klassifizieren. Die Klassifizierung von Paketen kann verwendet werden, um Pakete gemäß der Paketpriorität in Deskriptorwarteschlangen zuzuweisen. Wenn eine Netzschnittstelle unausgelastet oder überlastet ist, versuchen verschiedene Systeme, das Fallenlassen von Paketen höherer Priorität durch Zuweisen größerer Deskriptorwarteschlangen und mehr Speicher-Pool zu den Paketen höherer Priorität zu reduzieren. Gemäß einigen Ausführungsformen kann die Paketpriorität während dem Paketabfragen berücksichtigt werden, so dass mehr CPU-Zyklen zugewiesen werden, um Verkehr hoher Priorität abzufragen und zu verarbeiten gegenüber Verkehr niedrigerer Priorität. Eine Anwendung, die auf dem CPU-Kern abläuft, ist fähig, Deskriptorwarteschlangen unter Verwendung eines geeigneten Planungsmechanismus wie z. B. gewichteten Rundlaufverfahren, strenger Priorität und so weiter abzufragen.
  • Verschiedene Ausführungsformen stellen eine Herangehensweise mit Dienstgüte- (QoS-) Eingangsverkehrsmanagement für Hochgeschwindigkeits-Paket-Eingang/Ausgangs- (I/O-) Systeme bereit. Verschiedene Ausführungsformen setzen die NIC-Fähigkeiten ein, um die Pakete zu klassifizieren, beispielsweise mit der Eingangs-Zeilenrate, und platzieren sie in priorisierte Deskriptorwarteschlangen. Die Deskriptorwarteschlangengröße und die zugeordneten Puffer-Pools können basierend auf der Priorität konfiguriert sein. Unter Berücksichtigung der unterschiedlichen Prioritäten der Warteschlangen kann ein CPU-Kern oder Kerne ungleichmäßiges Abfragen (z. B. nicht gleichmäßige Zuweisung von CPU-Betriebsmitteln) unter Verwendung eines Planungsmechanismus wie z. B. gewichtetem Rundlaufverfahren, strenger Priorität ausführen. Eine Abfragerate kann basierend auf einer Prioritätsebene oder Paketen oder dem Volumen von Paketen angepasst werden.
  • 2A bildet ein Beispiel eines Speicherzuweisungs- und Abfragesystems ab. Ein/e virtueller Switch oder virtueller Router, virtuelles Gateway, Netzschnittstelle, Endpunktempfänger, Router, Switch, Server, Rack oder Datenzentrum kann das System verwenden. In einigen Beispielen können Verschiedene Ausführungsformen in Verbindung mit 5G-Netz-Slicing verwendet werden, wodurch ein oder mehrere virtuelle Netze, die eine physikalische Infrastruktur gemeinsam verwenden, das System verwenden können, um die Plattform zu partitionieren und 5G-Slice-Pakete zu priorisieren.
  • Die Netzschnittstelle 200 kann einen PHY/MAC-Schicht-Prozessor 202 zum Ausführen von Bitübertragungsschicht- und Medienzugangssteuerungs- (MAC-) Schicht-Verarbeitung ankommender (empfangener) Pakete enthalten. Ein Paketfilter 204 kann Paketklassifizierung basierend auf dem Inhalt des empfangenen Paket-Headers ausführen. Das Paketfilter 204 kann als ein Prozess oder Thread implementiert sein, der durch einen oder mehrere Kerne, eine anwendungsspezifische integrierte Schaltung (ASIC), ein im Feld programmierbares Gatter-Array (FPGA), programmierbare Steuerlogik (PLC) oder einen anderen Prozessor ausgeführt wird. Das Paketfilter 204 kann den Inhalt eines Paket-Headers decodieren, um die Verkehrsklasse der Pakete zu bestimmen, und die Empfangspaketwarteschlangenzuweisung 206 kann das Paket einem Deskriptorring unter den Empfangs- (Rx-) Deskriptorringen 252-0 bis 252-n und den Speicher-Pools 254-0 bis 254-n basierend auf der Verkehrsklassifizierung zuweisen. Beispielsweise kann die Verkehrsklassifizierung auf einem virtuellen lokalen Zugangsnetz (VLAN-) Identifizierungskennzeichen (definiert in IEEE 802.IQ) basieren, vorausgesetzt, dass ein Paket eine Paketpriorität definieren kann. Ein 3-Bit-Anwenderprioritätsfeld in dem VLAN-Identifizierungskennzeichen kann verwendet werden, um eine Paketpriorität unter 8 Verkehrsklassen zu definieren. Ein Empfangsdeskriptorring 252 kann für jede Verkehrsklasse zugewiesen werden.
  • Das Paketfilter 204 und/oder die Empfangswarteschlangenzuweisungslogik 206 kann DCB- und/oder RSS-Merkmale verwenden, um frühe Paketprioritätsbestimmung auf Zeilenbasis bereitzustellen. In einem Fall eines empfangenen Pakets mit einem VLAN-Identifizierungskennzeichen kann das Verwenden eines DCB-Merkmals die Verkehrsklasse basierend auf dem 3-Bit-Anwenderprioritätsfeld in dem Identifizierungskennzeichen bestimmen. In anderen Beispielen kann, falls ein empfangenes Paket kein VLAN-Identifizierungskennzeichen besitzt, das Paketfilter 204 die Paketpriorität basierend auf einem oder mehreren des Folgenden des empfangenen Pakets bestimmen: Wert des differenzierten Dienstcodepunkts (DSCP) in einem Internetprotokoll- (IP-) Header des empfangenen Paketwerts, Ursprungs-IP-Adresse, Ziel-IP-Adresse oder empfangener Anschluss. Beispielsweise können DSCP-Werte (z. 6 Bits) in einem IPv4-Header einen Verkehrsklasse (z. B. beschleunigen, weiterleiten), den Typ des Verkehrs (z. B. Anwender wie z. B. Sprache, Video, Webinhalt, Textnachrichtenübermittlung und so weiter) oder Paketprioritätsebene definieren. In einigen Beispielen kann eine Anwendung den Typ oder die Prioritätsebene eines Pakets (z. B. Sprache, Video, Webinhalt, Textnachrichtenübermittlung und so weiter) angeben.
  • Falls das Paketfilter 204 und/oder die Empfangswarteschlangenzuweisungslogik 206 DCB und/oder RSS verwenden, kann eine Verkehrsklasse X Warteschlangen zugeordnet werden, so dass M Verkehrsklassen unter M*X Warteschlangen verteilt werden. In einem Fall von 8 Verkehrsklassen sind 128 Warteschlangen einer NIC in 8 Gruppen (Verkehrsklassen) aufgeteilt, von denen jede 16 Warteschlangen aufweist (8 Verkehrsklassen * 16 Warteschlangen). Ein Paket wird einer dieser 128 Warteschlangen zugewiesen. In einem Fall von 4 Verkehrsklassen, werden 64 Warteschlangen der NIC verwendet, die in 4 Gruppen unterteilt werden, von denen jede 16 Warteschlangen aufweist (4 Verkehrsklassen * 16 Warteschlangen). Somit werden in diesem Fall Pakete 64 Warteschlangen zugewiesen.
  • Falls DCB aktiviert ist und RSS deaktiviert ist, wird die Warteschlange durch einen Verkehrsklassen- (TC-) Index identifiziert. Für 8 Verkehrsklassen werden 8 Warteschlangen vorhanden sein. Für 4 Verkehrsklassen werden 4 Warteschlangen verwendet.
  • Nachdem das Paketfilter 204 und/oder die Empfangswarteschlangenzuweisungslogik 206 die eingehenden Pakete klassifiziert haben, reiht die NIC 200 die Pakete in mehrere Treiberempfangsdeskriptorwarteschlangen mit unterschiedlichen Prioritäten ein.
  • Ein Vorrichtungstreiber kann Deskriptoren erzeugen und kann die Verwendung und Zuweisung von Deskriptoren in der Deskriptorwarteschlange 208 managen. Die Deskriptorwarteschlange 208 kann ein Bereich in dem NIC-Speicher oder Systemspeicher des Host-Systems 250 sein, der Deskriptoren enthält oder sie referenziert. Ein Vorrichtungstreiber für die NIC 200 (z. B. der Treiber 258) kann die Übertragung von Deskriptoren aus der Deskriptorwarteschlange 208 zu einem zugewiesenen Empfangs- (Rx-) Deskriptorring 252-0 bis 252-n anfordern. Die Rx-Deskriptorringe 252-0 bis 252-n können konfiguriert sein, Deskriptoren zu speichern, die empfangenen Paketen basierend auf der Verkehrsklasse zugeordnet sind. Die Speicher-Pools 254-0 bis 254-n können konfiguriert sein, Paket-Header und/oder Nutzdaten empfangener Pakete, die entsprechenden Ringen 252-0 bis 252-n zugeordnet sind, basierend auf der Verkehrsklasse zu speichern.
  • Gemäß einigen Ausführungsformen kann das OS 260 differenzierte Zuweisung von Speicherbetriebsmitteln (z. B. Speicher-Pools, Warteschlangengrößen) basierend auf der Paketpriorität ausführen. Beispielsweise kann eine Anwendung, die auf einem OS in dem Host abläuft, die Größen der Speicher-Pools und Warteschlangen über APIs konfigurieren. Die Rx-Deskriptorringe 252-0 bis 252-n und der Speicher-Pool 254-0 bis 254-n werden Prioritätsebenen zugewiesen, so dass der Ring 252-0 und der Speicher-Pool 254-0 einer höchsten Prioritätsebene zugewiesen sind und der Ring 252-n und der Speicher-Pool 254-n einer niedrigsten Prioritätsebene zugewiesen sind.
  • Für eine Verkehrsklasse können die Größe eines Speicher-Pools und die Anzahl von Empfangsdeskriptoren und die Größe der Empfangsdeskriptorwarteschlangen basierend auf dem Verkehrstyp als ein Anteil des Gesamtverkehrs konfiguriert werden. Beispielsweise können der größte Speicher-Pool und die größte Anzahl von Empfangsdeskriptorwarteschlangen einem Verkehr mit höchster Priorität zugewiesen werden, falls der Verkehr mit hoher Priorität einen signifikanten Anteil oder größten Teil des Gesamtverkehrs repräsentiert. Ein kleinster Speicher-Pool und die kleinste Anzahl von Empfangsdeskriptorwarteschlangen können einem Verkehr mit niedrigster Priorität zugewiesen werden, falls der Verkehr mit niedrigster Priorität einen kleinsten Anteil des Gesamtverkehrs repräsentiert.
  • In einigen Beispielen kann die Größe eines Rings höchster Priorität (z. B. die Anzahl gespeicherter Deskriptoren) die größte unter den Prioritätsringen und größer als eine Größe des Rings niedrigster Priorität sein. Die Größe eines Speicher-Pools höchster Priorität kann die größte unter den Speicher-Pools und größer als eine Größe eines Speicher-Pools niedrigster Priorität sein. In einigen Beispielen können mehrere Empfangs- (Rx-) Deskriptorringe einer Prioritätsebene zugewiesen sein, und mehrere Speicher-Pools können einer Prioritätsebene zugewiesen sein. Beispielsweise können einer höchsten Prioritätsebene mehrere Rx-Deskriptorringe und mehrere Speicher-Pools zugewiesen sein.
  • Durch Zuweisen separater Deskriptorringe und Speicher-Pools einer geeigneten Größe zu Paketen höherer Priorität wird die Wahrscheinlichkeit dafür, dass Verkehr niedriger Priorität mit hohem Volumen das Fallenlassen von Paketen hoher Priorität verursacht, und das Aufbrauchen des globalen Speicher-Pools reduziert. Darüber hinaus kann in dem Fall von Verkehr niedriger Priorität mit großem Volumen ein Überlauf des entsprechenden Speicher-Pools höchstens das Fallenlassen von Paketen niedriger Priorität am Ende oder eine Absenkung der Prioritätsebene eines Pakets, das einen Überlauf erfährt, verursachen, ohne Pakete höherer Priorität zu beeinflussen. Der Verkehr mit hoher Priorität wird zu seinen jeweiligen Speicher-Pools geroutet, da er nicht durch Spitzen des Verkehrs mit niedriger oder niedrigerer Priorität beeinflusst wird.
  • Die CPU-Kerne 256-0 bis 256-K können verwendet werden, um Pakete, die irgendeinem der Deskriptorringe 252-0 bis 252-n zugeordnet sind, zu verarbeiten. Ein CPU-Kern kann irgendeine Paketzugriffsabfragestrategie wie z. B. eine strenge Priorität, gewichtetes Rundlaufverfahren usw. anwenden. Der Abfragezyklus eines Kerns kann angepasst werden, um einen Deskriptorring höherer Priorität häufiger abzufragen als eine Warteschlange niedrigerer Priorität. Bei Verwendung einer Strategie mit strenger Priorität werden die Pakete aus den Warteschlangen abgerufen und werden schließlich in das System in der Reihenfolge ihrer Prioritäten eintreten. Für strenge Priorität wird die Warteschlange mit höchster Priorität zuerst durch die CPU bedient, bevor die Warteschlangen mit zweithöchster Priorität abgefragt werden, und so weiter. Ähnlich werden bei Verwendung von gewichtetem Rundlaufverfahren die Abfragezyklen den Paketwarteschlangen proportional zu Gewichtungen, die gemäß den Prioritäten zugewiesen sind, zugeordnet. Für gewichtete Rundlaufverfahren werden die Abfragezyklen des CPU-Kerns den Warteschlangen mit unterschiedlicher Priorität proportional ihrer Gewichtung zugewiesen. Irgendeine speziell angepasste Paketzugriffsabfragestrategie kann verwendet werden.
  • Die CPU-Kerne 256-0 bis 256-K können Nachschlagen einer Tabelle für die nächste Route / den nächsten Sprung und andere Paketverarbeitungsoperationen ausführen. Das Verarbeiten empfangener Pakete kann eines oder mehrere aus dem Folgenden enthalten: Bestimmung, ob ein Paket gültig ist (z. B. korrekter Ethernet-Typ, korrekte Prüfsumme, korrekter IP-Protokolltyp, gültiger Protokolltyp der Schichten 4-7), Bestimmung des Paketziels (z. B. nächster Sprung, Zielwarteschlange), Verwendung des Datenebenenentwicklungs-Kit (DPDK) oder OpenDataPlane zum Ausführen eines oder mehrerer aus dem Folgenden: IP-Filter-Überprüfungen, Ablauftabellennachschlagen, Auswahl des abgehenden Anschlusses unter Verwendung einer Weiterleitungstabelle, Paketentschlüsselung, Paketverschlüsselung, Schutz gegen Ablehnung des Servers, Paketzählen, Gebührenabrechnung, Verkehrsmanagement/Konditionierung, Verkehrsformen/Verkehrsplanen, Paketmarkieren/neumarkieren, Paketinspektion der Schichten 4-7 oder Verkehrslastausgleich/lastverteilung. Empfangene Pakete und verarbeitete Pakete können in einem Host-Speicher gespeichert werden, der für die Verarbeitungselemente des Host-Systems 250 zugänglich ist.
  • Ein Kern kann ein Ausführungskern oder eine Berechnungs-Engine sein, der/die zum Ausführen von Anweisungen fähig ist. Ein Kern kann Zugang zu einem eigenen Cache und Festwertspeicher (ROM) besitzen, oder mehrere Kerne können einen Cache oder ROM gemeinsam verwenden. Kerne können homogene und/oder heterogene Vorrichtungen sein. Irgendein Typ von Inter-Prozessorkommunikationstechniken kann verwendet werden, wie z. B., ohne jedoch darauf beschränkt zu sein, Nachrichtenübermittlung, Inter-Prozessor-Interrupts (IPI), Inter-Prozessor-Kommunikation und so weiter- Kerne können auf irgendeinen Typ einer Art und Weise verbunden sein, wie z. B., ohne jedoch darauf beschränkt zu sein, Bus, Ring oder Gitter. Kerne können außerdem einen Systemagenten enthalten. Der Systemagent kann eines oder mehrere aus einer Speichersteuereinheit, einem gemeinsam verwendeten Cache, einem Cache-Kohärenzmanager, Arithmetiklogikeinheiten, Gleitkommaeinheiten, Kern- oder Prozessor-Zusammenschaltungen oder Bus- oder Verbindungsstrecken-Steuereinheiten enthalten. Der Systemagent kann eines oder mehrere aus dem Folgenden bereitstellen: Speicherdirektzugriffs-(DMA-) Engine-Verbindung, kohärente Master-Verbindung ohne Cache, Daten-Cache-Kohärenz zwischen Kernen und Vermitteln von Cache-Anforderungen oder die Fähigkeiten von „Advanced Microcontroller Bus Architecture“ (AMBA).
  • In einigen Ausführungsformen kann die NIC 200 Inline-IPSEC (z. B. Paketentschlüsselung) vor der Paketklassifizierung ausführen und Pakete nach der Entschlüsselung klassifizieren. Die NIC 200 kann außerdem eine tiefere Dienstklasse der Paketklassifizierung L3-L7 und Schicht 2.5 ausführen, was verwendet werden kann, um die Dienstklasse des Pakets zu klassifizieren. Eine oder mehrere Empfangsdeskriptorwarteschlangen und Speicher-Pools können jeder Paketklassifizierung zugewiesen werden.
  • Verschiedene Ausführungsformen können einen Cache eines oder mehrerer Kerne unterteilen, wenn sie Pakete unterschiedlicher Prioritäten verarbeiten und basierend auf der Paketdienstklasse. In jedem Fall wird ein Betrag des Cache basierend auf der Paketdienstklasse zugewiesen. Beispielsweise kann eine Steuerung pro Kern (oder pro Aufgabe oder pro Prozess) über die Besetzung des System-L3-Cache (LLC) verwendet werden. Der LLC kann von allen Kernen auf dem CPU-Knoten gemeinsam verwendet werden. Die Cache-Wege des LLC können unter Verwendung mehrerer Dienstklassen (CLOS) unterteilt werden. Somit können Pakete hoher Priorität einer dedizierten CLOS (Anzahl von Cache-Wegen) zugewiesen werden, ohne Überlappung mit anderen CLOS, die anderen CPU-Aufgaben zugewiesen sind.
  • 2B bildet ein vereinfachtes Schaltbild eines Speicherzuweisungs- und Abfragesystems ab. In einigen Beispielen kann das Management von eingehendem Verkehr durch Prioritätswarteschlangen, Überlastbehandlung unter Verwendung von Speicherzuweisung und eine Prioritätszugriffsabfragestrategie implementiert sein. Die Netzschnittstellenkarte (NIC) 200 bestimmt Prioritätsklassifizierungen empfangener Pakete. Der virtuelle Switch 270 kann eine Schnittstelle zwischen der NIC 200 und einer einzelnen Host-Vorrichtung oder einer oder mehreren virtuellen Maschinen zum Übertragen von Paketen zu einem Anwenderraum unter Umgehung eines Kernels bereitstellen. Der virtuelle Switch 270 kann als ein Zwischenglied zwischen einer NIC und einer oder mehreren virtuellen Maschinen zum Übertragen von Paketen agieren. Der virtuelle Switch 270 kann empfangene Pakete zu einer virtuellen Ziel-Maschine lenken oder weiterleiten. Der virtuelle Switch kann eine Routing-Regel für die Netzschnittstelle bereitstellen, um einen empfangenen Paket-Header, Paketnutzdaten und/oder Deskriptoren, die der VM zugeordnet sind, zu der vorgesehenen Warteschlange zu routen. Der virtuelle Switch 270 kann Puffer und Speicher-Pools als eine Pakettransportschnittstelle zwischen einer NIC 200 und der virtuellen Maschine (VM) oder dem Container verwenden. Der virtuelle Switch kann durch einen Host oder eine Netzschnittstelle oder beide ausgeführt werden. Beispiele für einen virtuellen Switch 270 enthalten „Open vSwitch“ (OVS), Vektorpaketverarbeitung (VPP), Cisco Nexus 1000V, den virtuellen Switch von VMware und den „Tungsten Fabric vRouter“.
  • Eine Ziel-VM kann virtuelle Netzfunktionen (VNF) verwenden, um empfangene Pakete zu verarbeiten, und kann eine Implementierung einer Netzfunktion sein, die in virtuellen Maschinen (VMs) abläuft. Der virtuelle Switch 270 kann einen Datenebenenentwicklungs-Kit-(DPDK-) Abfragemodustreiber 274 verwenden, um empfangene Pakete aus den Warteschlangen der NIC 200 abzurufen. Der Abfragemodustreiber 274 kann empfangene Pakete Deskriptorringen und Speicher-Puffern gemäß der Prioritätsebene auf Weise zuweisen, die ähnlich der mit Bezug auf das Host-System 250 in 2A beschriebenen ist. Beispielsweise können für eine Verkehrsklasse eine Größe eines Speicher-Pools und eine Anzahl von Empfangsdeskriptoren und eine Größe der Empfangsdeskriptorwarteschlangen basierend auf dem Verkehrstyp als ein Anteil des Gesamtverkehrs konfiguriert werden. Beispielsweise bildet 2C eine Beispielimplementierung eines virtuellen Switch 270 zur Zuweisung von Paketen von der NIC 200 zu Deskriptorringen 220-0 bis 220-n und Speicher-Pools 224-n bis 224-n ab. Wie in 2C gezeigt ist, kann der virtuelle Switch 270 auf dem gleichen oder einem anderen Kern wie der des Abfragemodustreibers 274 ablaufen.
  • Wieder auf 2B Bezug nehmend kann der virtuelle Switch 270 eine virtuelle Maschine zum Verarbeiten des empfangenen Pakets und Zuweisen des empfangenen Pakets zu einer virtuellen Schnittstelle aus den virtuellen Schnittstellen 78-0 bis 278-m bestimmen. Beispielsweise kann der virtuelle Switch 270 eine Ziel-VM unter Verwendung von Switch-Logik identifizieren (z. B. Aktionstabellen abgleichen), um das Paket der virtuellen Schnittstelle, die der virtuellen Ziel-Maschine zugeordnet ist, zuzuweisen. Eine Aktionsabbildungstabelle kann eine Prioritätswarteschlange des virtuellen Switch 270 auf eine VM und ihre Ziel-Prioritätswarteschlange abbilden. Eine virtuelle Schnittstelle kann einer einzigen VM oder mehreren VMs zugeordnet sein. Das Paket kann derselben Prioritätswarteschlange (z. B. einem Virtio-Ring oder einem einfachen Ringpuffer) der Ziel-VM über eine virtuelle Schnittstelle zugewiesen werden. Die virtuellen Schnittstellen 278-0 bis 278-m können unter Verwendung eines DPDK-vHost-Anwenders implementiert sein und stellen Pakete für eine Empfangswarteschlange einer Ziel-VM über „Quick Emulator“ (QEMU) oder Virtio-Ringe (unter Umgehung des Kernel) bereit. Der virtuelle Switch 270 kann eine Ziel-VM identifizieren und das Paket in dieselbe Prioritätswarteschlange der Ziel-VM kopieren (z. B. unter Verwendung einer DMA-Operation). Die gleiche Anzahl von Prioritätswarteschlangen wie eine Anzahl von Prioritätswarteschlangen, die durch den virtuellen Switch 270 verwendet werden, kann für jede Ziel-VM zugewiesen werden.
  • Der Abfragemodustreiber, der durch eine virtuelle Maschine (VM) verwendet wird, kann auf verfügbare Pakete über die virtuellen Schnittstellen 278-0 bis 278-m abfragen. Die Switch-Logik in dem virtuellen Switch 270 kann die Ziel-VM und den Prioritätsring bestimmen. Der Treiber in der Ziel-VM wird dem Speicher-Pool, der dem Prioritätsring zugeordnet ist, aus den Deskriptoren zuweisen und sie freistellen. In einigen Beispielen kann eine DMA-Kopie aus einem Adressenraum des virtuellen Switch in den Adressraum der Ziel-VM für einen oder mehreren aus einem Deskriptor oder Paketinhalt für die Warteschlange der gleichen Prioritätsebene und die gleiche Prioritätsebene des Speicherpuffers hergestellt werden.
  • Falls der virtuelle Switch 270 keine Paketpriorität von der NIC 200 empfängt, dann führt der virtuelle Switch 270 Paketprioritätsbestimmung aus. Die Paketprioritätsbestimmung kann durch Lesen des PCP-Felds des VLAN-Pakets oder des DSCP-Felds des IP-Pakets vorgenommen werden. Falls die NIC 200 keine Paketklassifizierung ausführt, kann dann der virtuelle Switch 270 die Paketpriorität und die Ziel-VM durch Auslesen aus dem Paket-Header identifizieren und das Paket in geeignete Prioritätswarteschlangen in Reaktion auf Abfragen von einem Ziel-VM einreihen. Nachfolgend kann eine Ziel-VM eine virtuelle Netzfunktion (VNF) einsetzen, um Überlastmanagement und Zugriffsabfragestrategie anzuwenden, um auf das Paket zuzugreifen und Paketverarbeitung für das Paket auszuführen.
  • Eine virtuelle Maschine (VM) kann Software, die auf einem Betriebssystem abläuft, und eine oder mehrere Anwendungen sein. Die virtuelle Maschine ist durch Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine NVRAM-Einstellungsdatei und die Log-Datei definiert und wird durch die physikalischen Betriebsmittel einer Host-Berechnungsplattform unterstützt.
  • Ein Container kann ein Software-Paket von Anwendungen, Konfigurationen und Abhängigkeiten sein, so dass die Anwendungen zuverlässig von einer Berechnungsumgebung zu einer weiteren ablaufen. Container können ein auf der Server-Plattform installiertes Betriebssystem gemeinsam verwenden und als isolierte Prozesse ablaufen.
  • Ein Prozess kann irgendeine Software sein, die durch einen Computer ausgeführt wird (die ausführbare Dateien, ausführbare Programme, Bibliotheken oder irgendeinen Code enthält). Ein Beispielprozess ist eine VNF. Mehrere Prozesse können innerhalb einer VM oder eines Containers ausgeführt werden.
  • Dementsprechend können verschiedene Ausführungsformen die Anpassung der Ringpriorität und Größen, Puffergrößen und Paketzugriffsabfragestrategie zum Gebrauch in Schnittstellen zwischen virtuellem Switch und Host, NIC-Host-Schnittstellen oder NIC-Paketverarbeitungsbeschleuniger-Host-Schnittstellen bereitstellen.
  • 3 bildet eine beispielhafte Netzschnittstellensteuereinheit in Übereinstimmung mit einigen Ausführungsformen ab. Verschiedene Ausführungsformen können die Netzschnittstelle verwenden oder können durch die Netzschnittstelle verwendet werden. Die Netzschnittstelle 300 kann den Sender/Empfänger 302 die Prozessoren 304, die Sendewarteschlange 306, die Empfangswarteschlange 308, den Speicher 310 und die Busschnittstelle 312 und die DMA-Engine 352 verwenden. Der Sender/Empfänger 302 kann zum Empfangen und Senden von Paketen in Übereinstimmung mit den anwendbaren Protokollen wie z. B. Ethernet, wie in IEEE 802.3 beschrieben, fähig sein, obwohl andere Protokolle verwendet werden können. Der Sender/Empfänger 302 kann Pakete von und zu einem Netz über ein Netzmedium (nicht abgebildet) empfangen und senden. Der Sender/Empfänger 302 kann die PHY-Schaltungsanordnung 314 und die Medienzugangssteuerungs- (MAC-) Schaltungsanordnung 316 enthalten. Die PHY-Schaltungsanordnung 314 kann Codier- und Decodier-Schaltungsanordnung (nicht gezeigt) enthalten, um Datenpakete gemäß anwendbaren Bitübertragungsschicht-Spezifikationen oder Standards codieren und decodieren. Die MAC-Schaltungsanordnung 316 kann konfiguriert sein, Daten, die gesendet werden sollen, in Pakete zusammenzustellen, die Ziel- und Ursprungsadressen zusammen mit Netzsteuerungsinformationen und Fehlerdetektions-Hash-Werten enthalten. Die Prozessoren 304 können irgendeine Kombination sein aus: einem Prozessor, einem Kern, einer Grafikverarbeitungseinheit (GPU), einem im Feld programmierbaren Gatter-Array (FPGA), einer anwendungsspezifischen integrierten Schaltung (ASIC) oder einer anderen programmierbaren Hardware-Vorrichtung, die Programmieren einer Netzschnittstelle 300 ermöglichen. Beispielsweise können die Prozessoren 304 die Identifizierung eines Betriebsmittels, das zu verwenden ist, um eine Arbeitslast auszuführen, und die Erzeugung eines Bitstroms zur Ausführung auf dem ausgewählten Betriebsmittel bereitstellen. Beispielsweise kann eine „intelligente Netzschnittstelle“ Paktverarbeitungsfähigkeiten in der Netzschnittstelle unter Verwendung der Prozessoren 304 bereitstellen.
  • Ein Paketklassifizierer 324 kann die Verteilung empfangener Pakete zur Verarbeitung durch mehrere CPUs oder Kerne unter Verwendung von sowohl hier beschriebener Zeitschlitzzuweisung als auch unter Verwendung von DCB und/oder RSS bereitstellen. Wenn der Paketklassifizierer 324 RSS verwendet, kann der Paketklassifizierer 324 einen Hash berechnen oder eine andere Bestimmung basierend auf Inhalten eines empfangenen Pakets vornehmen, um zu bestimmen, welche Empfangswarteschlange einem empfangenen Paket zugeordnet werden soll.
  • Die Interrupt-Vereinigung 322 kann Interrupt-Moderation ausführen, wobei die Netzschnittstellen-Interrupt-Vereinigung 322 darauf wartet, dass mehrere Pakete ankommen oder dass ein Zeitlimit abläuft, bevor ein Interrupt für das Host-System erzeugt wird, um das/die empfangene(n) Paket(e) zu verarbeiten. Empfangssegment-Vereinigen (RSC) kann durch die Netzschnittstelle 300 ausgeführt werden, wodurch Abschnitte eingehender Pakete in Segmente eines Pakets kombiniert werden. Die Netzschnittstelle 300 stellt dieses vereinigte Paket für eine Anwendung bereit.
  • Die Speicherdirektzugriffs-Engine (DMA-Engine) 352 kann einen Paket-Header, Paketnutzdaten und/oder den Deskriptor direkt aus dem Host-Speicher zu der Netzschnittstelle und umgekehrt kopieren, anstatt das Paket in einen Zwischenpuffer in dem Host zu kopieren und dann eine weitere Kopieroperation von dem Zwischenpuffer zu dem Zielpuffer zu verwenden.
  • Der Speicher 310 kann irgendein Typ einer flüchtigen oder nichtflüchtigen Speichervorrichtung sein und kann irgendeine Warteschlange oder Anweisungen speichern, die verwendet werden, um die Netzschnittstelle 300 zu programmieren. Die Sendewarteschlange 306 kann Daten oder Referenzen auf Daten zum Senden durch die Netzschnittstelle enthalten. Die Empfangswarteschlange 308 kann Daten oder Referenzen auf Daten, die durch die Netzschnittstelle von einem Netz empfangen wurden, enthalten. Die Deskriptorwarteschlangen 320 können Deskriptoren enthalten, die Daten oder Pakete in der Sendewarteschlange 306 oder der Empfangswarteschlange 308 referenzieren. Die Busschnittstelle 312 kann eine Schnittstelle mit der Host-Vorrichtung (nicht abgebildet) bereitstellen. Beispielsweise kann die Busschnittstelle 312 mit PCI, PCI Express, PCI-x, Serial ATA und/oder einer USB-kompatiblen Schnittstelle kompatibel sein (obwohl andere Zusammenschaltungsstandards verwendet sein können).
  • Die 4A und 4B bilden Beispiele für Speicherzuweisungen für einen oder mehrere Eingangsanschlüsse ab. Beispielsweise kann, wie in 4A gezeigt ist, eine einzelne NIC mehrere Empfangseingänge aufweisen, und die Empfangseingänge können zugewiesen sein, um Pakete für einen oder mehrere Speicherpuffer bereitzustellen. Beispielsweise kann der Speicherpuffer für Priorität 0 die Pakete höchster Priorität empfangen, die von allen Anschlüssen 0 bis N empfangen werden. Der Speicherpuffer für Priorität 1 kann Pakete der nächsthöheren Prioritätsebene von allen Anschlüssen 0 bis N empfangen. In einem Fall, in dem Verkehr mit hoher Priorität das größte Volumen ist, kann eine Größe des Speicherpuffers für Priorität 0 größer sein als die des Speicherpuffers für Priorität 1, eine Größe des Speicherpuffers für Priorität 2 und so weiter. Eine Größe eines Speicherpuffers kann sich jedoch auf das Verkehrsvolumen beziehen. In einem Fall, in dem Verkehr niedriger Priorität ein hohes Volumen aufweist, jedoch der Verkehr hoher Priorität ein geringeres Volumen aufweist als der Verkehr niedriger Priorität, kann die Größe des Puffers für den Verkehr niedriger Priorität größer sein als eine Größe eines Puffers für Verkehr hoher Priorität (nicht abgebildet). In einigen Ausführungsformen kann die Größe eines Speicherpuffers für eine Priorität relativ zu dem Verkehrsvolumen angepasst werden. In einigen Beispielen können DPDK-Ringe ohne Sperre verwendet werden, um Speicherpuffer zu bilden, um den Zugriff auf denselben Speicherort aufzulösen.
  • 4B bildet eine beispielhafte Art und Weise zum Zuweisen von Paketen aus einem Empfangsanschluss 0 bis n zu mehreren Speicherpuffern ab. Ein Speicher-Pool kann unterteilt sein, um Pakete der Prioritätsebene 0 aus einem Anschluss 0, Pakete der Prioritätsebene 1 aus einem Anschluss 0 und so weiter zu speichern. Derselbe oder ein anderer Speicher-Pool kann unterteilt sein, um Pakete der Prioritätsebene 0 aus einem Anschluss 1, Pakete der Prioritätsebene 1 aus einem Anschluss 1 und so weiter zu speichern. In einigen Beispielen können DPDK-Ringe ohne Sperre verwendet werden, um Speicherpuffer zu bilden, um den Zugriff auf denselben Speicherort aufzulösen.
  • In einem Fall mehrerer NICs können Pakete, die in den mehreren NICs klassifiziert werden, in NICs-Warteschlangen platziert werden, die für Pakete unterschiedlicher Prioritäten designiert sind. Beispielsweise können Pakete derselben Priorität aus allen NICs, und unabhängig von dem Empfangsanschluss, in einem Speicher-Pool gespeichert werden, der für eine spezielle Prioritätsebene designiert ist, auf ähnliche Weise wie in dem Beispiel von 4A.
  • 4C bildet ein Beispiel von Zuweisungen von Speicherpuffern für Pakete von mehreren NICs ab. Für mehrere NICs können priorisierte Speicher-Pools zugewiesen werden, wobei Pakete derselben Prioritätsebene aus allen NICS 0 bis N in einem Speicherpuffer für die spezielle Prioritätsebene gespeichert werden. Beispielsweise wird ein Paket der Priorität 0 von Anschluss 0 von der NIC 1 in einem Speicherpuffer für Priorität 0 gespeichert. Ähnlich werden ein Paket der Priorität 1 von Anschluss 0 von der NIC 0 und ein Paket der Priorität 1 von Anschluss 1 von der NIC 1 in dem Speicherpuffer für Priorität 1 gespeichert. In einigen Ausführungsformen entsprechen für das Beispiel von 4C die Pakete höchster Priorität dem größten Verkehrsvolumen, und dementsprechend wird den Paketen der höchsten Priorität ein größter Speicherpuffer zugewiesen. Umgekehrt entsprechen die Pakete niedrigster Priorität dem kleinsten Verkehrsvolumen, und dementsprechend wird den Paketen der niedrigsten Priorität ein kleinster Speicherpuffer zugewiesen. In anderen Beispielen können NIC 0, NIC 1 ... NIC N physikalische/virtuelle Schnittstellen wie z. B. eine Schnittstelle zwischen virtuellem Switch und VM oder eine NIC-VM-Schnittstelle repräsentieren.
  • CPU-Kerne können eine Standard- oder speziell angepasste Paketzugriffsstrategie verwenden, und können dementsprechend ihre Deskriptorabfrage- und Paketverarbeitungszyklen proportional zu den Prioritäten der Pakete von mehreren NICs zuweisen. Beispielsweise wenn die Priorität 0 eine höchste Priorität ist, können ein oder mehrere CPU-Kerne eine Deskriptorwarteschlange für einen Speicherpuffer für Priorität 0 und einen Speicherpuffer für Priorität 0 häufiger abfragen als sie eine Deskriptorwarteschlange für einen Speicherpuffer für Priorität 4 und einen Speicherpuffer für Priorität 4 abfragen. In einigen Beispielen können die CPU-Kernzyklen zuerst unter den Anschlüssen aufgeteilt werden und dann weiter gemäß den Paketprioritäten unterteilt werden. Beispielsweise können Kernzyklen gleichmäßig unterteilt sein, um auf Deskriptoren abzufragen, die Paketen aus allen Anschlüssen zugeordnet sind, und mehr Taktzyklen können zum Verarbeiten von Deskriptoren und Paketen, die Paketen höherer Priorität zugeordnet sind, als für Pakete mit niedrigerer Priorität zugewiesen werden. Ein CPU-Kern könnte die Warteschlangen hoher Priorität als erste von allen Anschlüssen abfragen, jedoch weisen die Warteschlangen höherer Priorität in einigen Fällen keine Pakete auf. In diesem Fall können die CPU-Zyklen, die reserviert sind, um die Pakte hoher Priorität zu verarbeiten, für die Warteschlangen der nächsten Prioritätsebene delegiert werden, und so weiter. Das Neuzuweisen von CPU-Zyklen zu anderen Prioritätsebenen kann möglicherweise verhindern, dass die CPU keine Paktverarbeitung während CPU-Zyklen, die für eine Prioritätsebene zugewiesen sind, ausführt.
  • In einigen Beispielen können CPU-Zyklen basierend auf dem Verkehrsvolumen für eine Prioritätsebene zugewiesen werden. Falls eine zweite bis zur niedrigsten Prioritätsklasse das höchste Volumen empfängt, kann ein Kern aus den Kernen, die der zweiten bis niedrigsten Prioritätsklasse zugeordnet sind, vorgesehen werden, um am häufigsten auf Deskriptoren und den Puffer, der der zweiten bis niedrigsten Prioritätsklasse zugeordnet ist, abzufragen.
  • 5A bildet einen Konfigurationsprozess ab. Bei 502 weist der Prozess Empfangsdeskriptorwarteschlangen / Ringe zum Empfangen von Paketen unterschiedlicher Prioritätsebenen zu. Beispielsweise kann ein Treiber Empfangsdeskriptorwarteschlangen zum Gebrauch zum Empfangen fertiggestellter Deskriptoren von einer Netzschnittstelle zuweisen.
  • Beispielsweise kann eine erste Empfangsdeskriptorwarteschlange einer ersten Ebene (höchster Priorität) zugeordnet sein. Eine zweite Empfangsdeskriptorwarteschlange kann einer zweiten Ebene (der nächsthöheren Priorität) zugeordnet sein, und so weiter. In einigen Ausführungsformen kann für eine Prioritätsebene eine Größe der Deskriptorwarteschlange von einem Volumen von Paketen, die während eines Zeitfensters empfangen werden, abhängen.
  • Bei 504 kann der Prozess unterschiedliche Speicher-Pools zum Speichern von Paketen unterschiedlicher Priorität zuweisen. Beispielsweise kann einer Empfangsdeskriptorwarteschlange der höchsten Prioritätsebene eine geeignete Speichermenge für einen Puffer zugewiesen werden. Eine Empfangsdeskriptorwarteschlange der nächsthöheren Prioritätsebene kann eine geeignete Menge separaten Speichers für einen zugewiesenen Puffer aufweisen. In einigen Ausführungsformen erhält eine höchste Prioritätsebene einen Speicher-Pool und eine Deskriptorwarteschlange mit der größten Größe. In einigen Ausführungsformen kann für eine Prioritätsebene die Menge des Speichers, der für einen Puffer zugewiesen wird, von einem Volumen der Pakete, die während eines Zeitfensters empfangen werden, abhängen.
  • Beispielsweise kann eine Standardgröße einer Deskriptorwarteschlange und eines Speicherpuffers basierend auf einer maximal erwarteten Empfangsrate für eine Verkehrsklasse eingestellt werden. In einigen Fällen kann, wenn eine maximal erwartete Empfangsrate für die Verkehrsklasse höchster Priorität eine höchste Ebene ist und die Empfangsrate für die Verkehrsklasse niedrigster Priorität eine niedrigste Ebene ist, der Verkehr höchster Priorität dem größten Speicherpuffer und der größten Deskriptorwarteschlange zugewiesen werden, während der Verkehr niedrigster Priorität dem kleinsten Speicherpuffer und der kleinsten Deskriptorwarteschlange zugewiesen werden kann. In anderen Fällen können jedoch die Größen der Puffer und Deskriptorwarteschlangen für alle Verkehrsklassen gleich sein. Ein Betriebssystem kann Puffer in dem Systemspeicher, einem Prozessor-Cache oder Kern-Cache zuweisen.
  • Bei 506 kann der Prozess eine Abfragerate basierend auf der Prioritätsebene der zugeordneten Paketwarteschlangen / Ringe anwenden. Beispielsweise kann ein Kern konfiguriert sein, eine Deskriptorwarteschlange der höchsten Priorität auf fertiggestellte Deskriptoren am häufigsten oder unter Verwendung einer höchsten Anzahl von Taktzyklen abzufragen. Der Kern (oder ein weiterer Kern) kann konfiguriert sein, eine Deskriptorwarteschlange der nächsthöheren Priorität auf fertiggestellte Deskriptoren mit einer nächsthöheren Häufigkeit oder Anzahl von Taktzyklen abzufragen, und so weiter. Dementsprechend können die Deskriptoren und der zugeordnete Paketinhalt für eine höchste Prioritätsebene häufiger verarbeitet werden als das Verarbeiten von Deskriptoren und zugeordnetem Paketinhalt für eine nächsthöhere Prioritätsebene. Die Software, die die Abfragerate eines Kerns für Deskriptorwarteschlangen steuert, könnte in das Betriebssystem (OS) als eine separate Funktion eingebettet sein oder könnte Teil der Anwendungsebenenlogik sein. Eine Abfragerate kann basierend auf dem Verkehrsvolumen für eine Verkehrsklasse konfiguriert sein, so dass eine Verkehrsklasse mit dem höchsten Verkehrsvolumen die höchste Abfragerate anwenden kann, die Verkehrsklasse mit dem nächsthöheren Verkehrsvolumen die nächsthöhere Abfragerate anwenden kann, und so weiter.
  • 5B bildet einen Konfigurationsprozess ab. Der Prozess kann für eine oder mehrere Verkehrsklassen nach einer Konfiguration angewandt werden, beispielsweise unter Verwendung eines Prozesses aus 5A. Bei 550 bestimmt der Prozess eine Abfragerate für ein Paket mit spezifischer Priorität (z. B. Verkehrsklasse). Bei 552 passt der Prozess eine Speicherpuffergröße oder Deskriptorwarteschlangengröße basierend auf einer anwendbaren Paketzugriffsabfragerate an. Beispielsweise kann eine höchste Zugriffsabfragerate eine größte zugewiesene Speicherpuffergröße und Deskriptorwarteschlangengröße aufweisen. Eine niedrigste Zugriffsabfragerate kann eine kleinste zugewiesene Speicherpuffergröße und Deskriptorwarteschlangengröße aufweisen. In anderen Beispielen können die Größe des Speicherpuffers und die Deskriptorwarteschlangengröße von einer empfangenen Paketrate für eine Verkehrsklasse / Priorität des Pakets abhängen. Eine Paketempfangsrate kann über eine oder mehrere Zeitspannen bestimmt werden. Beispielsweise falls die Paketempfangsrate für eine Verkehrsklasse für eine oder mehrere Zeitspannen über einen Schwellenwert ansteigt, kann die Speicherpuffergröße oder die Deskriptorwarteschlangengröße erhöht werden. Falls beispielsweise die Paketempfangsrate für eine Verkehrsklasse für eine oder mehrere Zeitspannen unter einen Schwellenwert abfällt, kann die Speicherpuffergröße oder die Deskriptorwarteschlangengröße verkleinert werden, und die übrige Speicherpufferzuweisung kann einem Speicherpuffer einer anderen Verkehrsklasse zugewiesen werden. Der Prozess kann sich während der Zuweisung von empfangenem Verkehr zu Puffern wiederholen. Beispielsweise kann der Prozess von 5B während der Ausführung eines Prozesses von 6 starten oder sich wiederholen.
  • In einigen Ausführungsformen kann der Prozess von 5B auch verwendet werden, um eine Abfragerate einer Deskriptorwarteschlange basierend auf dem Verkehrsvolumen für eine Verkehrsklasse anzupassen, so dass eine Verkehrsklasse mit dem höchsten Verkehrsvolumen (z. B. Empfangsrate) die höchste Abfragerate anwenden kann, die Verkehrsklasse mit dem nächsthöchsten Verkehrsvolumen die nächsthöhere Abfragerate anwenden kann, und so weiter.
  • 6 bildet einen Prozess zum Verarbeiten empfangener Pakete ab. Der Prozess kann durch eine Netzschnittstelle und einen Kern gemäß seiner Abfragerate ausgeführt werden. Bei 602 kann der Prozess eine Priorität (z. B. Klassifizierung) eines empfangenen Pakets bestimmen. Beispielsweise kann die Verkehrsklassifizierung auf einem Identifizierungskennzeichen eines virtuellen lokalen Zugangsnetzes (VLAN) (definiert in IEEE 802.IQ) basieren, vorausgesetzt, dass ein Paket eine Paketpriorität definieren kann. Ein 3-Bit-Anwenderprioritätsfeld in dem VLAN-Identifizierungskennzeichen kann verwendet werden, um eine Paketpriorität unter 8 Verkehrsklassen zu definieren. Die Priorität eines Pakets kann basierend auf einem Wert eines differenzierten Dienstcodepunkts (DSCP) in einem Internetprotokoll- (IP-) Header des empfangenen Pakets klassifiziert werden. In anderen Beispielen kann die Paketpriorität auf einem oder mehreren aus der Ursprungs-IP-Adresse, der Ziel-IP-Adresse oder dem Empfangsanschluss eines empfangenen Pakets basieren.
  • Bei 604 kann der Prozess das empfangene Paket einer Deskriptorwarteschlange und einem Speicherpuffer basierend auf der Paketklassifizierung zuweisen. Basierend auf einer bestimmten Prioritätsebene des empfangenen Pakets wird eine Deskriptorwarteschlange ausgewählt. Zusätzlich kann das Paket in einen Speicherpuffer, der der Deskriptorwarteschlange zugeordnet ist, kopiert werden, beispielsweise unter Verwendung einer Speicherdirektzugriffs-(DMA-) Kopieroperation.
  • Bei 606 kann der Prozess den Empfang von Paketen aus den Deskriptorwarteschlangen unterschiedlicher Priorität basierend auf den anwendbaren Abfragezugriffskonfigurationen erlauben. Beispielsweise kann ein Kern Pakete aus einem Speicherpuffer basierend auf verfügbaren Deskriptoren in einer Warteschlange gemäß einer vorgeschriebenen Abfragerate verarbeiten. Der Abfragezyklus eines Kerns kann angepasst werden, um einen Deskriptorring höherer Priorität und Pakete in einem zugeordneten Speicher-Pool häufiger abzufragen als eine Warteschlange niedrigerer Priorität und Pakete in einem zugeordneten Speicher-Pool. In einigen Ausführungsformen kann die Abfragerate für eine Verkehrsklasse basierend auf dem Verkehrsvolumen für die Verkehrsklasse über ein Zeitfenster angepasst werden.
  • 7 bildet ein System ab. Das System kann hier beschriebene Ausführungsformen verwenden. Das System 700 enthält einen Prozessor 710, der Verarbeitung, Betriebsmanagement und Ausführung von Anweisungen für das System 700 bereitstellt. Der Prozessor 710 kann irgendeinen Typ eines Mikroprozessors, einer zentralen Verarbeitungseinheit (CPU), einer Grafikverarbeitungseinheit (GPU) eines Verarbeitungskerns oder einer anderen Verarbeitungs-Hardware zum Bereitstellen von Verarbeitung für das System 700 oder eine Kombination von Prozessoren enthalten. Der Prozessor 710 steuert den Gesamtbetrieb des Systems 700 und kann ein oder mehrere programmierbare Allzweck- oder Spezial-Mikroprozessoren, digitale Signalprozessoren (DSPs), programmierbare Steuereinheiten, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikvorrichtungen (PLDs) oder dergleichen oder eine Kombination solcher Vorrichtungen sein oder sie enthalten.
  • In einem Beispiel enthält das System 700 eine Schnittstelle 712, die mit dem Prozessor 710 gekoppelt ist, die eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten, die Verbindungen mit höherer Bandbreite benötigen, wie z. B. das Speicherteilsystem 720, Grafikschnittstellenkomponenten 740 oder Beschleuniger 742, repräsentieren kann. Die Schnittstelle 712 repräsentiert eine Schnittstellenschaltung, die eine eigenständige Komponente oder auf einem Prozessorbaustein integriert sein kann. Wenn vorhanden bildet die Grafikschnittstelle 740 eine Schnittstelle zu Grafikkomponenten zum Bereitstellen einer visuellen Anzeige für einen Anwender des Systems 700. In einem Beispiel kann die Grafikschnittstelle 740 eine hochauflösende (HD-) Anzeigevorrichtung ansteuern, die eine Ausgabe für einen Anwender bereitstellt. Hochauflösend kann sich auf eine Anzeigevorrichtung beziehen, die eine Pixeldichte von etwa 100 PPI (Pixel pro Zoll) oder größer aufweist, und kann Formate wie Full-HD (z. B. 1080 p), Retina-Anzeigevorrichtungen, 4K (ultra-hochauflösend oder UHD) oder andere enthalten. In einem Beispiel kann die Anzeigevorrichtung eine Anzeigevorrichtung mit berührungssensitivem Bildschirm enthalten. In einem Beispiel erzeugt die Grafikschnittstelle 740 eine Anzeige basierend auf Daten, die in dem Speicher 730 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 710 ausgeführt werden, oder beidem. In einem Beispiel erzeugt die Grafikschnittstelle 740 eine Anzeige basierend auf Daten, die in dem Speicher 730 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 710 ausgeführt werden, oder beidem.
  • Beschleuniger 742 können eine Entladungs-Engine mit fester Funktion sein, auf die durch einen Prozessor 710 zugegriffen werden oder die von ihm verwendet werden kann. Beispielsweise kann ein Beschleuniger aus den Beschleunigern 742 Komprimierungs- (DC-) Fähigkeit, Kryptographiedienste wie z. B. Verschlüsselung mit öffentlichem Schlüssel (PKE), Chiffrieren, Hash/Authentifizierungsfähigkeiten, Entschlüsseln oder andere Fähigkeiten oder Dienste bereitstellen. In einigen Ausführungsformen stellt zusätzlich oder alternativ ein Beschleuniger aus den Beschleunigern 742 Feldauswahlsteuereinheitsfähigkeiten wie hier beschrieben bereit. In einigen Fällen können die Beschleuniger 742 in einen CPU-Sockel (z. B. ein Verbindungselement zu einer Hauptplatine oder einer Leiterplatte, die eine CPU enthält und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Beispielsweise können die Beschleuniger 742 einen Ein- oder Mehrkernprozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Einzel- oder Mehrebenen-Cache, Funktionseinheiten, die zum unabhängigen Ausführen von Programmen oder Threads verwendbar sind, anwendungsspezifische integrierte Schaltungen (ASICs), Prozessoren eines neuronalen Netzes (NNPs), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie z. B. im Feld programmierbare Gatter-Arrays (FPGAs enthalten. Die Beschleuniger 742 können mehrere neuronale Netze bereitstellen, Prozessorkerne oder Grafikverarbeitungseinheiten können zur Verwendung durch Modelle für künstliche Intelligenz (AI) oder maschinelles Lernen (ML) verfügbar gemacht werden. Beispielweise kann das AI-Modell irgendeines oder eine Kombination aus dem Folgenden verwenden oder enthalten: ein verstärkendes Lernschema, Q-Lernschema, Lernen mit tiefem Q oder „Asynchronous Advantage Actor-Critic“ (A3C), ein kombinatorisches neuronales Netz, ein rekurrentes kombinatorisches neuronales Netz oder ein anderes AI- oder ML-Modell. Mehrere neuronale Netze, Prozessorkerne oder Grafikverarbeitungseinheiten können zum Gebrauch durch AI- oder ML-Modelle verfügbar gemacht werden.
  • Das Speicherteilsystem 720 repräsentiert den Hauptspeicher des Systems 700 und stellt Speicherplatz für Code, der durch den Prozessor 710 ausgeführt werden soll, oder Datenwerte, die beim Ausführen einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 720 kann eine oder mehrere Speichervorrichtungen 730 wie z. B. Festwertspeicher (ROM), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM) wie z. B. DRAM oder andere Speichervorrichtungen oder eine Kombination solcher Vorrichtungen enthalten. Der Speicher 730 speichert und hostet, unter anderem, das Betriebssystem (OS) 732, um eine Software-Plattform zur Ausführung von Anweisungen in dem System 700 bereitzustellen. Zusätzlich können Anwendungen 734 auf der Software-Plattform des OS 732 aus dem Speicher 730 ablaufen. Die Anwendungen 734 repräsentieren Programme, die ihre eigene Betriebslogik aufweisen, um das Ablaufen einer oder mehrerer Funktionen auszuführen. Die Prozesse 736 repräsentieren Agenten oder Routinen, die Zusatzfunktionen für das OS 732 oder eine oder mehrere Anwendungen 734 oder eine Kombination bereitstellen. Das OS 732, die Anwendungen 734 und die Prozesse 736 stellen Software-Logik zum Bereitstellen von Funktionen für das System 700 bereit. In einem Beispiel enthält das Speicherteilsystem 720 die Speichersteuereinheit 722, die eine Speichersteuereinheit zum Erzeugen und Ausgeben von Befehlen zu dem Speicher 730 ist. Es ist zu verstehen, dass die Speichersteuereinheit 722 ein physikalischer Teil des Prozessors 710 oder ein physikalischer Teil der Schnittstelle 712 sein könnte. Beispielsweise kann die Speichersteuereinheit 722 eine integrierte Speichersteuereinheit sein, integriert auf einer Schaltung mit dem Prozessor 710.
  • Obwohl es nicht spezifisch dargestellt ist, ist zu verstehen, dass das System 700 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen enthalten kann, wie z. B. einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikationstechnisch oder elektrisch miteinander koppeln oder können die Komponenten sowohl kommunikationstechnisch als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuereinheiten oder andere Schaltungsanordnung oder eine Kombination enthalten. Busse können beispielsweise einen oder mehrere aus einem Systembus, einem „Peripheral Component Interconnect“- (PCI-) Bus, einem „HyperTransport“- oder „Industry Standard Architecture“- (ISA-) Bus, einem „Small Computer System Interface“- (SCSI-) Bus, einem universellen seriellen Bus (USB) oder einem Bus nach dem Standard 1394 des „Institute of Electrical and Electronics Engineers“ (IEEE) enthalten.
  • In einem Beispiel enthält das System 700 die Schnittstelle 714, die mit der Schnittstelle 712 gekoppelt sein kann. In einem Beispiel repräsentiert die Schnittstelle 714 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung enthalten kann. In einem Beispiel sind mehrere Anwenderschnittstellenkomponenten oder periphere Komponenten oder beides mit der Schnittstelle 714 gekoppelt. Die Netzschnittstelle 750 versorgt das System 700 mit der Fähigkeit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Berechnungsvorrichtungen) über ein oder mehrere Netze zu kommunizieren. Die Netzschnittstelle 750 kann einen Ethernet-Adapter, drahtlose Zusammenschaltungskomponenten, Mobilfunknetzzusammenschaltungskomponenten, USB (universellen seriellen Bus) oder andere auf drahtgebundenen oder drahtlosen Standards basierende oder proprietäre Schnittstellen enthalten. Die Netzschnittstelle 750 kann Daten zu einer entfernten Vorrichtung übertragen, was das Senden von im Speicher gespeicherten Daten enthalten kann. Die Netzschnittstelle 750 kann Daten von einer entfernten Vorrichtung empfangen, was Speichern empfangener Daten in den Speicher enthalten kann. Verschiedene Ausführungsformen können in Verbindung mit der Netzschnittstelle 750, dem Prozessor 710 und dem Speicherteilsystem 720 verwendet werden.
  • In einem Beispiel enthält das System 700 eine oder mehrere Eingabe/Ausgabe- (I/O-) Schnittstelle(n) 760. Die I/O-Schnittstelle 760 kann eine oder mehrere Schnittstellenkomponenten enthalten, über die ein Anwender mit dem System 700 zusammenwirkt (z. B. Audio, alphanumerisch, tastbar/berührungssensitiv oder andere Schnittstellen). Die Peripherieschnittstelle 770 kann irgendeine Hardware-Schnittstelle enthalten, die vorstehend nicht spezifisch genannt ist. Peripheriegeräte beziehen sich allgemein auf Vorrichtungen, die abhängig mit dem System 700 verbunden sind. Eine abhängige Verbindung ist derart, dass das System 700 die Software-Plattform oder Hardware-Plattform oder beides bereitstellt, auf eine Operation abläuft, und mit denen ein Anwender zusammenwirkt.
  • In einem Beispiel enthält das System 700 ein Speichereinrichtungsteilsystem [engl.: storage subsystem] 780 zum nichtflüchtigen Speichern von Daten. In einem Beispiel können in speziellen Systemimplementierungen wenigstens spezielle Komponenten der Speichereinrichtung 780 mit Komponenten des Speicherteilsystems [engl: memory subsystem] 720 überlappen. Das Speichereinrichtungsteilsystem 780 enthält Speichereinrichtung(en) 784, die irgendein herkömmliches Medium zum nichtflüchtigen Speichern großer Datenmengen sein oder enthalten können, wie z. B. eines oder mehrere aus magnetisch, Festkörper- oder optikbasierte Platten oder eine Kombination. Die Speichereinrichtung 784 enthält Code oder Anweisungen und Daten 786 in einem persistenten Zustand (d. h. der Wert wird beibehalten trotz Unterbrechung der Stromzufuhr für das System 700). Die Speichereinrichtung 784 kann generisch als ein „Speicher“ betrachtet werden, obwohl der Speicher 730 typischerweise der Ausführungs- oder Betriebsspeicher zum Bereitstellen von Anweisungen für den Prozessor 710 ist. Während die Speichereinrichtung 784 nichtflüchtig ist, kann der Speicher 730 flüchtigen Speicher enthalten (d. h. der Wert oder Zustand der Daten ist unbestimmt, falls die Stromversorgung für das System 700 unterbrochen wird). In einem Beispiel enthält das Speichereinrichtungsteilsystem 780 eine Steuereinheit 782, um eine Schnittstelle mit der Speichereinrichtung 784 zu bilden. In einem Beispiel ist die Steuereinheit 782 ein physikalischer Teil der Schnittstelle 714 oder des Prozessors 710 oder kann Schaltungen oder Logik sowohl in dem Prozessor 710 als auch in der Schnittstelle 714 enthalten.
  • Eine Stromquelle (nicht abgebildet) stellt Leistung für die Komponenten des Systems 700 bereit. Insbesondere weist die Stromquelle typischerweise eine Schnittstelle mit einer oder mehreren Stromversorgungen im System 700 auf, um Leistung für die Komponenten des Systems 700 bereitzustellen. In einem Beispiel enthält die Stromversorgung einen AD/DC-(Wechselstrom/Gleichstrom-) Adapter, der in eine Steckdose eingesteckt wird. Ein solcher Wechselstrom kann eine Stromquelle aus erneuerbarer Energie (z. B. Solargenergie) sein. In einem Beispiel enthält die Stromquelle eine DC-Stromquelle, wie z. B. einen externen AC/DC-Umsetzer. In einem Beispiel enthält die Stromquelle oder Stromversorgung eine Hardware für drahtloses Laden, um über die Nähe zu einem Ladungsfeld zu laden. In einem Beispiel kann die Stromquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Stromversorgung, eine Solarstromversorgung oder eine Brennstoffzellenquelle enthalten.
  • In einem Beispiel kann das System 700 unter Verwendung zusammengeschalteter Rechen-Sleds aus Prozessoren, Speichern, Speichereinrichtungen, Netzschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeitszusammenschaltungen können verwendet werden, wie z. B. PCIe, Ethernet oder optische Zusammenschaltungen (oder eine Kombination daraus).
  • 8 bildet einen Switch ab. Verschiedene Ausführungsformen können in oder mit dem Switch von 8 verwendet werden. Der Switch 804 kann Pakete oder Rahmen irgendeines Formats oder in Übereinstimmung mit irgendeiner Spezifikation von irgendeinem Anschluss 802-0 bis 802-X zu irgendeinem der Anschlüsse 806-0 bis 806-Y (oder umgekehrt) routen. Jeder der Anschlüsse 802-0 bis 802-X kann mit einem Netz aus einer oder mehreren zusammengeschalteten Vorrichtungen verbunden sein. Ähnlich kann jeder der Anschlüsse 806-0 bis 806-X mit einem Netz aus einer oder mehreren zusammengeschalteten Vorrichtungen verbunden sein. Der Switch 804 kann entscheiden, zu welchem Anschluss Pakete oder Rahmen zu übertragen sind, unter Verwendung einer Tabelle, die Paketeigenschaften auf einen zugeordneten Ausgangsanschluss abbildet. Zusätzlich kann der Switch 904 Paketreplizierung zum Weiterleiten eines Pakets oder Rahmens zu mehreren Anschlüssen und Einreihen von Paketen oder Rahmen in Warteschlangen vor dem Übertragen zu einem Ausgangsanschluss ausführen.
  • 9 bildet ein Beispiel eines Datenzentrums ab. Verschiedene Ausführungsformen können in oder mit dem Datenzentrum von 9 verwendet werden. Wie in 9 gezeigt ist, kann das Datenzentrum 900 ein optisches Fabric 912 enthalten. Das optische Fabric 912 kann allgemein eine Kombination aus optischen Signalisierungsmedien (z. B. optischer Verkabelung) und optischer Schaltinfrastruktur, über die irgendein spezieller Sied in dem Datenzentrum 900 Signale zu anderen Sleds in dem Datenzentrum 900 senden (oder Signale von ihnen empfangen kann), enthalten. Optische, drahtlose und/oder elektrische Signale können jedoch unter Verwendung des Fabric 912 übertragen werden. Die Signalisierungskonnektivität, die das optische Fabric 912 für irgendeinen gegebenen Sied bereitstellt, kann Konnektivität sowohl zu anderen Sleds in demselben Rack als auch Sleds in anderen Racks enthalten. Das Datenzentrum 900 enthält vier Racks 902A bis 902D, und die Racks 902A bis 902D beherbergen entsprechende Paare von Sleds 904A-1 und 904A-2, 904B-1 und 904B-2, 904C-1 und 904C-2 und 904D-1 und 904D-2. Somit enthält in diesem Beispiel das Datenzentrum 900 insgesamt acht Sleds. Das optische Fabric 912 kann Sled-Signalisierungskonnektivität mit einem oder mehreren aus den sieben anderen Sleds bereitstellen. Beispielsweise kann über das optische Fabric 9012 der Sied 904A-1 im Rack 902A Signalisierungskonnektivität sowohl mit dem Sied 904A-2 im Rack 902A als auch mit sechs anderen Sleds 904B-1, 904B-2, 904C-1, 904C-2, 904D-1 und 904D-2, die über die anderen Racks 902B, 902C und 902D des Datenzentrums verteilt sind, verarbeiten. Die Ausführungsformen sind nicht auf dieses Beispiel beschränkt. Beispielsweise kann das Fabric 912 optische und/oder elektrische Signalisierung bereitstellen.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elemente oder einer Kombination aus beiden implementiert sein. In einigen Beispielen können Hardware-Elemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logikgatter, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter enthalten. In einigen Beispielen können Software-Elemente Software-Komponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware, Firmware, Software-Module, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Software-Schnittstellen, APIs, Befehlssätze, Berechnungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination daraus enthalten. Das Bestimmen, ob ein Beispiel unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann in Übereinstimmung mit irgendeiner Anzahl von Faktoren variieren, wie z. B. gewünschter Berechnungsrate, Leistungspegel, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherbetriebsmittel, Datenbusgeschwindigkeiten und anderen Konstruktions- oder Leistungseinschränkungen, wie es für eine gegebene Implementierung gewünscht ist. Es wird darauf hingewiesen, dass Hardware-, Firmware- und/oder Software-Elemente gemeinsam oder individuell hier als „Modul“, „Logik“, „Schaltung“ oder „Schaltungsanordnung“ bezeichnet sein können.
  • Einige Beispiele können unter Verwendung eines oder als ein Herstellungserzeugnis oder wenigstens ein computerlesbares Mediums implementiert sein. Ein computerlesbares Medium kann ein nicht-transitorisches Speichermedium zum Speichern von Logik enthalten. In einigen Beispielen kann das nicht-transitorische Speichermedium einen oder mehrere Typen von computerlesbaren Speichermedien enthalten, die zum Speichern elektronischer Daten fähig sind, wie flüchtigen Speicher oder nichtflüchtigen Speicher, herausnehmbaren oder nicht herausnehmbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter enthalten. In einigen Beispielen kann die Logik verschiedene Software-Elemente enthalten, wie z. B. Software-Komponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware, Firmware, Software-Module, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Software-Schnittstellen, API, Befehlssätze, Berechnungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination daraus.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nicht-transitorisches Speichermedium zum Speichern oder Halten von Anweisungen, die dann, wenn sie durch eine Maschine, eine Berechnungsvorrichtung oder ein System ausgeführt werden, die Maschine, die Berechnungsvorrichtung oder das System veranlassen, Verfahren und/oder Operationen in Übereinstimmung mit den beschriebenen Beispielen auszuführen, enthalten. Die Anweisungen können irgendeinen geeigneten Typ von Code enthalten, wie z. B. Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code und dergleichen. Die Anweisungen können gemäß einem vordefinierten Computersprache, Art und Weise oder Syntax zum Anweisen einer Maschine, einer Berechnungsvorrichtung oder eines Systems, eine spezielle Funktion auszuführen, implementiert sein. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprache, Sprache niedriger Ebene, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte wenigstens eines Beispiels können durch repräsentative Anweisungen implementiert sein, die auf wenigstens einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die dann, wenn sie durch eine Maschine, eine Berechnungsvorrichtung oder ein System gelesen werden, die Maschine, die Berechnungsvorrichtung oder das System zum Herstellen von Logik zum Ausführen der hier beschriebenen Techniken veranlassen. Solche Repräsentationen, als IP-Kerne bezeichnet, können auf einem greifbaren, maschinenlesbaren Medium gespeichert sein und verschiedenen Kunden oder Produktionsanlagen zum Laden in die Produktionsmaschinen, die die Logik oder den Prozessor tatsächlich herstellen, zugeführt werden.
  • Das Vorkommen des Ausdrucks „ein Beispiel“ bezieht sich nicht notwendigerweise immer auf dasselbe Beispiel oder dieselbe Ausführungsform. Irgendein hier beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen Aspekt, der hier beschrieben ist, kombiniert sein, unabhängig davon, ob die Aspekte mit Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Aus dem Aufteilen, Weglassen oder Aufnehmen von Blockfunktionen, die in den begleitenden Zeichnungen dargestellt sind, ist nicht zu schließen, dass die Hardware-Komponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen in Ausführungsformen notwendigerweise aufgeteilt, weggelassen oder aufgenommen wären.
  • Einige Beispiele können unter Verwendung des Ausdrucks „gekoppelt“ oder „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen unter Verwendung der Begriffe „verbunden“ und/oder „gekoppelt“ angeben, dass zwei oder mehr Elemente in direktem physikalischem oder elektrischem Kontakt miteinander sind. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch immer noch miteinander zusammenarbeiten oder zusammenwirken.
  • Die Begriffe „erster“, „zweiter“ und dergleichen bezeichnen hier keine Reihenfolge, Menge oder Wichtigkeit, sondern sind vielmehr verwendet, um ein Element von einem weiteren zu unterscheiden. Der Begriff „ein“ bezeichnet hier nicht eine Einschränkung der Menge, sondern bezeichnet vielmehr das Vorhandensein wenigstens eines aus den bezeichneten Gegenständen. Der Begriff „festgestellt“, der hier mit Bezug auf ein Signal verwendet ist, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anlegen irgendeines Logikpegels, entweder logisch 0 oder logisch 1, an das Signal erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar nachfolgend oder nachfolgend nach einem anderen Ereignis oder Ereignissen beziehen. Andere Reihenfolgen von Schritten können gemäß alternativen Ausführungsformen ebenfalls ausgeführt werden. Darüber hinaus können zusätzliche Schritte hinzugefügt oder entfernt werden, abhängig von den speziellen Anwendungen. Irgendeine Kombination von Änderungen kann verwendet werden, und ein normaler Fachmann, der Nutzen dieser Offenbarung zieht, würde die vielen Variationen, Modifikationen und alternativen Ausführungsformen davon verstehen.
  • Disjunktive Ausdrucksweise wie z. B. der Ausdruck „wenigstens eines aus X, Y oder Z“ ist, sofern nicht spezifisch anderes festgestellt, andernfalls in dem Kontext so zu verstehen, wie sie im Allgemeinen verwendet ist, um zu präsentieren, dass irgendein Gegenstand, Begriffe usw. entweder X, Y oder Z oder irgendeine Kombination daraus (z. B. X, Y und/oder Z) sein kann. Somit ist eine solche disjunktive Ausdrucksweise nicht allgemein vorgesehen zu implizieren, und sollte nicht implizieren, dass spezielle Ausführungsformen erfordern, dass wenigstens eines aus X, wenigstens eines aus Y oder wenigstens eines aus Z jeweils vorhanden ist. Zusätzlich sollte konjunktive Ausdrucksweise, wie z. B. der Ausdruck „wenigstens eines aus X, Y und Z“, sofern nicht spezifisch anders festgestellt, ebenfalls so verstanden werden, dass sie X, Y, Z oder irgendeine Kombination daraus bedeutet, einschließlich „X, Y und/oder Z“.
  • Erläuternde Beispiele der Vorrichtungen, Systeme und Verfahren, die hier offenbart sind, sind nachstehend bereitgestellt. Eine Ausführungsform der Vorrichtungen, Systeme und Verfahren kann irgendeine oder mehrere oder irgendeine Kombination aus den nachstehend beschriebenen Beispielen aufweisen.
  • Beispiel 1 enthält eine Paketverarbeitungseinrichtung, die Folgendes umfasst: wenigstens einen Speicher und wenigstens einen Prozessor, der mit dem wenigstens einen Speicher kommunikationstechnisch gekoppelt ist, wobei der wenigstens eine Prozessor dient zum: Ausführen eines virtuellen Switch-Betriebs und: Zuweisen einer ersten Warteschlange in dem wenigstens einen Speicher, wobei die wenigstens eine Warteschlange einer ersten Priorität zugeordnet ist; Zuweisen einer zweiten Warteschlange in dem wenigstens einen Speicher, wobei die zweite Warteschlange einer zweiten Priorität, die niedriger ist als die erste Priorität, zugeordnet ist; Zuweisen eines ersten Puffers, der der ersten Warteschlange zugeordnet ist, in dem wenigstens einen Speicher; und Zuweisen eines zweiten Puffers, der der zweiten Warteschlange zugeordnet ist, in dem wenigstens einen Speicher, wobei: die erste Warteschlange größer ist als die zweite Warteschlange und der erste Puffer größer ist als der zweite Puffer; Zuweisen eines empfangenen Pakets zu einer Warteschlange und einem Puffer basierend auf seiner Prioritätsebene und Ausführen einer virtuellen Maschine, um empfangene Pakete zu verarbeiten, wobei die virtuelle Maschine zum Anwenden einer prioritätsbasierten Zugriffsabfragestrategie zum Abrufen von Paketen aus Warteschlangen und Puffern, die dem virtuellen Switch zugeordnet sind, in Prioritätswarteschlangen und Prioritätspuffer, die der virtuellen Maschine zugeordnet sind, dient, wobei die prioritätsbasierte Paketzugriffsabfragestrategie wenigstens teilweise auf der Paketprioritätsebene verwendet wird.
  • Beispiel 2 enthält irgendein Beispiel, wobei der wenigstens eine Prozessor, um prioritätsbasierte Zugriffsabfrage anzuwenden, dient zum: Abfragen der ersten Warteschlange nach einem oder mehreren Deskriptoren gemäß einer ersten Rate und Abfragen der zweiten Warteschlange nach einem oder mehreren Deskriptoren gemäß einer zweiten Rate, wobei die erste Rate größer ist als die zweite Rate.
  • Beispiel 3 enthält irgendein Beispiel, wobei der wenigstens eine Prozessor, um prioritätsbasierte Zugriffsabfrage anzuwenden, dient zum: Bereitstellen eines ersten Prozessors zum Abfragen der ersten Warteschlange nach einem oder mehreren Deskriptoren gemäß einer ersten Rate und Bereitstellen eines zweiten Prozessors zum Abfragen der zweiten Warteschlange nach einem oder mehreren Deskriptoren gemäß einer zweiten Rate, wobei die erste Rate größer ist als die zweite Rate.
  • Beispiel 4 enthält irgendein Beispiel, wobei der Betrieb des virtuellen Switch ein Zwischenstück zwischen einer Netzschnittstelle und einer virtuellen Maschine ist.
  • Beispiel 5 enthält irgendein Beispiel, wobei der erste Puffer einem ersten Anschluss einer Netzschnittstelle zugeordnet ist und der zweite Puffer einem zweiten Anschluss der Netzschnittstelle zugeordnet ist.
  • Beispiel 6 enthält irgendein Beispiel, wobei der erste Puffer wenigstens ersten und zweiten Anschlüssen einer Netzschnittstelle zugeordnet ist und der zweite Puffer wenigstens ersten und zweiten Anschlüssen einer zweiten Netzschnittstelle zugeordnet ist.
  • Beispiel 7 enthält irgendein Beispiel, wobei eine Cache-Größe, die Paketen, die der ersten Warteschlange zugeordnet sind, zugewiesen ist, größer ist als eine Cache-Größe, die Paketen, die der zweiten Warteschlange zugeordnet sind, zugewiesen ist.
  • Beispiel 8 enthält irgendein Beispiel und umfasst, in Reaktion darauf, dass eine Netzschnittstelle keine Prioritätsebene eines empfangenen Pakets bereitstellt, dass der wenigstens eine Prozessor zum Verarbeiten eines empfangenen Pakets und Bestimmen einer Priorität des empfangenen Pakets basierend auf einem Abschnitt eines Headers des empfangenen Pakets dient.
  • Beispiel 9 enthält irgendein Beispiel, wobei der wenigstens eine Prozessor, um ein empfangenes Pakets zu verarbeiten und eine Priorität des empfangenen Pakets basierend auf einem Abschnitt des Headers es empfangenen Pakets zu bestimmen, zum Anwenden eines oder mehrerer aus dem Folgenden dient: empfangsseitiger Skalierung (RSS) oder einer Datenzentrums-Bridge.
  • Beispiel 10 enthält irgendein Beispiel, wobei der Abschnitt des Headers eines oder mehrere aus dem Folgenden umfasst: ein VLAN-Header-Identifizierungskennzeichen, Wert eines differenzierten Dienstcodepunkts (DSCP), Ursprungs-IP-Adresse, Ziel-IP-Adresse oder Em pfangsanschl uss.
  • Beispiel 11 enthält irgendein Beispiel und umfasst eines oder mehrere aus dem Folgenden: eine Netzschnittstelle, eine Speichereinrichtungssteuereinheit, einen Host-Computer, einen Server, ein Rack, ein Datenzentrum, einen virtuellen Router oder ein virtuelles Gateway.
  • Beispiel 12 enthält ein Verfahren, das Folgendes umfasst: an einer Netzschnittstelle Bestimmen einer Paketpriorität basierend auf einem Header eines Pakets; Unterteilen von Speicherbetriebsmitteln, die einer virtuellen Maschine zugeordnet sind, zum Speichern des Pakets, wobei das Unterteilen von Speicherbetriebsmitteln das Zuweisen von Speicherbetriebsmitteln für Pakete höchster Priorität basierend auf einem Paketvolumen und Zuweisen von Speicherbetriebsmitteln für Pakete niedrigster Priorität basierend auf einem Paketvolumen umfasst, und Bereitstellen eines Kerns zum Ausführen von differenziertem Abfragen auf Speicherbetriebsmitteln für die virtuelle Maschine, wobei der Kern Speicherbetriebsmittel, die Paketen höchster Priorität zugeordnet sind, mit einer ersten Rate abfragt und Speicherbetriebsmittel, die Paketen niedrigster Priorität zugeordnet sind, mit einer zweiten Rate abfragt, wobei die erste Rate auf dem Paketvolumen für die Pakete höchster Priorität basiert und die zweite Rate auf dem Paketvolumen für die Pakete niedrigster Priorität basiert.
  • Beispiel 13 enthält irgendein Beispiel, wobei der Header eines oder mehrere aus dem Folgenden umfasst: ein VLAN-Header-Identifizierungskennzeichen, Wert eines differenzierten Dienstcodepunkts (DSCP), Ursprungs-IP-Adresse, Ziel-IP-Adresse oder Empfangsanschluss.
  • Beispiel 14 enthält irgendein Beispiel, wobei das Bestimmen einer Paketpriorität basierend auf einem Header eines Pakets das Anwenden eines oder mehrerer aus empfangsseitiger Skalierung (RSS) oder einer Datenzentrums-Bridge umfasst.
  • Beispiel 15 enthält irgendein Beispiel, wobei die Speicherbetriebsmittel eines oder mehrere aus dem folgenden umfassen: Speicher oder Cache.
  • Beispiel 16 enthält irgendein Beispiel, wobei: die Speicherbetriebsmittel einen ersten Puffer und einen zweiten Puffer umfassen, wobei der erste Puffer einem ersten Anschluss der Netzschnittstelle zugeordnet ist und der zweite Puffer einem zweiten Anschluss der Netzschnittstelle zugeordnet ist.
  • Beispiel 17 enthält irgendein Beispiel, wobei: die Speicherbetriebsmittel einen ersten Puffer und einen zweiten Puffer umfassen, wobei der erste Puffer wenigstens ersten und zweiten Anschlüssen der Netzschnittstelle zugeordnet ist und der zweite Puffer wenigstens ersten und zweiten Anschlüssen einer zweiten Netzschnittstelle zugeordnet ist.
  • Beispiel 18 enthält ein System, das Folgendes umfasst: eine Netzschnittstelle; wenigstens einen Speicher; und wenigstens zwei Kerne, wobei die wenigstens zwei Kerne mit der Netzschnittstelle und dem wenigstens einen Speicher kommunikationstechnisch gekoppelt sind, wobei die wenigstens zwei Kerne dienen zum: Bilden eines ersten Deskriptorrings in einem Speicher; Bilden eines zweiten Deskriptorrings in einem Speicher; Bilden eines ersten Puffers, der dem ersten Deskriptorring zugeordnet ist, in einem Speicher; Bilden eines zweiten Puffers, der dem zweiten Deskriptorring zugeordnet ist, in einem Speicher, wobei der erste Puffer einem Paket der höchsten Prioritätsebene zugeordnet ist und der zweite Puffer einem Paket der niedrigsten Prioritätsebene zugeordnet ist und der erste Puffer größer ist als der zweite Puffer; Zuweisen eines empfangenen Pakets zu dem ersten oder dem zweiten Puffer basierend auf einer Prioritätsebene des empfangenen Pakets; und Abfragen nach empfangenen Paketen basierend auf einer Prioritätsebene, wobei eine Abfragerate des Abfragens nach Paketen der höchsten Prioritätsebene höher ist als eine Abfragerate nach Paketen der niedrigsten Prioritätsebene.
  • Beispiel 19 enthält irgendein Beispiel, wobei ein Kern zum Bestimmen einer Prioritätsebene des empfangenen Pakets basierend auf einem oder mehreren aus dem Folgenden dient: einem VLAN-Header-Identifizierungskennzeichen, Wert eines differenzierten Dienstcodepunkts (DSCP), Ursprungs-IP-Adresse, Ziel-IP-Adresse oder Empfangsanschluss auf der Netzschnittstelle.
  • Beispiel 20 enthält irgendein Beispiel, wobei der erste Puffer einem ersten Anschluss einer Netzschnittstelle zugeordnet ist und der zweite Puffer einem zweiten Anschluss der Netzschnittstelle zugeordnet ist.
  • Beispiel 21 enthält irgendein Beispiel und umfasst eine zweite Netzschnittstelle, wobei der erste Puffer einem Paket der ersten Prioritätsebene von der Netzschnittstelle oder zweiten Netzschnittstelle zugeordnet ist und der zweite Puffer einem Paket der zweiten Prioritätsebene von der Netzschnittstelle oder der zweiten Netzschnittstelle zugeordnet ist.

Claims (15)

  1. Paketverarbeitungseinrichtung, die Folgendes umfasst: wenigstens einen Speicher und wenigstens eine Prozessor, der mit dem wenigstens einen Speicher kommunikationstechnisch gekoppelt ist, wobei der wenigstens eine Prozessor dient zum: Ausführen eines virtuellen Switch-Betriebs und: Zuweisen einer ersten Warteschlange in dem wenigstens einen Speicher, wobei die wenigstens eine Warteschlange einer ersten Priorität zugeordnet ist; Zuweisen einer zweiten Warteschlange in dem wenigstens einen Speicher, wobei die zweite Warteschlange einer zweiten Priorität, die niedriger ist als die erste Priorität, zugeordnet ist; Zuweisen eines ersten Puffers, der der ersten Warteschlange zugeordnet ist, in dem wenigstens einen Speicher; und Zuweisen eines zweiten Puffers, der der zweiten Warteschlange zugeordnet ist, in dem wenigstens einen Speicher, wobei: die erste Warteschlange größer ist als die zweite Warteschlange und der erste Puffer größer ist als der zweite Puffer; Zuweisen eines empfangen Pakets zu einer Warteschlange und einem Puffer basierend auf seiner Prioritätsebene und Ausführen einer virtuellen Maschine, um empfangene Pakete zu verarbeiten, wobei die virtuelle Maschine zum Anwenden einer prioritätsbasierten Zugriffsabfragestrategie zum Abrufen von Paketen aus Warteschlangen und Puffern, die dem virtuellen Switch zugeordnet sind, in Prioritätswarteschlangen und Prioritätspuffer, die der virtuellen Maschine zugeordnet sind, dient, wobei die prioritätsbasierte Paketzugriffsabfragestrategie wenigstens teilweise auf der Paketprioritätsebene verwendet wird.
  2. Einrichtung nach Anspruch 1, wobei der wenigstens eine Prozessor, um prioritätsbasierte Zugriffsabfrage anzuwenden, dient zum: Abfragen der ersten Warteschlange nach einem oder mehreren Deskriptoren gemäß einer ersten Rate und Abfragen der zweiten Warteschlange nach einem oder mehreren Deskriptoren gemäß einer zweiten Rate, wobei die erste Rate größer ist als die zweite Rate.
  3. Einrichtung nach Anspruch 1, wobei der Betrieb des virtuellen Switch ein Zwischenstück zwischen einer Netzschnittstelle und einer virtuellen Maschine ist.
  4. Einrichtung nach Anspruch 1, wobei der erste Puffer einem oder mehreren Anschlüssen einer Netzschnittstelle zugeordnet ist und der zweite Puffer einem oder mehreren Anschlüssen der Netzschnittstelle zugeordnet ist.
  5. Einrichtung nach Anspruch 1, die Folgendes umfasst: der wenigstens eine Prozessor dient, in Reaktion darauf, dass eine Netzschnittstelle keine Prioritätsebene eines empfangenen Pakets bereitstellt, zum Verarbeiten eines empfangenen Pakets und Bestimmen einer Priorität des empfangenen Pakets basierend auf einem Abschnitt eines Headers des empfangenen Pakets.
  6. Einrichtung nach Anspruch 5, wobei der wenigstens eine Prozessor, um ein empfangenes Paket zu verarbeiten und eine Priorität des empfangenen Pakets basierend auf einem Abschnitt des Headers des empfangenen Pakets zu bestimmen, zum Anwenden eines oder mehrerer aus dem Folgenden dient: empfangsseitiger Skalierung (RSS) oder einer Datenzentrums-Bridge.
  7. Einrichtung nach Anspruch 5, wobei der Abschnitt des Headers eines oder mehrere aus dem Folgenden umfasst: ein VLAN-Header-Identifizierungskennzeichen, Wert eines differenzierten Dienstcodepunkts (DSCP), Ursprungs-IP-Adresse, Ziel-IP-Adresse oder Em pfangsanschl uss.
  8. Einrichtung nach einem der Ansprüche 1-7, die eines oder mehrere aus dem Folgenden umfasst: eine Netzschnittstelle, eine Speichereinrichtungssteuereinheit, einen Host-Computer, einen Server, ein Rack, ein Datenzentrum, einen virtuellen Router oder ein virtuelles Gateway.
  9. Verfahren, das Folgendes umfasst: an einer Netzschnittstelle Bestimmen einer Paketpriorität basierend auf einem Header eines Pakets; Unterteilen von Speicherbetriebsmitteln, die einer virtuellen Maschine zugeordnet sind, zum Speichern des Pakets, wobei das Unterteilen von Speicherbetriebsmitteln das Zuweisen von Speicherbetriebsmitteln für Pakete höchster Priorität basierend auf einem Paketvolumen und Zuweisen von Speicherbetriebsmitteln für Pakete niedrigster Priorität basierend auf einem Paketvolumen umfasst, und Bereitstellen eines Kerns zum Ausführen von differenziertem Abfragen auf Speicherbetriebsmitteln für die virtuelle Maschine, wobei der Kern Speicherbetriebsmittel, die Paketen höchster Priorität zugeordnet sind, mit einer ersten Rate abfragt und Speicherbetriebsmittel, die Paketen niedrigster Priorität zugeordnet sind, mit einer zweiten Rate abfragt, wobei die erste Rate auf dem Paketvolumen für die Pakete höchster Priorität basiert und die zweite Rate auf dem Paketvolumen für die Pakete niedrigster Priorität basiert.
  10. Verfahren nach Anspruch 9, wobei der Header eines oder mehrere aus dem Folgenden umfasst: ein VLAN-Header-Identifizierungskennzeichen, Wert eines differenzierten Dienstcodepunkts (DSCP), Ursprungs-IP-Adresse, Ziel-IP-Adresse oder Empfangsanschluss.
  11. Verfahren nach Anspruch 9, wobei die Speicherbetriebsmittel eines oder mehrere aus dem folgenden umfassen: Speicher oder Cache.
  12. Verfahren nach Anspruch 9, wobei die Speicherbetriebsmittel einen ersten Puffer und einen zweiten Puffer umfassen, wobei der erste Puffer einem oder mehreren Anschlüssen der Netzschnittstelle zugeordnet ist und der zweite Puffer einem oder mehreren Anschlüssen der Netzschnittstelle zugeordnet ist.
  13. System, das Folgendes umfasst: eine Netzschnittstelle; wenigstens einen Speicher; und wenigstens zwei Kerne, wobei die wenigstens zwei Kerne mit der Netzschnittstelle und dem wenigstens einen Speicher kommunikationstechnisch gekoppelt sind, wobei die wenigstens zwei Kerne dienen zum: Bilden eines ersten Deskriptorrings in einem Speicher; Bilden eines zweiten Deskriptorrings in einem Speicher; Bilden eines ersten Puffers, der dem ersten Deskriptorring zugeordnet ist, in einem Speicher; Bilden eines zweiten Puffers, der dem zweiten Deskriptorring zugeordnet ist, in einem Speicher, wobei der erste Puffer einem Paket einer höchsten Prioritätsebene zugeordnet ist und der zweite Puffer einem Paket einer niedrigsten Prioritätsebene zugeordnet ist, und der erste Puffer größer ist als der zweite Puffer; Zuweisen eines empfangenen Pakets zu dem ersten oder dem zweiten Puffer basierend auf einer Prioritätsebene des empfangenen Pakets; und Abfragen nach empfangenen Paketen basierend auf einer Prioritätsebene, wobei eine Abfragerate des Abfragens nach Paketen der höchsten Prioritätsebene höher ist als eine Abfragerate nach Paketen der niedrigsten Prioritätsebene.
  14. System nach Anspruch 13, wobei der erste Puffer einem oder mehreren Anschlüssen einer Netzschnittstelle zugeordnet ist und der zweite Puffer einem oder mehreren Anschlüssen der Netzschnittstelle zugeordnet ist.
  15. System nach Anspruch 13 oder 14, das eine zweite Netzschnittstelle umfasst, wobei der erste Puffer einem Paket der ersten Prioritätsebene von der Netzschnittstelle oder zweiten Netzschnittstelle zugeordnet ist und der zweite Puffer einem Paket der zweiten Prioritätsebene von der Netzschnittstelle oder der zweiten Netzschnittstelle zugeordnet ist.
DE102020109669.0A 2019-05-16 2020-04-07 Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen Pending DE102020109669A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/414,502 2019-05-16
US16/414,502 US20190280991A1 (en) 2019-05-16 2019-05-16 Quality of service traffic management in high-speed packet processing systems

Publications (1)

Publication Number Publication Date
DE102020109669A1 true DE102020109669A1 (de) 2020-11-19

Family

ID=67843625

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020109669.0A Pending DE102020109669A1 (de) 2019-05-16 2020-04-07 Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen

Country Status (2)

Country Link
US (1) US20190280991A1 (de)
DE (1) DE102020109669A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10963407B1 (en) 2019-11-15 2021-03-30 Red Hat, Inc. Remote direct memory access based networking gateway
CN111163058B (zh) * 2019-12-09 2021-11-02 京信网络系统股份有限公司 Dpdk数据加密处理方法、装置和网络设备
CN111343152B (zh) * 2020-02-07 2023-01-24 北京达佳互联信息技术有限公司 数据处理方法、装置及电子设备、存储介质
US20210014177A1 (en) * 2020-09-26 2021-01-14 Intel Corporation Deterministic packet scheduling and dma for time sensitive networking
CN114531399B (zh) * 2020-11-05 2023-09-19 中移(苏州)软件技术有限公司 一种内存阻塞平衡方法、装置、电子设备和存储介质
CN112468418A (zh) * 2020-11-23 2021-03-09 盛科网络(苏州)有限公司 多级切片边缘交换设备及其实现方法
CN113098771B (zh) * 2021-03-26 2022-06-14 哈尔滨工业大学 基于Q学习的分布式自适应QoS路由方法
CN113055307B (zh) * 2021-03-31 2023-03-24 中国工商银行股份有限公司 一种网络流量分配方法及装置
US20210328944A1 (en) * 2021-06-25 2021-10-21 Intel Corporation Methods, apparatus, and articles of manufacture to dynamically allocate cache
CN113542156B (zh) * 2021-07-26 2024-03-12 中移(杭州)信息技术有限公司 报文传输方法、装置、终端设备以及存储介质
CN114268590B (zh) * 2021-11-24 2024-04-30 成都安恒信息技术有限公司 一种基于vpp的保障带宽的系统及方法
CN115499386B (zh) * 2022-07-29 2024-04-26 天翼云科技有限公司 一种数据转发方法、vpp网元设备和可读存储介质

Also Published As

Publication number Publication date
US20190280991A1 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
DE102020109669A1 (de) Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen
US11575609B2 (en) Techniques for congestion management in a network
DE102020113544A1 (de) Bedarfsgesteuerte paketwarteschlangen in einer netzwerkvorrichtung
US20200322287A1 (en) Switch-managed resource allocation and software execution
US11805065B2 (en) Scalable traffic management using one or more processor cores for multiple levels of quality of service
WO2021211172A1 (en) Storage transactions with predictable latency
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE102020132078A1 (de) Ressourcenzuteilung basierend auf anwendbarem service level agreement
US11494212B2 (en) Technologies for adaptive platform resource assignment
US20210320866A1 (en) Flow control technologies
WO2022025966A1 (en) Receiver-based precision congestion control
US11567556B2 (en) Platform slicing of central processing unit (CPU) resources
US11681625B2 (en) Receive buffer management
US20220210075A1 (en) Selective congestion notification by a network interface device
US20220078119A1 (en) Network interface device with flow control capability
US11689470B2 (en) Allocation of processors for processing packets
US20220109733A1 (en) Service mesh offload to network devices
US20220311711A1 (en) Congestion control based on network telemetry
DE102022129250A1 (de) Übertragungsrate basierend auf detektierter verfügbarer Bandbreite
DE102022103981A1 (de) Flusssteuerungstechnologien
US20230109396A1 (en) Load balancing and networking policy performance by a packet processing pipeline
DE102022117788A1 (de) Fairness bei der paketübertragungsplanung
DE112022002238T5 (de) Netzwerkschnittstellenvorrichtungs-basierte berechnungen
US20230409511A1 (en) Hardware resource selection
US20230082780A1 (en) Packet processing load balancer

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012865000

Ipc: H04L0047627500