DE102018128777A1 - Skalierbare Kommunikation mit einer Paketverarbeitungseinheit - Google Patents

Skalierbare Kommunikation mit einer Paketverarbeitungseinheit Download PDF

Info

Publication number
DE102018128777A1
DE102018128777A1 DE102018128777.1A DE102018128777A DE102018128777A1 DE 102018128777 A1 DE102018128777 A1 DE 102018128777A1 DE 102018128777 A DE102018128777 A DE 102018128777A DE 102018128777 A1 DE102018128777 A1 DE 102018128777A1
Authority
DE
Germany
Prior art keywords
packet
nic
processing unit
extension object
soc
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
DE102018128777.1A
Other languages
English (en)
Inventor
Parthasarathy Sarangam
Andrey Chilikin
Ronen Aharon Hyatt
Anjali Jain
Donald Skidmore
Joshua Hay
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 DE102018128777A1 publication Critical patent/DE102018128777A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/66Layer 2 routing, e.g. in Ethernet based MAN's
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller

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

Bestimmte Ausführungsformen, die hierin beschrieben sind, stellen ein System zum Ermöglichen einer Kommunikation zwischen einer Paketverarbeitungseinheit und einem Netzwerkschnittstellencontroller (NIC) unter Verwendung eines Erweiterungsobjekts bereit, das System kann Speicher, einen oder mehrere Prozessoren und eine Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit aufweisen. Die Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit kann dazu konfiguriert sein, zu veranlassen, dass ein Paket an der Paketverarbeitungseinheit empfangen wird, wobei sich die Paketverarbeitungseinheit auf einem System-on-Chip (SoC) befindet, einen Erweiterungsobjektabschnitt zu dem Paket hinzuzufügen, um ein modifiziertes Paket zu erstellen, und zu veranlassen, dass das modifizierte Paket an den NIC, der sich auf demselben SoC befindet, übermittelt wird. In einem Beispiel weist der Erweiterungsobjektabschnitt Typdaten und Partitionsdaten auf. Das Paket kann ein Ethernet-Paket sein und der Erweiterungsobjektabschnitt kann vor einem Nutzdatenabschnitt des Pakets hinzugefügt werden.

Description

  • HINTERGRUND
  • Aufkommende Netzwerktrends in Rechenzentrums- und Telekommunikationsnetzen stellen steigende Leistungsanforderungen an ein System. Die Anwendungsleistung hängt von einer guten Nutzung des Netzwerks und einer effizienten Nutzung des Datenverkehrs in dem Netzwerk ab. Ein Netzwerkschnittstellencontroller (Network Interface Controller, NIC), auch bekannt als Netzwerk-Schnittstellenkarte, Netzwerkadapter, LAN-Adapter, physikalische Netzwerkschnittstelle und Ähnliches, ist eine Computer-Hardwarekomponente, die einen Computer mit einem Netzwerk verbindet und Anwendungen mit einer dedizierten Vollzeitverbindung zum Netzwerk versorgt. Häufig ist der NIC auf einem System-on-Chip (SoC) (dt. Ein-Chip-System) enthalten. Ein SoC ist eine integrierte Schaltung (auch bekannt als „IC“ oder „Chip“), die Komponenten eines Computers oder anderer elektronischer Systeme auf einem Substrat, typischerweise Silizium integriert. Das SoC kann digitale, analoge, Mischsignal- und oft auch Hochfrequenz-Funktionen auf einem einzigen Substrat enthalten
  • Figurenliste
  • Um ein vollständigeres Verständnis der vorliegenden Offenbarung und deren Merkmale und Vorteile bereitzustellen, wird auf die folgende Beschreibung in Verbindung mit den begleitenden Figuren verwiesen, worin gleiche Bezugszeichen gleiche Teile darstellen. Es zeigen:
    • 1 ein Blockdiagramm eines Systems zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit, gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 2 ein Blockdiagramm eines Abschnitts eines Systems zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit, gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 3 ein Blockdiagramm eines Abschnitts eines Systems zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit, gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 4 ein Blockdiagramm eines Abschnitts eines Systems zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit, gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 5 ein Blockdiagramm eines Abschnitts eines Systems zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit, gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 6 ein Blockdiagramm eines Abschnitts eines Systems zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit, gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 7 ein Blockdiagramm eines Abschnitts eines Systems zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit, gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 8 ein Ablaufdiagramm, das potenzielle Vorgänge veranschaulicht, die dem System gemäß einer Ausführungsform zugeordnet werden können;
    • 9 ein Ablaufdiagramm, das potenzielle Vorgänge veranschaulicht, die dem System gemäß einer Ausführungsform zugeordnet werden können; und
    • 10 ein Ablaufdiagramm, das potenzielle Vorgänge veranschaulicht, die dem System gemäß einer Ausführungsform zugeordnet werden können.
  • Die FIGUREN der Zeichnungen sind nicht unbedingt maßstabsgetreu gezeichnet, da deren Abmessungen erheblich verändert werden können, ohne dass vom Schutzbereich der vorliegenden Offenbarung abgewichen wird.
  • DETAILLIERTE BESCHREIBUNG
  • AUSFÜHRUNGSBEISPIELE
  • Die folgende detaillierte Beschreibung legt Beispiele für Einrichtungen, Verfahren und Systeme, die ein System zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit betreffen, dar. Merkmale wie Struktur(en), Funktion(en) und/oder Eigenschaft(en) werden einfachheitshalber zum Beispiel anhand einer Ausführungsform beschrieben; verschiedene Ausführungsformen können mit jedem geeigneten einen oder mehreren der beschriebenen Merkmale implementiert werden.
  • In der nachfolgenden Beschreibung werden verschiedene Aspekte der veranschaulichenden Implementierungen unter Verwendung von üblicherweise vom Fachmann zur Vermittlung des Inhalts seiner Arbeit an einen anderen Fachmann benutzten Begriffe beschrieben. Für den Fachmann wird es jedoch offensichtlich sein, dass die hierin offenbarten Ausführungsformen auch nur mit einigen der beschriebenen Aspekte praktiziert werden können. Zu Erklärungszwecken werden spezifische Anzahlen, Materialien und Ausgestaltungen dargelegt, um ein gründliches Verstehen der veranschaulichenden Implementierungen bereitzustellen. Für den Fachmann ist es jedoch offensichtlich, dass die hierin offenbarten Ausführungsformen auch ohne diese spezifischen Einzelheiten praktiziert werden können. In anderen Fällen werden bekannte Merkmale weggelassen, um die veranschaulichenden Implementierungen nicht zu verschleiern.
  • In der nachfolgenden Beschreibung wird Bezug genommen auf die begleitenden Zeichnungen, die einen Teil hiervon bilden, wobei gleiche Ziffern durchwegs gleiche Teile bezeichnen, und in denen Ausführungsformen veranschaulichend gezeigt werden, die praktisch angewendet werden können. Es versteht sich, dass andere Ausführungsformen benutzt werden können und strukturelle oder logische Veränderungen vorgenommen werden können, ohne dass vom Schutzbereich der vorliegenden Offenbarung abgewichen wird. Die folgende detaillierte Beschreibung ist daher nicht in einem beschränkenden Sinn zu verstehen. Zum Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A und/oder B“ (A), (B) oder (A und B). Zum Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A, B, und/oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C) .
  • 1 ist ein Blockdiagramm eines Systems 100 zum Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit, gemäß einer Ausführungsform der vorliegenden Offenbarung. Das System 100 kann ein oder mehrere Netzwerkelemente 102a-102c und ein oder mehrere entfernte Vorrichtungen 120 aufweisen. Das Netzwerkelement 102a kann eine oder mehrere Vorrichtungen 104a und 104b und eine oder mehrere Anwendungen 106a und 106b aufweisen. Die Vorrichtung 104a kann einen oder mehrere Netzwerkschnittstellencontroller (NIC) 110a und 110b, eine Verarbeitungseinheit 112a und eine oder mehrere Warteschlangen 114a aufweisen. Jeder einzelne oder mehrere NIC können eine NIC-Erweiterungsobjekt-Funktionseinheit aufweisen. So kann beispielsweise der NIC 110a eine NIC-Erweiterungsobjekt-Funktionseinheit 116a und der NIC 110b eine NIC-Erweiterungsobjekt-Funktionseinheit 116b aufweisen. Die Verarbeitungseinheit 112a kann eine Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit 118a aufweisen. Die Vorrichtung 104b kann einen NIC 110c, eine oder mehrere Verarbeitungseinheiten 112b und 112c und eine oder mehrere Warteschlangen 114b aufweisen. Die Verarbeitungseinheiten 112b und 112c können sich eine Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit 118b teilen. In einem Beispiel kann das Netzwerkelement 102a auch einen NIC 110d aufweisen. Das Netzwerkelement 102b kann eine Anwendung 106c und einen NIC 110e aufweisen. Das Netzwerkelement 102c kann eine Vorrichtung 104c und eine Anwendung 106d aufweisen. Die Vorrichtung 104c kann einen oder mehrere NIC 110f und 110g, eine Verarbeitungseinheit 112d und eine oder mehrere Warteschlangen 114c aufweisen. Die Netzwerkelemente 102a-102c können unter Verwendung des Netzwerks 122 miteinander in Verbindung stehen.
  • Jede Vorrichtung 104a-104c kann ein System-on-Chip (SoC), ein Multi-Chip-Modul (MCP), auf einer Platine miteinander verknüpfte diskrete Komponenten, usw. sein. Jede Verarbeitungseinheit 112a-112d kann eine externe programmierbare Instanz, wie beispielsweise eine FPGA, ein Beschleuniger, eine Paketverarbeitungseinheit oder eine andere Verarbeitungseinheit sein. Jede Anwendung 106a und 106b kann eine virtuelle Netzwerkfunktion (VNF) sein.
  • Es versteht sich, dass andere Ausführungsformen genutzt werden können und strukturelle Veränderungen vorgenommen werden können, ohne dass vom Schutzbereich der vorliegenden Offenbarung abgewichen wird. So kann beispielsweise jedes Netzwerkelement eine oder mehrere Vorrichtungen beinhalten und jede Vorrichtung kann einen oder mehrere NIC und Verarbeitungseinheiten beinhalten. Durch das System 100 wird eine wesentliche Flexibilität bereitgestellt, indem jegliche geeigneten Anordnungen und Konfigurationen bereitgestellt werden können, ohne dass von den Lehren der vorliegenden Offenbarung abgewichen wird.
  • Das System 100 kann dazu konfiguriert sein, eine skalierbare, bidirektionale Inband-Nachrichtenübermittlungsinfrastruktur in Form eines skalierbaren Erweiterungsobjektabschnitts eines Pakets zur Kommunikation zwischen dem NIC und der Verarbeitungseinheit vorzusehen. Der Erweiterungsobjektabschnitt des Pakets kann Partitionen aufweisen. Die Partitionen können Metadaten aufweisen, die dem NIC oder der Anwendung helfen, das Paket zu verarbeiten. Auf dem Übertragungsweg kann der NIC einen Erweiterungsobjektabschnitt in ein Paket einfügen, um Metadaten an die Verarbeitungseinheit oder eine Anwendung zu übermitteln. In einem Beispiel wird der Erweiterungsobjektabschnitt von der Verarbeitungseinheit verarbeitet und aus dem Paket abgezogen, so dass der Erweiterungsobjektabschnitt des Pakets nur innerhalb des NIC bis zum Verarbeitungseinheit-Grenzbereich bestehen bleibt. Auf dem Empfangspfad kann der Erweiterungsobjektabschnitt von der Verarbeitungseinheit erzeugt und durch den NIC verarbeitet und abgezogen werden. In einigen Beispielen kann es wünschenswert sein, einen Teil oder den gesamten Erweiterungsobjektabschnitt beizubehalten, wenn das Paket von dem NIC an eine Anwendung übermittelt wird, um Daten an die Anwendung weiterzuleiten.
  • Elemente der 1 können über eine oder mehrere Schnittstellen, die beliebige geeignete Verbindungen (kabelgebunden oder drahtlos) verwenden, die geeignete Wege für die Netzwerkkommunikation (z.B. Netzwerk 122, etc.) bereitstellen, miteinander gekoppelt werden. Darüber hinaus können ein oder mehrere dieser Elemente aus 1 basierend auf jeweiligen Konfigurationserfordernissen kombiniert oder aus der Architektur entfernt werden. Das System 100 kann eine Konfiguration aufweisen, die zur Übertragungssteuerungsprotokoll/Internetprotokoll-Kommunikation (Transmission Control Protocol/Internet Protocol, TCP/IP) für die Übertragung oder den Empfang von Paketen in einem Netzwerk in der Lage ist. Das System 100 kann ggf. und basierend auf jeweiligen Erfordernissen auch in Verbindung mit einem Benutzerdatagrammprotokoll/IP (User Datagram protocol/Internet Protocol, UDP/IP) oder irgendeinem anderen geeigneten Protokoll betrieben werden.
  • Um bestimmte beispielhafte Techniken des Systems 100 zu veranschaulichen, ist es wichtig, die Kommunikation zu verstehen, die die Netzwerkumgebung durchlaufen kann. Die folgenden grundlegenden Informationen können als Grundlage angesehen werden, auf der die vorliegende Offenbarung bestimmungsgemäß erläutert werden kann.
  • Heutige Netzwerkvorrichtungen, wie etwa NIC, können erheblichen Belastungen ausgesetzt sein, um die erforderliche Programmierungsflexibilität und -agilität bei der Anpassung an neue Anwendungsfälle und Bereitstellung zusätzlicher Merkmale bereitzustellen. In vielen aktuellen Systemen befinden sich Vorrichtungen vor dem NIC und der NIC ist typischerweise kein diskreter NIC, sondern Teil eines SoC. Derzeitige Lösungen behandeln den NIC und andere Vorrichtungen als separate Instanzen, wobei jede durch einen unabhängigen Kanal programmiert wird (z.B. separate PCIe-Spuren) und jede ihr eigenes monolithisches Verarbeitungsmodell bereitstellt. Darüber hinaus übertrifft das Innovationstempo in einigen Systemen (z.B. in einigen Cloud- und Netzwerkfunktionsvirtualisierungs(Network Virtual Function, NFV)-Märkten) die reguläre Taktgebung von derzeitigen SoCs, insbesondere Siliziumentwicklung für anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuit, ASIC). Die Forderung nach zusätzlichen Merkmalen wird typischerweise durch Hinzufügen einer FPGA-basierten Paketverarbeitungseinheit auf einem SoC in Angriff genommen, was zu einer NIC+FPGA-Plattform führt. Die FPGA ist eine hochprogrammierbare Vorrichtung, die dazu konfiguriert sein kann, eine Analyse von Paketen durchzuführen und das Paket dann an den NIC weiterzuleiten. Es genügt jedoch nicht, ein Paket nur von der FPGA an den NIC weiterzugeben, sondern das Paket muss auch einige zusätzliche Informationen weitergeben, wie etwa die Ergebnisse der Analyse durch die FPGA (z.B. welche Art von Sicherheit dem Paket zugeordnet ist, ob es sich um ein IPSec-Paket handelt, welches Ziel oder welche Warteschlange das Paket empfangen soll, etc.). Was benötigt wird, ist ein System, das dem NIC eine Art von zusätzlichen Informationen über die bereits vorgenommene Verarbeitung oder die für das Paket erforderliche Verarbeitung liefern kann und das eine Verarbeitungssynergie zwischen dem NIC und der Paketverarbeitungseinheit/dem Beschleuniger ermöglichen kann.
  • Ein System zum Ermöglichen einer Verarbeitungssynergie zwischen einem NIC und einer Verarbeitungseinheit, wie in 1 skizziert, kann diese (und andere) Probleme lösen. Das System 100 kann dazu konfiguriert sein, eine Verarbeitungssynergie zwischen einem NIC (z.B. NIC 110a) und einer oder mehreren Verarbeitungseinheiten (z.B. Verarbeitungseinheit 112a) zu ermöglichen, indem Paketen ein skalierbarer Inband-Erweiterungsobjektabschnitt für eine Verarbeitung mit verteilter Arbeitslast hinzugefügt wird. Der hinzugefügte Erweiterungsobjektabschnitt kann es der Verarbeitungseinheit ermöglichen, dem NIC abhängig von der Konfiguration der Verarbeitungseinheit unterschiedliche Metadaten bereitzustellen. Zum Beispiel können abhängig von der Art des Pakets, das von der Verarbeitungseinheit übermittelt wird, und der Konfiguration der Verarbeitungseinheit verschiedene Pakete unterschiedliche Arten und Längen von Erweiterungsobjektabschnitten aufweisen. Die Erweiterungsobjektabschnitte können zu Paketen hinzugefügt werden, die zwischen einem NIC und einer Verarbeitungseinheit, einem NIC und einer oder mehreren Verarbeitungseinheiten, einem oder mehreren NIC und einer Verarbeitungseinheit und/oder einem oder mehreren NIC und einer oder mehreren Verarbeitungseinheiten übertragen werden. Jeder Erweiterungsobjektabschnitt kann eine oder mehrere Partitionen aufweisen und jede Partition kann paketspezifischen Kontext, paketspezifische Metadaten, Verarbeitungsregeln, Empfangs-Deskriptor-Erweiterungen, die von einer Anwendung verwendet werden sollen, FPGA-Programmierflüsse oder andere anwendungsspezifische Objekte aufweisen.
  • In einem Beispiel kann eine Paketverarbeitungseinheit hinter einen vorhandenen NIC geschaltet werden, um die Paketverarbeitungsfunktionalität des NIC zu erweitern. Eine NIC-Erweiterungsfunktionseinheit (z.B. NIC-Erweiterungsobjekt-Funktionseinheit 116a) und/oder eine Verarbeitungseinheit-Erweiterungsfunktionseinheit (z.B. Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit 118a) kann so konfiguriert sein, dass ein Erweiterungsobjektabschnitt in Pakete, die zwischen dem NIC und der Verarbeitungseinheit übermittelt werden, eingefügt werden kann, um bei der Inline-Paketverarbeitung zu helfen und Metadaten zwischen der NIC und der Verarbeitungseinheit zu übermitteln. In einem konkreten Beispiel kann ein vorhandener Treiber für den NIC erweitert werden, um die Verarbeitungseinheit unter Verwendung von Netzwerkpaketen zu konfigurieren, die speziell mit Erweiterungsmarkierungen gekennzeichnet sind, die bei der Programmierung der Verarbeitungseinheit helfen und/oder Metadaten in sich tragen, die für die Paketverarbeitung innerhalb des NIC und der Verarbeitungseinheit erforderlich sind. Wenn der NIC oder die Anwendung dazu konfiguriert ist, eine Art Rückmeldung für die Verarbeitungseinheit bereitzustellen (z.B. ist die Warteschlange acht voll oder die Warteschlange eins niedrig), kann die Verarbeitungseinheit dann eine oder mehrere Partitionen im Erweiterungsobjektabschnitt zu Paketen, die an den NIC gehen, hinzufügen und Anweisungen zum Umgang mit dem Paket geben (z.B. an welche Warteschlange oder Warteschlangen die Daten gesendet werden sollen oder an welche Warteschlange oder Warteschlangen die Daten nicht gesendet werden sollen). In einem anderen Beispiel kann die Priorität eines Pakets auf etwas anderem basieren als dem, was in den Standard-Paketfeldern angegeben ist, und die Verarbeitungseinheit kann einen Typindikator in dem Erweiterungsobjektabschnitt aufweisen, der veranlasst, dass der NIC die Priorität ignoriert, die dem Paket basierend auf den Standard-Paketfeldern normalerweise zugewiesen ist, und dem Paket eine andere Priorität zuweist.
  • Der NIC und die Paketverarbeitungseinheit können Steuernachrichten/asynchrone Ereignisse unter Verwendung des Erweiterungsobjektabschnitts des Pakets an einen Host (z.B. Netzwerkelement 102a) oder eine Anwendung (z.B. Anwendung 106a) zurücksenden. In einem konkreten Beispiel kann der Erweiterungsobjektabschnitt Daten aufweisen, die verwendet werden können, um Pakete zu einer Warteschlange zu routen (z.B. eine oder mehrere Warteschlangen 114a), die einem Softwaresteuerungsagenten in einem vorhandenen Treiber in einem Hypervisor oder einer virtuellen Maschine zugeordnet sein kann. Dies hilft bei der Umnutzung einer Datenwarteschlange (z.B. direkte Speicherzugriffs(Direct Memory Access, DMA)-Warteschlange), die wie eine Steuerungswarteschlange verwendet werden soll, und kann eine Inband-Nachrichtenübermittlungs-Infrastruktur mit voller Rate für den Austausch von Erweiterungsmarkierungen und Partitionen zwischen dem NIC und der Verarbeitungseinheit bereitstellen.
  • Gegenwärtige SoCs, die einen NIC und eine FPGA aufweisen, behandeln die FPGA wie eine separate „Bump in-the-wire“-Insel. Die FPGA ist unabhängig von dem NIC programmiert und führt ihr eigenes monolithisches Verarbeitungsmodell durch. Beispielsweise verkapselt eine FPGA, die eine Überlagerungsverarbeitung abarbeitet, Übertragungspakete von dem NIC und obwohl das Paket bereits durch den NIC geparst wurde, muss das FPGA jedes Sendepaket parsen, um zu bestimmen, wo die Überlagerungs-Header eingefügt werden sollen. Da die Parsinginformationen NIC-intern sind, gehen sie an der Grenze zwischen NIC und FPGA verloren und müssen von der FPGA erneut erstellt werden. Das System 100 kann dazu konfiguriert sein, einen Erweiterungsobjektabschnitt weiterzuleiten, der verwendet werden kann, um Parsingergebnisse aus dem NIC als Metadaten in einer oder mehreren Partitionen zu der Verarbeitungseinheit zu bringen und damit ein einheitliches Programmiermodell für den NIC und die Verarbeitungseinheit beizubehalten. Dadurch werden die Vorteile der bestehenden Siliziumfunktionalität genutzt, wird ein kompletter Neuentwurf des SoC vermieden und eine einfache Erweiterung auf NFV-Anwendungen zugelassen.
  • Unterschiedliche Anwendungen (z.B. verschiedene VNFs) erfordern unterschiedliche Protokolle, Verarbeitung, etc. Einige Dienste erfordern eine Inspektion und/oder Analyse des Nutzdatenabschnitts des Pakets, andere ignorieren den Nutzdatenabschnitt und inspizieren und/oder analysieren nur Header. Abhängig von den Anwendungen, die gerade ausgeführt werden, kann das System 100 so konfiguriert sein, dass die Verarbeitungseinheit bei der Inspektion und/oder Analyse des Headerabschnitts des Pakets, der Verarbeitung des Headerabschnitts des Pakets und/oder der Übermittlung von relevanten Metadaten, die sich auf den Header beziehen, an die Anwendung helfen kann. Wenn die Anwendung nur Header analysieren und/oder inspizieren möchte, kann die Verarbeitungseinheit die relevanten Metadaten bezüglich der Header bereitstellen und extrahieren und der Anwendung die relevanten Metadaten zur Verfügung stellen. Wenn eine Anwendung an den Nutzdaten interessiert ist, kann das System 100 so konfiguriert sein, dass die Verarbeitungseinheit beim Inspizieren und/oder Analysieren des Nutzdatenanteils des Pakets, Verarbeiten des Nutzdatenanteils des Pakets und/oder Übermitteln der relevanten Metadaten, die sich auf den Nutzdatenanteil beziehen (z.B. Byte, Typ usw.), an die Anwendung zu helfen. Die Verarbeitungseinheit kann dem NIC Metadaten bereitstellen, und der NIC kann eine Rückmeldung von dem Host, der Anwendung oder der Anwendung an die Verarbeitungseinheit liefern.
  • Das System 100 kann dazu konfiguriert sein, die Lebensdauer bestehender SoCs zu verlängern, indem es dem NIC und der Verarbeitungseinheit gestattet, vorhandenes Basissilizium ohne Verarbeitungseinheit, die zum Ermöglichen eines Erweiterungsobjektabschnitts konfiguriert ist, zu verwenden. Für Anwendungen, die eine erweiterte Verarbeitung erfordern, kann das System dazu konfiguriert sein, das vorhandene Basissilizium mit einer Verarbeitungseinheit, die zum Ermöglichen eines Erweiterungsobjektabschnitts konfiguriert ist, oder einer zusätzlichen Verarbeitungseinheit, die dazu konfiguriert ist, zu ermöglichen, dass Erweiterungsobjektabschnitte zu gegenwärtigen SoCs hinzugefügt werden können, zu verwenden. Dies kann dazu beitragen, die Produktkosten relativ niedrig zu halten und dem System gestatten, sich relativ einfach an NFV-Anwendungsfälle anzupassen. Um Erweiterungsobjektabschnitte in bestehendem Silizium zu unterstützen, können programmierbare Erweiterungsmarkierungen in den NIC und die Verarbeitungseinheit eingefügt/hineingezogen und daraus abgezogen werden, welche bei der Inline-Paketverarbeitung helfen können.
  • In einigen Beispielen kann das vorhandene Silizium dazu konfiguriert sein, Pakete basierend auf der Erweiterungsmarkierung in ein umgenutztes Datenwarteschlangenpaar (z.B. eine oder mehrere Warteschlangen 114a) zu routen, welches sich dann wie eine Steuerungs- und Ereigniswarteschlange verhält. Dies kann dazu beitragen, dass ein bestehender Multi-Warteschlangen-Treiber problemlos erweitert werden kann, um die Vorteile der Beschleunigungsmerkmale, die durch den NIC und die Verarbeitungseinheit bereitgestellt werden, zu nutzen. Ersatz-Datenwarteschlangenpaare (z.B. eine oder mehrere Warteschlangen 114a) können auch in bestehendes Silizium eingebaut werden, um es für spezielle NIC- und Prozessoreinheitsprogrammierungen zu verwenden.
  • Erweiterungsobjektabschnitte können Partitionen aufweisen und die Partitionen können Zwischenverarbeitungsergebnisse aus dem NIC aufweisen, wie etwa Protokoll-Offsets und Klassifizierungsindikatoren. In ähnlicher Weise können die Partitionen Verarbeitungsergebnisse aus der Verarbeitungseinheit aufweisen, wie etwa Verschlüsselungserfolgs-/-fehlerergebnisse, Port-Zuordnung des Pakets, Ankunftszeitstempel, etc. In einigen anderen Anwendungen können die Partitionen auch zur Programmierung der Verarbeitungseinheit verwendet werden. Die Erweiterungsobjektabschnitte können entweder innerhalb regulärer Verkehrspakete oder innerhalb einzelner Programmierpakete, die als Behälter dienen, eingebettet werden. Die Programmierpakete können Klassifizierungsregeln, Persönlichkeitsprofile, FPGA-spezifische Flüsse usw. aufweisen. Der Erweiterungsobjektabschnitt kann über Standard-Ethernet in der EtherType-Sektion des Pakets kommuniziert werden. Der Erweiterungsobjektabschnitt ist stapelbar (d.h., der Erweiterungsobjektabschnitt wird zu den bestehenden EtherType-Inhalten des Originalpakets hinzugefügt), so dass die Struktur des Originalpakets beibehalten wird und das resultierende Paket kann von Standard-Ethernet-Switches weitergeleitet werden, wenn mehrere NIC und Verarbeitungseinheiten in einer vernetzten Topologie eingesetzt werden.
  • Mit Bezug auf die Infrastruktur von 1 wird das System 100 gemäß einer beispielhaften Ausführungsform gezeigt. Im Allgemeinen kann das System 100 in irgendeiner Netzwerkart oder -topologie implementiert werden. Das Netzwerk 122 stellt eine Reihe von Punkten oder Knoten von miteinander verbundenen Kommunikationspfaden zum Empfangen und Übertragen von Informationspaketen, die sich durch das System 100 ausbreiten, dar. Das Netzwerk 122 bietet eine Kommunikationsschnittstelle zwischen Knoten und kann als irgendein lokales Netzwerk (LAN), virtuelles lokales Netzwerk (VLAN), Weitbereichsnetzwerk (WAN), drahtloses lokales Netzwerk (WLAN), drahtloses innerstädtisches Netzwerk (MAN), Intranet, Extranet, virtuelles privates Netzwerk (VPN) und jegliche andere geeignete Architektur oder jegliches andere geeignete System konfiguriert sein, die oder das die Kommunikation in einer Netzwerkumgebung oder einer geeigneten Kombination davon erleichtert, einschließlich kabelgebundener und/oder drahtloser Kommunikation.
  • Im System 100 kann der Netzwerkverkehr, der Pakete, Rahmen, Signale, Daten usw. umfasst, gemäß jeglichen geeigneten Kommunikationsübermittlungsprotokollen gesendet und empfangen werden. Geeignete Kommunikationsübermittlungsprotokolle können ein mehrschichtiges Schema, wie das OSI-Modell (Open Systems Interconnection model) oder jegliche Ableitungen oder Varianten davon (z.B. Übertragungssteuerungsprotokoll/Internetprotokoll (TCP/IP), Benutzerdatagrammprotokoll/IP (UDP/IP)) aufweisen. Nachrichten über das Netzwerk können gemäß verschiedenen Netzwerkprotokollen (z.B. Ethernet, Infiniband, OmniPath, etc.) erfolgen. Zusätzlich kann im System 100 auch eine Funksignalkommunikation über ein Mobilfunknetz bereitgestellt werden. Es können geeignete Schnittstellen und Infrastrukturen bereitgestellt werden, um eine Kommunikation mit dem Mobilfunknetz zu ermöglichen.
  • Der hierin verwendete Begriff „Paket“ bezieht sich auf eine Dateneinheit, die zwischen einem Quellknoten und einem Zielknoten in einem paketvermittelten Netzwerk geroutet werden kann. Ein Paket enthält eine Quellnetzwerkadresse und eine Zielnetzwerkadresse. Diese Netzwerkadressen können Internetprotokoll(IP)-Adressen in einem TCP/IP-Nachrichtenübermittlungsprotokoll sein. Der hierin verwendete Begriff „Daten“ bezieht sich auf jegliche Art von binären, numerischen, Sprach-, Video-, Text- oder Skriptdaten oder jegliche Art von Quell- oder Objektcode oder jegliche andere geeignete Informationen in irgendeinem geeigneten Format, die von einem Punkt zum anderen in elektronischen Vorrichtungen und/oder Netzwerken übertragen werden können. Die Daten können helfen, einen Status eines Netzwerkelements oder Netzwerks zu bestimmen. Der Begriff „Status“ soll einen Zustand, eine Bedingung, einen Betriebsgrad einer Ressource, eine Überlastung des Netzwerks, Daten im Zusammenhang mit Verkehrs- oder Strömungsmustern des Netzwerks oder eine andere Art von Daten oder Informationen, die helfen, die Leistung, den Zustand, die Bedingung usw. des Netzwerks und/oder einer Ressource zu bestimmen, entweder insgesamt oder bezogen auf ein oder mehrere Netzwerkelemente aufweisen. Darüber hinaus sind Nachrichten, Anforderungen, Antworten und Abfragen Formen des Netzwerkverkehrs und können daher Pakete, Rahmen, Signale, Daten usw. umfassen.
  • In einer beispielhaften Implementierung sollen die Netzwerkelemente 102a-102c Netzwerkelemente, Netzwerkapparate, Server, Router, Switches, Gateways, Brücken, Lastausgleicher, Prozessoren, Module oder irgendeine andere geeignete Vorrichtung, Komponente, irgendein anderes geeignetes Element oder Objekt, welche zum Austausch von Informationen in einer Netzwerkumgebung geeignet sind, umfassen. Die Netzwerkelemente 102a-102c können irgendeine geeignete Hardware, Software, irgendwelche geeigneten Komponenten, Module oder Objekte aufweisen, die deren Betrieb erleichtern, sowie geeignete Schnittstellen zum Empfangen, Übertragen und/oder anderweitigen Übermitteln von Daten oder Informationen in einer Netzwerkumgebung. Dies kann geeignete Algorithmen und Kommunikationsprotokolle umfassen, die einen effektiven Austausch von Daten oder Informationen ermöglichen. Jedes der Netzwerkelemente 102a-102c kann virtuell sein oder virtuelle Elemente aufweisen.
  • In Bezug auf die interne Struktur, die mit dem System 100 verbunden ist, kann jedes der Netzwerkelemente 102a-102c Speicherelemente zum Speichern von Informationen, die in den hierin skizzierten Vorgängen verwendet werden sollen, aufweisen. Jedes der Netzwerkelemente 102a-102c kann ggf. und basierend auf jeweiligen Erfordernissen Informationen in jeglichem geeigneten Speicherelement (z.B. Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), löschbaren programmierbaren ROM (EPROM), elektrisch löschbaren programmierbaren ROM (EEPROM), anwendungsspezifischen integrierten Schaltung (ASIC) usw.), jeglicher geeigneten Software, Hardware, Firmware oder in irgendeiner anderen geeigneten Komponente, Vorrichtung, in irgendeinem anderen geeigneten Element oder Objekt speichern. Jeder der hierin behandelten Speicher sollte so verstanden werden, dass er innerhalb des breiten Begriffs „Speicherelement“ umfasst ist. Darüber hinaus können die im System 100 verwendeten, verfolgten, gesendeten oder empfangenen Informationen in jeglicher Datenbank, jeglichem Register, jeglicher Warteschlange, jeglicher Tabelle, jeglichem Cache, jeglicher Steuerungsliste oder einer anderen Speicherstruktur bereitgestellt werden, die alle in jeglichem geeigneten Zeitrahmen referenziert werden können. Alle derartigen Speicheroptionen können ebenfalls unter den breit gefassten Begriff „Speicherelement“ fallen, wie er hierin verwendet wird.
  • In bestimmten beispielhaften Implementierungen können die hierin skizzierten Funktionen durch Logik implementiert werden, die in einem oder mehreren greifbaren Medien kodiert ist (z.B. eingebettete Logik, die in einem ASIC bereitgestellt wird, Befehle für Digitalsignalprozessoren (DSP), Software (möglicherweise einschließlich Objektcode und Quellcode), die von einem Prozessor oder einer anderen ähnlichen Maschine, etc. ausgeführt werden soll), das nichtflüchtige computerlesbare Medien aufweisen kann. In einigen dieser Beispiele können Speicherelemente Daten speichern, die für die hierin beschriebenen Vorgänge verwendet werden. Dies umfasst die Speicherelemente, die in der Lage sind, Software, Logik, Code oder Prozessorbefehle zu speichern, die zum Durchführen der hierin beschriebenen Aktivitäten ausgeführt werden.
  • In einer beispielhaften Implementierung können Elemente des Systems 100, wie etwa Netzwerkelemente 102a-102c, Softwaremodule aufweisen (z.B. NIC-Erweiterungsobjekt-Funktionseinheit 116a, Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit 118b, etc.), um die hierin skizzierten Vorgänge zu erreichen oder zu fördern. Diese Module können in jeglicher passenden Art und Weise geeignet miteinander kombiniert werden, was auf besonderen Konfigurations- und/oder Bereitstellungserfordernissen basieren kann. In Ausführungsbeispielen können solche Vorgänge durch Hardware durchgeführt, extern für diese Elemente implementiert oder in einer anderen Netzwerkvorrichtung integriert werden, um die gewünschte Funktionalität zu erreichen. Darüber hinaus können die Module als Software, Hardware, Firmware oder irgendeine beliebige Kombination davon implementiert werden. Diese Elemente können auch Software (oder reziproke Software) aufweisen, die sich mit anderen Netzwerkelementen koordinieren kann, um die hierin skizzierten Vorgänge zu erreichen.
  • Zusätzlich kann jedes der Netzwerkelemente 102a-102c einen Prozessor aufweisen, der Software oder einen Algorithmus ausführen kann, um die hierin erörterten Aktivitäten durchzuführen. Ein Prozessor kann jegliche Art von mit den Daten verknüpften Befehlen durchführen, um die hierin im einzelnen beschriebenen Vorgänge zu erzielen. In einem Beispiel könnten die Prozessoren ein Element oder einen Artikel (z.B. Daten) von einem Zustand oder Ding in einen anderen Zustand oder ein anderes Ding umformen. In einem weiteren Beispiel können die hierin skizzierten Vorgänge mit fester Logik oder programmierbarer Logik (z.B. Software-/Computerbefehle, die durch einen Prozessor ausgeführt werden) implementiert sein, und die hierin identifizierten Elemente könnten irgendeine Art programmierbarer Prozessor, programmierbare digitale Logik (z.B. ein feldprogrammierbares Gate-Array (FPGA), löschbarer programmierbarer Nur-Lese-Speicher (EPROM, erasable programmable read only memory), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM, electrically erasable programmable read-only memory)) oder ASIC sein, die Digitallogik, Software, Code, elektronische Befehle oder jede geeignete Kombination daraus enthält. Jedes der hierin beschriebenen potenziellen Verarbeitungselemente oder Module und jede der hierin beschriebenen potenziellen Maschinen ist so auszulegen, dass es oder sie innerhalb des breiten Begriffs „Prozessor“ umfasst ist
  • Mit Blick auf 2 ist 2 ein Blockdiagramm eines Beispiels für ein Paket 136 zur Verwendung in dem System 100. Das Paket 136 kann einen Header 124, einen Erweiterungsobjektabschnitt 126 und einen Nutzdatenabschnitt 128 aufweisen. Der Erweiterungsobjektabschnitt 126 kann vor einem Abschnitt der Schicht 3 des Pakets 136 angeordnet sein. In einem Beispiel kann der Erweiterungsobjektabschnitt 126 vor dem Nutzdatenabschnitt 128 angeordnet sein.
  • Mit Blick auf 3 ist 3 ein Blockdiagramm, das beispielhafte Details des Erweiterungsobjektabschnitts 126 zur Verwendung im System 100 gemäß einer Ausführungsform der vorliegenden Offenbarung darstellt. Der Erweiterungsobjektabschnitt 126 kann einen Typabschnitt 130 und einen oder mehrere Teilungsabschnitte 132a-132c aufweisen. Der Typabschnitt 130 kann im Header 124 andere Daten als Typdaten aufweisen, um bei der Identifizierung des Pakets 136 zu helfen. So kann beispielsweise der Typabschnitt 130 das Paket 136 als einen bestimmten Typ oder eine bestimmte Quelle eines Video-Frames, eines VOIP-Frame, eines Prioritäts-Frames, eines Pakets mit verbesserter Dienstgüte, eines Index oder einer Warteschlange für das zu liefernde Paket, einer Sequenznummer, die auf Paket 136 bezogen ist, usw. identifizieren. Jeder von einem oder mehreren Partitionsabschnitten 132a-132c kann Daten enthalten, die dem NIC helfen das Paket 136 zu verarbeiten, zu analysieren und/oder zu routen. So können beispielsweise ein oder mehrere Partitionsabschnitte 132a-132c paketspezifischen Kontext, Metadaten, Verarbeitungsregeln, von einer Anwendung zu verwendende Empfangs-Deskriptor-Erweiterungen, FPGA-Programmierflüsse, Inline-IP-Sec-Sicherheitsindizes nach der Entschlüsselung, Parsinginformationen, Lastverteilungs-Routing, etc. aufweisen.
  • In einem Beispiel kann ein Paket mit dem gleichen oder ähnlichen Headerabschnitt 124 und Nutzdatenabschnitt 128, aber mit unterschiedlichen Erweiterungsobjektabschnitten 126, an denselben NIC übermittelt werden. Darüber hinaus kann ein Paket mit ähnlichen Headerabschnitten 124 (z.B. wird die Zielkennung geändert), Nutzdatenabschnitt 128 und Erweiterungsobjektabschnitten 126 an eine Vielzahl von NIC übermittelt werden. Außerdem kann ein Paket mit ähnlichen Headerabschnitten 124 (z.B. wird die Zielkennung geändert), Nutzdatenabschnitt 128 und verschiedenen Erweiterungsobjektabschnitten 126 an eine Vielzahl von NIC übermittelt werden. In einem konkreten Beispiel kann eine Paketverarbeitungseinheit (z.B. Verarbeitungseinheit 112a) 200 Gigabit pro Sekunde verarbeiten, aber der NIC 110a kann nur 100 Gigabit pro Sekunde verarbeiten. Unter Verwendung einer Erweiterungsobjekt-Funktionseinheit (z.B. Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit 118a) kann die Verarbeitungseinheit 100 Gigabit an den NIC 110a und weitere 100 Gigabit an den NIC 110b, an den NIC 110c auf einer anderen Vorrichtung 104b oder NIC 110f in einem weiteren Netzwerkelement 102c senden.
  • Mit Blick auf 4 ist 4 ein Blockdiagramm beispielhafter Details eines Abschnitts des Systems 100 gemäß einer Ausführungsform der vorliegenden Offenbarung. Der Header 124 kann Header-Informationen (z.B. eine Quellkennung, eine Zielkennung, einen Typ usw.) für das Paket 138 aufweisen. In einem Beispiel, wenn das Paket 138 ein Ethernet-Paket ist, kann der Header-Abschnitt 124 eine MAC-Zieladresse, eine MAC-Quelladresse, eine Pakettypkennung usw. aufweisen. Der Erweiterungsobjektabschnitt 126 kann in das Paket 138 eingefügt werden, um das Paket 136 zur Kommunikation zwischen einem oder mehreren NIC und einer Verarbeitungseinheit zu erstellen.
  • Mit Blick auf 5 ist 5 ein Blockdiagramm eines Abschnitts des Systems 100 gemäß einer Ausführungsform der vorliegenden Offenbarung. In einem Beispiel kann die Anwendung 106a das Paket 138a an den NIC 110a übermitteln, um Daten und/oder einen oder mehrere Dienste anzufordern. Der NIC 110a kann das Paket 138a empfangen und als Reaktion ein Paket ähnlich dem Paket 138a (ein Paket, das keinen Erweiterungsobjektabschnitt 126 enthält) oder ein modifiziertes Paket 136 an die Verarbeitungseinheit 112a übermitteln. Die Verarbeitungseinheit 112a kann das modifizierte Paket 136 empfangen, den Erweiterungsobjektabschnitt 126 entfernen und ein Paket 138b an eine entfernte Vorrichtung 120 übermitteln, um die Anforderung von Daten und/oder einem oder mehreren Diensten zu erfüllen.
  • Als Reaktion auf die Anforderung kann die entfernte Vorrichtung 120 auf die Verarbeitungseinheit 112a unter Verwendung des Pakets 138b reagieren. Die Verarbeitungseinheit 112a kann die Antwort empfangen und das modifizierte Paket 136 an den NIC 110a übermitteln. Der NIC 110a kann das modifizierte Paket 136 empfangen, den Erweiterungsobjektabschnitt 126 entfernen und das Paket 138a an die Anwendung 106a übermitteln. In einem Beispiel kann der Erweiterungsobjektabschnitt 126 vor der Anwendung 106a verborgen werden. Der NIC 110a kann basierend auf den Daten im Erweiterungsobjektabschnitt 126 eine oder mehrere Aktionen durchführen oder einleiten (z.B. Warteschlange oder Anwendung auswählen, um das Paket oder die mit dem Paket verbundenen Daten zu senden, usw.) und dann den Erweiterungsobjektabschnitt 126 entfernen, bevor das Paket 138a an die Anwendung 106a übermittelt wird.
  • Mit Blick auf 6 ist 6 ein Blockdiagramm eines Abschnitts des Systems 100 gemäß einer Ausführungsform der vorliegenden Offenbarung. In einem Beispiel kann die Anwendung 106a ein Paket an den NIC 110a übermitteln, um Daten und/oder einen oder mehrere Dienste anzufordern. Das Paket kann dem Paket 138a ähnlich sein und keinen Erweiterungsobjektabschnitt 126 aufweisen oder die Anwendung 106a kann ein modifiziertes Paket 136a an den NIC 110a übermitteln. Das modifizierte Paket 136a kann den Header 124, einen Erweiterungsobjektabschnitt 126a und den Nutzdatenabschnitt 128 aufweisen. Der Erweiterungsobjektabschnitt 126a kann dem Erweiterungsobjektabschnitt 126 ähnlich sein, ähnliche Daten wie der Erweiterungsobjektabschnitt 126 aufweisen, einen Teil der Daten im Erweiterungsobjektabschnitt 126 aufweisen oder andere Daten als die Daten im Erweiterungsobjektabschnitt 126 aufweisen. Der NIC 110a kann das Paket empfangen und als Reaktion das modifizierte Paket 136b an die Verarbeitungseinheit 112a übermitteln. Das modifizierte Paket 136b kann den Header-Abschnitt 124, einen Erweiterungsobjektabschnitt 126b und den Nutzdatenabschnitt 128 aufweisen. Der Erweiterungsobjektabschnitt 126b kann dem Erweiterungsobjektabschnitt 126 und/oder 126a ähnlich sein, ähnliche Daten wie der Erweiterungsobjektabschnitt 126 und/oder 126a aufweisen, einen Teil der Daten im Erweiterungsobjektabschnitt 126 und/oder 126a aufweisen oder andere Daten als die Daten im Erweiterungsobjektabschnitt 126 und/oder 126a aufweisen. Die Verarbeitungseinheit 112a kann das modifizierte Paket 136b empfangen, den Erweiterungsobjektabschnitt 126 entfernen und das Paket 138 an eine entfernte Vorrichtung 120 übermitteln, um die Anforderung von Daten und/oder einem oder mehreren Diensten zu erfüllen.
  • Als Reaktion auf die Anforderung kann die entfernte Vorrichtung 120 auf die Verarbeitungseinheit 112a unter Verwendung des Pakets 138 reagieren. Die Verarbeitungseinheit 112a kann die Antwort empfangen und das modifizierte Paket 136b an den NIC 110a übermitteln. Der NIC 110a kann das modifizierte Paket 136b empfangen und das modifizierte Paket 138a an die Anwendung 106a übermitteln. NIC 110a kann zu dem gesamten oder einem Teil des Erweiterungsobjektabschnitts 126 im modifizierten Paket 136b etwas hinzufügen oder beibehalten, wenn er das modifizierte Paket 136a übermittelt, um Informationen an die Anwendung 106a zu übermitteln.
  • Mit Blick auf 7 ist 7 ein Blockdiagramm eines Abschnitts des Systems 100 gemäß einer Ausführungsform der vorliegenden Offenbarung. In einem Beispiel kann die Anwendung 106a ein Metadatenpaket 140 an den NIC 110a übermitteln, um Daten und/oder einen oder mehrere Dienste anzufordern. Das Metadatenpaket 140 kann den Header-Abschnitt 124, einen Metadatenabschnitt 134 und den Nutzdatenabschnitt 128 aufweisen. Der Metadatenabschnitt 134 kann Metadaten, eine Erweiterungsmarkierung oder andere Daten aufweisen. In einem Beispiel kann das Metadatenpaket 140 eine L2-Erweiterungsmarkierung aufweisen, die eine vordefinierte Länge hat. Der Metadatenabschnitt 134 kann von der Anwendung verwendet werden, um eine Rückmeldung an den NIC 110a und/oder die Verarbeitungseinheit 112a bereitzustellen, um Daten oder ein spezifisches Routing von Paketen durch den NIC 110a anzufordern, um eine spezifische Programmierung für die Verarbeitungseinheit 112a anzufordern oder um andere Anforderungen an ein spezifisches Paketrouting und/oder eine spezifische Paketverarbeitung. Der NIC 110a und die Verarbeitungseinheit 112a können die Daten im Metadatenabschnitt 134 verwenden, um die Daten zu bestimmen, die in den Erweiterungsobjektabschnitt 126 aufgenommen werden.
  • Der NIC 110a kann das Metadatenpaket 140 und als Reaktion das modifizierte Paket 136 an die Verarbeitungseinheit 112a übermitteln. Die Verarbeitungseinheit 112a kann das modifizierte Paket 136 empfangen, den Erweiterungsobjektabschnitt 126 entfernen und das Paket 138 an eine entfernte Vorrichtung 120 übermitteln, um die Anforderung von Daten und/oder einem oder mehreren Diensten zu erfüllen. Als Reaktion auf die Anforderung kann die entfernte Vorrichtung 120 auf die Verarbeitungseinheit 112a unter Verwendung des Pakets 138 reagieren. Die Verarbeitungseinheit 112a kann die Antwort empfangen und das modifizierte Paket 136b an den NIC 110a übermitteln. Der NIC 110a kann das modifizierte Paket 136b empfangen und ein Paket ähnlich dem Paket 138, ein modifiziertes Paket ähnlich dem modifizierten Paket 138a oder ein Erweiterungsmarkierungs-Paket ähnlich dem Metadatenpaket 140 an die Anwendung 106a übermitteln. Als Reaktion darauf kann die Anwendung 106a das Metadatenpaket 140 verwenden, um Rückmeldedaten an den NIC 110a und die Verarbeitungseinheit 112a zu übermitteln, ein spezifisches Routing von Paketen anzufordern und/oder eine spezifische Datenverarbeitung anzufordern.
  • Mit Blick auf 8 ist 8 ein beispielhaftes Ablaufdiagramm, das mögliche Vorgänge eines Ablaufs 800 veranschaulicht, die mit dem Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit gemäß einer Ausführungsform verbunden sein können. In einer Ausführungsform können eine oder mehrere Vorgänge des Ablaufs 800 durch die NIC-Erweiterungsobjekt-Funktionseinheit 116 und/oder eine Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit 118 durchgeführt werden. Bei 802 empfängt eine Verarbeitungseinheit ein Paket. So kann beispielsweise das Paket von einem NIC (z.B. NIC 110a, einer Verarbeitungseinheit (z.B. Verarbeitungseinheit 112b oder 112d) oder einer entfernten Vorrichtung 120 empfangen worden sein. Bei 804 bestimmt das System, ob ein Erweiterungsobjektabschnitt dem Paket hinzugefügt werden muss. Wenn ein Erweiterungsobjektabschnitt nicht zum Paket hinzugefügt werden muss, wird das Paket (ohne Modifikation) an das nächste Ziel übermittelt, wie in 808. Wenn ein Erweiterungsobjektabschnitt zu dem Paket hinzugefügt werden muss, dann wird der Erweiterungsobjektabschnitt zu dem Paket hinzugefügt, wie in 806, und das Paket wird wie in 808 an das nächste Ziel übermittelt. So kann beispielsweise das Paket von der Verarbeitungseinheit 112b an den NIC 110a auf der Vorrichtung 104a (ein anderes SoC), den NIC 110c auf dem gleichen SoC, den NIC 110g im Netzwerkelement 102c (ein anderes Netzwerkelement), die Verarbeitungseinheit 112c auf dem gleichen SoC, die Verarbeitungseinheit 112d im Netzwerkelement 102c (ein anderes Netzwerkelement) oder irgendeinen anderen NIC oder irgendeine andere Verarbeitungseinheit übertragen werden. Darüber hinaus kann das Paket an mehr als ein NIC oder mehr als eine Verarbeitungseinheit übermittelt werden.
  • Mit Blick auf 9 ist 9 ein beispielhaftes Ablaufdiagramm, das mögliche Vorgänge eines Ablaufs 900 veranschaulicht, die mit dem Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit gemäß einer Ausführungsform verbunden sein können. In einer Ausführungsform können eine oder mehrere Vorgänge des Ablaufs 900 durch die NIC-Erweiterungsobjekt-Funktionseinheit 116 und/oder eine Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit 118 durchgeführt werden. Bei 902 empfängt ein NIC ein Paket mit einem Erweiterungsobjektabschnitt. Bei 904 wird der Erweiterungsobjektabschnitt verarbeitet. Zum Beispiel kann der Erweiterungsobjektabschnitt einen Typabschnitt 130 aufweisen, der das Paket als eine verbesserte Qualitätsquelle für einen Video-Frame identifiziert. Darüber hinaus kann der Erweiterungsobjektabschnitt einen oder mehrere Partitionsabschnitte 132a-132c aufweisen, um dem NIC zu helfen, das Paket zu verarbeiten, analysieren und/oder zu routen. Bei 906 bestimmt das System basierend auf dem Erweiterungsobjektabschnitt, ob eine Aktion eingeleitet werden muss. Wenn basierend auf dem Erweiterungsobjektabschnitt eine Aktion eingeleitet werden muss, dann wird die Aktion wie in 908 eingeleitet, und das System bestimmt, ob der Erweiterungsobjektabschnitt wie in 910 aus dem Paket entfernt werden muss. Wenn basierend auf dem Erweiterungsobjektabschnitt keine Aktion eingeleitet werden muss, bestimmt das System, ob der Erweiterungsobjektabschnitt aus dem Paket entfernt werden muss, wie in 910. Wenn der Erweiterungsobjektabschnitt nicht aus dem Paket entfernt werden muss, wird das Paket wie in 914 an das nächste Ziel übermittelt. Wenn der Erweiterungsobjektabschnitt aus dem Paket entfernt werden muss, dann wird der Erweiterungsobjektabschnitt aus dem Paket entfernt, wie in 912, und das Paket wird wie in 914 an das nächste Ziel übermittelt. In einem weiteren Beispiel kann dem Paket eine Erweiterungsmarkierung (z.B. Metadatenabschnitt 134) hinzugefügt werden, bevor es an das nächste Ziel übermittelt wird.
  • Mit Blick auf 10 ist 10 ein beispielhaftes Ablaufdiagramm, das mögliche Vorgänge eines Ablaufs 1000 veranschaulicht, die mit dem Ermöglichen einer skalierbaren Kommunikation mit einer Paketverarbeitungseinheit gemäß einer Ausführungsform verbunden sein können. In einer Ausführungsform können eine oder mehrere Vorgänge des Ablaufs 1000 durch die NIC-Erweiterungsobjekt-Funktionseinheit 116 und/oder eine Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit 118 durchgeführt werden. Bei 1002 empfängt eine Vorrichtung ein Paket. Bei 1004 bestimmt das System, ob das Paket einen Erweiterungsobjektabschnitt aufweist. Wenn das Paket einen Erweiterungsobjektabschnitt aufweist, bestimmt das System, ob basierend auf dem Erweiterungsobjektabschnitt eine Aktion eingeleitet werden muss, wie in 1006. Wenn basierend auf dem Erweiterungsobjektabschnitt keine Aktion eingeleitet werden muss, bestimmt das System, ob der Erweiterungsobjektabschnitt aus dem Paket entfernt werden muss, wie in 1010. Wenn basierend auf dem Erweiterungsobjektabschnitt eine Aktion eingeleitet werden muss, dann wird die Aktion wie in 1008 eingeleitet, und das System bestimmt, ob der Erweiterungsobjektabschnitt wie in 1010 aus dem Paket entfernt werden muss. Wenn der Erweiterungsobjektabschnitt nicht aus dem Paket entfernt werden muss, wird das Paket wie in 1014 an das nächste Ziel übermittelt. Wenn der Erweiterungsobjektabschnitt aus dem Paket entfernt werden muss, dann wird der Erweiterungsobjektabschnitt aus dem Paket entfernt, wie in 1012, und das Paket wird wie in 1014 an das nächste Ziel übermittelt. In einem Beispiel kann das nächste Ziel eine ähnliche Vorrichtung sein wie die Vorrichtung, die das Paket empfangen hat. Genauer gesagt, kann eine Verarbeitungseinheit (z.B. Verarbeitungseinheit 112b) das Paket an eine Verarbeitungseinheit auf derselben Vorrichtung (z.B. befindet sich die Verarbeitungseinheit 112c auf derselben Vorrichtung 104b wie die Verarbeitungseinheit 112b), eine Verarbeitungseinheit auf demselben Netzwerkelement, aber auf einer anderen Vorrichtung (z.B. befindet sich die Verarbeitungseinheit 112a auf dem gleichen Netzwerkelement 102a wie die Verarbeitungseinheit 112b, aber die Verarbeitungseinheit 112a befindet sich auf der Vorrichtung 104b, während sich die Verarbeitungseinheit auf der Vorrichtung 104b befindet), oder eine Verarbeitungseinheit auf einem anderen Netzwerkelement (z.B. befindet sich die Verarbeitungseinheit 112d auf dem Netzwerkelement 102c, das sich von dem Netzwerkelement 102a unterscheidet, das die Verarbeitungseinheit 112b beinhaltet) übermitteln. In einem anderen Beispiel kann das nächste Ziel ein NIC auf derselben Vorrichtung sein (z.B. befindet sich der NIC 110c auf derselben Vorrichtung 104b wie die Verarbeitungseinheit 112b), ein NIC auf demselben Netzwerkelement, aber auf einer anderen Vorrichtung (z.B. befindet sich der NIC 110a auf dem gleichen Netzwerkelement 102a wie die Verarbeitungseinheit 112b, aber der NIC 110a befindet sich auf der Vorrichtung 104b, während sich die Verarbeitungseinheit auf der Vorrichtung 104b befindet), oder ein NIC auf einem anderen Netzwerkelement (z.B. befindet sich der NIC 110e auf dem Netzwerkelement 102b, das sich von dem Netzwerkelement 102a unterscheidet, das die Verarbeitungseinheit 112b beinhaltet).
  • Es ist auch wichtig zu beachten, dass die Vorgänge in den vorangegangenen Ablaufdiagrammen (d.h. 8-10) nur einige der möglichen Korrelationsszenarios und Muster veranschaulichen, die von oder innerhalb des Systems 100 ausgeführt werden können. Einige dieser Vorgänge können ggf. gelöscht oder entfernt werden oder diese Vorgänge können erheblich modifiziert oder geändert werden, ohne dass vom Schutzbereich der vorliegenden Offenbarung abgewichen wird. Außerdem ist eine Reihe dieser Vorgänge als gleichzeitig mit weiteren Vorgängen oder parallel zu denselben ausgeführt beschrieben worden. Der Zeitablauf dieser Vorgänge kann jedoch erheblich verändert werden. Die vorstehenden Betriebsabläufe sind für Beispiels- und Diskussionszwecke angegeben worden. Durch das System 100 wird eine wesentliche Flexibilität bereitgestellt, indem jegliche geeigneten Anordnungen, Chronologien, Konfigurationen Zeitmechanismen bereitgestellt werden können, ohne dass von den Lehren der vorliegenden Offenbarung abgewichen wird.
  • Obgleich die vorliegende Offenbarung mit Bezug auf bestimmte Anordnungen und Konfigurationen ausführlich beschrieben wurde, können diese beispielhaften Konfigurationen und Anordnungen erheblich geändert werden, ohne dass vom Umfang der vorliegenden Offenbarung abgewichen wird. Darüber hinaus können bestimmte Komponenten basierend auf jeweiligen Erfordernissen und Implementierungen kombiniert, getrennt, entfernt oder hinzugefügt werden. Obgleich das System 100 mit Bezug auf bestimmte Elemente und Vorgänge veranschaulicht wurde, die den Kommunikationsprozess erleichtern, können diese Elemente und Vorgänge durch jegliche geeignete Architektur, jegliche geeignete Protokolle und/oder Prozesse ersetzt werden, welche die gewünschte Funktionalität des Systems 100 erreichen.
  • Zahlreiche andere Änderungen, Ersetzungen, Variationen, Abänderungen und Modifizierungen können für einen Fachmann ermittelbar sein, und es ist beabsichtigt, dass die vorliegende Offenbarung alle solche Änderungen, Ersetzungen, Variationen, Abänderungen und Modifizierungen als innerhalb des Schutzbereichs der angehängten Ansprüche fallend umfasst. Um das Patent- und Markenamt der Vereinigten Staaten (USPTO) und auch alle Leser eines Patentes, das zu dieser Patentanmeldung erteilt wird, bei der Interpretation der hieran angehängten Ansprüche zu unterstützen, möchte der Anmelder bemerken, dass der Anmelder: (a) nicht beabsichtigt, dass einer der angehängten Ansprüche Paragraph sechs (6) von 35 U. S. C. Abschnitt 112 aktiviert, wie er am Tag der Anmeldung desselben existiert, es sei denn, dass die Begriffe „Mittel zum“ oder „Schritt zum“ in den bestimmten Ansprüchen speziell verwendet werden; (b) durch irgendeine Angabe in der Patentschrift nicht beabsichtigt, diese Offenbarung in irgendeiner Weise zu beschränken, die nicht anderweitig in den angehängten Ansprüchen wiedergegeben ist.
  • WEITERE HINWEISE UND BEISPIELE
  • Beispiel C1 ist mindestens ein maschinenlesbares Speichermedium mit einem oder mehreren Befehlen, die, wenn sie von mindestens einem Prozessor ausgeführt werden, den mindestens einen Prozessor veranlassen, ein Paket bei einer Verarbeitungseinheit auf einem System-on-Chip (SoC) zu empfangen, einen Erweiterungsobjektabschnitt zu dem Paket hinzuzufügen, um ein modifiziertes Paket zu erstellen, und das modifizierte Paket an einen Netzwerkschnittstellencontroller (NIC), der sich auf demselben SoC befindet, zu übermitteln.
  • In dem Beispiel C2 kann der Gegenstand von Beispiel C1 optional aufweisen, wo der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  • In dem Beispiel C3 kann der Gegenstand irgendeines der Beispiele C1-C2 optional aufweisen, wo das Paket ein Ethernet-Paket ist.
  • In dem Beispiel C4 kann der Gegenstand irgendeines der Beispiele C1-C3 optional aufweisen, wo der eine oder die mehreren Befehle den mindestens einen Prozessor ferner veranlassen, das modifizierte Paket an einen zweiten NIC zu übermitteln.
  • In dem Beispiel C5 kann der Gegenstand irgendeines der Beispiele C1-C4 optional aufweisen, wo sich der zweite NIC auf einem zweiten SoC befindet.
  • In dem Beispiel C6 kann der Gegenstand irgendeines der Beispiele C1-C5 optional aufweisen, wo der Erweiterungsobjektabschnitt Typdaten und Partitionsdaten aufweist.
  • In dem Beispiel C7 kann der Gegenstand irgendeines der Beispiele C1-C6 optional aufweisen, wo der eine oder die mehreren Befehle, wenn sie von dem mindestens einen Prozessor ausgeführt werden, den mindestens einen Prozessor ferner veranlassen, eine Rückmeldung von dem NIC bezüglich des modifizierten Pakets zu empfangen.
  • In dem Beispiel A1 kann ein System-on-Chip (SoC) ein erstes Netzwerkelement, Speicher, eine Erweiterungsobjekt-Funktionseinheit und mindestens einen Prozessor aufweisen. Der mindestens eine Prozessor ist dazu konfiguriert, die Erweiterungsobjekt-Funktionseinheit zu veranlassen, einen Erweiterungsobjektabschnitt zu einem an dem ersten Netzwerkelement empfangenen Paket hinzuzufügen, um ein modifiziertes Paket zu erstellen und das modifizierte Paket an ein zweites Netzwerkelement, das sich auf demselben SoC befindet, zu übermitteln.
  • In dem Beispiel A2 kann der Gegenstand von Beispiel A1 optional aufweisen, wo das erste Netzwerkelement eine Verarbeitungseinheit ist.
  • In dem Beispiel A3 kann der Gegenstand irgendeines der Beispiele A1-A2 optional aufweisen, wo das zweite Netzwerkelement ein Netzwerkschnittstellencontroller ist.
  • In dem Beispiel A4 kann der Gegenstand irgendeines der Beispiele A1-A3 optional aufweisen, wo der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  • In dem Beispiel A5 kann der Gegenstand irgendeines der Beispiele A1-A4 optional aufweisen, wo das Paket ein Ethernet-Paket ist.
  • Beispiel M1 ist ein Verfahren, welches das Empfangen eines Pakets an einer Verarbeitungseinheit auf einem System-on-Chip (SoC), das Hinzufügen eines Erweiterungsobjektabschnitts zu dem Paket, um ein modifiziertes Paket zu erstellen, und das Übermitteln des modifizierten Pakets an einen Netzwerkschnittstellencontroller (NIC), der sich auf demselben SoC befindet, umfasst.
  • In dem Beispiel M2 kann der Gegenstand von Beispiel M1 optional aufweisen, wo der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  • In dem Beispiel M3 kann der Gegenstand irgendeines der Beispiele M1-M2 optional aufweisen, wo das Paket ein Ethernet-Paket ist.
  • In dem Beispiel M4 kann der Gegenstand irgendeines der Beispiele M1-M3 optional das Empfangen einer Rückmeldung von dem NIC bezüglich des modifizierten Pakets aufweisen.
  • In dem Beispiel M5 kann der Gegenstand irgendeines der Beispiele M1-M4 optional das Übermitteln des modifizierten Pakets an einen zweiten NIC aufweisen.
  • In dem Beispiel M6 kann der Gegenstand irgendeines der Beispiele M1-M5 optional aufweisen, wo sich der zweite NIC auf einem zweiten SoC befindet.
  • Beispiel S1 ist ein System zum Ermöglichen einer Kommunikation zwischen einer Paketverarbeitungseinheit und einem Netzwerkschnittstellencontroller (NIC) unter Verwendung eines Erweiterungsobjekts, das System kann Speicher, einen oder mehrere Prozessoren und eine Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit aufweisen. Die Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit kann dazu konfiguriert sein, zu veranlassen, dass ein Paket an der Paketverarbeitungseinheit empfangen wird, wobei sich die Paketverarbeitungseinheit auf einem System-on-Chip (SoC) befindet, einen Erweiterungsobjektabschnitt zu dem Paket hinzuzufügen, um ein modifiziertes Paket zu erstellen, und zu veranlassen, dass das modifizierte Paket an den NIC, der sich auf demselben SoC befindet, übermittelt wird.
  • In dem Beispiel S2 kann der Gegenstand von Beispiel S1 optional aufweisen, wo der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  • In dem Beispiel S3 kann der Gegenstand irgendeines der Beispiele S1-S2 optional aufweisen, wo das Paket ein Ethernet-Paket ist.
  • In dem Beispiel S4 kann der Gegenstand irgendeines der Beispiele S1-S3 optional aufweisen, wo die Erweiterungsobjekt-Funktionseinheit ferner dazu konfiguriert ist, von dem NIC eine Rückmeldung bezüglich des modifizierten Pakets zu empfangen.
  • In dem Beispiel S5 kann der Gegenstand irgendeines der Beispiele S1-S4 optional aufweisen, wo die Erweiterungsobjekt-Funktionseinheit ferner dazu konfiguriert ist, zu veranlassen, dass das modifizierte Paket an einen zweiten NIC übermittelt wird.
  • In dem Beispiel S6 kann der Gegenstand irgendeines der Beispiele S1-S5 optional aufweisen, wo sich der zweite NIC auf einem zweiten SoC befindet.
  • In dem Beispiel S7 kann der Gegenstand irgendeines der Beispiele S1-S6 optional aufweisen, wo sich der zweite NIC auf dem SoC befindet.
  • Beispiel AA1 ist eine Einrichtung, die Mittel zum Empfangen eines Pakets an einer Verarbeitungseinheit auf einem System-on-Chip (SoC), Mittel zum Hinzufügen eines Erweiterungsobjektabschnitts zu dem Paket, um ein modifiziertes Paket zu erstellen, und Mittel zum Übermitteln des modifizierten Pakets an einen Netzwerkschnittstellencontroller (NIC), der sich auf demselben SoC befindet, aufweist.
  • In dem Beispiel AA2 kann der Gegenstand von Beispiel AA1 optional aufweisen, wo der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  • In dem Beispiel AA3 kann der Gegenstand irgendeines der Beispiele AA1-AA2 optional aufweisen, wo das Paket ein Ethernet-Paket ist.
  • In dem Beispiel AA4 kann der Gegenstand irgendeines der Beispiele AA1-AA3 optional Mittel zum Übermitteln des modifizierten Pakets an einen zweiten NIC aufweisen.
  • In dem Beispiel AA5 kann der Gegenstand irgendeines der Beispiele AA1-AA4 optional aufweisen, wo sich der zweite NIC auf einem zweiten SoC befindet.
  • In dem Beispiel AA6 kann der Gegenstand irgendeines der Beispiele AA1-AA5 optional aufweisen, wo der Erweiterungsobjektabschnitt Typdaten und Partitionsdaten aufweist.
  • In dem Beispiel AA7 kann der Gegenstand irgendeines der Beispiele AA1-AA6 optional Mittel zum Empfangen einer Rückmeldung von dem NIC bezüglich des modifizierten Pakets aufweisen.
  • Beispiel X1 ist ein maschinenlesbares Speichermedium, das maschinenlesbare Befehle zur Implementierung eines Verfahrens oder zur Realisierung einer Einrichtung wie in einem der Beispiele A1-A4, AA1-AA7 oder M1-M6 aufweist. Beispiel Y1 ist eine Einrichtung, die Mittel zum Durchführen irgendeines der beispielhaften Verfahren M1-M6 umfasst. In dem Beispiel Y2 kann der Gegenstand von Beispiel Y1 optional die Mittel zum Durchführen des Verfahrens aufweisen, die einen Prozessor und einen Speicher umfassen. In dem Beispiel Y3 kann der Gegenstand von Beispiel Y2 optional den Speicher, der maschinenlesbare Befehle umfasst, aufweisen.

Claims (25)

  1. Mindestens ein maschinenlesbares Medium, das einen oder mehrere Befehle umfasst, die, wenn sie von mindestens einem Prozessor ausgeführt werden, den mindestens einen Prozessor zu Folgendem veranlassen: Empfangen eines Pakets an einer Verarbeitungseinheit auf einem System-on-Chip (SoC); Hinzufügen eines Erweiterungsobjektabschnitts zu dem Paket, um ein modifiziertes Paket zu erstellen; und Übermitteln des modifizierten Pakets an einen Netzwerkschnittstellencontroller (NIC), der sich auf demselben SoC befindet.
  2. Mindestens ein maschinenlesbares Medium gemäß Anspruch 1, wobei der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  3. Mindestens ein maschinenlesbares Medium gemäß einem der Ansprüche 1 und 2, wobei das Paket ein Ethernet-Paket ist.
  4. Mindestens ein maschinenlesbares Medium gemäß einem der Ansprüche 1-3, wobei der eine oder die mehreren Befehle den mindestens einen Prozessor ferner zu Folgendem veranlassen: Übermitteln des modifizierten Pakets an einen zweiten NIC.
  5. Mindestens ein maschinenlesbares Medium gemäß Anspruch 4, wobei sich der zweite NIC auf einem zweiten SoC befindet.
  6. Mindestens ein maschinenlesbares Medium gemäß einem der Ansprüche 1-4, wobei der Erweiterungsobjektabschnitt Typdaten und Partitionsdaten aufweist.
  7. Mindestens ein maschinenlesbares Medium gemäß einem der Ansprüche 1-4, wobei der eine oder die mehreren Befehle den mindestens einen Prozessor ferner zu Folgendem veranlassen: Empfangen einer Rückmeldung von dem NIC bezüglich des modifizierten Pakets.
  8. System-on-Chip (SOC), umfassend: ein erstes Netzwerkelement; Speicher; eine Erweiterungsobjekt-Funktionseinheit; und mindestens einen Prozessor, wobei der mindestens eine Prozessor dazu konfiguriert ist, die Erweiterungsobjekt-Funktionseinheit zu Folgendem zu veranlassen: Hinzufügen eines Erweiterungsobjektabschnitts zu einem Paket, das an dem ersten Netzwerkelement empfangen wurde, um ein modifiziertes Paket zu erstellen; und Übermitteln des modifizierten Pakets an ein zweites Netzwerkelement, das sich auf demselben SoC befindet.
  9. SoC gemäß Anspruch 8, wobei das erste Netzwerkelement eine Verarbeitungseinheit ist.
  10. SoC gemäß einem der Ansprüche 8 und 9, wobei das zweite Netzwerkelement ein Netzwerkschnittstellencontroller ist.
  11. SoC gemäß einem der Ansprüche 8-10, wobei der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  12. SoC gemäß einem der Ansprüche 8-11, wobei das Paket ein Ethernet-Paket ist.
  13. Verfahren, umfassend: Empfangen eines Pakets an einer Verarbeitungseinheit auf einem System-on-Chip (SoC); Hinzufügen eines Erweiterungsobjektabschnitts zu dem Paket, um ein modifiziertes Paket zu erstellen; und Übermitteln des modifizierten Pakets an einen Netzwerkschnittstellencontroller (NIC), der sich auf demselben SoC befindet.
  14. Verfahren gemäß Anspruch 13, wobei der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  15. Verfahren gemäß einem der Ansprüche 13 und 14, wobei das Paket ein Ethernet-Paket ist.
  16. Verfahren gemäß einem der Ansprüche 13-15, das ferner Folgendes umfasst: Empfangen einer Rückmeldung von dem NIC bezüglich des modifizierten Pakets.
  17. Verfahren gemäß einem der Ansprüche 13-16, das ferner Folgendes umfasst: Übermitteln des modifizierten Pakets an einen zweiten NIC.
  18. Verfahren gemäß Anspruch 17, wobei sich der zweite NIC auf einem zweiten SoC befindet.
  19. System zum Ermöglichen einer Kommunikation zwischen einer Paketverarbeitungseinheit und einem Netzwerkschnittstellencontroller (NIC) unter Verwendung eines Erweiterungsobjekts, wobei das System Folgendes umfasst: Speicher; einen oder mehrere Prozessoren; und eine Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit, wobei die Verarbeitungseinheit-Erweiterungsobjekt-Funktionseinheit zu Folgendem konfiguriert ist: Veranlassen, dass ein Paket an der Paketverarbeitungseinheit empfangen wird, wobei sich die Paketverarbeitungseinheit auf einem System-on-Chip (SoC) befindet; Hinzufügen eines Erweiterungsobjektabschnitts zu dem Paket, um ein modifiziertes Paket zu erstellen; und Veranlassen, dass das modifizierte Paket an den NIC, der sich auf demselben SoC befindet, übermittelt wird.
  20. System gemäß Anspruch 19, wobei der Erweiterungsobjektabschnitt vor einem Nutzdatenabschnitt des Pakets hinzugefügt wird.
  21. System gemäß einem der Ansprüche 19 und 20, wobei das Paket ein Ethernet-Paket ist.
  22. System gemäß einem der Ansprüche 19-21, wobei die Erweiterungsobjekt-Funktionseinheit ferner zu Folgendem konfiguriert ist: Empfangen einer Rückmeldung von dem NIC bezüglich des modifizierten Pakets.
  23. System gemäß einem der Ansprüche 19-22, wobei die Erweiterungsobjekt-Funktionseinheit ferner zu Folgendem konfiguriert ist: Veranlassen, dass das modifizierte Paket an einen zweiten NIC übermittelt wird.
  24. System gemäß Anspruch 23, wobei sich der zweite NIC auf einem zweiten SoC befindet.
  25. System gemäß Anspruch 23, wobei sich der zweite NIC auf dem SoC befindet.
DE102018128777.1A 2017-12-18 2018-11-16 Skalierbare Kommunikation mit einer Paketverarbeitungseinheit Pending DE102018128777A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/845,130 2017-12-18
US15/845,130 US11394666B2 (en) 2017-12-18 2017-12-18 Scalable communication with a packet processing unit

Publications (1)

Publication Number Publication Date
DE102018128777A1 true DE102018128777A1 (de) 2019-06-19

Family

ID=65274230

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018128777.1A Pending DE102018128777A1 (de) 2017-12-18 2018-11-16 Skalierbare Kommunikation mit einer Paketverarbeitungseinheit

Country Status (3)

Country Link
US (1) US11394666B2 (de)
CN (1) CN109936558A (de)
DE (1) DE102018128777A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US20190207868A1 (en) * 2019-02-15 2019-07-04 Intel Corporation Processor related communications
US11570808B2 (en) * 2020-04-08 2023-01-31 Qualcomm Incorporated Two-step random access procedure in wireless communication

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590231B2 (en) * 2003-08-18 2009-09-15 Cisco Technology, Inc. Supporting enhanced media communications in communications conferences
US8145733B1 (en) * 2006-02-15 2012-03-27 Trend Micro Incorporated Identification of computers located behind an address translation server
EP2092436A4 (de) * 2006-10-26 2010-03-24 Coke S Reed Netzwerkschnittstellenkarte zur verwendung in parallelen datenverarbeitungssystemen
US8284775B2 (en) * 2007-06-29 2012-10-09 Stmicroelectronics, Inc. Six-address scheme for multiple hop forwarding in wireless mesh networks
CN103685010B (zh) * 2012-09-05 2018-01-12 新华三技术有限公司 一种报文转发方法和边缘设备
US9155046B2 (en) * 2012-09-12 2015-10-06 Intel Corporation Optimizing semi-active workloads
US9047417B2 (en) * 2012-10-29 2015-06-02 Intel Corporation NUMA aware network interface
SG10201402893YA (en) * 2014-06-04 2016-01-28 Lantiq Deutschland Gmbh Data packet processing system on a chip

Also Published As

Publication number Publication date
US20190052583A1 (en) 2019-02-14
CN109936558A (zh) 2019-06-25
US11394666B2 (en) 2022-07-19

Similar Documents

Publication Publication Date Title
DE60301029T2 (de) Replikationsprozess für IP-Mehrfachsendung und Vorrichtung hierfür
DE60130319T2 (de) Mehrtor-brücke zur lieferung von netzwerkverbindungen
DE102013209118B4 (de) Beibehaltung und Änderung von Netzwerküberlastungsbenachrichtigungen während der Übertragung von Netzwerkdaten zwischen einem physischen Netzwerk und einem virtuellen Netzwerk
DE112008002550B4 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE60131596T2 (de) Stapelbare Sucheinrichtung
DE60115615T2 (de) System, einrichtung und verfahren zur schnellen paketfilterung und -verarbeitung
DE102005035201B4 (de) Netzknoteneinheit und Verfahren zur Weiterleitung von Datenpaketen
DE69934192T2 (de) Verfahren und Einrichtung zur Netzverbindung mittels Brücken
DE112009002716B4 (de) Verbessertes automatisches Handelssystem
EP2882144B1 (de) Verfahren und Filteranordnung zum Filtern von über einen seriellen Datenbus eines Kommunikationsnetzwerks in einem Teilnehmer des Netzwerks eingehenden Nachrichten
DE102013111538B4 (de) Architektur für Virtualisierung und Verteilung von in einem Transportnetz genutzten Routinginformationen
DE112013004187B4 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE102018128777A1 (de) Skalierbare Kommunikation mit einer Paketverarbeitungseinheit
DE112013002447T5 (de) Weiterleitung eines Pakets mit einem Edge-Gerät
DE102015102871A1 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
DE102014108455A1 (de) Verfahren zum Betreiben eines Netzwerks
DE202016107382U1 (de) Systeme für die Verarbeitung von Paketen in einem Computernetzwerk
DE60112011T2 (de) Verfahren und Vorrichtung zum Filtern von Paketen basierend auf Datenströme unter Verwendung von Addressentabellen
DE202013012482U1 (de) Identifizieren eines Austrittspunkts zu einem Netzwerkstandort
DE602005006035T2 (de) Vorrichtung und Verfahren zur Bearbeitung von Rahmen mit multiprotokollverwendungsfeldern für ein Kommunikationsnetzwerk
DE60130844T2 (de) Autonomes OSPF-System mit einem in zwei Teilbereiche getrennten Hauptnetz
DE19860120B4 (de) Routensuchschaltung und diese verwendende Kommunikationsvorrichtung
DE102017129751B4 (de) Fahrzeugnetzwerksystem für Hochgeschwindigkeits-Datenverarbeitung
DE602005005291T2 (de) Erweiterbare Pipelinearchitektur für ein Netzwerkgerät
DE112020002787T5 (de) Verbindungsschichtverfahren zum konfigurieren eines bare-metal-servers in einem virtuellen netzwerk

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0029100000

Ipc: H04L0069320000