DE112019000965T5 - Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung - Google Patents

Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung Download PDF

Info

Publication number
DE112019000965T5
DE112019000965T5 DE112019000965.6T DE112019000965T DE112019000965T5 DE 112019000965 T5 DE112019000965 T5 DE 112019000965T5 DE 112019000965 T DE112019000965 T DE 112019000965T DE 112019000965 T5 DE112019000965 T5 DE 112019000965T5
Authority
DE
Germany
Prior art keywords
network
computing device
accelerator
virtual
processing
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
DE112019000965.6T
Other languages
English (en)
Inventor
Gerald Rogers
Stephen T. Palermo
Shih-Wei Chien
Namakkal N. Venkatesan
Irene Liew
Deepal Mehta
Rajesh Gadiyar
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 DE112019000965T5 publication Critical patent/DE112019000965T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)

Abstract

Technologien zur beschleunigten Netzwerkverarbeitung weisen eine Rechenvorrichtung mit einem Prozessor und einem Beschleuniger auf. Der Beschleuniger kann ein feldprogrammierbares Gate-Array (FPGA - Field-Programmable Gate Array) sein. Der Beschleuniger weist einen virtuellen Schalter und einen Netzwerkanschluss auf, wie z.B. eine physische Ethernet-Schnittstelle. Der Netzwerkanschluss des Beschleunigers ist an einen Netzwerkanschluss eines externen Schalters gekoppelt. Der Prozessor führt mehrere virtuelle Netzwerkfunktionen aus und der virtuelle Schalter verarbeitet Netzwerkverkehr im Zusammenhang mit den virtuellen Netzwerkfunktionen. Zum Beispiel kann der virtuelle Schalter Verkehr, der durch die virtuellen Netzwerkfunktionen erzeugt wird, über den Anschluss des Beschleunigers und den Anschluss des Schalters an den Schalter weiterleiten. Jede virtuelle Netzwerkfunktion kann an eine Paravirtualisierungsschnittstelle des Beschleunigergekoppelt sein, wie z.B. eine virtuelle E/A-Warteschlange. Der Netzwerkverkehr kann innerhalb einer Kohärenzdomäne verarbeitet werden, die durch den Prozessor und den Beschleuniger gemeinsam genutzt wird. Weitere Ausführungsformen sind beschrieben und beansprucht.

Description

  • QUERVERWEIS ZU VERWANDTER ANMELDUNG
  • Die vorliegende Anmeldung beansprucht den Vorteil der vorläufigen US-Patentanmeldung Nr. 62/634,874 , eingereicht am 25. Februar 2018.
  • ALLGEMEINER STAND DER TECHNIK
  • Moderne Rechenvorrichtungen können Universalprozessorkerne sowie eine Vielzahl von Hardware-Beschleunigern zum Durchführen spezialisierter Aufgaben aufweisen. Bestimmte Rechenvorrichtungen können ein oder mehrere feldprogrammierbare Gate-Arrays (FPGA - Field-Programmable Gate Arrays) aufweisen, welche programmierbare digitale Logikressourcen aufweisen können, die durch den Endbenutzer oder den Systemintegrator konfiguriert werden können. In einigen Rechenvorrichtungen kann ein FPGA zum Durchführen von Netzwerkpaket-Verarbeitungsaufgaben verwendet werden, anstatt Universalrechenkerne zu verwenden.
  • Figurenliste
  • Die hierin beschriebenen Konzepte sind in den begleitenden Figuren beispielhaft und nicht einschränkend veranschaulicht. Der Einfachheit und Klarheit der Veranschaulichung halber sind in den Figuren veranschaulichte Elemente nicht notwendigerweise maßstabsgerecht gezeichnet. Wo dies als angemessen erachtet wurde, wurden Bezugskennzeichnungen zwischen den Figuren wiederholt, um einander entsprechende oder analoge Elemente anzugeben.
    • 1 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform eines Systems zur Netzwerkbeschleunigung;
    • 2 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Rechenvorrichtung des Systems von 1;
    • 3 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Umgebung der Rechenvorrichtung von 1 und 2;
    • 4 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Anwendungsfunktionseinheit eines virtuellen Schalters der Rechenvorrichtung von 1-3;
    • 5 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zur Netzwerkbeschleunigung, das durch die Rechenvorrichtung von 1-4 ausgeführt werden kann;
    • 6 ist eine Grafik, die beispielhaft Testergebnisse veranschaulicht, die mit dem System von 1-4 erzielt werden können; und
    • 7 ist ein vereinfachtes Blockdiagramm eines typischen Systems.
  • DETAILLIERTE BESCHREIBUNG DER ZEICHNUNGEN
  • Während die Konzepte der vorliegenden Offenbarung verschiedene Modifikationen und alternative Formen zulassen, wurden spezifische Ausführungsformen davon beispielhaft in den Zeichnungen gezeigt und werden hierin im Detail beschrieben. Es sollte jedoch verstanden werden, dass nicht die Absicht besteht, die Konzepte der vorliegenden Offenbarung auf die bestimmten offenbarten Formen zu beschränken, sondern dass ganz im Gegenteil beabsichtigt ist, alle Modifikationen, Äquivalente und Alternativen abzudecken, die mit der vorliegenden Offenbarung und den angefügten Ansprüchen im Einklang stehen.
  • Verweise in der Spezifikation auf „eine Ausführungsform“, „eine veranschaulichende Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein/e bestimmte/s Merkmal, Struktur oder Eigenschaft aufweisen kann, jedoch kann jede Ausführungsform diese/s bestimmte Merkmal, Struktur oder Eigenschaft aufweisen, muss dies jedoch nicht notwendigerweise tun. Darüber hinaus beziehen sich derartige Phrasen nicht notwendigerweise auf die gleiche Ausführungsform. Ferner wird, wenn ein/e bestimmte/s Merkmal, Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben ist, davon ausgegangen, dass es innerhalb der Kenntnisse eines Fachmanns auf dem Gebiet liegt, ein/e derartige/s Merkmal, Struktur oder Eigenschaft in Verbindung mit anderen Ausführungsformen zu realisieren, egal ob dies explizit beschrieben ist oder nicht. Außerdem sollte verstanden werden, dass Elemente, die in Form von „mindestens ein A, B und C“ in einer Liste enthalten sind, (A); (B); (C); (A und B); (A und C); (B und C) oder (A, B und C) bedeuten können. Ähnlich können Elemente, die in Form von „mindestens eines von A, B oder C“ aufgeführt sind, (A); (B); (C); (A und B); (A und C); (B und C) oder (A, B und C) bedeuten.
  • Die offenbarten Ausführungsformen können in einigen Fällen in Hardware, Firmware, Software oder jeglicher Kombination davon implementiert sein. Die offenbarten Ausführungsformen können auch als Anweisungen implementiert sein, die durch ein transitorisches oder nichttransitorisches maschinenlesbares (z.B. computerlesbares) Speichermedium getragen werden oder darauf gespeichert sind, welches durch einen oder mehrere Prozessoren gelesen und ausgeführt werden kann. Ein maschinenlesbares Speichermedium kann als jegliche/s/r Speichergerät, Mechanismus oder andere physische Struktur zum Speichern oder Übertragen von Informationen in einer durch eine Maschine lesbaren Form verkörpert sein (z.B. ein flüchtiger oder nichtflüchtiger Speicher, ein Datenträger oder ein anderes Mediengerät).
  • In den Zeichnungen können einige Struktur- oder Verfahrensmerkmale in spezifischen Anordnungen und/oder Reihenfolgen gezeigt sein. Jedoch sollte verstanden werden, dass derartige spezifische Anordnungen und/oder Reihenfolgen möglicherweise nicht erforderlich sind. Vielmehr können derartige Merkmale in einigen Ausführungsformen auch in einer unterschiedlichen Art und Weise und/oder Reihenfolge als in den veranschaulichenden Figuren gezeigt angeordnet sein. Außerdem soll der Einschluss eines Struktur- oder Verfahrensmerkmals in eine bestimmte Figur nicht implizieren, dass ein derartiges Merkmal in allen Ausführungsformen erforderlich ist, und in einigen Ausführungsformen ist es möglicherweise nicht enthalten oder kann mit anderen Merkmalen kombiniert sein.
  • Bezugnehmend auf 7 kann ein typisches System 700 zur Netzwerkverarbeitung eine oder mehrere dedizierte Netzwerkkarten zugewiesen zu jeder virtuellen Netzwerkfunktion erfordern. In dem veranschaulichenden System 700 weist eine Rechenvorrichtung 702 einen Prozessor 720 und mehrere Netzwerkschnittstellen-Controller (NICs - Network Interface Controllers) 726 auf. Der Prozessor 720 führt mehrere virtuelle Netzwerkfunktionen (VNFs - Virtual Network Functions) 722 aus. Jede VNF 722 der Rechenvorrichtung 702 ist einem oder mehreren dedizierten Anschlüssen in einem traditionellen NIC 726 zugewiesen. Jede VNF 722 kann mit Hilfe einer Hardware-Schnittstelle, wie z.B. einer E/A-Virtualisierung mit Einzelstamm (SR-IOV - Single-Root I/O Virtualization), direkten Zugriff auf den NIC 726 (oder einen Teil des NIC 726, wie z.B. eine virtuelle PCI-Funktion) haben. Zum Beispiel greift in dem veranschaulichenden System jede VNF 722 mit Hilfe der Intel® VT-d-Technologie 724, die durch den Prozessor 720 bereitgestellt wird, auf einen dedizierten NIC 726 zu. Wie gezeigt weist jeder veranschaulichende NIC 726 zwei Netzwerkanschlüsse auf, und jeder dieser Netzwerkanschlüsse ist an einen entsprechenden Anschluss 742 eines Netzwerkschalters 704 gekoppelt. Somit belegt in dem veranschaulichenden System 700 die Rechenvorrichtung 702 zum Ausführen von vier VNFs 722 acht Anschlüsse 742 des Schalters 704.
  • Bezugnehmend auf 1 weist ein System 100 zur beschleunigten Vernetzung mehrere Rechenvorrichtungen 102 in Kommunikation über ein Netzwerk 104 auf. Jede Rechenvorrichtung 102 weist einen Prozessor 120 und einen Beschleuniger 128 auf, wie z.B. ein feldprogrammierbares Gate-Array (FPGA - Field-Programmable Gate Array) 128. Der Prozessor 120 und der Beschleuniger 128 sind durch eine kohärente Zwischenverbindung 124 und eine nichtkohärente Zwischenverbindung 126 gekoppelt. Im Einsatz, wie unten beschrieben, führt eine Rechenvorrichtung 102 eine oder mehrere virtuelle Netzwerkfunktionen (VNFs) oder andere virtuelle Maschinen (VMs) aus. Netzwerkverkehr im Zusammenhang mit den VNFs wird durch einen virtuellen Schalter (vSwitch) des Beschleunigers 128 verarbeitet. Der Beschleuniger 128 weist einen oder mehrere Anschlüsse oder andere physische Schnittstellen auf, die an einen Schalter 106 des Netzwerks 104 gekoppelt sind. Jede VNF erfordert keinen dedizierten Anschluss an dem Schalter 106. Somit kann das System 100 skalierbare Netzwerkarbeitslasten mit hohem Durchsatz mit einem verringerten ToR (Top of Rack) -Schalteranschlussbedarf im Vergleich zu herkömmlichen Systemen, die traditionelle NICs und dedizierte Anschlüsse für jede VNF erfordern, ausführen. Dementsprechend erfordert jede Rechenvorrichtung 102 möglicherweise weniger NICs, wodurch Kosten und Stromverbrauch reduziert werden können. Außerdem kann das Reduzieren der Anzahl erforderlicher NICs Grenzen des Server-Formfaktors bezüglich der Anzahl physischer NIC-Erweiterungskarten, des verfügbaren Platzes im Gehäuse und/oder anderer physischer Ressourcen der Rechenvorrichtung 102 überwinden. Ferner kann die Flexibilität für Benutzer oder Mieter des Systems 100 verbessert werden, weil der Benutzer keine vorbestimmte Anzahl an NICs in jedem Server kaufen und installieren muss, und die Leistung ist nicht auf die Kapazität beschränkt, die diese NICs bereitstellen. Vielmehr kann die Leistung für das System 100 über die Gesamtdurchsatzfähigkeit der bestimmten Server-Plattform und der Netzwerkstruktur skaliert werden. Außerdem, und unerwarteterweise, belegen Tests, dass das offenbarte System 100 eine Leistung erzielen kann, die mit SR-IOV-Implementierungen vergleichbar ist, ohne die Verwendung von Standard-NICs und mit Hilfe von weniger Schalteranschlüssen. Außerdem belegen Tests, dass das System 100 eine bessere Leistung als Softwarebasierte Systeme erzielen kann.
  • Bezugnehmend auf 6 veranschaulicht die Grafik 600 Testergebnisse, die durch das System 100 erzielt werden können, im Vergleich zu typischen Systemen. Der Balken 602 veranschaulicht den Durchsatz, der durch ein System unter Verwendung einer SR-IOV/VT-d-PCI-Passthrough-Virtualisierung, ähnlich dem System 700 von 7, erzielt wird. Der Balken 604 veranschaulicht den Durchsatz, der durch ein System 100 mit einem FPGA-Beschleuniger 128, wie hierin offenbart, erzielt werden kann. Der Balken 606 veranschaulicht den Durchsatz, der durch ein System unter Verwendung des Intel-DPDK (Data Plane Development Kit) erzielt wird, bei welchem es sich um ein Hochleistungs-Softwarepaket-Verarbeitungsframework handelt. Wie gezeigt erzielt das SR-IOV-System 700 etwa 40 Gbps, das FPGA-System 100 erzielt etwa 36,4 Gbps und das DPDK-System erzielt etwa 15 Gbps. Das SR-IOV-System 700 erzielt etwa 2,67 Mal den Durchsatz des DPDK (Software) -Systems und etwa 1,1 Mal den Durchsatz des FPGA-Systems 100. Das FPGA-System 100 erzielt etwa 2,4 Mal den Durchsatz des DPDK (Software) -Systems. Die Kurve 608 veranschaulicht die Schalteranschlüsse, die durch jedes System verwendet werden. Wie gezeigt verwendet das SR-IOV-System 700 vier Anschlüsse, das FPGA-System 100 verwendet zwei Anschlüsse und das DPDK-System verwendet zwei Anschlüsse. Die Kurve 610 veranschaulicht die Prozessorkerne, die durch jedes System verwendet werden. Wie gezeigt verwendet das SR-IOV-System 700 null Kerne, das FPGA-System 100 verwendet null Kerne und das DPDK-System verwendet sechs Kerne. Somit stellt, wie in der Grafik 600 gezeigt, das FPGA-System 100 eine Durchsatzleistung zur Verfügung, die mit der von typischen SR-IOV-Systemen 700 vergleichbar ist, mit einer reduzierten NIC-Anschlussnutzung und ohne die Verwendung zusätzlicher Prozessorkerne.
  • Wieder bezugnehmend auf 1 kann jede Rechenvorrichtung 102 als jegliche Art einer Rechen- oder Computervorrichtung verkörpert sein, die zum Durchführen der hierin beschriebenen Funktionen in der Lage ist, einschließlich, ohne Einschränkung, eines Computers, eines Servers, einer Workstation, eines Desktop-Computers, eines Laptop-Computers, eines Notebook-Computers, eines Tablet-Computers, einer mobilen Rechenvorrichtung, einer tragbaren Rechenvorrichtung, einer Netzwerk-Appliance, einer Web-Appliance, eines verteilten Rechensystems, eines Prozessor-basierten Systems und/oder eines Unterhaltungselektronikgerätes. Wie in 1 gezeigt, weist die Rechenvorrichtung 102 veranschaulichend den Prozessor 120, den Beschleuniger 128, ein Eingabe/Ausgabe-Untersystem 130, einen Arbeitsspeicher 132, ein Datenspeichergerät 134 und ein Kommunikationsuntersystem 136 und/oder andere Komponenten und Vorrichtungen auf, die üblicherweise in einem Server oder einer ähnlichen Rechenvorrichtung zu finden sind. Natürlich kann die Rechenvorrichtung 102 in anderen Ausführungsformen auch andere oder zusätzliche Komponenten aufweisen, wie z.B. diejenigen, die üblicherweise in einem Servercomputer zu finden sind (z.B. verschiedene Eingabe/AusgabeVorrichtungen). Außerdem können in einigen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten in einer anderen Komponente eingeschlossen sein oder anderweitig einen Abschnitt davon bilden. Zum Beispiel kann in einigen Ausführungsformen der Arbeitsspeicher 132, oder Abschnitte davon, in dem Prozessor 120 eingeschlossen sein.
  • Der Prozessor 120 kann als jegliche Art von Prozessor verkörpert sein, der zum Durchführen der hierin beschriebenen Funktionen in der Lage ist. Veranschaulichend ist der Prozessor 120 ein Mehrkernprozessor 120 mit zwei Prozessorkernen 122. Natürlich kann der Prozessor 120 in anderen Ausführungsformen auch als (ein) Einzel- oder Mehrkernprozessor(en), ein digitaler Signalprozessor, ein Mikro-Controller oder ein/e andere/r Prozessor oder Verarbeitungs-/Steuerschaltung verkörpert sein. Ähnlich kann der Arbeitsspeicher 132 als jegliche Art von flüchtigem oder nichtflüchtigem Arbeitsspeicher oder Datenspeicher verkörpert sein, der zum Durchführen der hierin beschriebenen Funktionen in der Lage ist. Im Einsatz kann der Arbeitsspeicher 132 verschiedene Daten und Software speichern, die während des Einsatzes der Rechenvorrichtung 102 verwendet werden, wie z.B. Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Über das E/A-Untersystem 130, welches als Schaltungen und/oder Komponenten zum Ermöglichen von Eingabe/Ausgabe-Operationen mit dem Prozessor 120, dem Beschleuniger 128, dem Arbeitsspeicher 132 und anderen Komponenten der Rechenvorrichtung 102 verkörpert sein kann, ist der Arbeitsspeicher 132 kommunikativ an den Prozessor 120 gekoppelt. Zum Beispiel kann das E/A-Untersystem 130 als Speicher-Controller-Hubs, Eingabe/Ausgabe-Steuerzentralen, Sensor-Hubs, Firmware-Vorrichtungen, Kommunikationsanbindungen (d.h. Punkt-zu-Punkt-Anbindungen, Busanbindungen, Drähte, Kabel, Lichtleiter, Leiterplattenspuren usw.) und/oder andere Komponenten und Untersysteme zum Ermöglichen der Eingabe/Ausgabe-Operationen verkörpert sein oder diese anderweitig aufweisen. In einigen Ausführungsformen kann das E/A-Untersystem 130 einen Abschnitt eines Ein-Chip-Systems (SoC - System-on-a-Chip) bilden und kann, zusammen mit dem Prozessor 120, dem Arbeitsspeicher 132 und anderen Komponenten der Rechenvorrichtung 102, auf einem einzelnen integrierten Schaltungschip eingeschlossen sein.
  • Das Datenspeichergerät 134 kann als jegliche Art von Vorrichtung oder Vorrichtungen verkörpert sein, die zur Kurzzeit- oder Langzeitspeicherung von Daten konfiguriert ist/sind, wie zum Beispiel Speichergeräte und -schaltungen, Speicherkarten, Festplattenlaufwerke, Solid-State-Laufwerke, nichtflüchtiger Flash-Speicher oder andere Datenspeichergeräte. Die Rechenvorrichtung 102 weist auch das Kommunikationsuntersystem 136 auf, welches als jegliche Kommunikationsschaltung, -vorrichtung oder Sammlung davon verkörpert sein kann, die zum Ermöglichen von Kommunikation zwischen der Rechenvorrichtung 102 und anderen entfernten Vorrichtungen über das Computernetzwerk 104 in der Lage ist. Zum Beispiel kann das Kommunikationsuntersystem 136 als ein Netzwerkschnittstellen-Controller (NIC) zum Senden und/oder Empfangen von Netzwerkdaten an/von entfernte/n Vorrichtungen verkörpert sein oder diesen anderweitig aufweisen. Das Kommunikationsuntersystem 136 kann zum Verwenden jeglicher einen oder mehreren Kommunikationstechnologien (z.B. verdrahtete oder drahtlose Kommunikation) und assoziierter Protokolle (z.B. Ethernet, InfiniBand®, Bluetooth®, Wi-Fi®, WiMAX, 3G, 4G LTE usw.) konfiguriert sein, um eine derartige Kommunikation zu bewirken.
  • Wie in 1 gezeigt, weist die Rechenvorrichtung 102 einen Beschleuniger 128 auf. Der Beschleuniger 128 kann als ein feldprogrammierbares Gate-Array (FPGA - Field-Programmable Gate Array), eine anwendungsspezifische integrierte Schaltung (ASIC - Application-Specific Integrated Circuit), eine Grafikverarbeitungseinheit (GPU - Graphics Processing Unit), ein KI (künstliche Intelligenz) -Beschleuniger, ein Co-Prozessor oder eine andere digitale Logikvorrichtung, die zum Durchführen beschleunigter Netzwerkfunktionen in der Lage ist, verkörpert sein. Veranschaulichend, wie weiter unten in Verbindung mit 2 beschrieben, ist der Beschleuniger 128 ein FPGA, das in einem Multi-Chip-Package mit dem Prozessor 120 enthalten ist. Der Beschleuniger 128 kann über mehrere Hochgeschwindigkeits-Verbindungsschnittstellen, einschließlich der kohärenten Zwischenverbindung 124 und einer oder mehrerer nichtkohärenter Zwischenverbindungen 126, an den Prozessor 120 gekoppelt sein.
  • Die kohärente Zwischenverbindung 124 kann als eine Hochgeschwindigkeits-Datenzwischenverbindung verkörpert sein, die zum Aufrechterhalten von Datenkohärenz zwischen einem Last-Level-Cache des Prozessors 120, jeglichem Cache oder einem anderen lokalen Arbeitsspeicher des Beschleunigers 128 und dem Arbeitsspeicher 132 in der Lage ist. Zum Beispiel kann die kohärente Zwischenverbindung 124 als eine im Chip integrierte Zwischenverbindung (IDI - In-Die Interconnect), eine Intel-UPI (UltraPath Interconnect), eine QPI (QuickPath Interconnect), eine IAL (Intel Accelerator Link) oder eine andere kohärente Zwischenverbindung verkörpert sein. Die nichtkohärente Zwischenverbindung 126 kann als eine Hochgeschwindigkeits-Datenzwischenverbindung verkörpert sein, die keine Datenkohärenz bereitstellt, wie z.B. ein peripherer Bus (z.B. ein PCI Express-Bus), eine Strukturzwischenverbindung, wie z.B. eine Intel-Omni-Path-Architektur, oder eine andere nichtkohärente Zwischenverbindung. Zusätzlich oder alternativ dazu sollte verstanden werden, dass in einigen Ausführungsformen die kohärente Zwischenverbindung 124 und/oder die nichtkohärente Zwischenverbindung 126 verschmolzen sein können, um eine Zwischenverbindung zu bilden, die zum Bedienen beider Funktionen in der Lage ist. In einigen Ausführungsformen kann die Rechenvorrichtung 102 mehrere kohärente Zwischenverbindungen 124, mehrere nichtkohärente Zwischenverbindungen 126 und/oder mehrere verschmolzene Zwischenverbindungen aufweisen.
  • Die Rechenvorrichtung 102 kann ferner ein oder mehrere Peripheriegeräte 138 aufweisen. Die Peripheriegeräte 138 können jegliche Anzahl zusätzlicher Eingabe/AusgabeVorrichtungen, Schnittstellengeräte und/oder anderer Peripheriegeräte aufweisen. Zum Beispiel können in einigen Ausführungsformen die Peripheriegeräte 138 einen Touchscreen, Grafikschaltungen, eine Grafikverarbeitungseinheit (GPU) und/oder Prozessorgrafiken, eine Audiovorrichtung, ein Mikrofon, eine Kamera, eine Tastatur, eine Maus, eine Netzwerkschnittstelle und/oder andere Eingabe/Ausgabe-Vorrichtungen, Schnittstellengeräte und/oder Peripheriegeräte beinhalten.
  • Die Rechenvorrichtungen 102 können zum Senden und Empfangen von Daten miteinander und/oder mit anderen Vorrichtungen des Systems 100 über das Netzwerk 104 konfiguriert sein. Das Netzwerk 104 kann als jegliche Anzahl verschiedener verdrahteter und/oder drahtloser Netzwerke verkörpert sein. Zum Beispiel kann das Netzwerk 104 als ein verdrahtetes oder drahtloses lokales Netzwerk (LAN - Local Area Network) und/oder ein verdrahtetes oder drahtloses Weitbereichsnetzwerk (WAN - Wide Area Network) verkörpert sein oder dieses anderweitig aufweisen. Als solches kann das Netzwerk 104 jegliche Anzahl zusätzlicher Vorrichtungen, wie z.B. zusätzliche Computer, Router und Schalter, zum Ermöglichen der Kommunikation zwischen den Vorrichtungen des Systems 100 aufweisen. In der veranschaulichenden Ausführungsform ist das Netzwerk 104 als ein lokales Ethernet-Netzwerk verkörpert. Das Netzwerk 104 weist einen veranschaulichenden Schalter 106 auf, welcher als ein ToR (Top-of-Rack) -Schalter, ein MoR (Middle-of-Rack) -Schalter oder ein anderer Schalter verkörpert sein kann. Natürlich kann das Netzwerk 104 mehrere Schalter 106 und andere Netzwerkvorrichtungen aufweisen.
  • Bezugnehmend auf 2 veranschaulicht das Diagramm 200 eine potentielle Ausführungsform einer Rechenvorrichtung 102. Wie gezeigt weist die Rechenvorrichtung 102 ein Multi-Chip-Package (MCP) 202 auf. Das MCP 202 weist den Prozessor 120 und den Beschleuniger 128 sowie die kohärente Zwischenverbindung 124 und die nichtkohärente Zwischenverbindung 126 auf. Veranschaulichend ist der Beschleuniger 128 ein FPGA, welches als eine integrierte Schaltung verkörpert sein kann, die programmierbare digitale Logikressourcen aufweist, die nach der Herstellung konfiguriert werden können. Das FPGA 128 kann zum Beispiel ein konfigurierbares Array von Logikblöcken in Kommunikation über einen konfigurierbaren Datenaustausch aufweisen. Wie gezeigt weist die Rechenvorrichtung 102 ferner den Arbeitsspeicher 132 und das Kommunikationsuntersystem 136 auf. Das FPGA 128 ist an das Kommunikationsuntersystem 136 gekoppelt und kann somit Netzwerkdaten senden und/oder empfangen. Außerdem sollte verstanden werden, dass in einigen Ausführungsformen der Arbeitsspeicher 132 und/oder das Kommunikationsuntersystem 136, obwohl sie in 2 als diskrete Komponenten getrennt vom MCP 202 veranschaulicht sind, auch in dem MCP 202 eingeschlossen sein können.
  • Wie gezeigt weist das FPGA 128 eine FPGA-Schnittstelleneinheit (FIU - FPGA Interface Unit) 204 auf, welche als digitale Logikressourcen verkörpert sein kann, die durch einen Hersteller, Verkäufer oder eine andere Entität im Zusammenhang mit der Rechenvorrichtung 102 konfiguriert werden. Die FIU 204 implementiert die Schnittstellenprotokolle und Handhabbarkeit für Anbindungen zwischen dem Prozessor 120 und dem FPGA 128. In einigen Ausführungsformen kann die FIU 204 auch Plattformfähigkeiten bereitstellen, wie z.B. die Intel-Virtualisierungstechnologie für gerichtete E/A (Intel VT-d), Sicherheit, Fehlerüberwachung, Leistungsüberwachung, Strom- und Temperaturmanagement, partielle Rekonfiguration usw. Wie gezeigt weist die FIU 204 ferner einen UPI (UltraPath Interconnect) -Block 206 gekoppelt an die kohärente Zwischenverbindung 124 und einen PCIe (PCI Express) -Block 208 gekoppelt an die nichtkohärente Zwischenverbindung 126 auf. Der UPI-Block 206 und der PCIe-Block 208 können als digitale Logik verkörpert sein, die zum Transportieren von Daten zwischen dem FPGA 128 und dem Prozessor 120 über die physischen Zwischenverbindungen 124 bzw. 126 konfiguriert sind. Der physische kohärente UPI-Block 206 und der physische nichtkohärente Block 208 und ihre assoziierten Zwischenverbindungen können als ein Satz virtueller Kanäle (VCs - Virtual Channels) verbunden mit einem VC-Steuerblock gemultiplext sein.
  • Das FPGA 128 weist ferner eine oder mehrere beschleunigte Funktionseinheiten (AFUs - Accelerated Function Units) 210 auf. Jede AFU 210 kann als digitale Logik verkörpert sein, die zum Durchführen einer oder mehrerer beschleunigter Vernetzungsfunktionen konfiguriert ist. Zum Beispiel kann jede AFU 210 als smarte NIC-Logik, smarte vSwitch-Logik oder andere Logik verkörpert sein, die eine oder mehrere Netzwerkarbeitslasten durchführt (z.B. vom Benutzer entwickelte kundenspezifische Datenpfadlogik, wie z.B. Weiterleitung, Klassifizierung, Paketsteuerung, Kapselung, Sicherheit, Dienstqualität usw.). Veranschaulichend kann jede AFU 210 durch einen Benutzer der Rechenvorrichtung 102 konfiguriert werden. Jede AFU 210 kann unter Verwendung von einem oder mehreren virtuellen Kanälen (VCs), die mit Hilfe der FIU 204 durch die kohärente Zwischenverbindung 124 und/oder die nichtkohärente Zwischenverbindung 126 unterstützt werden, auf Daten in dem Arbeitsspeicher 132 zugreifen. Obwohl in 2 als ein FPGA 128 veranschaulicht, welches mehrere AFUs 210 aufweist, sollte verstanden werden, dass in einigen Ausführungsformen der Beschleuniger 128 als eine ASIC, ein Co-Prozessor oder ein anderer Beschleuniger 128 verkörpert sein kann, die/der auch eine oder mehrere AFUs 210 aufweist, um beschleunigte Vernetzungsfunktionen bereitzustellen. In diesen Ausführungsformen können die AFUs 210 feststehende Funktionen oder anderweitig nicht durch den Benutzer konfigurierbar sein.
  • Bezugnehmend auf 3 etabliert die Rechenvorrichtung 102 in einer veranschaulichenden Ausführungsform während des Betriebs eine Umgebung 300. Die veranschaulichende Umgebung 300 weist eine oder mehrere virtuelle Netzwerkfunktionen (VNFs) 302, einen Monitor einer virtuellen Maschine (VMM - Virtual Machine Monitor) 304, einen virtuellen E/A-Block 306, einen vSwitch 308 und physische Schnittstellen 310 auf. Wie gezeigt können die verschiedenen Komponenten der Umgebung 300 als Hardware, Firmware, Software oder eine Kombination davon verkörpert sein. Als solche können in einigen Ausführungsformen eine oder mehrere der Komponenten der Umgebung 300 als Schaltungen oder eine Sammlung von elektrischen Vorrichtungen verkörpert sein (z.B. VNF-Schaltungen 302, VMM-Schaltungen 304, virtuelle E/A-Block-Schaltungen 306, vSwitch-Schaltungen 308 und/oder physische Schnittstellenschaltungen 310). Es sollte verstanden werden, dass in derartigen Ausführungsformen eine oder mehrere der VNF-Schaltungen 302, der VMM-Schaltungen 304, der virtuellen E/A-Block-Schaltungen 306, der vSwitch-Schaltungen 308 und/oder der physischen Schnittstellenschaltungen 310 einen Abschnitt des Prozessors 120, des Beschleunigers 128, des E/A-Untersystems 130 und/oder anderer Komponenten der Rechenvorrichtung 102 bilden können. Außerdem können in einigen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten einen Abschnitt einer anderen Komponente bilden und/oder eine oder mehrere der veranschaulichenden Komponenten können unabhängig voneinander sein.
  • Der VMM 304 kann als jegliche/r Monitor einer virtuellen Maschine, Hypervisor oder andere Komponente verkörpert sein, der/die das Ausführen virtualisierter Arbeitslasten auf der Rechenvorrichtung 102 gestattet. Der VMM 304 kann die komplette Kontrolle über die Rechenvorrichtung 102 haben, zum Beispiel durch das Ausführen in einem nicht-virtualisierten Host-Modus, wie z.B. auf Ringebene 0 und/oder im VMX-Root-Modus. Jede VNF 302 kann als jegliche/s virtuelle Gastmaschine, Gastbetriebssystem oder andere Gastsoftware verkörpert sein, die/das zum Durchführen einer virtualisierten Arbeitslast auf der Rechenvorrichtung 102 konfiguriert ist. Zum Beispiel kann jede VNF 302 als eine virtuelle Netzwerkfunktion (VNF) oder eine andere Netzwerkarbeitslast verkörpert sein (z.B. vom Benutzer entwickelte kundenspezifische Datenpfadlogik, wie z.B. Weiterleitung, Klassifizierung, Paketsteuerung, Kapselung, Sicherheit, Dienstqualität usw.). Der VMM 304 kann die Isolierung zwischen den VNFs 302 durchsetzen und anderweitig auch die Plattformsicherheit durchsetzen. Somit kann die Rechenvorrichtung 102 Gäste hosten, die durch mehrere Benutzer oder andere Mieter ausgeführt werden. Die VNFs 302 und der VMM 304 werden durch den Prozessor 120 ausgeführt. Der VMM 304 kann zum Konfigurieren des Beschleunigers 128 mit dem vSwitch 308 konfiguriert sein.
  • Der virtuelle E/A-Block 306 kann als ein/e oder mehrere E/A-Anschlüsse, Warteschlangen oder andere E/A-Schnittstellen verkörpert sein, auf den/die durch die VNFs 302 zugegriffen werden kann. Der virtuelle E/A-Block 306 kann mit einem oder mehreren paravirtualisierten Treibern, welche Hochleistungs-E/A für die VNFs 302 bereitstellen können, gekoppelt sein, als solche verkörpert sein oder diese anderweitig aufweisen. Veranschaulichend kann der virtuelle E/A-Block 306 als ein/e oder mehrere Virtio-Warteschlangen, Treiber und/oder andere assoziierte Komponenten verkörpert sein. Der VMM 304 kann ferner zum Koppeln jeder VNF 302 an eine Paravirtualisierungsschnittstelle, die durch den virtuellen E/A-Block 306 bereitgestellt wird, konfiguriert sein.
  • Jede physische Schnittstelle 310 kann als eine Ethernet PHY, eine MAC oder eine andere physische Schnittstelle verkörpert sein. Jede physische Schnittstelle 310 ist durch eine Netzwerkanbindung an einen Anschluss 312 eines externen Schalters 106 (z.B. ein ToR-Schalter) gekoppelt. Die Netzwerkanbindung kann eine oder mehrere Kommunikationsspuren, Drähte, Rückwandplatinen, optische Anbindungen, Kommunikationskanäle und/oder andere Kommunikationskomponenten aufweisen.
  • Der vSwitch 308 ist zum Verarbeiten von Netzwerkverkehr im Zusammenhang mit den VNFs 302 konfiguriert. Der Beschleuniger 128 und/oder der Prozessor 120 können über den virtuellen E/A-Block 306 auf den Netzwerkverkehr zugreifen. Der Netzwerkverkehr kann innerhalb einer Kohärenzdomäne verarbeitet werden, die durch den Beschleuniger 128 und den Prozessor 120 gemeinsam genutzt wird. Zum Beispiel kann der Netzwerkverkehr über die kohärente Zwischenverbindung 124 zwischen dem Prozessor 120 und dem Beschleuniger 128 kommuniziert werden. Der vSwitch 308 kann Netzwerkverkehr über eine physische Schnittstelle 310 und den entsprechenden Anschluss 312 von den VNFs 302 an den Schalter 106 und/oder von dem Schalter 106 an die VNFs 302 weiterleiten. Der vSwitch 308 kann auch Netzwerkverkehr zwischen mehreren VNFs 302 weiterleiten.
  • Bezugnehmend auf 4 ist eine potentielle Ausführungsform des Beschleunigers 128 gezeigt. Der veranschaulichte Beschleuniger 128 kann den virtuellen E/A-Block 306, den vSwitch 308 und/oder die physische Schnittstelle 310, wie oben beschrieben, aufweisen. Diese Komponenten des Beschleunigers 128 können zum Beispiel als eine AFU 210 des Beschleunigers 128 verkörpert sein. Wie gezeigt weist der Beschleuniger 128 eine Komplettpaket-Verarbeitungspipeline auf. Insbesondere weist der veranschaulichende Beschleuniger 128 einen gDMA-Block 402, einen Pipeline-Konfigurationsblock 404, einen OVS (Open vSwitch) -Virtio-Handler-Block 406, einen E/A-Konfigurationsblock 408, eine Retimer-Karte 410, einen 10 GB-MAC-Block 412, einen Eintrittsratenbegrenzer 414, einen Tunnelungsblock 416 mit VxLAN-Entkapselungsblock 418 und NVGRE (Network Virtualization using Generic Routing Encapsulation) -Entkapselungsblock 420, einen OpenFlow-Klassifizierer 422, einen FIB- (Forwarding Information Base) und Aktionsblock 424 mit EM (Exact Match) -Block 426, Megaflow-Block 428 und OpenFlow-Aktionsblock 430, eine Paketinfrastruktur 432, einen Tunnelungsblock 434 mit VxLAN-Kapselungsblock 436 und NVGRE-Kapselungsblock 438, einen Kreuzschienenschalter 440 und einen Austritts-QoS-/Verkehrsformungsblock 442 auf.
  • In der veranschaulichenden Ausführungsform kann die physische Schnittstelle 310 als die MAC 412 und/oder der Retimer 410 verkörpert sein. Wie oben beschrieben, sind diese Komponenten über eine Netzwerkanbindung an einen Anschluss 312 eines externen Schalters 106 gekoppelt. Ähnlich kann in der veranschaulichenden Ausführungsform der virtuelle E/A-Block 306 als der gDMA 402 und/oder der Virtio-Handler 406 verkörpert sein. Der vSwitch 308 kann als die verbleibenden Komponenten des Beschleunigers 128 verkörpert sein. Zum Beispiel kann der veranschaulichende Beschleuniger 128 eingehenden Netzwerkverkehr über den Retimer 410 und die MAC 412 empfangen und diese Daten an die Tunnel 416 bereitstellen. Ähnlich kann der Beschleuniger Netzwerkverkehr, der durch die VNFs 302 erzeugt wird, über den gDMA 402, den Virtio-Handler 406 und den Eintrittsratenbegrenzer 414 empfangen und diese Daten an die Tunnel 416 bereitstellen. Der Beschleuniger 128 verarbeitet den Netzwerkverkehr mit Hilfe der Tunnel 416, der Paketinfrastruktur 432, welche den OF-Klassifizierer 422 und FIB-/Aktionstabellen 424 aufweist, und der Tunnel 434. Nach der Verarbeitung wird der Netzwerkverkehr an den Kreuzschienenschalter 440 und die Austritts-QoS/Verkehrsformung 442 bereitgestellt. Netzwerkverkehr, der für den Schalter 106 bestimmt ist, wird für den Austritt an die MAC 412 bereitgestellt. Netzwerkverkehr, der für die VNFs 302 bestimmt ist, wird an den Virtio-Handler 406 bereitgestellt.
  • Bezugnehmend auf 5 kann die Rechenvorrichtung 102 im Einsatz ein Verfahren 500 zur beschleunigten Netzwerkverarbeitung ausführen. Es sollte verstanden werden, dass in einigen Ausführungsformen die Operationen des Verfahrens 500 durch eine oder mehrere Komponenten der Umgebung 300 der Rechenvorrichtung 102, wie in 3 gezeigt, durchgeführt werden können. Das Verfahren 500 beginnt mit Block 502, in welchem die Rechenvorrichtung 102 eine AFU 210 des Beschleunigers 128 für Operationen des vSwitch 308 konfiguriert. Die Rechenvorrichtung 102 kann zum Beispiel die Konfiguration oder partielle Konfiguration des FPGA 128 mit einem Bitstrom oder einem anderen Code für die Funktionen des vSwitch 308 durchführen. Die Rechenvorrichtung 102 kann auch Netzwerk-Routingregeln, Flussregeln, Aktionen, QoS und andere Netzwerkkonfigurationen des vSwitch 308 konfigurieren.
  • In Block 504 bindet die Rechenvorrichtung 102 einen oder mehrere Anschlüsse oder andere physische Schnittstellen 310 des Beschleunigers 128 an einen externen Schalter 106. Zum Beispiel kann die Rechenvorrichtung 102 eine/n oder mehrere MACs, PHYs oder andere Ethernet-Anschlüsse des Beschleunigers 128 an (einen) entsprechende(n) Anschluss/Anschlüsse des externen Schalters 106 binden. Die Anschlüsse des Beschleunigers 128 können als Hardwareanschlüsse mit fester Funktion oder rekonfigurierbare „Soft“-Anschlüsse verkörpert sein. In einigen Ausführungsformen können die Anschlüsse des Beschleunigers 128 vorkonfiguriert oder anderweitig durch einen Hersteller oder eine andere Entität im Zusammenhang mit dem Beschleuniger 128 bereitgestellt sein.
  • In Block 506 konfiguriert die Rechenvorrichtung 102 eine VNF 302 zur Netzwerkverarbeitung. Die Rechenvorrichtung 102 kann zum Beispiel die VNF 302 laden oder die VNF 302 anderweitig initialisieren. Die VNF 302 kann durch einen Mieter oder einen anderen Benutzer der Rechenvorrichtung 102 bereitgestellt werden. In Block 508 bindet die Rechenvorrichtung 102 die VNF 302 an eine Virtio-Warteschlange des Beschleunigers 128 oder eine andere paravirtualisierte Schnittstelle des Beschleunigers 128. Die Rechenvorrichtung 102 kann zum Beispiel die VNF 302 mit einem/r oder mehreren paravirtualisierten Treibern, Warteschlangen, Puffern oder anderen Schnittstellen des Beschleunigers 128 konfigurieren.
  • In Block 510 bestimmt die Rechenvorrichtung 102, ob zusätzliche VNFs 302 konfiguriert werden sollten. Wenn dem so ist, kehrt das Verfahren 500 zu Block 506 zurück, um zusätzliche VNFs 302 zu laden. Jede zusätzliche VNF 302 kann an eine oder mehrere dedizierte Virtio-Warteschlangen oder andere Schnittstellen des Beschleunigers 128 gebunden werden. Jedoch muss der Beschleuniger 128 nicht an zusätzliche Anschlüsse des Schalters 106 gebunden werden. Wieder bezugnehmend auf Block 510, schreitet das Verfahren 500, wenn keine zusätzlichen VNFs 302 mehr zu konfigurieren sind, zu Block 512 voran.
  • In Block 512 verarbeitet die Rechenvorrichtung 102 Netzwerkarbeitslasten mit den VNFs 302 und verarbeitet Netzwerkverkehr mit dem virtuellen Schalter 308 des Beschleunigers 128. Jede der VNFs 302 kann Netzwerkverkehr (z.B. Paketframes) erzeugen und/oder empfangen. Zum Beispiel kann jede VNF 302 Netzwerkpaketdaten in Puffer im Systemarbeitsspeicher 132, welche virtuellen E/A-Warteschlangen entsprechen, lesen und/oder schreiben. Der vSwitch 308 kann Komplettpaket-Verarbeitungspipeline-Operationen an diesen Netzwerkverkehrsdaten durchführen. In einigen Ausführungsformen verarbeitet die Rechenvorrichtung 102 in Block 514 den Netzwerkverkehr mit Hilfe der VNFs 302 und des vSwitch 308 in der gleichen Kohärenzdomäne. Zum Beispiel kann die Rechenvorrichtung 102 Daten (z.B. Virtio-Warteschlangen-Daten) zwischen dem Prozessor 120 und dem Beschleuniger 128 über die kohärente Zwischenverbindung 124 übertragen. Die VNFs 302 und der vSwitch 308 können Netzwerkdaten gleichzeitig, zeitgleich oder anderweitig verarbeiten, wobei die kohärente Zwischenverbindung 124 Datenkohärenz zwischen dem Last-Level-Cache des Prozessors 120, dem Cache oder einem anderen lokalen Arbeitsspeicher des Beschleunigers 128 und dem Arbeitsspeicher 132 bereitstellt. In einigen Ausführungsformen können komplette Paketframes zwischen dem Prozessor 120 und dem Beschleuniger 128 übertragen werden, sodass mehrere Schaltaktionen zeitgleich stattfinden können. Nach dem Verarbeiten der Netzwerkdaten kehrt das Verfahren 500 zu Block 512 zurück, um mit dem Verarbeiten von Netzwerkverkehr mit den VNFs 302 und dem vSwitch 308 fortzufahren. In einigen Ausführungsformen kann die Rechenvorrichtung 102 die VNFs 302 während der Ausführung des Verfahrens 500 dynamisch laden und/oder entladen.
  • Es sollte verstanden werden, dass das Verfahren 500 in einigen Ausführungsformen als verschiedene Anweisungen verkörpert sein kann, die auf einem computerlesbaren Medium gespeichert sind, welche durch den Prozessor 120, den Beschleuniger 128 und/oder andere Komponenten der Rechenvorrichtung 102 ausgeführt werden können, um die Rechenvorrichtung 102 zum Durchführen des Verfahrens 500 zu veranlassen. Das computerlesbare Medium kann als jegliche Art von Medium verkörpert sein, das durch die Rechenvorrichtung 102 gelesen werden kann, einschließlich, jedoch nicht darauf beschränkt, des Arbeitsspeichers 132, des Datenspeichergerätes 134, Firmware-Vorrichtungen, anderer Arbeitsspeicher- oder Datenspeichergeräte der Rechenvorrichtung 102, tragbarer Medien, die durch ein Peripheriegerät 138 der Rechenvorrichtung 102 gelesen werden können, und/oder anderer Medien.
  • BEISPIELE
  • Veranschaulichende Beispiele der hierin offenbarten Technologien sind unten bereitgestellt. Eine Ausführungsform der Technologien kann jegliche/s eine oder mehrere der unten beschriebenen Beispiele und jegliche Kombination davon beinhalten.
  • Beispiel 1 beinhaltet eine Rechenvorrichtung zur beschleunigten Netzwerkverarbeitung, wobei die Rechenvorrichtung Folgendes umfasst: einen Beschleuniger zum Koppeln eines ersten Netzwerkanschlusses eines virtuellen Schalters des Beschleunigers mit einem zweiten Netzwerkanschluss eines Netzwerkschalters über eine Netzwerkanbindung; und einen Prozessor zum Ausführen mehrerer virtueller Netzwerkfunktionen als Reaktion auf das Koppeln des ersten Netzwerkanschlusses mit dem zweiten Netzwerkanschluss; wobei der virtuelle Schalter Netzwerkverkehr im Zusammenhang mit den mehreren virtuellen Netzwerkfunktionen als Reaktion auf die Ausführung der mehreren virtuellen Netzwerkfunktionen verarbeiten soll.
  • Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, welcher ferner einen Monitor einer virtuellen Maschine zum Konfigurieren des Beschleunigers mit dem virtuellen Schalter umfasst.
  • Beispiel 3 beinhaltet den Gegenstand von einem der Beispiele 1 und 2, wobei der Beschleuniger ein feldprogrammierbares Gate-Array umfasst und wobei der virtuelle Schalter eine Anwendungsfunktionseinheit des feldprogrammierbaren Gate-Arrays umfasst.
  • Beispiel 4 beinhaltet den Gegenstand von einem der Beispiele 1-3, wobei das Verarbeiten des Netzwerkverkehrs das Verarbeiten des Netzwerkverkehrs innerhalb einer Kohärenzdomäne, die durch den Beschleuniger und den Prozessor gemeinsam genutzt wird, umfasst.
  • Beispiel 5 beinhaltet den Gegenstand von einem der Beispiele 1-4, welcher ferner Folgendes umfasst: eine kohärente Zwischenverbindung, die den Prozessor und den Beschleuniger koppelt; wobei das Verarbeiten des Netzwerkverkehrs das Kommunizieren des Netzwerkverkehrs zwischen dem Prozessor und dem Beschleuniger über die kohärente Zwischenverbindung umfasst.
  • Beispiel 6 beinhaltet den Gegenstand von einem der Beispiele 1-5, welcher ferner Folgendes umfasst: einen Monitor einer virtuellen Maschine zum Koppeln jeder der virtuellen Netzwerkfunktionen an eine Paravirtualisierungsschnittstelle des Beschleunigers; wobei das Verarbeiten des Netzwerkverkehrs das Verarbeiten von Netzwerkverkehr im Zusammenhang mit der Paravirtualisierungsschnittstelle umfasst.
  • Beispiel 7 beinhaltet den Gegenstand von einem der Beispiele 1-6, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr von den mehreren Netzwerkfunktionen an den Netzwerkschalter über den ersten Netzwerkanschluss und den zweiten Netzwerkanschluss umfasst.
  • Beispiel 8 beinhaltet den Gegenstand von einem der Beispiele 1-7, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr, der vom Netzwerkschalter über den ersten Netzwerkanschluss und den zweiten Netzwerkanschluss empfangen wird, an die mehreren Netzwerkfunktionen umfasst.
  • Beispiel 9 beinhaltet den Gegenstand von einem der Beispiele 1-8, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr zwischen einer ersten virtuellen Netzwerkfunktion und einer zweiten virtuellen Netzwerkfunktion umfasst.
  • Beispiel 10 beinhaltet den Gegenstand von einem der Beispiele 1-9, wobei jede der virtuellen Netzwerkfunktionen eine virtuelle Maschine umfasst.
  • Beispiel 11 beinhaltet den Gegenstand von einem der Beispiele 1-10, wobei der Beschleuniger eine anwendungsspezifische integrierte Schaltung umfasst.
  • Beispiel 12 beinhaltet den Gegenstand von einem der Beispiele 1-11, wobei der Prozessor und der Beschleuniger in einem Multi-Chip-Package der Rechenvorrichtung enthalten sind.
  • Beispiel 13 beinhaltet ein Verfahren zur beschleunigten Netzwerkverarbeitung, wobei das Verfahren Folgendes umfasst: Koppeln, durch eine Rechenvorrichtung, eines ersten Netzwerkanschlusses eines virtuellen Schalters eines Beschleunigers der Rechenvorrichtung mit einem zweiten Netzwerkanschluss eines Netzwerkschalters über eine Netzwerkanbindung; Ausführen, durch die Rechenvorrichtung, mehrerer virtueller Netzwerkfunktionen mit einem Prozessor der Rechenvorrichtung als Reaktion auf das Koppeln des ersten Netzwerkanschlusses mit dem zweiten Netzwerkanschluss; und Verarbeiten, durch die Rechenvorrichtung mit dem virtuellen Schalter des Beschleunigers, von Netzwerkverkehr im Zusammenhang mit den mehreren virtuellen Netzwerkfunktionen als Reaktion auf das Ausführen der mehreren virtuellen Netzwerkfunktionen.
  • Beispiel 14 beinhaltet den Gegenstand von Beispiel 13, welcher ferner das Konfigurieren, durch die Rechenvorrichtung, des Beschleunigers mit dem virtuellen Schalter umfasst.
  • Beispiel 15 beinhaltet den Gegenstand von einem der Beispiele 13 und 14, wobei der Beschleuniger ein feldprogrammierbares Gate-Array umfasst und wobei der virtuelle Schalter eine Anwendungsfunktionseinheit des feldprogrammierbaren Gate-Arrays umfasst.
  • Beispiel 16 beinhaltet den Gegenstand von einem der Beispiele 13-15, wobei das Verarbeiten des Netzwerkverkehrs das Verarbeiten des Netzwerkverkehrs innerhalb einer Kohärenzdomäne, die durch den Beschleuniger und den Prozessor gemeinsam genutzt wird, umfasst.
  • Beispiel 17 beinhaltet den Gegenstand von einem der Beispiele 13-16, wobei das Verarbeiten des Netzwerkverkehrs das Kommunizieren des Netzwerkverkehrs zwischen dem Prozessor und dem Beschleuniger über eine kohärente Zwischenverbindung der Rechenvorrichtung umfasst.
  • Beispiel 18 beinhaltet den Gegenstand von einem der Beispiele 13-17, welcher ferner Folgendes umfasst: Koppeln, durch die Rechenvorrichtung, jeder der virtuellen Netzwerkfunktionen an eine Paravirtualisierungsschnittstelle des Beschleunigers; wobei das Verarbeiten des Netzwerkverkehrs das Verarbeiten von Netzwerkverkehr im Zusammenhang mit der Paravirtualisierungsschnittstelle umfasst.
  • Beispiel 19 beinhaltet den Gegenstand von einem der Beispiele 13-18, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr von den mehreren Netzwerkfunktionen an den Netzwerkschalter über den ersten Netzwerkanschluss und den zweiten Netzwerkanschluss umfasst.
  • Beispiel 20 beinhaltet den Gegenstand von einem der Beispiele 13-19, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr, der vom Netzwerkschalter über den ersten Netzwerkanschluss und den zweiten Netzwerkanschluss empfangen wird, an die mehreren Netzwerkfunktionen umfasst.
  • Beispiel 21 beinhaltet den Gegenstand von einem der Beispiele 13-20, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr zwischen einer ersten virtuellen Netzwerkfunktion und einer zweiten virtuellen Netzwerkfunktion umfasst.
  • Beispiel 22 beinhaltet den Gegenstand von einem der Beispiele 13-21, wobei jede der virtuellen Netzwerkfunktionen eine virtuelle Maschine umfasst.
  • Beispiel 23 beinhaltet den Gegenstand von einem der Beispiele 13-22, wobei der Beschleuniger eine anwendungsspezifische integrierte Schaltung umfasst.
  • Beispiel 24 beinhaltet den Gegenstand von einem der Beispiele 13-23, wobei der Prozessor und der Beschleuniger in einem Multi-Chip-Package der Rechenvorrichtung enthalten sind.
  • Beispiel 25 beinhaltet eine Rechenvorrichtung, welche Folgendes umfasst: einen Prozessor; und einen Arbeitsspeicher, in welchem mehrere Anweisungen gespeichert sind, die, wenn sie durch den Prozessor ausgeführt werden, die Rechenvorrichtung zum Durchführen des Verfahrens von einem der Beispiele 13-24 veranlassen.
  • Beispiel 26 beinhaltet ein oder mehrere nichttransitorische, computerlesbare Speichermedien, die mehrere darauf gespeicherte Anweisungen umfassen, die, als Reaktion auf ihre Ausführung, darin resultieren, dass eine Rechenvorrichtung das Verfahren von einem der Beispiele 13-24 ausführt.
  • Beispiel 27 beinhaltet eine Rechenvorrichtung, die Mittel zum Durchführen des Verfahrens von einem der Beispiele 13-24 umfasst.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62/634874 [0001]

Claims (25)

  1. Rechenvorrichtung zur beschleunigten Netzwerkverarbeitung, wobei die Rechenvorrichtung Folgendes umfasst: einen Beschleuniger zum Koppeln eines ersten Netzwerkanschlusses eines virtuellen Schalters des Beschleunigers mit einem zweiten Netzwerkanschluss eines Netzwerkschalters über eine Netzwerkanbindung; und einen Prozessor zum Ausführen mehrerer virtueller Netzwerkfunktionen als Reaktion auf das Koppeln des ersten Netzwerkanschlusses mit dem zweiten Netzwerkanschluss; wobei der virtuelle Schalter Netzwerkverkehr im Zusammenhang mit den mehreren virtuellen Netzwerkfunktionen als Reaktion auf die Ausführung der mehreren virtuellen Netzwerkfunktionen verarbeiten soll.
  2. Rechenvorrichtung nach Anspruch 1, welche ferner einen Monitor einer virtuellen Maschine zum Konfigurieren des Beschleunigers mit dem virtuellen Schalter umfasst.
  3. Rechenvorrichtung nach Anspruch 2, wobei der Beschleuniger ein feldprogrammierbares Gate-Array umfasst und wobei der virtuelle Schalter eine Anwendungsfunktionseinheit des feldprogrammierbaren Gate-Arrays umfasst.
  4. Rechenvorrichtung nach Anspruch 1, wobei das Verarbeiten des Netzwerkverkehrs das Verarbeiten des Netzwerkverkehrs innerhalb einer Kohärenzdomäne, die durch den Beschleuniger und den Prozessor gemeinsam genutzt wird, umfasst.
  5. Rechenvorrichtung nach Anspruch 4, welche ferner Folgendes umfasst: eine kohärente Zwischenverbindung, die den Prozessor und den Beschleuniger koppelt; wobei das Verarbeiten des Netzwerkverkehrs das Kommunizieren des Netzwerkverkehrs zwischen dem Prozessor und dem Beschleuniger über die kohärente Zwischenverbindung umfasst.
  6. Rechenvorrichtung nach Anspruch 1, welche ferner Folgendes umfasst: einen Monitor einer virtuellen Maschine zum Koppeln jeder der virtuellen Netzwerkfunktionen an eine Paravirtualisierungsschnittstelle des Beschleunigers; wobei das Verarbeiten des Netzwerkverkehrs das Verarbeiten von Netzwerkverkehr im Zusammenhang mit der Paravirtualisierungsschnittstelle umfasst.
  7. Rechenvorrichtung nach Anspruch 1, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr von den mehreren Netzwerkfunktionen an den Netzwerkschalter über den ersten Netzwerkanschluss und den zweiten Netzwerkanschluss umfasst.
  8. Rechenvorrichtung nach Anspruch 1, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr, der vom Netzwerkschalter über den ersten Netzwerkanschluss und den zweiten Netzwerkanschluss empfangen wird, an die mehreren Netzwerkfunktionen umfasst.
  9. Rechenvorrichtung nach Anspruch 1, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr zwischen einer ersten virtuellen Netzwerkfunktion und einer zweiten virtuellen Netzwerkfunktion umfasst.
  10. Rechenvorrichtung nach Anspruch 1, wobei jede der virtuellen Netzwerkfunktionen eine virtuelle Maschine umfasst.
  11. Rechenvorrichtung nach Anspruch 1, wobei der Beschleuniger eine anwendungsspezifische integrierte Schaltung umfasst.
  12. Rechenvorrichtung nach Anspruch 1, wobei der Prozessor und der Beschleuniger in einem Multi-Chip-Package der Rechenvorrichtung enthalten sind.
  13. Verfahren zur beschleunigten Netzwerkverarbeitung, wobei das Verfahren Folgendes umfasst: Koppeln, durch eine Rechenvorrichtung, eines ersten Netzwerkanschlusses eines virtuellen Schalters eines Beschleunigers der Rechenvorrichtung mit einem zweiten Netzwerkanschluss eines Netzwerkschalters über eine Netzwerkanbindung; Ausführen, durch die Rechenvorrichtung, mehrerer virtueller Netzwerkfunktionen mit einem Prozessor der Rechenvorrichtung als Reaktion auf das Koppeln des ersten Netzwerkanschlusses mit dem zweiten Netzwerkanschluss; und Verarbeiten, durch die Rechenvorrichtung mit dem virtuellen Schalter des Beschleunigers, von Netzwerkverkehr im Zusammenhang mit den mehreren virtuellen Netzwerkfunktionen als Reaktion auf das Ausführen der mehreren virtuellen Netzwerkfunktionen.
  14. Verfahren nach Anspruch 13, welches ferner das Konfigurieren, durch die Rechenvorrichtung, des Beschleunigers mit dem virtuellen Schalter umfasst.
  15. Verfahren nach Anspruch 14, wobei der Beschleuniger ein feldprogrammierbares Gate-Array umfasst und wobei der virtuelle Schalter eine Anwendungsfunktionseinheit des feldprogrammierbaren Gate-Arrays umfasst.
  16. Verfahren nach Anspruch 13, wobei das Verarbeiten des Netzwerkverkehrs das Verarbeiten des Netzwerkverkehrs innerhalb einer Kohärenzdomäne, die durch den Beschleuniger und den Prozessor gemeinsam genutzt wird, umfasst.
  17. Verfahren nach Anspruch 16, wobei das Verarbeiten des Netzwerkverkehrs das Kommunizieren des Netzwerkverkehrs zwischen dem Prozessor und dem Beschleuniger über eine kohärente Zwischenverbindung der Rechenvorrichtung umfasst.
  18. Verfahren nach Anspruch 13, welches ferner Folgendes umfasst: Koppeln, durch die Rechenvorrichtung, jeder der virtuellen Netzwerkfunktionen an eine Paravirtualisierungsschnittstelle des Beschleunigers; wobei das Verarbeiten des Netzwerkverkehrs das Verarbeiten von Netzwerkverkehr im Zusammenhang mit der Paravirtualisierungsschnittstelle umfasst.
  19. Verfahren nach Anspruch 13, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr von den mehreren Netzwerkfunktionen an den Netzwerkschalter über den ersten Netzwerkanschluss und den zweiten Netzwerkanschluss umfasst.
  20. Verfahren nach Anspruch 13, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr, der vom Netzwerkschalter über den ersten Netzwerkanschluss und den zweiten Netzwerkanschluss empfangen wird, an die mehreren Netzwerkfunktionen umfasst.
  21. Verfahren nach Anspruch 13, wobei das Verarbeiten des Netzwerkverkehrs das Weiterleiten von Netzwerkverkehr zwischen einer ersten virtuellen Netzwerkfunktion und einer zweiten virtuellen Netzwerkfunktion umfasst.
  22. Verfahren nach Anspruch 13, wobei jede der virtuellen Netzwerkfunktionen eine virtuelle Maschine umfasst.
  23. Rechenvorrichtung, welche Folgendes umfasst: einen Prozessor; und einen Arbeitsspeicher, in welchem mehrere Anweisungen gespeichert sind, die, wenn sie durch den Prozessor ausgeführt werden, die Rechenvorrichtung zum Durchführen des Verfahrens nach einem der Ansprüche 13-22 veranlassen.
  24. Ein oder mehrere nichttransitorische, computerlesbare Speichermedien, die mehrere darauf gespeicherte Anweisungen umfassen, die, als Reaktion auf ihre Ausführung, darin resultieren, dass eine Rechenvorrichtung das Verfahren nach einem der Ansprüche 13-22 ausführt.
  25. Rechenvorrichtung, welche Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 13-22 umfasst.
DE112019000965.6T 2018-02-25 2019-02-25 Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung Pending DE112019000965T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862634874P 2018-02-25 2018-02-25
US62/634,874 2018-02-25
PCT/US2019/019377 WO2019165355A1 (en) 2018-02-25 2019-02-25 Technologies for nic port reduction with accelerated switching

Publications (1)

Publication Number Publication Date
DE112019000965T5 true DE112019000965T5 (de) 2021-04-15

Family

ID=67687342

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000965.6T Pending DE112019000965T5 (de) 2018-02-25 2019-02-25 Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung

Country Status (3)

Country Link
CN (1) CN111492628A (de)
DE (1) DE112019000965T5 (de)
WO (1) WO2019165355A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11184278B2 (en) * 2019-12-30 2021-11-23 Avago Technologies International Sales Pte. Limited Hyperscalar packet processing
CN111262917A (zh) 2020-01-13 2020-06-09 苏州浪潮智能科技有限公司 一种基于fpga云平台的远端数据搬移装置和方法
KR102607421B1 (ko) * 2020-04-27 2023-11-29 한국전자통신연구원 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법
CN114915598B (zh) * 2021-02-08 2023-10-20 腾讯科技(深圳)有限公司 应用程序的网络加速方法、装置以及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9264384B1 (en) * 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
EP2722767B1 (de) * 2012-10-16 2018-03-21 Solarflare Communications Inc Eingebundener Beschleuniger
US9317310B2 (en) * 2013-01-31 2016-04-19 Broadcom Corporation Systems and methods for handling virtual machine packets
US9479457B2 (en) * 2014-03-31 2016-10-25 Juniper Networks, Inc. High-performance, scalable and drop-free data center switch fabric
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing

Also Published As

Publication number Publication date
WO2019165355A1 (en) 2019-08-29
CN111492628A (zh) 2020-08-04

Similar Documents

Publication Publication Date Title
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE112019000965T5 (de) Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung
DE102018210537A1 (de) Mikrodienste-Architektur
US11296956B2 (en) Oversubscribable resource allocation
DE112013000731B4 (de) Skalierbare virtuelle Geräte-Cloud
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE112016004347T5 (de) Lokale und globale Datenzentrumsnetzoptimierungen in Echtzeit basierend auf Plattformtelemetriedaten
DE112011102415B4 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung
DE102022102788A1 (de) Konfigurierbare vorrichtungsschnittstelle
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
WO2018071176A1 (en) Generalized packet processing offload in a datacenter
DE102018129112A1 (de) Systemdecoder für Trainingsbeschleuniger
DE102018004111B4 (de) Rechensystem, computerlesbares medium und bedarfsskalierungsengine zum kommunikativen koppeln an einen prozessor
US20130346531A1 (en) Systems and methods for input/output virtualization
US20180357086A1 (en) Container virtual switching
CN108964959A (zh) 一种用于虚拟化平台的网卡直通系统及数据包监管方法
DE102013208431B4 (de) Großer verteilter Switch auf Fabric-Basis unter Verwendung virtueller Switches und virtueller Steuereinheiten
DE112008002416T5 (de) Gemeinsame Nutzung von Legacy-Geräten in einer Multithost-Umgebung
DE112008002550T5 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE112012002404B4 (de) Konfiguration und Management virtueller Netzwerke
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE112018007780T5 (de) Transparente verschlüsselung
DE102018202432A1 (de) Strukturunterstützung für die Dienstgüte
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012935000

Ipc: H04L0049111000