DE112018007780T5 - Transparente verschlüsselung - Google Patents

Transparente verschlüsselung Download PDF

Info

Publication number
DE112018007780T5
DE112018007780T5 DE112018007780.2T DE112018007780T DE112018007780T5 DE 112018007780 T5 DE112018007780 T5 DE 112018007780T5 DE 112018007780 T DE112018007780 T DE 112018007780T DE 112018007780 T5 DE112018007780 T5 DE 112018007780T5
Authority
DE
Germany
Prior art keywords
memory
controller
encryption
network
storage
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
DE112018007780.2T
Other languages
English (en)
Inventor
Weigang Li
Changzheng Wei
John Barry
Maryam Tahhan
Jonas Alexander Svennebring
Niall D. McDonnell
Alexander Leckey
Patrick Fleming
Christopher MacNamara
John Browne
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112018007780T5 publication Critical patent/DE112018007780T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

Eine Rechenvorrichtung ist offenbart, umfassend: einen Speicher; eine Speicherverschlüsselungssteuerung, um zumindest eine Region des Speichers zu verschlüsseln; und eine Netzwerkschnittstelle, um die Rechenvorrichtung kommunikativ mit einem entfernten Host zu koppeln; wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um ein verschlüsseltes Paket, das über einen Verschlüsselungsschlüssel entschlüsselbar ist, direkt von dem Speicher zu dem entfernten Host zu senden, über die Netzwerkschnittstelle, unter Umgehung eines Netzwerkprotokollstapels.

Description

  • GEBIET DER BESCHREIBUNG
  • Diese Offenbarung bezieht sich im Allgemeinen auf das Gebiet der sicheren Kommunikation und genauer, aber nicht ausschließlich, auf ein System und Verfahren für ein Bereitstellen von transparenter Verschlüsselung.
  • HINTERGRUND
  • Bei einigen modernen Rechenzentren ist die Funktion einer Vorrichtung oder Anwendung möglicherweise nicht an eine spezifische, feste Hardware-Konfiguration gebunden. Stattdessen können Verarbeitungs-, Speicher- (Memory), Speicherungs-(storage) und Beschleunigerfunktionen in einigen Fällen von unterschiedlichen Orten aggregiert werden, um einen virtuellen „zusammengesetzten Knoten (composite node)“ zu bilden. Ein aktuelles Netzwerk kann ein Rechenzentrum umfassen, das eine große Anzahl von generischen Hardware-Server-Vorrichtungen hostet, die in einem Server-Rack umfasst sind, zum Beispiel, und durch einen Hypervisor gesteuert werden. Jede Hardwarevorrichtung kann eine oder mehrere Instanzen einer virtuellen Vorrichtung ausführen, wie beispielsweise einen Arbeitslast-Server oder einen virtuellen Desktop.
  • Figurenliste
  • Die vorliegende Offenbarung wird durch die folgende detaillierte Beschreibung am besten verstanden, wenn sie mit den dazugehörigen Figuren gelesen wird. Es wird betont, dass, gemäß üblicher Branchenpraktiken, verschiedene Merkmale nicht notwendigerweise maßstabsgetreu gezeichnet sind und nur zu Darstellungszwecken verwendet werden. Wo eine Skala gezeigt ist, explizit oder implizit, stellt sie nur ein darstellendes Beispiel bereit. Bei anderen Ausführungsbeispielen können die Abmessungen der verschiedenen Merkmale zu Zwecken der Klarheit der Erörterung beliebig vergrößert oder verkleinert sein.
    • 1 ist ein Blockdiagramm einer sicheren Kommunikation, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 2 ist ein weiteres Blockdiagramm einer sicheren Kommunikation, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 3 ist ein Blockdiagramm einer alternativen sicheren Kommunikation, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 4 ist ein Flussdiagramm eines Verfahrens zum Übertragen eines verschlüsselten Pakets, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 5 ist ein Flussdiagramm eines Verfahrens zum Empfangen eines verschlüsselten Pakets, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 6 ist ein Blockdiagramm einer vertrauenswürdigen Ausführungsumgebung (TEE; Trusted Execution Environment), gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 7 ist ein Blockdiagramm eines Multi-Schlüssel-Gesamtspeicher-Verschlüsselungs (MKTME; multi-key total memory encryption) -Systems, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 8 ist ein Blockdiagramm einer Hardware-Plattform, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 9 ist ein Blockdiagramm ausgewählter Komponenten eines Rechenzentrums mit Konnektivität zu einem Netzwerk eines Cloud-Dienstanbieters (CSP; cloud service provider), gemäß einem oder mehreren Beispielen der vorliegenden Anwendung.
    • 10 ist ein Blockdiagramm ausgewählter Komponenten einer Endnutzer-Rechenvorrichtung gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 11 ist ein Blockdiagramm einer Netzwerkfunktionsvirtualisierungs (NFV; network function virtualization) -Architektur gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 12 ist ein Blockdiagramm von Komponenten einer Rechenplattform gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 13 ist ein Blockdiagramm einer zentralen Verarbeitungseinheit (CPU; zentralen Verarbeitungseinheit), gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 14 ist ein Blockdiagramm eines Rack-Größenordnungsentwurfs (RSD; rack scale design), gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 15 ist ein Blockdiagramm eines Softwaredefinierte-Infrastruktur (SDI; software-defined infrastructure) -Rechenzentrums, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 16 ist ein Blockdiagramm eines Rechenzentrums, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
  • AUSFÜHRUNGSBEISPIELE DER OFFENBARUNG
  • Die folgende Offenbarung stellt viele unterschiedliche Ausführungsbeispiele oder Beispiele für ein Implementieren unterschiedlicher Merkmale der vorliegenden Offenbarung dar. Spezifische Beispiele für Komponenten und Anordnungen sind nachfolgend beschrieben, um die vorliegende Offenbarung zu vereinfachen. Diese sind natürlich nur Beispiele und sollen nicht einschränkend sein. Ferner kann die vorliegende Offenbarung in den verschiedenen Beispielen Bezugszeichen und/oder Buchstaben wiederholen. Diese Wiederholung dient dem Zweck von Einfachheit und Klarheit und schreibt an sich nicht eine Beziehung zwischen den verschiedenen erörterten Ausführungsbeispielen und/oder Konfigurationen vor. Unterschiedliche Ausführungsbeispiele können unterschiedliche Vorteile aufweisen, und kein bestimmter Vorteil ist notwendigerweise von irgendeinem Ausführungsbeispiel erforderlich.
  • Eine zeitgemäße Rechenplattform, wie beispielsweise eine von Intel® oder Ähnlichem bereitgestellte Hardwareplattform, kann eine Fähigkeit zum Überwachen der Vorrichtungsperformance und zum Treffen von Entscheidungen über Ressourcenbereitstellung aufweisen. Zum Beispiel kann in einem großen Rechenzentrum, wie es beispielsweise durch einen Cloud-Dienstanbieter (CSP; cloud service provider) bereitgestellt sein kann, die Hardware-Plattform Rack-befestigte Server mit Rechenressourcen wie Prozessoren, Speicher, Speicherungspools, Beschleunigern und anderen ähnlichen Ressourcen aufweisen. Nach hiesigem Gebrauch umfasst „Cloud-Rechenwesen (cloud computing)“ Netzwerk-verbundene Rechenressourcen und Technologie, die allgegenwärtigen (oft weltweiten) Zugriff auf Daten, Ressourcen und/oder Technologie ermöglichen. Cloud-Ressourcen zeichnen sich im Allgemeinen durch große Flexibilität bei einem dynamischen Zuweisen von Ressourcen gemäß aktueller Arbeitslasten und Bedürfnisse aus. Dies kann, zum Beispiel, durch Virtualisierung erreicht werden, wobei Ressourcen wie beispielsweise Hardware, Speicherung und Netzwerke einer virtuellen Maschine (VM; virtual machine) via eine Software-Abstraktionsschicht bereitgestellt werden, und/oder durch Containerisierung, wobei Instanzen von Netzwerkfunktionen in „Containern“ bereitgestellt sind, die voneinander getrennt sind, die aber zugrunde liegende Betriebssystem-, Speicher- und Treiberressourcen gemeinsam verwenden.
  • Sichere Netzwerkkommunikation ist eine wichtige Komponente einer modernen Kommunikationsinfrastruktur. Obwohl es in der Vergangenheit üblich war, dass Kommunikationen über ungesicherte Kanäle erfolgten, wie beispielsweise Hypertext Transport Protocol (HTTP), haben die Verbreitung von Malware, schlechte Akteure, staatliche Überwachung, staatlich geförderter Cyberterrorismus und andere Bedrohungen das Internet und das World Wide Web dazu veranlasst, immer sicherere Kommunikationskanäle zu verwenden, wie beispielsweise Hypertext Transport Protocol Secure (HTTPS), das ein Verschlüsselungsprotokoll verwendet, wie beispielsweise Secure Socket Layer (SSL) oder Transport Layer Security (TLS), um Punkt-zu-Punkt-Kommunikationen zu verschlüsseln und somit sicherzustellen, dass Übertragungen nicht abgehört oder ausspioniert werden können.
  • Sichere Kommunikationen können auch innerhalb eines Rechenzentrums ein wichtiger Faktor sein. Beispielsweise kann ein Rechenzentrum eine Reihe disparater Anwender (tenants) umfassen, die VMs betreiben, die koexistieren und über gemeinsame Hardwareschnittstellen kommunizieren.
  • Bei Ausführungsbeispielen der vorliegenden Offenbarung ist ein Anwender eine Gruppe von Benutzern, die gemeinsame Zugriffsprivilegien auf eine Software-Instanz, die auf einem öffentlichen oder privaten, cloudbasierten Computernetzwerk gehostet ist, gemeinschaftlich verwenden. In einer Multi-Anwender-Cloud-Umgebung sind die Daten jedes Anwenders voneinander isoliert und für jeden anderen Anwender unsichtbar.
  • Ferner, wie hierin offenbart ist, ist eine VM eine isolierte Unterteilung innerhalb einer Rechenvorrichtung, die eine Verwendung eines Betriebssystems und anderer Anwendungen unabhängig von anderen Programmen auf der Vorrichtung, in der sie umfasst ist, erlaubt. VMs, Container und Ähnliches können allgemein als „Gast“-Systeme bezeichnet werden.
  • Wie in der vorliegenden Beschreibung verwendet, ist ein Rechenzentrum eine Einrichtung (wie innerhalb einer Organisation oder eines Unternehmens, als nicht einschränkendes Beispiel), die die physische oder virtuelle Infrastruktur für Informationstechnologie (IT; information technology) -Server und Netzwerkkomponenten bereitstellt. Diese Komponenten können Speicherung, Organisation, Management, Verarbeitung und Verbreitung von Daten entweder auf eine zentralisierte, aggregierte Weise oder auf eine disaggregierte Weise, mittels kommunikativ verbindender Ressourcen an disparaten Orten bereitstellen.
  • In einem Multi-Anwender-Rechenzentrum können Anwender verlangen, dass ihre Daten und Kommunikationen von anderen Anwendern innerhalb des Rechenzentrums gesichert werden. Somit können, um diese Sicherheit bereitzustellen, Kommunikationen innerhalb des Rechenzentrums auch verschlüsselt sein.
  • Traditionelle sichere Pocket-Verarbeitung zwischen zwei Hosts (die physisch entfernte Hosts sein können, oder die nur konzeptionell entfernte Hosts sein können, in dem Sinne, dass sie sich auf der gleichen Hardware befinden, aber in separaten VMs existieren) verlässt sich auf sichere Netzwerkprotokolle, wie beispielsweise Internet Protocol Security (Ipsec), Transport Layer Security/Secure Socket Layer (TLS/SSL) und andere. Diese erfordern, dass Paketnutzlasten während einer Übertragung von einem Anwendungsspeicher zu einem Protokollstapel kopiert werden. Die Pakete werden dann innerhalb des Protokollstapels verschlüsselt, was entweder in Software geschehen kann, oder können an einen Hochgeschwindigkeits-Hardwarebeschleuniger abgegeben werden, wie beispielsweise ein feld-programmierbares Gate-Array (FPGA; field-programmable gate array) in einem Rechenzentrum. Das verschlüsselte Paket wird dann über eine Netzwerkschnittstelle, eine Netzwerkvorrichtung oder eine andere Netzwerksteuerung an den entfernten Host übertragen. Bei dem entfernten Host wird das Paket wieder innerhalb des Protokollstapels entschlüsselt, entweder in Software oder über einen Hardwarebeschleuniger. Das Paket kann dann auf dem entfernten Host verarbeitet werden.
  • Einige zeitgemäße Rechen-Hardware-Plattformen umfassen jedoch Speichersteuerungen, die vollständige Speicherverschlüsselung (TME; total memory encryption) bereitstellen. Mit einer TME-Steuerung kann der gesamte flüchtige Speicher der Hardware-Plattform verschlüsselt sein. Alternativ kann zumindest ein Abschnitt des flüchtigen Speichers, wie beispielsweise spezielle Hardwareseiten, verschlüsselt sein. TME kann durch Anweisungssätze unterstützt sein, wie beispielsweise diese, die in Intel® Xeon-Prozessoren oder anderen bereitgestellt sind, die eine vollständige Verschlüsselung von dynamischem Direktzugriffsspeicher (DRAM; dynamic random access memory) und von nichtflüchtigem Direktzugriffsspeicher (NVRAM; nonvolatile random access memory) mit einem einzigen Verschlüsselungsschlüssel ermöglichen. Eine weitere Erweiterung des TME-Protokolls ist die Multi-Schlüssel-Gesamtspeicher-Verschlüsselung (MKTME), die mehrere Verschlüsselungsschlüssel unterstützt, die verwendet werden können, um unterschiedliche Speicherseiten zu verschlüsseln. Mit MKTME können unterschiedliche Verschlüsselungsschlüssel bestimmten VMs oder anderen Gästen innerhalb der Hardware-Plattform gehören, so dass die verschiedenen Gäste eine Verschlüsselung ihrer eigenen Speicherseiten managen können, ohne dass diese Seiten für andere Gäste auf dem gleichen System sichtbar sind.
  • Wenn TME, MKTME oder andere Speicherverschlüsselungstechnologien auf einem System vorliegen, kann ein Paket, das von einem ersten Host an einen entfernten Host übertragen werden soll, zunächst innerhalb der Speichersteuerung entschlüsselt werden und dann zur Übertragung an den entfernten Host auf den Netzwerkprotokollstapel kopiert werden. Der Netzwerkprotokollstapel kann dann das Paket wieder mit einem Protokollsitzungsschlüssel verschlüsseln. Der Host sendet das Paket dann an den entfernten Host, der das Paket entschlüsselt und das Paket intern verarbeitet. Dazu gehören mehrere Speicherkopien und Verschlüsselungs-/Entschlüsselungsoperationen. Diese mehreren Operationen können besonders in dem Fall überflüssig sein, dass beide Hosts TME unterstützen, in welchem Fall Verschlüsselung und Entschlüsselung an dem Protokollstapel ein Engpass wird, da Pakete entschlüsselt und dann für eine Übertragung wieder verschlüsselt werden müssen. Selbst in Fällen, in denen die Verschlüsselung und Entschlüsselung durch sehr schnelle Hardware-Beschleuniger gehandhabt werden, sind diese zusätzlichen Verschlüsselungs- und Entschlüsselungsoperationen bestenfalls unnötig und verbrauchen zusätzliche Leistung und Rechenressourcen.
  • Ausführungsbeispiele der vorliegenden Beschreibung verbessern diese Infrastruktur, indem sie anerkennen, dass, wenn zwei Vorrichtungen, die beide native Speicherverschlüsselung mit einem gemeinschaftlich verwendeten Verschlüsselungsschlüssel unterstützen, Daten vor und zurück senden, keine Notwendigkeit besteht, diese Daten an dem Protokollstapel zu verschlüsseln. Vielmehr kann ein Protokoll wie beispielsweise Remote Direct Memory Access (RDMA) verwendet werden, um den sicheren Protokollstapel zu umgehen und MKTME oder Ähnliches zu nutzen, um eine transparente Verschlüsselung innerhalb der Speichersteuerung anstatt innerhalb des Protokollstapels bereitzustellen.
  • Dies verbessert Serverperformance pro Watt und senkt die Kern- und/oder Krypto-Beschleuniger-Zyklus-Kosten und Übertragungslatenz. Sichere Netzwerkkommunikationen werden auch beschleunigt. Es wird darauf hingewiesen, dass diese Arten von sicheren Netzwerkkommunikationen (z.B. Peer-to-Peer) nicht nur im World Wide Web üblich sind, sondern auch bei Rechenzentren, Netzwerkfunktionsvirtualisierung, softwaredefiniertem Netzwerken, Telekommunikation, Cloud-Anwendungen, NFV Long Term Evolution (LTE), drahtlose/5G-Gateways, Sicherheits-Gateways, Cloud-Sicherheits-Gateways und Lastausgleicher mit Virtual Private Network (VPN) -Abschluss, um nur ein paar zu nennen.
  • Es wird darauf hingewiesen, dass, obwohl existierende Systeme sichere Protokolle und MKTME-Technologie, die zusammenarbeiten, bereitstellen, diese Systeme Performance-Verschlechterung erfahren, da Paket-Nutzlasten kopiert und mehrmals verschlüsselt/entschlüsselt werden können.
  • Bei Ausführungsbeispielen der vorliegenden Beschreibung erlaubt eine Speichersteuerung, wie beispielsweise eine TME-Steuerung oder eine MKTME-Steuerung, es dem Server, Speichersteuerungs-Umgehungs-Entschlüsselung zu konfigurieren, wenn Daten in einem Speicher durch eine Netzwerksteuerung, wie beispielsweise eine Netzwerkschnittstellenkarte (NIC; network interface card), gelesen werden. Wenn ein erster Host Daten an einen zweiten Host sendet, kann der erste Host über RDMA die bereits verschlüsselten Daten aus seinem Speicher direkt in den Speicher des zweiten Hosts kopieren. Da die Daten während der Übertragung bereits verschlüsselt sind, ist die Netzwerkübertragung inhärent geschützt, und der zweite Host kann Daten aus seinem Speicher lesen, da die zwei Hosts einen Verschlüsselungsschlüssel gemeinschaftlich verwenden. Dieser Verschlüsselungsschlüssel kann sowohl in dem ersten Host als auch dem zweiten Host bereitgestellt sein.
  • Es wird darauf hingewiesen, dass der erste Host bei einigen Ausführungsbeispielen das Paket zu DRAM leeren (flush) muss, bevor er den Beschreiber an die Netzwerksteuerung ausgibt. Irgendwelche solcher Leerungen sollten eingegrenzt sein. Die Speichersteuerung ist ausgebildet, um Entschlüsselung in diesen RDMA-Zugriffsoperationen zu umgehen.
  • Vorteilhafterweise ermöglichen die Lehren der vorliegenden Beschreibung sichere Netzwerkkommunikationen ohne Speicherkopien von der Anwendung zu dem Protokollstapel. Das System erfordert auch keine zusätzliche Datenentschlüsselung in der Speichersteuerung oder Datenverschlüsselung in dem Protokollstapel. Der Verschlüsselungsschlüssel kann gesichert sein, indem er innerhalb einer geschützten Enklave einer vertrauenswürdigen Ausführungsumgebung (TEE; Trusted Execution Environment) bereitgestellt wird, wodurch das Ausspionieren durch Hypervisor, andere VMs oder andere virtuelle Netzwerkfunktionen (VNFs) vermieden wird.
  • Ein System und Verfahren für ein Bereitstellen von transparenter Verschlüsselung werden nun unter genauerer Bezugnahme auf die beigefügten FIGUREN beschrieben. Es wird darauf hingewiesen, dass durch die FIGUREN hindurch bestimmte Bezugszeichen wiederholt werden können, um anzuzeigen, dass eine bestimmte Vorrichtung oder ein Block vollständig oder im Wesentlichen durch die FIGUREN hindurch konsistent ist. Dies soll jedoch nicht irgendeine bestimmte Beziehung zwischen den verschiedenen offenbarten Ausführungsbeispielen andeuten. Bei bestimmten Beispielen kann eine Gattung von Elementen durch ein bestimmtes Bezugszeichen („Widget 10“) bezeichnet werden, während auf individuelle Arten oder Beispiele der Gattung durch eine mit Bindestrich geschriebene Ziffer („erstes spezifisches Widget 10-1“ und „zweites spezifisches Widget 10-2“) Bezug genommen werden kann.
  • 1 ist ein Blockdiagramm einer sicheren Kommunikation, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Bei dem Beispiel von 1 sind Server A 102-1 und Server B 102-2 mit einem gemeinsamen Verschlüsselungsschlüssel 108 bereitgestellt.
  • Der Verschlüsselungsschlüssel 108 kann, zum Beispiel, durch eine TEE-Enklave innerhalb einer Speichersteuerung, wie beispielsweise einer MKTME-Steuerung 106, bereitgestellt sein. Die MKTME-Steuerung 106 kann durch einen Befehlssatz, wie beispielsweise Intel® Software Guard Extensions (SGX), unterstützt werden. Sowohl Server A 102-1 als auch Server B 102-2 weisen jeweils eine MKTME-Steuerung auf, nämlich MKTME-Steuerung 106-1 und MKTME-Steuerung 106-2. Es wird darauf hingewiesen, dass eine MKTME-Steuerung 106 in dieser Darstellung als ein Beispiel einer Speichersteuerung oder Speicherverschlüsselungssteuerung bereitgestellt ist, die die Lehren der vorliegenden Beschreibung unterstützt. Die hierin ausgedrückten Lehren sehen ausdrücklich vor, dass die MKTME-Steuerung 106 ausgetauscht werden könnte, als nicht einschränkendes Beispiel durch eine Einzel-Schlüssel-Gesamtspeicherverschlüsselungssteuerung, durch eine teilweise Speicherverschlüsselungssteuerung oder durch irgendeine andere Speicherverschlüsselungssteuerung, die Verschlüsselung von zumindest einem Abschnitt eines Speichers unterstützt, wie beispielsweise eines Speichers 112.
  • Jeder Server 102 ist auch mit einem Prozessor 104 bereitgestellt, nämlich Prozessor 104-1 für Server A 102-1 und Prozessor 104-2 für Server B 102-2. Der Prozessor 104 kann spezielle Anweisungen, wie beispielsweise SGX umfassen, um die Bereitstellung einer TEE und/oder Enklave und/oder von Speicherverschlüsselungsdiensten zu unterstützen. Jeder Server 102 umfasst auch einen Speicher 112, nämlich Speicher 112-1 auf Server A 102-1 und Speicher 112-2 auf Server B 102-2. Innerhalb des Speichers 112-1 ist eine Region von verschlüsselten Daten 120-1. Innerhalb des Speichers 112-2 ist eine Region von verschlüsselten Daten 120-2. Die Verschlüsselte-Daten-Regionen 120-1 und 120-2 können über den gemeinschaftlich verwendeten Schlüssel 108 verschlüsselt sein und sind daher durch den gemeinschaftlich verwendeten Schlüssel 108 entschlüsselbar.
  • Schließlich umfassen beide Server 102 eine NIC 116, nämlich NIC 116-1 für Server A 102-1 und NIC 116-2 für Server B 102-2. Es wird darauf hingewiesen, dass eine NIC eine Ethernet-Karte sein kann, oder eine andere Struktur unterstützen kann, umfassend eine Rechenzentrumsstruktur. Zum Beispiel könnte NIC 116-1 eine andere Netzwerk- oder Struktursteuerung sein, umfassend, als nicht einschränkendes Beispiel, Intel® Silizium-Photonik, eine Intel® Host Fabric Interface, eine intelligente NIC (iNIC; intelligent NIC), smarte NIC, einen Host Channel Adapter (HCA) oder eine andere Host-Schnittstelle, PCI, PCIe, eine Kern-zu-Kern Ultra Path Interconnect (UPI) (früher QPI oder KTI genannt), Infinity Fabric, Intel® Omni-Path™ -Architektur (OPA), TrueScale™, FibreChannel, Ethernet, FibreChannel over Ethernet (FCoE), InfiniBand, eine Legacy-Verbindung wie beispielsweise ein Lokales Netzwerk (LAN; local area network), ein Token-Ring-Netzwerk, ein synchrones optisches Netzwerk (SONET; synchronous optical network), ein Asynchroner-Übertragungsmodus (ATM; asynchronous transfer mode) -Netzwerk, ein drahtloses Netzwerk, wie beispielsweise Wi-Fi oder Bluetooth, eine „Plain Old Telephone System (einfacher alter Telefondienst)“ (POTS) -Verbindung oder Ähnliches, einen Multi-Drop-Bus, eine Mesh-Verbindung, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (z.B. zwischenspeicherkohärenten) Bus, eine geschichtete Protokollarchitektur, einen differenziellen Bus oder einen Gunning-Transceiver-Logik (GTL) -Bus, um nur einige zu nennen. Die Struktur kann zwischenspeicher- und speicherkohärent, zwischenspeicher- und speicher-nicht-kohärent oder ein Hybrid aus kohärenten und nicht-kohärenten Verbindungen sein. Einige Verbindungen sind für bestimmte Zwecke oder Funktionen beliebter als andere, und ein Auswählen einer geeigneten Struktur für die sofortige Anwendung ist eine Übung gewöhnlichen Geschicks. Beispielsweise werden OPA und Infiniband gewöhnlich in Hoch-Performance-Rechen (HPC; high-performance computing) - Anwendungen verwendet, während Ethernet und FibreChannel in Cloud-Rechenzentren beliebter sind. Aber diese Beispiele sind ausdrücklich nicht einschränkend, und mit der Weiterentwicklung von Rechenzentren entwickeln sich auch die Struktur-Technologien auf ähnliche Weise weiter.
  • Wie durchgehend in dieser Beschreibung und den Ansprüchen verwendet, soll eine „Netzwerk-Steuerung“ für die gesamte Klasse von Bauelementen stehen, die eine Verbindung oder eine Struktur zwischen zwei Hosts bereitstellen können, umfassend virtuelle Strukturen, wie beispielsweise einen virtuellen Schalter (vSwitch). Bei einigen Ausführungsbeispielen können NICs 116 entfernten Direktspeicherzugriff (RDMA; remote direct memory access) unterstützen.
  • Bei einem darstellenden Anwendungsfall sind Paketdaten innerhalb der verschlüsselten Datenregion 120-1 von Server A 102-1 durch die MKTME-Steuerung 106-1 mit dem Verschlüsselungsschlüssel 108 verschlüsselt. Wenn Server A 102-1 das verschlüsselte Paket an Server B 102-2 senden muss, kann die NIC 116-1 einen RDMA-Befehl ausgeben. Beispielhalber wird das verschlüsselte Paket 110 nicht entschlüsselt und an einen Protokollstapel von Server A 102-1 weitergegeben. Stattdessen wird das Paket 110 direkt an die NIC 116-1 weitergegeben, wo es über ein nicht-verschlüsseltes oder nicht gesichertes Protokoll (z.B. HTTP für Ethernet, oder irgendein anderes geeignetes Protokoll für ein anderes Struktur-Ausführungsbeispiel) an NIC 116-2 gesendet werden kann.
  • Die MKTME-Steuerung 106-1 kann ein Flag setzen oder ein Signal an die NIC 116-1 oder an Softwarekomponenten des Servers A 102-1 senden, das anzeigt, dass das Paket 110 zumindest einen Verschlüsselungsabschnitt eines Software-Protokollstapels innerhalb von Server A 102-1 nicht durchlaufen soll. Dadurch wird sichergestellt, dass das Paket 110 nicht entschlüsselt und dann bei der NIC 116-1 wieder verschlüsselt wird und dann entschlüsselt und bei der NIC 116-2 wieder verschlüsselt wird. Vielmehr gibt die NIC 116-1 einen RDMA-Befehl aus, der das Paket 110 direkt in die verschlüsselte Datenregion 120-2 des Speichers 112-2 platziert. Wenn eine Anwendung in Server B 102-2 auf das verschlüsselte Paket 110 zugreift, kann die MKTME-Steuerung 106-2 die Daten innerhalb des Pakets 110 unter Verwendung des gemeinschaftlich verwendeten Verschlüsselungsschlüssels 108 entschlüsseln.
  • Das hierin offenbarte System realisiert Vorteile gegenüber bestehenden Verfahren, die veranlassen können, dass das Paket 110 entschlüsselt und dann auf dem Server 102-1 wieder verschlüsselt wird, und dann bei der NIC 116-1 entschlüsselt wird und dann innerhalb der MKTME-Steuerung 106-2 von Server B 102-2 wieder verschlüsselt wird. Diese zusätzlichen Verschlüsselungs- und Entschlüsselungsoperationen verbrauchen Rechenressourcen oder Beschleunigerressourcen und sind in vielen Fällen nicht notwendig. Da das Paket 110 von Ende-zu-Ende verschlüsselt bleibt, bleibt die Netzwerksicherheit immer noch erhalten. Ferner, falls in dem Falle einer MKTME-Steuerung 106 jeder Anwender innerhalb der physischen Infrastruktur seinen eigenen separaten Verschlüsselungsschlüssel besitzt, werden Daten von anderen Anwendern innerhalb des Systems geschützt.
  • RDMA ist als ein Beispiel eines Protokolls offenbart, das den hierin offenbarten Austausch ermöglicht. Dies sollte jedoch als ein nicht einschränkendes Beispiel angemerkt sein. Zum Beispiel könnte bei anderen Ausführungsbeispielen ein Protokoll wie beispielsweise TCP/IP verwendet werden, und ein Paket 110 kann einfach an die NIC 116-1 als eine Standard-Nutzlast für eine HTTP-Transaktion ausgegeben werden. Die NIC 116-1 kann dann das Paket 110-1 über einen nicht verschlüsselten HTTP-Kanal an die NIC 116-2 übertragen, und die NIC 116-2 kann das Paket 110 einfach als eine gewöhnliche Nutzlast behandeln. Somit können die Lehren der vorliegenden Beschreibung auch in Systemen praktiziert werden, die ein Protokoll wie beispielsweise RDMA nicht unterstützen.
  • 2 ist ein weiteres Blockdiagramm einer sicheren Kommunikation, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. 2 stellt einen Austausch zwischen einem Server A 202-1 und einem Server B 202-2 dar.
  • Bei verschiedenen Ausführungsbeispielen kann einem oder beiden von Server A 202-1 und Server B 202-2 eine Speichersteuerung bereitgestellt sein, die ausgebildet ist, um die Lehren der vorliegenden Beschreibung auszuführen. Bei diesem Beispiel beteiligen sich die zwei Server 202 jedoch an einer Transaktion, die durch einen Protokollstapel 224 verläuft, entweder da eine die Lehren der vorliegenden Beschreibung unterstützt und die andere das nicht tut, oder da Umstände der Transaktion vorschreiben, dass die Transaktion auf diese Weise auftreten sollte.
  • Server A 202-1 umfasst den verschlüsselten Speicher 208-1 mit einem verschlüsselten Paket 204, eine Speichersteuerung 214-1, eine Speicherkopierfunktion 216 und einen Protokollstapel 224-1 mit einer NIC 228-1. Server B 202-2 umfasst einen verschlüsselten Speicher 208-2, eine Speichersteuerung 214-2, eine Speicherkopierfunktion 232, einen Protokollstapel 224-2 und eine NIC 228-2.
  • Bei diesem Ausführungsbeispiel, da Server 202 nicht die Lehren der vorliegenden Beschreibung für diese bestimmte Transaktion ausüben, beginnt das verschlüsselte Paket 204 innerhalb des verschlüsselten Speichers 208-1. Die Speichersteuerung 214-1 entschlüsselt das verschlüsselte Paket 204 in ein entschlüsseltes Paket 212. Eine Speicherkopie 216 tritt auf, so dass das entschlüsselte Paket 212 an den Protokollstapel 224-1 weitergegeben wird. Der Protokollstapel 224-1 verschlüsselt das entschlüsselte Paket 212, entweder in Software oder durch Auslagern an einen Hardware- Beschleuniger, um das verschlüsselte Paket 220 bereitzustellen. Das verschlüsselte Paket 220 wird dann über die NIC 228-1 über ein sicheres Protokoll, wie beispielsweise HTTPS, an die NIC 228-2 übertragen. Die NIC 228-2 stellt dann das verschlüsselte Paket 228 dem Protokollstapel 224-2 bereit. Der Protokollstapel 224-2 entschlüsselt das verschlüsselte Paket 228, entweder in Software oder über einen Hardware-Beschleuniger. Eine Speicherkopie 232 leitet dann das neu entschlüsselte Paket 236 an die Speichersteuerung 214-2 weiter. Die Speichersteuerung 214-2 stellt dann das verschlüsselte Paket 240 in einen verschlüsselten Speicher 208-2 bereit.
  • 3 ist ein Blockdiagramm einer alternativen sicheren Kommunikation, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Im Gegensatz zu dem Ausführungsbeispiel von 2 stellt 3 ein Beispiel dar, bei dem ein verschlüsseltes Paket gemäß den Lehren der vorliegenden Beschreibung weitergegeben wird.
  • Bei dem Beispiel von 3 umfasst ein Server A 302-1 einen verschlüsselten Speicher 308-1 mit einem verschlüsselten Paket 304. Der Server A 302-1 umfasst auch eine NIC 328-1. Der Server B 302-2 umfasst verschlüsselten Speicher 308-2 und eine NIC 328-2.
  • Bei der dargestellten Transaktion liegt das verschlüsselte Paket 304 innerhalb des verschlüsselten Speichers 308-1 vor. Bei diesem Beispiel gibt eine geeignete Entität, wie beispielsweise Software oder eine Speichersteuerung, das verschlüsselte Paket 304 an die NIC 328-1 weiter. Dies umgeht zumindest einen Verschlüsselungsabschnitt eines Software-Protokollstapels, der für die NIC 328-1 bereitgestellt sein kann. Die NIC 328-1 überträgt dann das verschlüsselte Paket 304 über eine nicht sichere Transaktion, wie beispielsweise RDMA oder HTTP, direkt an die NIC 328-2. Die NIC 328-2 platziert dann das verschlüsselte Paket 304 direkt in den verschlüsselten Speicher 308-2, wodurch zumindest Verschlüsselungsabschnitte eines Software-Protokollstapels umgangen werden. Es wird darauf hingewiesen, dass, in dem Fall von RDMA, eine Region von verschlüsseltem Speicher 308-2 direkt durch die NIC 328-1 abgebildet sein kann, so dass das verschlüsselte Paket 304 auf eine Direktspeicherzugriffs (DMA; direct memory access) -Weise direkt in den verschlüsselten Speicher 308-2 platziert werden kann, wodurch alles oder das meiste eines Protokollstapels umgangen werden kann.
  • 4 ist ein Flussdiagramm eines Verfahrens 400 zum Übertragen eines verschlüsselten Pakets, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
  • Bei Block 404 wird ein Paket verschlüsselt, zum Beispiel innerhalb einer MKTME-Steuerung. Es wird darauf hingewiesen, dass die MKTME-Steuerung intern auf den unverschlüsselten Daten des Pakets arbeiten kann, aber nicht das unverschlüsselte Paket außerhalb der MKTME-Steuerung freilegt.
  • Bei Block 408 schreibt das System das Paket direkt an die NIC. In dem Fall eines RDMA-Ausführungsbeispiels kann RDMA automatisch eine verschlüsselte Transaktion versuchen, in welchen Fall Tags, Anfangsblöcke (header) oder andere Indikatoren oder Signale notwendig sein können, um die RDMA-NIC anzuweisen, das Paket vor dem Aussenden nicht zu verschlüsseln. Bei anderen Beispielen kann das Paket unter Verwendung eines Klartextprotokolls, wie beispielsweise HTTP, über TCP/IP gesendet werden, in welchem Fall spezielle Flags möglicherweise nicht erforderlich sind, sondern das Paket stattdessen einfach als eine normale Nutzlast bereitgestellt sein kann.
  • Bei Block 412 schreibt das Paket die Daten direkt an den zweiten Host, wie beispielsweise über RDMA. Alternativ können die Daten als eine HTTP-Transaktion oder über ein anderes Protokoll an den zweiten Host geschrieben werden.
  • Bei Block 498 ist das Verfahren beendet.
  • 5 ist ein Flussdiagramm eines Verfahrens 500 zum Empfangen eines verschlüsselten Pakets, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
  • Bei Block 504 empfängt das System das verschlüsselte Paket von dem ersten Host. Optional kann dieses verschlüsselte Paket Tags umfassen, die anzeigen, dass das Paket direkt an einen verschlüsselten Abschnitt des Speichers RDMAd werden soll, ohne einen Entschlüsselungsabschnitt eines Software-Protokollstapels zu durchlaufen. Alternativ könnte das Paket auch eine einfache Nutzlast innerhalb einer HTTP- oder anderen Transaktion sein und erfordert möglicherweise keine speziellen Tags.
  • Bei Block 508 schreibt die NIC die Daten direkt an den Speicher, wie beispielsweise innerhalb eines Enklavenabschnitts einer TEE, oder an eine Speicheradresse innerhalb eines Gesamtspeicherverschlüsselungssystems.
  • Bei Block 512 entschlüsselt die MKTME-Steuerung das Paket intern und arbeitet auf den Daten, ohne die Daten außerhalb der TEE freizulegen.
  • Bei Block 598 ist das Verfahren beendet.
  • 6 ist ein Blockdiagramm einer vertrauenswürdigen Ausführungsumgebung (TEE; Trusted Execution Environment), gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Bei dem Beispiel von 6 ist der Speicher 620 durch n-bits adressierbar, die bei der Adresse von 0 zu 2n - 1 reichen. Innerhalb des Speichers 620 ist ein OS 622, eine Enklave 640, ein Anwendungsstapel 628 und ein Anwendungscode 630.
  • Bei diesem Beispiel ist die Enklave 640 ein speziell bezeichneter Abschnitt des Speichers 620, der nicht betreten oder verlassen werden kann, abgesehen von durch spezielle Anweisungen, wie beispielsweise Intel® SGX oder Ähnliche. Enklave 640 ist als ein Beispiel einer sicheren Umgebung dargestellt, die in Verbindung mit einer Sichere-Verarbeitungs-Maschine (secure processing engine) 610 eine vertrauenswürdige Ausführungsumgebung (TEE) 600 auf einer Klienten-Vorrichtung bildet. Eine TEE 600 ist eine Kombination aus Hardware, Software und/oder Speicherzuordnung, die die Möglichkeit bereitstellt, Anweisungen sicher ohne Interferenz durch äußere Prozesse auf eine verifizierbare Weise auszuführen. Beispielhalber kann die TEE 600 die Speicherenklave 640 oder einen anderen geschützten Speicherbereich und eine Sichere-Verarbeitungs-Maschine 610 umfassen, die Hardware, Software und Anweisung für ein Zugreifen auf und ein Arbeiten auf der Enklave 640 umfasst. Nicht einschränkende Beispiele für Lösungen, die eine TEE sind oder die eine TEE bereitstellen können, umfassen Intel® SGX, ARM TrustZone, AMD Platform Security Processor, Kinibi, securiTEE, OP-TEE, TLK, T6, Open TEE, SierraTEE, CSE, VT-x, MemCore, Canary Island, Docker und Smack. Somit wird darauf hingewiesen, dass bei einem Beispiel eine Sichere-Verarbeitungs-Maschine 610 eine Benutzermodus-Anwendung sein kann, die innerhalb der Enklave 640 arbeitet. Die TEE 600 kann auch konzeptionell Prozessoranweisungen umfassen, die die Sichere-Verarbeitungs-Maschine 610 nutzen kann, um innerhalb der Enklave 640 zu arbeiten.
  • Die Sichere-Verarbeitungs-Maschine 610 kann eine vertrauenswürdige Rechenbasis (TCB; Trusted Computing Base) bereitstellen, die ein Satz von Programmen oder Recheneinheiten ist, denen vertraut wird, dass sie sicher sind. Konzeptuell kann es vorteilhaft sein, die TCB relativ klein zu halten, so dass es weniger Angriffsvektoren für Malware-Objekte oder für nachlässige Software gibt. Somit kann zum Beispiel das Betriebssystem 622 aus der TCB ausgeschlossen sein, zusätzlich zu dem regulären Anwendungsstapel 628 und dem Anwendungscode 630.
  • Bei bestimmten Systemen können Rechenvorrichtungen, die mit der Intel® Software Guard Extension (SGX™) oder äquivalenten Anweisungen ausgestattet sind, in der Lage sein, eine Enklave 640 bereitzustellen. Es wird jedoch darauf hingewiesen, dass viele andere Beispiele von TEEs verfügbar sind, und die TEE 600 nur als ein Beispiel dafür bereitgestellt ist. Andere sichere Umgebungen umfassen möglicherweise, als nicht einschränkendes Beispiel, eine virtuelle Maschine, eine Sandbox, ein Testbed, eine Testmaschine oder eine andere ähnliche Vorrichtung oder ein Verfahren zum Bereitstellen einer TEE 600.
  • Bei einem Beispiel stellt die Enklave 640 einen geschützten Speicherbereich bereit, auf den durch gewöhnliche Computerbefehle nicht zugegriffen werden kann oder der nicht dadurch manipuliert werden kann. Enklave 640 wird unter besonderer Bezugnahme auf eine Intel® SGX™ Enklave beispielhalber beschrieben, aber es ist beabsichtigt, dass die Enklave 640 irgendeinen sicheren Verarbeitungsbereich mit geeigneten Eigenschaften umfasst, unabhängig davon, ob er als „Enklave“ bezeichnet wird.
  • Ein Merkmal einer Enklave ist, dass sobald eine Enklavenregion 640 des Speichers 620 definiert ist, wie dargestellt ist, ein Programm-Pointer die Enklave 640 nicht betreten oder verlassen kann, ohne die Verwendung spezieller Enklavenanweisungen oder - Direktiven, wie beispielsweise dieser, die durch Intel® SGX-Architektur bereitgestellt sind. Zum Beispiel stellen SGX-Prozessoren die ENCLU[EENTER], ENCLU[ERESUME] und ENCLU[EEXIT] bereit. Diese sind die einzigen Anweisungen, die rechtmäßig die Enklave 640 betreten oder verlassen dürfen.
  • Somit, sobald die Enklave 640 in dem Speicher 620 definiert ist, kann ein Programm, das innerhalb der Enklave 640 ausführt, sicher verifiziert werden, dass es nicht außerhalb seiner Grenzen arbeitet. Dieses Sicherheitsmerkmal bedeutet, dass die Sichere-Verarbeitungs-Maschine 610 verifizierbar lokal zu der Enklave 640 ist. Wenn somit ein nicht vertrauenswürdiges Paket seinen Inhalt zum Rendern in der Enklave 640 bereitstellt, ist das Ergebnis des Renderings als sicher verifiziert.
  • Die Enklave 640 kann seine Ausgabe auch digital signieren, was ein überprüfbares Mittel darstellt, um sicherzustellen, dass der Inhalt nicht manipuliert oder modifiziert wurde, seit er von der Sichere-Verarbeitungs-Maschine 610 gerendert wurde. Eine durch die Enklave 640 bereitgestellte digitale Signatur ist einzigartig für die Enklave 640 und ist einzigartig für die Hardware der Vorrichtung, die die Enklave 640 hostet.
  • 7 ist ein Blockdiagramm eines Multi-Schlüssel-Gesamtspeicher-Verschlüsselungs (MKTME) -Systems 700, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. 7 stellt einen verschlüsselten Speicher 708 dar, der Gesamtspeicherverschlüsselung untersteht.
  • Speicher 708 umfasst eine Mehrzahl von Seiten, nämlich Seite 1 bis Seite n, und jede Speicherseite kann separat durch ihren eigenen Speicherschlüssel 712 verschlüsselt sein.
  • Die MKTME-Steuerung 704 kann eine Mehrzahl von Schlüsseln 712 bereitstellen, und jeder Schlüssel kann einem bestimmten Gast „gehören“, der eine bestimmte Speicherseite besitzt. Zum Beispiel, falls die VM 1 720 Seite 2 innerhalb des Speichers 708 „besitzt“, dann kann die VM 1 720 auch einen Verschlüsselungsschlüssel 712-3 besitzen, der verwendet werden kann, um Seite 2 verschlüsseln. Dies stellt sicher, dass die VM 1 720 effektiv die Inhalte von Seite 2 des Speichers 708 „besitzt“, und dass andere VMs oder Gäste innerhalb des gleichen Systems oder der gleichen Hardware-Plattform nicht die Inhalte von Seite 2 des Speichers 708 sehen können.
  • 8 ist ein Blockdiagramm einer Hardware-Plattform 800, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Bei diesem Ausführungsbeispiel umfasst die Hardware-Plattform 800 einen Prozessor 804, einen Speicher 806, eine Speicherverschlüsselungssteuerung 808, einen Protokollstapel 816, eine Netzwerkverschlüsselungssteuerung 824, eine RDMA-Steuerung 812 und eine NIC 820.
  • Wie in der vorliegenden Beschreibung verwendet, umfasst der Prozessor 804 irgendeine programmierbare Logikvorrichtung mit einem Anweisungssatz. Prozessoren können real oder virtualisiert sein, lokal oder entfernt oder in irgendeiner anderen Konfiguration. Ein Prozessor kann als nicht einschränkendes Beispiel einen Intel®-Prozessor umfassen (z.B. Xeon®, Core™, Pentium®, Atom®, Celeron®, x86 oder andere). Ein Prozessor kann auch konkurrierende Prozessoren umfassen, wie beispielsweise AMD (z.B. Kx-Serie x86 -Workalikes, oder Athlon, Opteron, oder Epyc-Serie Xeon-Workalikes), ARM-Prozessoren oder IBM PowerPC- und Power ISA-Prozessoren, als ein nicht einschränkendes Beispiel.
  • Bei Ausführungsbeispielen der vorliegenden Offenbarung ist Speicher als integrierte Computer-Hardware-Schaltungen bereitgestellt, die Informationen in einem digitalen Format speichern, entweder vorübergehend oder permanent, und die einen schnellen Abruf dieser Informationen mittels einer Hardware-Plattform, wie beispielsweise der Hardware-Plattform 800, ermöglichen.
  • Wie ferner in der vorliegenden Beschreibung offenbart ist, ist eine Netzwerkschnittstellenkarte (NIC) eine Computer-Hardwarekomponente, die es einem Computer ermöglicht, sich kommunikativ mit einem Netzwerk zu verbinden. Eine NIC kann sowohl in verdrahteten als auch in drahtlosen Rechenausführungsbeispielen verwendet werden und ist als eine Add-In-Karte bereitgestellt, die in einen Erweiterungs-Slot einer Computer-Hauptplatine passt. NICS sind, als ein nicht einschränkendes Beispiel, auch als Netzwerkschnittstellen-Steuerungskarten, Netzwerkadapter-Karten, Erweiterungskarten, LAN-Karten und Schaltungsplatinen bekannt.
  • Bei diesem Ausführungsbeispiel kann der Prozessor 804 spezielle Anweisungen umfassen, wie beispielsweise Intel® SGX oder ähnliche, die die Bereitstellung der Speicherverschlüsselungssteuerung 808 ermöglichen. Die Speicherverschlüsselungssteuerung 808 weist einen Verschlüsselungsschlüssel auf, der verwendet wird, um einen gesamten oder einen Abschnitt des Speichers 806 zu verschlüsseln. Die RDMA-Steuerung 812 kann ausgebildet sein, um Daten direkt zu oder von dem Speicher 806 zu DMA-en, wodurch ein gesamter oder ein Teil eines Protokollstapels 816 umgangen wird. Die NIC 820 kann eine physische Schnittstelle zu einem entfernten Host, oder alternativ eine virtuelle Schnittstelle zu einem virtuellen Netzwerk bereitstellen.
  • Ohne die Lehren der vorliegenden Beschreibung kann eine Transaktion zwischen der Hardware-Plattform 800 und einem entfernten Host eine Speicherverschlüsselungssteuerung 808 umfassen, die Daten entschlüsselt und die Daten durch den Protokollstapel 816 weiterleitet, der der Netzwerkverschlüsselungssteuerung 824 die Daten bereitstellt. Die Netzwerkverschlüsselungssteuerung 824 stellt dann die verschlüsselten Daten der NIC 820 bereit, und die Daten können an den entfernten Host gesendet werden.
  • Mit den Lehren der vorliegenden Beschreibung kann die Speicherverschlüsselungssteuerung 808 jedoch den gesamten oder einen Teil des Protokollstapels 816 umgehen und die RDMA-Steuerung 812 betreiben, um das verschlüsselte Paket direkt in den Speicher eines entfernten Hosts zu DMA-en, wodurch der Protokollstapel 816 und die Netzwerk-Verschlüsselungssteuerung 824 umgangen werden. Wie vorangehend erörtert wurde, stellt dies sowohl im Hinblick auf den Verbrauch von Rechenressourcen als auch im Hinblick auf den Verbrauch von Leistung Vorteile da, insbesondere innerhalb eines Rechenzentrums.
  • 9 ist ein Blockdiagramm ausgewählter Komponenten eines Rechenzentrums 900 mit Konnektivität zu einem Netzwerk eines Cloud-Dienstanbieters (CSP; cloud service provider) 902, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Ausführungsbeispiele des hierin offenbarten Rechenzentrums 900 können angepasst oder ausgebildet sein, um das Verfahren der transparenten Verschlüsselung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen. Der CSP 902 kann, als nicht einschränkendes Beispiel, ein traditionelles Unternehmensrechenzentrum, eine „private Cloud“ (private cloud) eines Unternehmens oder eine „öffentliche Cloud“ (public cloud) sein, das/die Dienste wie beispielsweise Infrastruktur als Dienst (IaaS; infrastructure as a service), Plattform als Dienst (PaaS; platform as a service) oder Software als Dienst (SaaS; Software as a service) bereitstellt. In einigen Fällen kann CSP 902 anstelle von oder zusätzlich zu Cloud-Diensten Hoch-Performance-Rechen (HPC; high performance computing) -Plattformen oder -Dienste bereitstellen. Tatsächlich können HPC-Cluster („Supercomputer“), obgleich nicht ausdrücklich identisch, strukturell ähnlich zu Cloud-Rechenzentren sein, und außer und abgesehen davon, wo dies ausdrücklich angegeben ist, können die Lehren dieser Beschreibung auf beide angewandt werden.
  • Der CSP 902 kann eine Anzahl von Arbeitslast-Clustern 918 bereitstellen, die Cluster aus individuellen Servern, Blade-Servern, Rack-befestigten Servern (rackmount servers) oder irgendeiner anderen geeigneten Server-Topologie sein können. Bei diesem darstellenden Beispiel sind zwei Arbeitslast-Cluster 918-1 und 918-2 gezeigt, wobei jedes Rack-befestigte Server 946 in einem Gehäuse 948 bereitstellt.
  • In dieser Darstellung sind die Arbeitslast-Cluster 918 als modulare Arbeitslast-Cluster gezeigt, die dem Rack-Einheit („U“) -Standard entsprechen, in dem ein Standard-Rack mit einer Breite von 19 Zoll so gebaut werden kann, dass es jeweils 42 Einheiten (42U) aufnimmt, wobei jede 1,75 Zoll hoch und ungefähr 36 Zoll tief ist. In diesem Fall können Rechenressourcen, wie beispielsweise Prozessoren, Speicher, Speicherung, Beschleuniger und Schalter, in einige mehrere Rack-Einheiten von eins bis 42 passen.
  • Andere Ausführungsbeispiele werden jedoch auch in Betracht gezogen. Zum Beispiel stellt 14 einen Ressourcenschlitten dar. Obwohl der Ressourcenschlitten gemäß Standard-Rack-Einheiten (z.B. einem 3-U-Ressourcenschlitten) gebaut sein kann, ist es nicht notwendig, das in einer sogenannten „Rack-Größenordnungs- (Rackscale)“ - Architektur zu tun. In diesem Fall können ganze vorbestückte Racks von Ressourcen als eine Einheit bereitgestellt sein, wobei das Rack eine Mehrzahl von Rechenschlitten hostet, die dem Rack-Einheit-Standard (insbesondere in der Höhe) entsprechen können oder auch nicht. In diesen Fällen können die Rechenschlitten als „Line Replaceable Units“ (LRUs) betrachtet werden. Falls eine Ressource ausfällt, kann der Schlitten, der diese Ressource hostet, gezogen werden und ein neuer Schlitten kann modular eingesetzt werden. Der ausgefallene Schlitten kann dann, abhängig von der Natur des Ausfalls, repariert oder weggeworfen werden. Rack-Größenordnungs-Gestaltung ist besonders nützlich in dem Fall von software definierter Infrastruktur (SDI; Software - defined infrastructure), wobei zusammengesetzte Knoten aus disaggregierten Ressourcen gebaut sein können. Große Ressourcenpools können bereitgestellt sein, und ein SDI-Orchestrator kann sie bei Bedarf zusammengesetzten Knoten zuordnen.
  • Jeder Server 946 kann ein eigenständiges Betriebssystem hosten und eine Serverfunktion bereitstellen, oder Server können virtualisiert sein, in welchem Fall sie unter der Kontrolle eines Virtuelle-Maschine-Managers (VMM), Hypervisors und/oder Orchestrators sein können, und eine oder mehrere virtuelle Maschinen, virtuelle Server oder virtuelle Anwendungen hosten können. Diese Server-Racks können in einem einzigen Rechenzentrum zusammen positioniert sein oder sie können in unterschiedlichen geografischen Rechenzentren untergebracht sein. Je nach den vertraglichen Vereinbarungen können einige Server 946 speziell für bestimmte Unternehmenskunden oder Anwender zweckgebunden sein, während andere gemeinschaftlich verwendet werden können.
  • Die verschiedenen Vorrichtungen in einem Rechenzentrum können über eine Schaltstruktur (switching fabric) 970 miteinander verbunden sein, die eine oder mehrere Hochgeschwindigkeits-Routing- und/oder Schaltvorrichtungen umfassen kann. Die Schaltstruktur 970 kann sowohl „Nord-Süd“-Verkehr (z.B. Verkehr zu und von dem Weitbereichsnetzwerk (WAN; wide area network), wie beispielsweise dem Internet) als auch „Ost-West“-Verkehr (z.B. Verkehr durch das Rechenzentrum) bereitstellen. Historisch gesehen machte Nord-Süd-Verkehr den Bulk des Netzwerkverkehrs aus, aber da Webdienste zunehmend komplizierter und verteilter werden, ist das Volumen von Ost-West-Verkehr gestiegen. In vielen Rechenzentren macht Ost-West-Verkehr gegenwärtig den Großteil des Verkehrs aus.
  • Ferner kann mit dem Ansteigen der Fähigkeit jedes Servers 946 das Verkehrsvolumen weiter ansteigen. Beispielsweise kann jeder Server 946 mehrere Prozessor-Slots bereitstellen, wobei jeder Slot einen Prozessor mit vier bis acht Kernen, zusammen mit ausreichend Speicher für die Kerne aufnimmt. Somit kann jeder Server eine Anzahl von VMs hosten, von denen jede ihren eigenen Verkehr erzeugt.
  • Um das große Verkehrsvolumen in einem Rechenzentrum zu bewältigen, kann eine sehr fähige Schaltstruktur 970 bereitgestellt sein. Die Schaltstruktur 970 ist in diesem Beispiel als ein „flaches“ Netzwerk dargestellt, wobei jeder Server 946 eine direkte Verbindung zu einem Oben-auf-dem-Rack (ToR; top-of-rack) -Schalter 920 (z.B. eine „Stern“-Konfiguration) aufweisen kann und jeder ToR-Schalter 920 mit einem Kern-Schalter 930 koppeln kann. Diese zweistufige flache Netzwerkarchitektur ist nur als ein darstellendes Beispiel gezeigt. Bei anderen Beispielen können andere Architekturen verwendet werden, wie beispielsweise dreistufige Stern- oder Leaf-Spine- (auch „fat tree“-Topologien genannt), die auf der „Clos“-Architektur basieren, Hub-and-Spoke-Topologien, Mesh-Topologien, Ring-Topologien, oder 3-D-Mesh-Topologien, als nicht einschränkendes Beispiel.
  • Die Struktur selbst kann durch irgendeine geeignete Verbindung bereitgestellt sein. Zum Beispiel kann jeder Server 946 eine Intel® Host Fabric Interface (HFI), eine NIC, einen Host Channel Adapter (HCA) oder eine andere Host-Schnittstelle aufweisen. Der Einfachheit und Einheitlichkeit halber können diese in dieser Beschreibung durchgängig als eine „Host Fabric Interface (Host-Struktur-Schnittstelle)“ (HFI) bezeichnet werden, die breit als eine Schnittstelle zum kommunikativen Koppeln des Hosts mit der Rechenzentrumsstruktur ausgelegt werden sollte. Die HFI kann mit einem oder mehreren Host-Prozessoren über eine Verbindung oder einen Bus, wie beispielsweise PCI, PCIe oder ähnlich, koppeln. In einigen Fällen kann dieser Verbindungs-Bus zusammen mit anderen „lokalen“ Verbindungen (z.B. Kern-zu-Kern (core-to-core) Ultra Path Interconnect) als Teil der Struktur 970 betrachtet werden. Bei anderen Ausführungsbeispielen kann die UPI (oder andere lokale kohärente Verbindung) als Teil der sicheren Domäne des Prozessorkomplexes und somit nicht als Teil der Struktur behandelt werden.
  • Die Verbindungstechnologie kann durch eine einzelne Verbindung oder eine Hybridverbindung bereitgestellt sein, wie beispielsweise wo PCIe Auf-Chip-Kommunikation bereitstellt, 1Gb- oder lOGb-Kupfer-Ethernet relativ kurze Verbindungen zu einem ToR-Schalter 920 bereitstellt, und optische Verkabelung relativ längere Verbindungen zu dem Kern-Schalter 930 bereitstellt. Verbindungstechnologien, die in dem Rechenzentrum zu finden sein können, umfassen als nicht einschränkendes Beispiel Intel® Omni-Path™ Architecture (OPA), TrueScale™, Ultra Path Interconnect (UPI) (früher bezeichnet als QPI oder KTI), FibreChannel, Ethernet, FibreChannel over Ethernet (FCoE), InfiniBand, PCI, PCIe, oder Glasfaser, um nur einige zu nennen. Die Struktur kann zwischenspeicher- und speicherkohärent, zwischenspeicher- und speicher-nicht-kohärent oder ein Hybrid aus kohärenten und nicht-kohärenten Verbindungen sein. Einige Verbindungen sind für bestimmte Zwecke oder Funktionen beliebter als andere, und ein Auswählen einer geeigneten Struktur für die sofortige Anwendung ist eine Übung gewöhnlichen Geschicks. Beispielsweise werden OPA und Infiniband gewöhnlich in Hoch-Performance-Rechen (HPC; high-performance computing) Anwendungen verwendet, während Ethernet und FibreChannel in Cloud-Rechenzentren beliebter sind. Aber diese Beispiele sind ausdrücklich nicht einschränkend, und mit der Weiterentwicklung von Rechenzentren entwickeln sich auch die Struktur-Technologien auf ähnliche Weise weiter.
  • Es wird darauf hingewiesen, dass, obwohl hierin hochwertige Strukturen, wie beispielsweise OPA, darstellend bereitgestellt sind, die Struktur 970 allgemeiner irgendeine geeignete Verbindung oder ein Bus für die bestimmte Anwendung sein kann. Dies könnte in einigen Fällen Legacy-Verbindungen wie lokale Netzwerke (LANs, local area networks), Token-Ring-Netzwerke, synchrone optische Netzwerke (SONET; synchronous optical networks), ATM-Netzwerke, drahtlose Netzwerke wie beispielsweise Wi-Fi und Bluetooth, „Plain Old Telephone System (einfacher alter Telefondienst)“ (POTS)-Verbindungen oder Ähnliches umfassen. Es wird auch ausdrücklich davon ausgegangen, dass in der Zukunft neue Netzwerktechnologien entstehen werden, die einige der hier aufgeführten ergänzen oder ersetzen, und dass irgendwelche solcher zukünftigen Netzwerktopologien und -technologien ein Teil der Struktur 970 sein oder einen solchen bilden können.
  • Bei bestimmten Ausführungsbeispielen kann die Struktur 970 Kommunikationsdienste auf verschiedenen „Schichten (Layers)“ bereitstellen, wie ursprünglich in dem siebenschichtigen Open Systems Interconnection (OSI) -Netzwerkmodell beschrieben wurde. In der heutigen Praxis wird das OSI-Modell nicht strikt befolgt. Im Allgemeinen werden die Schichten 1 und 2 oft als die „Ethernet“-Schicht bezeichnet (obwohl in einigen Rechenzentren oder Supercomputern Ethernet durch neuere Technologien ersetzt oder ergänzt sein kann). Die Schichten 3 und 4 werden oft als die Transmission Control Protocol/Internet Protocol (TCP/IP) -Layer bezeichnet (die weiter in TCP- und IP-Layers unterteilt sein kann). Die Schichten 5-7 können als die „Application Layer“ bezeichnet werden. Diese Schichtdefinitionen werden als ein nützliches Rahmenwerk offenbart, sollen aber nicht einschränkend sein.
  • 10 ist ein Blockdiagramm einer Endnutzer-Rechenvorrichtung 1000 gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Ausführungsbeispiele der hierin offenbarten Rechenvorrichtung 1000 können angepasst oder ausgebildet sein, um das Verfahren der transparenten Verschlüsselung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen.
  • Wie oben kann die Rechenvorrichtung 1000 je nach Eignung, Cloud-Dienste, Hoch-Performance-Rechnen, Telekommunikationsdienste, Unternehmensrechenzentrumsdienste oder irgendwelche anderen Rechendienste bereitstellen, die von einer Rechenvorrichtung 1000 profitieren.
  • Bei diesem Beispiel ist eine Struktur 1070 bereitgestellt, um verschiedene Aspekte der Rechenvorrichtung 1000 zu verbinden. Die Struktur 1070 kann die gleiche sein wie die Struktur 970 aus 9 oder sie kann eine unterschiedliche Struktur sein. Wie oben kann die Struktur 1070 durch irgendeine geeignete Verbindungstechnologie bereitgestellt sein. Bei diesem Beispiel wird Intel® Omni-Path™ als ein darstellendes und nicht einschränkendes Beispiel verwendet.
  • Wie dargestellt ist, umfasst die Rechenvorrichtung 1000 eine Anzahl von Logikelementen, die eine Mehrzahl von Knoten bilden. Es versteht sich, dass jeder Knoten durch einen physischen Server, eine Gruppe von Servern oder andere Hardware bereitgestellt sein kann. Jeder Server kann je nachdem, wie es für seine Anwendung geeignet ist, eine oder mehrere virtuelle Maschinen ausführen.
  • Der Knoten 0 1008 ist ein Verarbeitungsknoten, der einen Prozessorsockel 0 und einem Prozessorsockel 1 umfasst. Die Prozessoren können zum Beispiel Intel® Xeon™ Prozessoren mit einer Mehrzahl von Kernen sein, wie beispielsweise 4 oder 8 Kerne. Der Knoten 0 1008 kann ausgebildet sein, um Netzwerk- oder Arbeitslastfunktionen bereitzustellen, wie beispielsweise durch Hosten einer Mehrzahl von virtuellen Maschinen oder virtuellen Anwendungen.
  • Onboard-Kommunikation zwischen dem Prozessorsockel 0 und dem Prozessorsockel 1 kann durch einen Onboard-Uplink 1078 bereitgestellt sein. Dies kann eine sehr schnelle Verbindung von kurzer Länge zwischen den zwei Prozessorsockeln bereitstellen, sodass virtuelle Maschinen, die auf dem Knoten 0 1008 ausgeführt werden, miteinander mit sehr hohen Geschwindigkeiten kommunizieren können. Um diese Kommunikation zu ermöglichen, kann ein virtueller Schalter (vSwitch) auf Knoten 0 1008 bereitgestellt sein, der als Teil der Struktur 1070 betrachtet werden kann.
  • Der Knoten 0 1008 ist über eine HFI 1072 mit der Struktur 1070 verbunden. Die HFI 1072 kann sich mit einer Intel® Omni-Path™-Struktur verbinden. Bei einigen Beispielen kann eine Kommunikation mit der Struktur 1070 getunnelt sein, wie beispielsweise durch Bereitstellen von UPI-Tunnelung über Omni-Path™.
  • Da die Rechenvorrichtung 1000 viele Funktionen, die in früheren Generationen onboard bereitgestellt wurden, auf eine verteilte Weise bereitstellen kann, kann eine hochfähige HFI 1072 bereitgestellt sein. Die HFI 1072 kann mit Geschwindigkeiten von mehreren Gigabit pro Sekunde arbeiten und kann in einigen Fällen eng mit Knoten 0 1008 gekoppelt sein. Zum Beispiel ist die Logik für die HFI 1072 bei einigen Ausführungsbeispielen direkt mit den Prozessoren auf einem System-auf-einem-Chip integriert. Dies stellt Kommunikation mit sehr hoher Geschwindigkeit zwischen der HFI 1072 und den Prozessorsockeln bereit, ohne dass intermediäre Bus-Bauelemente benötigt werden, die zusätzliche Latenzzeit in die Struktur einbringen können. Dies soll jedoch nicht andeuten, dass Ausführungsbeispiele, bei denen HFI 1072 über einen traditionellen Bus bereitgestellt wird, ausgeschlossen werden sollen. Vielmehr wird ausdrücklich erwartet, dass bei einigen Beispielen HFI 1072 auf einem Bus bereitgestellt sein kann, wie beispielsweise einem PCIe-Bus, der eine serialisierte Version von PCI ist, was höhere Geschwindigkeiten als herkömmliche PCI bereitstellt. Durch die Rechenvorrichtung 1000 hindurch können verschiedene Knoten unterschiedliche Arten von HFIs 1072 bereitstellen, wie beispielsweise Onboard-HFIs und Plug-in-HFIs. Es wird auch darauf hingewiesen, dass bestimmte Blöcke in einem System-auf-einem-Chip als Geistiges-Eigentum (IP; intellectual property) -Blöcke bereitgestellt sein können, die als eine modulare Einheit in eine integrierte Schaltung „fallengelassen“ werden können. Somit kann die HFI 1072 in einigen Fällen aus einem solchen IP-Block hergeleitet werden.
  • Es wird darauf hingewiesen, dass gemäß der „Das-Netzwerk-ist-die-Vorrichtung“-Art, der Knoten 0 1008 möglicherweise begrenzten oder keinen Onboard-Speicher oder - Speicherung bereitstellt. Vielmehr kann sich der Knoten 0 1008 primär auf verteilte Dienste stützen, wie beispielsweise einen Speicherserver und einen vernetzten Speicherungsserver. Onboard stellt der Knoten 0 1008 möglicherweise nur ausreichend Speicher und Speicherung zur Verfügung, um die Vorrichtung zu bootstrappen und sie dazu zu bringen, mit der Struktur 1070 zu kommunizieren. Diese Art von verteilter Architektur ist aufgrund der sehr hohen Geschwindigkeiten von heutigen Rechenzentren möglich und kann vorteilhaft sein, weil keine Notwendigkeit besteht, jedem Knoten übermäßig viele Ressourcen bereitzustellen. Vielmehr kann ein großer Pool von Hochgeschwindigkeits- oder spezialisiertem Speicher dynamisch zwischen einer Anzahl von Knoten bereitgestellt sein, sodass jeder Knoten Zugriff auf einen großen Pool von Ressourcen hat, aber diese Ressourcen bleiben nicht ungenutzt, wenn dieser bestimmte Knoten sie nicht benötigt.
  • Bei diesem Beispiel stellen ein Knoten-1-Speicherserver 1004 und ein Knoten-2-Speicherungsserver 1010 den Betriebsspeicher und die Speicherungsfähigkeiten von Knoten 0 1008 bereit. Zum Beispiel kann ein Speicherserverknoten 1 1004 entfernten Direktspeicherzugriff (RDMA; remote direct memory access) bereitstellen, wobei der Knoten 0 1008 via die Struktur 1070 auf Speicherressourcen auf Knoten 1 1004 auf eine Direkt-Speicher-Zugriffs-Weise zugreifen kann, ähnlich dazu, wie er auf seinen eigenen Onboard-Speicher zugreifen würde. Der durch den Speicherserver 1004 bereitgestellte Speicher kann traditioneller Speicher sein, wie beispielsweise Double Data Rate Type 3 (DDR3), dynamischer Direktzugriffsspeicher (DRAM; dynamic random access memory), der flüchtig ist, oder kann ein exotischerer Speichertyp sein, wie beispielsweise ein dauerhafter schneller Speicher (PFM; persistent fast memory), wie beispielsweise Intel® 3D Crosspoint™ (3DXP), der mit DRAM-ähnlichen Geschwindigkeiten arbeitet, aber nicht flüchtig ist.
  • Ähnlich kann, anstatt dass für Knoten 0 1008 eine Onboard-Festplatte bereitgestellt wird, ein Speicherungsserver-Knoten 2 1010 bereitgestellt sein. Der Speicherungsserver 1010 kann ein vernetztes Plattenbündel (NBOD; networked bunch of disks), PFM, ein redundantes Array aus unabhängigen Platten (RAID; redundant array of independent disks), ein redundantes Array aus unabhängigen Knoten (RAIN; redundant array of independent nodes), Network Attached Storage (NAS), optische Speicherung, Bandlaufwerke oder andere nichtflüchtige Speicherlösungen bereitstellen.
  • Somit kann Knoten 0 1008 bei dem Ausführen seiner zweckgebundenen Funktion von dem Speicherserver 1004 auf einen Speicher zugreifen und Ergebnisse auf der Speicherung speichern, die durch den Speicherungsserver 1010 bereitgestellt ist. Jede dieser Vorrichtungen koppelt mit der Struktur 1070 über eine HFI 1072, was schnelle Kommunikation bereitstellt, die diese Technologien ermöglicht.
  • Zur weiteren Veranschaulichung ist auch der Knoten 3 1006 abgebildet. Knoten 3 1006 umfasst auch eine HFI 1072, zusammen mit zwei Prozessorsockeln, die intern durch einen Uplink verbunden sind. Im Gegensatz zu Knoten 0 1008 umfasst Knoten 3 1006 jedoch seinen eigenen Onboard-Speicher 1022 und -Speicherung 1050. Somit kann der Knoten 3 1006 ausgebildet sein, um seine Funktionen primär onboard auszuführen, und es ist möglicherweise nicht notwendig, dass er sich auf den Speicherserver 1004 und den Speicherungsserver 1010 verlässt. Unter geeigneten Umständen kann der Knoten 3 1006 jedoch seinen eigenen Onboard-Speicher 1022 und -Speicherung 1050 mit verteilten Ressourcen ergänzen, ähnlich wie Knoten 0 1008.
  • Die Rechenvorrichtung 1000 kann auch Beschleuniger 1030 umfassen. Diese können verschiedene beschleunigte Funktionen bereitstellen, umfassend Hardware- oder Ko-Prozessorbeschleunigung für Funktionen wie beispielsweise Paketverarbeitung, Verschlüsselung, Entschlüsselung, Komprimierung, Dekomprimierung, Netzwerksicherheit oder andere beschleunigte Funktionen in dem Rechenzentrum. Bei einigen Beispielen können die Beschleuniger 1030 Deep-Learning-Beschleuniger umfassen, die direkt an einen oder mehrere Kerne in Knoten, wie beispielsweise Knoten 0 1008 oder Knoten 3 1006, angebracht sein können. Beispiele für solche Beschleuniger können, als nicht einschränkendes Beispiel, Intel® QuickData Technology (QDT), Intel® QuickAssist Technology (QAT), Intel® Direct Cache Access (DCA), Intel® Extended Message Signaled Interrupt (MSI-X), Intel® Receive Side Coalescing (RSC) und andere Beschleunigungstechnologien umfassen.
  • Bei anderen Ausführungsbeispielen könnte ein Beschleuniger auch als eine anwendungsspezifische integrierte Schaltung (ASIC; application specific integrated circuit), FPGA, Ko-Prozessor, Graphikverarbeitungseinheit (GPU; graphics processing unit), digitaler Signalprozessor (DSP; digital signal processor) oder andere Verarbeitungseinheit bereitgestellt sein, die optional abgestimmt oder ausgebildet zum Bereitstellen der Beschleunigerfunktion sein kann.
  • Der Grundbaustein der verschiedenen hierin offenbarten Komponenten kann als „Logikelemente“ bezeichnet werden. Logikelemente können Hardware (umfassend, zum Beispiel, einen softwareprogrammierbaren Prozessor, eine ASIC oder ein FPGA), externe Hardware (digital, analog oder gemischtes Signal), Software, reziprokierende Software, Dienste, Treiber, Schnittstellen, Komponenten, Module, Algorithmen, Sensoren, Komponenten, Firmware, Mikrocode, programmierbare Logik oder Objekte, die koordinieren können, um eine logische Operation zu erreichen, umfassen. Ferner sind einige Logikelemente durch ein greifbares, nichtflüchtiges computerlesbares Medium bereitgestellt, das darauf gespeichert ausführbare Anweisungen für ein Anweisen eines Prozessors, eine bestimmte Aufgabe auszuführen, aufweist. Ein solches nichtflüchtiges Medium könnte zum Beispiel eine Festplatte, Festkörper (solid state) - Speicher oder -Platte, Nur-Lese-Speicher (ROM; read-only memory), PFM (z.B. Intel® 3D Crosspoint™), externe Speicherung, RAID, RAIN, NAS, optische Speicherung, Bandlaufwerk, Backup-System, Cloud-Speicherung oder irgendeinen Kombination der vorstehenden als nicht einschränkendes Beispiel umfassen. Ein solches Medium könnte auch Anweisungen aufweisen, die in ein FPGA programmiert sind oder in Hardware auf einer ASIC oder einem Prozessor kodiert sind.
  • 11 ist ein Blockdiagramm einer Netzwerkfunktionsvirtualisierungs (NFV; network function virtualization) -Infrastruktur 1100 gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Ausführungsbeispiele der hierin offenbarten NFV-Infrastruktur 1100 können angepasst oder ausgebildet sein, um das Verfahren der transparenten Verschlüsselung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen.
  • NFV ist ein Aspekt der Netzwerkvirtualisierung, der im Allgemeinen als unterschiedlich von einem softwaredefinierten Netzwerk (SDN; software-defined network) betrachtet wird, der aber dennoch mit diesem interagieren kann. Zum Beispiel können virtuelle Netzwerkfunktionen (VNFs) innerhalb der Datenebene einer SDN-Anwendung arbeiten. NFV war ursprünglich als ein Verfahren zum Bereitstellen reduzierter Kapitalausgaben (capex; capital expenditure) und Betriebsausgaben (Opex; operating expenses) für Telekommunikationsdienste vorgesehen. Ein Merkmal von NFV ist das Ersetzen von proprietären, Spezialzweck-Hardware-Anwendungen mit virtuellen Anwendungen, die auf gewöhnlicher, kommerzieller Standard (COTS; commercial off-the-shelf) -Hardware innerhalb einer virtualisierten Umgebung ausgeführt werden. Zusätzlich zu den Einsparungen bei Capex und Opex stellt NFV ein agileres und anpassungsfähigeres Netzwerk bereit. Wenn sich Netzwerklasten ändern, können VNFs bereitgestellt („aufgesponnen (spun up)“) oder entfernt („abgesponnen (spun down)“) werden, um die Netzwerkanforderungen zu erfüllen. Zum Beispiel können in Zeiten hoher Last mehr Lastausgleichs-VNFs aufgesponnen werden, um Verkehr zu mehr Arbeitslast-Servern (die selbst virtuelle Maschinen sein können) zu verteilen. In Zeiten, in denen mehr verdächtiger Verkehr erfahren wird, können zusätzliche Firewalls oder Deep Packet Inspection (DPI)-Anwendungen erforderlich sein.
  • Da NFV als ein Telekommunikationsmerkmal begann, konzentrieren sich viele NFV-Instanzen auf die Telekommunikation. NFV ist jedoch nicht auf Telekommunikationsdienste beschränkt. In einem weiteren Sinne umfasst NFV eine oder mehrere VNFs, die innerhalb einer Netzwerkfunktionsvirtualisierungsinfrastruktur (NFVI; network function virtualization infrastructure), wie beispielsweise NFVI 400, ausgeführt werden. Oft sind die VNFs Inline-Dienstfunktionen, die von Arbeitslast-Servern oder anderen Knoten getrennt sind. Diese VNFs können zusammen in eine Dienstkette verkettet werden, die durch ein virtuelles Teilnetzwerk definiert sein kann, und die eine serielle Reihe von Netzwerkdiensten umfassen kann, die Hinter-den-Kulissen-Arbeit, wie beispielsweise Sicherheit, Logging, Abrechnung und Ähnliches bereitstellen.
  • Wie das SDN ist die NFV eine Teilmenge der Netzwerkvirtualisierung. Anders ausgedrückt können sich bestimmte Abschnitte des Netzwerks auf das SDN verlassen, während andere Abschnitte (oder die gleichen Abschnitte) sich möglicherweise auf die NFV verlassen.
  • Bei dem Beispiel von 11 managt ein NFV-Orchestrator 1101 eine Anzahl der VNFs 1112, die auf einer NFVI 1100 ausgeführt werden. NFV erfordert nicht-triviales Ressourcenmanagement, wie beispielsweise Zuteilen eines sehr großen Pools von Rechenressourcen unter einer geeigneten Anzahl von Instanzen jeder VNF, ein Managen von Verbindungen zwischen VNFs, ein Bestimmen von wie viele Instanzen jeder VNF zuzuordnen sind, und ein Managen von Speicher, Speicherung und Netzwerkverbindungen. Dies kann komplexes Software-Management erfordern, was den NFV-Orchestrator 1101 zu einer wertvollen Systemressource macht. Es wird darauf hingewiesen, dass der NFV-Orchestrator 1101 eine browserbasierte oder grafische Konfigurationsschnittstelle bereitstellen kann, und bei einigen Ausführungsbeispielen mit SDN-Orchestrationsfunktionen integriert sein kann.
  • Es wird darauf hingewiesen, dass der NFV-Orchestrator 1101 selbst virtualisiert (anstatt eine Spezialzweck-Hardware-Anwendung) sein kann. Der NFV-Orchestrator 1101 kann innerhalb eines existierenden SDN-Systems integriert sein, wobei ein Operationsunterstützungssystem (OSS; operations support system) das SDN managt. Dieses kann mit Cloud-Ressourcen-Management-Systemen (z.B. OpenStack) interagieren, um NFV-Orchestration bereitzustellen. Eine NFVI 1100 kann die Hardware, Software und andere Infrastruktur umfassen, die es ermöglicht, das VNFs ausgeführt werden können. Dies kann eine Hardware-Plattform 1102 umfassen, auf der eine oder mehrere VMs 1104 ausgeführt werden können. Zum Beispiel führt die Hardware-Plattform 1102-1 bei diesem Beispiel die VMs 1104-1 und 1104-2 aus. Die Hardware-Plattform 1102-2 führt die VMs 1104-3 und 1104-4 aus. Jede Hardware-Plattform kann einen Hypervisor 1120, einen Virtuelle-Maschine-Manager (VMM) oder eine ähnliche Funktion aufweisen, die ein natives (Bare-Metal-) Betriebssystem umfassen kann und darauf ausgeführt werden kann, was minimal sein kann, sodass es sehr wenige Ressourcen verbraucht.
  • Hardware-Plattformen 1102 können ein Rack oder mehrere Racks von Blade- oder Slot-Servern (umfassend z.B. Prozessoren, Speicher und Speicherung), ein oder mehrere Rechenzentren, andere, über einen oder mehrere geografische Standorte verteilte Hardware-Ressourcen, Hardware-Schalter oder Netzwerkschnittstellen sein oder diese umfassen. Eine NFVI 1100 kann auch die Software-Architektur aufweisen, die es ermöglicht, dass Hypervisoren durch den NFV-Orchestrator 1101 ausgeführt und gemanagt werden können.
  • Auf der NFVI 1100 werden eine Anzahl von VMs 1104 ausgeführt, von denen jede bei diesem Beispiel eine VNF ist, die eine virtuelle Dienstanwendung bereitstellt. Jede VM 1104 bei diesem Beispiel weist eine Instanz des Datenebenenentwicklungskits (DPDK; Data Plane Development Kit) auf, ein virtuelles Betriebssystem 1108 und eine Anwendung, die die VNF 1112 bereitstellt.
  • Virtualisierte Netzwerkfunktionen könnten als nicht einschränkende und darstellende Beispiele Firewalls, Angriffserkennungssysteme (intrusion detection systems), Lastausgleicher, Router, Session Border Controller, DPI-Dienste, Netzwerkadressenübersetzungs (NAT; network address translation) -Module oder Call Security Association umfassen.
  • Die Darstellung von 11 zeigt, dass eine Anzahl von VNFs 1104 bereitgestellt wurde und innerhalb der NFVI 1100 existiert. Diese Figur stellt nicht notwendigerweise irgendeine Beziehung zwischen den VNFs und dem größeren Netzwerk dar, oder den Paketflüssen, die die NFVI 1100 einsetzen kann.
  • Die dargestellten DPDK-Instanzen 1116 stellen einen Satz hochoptimierter Bibliotheken für ein Kommunizieren über einen virtuellen Schalter (vSwitch) 1122 bereit. Wie die VMs 1104 wird auch der vSwitch 1122 durch einen Hypervisor 1120 bereitgestellt und zugeordnet. Der Hypervisor nutzt eine Netzwerkschnittstelle, um die Hardware-Plattform mit der Rechenzentrumsstruktur (z.B. einer HFI) zu verbinden. Diese HFI kann von allen VMs 1104, die auf der Hardware-Plattform 1102 ausgeführt werden, gemeinschaftlich verwendet werden. Somit kann ein vSwitch zugeordnet sein, um Verkehr zwischen VMs 1104 zu schalten. Der vSwitch kann ein reiner SoftwarevSwitch sein (z.B. ein vSwitch mit gemeinschaftlich verwendetem Speicher), der so optimiert sein kann, dass Daten nicht zwischen Speicherorten verschoben werden, sondern die Daten stattdessen an einem Ort verbleiben und Zeiger zwischen VMs 1104 übergeben werden können, um Daten, die sich zwischen Eintritts- und Austrittsports des vSwitch bewegen, zu simulieren. Der vSwitch kann auch einen Hardware-Treiber aufweisen (z.B. einen Hardware-Netzwerkschnittstellen-IP-Block, der Verkehr schaltet, aber der sich mit virtuellen Ports anstelle von physischen Ports verbindet). In dieser Darstellung ist ein verteilter vSwitch 1122 dargestellt, wobei der vSwitch 1122 von zwei oder mehr physischen Hardware-Plattformen 1102 gemeinschaftlich verwendet wird.
  • 12 ist ein Blockdiagramm von Komponenten einer Rechenplattform 1202A gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Ausführungsbeispiele der hierin offenbarten Rechenplattform 1202A können angepasst oder ausgebildet sein, um das Verfahren der transparenten Verschlüsselung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen.
  • Bei dem abgebildeten Ausführungsbeispiel sind die Hardware-Plattformen 1202A, 1202B und 1202C, zusammen mit der Rechenzentrumsmanagementplattform 1206 und einer Datenanalysemaschine 1204 über ein Netzwerk 1208 verbunden. Bei anderen Ausführungsbeispielen kann ein Computersystem irgendeine geeignete Anzahl von (d.h. eine oder mehrere) Plattformen, umfassend Hardware, Software, Firmware und andere Komponenten, aufweisen. Bei einigen Ausführungsbeispielen (z.B. wenn ein Computer-System nur eine einzige Plattform aufweist) kann alles oder ein Abschnitt der Systemmanagementplattform 1206 auf einer Plattform 1202 umfasst sein. Eine Plattform 1202 kann eine Plattformlogik 1210 mit einer oder mehreren zentralen Verarbeitungseinheiten (CPUs; central processing units) 1212, Speichern 1214 (die irgendeine Anzahl unterschiedlicher Module umfassen können), Chipsätzen 1216, Kommunikationsschnittstellen 1218 und irgendeiner anderen geeigneten Hardware und/oder Software zum Ausführen eines Hypervisors 1220 oder eines anderen Betriebssystems, das in der Lage ist, Arbeitslasten auszuführen, die den Anwendungen zugeordnet sind, die auf Plattform 1202 ausgeführt werden, aufweisen. Bei einigen Ausführungsbeispielen kann eine Plattform 1202 als eine Host-Plattform für ein oder mehrere Gastsysteme 1222 fungieren, die diese Anwendungen in Anspruch nehmen. Die Plattform 1202A kann irgendeine geeignete Rechenumgebung repräsentieren, wie beispielsweise eine Hoch-Performance-Rechenumgebung, ein Rechenzentrum, eine Kommunikationsdienstanbieterinfrastruktur (z.B. ein oder mehrere Abschnitte eines Evolved Packet Core), eine In-Speicher-Rechenumgebung, ein Rechensystem eines Fahrzeugs (z.B. eines Kraftfahrzeugs oder eines Flugzeugs) eine Internet-of-Things (Internet-der-Dinge) -Umgebung, ein industrielles Steuersystem, eine andere Rechenumgebung oder eine Kombination davon.
  • Bei verschiedenen Ausführungsbeispielen der vorliegenden Offenbarung werden akkumulierte Belastung und/oder Raten von Belastung, die von einer Mehrzahl von Hardwareressourcen (z.B. Kerne und Uncores (Nicht-Kerne)) akkumuliert werden, überwacht und Entitäten (z.B. Systemmanagementplattform 1206, Hypervisor 1220 oder ein anderes Betriebssystem) der Computerplattform 1202A können Hardwareressourcen der Plattformlogik 1210 zuordnen, um Arbeitslasten gemäß der Belastungsinformationen durchzuführen. Bei einigen Ausführungsbeispielen können Selbstdiagnosefähigkeiten mit der Belastungsüberwachung kombiniert werden, um den Zustand der Hardwareressourcen genauer zu bestimmen. Jede Plattform 1202 kann die Plattformlogik 1210 umfassen. Die Plattformlogik 1210 umfasst neben anderer Logik, die die Funktionalität der Plattform 1202 ermöglicht, eine oder mehrere CPUs 1212, Speicher 1214, einen oder mehrere Chipsätze 1216 und Kommunikationsschnittstellen 1228. Obwohl drei Plattformen dargestellt sind, kann die Computerplattform 1202A mit irgendeiner geeigneten Anzahl von Plattformen verbunden sein. Bei verschiedenen Ausführungsbeispielen kann sich eine Plattform 1202 auf einer Schaltungsplatine befinden, die in einem Gehäuse, Rack oder einer anderen geeigneten Struktur installiert ist, die mehrere Plattformen umfasst, die durch das Netzwerk 1208 (das z.B. ein Rack oder einen Backplane-Schalter umfassen kann) zusammengekoppelt sind.
  • Die CPUs 1212 können jeweils irgendeine geeignete Anzahl von Prozessorkernen und unterstützender Logik (z.B. Uncores) umfassen. Die Kerne können miteinander, mit dem Speicher 1214, mit zumindest einem Chipsatz 1216 und/oder mit einer Kommunikationsschnittstelle 1218 durch eine oder mehrere Steuerungen, die sich auf der CPU 1212 und/oder dem Chipsatz 1216 befinden, gekoppelt sein. Bei bestimmten Ausführungsbeispielen ist eine CPU 1212 innerhalb einer Buchse ausgebildet, die permanent oder entfernbar mit der Plattform 1202A gekoppelt ist. Obwohl vier CPUs gezeigt sind, kann eine Plattform 1202 irgendeine geeignete Anzahl von CPUs umfassen.
  • Der Speicher 1214 kann irgendeine Form von flüchtigem oder nichtflüchtigem Speicher umfassen, umfassend, aber nicht beschränkt auf magnetische Medien (z.B. ein oder mehrere Bandlaufwerke), optische Medien, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), Flash-Speicher, entfernbare Medien oder irgendeine oder irgendwelche anderen geeigneten lokalen oder entfernten Speicherkomponenten. Der Speicher 1214 kann von der Plattform 1202A für kurz-, mittel- und/oder langfristige Speicherung verwendet werden. Der Speicher 1214 kann irgendwelche geeigneten Daten oder Informationen speichern, die von der Plattformlogik 1210 verwendet werden, umfassend Software, die in einem computerlesbaren Medium eingebettet ist, und/oder kodierte Logik, die in Hardware eingebracht oder anderweitig gespeichert ist (z.B. Firmware). Der Speicher 1214 kann Daten speichern, die von Kernen von CPUs 1212 verwendet werden. Bei einigen Ausführungsbeispielen kann der Speicher 1214 auch Speicherung für Anweisungen aufweisen, die durch die Kerne der CPUs 1212 oder andere Verarbeitungselemente (z.B. Logik, die sich auf den Chipsätzen 1216 befindet) ausgeführt werden, um eine Funktionalität bereitzustellen, die der Managebarkeitsmaschine (manageability engine) 1226 oder anderen Komponenten der Plattformlogik 1210 zugeordnet ist. Eine Plattform 1202 kann auch einen oder mehrere Chipsätze 1216 umfassen, die irgendeine geeignete Logik aufweisen, um den Betrieb der CPUs 1212 zu unterstützen. Bei verschiedenen Ausführungsbeispielen kann der Chipsatz 1216 sich auf dem gleichen Die oder Package wie eine CPU 1212 oder auf einem oder mehreren unterschiedlichen Dies oder Packages befinden. Jeder Chipsatz kann irgendeine geeignete Anzahl von CPUs 1212 unterstützen. Ein Chipsatz 1216 kann auch eine oder mehrere Steuerungen umfassen, um andere Komponenten der Plattformlogik 1210 (z.B. Kommunikationsschnittstelle 1218 oder Speicher 1214) mit einer oder mehreren CPUs zu koppeln. Bei dem abgebildeten Ausführungsbeispiel umfasst jeder Chipsatz 1216 auch eine Managebarkeitsmaschine 1226. Die Managebarkeitsmaschine 1226 kann irgendeine geeignete Logik umfassen, um den Betrieb des Chipsatzes 1216 zu unterstützen. Bei einem bestimmten Ausführungsbeispiel ist eine Managebarkeitsmaschine 1226 (die auch als eine Innovationsmaschine bezeichnet werden kann) in der Lage, Echtzeit-Telemetriedaten von dem Chipsatz 1216, der einen oder der mehreren CPUs 1212 und/oder dem Speicher 1214, der durch den Chipsatz 1216 gemanagt wird, anderen Komponenten der Plattformlogik 1210 und/oder verschiedenen Verbindungen zwischen Komponenten der Plattformlogik 1210 zu sammeln. Bei verschiedenen Ausführungsbeispielen umfassen die gesammelten Telemetriedaten die hierin beschriebenen Belastungsinformationen.
  • Bei verschiedenen Ausführungsbeispielen arbeitet eine Managebarkeitsmaschine 1226 als ein bandexternes, asynchrones Rechenmittel, das in der Lage ist, mit den verschiedenen Elementen der Plattformlogik 1210 eine Schnittstelle zu bilden, um Telemetriedaten ohne oder mit minimaler Unterbrechung der laufenden Prozesse auf den CPUs 1212 zu sammeln. Zum Beispiel kann die Managebarkeitsmaschine 1226 ein zweckgebundenes Verarbeitungselement (z.B. einen Prozessor, eine Steuerung oder andere Logik) auf dem Chipsatz 1216 umfassen, der die Funktionalität der Managebarkeitsmaschine 1226 (z.B. durch Ausführen von Software-Anweisungen) bereitstellt, wodurch Verarbeitungszyklen der CPUs 1212 für Operationen, die den Arbeitslasten zugeordnet sind, die durch die Plattformlogik 1210 ausgeführt wurden, erhalten werden. Darüber hinaus kann die zweckgebundene Logik für die Managebarkeitsmaschine 1226 asynchron im Hinblick auf die CPUs 1212 arbeiten und kann zumindest einen Teil der Telemetriedaten erfassen, ohne die Belastung der CPUs zu erhöhen.
  • Eine Managebarkeitsmaschine 1226 kann die Telemetriedaten verarbeiten, die sie sammelt (spezifische Beispiele des Verarbeitens von Belastungsinformationen sind hierin bereitgestellt). Bei verschiedenen Ausführungsbeispielen berichtet die Managebarkeitsmaschine 1226 die Daten, die sie sammelt und/oder die Ergebnisse ihrer Verarbeitung an andere Elemente in dem Computer-System, wie beispielsweise einen oder mehrere Hypervisoren 1220 oder andere Betriebssysteme und/oder Systemmanagementsoftware (die auf irgendeiner geeigneten Logik wie beispielsweise der Systemmanagementplattform 1206 ausgeführt werden kann). Bei bestimmten Ausführungsbeispielen kann ein kritisches Ereignis, wie beispielsweise ein Kern, der einen übermäßigen Betrag an Belastung akkumuliert hat, vor dem normalen Intervall für ein Melden von Telemetriedaten gemeldet werden (z.B. eine Benachrichtigung kann sofort nach der Detektion gesendet werden).
  • Zusätzlich kann die Managebarkeitsmaschine 1226 einen programmierbaren Code umfassen, der konfigurierbar ist, um einzustellen, welche eine oder mehreren CPUs 1212 eines bestimmten Chipsatzes 1216 managen und/oder welche Telemetriedaten möglicherweise gesammelt werden.
  • Die Chipsätze 1216 weisen auch jeweils eine Kommunikationsschnittstelle 1228 auf. Die Kommunikationsschnittstelle 1228 kann für die Kommunikation von Signalisierung und/oder Daten zwischen dem Chipsatz 1216 und einer oder mehreren I/O-Vorrichtungen, einem oder mehreren Netzwerken 1208 und/oder einer oder mehreren mit dem Netzwerk 1208 gekoppelten Vorrichtungen (z.B. Systemmanagementplattform 1206) verwendet werden. Zum Beispiel kann die Kommunikationsschnittstelle 1228 verwendet werden, um Netzwerkverkehr, wie beispielsweise Datenpakete, zu senden und zu empfangen. Bei einem bestimmten Ausführungsbeispiel umfasst eine Kommunikationsschnittstelle 1228 eine oder mehrere physische Netzwerkschnittstellensteuerungen (NICs; network interface controllers), auch bekannt als Netzwerkschnittstellenkarten oder Netzwerkadapter. Eine NIC kann eine elektronische Schaltungsanordnung umfassen, um unter Verwendung irgendeines geeigneten Physical-Layer- und Data-Link-Layer-Standards, wie beispielsweise Ethernet (z.B. wie durch einen IEEE 802.3-Standard definiert), Fibre Channel, InfiniBand, Wi-Fi oder eines anderen geeigneten Standards zu kommunizieren. Eine NIC kann einen oder mehrere physische Ports aufweisen, die mit einem Kabel (z.B. einem Ethernet-Kabel) gekoppelt sein können. Eine NIC kann eine Kommunikation zwischen irgendeinem geeigneten Element des Chipsatzes 1216 (z.B. Managebarkeitsmaschine 1226 oder Schalter 1230) und einer anderen mit dem Netzwerk 1208 gekoppelten Vorrichtung ermöglichen. Bei verschiedenen Ausführungsbeispielen kann eine NIC mit dem Chipsatz integriert sein (d.h. kann auf der gleichen integrierten Schaltung oder Schaltungsplatine sein wie der Rest der Chipsatzlogik), oder kann auf einer unterschiedlichen integrierten Schaltung oder Schaltungsplatine sein, die elektromechanisch mit dem Chipsatz gekoppelt ist.
  • Bei bestimmten Ausführungsbeispielen können die Kommunikationsschnittstellen 1228 eine Kommunikation von Daten (z.B. zwischen der Managebarkeitsmaschine 1226 und der Rechenzentrumsmanagementplattform 1206) erlauben, die Management- und Überwachungsfunktionen zugeordnet sind, die durch die Managebarkeitsmaschine 1226 durchgeführt werden. Bei verschiedenen Ausführungsbeispielen kann die Managebarkeitsmaschine 1226 Elemente (z.B. eine oder mehrere NICs) der Kommunikationsschnittstellen 1228 verwenden, um die Telemetriedaten (z.B. der Systemmanagementplattform 1206) zu berichten, um die Verwendung von NICs der Kommunikationsschnittstelle 1218 für Operationen zu reservieren, die Arbeitslasten zugeordnet sind, die durch die Plattformlogik 1210 durchgeführt werden.
  • Die Schalter 1230 können mit verschiedenen Ports (z.B. bereitgestellt durch NICs) der Kommunikationsschnittstelle 1228 koppeln und können Daten zwischen diesen Ports und verschiedenen Komponenten des Chipsatzes 1216 (z.B. eine oder mehrere Peripheral-Component-Interconnect-Express (PCIe) -Spuren, die mit den CPUs 1212 gekoppelt sind) schalten. Die Schalter 1230 können ein physischer oder virtueller (d.h. Software-) Schalter sein.
  • Die Plattformlogik 1210 kann eine zusätzliche Kommunikationsschnittstelle 1218 aufweisen. Ähnlich wie die Kommunikationsschnittstellen 1228 können die Kommunikationsschnittstellen 1218 für die Kommunikation von Signalisierung und/oder Daten zwischen der Plattformlogik 1210 und einem oder mehreren Netzwerken 1208 und einer oder mehreren Vorrichtungen, die mit dem Netzwerk 1208 gekoppelt sind, verwendet werden. Zum Beispiel kann die Kommunikationsschnittstelle 1218 verwendet werden, um Netzwerkverkehr, wie beispielsweise Datenpakete, zu senden und zu empfangen. Bei einem bestimmten Ausführungsbeispiel weisen die Kommunikationsschnittstellen 1218 eine oder mehrere physische NICs auf. Diese NICs können eine Kommunikation zwischen irgendeinem geeigneten Element der Plattformlogik 1210 (z.B. CPUs 1212 oder Speicher 1214) und einer anderen Vorrichtung, die mit dem Netzwerk 1208 (z.B. Elemente anderer Plattformen oder entfernte Rechenvorrichtungen, die mit dem Netzwerk 1208 durch ein oder mehrere Netzwerke gekoppelt sind) gekoppelt ist, ermöglichen.
  • Die Plattformlogik 1210 kann irgendwelche geeigneten Arten von Arbeitslasten empfangen und ausführen. Eine Arbeitslast kann irgendeine Anfrage umfassen, eine oder mehrere Ressourcen der Plattformlogik 1210 zu nutzen, wie beispielsweise einen oder mehrere Kerne oder zugeordnete Logik. Zum Beispiel kann eine Arbeitslast eine Anfrage umfassen, eine Softwarekomponente zu instanziieren, wie beispielsweise einen I/O-Vorrichtungstreiber 1224 oder ein Gastsystem 1222; eine Anfrage ein Netzwerkpaket zu verarbeiten, das von einer virtuellen Maschine 1232 oder einer Vorrichtung, die extern zu der Plattform 1202A ist (wie beispielsweise ein Netzwerkknoten, der mit dem Netzwerk 1208 gekoppelt ist) empfangen wurde; eine Anfrage einen Prozess oder einen Thread auszuführen, der einem Gastsystem 1222, einer Anwendung, die auf der Plattform 1202A ausgeführt wird, einem Hypervisor 1220 oder einem anderes Betriebssystem, das auf der Plattform 1202A ausgeführt wird, zugeordnet ist; oder eine andere geeignete Verarbeitungsanforderung.
  • Eine virtuelle Maschine 1232 kann ein Computersystem mit eigener zweckgebundener Hardware emulieren. Eine virtuelle Maschine 1232 kann ein Gastbetriebssystem oben auf dem Hypervisor 1220 ausführen. Die Komponenten der Plattformlogik 1210 (z.B. CPUs 1212, Speicher 1214, Chipsatz 1216 und Kommunikationsschnittstelle 1218) können so virtualisiert sein, dass es für das Gastbetriebssystem so aussieht, als hätte die virtuelle Maschine 1232 ihre eigenen zweckgebundenen Komponenten.
  • Eine virtuelle Maschine 1232 kann eine virtualisierte NIC (vNIC) aufweisen, die von der virtuellen Maschine als ihre Netzwerkschnittstelle verwendet wird. Einer vNIC kann eine Media Access Control (MAC) -Adresse oder ein anderer Identifizierer zugewiesen sein, was es erlaubt, dass mehrere virtuelle Maschinen 1232 in einem Netzwerk individuell adressierbar sind.
  • Die VNF 1234 kann eine Software-Implementierung eines funktionalen Baublocks mit definierten Schnittstellen und Verhalten umfassen, die in einer virtualisierten Infrastruktur angewendet werden kann. Bei bestimmten Ausführungsbeispielen kann eine VNF 1234 eine oder mehrere virtuelle Maschinen 1232 umfassen, die gemeinsam spezifische Funktionalitäten bereitstellen (z.B. WAN-Optimierung, Terminierung von virtuellen privaten Netzwerken (VPN, virtual private network), Firewall-Operationen, Lastausgleichsoperationen, Sicherheitsfunktionen etc.). Eine VNF 1234, die auf der Plattformlogik 1210 ausgeführt wird, stellt möglicherweise die gleiche Funktionalität bereit, wie herkömmliche Netzwerkkomponenten, die durch dedizierte Hardware implementiert sind. Zum Beispiel kann eine VNF 1234 Komponenten umfassen, um irgendwelche geeigneten NFV-Arbeitslasten durchzuführen, wie beispielsweise virtualisierte entwickelte Paketkern (vEPC; virtualized evolved packet core) - Komponenten, Mobilitätsmanagement-Entitäten, Steuer- und Datenebenenkomponenten des 3rd Generation Partnership Project (3GPP), etc.
  • SFC 1236 ist eine Gruppe von VNFs 1234, die als eine Kette organisiert sind, um eine Reihe von Operationen durchzuführen, wie beispielsweise Netzwerk-Paketverarbeitungsoperationen. Ein Verketten von Dienstfunktionen kann die Fähigkeit bereitstellen, eine geordnete Liste von Netzwerkdiensten (z.B. Firewalls, Lastausgleicher) zu definieren, die in dem Netzwerk zusammengefügt sind, um eine Dienstkette zu erzeugen.
  • Ein Hypervisor 1220 (auch als eine Überwachungseinrichtung einer virtuellen Maschine bekannt) kann Logik zum Erzeugen und Ausführen von Gastsystemen 1222 umfassen. Der Hypervisor 1220 kann Gastbetriebssysteme anbieten, die durch virtuelle Maschinen mit einer virtuellen Betriebsplattform (d.h. es erscheint den virtuellen Maschinen so, als ob sie auf separaten physischen Knoten ausgeführt werden, wenn sie tatsächlich auf eine einzelne Hardwareplattform konsolidiert sind) ausgeführt werden, und die Ausführung der Gastbetriebssysteme durch die Plattformlogik 1210 managen. Die Dienste des Hypervisor 1220 können durch Virtualisieren in Software oder durch durch Hardware unterstützte Ressourcen, die minimalem Software-Eingriff erfordern, oder beides, bereitgestellt werden. Mehrere Instanzen einer Vielzahl von Gastbetriebssystemen können durch den Hypervisor 1220 verwaltet werden. Jede Plattform 1202 kann eine separate Instanziierung eines Hypervisor 1220 aufweisen.
  • Der Hypervisor 1220 kann ein nativer oder Bare-Metal-Hypervisor sein, der direkt auf der Plattformlogik 1210 ausgeführt wird, um die Plattformlogik zu steuern und die Gastbetriebssysteme zu managen. Alternativ kann der Hypervisor 1220 ein gehosteter Hypervisor sein, der auf einem Host-Betriebssystem ausgeführt wird und die Gastbetriebssysteme von dem Host-Betriebssystem abstrahiert. Der Hypervisor 1220 kann einen virtuellen Schalter 1238 umfassen, der virtuelle Schalt- und/oder Routing-Funktionen für virtuelle Maschinen der Gastsysteme 1222 bereitstellen kann. Der virtuelle Schalter 1238 kann eine logische Schaltstruktur umfassen, die die vNICs der virtuellen Maschinen 1232 miteinander koppelt und somit ein virtuelles Netzwerk erzeugt, durch das virtuelle Maschinen miteinander kommunizieren können.
  • Der virtuelle Schalter 1238 kann ein Softwareelement umfassen, das unter Verwendung von Komponenten der Plattformlogik 1210 ausgeführt wird. Bei verschiedenen Ausführungsbeispielen kann der Hypervisor 1220 in Kommunikation mit irgendeiner geeigneten Entität (z.B. einer SDN-Steuerung) sein, was den Hypervisor 1220 dazu veranlassen kann, die Parameter des virtuellen Schalters 1238 ansprechend auf ein Verändern der Bedingungen in Plattform 1202 (z.B. das Hinzufügen oder Löschen von virtuellen Maschinen 1232 oder die Identifikation von Optimierungen, die ausgeführt werden können, um die Performance der Plattform zu verbessern) neu zu konfigurieren.
  • Der Hypervisor 1220 kann auch eine Ressourcenzuordnungslogik 1244 umfassen, die eine Logik zum Bestimmen einer Zuordnung von Plattformressourcen basierend auf den Telemetriedaten (die Belastungsinformationen umfassen können) umfassen kann. Die Ressourcenzuordnungslogik 1244 kann auch Logik für ein Kommunizieren mit verschiedenen Komponenten der Plattformlogik 1210 -Entitäten der Plattform 1202A umfassen, um eine solche Optimierung zu implementieren, wie beispielsweise Komponenten der Plattformlogik 1210.
  • Irgendeine geeignete Logik kann eine oder mehrere dieser Optimierungsentscheidungen treffen. Zum Beispiel kann die Systemmanagementplattform 1206; die Ressourcenzuordnungslogik 1244 des Hypervisors 1220 oder eines anderen Betriebssystems; oder eine andere Logik der Computerplattform 1202A in der Lage sein, solche Entscheidungen zu treffen. Bei verschiedenen Ausführungsbeispielen kann die Systemmanagementplattform 1206 Telemetriedaten von mehreren Plattformen 1202 empfangen und die Platzierung von Arbeitslast auf diese managen. Die Systemmanagementplattform 1206 kann mit den Hypervisoren 1220 (z.B. auf eine bandexterne Art) oder anderen Betriebssystemen der verschiedenen Plattformen 1202 kommunizieren, um von der Systemmanagementplattform gesteuerte Arbeitslastplatzierungen zu implementieren.
  • Die Elemente der Plattformlogik 1210 können auf irgendeine geeignete Art und Weise miteinander gekoppelt sein. Beispielsweise kann ein Bus irgendwelche der Komponenten miteinander koppeln. Ein Bus kann irgendeine bekannte Verbindung umfassen, wie beispielsweise einen Multi-Drop-Bus, eine Mesh-Verbindung, eine Ringverbindung, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (z.B. zwischenspeicherkohärenten) Bus, eine geschichtete Protokollarchitektur, einen differentiellen Bus oder einen Gunning-Transceiver-Logik (GTL)-Bus.
  • Elemente der Computerplattform 1202A können auf irgendeine geeignete Weise miteinander gekoppelt sein, wie beispielsweise durch ein oder mehrere Netzwerke 1208. Ein Netzwerk 1208 kann irgendein geeignetes Netzwerk oder irgendeine Kombination aus einem oder mehreren Netzwerken sein, die unter Verwendung von einem oder mehreren geeigneten Netzwerkprotokollen arbeiten. Ein Netzwerk kann eine Reihe von Knoten, Punkten und verbundenen Kommunikationspfaden zum Empfangen und Senden von Paketen von Informationen darstellen, die sich durch ein Kommunikationssystem ausbreiten. Zum Beispiel kann ein Netzwerk eine oder mehrere Firewalls, Router, Schalter, Sicherheitsanwendungen, Anti-Virus-Server oder andere nützliche Netzwerkvorrichtungen umfassen.
  • 13 stellt ein Blockdiagramm einer zentralen Verarbeitungseinheit (CPU; central processing unit) 1312 gemäß bestimmten Ausführungsbeispielen dar. Ausführungsbeispiele der hierin offenbarten CPU 1312 können angepasst oder ausgebildet sein, um das Verfahren der transparenten Verschlüsselung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen.
  • Obwohl die CPU 1312 eine bestimmte Konfiguration abbildet, können die Kerne und andere Komponenten der CPU 1312 in irgendeiner geeigneten Weise angeordnet sein. Die CPU 1312 kann irgendeinen Prozessor oder eine Verarbeitungsvorrichtung umfassen, wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen DSP, einen Netzwerkprozessor, einen Anwendungsprozessor, einen Co-Prozessor, ein System-auf-einem-Chip (SoC; system-on-a-chip) oder eine andere Vorrichtung zum Ausführen von Code. Die CPU 1312 umfasst bei dem abgebildeten Ausführungsbeispiel vier Verarbeitungselemente (Kerne 1330 in dem abgebildeten Ausführungsbeispiel), die asymmetrische Verarbeitungselemente oder symmetrische Verarbeitungselemente umfassen können. Die CPU 1312 kann jedoch irgendeine Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • Beispiele für Hardware-Verarbeitungselemente umfassen: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen Logik-Prozessor, einen Hardware-Thread, einen Kern und/oder irgendein anderes Element, das in der Lage ist, einen Zustand für einen Prozessor zu halten, wie beispielsweise einen Ausführungszustand oder einen Architekturzustand. Anders ausgedrückt bezieht sich ein Verarbeitungselement bei einem Ausführungsbeispiel auf irgendeine Hardware, die in der Lage ist, unabhängig Code zugeordnet zu werden, wie beispielsweise einen Software-Thread, ein Betriebssystem, eine Anwendung, oder einen anderen Code. Ein physischer Prozessor (oder Prozessorbuchse) bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell irgendeine Anzahl anderer Verarbeitungselemente umfasst, wie beispielsweise Kerne oder Hardware-Threads.
  • Ein Kern kann sich auf Logik beziehen, die auf einer integrierten Schaltung positioniert ist, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand zumindest einigen dedizierten Ausführungsressourcen zugeordnet ist. Ein Hardware-Thread kann sich auf irgendeine Logik beziehen, die auf einer integrierten Schaltung positioniert ist, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände Zugriff auf Ausführungsressourcen gemeinschaftlich verwenden. Eine physische CPU kann irgendeine geeignete Anzahl von Kernen umfassen. Bei verschiedenen Ausführungsbeispielen können Kerne einen oder mehrere Out-of-Order (Außerhalb-der-Reihenfolge) -Prozessorkerne oder einen oder mehrere In-Order (In-Reihenfolge) -Prozessorkerne umfassen. Kerne können jedoch individuell aus irgendeiner Art von Kern ausgewählt werden, wie beispielsweise einem nativen Kern, einem software-gemanagten Kern, einem Kern, der angepasst ist, um eine native Anweisungssatz-Architektur (ISA; instruction set architecture) auszuführen, einen Kern, der angepasst ist, um eine übersetzte ISA auszuführen, einen mitentworfenen Kern, oder einen anderen bekannten Kern. In einer heterogenen Kernumgebung (d.h. asymmetrische Kerne) kann eine Form der Übersetzung, wie beispielsweise binäre Übersetzung, verwendet werden, um Code auf einem oder beiden Kernen einzuplanen oder auszuführen.
  • Bei dem abgebildeten Ausführungsbeispiel umfasst ein Kern 1330A einen Out-of-Order-Prozessor, der eine Front-End-Einheit 1370 aufweist, die verwendet wird, um eingehende Anweisungen abzurufen, verschiedene Verarbeitung (z.B. Zwischenspeichern, Dekodieren, Zweig-Vorhersagen, etc.) durchzuführen und Anweisungen/Operationen an eine Out-of-Order-Maschine (OOO engine; out-of-order engine) weiterzugeben. Die OOO-Maschine führt weitere Verarbeitung auf dekodierten Anweisungen aus.
  • Ein Front-End 1370 kann ein Dekodiermodul umfassen, das mit einer Abruf-Logik gekoppelt ist, um abgerufene Elemente zu dekodieren. Abrufslogik umfasst bei einem Ausführungsbeispiel individuelle Sequenzer, die Thread-Slots von Kernen 1330 zugeordnet sind. Gewöhnlich ist ein Kern 1330 einer ersten ISA zugeordnet, die Anweisungen definiert/spezifiziert, die auf dem Kern 1330 ausführbar sind. Oft umfassen Maschinen-Code-Anweisungen, die Teil der ersten ISA sind, einen Abschnitt der Anweisungen (bezeichnet als ein Opcode), der sich auf eine auszuführende Anweisung oder Operation bezieht/diese spezifiziert. Das Dekodiermodul kann eine Schaltungsanordnung umfassen, die diese Anweisungen von ihren Opcodes erkennt und die dekodierten Anweisungen in der Pipeline für eine Verarbeitung weitergibt, wie durch die erste ISA definiert. Dekodierer von Kernen 1330 erkennen bei einem Ausführungsbeispiel die gleiche ISA (oder eine Teilmenge davon). Alternativ kann in einer heterogenen Kernumgebung ein Dekodierer von einem oder mehreren Kernen (z.B. Kern 1330B) eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine individuelle ISA) erkennen.
  • Bei dem abgebildeten Ausführungsbeispiel umfasst die Out-of-Order-Maschine eine Zuordnungseinheit 1382, um dekodierte Anweisungen, die die Form von einer oder mehreren Mikroanweisungen oder uops aufweisen können, von der Front-End-Einheit 1370 zu empfangen, und sie geeigneten Ressourcen, wie beispielsweise Registern und so weiter, zuzuordnen. Als nächstes werden die Anweisungen einer Reservierungsstation 1384 bereitgestellt, die Ressourcen reserviert und sie für eine Ausführung auf einer einer Mehrzahl von Ausführungseinheiten 1386A-1386N einplant. Verschiedene Arten von Ausführungseinheiten können vorliegen, umfassend, zum Beispiel arithmetische Logikeinheiten (ALU; arithmetic logic units), Last- und Speichereinheiten, Vektorverarbeitungseinheiten (VPU; vector processing units), Fließkomma-Ausführungseinheiten, unter anderem. Ergebnisse von diesen unterschiedlichen Ausführungseinheiten sind einem Neuordnungspuffer (ROB; reorder buffer) 1388 bereitgestellt, der ungeordnete Ergebnisse nimmt und sie in die korrekte Programmreihenfolge zurückführt.
  • Bei dem abgebildeten Ausführungsbeispiel sind sowohl Front-End-Einheit 1370 als auch die Out-of-Order-Maschine 1380 mit unterschiedlichen Ebenen einer Speicherhierarchie gekoppelt. Speziell gezeigt ist ein Anweisungsebene-Zwischenspeicher 1372, der wiederum mit einem Mittlere-Ebene-Zwischenspeicher 1376 gekoppelt ist, der wiederum mit zumindest einem Letzte-Ebene-Zwischenspeicher 1395 gekoppelt ist. Bei einem Ausführungsbeispiel ist der Letzte-Ebene-Zwischenspeicher in einer Auf-Chip (manchmal als Uncore bezeichnet) -Einheit 1390 implementiert. Der Uncore 1390 kann mit dem Systemspeicher 1399 kommunizieren, der bei dem dargestellten Ausführungsbeispiel über eingebetteten DRAM (eDRAM; embedded DRAM) implementiert ist. Die verschiedenen Ausführungseinheiten 1386 innerhalb der OOO-Maschine 1380 sind in Kommunikation mit einem Erste-Ebene-Zwischenspeicher 1374, der auch in Kommunikation mit dem Mittlere-Ebene-Zwischenspeicher 1376 ist. Zusätzliche Kerne 1330B - 1330D können auch mit einem Letzte-Ebene-Zwischenspeicher 1395 gekoppelt sein.
  • Bei bestimmten Ausführungsbeispielen kann der Uncore in einem Spannungsbereich und/oder einem Frequenzbereich sein, der separat von den Spannungsbereichen und/oder Frequenzbereichen der Kerne ist. Das heißt, der Uncore 1390 kann durch eine Versorgungsspannung mit Leistung versorgt werden, die sich von den Versorgungsspannungen unterscheidet, die verwendet werden, um die Kerne mit Leistung zu versorgen, und/oder kann mit einer Frequenz arbeiten, die sich von den Betriebsfrequenzen der Kerne unterscheidet.
  • Die CPU 1312 kann auch eine Leistungssteuereinheit (PCU; power control unit) 1340 umfassen. Bei verschiedenen Ausführungsbeispielen kann die PCU 1340 die Versorgungsspannungen und die Betriebsfrequenzen, die an jeden der Kerne (auf einer pro-Kern-Basis) und an den Uncore angewendet werden, steuern. Die PCU 1340 kann auch einen Kern oder Uncore anweisen, in einen Leerlaufzustand (in dem keine Spannung und kein Takt geliefert sind) einzutreten, wenn sie keine Arbeitslast ausführen.
  • Bei verschiedenen Ausführungsbeispielen kann die PCU 1340 eine oder mehrere Belastungscharakteristika einer Hardware-Ressource, wie beispielsweise die Kerne und den Uncore, detektieren. Eine Belastungscharakteristik kann einen Hinweis auf einen Betrag der Belastung, die Hardwareressourcen auferlegt wird, aufweisen. Als Beispiele kann eine Belastungscharakteristik eine Spannung oder Frequenz, die an die Hardware-Ressource angelegt wird; ein Leistungspegel, ein Strompegel oder ein Spannungspegel, erfasst an der Hardware-Ressource; eine Temperatur, die an der Hardware-Ressource erfasst wird; oder eine andere geeignete Messung sein. Bei verschiedenen Ausführungsbeispielen können mehrere Messungen (z.B. an unterschiedlichen Orten) einer bestimmten Belastungscharakteristik durchgeführt werden, wenn die Belastungscharakteristik zu einer bestimmten Zeitinstanz erfasst wird. Bei verschiedenen Ausführungsbeispielen kann die PCU 1340 Belastungscharakteristika in irgendeinem geeigneten Intervall detektieren.
  • Bei verschiedenen Ausführungsbeispielen ist die PCU 1340 eine Komponente, die von den Kernen 1330 getrennt ist. Bei bestimmten Ausführungsbeispiel läuft die PCU 1340 mit einer Taktfrequenz, die sich von den Taktfrequenzen unterscheidet, die von den Kernen 1330 genutzt werden. Bei einigen Ausführungsbeispielen, bei denen die PCU ein Mikrocontroller ist, führt die PCU 1340 Anweisungen gemäß einer ISA aus, die sich von einer ISA unterscheidet, die von den Kernen 1330 verwendet wird.
  • Bei verschiedenen Ausführungsbeispielen kann die CPU 1312 auch einen nichtflüchtigen Speicher 1350 umfassen, um Belastungsinformationen (wie beispielsweise Belastungscharakteristika, inkrementelle Belastungswerte, akkumulierte Belastungswerte, Belastungs-Akkumulationsraten oder andere Belastungsinformationen) zu speichern, die Kernen 1330 oder Uncore 1390 zugeordnet sind, so dass, wenn Leistung verloren wird, die Belastungsinformationen erhalten bleiben.
  • 14 ist ein Blockdiagramm eines Rack-Größenordnungsentwurfs 1400, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Ausführungsbeispiele des hierin offenbarten RSD 1400 können angepasst oder ausgebildet sein, um das Verfahren der transparenten Verschlüsselung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen.
  • Bei diesem Beispiel umfasst der RSD 1400 ein einzelnes Rack 1404, um bestimmte Prinzipien des RSD darzustellen. Es versteht sich, dass der RSD 1400 viele solcher Racks umfassen kann, und dass die Racks nicht identisch zueinander sein müssen. In einigen Fällen kann ein Mehrzweck-Rack, wie beispielsweise Rack 1404, bereitgestellt sein, während bei anderen Beispielen Einzweck-Racks bereitgestellt sein können. Zum Beispiel kann ein Rack 1404 als ein sehr inklusives Rack betrachtet werden, das Ressourcen umfasst, die verwendet werden können, um eine große Anzahl von Verbundknoten zuzuordnen. Andererseits könnten andere Beispiele ein Rack umfassen, das nur für Rechenschlitten, Speicherungsschlitten, Speicherschlitten und andere Ressourcentypen dediziert ist, die zusammen in Verbundknoten integriert sein können. Somit sollte das Rack 1404 aus 14 als ein nichteinschränkendes Beispiel eines Racks zu verstehen sein, das in einem RSD 1400 verwendet werden kann.
  • Bei dem Beispiel von 14 kann das Rack 1404 ein Standard-Rack mit einer externen Breite von ungefähr 23,6 Zoll und einer Höhe von 78,74 Zoll sein. Im allgemeinen Sprachgebrauch wird dies als ein „42U-Rack“ bezeichnet. Das Rack 1404 muss jedoch nicht dem „Rack-Einheit (rack unit)“-Standard entsprechen. Stattdessen kann das Rack 1404 eine Anzahl von Gehäusen umfassen, die für ihre Zwecke optimiert sind.
  • Das Rack 1404 kann als monolithische Einheit mit einer Anzahl von Line Replaceable Units (LRUs) innerhalb jedes Gehäuses vermarktet und verkauft werden. Die LRUs in diesem Fall können Schlitten sein und können somit leicht ausgetauscht werden, wenn ein Austausch erforderlich ist.
  • Bei diesem Beispiel umfasst das Rack 1404 ein Leistungsgehäuse 1410, ein Speicherungsgehäuse 1416, drei Rechengehäuse (1424-1, 1424-2 und 1424-3), ein 3-D-Crosspoint™ (3DXP) -Gehäuse 1428, ein Beschleunigergehäuse 1430, und ein Netzwerken-Gehäuse 1434. Jedes Gehäuse kann einen oder mehrere LRU-Schlitten, die die geeigneten Ressourcen halten, umfassen. Zum Beispiel umfasst das Leistungsgehäuse 1410 eine Anzahl von heißen steckbaren Leistungsversorgungen, die dem Rack 1404 gemeinschaftlich verwendete Leistung bereitstellen können. Bei anderen Ausführungsbeispielen können einige Schlittengehäuse auch ihre eigenen Leistungsversorgungen umfassen, abhängig von den Bedürfnissen des Ausführungsbeispiels.
  • Das Speicherungsgehäuse 1416 umfasst eine Anzahl von Speicherungsschlitten 1418. Rechengehäuse 1424 weisen jeweils eine Anzahl von Rechenschlitten 1420 auf. Das 3DXP-Gehäuse 1428 kann eine Anzahl von 3DXP-Schlitten 1426 umfassen, die jeweils einen 3DXP-Speicherserver hosten. Und ein Beschleunigergehäuse 1430 kann eine Anzahl von Beschleunigern hosten, wie beispielsweise Intel® Quick Assist™ - Technologie (9T), FPGAs, ASICs oder andere Beschleuniger des gleichen oder unterschiedlicher Typen. Beschleuniger innerhalb des Beschleunigergehäuses 1430 können der gleiche Typ oder unterschiedliche Typen sein, gemäß den Bedürfnissen eines bestimmten Ausführungsbeispiels.
  • Im Laufe der Zeit können die verschiedenen LRUs innerhalb von Rack 1404 beschädigt oder veraltet werden oder können Funktionsfehler aufweisen. In diesem Fall können LRUs gezogen und durch kompatible LRUs ersetzt werden, und es somit dem Rack erlauben, den Betrieb in vollem Umfang fortzusetzen.
  • 15 ist ein Blockdiagramm eines Softwaredefinierte-Infrastruktur (SDI; sofwaredefined infrastructure) -Rechenzentrums 1500, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Ausführungsbeispiele des hierin offenbarten SDI-Rechenzentrums 1500 können angepasst oder ausgebildet sein, um das Verfahren der transparenten Verschlüsselung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen.
  • Bestimmte Anwendungen, die innerhalb des SDI-Rechenzentrums 1500 gehostet sind, können einen Satz von Ressourcen anwenden, um ihre designierten Zwecke zu erreichen, wie beispielsweise ein Verarbeiten von Datenbankabfragen, ein Bedienen (serving) von Webseiten oder ein Bereitstellen von Computerintelligenz.
  • Bestimmte Anwendungen neigen dazu, für eine bestimmte Teilmenge von Ressourcen empfindlich zu sein. Beispielsweise ist SAP HANA ein speicherinternes, spaltenorientiertes relationales Datenbanksystem. Eine SAP-HANA-Datenbank kann Prozessoren, Speicher, Platte und Struktur verwenden, wobei sie für Speicher und Prozessoren am empfindlichsten ist. Bei einem Ausführungsbeispiel umfasst der zusammengesetzte Knoten 1502 einen oder mehrere Kerne 1510, die die Verarbeitungsfunktion ausführen. Der Knoten 1502 kann auch Zwischenspeicher-Mittel 1506 umfassen, die Zugriff auf einen Hochgeschwindigkeits-Zwischenspeicher bereitstellen. Eine oder mehrere Anwendungen 1514 laufen auf Knoten 1502 und kommunizieren mit der SDI-Struktur über die HFI 1518. Ein dynamisches Bereitstellen von Ressourcen an den Knoten 1502 kann ein Auswählen eines Satzes von Ressourcen und ein Sicherstellen, dass die bereitgestellten Quantitäten und Qualitäten erforderlichen Performance-Indikatoren, wie beispielsweise Service Level Agreements (SLAs) und Quality of Service (QoS), entsprechen, umfassen. Ressourcenauswahl und Zuordnung für Anwendung 1514 kann durch einen Ressourcenmanager durchgeführt werden, der innerhalb der Orchestration und des Systemsoftware-Stapels 1522 implementiert sein kann. Als nicht einschränkendes Beispiel kann der Ressourcenmanager in der gesamten Beschreibung so behandelt werden, als ob er separat oder durch einen Orchestrator implementiert sein kann. Es wird darauf hingewiesen, dass viele unterschiedliche Konfigurationen möglich sind.
  • In einem SDI-Rechenzentrum können Anwendungen durch einen zusammengesetzten Knoten, wie beispielsweise Knoten 1502 ausgeführt werden, der dynamisch durch den SDI-Manager 1580 zugeordnet ist. Solche Knoten werden als zusammengesetzte Knoten bezeichnet, weil sie keine Knoten sind, bei denen alle der Ressourcen notwendigerweise zusammen positioniert sind. Stattdessen können sie Ressourcen umfassen, die in unterschiedlichen Teilen des Rechenzentrums verteilt, dynamisch zugeordnet und für die spezifische Anwendung 1514 virtualisiert sind.
  • Bei diesem Beispiel sind Speicherressourcen von drei Speicherschlitten von dem Speicher-Rack 1530 dem Knoten 1502 zugeordnet, Speicherungsressourcen von vier Speicherungsschlitten von dem Speicherungsrack 1534 sind zugeordnet und zusätzliche Ressourcen von fünf Ressourcenschlitten von dem Ressourcen-Rack 1536 sind der Anwendung 1514 zugeordnet, die auf dem zusammengesetzten Knoten 1502 läuft. Alle diese Ressourcen können einem bestimmten Rechenschlitten zugeordnet und aggregiert sein, um den zusammengesetzten Knoten zu erzeugen. Sobald der zusammengesetzte Knoten erzeugt ist, kann das Betriebssystem in Knoten 1502 gebootet werden, und die Anwendung kann unter Verwendung der aggregierten Ressourcen anfangen zu laufen, als ob sie physisch zusammen positionierte Ressourcen wären. Wie vorangehend beschrieben, kann die HFI 1518 bestimmte Schnittstellen bereitstellen, die es erlauben, dass diese Operation nahtlos im Hinblick auf den Knoten 1502 auftritt.
  • Als eine allgemeine These, je mehr Speicher- und Rechenressourcen einem Datenbankprozessor hinzugefügt werden, einen umso besseren Durchsatz kann er erreichen. Dies gilt jedoch nicht notwendigerweise für die Platte oder die Struktur. Ein Hinzufügen von mehr Platten- und Struktur-Bandbreite erhöht möglicherweise nicht notwendigerweise die Performance der SAP HANA-Datenbank über eine bestimmte Schwelle.
  • Das SDI-Rechenzentrum 1500 kann die Skalierung von Ressourcen angehen, indem es eine geeignete Menge von Offboard-Ressourcen auf der Anwendung abbildet, basierend auf den Anwendungsanforderungen, die durch einen Benutzer oder Netzwerkadministrator oder direkt durch die Anwendung selbst bereitgestellt werden.
  • Dies kann ein Zuordnen von Ressourcen aus verschiedenen Ressourcen-Racks umfassen, wie beispielsweise das Speicher-Rack 1530, das Speicherungs-Rack 1534 und das Ressourcen-Rack 1536.
  • Bei einem Beispiel umfasst die SDI-Steuerung 1580 auch eine Ressourcenschutz-Maschine (RPE; resource protection engine) 1582, die ausgebildet ist, um eine Erlaubnis für verschiedene Zielressourcen disaggregierten Rechenressourcen (DRCs;, disaggregated compute resources) zuzuweisen, denen erlaubt ist, auf sie zuzugreifen. Bei diesem Beispiel wird von den Ressourcen erwartet, dass sie durch eine HFI verstärkt werden, die die Zielressource bedient.
  • Bei bestimmten Ausführungsbeispielen können Elemente des SDI-Rechenzentrums 1500 angepasst oder ausgebildet sein, um mit dem disaggregierten Telemetriemodell der vorliegenden Beschreibung zu arbeiten.
  • 16 ist ein Blockdiagramm eines Rechenzentrums 1600, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Ausführungsbeispiele des hierin offenbarten Rechenzentrums 1600 können angepasst oder ausgebildet sein, um das Verfahren der transparenten Verschlüsselung gemäß den Lehren der vorliegenden Beschreibung bereitzustellen.
  • Bei dem Beispiel aus 16 sind zwei zusammengesetzte Knoten, nämlich ein zusammengesetzter Knoten 1634-2 und ein zusammengesetzter Knoten 1634-2 definiert.
  • Das Rechenzentrum 1600 umfasst eine Anzahl von Ressourcen, die disaggregiert sein können, und die als Teil eines zusammengesetzten Knotens definiert sein können, gemäß den Lehren der vorliegenden Beschreibung. Zum Beispiel umfassen die Rechenschlitten 1626-1 und 1626-2 jeweils einen Prozessor, jeweils 1630-1 und 1630-2. Jeder Prozessor 1630 kann eine entsprechende Anwendung, 1632-1 und 1632-2, hosten.
  • Es wird darauf hingewiesen, dass bei verschiedenen Ausführungsbeispielen Rechenschlitten 1626-1 auch lokalen Speicher, Speicherung, Beschleuniger oder andere Ressourcen für den Prozessor 1630-1 bereitstellen können. Gemäß den SDI-Lehren der vorliegenden Beschreibung können jedoch bestimmte Ressourcen, die den zusammengesetzten Knoten 1634 zugewiesen sind, auch disaggregiert oder physisch von den Prozessoren 1630 entfernt sein. Bei diesem Beispiel weist jeder zusammengesetzte Knoten 1634 ihm zugeordnet ein oder mehrere FPGAs 1612 auf, die sich in FPGA-Schlitten 1604 befinden. Diese FPGAs stellen möglicherweise eine beschleunigte Funktion bereit, die mit nahezu Hardware-Geschwindigkeiten arbeitet und durch einen Kernel 1606 bereitgestellt wird. Jedes FPGA 1612 hat möglicherweise auch Zugriff auf bestimmte lokale FPGA-Ressourcen 1608. Der zusammengesetzte Knoten 1634 hat möglicherweise auch Zugriff auf die Speicherungsblöcke 1624 innerhalb des Speicherungsschlittens 1622. Die Speicherung 1622 kann auch eine disaggregierte Ressource sein, die in einem Ressourcenschlitten bereitgestellt ist.
  • Es wird darauf hingewiesen, dass der Einfachheit und Klarheit der Darstellung halber nur ausgewählte Komponenten in dieser Darstellung offenbart sind. Andere disaggregierte Ressourcen können jedoch auch bereitgestellt sein. Zum Beispiel kann das Rechenzentrum 1600 einen Speicherserver umfassen, der disaggregierten Speicher bereitstellt, umfassend dauerhaften schnellen Speicher, auf den die zusammengesetzten Knoten 1634 über Remote Direct Memory Access (RDMA) zugreifen können.
  • Bei diesem Beispiel umfasst der zusammengesetzte Knoten 1634-1 den Prozessor 1630-1 auf dem Rechenschlitten 1626-1, der die Anwendung 1632-1 betreibt und auf die Struktur 1670 via eine HFI 1618-3 zugreift. Der zusammengesetzte Knoten 1634-1 umfasst auch das FPGA 1612-1, das auf dem FPGA-Schlitten 1604-1 betrieben wird, das den FPGA-Kernel 1606-1 betreibt und Zugriff auf die FPGA-Ressourcen 1608-1 hat. Der FPGA-Schlitten 1604-1 kann über die HFI 1618-1 auf die Struktur 1670 zugreifen. Es wird darauf hingewiesen, dass bei diesem Beispiel eine Mehrzahl von FPGAs auf dem FPGA-Schlitten 1604-1 miteinander über eine passive Backplane verbunden sein kann, und das eine einzelne HFI 1618-1 für den gesamten Schlitten bereitgestellt sein kann. Der zusammengesetzte Knoten 1634-1 kann auch Zugriff auf den Speicherungsblock 1624-1 auf dem Speicherungsschlitten 1622 haben. Innerhalb des FPGA-Schlittens 1604-2 hat das FPGA 1612-2 Zugriff auf eine gemeinschaftlich verwendete Ressource 1608-2, auf die durch zwei unterschiedliche Kernel, Kernel 1606-2 und Kernel 1606-3, zugegriffen wird. Kernel 1606-2 auf dem FPGA 1612-1 ist auch dem zusammengesetzten Knoten 1634-1 zugeordnet, während Kernel 1606-3 das nicht ist.
  • Der zusammengesetzte Knoten 1634-2 umfasst den Prozessor 1630-2, der die Anwendung 1632-2 auf dem Rechenschlitten 1626-2 betreibt. Der Rechenschlitten 1626-1 verbindet sich über eine HFI 1618-4 mit der Struktur 1670. Es wird darauf hingewiesen, dass der Rechenschlitten auch eine Anzahl von Prozessoren, Speicher und anderen lokalen Ressourcen umfassen kann, die kommunikativ miteinander über eine passive Backplane gekoppelt sein können und eine gemeinsame HFI 1618 gemeinschaftlich verwenden. Der zusammengesetzte Knoten 1634-1 umfasst auch Kernel 1606-3, der auf dem gemeinschaftlich verwendeten FPGA 1612-2 läuft und Zugriff auf die gemeinschaftlich verwendete Ressource 1608-2 hat. Der zusammengesetzte Knoten 1634-2 kann Daten auf einem Speicherungsblock 1624-2 speichern.
  • Die vorstehenden Darstellungsmerkmale von einem oder mehreren Ausführungsbeispielen des Gegenstands sind hierin offenbart. Diese Ausführungsbeispiele sind bereitgestellt, um es einem Durchschnittsfachmann (PHOSITA; person having ordinary skill in the art) zu ermöglichen, verschiedene Aspekte der vorliegenden Offenbarung besser zu verstehen. Auf bestimmte gut verständliche Begriffe, sowie zugrunde liegende Technologien und/oder Standards kann Bezug genommen werden, ohne dass sie detailliert beschrieben werden. Es wird davon ausgegangen, dass der PHOSITA über ausreichend Hintergrundwissen oder Informationen zu diesen Technologien und Standards verfügt oder darauf zugreifen kann, um die Lehren der vorliegenden Beschreibung auszuführen.
  • Der PHOSITA wird erkennen, dass er ohne weiteres die vorliegende Offenbarung als eine Basis zum Entwerfen oder Modifizieren anderer Prozesse, Strukturen oder Variationen zum Ausführen derselben Zwecke und/oder zum Erreichen derselben Vorteile der hierin eingeführten Ausführungsbeispiele verwenden kann. Der PHOSITA wird auch erkennen, dass solche äquivalenten Konstruktionen nicht von dem Wesen und Schutzbereich der vorliegenden Offenbarung abweichen und dass er verschiedene Änderungen, Ersetzungen und Abänderungen hierin ausführen kann, ohne von dem Wesen und Schutzbereich der vorliegenden Offenbarung abzuweichen.
  • In der vorangehenden Beschreibung sind bestimmte Aspekte einiger oder aller Ausführungsbeispiele detaillierter beschrieben als es für das Ausführen der beigefügten Ansprüche strengerweise notwendig ist. Diese Details sind nur als nicht einschränkendes Beispiel bereitgestellt, zum Zweck des Bereitstellens von Kontext und der Darstellung der offenbarten Ausführungsbeispiele. Solche Details sollten nicht als erforderlich verstanden werden und sollten nicht als Einschränkungen in die Ansprüche „hineingelesen“ werden. Der Ausdruck kann sich auf „ein Ausführungsbeispiel“ oder „Ausführungsbeispiele“ beziehen. Diese Ausdrücke und irgendwelche anderen Bezüge auf Ausführungsbeispiele sollten weit ausgelegt werden und sich auf irgendeine Kombination von einem oder mehreren Ausführungsbeispielen beziehen. Ferner könnten die mehreren Merkmale, die in einem bestimmten „Ausführungsbeispiel“ offenbart sind, ebenso über mehrere Ausführungsbeispiele verteilt sein. Falls zum Beispiel Merkmale 1 und 2 in „einem Ausführungsbeispiel“ offenbart sind, weist Ausführungsbeispiel A möglicherweise Merkmal 1 auf, aber nicht Merkmal 2, während Ausführungsbeispiel B möglicherweise Merkmal 2 aufweist, aber nicht Merkmal 1.
  • Diese Beschreibung kann Darstellungen in einem Blockdiagrammformat bereitstellen, wobei bestimmte Merkmale in separaten Blöcken offenbart sind. Diese sollten weit ausgelegt werden, um zu offenbaren, wie verschiedene Merkmale zusammenwirken, aber sie sollen nicht implizieren, dass diese Merkmale notwendigerweise in separater Hardware oder Software ausgeführt sein müssen. Ferner, wenn ein einzelner Block mehr als ein Merkmal in demselben Block offenbart, müssen diese Merkmale nicht notwendigerweise in der gleichen Hardware und/oder Software ausgeführt sein. Zum Beispiel könnte ein Computer„speicher‟ unter einigen Umständen zwischen mehreren Ebenen von Zwischenspeicher oder lokalem Speicher, Hauptspeicher, batteriegestütztem flüchtigem Speicher und verschiedenen Formen von dauerhaftem Speicher, wie beispielsweise Festplatte, Speicherungsserver, optische Platte, Bandlaufwerk oder Ähnlichem verteilt oder abgebildet werden. Bei bestimmten Ausführungsbeispielen können einige der Komponenten weggelassen oder konsolidiert sein. In einem allgemeinen Sinne können die in den Figuren abgebildeten Anordnungen in ihren Darstellungen logischer sein, wohingegen eine physische Architektur verschiedenen Permutationen, Kombinationen und/oder Hybride dieser Elemente umfassen kann. Unzählige mögliche Entwurfskonfigurationen können verwendet werden, um die hierin ausgeführten operativen Ziele zu erreichen. Dementsprechend weist die zugeordnete Infrastruktur eine Unmenge von Ersatzanordnungen, Entwurfsentscheidungen, Vorrichtungsmöglichkeiten, Hardwarekonfigurationen, Softwareimplementierungen und Equipmentoptionen auf.
  • Hierin kann auf ein computerlesbares Medium Bezug genommen werden, das ein greifbares und nicht-flüchtiges computerlesbares Medium sein kann. Nach Gebrauch in dieser Beschreibung und in den gesamten Ansprüchen sollte ein „computerlesbares Medium“ so verstanden werden, dass es ein oder mehrere computerlesbare Medien des gleichen oder unterschiedlicher Typen umfasst. Ein computerlesbares Medium kann als nicht einschränkendes Beispiel ein optisches Laufwerk (z.B. CD/DVD/Blu-Ray), eine Festplatte, ein Festkörper (solid-state) -Laufwerk, einen Flash-Speicher oder ein anderes nichtflüchtiges Medium umfassen. Ein computerlesbares Medium könnte auch ein Medium umfassen, wie beispielsweise einen Nur-Lese-Speicher (ROM), ein FPGA oder eine ASIC, ausgebildet zum Ausführen der gewünschten Anweisungen, gespeicherte Anweisungen zum Programmieren eines FPGA oder einer ASIC zum Ausführen der gewünschten Anweisungen, einen Geistiges-Eigentum (IP) -Block, der in Hardware in andere Schaltungen integriert werden kann, oder Anweisungen, die direkt in Hardware oder Mikrocode auf einem Prozessor kodiert sind, wie beispielsweise einem Mikroprozessor, einem DSP, einem Mikrocontroller, oder in irgendeine andere geeignete Komponente, Vorrichtung, Element oder Objekt, wo dies angemessen ist und auf besonderen Bedürfnissen basiert. Ein nichtflüchtiges Speicherungsmedium hierin soll ausdrücklich irgendeine nichtflüchtige Spezialzweck- oder programmierbare Hardware umfassen, die ausgebildet ist, um die offenbarten Operationen bereitzustellen, oder um zu verursachen, dass ein Prozessor die offenbarten Operationen durchführt.
  • In dieser gesamten Beschreibung und in den Ansprüchen können verschiedene Elemente „kommunikativ“, „elektrisch“, „mechanisch“ oder anderweitig miteinander „gekoppelt“ sein. Eine solche Kopplung kann eine direkte Punkt-zu-Punkt-Kopplung sein oder kann Zwischenvorrichtungen umfassen. Zum Beispiel können zwei Vorrichtungen über eine Steuerung, die die Kommunikation ermöglicht, kommunikativ miteinander gekoppelt sein. Vorrichtungen können über Zwischenvorrichtungen wie beispielsweise Signalverstärker, Spannungsteiler oder Puffer elektrisch miteinander gekoppelt sein. Mechanisch gekoppelte Vorrichtungen können indirekt mechanisch gekoppelt sein.
  • Irgendein hierin offenbartes „Modul“ oder eine „Maschine“ kann sich auf eine Software, einen Softwarestapel, eine Kombination aus Hardware, Firmware und/oder Software, eine Schaltung, die ausgebildet ist, um die Funktion der Maschine oder des Moduls auszuführen, oder irgendein computerlesbares Medium, wie vorangehend offenbart wurde, beziehen, oder kann diese umfassen. Solche Module oder Maschinen können unter geeigneten Umständen auf oder in Verbindung mit einer Hardware-Plattform bereitgestellt werden, was Hardware-Rechenressourcen, wie beispielsweise einen Prozessor, Speicher, Speicherung, Verbindungen, Netzwerke und Netzwerkschnittstellen, Beschleuniger oder andere geeignete Hardware umfassen kann. Eine solche Hardware-Plattform kann als eine einzelne monolithische Vorrichtung (z.B. in einem PC-Formfaktor) oder mit einigen oder einem Teil der Funktion verteilt (z.B. ein „zusammengesetzter Knoten“ in einem High-End-Rechenzentrum, wo Rechen-, Speicher-, Speicherungs- und andere Ressourcen dynamisch zugeordnet werden können und nicht lokal zueinander sein müssen) bereitgestellt sein.
  • Hierin können Flussdiagramme, Signalflussdiagramme oder andere Darstellungen offenbart sein, die zeigen, wie Operationen in einer bestimmten Reihenfolge ausgeführt werden. Sofern nicht ausdrücklich anders angegeben oder sofern nicht in einem bestimmten Kontext benötigt, soll die Reihenfolge nur als ein nicht einschränkendes Beispiel verstanden werden. Ferner, in Fällen wo gezeigt ist, dass eine Operation einer anderen folgt, können auch andere dazwischenliegende Operationen auftreten, die verwandt oder nicht verwandt sein können. Einige Operationen können auch gleichzeitig oder parallel durchgeführt werden. In Fällen, in denen eine Operation als „basierend auf‟ oder „gemäß“ einem anderen Gegenstand oder einer Operation bezeichnet ist, sollte dies so verstanden werden, dass es impliziert, dass die Operation zumindest teilweise auf dem anderen Gegenstand oder der Operation basiert oder zumindest teilweise gemäß diesem/dieser ist. Dies sollte nicht so ausgelegt werden, dass es impliziert, dass die Operation nur oder ausschließlich auf dem Gegenstand oder der Operation basiert oder nur oder ausschließlich gemäß diesem/dieser ist.
  • Alles oder ein Teil irgendeines hierin offenbarten Hardware-Elements kann ohne weiteres in einem System-auf-einem-Chip (SoC; system-on-a-chip) bereitgestellt sein, umfassend ein Zentrale-Verarbeitungseinheit (CPU) -Package. Ein SoC stellt eine integrierte Schaltung (IC) dar, die Komponenten eines Computers oder eines anderen elektronischen Systems in einen einzelnen Chip integriert. Somit können zum Beispiel Klienten-Vorrichtungen oder Server-Vorrichtungen bereitgestellt werden, vollständig oder teilweise in einem SoC. Das SoC kann digitale, analoge, gemischtes-Signal- und Radiofrequenzfunktionen umfassen, die alle auf einem einzigen Chipsubstrat bereitgestellt sein können. Andere Ausführungsbeispiele können ein Multi-Chip-Modul (MCM; multichip module) umfassen, wobei eine Mehrzahl von Chips innerhalb eines einzelnen elektronischen Package positioniert ist, und ausgebildet ist, um eng miteinander durch das elektronische Package zu interagieren.
  • Allgemein kann irgendeine passend ausgebildete Schaltung oder ein Prozessor irgendeine Art von Anweisungen ausführen, die den Daten zugeordnet sind, um die hierin detaillierten Operationen zu erreichen. Irgendein hierin offenbarter Prozessor könnte ein Element oder einen Artikel (zum Beispiel Daten) von einem Zustand oder Ding in einen anderen Zustand oder Ding transformieren. Ferner könnten die Informationen, die verfolgt, gesendet, empfangen oder in einem Prozessor gespeichert werden, in irgendeiner Datenbank, einem Register, einer Tabelle, einem Zwischenspeicher, einer Warteschlange, einer Steuerliste oder einer Speicherungsstruktur bereitgestellt sein, basierend auf den bestimmten Anforderungen und Implementierungen, von denen auf alle in irgendeinem geeigneten Zeitrahmen Bezug genommen werden kann. Jedes der hierin offenbarten Speicher- oder Speicherungselemente sollte je nach Eignung als innerhalb der breit gefächerten Begriffe „Speicher“ und „Speicherung“ eingeschlossen betrachtet werden.
  • Computerprogrammlogik, die alles oder einen Teil der hierin beschriebenen Funktionalität implementiert, ist in verschiedenen Formen ausgeführt, umfassend aber in keiner Weise beschränkt auf eine Quellcode-Form, eine computerausführbare Form, Maschinenanweisungen oder Mikrocode, programmierbare Hardware und verschiedene Zwischenformen (zum Beispiel Formen, die durch einen Assembler, Kompilierer, Verbinder oder Lokator erzeugt werden). Bei einem Beispiel umfasst der Quellcode eine Reihe von Computerprogrammanweisungen, die in verschiedenen Programmiersprachen implementiert sind, wie beispielsweise einem Objektcode, einer Assemblersprache oder einer höheren Sprache wie beispielsweise OpenCL, FORTRAN, C, C++, Java oder HTML, zur Verwendung mit verschiedenen Betriebssystemen oder Betriebsumgebungen, oder in Hardware-Beschreibungssprachen, wie beispielsweise Spiee, Verilog und VHDL. Der Quellcode kann verschiedene Datenstrukturen und Kommunikationsnachrichten definieren und verwenden. Der Quellcode kann in einer computerausführbaren Form vorliegen (z.B. über einen Interpreter), oder der Quellcode kann in eine computerausführbare Form umgewandelt werden (z.B. über einen Übersetzer, Assembler oder Kompilierer), oder in eine Zwischenform umgewandelt werden, wie beispielsweise einen Byte-Code. Gegebenenfalls können irgendwelche der Vorstehenden verwendet werden, um geeignete diskrete oder integrierte Schaltungen zu bauen oder zu beschreiben, ob sequentiell, kombinatorisch, Zustandsmaschinen oder anderweitig.
  • Bei einem beispielhaften Ausführungsbeispiel kann irgendeine Anzahl von elektrischen Schaltungen der FIGUREN auf einer Platine einer zugeordneten elektronischen Vorrichtung implementiert sein. Die Platine kann eine allgemeine Schaltungsplatine sein, die verschiedene Komponenten des internen elektronischen Systems der elektronischen Vorrichtung umfassen kann und ferner Verbinder für andere Peripherievorrichtungen bereitstellen kann. Irgendein geeigneter Prozessor und Speicher kann passend mit der Platine gekoppelt sein, basierend auf bestimmten Konfigurationsanforderungen, Verarbeitungsanforderungen und Rechenentwürfen. Es wird darauf hingewiesen, dass bei den zahlreichen hierin bereitgestellten Beispielen eine Interaktion in der Form von zwei, drei, vier oder mehreren elektrischen Komponenten beschrieben werden kann. Dies wurde jedoch nur der Klarheit und Beispielhaftigkeit halber getan. Es wird darauf hingewiesen, dass das System auf irgendeine geeignete Weise konsolidiert oder neu konfiguriert werden kann. Zusammen mit ähnlichen Entwurfsalternativen können irgendwelche der dargestellten Komponenten, Module und Elemente der FIGUREN in verschiedenen möglichen Konfigurationen kombiniert werden, von denen alle innerhalb des breiten Schutzbereichs dieser Beschreibung sind.
  • Zahlreiche andere Änderungen, Substitutionen, Variationen, Veränderungen und Modifikationen können von einen Fachmann verstanden werden, und es ist beabsichtigt, dass die vorliegende Offenbarung alle solchen Änderungen, Substitutionen, Variationen, Veränderungen und Modifikationen als in den Schutzbereich der beigefügten Ansprüche fallend umfasst. Um das Patent- und Markenamt der Vereinigten Staaten (USPTO; United States Patent and Trademark Office) und zusätzlich alle Leser irgendeines Patents, das zu dieser Anmeldung erteilt wird, bei dem Auslegen der hieran angefügten Ansprüche zu unterstützten, möchte die Anmelderin darauf hinweisen, dass die Anmelderin: (a) nicht beabsichtigt, dass irgendwelche der beigefügten Ansprüche sich auf Paragraph sechs (6) von 35 U.S.C., Abschnitt 112 (vor AIA) oder Paragraph (f) des gleichen Abschnitts (nach AIA), wie an dem Datum der Einreichung hiervon bestehend, berufen, es sei denn, die Worte „Mittel für“ oder „Schritte für“ werden in den jeweiligen Ansprüchen ausdrücklich verwendet; und (b) nicht beabsichtigt, durch irgendeine Aussage in der Beschreibung diese Offenbarung in irgendeiner Weise einzuschränken, die nicht explizit in den beigefügten Ansprüchen reflektiert ist.
  • BEISPIELHAFTE IMPLEMENTIERUNGEN
  • Die folgenden Beispiele sind der Darstellung halber bereitgestellt.
  • Beispiel 1 umfasst eine Rechenvorrichtung, umfassend: einen Speicher; eine Speicher-Verschlüsselungs-Steuerung, um zumindest eine Region des Speichers zu verschlüsseln; und eine Netzwerkschnittstelle, um die Rechenvorrichtung kommunikativ mit einem entfernten Host zu koppeln; wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um ein verschlüsseltes Paket, das über einen Verschlüsselungsschlüssel entschlüsselbar ist, direkt von dem Speicher zu dem entfernten Host zu senden, über die Netzwerkschnittstelle, unter Umgehung eines Netzwerkprotokollstapels.
  • Beispiel 2 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Vorrichtung ferner ausgebildet ist, um ein verschlüsseltes Paket direkt in den Speicher zu empfangen, über die Netzwerkschnittstelle, unter Umgehung des Netzwerkprotokollstapels.
  • Beispiel 3 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Netzwerkschnittstelle ausgebildet ist, um das verschlüsselte Paket direkt in einem Speicher des entfernten Hosts zu platzieren, über entfernten Direktspeicherzugriff (RDMA).
  • Beispiel 4 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei der Verschlüsselungsschlüssel ein gemeinschaftlich verwendeter Schlüssel zwischen der Vorrichtung und dem entfernten Host ist.
  • Beispiel 5 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Vorrichtung ausgebildet ist, um einen Schlüsselaustausch mit dem entfernten Host durchzuführen, um einen gemeinschaftlich verwendeten Schlüssel zu erzeugen.
  • Beispiel 6 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um den Schlüssel zu speichern.
  • Beispiel 7 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um der Vorrichtung eine vertrauenswürdige Ausführungsumgebung (TEE) bereitzustellen.
  • Beispiel 8 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um das verschlüsselte Paket zu signieren.
  • Beispiel 9 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um die Netzwerksteuerung anzuweisen, das verschlüsselte Paket unter Verwendung eines Klartext-Übertragungsprotokolls zu senden.
  • Beispiel 10 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Speicherverschlüsselungssteuerung eine Hardware-Speicherverschlüsselungssteuerung ist.
  • Beispiel 11 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Speicherverschlüsselungssteuerung eine Gesamtspeicherverschlüsselungssteuerung ist.
  • Beispiel 12 umfasst die Hardware-Vorrichtung gemäß Beispiel 1, wobei die Speicherverschlüsselungssteuerung eine Multi-Schlüssel-Gesamtspeicherverschlüsselungssteuerung ist.
  • Beispiel 13 umfasst eine Speichersteuerung, umfassend: eine Schnittstelle zum kommunikativen Koppeln mit und Verschlüsseln von zumindest einem Teil eines Speichers, gemäß einem Verschlüsselungsschlüssel; eine Schnittstelle, um kommunikativ mit einer Netzwerksteuerung zu koppeln; und nichtflüchtige Anweisungen, ein verschlüsseltes Paket direkt von einem verschlüsselten Abschnitt des Speichers an einen entfernten Host zu senden, über die Netzwerk-Steuerung ohne eine Zwischenverschlüsselung.
  • Beispiel 14 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die Speichersteuerung ferner ausgebildet ist, um ein verschlüsseltes Paket direkt in den Speicher zu empfangen, über die Netzwerksteuerung, ohne eine Zwischenverschlüsselung.
  • Beispiel 15 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die Speichersteuerung ausgebildet ist, um die Netzwerksteuerung anzuweisen, das verschlüsselte Paket direkt in einem Speicher des entfernten Host zu platzieren, über entfernten Direktspeicherzugriff (RDMA).
  • Beispiel 16 umfasst die Speichersteuerung gemäß Beispiel 13, wobei der Verschlüsselungsschlüssel ein gemeinschaftlich verwendeter Schlüssel mit dem entfernten Host ist.
  • Beispiel 17 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die Speichersteuerung ausgebildet ist, um zu verursachen, dass ein Schlüsselaustausch mit dem entfernten Host durchgeführt wird, um einen gemeinschaftlich verwendeten Schlüssel zu erzeugen.
  • Beispiel 18 umfasst die Speichersteuerung gemäß Beispiel 13, ferner umfassend einen verschlüsselten internen Speicher, um den Verschlüsselungsschlüssel zu speichern.
  • Beispiel 20 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die nichtflüchtigen Anweisungen ferner ausgebildet sind, um eine vertrauenswürdige Ausführungsumgebung (TEE) bereitzustellen.
  • Beispiel 21 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die nichtflüchtigen Anweisungen ferner ausgebildet sind, um das verschlüsselte Paket zu signieren.
  • Beispiel 22 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die nichtflüchtigen Anweisungen ferner ausgebildet sind, um die Netzwerksteuerung anzuweisen, das verschlüsselte Paket unter Verwendung eines Klartext-Übertragungsprotokolls zu senden.
  • Beispiel 23 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die Speicherverschlüsselungssteuerung eine Hardware-Speicherverschlüsselungssteuerung ist.
  • Beispiel 24 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die Speicherverschlüsselungssteuerung eine Gesamtspeicherverschlüsselungssteuerung ist.
  • Beispiel 25 umfasst die Speichersteuerung gemäß Beispiel 13, wobei die Speicherverschlüsselungssteuerung eine Multi-Schlüssel-Gesamtspeicherverschlüsselungssteuerung ist.
  • Beispiel 26 umfasst die Speichersteuerung gemäß einem der Beispiele 13-24, wobei die Speichersteuerung eine anwendungsspezifische integrierte Schaltung (ASIC) umfasst.
  • Beispiel 27 umfasst die Speichersteuerung gemäß einem der Beispiele 13-24, wobei die Speichersteuerung ein feldprogrammierbares Gate-Array (FPGA) umfasst.
  • Beispiel 28 umfasst die Speichersteuerung gemäß einem der Beispiele 13-24, wobei die Speichersteuerung einen Speicher und einen Prozessor umfasst.
  • Beispiel 29 umfasst die Speichersteuerung gemäß einem der Beispiele 13-24, wobei die Speichersteuerung einen Speicher und einen Co-Prozessor umfasst.
  • Beispiel 30 umfasst die Speichersteuerung gemäß einem der Beispiele 13-24, wobei die Speichersteuerung einen Geistiges-Eigentum (IP) -Block umfasst.
  • Beispiel 31 umfasst ein System-auf-einem-Chip (SoC), umfassend die Speichersteuerung gemäß einem der Beispiele 13 - 24.
  • Beispiel 32 umfasst ein Verfahren zum Bereitstellen verschlüsselter Kommunikation, umfassend: kommunikatives Koppeln mit und Verschlüsseln von zumindest einem Teils eines Speichers gemäß einem Verschlüsselungsschlüssel; kommunikatives Koppeln mit einer Netzwerksteuerung; und Senden eines verschlüsselten Pakets direkt von einem verschlüsselten Abschnitt des Speichers an einen entfernten Host, über die Netzwerk-Steuerung ohne eine Zwischenverschlüsselung.
  • Beispiel 33 umfasst das Verfahren gemäß Beispiel 31, ferner umfassend ein Empfangen eines verschlüsselten Pakets direkt in den Speicher, über die Netzwerksteuerung, ohne eine Zwischenverschlüsselung.
  • Beispiel 34 umfasst das Verfahren gemäß Beispiel 31, ferner umfassend ein Anweisen der Netzwerksteuerung, das verschlüsselte Paket direkt in einem Speicher des entfernten Host zu platzieren, über entfernten Direktspeicherzugriff (RDMA).
  • Beispiel 35 umfasst das Verfahren gemäß Beispiel 31, wobei der Verschlüsselungsschlüssel ein gemeinschaftlich verwendeter Schlüssel mit dem entfernten Host ist.
  • Beispiel 36 umfasst das Verfahren gemäß Beispiel 31, ferner umfassend ein Verursachen, dass ein Schlüsselaustausch mit dem entfernten Host durchgeführt wird, um einen gemeinschaftlich verwendeten Schlüssel zu erzeugen.
  • Beispiel 37 umfasst das Verfahren gemäß Beispiel 31, ferner umfassend ein Speichern des Verschlüsselungsschlüssels innerhalb eines verschlüsselten internen Speichers einer Speicherverschlüsselungssteuerung.
  • Beispiel 38 umfasst das Verfahren gemäß Beispiel 31, ferner umfassend ein Bereitstellen einer vertrauenswürdigen Ausführungsumgebung (TEE).
  • Beispiel 39 umfasst das Verfahren gemäß Beispiel 31, ferner umfassend ein Signieren des verschlüsselten Pakets.
  • Beispiel 40 umfasst das Verfahren gemäß Beispiel 31, ferner umfassend ein Senden des verschlüsselten Pakets unter Verwendung eines Klartext-Übertragungsprotokolls.
  • Beispiel 41 umfasst eine Vorrichtung, umfassend Mittel zum Durchführen des Verfahrens gemäß einem der Beispiele 31 - 39.
  • Beispiel 42 umfasst die Vorrichtung gemäß Beispiel 40, wobei die Mittel eine Speicherverschlüsselungssteuerung umfassen.
  • Beispiel 43 umfasst die Vorrichtung gemäß Beispiel 41, wobei die Speicherverschlüsselungssteuerung eine Hardware-Speicherverschlüsselungssteuerung ist.
  • Beispiel 44 umfasst die Vorrichtung gemäß Beispiel 41, wobei die Speicherverschlüsselungssteuerung eine Gesamtspeicherverschlüsselungssteuerung ist.
  • Beispiel 45 umfasst die Vorrichtung gemäß Beispiel 41, wobei die Speicherverschlüsselungssteuerung eine Multi-Schlüssel-Gesamtspeicherverschlüsselungssteuerung ist.
  • Beispiel 46 umfasst die Vorrichtung gemäß Beispiel 41, wobei die Speicherverschlüsselungssteuerung eine anwendungsspezifische integrierte Schaltung (ASIC) umfasst.
  • Beispiel 47 umfasst die Vorrichtung gemäß Beispiel 41, wobei die Speicherverschlüsselungssteuerung ein feldprogrammierbares Gate-Array (FPGA) umfasst.
  • Beispiel 48 umfasst die Vorrichtung gemäß Beispiel 41, wobei die Speicherverschlüsselungssteuerung einen Speicher und einen Prozessor aufweist.
  • Beispiel 49 umfasst die Vorrichtung gemäß Beispiel 41, wobei die Speicherverschlüsselungssteuerung einen Speicher und einen Co-Prozessor umfasst.
  • Beispiel 50 umfasst die Vorrichtung gemäß Beispiel 41, wobei die Speicherverschlüsselungssteuerung einen Geistiges-Eigentum (IP) -Block umfasst.
  • Beispiel 51 umfasst ein System-auf-einem-Chip (SoC), umfassend die Vorrichtung gemäß einem der Beispiele 40 - 49.

Claims (25)

  1. Eine Rechenvorrichtung, umfassend: einen Speicher; eine Speicher-Verschlüsselungs-Steuerung, um zumindest eine Region des Speichers zu verschlüsseln; und eine Netzwerkschnittstelle, um die Rechenvorrichtung kommunikativ mit einem entfernten Host zu koppeln; wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um ein verschlüsseltes Paket, das über einen Verschlüsselungsschlüssel entschlüsselbar ist, direkt von dem Speicher zu dem entfernten Host zu senden, über die Netzwerkschnittstelle, unter Umgehung eines Netzwerkprotokollstapels.
  2. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Vorrichtung ferner ausgebildet ist, um ein verschlüsseltes Paket direkt in den Speicher zu empfangen, über die Netzwerkschnittstelle, unter Umgehung des Netzwerkprotokollstapels.
  3. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Netzwerkschnittstelle ausgebildet ist, um das verschlüsselte Paket direkt in einem Speicher des entfernten Hosts zu platzieren, über entfernten Direktspeicherzugriff (RDMA).
  4. Die Rechenvorrichtung gemäß Anspruch 1, wobei der Verschlüsselungsschlüssel ein gemeinschaftlich verwendeter Schlüssel zwischen der Vorrichtung und dem entfernten Host ist.
  5. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Vorrichtung ausgebildet ist, um einen Schlüsselaustausch mit dem entfernten Host durchzuführen, um einen gemeinschaftlich verwendeten Schlüssel zu erzeugen.
  6. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um den Schlüssel zu speichern.
  7. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um der Vorrichtung eine vertrauenswürdige Ausführungsumgebung (TEE) bereitzustellen.
  8. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um das verschlüsselte Paket zu signieren.
  9. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Speicherverschlüsselungssteuerung ausgebildet ist, um die Netzwerksteuerung anzuweisen, das verschlüsselte Paket unter Verwendung eines Klartext-Übertragungsprotokolls zu senden.
  10. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Speicherverschlüsselungssteuerung eine Hardware-Speicherverschlüsselungssteuerung ist.
  11. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Speicherverschlüsselungssteuerung eine Gesamtspeicherverschlüsselungssteuerung ist.
  12. Die Hardware-Vorrichtung gemäß Anspruch 1, wobei die Speicherverschlüsselungssteuerung eine Multi-Schlüssel-Gesamtspeicherverschlüsselungssteuerung ist.
  13. Eine Speichersteuerung, umfassend: eine Schnittstelle zum kommunikativen Koppeln mit und Verschlüsseln von zumindest einem Teil eines Speichers, gemäß einem Verschlüsselungsschlüssel; eine Schnittstelle, um kommunikativ mit einer Netzwerksteuerung zu koppeln; und nichtflüchtige Anweisungen, ein verschlüsseltes Paket direkt von einem verschlüsselten Abschnitt des Speichers an einen entfernten Host zu senden, über die Netzwerk-Steuerung ohne eine Zwischenverschlüsselung.
  14. Die Speichersteuerung gemäß Anspruch 13, wobei die Speichersteuerung ferner ausgebildet ist, um ein verschlüsseltes Paket direkt in den Speicher zu empfangen, über die Netzwerksteuerung, ohne eine Zwischenverschlüsselung.
  15. Die Speichersteuerung gemäß Anspruch 13, wobei die Speichersteuerung ausgebildet ist, um die Netzwerksteuerung anzuweisen, das verschlüsselte Paket direkt in einem Speicher des entfernten Host zu platzieren, über entfernten Direktspeicherzugriff (RDMA).
  16. Die Speichersteuerung gemäß Anspruch 13, wobei der Verschlüsselungsschlüssel ein gemeinschaftlich verwendeter Schlüssel mit dem entfernten Host ist.
  17. Die Speichersteuerung gemäß einem der Ansprüche 13-16, wobei die Speichersteuerung eine anwendungsspezifische integrierte Schaltung (ASIC) umfasst.
  18. Die Speichersteuerung gemäß einem der Ansprüche 13-16, wobei die Speichersteuerung ein feldprogrammierbares Gate-Array (FPGA) umfasst.
  19. Das Speichersteuerung gemäß einem der Ansprüche 13-16, wobei die Speichersteuerung einen Speicher und einen Prozessor umfasst.
  20. Die Speichersteuerung gemäß einem der Ansprüche 13-16, wobei die Speichersteuerung einen Speicher und einen Co-Prozessor umfasst.
  21. Die Speichersteuerung gemäß einem der Ansprüche 13-16, wobei die Speichersteuerung einen Geistiges-Eigentum (IP) -Block umfasst.
  22. Ein System-auf-einem-Chip (SoC), umfassend die Speichersteuerung gemäß einem der Ansprüche 13 bis 16.
  23. Ein Verfahren zum Bereitstellen verschlüsselter Kommunikation, umfassend: kommunikatives Koppeln mit und Verschlüsseln von zumindest einem Teil eines Speichers, gemäß einem Verschlüsselungsschlüssel; kommunikatives Koppeln mit einer Netzwerksteuerung; und Senden eines verschlüsselten Pakets direkt von einem verschlüsselten Abschnitt des Speichers an einen entfernten Host, über die Netzwerk-Steuerung ohne eine Z wischenverschl üssel ung.
  24. Das Verfahren gemäß Anspruch 23, ferner umfassend ein Empfangen eines verschlüsselten Pakets direkt in den Speicher, über die Netzwerksteuerung, ohne eine Zwischenverschlüsselung.
  25. Das Verfahren gemäß Anspruch 23, ferner umfassend ein Anweisen der Netzwerksteuerung, das verschlüsselte Paket direkt in einem Speicher des entfernten Host zu platzieren, über entfernten Direktspeicherzugriff (RDMA).
DE112018007780.2T 2018-06-29 2018-06-29 Transparente verschlüsselung Pending DE112018007780T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/093764 WO2020000401A1 (en) 2018-06-29 2018-06-29 Transparent Encryption

Publications (1)

Publication Number Publication Date
DE112018007780T5 true DE112018007780T5 (de) 2021-04-01

Family

ID=68984566

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018007780.2T Pending DE112018007780T5 (de) 2018-06-29 2018-06-29 Transparente verschlüsselung

Country Status (3)

Country Link
US (2) US20210034546A1 (de)
DE (1) DE112018007780T5 (de)
WO (1) WO2020000401A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3915031B1 (de) * 2019-04-30 2023-09-27 Hewlett-Packard Development Company, L.P. Detektion der systemverwaltungsspeicherkohärenz
US20210312016A1 (en) * 2020-04-07 2021-10-07 Fortanix, Inc. Geo-fencing of an application for a secure cryptographic environment
US11537539B2 (en) 2020-10-19 2022-12-27 Softiron Limited Acceleration of data between a network and local I/O in a NUMA system
US20230094125A1 (en) * 2021-09-24 2023-03-30 Nvidia Corporation Implementing trusted executing environments across multiple processor devices
US11784990B2 (en) * 2021-12-13 2023-10-10 Intel Corporation Protecting data transfer between a secure application and networked devices

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3688830B2 (ja) * 1995-11-30 2005-08-31 株式会社東芝 パケット転送方法及びパケット処理装置
US8457913B2 (en) * 2008-06-04 2013-06-04 Oracle America, Inc. Computer system with integrated electromagnetic-interference detectors
US9009469B2 (en) * 2013-01-15 2015-04-14 Sap Se Systems and methods for securing data in a cloud computing environment using in-memory techniques and secret key encryption
US9158358B2 (en) * 2013-06-04 2015-10-13 Qualcomm Incorporated System and method for intelligent multimedia-based thermal power management in a portable computing device
JP2017512350A (ja) * 2014-03-08 2017-05-18 ディアマンティ インコーポレイテッド 集中型ネットワーキング及びストレージのための方法及びシステム
US9529403B2 (en) * 2014-08-22 2016-12-27 Apple Inc. Method and apparatus for providing telemetry for power management functions
US10303644B2 (en) * 2014-11-21 2019-05-28 International Business Machines Corporation Providing remote, reliant and high performance PCI express device in cloud computing environments
US10630505B2 (en) * 2015-01-28 2020-04-21 Umbra Technologies Ltd. System and method for a global virtual network
US9792229B2 (en) * 2015-03-27 2017-10-17 Intel Corporation Protecting a memory
US10509764B1 (en) * 2015-06-19 2019-12-17 Amazon Technologies, Inc. Flexible remote direct memory access
US9432183B1 (en) * 2015-12-08 2016-08-30 International Business Machines Corporation Encrypted data exchange between computer systems
US10860511B1 (en) * 2015-12-28 2020-12-08 Western Digital Technologies, Inc. Integrated network-attachable controller that interconnects a solid-state drive with a remote server computer
US11663297B2 (en) * 2016-03-10 2023-05-30 Dell Products, Lp System and method to assess anomalous behavior on an information handling system using indirect identifiers
CN107179878B (zh) * 2016-03-11 2021-03-19 伊姆西Ip控股有限责任公司 基于应用优化的数据存储的方法和装置
US11126565B2 (en) * 2016-06-27 2021-09-21 Hewlett Packard Enterprise Development Lp Encrypted memory access using page table attributes
WO2018035856A1 (zh) * 2016-08-26 2018-03-01 华为技术有限公司 实现硬件加速处理的方法、设备和系统
US10255202B2 (en) * 2016-09-30 2019-04-09 Intel Corporation Multi-tenant encryption for storage class memory
US11256431B1 (en) * 2017-01-13 2022-02-22 Lightbits Labs Ltd. Storage system having a field programmable gate array
US10657071B2 (en) * 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption

Also Published As

Publication number Publication date
US20210034546A1 (en) 2021-02-04
WO2020000401A1 (en) 2020-01-02
US20230185732A1 (en) 2023-06-15

Similar Documents

Publication Publication Date Title
US10997106B1 (en) Inter-smartNIC virtual-link for control and datapath connectivity
US11296956B2 (en) Oversubscribable resource allocation
DE112018007780T5 (de) Transparente verschlüsselung
US11080209B2 (en) Server systems and methods for decrypting data packets with computation modules insertable into servers that operate independent of server processors
DE102018210537A1 (de) Mikrodienste-Architektur
EP3353997B1 (de) Technologien zum abladen von datenobjektreplikation und dienstfunktionskettenverwaltung
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
Egi et al. Towards high performance virtual routers on commodity hardware
US20180357086A1 (en) Container virtual switching
US11431681B2 (en) Application aware TCP performance tuning on hardware accelerated TCP proxy services
CN108964959A (zh) 一种用于虚拟化平台的网卡直通系统及数据包监管方法
DE102018004111B4 (de) Rechensystem, computerlesbares medium und bedarfsskalierungsengine zum kommunikativen koppeln an einen prozessor
US11586575B2 (en) System decoder for training accelerators
DE112016004347T5 (de) Lokale und globale Datenzentrumsnetzoptimierungen in Echtzeit basierend auf Plattformtelemetriedaten
US11095755B2 (en) Telemetry for disaggregated resources
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
CA3169613C (en) Proxy service through hardware acceleration using an io device
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
CA3167334C (en) Zero packet loss upgrade of an io device
DE102018202432A1 (de) Strukturunterstützung für die Dienstgüte
DE112019000965T5 (de) Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
WO2021102257A1 (en) Resource fairness enforcement in shared io interfaces
Eran et al. Flexdriver: A network driver for your accelerator
US20220166718A1 (en) Systems and methods to prevent packet reordering when establishing a flow entry

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: INTEL CORPORATION, SANTA CLARA, US

Free format text: FORMER OWNER: INTEL CORPORATION (N.D.GES.D. STAATES DELAWARE), SANTA CLARA, CALIF., US

R082 Change of representative

Representative=s name: 2SPL PATENTANWAELTE PARTG MBB SCHULER SCHACHT , DE

R083 Amendment of/additions to inventor(s)