DE102022126611A1 - Service-mesh-auslagerung an netzwerkvorrichtungen - Google Patents

Service-mesh-auslagerung an netzwerkvorrichtungen Download PDF

Info

Publication number
DE102022126611A1
DE102022126611A1 DE102022126611.7A DE102022126611A DE102022126611A1 DE 102022126611 A1 DE102022126611 A1 DE 102022126611A1 DE 102022126611 A DE102022126611 A DE 102022126611A DE 102022126611 A1 DE102022126611 A1 DE 102022126611A1
Authority
DE
Germany
Prior art keywords
microservice
network interface
data
communication
interface device
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
DE102022126611.7A
Other languages
English (en)
Inventor
Kefei Zhang
Fusheng ZHAO
Yi Zeng
Shihwei CHIEN
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 DE102022126611A1 publication Critical patent/DE102022126611A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/148Migration or transfer of sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

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

Abstract

Die hier beschriebenen Beispiele beziehen sich auf ein System zur Auslagerung der Microservicezu-Microservice-Kommunikation auf eine Netzwerkschnittstellenvorrichtung.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Die Anmeldung beansprucht die Priorität der am 19. November 2021 eingereichten Patent Cooperation Treaty- (PCT-) Anmeldung Nr. PCT/ CN2021/131685 . Der gesamte Inhalt dieser Anmeldung ist durch Verweis aufgenommen.
  • BESCHREIBUNG
  • Ein Service (Dienst) kann unter Verwendung einer Gruppe von auf verschiedenen Servern ausgeführten Microservices ausgeführt werden. Microservices können mit anderen Microservices unter Verwendung von über ein Netzwerk gesendeten Paketen kommunizieren. Ein Service-Mesh (Dienstnetz) ist eine Infrastruktursebene (Infrastruktur-Layer) zur Erleichterung der Service-zu-Service-Kommunikation zwischen Microservices unter Verwendung von Anwendungsprogrammierschnittstellen (APIs; application programming interfaces). Ein Service-Mesh kann unter Verwendung einer Proxy-Instanz (z. B. Sidecar) implementiert werden, um die Service-zu-Service-Kommunikation zu managen. Einige Netzwerkprotokolle, die für die Microservice-Kommunikation verwendet werden, umfassen Layer-7-Protokolle wie Hypertext Transfer Protocol (HTTP), HTTP/2, Remote Procedure Call (RPC), gRPC, Kafka, MongoDB Wire Protocol usw. Envoy Proxy ist eine bekannte Datenebene für ein Service-Mesh. Istio, AppMesh und Open Service Mesh (OSM) sind Beispiele für Steuerungsebenen für eine Service-Mesh-Datenebene.
  • Figurenliste
    • 1 stellt ein beispielhaftes System dar.
    • 2 stellt ein beispielhaftes System dar.
    • 3A-3C stellt beispielhafte Konfigurationen dar.
    • 3D stellt ein Beispiel eines Datenflusses dar.
    • 4-6 stellen beispielhafte Operationen dar.
    • 7 stellt einen beispielhaften Prozess dar.
    • 8 stellt eine beispielhafte Netzwerkschnittstellenvorrichtung dar.
    • 9 zeigt ein beispielhaftes Rechensystem.
  • DETAILLIERTE BESCHREIBUNG
  • Das Sidecar-Kommunikationsmodell für Microservices kann Latenzzeiten bei der Service-zu-Service-Kommunikation einführen. Latenzzeitempfindliche Anwendungen wie 5G-Steuerungsebenen sind möglicherweise nicht in der Lage, die eingeführte Latenzzeit zu tolerieren. Bei einigen Beispielen wird versucht, die Latenzzeit der Service-zu-Service-Kommunikation zu reduzieren, indem die Kommunikation für Microservices in eine Netzwerkschnittstellenvorrichtung ausgelagert wird, während die Performance eines Microservice in einem Server oder Host erhalten bleibt. Bei einigen Beispielen kann die Netzwerkschnittstellenvorrichtung ein Sidecar für einen Microservice ausführen, um einen Proxy für die Service-zu-Service-Kommunikation bereitzustellen. Die Netzwerkschnittstellenvorrichtung kann Paketübertragungen für einen Microservice so planen, dass sie in bestimmten Zeitschlitzen stattfinden, um unerwartete eine Kommunikationsverzögerung zu reduzieren.
  • Einige Beispiele stellen ein Service-Mesh-Netzwerk bereit, das in einer Infrastrukturverarbeitungseinheit (IPU) oder Datenverarbeitungseinheit (DPU) bereitgestellt wird. Nach hiesigem Gebrauch kann sich eine IPU auf eines oder mehrere beziehen von: einer DPU, einer smartNIC, einem Weiterleitungselement, einem Router, einem Schalter (Switch), einer Netzwerkschnittstellensteuerung, einer netzwerkangebundenen Anwendung (z. B. Speicherung, Speicher, Beschleuniger, Prozessoren, Sicherheit) usw. Verschiedene Beispiele einer IPU können austauschbar verwendet werden, sodass sich die Bezugnahme auf ein Beispiel alternativ auf andere Beispiele beziehen kann.
  • Ein Service-Mesh kann sich aus den Arbeitsknoten und IPUs zusammensetzen. Die Arbeitsknoten können Microservices ausführen, während die IPUs Inter- und Intra-Service-Verbindungen eines Meshes bereitstellen können. IPUs können mehrere Arbeitsknoten bedienen. Eine Service-Mesh-Steuerung kann IPUs bereitstellen, um statische Berichterstattung auszuführen oder die Identifizierung von Vorrichtungen zu aktualisieren, die Microservices ausführen.
  • 1 stellt ein beispielhaftes System dar. In der Konfiguration 100 führt ein Host eine Anwendungs- (z. B. Microservice-) Instanz und das entsprechende Sidecar aus. Ein Sidecar kann das Networking für eine Anwendung ausführen, um mit anderen Anwendungen zu kommunizieren. Ein Sidecar kann die Netzwerkkommunikation für eine Anwendung managen. Bei diesem Beispiel werden Anwendungen auf einem einzigen Host ausgeführt. Bei Linux-Implementierungen eines Sidecars wie eBPF kann jedoch Latenzzeit bei der Kommunikationsübertragung eingeführt werden, da die Kommunikationsübertragung möglicherweise nicht zu einer erwarteten Zeit erfolgt.
  • Die Konfiguration 150 stellt eine Auslagerung von Service-Mesh-Sidecars an eine IPU bereit. Ein Sidecar kann eines oder mehrere durchführen von: einer Identifizierung eines Ziel-Microservice und einem Routing und Weiterleitung des Datenverkehrs an eine Vorrichtung, die einen Ziel-Microservice ausführt. Bei einigen Beispielen kann ein Sidecar in einem Container ausgeführt werden. Bei einigen Beispielen kann ein Sidecar mit Istio, Envoy usw. konsistent sein. Die Zentrale-Verarbeitungseinheits- (CPU-) und Speicher-Auslastung eines Hosts kann auf einem Arbeitsknoten reduziert werden. Darüber hinaus kann eine IPU eine besser vorhersehbare Latenzzeit der Service-zu-Service-Kommunikation bereitstellen, indem sie den Zeitpunkt der Paketübertragung im Namen eines Microservice steuert. Beispielsweise kann ein Microservice einem Sidecar Daten zur Verfügung stellen, und das Sidecar kann eine Vorrichtung bestimmen, die eine Service-Instanz ausführt, an die die Daten zu senden sind.
  • Verschiedene Beispiele können einen Orchestrator zum Einsetzen von Microservices für die Ausführung nutzen, wie z. B. Kubernetes, Docker, OpenStack, Apache Mesos usw.
  • Verschiedene hierin beschriebene Beispiele können eine aus Microservices zusammengesetzte Anwendung ausführen, bei der ein Microservice in seinem eigenen Prozess läuft und unter Verwendung von Protokollen (z. B. Anwendungsprogrammschnittstelle (API), ein Hypertext Transfer Protocol- (HTTP-) Ressourcen-API, Nachrichtendienst, Remote Procedure Calls (RPC) oder Google RPC (gRPC)) kommuniziert. Microservices können unter Verwendung eines Service-Meshes miteinander kommunizieren und in einem oder mehreren Rechenzentren oder Edge-Netzwerken ausgeführt werden. Microservices können unabhängig unter Verwendung eines zentralisierten Management dieser Services eingesetzt werden. Das Managementsystem kann in verschiedenen Programmiersprachen geschrieben sein und verschiedene Datenspeicherungstechnologien verwenden. Ein Microservice kann charakterisiert sein durch eines oder mehrere von: polyglotte Programmierung (z. B. in mehreren Sprachen geschriebener Code zur Erfassung zusätzlicher Funktionen und Effizienz, die in einer einzigen Sprache nicht verfügbar sind) oder Einsatz von leichten Containern oder virtuellen Maschinen und dezentralisierte kontinuierliche Microservice-Lieferung.
  • Verschiedene hier beschriebene Beispiele können eine Anwendung ausführen, die in einer virtuellen Maschine ausgeführt wird. Eine virtuelle Maschine (VM; virtual machine) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine VM kann durch Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine nichtflüchtige Direktzugriffsspeicher- (NVRAM-; non-volatile random access memory) Einstellungsdatei und die Protokolldatei definiert werden und wird durch die physischen Ressourcen einer Host-Rechenplattform gesichert. Eine VM kann ein Betriebssystem (OS) oder eine Anwendungsumgebung umfassen, die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endbenutzer hat auf einer virtuellen Maschine die gleiche Erfahrung, die er auf dedizierter Hardware hätte. Spezialisierte Software, genannt Hypervisor, emuliert die CPU-, Speicher-, Festplatten-, Netzwerk- und andere Hardwareressourcen des PC-Clients oder Servers vollständig und ermöglicht es virtuellen Maschinen, die Ressourcen gemeinschaftlich zu verwenden. Der Hypervisor kann mehrere virtuelle Hardwareplattformen emulieren, die voneinander isoliert sind, was es virtuellen Maschinen erlaubt, Linux®, Windows® Server, VMware ESXi und andere Betriebssysteme auf dem gleichen zugrunde liegenden physischen Host auszuführen.
  • Verschiedene hier beschriebene Beispiele können eine in einem Container ausgeführte Anwendung ausführen. Ein Container kann ein Software-Package von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen zuverlässig auf einer Rechenumgebung im Hinblick auf eine andere laufen. Container können ein Betriebssystem, das auf der Serverplattform installiert ist, gemeinschaftlich verwenden und als isolierte Prozesse laufen. Ein Container kann ein Software-Package sein, das alles umfasst, was die Software zur Ausführung benötigt, wie beispielsweise Systemwerkzeuge, Bibliotheken und Einstellungen. Container können von der anderen Software und dem Betriebssystem selbst isoliert sein. Die isolierte Natur der Container stellt mehrere Vorteile bereit. Erstens läuft die Software in einem Container in unterschiedlichen Umgebungen gleich. Beispielsweise kann ein Container, der PHP und MySQL umfasst, sowohl auf einem LinuxOO -Computer als auch auf einer Windows®-Maschine identisch ausgeführt werden. Zweitens stellen Container zusätzliche Sicherheit bereit, da die Software das Host-Betriebssystem nicht beeinträchtigt. Während eine installierte Anwendung Systemeinstellungen ändern und Ressourcen, wie beispielsweise die Windows-Registrierung, modifizieren kann, kann ein Container nur Einstellungen innerhalb des Containers ändern.
  • 2 stellt ein Beispiel eines Systems dar. Eine IPU kann einen oder mehrere Hosts unterstützen. Ein Sidecar eines Service-Meshes kann an eine IPU delegiert werden, sodass Arbeiterknoten (Worker Nodes) das Managen der Kommunikation in einem Netzwerk an die IPU auslagern können. Für das Laufen des Service-Meshes in einer IPU können Sidecar-Operationen in eine Steuerungsebene (Control Plane) und eine Datenebene (Data Plane) unterteilt werden. Eine Datenebene kann in einem System-auf-Chip (SoC) einer IPU laufen, während eine Steuerungsebene in dem Prozessor der IPU ausgeführt werden kann. Eine Steuerungsebene kann eine Netzwerktopologie und Routing-Entscheidungen in Hardware-Fluss-Tabellen übersetzen und Entscheidungen, die von der Datenebene auszuführen sind, dynamisch aktualisieren. Die Datenebene kann das Service-Mesh-Netzwerk basierend auf den Flusstabellen von der Steuerungsebene organisieren. Die Datenebene kann einen nächsten Rechenknoten oder Host, der einen Zieldienst ausführt, und einen Netzwerkpfad oder eine nächste Netzwerkschnittstellenvorrichtung zum Empfangen einer Kommunikation bestimmen. Für Pakete, die nicht mit einem von der Steuerungsebene identifizierten Fluss übereinstimmen, könnte die Datenebene bei der Steuerungsebene eine entsprechende Weiterleitungsroute anfordern, und die Steuerungsebene könnte eine neue Weiterleitungsregel erzeugen und dann die neue Weiterleitungsregel für den Fluss des Pakets zur Nutzung in die Hardware injizieren. Die Datenebene kann programmierbar sein oder eine feste Funktion sein.
  • Ein Paket in einem Fluss kann einen gleichen Satz an Tupeln in dem Paketanfangsblock aufweisen. Ein zu steuernder Paketfluss kann durch eine Kombination von Tupeln (z. B. Ethernet-Typ-Feld, Quell- und/oder Ziel-IP-Adresse, Quell- und/oder Ziel-User Datagram Protocol- (-UDP-) Ports, Quell-/Ziel-TCP-Ports oder irgendein anderes Anfangsblock-Feld) und eine eindeutige Quell- und Ziel-Queue-Pair- (-QP-) Nummer oder -Identifizierer identifiziert werden. Bei einigen Beispielen kann ein Fluss seinen eigenen Zeitbereich relativ zu Hauptzeitgeber oder anderen Taktquellen aufweisen.
  • Beispielsweise kann die IPU 210-0 eine Service-Mesh-Netzwerkkonnektivität unter Verwendung eines oder mehrerer Sidecars für Anwendungen (z. B. Microservices, VMs oder Container) bereitstellen, die auf den Arbeiterknoten 200-0 bis 200-1 ausgeführt werden. Beispielsweise kann die IPU 210-1 unter Verwendung eines oder mehrerer Sidecars für Anwendungen, die auf dem Arbeiterknoten 200-2 ausgeführt werden, eine Service-Mesh-Netzwerkkonnektivität bereitstellen. Die Anzahl der Anwendungen, Arbeiterknoten und IPUs ist beispielhaft und kann variiert werden.
  • Die Service-Mesh-Steuerung 220 kann die IPUs 210-0 und 210-1 mit der Identifizierung von Netzwerkadressen von Hosts oder Knoten, die Microservices ausführen, konfigurieren.
  • 3A stellt ein beispielhaftes System dar. Bei diesem Beispiel wird ein Service-Mesh-Sidecar in eine Steuerungsdaten- und eine Datenebene unterteilt. Für die Datenebene-Verarbeitung kann die IPU Pakete auf Schicht 3 (L3) oder Schicht 4 (L4) verarbeiten, wie z. B. das Ausführen des Managements von Zuverlässigkeitsprotokollen (z. B. Transmission Control Protocol (TCP) oder User Datagram Protocol (UDP)), den Nachrichtenzustellungs-Lastausgleich oder eine Firewall (z. B. Blockierung des Weiterleitungsfortschritts des Pakets). Für die Steuerungsebene-Verarbeitung kann die IPU die Schicht-7- (L7-) Verarbeitung in dem SoC der IPU durchführen, z. B. die HTTP-Kommunikation. Die Steuerungsebene-Verarbeitung kann z. B. Lastausgleich, Routing-Entscheidung zum Endpunkt, Austritts-Port, Ratenbegrenzung und Telemetrie umfassen. So kann beispielsweise die Steuerungsebene-Verarbeitung den Betrieb der Datenebene programmieren.
  • Die Datenebene kann in Prozessoren der IPU ausgeführt werden und die Steuerungsebene kann in einem System-auf-Chip (SoC) der IPU ausgeführt werden. IPU-Prozessoren können anwendungsspezifische integrierte Schaltung (ASIC; application specific integrated circuit), feldprogrammierbares Gate-Array (FPGA; field programmable gate array), programmierbare Abgleichsaktions- (Match-Action-) Einheiten usw. umfassen. Die Prozessoren können konfiguriert werden, an empfangenen Paketen eine Abgleichsaktion durchzuführen, um die Paketverarbeitungsregeln und die nächsten Sprünge (Hops) unter Verwendung von Informationen zu identifizieren, die in Ternärer-Inhaltsadressierbarer-Speicher- (TCAM-; ternary contentaddressable memory) Tabellen oder bei einigen Beispielen in Exakte-Übereinstimmungs-Tabellen gespeichert sind. Beispielsweise können Abgleichsaktions-Tabellen oder Abgleichsaktions-Einheits- (MAU, Match-Action-Unit-) Schaltungen verwendet werden, wobei ein Hash eines Abschnitts eines Pakets als Index verwendet wird, um einen Eintrag zu finden. Die Konfiguration des Betriebs von Paketprozessoren kann programmiert werden unter Verwendung eines oder mehrerer von: einer Konfigurationsdatei, OneAPI, Infrastructure Programmer Development Kit (IPDK), NVIDIA® DOCA™ Software Development Kit (SDK) (SDK), Programming Protocolindependent Packet Processors (P4), C, Python, Broadcom Network Programming Language (NPL) oder x86-kompatibler ausführbarer Binärdateien oder anderer ausführbarer Binärdateien.
  • Bei einigen Beispielen können die Steuerungsebene und die Datenebene über einen Kanal wie einen Verkehrsklassen- (TC-; traffic dass) oder Laufzeitumgebungs- (RTE-; Run Time Environment) Kanal kommunizieren. Bei einigen Beispielen kann die Virtueller-Schalter- (-Switch-) Datenebene 302 einen Kommunikationskanal zur Übertragung von Daten zwischen Anwendungen, Steuerungsebene und Datenebene bereitstellen. Die Virtueller-Schalter-Datenebene 302 kann eine Kommunikation zwischen der Service-Mesh-Datenebene und der Steuerungsebene einrichten. Die Steuerungsebene kann die Virtueller-Schalter-Datenebene 302 direkt oder über die Virtueller-Schalter-(-Switch-) Steuerungsebene konfigurieren.
  • Bei einigen Beispielen kann ein Framework (z. B. IPDK oder andere) verwendet werden, um virtuelle Netzwerkvorrichtungen (z. B. v-dev; virtual device; virtuelle Vorrichtung) zu erstellen, die auf dem Host ausgeführt werden, und die virtuellen Netzwerkvorrichtungen den Anwendungen zuzuweisen. Virtuellen Netzwerkvorrichtungen können Hardware-Ressourcen der IPU-Prozessoren zugeordnet werden.
  • Die Datenebene 302 kann die Kommunikation zwischen virtuellen Maschinen und SOC ermöglichen. Die Datenebene 302 kann die Kommunikation zwischen virtuellen Netzwerkvorrichtungen (v-dev) und der Datenebene, die auf den Prozessoren der IPU ausgeführt wird, bereitstellen. Die Datenebene 302 kann bei einigen Beispielen unter Verwendung von Open vSwitch (OVS) implementiert werden.
  • Die physikalische Netzwerkschnittstellensteuerung (NIC; network interface controller) kann über einen oder mehrere Ports die Kommunikation mit anderen Vorrichtungen über ein Netzwerk oder Fabric bereitstellen. Die NIC kann ausgebildet sein, irgendeine einzige oder mehrere Kommunikationstechnologien (z.B. verdrahtete oder drahtlose Kommunikation) und zugeordnete Protokolle (z.B. Ethernet, InfiniBand®, Bluetooth®, Wi-Fi®, 4G LTE, 5G usw.) zu verwenden, um eine solche Kommunikation durchzuführen. Die NIC kann eine oder mehrere Netzwerk-Hardware-Ressourcen umfassen, wie z. B. Eintritts-Warteschlangen, Austritts-Warteschlangen, Crossbars, Gemeinschaftlich-Verwendeter-Speicher-Schalter, Media Access Control (MAC), Physical Layer Interface (PHY), Ethernet-Port-Logik und andere Netzwerk-Hardware-Ressourcen.
  • 3B zeigt ein Beispiel von Anwendungen, die eine IPU im Proxy-Modus nutzen. Bei diesem Beispiel kann die Service-Mesh-Datenebene 350 ein Paket interpretieren und, wenn eine Ziel-Routing-Regel für die Service-Mesh-Datenebene 350 verfügbar ist, das Paket basierend auf der Ziel-Routing-Regel an einen nächsten Sprung routen. Wenn der Service-Mesh-Datenebene 350 keine Ziel-Routing-Regel zur Verfügung steht, kann die Service-Mesh-Datenebene 350 veranlassen, dass das Paket an eine Steuerungsebene für den sendenden Container bereitgestellt wird, um ein Ziel für das Paket zu bestimmen. Die Steuerungsebene für den sendenden Container kann die Service-Mesh-Datenebene 350 mit einer Ziel-Routing-Regel für das Paket konfigurieren, z. B. einer Routing-Regel, die auf einem oder mehreren Paket-Anfangsblock-Feldern basiert.
  • 3C stellt eine beispielhafte Konfiguration dar. In dieser Konfiguration stellen zumindest zwei der Hosts keine Verbindung zu einem anderen Host her. Stattdessen kommunizieren zumindest zwei der Hosts mit ihrer zugeordneten IPU, insbesondere dem Service-Mesh-Proxy. Die IPUs führen die Service-Mesh-Kommunikation durch.
  • 3D stellt ein Beispiel eines Datenflusses dar. Die Anwendung (z. B. ein Microservice) kann eine Get- (Erhalten) oder Send- (Senden) Anforderung an ihre zugeordnete IPU ausgeben und eine Antwort von der IPU empfangen. So kann beispielsweise eine von einem Host ausgeführte Anwendung die Daten an den Service-Mesh-Agenten der IPU senden und es dem Service-Mesh-Agenten erlauben, den exakten Zielort und das Routing zum Liefern der Daten zu bestimmen. Die IPU kann einen IP-Anfangsblock (IP-Header) für ein Paket mit den Daten einfügen, die an eine andere IPU zu übertragen sind, und eine Verschlüsselung durchführen (z. B. Transport Layer Security- (TLS-) Verschlüsselung). Beim Paketempfang kann die IPU das empfangene Paket verarbeiten, um die Daten zu extrahieren und die Zielanwendung zu informieren, dass die Daten für den Zugriff verfügbar sind.
  • 4 zeigt eine Datenflussanforderung von einem Container A an Container B, wobei sowohl Container A als auch Container B auf demselben Host ausgeführt werden. Die Anforderung kann mit HTTP1.x/2 konsistent sein, obwohl auch andere Formate verwendet werden können. Ein beispielhafter Betrieb des Systems von 4 ist wie folgt. Bei (1) kann der Anwendungscontainer1 (z. B. Microservice 1) Daten an die Service-Mesh-Datenebene1 senden, die in den Prozessoren der IPU ausgeführt wird. Die Service-Mesh-Datenebene1 kann das Paket interpretieren, um ein Ziel zu bestimmen. Wenn die Service-Mesh-Datenebene 1 mit einer Zielregel für das Paket konfiguriert ist, fährt der Betrieb mit (4) fort. Wenn die Service-Mesh-Datenebene 1 nicht mit einer Zielregel für das Paket konfiguriert ist, kann der Betrieb mit (2) fortgesetzt werden. Bei (2) kann die Service-Mesh-Datenebene1 veranlassen, dass das Paket in die Steuerungsebene für Container 1 kopiert wird. Die Steuerungsebene des Containers 1 kann das Paket analysieren, ein Ziel für das Paket bestimmen und das Ziel an die Service-Mesh-Datenebene 1 bereitstellen.
  • Bei (3), wenn die Service-Mesh-Steuerungsebene für Container 1 eine Verkehrssteuerungsregel für das Paket bestimmt (z. B. Zielvorrichtung, Kommunikationsduplizierung, Ratenbegrenzung, Zugriffssteuerliste), könnte die Regel von der Virtueller-Schalter-Steuerungsebene übersetzt und an die Virtueller-Schalter-Datenebene gesendet werden. Bei (4) kann das Paket von der Virtueller-Schalter-Datenebene an die Service-Mesh-Datenebene für den App-Container 2 (z. B. Microservice 2) weitergeleitet werden. Bei (5) kann die Service-Mesh-Datenebene für Container 2 das Paket in einen Speicher für den Zugriff durch den App-Container2 kopieren. Bei (6) können die Service-Mesh-Datenebene für Container 1 und die Service-Mesh-Datenebene für Container 2 die Metrikdaten an ihre Steuerungsebenen senden, um das Paketübertragungsvolumen an den App-Container2 anzuzeigen, um die Auslastung oder Nutzung des App-Containers2 anzuzeigen. Auslastungsinformationen können zum Lastausgleich von Instanzen des App-Containers 2 verwendet werden, um eine Überlastung einer Instanz des App-Containers 2 potenziell zu vermeiden.
  • 5 ist ein Datenflussbeispiel als Ergebnis einer von App-Container 1 initiierten Anforderung zur Kommunikation mit App-Container 4, wobei App-Container 1 und App-Container 4 auf verschiedenen Hosts ausgeführt werden. Die Anforderung kann mit HTTP1.x/2 konsistent sein, obwohl auch andere Formate verwendet werden können. Ein beispielhafter Betrieb des Systems von 5 ist wie folgt. Bei (1) kann der Anwendungscontainer1 (z. B. Microservice 1) Daten an die Service-Mesh-Datenebene1 senden. Die Service-Mesh-Datenebenel kann das Paket interpretieren, um ein Ziel für das Paket zu bestimmen. Wenn die Service-Mesh-Datenebene1 mit einer Zielregel konfiguriert ist, fährt der Betrieb mit (4) fort. Wenn die Service-Mesh-Datenebene1 nicht mit einer Zielregel konfiguriert ist, kann der Betrieb mit (2) fortgesetzt werden.
  • Bei (2) kann die Service-Mesh-Datenebene1 veranlassen, dass das Paket in die Service-Mesh-Steuerungsebene für Containerl kopiert wird. Die Service-Mesh-Steuerungsebene für Container 1 kann das Paket analysieren, ein Ziel für das Paket bestimmen und das Ziel an die Service-Mesh-Datenebene für Container 1 bereitstellen. Bei (3), wenn die Service-Mesh-Steuerungsebene für Container 1 eine Verkehrssteuerungsregel für das Paket bestimmt (z. B. Ziel, Duplizierung, Ratenbegrenzung, Zugriffssteuerliste), könnte die Regel von der Virtueller-Schalter-Steuerungsebene übersetzt und an die Virtueller-Schalter-Datenebene gesendet werden. Bei (4) kann das Paket von der Virtueller-Schalter-Datenebene an die Service-Mesh-Datenebene für den App-Container 4 (z. B. Microservice 4) weitergeleitet werden.
  • Bei (5) kann die Service-Mesh-Datenebene für Container 4 das Paket an den App-Container4 kopieren. Bei (6) können die Service-Mesh-Datenebene für Container1 und die Service-Mesh-Datenebene für Container 4 die Metrikdaten an ihre jeweiligen Steuerungsebenen senden, um das Paketübertragungsvolumen an den App-Container2 anzuzeigen, um die Auslastung oder Nutzung des App-Containers2 anzuzeigen. Auslastungsinformationen können zum Lastausgleich von Instanzen des App-Containers 2 verwendet werden, um eine Überlastung einer Instanz des App-Containers 2 potenziell zu vermeiden.
  • 6 zeigt den Datenfluss eines Proxy-Modells. Ein beispielhafter Betrieb des Systems von 5 ist wie folgt. Bei (1) werden Anforderung außerhalb des Service-Meshes am Service-Mesh-Gateway, z. B. der Service-Mesh-Datenebene der IPU 600, empfangen. Die Service-Mesh-Gateway-Datenebene kann versuchen, das Paket zu interpretieren, um ein Ziel für das Paket zu bestimmen. Wenn eine Zielregel existiert, wird der Betrieb mit (4) fortgesetzt. Wenn keine Zielregel existiert, kann der Betrieb mit (2) fortgesetzt werden.
  • Bei (2) kann die Service-Mesh-Gateway-Datenebene der IPU 600 veranlassen, dass das Paket in die Gateway-Steuerungsebene kopiert wird. Die Gateway-Steuerungsebene kann das Paket analysieren, um ein Ziel für das Paket zu bestimmen und einen Zielendpunkt an die Gateway-Datenebene bereitzustellen
  • Bei (3), wenn die Gateway-Steuerungsebene eine Verkehrssteuerungsregel für das Paket bestimmt (z. B. Ziel, Duplizierung, Ratenbegrenzung, Zugriffssteuerliste), könnte die Regel von der Virtueller-Schalter-Steuerungsebene übersetzt und an die Virtueller-Schalter-Datenebene der IPU 600 gesendet werden. Bei (4) kann das Paket von der Virtueller-Schalter-Datenebene an die Service-Mesh-Datenebene für Container 2 weitergeleitet werden. Bei (5) kann die Service-Mesh-Datenebene für Container 2 das Paket an den App-Container2 senden. Bei (6) kann die Service-Mesh-Gateway-Datenebene für Container 2 die Metrikdaten an die Steuerungsebene für Container 2 senden, um das Paketübertragungsvolumen an den App-Container2 anzuzeigen, um die Auslastung oder Nutzung des App-Containers2 anzuzeigen. Auslastungsinformationen können zum Lastausgleich von Instanzen des App-Containers 2 verwendet werden, um eine Überlastung einer Instanz des App-Containers 2 potenziell zu vermeiden.
  • 7 stellt einen beispielhaften Prozess dar. Bei 702 kann eine Netzwerkschnittstellenvorrichtung konfiguriert werden, Sidecar-Operationen für einen auf einem Host ausführenden Microservice durchzuführen. Sidecar-Operationen können umfassen eines oder mehrere von: Identifizierung eines Ziel-Microservice, Routing und Weiterleitung des Datenverkehrs an eine Vorrichtung, die einen Ziel-Microservice ausführt, Kommunikationsduplizierung, Ratenbegrenzung, Zugriffssteuerliste usw.
  • Bei 704 kann die Netzwerkschnittstellenvorrichtung ansprechend auf den Empfang einer Anforderung von einem ersten Microservice, mit einem zweiten Microservice zu kommunizieren, die Kommunikation an den zweiten Microservice richten, der auf demselben Host, der den ersten Microservice ausführt, oder einem anderen Host, der den zweiten Microservice ausführt, ausgeführt wird. Die Netzwerkschnittstellenvorrichtung kann Prozessoren nutzen, die konfiguriert sind, eine Datenebene auszuführen, um eine Zielvorrichtung zu identifizieren, die den zweiten Microservice ausführt, um ein oder mehrere Pakete an die Zielvorrichtung zu übertragen.
  • 8 stellt eine beispielhafte Netzwerkschnittstellenvorrichtung dar. Die Netzwerkschnittstellenvorrichtung kann Prozessoren umfassen, die die Steuer- und die Datenebene eines Service-Mesh-Sidecars [Dienstnetz-Sidecars], wie hier beschrieben, ausführen. Die Netzwerkschnittstelle 800 kann einen Sendeempfänger 802, Prozessoren 804, eine Sende-Warteschlange 806, eine Empfangs-Warteschlange 808, einen Speicher 810 und eine Busschnittstelle 812 und eine DMA-Maschine 852 umfassen. Der Sendeempfänger 802 kann fähig sein, Pakete in Übereinstimmung mit den anwendbaren Protokollen wie beispielsweise Ethernet, wie in IEEE 802.3 beschrieben, zu empfangen und zu senden, obwohl andere Protokolle verwendet werden können. Der Sendeempfänger 802 kann Pakete von und zu einem Netzwerk über ein Netzwerkmedium (nicht abgebildet) empfangen und senden. Der Sendeempfänger 802 kann eine PHY-Schaltungsanordnung 814 und eine Media Access Control- (MAC-) Schaltungsanordnung 816 umfassen. Eine PHY-Schaltungsanordnung 814 kann Codier- und Decodier-Schaltungsanordnung (nicht gezeigt) zum Codieren und Decodieren von Datenpaketen gemäß anwendbaren Physical-Layer-Spezifikationen oder -Standards umfassen. Die MAC-Schaltungsanordnung 816 kann konfiguriert sein, um die zu sendenden Daten zu Paketen anzuordnen, die Ziel- und Quelladressen zusammen mit Netzwerksteuerungsinformationen und Fehlerdetektions-Hash-Werten umfassen.
  • Prozessoren 804 können irgendeine Kombination sein aus: Prozessor, Kern, Grafikverarbeitungseinheit (GPU; graphics processing unit), feld-programmierbarem Gate-Array (FPGA), anwendungsspezifischer integrierter Schaltung (ASIC) oder einer anderen programmierbaren Hardware-Vorrichtung, die ein Programmieren der Netzwerkschnittstelle 800 erlauben. Beispielsweise kann eine „Smart-Netzwerkschnittstelle“ unter Verwendung von Prozessoren 804 Paketverarbeitungsfähigkeiten in der Netzwerkschnittstelle bereitstellen. Die Konfiguration des Betriebs der Prozessoren 804, umfassend ihrer Datenebene, kann programmiert werden unter Verwendung eines oder mehrerer von: Konfigurationsdatei, OneAPI, IPDK, NVIDIA® DOCA™ SDK, P4, C, Python, Broadcom NPL oder x86-kompatible ausführbare Binärdateien oder andere ausführbare Binärdateien.
  • Das System-auf-Chip 850 kann Mikroprozessoren umfassen, die Befehle ausführen, um eine Steuerungsebene für ein Service-Mesh-Sidecar, wie hierin beschrieben, durchzuführen.
  • Ein Paketzuweiser 824 kann eine Verteilung empfangener Pakete für eine Verarbeitung durch mehrere CPUs oder Kerne unter Verwendung einer hierin beschriebenen Zeitschlitz-Zuweisung oder RSS bereitstellen. Wenn der Paketzuweiser 824 RSS verwendet, kann der Paketzuweiser 824 basierend auf Inhalten eines empfangenen Pakets einen Hash berechnen oder eine andere Bestimmung vornehmen, um zu bestimmen, welche CPU oder welcher Kern ein Paket verarbeiten soll.
  • Eine Interrupt-Zusammenführung 822 kann eine Interrupt-Moderation durchführen, wobei eine Netzwerkschnittstellen-Interrupt-Zusammenführung 822 auf das Eintreffen mehrerer Pakete oder den Ablauf eines Time-Outs wartet, bevor sie einen Interrupt an das Host-System zur Verarbeitung (eines) empfangener(n) Pakete(s) erzeugt. Empfangssegment-Zusammenführung (RSC; Receive Segment Coalescing) kann durch die Netzwerkschnittstelle 800 durchgeführt werden, wobei Abschnitte eingehender Pakete zu Segmenten eines Pakets kombiniert werden. Die Netzwerkschnittstelle 800 stellt dieses zusammengeführte Paket an eine Anwendung bereit.
  • Die Direktspeicherzugriffs- (DMA-; direct memory access) Maschine 852 kann einen Paketanfangsblock, eine Paketnutzlast und/oder einen Deskriptor direkt von dem Host-Speicher an die Netzwerkschnittstelle oder umgekehrt kopieren, anstatt das Paket an einen Zwischenpuffer bei dem Host zu kopieren und dann eine weitere Kopieroperation von dem Zwischenpuffer zu dem Zielpuffer zu verwenden.
  • Der Speicher 810 kann irgendeine Art von flüchtiger oder nichtflüchtiger Speichervorrichtung sein und kann irgendeine Warteschlange oder Anweisungen speichern, die zum Programmieren der Netzwerkschnittstelle 800 verwendet werden. Die Sende-Warteschlange 806 kann Daten oder Referenzen auf Daten zur Übertragung durch die Netzwerkschnittstelle umfassen. Die Empfangs-Warteschlange 808 kann Daten oder Referenzen auf Daten umfassen, die durch eine Netzwerkschnittstelle von einem Netzwerk empfangen wurden. Deskriptor-Warteschlangen 820 können Deskriptoren umfassen, die auf Daten oder Pakete in der Sende-Warteschlange 806 oder Empfangs-Warteschlange 808 Bezug nehmen. Die Busschnittstelle 812 kann eine Schnittstelle mit der Host-Vorrichtung (nicht dargestellt) bereitstellen. Zum Beispiel kann die Bus-Schnittstelle 812 mit einer PCI-, PCI-Express-, PCI-x-, Serial ATA- und/oder USB-kompatiblen Schnittstelle kompatibel sein (obwohl andere Verbindungsstandards verwendet werden können).
  • 9 zeigt ein beispielhaftes Rechensystem. Komponenten des Systems 900 (z. B. Prozessor 910, Netzwerkschnittstelle 950 usw.) zur Durchführung von Microservices und Sidecar-Kommunikation, wie hier beschrieben. Ein System 900 umfasst einen Prozessor 910, der eine Verarbeitung, ein Operationsmanagement und eine Ausführung von Anweisungen für das System 900 bereitstellt. Der Prozessor 910 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU; graphics processing unit), Verarbeitungskern oder andere Verarbeitungshardware umfassen, um die Verarbeitung für das System 900 oder eine Kombination von Prozessoren bereitzustellen. Der Prozessor 910 steuert den Gesamtbetrieb des Systems 900 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder Ähnliches oder eine Kombination solcher Vorrichtungen sein oder umfassen.
  • Bei einem Beispiel umfasst das System 900 eine Schnittstelle 912, die mit dem Prozessor 910 gekoppelt ist, was eine Höhere-Geschwindigkeit-Schnittstelle oder eine Hoher-Durchsatz-Schnittstelle für Systemkomponenten darstellen kann, die Höhere-Bandbreite-Verbindungen benötigen, wie beispielsweise ein Speicherteilsystem 920 oder Grafikschnittstellen-Komponenten 940 oder Beschleuniger 942. Die Schnittstelle 912 repräsentiert eine Schnittstellenschaltung, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet die Grafikschnittstelle 940 eine Schnittstelle mit Grafikkomponenten, um an einen Benutzer des Systems 900 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 940 eine hochauflösende (HD; high definition) Anzeige treiben, die an einen Benutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z. B. 1080p), Retina-Displays, 4K (ultrahochauflösend oder UHD (ultra-high definition)) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 940 eine Anzeige basierend auf Daten, die in dem Speicher 930 gespeichert sind, oder basierend auf Operationen, die der Prozessor 910 ausführt, oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 940 eine Anzeige basierend auf Daten, die in dem Speicher 930 gespeichert sind, oder basierend auf Operationen, die der Prozessor 910 ausführt, oder beidem.
  • Die Beschleuniger 942 können eine Feste-Funktion- oder programmierbare Offload-(Auslagerungs-) Engine sein, auf die der Prozessor 910 zugreifen kann oder die von diesem verwendet werden kann. Zum Beispiel kann ein Beschleuniger unter den Beschleunigern 942 Kompressions- (DC-) Fähigkeit, Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierungs-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 942 zusätzlich oder alternativ Feldauswahlsteuerungsfähigkeiten bereit, wie hierin beschrieben. In einigen Fällen können die Beschleuniger 942 in einen CPU-Sockel (z. B. einen Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Beispielsweise können die Beschleuniger 942 einen Einzel- oder Multi-Kern-Prozessor umfassen, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit mit Ein- oder Multi-Ebenen-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronales-Netzwerk-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie feldprogrammierbare Gate-Arrays (FPGAs) oder programmierbare Logikvorrichtungen (PLDs). Die Beschleuniger 942 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten bereitstellen oder Grafikverarbeitungseinheiten können zur Verwendung durch Modelle der künstlichen Intelligenz (KI; AI - artificial intelligence) oder des maschinellen Lernens (MI,; machine leaming) zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell eines oder mehrere verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrenten kombinatorischen neuronalen Netzwerk oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch KI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 920 repräsentiert den Hauptspeicher des Systems 900 und stellt Speicherung für einen Code, der von dem Prozessor 910 ausgeführt werden soll, oder für Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 920 kann eine oder mehrere Speichervorrichtungen 930 umfassen, wie beispielsweise Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM; random access memory), wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 930 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 932, um eine Softwareplattform für eine Ausführung von Anweisungen in dem System 900 bereitzustellen. Zusätzlich können Anwendungen 934 auf der Software-Plattform des OS 932 von dem Speicher 930 ausgeführt werden. Die Anwendungen 934 repräsentieren Programme, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 936 repräsentieren Agenten oder Routinen, die an das OS 932 oder eine oder mehrere Anwendungen 934 Hilfsfunktionen bereitstellen, oder eine Kombination. Das OS 932, die Anwendungen 934 und die Prozesse 936 stellen Software-Logik bereit, um Funktionen für das System 900 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 920 eine Speichersteuerung 922, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 930 ist. Es versteht sich, dass die Speichersteuerung 922 ein physikalischer Teil des Prozessors 910 oder ein physikalischer Teil der Schnittstelle 912 sein könnte. Zum Beispiel kann die Speichersteuerung 922 eine integrierte Speichersteuerung sein, die auf eine Schaltung mit dem Prozessor 910 integriert ist.
  • Bei einigen Beispielen kann das OS 932 Linux®, Windows® Server oder Personal Computer, FreeBSD®, Android®, MacOS®, iOS®, VMware vSphere, openSUSE, RHEL, CentOS, Debian, Ubuntu oder irgendein anderes Betriebssystem sein. Das OS und der Treiber können auf einer CPU ausgeführt werden, die unter anderem von Intel®, ARM®, AMD®, Qualcomm®, IBM®, Texas Instruments® verkauft oder entworfen wird. Bei einigen Beispielen kann ein Fahrer die Netzwerkschnittstelle 950 konfigurieren, die Sidecar-Operationen, wie hier beschrieben, durchzuführen. Bei einigen Beispielen kann ein Fahrer die Auslagerung (Offload) auf die Netzwerkschnittstelle 950 aktivieren oder deaktivieren, um Sidecar-Operationen, wie hier beschrieben, durchzuführen. Ein Fahrer kann die Fähigkeit der Netzwerkschnittstelle 950 zur Durchführung von Sidecar-Operationen, wie hier beschrieben, ankündigen.
  • Auch wenn nicht speziell dargestellt, versteht es sich, dass das System 900 einen oder mehrere Busse oder Bussysteme zwischen Bauelementen (devices) umfassen kann, wie beispielsweise einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheral Component Interconnect- (PCI-) Bus, einem Hyper Transport- oder Industry Standard Architecture- (ISA-) Bus, einem Small Computer System Interface- (SCSI-) Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers- (IEEE-) Standard 1394-Bus (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 900 eine Schnittstelle 914, die mit der Schnittstelle 912 gekoppelt sein kann. Bei einem Beispiel repräsentiert die Schnittstelle 914 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 914. Eine Netzwerkschnittstelle 950 stellt an das System 900 die Fähigkeit bereit, über ein oder mehrere Netzwerke mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 950 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlos-standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 950 kann Daten an eine Vorrichtung senden, die in dem gleichen Rechenzentrum oder Rack ist, oder an eine entfernte Vorrichtung, was ein Senden von in einem Speicher gespeicherten Daten umfassen kann.
  • Einige Beispiele der Netzwerkschnittstelle 950 sind Teil einer Infrastrukturverarbeitungseinheit (IPU; Infrastructure Processing Unit) oder Datenverarbeitungseinheit (DPU; data processing unit) oder werden von einer IPU oder DPU genutzt. Eine xPU kann sich zumindest auf eine IPU, DPU, GPU, GPGPU oder anderen Verarbeitungseinheiten (z. B. Beschleunigervorrichtungen) beziehen. Eine IPU oder DPU kann eine Netzwerkschnittstelle mit einer oder mehreren programmierbaren Pipelines oder Feste-Funktion-Prozessoren umfassen, um eine Auslagerung von Operationen auszuführen, die von einer CPU hätten ausgeführt werden können. Die IPU oder DPU kann eine oder mehrere Speichervorrichtungen umfassen. Bei einigen Beispielen kann die IPU oder DPU virtuelle Schaltoperationen ausführen, Speicherungstransaktionen managen (z. B. Komprimierung, Kryptographie, Virtualisierung) und Operationen managen, die auf anderen IPUs, DPUs, Servern oder Vorrichtungen ausgeführt werden.
  • Bei einem Beispiel umfasst das System 900 eine oder mehrere Eingangs-/Ausgangs- (I/O-; input/output) Schnittstellen 960. Die I/O-Schnittstelle 960 kann eine oder mehrere Schnittstellenkomponenten umfassen, über die ein Benutzer mit dem System 900 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellenbildung). Eine Peripherieschnittstelle 970 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig von dem System 900 verbinden. Eine abhängige Verbindung ist eine, bei der das System 900 die Software-Plattform oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • Bei einem Beispiel umfasst das System 900 ein Speicherungsteilsystem 980, um Daten auf eine nichtflüchtige Weise zu speichern. Bei einem Beispiel können bei bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 980 mit Komponenten des Speicherteilsystems 920 überlappen. Das Speicherungsteilsystem 980 umfasst eine oder mehrere Speicherungsvorrichtung(en) 984, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen können, wie beispielsweise eine oder mehrere magnetische, Festkörper- (solid state) oder optisch-basierte Platten oder eine Kombination. Eine Speicherung 984 umfasst einen Code oder Anweisungen und Daten 986 in einem dauerhaften Zustand (z. B. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 900 erhalten). Die Speicherung 984 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 930 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um an den Prozessor 910 Anweisungen bereitzustellen. Während die Speicherung 984 nichtflüchtig ist, kann der Speicher 930 einen flüchtigen Speicher umfassen (z. B. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 900 unterbrochen ist). Bei einem Beispiel umfasst das Speicherungsteilsystem 980 eine Steuerung 982, um eine Schnittstelle mit der Speicherung 984 zu bilden. Bei einem Beispiel ist die Steuerung 982 ein physikalischer Teil der Schnittstelle 914 oder des Prozessors 910 oder kann Schaltungen oder Logik sowohl in dem Prozessor 910 als auch in der Schnittstelle 914 umfassen.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, falls Leistung zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher verwendet ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). Ein weiteres Beispiel eines flüchtigen Speichers umfasst einen Cache.
  • Eine Nichtflüchtiger-Speicher- (NVM-; non-volatile memory) Vorrichtung ist ein Speicher, dessen Zustand bestimmt ist, auch falls Leistung zu der Vorrichtung unterbrochen wird. Bei einem Ausführungsbeispiel kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise NAND-Technologien, umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Write-in-Place Cross Point- (Vor-Ort-Schreiben-Kreuzpunkt-) Speichervorrichtung oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS), Intel® Optane™-Speicher, NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (z. B. Chalkogenidglas) verwenden, einen resistiven Speicher umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM), magnetoresistiver Direktzugriffsspeicher (MRAM) mit Memristor-Technologie, Spin Transfer Torque- (STT-) MRAM, eine auf Spintronik-Magnet-Übergang-Speicher basierende Vorrichtung, eine auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basierende Vorrichtung, eine DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination aus einem der Obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht abgebildet) stellt an die Komponenten des Systems 900 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 900, um an die Komponenten des Systems 900 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC-(Wechselstrom-zu-Gleichstrom-; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom- (AC-) Leistung kann eine Erneuerbare-Energien- (z. B. Solarleistungs-) Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom- (DC-) Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom- (AC-zu-DC-) Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 900 unter Verwendung von miteinander verbundenen Rechenschlitten von Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeitsverbindungen können verwendet werden, wie beispielsweise: Ethernet (IEEE 802.3), entfernter Direktspeicherzugriff (RDMA; remote direct memory access), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omni-Path, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) interconnect, OpenCAPI, Gen-Z, Infinity Fabric (IF), Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G und Variationen derselben. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknoten kopiert oder gespeichert werden oder es kann darauf zugegriffen werden.
  • Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzwerkzugänge miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Rechenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um serverartige Funktionen auszuführen, das heißt, einen „Server auf einer Karte“. Dementsprechend umfasst ein Blade Komponenten, die herkömmlichen Servern gemeinsam sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • Bei einigen Beispielen können die Netzwerkschnittstelle und andere hierin beschriebene Beispiele in Verbindung mit einer Basisstation (z. B. 3G, 4G, 5G usw.), Makro-Basisstation (z. B. 5G-Netzwerke), Picostation (z. B. ein IEEE 802.11-kompatibler Zugangspunkt), Nanostation (z. B. für Point-to-MultiPoint- (PtMP-) Anwendungen), lokalen Rechenzentren, externen Rechenzentren, Edge-Netzwerkelementen, Edge-Servern, Edge-Schaltern, Fog-Netzwerkelementen und/oder hybriden Rechenzentren (z. B. Rechenzentren, die Virtualisierung, Cloud und softwaredefinierte Netzwerke verwenden, um Anwendungs-Workloads über physische Rechenzentren und verteilte Multi-Cloud-Umgebungen hinweg bereitzustellen) verwendet werden.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination von beiden implementiert sein. Bei einigen Beispielen können Hardware-Elemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze usw. umfassen. Bei einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination derselben umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklus-Budget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Ein Prozessor kann ein oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitalen Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder Software-Elementen.
  • Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zur Speicherung von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speicherungsmedium eine oder mehrere Arten von computerlesbaren Speicherungsmedien umfassen, die fähig sind, elektronische Daten zu speichern, umfassend flüchtigen oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter. Bei einigen Beispielen kann die Logik verschiedene Software-Elemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speicherungsmedium zum Speichern oder Aufrechterhalten von Anweisungen umfassen, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System ausgeführt werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und Ähnliches. Die Anweisungen können gemäß einer vordefinierten Computersprache, -weise oder -syntax implementiert sein, um eine Maschine, ein(e) Rechenvorrichtung oder System anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprachen-, Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einzelnes Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren abgebildet sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zur Implementierung dieser Funktionen notwendigerweise unterteilt, weggelassen oder bei Ausführungsbeispielen umfasst sein müssten.
  • Einige Beispiele können unter Verwendung der Ausdrücke „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht zwingend als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch weiter miteinander zusammenarbeiten oder interagieren.
  • Die Begriffe „erste,r,s“, „zweite,r,s“ und Ähnliches bezeichnen hierin nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein,e,s“ (a, an) bezeichnen hierin nicht eine Mengenbeschränkung, sondern vielmehr das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „aufgeschaltet“ (asserted), der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anwenden irgendeines Logikpegels auf das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgen oder folgen nach einem anderen Ereignis oder Ereignissen beziehen. Andere Abfolgen von Operation können auch gemäß alternativen Ausführungsbeispielen ausgeführt werden. Ferner können zusätzliche Operationen, abhängig von den bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Fachmann auf dem Gebiet, der den Nutzen dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und alternativen Ausführungsbeispiele verstehen.
  • Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff usw. entweder X, Y oder Z oder eine Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen und soll nicht implizieren, dass bestimmte Ausführungsbeispiele das jeweilige Vorliegen von zumindest einem von X, zumindest einem von Y oder zumindest einem von Z erfordern. Zusätzlich soll konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder eine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Darstellende Beispiele der Vorrichtungen, Systeme und Verfahren, die hierin offenbart sind, sind nachfolgend bereitgestellt. Ein Ausführungsbeispiel der Vorrichtungen, Systeme und Verfahren kann ein oder mehrere, und eine Kombination, der nachfolgend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst ein oder mehrere Beispiele und umfasst ein System, umfassend: eine Netzwerkschnittstellenvorrichtung zum Managen einer Kommunikation für einen Microservice mit einem oder mehreren anderen Microservices und zum Managen der Kommunikation mit dem Microservice von dem einen oder den mehreren anderen Microservices, wobei das Management der Kommunikation für den Microservice von einem Host, der den Microservice ausführt, auf die Netzwerkschnittstellenvorrichtung ausgelagert wird.
  • Beispiel 2 umfasst ein oder mehrere Beispiele, wobei die Netzwerkschnittstellenvorrichtung eines oder mehrere umfasst von: einer Infrastrukturverarbeitungseinheit (IPU), einer Datenverarbeitungseinheit (DPU), einer smartNIC, einer Netzwerkschnittstellensteuerung oder einer netzwerkangebundenen Anwendung.
  • Beispiel 3 umfasst ein oder mehrere Beispiele, wobei zum Managen der Kommunikation für einen Microservice mit einem oder mehreren anderen Microservices und zum Managen der Kommunikation mit dem Microservice von dem einen oder den mehreren anderen Microservices die Netzwerkschnittstellenvorrichtung ausgebildet ist, eine Steuerungsebene und eine Datenebene für die Kommunikation auszuführen.
  • Beispiel 4 umfasst ein oder mehrere Beispiele, wobei die Steuerungsebene ausgebildet ist, die Datenebene zu konfigurieren, um Weiterleitungsoperationen einer Kommunikation von dem Microservice mit einem Ziel-Microservice unter dem einen oder den mehreren anderen Microservices durchzuführen.
  • Beispiel 5 umfasst ein oder mehrere Beispiele, wobei der Ziel-Microservice von dem Host, der den Microservice ausführt, ausgeführt wird, oder von einem anderen Host ausgeführt wird.
  • Beispiel 6 umfasst ein oder mehrere Beispiele, wobei die Datenebene ausgebildet ist, eines oder mehrere durchzuführen von: einer Identifizierung einer Vorrichtung, die einen Ziel-Microservice ausführt, einer Kommunikationsverdopplung, einer Ratenbegrenzung oder einer Zugriffssteuerliste.
  • Beispiel 7 umfasst ein oder mehrere Beispiele, wobei die Netzwerkschnittstellenvorrichtung ein System-auf-Chip (SoC) und einen Prozessor umfasst und wobei das SoC ausgebildet ist, die Steuerungsebene auszuführen, und der Prozessor ausgebildet ist, die Datenebene auszuführen.
  • Beispiel 8 umfasst ein oder mehrere Beispiele, wobei der Prozessor eines oder mehrere umfasst von: einer anwendungsspezifischen integrierten Schaltung (ASIC), einem feldprogrammierbaren Gate-Array (FPGA) oder programmierbaren Abgleichsaktion-Einheiten.
  • Beispiel 9 umfasst ein oder mehrere Beispiele, umfassend den Host, der den Microservice ausführt, wobei der Host kommunikativ mit der Netzwerkschnittstellenvorrichtung gekoppelt ist.
  • Beispiel 10 umfasst ein oder mehrere Beispiele, umfassend ein Rechenzentrum, das den Host und einen zweiten Host umfasst, wobei die Netzwerkschnittstellenvorrichtung ausgebildet ist, die Kommunikation mit dem zweiten Host basierend auf einem Ziel-Microservice unter dem einen oder den mehreren anderen Microservices, die auf dem zweiten Host ausgeführt werden, bereitzustellen.
  • Beispiel 11 umfasst ein oder mehrere Beispiele, wobei das Management der Kommunikation für den Microservice von einem Host, der den Microservice ausführt, auf die Netzwerkschnittstellenvorrichtung ausgelagert wird, wobei der Microservice ausgebildet ist zu veranlassen, dass Daten auf die Netzwerkschnittstellenvorrichtung kopiert werden, und die Netzwerkschnittstellenvorrichtung ausgebildet ist, zumindest ein Paket mit den Daten zu erzeugen und das zumindest eine Paket an eine andere Netzwerkschnittstellenvorrichtung, die einem Ziel-Microservice unter dem einem oder den mehreren anderen Microservices zugeordnet ist, zu senden.
  • Beispiel 12 umfasst ein oder mehrere Beispiele und umfasst ein Verfahren, umfassend: an einer Netzwerkschnittstellenvorrichtung, ein Ausführen von Steuerungsebene- und Datenebene-Operationen für die Microservice-Kommunikation mit einem oder mehreren Prozessoren.
  • Beispiel 13 umfasst ein oder mehrere Beispiele, wobei: das Ausführen der Datenebene-Operationen für die Microservice-Kommunikation eines oder mehrere umfasst von: einer Identifizierung einer Vorrichtung, die einen Ziel-Microservice ausführt, einer Kommunikationsverdopplung, einer Ratenbegrenzung oder einer Zugriffssteuerliste.
  • Beispiel 14 umfasst ein oder mehrere Beispiele, wobei: das Ausführen der Steuerungsebene-Operationen ein Konfigurieren von Datenebene-Operationen für die Microservice-Kommunikation umfasst.
  • Beispiel 15 umfasst ein oder mehrere Beispiele, wobei die Netzwerkschnittstellenvorrichtung ein System-auf-Chip (SoC) und einen Prozessor umfasst, das SoC die Steuerungsebene-Operationen ausführt, und der Prozessor die Datenebene-Operationen ausführt.
  • Beispiel 16 umfasst ein oder mehrere Beispiele, wobei die Netzwerkschnittstellenvorrichtung eines oder mehrere umfasst von: einer Infrastrukturverarbeitungseinheit (IPU), einer Datenverarbeitungseinheit (DPU), einer smartNIC, einer Netzwerkschnittstellensteuerung oder einer netzwerkangebundenen Anwendung.
  • Beispiel 17 umfasst ein oder mehrere Beispiele und umfasst ein nichtflüchtiges computerlesbares Medium, umfassend Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen: eine Datenverarbeitungseinheit (DPU) zu konfigurieren, um die Zwischen-Microservice-Kommunikation im Namen eines auf einem Host ausführenden Microservice durchzuführen.
  • Beispiel 18 umfasst ein oder mehrere Beispiele, wobei die DPU eines oder mehrere umfasst von: einer Infrastrukturverarbeitungseinheit (IPU), einer smartNIC, einer Netzwerkschnittstellensteuerung oder einer netzwerkangebundenen Anwendung.
  • Beispiel 19 umfasst ein oder mehrere Beispiele, wobei die Zwischen-Microservice-Kommunikation Steuerungsebene- und Datenebene-Operationen umfasst, Datenebene-Operationen eines oder mehrere umfassen von: einer Identifizierung einer Vorrichtung, die einen Ziel-Microservice ausführt, einer Kommunikationsverdopplung, einer Ratenbegrenzung oder einer Zugriffssteuerliste, und Steuerungsebene-Operationen Datenebene-Operationen konfigurieren.
  • Beispiel 20 umfasst ein oder mehrere Beispiele, wobei die DPU ein System-auf-Chip (SoC) und einen Prozessor umfasst, und umfassend Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessor veranlassen: das SoC zu konfigurieren, die Steuerungsebene-Operationen auszuführen, und den Prozessor zu konfigurieren, die Datenebene-Operationen auszuführen.
  • Beispiel 21 umfasst ein oder mehrere Beispiele, umfassend Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessor veranlassen: die DPU zu konfigurieren, Kommunikationsweiterleitungsoperationen für einen zweiten Microservice, der von einem zweiten, von dem Host verschiedenen Host ausgeführt wird, durchzuführen.
  • 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
    • CN 2021/131685 [0001]
  • Zitierte Nicht-Patentliteratur
    • Institute of Electrical and Electronics Engineers- (IEEE-) Standard 1394-Bus (Firewire) [0047]
    • IEEE 802.11-kompatibler Zugangspunk [0057]

Claims (22)

  1. Ein System, umfassend: eine Netzwerkschnittstellenvorrichtung zum Managen einer Kommunikation für einen Microservice mit einem oder mehreren anderen Microservices und zum Managen der Kommunikation mit dem Microservice von dem einen oder den mehreren anderen Microservices, wobei das Management der Kommunikation für den Microservice von einem Host, der den Microservice ausführt, auf die Netzwerkschnittstellenvorrichtung ausgelagert wird.
  2. Das System gemäß Anspruch 1, wobei die Netzwerkschnittstellenvorrichtung eines oder mehrere umfasst von: einer Infrastrukturverarbeitungseinheit (IPU), einer Datenverarbeitungseinheit (DPU), einer smartNIC, einer Netzwerkschnittstellensteuerung oder einer netzwerkangebundenen Anwendung.
  3. Das System gemäß einem der vorherigen Ansprüche, wobei zum Managen der Kommunikation für einen Microservice mit einem oder mehreren anderen Microservices und zum Managen der Kommunikation mit dem Microservice von dem einen oder den mehreren anderen Microservices die Netzwerkschnittstellenvorrichtung ausgebildet ist, eine Steuerungsebene und eine Datenebene für die Kommunikation auszuführen.
  4. Das System gemäß Anspruch 3, wobei die Steuerungsebene ausgebildet ist, die Datenebene zu konfigurieren, um Weiterleitungsoperationen einer Kommunikation von dem Microservice mit einem Ziel-Microservice unter dem einen oder den mehreren anderen Microservices durchzuführen.
  5. Das System gemäß Anspruch 4, wobei der Ziel-Microservice von dem Host, der den Microservice ausführt, ausgeführt wird, oder von einem anderen Host ausgeführt wird.
  6. Das System gemäß Anspruch 3, 4 oder 5, wobei die Datenebene ausgebildet ist, eines oder mehrere durchzuführen von: einer Identifizierung einer Vorrichtung, die einen Ziel-Microservice ausführt, einer Kommunikationsverdopplung, einer Ratenbegrenzung oder einer Zugriffssteuerliste.
  7. Das System gemäß Anspruch 3, 4, 5 oder 6, wobei die Netzwerkschnittstellenvorrichtung ein System-auf-Chip (SoC) und einen Prozessor umfasst und wobei das SoC ausgebildet ist, die Steuerungsebene auszuführen, und der Prozessor ausgebildet ist, die Datenebene auszuführen.
  8. Das System gemäß Anspruch 7, wobei der Prozessor eines oder mehrere umfasst von: einer anwendungsspezifischen integrierten Schaltung (ASIC), einem feldprogrammierbaren Gate-Array (FPGA) oder programmierbaren Abgleichsaktion-Einheiten.
  9. Das System gemäß einem der vorherigen Ansprüche, umfassend den Host, der den Microservice ausführt, wobei der Host kommunikativ mit der Netzwerkschnittstellenvorrichtung gekoppelt ist.
  10. Das System gemäß Anspruch 9, das ein Rechenzentrum umfasst, das den Host und einen zweiten Host umfasst, wobei die Netzwerkschnittstellenvorrichtung ausgebildet ist, die Kommunikation mit dem zweiten Host basierend auf einem Ziel-Microservice unter dem einen oder den mehreren anderen Microservices, die auf dem zweiten Host ausgeführt werden, bereitzustellen.
  11. Das System gemäß einem der Ansprüche 1-10, wobei das Management der Kommunikation für den Microservice von einem Host, der den Microservice ausführt, auf die Netzwerkschnittstellenvorrichtung ausgelagert wird, wobei der Microservice ausgebildet ist zu veranlassen, dass Daten auf die Netzwerkschnittstellenvorrichtung kopiert werden, und die Netzwerkschnittstellenvorrichtung ausgebildet ist, zumindest ein Paket mit den Daten zu erzeugen und das zumindest eine Paket an eine andere Netzwerkschnittstellenvorrichtung, die einem Ziel-Microservice unter dem einem oder den mehreren anderen Microservices zugeordnet ist, zu senden.
  12. Ein Verfahren, umfassend: an einer Netzwerkschnittstellenvorrichtung, ein Ausführen von Steuerungsebene- und Datenebene-Operationen für die Microservice-Kommunikation mit einem oder mehreren Prozessoren.
  13. Das Verfahren gemäß Anspruch 12, wobei: das Ausführen der Datenebene-Operationen für die Microservice-Kommunikation eines oder mehrere umfasst von: einer Identifizierung einer Vorrichtung, die einen Ziel-Microservice ausführt, einer Kommunikationsverdopplung, einer Ratenbegrenzung oder einer Zugriffssteuerliste.
  14. Das Verfahren gemäß Anspruch 12 oder 13, wobei: das Ausführen der Steuerungsebene-Operationen ein Konfigurieren von Datenebene-Operationen für die Microservice-Kommunikation umfasst.
  15. Das Verfahren gemäß einem der Ansprüche 12-14, wobei die Netzwerkschnittstellenvorrichtung ein System-auf-Chip (SoC) und einen Prozessor umfasst, das SoC die Steuerungsebene-Operationen ausführt, und der Prozessor die Datenebene-Operationen ausführt.
  16. Das System gemäß einem der Ansprüche 12-15, wobei die Netzwerkschnittstellenvorrichtung eines oder mehrere umfasst von: einer Infrastrukturverarbeitungseinheit (IPU), einer Datenverarbeitungseinheit (DPU), einer smartNIC, einer Netzwerkschnittstellensteuerung oder einer netzwerkangebundenen Anwendung.
  17. Das Verfahren gemäß einem der Ansprüche 12-16, wobei das Management der Kommunikation für den Microservice von einem Host, der den Microservice ausführt, auf die Netzwerkschnittstellenvorrichtung ausgelagert wird und der Microservice veranlasst, dass Daten auf die Netzwerkschnittstellenvorrichtung kopiert werden, und die Netzwerkschnittstellenvorrichtung zumindest ein Paket mit den Daten erzeugt und das zumindest eine Paket an eine andere Netzwerkschnittstellenvorrichtung, die einem Ziel-Microservice zugeordnet ist, sendet.
  18. Ein nichtflüchtiges computerlesbares Medium, umfassend Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen: eine Datenverarbeitungseinheit (DPU) zu konfigurieren, um die Zwischen-Microservice-Kommunikation im Namen eines auf einem Host ausführenden Microservice durchzuführen.
  19. Das computerlesbare Medium gemäß Anspruch 18, wobei die DPU eines oder mehrere umfasst von: einer Infrastrukturverarbeitungseinheit (IPU), einer smartNIC, einer Netzwerkschnittstellensteuerung oder einer netzwerkangebundenen Anwendung.
  20. Das computerlesbare Medium gemäß Anspruch 18 oder 19, wobei die Zwischen-Microservice-Kommunikation Steuerungsebene- und Datenebene-Operationen umfasst, Datenebene-Operationen eines oder mehrere umfassen von: einer Identifizierung einer Vorrichtung, die einen Ziel-Microservice ausführt, einer Kommunikationsverdopplung, einer Ratenbegrenzung oder einer Zugriffssteuerliste, und Steuerungsebene-Operationen Datenebene-Operationen konfigurieren.
  21. Das computerlesbare Medium gemäß Anspruch 18, 19 oder 20, wobei die DPU ein System-auf-Chip (SoC) und einen Prozessor umfasst, und umfassend Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessor veranlassen: das SoC zu konfigurieren, die Steuerungsebene-Operationen auszuführen, und den Prozessor zu konfigurieren, die Datenebene-Operationen auszuführen.
  22. Das computerlesbare Medium gemäß einem der Ansprüche 18-20, umfassend Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessor veranlassen: die DPU zu konfigurieren, Kommunikationsweiterleitungsoperationen für einen zweiten Microservice, der von einem zweiten, von dem Host verschiedenen Host ausgeführt wird, durchzuführen.
DE102022126611.7A 2021-11-19 2022-10-12 Service-mesh-auslagerung an netzwerkvorrichtungen Pending DE102022126611A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EPPCT/CN2021/131685 2021-11-19
CN2021131685 2021-11-19
US17/550,883 2021-12-14
US17/550,883 US20220109733A1 (en) 2021-11-19 2021-12-14 Service mesh offload to network devices

Publications (1)

Publication Number Publication Date
DE102022126611A1 true DE102022126611A1 (de) 2023-05-25

Family

ID=80932637

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022126611.7A Pending DE102022126611A1 (de) 2021-11-19 2022-10-12 Service-mesh-auslagerung an netzwerkvorrichtungen

Country Status (2)

Country Link
US (1) US20220109733A1 (de)
DE (1) DE102022126611A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230231912A1 (en) * 2022-01-20 2023-07-20 Pure Storage, Inc. Mesh-aware storage systems
CN114911615B (zh) * 2022-05-06 2023-05-30 安超云软件有限公司 微服务运行时智能预测调度的方法及应用
CN115426257B (zh) * 2022-07-29 2023-09-05 之江实验室 一种面向服务网格的多控制器架构与部署方法
CN115766858A (zh) * 2022-11-11 2023-03-07 中国工商银行股份有限公司 流量处理方法、装置、计算机可读存储介质及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IEEE 802.11-kompatibler Zugangspunk
Institute of Electrical and Electronics Engineers- (IEEE-) Standard 1394-Bus (Firewire)

Also Published As

Publication number Publication date
US20220109733A1 (en) 2022-04-07

Similar Documents

Publication Publication Date Title
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
US20200322287A1 (en) Switch-managed resource allocation and software execution
EP3706394B1 (de) Schreiben auf mehrere speicherziele
DE102022107621A1 (de) Resourcenauswahl, die zum teil auf der arbeitslast basiert
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE102021122880A1 (de) Infrastrukturverarbeitungseinheit
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
EP4298776A1 (de) Dienst-mesh-offload an netzwerkvorrichtungen
US20210266253A1 (en) Pooling of network processing resources
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE102018202432A1 (de) Strukturunterstützung für die Dienstgüte
CN117157963A (zh) 卸载到网络设备的可靠传输
DE102022124530A1 (de) Speicherpoolmanagement
DE102022129250A1 (de) Übertragungsrate basierend auf detektierter verfügbarer Bandbreite
DE112022002377T5 (de) Paketformatanpassungstechnologien
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE102020133272A1 (de) Pufferzuweisung für Parallelverarbeitung von Daten