DE102018006679A1 - Umordnen von Daten zur parallelen Verarbeitung - Google Patents

Umordnen von Daten zur parallelen Verarbeitung Download PDF

Info

Publication number
DE102018006679A1
DE102018006679A1 DE102018006679.8A DE102018006679A DE102018006679A1 DE 102018006679 A1 DE102018006679 A1 DE 102018006679A1 DE 102018006679 A DE102018006679 A DE 102018006679A DE 102018006679 A1 DE102018006679 A1 DE 102018006679A1
Authority
DE
Germany
Prior art keywords
data
host platform
interface
network
packet
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
DE102018006679.8A
Other languages
English (en)
Inventor
Tomasz Kantecki
Niall Power
John J. Browne
Christopher MacNamara
Stephen Doyle
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 DE102018006679A1 publication Critical patent/DE102018006679A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3045Virtual queuing

Landscapes

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

Abstract

Eine Netzwerkschnittstellenvorrichtung, die aufweist: eine Ingress-Schnittstelle; eine Hostplattformschnittstelle zum kommunikativen Koppeln mit einer Hostplattform und einen Paket-Vorprozessor, der Logik aufweist zum: Empfangen einer Datensequenz, die eine Mehrzahl von diskreten Dateneinheiten aufweist, über die Ingress-Schnittstelle; Erkennen der Datensequenz als Daten für eine parallele Verarbeitungsoperation; Umordnen der diskreten Dateneinheiten in einen umgeordneten Datenrahmen, wobei der umgeordnete Datenrahmen derart konfiguriert ist, dass er die diskreten Dateneinheiten zum Gebrauch durch die parallele Operation ordnet; und Senden der umgeordneten Daten über die Hostplattformschnittstelle an die Hostplattform.

Description

  • Gebiet der Beschreibung
  • Diese Offenbarung betrifft allgemein das Feld der Datenübertragung und insbesondere, obwohl nicht ausschließlich, ein System und Verfahren zum Umordnen von Daten zur parallelen Verarbeitung.
  • Hintergrund
  • In manchen modernen Datenzentren ist die Funktion einer Vorrichtung oder einer Appliance möglicherweise nicht an eine spezifische, festgelegte Hardwarekonfiguration gebunden. Stattdessen können Arbeitsspeicher-, Speicher- und Beschleunigerfunktionen in manchen Fällen von unterschiedlichen Standorten aggregiert werden, um einen virtuellen „zusammengesetzten Knoten“ zu bilden. Ein heutiges Netzwerk kann ein Datenzentrum aufweisen, das eine sehr große Anzahl generischer Hardwareservervorrichtungen hostet, die zum Beispiel in einem Servergestell enthalten sind und von einem Hypervisor gesteuert werden. Jede Hardwarevorrichtung kann eine oder mehrere Instanzen einer virtuellen Vorrichtung ausführen wie beispielsweise ein Workload-Server oder virtueller Desktop.
  • Figurenliste
  • Die vorliegende Offenbarung ist am besten mithilfe der folgenden ausführlichen Beschreibung zu verstehen, wenn diese in Verbindung mit den begleitenden Figuren gelesen wird. Es wird betont, dass in Übereinstimmung mit der in der Branche üblichen Vorgehensweise verschiedene Merkmale nicht notwendigerweise maßstabsgerecht gezeichnet sind und nur zu Veranschaulichungszwecken verwendet werden. Wo explizit oder implizit ein Maßstab gezeigt wird, liefert er nur ein einziges veranschaulichendes Beispiel. Bei anderen Ausführungsformen können die Abmessungen der verschiedenen Merkmale im Interesse einer klaren Erörterung beliebig vergrößert oder verkleinert sein.
    • 1 ist eine Darstellung (auf Netzwerkebene) eines Datenzentrums eines Clouddienstanbieters gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 2 ist ein Blockschaubild eines Mobilfunknetzwerks gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 3 ist ein Blockschaubild, das ein beispielhaftes Netzwerk gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung veranschaulicht.
    • 4 ist ein Blockschaubild einer Netzwerkschnittstellenkarte (NIC) 472 gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 5 ist ein Blockschaubild, das Pakete, die zur Vektor- oder SIMD-Verarbeitung (single instruction, multiple data, SIMD) verwendet werden sollen, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung veranschaulicht.
    • 6 ist ein Blockschaubild einer Ausführungsform, bei der bestimmte Funktionen auf der Platine in einer NIC bereitgestellt werden, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 7 veranschaulicht gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung, wie Pakete zusammen mit einer Anzahl anderer Pakete zu einem einzigen Cluster kombiniert werden können.
    • 8 ist ein Blockschaubild, das ein Beispiel veranschaulicht, bei dem vier Pakete verschlüsselt und transponiert werden, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 9 ist gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung eine Veranschaulichung einer Architektur zum Realisieren von Paketvorverarbeitung.
    • 10 ist gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung ein Blockschaubild eines Verfahrens zum Durchführen von Paketvorverarbeitung.
  • Ausführungsformen der Offenbarung
  • Durch die vorliegende Offenbarung werden zahlreiche verschiedene Ausführungsformen, oder Beispiele, zum Realisieren unterschiedlicher Merkmale der vorliegenden Offenbarung bereitgestellt. Im Folgenden werden spezifische Beispiele für Komponenten und Anordnungen beschrieben, um die vorliegende Offenbarung zu vereinfachen. Diese sind selbstverständlich lediglich Beispiele und sollen nicht einschränkend sein. Außerdem können in der vorliegenden Offenbarung Bezugszahlen und/oder -buchstaben in den verschiedenen Beispielen wiederholt werden. Diese Wiederholung dient der Einfachheit und Klarheit und soll nicht von sich aus eine Beziehung zwischen den erörterten verschiedenen Ausführungsformen und/oder Konfigurationen vorschreiben. Unterschiedliche Ausführungsformen können unterschiedliche Vorteile aufweisen, und für keine Ausführungsform ist notwendigerweise ein spezieller Vorteil erforderlich.
  • In einem modernen Datenzentrum können verschiedene virtualisierte Netzwerkfunktionsanwendungen (virtualized network function (VNF) applications) Datenpakete auf zahlreiche unterschiedliche Weisen verarbeiten. Die Art, in der die Anwendungen Pakete verarbeiten, stimmt möglicherweise nicht mit der Art überein, in der die Pakete in einem Netzwerk eintreffen. Daher müssen Daten möglicherweise formatiert oder in ein Anwendungs-geeignetes Format umgewandelt werden, damit die Software mit ihnen arbeiten kann.
  • Bei einer Vektor- oder SIMD- Anwendung (single instruction, multiple data, SIMD) kann es erforderlich sein, dass Pakete in ein Vektor- oder SIMD-geeignetes Format umgeordnet werden, um der Anwendung zu ermöglichen, SIMD-Anweisungen zu verwenden, wie sie beispielsweise in Intel®-Prozessoren zu finden sind.
  • Bei SIMD-Operationen wird eine einzige Anweisung an eine Anzahl von Verarbeitungselementen des digitalen Signalprozessors gesendet, wobei jedes Verarbeitungselement dieselbe Operation an verschiedenen Daten durchführen kann. Um einen hohen Datendurchsatz zu erreichen, unterstützt eine Arbeitsspeicherorganisation digitaler Signalprozessoren (DSPs), die SIMD-Architekturen aufweisen (oder anderer Prozessoren, die parallele Verarbeitung unterstützen) mehrere synchrone Datenzugriffe. Bei einem Beispiel kann eine Prozessorarchitektur einen Arbeitsspeicher mit mehreren Speicherbänken aufweisen, der mithilfe einer Arbeitsspeicher-Interconnect-Netzwerkarchitektur derart mit den Verarbeitungselementen verbunden ist, dass während eines gegebenen Zyklus mehr als ein Datenoperand für die Verarbeitungselemente geladen werden kann (dass diese darauf zugreifen können).
  • Die Arbeitsspeicher-Interconnect-Netzwerkarchitektur weist üblicherweise ein Interconnection-Netzwerk für jeden jeweiligen parallelen Datentransfer auf. Wenn zum Beispiel zwei parallele Datentransfers von dem Arbeitsspeicher zu den Verarbeitungselementen erforderlich sind, um eine Operation durchzuführen, realisiert die Arbeitsspeicher-Interconnect-Netzwerkarchitektur ein Interconnection-Netzwerk zum Übertragen eines ersten Datensatzes von dem Arbeitsspeicher zu den Verarbeitungselementen und ein weiteres Interconnection-Netzwerk zum Übertragen eines zweiten Datensatzes von dem Arbeitsspeicher zu den Verarbeitungselementen.
  • SIMD kann sehr nützlich in Kontexten wie beispielsweise neuronalen Netzwerken, Bildverarbeitung, Chiffrierungs-Internetprotokoll-Sicherheit (ciphering Internet Protocol security (IPsec)) unter Verwendung von Mehrfachpuffer- oder SIMD-Anweisungen und Kompression sein. Daher ist es vorteilhaft, Anweisungen des SIMD-Typs für diese wichtigen Arbeitslasttypen zu optimieren.
  • Durch Ausführungsformen der vorliegenden Beschreibung wird ein Paket-Vorprozessor bereitgestellt, der einen Coprozessor umfasst, wie beispielsweise in einer Netzwerkschnittstellenkarte (NIC), der für Vektor- oder SIMD-Verarbeitung bestimmte Pakete erkennen und diese Pakte in ein Anwendungs-geignetes Format umordnen kann. Dadurch werden die Pakete für eine spätere Verwendung in SIMD-, MIMD- (multiple instruction, multiple data, MIMD) oder Vektoroperationen vorbereitet. Insbesondere ordnet der Paket-Vorprozessor Pakete zur parallelen Verarbeitung um. Eine parallele Verarbeitungsoperation kann, so wie der Begriff in dieser Beschreibung verwendet wird, als nicht einschränkendes Beispiel SIMD-, MIMD- sowie Vektorverarbeitung beinhalten. Der Paket-Vorprozessor kann dafür konfiguriert sein (über eine Konfigurationsschnittstelle für einen Kern der Hostplattform), bestimmte Rahmen, Gruppen von Rahmen oder Pakete zu erkennen, die hierin weitgefasst als eine „Datensequenz“ bezeichnet werden. Die Datensequenz kann eine Mehrzahl von diskreten Dateneinheiten aufweisen, wie beispielsweise Pakete, Bytes, Datenworte oder andere Einheiten. Allgemein können die diskreten Dateneinheiten von der Datensequenz trennbar sein, und in einer SIMD-Anwendung kann jeder parallele Datenverarbeitungspfad eine einzelne diskrete Dateneinheit aus der Datensequenz empfangen.
  • Der Paket-Vorprozessor kann die diskreten Dateneinheiten in der Datensequenz bevor die Anwendung die Datensequenz empfängt umwandeln und/oder transponieren, wodurch er dazu beiträgt, eine Anwendungsleistung zu optimieren.
  • Zum Zweck der vorliegenden Beschreibung kann eine Netzwerkschnittstelle als nicht einschränkendes Beispiel auch über Ethernet, WiFi, ein Modem, einen Hardware-Computer-Port, eine Netzwerkschnittstellenvorrichtung, ein Netzwerk-Socket oder eine Protokoll-Port-Schnittstelle bereitgestellt werden.
  • Bei bestimmten vorhandenen Systemen werden Eingangs-/Ausgangs- (EA-) Pakete in separaten Puffern im Arbeitsspeicher empfangen, und die Anwendungen müssen dann möglicherweise laden, verschieben, bewegen und Exklusives-Oder- (XOR-) Operationen durchführen, um Daten derart in ein Format umzuwandeln, dass sie effizient in Operationen des Vektor- oder SIMD-Typs verwendet werden können. Dies kann in Software erfolgen, wodurch Latenz durch das System erhöht und der Durchsatz verringert wird.
  • Digitale Datenübertragungseinheiten, bekannt als „Rahmen“ („frames“, eine Art von Datensequenz) können verwendet werden, um einem Empfänger den Anfang und das Ende von Nutzlastdaten anzuzeigen. Daten können aus über eine Ingress-Schnittstelle zu empfangenden Sequenzen bestehen, die Mehrzahlen von diskreten Dateneinheiten aufweisen. Ein Datenrahmen kann Metadaten enthalten, die den Datenrahmen als bereit zum Gebrauch durch eine parallele Verarbeitungsoperation kennzeichnen. Eine virtuelle Warteschlange kann genutzt werden, um eine Mehrzahl von umgeordneten Datenrahmen in eine Warteschlange eines Zielkerns einer Hostplattform einzureihen. Des Weiteren kann ein Vektor-Switch verwendet werden, um den umgeordneten Datenrahmen zu dem Zielkern auf der Hostplattform weiterzuleiten.
  • Durch Ausführungsformen der vorliegenden Beschreibung werden inline oder im Datenpfad vorgenommene Aufteilungen einzelner Datenpakete oder segmentierter und umgeordneter Datenrahmen in eine Mehrzahl von Puffern und ein Transponieren der Daten in ein Format bereitgestellt, das geeignet für SIMD- oder Vektorverarbeitung ist. Transponieren beinhaltet ein Umwandeln der Daten wie beispielsweise Bit-Shuffling, Umordnen von Bitpositionen, Bitumkehrung, Bit-Shuffling, sowie andere Bitoperationen und -kombinationen in und zwischen Puffern. Wenn daher SIMD- oder Vektor-basierte Softwarepakete die Pakete empfangen, sind die Daten bereits im Zustand für die geeignete Verarbeitung. Der Paket-Vorprozessor kann die transponierten Daten, die transponierten Daten mit den ursprünglichen Daten oder eine Kombination bereitstellen, auswählbar für jede Kombination von Paketattributen wie beispielsweise, als nicht einschränkendes Beispiel, virtuelles lokales Netzwerk (virtual local area network, VLAN), Internetprotokoll- (IP-) Tupel oder Protokolltyp.
  • Bei dem vorstehenden Beispiel kann Transponieren auch ein Umwandeln der Daten wie beispielsweise Bit-Shuffling, Umordnen von Bitpositionen, Bitumkehrung, Bit-Shuffling sowie andere Bitoperationen und -kombinationen in und zwischen Puffern beinhalten. Zum Beispiel können Daten von dem Netzwerk in Netzwerkordnung empfangen werden (z.B. können Datenworte im Big-Endian-Format vorliegen), während Intel®-Prozessoren im Allgemeinen in Little-Endian-Byteordnung arbeiten. Daher kann der Paket-Vorprozessor Operationen an den Puffern unterstützen, die Kombinationen oder mehrfache Umwandlungsdurchläufe sind. Zum Beispiel kann er die Paket-Byteordnung von Netzwerkordnung (Big-Endian) zu Prozessorordnung (Little-Endian) ändern, gefolgt von der Datenumwandlung, um eine Anpassung an die SIMD-/Vektoranweisungen zu erreichen, wie vorstehend beschrieben. Daher werden möglicherweise mehrere Durchläufe (Kombinationen) von Bit-, Byte- und Wortoperationen unterstützt.
  • Des Weiteren unterstützen Ausführungsformen der vorliegenden Beschreibung sowohl Datenübertragung von einzelnen Paketen zur Vektorverarbeitung, als auch Datenumwandlungen von einzelnen Paketen, gefolgt von einer Segmentierung in mehrere Puffer. Ausführungsformen unterstützen außerdem Zusammenfügen (coalescing) mehrerer Pakete, Umwandlung und Zustellung als ein einzelner Puffer. Ausführungsformen können ein Verteilen von Segmenten auf verschiedene Kerne unterstützen, wo sie in separaten Threads, auf separaten Kernen, gehandhabt werden können.
  • Einige Ausführungsformen der vorliegenden Beschreibung können einen gemeinsamen Netzwerk-Arbeitsablauf aufweisen, wobei eine Sequenz von Paketen in einen Netzkantenrouter in einem Dienstanbieter-Datenzentrum kommt, und der Netzkantenrouter eine Paketverarbeitungs-Pipeline an dem Paket durchführt. Betrachtet werden soll das Beispiel eines Netzwerkdienstanbieters. Ein DOCSIS-Modem (data over cable service interface specification (DOCSIS) modem) kann sich an der Kante eines kleinen Datenzentrums befinden, das den Internetzugang für Endbenutzer oder Clients bereitstellt. Während ein Paket eingeht, wendet das DOCSIS-Modem die Paketverarbeitungs-Pipeline auf das Paket an, beispielsweise Filtern, Klassifizieren, Suchoperationen durchführen, Sicherheitssequenzen einleiten oder andere Funktionen.
  • Ein System und Verfahren zum Umordnen von Daten zur parallelen Verarbeitung wird nun unter besonderer Bezugnahme auf die angefügten FIGUREN beschrieben. Es sollte beachtet werden, dass in den gesamten FIGUREN bestimmte Bezugszeichen wiederholt werden können, um anzugeben, dass eine bestimmte Vorrichtung oder ein bestimmter Block in den gesamten FIGUREN vollständig oder im Wesentlichen gleichbleibend ist. Dies soll jedoch keine besondere Beziehung zwischen den verschiedenen offenbarten Ausführungsformen andeuten. Bei bestimmten Beispielen kann ein Oberbegriff von Elementen durch ein bestimmtes Bezugszeichen („Widget 10“) bezeichnet werden, während einzelne Arten oder Beispiele des Oberbegriffs möglicherweise durch eine mit Bindestrich versehene Zahl bezeichnet werden („erstes spezifisches Widget 10-1“ und „zweites spezifisches Widget 10-2“).
  • 1 ist eine Darstellung (auf Netzwerkebene) eines Datenzentrums 100 eines Clouddienstanbieters (CSP) 102 gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Der CSP 102 kann, als nicht einschränkendes Beispiel, ein herkömmliches Unternehmens-Datenzentrum, eine „private Cloud“ eines Unternehmens oder eine „öffentliche Cloud“ sein, die Dienste wie beispielsweise Infrastructure as a Service (IaaS), Platform as a Service (PaaS) oder Software as a Service (SaaS) bereitstellt.
  • Der CSP 102 kann eine Anzahl von Workload-Clustern 118 bereitstellen, die Cluster aus einzelnen Servern, Blade-Servern, in ein Gestell eingebauten Servern sein oder jede andere geeignete Servertopologie aufweisen können. Bei diesem veranschaulichenden Beispiel werden zwei Workload-Cluster 118-1 und 118-2 gezeigt, von denen jeder in ein Gestell eingebaute Server 146 in einem Chassis 148 bereitstellt.
  • Jeder Server 146 kann ein eigenständiges Betriebssystem hosten und eine Serverfunktion bereitstellen, oder Server können virtualisiert sein, wobei sie in diesem Fall möglicherweise unter der Kontrolle eines Virtual Machine Manager (VMM), Hypervisor und/oder Orchestrator stehen und eine oder mehrere virtuelle Maschinen, virtuelle Server oder virtuelle Appliances hosten können. Diese Servergestelle können sich in einem einzigen Datenzentrum befinden oder können sich in Datenzentren an unterschiedlichen geografischen Orten befinden. In Abhängigkeit von den vertraglichen Vereinbarungen können manche Server 146 speziell bestimmten Unternehmens-Clients oder -Tenants zugewiesen sein, während andere möglicherweise gemeinsam genutzt werden.
  • Die verschiedenen Vorrichtungen in einem Datenzentrum können miteinander über eine Switching Fabric 170 verbunden sein, die eine oder mehrere Hochgeschwindigkeits-Routing- und/oder Switching-Vorrichtungen aufweisen kann. Die Switching Fabric 170 kann sowohl „Nord-Süd“-Verkehr (z.B. Verkehr zu dem Weitverkehrsnetzwerk (WAN), wie beispielsweise dem Internet, und von diesem weg), als auch „Ost-West“-Verkehr (z.B. Verkehr im Datenzentrum) bereitstellen. Historisch gesehen war die Masse des Netzwerkverkehrs Nord-Süd-Verkehr, aber mit zunehmend komplexer und verteilter werdenden Webdiensten hat das Ost-West-Verkehrsvolumen zugenommen. In zahlreichen Datenzentren entfällt der Hauptteil des Verkehrs jetzt auf Ost-West-Verkehr.
  • Ferner kann mit zunehmender Fähigkeit jedes Servers 146 ein Verkehrsvolumen weiter zunehmen. Zum Beispiel kann jeder Server 146 mehrere Prozessorschlitze bereitstellen, wobei in jedem Schlitz ein Prozessor mit vier bis acht Kernen zusammen mit ausreichend Arbeitsspeicher für die Kerne untergebracht ist. Auf diese Weise kann jeder Server eine Anzahl von VMs hosten, von denen jede ihren eigenen Verkehr erzeugt.
  • Um dem sehr großen Verkehrsvolumen in einem Datenzentrum Rechnung zu tragen, kann eine hochgradig leistungsfähige Switching Fabric 170 bereitgestellt werden. Die Switching Fabric 170 ist in diesem Beispiel als ein „flaches“ Netzwerk veranschaulicht, worin jeder Server 146 über eine direkte Verbindung mit einem Top-of-Rack (ToR) Switch 120 verfügen kann (z.B. eine „Stern-“Anordnung), und jeder ToR Switch 120 mit einem Core Switch 130 gekoppelt sein kann. Diese zweischichtige flache Netzwerkarchitektur wird nur als ein veranschaulichendes Beispiel gezeigt. Bei anderen Beispielen können andere Architekturen verwendet werden wie beispielsweise, als nicht einschränkendes Beispiel, dreischichtig, Stern, Leaf-Spine (auch als „Fat-Tree“-Topologien bezeichnet), basierend auf der „Clos“-Architektur, Hub-and-Spoke-Topologien, Mesh-Topologien, Ring-Topologien oder 3-D-Mesh-Topologien.
  • Die Fabric selbst kann mithilfe jedes geeigneten Interconnect bereitgestellt werden. Zum Beispiel kann jeder Server 146 eine Netzwerkschnittstellenkarte (NIC), eine Intel® Host Fabric Interface (HFI) oder eine andere Hostschnittstelle aufweisen. Die Hostschnittstelle selbst kann mit einem oder mehreren Prozessoren über einen Interconnect oder Bus wie beispielsweise PCI, PCIe oder ähnlich gekoppelt sein, und in einigen Fällen kann dieser Interconnect-Bus als Teil der Fabric 170 betrachtet werden.
  • Die Interconnect-Technologie kann durch einen einzelnen Interconnect oder einen hybriden Interconnect bereitgestellt werden, beispielsweise, wenn PCIe On-Chip-Datenübertragung bereitstellt, 1-GB- oder 10-GB-Kupfer-Ethernet relativ kurze Verbindungen zu einem ToR Switch 120 bereitstellt und optische Verkabelung relativ längere Verbindungen zu dem Core Switch 130 bereitstellt. Zu Interconnect-Technologien zählen, als nicht einschränkendes Beispiel, Intel® Omni-Path™, TrueScale™, Ultra Path Interconnect (UPI) (früher als QPI oder KTI bezeichnet), FibreChannel, Ethernet, FibreChannel over Ethernet (FCoE), InfiniBand, PCI, PCIe oder Lichtwellenleiter, um nur einige aufzuzählen. Einige von diesen werden geeigneter für bestimmte Einsätze und Funktionen sein als andere, und ein Auswählen einer geeigneten Fabric für die sofortige Anwendung zählt zum üblichen fachlichen Können.
  • Es sollte jedoch beachtet werden, dass, während High-End-Fabrics wie beispielsweise Omni-Path™ hier zur Veranschaulichung bereitgestellt werden, die Fabric 170 im Allgemeinen jeder für die spezielle Anwendung geeignete Interconnect oder Bus sein kann. Dazu könnten in einigen Fällen Legacy-Interconnects wie lokale Netzwerke (local area networks, LANs), Token-Ring-Netzwerke, synchrone optische Netzwerke (synchronous optical networks, SONET), Asynchronous-Transfer-Mode-(ATM-) Netzwerke, drahtlose Netzwerke wie beispielsweise WiFi und Bluetooth, Interconnects des alten analogen Telefonsytems („plain old telephone system“, POTS) oder Ähnliches zählen. Es wird außerdem ausdrücklich vorausgesehen, dass in der Zukunft neue Netzwerktechnologien aufkommen werden, um einige der hier aufgeführten zu ergänzen oder zu ersetzen, und alle derartigen zukünftigen Netzwerktopologien und -technologien können ein Teil der Fabric 170 sein oder einen solchen bilden.
  • Bei bestimmten Ausführungsformen kann die Fabric 170 Datenübertragungsdienste auf verschiedenen „Schichten“ bereitstellen, wie es ursprünglich in dem siebenschichtigen OSI-Netzwerkmodell umrissen wurde. In der heutigen Praxis wird das OSI-Modell nicht strikt befolgt. Allgemein ausgedrückt werden die Schichten 1 und 2 häufig als die „Ethernet“-Schicht bezeichnet (obwohl in sehr großen Datenzentren Ethernet häufig durch neuere Technologien ersetzt wurde). Schicht 3 und 4 werden häufig als die Übertragungssteuerungsprotokoll- (transmission control protocol)/Internetprotokoll- (TCP/IP-) Schicht bezeichnet (die weiter in TCP- und IP-Schichten unterteilt sein kann). Die Schichten 5 bis 7 können als die „Anwendungsschicht“ bezeichnet werden. Diese Schichtdefinitionen werden als ein nützlicher Rahmen offenbart, sollen aber nicht einschränkend sein.
  • 2 ist ein Blockschaubild eines Mobilfunknetzwerks 200 gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Bei diesem spezifischen Beispiel wird ein LTE-Netzwerk der vierten Generation (4G LTE- oder einfach LTE-Netzwerk) als nicht einschränkendes Beispiel offenbart. Bei bestimmten Ausführungsformen wird LTE primär zum Datentransfer verwendet, sodass das Mobilfunknetzwerk 200 zusätzlich zu den hier gezeigten Elementen auch eine Struktur zum Handhaben von Sprachübertragung bereitstellen kann, die möglicherweise kommunikativ mit einem öffentlichen Telefonwählnetz (public-switched telephone network, PSTN) gekoppelt ist. In einigen Fällen wird möglicherweise auch Sprache über LTE (voice over LTE, VoLTE) bereitgestellt. Es sollte auch beachtet werden, dass LTE nur als eine mögliche Ausführungsform der Lehren dieser Beschreibung offenbart wird, und dass die Lehren relevant für andere derzeit vorhandene oder später entwickelte Telekommunikationsstrukturen sein können, und der Schutzbereich dieser Beschreibung derartige Strukturen gegebenenfalls umfassen soll.
  • Bei diesem Beispiel weist das Mobilfunknetzwerk 200 ein Benutzerendgerät (user equipment, UE) 210 auf, das zum Beispiel über eine drahtlose Antenne 216 kommunikativ mit einem Evolved-UMTS-Funkzugangsnetzwerk (evolved UMTS radio access network, E-UTRAN) 204 gekoppelt ist. Das UE 210 kann eine Datentransaktion oder Sitzung mit dem E-UTRAN 204-1 einleiten, was hier als ein „Datenanruf“ bezeichnet wird. Das E-UTRAN 204 wird kommunikativ mit einem Evolved Packet Core (EPC) 202 gekoppelt, zum Beispiel über kabelgebundene Verbindungen. Das E-UTRAN 204 kann, als nicht einschränkendes Beispiel, eine evolved NodeB (eNB) 220, die als eine drahtlose Basisstation fungiert, und einen verteiltes selbstorganisierendes Netzwerk (distributed self-organizing network, dSON)-Controller 224 aufweisen.
  • Bei verschiedenen Ausführungsformen können diese Funktionen durch dedizierte Server oder Appliances bereitgestellt werden. Bei anderen Ausführungsformen können ausgewählte Funktionen in virtuellen Umgebungen bereitgestellt werden, wie beispielsweise ein in ein Gestell eingebauter Server, der verschiedene Funktionen in einem Hypervisor bereitstellt. In einem allgemeinen Sinn können die verschiedenen Vorrichtungen der UE-Klasse, der Serverklasse, Netzwerkfunktionen, allgemein als „Datenverarbeitungsvorrichtungen“ klassifiziert werden. Eine Datenverarbeitungsvorrichtung beinhaltet, so wie der Begriff in dieser gesamten Beschreibung verwendet wird, jede elektrische oder elektronische Vorrichtung auf Grundlage der Von-Neumann-Architektur, eingeschlossen ein Prozessor mit einer Steuereinheit und einer Logikeinheit und einem Arbeitsspeicher. In diesem Zusammenhang versteht es sich, dass die Von-Neumann-Architektur entweder als eine physische Vorrichtung oder als eine virtuelle Maschine oder ein Hypervisor bereitgestellt werden kann, die/der eine oder mehrere Abstraktionsschichten von der physischen Hardware entfernt ausgeführt werden kann.
  • Bei diesem Beispiel werden zwei E-UTRANS 204-1 und 204-2 offenbart, um das mobile Wesen des Netzwerks zu veranschaulichen. Das UE 210 kann sich bewegen, zum Beispiel, während sich ein Benutzer bewegt, der das UE 210 trägt. Während sich das UE 210 weiter von dem E-UTRAN 204-1 weg bewegt, wird sich sein Signal an das E-UTRAN 204 abschwächen. Wenn sich das UE 210 gleichzeitig näher zu dem E-UTRAN 204-2 hin bewegt, wird sein Signal mit dem E-UTRAN 204-2 stärker. Wenn sich das UE 210 derart bewegt hat, dass es ein stärkeres Signal an das E-UTRAN 204-2 als an das E-UTRAN 204-1 bekommt, kann das E-UTRAN 204-1 den Datenanruf an das E-UTRAN 204-2 übergeben, sodass das E-UTRAN 204-2 nahtlos mit einer Handhabung des Datenanrufs fortfährt.
  • Eine Übergabe kann über die X2-Schnittstelle gehandhabt werden. Bei diesem Beispiel werden zwei Klassen von Signalen in dem Mobilfunknetzwerk 200 weitergeleitet: Sprach-, Daten- und Anrufsignale (hierin als die „Benutzerebenen-“ Signale bezeichnet) und Steuersignale (hierin als die „Steuerebenen-“ Signale bezeichnet). X2 stellt sowohl eine Steuerebenen-Schnittstelle als auch eine Benutzerebenen-Schnittstelle bereit und ist bei einer Ausführungsform eine kabelgebundene Verbindung zwischen den zwei E-UTRANs 204. Die Protokollstruktur der S1-Steuerebene beruht auf dem Stream-Control-Transmission-Protokoll/Internetprotokoll (SCTP/IP). Die Benutzerebene stellt eine Protokollstruktur bereit, die auf GTP/UDP5/IP beruht (General-Packet-Radio-Service- (GPRS-) Tunneling-Protokoll/User-Datagram-Protokoll/IP.) Auf der Benutzerebene kann ein Transportträger durch eine IP-Adresse und eine oder mehrere GTP-Tunneling-Endpoint-IDs (TEID) gekennzeichnet werden. X2 arbeitet als eine Mesh-Schnittstelle, was bedeutet, dass eine Mehrzahl von eNBs 220 miteinander verbunden sein kann. Richtig konfiguriert, trägt X2 dazu bei Paketverlust zu minimieren, da das UE 210 von einem E-UTRAN 204 an ein anderes übergibt. Insbesondere, wenn der Datenanruf übergeben wird, können in den Warteschlangen der alten eNB 220 gespeicherte nicht gesendete oder nicht bestätigte Pakete zu der neuen eNB 220 über die X2-Schnittstelle weitergeleitet oder per Tunnelung gesendet werden.
  • Die E-UTRANs 204 werden über eine S1-Schnittstelle kommunikativ mit einem EPC 202 gekoppelt. Wie bei der X2-Schnittstelle stellt S1 sowohl eine Steuerebene als auch eine Benutzerebene bereit, die ähnlich wie die jeweilige X2-Steuerebene und -Benutzerebene konfiguriert sind. Bei einer Ausführungsform wird das S1-Anwendungsprotokoll (S1-AP) direkt auf das SCTP abgebildet.
  • Bei diesem Beispiel weist der EPC 202 einen Serving Gateway (SGW) 250, eine Mobility Management Entity (MME) 240, einen Home Subscriber Server (HSS) 244, einen Packet Data Network (PDN-) Gateway 260 (Paketdatennetzwerk-Gateway), einen Evolved Packet Data Gateway (ePDG) 280 sowie eine Policy and Charging Rules Function (PCRF) 290 auf. Der EPC 202 kann seinerseits über geeignete Schnittstellen mit einem öffentlichen Netzwerk wie beispielsweise dem Internet 270 oder mit Betreiber-IP-Diensten 292 kommunikativ gekoppelt werden.
  • Wenn das UE 210 Datenoperationen wie beispielsweise Webanwendungen, Websurfen, E-Mail oder andere Netzwerkoperationen durchführt, verbindet sich das UE 220 mit dem Internet 270 über das Mobilfunknetzwerk 200. Bei einem beispielhaften Szenario gehen Benutzerebenensignale von dem UE 210 aus und werden zu dem E-UTRAN 204 weitergeleitet. In den E-UTRANs 204 werden Benutzerebenensignale zuerst von der eNB 220 (oder einer anderen ähnlichen Basisstation) empfangen, die eine Schnittstelle mit dem EPC 202 bildet, um den Datenanruf zu handhaben.
  • Als ein Zugangspunkt eines drahtlosen lokalen Netzwerks (wireless local area network (WLAN) access point (WAP)) unterstützt die eNB 220 Schicht 1 und Schicht 2 der physischen OFDM- (orthogonal frequency division multiplexing) Schnittstelle des E-UTRAN. Vorteilhafterweise können sich eNBs 220 direkt mit einem Netzwerk-Router verbinden, wodurch eine Netzwerkarchitektur vereinfacht wird. Die eNB 220 kann bestimmte Legacy-Merkmale unterstützen, die Prozeduren der physischen Schicht zum Senden und Empfangen betreffen, darunter Modulation und Demodulation sowie Kanalcodierung und -decodierung. Die eNB 220 kann außerdem Funkressourcensteuerung und „Funkmobilitätsmanagement“ (radio mobility management) zum Verarbeiten von Übergaben bereitstellen.
  • Der EPC 202 stellt verschiedene funktionale Blöcke bereit, um unterschiedliche Unterstützungsfunktionen zur Verfügung zu stellen. Diese werden hierin nur als nicht einschränkendes Beispiel beschrieben.
  • Die MME 240 stellt Steuerfunktionen für den EPC 202 bereit. Die MME 240 stellt Ruhemodus-Paging- und Tagging-Prozeduren für UEs bereit, einschließlich nochmaliger Übertragungen. Die MME 240 stellt außerdem Unterstützung für Trägeraktivierung und -deaktivierung bereit und kann einen geeigneten SGW 250 für das UE 210 auswählen, wenn sich das UE 210 erstmals mit dem EPC 202 über das E-UTRAN 204 verbindet. Nach dem Verbinden authentifiziert die MME 240 das UE 210 über den HSS 244.
  • Non-Access Stratum- (NAS-) Signalisierung wird an der MME 240 abgeschlossen, und die MME 240 ist auch verantwortlich für ein Erzeugen und Zuweisen einer temporären Identität für das UE 210. Die MME 240 verifiziert dann die Autorisierung des UE 210 für Ressourcen in dem öffentlichen landgestützten Mobilfunknetzwerk (public land mobile network, PLMN) des Dienstanbieters und setzt das UE 210 betreffende Roaming-Beschränkungen durch. Die MME 240 ist auch ein Terminal Endpoint für Chiffrierung/Integritätsschutz für NAS-Signalisierung und handhabt eine Sicherheitsschlüsselverwaltung. Die MME 240 unterstützt auch ein rechtmäßiges Abhören von Signalen. Die MME 240 stellt außerdem Steuerebenenfunktionen für Mobilität zwischen LTE- und 2G-/3G-Netzwerken mithilfe der S3-Schnittstelle bereit, mit Abschluss an der MME 240, zum Beispiel von einem 3G-SGSN (serving GPRS support node) aus. Schließlich bildet die MME 240 einen Abschluss für die S6a-Schnittstelle des HSS 244 für Roaming von UEs.
  • Der HSS 244 ist bei einer Ausführungsform ein Datenbankserver zum Bereitstellen von Heimatdatei- (home location register, HLR-) und Authentifizierungszentrums- (authentication center, AuC-) Diensten. Zu den Funktionen des HSS zählen, als nicht einschränkendes Beispiel, Anruf- und Sitzungs-Einrichtungsunterstützung, Benutzerauthentifizierung und Zugangsautorisierung.
  • Bei einer Ausführungsform speichert und aktualisiert die HLR eine Benutzerabonnementinformations-Datenbank. Dies kann als nicht einschränkendes Beispiel Folgendes beinhalten:
    • a. Benutzeridentifikation und -adressierung, einschließlich der internationalen Mobilfunk-Teilnehmerkennung (International Mobile Subscriber Identity, IMSI), Mobilfunkteilnehmer-ISDN-Nummer (Mobile Subscriber ISDN Number, MSISDN) und/oder Mobilfunk-Telefonnummer.
    • b. Benutzerprofilinformationen einschließlich Abonnements und Dienstqualitäts- (quality of Service, QoS-) Daten.
  • Das AuC erzeugt Sicherheitsdaten aus Benutzeridentitätsschlüsseln und stellt die Daten mindestens für die HLR und bei Bedarf für andere funktionale Blöcke bereit.
  • Der SGW 250 leitet Benutzerdatenpakete weiter, während er auch als der Mobilitätsanker für die Benutzerebene während Inter-eNodeB-Übergaben und als der Anker für Mobilität zwischen LTE- und anderen 3GPP-Technologien fungiert (Abschluss der S4-Schnittstelle und Übermitteln des Verkehrs zwischen 2G/3G-Systemen und dem PDN-Gateway 250). Wenn das UE 210 im Ruhezustand ist, schließt der SGW 250 den Downlink-Datenpfad ab und löst Paging aus, wenn Downlink-Daten für das UE 210 eintreffen. Der SGW 250 kann auch UE-Kontexte speichern, darunter Parameter des IP-Trägerdienstes und netzwerkinterne Routing-Informationen. Er führt auch eine Replikation des Benutzerverkehrs im Fall rechtmäßigen Abhörens durch.
  • Der PDN-Gateway 260 stellt Konnektivität von dem UE 210 zu externen Paketdatennetzwerken (PDNs) bereit und stellt sowohl einen Eintrittspunkt als auch einen Austrittspunkt für UE-Verkehr bereit. Das UE 210 kann sich gleichzeitig mit mehr als einem PDN-Gateway 250 verbinden und kann auf diese Weise auf mehrere PDNs zugreifen. Bei einem Beispiel stellt der PDN Gateway 250, als nicht einschränkendes Beispiel, Richtliniendurchsetzung, Paketfilterung pro Benutzer, Abrechnungsunterstützung, rechtmäßiges Abhören und Packet-Screening bereit.
  • Die Zugangsnetzwerk-Erkennungs- und Auswahlfunktion (access network discovery and selection function, ANDSF) 262 hilft dem UE 210, Nicht-3GPP-Zugangsnetzwerke wie beispielsweise Wi-Fi oder WIMAX zu erkennen, die zusätzlich zu dem LTE-Netzwerk zur Datenübermittlung verwendet werden können. Die ANDSF 260 kann für das UE 210 Regeln bereitstellen, mit denen die Verbindung zu derartigen Netzwerken überwacht wird. Die ANDSF 260 kann, als nicht einschränkendes Beispiel, für das UE das Folgende bereitstellen:
    1. a. eine „Intersystem-Mobilitätsrichtlinie“ (inter-system mobility policy, ISMP) - Netzwerkauswahlregeln für den Fall, wenn das UE 210 nur eine aktive Zugangsnetzwerkverbindung hat (z.B. entweder LTE oder Wi-Fi).
    2. b. Eine „Intersystem-Routingrichtlinie“ (inter-system routing policy, ISRP) - Netzwerkauswahlregeln für den Fall, wenn das UE 210 potentiell mehr als eine aktive Zugangsnetzwerkverbindung hat (z.B. sowohl LTE als auch Wi-Fi). In diesem Fall kann das UE 210 IP-Flow-Mobility, Multiple-Access-PDN-Connectivity (MAPCON) oder Non-Seamless-Wi-Fi-Offload gemäß Richtlinie und Benutzereinstellungen nutzen.
    3. c. Erkennungsinformationen - eine Liste von Netzwerken, die in der Nähe des UE 210 zur Verfügung stehen können, und Informationen, um dem UE 210 zu helfen, sich mit diesen Netzwerken zu verbinden.
  • Die ANDSF 262 kann mit dem UE 210 über den S14-Referenzpunkt Daten austauschen, der bei einigen Ausführungsformen spezifisch für die ANDSF ist.
  • Die PCRF 290 stellt bei einer Ausführungsform sowohl Richtlinienentscheidungsfunktionen (policy decision functions, PDF) als auch Abrechnungsregelfunktionen (charging rules functions, CRF) bereit.
  • Die PDF trifft Richtlinienentscheidungen. Insbesondere wenn ein IP-Multimedia-Subsystem (IMS) eingerichtet wird, enthalten Sitzungseinleitungsprotkoll-Daten (session initiation protocol (SIP) data) Medienanforderungen, die das Endgerät und die Proxy-Call-Session-Control-Function (P-CSCF) untereinander austauschen können. Während des Sitzungseinrichtungsprozesses kann die PDF diese Anforderungen auch von der P-CSCF empfangen und Entscheidungen auf Grundlage von Regeln des Netzwerkbetreibers treffen. Diese können als nicht einschränkendes Beispiel beinhalten:
    1. a. Zulassen oder Zurückweisen einer Medienanforderung.
    2. b. Verwenden eines neuen oder vorhandenen PDF-Kontexts für eine eingehende Medienanforderung.
    3. c. Vergleichen von Ressourcenzuweisung und autorisierter Ressourcennutzung.
  • Die CRF stellt vom Betreiber definierte Abrechnungsregeln bereit, die auf jeden Dienstdatenstrom anwendbar sind. Die CRF wählt die relevanten Abrechnungsregeln auf Grundlage von Informationen aus, die von der P-CSCF bereitgestellt werden, wie beispielsweise als nicht einschränkendes Beispiel Anwendungskennung, Typ des Stroms (Audio, Video usw.) oder Anwendungsdatenrate.
  • Der ePDG 280 sichert Datenübertragung mit einem UE 210, das mit dem EPC 202 über einen nicht vertrauenswürdigen Nicht-3GPP-Zugang verbunden ist. Zu diesem Zweck fungiert der ePDG als ein Abschlussknoten von mit dem UE 210 eingerichteten IPsec-Tunneln.
  • Das Netzwerk 270 kann jedes geeignete Netzwerk oder jede geeignete Kombination von einem oder mehreren Netzwerken sein, die auf Grundlage eines oder mehrerer geeigneter Netzwerkprotokolle arbeiten, darunter zum Beispiel, als nicht einschränkendes Beispiel, ein lokales Netzwerk, ein Intranet, ein virtuelles Netzwerk, ein Weitverkehrsnetzwerk, ein drahtloses Netzwerk, ein Mobilfunknetzwerk oder das Internet (worauf optional über einen Proxy, eine virtuelle Maschine oder einen anderen ähnlichen Sicherheitsmechanismus zugegriffen wird). Das Netzwerk 270 kann außerdem einen oder mehrere Server, Firewalls, Router, Switches, Sicherheits-Appliances, Antivirus-Servers oder andere nützliche Netzwerkvorrichtungen aufweisen. In dieser Veranschaulichung wird das Netzwerk 270 der Einfachheit halber als ein einzelnes Netzwerk gezeigt, aber bei einigen Ausführungsformen kann das Netzwerk 270 eine große Anzahl von Netzwerken aufweisen, wie beispielsweise ein oder mehrere Unternehmens-Intranets, die mit dem Internet verbunden sind.
  • Zu Betreiber-IP-Diensten 292 zählen Dienste, die von einem Betreiber des EPC 202 bereitgestellt werden. Die Betreiber-IP-Dienste 292 können ein Betriebsunterstützungssystem (operations support system, OSS) 234 beinhalten oder mit einem solchen kommunikativ gekoppelt sein. Das OSS 234 stellt Hardware und Software zum Überwachen, Steuern, Analysieren und Verwalten des EPC 202 bereit.
  • Vorteilhafterweise ermöglicht LTE selbstorganisierende Netzwerke (SONs) (manchmal auch als ein selbstoptimierendes Netzwerk bezeichnet, wobei beide Begriffe austauschbar sind). Ein SON stellt Automatisierungsverfahren bereit, um Planen, Konfigurieren, Verwalten, Optimieren und Heilen eines Netzwerks wie beispielsweise des EPC 202 und des E-UTRAN 204 zu erleichtern.
  • Ein SON kann in unterschiedlichen Varianten bereitgestellt werden, darunter zum Beispiel ein zentralisiertes SON (C-SON) 230, ein verteiltes SON (dSON) 224 und in einigen Fällen ein hybrides SON (hSON).
  • Das C-SON 230 stellt zentralisierte übergeordnete Netzwerksteuerung bereit, mit verstärkter Koordination zwischen Knoten für Funktionen wie beispielsweise Lastverteilung über einen großen geografischen Bereich. Im Gegensatz dazu stellt das dSON 224 eine verteilte, Peer-to-Peer-Steuerfunktion bereit, wobei jedes E-UTRAN-Netzwerk drahtlos gemeldete Parameter von anderen E-UTRANs empfängt und autonome Entscheidungen auf Grundlage dieser Meldungen trifft. Ein hSON (in dieser Veranschaulichung nicht gezeigt) stellt eine hybride Lösung bereit, bei der einige Funktionen zentralisiert und andere verteilt sind.
  • Vorteilhafterweise bietet ein SON nützliche Funktionen wie beispielsweise:
    1. a. Selbstkonfiguration. In einem selbstkonfigurierenden Netzwerk werden neue Basisstationen automatisch konfiguriert und in das Netzwerk integriert, und neue Merkmale in einer Basisstation werden ebenfalls nahtlos integriert. Wird eine neue Basisstation in das Netzwerk eingeführt und aktiviert, wird sie von dem Netzwerk sofort erkannt und registriert. Die benachbarten Basisstationen passen sich dann automatisch an, um die erforderliche Versorgung und Kapazität bereitzustellen, und um die Interferenz zu vermeiden.
    2. b. Selbstoptimierung. Basisstationen wie beispielsweise eNBs 220 können Konfigurationsparameter bereitstellen, die zum Steuern und/oder Optimieren ihres Verhaltens bestimmt sind. Auf Grundlage von Beobachtungen sowohl der eNB 220 selbst als auch von Messungen an dem UE 210 oder anderswo kann ein SON diese Parameter automatisch rekonfigurieren, um Netzwerkeffizienz zu verbessern. Bei einer andern Ausführungsform stellt ein SON Automatic Neighbor Relations (ANR), bereit und optimiert Random-Access-Parameter oder Mobilitätsrobustheit. Bei noch einer anderen Ausführungsform schaltet ein SON nachts eine Anzahl von Basisstationen ab, um Energie zu sparen. Diese Basisstationen können derart ausgewählt werden, dass sichergestellt wird, dass dennoch eine vollständige Versorgung in einem Versorgungsbereich bereitgestellt wird. Benachbarte Basisstationen können geeignete Parameter rekonfigurieren, um eine vollständige Versorgung sicherzustellen und sich an die veränderte Netzwerktopologie anzupassen. Wenn eine plötzliche Anforderungsspitze auftritt, können eine oder mehrere ruhende Basisstationen beinahe augenblicklich aktiviert werden. Dadurch werden möglicherweise beträchtliche Energieeinsparungen erreicht, ohne Netzwerk zu opfern.
  • Selbstheilung. Wenn ein Netzwerkknoten (wie beispielsweise eine eNB 220) ausfällt, trägt Selbstheilung dazu bei, die Auswirkung des Ausfalls auf das gesamte Netzwerk zu vermindern. Zum Beispiel kann ein SON Parameter und Algorithmen in benachbarten eNBs 220 derart anpassen, dass sie die ausgefallene eNB 220 weiter versorgen können. Dies steht im Gegensatz zu Legacy-Netzwerken, bei denen möglicherweise ein beträchtlicher Aufwand an Zeit und Ressourcen für Reparaturen getrieben werden muss, wenn eine Basisstation ausfällt. Bei selbstheilenden Netzwerken kann sich das Netzwerk automatisch und beinahe augenblicklich mit geringer oder keiner Versorgungsunterbrechung selbst anpassen.
  • 3 ist ein Blockschaubild, das ein beispielhaftes Netzwerk gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung veranschaulicht.
  • Der Paketstrom 320 kann Daten aufweisen, die durch SIMD- oder Vektorverarbeitung gehandhabt werden sollen. SIMD- oder Vektorverarbeitung können über ein externes Netzwerk 308 bereitgestellt und anschließend zu dem UE 310 geleitet werden.
  • SIMD- oder Vektorverarbeitung können Abläufe aufweisen, die über ein gemeinsames Attribut verfügen und daher möglicherweise stapelweise verarbeitet werden können. Für einzelne Endbenutzer bestimmte Pakete treffen möglicherweise nicht kontinuierlich an dem Netzkantenrouter 304 ein. Vielmehr sind möglicherweise Pakte für andere Benutzer dazwischen verteilt. Es ist jedoch vorteilhaft für den Netzkantenrouter 304, Sequenzen von Paketen auf Grundlage eines gemeinsamen Attributs zu Abläufen oder Stapeln zu aggregieren. Dies ermöglicht eine gestraffte Verarbeitung in dem Netzkantenrouter 304 und auch eine gestraffte Verarbeitung auf Workload-Servern 312, die möglicherweise zusätzliche Arbeit durchführen, wie beispielsweise IP-Sicherheit, Verschlüsselung oder Entschlüsselung, Antivirus-Prüfung, Lastverteilung oder andere nützliche Funktionen. Daher kann der Netzkantenrouter 304 davon profitieren, dass er, wie in der vorliegenden Beschreibung veranschaulicht, über einen Paket-Vorprozessor verfügt.
  • 4 ist ein Blockschaubild einer Netzwerkschnittstellenkarte (NIC) 472 gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
  • Die NIC 472 wird nur als nicht einschränkendes Beispiel bereitgestellt. Es sollte insbesondere beachtet werden, dass die NIC 472 eine separate steckbare Karte wie beispielsweise eine PCIe-Karte sein kann oder eng mit ihrem Hostkern integriert sein und sich auf demselben Die befinden kann. Überdies können, obwohl die NIC 472 hierin als das Medium zum Hosten entfernt angeordneter Hardwarebeschleunigungsfunktionen offenbart wird, diese Funktionen genauso gut in einem anderen Teil der Maschine gehostet werden. Zum Beispiel könnte ein dedizierter RHA-Chip bereitgestellt werden, der selbst sehr einem Hardwarebeschleuniger ähneln könnte. Funktionen könnten auf einem in den Kern integrierten Hardwareblock durchgeführt werden, oder diese Funktionen könnten in Software auf dem Kern durchgeführt werden. Daher sollte die Offenbarung entfernt angeordneter Hardwarebeschleunigungsfunktionen auf der NIC 472 in dieser Figur lediglich als ein nicht einschränkendes und veranschaulichendes Beispiel verstanden werden, und die vorliegende Offenbarung sollte derart verstanden werden, dass sie jede geeignete Hardware- oder Softwarekonfiguration zum Realisieren entfernt angeordneter Hardwarebeschleunigung umfasst.
  • Bei diesem Beispiel weist die NIC 472 zwei physische Schnittstellen auf, nämlich eine Hostplattformschnittstelle 420 und eine externe Netzwerkschnittstelle 402.
  • Die Hostplattformschnittstelle 420 kann eine physische Schnittstelle für einen lokalen Bus auf dem Host bereitstellen, wie beispielsweise eine PCIe-Schnittstelle oder ein anderer lokaler Interconnect. Die Hostplattformschnittstelle 420 wird als ein nicht einschränkendes Beispiel bereitgestellt, und es versteht sich, dass andere Interconnect-Verfahren möglich sind. Zum Beispiel könnte es sich in Fällen, bei denen die NIC 472 eng mit ihrem begleitenden Kern gekoppelt ist, bei der Hostplattformschnittstelle 420 um direkte Leiterbahnen auf dem Die oder direkte Kupferverbindungen auf einer integrierten Schaltungsplatine handeln. Bei anderen Beispielen könnte eine andere Busschnittstelle als PCIe verwendet werden.
  • Die externe Netzwerkschnittstelle 402 stellt den physischen Interconnect zu einer Fabric, beispielsweise der Fabric 170 aus 1, oder irgendeiner der hierin offenbarten Fabrics bereit. Die externe Netzwerkschnittstelle 402 kann dafür konfiguriert sein, die NIC 472 mit jeder geeigneten Fabric zu verbinden.
  • Bei einem speziellen Beispiel kann Intel® Omni-Path™-Fabric verwendet werden. Die Omni-Path™-Fabric ist vorteilhaft, da sie ein Mapping von Adressen und Arbeitsspeicherbereichen zwischen verschiedenen kohärenten Domänen ermöglicht. Ein System kann eine oder mehrere kohärente Domänen aufweisen, wobei alle kohärenten Domänen miteinander über eine Fabric verbunden sind. Caching Agents sind die Kohärenz-Agenten in einem Knoten, die Arbeitsspeicheranforderungen von Kernen in demselben Knoten verarbeiten, wodurch sie für die Kohärenz der Domäne sorgen. Home Agents sind Knotencluster, die verantwortlich für eine Verarbeitung von Arbeitsspeicheranforderungen von den Caching Agents sind und als „Heim“ (home) für einen Teil des Arbeitsspeicheradressraums fungieren. Ein einzelner Die kann bei einem verteilten Adressraum-Mapping über mehrere „Heime“ verfügen. In Abhängigkeit von dem Adressraum, auf den die Anforderung abzielt, kann die Anforderung an den lokalen Arbeitsspeicher desselben Knotens gehen, oder sie kann zum Beispiel an einen UPI-Agenten gehen, um die Anforderung zu anderen Prozessoren in derselben kohärenten Domäne zu leiten. Alternativ kann eine Anforderung durch die NIC 472 an Prozessoren gehen, die sich außerhalb der kohärenten Domäne befinden. Alle über den UPI verbundenen Prozessoren gehören zu derselben kohärenten Domäne. Daher kann bei einer Ausführungsform die NIC 472 mit einer Omni-Path™-Fabric über UPI-Tunnelung Daten austauschen.
  • Diese Datenübertragung kann über eine externe Netzwerklogik 404 erleichtert werden, die Logikelemente und Anweisungen bereitstellt, die erforderlich sind, um Datenübertragung in einer kohärenten Domäne und über die Fabric mit anderen kohärenten Domänen bereitzustellen. Die externe Netzwerklogik 404 kann auch Logik zum Übersetzen lokaler Anforderungen in Fabric-Fernanforderungen (remote fabric requests) aufweisen.
  • Andererseits kann die Hostplattformschnittstellen-Logik 416 Logik zur Schnittstellenbildung mit dem lokalen Bus, beispielsweise einem PCIe-Bus, oder einer dedizierten Kupferverbindung bereitstellen. Alternativ kann Verkehr durch die NIC 472 einem Pfad durch die Hostplattformschnittstelle 420, Hostplattformschnittstellen-Logik 416, externe Netzwerklogik 404 und externe Netzwerkschnittstelle 402 heraus zu der Fabric folgen.
  • Der Paket-Vorprozessor 406 kann dafür konfiguriert sein, Paketvorverarbeitung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen. Bei verschiedenen Beispielen können für SIMD- oder Vektorverarbeitung bestimmte Paketströme erkannt und derart umgeordnet werden, dass sie für Vektor- oder SIMD-Verarbeitung vorbereitet sind. Geeignete Hinweise können in das erste Paket in einem Strom eingefügt werden, um einer stromab befindlichen Anwendung mitzuteilen, wie sie die Sequenzen von Paketen behandeln kann. Diese Hinweise könnten die Art des Pakets, Flow Identifier und den Wert gemeinsamer Attribute enthalten, sodass stromab befindliche Anwendungen wissen, wie die SIMD- oder Vektorverarbeitung anzuwenden ist. Es sollte beachtet werden, dass bei einigen Beispielen Paketströme an der externen Netzwerkschnittstelle 402 durcheinander eintreffen können, und daher kann der Paket-Vorprozessor 406 zusätzlich zu einem Erkennen von Paketströmen diese umordnen, sodass sie für SIMD- oder Vektorverarbeitung vorbereitet werden. Dies erhöht den Nutzen einer Anwendung der Lehren der vorliegenden Beschreibung, indem ermöglicht wird, dass die SIMD- oder Vektorverarbeitung auf eine größere Anzahl von Strömen angewendet wird.
  • Bei verschiedenen Ausführungsformen kann der Paket-Vorprozessor 406 auf der NIC 472 als ein auf einem lokalen Prozessor ausgeführter Softwareblock, ein Hard- oder Soft-IP-Block, eine anwendungsspezifische integrierte Schaltung (application-specific integrated circuit, ASIC), optional mit geeigneten Arbeitsspeicherpuffern oder Unterstützungsschaltungen, ein feldprogrammierbares Gate-Array oder eine andere Hardware- oder Softwarelösung einbezogen sein. Darüber hinaus muss, obwohl der Paket-Vorprozessor 406 bei diesem Beispiel als ein Inline-Merkmal der NIC 472 gezeigt wird, dies nicht der Fall sein. Der Paket-Vorprozessor 406 könnte bei einigen Beispielen als ein Coprozessor bereitgestellt werden, der sich bezogen auf die NIC 472 nicht auf der Platine befindet, oder kann sogar in Software bereitgestellt werden, die auf der Hostplattform, beispielsweise der CPU, ausgeführt wird, und die eine Vorverarbeitung an den Paketen durchführt, bevor sie für eine Software-Paketverarbeitungs-Pipeline bereitgestellt werden.
  • 5 ist ein Blockschaubild, das gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung Pakete veranschaulicht, die zur Vektor- oder SIMD-Verarbeitung verwendet werden sollen.
  • Bei diesem Beispiel enthält ein Paket 0 504 eine Anzahl von Bytes. Diese sind mit A0, B0 bis H0 und A1 bis H1 beschriftet. Zusätzliche Datensegmente können einbezogen werden. Diese werden von der NIC 572 empfangen und zu Software 510 weitergeleitet.
  • Wenn die Software 510 das Paket 504 empfängt, kann sie die Daten-Chunks in dem Paket 504 umordnen, um das Paket zur SIMD-Verarbeitung vorzubereiten. Zum Beispiel kann die Software 510 alle „A“-Segmente aus einer Mehrzahl von Sequenzen extrahieren und diese zur Verarbeitung auf einem ersten Kern oder in einem ersten Thread senden, und kann alle „B“-Segmente sammeln und diese zur Verarbeitung in einem zweiten SIMD-Thread in einer SIMD-Verarbeitungs-Engine 512 weiterleiten.
  • Obwohl dadurch die Vorteile von SIMD- oder Vektorverarbeitung realisiert werden, ist dafür Software 510 erforderlich, um ein Umordnen durchzuführen.
  • 6 ist ein Blockschaubild einer Ausführungsform, bei der bestimmte dieser Funktionen stattdessen auf der Platine in der NIC 672 bereitgestellt werden. Vorteilhafterweise kann, da diese Funktionen in einer ASIC, einem feldprogrammierbaren Gate-Array (FPGA), einem Coprozessor oder einer anderen sehr schnellen Architektur bereitgestellt werden können, die Verarbeitung bei einigen Ausführungsformen sehr viel schneller durchgeführt werden. Bei diesem Beispiel wird ein Paket 0 604 für die NIC 672 bereitgestellt. Die NIC 672 führt eine interne Transposition des Pakets 604 durch, wobei die As, Bs, Cs und so weiter zusammen gruppiert und für die SIMD- oder Vektorverarbeitung vorbereitet werden. Sobald alle der Datengruppierungen richtig gebildet wurden, wird das modifizierte Paket 608 für die Software 610 bereitgestellt, wo es jetzt auf native Weise von der SIMD-Verarbeitungs-Engine 512 ohne jede weitere Umordnung gehandhabt werden kann.
  • Es sollte beachtet werden, dass sich dies von Inline-Crypto- oder Header-Splitting unterscheidet. Bei Header-Splitting werden nicht notwendigerweise die Nutzlastdaten selbst umgewandelt, sondern vielmehr wird ein einzelnes Paket in mehrere Fragmente oder doppelte Pakete und Deskriptoren aufgeteilt. Zu den in dieser Beschreibung beschriebenen Inline-Operationen zählen ein Übertragen von Daten in ein Vektor-, MIMD- oder SIMD-geeignetes Format zur sofortigen Verarbeitung durch die SIMD-Verarbeitungs-Engine 612. Die Daten können auch segmentiert werden, damit sie sich für die Vektoranweisung eignen.
  • Es sollte beachtet werden, dass, da SIMD-, MIMD- und Vektoranweisungen unterschiedliche Formate wie beispielsweise Datenbreiten erfordern können, der Paket-Vorprozessor dafür konfiguriert sein kann, die Daten derart zu formatieren, dass sie den Fähigkeiten der Zielarchitektur entsprechen.
  • Bei 6 sollte beachtet werden, dass einige Anwendungen ein Gruppieren von Paketdaten in einen einzelnen Puffer erfordern, um eine effiziente Verwendung von SIMD-Anweisungen zu ermöglichen, während an einer Mehrzahl von Paketen parallel gearbeitet wird. Zum Beispiel kann die drahtlose Chiffre Snow3G ein derartiges Gruppieren erfordern.
  • 7 veranschaulicht, wie ein Paket 0 704 und ein Paket 1 708 zusammen mit einer Anzahl anderer Pakete zu einem einzelnen Cluster kombiniert werden können. In dem Cluster werden alle der A0s aus allen verschiedenen Paketen gruppiert, alle der B0s aus allen verschiedenen Paketen gruppiert und so weiter.
  • 8 ist ein Blockschaubild, das ein anderes Beispiel veranschaulicht, bei dem vier Pakete mit einem Puffer und mehreren Pufferspuren verschlüsselt und transponiert und anschließend zum Senden vorbereitet werden.
  • Bei diesem Beispiel werden die Pakete 0, 1, 2 und 3 bereitgestellt, wobei jedes Paket Pufferspuren 0 bis 3 aufweist. Daher stellt P0B0 „Paket 0 Pufferspur 0“ und so weiter bis zu P2B3 dar, das Paket 2 Pufferspur 3 darstellt. Diese können umgewandelt werden, sodass das neue Paket 0 Paket 0 Pufferspur 0, Paket 1 Pufferspur 0, Paket 2 Pufferspur 0 und so weiter aufweist. Das neue Paket 1 weist Paket 0 Pufferspur 1, Paket 1 Pufferspur 1, Paket 2 Pufferspur 1 und so weiter auf. Das neue Paket 2 weist Paket 0 Pufferspur 2, Paket 1 Pufferspur 2, Paket 2 Pufferspur 2 und so weiter auf. Das neue Paket 3 weist Paket 0 Pufferspur 3, Paket 1 Pufferspur 3, Paket 2 Pufferspur 3 und so weiter auf. Auf diese Weise weist jedes Ausgangspaket jede derselben Pufferspuren aus den Eingangspaketen auf. Sobald die Pakete auf geeignete Weise formatiert sind, können sie an die geeignete Anwendung gesendet werden.
  • 9 ist eine Veranschaulichung einer Architektur zum Realisieren der Paketvorverarbeitung der vorliegenden Beschreibung. Der Paket-Vorprozessor erkennt Rahmen und modifiziert eingehende und ausgehende erkannte Datenrahmen. Der Paket-Vorprozessor kann in der NIC platziert sein oder kann von der NIC getrennt sein wie beispielsweise in einem Vorprozessor oder in einem separaten Softwareprozess. Zum Beispiel kann die NIC die Pakete erkennen, die Kandidaten für diese Verarbeitung sind, und der Vorprozessor kann die tatsächliche Vorverarbeitung durchführen, oder der Vorprozessor kann derart konfiguriert sein, dass er beides tut.
  • Bei diesem Beispiel können mehrere Ingress-Puffer oder -Rahmen mit einem einzigen Egress-Puffer oder -Rahmen versehen sein. Während die NIC oder ein Paket-Vorprozessor Rahmen in Abhängigkeit von den angewendeten Regeln erkennt, kann sie/er mehrere Rahmen auf Grundlage eines vordefinierten Musters in einen einzigen Arbeitsspeicherort kombinieren. Dies ermöglicht der Anwendung, für bestimmte Ströme die Pakete anzugeben, die zusammengefügt und in einem geeigneten Format im Arbeitsspeicher gespeichert werden. Andererseits kann bei einem anderen Szenario beim Senden die SIMD-Anwendung für den Paket-Vorprozessor einen einzelnen Rahmen oder Puffer bereitstellen, und der Paket-Vorprozessor kann unter Verwendung eines vordefinierten Musters zum Formatieren der Daten mehrere Ausgangspuffer oder -rahmen bilden. Bei anderen Anwendungsfällen, bei denen Zusammenfügen nicht erforderlich ist, kann der Paket-Vorprozessor einen einzelnen Rahmen erkennen und auf Grundlage eines vordefinierten Musters die Daten modifizieren, bevor er sie speichert oder sie für eine DMA-Engine für den Arbeitsspeicher bereitstellt.
  • Bei diesem Beispiel weist die NIC einen Ingress-Port 904 auf. Ein Paketempfänger 908 empfängt das Paket von dem Ingress-Port 904.
  • Eine Filteraktionstabelle 912 erkennt Pakete, die Vektor- oder SIMD-Formatierung erhalten müssen. Wenn sie keine spezielle Formatierung benötigen, werden sie möglicherweise direkt an den Egress-Port zur Handhabung durch eine Anwendung weitergeleitet.
  • Für diejenigen Eingangspakete, die eine spezielle Formatierung erfordern, wird ein SIMD-/Vektorformatierer 916 bereitgestellt. Der SIMD- oder Vektorformatierer 916 kann eine Datenumwandlung einzelner Pakete zur Vektorverarbeitung durchführen. Er kann auch eine Datenumwandlung einzelner Pakete gefolgt von einer Segmentierung in mehrere Puffer durchführen und kann des Weiteren ein Zusammenfügen mehrerer Pakete, deren Umwandlung und ihre Zustellung als ein einzelner Puffer durchführen.
  • Bei einigen Ausführungsformen kann der Vektorformatierer 916 über seine eigene interne Pipeline verfügen und kann eine Mehrzahl von Operationen durchführen. Zum Beispiel kann eine erste Operation ein Konvertieren von Daten aus dem Netzwerkpaketformat (z.B. Big-Endian) in das Prozessorformat (z.B. Little-Endian) beinhalten. Darauf kann eine Datenumwandlung zum Anpassen an die SIMD-/Vektoranweisungen folgen. Bei einigen Ausführungsformen können den Paketen ein oder mehrere Hinweise oder Kennzeichen als Metadaten vorangestellt werden, die angeben, dass die Vorverarbeitung durchgeführt wurde. Dadurch wird sichergestellt, dass der Prozessor die Vorverarbeitung nicht „rückgängig macht“ (z.B., indem er in das Big-Endian-Format zurückkonvertiert). Dies kann von einem einzigen Flag oder Signal gehandhabt werden, das Vorverarbeitung insgesamt anzeigt, oder es kann einzelne Flags oder Signale für jeweilige Vorverarbeitungsoperationen geben.
  • Der Ausgangspuffer des Vektorformatierers 916 wird für den Vektor-Switch 920 bereitgestellt, der ein Umschalten auf virtuelle Funktionen unter Verwendung eines Vektorindex bietet. Auf diese Weise können die Vektoren für eine Anzahl von Warteschlangen 924 virtueller Funktionen bereitgestellt werden. Die Warteschlangen 924 virtueller Funktionen können dann für Vektorprozessoren 928 bereitgestellt werden, die Informationen wie beispielsweise Metadaten, das ursprüngliche Paket und SIMD-Vorverarbeitungs-Paketdaten aufweisen können.
  • Sobald der Vektorprozessor 928 die Funktion verarbeitet, kann die Ausgabe wieder für die Filteraktionstabelle 912 bereitgestellt werden, und es kann bestimmt werden, ob die Ausgabe außerdem umgeordnet werden sollte, bevor sie wieder über das Netzwerk gesendet wird. In diesem Fall kann, wenn Vektorformatierung erforderlich ist, der Vektorformatierer 916 das Paket derart neu anordnen, dass es für ein Senden zurück an das Netzwerk geeignet ist.
  • 10 ist ein Blockschaubild eines Verfahrens 1000 zum Durchführen von Paketvorverarbeitung, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
  • In Block 1004 empfängt die NIC ein eingehendes Paket wie vorstehend beschrieben.
  • In Block 1008 kann ein funktionaler Block wie beispielsweise die Filteraktionstabelle 912 aus 9 Rahmen oder Puffer erkennen, die Kandidaten für SIMD- oder Vektorverarbeitung sind.
  • In Block 1012 kann ein Vektor- oder SIMD-Formatierer die Pakete neu formatieren wie in Verbindung mit 9 beschrieben, beispielsweise ein einzelnes Paket zur Vektorverarbeitung umwandeln; ein einzelnes Paket umwandeln, gefolgt von einer Segmentierung in mehrere Puffer, oder ein Zusammenfügen mehrerer Pakete mit Umwandlung und Zustellung als ein einzelner Puffer durchführen.
  • In Block 1016 wird das umgeordnete Paket an eine Vektor- oder SIMD-Verarbeitungs-Engine weitergeleitet, die auf einem geeigneten Prozessor arbeitet.
  • In Block 1098 ist das Verfahren beendet.
  • Im Vorstehenden werden Merkmale einer oder mehrerer Ausführungsformen des hierin offenbarten Gegenstands umrissen Diese Ausführungsformen werden bereitgestellt, um es Fachleuten (person having ordinary skill in the art, PHOSITA) zu ermöglichen, verschiedene Aspekte der vorliegenden Offenbarung besser zu verstehen. Auf bestimmte gut bekannte Begriffe wie auch zugrundeliegende Technologien und/oder Standards kann Bezug genommen werden, ohne diese im Detail zu beschreiben. Es wird angenommen, dass die Fachleute über Hintergrundwissen oder Informationen bezüglich dieser Technologien und Standards verfügen oder Zugang dazu haben, das ausreicht oder die ausreichen, um die Lehren der vorliegenden Beschreibung praktisch anzuwenden.
  • Die Fachleute werden verstehen, dass sie die vorliegende Offenbarung auf einfache Weise als eine Grundlage zum Gestalten oder Modifizieren anderer Prozesse, Strukturen oder Varianten zum Ausführen derselben Aufgaben und/oder Erzielen derselben Vorteile der hier eingeführten Ausführungsformen nutzen können. Die Fachleute werden außerdem erkennen, dass derartige äquivalente Konstruktionen nicht von dem Grundgedanken und Schutzbereich der vorliegenden Offenbarung abweichen, und dass sie verschiedene Änderungen, Ersetzungen und Abänderungen daran vornehmen können, ohne von dem Grundgedanken und Schutzbereich der vorliegenden Offenbarung abzuweichen.
  • In der vorstehenden Beschreibung werden bestimmte Aspekte einiger oder aller Ausführungsformen detaillierter beschrieben als es für eine praktische Anwendung der angefügten Ansprüche unbedingt erforderlich ist. Diese Details werden nur als nicht einschränkendes Beispiel zur Verfügung gestellt, zum Zweck einer Bereitstellung von Kontext und zur Veranschaulichung der offenbarten Ausführungsformen. Derartige Details sollten nicht so verstanden werden, dass sie erforderlich sind, und sollten nicht in die Ansprüche als Einschränkungen „hineingelesen“ werden. Die Formulierung kann sich auf „eine Ausführungsform“ oder „Ausführungsformen“ beziehen. Diese Formulierungen sowie jegliche andere Verweise auf Ausführungsformen sollten weit gefasst so verstanden werden, dass sie sich auf jede Kombination einer oder mehrerer Ausführungsformen beziehen. Überdies könnten die in einer bestimmten „Ausführungsform“ offenbarten verschiedenen Merkmale genauso gut über mehrere Ausführungsformen verteilt sein. Wenn zum Beispiel Merkmal 1 und 2 in „einer Ausführungsform“ offenbart werden, kann Ausführungsform A das Merkmal 1 aufweisen, aber das Merkmal 2 fehlt, während Ausführungsform B das Merkmal 2 aufweisen kann, aber das Merkmal 1 fehlt.
  • In dieser Beschreibung können Veranschaulichungen in einem Blockschaubildformat bereitgestellt werden, wobei bestimmte Merkmale in separaten Blöcken offenbart werden. Diese sollten weit gefasst so verstanden werden, dass sie offenbaren, wie verschiedene Merkmale zusammenwirken, sie sollen aber nicht andeuten, dass diese Merkmale notwendigerweise in separater Hardware oder Software verkörpert sein müssen. Wenn darüber hinaus ein einzelner Block mehr als ein Merkmal in demselben Block offenbart, müssen diese Merkmale nicht notwendigerweise in derselben Hardware und/oder Software verkörpert werden. Zum Beispiel könnte ein Computer-„Arbeitsspeicher“ unter bestimmten Umständen zwischen mehreren Ebenen von Cache oder lokalem Arbeitsspeicher, Hauptarbeitsspeicher, batteriegepuffertem flüchtigem Arbeitsspeicher sowie verschiedenen Formen von permanentem Arbeitsspeicher wie beispielsweise einer Festplatte, einem Speicherserver, einer optischen Speicherplatte, einem Bandlaufwerk oder etwas Ähnlichem verteilt oder abgebildet (mapped) werden. Bei bestimmten Ausführungsformen können einige der Komponenten weggelassen oder zusammengefasst werden. In einem allgemeinen Sinn können die in den Figuren gezeigten Anordnungen in ihren Darstellungen logischer sein, während eine physische Architektur verschiedene Vertauschungen, Kombinationen und/oder Hybriden dieser Elemente aufweisen kann. Zahllose mögliche Gestaltungskonfigurationen können verwendet werden, um die hierin umrissenen Betriebsziele zu erreichen. Dementsprechend gibt es für die zugehörige Infrastruktur unzählige Ersatz-Anordnungen, Gestaltungswahlmöglichkeiten, Vorrichtungsmöglichkeiten, Hardwarekonfigurationen, Softwarerealisierungen und Ausrüstungsoptionen.
  • Es kann hierin auf ein computerlesbares Medium Bezug genommen werden, bei dem es sich um ein materielles und nichtflüchtiges computerlesbares Medium handeln kann. „Computerlesbares Medium“ sollte, so wie dieser Begriff in dieser Beschreibung und den gesamten Ansprüchen verwendet wird, so verstanden werden, dass er ein oder mehrere computerlesbare Medien desselben Typs oder unterschiedlichen Typs umfasst. Ein computerlesbares Medium kann, als nicht einschränkendes Beispiel, ein optisches Laufwerk (z.B. CD/DVD/Blu-Ray), eine Festplatte, ein Solid-State-Laufwerk, einen Flasharbeitsspeicher oder ein anderes nichtflüchtiges Medium umfassen. Ein computerlesbares Medium könnte auch ein Medium wie beispielsweise einen Nur-Lese-Arbeitsspeicher (read-only memory, ROM), einen FPGA oder eine ASIC umfassen, die zum Ausführen der gewünschten Anweisungen konfiguriert ist, gespeicherte Anweisungen zum Programmieren eines FPGA oder einer ASIC zum Ausführen der gewünschten Anweisungen, einen Intellectual Property (IP) Block, der in Hardware in andere Schaltungen integriert werden kann, oder Anweisungen, die direkt in Hardware oder Mikrocode auf einem Prozessor codiert sind, beispielsweise einem Mikroprozessor, digitalem Signalprozessor (DSP), Mikrocontroller oder in einer beliebigen anderen geeigneten Komponente, einer Vorrichtung, einem Element oder Objekt, wo es zweckmäßig erscheint und auf bestimmten Erfordernissen beruht. Ein nichtflüchtiges Speichermedium soll hierin ausdrücklich jede nichtflüchtige Spezial- oder programmierbare Hardware umfassen, die dafür konfiguriert ist, die offenbarten Operationen bereitzustellen oder einen Prozessor zu veranlassen, die offenbarten Operationen durchzuführen.
  • Verschiedene Elemente können in dieser gesamten Beschreibung und den Ansprüchen „kommunikativ“, „elektrisch“, „mechanisch“ oder auf andere Weise miteinander gekoppelt sein. Bei einer derartigen Kopplung kann es sich um eine direkte Punkt-zu-Punkt-Kopplung handeln, oder sie kann dazwischen angeordnete Vorrichtungen aufweisen. Zum Beispiel können zwei Vorrichtungen kommunikativ miteinander über eine Steuereinheit gekoppelt sein, welche die Datenübertragung vereinfacht. Einrichtungen können elektrisch miteinander über dazwischen angeordnete Vorrichtungen wie beispielsweise Signalverstärker, Spannungsteiler oder Puffer gekoppelt sein. Mechanisch gekoppelte Vorrichtungen können indirekt mechanisch gekoppelt sein.
  • Jedes hierin offenbarte „Modul“ oder jede hierin offenbarte „Engine“ kann sich auf Software, einen Softwarestapel, eine Kombination von Hardware, Firmware und/oder Software, eine zum Durchführen der Funktion der Engine oder des Moduls konfigurierte Schaltung oder ein beliebiges computerlesbares Medium, wie vorstehend offenbart, beziehen oder diese aufweisen. Derartige Module oder Engines können unter geeigneten Umständen auf einer Hardwareplattform oder in Verbindung mit dieser bereitgestellt werden, die Hardware-Datenverarbeitungsressourcen wie beispielsweise einen Prozessor, Arbeitsspeicher, Speicher, Interconnects, Netzwerke und Netzwerkschnittstellen, Beschleuniger oder andere geeignete Hardware aufweisen kann. Eine derartige Hardwareplattform kann als eine einzelne monolithische Vorrichtung (z.B. in einem PC-Formfaktor) bereitgestellt werden, oder ein Teil der Funktion kann verteilt werden (z.B. ein „zusammengesetzter Knoten“ in einem High-End-Datenzentrum, wobei Datenverarbeitungs-, Arbeitsspeicher-, Speichersowie andere Ressourcen dynamisch zugewiesen werden können und in Bezug aufeinander nicht lokal sein müssen).
  • Es können hierin Ablaufpläne, Signalflusspläne oder andere Veranschaulichungen offenbart werden, die in einer bestimmten Reihenfolge durchgeführte Operationen zeigen. Sofern nicht ausdrücklich anders vermerkt oder in einem bestimmten Kontext erforderlich, sollte die Reihenfolge lediglich als ein nicht einschränkendes Beispiel verstanden werden. Überdies können in Fällen, bei denen eine Operation als auf eine andere folgend gezeigt wird, auch andere dazwischenliegende Operationen auftreten, die damit im Zusammenhang stehen können oder auch nicht. Einige Operationen können außerdem gleichzeitig oder parallel durchgeführt werden. In Fällen, bei denen eine Operation als „beruhend auf“ oder „in Übereinstimmung mit“ einem anderen Element oder einer anderen Operation bezeichnet wird, sollte dies derart verstanden werden, dass angedeutet wird, dass die Operation zumindest zum Teil auf dem anderen Element oder der anderen Operation beruht oder zumindest zum Teil mit dem anderen Element oder der anderen Operation in Übereinstimmung steht. Dies sollte nicht so aufgefasst werden, dass es andeutet, dass die Operation allein oder ausschließlich auf dem Element oder der Operation beruht oder allein oder ausschließlich mit dem Element oder der Operation in Übereinstimmung steht.
  • Die Gesamtheit oder ein Teil jedes hierin offenbarten Hardwareelements kann auf einfache Weise in einem System-on-a-Chip (SoC) bereitgestellt werden, eingeschlossen ein Zentraleinheits- (CPU-) Baustein. Ein SoC stellt eine integrierte Schaltung (integrated circuit, IC) dar, die Komponenten eines Computers oder eines anderen elektronischen Systems in einen einzigen Chip integriert. Daher können zum Beispiel Clientvorrichtungen oder Servervorrichtungen insgesamt oder zum Teil in einem SoC bereitgestellt werden. Der SoC kann digitale, analoge, Mischsignal- und Hochfrequenzfunktionen enthalten, von denen alle auf einem einzigen Chipsubstrat bereitgestellt werden können. Andere Ausführungsformen können ein Multi-Chip-Modul (MCM) aufweisen, wobei eine Mehrzahl von Chips in einem einzigen elektronischen Baustein angeordnet und dafür konfiguriert ist, miteinander durch den elektronischen Baustein eng zu interagieren.
  • In einem allgemeinen Sinn kann jede auf geeignete Weise konfigurierte Schaltung oder jeder derartige Prozessor jede Art den Daten zugeordneter Anweisung ausführen, um die hier ausführlich beschriebenen Operationen zu erzielen. Jeder hierin offenbarte Prozessor könnte ein Element oder einen Artikel (zum Beispiel Daten) von einem Zustand oder Gegenstand in einen anderen Zustand oder Gegenstand umwandeln. Überdies könnten die Informationen, die in einem Prozessor verfolgt, gesendet, empfangen oder gespeichert werden, in jeder Datenbank, jedem Register, jeder Tabelle, jedem Cache, jeder Warteschlange, Steuerungsliste oder Speicherstruktur bereitgestellt werden, auf Grundlage bestimmter Erfordernisse und Realisierungen, wobei auf alle diese in jedem geeigneten Zeitrahmen verwiesen werden könnte. Jedes der hier offenbarten Arbeitsspeicher- oder Speicherelemente soll wie jeweils anwendbar in den weitgefassten Begriffen „Arbeitsspeicher“ und „Speicher“ umfasst sein.
  • Computerprogrammlogik, welche die Gesamtheit oder einen Teil der hierin beschriebenen Funktionalität realisiert, wird in verschiedenen Formen verkörpert, einschließlich, aber in keiner Weise darauf beschränkt, einer Quellcodeform, einer durch Computer ausführbaren Form, Maschinenanweisungen oder Mikrocode, programmierbare Hardware sowie verschiedene Zwischenformen (zum Beispiel Formen, die von einem Assembler, Compiler, Linker oder Lokalisierer erzeugt werden). Bei einem Beispiel weist Quellcode eine Reihe von Computerprogrammanweisungen auf, die in verschiedenen Programmiersprachen realisiert sind, wie beispielsweise einem Objektcode, einer Assembler-Sprache oder einer Hochsprache wie beispielsweise OpenCL, FORTRAN, C, C++, JAVA oder HTML, zur Verwendung mit verschiedenen Betriebssystemen oder Betriebsumgebungen, oder in Hardwarebeschreibungssprachen wie beispielsweise Spice, Verilog und VHDL. Der Quellcode kann verschiedene Datenstrukturen und Datenübertragungsnachrichten definieren und verwenden. Der Quellcode kann in einer durch Computer ausführbaren Form (z.B. über einen Interpretierer) vorliegen, oder der Quellcode kann (z.B. über einen Übersetzer, Assembler oder Compiler) in eine durch Computer ausführbare Form konvertiert werden oder kann in eine Zwischenform wie beispielsweise Bytecode konvertiert werden. Wo es zweckmäßig erscheint, kann jedes der Vorstehenden verwendet werden, um geeignete diskrete oder integrierte Schaltungen zu bauen oder zu beschreiben, ob sequentiell, kombinatorisch, Zustandsmaschinen oder auf andere Weise.
  • Bei einer beispielhaften Ausführungsform kann eine beliebige Anzahl elektrischer Schaltungen aus den FIGUREN auf einer Platine einer damit in Zusammenhang stehenden elektronischen Vorrichtung realisiert werden. Bei der Platine kann es sich um eine übliche Leiterplatte handeln, die verschiedene Komponenten des internen elektronischen Systems der elektronischen Vorrichtung aufweisen und außerdem Anschlüsse für andere Peripheriegeräte bereitstellen kann. Jeder geeignete Prozessor und Arbeitsspeicher können auf Grundlage bestimmter Konfigurationserfordernisse, Verarbeitungsanforderungen und Computing Designs auf geeignete Weise mit der Platine gekoppelt werden. Es sollte beachtet werden, dass bei den hier angeführten zahlreichen Beispielen eine Interaktion auf zwei, drei, vier oder mehr elektrische Komponenten bezogen beschrieben werden kann. Allerdings wurde dies nur zum Zweck der Klarheit und Beispielgebung vorgenommen. Es sollte beachtet werden, dass das System auf eine beliebige geeignete Weise konsolidiert oder rekonfiguriert werden kann. Im Rahmen ähnlicher Gestaltungsalternativen können beliebige der veranschaulichten Komponenten, Module und Elemente aus den FIGUREN in verschiedenen möglichen Konfigurationen kombiniert werden, von denen alle in den breit angelegten Schutzbereich dieser Beschreibung fallen.
  • Zahlreiche andere Änderungen, Ersetzungen, Variationen, Abänderungen und Modifikationen können für Fachleute ermittelbar sein, und es ist beabsichtigt, dass die vorliegende Offenbarung alle derartigen Änderungen, Ersetzungen, Variationen, Abänderungen und Modifikationen als in den Schutzbereich der angefügten Ansprüche fallend umfassen soll. Um das United States Patent and Trademark Office (USPTO) und überdies alle Leser jedes Patents, das auf diese Anmeldung hin erteilt wird, beim Interpretieren der hieran angefügten Ansprüche zu unterstützen, möchte der Anmelder anmerken, dass der Anmelder: (a) nicht beabsichtigt, dass durch irgendwelche der angefügten Ansprüche Paragraph sechs (6) aus 35 U.S.C. Abschnitt 112 (vor AIA) geltend gemacht wird oder Paragraph (f) desselben Abschnitts (nach AIA), wie er am Datum der Einreichung dieses Dokuments vorliegt, es sei denn, die Begriffe „Mittel für/zum“ oder „Schritte für/zum“ werden ausdrücklich in den speziellen Ansprüchen verwendet, und (b) nicht beabsichtigt, durch irgendeine Aussage in der Beschreibung diese Offenbarung in irgendeiner Weise einzuschränken, die nicht auf andere Weise in den angefügten Ansprüchen ausdrücklich zum Ausdruck gebracht wird.
  • Beispielhafte Realisierungen
  • Die folgenden Beispiele werden zur Veranschaulichung bereitgestellt.
  • Beispiel 1 beinhaltet eine Netzwerkschnittstellenvorrichtung, die umfasst: eine Ingress-Schnittstelle; eine Hostplattformschnittstelle zum kommunikativen Koppeln mit einer Hostplattform und einen Paket-Vorprozessor, der Logik umfasst zum: Empfangen einer Datensequenz, die eine Mehrzahl von diskreten Dateneinheiten umfasst, über die Ingress-Schnittstelle; Erkennen der Datensequenz als Daten für eine parallele Verarbeitungsoperation; Umordnen der diskreten Dateneinheiten in einen umgeordneten Datenrahmen, wobei der umgeordnete Datenrahmen derart konfiguriert ist, dass er die diskreten Dateneinheiten zum Gebrauch durch die parallele Operation ordnet; Senden der umgeordneten Daten über die Hostplattformschnittstelle an die Hostplattform.
  • Beispiel 2 beinhaltet die Netzwerkschnittstelle aus Beispiel 1, wobei die Datensequenz ein einzelnes Datenpaket ist.
  • Beispiel 3 beinhaltet die Netzwerkschnittstelle aus Beispiel 2, wobei ein Umordnen der diskreten Dateneinheiten ein Segmentieren des umgeordneten Datenrahmens in eine Mehrzahl von Puffern umfasst.
  • Beispiel 4 beinhaltet die Netzwerkschnittstelle aus Beispiel 1, wobei die Datensequenz eine Mehrzahl von Paketen umfasst, und wobei ein Umordnen ein Zusammenfügen der Mehrzahl von Paketen umfasst, und der umgeordnete Datenrahmen einen einzelnen Puffer umfasst.
  • Beispiel 5 beinhaltet die Netzwerkschnittstelle aus Beispiel 1, wobei der Paket-Vorprozessor ferner die Datensequenz an die Hostplattform senden soll.
  • Beispiel 6 beinhaltet die Netzwerkschnittstelle aus Beispiel 1, wobei der Paket-Vorprozessor den umgeordneten Datenrahmen mit Metadaten versehen soll, die den Datenrahmen als bereit zum Gebrauch durch die parallele Verarbeitungsoperation kennzeichnen.
  • Beispiel 7 beinhaltet die Netzwerkschnittstelle aus Beispiel 1, die ferner einen Vektor-Switch zum Weiterleiten des umgeordneten Datenrahmens zu einem Zielkern auf der Hostplattform umfasst.
  • Beispiel 8 beinhaltet die Netzwerkschnittstelle aus Beispiel 1, die ferner eine virtuelle Warteschlange umfasst, um eine Mehrzahl von umgeordneten Datenrahmen in eine Warteschlange eines Zielkerns der Hostplattform einzureihen.
  • Beispiel 9 beinhaltet die Netzwerkschnittstelle aus Beispiel 1, wobei die Hostplattformschnittstelle eine Konfigurationsschnittstelle für einen Kern der Hostplattform umfasst, um den Paket-Vorprozessor zu konfigurieren.
  • Beispiel 10 beinhaltet die Netzwerkschnittstelle aus Beispiel 1, wobei die parallele Verarbeitungsoperation aus der Gruppe ausgewählt ist, die besteht aus: Single-Instruction-Multiple-Data- (SIMD-), Multiple-Instruction-Multiple-Data (MIMD-) und Vektorverarbeitung.
  • Beispiel 11 beinhaltet die Netzwerkschnittstelle aus einem der Beispiele 1 bis 10, wobei der Paket-Vorprozessor einen Coprozessor umfasst.
  • Beispiel 12 beinhaltet ein Modem, dass die Netzwerkschnittstelle aus einem der Beispiele 1 bis 10 umfasst.
  • Beispiel 13 beinhaltet das Modem aus Beispiel 11, wobei das Modem ein DOCSIS-Modem ist.
  • Beispiel 14 beinhaltet ein Dienstanbieter-Datenzentrum, das einen Netzkantenrouter umfasst, wobei der Netzkantenrouter das DOCSIS-Modem aus Beispiel 11 ist.
  • Beispiel 15 beinhaltet ein oder mehrere materielle, nichtflüchtige computerlesbare Speichermedien, auf denen ausführbare Anweisungen zum Bereitstellen eines Paket-Vorprozessors gespeichert sind, wobei die Anweisungen dienen sollen zum: Bereitstellen einer Ingress-Schnittstelle; Bereitstellen einer Hostplattformschnittstelle; Empfangen einer Datensequenz, die eine Mehrzahl von diskreten Dateneinheiten umfasst, über die Ingress-Schnittstelle; Erkennen der Datensequenz als Daten für eine parallele Verarbeitungsoperation; Umordnen der diskreten Dateneinheiten in einen umgeordneten Datenrahmen, wobei der umgeordnete Datenrahmen derart konfiguriert ist, dass er die diskreten Dateneinheiten zum Gebrauch durch die parallele Operation ordnet; und Senden der umgeordneten Daten über die Hostplattformschnittstelle an eine Hostplattform.
  • Beispiel 16 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Datensequenz ein einzelnes Datenpaket ist.
  • Beispiel 17 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 16, wobei ein Umordnen der diskreten Dateneinheiten ein Segmentieren des umgeordneten Datenrahmens in eine Mehrzahl von Puffern umfasst.
  • Beispiel 18 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Datensequenz eine Mehrzahl von Paketen umfasst, und wobei ein Umordnen ein Zusammenfügen der Mehrzahl von Paketen umfasst, und der umgeordnete Datenrahmen einen einzelnen Puffer umfasst.
  • Beispiel 19 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Anweisungen ferner die Datensequenz an die Hostplattform senden sollen.
  • Beispiel 20 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Anweisungen ferner den umgeordneten Datenrahmen mit Metadaten versehen sollen, die den Datenrahmen als bereit zum Gebrauch durch die parallele Verarbeitungsoperation kennzeichnen.
  • Beispiel 21 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Anweisungen ferner einen Vektor-Switch bereitstellen sollen, um den umgeordneten Datenrahmen zu einem Zielkern auf der Hostplattform weiterzuleiten.
  • Beispiel 22 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Anweisungen ferner eine virtuelle Warteschlange bereitstellen sollen, um eine Mehrzahl von umgeordneten Datenrahmen in eine Warteschlange eines Zielkerns der Hostplattform einzureihen.
  • Beispiel 23 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Hostplattformschnittstelle eine Konfigurationsschnittstelle für einen Kern der Hostplattform umfasst, um den Paket-Vorprozessor zu konfigurieren.
  • Beispiel 24 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die parallele Verarbeitungsoperation aus der Gruppe ausgewählt ist, die besteht aus: Single-Instruction-Multiple-Data- (SIMD-), Multiple-Instruction-Multiple-Data (MIMD-) und Vektorverarbeitung.
  • Beispiel 25 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Anweisungen in einer ASIC codiert sind.
  • Beispiel 26 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Anweisungen in einem FPGA codiert sind.
  • Beispiel 27 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Anweisungen in einem Soft-IP-Block codiert sind.
  • Beispiel 28 beinhaltet das eine oder mehrere materielle, nichtflüchtige computerlesbare Medien aus Beispiel 15, wobei die Anweisungen in einem Hard-IP-Block codiert sind.
  • Beispiel 29 beinhaltet ein durch Computer realisiertes Verfahren zum Bereitstellen von Paketvorverarbeitung, das umfasst: Bereitstellen einer Ingress-Schnittstelle; Bereitstellen einer Hostplattformschnittstelle; Empfangen einer Datensequenz, die eine Mehrzahl von diskreten Dateneinheiten umfasst, über die Ingress-Schnittstelle; Erkennen der Datensequenz als Daten für eine parallele Verarbeitungsoperation; Umordnen der diskreten Dateneinheiten in einen umgeordneten Datenrahmen, wobei der umgeordnete Datenrahmen derart konfiguriert ist, dass er die diskreten Dateneinheiten zum Gebrauch durch die parallele Operation ordnet; und Senden der umgeordneten Daten über die Hostplattformschnittstelle an eine Hostplattform.
  • Beispiel 30 beinhaltet das Verfahren aus Beispiel 29, wobei die Datensequenz ein einzelnes Datenpaket ist.
  • Beispiel 31 beinhaltet das Verfahren aus Beispiel 30, wobei ein Umordnen der diskreten Dateneinheiten ein Segmentieren des umgeordneten Datenrahmens in eine Mehrzahl von Puffern umfasst.
  • Beispiel 32 beinhaltet das Verfahren aus Beispiel 29, wobei die Datensequenz eine Mehrzahl von Paketen umfasst, und wobei ein Umordnen ein Zusammenfügen der Mehrzahl von Paketen umfasst, und der umgeordnete Datenrahmen einen einzelnen Puffer umfasst.
  • Beispiel 33 beinhaltet das Verfahren aus Beispiel 29, das ferner ein Senden der Datensequenz an die Hostplattform umfasst.
  • Beispiel 34 beinhaltet das Verfahren aus Beispiel 29, das ferner ein Bereitstellen von Metadaten für den Datenrahmen umfasst, wodurch der Datenrahmen als bereit zum Gebrauch durch die parallele Verarbeitungsoperation gekennzeichnet wird.
  • Beispiel 35 beinhaltet das Verfahren aus Beispiel 29, das ferner ein Bereitstellen eines Vektor-Switch zum Weiterleiten des umgeordneten Datenrahmens zu einem Zielkern auf der Hostplattform umfasst.
  • Beispiel 36 beinhaltet das Verfahren aus Beispiel 29, das ferner ein Bereitstellen einer virtuellen Warteschlange umfasst, um eine Mehrzahl von umgeordneten Datenrahmen in eine Warteschlange eines Zielkerns der Hostplattform einzureihen.
  • Beispiel 37 beinhaltet das Verfahren aus Beispiel 29, wobei die Hostplattformschnittstelle eine Konfigurationsschnittstelle für einen Kern der Hostplattform umfasst, um den Paket-Vorprozessor zu konfigurieren.
  • Beispiel 38 beinhaltet das Verfahren aus einem der Beispiele 29 bis 37, wobei die parallele Verarbeitungsoperation aus der Gruppe ausgewählt ist, die besteht aus: Single-Instruction-Multiple-Data- (SIMD-), Multiple-Instruction-Multiple-Data- (MIMD-) und Vektorverarbeitung.
  • Beispiel 39 beinhaltet eine Einrichtung, die Mittel zum Ausführen des Verfahrens nach einem der Ansprüche 29 bis 38 umfasst.
  • Beispiel 40 beinhaltet die Einrichtung aus Beispiel 39, wobei die Mittel eine Netzwerkschnittstelle umfassen.
  • Beispiel 41 beinhaltet ein Modem, dass die Netzwerkschnittstelle aus Beispiel 40 umfasst.
  • Beispiel 42 beinhaltet das Modem aus Beispiel 41, wobei das Modem ein DOCSIS-Modem ist.
  • Beispiel 43 beinhaltet ein Dienstanbieter-Datenzentrum, das einen Netzkantenrouter umfasst, wobei der Netzkantenrouter das DOCSIS-Modem aus Beispiel 41 ist.
  • Beispiel 44 beinhaltet die Einrichtung aus Beispiel 39, wobei die Mittel einen Coprozessor umfassen.
  • Beispiel 45 beinhaltet die Einrichtung aus Beispiel 39, wobei die Mittel einen ASIC umfassen.
  • Beispiel 46 beinhaltet die Einrichtung aus Beispiel 39, wobei die Mittel ein FPGA umfassen.
  • Beispiel 47 beinhaltet die Einrichtung aus Beispiel 39, wobei die Mittel einen Soft-IP-Block umfassen.
  • Beispiel 48 beinhaltet die Einrichtung aus Beispiel 39, wobei die Mittel einen Hard-IP-Block umfassen.

Claims (25)

  1. Netzwerkschnittstellenvorrichtung, die umfasst: eine Ingress-Schnittstelle; eine Hostplattformschnittstelle zum kommunikativen Koppeln mit einer Hostplattform und einen Paket-Vorprozessor, der Logik umfasst zum: Empfangen einer Datensequenz, die eine Mehrzahl von diskreten Dateneinheiten umfasst, über die Ingress-Schnittstelle; Erkennen der Datensequenz als Daten für eine parallele Verarbeitungsoperation; Umordnen der diskreten Dateneinheiten in einen umgeordneten Datenrahmen, wobei der umgeordnete Datenrahmen derart konfiguriert ist, dass er die diskreten Dateneinheiten zum Gebrauch durch die parallele Operation ordnet; und Senden der umgeordneten Daten über die Hostplattformschnittstelle an die Hostplattform.
  2. Netzwerkschnittstelle nach Anspruch 1, wobei die Datensequenz ein einzelnes Datenpaket ist.
  3. Netzwerkschnittstelle nach Anspruch 2, wobei ein Umordnen der diskreten Dateneinheiten ein Segmentieren des umgeordneten Datenrahmens in eine Mehrzahl von Puffern umfasst.
  4. Netzwerkschnittstelle nach Anspruch 1, wobei die Datensequenz eine Mehrzahl von Paketen umfasst, und wobei ein Umordnen ein Zusammenfügen der Mehrzahl von Paketen umfasst, und der umgeordnete Datenrahmen einen einzelnen Puffer umfasst.
  5. Netzwerkschnittstelle nach Anspruch 1, wobei der Paket-Vorprozessor ferner die Datensequenz an die Hostplattform senden soll.
  6. Netzwerkschnittstelle nach Anspruch 1, wobei der Paket-Vorprozessor den umgeordneten Datenrahmen mit Metadaten versehen soll, die den Datenrahmen als bereit zum Gebrauch durch die parallele Verarbeitungsoperation kennzeichnen.
  7. Netzwerkschnittstelle nach Anspruch 1, die ferner einen Vektor-Switch zum Weiterleiten des umgeordneten Datenrahmens zu einem Zielkern auf der Hostplattform umfasst.
  8. Netzwerkschnittstelle nach Anspruch 1, die ferner eine virtuelle Warteschlange umfasst, um eine Mehrzahl von umgeordneten Datenrahmen in eine Warteschlange eines Zielkerns der Hostplattform einzureihen.
  9. Netzwerkschnittstelle nach Anspruch 1, wobei die Hostplattformschnittstelle eine Konfigurationsschnittstelle für einen Kern der Hostplattform umfasst, um den Paket-Vorprozessor zu konfigurieren.
  10. Netzwerkschnittstelle nach Anspruch 1, wobei die parallele Verarbeitungsoperation aus der Gruppe ausgewählt ist, die besteht aus: Single-Instruction-Multiple-Data- (SIMD-), Multiple-Instruction-Multiple-Data- (MIMD-)- und Vektorverarbeitung.
  11. Netzwerkschnittstelle nach einem der Ansprüche 1 bis 10, wobei der Paket-Vorprozessor einen Coprozessor umfasst.
  12. Modem, das die Netzwerkschnittstelle nach einem der Ansprüche 1 bis 10 umfasst.
  13. Modem nach Anspruch 11, wobei das Modem ein DOCSIS-Modem ist.
  14. Dienstanbieter-Datenzentrum, das einen Netzkantenrouter umfasst, wobei der Netzkantenrouter das DOCSIS-Modem nach Anspruch 13 ist.
  15. Ein oder mehrere materielle, nichtflüchtige computerlesbare Speichermedien, auf denen ausführbare Anweisungen zum Bereitstellen eines Paket-Vorprozessors gespeichert sind, wobei die Anweisungen dienen sollen zum: Bereitstellen einer Ingress-Schnittstelle; Bereitstellen einer Hostplattformschnittstelle; Empfangen einer Datensequenz, die eine Mehrzahl von diskreten Dateneinheiten umfasst, über die Ingress-Schnittstelle; Erkennen der Datensequenz als Daten für eine parallele Verarbeitungsoperation; Umordnen der diskreten Dateneinheiten in einen umgeordneten Datenrahmen, wobei der umgeordnete Datenrahmen derart konfiguriert ist, dass er die diskreten Dateneinheiten zum Gebrauch durch die parallele Operation ordnet; und Senden der umgeordneten Daten über die Hostplattformschnittstelle an eine Hostplattform.
  16. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die Datensequenz ein einzelnes Datenpaket ist.
  17. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 16, wobei ein Umordnen der diskreten Dateneinheiten ein Segmentieren des umgeordneten Datenrahmens in eine Mehrzahl von Puffern umfasst.
  18. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die Datensequenz eine Mehrzahl von Paketen umfasst, und wobei ein Umordnen ein Zusammenfügen der Mehrzahl von Paketen umfasst, und der umgeordnete Datenrahmen einen einzelnen Puffer umfasst.
  19. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die Anweisungen ferner die Datensequenz an die Hostplattform senden sollen.
  20. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die Anweisungen ferner den umgeordneten Datenrahmen mit Metadaten versehen sollen, die den Datenrahmen als bereit zum Gebrauch durch die parallele Verarbeitungsoperation kennzeichnen.
  21. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die Anweisungen ferner einen Vektor-Switch bereitstellen sollen, um den umgeordneten Datenrahmen zu einem Zielkern auf der Hostplattform weiterzuleiten.
  22. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die Anweisungen ferner eine virtuelle Warteschlange bereitstellen sollen, um eine Mehrzahl von umgeordneten Datenrahmen in eine Warteschlange eines Zielkerns der Hostplattform einzureihen.
  23. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die Hostplattformschnittstelle eine Konfigurationsschnittstelle für einen Kern der Hostplattform umfasst, um den Paket-Vorprozessor zu konfigurieren.
  24. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die parallele Verarbeitungsoperation aus der Gruppe ausgewählt ist, die besteht aus: Single-Instruction-Multiple-Data-(SIMD-), Multiple-Instruction-Multiple-Data- (MIMD-) und Vektorverarbeitung.
  25. Ein oder mehrere materielle, nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei die Anweisungen in einer anwendungsspezifischen integrierten Schaltung (application-specific integrated circuit, ASIC) codiert sind.
DE102018006679.8A 2017-09-28 2018-08-23 Umordnen von Daten zur parallelen Verarbeitung Pending DE102018006679A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/719,081 US11050682B2 (en) 2017-09-28 2017-09-28 Reordering of data for parallel processing
US15/719,081 2017-09-28

Publications (1)

Publication Number Publication Date
DE102018006679A1 true DE102018006679A1 (de) 2019-03-28

Family

ID=65638876

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018006679.8A Pending DE102018006679A1 (de) 2017-09-28 2018-08-23 Umordnen von Daten zur parallelen Verarbeitung

Country Status (3)

Country Link
US (1) US11050682B2 (de)
CN (1) CN109587076A (de)
DE (1) DE102018006679A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177433B (zh) * 2019-12-31 2021-07-20 北京百度网讯科技有限公司 用于并行处理信息的方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044225A (en) * 1996-03-13 2000-03-28 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller
US20060034275A1 (en) * 2000-05-03 2006-02-16 At&T Laboratories-Cambridge Ltd. Data transfer, synchronising applications, and low latency networks
CN101107863B (zh) * 2005-01-19 2013-01-02 汤姆森特许公司 用于实时并行编码的方法和装置
US8478775B2 (en) * 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US8493979B2 (en) * 2008-12-30 2013-07-23 Intel Corporation Single instruction processing of network packets
US9507619B2 (en) * 2010-01-12 2016-11-29 International Business Machines Corporation Virtualizing a host USB adapter
CN101841839B (zh) * 2010-01-22 2012-06-13 华中科技大学 一种无线传感器网络仿真系统
KR20130073360A (ko) * 2011-12-23 2013-07-03 한국전자통신연구원 다중 반송파 시스템의 데이터 처리 장치 및 그것의 데이터 처리 방법

Also Published As

Publication number Publication date
US11050682B2 (en) 2021-06-29
US20190097951A1 (en) 2019-03-28
CN109587076A (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
DE112013000423B4 (de) Funktionsübergreifende Virtualisierung eines Telekommunikationskernnetzes
US11611905B2 (en) User-plane apparatus for edge computing
CN108886825B (zh) 分布式软件定义无线分组核心系统
DE102020202398A1 (de) Edge-server-cpu mit dynamischer deterministischer skalierung
CN107113637B (zh) 用于在软件定义网络中管理分组的方法和模块
DE102021209988A1 (de) Techniken zur klassifizierung und priorisierung von mehrfachzugangsverwaltungsdienstpaketen
DE102019105193A1 (de) Technologien zum beschleunigen von edge-vorrichtungsarbeitslasten
DE102013208431B4 (de) Großer verteilter Switch auf Fabric-Basis unter Verwendung virtueller Switches und virtueller Steuereinheiten
CN106576117A (zh) 基于层2交换的超高速移动网络
DE102014117460A1 (de) Programmierbares verteiltes Networking
DE102018004111A1 (de) Datencenter-Leistungsmanagement
DE102018214007A1 (de) Zusammenwirken von Altvorrichtungen in virtualisierten Netzwerken
Hirschman et al. High-performance evolved packet core signaling and bearer processing on general-purpose processors
US20230006937A1 (en) Packet flow identification with reduced decode operations
EP3462690B1 (de) Paketsequenz von stapelverarbeitung
CN105684381A (zh) 用于合法监听的装置和方法
DE102018006679A1 (de) Umordnen von Daten zur parallelen Verarbeitung
DE102021109367A1 (de) Synchronisationssignal-multiplexing für drahtlos-systeme
DE102019106037A1 (de) Netzwerkkomponente, Netzwerkschalter, Zentrale, Basisstation, Datenspeicherung, Verfahren und Vorrichtung zum Verwalten von Daten, Computerprogramm, maschinenlesbare Speichervorrichtung und maschinenlesbares Medium
DE112013004554B4 (de) Vorrichtung und Verfahren zur Kommunikation
DE112018007268T5 (de) Verbesserter speicher-abgebildeter eingabe/ausgabe (mmio) -regionszugriff
DE102021124688A1 (de) Ermöglichen automatischer skalierung der rechenleistung zwischen gerät und netzwerk mit dynamischer ressourcenverfügbarkeit
WO2022125296A1 (en) Mechanisms for enabling in-network computing services
DE102021100660A1 (de) Netzwerkbasierte medienverarbeitung (nbmp) anwendungsunterstützung für netzwerkanalysedienste in 5g-systemen
DE102021120405A1 (de) Mechanismus für erweiterte leistungsmessfunktion (pmf) mit jittermessung und steering-modus-verfahren

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0015160000

Ipc: G06F0013140000

R016 Response to examination communication