DE102021134581A1 - OUTSOURCING DECRYPTION OPERATIONS - Google Patents

OUTSOURCING DECRYPTION OPERATIONS Download PDF

Info

Publication number
DE102021134581A1
DE102021134581A1 DE102021134581.2A DE102021134581A DE102021134581A1 DE 102021134581 A1 DE102021134581 A1 DE 102021134581A1 DE 102021134581 A DE102021134581 A DE 102021134581A DE 102021134581 A1 DE102021134581 A1 DE 102021134581A1
Authority
DE
Germany
Prior art keywords
header
data
candidate
headers
tls
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
DE102021134581.2A
Other languages
German (de)
Inventor
Helia A. Naeimi
Sivakumar Munnangi
Namrata Limaye
Arvind Srinivasan
Gargi SAHA
Hung Nguyen
Daniel Daly
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 DE102021134581A1 publication Critical patent/DE102021134581A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/166IP fragmentation; TCP segmentation

Landscapes

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

Abstract

Hierin beschriebene Beispiele betreffen eine Transport Layer Security- (TLS) Auslagerungsmaschine, um: basierend auf der Detektion von verschlüsselten Daten, die einem zuvor detektierten Daten-Header nicht zugeordnet sind: nach einem oder mehreren Daten-Headern zu suchen; zumindest zwei Kandidaten-Daten-Header zur Validierung zu identifizieren, und basierend auf dem Empfang einer Anzeige, dass die zumindest zwei Kandidaten-Daten-Header gültig sind, eine Entschlüsselung von empfangenen Daten in einem oder mehreren Paketen auszuführen. Bei einigen Beispielen ist die TLS-Auslagerungsmaschine ausgebildet, um: basierend auf dem Empfang einer Anzeige, dass einer oder mehrere der zumindest zwei Kandidaten-Daten-Header kein gültiger Header sind, nach zwei oder mehr anderen Kandidaten-Daten-Headern zu suchen.Examples described herein relate to a Transport Layer Security (TLS) offloading engine to: based on detection of encrypted data unassociated with a previously detected data header: look for one or more data headers; identify at least two candidate data headers for validation; and based on receiving an indication that the at least two candidate data headers are valid, perform decryption of received data in one or more packets. In some examples, the TLS offload engine is configured to: search for two or more other candidate data headers based on receiving an indication that one or more of the at least two candidate data headers is not a valid header.

Description

ZUGEHÖRIGE ANMELDUNGENRELATED REGISTRATION

Die vorliegende Anmeldung beansprucht den Vorteil eines Prioritätsdatums der vorläufigen US-Patentanmeldung mit dem Aktenzeichen 63/130,669, eingereicht am 26. Dezember 2020, deren gesamte Offenbarung hierin durch Bezugnahme aufgenommen ist.The present application claims the benefit of a priority date of US Provisional Patent Application Serial No. 63/130,669 filed December 26, 2020, the entire disclosure of which is incorporated herein by reference.

BESCHREIBUNGDESCRIPTION

Verschiedene kryptographische Protokolle stellen eine Sicherheit der Kommunikation über ein Computernetzwerk bereit. Secure Sockets Layer (SSL) und Transport Layer Security (TLS) sind Beispiele für Sicherheitsprotokolle. TLS stellt eine Ende-zu-Ende-Verschlüsselung auf der Anwendungsschicht bereit, und TLS kann eine Anwendung-zu-Anwendung-Kommunikation sichem. So verwenden beispielsweise Anbieter von Cloud-Diensten (z. B. soziale Medien und Online-Zahlungsplattformen) TLS, um eine sichere Kommunikation bereitzustellen. TLS ist ein weit verbreitetes Protokoll, das zur Sicherung von Transmission Control Protocol- (TCP) Verbindungen im Internet verwendet wird. TLS ist auch ein Merkmal für HTTP/2, ein Internetprotokoll.Various cryptographic protocols provide security for communications over a computer network. Secure Sockets Layer (SSL) and Transport Layer Security (TLS) are examples of security protocols. TLS provides end-to-end encryption at the application layer, and TLS can secure application-to-application communication. For example, cloud service providers (such as social media and online payment platforms) use TLS to provide secure communications. TLS is a widely used protocol used to secure Transmission Control Protocol (TCP) connections on the Internet. TLS is also a feature of HTTP/2, an Internet protocol.

TLS ist zumindest in The Transport Layer Security (TLS) Protocol Version 1.3, RFC 8446 (August 2018) definiert. Daten, die unter Verwendung von TLS verschlüsselt werden, weisen eine beliebige Größe auf und laufen von einem Ende eines Sockets zu einem anderen Ende des Sockets. Ein TLS-Segment kann sich über einen Bruchteil eines TCP-Pakets oder über Hunderte (oder mehr) von TCP-Paketen erstrecken. TLS kann die Verschlüsselung von z. B. jeweils bis zu 16 KB an Daten unter Verwendung eines kryptographischen Schlüssels umfassen, auf den sich zwei Seiten der Verbindung einigen. Die zwei Seiten der Verbindung können periodisch vereinbaren, den Schlüssel zu aktualisieren, z. B. bei langlebigen Verbindungen (z. B. bei einem Audio- oder Videostrom). Kernel TLS (kTLS) ist eine Linux-Kernel-Implementierung eines TLS-Datenpfads, bei der die Verschlüsselungs- und Entschlüsselungsschritte in den Kernel verlagert werden und dem Verkehrsfluss in und aus einem Computer oder Server entsprechen.TLS is at least defined in The Transport Layer Security (TLS) Protocol Version 1.3, RFC 8446 (August 2018). Data encrypted using TLS is of any size and travels from one end of a socket to another end of the socket. A TLS segment can span a fraction of a TCP packet or hundreds (or more) of TCP packets. TLS can encrypt e.g. B. each contain up to 16 KB of data using a cryptographic key agreed on by two sides of the connection. The two sides of the connection may periodically agree to update the key, e.g. B. with long-lived connections (e.g. with an audio or video stream). Kernel TLS (kTLS) is a Linux kernel implementation of a TLS datapath in which the encryption and decryption steps are offloaded to the kernel and match the flow of traffic in and out of a computer or server.

TLS-Datenpfad-Auslagerung erlaubt es der Netzwerkschnittstellensteuerung (NIC; Network Interface Controller), die Verschlüsselung, Entschlüsselung und Authentifizierung gemäß dem Advanced Encryption Standard with Galois/Counter Mode (AES-GCM) zu beschleunigen. Das Ausführen von Verschlüsselung und Entschlüsselung in die Netzwerkschnittstelle kann Kerne und Speicherbandbreite für andere Verwendungen durch Anwendungen und Kunden-Arbeitslasten frei machen. CPU-basierte Kryptographie-Auslagerungen umfassen das Kopieren von Daten aus dem Speicher in eine Verschlüsselungs-/Entschlüsselungs-Maschine und das Kopieren verschlüsselter/entschlüsselter Daten zurück in den Speicher. In manchen Fällen können viele Kopieroperationen stattfinden, bei denen Verschlüsselungs- und Entschlüsselungsoperationen auf einzelnen, relativ kleinen Datensätzen (z. B. 16 KB) ausgeführt werden und Datensätze nacheinander ver- oder entschlüsselt werden. Anders ausgedrückt kann eine Auslagerungsmaschine (offload engine) zwar CPU-Zyklen einsparen, verglichen mit der Ausführung derselben Operation unter Verwendung von CPU-Anweisungen, doch werden CPU-Ressourcen (z. B. CPU-Zyklen, Cache-Platz und Speicherplatz) genutzt, um Daten zur Verwendung durch die Verschlüsselungs-/Entschlüsselungs-Maschine und nach der Verwendung durch die Verschlüsselungs-/Entschlüsselungs-Maschine zu migrieren.TLS data path offloading allows the network interface controller (NIC) to accelerate encryption, decryption, and authentication according to the Advanced Encryption Standard with Galois/Counter Mode (AES-GCM). Running encryption and decryption on the network interface can free up cores and memory bandwidth for other uses by applications and customer workloads. CPU-based cryptographic offloads involve copying data from memory to an encryption/decryption engine and copying encrypted/decrypted data back to memory. In some cases, many copy operations may take place, in which encryption and decryption operations are performed on a single, relatively small data set (e.g. 16 KB), and data sets are encrypted or decrypted one at a time. In other words, while an offload engine can save CPU cycles compared to performing the same operation using CPU instructions, CPU resources (such as CPU cycles, cache space, and disk space) are used when to migrate data for use by the encryption/decryption engine and after use by the encryption/decryption engine.

Die Entschlüsselung erfordert, dass Pakete der Reihenfolge nach ankommen, um in der Lage zu sein, TLS-Segmente zu entschlüsseln, doch wenn TCP-Pakete außerhalb der Reihenfolge an der NIC ankommen, muss der TLS-Beschleuniger in der Lage sein, eine Entschlüsselung der außerhalb der Reihenfolge empfangenen Paketinhalte auszuführen. Bei einigen Lösungen wartet der Beschleuniger, wenn ein Paket außerhalb der Reihenfolge (OOO; out of order) durch einen Entschlüsselungsbeschleuniger detektiert wird, auf die maximale TLS-Segmentgröße und beginnt dann mit der Suche nach dem TLS-Header (z. B. 5-Byte-Zeichen). Bei einer möglichen Übereinstimmung sendet der Entschlüsselungsbeschleuniger einen Zeiger an das Hostsystem und wartet auf die Bestätigung von der Anwendung oder dem Treiber, um mit der Entschlüsselung der Datensätze zu beginnen. Nach dem ersten OOO-Paket kann die Entschlüsselung von einem Software-Stack, der auf einer CPU läuft, ausgeführt werden. Eine solche Lösung erreicht jedoch möglicherweise aufgrund der Latenz zwischen der Zeit, zu der der Beschleuniger die Anforderung sendet, und der Zeit, zu der die Bestätigung vom Host empfangen wird, keine Header-Identifizierung, was dazu führt, dass keine weitere Kryptographie-Beschleunigung im Beschleuniger erfolgt.Decryption requires packets to arrive in order to be able to decrypt TLS segments, but when TCP packets arrive at the NIC out of order, the TLS accelerator must be able to decrypt the execute received packet contents out of order. In some solutions, when an out of order (OOO) packet is detected by a decryption accelerator, the accelerator waits for the maximum TLS segment size and then starts looking for the TLS header (e.g. 5- byte character). If there is a possible match, the decryption accelerator sends a pointer to the host system and waits for confirmation from the application or driver to start decrypting the records. After the first OOO packet, the decryption can be performed by a software stack running on a CPU. However, such a solution may not achieve header identification due to the latency between the time the accelerator sends the request and the time the acknowledgment is received from the host, resulting in no further cryptographic acceleration in the accelerator takes place.

Figurenlistecharacter list

  • 1 zeigt einen Fluss von Informationen von Anwendungsdaten zu dem Netzwerk. 1 shows a flow of information from application data to the network.
  • 2A stellt ein Beispielsystem dar. 2A represents an example system.
  • 2B stellt ein Beispielsystem dar. 2 B represents an example system.
  • 3A stellt eine beispielhafte Interaktion zwischen einem Betriebssystem und einem Vorrichtungstreiber dar. 3A Figure 1 shows an example interaction between an operating system and a device driver.
  • 3B stellt eine beispielhafte Interaktion zwischen einem Betriebssystem und einer Netzwerkschnittstelle dar. 3B represents an example interaction between an operating system and a network interface.
  • 4 stellt eine beispielhafte Art der Verarbeitung von Datensatz-Headem in verschiedenen Szenarien dar, in denen Pakete außerhalb der Reihenfolge empfangen werden. 4 Figure 1 shows an example way of processing record headers in various scenarios where packets are received out of order.
  • 5 stellt ein beispielhaftes Zustandsdiagramm dar. 5 represents an example state diagram.
  • 6A stellt ein Beispiel für eine Header-Jagd dar. 6A represents an example of a header hunt.
  • 6B stellt ein Beispiel für eine Identifizierung eines Kandidaten-Beginns eines Datensatz-Headers dar. 6B represents an example of a candidate start identification of a record header.
  • 7 stellt ein Beispiel für eine Header-Übereinstimmung dar, gefolgt von einer sequentiellen Analyse des empfangenen Datensatzes, um eine weitere Header-Übereinstimmung zu identifizieren. 7 Figure 1 shows an example of a header match, followed by sequential analysis of the received record to identify another header match.
  • 8 stellt einen beispielhaften Prozess dar, der durch ein Empfängersystem ausgeführt werden kann. 8th Figure 12 illustrates an example process that may be performed by a recipient system.
  • 9 stellt ein Beispielsystem dar. 9 represents an example system.
  • 10 stellt eine Beispielumgebung dar. 10 represents an example environment.

Detaillierte BeschreibungDetailed description

Bei einigen Ausführungsbeispielen kann die Kryptographie-Maschine basierend auf der Detektion eines ersten OOO-Pakets an einer TLS-Kryptographie-Maschine in einer NIC eine TLS-Header-Suche oder einen Jagdmodus ausführen, um zumindest einen zuvor nicht detektierten TLS-Header zu identifizieren. Bei einigen Beispielen können Hardwareressourcen, die für die Entschlüsselung verwendet werden sollten, dazu verwendet werden, einen TLS-Header-Zeichenfolgen-Abgleich (string matching) auszuführen, um einen neuen TLS-Header zu finden. Eine Protokollsoftware, die auf einer CPU oder XPU läuft, wird möglicherweise erst dann über die spekulative TLS-Frame-Detektion oder die TLS-Header-Jagd informiert, wenn die Kryptographie-Maschine ein hohes Vertrauen hat, dass ein zuvor nicht identifizierter TLS-Header von der Kryptographie-Maschine identifiziert wird. Die Vertrauensschwelle ist ein programmierbarer Parameter in der Kryptographie-Maschine und kann eine Anzahl von Kandidaten-Datensatz-Headern sein. Ansprechend darauf, dass die Protokollsoftware eine Bestätigung an die Kryptographie-Maschine bereitstellt, dass die Kandidaten-Datensatz-Header gültig sind, können die Kryptographie-Maschine und die Protokollsoftware hinsichtlich des empfangenen Beginns der TLS-Frames synchronisiert werden, und die Kryptographie-Maschine kann die Entschlüsselung von TLS-Frames wieder aufnehmen.In some embodiments, based on the detection of a first OOO packet at a TLS cryptographic engine in a NIC, the cryptographic engine may perform a TLS header lookup or hunt mode to identify at least one previously undetected TLS header. In some examples, hardware resources that should be used for decryption can be used to perform TLS header string matching to find a new TLS header. Protocol software running on a CPU or XPU may not be informed of speculative TLS frame detection or TLS header hunting until the cryptographic engine has high confidence that a previously unidentified TLS header identified by the cryptographic engine. The confidence threshold is a programmable parameter in the cryptographic engine and can be a number of candidate record headers. In response to the protocol software providing an acknowledgment to the cryptographic engine that the candidate record headers are valid, the cryptographic engine and the protocol software can be synchronized in terms of the received start of the TLS frames, and the cryptographic engine can resume decryption of TLS frames.

Während Beispiele im Hinblick auf TLS beschrieben werden, kann irgendeine Kryptographietechnik verwendet werden, wie z. B. irgendeine Transportschicht-Sicherheit oder irgendein Kryptographieschema wie SSL, Blockchain, Mozilla Network Security Services (NSS), DNS-based Authentication of Named Entities (DANE) (RFC 6698) usw.While examples are described in terms of TLS, any cryptographic technique may be used, such as Any transport layer security or cryptographic scheme like SSL, Blockchain, Mozilla Network Security Services (NSS), DNS-based Authentication of Named Entities (DANE) (RFC 6698), etc.

1 zeigt einen Fluss von Informationen von den Anwendungsdaten zu dem Netzwerk. Bei diesem Beispiel 100 kann eine Anwendung im Benutzerraum Anwendungsdaten für die Übertragung erzeugen oder empfangene Daten verarbeiten. In einem Kernel kann eine TLS-Schicht Anwendungsdaten in Datensätze segmentieren und die Datensätze verschlüsseln. Datensätze können unter Verwendung von AES-GCM verschlüsselt werden. Ein Datensatz-Header kann Felder eines header.type und header.len (Datensatzlänge) sowie Anwendungsdaten umfassen. Ein Datensatz kann mit einem Trailer enden, wobei ein Trailer TLS-Authentifizierungs-Felder umfassen kann. Basierend auf einer anwendbaren maximalen Segmentgröße (MSS; maximum segment size) kann ein verschlüsselter Datensatz für die Übertragung unter Verwendung eines oder mehrerer Pakete als Teil eines Stroms von Transmission Control Protocol- (TCP) kompatiblen Paketen bereitgestellt werden. Bei diesem Beispiel wird ein Datensatz über die Pakete p0, p1 und p2 übertragen und ein anderer Datensatz wird über die Pakete p2, p3, p4 und p5 übertragen. Es wird darauf hingewiesen, dass das Paket p2 Abschnitte von zwei Datensätzen umfasst. Während Beispiele im Hinblick auf TCP als Transportschicht bereitgestellt sind, kann irgendein Transportschichtprotokoll verwendet werden. 1 shows a flow of information from the application data to the network. In this example 100, an application in user space can generate application data for transmission or process received data. In a kernel, a TLS layer can segment application data into records and encrypt the records. Records can be encrypted using AES-GCM. A record header can include fields of a header.type and header.len (record length) as well as application data. A record can end with a trailer, where a trailer can include TLS authentication fields. Based on an applicable maximum segment size (MSS), an encrypted data set may be provided for transmission using one or more packets as part of a stream of Transmission Control Protocol (TCP) compliant packets. In this example, one record is transmitted over packets p0, p1, and p2, and another record is transmitted over packets p2, p3, p4, and p5. It will be pointed out s that the packet p2 comprises portions of two data sets. While examples are provided in terms of TCP as the transport layer, any transport layer protocol may be used.

2A stellt ein Beispielsystem dar. In diesem System kann die Rechenplattform 200 Daten für die Übertragung bereitstellen und die Verschlüsselung von Daten an die Netzwerkschnittstelle 240 auslagern und auch steuern, welche spezifischen Pakete, die Segmente von Daten umfassen, von der Netzwerkschnittstelle 240 übertragen (oder erneut übertragen) werden. Daten können zum Beispiel unter Verwendung von TLS oder einem anderen Verschlüsselungsschema verschlüsselt werden. Beispielsweise wird TLS Version 1.2 zumindest in RFC 5246 (2008) beschrieben und TLS Version 1.3 wird zumindest in RFC 8446 (2018) beschrieben, es können jedoch irgendwelche Versionen von TLS unterstützt werden. Die Netzwerkschnittstelle 240 kann eine Verschlüsselung von Daten oder eines Datensatzes von der Plattform 200 ausführen und verschlüsselte Daten für die Übertragung unter Verwendung eines oder mehrerer Pakete segmentieren. Im Falle eines Paketverlustes oder Nichtempfangs an einem Empfänger kann die Netzwerkschnittstelle 240 eine NACK (oder eine doppelte ACK) ausgeben und eine erneute Übertragung des nicht empfangenen Pakets veranlassen. Die Anwendung 210 kann die Datensatzgrenze pro Paket verfolgen (z. B. Pakete 0-3 Sendedatensatz0, Pakete 3-4 Sendedatensatz1; und so weiter), indem sie den Sendekontext 224 verwendet und bestimmt, welche(s) Paket(e) erneut gesendet werden soll(en). 2A Figure 1 illustrates an example system. In this system, computing platform 200 may provide data for transmission and offload encryption of data to network interface 240, and also control which specific packets comprising segments of data are transmitted (or retransmitted) from network interface 240 ) will. For example, data can be encrypted using TLS or another encryption scheme. For example, TLS version 1.2 is described in at least RFC 5246 (2008) and TLS version 1.3 is described in at least RFC 8446 (2018), however any versions of TLS may be supported. Network interface 240 may perform encryption of data or a set of data from platform 200 and segment encrypted data for transmission using one or more packets. In the event of a packet loss or non-receipt at a receiver, the network interface 240 can issue a NACK (or a double ACK) and cause the unreceived packet to be retransmitted. The application 210 can track the record boundary per packet (e.g., packets 0-3 transmitrecord0, packets 3-4 transmitrecord1; and so on) using the transmit context 224 and determine which packet(s) to retransmit should be.

Die Rechenplattform 200 kann zumindest verschiedene Prozessoren 202 und einen Speicher 220 umfassen. Die Prozessoren 202 können die virtuelle Ausführungsumgebung 204, das Betriebssystem 206, den Netzwerkschnittstellentreiber (oder Vorrichtungstreiber) 208 und die Anwendungen 210 ausführen. Die Prozessoren 202 können ein Ausführungskern oder eine Rechen-Maschine sein, der/die in der Lage ist, Anweisungen auszuführen. Ein Kern kann Zugang zu seinem eigenen Cache und Nur-Lese-Speicher (ROM; read only memory) haben, oder mehrere Kerne können einen Cache oder ROM gemeinschaftlich verwenden. Kerne können homogene und/oder heterogene Vorrichtungen sein. Irgendeine Art von Interprozessor-Kommunikationstechniken kann verwendet werden, wie z. B., aber nicht beschränkt auf, Nachrichtenübermittlung, Interprozessor-Interrupts (IPI), Interprozessor-Kommunikation usw. Kerne können auf irgendeine Art und Weise verbunden sein, wie beispielsweise, aber nicht beschränkt auf, Bus, Ring oder Netz. Prozessoren 202 können einen oder mehrere Anweisungssätze unterstützen (z. B. den x86-Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz von MIPS Technologies of Sunnyvale, CA; den ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings of Sunnyvale, CA), umfassend die hierin beschriebenen Anweisung(en).The computing platform 200 may include at least various processors 202 and memory 220 . Processors 202 may execute virtual execution environment 204, operating system 206, network interface driver (or device driver) 208, and applications 210. Processors 202 may be an execution core or computational engine capable of executing instructions. A core can have access to its own cache and read only memory (ROM), or multiple cores can share a cache or ROM. Cores can be homogeneous and/or heterogeneous devices. Any type of interprocessor communication technique can be used, such as e.g., but not limited to, messaging, interprocessor interrupts (IPI), interprocessor communication, etc. Cores may be connected in any manner, such as, but not limited to, bus, ring, or mesh. 202 processors may support one or more instruction sets (e.g., the x86 instruction set (with some extensions added with newer versions); the MIPS instruction set from MIPS Technologies of Sunnyvale, CA; the ARM instruction set (with optional additional Extensions such as NEON) from ARM Holdings of Sunnyvale, CA) including the instruction(s) described herein.

Eine virtualisierte Ausführungsumgebung kann zumindest eine virtuelle Maschine oder einen Container umfassen. Eine virtuelle Maschine (VM; virtual machine) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine VM kann durch Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine nichtflüchtige Direktzugriffsspeicher-(NVRAM; non-volatile random access memory) Einstellungsdatei und die Protokolldatei definiert werden und wird durch die physischen Ressourcen einer Host-Rechenplattform gesichert. Eine VM kann ein Betriebssystem (OS; operating system) oder eine Anwendungsumgebung sein, die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endnutzer hat auf einer virtuellen Maschine die gleiche Erfahrung, die er auf dedizierter Hardware hätte. Spezialisierte Software, genannt Hypervisor, emuliert die CPU-, Speicher-, Festplatten-, Netzwerk- und andere Hardwareressourcen des PC-Clients oder Servers vollständig und ermöglicht es virtuellen Maschinen, die Ressourcen gemeinschaftlich zu verwenden. Der Hypervisor kann mehrere virtuelle Hardwareplattformen emulieren, die voneinander isoliert sind, was es virtuellen Maschinen erlaubt, Linux® und Windows® -Server-Betriebssysteme auf dem gleichen zugrunde liegenden physischen Host auszuführen. Beispiele für einen Hypervisor umfassen Kernel-basierte virtuelle Maschine (KVM; Kernel-based Virtual Machine), VMware Workstation Pro, Xen Server, VMware vSphere, VMware ESXi, VMware Player, VMware Workstation, Microsoft Hyper-V, QEMU, VirtualBox oder Kubernetes.A virtualized execution environment may include at least one virtual machine or container. A virtual machine (VM) can be software that runs an operating system and one or more applications. A VM can be defined by specification, configuration files, a virtual disk file, a non-volatile random access memory (NVRAM) settings file, and the log file, and is backed by the physical resources of a host computing platform. A VM can be an operating system (OS) or application environment installed on software that mimics dedicated hardware. The end user has the same experience on a virtual machine as they would on dedicated hardware. Specialized software, called a hypervisor, fully emulates the CPU, memory, disk, network, and other hardware resources of the PC client or server, and allows virtual machines to share the resources. The hypervisor can emulate multiple virtual hardware platforms isolated from each other, allowing virtual machines to run Linux® and Windows® server operating systems on the same underlying physical host. Examples of a hypervisor include kernel-based virtual machine (KVM), VMware Workstation Pro, Xen Server, VMware vSphere, VMware ESXi, VMware Player, VMware Workstation, Microsoft Hyper-V, QEMU, VirtualBox, or Kubernetes.

Ein Container kann ein Software-Package von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen zuverlässig auf einer Rechenumgebung im Hinblick auf eine andere laufen. Container können ein Betriebssystem, das auf der Serverplattform installiert ist, gemeinschaftlich verwenden und als isolierte Prozesse laufen. Ein Container kann ein Software-Package sein, das alles umfasst, was die Software zur Ausführung benötigt, wie beispielsweise Systemwerkzeuge, Bibliotheken und Einstellungen. Container werden nicht wie traditionelle Softwareprogramme installiert, was es ihnen erlaubt, von der anderen Software und dem Betriebssystem selbst isoliert zu sein. Eine Isolierung kann erlaubten Zugriff auf eine Region von adressierbarem Speicher oder einer Speicherung durch einen bestimmten Container, aber nicht durch einen anderen Container umfassen. Die isolierte Natur der Container stellt mehrere Vorteile bereit. Erstens kann die Software in einem Container in unterschiedlichen Umgebungen gleich laufen. Beispielsweise kann ein Container, der PHP und MySQL umfasst, sowohl auf einem Linux-Computer als auch auf einer Windows®-Maschine identisch ausgeführt werden. Zweitens stellen Container zusätzliche Sicherheit bereit, da die Software das Host-Betriebssystem möglicherweise nicht beeinträchtigt. Während eine installierte Anwendung Systemeinstellungen ändern und Ressourcen, wie beispielsweise die Windows®-Registrierungsdatenbank (registry), modifizieren kann, kann ein Container nur Einstellungen innerhalb des Containers modifizieren.A container can be a software package of applications, configurations, and dependencies such that the applications run reliably on one computing environment with respect to another. Containers can share an operating system installed on the server platform and run as isolated processes. A container can be a software package that includes everything the software needs to run, such as system tools, libraries, and settings. Containers are not installed like traditional software programs, allowing them to be isolated from the other software and the operating system itself. Isolation may include permitted access to a region of addressable memory or storage by a particular container but not by another container. The isolated nature of the containers provides several advantages. First, the software can run the same in a container in different environments. For example a container that includes PHP and MySQL can run identically on both a Linux machine and a Windows® machine. Second, containers provide additional security since the software may not interfere with the host operating system. While an installed application can change system settings and modify resources such as the Windows® registry, a container can only modify settings within the container.

Bei einigen Beispielen kann das Betriebssystem 206 irgendeines von Linux®, Windows® Server, FreeBSD, Android®, MacOS®, iOS®, Cisco IOS, Juniper Junos oder irgendein anderes Betriebssystem sein. Das Betriebssystem 206 und die Anwendungen 210 können innerhalb einer virtuellen Ausführungsumgebung 204 oder außerhalb der virtuellen Ausführungsumgebung 204 laufen. Der Treiber 208 kann eine Schnittstelle zwischen der virtuellen Ausführungsumgebung 204 oder dem Betriebssystem (OS) 206 und der Netzwerkschnittstelle 240 bereitstellen. Bei einigen Beispielen fragt das OS 206 Fähigkeiten der Netzwerkschnittstelle 240 bei dem Vorrichtungstreiber 208 ab und erfährt von einer Fähigkeit der Netzwerkschnittstelle 240, Daten für die Übertragung zu verschlüsseln, und eine Anwendung kann steuern, welches Paket übertragen oder erneut übertragen werden soll. Bei anderen Beispielen kann das OS 206 die Netzwerkschnittstelle 240 anweisen, Daten für die Übertragung zu verschlüsseln, und eine Anwendung kann steuern, welches Paket übertragen oder erneut übertragen werden soll.In some examples, operating system 206 may be any of Linux®, Windows® Server, FreeBSD, Android®, MacOS®, iOS®, Cisco IOS, Juniper Junos, or any other operating system. Operating system 206 and applications 210 may run within virtual execution environment 204 or outside of virtual execution environment 204 . Driver 208 may provide an interface between virtual execution environment 204 or operating system (OS) 206 and network interface 240 . In some examples, the OS 206 queries the device driver 208 for network interface 240 capabilities and learns of a network interface 240 ability to encrypt data for transmission, and an application can control which packet is to be transmitted or retransmitted. In other examples, the OS 206 can direct the network interface 240 to encrypt data for transmission and an application can control which packet to transmit or retransmit.

Die Anwendungen 210 können irgendeine Art von Anwendung sein, umfassend eine Medien-Streaming-Anwendung (z. B. Video oder Audio), eine Virtuelle-Realität-Anwendung (umfassend Headset und Schall-Emitter), eine Erweiterte-Realität-Anwendung, eine Video- oder Audiokonferenzanwendung, eine Videospielanwendung oder eine Datenbank. Bei einigen Beispielen laufen die Anwendungen 210 innerhalb einer virtuellen Ausführungsumgebung 204 oder außerhalb der virtuellen Ausführungsumgebung 204.Applications 210 may be any type of application, including a media streaming application (e.g., video or audio), a virtual reality application (including headset and sound emitter), an augmented reality application, a Video or audio conferencing application, a video game application, or a database. In some examples, applications 210 run within virtual execution environment 204 or outside of virtual execution environment 204.

Die Rechenplattform 200 kann einen Socket öffnen, um Paketverkehr an einen Empfänger zu senden. Beispielsweise können die Rechenplattform 200 (unter Verwendung der Netzwerkschnittstelle 240) und der Empfänger einen TLS-Handshake ausführen, um Informationen auszutauschen und eine Verbindung herzustellen. Wenn die Verbindung hergestellt ist, sendet die Rechenplattform 200 (oder eine andere Entität) Chiffrierungsinformationen (z. B. den Verschlüsselungsschlüssel) für diesen Socket (z. B. Security Association (SA)) an die Netzwerkschnittstelle 240 zur Verwendung durch die Verschlüsselungsschaltungsanordnung 248. Die Plattform 200 kann Chiffrierungsinformationen in die Verschlüsselungsschlüssel 258 schreiben, um das 5-Tupel eines Sockets (z. B. Schicht-2-Ziel, Quelle, Schicht-4-Ziel-Port, Schicht-4-Quell-Port, Protokoll) auf die vom Sender angegebenen Chiffrierungsinformationen abzubilden.The computing platform 200 can open a socket to send packet traffic to a recipient. For example, the computing platform 200 (using the network interface 240) and the receiver can perform a TLS handshake to exchange information and establish a connection. When the connection is established, the computing platform 200 (or other entity) sends encryption information (e.g., the encryption key) for that socket (e.g., Security Association (SA)) to the network interface 240 for use by the encryption circuitry 248. The platform 200 may write ciphering information into the encryption keys 258 to specify a socket's 5-tuple (e.g., Layer 2 destination, source, Layer 4 destination port, Layer 4 source port, protocol). to map the encryption information provided by the sender.

Das OS 206 kann über den Treiber 208 mit der Netzwerkschnittstelle 240 verhandeln, um zu detektieren, dass für Daten (z. B. auf TLS-Datensatz-Ebene) eine Auslagerungs-TCP-Segmentierung, Datenverschlüsselung und Steuerung bestimmter Paketübertragungen (oder erneute Übertragungen) verfügbar ist. So kann die Anwendung 210 beispielsweise veranlassen, dass das Kopieren von Anwendungsdaten aus dem Datenpuffer 222 in die Sendewarteschlange 254 der Netzwerkschnittstelle 240 unter Verwendung von TLS verschlüsselt wird (z. B. bis zu 16 KB Daten, Header und Trailer). Bei einigen Beispielen segmentiert das OS 206 Daten entlang der TLS-Datensatzgrenzen anstelle der maximalen Segmentgröße (MSS) der Transportschicht vor. Für zu übertragende Daten kann das OS 206 einen Vektor bereitstellen, der anzeigt, ob ein oder mehrere Pakete, die ausgebildet sind, ein Segment von Daten zu tragen, übertragen werden sollen, und der Vektor kann in Übertragungsvektoren 256 im Speicher 252 gespeichert werden.The OS 206 may negotiate with the network interface 240 via the driver 208 to detect that data (e.g., at the TLS record level) requires offload TCP segmentation, data encryption, and control of certain packet transmissions (or retransmissions). is available. For example, the application 210 may cause the copying of application data from the data buffer 222 to the transmit queue 254 of the network interface 240 to be encrypted using TLS (e.g., up to 16 KB of data, headers, and trailers). In some examples, the OS 206 pre-segments data along TLS record boundaries instead of the maximum segment size (MSS) of the transport layer. For data to be transferred, OS 206 may provide a vector indicating whether one or more packets configured to carry a segment of data should be transferred, and the vector may be stored in transfer vectors 256 in memory 252 .

Die Schnittstelle 230 und die Schnittstelle 242 können eine kommunikative Kopplung zwischen der Plattform 200 und der Netzwerkschnittstelle 240 bereitstellen. Die kommunikative Kopplung kann zum Beispiel auf Peripheral Component Interconnect express (PCIe) oder irgendeinem öffentlichen oder proprietären Standard basieren. Die Direktspeicherzugriffs- (DMA; direct memory access) Maschine 244 kann Daten und einen entsprechenden Paketdeskriptor an den Speicher 252 übertragen. Zum Beispiel kann ein Abschnitt des Pakets über DMA in einen Paketpuffer im Speicher 252 kopiert werden.The interface 230 and the interface 242 can provide a communicative coupling between the platform 200 and the network interface 240 . The communicative coupling can be based, for example, on Peripheral Component Interconnect express (PCIe) or any public or proprietary standard. Direct memory access (DMA) engine 244 may transfer data and a corresponding packet descriptor to memory 252 . For example, a portion of the packet may be copied to a packet buffer in memory 252 via DMA.

Direktspeicherzugriff (DMA) ist eine Technologie, die es einer Eingabe-/Ausgabe- (I/O; input/output) Vorrichtung erlaubt, eine zentrale Verarbeitungseinheit (CPU; central processing unit) oder einen Kern zu umgehen und Daten direkt an einen Systemspeicher zu senden oder von demselben zu empfangen. Da DMA es der CPU oder dem Kern erlaubt, beim Senden oder Empfangen von Daten an den oder von dem Systemspeicher keine Kopieroperation zu verwalten, kann die CPU oder der Kern für die Ausführung anderer Operationen zur Verfügung stehen. Ohne DMA ist die CPU oder der Kern, wenn die CPU oder der Kern programmierte Eingabe/Ausgabe verwendet, üblicherweise für die gesamte Dauer einer Lese- oder Schreiboperation belegt und steht nicht zum Ausführen anderer Arbeit zur Verfügung. Mit DMA kann die CPU oder der Kern z. B. eine Datenübertragung initiieren und dann andere Operationen ausführen, während die Datenübertragung im Gange ist. Die CPU oder der Kern kann einen Interrupt von einer DMA-Steuerung empfangen, wenn die Datenübertragung abgeschlossen ist.Direct memory access (DMA) is a technology that allows an input/output (I/O) device to bypass a central processing unit (CPU) or core and send data directly to system memory send or receive from the same. Because DMA allows the CPU or core not to manage a copy operation when sending or receiving data to or from system memory, the CPU or core can be free to perform other operations. Without DMA, if the CPU or core uses programmed input/output, the CPU or core is typically open for the entire duration of a read or write ration occupies and is not available to perform other work. With DMA, the CPU or core can e.g. B. initiate a data transfer and then perform other operations while the data transfer is in progress. The CPU or core can receive an interrupt from a DMA controller when the data transfer is complete.

Die Transportschicht-Auslagerungsmaschine 246 kann Paketdaten in der Sendewarteschlange 254 untersuchen und bestimmt, ob der Header eines Pakets (z. B. n-Tupel) das Paket als einen TLS-Datensatz identifiziert und eine Security Association (SA) für dieses n-Tupel gefunden wird. Zum Beispiel kann ein n-Tupel eines oder mehrere umfassen von: einer Quell-IP-Adresse, einer Quell-Port-Nummer, einer Ziel-IP-Adresse, einer Ziel-Port-Nummer und dem verwendeten Protokoll. Zum Beispiel kann eine Sendewarteschlange 254 paketbezogene Informationen für die Paketübertragung umfassen, umfassend eines oder mehrere von: Schicht-2 (L2; layer 2)-Header, Schicht-3-(L3)-Header, TCP-Header, TLS-Datensatz-Header, TLS-Anwendungsdaten und TLS-Datensatz-Trailer. Die Transportschicht-Auslagerungsmaschine 246 kann die Verschlüsselungsschaltungsanordnung 248 veranlassen, eine Verschlüsselung der Daten, umfassend die Paketnutzlast, den Paket-Header und/oder den Paket-Header und die Nutzlast auszuführen.The transport layer offload engine 246 may examine packet data in the transmit queue 254 and determine whether a packet's header (e.g., n-tuple) identifies the packet as a TLS record and found a Security Association (SA) for that n-tuple becomes. For example, an n-tuple may include one or more of: a source IP address, a source port number, a destination IP address, a destination port number, and the protocol used. For example, a transmit queue 254 may include packet-related information for packet transmission, including one or more of: Layer 2 (L2) headers, Layer 3 (L3) headers, TCP headers, TLS record headers , TLS Application Data and TLS Record Trailer. The transport layer offload engine 246 may cause the encryption circuitry 248 to perform encryption of the data including the packet payload, the packet header, and/or the packet header and the payload.

Nach der Verschlüsselung werden Daten für die Übertragung aus dem Uplink mit einem Maximale-Segmentgröße- (MSS; maximum segment size) Wert auf einmal geplant. So wird z. B. ein MSS-Wert von Daten, der Teil eines größeren TCP-Datagramms (z. B. eines TLS-Datensatzes) ist, segmentiert und ist verfügbar für die Übertragung. Die Segmentierung kann ein Kopieren der L2-, L3- und L4-Header und ein Voranstellen der Header an das Segment von Daten und ein Anpassen der Prüfsummen und Längen umfassen, um einen gültigen Header zu erstellen. Bei einigen Beispielen führt die Transportschicht-Auslagerungsmaschine 246 eine TCP-Segmentierungs-Auslagerung oder eine große Sende-Auslagerung (LSO) für UDP-Pakete aus. Es wird darauf hingewiesen, dass die Transportschicht-Auslagerungsmaschine 246 irgendein Protokoll wie beispielsweise TCP (z. B. RFC 793), User Datagram Protocol (UDP) (z. B. RFC 768), Quick UDP Internet Connections (QUIC) (z. B. QUIC: A UDP-Based Multiplexed and Secure Transport draftietf-quic-transport-22 (Juli 2019)) unterstützen kann. Ist das Paket ein TLS-Datensatz ohne Security Association, kann das Paket abhängig von einer anwendbaren Konfiguration ohne Verschlüsselung übertragen, als Warnung markiert oder verworfen werden.After encryption, data is scheduled for transmission out the uplink at a maximum segment size (MSS) value at a time. So e.g. B. an MSS value of data that is part of a larger TCP datagram (e.g. a TLS dataset) is segmented and available for transmission. The segmentation may include copying the L2, L3, and L4 headers and prepending the headers to the segment of data and adjusting the checksums and lengths to create a valid header. In some examples, the transport layer offload engine 246 performs TCP segmentation offload or large send offload (LSO) for UDP packets. It should be noted that the transport layer offload engine 246 may be any protocol such as TCP (e.g. RFC 793), User Datagram Protocol (UDP) (e.g. RFC 768), Quick UDP Internet Connections (QUIC) (e.g. B. QUIC: A UDP-Based Multiplexed and Secure Transport draftietf-quic-transport-22 (July 2019)). If the packet is a TLS record without a security association, the packet can be transmitted without encryption, marked as a warning, or dropped, depending on an applicable configuration.

Ein Paket sich auf verschiedene formatierte Sammlungen von Bits beziehen, die über ein Netzwerk gesendet werden können, wie beispielsweise Ethernet-Frames, IP-Pakete, TCP-Segmente, UDP-Datagramme, QUIC-Segment, RTP-Segment und so weiter. Bezüge auf L2, L3, L4 und L7-Schichten (layers) (oder Schicht 2, Schicht 3, Schicht 4 und Schicht 7) sind Bezüge auf jeweils die zweite Data-Link-Layer, die dritte Network-Layer, die vierte Transport-Layer und die siebte Application-Layer des OSI (Open System Interconnection) -Layer-Modells.A packet refer to various formatted collections of bits that can be sent over a network, such as Ethernet frames, IP packets, TCP segments, UDP datagrams, QUIC segment, RTP segment, and so on. References to L2, L3, L4 and L7 layers (or Layer 2, Layer 3, Layer 4 and Layer 7) are references to respectively the second data link layer, the third network layer, the fourth transport Layer and the seventh application layer of the OSI (Open System Interconnection) layer model.

Ein Paket kann einem Fluss zugeordnet sein. Ein Fluss kann ein oder mehrere Pakete sein, die zwischen zwei Endpunkten übertragen werden. Ein Fluss kann durch einen Satz definierter Tupel identifiziert werden, wie beispielsweise zwei Tupel, die die Endpunkte (z. B. Quell- und Zieladressen) identifizieren. Für einige Dienste können Flüsse mit einer feineren Granularität identifiziert werden, indem fünf oder mehr Tupel (z. B. Quelladresse, Zieladresse, IP-Protocoll, Transportschicht-Quellport und Zielport) verwendet werden.A packet can be associated with a flow. A flow can be one or more packets transmitted between two endpoints. A flow can be identified by a set of defined tuples, such as two tuples, that identify the endpoints (e.g., source and destination addresses). For some services, flows can be identified at a finer granularity using five or more tuples (e.g., source address, destination address, IP protocol, transport layer source port, and destination port).

Wurde ein Paket erfolgreich empfangen, kann eine ACK durch den Empfänger an die Netzwerkschnittstelle 240 gesendet werden. Das OS 206 kann TSO-Daten aufrechterhalten, bis TSO zugeordnete Pakete von einem Empfänger als empfangen bestätigt werden. In Verbindung mit Paketverwerfungen oder verlorenen Paketen an einem Empfänger, die durch NACK oder doppelte ACK angezeigt werden, kann das OS 206 einen Transportschichtstapel verwenden, um zu bestimmen, ob ein Paket erneut übertragen werden soll. Bei einem Szenario einer erneuten Übertragung kann das OS 206 einen Abschnitt der gespeicherten Daten herauskopieren, einen neuen TCP-Header aus diesen Daten erstellen und veranlassen, dass ein Paket mit dem Abschnitt erneut an den Empfänger gesendet wird.When a packet is successfully received, an ACK may be sent to network interface 240 by the receiver. The OS 206 may maintain TSO data until TSO-associated packets are acknowledged received by a recipient. In connection with packet discards or lost packets at a receiver, indicated by NACK or double ACK, the OS 206 may use a transport layer stack to determine whether a packet should be retransmitted. In a retransmission scenario, the OS 206 may copy out a portion of the stored data, create a new TCP header from that data, and cause a packet containing the portion to be resent to the recipient.

Bei einigen Beispielen wird eine Sequenznummer eines Pakets, das erneut übertragen werden soll, unter Verwendung von NACK oder doppelter ACK identifiziert. Das OS 206 kann die Anwendung 210 auffordern, einen oder mehrere Datensätze zu identifizieren, die dem erneut zu übertragenden Paket entsprechen. Ein Sendekontext 224 kann verwendet werden, um Bytebereiche von Daten einem Paketidentifizierer (z. B. einer Sequenznummer) zuzuordnen, der ausgebildet ist, den Bytebereich von Daten zu übertragen. Unter Verwendung des Sendekontexts 224 bestimmt die Anwendung 210, welcher Datensatz Gegenstand der erneuten Übertragung des Pakets ist, und stellt einen vollständigen Datensatz bereit, der ein oder mehrere Segmente umfasst, die in einem Paket erneut übertragen werden sollen.In some examples, a sequence number of a packet to be retransmitted is identified using NACK or double ACK. The OS 206 may request the application 210 to identify one or more records that correspond to the packet to be retransmitted. A send context 224 may be used to associate byte ranges of data with a packet identifier (e.g., a sequence number) configured to transmit the byte range of data. Using the sending context 224, the application 210 determines which data set is the subject of retransmission of the packet and provides a complete data set that includes one or more segments to be retransmitted in a packet.

Bei diesem Beispiel speichert die Netzwerkschnittstelle 240 den Status eines oder mehrerer übertragener Pakete nicht, sondern nutzt die Bandbreite der Schnittstellen 230 und 242, die möglicherweise nicht bandbreitenbegrenzt sind, um auf einen Datensatz für eine erneute Paket-Übertragung zuzugreifen. Wenn eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle verwendet wird, kann ein Datensatz eine PCIe-Schnittstelle durchlaufen, um erneut verschlüsselt zu werden, und nutzt die zusätzliche Bandbreite der PCIe-Schnittstelle. Dies führt zu einer gewissen Nutzung der Schnittstellenbandbreite, aber eine PCIe-Schnittstelle ist möglicherweise sogar währen Spitzen-Netzwerkereignissen kein Engpass.In this example, network interface 240 does not store the status of one or more transmitted packets, but uses the bandwidth of interfaces 230 and 242, which may not be bandwidth limited, to access a record for packet retransmission. When a Peripheral Component Interconnect Express (PCIe) interface is used, a record can traverse a PCIe interface to be re-encrypted and utilizes the additional bandwidth of the PCIe interface. This results in some interface bandwidth usage, but a PCIe interface may not be a bottleneck even during peak network events.

Der Sendeempfänger 270 kann fähig sein, Pakete in Übereinstimmung mit den anwendbaren Protokollen, wie beispielsweise Ethernet, wie in IEEE 802.3 beschrieben, zu empfangen und zu senden, obwohl andere Protokolle verwendet werden können. Der Sendeempfänger 270 kann Pakete von und zu einem Netzwerk über ein Netzwerkmedium (nicht abgebildet) empfangen und senden. Der Sendeempfänger 270 kann eine PHY-Schaltungsanordnung 272 und eine Media Access Control- (MAC) Schaltungsanordnung 274 umfassen. Eine PHY-Schaltungsanordnung 272 kann Kodierungs- und Dekodierungs-Schaltungsanordnungen (nicht gezeigt) zum Kodieren und Dekodieren von Datenpaketen umfassen. Die MAC-Schaltungsanordnung 274 kann ausgebildet sein, um die zu übertragenden Daten zu Paketen anzuordnen, die Ziel- und Quelladressen zusammen mit Netzwerksteuerungsinformationen und Fehlerdetektions-Hash-Werten umfassen. Die Netzwerkschnittstelle 240 umfasst einen oder mehrere Ports 280-0 bis 280-Z. Ein Port kann einen physischen Port oder einen virtuellen Port darstellen. Ein Paket kann unter Verwendung der Ports 280-0 bis 280-Z gesendet oder empfangen werden.Transceiver 270 may be capable of receiving and transmitting packets in accordance with applicable protocols, such as Ethernet as described in IEEE 802.3, although other protocols may be used. Transceiver 270 can receive and transmit packets to and from a network over a network medium (not shown). Transceiver 270 may include PHY circuitry 272 and media access control (MAC) circuitry 274 . PHY circuitry 272 may include encoding and decoding circuitry (not shown) for encoding and decoding data packets. The MAC circuitry 274 may be configured to arrange the data to be transmitted into packets that include destination and source addresses along with network control information and error detection hash values. Network interface 240 includes one or more ports 280-0 through 280-Z. A port can represent a physical port or a virtual port. A packet can be sent or received using ports 280-0 through 280-Z.

2B stellt ein Beispiel für ein Empfängersystem dar. Das Empfängersystem kann ähnliche Elemente wie das Sendersystem von 2A verwenden und zur Veranschaulichung werden empfängerseitige Elemente beschrieben, aber Elemente von Sender- und Empfängersystemen können kombiniert werden. Daten von empfangenen Paketen können in der Empfangswarteschlange 290 gespeichert werden. Der Empfangsverwalter 294 kann den Empfangskontext 292 verwenden, um einen Empfangskontext zu speichern, der identifiziert, welche(s) Segment(e) von Daten empfangen werde(n) und das eine oder die mehreren empfangenen Segmente identifiziert. Der Empfangsverwalter 294 kann basierend auf einem Identifizieren eines Kopfes von Daten und seiner spezifizierten Länge in einem empfangenen Paket und im Empfangskontext 292 identifiziert bestimmen, ob Segmente von Daten empfangen werden. Der Speicher 252 kann Chip-integriert oder Chip-extern zu der Netzwerkschnittstelle 240 sein. Wenn der Speicher 252 Chip-extern zu der Netzwerkschnittstelle 240 ist, kann der Speicher 252 unter Verwendung einer Schnittstelle wie beispielsweise irgendeiner Art von Double Data Rate- (DDR) Speicherschnittstelle kommunikativ gekoppelt sein. Bei einigen Ausführungsbeispielen werden die Daten nach dem Empfang von Segmenten von Daten unter Verwendung der Entschlüsselungsschaltungsanordnung 250 entschlüsselt und dem Datenpuffer 222 der Plattform 200 für den Zugriff durch eine Anwendung bereitgestellt. 2 B represents an example of a receiver system. The receiver system can have elements similar to the transmitter system of 2A use and receiver-side elements are described for illustrative purposes, but elements of transmitter and receiver systems can be combined. Data from received packets may be stored in receive queue 290 . The receive manager 294 may use the receive context 292 to store a receive context identifying which segment(s) of data are being received and identifying the one or more received segments. The receive manager 294 may determine whether to receive segments of data based on identifying a header of data and its specified length in a received packet and identified in the receive context 292 . The memory 252 may be on-chip or off-chip to the network interface 240 . If the memory 252 is off-chip to the network interface 240, the memory 252 may be communicatively coupled using an interface such as any type of Double Data Rate (DDR) memory interface. In some embodiments, upon receipt of segments of data, the data is decrypted using decryption circuitry 250 and provided to data buffer 222 of platform 200 for access by an application.

Bei einigen Ausführungsbeispielen kann die Transportschicht-Auslagerungsmaschine 246 den Empfangsverwalter 294 verwenden, um empfangene und fehlende Pakete zu identifizieren und ACKs oder NACKs oder doppelte ACKs an einen Sender für fehlende Pakete und für erfolgreich empfangene Pakete zu erzeugen. Wird beispielsweise ein Segment nicht innerhalb eines Zeitfensters eines anderen Pakets empfangen, das ein Segment derselben Daten übermittelt, kann der Empfangsverwalter 294 eine NACK oder eine doppelte ACK erzeugen und eine Übertragung derselben an den Empfänger veranlassen, um eine erneute Übertragung eines oder mehrerer Pakete anzufordern. Eine NACK oder eine doppelte ACK kann eine fehlende Sequenznummer identifizieren.In some embodiments, the transport layer offload engine 246 may use the receive manager 294 to identify received and missing packets and generate ACKs or NACKs or duplicate ACKs to a sender for missing packets and for successfully received packets. For example, if a segment is not received within a time slot of another packet carrying a segment of the same data, the receive manager 294 may generate a NACK or double ACK and cause it to be transmitted to the receiver to request retransmission of one or more packets. A NACK or double ACK can identify a missing sequence number.

Gemäß einigen hierin beschriebenen Ausführungsbeispielen kann die Entschlüsselungsschaltungsanordnung 250 eine TLS-Datenpfad-Auslagerung der Entschlüsselung und Authentifizierung gemäß AES-GCM ausführen. Wenn beispielsweise ein Header eines TLS-Datensatzes detektiert wird, kann die Entschlüsselungsschaltungsanordnung 250 eine Entschlüsselung der in einem oder mehreren Paketen empfangenen TLS-Datensätze ausführen. Zum Beispiel können in Fällen, in denen ein TLS-Datensatz empfangen wird, für den zuvor kein TLS-Header identifiziert wurde, die Prozessoren 202 der Rechenplattform 200 eine TLS-Datensatz-Entschlüsselung ausführen und die Entschlüsselungsschaltungsanordnung 250 kann nach einer ganzen Zahl M von Kandidaten-TLS-Headern suchen. Die Entschlüsselungsschaltungsanordnung 250 kann versuchen, M Kandidaten-TLS-Header zu identifizieren, indem sie nach einer Zeichenfolge sucht, die einen TLS-Header identifiziert, und ein dem identifizierten TLS-Header zugeordnetes Datensatzlängenfeld verwendet, um ein Ende des Datensatzes und einen Beginn eines nächsten Datensatzes (z. B. des nächsten Datensatz-Headers) zu bestimmen. Die Entschlüsselungsschaltungsanordnung 250 kann bestimmen, ob eine Zeichenfolge, die einen TLS-Header identifiziert, im nächsten Datensatz-Header vorhanden ist. Basierend auf der Detektion von M Kandidaten-TLS-Headern basierend auf Datensatzlängenfeldern kann die Entschlüsselungsschaltungsanordnung 250 die M Kandidaten-TLS-Header an eine oder mehrere bereitstellen von: OS 206, Treiber 208, oder Anwendungen 210. Das OS 206, der Treiber 208 oder die Anwendungen 210 können der Entschlüsselungsschaltungsanordnung 250 anzeigen, ob die M Kandidaten-TLS-Header gültig sind oder ob es unter den M Kandidaten-TLS-Headern einen ungültigen Header gibt. Wenn M Kandidaten-TLS-Header als gültige Header angezeigt werden, kann die Entschlüsselungsschaltungsanordnung 250 mit der Entschlüsselung der TLS-Datensätze fortfahren. Während sich Beispiele auf TLS-Datensätze beziehen, kann irgendeine Art von Daten unter Verwendung irgendeines/r Entschlüsselungsstandards oder Spezifikation entschlüsselt werden.According to some embodiments described herein, the decryption circuitry 250 may perform TLS data path offloading of decryption and authentication according to AES-GCM. For example, if a header of a TLS record is detected, the decryption circuitry 250 may perform decryption of the TLS records received in one or more packets. For example, in cases where a TLS record is received for which no TLS header has previously been identified, processors 202 of computing platform 200 may perform TLS record decryption and decryption circuitry 250 may search for an integer M of candidates -Search for TLS headers. Decryption circuitry 250 may attempt to identify M candidate TLS headers by searching for a string identifying a TLS header and using a record length field associated with the identified TLS header to indicate an end of record and a start of a next Record (z. B. the next record header) to determine. Decryption circuitry 250 may determine if a character string identifying a TLS header is present in the next record header. Based on the detection of M candidate TLS headers based on record length fields, the Decryption circuitry 250 provides the M candidate TLS headers to one or more of: OS 206, driver 208, or applications 210. OS 206, driver 208, or applications 210 may indicate to decryption circuitry 250 whether the M candidate TLS headers are valid or whether there is an invalid header among the M candidate TLS headers. If M candidate TLS headers are indicated as valid headers, decryption circuitry 250 can proceed with decryption of the TLS records. While examples refer to TLS records, any type of data can be decrypted using any decryption standard or specification.

Es wird darauf hingewiesen, dass zwar auf die Netzwerkschnittstelle 240 Bezug genommen wird, doch irgendeine Art von Beschleuniger oder Hardware-Vorrichtung anstelle der Netzwerkschnittstelle verwendet werden kann, z. B. eine Speichersteuerung (z. B. eine Non-volatile memory express (NVMe) Speichersteuerung), eine Infrastrukturverarbeitungseinheit (IPU; Infrastructure Processing Unit) oder eine Datenverarbeitungseinheit (DPU; Data Processing Unit) oder eine smartNIC.It is noted that while network interface 240 is referred to, any type of accelerator or hardware device may be used in place of the network interface, e.g. B. a memory controller (e.g. a non-volatile memory express (NVMe) memory controller), an infrastructure processing unit (IPU) or a data processing unit (DPU) or a smartNIC.

Bei einigen Beispielen könnte eine oder beide der Netzwerkschnittstelle 240 von 2A oder 2B einen ternären inhaltsadressierbaren Speicher (TCAM; ternary content-addressable memory) oder einen inhaltsadressierbaren Speicher umfassen, der Paketverarbeitungsregeln oder Abgleichungsaktionsregeln speichert, die von einer programmierbaren Paketverarbeitungspipeline einer Datenebene anzuwenden sind. Ein TCAM kann seinen gesamten Inhalt in einem einzigen Taktzyklus durchsuchen. Die Paketverarbeitungsregeln oder die Abgleichungsaktionsregeln können beispielsweise eines oder mehrere umfassen von: Zugriffssteuerlisten (ACLs; access control lists), Weiterleitungsregeln, Quality of Service (QoS) oder andere Metadaten.In some examples, one or both of the network interface 240 of 2A or 2 B ternary content-addressable memory (TCAM) storing packet processing rules or matching action rules to be applied by a programmable packet processing pipeline of a data plane. A TCAM can search its entire contents in a single clock cycle. The packet processing rules or the matching action rules may include, for example, one or more of: access control lists (ACLs), forwarding rules, quality of service (QoS), or other metadata.

3A stellt eine beispielhafte Interaktion zwischen einem Betriebssystem und einem Vorrichtungstreiber dar. Zum Beispiel kann das Betriebssystem 306 eine Fähigkeit einer Vorrichtung bestimmen, die dem Vorrichtungstreiber 308 zugeordnet ist. Beispielsweise kann das Betriebssystem 306 eine Anzeige einer Fähigkeit einer Vorrichtung (z. B. einer Netzwerkschnittstelle) empfangen, eines oder mehrere auszuführen von: Datenverschlüsselung (z. B. TLS oder kTLS), Datensegmentierung, Paketbildung aus der Datensegmentierung, selektive Neuübertragung von Paketen mit verschlüsselten Daten, Pufferung empfangener Pakete mit verschlüsselten Daten, Wiederzusammensetzung empfangener Daten, Entschlüsselung empfangener Daten (z. B., TLS oder kTLS), Suche nach Kandidaten-Datensatz-Headem, Paket-Empfangsbestätigung oder Paket-Neuübertragungs-Anforderung oder irgendeine Operation, die an eine Netzwerkschnittstelle ausgelagert wird. 3A 12 illustrates an example interaction between an operating system and a device driver. For example, operating system 306 may determine a capability of a device associated with device driver 308. FIG. For example, operating system 306 may receive an indication of a device's (e.g., network interface) ability to perform one or more of: data encryption (e.g., TLS or kTLS), data segmentation, packetization from data segmentation, selective retransmission of packets with encrypted data, buffering of received packets with encrypted data, reassembly of received data, decryption of received data (e.g., TLS or kTLS), search for candidate record headers, packet acknowledgment or packet retransmission request, or any operation that is offloaded to a network interface.

3B stellt eine beispielhafte Interaktion zwischen einem Betriebssystem und einer Netzwerkschnittstelle dar. Beispielsweise kann das Betriebssystem 306 Anforderungen (requests) an die Netzwerkschnittstelle 340 bereitstellen, um die Paketübertragung zu veranlassen und ein oder mehrere Merkmale der Netzwerkschnittstelle 340 zu nutzen: Datenverschlüsselung (z. B. TLS oder kTLS), Datensegmentierung, Paketbildung aus der Datensegmentierung, selektive Neuübertragung von Paketen mit verschlüsselten Daten, Suche nach Kandidaten-Headern oder Transportschicht-Segmentierung. Die Netzwerkschnittstelle 340 kann dem Betriebssystem 306 eine Anzeige eines Paketempfangs bereitstellen. Bei einigen Beispielen kann die Anzeige eines Paketempfangs umfassen oder auch umfassen: einen empfangenen Paket-Header, Dummy-Paketdaten, entschlüsselte Daten aus der von der Netzwerkschnittstelle 340 ausgeführten Datenentschlüsselung, TLS- oder kTLS-Datenentschlüsselung, einen entschlüsselten Datensatz, ein erneut übertragenes Datensegment oder ein entschlüsseltes Datensegment, die Identifizierung eines oder mehrerer Kandidaten-Datensatz-Header und andere. 3B Figure 12 illustrates an example interaction between an operating system and a network interface. For example, operating system 306 may provide requests to network interface 340 to initiate packet transmission and to utilize one or more features of network interface 340: data encryption (e.g., TLS or kTLS), data segmentation, packetization from data segmentation, selective retransmission of packets containing encrypted data, candidate header lookup, or transport layer segmentation. Network interface 340 may provide operating system 306 with an indication of packet receipt. In some examples, the indication of packet receipt may or may also include: a received packet header, dummy packet data, decrypted data from data decryption performed by network interface 340, TLS or kTLS data decryption, a decrypted data set, a retransmitted data segment, or a decrypted data segment, identification of one or more candidate record headers, and others.

4 stellt eine beispielhafte Art der Verarbeitung von Datensatz-Headem in verschiedenen Szenarien dar, in denen Pakete außerhalb der Reihenfolge empfangen werden. Für Fall I werden ein gültiger TLS-Datensatz-Header (z. B. 5 Bytes) und ein Initialisierungsvektor (IV; initialization vector) für einen Datensatz in den Paketen TCP1 und TCP2 am Empfänger empfangen, jedoch außerhalb der Reihenfolge empfangen (z. B. TCP2, dann TCP1). Ein TLS-Header kann einen Typ, eine TLS-Version (z. B. TLS1.2, TLS1.3 oder andere) und eine Datensatzlänge umfassen. Ein IV kann ein Seed sein, der zur Entschlüsselung des Datensatzes verwendet wird. Der Datensatz kann basierend auf der Entschlüsselung des Headers und des IV als gültig bestimmt werden. In Fall I können der Header (z. B. der entschlüsselte Header) und der IV einer Entität oder einem Agenten (z. B. dem Host) zur Entschlüsselung an einem Protokollstapel oder einer Anwendung bereitgestellt werden. Die Entschlüsselungs-Auslagerungsmaschine der NIC kann den Empfang des Datensatzes über mehrere TCP-Pakete verfolgen, die außerhalb der Reihenfolge empfangen werden, weil der Datensatz-Header und der IV detektiert wurden. Beim Empfang von TCP-Paketen kann der Datensatz mit seinem Tail (z. B. 16 Bit) für die Entschlüsselung zusammengesetzt werden, indem die TCP-Pakete von TCP1 bis TCP8 geordnet werden. Für den nächsten TLS-Datensatz kann die Entschlüsselungs-Auslagerungsmaschine der NIC eine Entschlüsselung ausführen. 4 Figure 1 shows an example way of processing record headers in various scenarios where packets are received out of order. For Case I, a valid TLS record header (e.g. 5 bytes) and an initialization vector (IV) for a record in packets TCP1 and TCP2 are received at the receiver, but received out of order (e.g .TCP2, then TCP1). A TLS header can include a type, a TLS version (e.g., TLS1.2, TLS1.3, or others), and a record length. An IV can be a seed used to decrypt the record. The record can be determined valid based on the decoding of the header and IV. In case I, the header (e.g. the decrypted header) and IV can be provided to an entity or agent (e.g. the host) for decryption at a protocol stack or an application. The NIC's decryption offload engine can track the receipt of the record via multiple TCP packets that are received out of order because the record header and IV were detected. When receiving TCP packets, the data set can be included its tail (e.g. 16 bits) for decryption by ordering the TCP packets from TCP1 to TCP8. For the next TLS record, the NIC's decryption offload engine can perform a decryption.

Für Fall II werden die Pakete TCP1 bis TCP 4 der Reihenfolge nach an der Empfänger-NIC empfangen, und die Entschlüsselungs-Auslagerungsmaschine der NIC kann Abschnitte des Datensatzes entschlüsseln. Basierend auf dem Header kann die Datensatzlänge von der Entschlüsselungs-Auslagerungsmaschine bestimmt werden. Der Datensatz kann basierend auf der Entschlüsselung des Headers und des IV als gültig bestimmt werden. Das Paket TCP5 wird jedoch nicht der Reihenfolge nach empfangen, und ein anderes Paket wie beispielsweise TCP6 wird an der Empfänger-NIC empfangen. Die Entschlüsselungs-Auslagerungsmaschine der NIC kann die Entschlüsselung des Datensatzes beenden und den Header (z. B. den entschlüsselten Header), den IV, die entschlüsselten Datensatzabschnitte und die empfangenen verschlüsselten Datensatzsegmente an den Host (z. B. den Protokollstapel oder die Anwendung) senden, um die verschlüsselten Datensatzsegmente zu entschlüsseln. Die Auslagerungsmaschine kann die Ausführung von Datensatz-Entschlüsselung beenden oder vorübergehend pausieren.For Case II, packets TCP1 through TCP4 are received at the receiver NIC in order, and the NIC's decryption offload engine can decrypt portions of the data set. Based on the header, the record length can be determined by the decryption offload engine. The record can be determined valid based on the decoding of the header and IV. However, the TCP5 packet is received out of order, and another packet such as TCP6 is received at the receiver NIC. The NIC's decryption offload engine can finish decrypting the record and send the header (e.g., the decrypted header), the IV, the decrypted record sections, and the received encrypted record segments to the host (e.g., the protocol stack or application) send to decrypt the encrypted record segments. The swap engine may stop or temporarily pause execution of record decryption.

In den Fällen III und IV wird ein TCP-Paket für ein Datensatzsegment empfangen, für das die Entschlüsselungs-Auslagerungsmaschine der NIC zuvor keinen vollständigen Header identifiziert hat. Datensatzgröße und IV (z. B. Schlüssel-Seed) sind möglicherweise nicht zur Entschlüsselung des TLS-Datensatzes verfügbar. Entweder in Fall III oder IV kann die Auslagerungsmaschine eine Suche nach M Headern ausführen und die Kandidaten- M Header an den Host bereitstellen, um zu bestimmen, ob die M Header gültig sind. Wenn die M Header gültig sind, kann die Auslagerungsmaschine mit der Ausführung der Datensatz-Entschlüsselung der einem nächsten identifizierten Header zugeordneten Daten fortfahren.In cases III and IV, a TCP packet is received for a record segment for which the NIC's decryption offload engine has not previously identified a full header. Record size and IV (e.g. key seed) may not be available to decrypt the TLS record. In either Case III or IV, the offload engine can perform a search for M headers and provide the candidate M headers to the host to determine if the M headers are valid. If the M headers are valid, the offload engine can proceed to perform record decryption of the data associated with a next identified header.

5 stellt ein beispielhaftes Zustandsdiagramm dar. Das Zustandsdiagramm kann Betriebsmodi einer Auslagerungsvorrichtung an einer NIC und einem Hostsystem darstellen. Im Zustand 502 kann die kTLS-Auslagerungs-Entschlüsselung in der NIC ausgeführt werden. So können beispielsweise eine kTLS-Auslagerungsmaschine oder andere Prozessoren in der NIC die Entschlüsselung von TLS-Datensätzen oder anderen Datentypen ausführen. Bei einigen Beispielen umfasst eine TLS-Auslagerungsmaschine Operationen der kTLS-Auslagerung. Beispielsweise kann ein System im Zustand 502 verbleiben, um einen in einem oder mehreren Paketen empfangenen Datensatz zu entschlüsseln, wenn ein Datensatz-Header und ein IV für den Datensatz von der kTLS-Auslagerungsmaschine identifiziert und detektiert wurden. Wenn ein Datensatz-Header und ein IV für einen Datensatz nicht identifiziert werden und von der kTLS-Auslagerungsmaschine der NIC nicht detektiert werden, kann in den Jagdmodus 504 eingetreten werden. 5 12 illustrates an example state diagram. The state diagram may represent operational modes of an offloading device at a NIC and a host system. In state 502, kTLS offload decryption may be performed in the NIC. For example, a kTLS offload engine or other processors in the NIC can perform decryption of TLS records or other data types. In some examples, a TLS offload engine includes kTLS offload operations. For example, a system may remain in state 502 to decrypt a record received in one or more packets if a record header and IV for the record have been identified and detected by the kTLS offload engine. If a record header and IV for a record are not identified and not detected by the NIC's kTLS offload engine, hunt mode 504 may be entered.

Im Jagdmodus 504 kann die kTLS-Auslagerungsmaschine eine ganzzahlige Anzahl M von Header-(HDR) Detektionen identifizieren. Bei diesem Beispiel ist M mindestens 3, aber M kann irgendeine ganze Zahl sein, umfassend 1 oder mehr als 3. Im Jagdmodus 504 kann die kTLS-Auslagerungsmaschine Suchen nach einem oder mehreren Headern verschiedener Datensätze ausführen. Die Suche nach einem Header kann eine Suche nach einem Header-Zeichensatz umfassen, indem ein Zeichenfolgen-Abgleich einer Präambel (z. B. Typ (TY)), eines Headers (z. B. eine Zeichenfolge von 0303) und eines Datenlängenfeldes (LE) ausgeführt wird. Ein Header-Zeichensatz kann zum Beispiel ein oder mehrere Zeichen umfassen, umfassend „Don't Care“ (Egal) oder „Wild Card“. Bei einigen Beispielen können eine Zeichenfolgenübereinstimmung und eine Datensatzlänge zwischen 0 und weniger als 16 KB verwendet werden, um einen Kandidaten-Header zu identifizieren. Wird eine Zeichenfolgenübereinstimmung und/oder eine zulässige Datensatzlänge gefunden, kann die kTLS-Auslagerungsmaschine der NIC die Datensatzlängeninformationen im Header verwenden, um einen Beginn eines nächsten Datensatzes zu identifizieren. In Fällen, in denen zwei oder mehr Header zu identifizieren sind, kann die kTLS-Auslagerungsmaschine der NIC nach der Identifizierung eines ersten Headers durch Verwendung einer Länge des ersten Datensatzes nach einem Header des nächsten Datensatzes suchen. Die kTLS-Auslagerungsmaschine der NIC kann für M-1 Anzahl von Headern fortfahren. Ein Zeichenfolgen-Abgleich kann an einer Entschlüsselungsmaschine ausgeführt werden, um die Nutzdaten Wort für Wort zu analysieren. Die Zeichenfolgenabgleich-Maschine kann die Header an der Wortgrenze berücksichtigen.In hunt mode 504, the kTLS offload engine may identify an integer number M of header (HDR) detections. In this example, M is at least 3, but M can be any integer including 1 or more than 3. In hunt mode 504, the kTLS offload engine can perform searches for one or more headers of different data sets. Searching for a header may involve searching for a header character set by performing a string match of a preamble (e.g., type (TY)), a header (e.g., a string of 0303), and a data length field (LE ) is performed. For example, a header character set may include one or more characters including "Don't Care" or "Wild Card". In some examples, a string match and a record length between 0 and less than 16 KB can be used to identify a candidate header. If a string match and/or an allowable record length is found, the NIC's kTLS offload engine can use the record length information in the header to identify a start of a next record. In cases where two or more headers are to be identified, after identifying a first header, the NIC's kTLS offload engine may look for a header of the next record by using a length of the first record. The NIC's kTLS offload engine can continue for M-1 number of headers. String matching can be performed at a decryption engine to analyze the payload word by word. The string matching engine can consider the headers on the word boundary.

Für einen oder mehrere detektierte Header kann die kTLS-Auslagerungsmaschine der NIC dem Host anzeigen, dass ein Kandidaten-Header empfangen wurde, indem sie eines oder mehrere bereitstellt von: TCP-Paketsequenznummer für ein TCP-Paket, umfassend den Kandidaten-Header, Versatz von einem Anfang des TCP-Pakets zu einem Anfang des Kandidaten-Headers, Kandidaten-Header-Typ (TY), Kandidaten-Header-Zeichenfolge (z. B. 0303) und/oder Kandidaten-Header-Längen- (LE) Wert. Beispielsweise kann die kTLS-Auslagerungsmaschine der NIC einem Host (z. B. Treiber, OS oder Anwendung) die Anzeige bereitstellen, und der Host kann in den Resynchronisierungsmodus 506 eintreten. Der Host kann einen Kontext im Speicher speichern, der die empfangenen TLS-Frames verfolgt, und verfolgen, wo ein TLS-Frame in einem TCP-Paket beginnt (z. B. unter Verwendung einer Linkliste). Unter Verwendung des gespeicherten Kontexts, der die empfangenen TLS-Frames verfolgt, kann der Host einen oder mehrere Kandidaten-Header verifizieren, indem er bestimmt, ob der Kandidaten-Header wie erwartet (oder nicht) in einem TCP-Paket mit einer bestimmten Sequenznummer und einem bestimmten Versatz im TCP-Paket positioniert ist. Durch Vergleichen der Sequenznummer und des Versatzes, die dem von der kTLS-Auslagerungsmaschine empfangenen Kandidaten-Header zugeordnet sind, mit der/dem erwarteten Sequenznummer und Versatz kann der Host bestimmen, ob ein Kandidaten-Header gültig ist. Ansprechend darauf, dass der Host M Kandidaten-Header als gültig identifiziert, kann eine resync_request mit der TCP _SN des letzten Header-Standorts zur Bestätigung an den Treiber gesendet werden.For one or more detected headers, the NIC's kTLS offload engine can indicate to the host that a candidate header was received by providing one or more of: TCP packet sequence number for a TCP packet comprising the candidate header, offset from a beginning of the TCP packet to a beginning of the candidate header, candidate header type (TY), candidate header character string (e.g. 0303) and/or candidate header length (LE) value. For example, the NIC's kTLS offload engine can provide a host (e.g., driver, OS, or application) with the display provide, and the host can enter resynchronization mode 506. The host can store a context in memory that keeps track of the TLS frames received and where a TLS frame begins in a TCP packet (e.g. using a link list). Using the stored context tracking the received TLS frames, the host can verify one or more candidate headers by determining whether the candidate header is as expected (or not) in a TCP packet with a given sequence number and positioned at a specific offset in the TCP packet. By comparing the sequence number and offset associated with the candidate header received from the kTLS offload engine to the expected sequence number and offset, the host can determine whether a candidate header is valid. In response to the host identifying M candidate headers as valid, a resync_request with the TCP _SN of the last header location may be sent to the driver for confirmation.

Der Jagdmodus 504 kann Fall III und Fall IV entsprechen, wobei sich die NIC und die vom Host-Prozessor ausgeführte Software bei einer zukünftigen first tcp sn (z. B. Sequenznummer des ersten TCP-Pakets in einem TLS-Segment) und tls_rec_sn (z. B. die Sequenznummer des aktuellen TLS-Segments) kooperativ synchronisieren.Chase mode 504 may correspond to Case III and Case IV, where the NIC and the software running on the host processor are aware of a future first tcp sn (e.g., sequence number of the first TCP packet in a TLS segment) and tls_rec_sn (e.g., e.g. the sequence number of the current TLS segment) cooperatively synchronize.

Eine letzte spekulative Header-TCP-Sequenznummer (HDR_ TCP_SN), ein Header-Zähler (counter) (HDR_CNTR) und eine Anzahl von Datensatz-Headern, die nach resync request weitergegeben werden, können in einem Tupel in der Struktur header tuple gespeichert werden. Um eine Chance zu erhöhen, den Header zu finden, kann die Auslagerungsmaschine mehrere Kandidaten-header tuples identifizieren, wobei zumindest ein Header aus einem anderen anfänglichen Zeichenfolgenabgleich, der mit den TLS-Versionsbytes übereinstimmt, geseedet wird. Ein Beispiel für diese header_tuple- Struktur ist in der folgenden Tabelle 1 dargestellt. Bei einigen Beispielen kann das header_tuple einen Teil des SA_Dynamic-Kontextes ersetzen oder Speicherressourcen verwenden, die ansonsten für die Verwendung zur Speicherung des SA_Dynamic-Kontextes zur Verfügung stehen. Tabelle 1 HDR_CNTR_0[8b] HDR_TCP_SN_0[4B] TLS_Header[5B] Flags[8b] HDR_CNTR 1 HDR_TCP_SN_1 MSB=0: tls header Suche; MSB=1: warten auf resync_response M = Anzahl von übereinstimmenden Headern HDR_CNTR 2 HDR_TCP_SN_2 HDR_CNTR 3 HDR_TCP_SN_3 A final speculative header TCP sequence number (HDR_TCP_SN), a header counter (HDR_CNTR), and a number of record headers passed after resync request can be stored in a tuple in the header tuple structure. To increase a chance of finding the header, the offload engine can identify multiple candidate header tuples, seeding at least one header from another initial string match that matches the TLS version bytes. An example of this header_tuple structure is shown in Table 1 below. In some examples, the header_tuple may replace part of the SA_Dynamic context or use memory resources that are otherwise available for use in storing the SA_Dynamic context. Table 1 HDR_CNTR_0[8b] HDR_TCP_SN_0[4B] TLS_Headers[5B] flags[8b] HDR_CNTR 1 HDR_TCP_SN_1 MSB=0: tls header search; MSB=1: wait for resync_response M = number of matching headers HDR_CNTR 2 HDR_TCP_SN_2 HDR_CNTR 3 HDR_TCP_SN_3

Die folgende Tabelle 2 zeigt ein Beispiel für Daten, die während eines Jagdmodus gespeichert werden. Tabelle 2 Nein. SA_Dynamic Felder während des Jagdmodus und Resynchronisierungsmodus TLS1.2 und 1.3 Gültig 2 1 HDR_TUPLE _0 HDR CNTR 0 8 HDR_TCP_SN_0 32 TLS_HDR 40 FLAGS_0 8 HDR TUPLE_1 88 HDR TUPLE 2 (HDR_CNT, HDR_TCP_SN) 40 Reserviert 29 ECC 9 Reserviert 24 HDR_TUPLE _2(TLS _HDR, FLAGS) 48 HDR TUPLE _ 3 88 LAST_ 4Bytes 32 Speichert die letzten 4 Bytes einer Nutzlast für den Zeichenfolgen-Abgleich 34 Flags 16 Reserviert 32 35 Reserviert 7 ECC 9 36 Gesamt 512 Table 2 below shows an example of data stored during a hunt mode. Table 2 no SA_Dynamic Fields during hunt mode and resync mode TLS1.2 and 1.3 Valid 2 1 HDR_TUPLE _0 HDR CNTR 0 8th HDR_TCP_SN_0 32 TLS_HDR 40 FLAGS_0 8th HDR TUPLE_1 88 HDR TUPLE 2 (HDR_CNT, HDR_TCP_SN) 40 Reserved 29 ECC 9 Reserved 24 HDR_TUPLE _2(TLS _HDR, FLAGS) 48 HDR TUPLE _ 3 88 LAST_ 4 bytes 32 Stores the last 4 bytes of a string match payload 34 flags 16 Reserved 32 35 Reserved 7 ECC 9 36 In total 512

Ansprechend darauf, dass der Host eine resync_request von der kTLS-Auslagerungsmaschine empfängt, kann der Host warten, bis die TCP_SN des Headers in einer resync_request von der Auslagerungsmaschine an den Host bereitgestellt wird. Der Host kann eine positive oder negative Antwort (response) an die Auslagerungsmaschine mit der gleichen resync_request_id und umfassend die tls_rec_sn des TCP_SN des Datensatz-Headers erzeugen. Nachdem die Auslagerungsmaschine die resync response vom Treiber erhält, schlägt sie den Header-Tupel-Eintrag für die gegebene resync_request_id nach und fügt die tls_rec_sn zum HDR_CNTR hinzu, um die korrekte tls_rec_sn für den Header TCP_SN im header_tuple zu erzeugen.In response to the host receiving a resync_request from the kTLS page engine, the host may wait until the TCP_SN of the header is provided in a resync_request from the page engine to the host. The host can generate a positive or negative response to the offload engine with the same resync_request_id and including the tls_rec_sn of the TCP_SN of the record header. After the offload engine receives the resync response from the driver, it looks up the header tuple entry for the given resync_request_id and adds the tls_rec_sn to the HDR_CNTR to generate the correct tls_rec_sn for the TCP_SN header in the header_tuple.

Register- oder Speicherplatz kann zugewiesen werden, um Security Association- (SA) Dynamisches-Feld-Bits zu speichern, wie z. B., aber nicht beschränkt auf Teilverschlüsselungsdaten (PED; partial encryption data). Bei einigen Beispielen sind während des Jagdmodus 504 zumindest einige der SA-Dynamisches-Feld-Bits nicht gültig und die Speicherressourcen für diese Bits könnten von der kTLS-Auslagerungsmaschine verwendet werden, um die Kandidaten-TLS-Header-Informationen zu speichern. Während des Jagdmodus 504 können Informationen mehrerer Kandidaten-Header (z. B. zumindest die TCP-Paketsequenznummer und der Versatz von einem Beginn eines TCP-Pakets, an dem ein Kandidaten-Header beginnt) in den SA-Dynamisches-Feld-Bits gespeichert werden.Register or memory space can be allocated to store Security Association (SA) dynamic field bits such as B., but not limited to partial encryption data (PED). In some examples, during hunt mode 504, at least some of the SA dynamic field bits are not valid and the storage resources for these bits could be used by the kTLS offload engine to store the candidate TLS header information. During hunt mode 504, information of multiple candidate headers (e.g., at least the TCP packet sequence number and the offset from a start of a TCP packet where a candidate header begins) may be stored in the SA dynamic field bits .

Eine Anzahl von verfolgten Tupel-Headern kann davon abhängen, wie viele Bits zur Verfolgung eines Headers benötigt werden und wie viel Platz in der SA-Tabelle verfügbar ist. Ein Header-Tupel kann 88b sein, und die Speicherung von 4 Header-Tupeln fügt 332b im SA_Context hinzu und ersetzt eine untere Hälfte des SA_ Context, wobei die Fehlerkorrekturkodierung (ECC; error correction coding), Flags und Fehlerbeseitigungs-Zähler im SA_Context intakt bleiben. Eine oder mehrere der 8-Header-Verfolgungssequenz können auf einer anderen Version der Byteanpassung basieren. Die erste Header-Verfolgungssequenz, die M übereinstimmende Header aufweist, sendet die resync _request an den Host. Bei einigen Beispielen werden nachfolgende resync request nicht durchgeführt, nachdem eine erste resync_request an den Host gesendet wurde, bis eine negative resync response vom Host empfangen wird. In der Zwischenzeit können andere header_tuples verwendet werden, um potenzielle Header-Standorte weiter zu verfolgen.A number of tuple headers tracked may depend on how many bits are needed to track a header and how much space is available in the SA table. A header tuple can be 88b, and storing 4 header tuples adds 332b in the SA_Context and replaces a lower half of the SA_Context, leaving the error correction coding (ECC), flags, and debug counters in the SA_Context intact . One or more of the 8-header trace sequence may be based on a different version of byte alignment. The first header trace sequence that has M matching headers sends the resync _request to the host. In some examples, subsequent resync requests are not performed after an initial resync_request is sent to the host until a negative resync response is received from the host. In the meantime, other header_tuples can be used to further track potential header locations.

Im Resynchronisierungsmodus 506 kann der Host bestimmen, ob der eine oder die mehreren von der kTLS-Auslagerungsmaschine der NIC empfangenen M Kandidaten-Header einem gültigen Datensatz-Header entsprechen. Beispielsweise kann der Host-Treiber, der Protokollschichtstapel (z. B. OS) und/oder die Anwendung den Datensatz-Header entschlüsseln und bestimmen, ob der Header ein gültiger Header ist. Wenn die Versionsbytes der M Kandidaten-Header mit einem erwarteten Wert übereinstimmen, können die M Kandidaten-Header bei einigen Beispielen als gültig bestimmt werden. Wenn ein Versionsbyte eines oder mehrerer der M Kandidaten-Header nicht mit einem erwarteten Wert übereinstimmt, können die M Kandidaten-Header bei einigen Beispielen als ungültig bestimmt werden. Der Host kann bestätigen, dass TCP_SN einen gültigen TLS-Header TCP_SN umfasst, und kann die entsprechende tls_rec_sn dieses Headers senden. Der Host kann anzeigen, dass der Header gültig ist, und die NIC veranlassen, in den Zustand 502 einzutreten, wobei die kTLS-Auslagerungsmaschine der NIC eine Entschlüsselung der Datensätze beginnend bei dem Header eines nächsten Datensatzes ausführen kann. Wenn jedoch einer oder mehrere der M Kandidaten-Header ungültig sind, wird erneut in den Jagdmodus 504 eingetreten, wobei ein Zähler auf 0 zurückgesetzt wird und M erneut erreichen muss. Bei einigen Beispielen kann die Auslagerungsmaschine, wenn der Host in einer vorgeschriebenen Zeitspanne keine Antwort an die Header-Kandidaten sendet, in ein TIMEOUT eintreten und eine Suche nach M Kandidaten-Headern ausführen.In resynchronization mode 506, the host can determine whether the one or more M candidate headers received from the NIC's kTLS offload engine correspond to a valid record header. For example, the host driver, the protocol layer stack (e.g., OS), and/or the application can decode the record header and determine if the header is a valid header. In some examples, if the version bytes of the M candidate headers match an expected value, the M candidate headers may be determined to be valid. In some examples, if a version byte of one or more of the M candidate headers does not match an expected value, the M candidate headers may be determined to be invalid. The host can confirm that TCP_SN includes a valid TLS TCP_SN header and send the corresponding tls_rec_sn of that header. The host can indicate that the header is valid and cause the NIC to enter state 502, where the NIC's kTLS offload engine can perform a decryption of the records starting at the header of a next record. However, if one or more of the M candidate headers are invalid, the hunt mode 504 is re-entered, a counter is reset to 0, and must reach M again. In some examples, when the Host does not send a response to the candidate headers in a prescribed amount of time, enter a TIMEOUT and perform a search for M candidate headers.

Während des Resynchronisierungsmodus 506kann der Jagdmodus 504 fortgesetzt werden, wobei eine kTLS-Auslagerungsmaschine Header verfolgen kann, falls ein neuer Header empfangen wird. Die Auslagerungsmaschine kann eine Zählung einer Anzahl zusätzlicher Header, die nach dem Senden der resync_request an den Host eingetroffen sind, beibehalten.During resynchronization mode 506, hunt mode 504 may continue wherein a kTLS offload engine may track headers if a new header is received. The offload engine may keep a count of a number of additional headers that have arrived after the resync_request was sent to the host.

Ansprechend auf den Empfang einer Bestätigung eines gültigen Headers vom Host, kann die korrekte TLS_REC_SN für den aktuellen TLS-Datensatz konstruiert werden, indem die tls_rec_sn, die vom Host kam, und die Anzahl der Header, die die Auslagerungsmaschine seitdem gezählt hat, addiert werden. Die Auslagerungsmaschine kann die first_TCP_SN speichern, und eine Menge von Null-Bit-Auffüllung kann auf 0 zurückgesetzt werden, und die Entschlüsselung durch die Auslagerungsmaschine kann ab dem ersten Paket, das den nächsten TLS-Header enthält, neu gestartet werden.In response to receiving an acknowledgment of a valid header from the host, the correct TLS_REC_SN for the current TLS record can be constructed by adding the tls_rec_sn that came from the host and the number of headers the swap engine has counted since then. The page engine can store the first_TCP_SN and a quantity of zero-bit padding can be reset to 0 and the decryption by the page engine can restart from the first packet containing the next TLS header.

6A stellt ein Beispiel für eine Header-Jagd dar. Bei diesem Beispiel beginnt eine Header-Jagd zur Identifizierung eines Typs (TY), einer 0303-Zeichenfolge, gefolgt von einer gültigen Länge (LE). Nach dem Empfang einer Resynchronisierungs-Anzeige von einem Host kann die NIC eine Entschlüsselung beginnend mit dem Beginn eines nächsten detektierten Datensatzes ausführen. 6A Figure 1 shows an example of a header hunt. In this example, a header hunt begins to identify a type (TY), a 0303 character string, followed by a valid length (LE). After receiving a resync indication from a host, the NIC can perform decryption beginning at the beginning of a next detected record.

6B stellt ein Beispiel für eine Identifizierung eines Kandidaten-Beginns eines Datensatz-Headers dar. Bei diesem Beispiel zeigt der Host an, dass der Kandidaten-Header kein gültiger Header ist. Die NIC kann ihre Jagd nach einem Kandidaten-Header in einem untersuchten Datensatz beginnen, wenn die Anzeige von dem Host anzeigt, dass die M Kandidaten-Header einen ungültigen Header umfassen. 6B Figure 12 provides an example of identifying a candidate start of a record header. In this example, the host indicates that the candidate header is not a valid header. The NIC may begin its hunt for a candidate header in a record being examined when the indication from the host indicates that the M candidate headers include an invalid header.

7 stellt ein Beispiel für eine Header-Übereinstimmung dar, gefolgt von einer sequenziellen Analyse des empfangenen Datensatzes, um eine weitere Header-Übereinstimmung zu identifizieren. Für zumindest zwei Kandidaten-Header-Übereinstimmungen kann eine identifizierte Datensatzlänge verwendet werden, um zu bestimmen, ob ein weiterer Kandidaten-Header bei oder nach der identifizierten Datensatzlänge und an einem Anfang eines nächsten Datensatzes vorhanden ist. Ein oder mehrere Header-Kandidaten können unter Verwendung einer Sequenznummer identifiziert und unterschieden werden. Bei diesem Beispiel werden die Sequenznummern SQ#1 und SQ#2 verwendet, um zwei Suchen-Kandidaten-Header zu verfolgen. Für die Sequenznummern SQ#1 und SQ#2 kann versucht werden, M Kandidaten-Header zu identifizieren. 7 Figure 1 shows an example of a header match, followed by sequential analysis of the received record to identify another header match. For at least two candidate header matches, an identified record length can be used to determine whether there is another candidate header at or after the identified record length and at a beginning of a next record. One or more candidate headers can be identified and distinguished using a sequence number. In this example, the sequence numbers SQ#1 and SQ#2 are used to track two search candidate headers. For the sequence numbers SQ#1 and SQ#2, an attempt can be made to identify M candidate headers.

8 stellt einen beispielhaften Prozess dar, der durch ein Empfängersystem ausgeführt werden kann. Der Prozess kann beispielsweise unter Verwendung einer Netzwerkschnittstelle und einer Entschlüsselungs-Auslagerungsvorrichtung wie beispielsweise einer kTLS- oder TLS-Auslagerungsmaschine ausgeführt werden. Bei 802 wird ein Paket an einer Netzwerkschnittstelle empfangen. Die Netzwerkschnittstelle kann die Fähigkeit umfassen, eine Neuanordnung von Datensegmenten (z. B. Abschnitte von TLS-Datensätzen) zu verwalten und eine Entschlüsselung von Datensegmenten auszuführen. Die Netzwerkschnittstelle kann eines oder mehrere umfassen von: NIC, IPU oder DPU. Bei 804 kann eine Aktualisierung eines Empfangskontextes erfolgen, um ein oder mehrere empfangene Pakete zu identifizieren. So können Pakete beispielsweise verschlüsselte Daten wie verschlüsselte TLS-Datensätze und ihre zugeordneten Präambel und Header tragen. Die Präambel und/oder der Header können bei einigen Beispielen unverschlüsselt sein. Verschiedene Techniken können von einer Netzwerkschnittstelle verwendet werden, um den Empfang von Segmenten von Daten zu verfolgen, z. B. eine verknüpfte Liste, die ein oder mehrere empfangene Daten und ein oder mehrere für die Daten empfangene Segmente basierend auf dem Empfang des Headers der Daten und der Länge der Daten verfolgt, deren Empfang erwartet wird. 8th Figure 12 illustrates an example process that may be performed by a recipient system. The process may be performed, for example, using a network interface and a decryption offload device such as a kTLS or TLS offload engine. At 802, a packet is received on a network interface. The network interface may include the ability to manage rearrangement of data segments (e.g., portions of TLS records) and perform decryption of data segments. The network interface can include one or more of: NIC, IPU, or DPU. At 804, a receive context may be updated to identify one or more received packets. For example, packets can carry encrypted data such as encrypted TLS records and their associated preamble and header. The preamble and/or header may be unencrypted in some examples. Various techniques can be used by a network interface to track the receipt of segments of data, e.g. B. a linked list that tracks one or more received data and one or more segments received for the data based on receipt of the header of the data and the length of the data expected to be received.

Bei 806 kann bestimmt werden, ob das empfangene Paket ein Datensegment umfasst, für das zuvor kein Header identifiziert wurde. Beispielsweise kann ein empfangenes Paket, das eine Segmentnummer umfasst, die nicht eine nächste erwartete fortlaufende Nummer im Verhältnis zu anderen zuvor empfangenen Paketen ist, als ein außerhalb der Reihenfolge empfangenes Paket betrachtet werden, und wenn ein Datensegment in einem solchen Paket außerhalb der Reihenfolge nicht damit übereinstimmt, dass es sich innerhalb von Daten (z. B. TLS-Datensatz) befindet, für die ein Header empfangen und eine Datenlänge identifiziert wurde, kann das Datensegment als nicht einen zuvor empfangenen oder identifizierten Header aufweisend betrachtet werden. Wenn das empfangene Paket ein Datensegment umfasst, für das zuvor kein Header identifiziert wurde, kann der Prozess mit 810 fortgesetzt werden. Wenn das empfangene Paket ein Datensegment umfasst, für das zuvor ein Header identifiziert wurde, kann der Prozess mit 808 fortgesetzt werden.At 806, it may be determined whether the received packet includes a data segment for which a header was not previously identified. For example, a received packet that includes a segment number that is not a next expected sequential number relative to other previously received packets may be considered an out-of-order received packet, and if a data segment in such an out-of-order packet is inconsistent therewith coincides with being within data (e.g., TLS record) for which a header was received and a data length identified, the data segment may be considered not to have a previously received or identified header. If the received packet includes a data segment for which no header was previously identified, the process may proceed to 810. If the received packet is a data segment for which a header was previously identified, the process may proceed to 808.

Bei 808 kann die Netzwerkschnittstelle die Daten entschlüsseln. So kann beispielsweise eine kTLS- oder TLS-Entschlüsselungs-Auslagerungsvorrichtung der Netzwerkschnittstelle Daten wie TLS-Datensätze basierend auf anwendbaren Entschlüsselungsstandards entschlüsseln. Entschlüsselte Daten können auf ein Hostsystem kopiert werden, damit eine Anwendung aus dem Speicher darauf zugreifen kann. Die Entschlüsselung von Daten kann auf 128-Bit-Datensegmenten erfolgen, die in Paketen empfangen werden. Das Auffüllen von Nullwerten vor oder nach einem Datensegment kann eingesetzt werden, wenn weniger als ein volles 128-Bit-Datensegment zur Entschlüsselung zur Verfügung steht. Informationen aus entschlüsselten Datensegmenten können zur Verwendung zur Entschlüsselung eines oder mehrerer nachfolgender Datensegmente gemäß den maßgeblichen Entschlüsselungsspezifikationen verwendet werden.At 808, the network interface can decrypt the data. For example, a kTLS or TLS decryption offload device of the network interface may decrypt data such as TLS records based on applicable decryption standards. Decrypted data can be copied to a host system for an application to access from storage. Data decryption can be done on 128-bit data segments received in packets. Zero padding before or after a data segment can be used when less than a full 128-bit data segment is available for decryption. Information from decrypted data segments may be used to decrypt one or more subsequent data segments in accordance with the applicable decryption specifications.

Bei 810 kann die Netzwerkschnittstelle das Hostsystem veranlassen, Daten zu entschlüsseln, und die Netzwerkschnittstelle kann eine Suche nach Daten-Header-Kandidaten ausführen. Bei einigen Beispielen kann ein Host die Datenentschlüsselung für ein oder mehrere Datensegmente ausführen, für die ein Header zuvor nicht identifiziert wurde, und auch eine Datenentschlüsselung ausführen, bis es der Auslagerungsvorrichtung erlaubt wird, die Datenentschlüsselung wieder aufzunehmen. Bei einigen Beispielen kann die Auslagerungsvorrichtung nach M aufeinanderfolgenden abgestimmten Header-Kandidaten suchen. Bei einigen Beispielen können sich die M Header-Kandidaten auf sequenzielle Header-Kandidaten beziehen, die unter Verwendung von M Datenlängenfeldern identifiziert werden. Bei einigen Beispielen ist M größer oder gleich 2, um eine Wahrscheinlichkeit zu erhöhen, dass die Auslagerungsvorrichtung mehrere identifizierte Header korrekt identifiziert hat. Bei einigen Beispielen ist der Daten-Header unverschlüsselt und die Auslagerungsvorrichtung kann einen Daten-Header durch eine Zeichensequenz identifizieren, die einen Header identifiziert, wie z. B. die Zeichensequenz 0303, obwohl auch andere Sequenzen Daten-Header identifizieren können. Die Anzahl M von Header-Kandidaten, die die Auslagerungsvorrichtung identifizieren soll, kann von einem Administrator unter Verwendung eines Vorrichtungstreibers konfiguriert werden.At 810, the network interface can cause the host system to decrypt data and the network interface can perform a search for candidate data headers. In some examples, a host may perform data decryption for one or more data segments for which a header was not previously identified, and also perform data decryption until the offload device is allowed to resume data decryption. In some examples, the offload device may search for M consecutive matched header candidates. In some examples, the M header candidates may refer to sequential header candidates identified using M data length fields. In some examples, M is greater than or equal to 2 to increase a likelihood that the offload device correctly identified multiple identified headers. In some examples, the data header is unencrypted and the offload device may identify a data header by a header identifying character sequence, such as: B. the character sequence 0303, although other sequences can also identify data headers. The number M of header candidates that the offload device should identify can be configured by an administrator using a device driver.

Bei einigen Beispielen kann die Auslagerungsvorrichtung bestimmen, ob ein Header-Kandidat nach einer zuvor identifizierten Datenlänge vorhanden ist. Wenn ein Header-Kandidat nach einer zuvor identifizierten Datenlänge vorhanden ist, kann die Auslagerungsvorrichtung diesen Header-Kandidaten in die M Header-Kandidaten aufnehmen. Bei einigen Beispielen kann, selbst nachdem ein Header-Kandidat und eine Datenlänge gefunden wurden, zusätzlich zur Suche nach einem anderen Header-Kandidaten bei oder nach der zuvor identifizierten Datenlänge, die Suche nach anderen Kandidaten-Headern und zugeordneten Datenlängen innerhalb der Daten der zuvor identifizierten Datenlänge fortgesetzt werden. Dementsprechend kann eine N Anzahl von Suchvorgängen nach dem Header des Datensegments mit einem zuvor nicht identifizierten Header in den Daten parallel ausgeführt werden. N kann eine Anzahl von parallelen Header-Strömen darstellen, die verfolgt werden. Bei einigen Beispielen kann N 1 oder mehr sein.In some examples, the offload device may determine if a candidate header is present after a previously identified data length. If a header candidate is present after a previously identified data length, the offload device may include that header candidate in the M header candidates. In some examples, even after a candidate header and data length have been found, in addition to searching for another candidate header at or after the previously identified data length, searching for other candidate headers and associated data lengths within the data of the previously identified data length to be continued. Accordingly, an N number of searches for the header of the data segment having a previously unidentified header in the data can be performed in parallel. N can represent a number of parallel header streams to be traced. In some examples, N can be 1 or more.

Für die Suche nach einem Header-Kandidaten kann ein einem Header zugeordneter Längenwert verwendet werden, um einen nächsten Daten-Header zu identifizieren. Wenn der nächste Daten-Header einer Zeichensequenz entspricht, die einen Header identifiziert, kann dieser nächste Daten-Header einem zweiten Header-Kandidaten entsprechen. Der zweite Header-Kandidat kann eine Länge der Daten, die dem zweiten Header-Kandidaten zugeordnet sind, und einen Versatz zu einer Position eines Beginns anderer Daten identifizieren. Die Auslagerungsvorrichtung kann bestimmen, ob ein dritter Header-Kandidat nach einer dem zweiten Header-Kandidaten zugeordneten Datenlänge positioniert ist. Nach einer M Anzahl von Identifizierungen von Header-Kandidaten, die an Positionen positioniert identifiziert werden, die durch die Datenlänge eines vorherigen Kandidaten-Headers bestimmt werden, kann der Prozess zu 812 übergehen. Es wird darauf hingewiesen, dass bei einigen Beispielen, wenn M Header in einer bestimmten Zeitperiode nicht gefunden werden, eine Anzeige an den Host gemacht werden kann, um den Verlust der Synchronisation anzuzeigen, und der Host die Auslagerungsmaschine veranlassen kann, die Header-Kandidaten-Suche zu beenden oder zu pausieren.When searching for a candidate header, a length value associated with a header can be used to identify a next data header. If the next data header matches a character sequence that identifies a header, that next data header may match a second header candidate. The second header candidate can identify a length of the data associated with the second header candidate and an offset to a position of a start of other data. The offload device may determine whether a third candidate header is positioned after a data length associated with the second candidate header. After M number of identifications of candidate headers identified positioned at positions determined by the data length of a previous candidate header, the process may proceed to 812 . Note that in some examples, if M headers are not found in a certain period of time, an indication can be made to the host to indicate the loss of synchronization, and the host can cause the swap engine to find the candidate headers. Stop or pause search.

Gemäß einigen Ausführungsbeispielen können einige Rechenressourcen der Auslagerungsvorrichtung für die Ausführung der Suche nach Headern verwendet werden, anstatt im Leerlauf zu sein oder die Host-CPU für die Ausführung der Header-Detektion zu verwenden. Dies kann die CPU-Auslastung senken oder es der CPU erlauben, für andere Aktivitäten verwendet zu werden, die Header-Detektion, z. B., um eine Geschwindigkeit der Datenentschlüsselung zu erhöhen.According to some embodiments, instead of being idle or using the host CPU to perform header detection, some computing resources of the offloading device may be used to perform the search for headers. This can lower CPU usage or allow the CPU to be used for other activities that require header detection, e.g. B. to increase a speed of data decryption.

Bei 812 kann der Host bestimmen, ob die M Header-Kandidaten gültigen Headern entsprechen. Beispielsweise kann eine Anwendung, ein Betriebssystem oder ein Treiber basierend darauf, dass sie gültige Versions-Identifizierer aufweisen oder erwartete Werte in anderen Feldern aufweisen, bestimmen, ob die M Header-Kandidaten Headern entsprechen. Wenn die M Header-Kandidaten gültigen Headern entsprechen, kann der Prozess zu 814 übergehen. Wenn einer oder mehrere der M Header-Kandidaten nicht einem gültigen Header entsprechen, kann der Prozess zu 810 zurückkehren.At 812, the host can determine whether the M candidate headers correspond to valid headers. For example, an application, operating system, or driver may determine whether the M header candidates correspond to headers based on having valid version identifiers or having expected values in other fields. If the M candidate headers correspond to valid headers, the process may proceed to 814 . If one or more of the M candidate headers does not correspond to a valid header, the process may return to 810 .

Bei 814 kann der Host der Auslagerungsvorrichtung anzeigen, dass die M Header-Kandidaten gültigen Daten-Headern entsprechen. Bei 816 kann die Auslagerungsvorrichtung die Entschlüsselung von Daten, die einem nächsten empfangenen Daten-Header zugeordnet sind, wieder aufnehmen. Der nächste empfangene Daten-Header kann ein Daten-Header sein, der von der Auslagerungsvorrichtung identifiziert wird, nachdem die Auslagerungsvorrichtung eine Anzeige empfängt, dass die M Header-Kandidaten Daten-Headern entsprechen.At 814, the host may indicate to the offload device that the M candidate headers correspond to valid data headers. At 816, the offload device may resume decryption of data associated with a next received data header. The next received data header may be a data header identified by the offload device after the offload device receives an indication that the M header candidates correspond to data headers.

9 stellt ein System dar. Das System kann hierin beschriebene Ausführungsbeispiele verwenden, um die Datenentschlüsselung und die Header-Suche an eine Auslagerungsmaschine einer Netzwerkschnittstelle auszulagern. Ein System 900 umfasst einen Prozessor 910, der eine Verarbeitung, eine Operationsverwaltung und eine Ausführung von Anweisungen für das System 900 bereitstellt. Der Prozessor 910 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU; graphics processing unit), Verarbeitungskern oder andere Verarbeitungshardware umfassen, um die Verarbeitung für das System 900 oder eine Kombination von Prozessoren bereitzustellen. Der Prozessor 910 steuert den Gesamtbetrieb des Systems 900 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder dergleichen oder eine Kombination solcher Bauelemente sein oder umfassen. Eine xPU oder XPU kann sich zumindest auf eine oder mehrere beziehen von: einer CPU, IPU, DPU, GPU, GPGPU und/oder anderen Verarbeitungseinheiten (z. B. Beschleuniger). 9 Figure 12 illustrates a system. The system may use embodiments described herein to offload data decryption and header lookup to a network interface offload engine. A system 900 includes a processor 910 that provides processing, operation management, and execution of instructions for the system 900. Processor 910 may include any type of microprocessor, central processing unit (CPU), graphics processing unit (GPU), processing core, or other processing hardware to provide processing for system 900 or a combination of processors. Processor 910 controls the overall operation of system 900 and may include one or more general purpose or special purpose programmable microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic devices ( PLDs; programmable logic devices) or the like or a combination of such components. An xPU or XPU can refer to at least one or more of: a CPU, IPU, DPU, GPU, GPGPU, and/or other processing units (e.g., accelerators).

Verschiedene Beispiele für einen Prozessor, eine XPU oder eine IPU können eine aus Microservices zusammengesetzte Anwendung ausführen, wobei ein Microservice in seinem eigenen Prozess läuft und unter Verwendung von Protokollen kommuniziert (z. B. Anwendungsprogrammschnittstelle (API; application program interface), Nachrichtendienst oder Remote Procedure Calls (RPC)). Microservices können unabhängig unter Verwendung einer zentralisierten Verwaltung dieser Services eingesetzt werden. Das Verwaltungssystem kann in verschiedenen Programmiersprachen geschrieben sein und verschiedene Datenspeichertechnologien verwenden. Ein Microservice kann charakterisiert sein durch eines oder mehrere von: Verwendung feinkörniger Schnittstellen (zu unabhängig einsetzbaren Diensten), polyglotte Programmierung (z. B. in mehreren Sprachen geschriebener Code zur Erfassung zusätzlicher Funktionen und Effizienz, die in einer einzigen Sprache nicht verfügbar sind) oder Einsatz von Containern oder virtuellen Maschinen und dezentralisierte kontinuierliche Lieferung von Microservices.Various examples of a processor, XPU, or IPU may run an application composed of microservices, where a microservice runs in its own process and communicates using protocols (e.g., application program interface (API), messaging, or remote Procedure Calls (RPC)). Microservices can be deployed independently using centralized management of these services. The management system can be written in different programming languages and use different data storage technologies. A microservice can be characterized by one or more of: using fine-grained interfaces (to independently deployable services), polyglot programming (e.g. code written in multiple languages to capture additional functionality and efficiencies not available in a single language), or Use of containers or virtual machines and decentralized continuous delivery of microservices.

Bei einem Beispiel umfasst das System 900 eine Schnittstelle 912, die mit dem Prozessor 910 gekoppelt ist, was eine Höhere-Geschwindigkeit-Schnittstelle oder eine Hoher-Durchsatz-Schnittstelle für Systemkomponenten darstellen kann, die Höhere-Bandbreite-Verbindungen benötigen, wie beispielsweise ein Speicherteilsystem 920 oder Grafikschnittstellen-Komponenten 940 oder Beschleuniger 942. Die Schnittstelle 912 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet die Grafikschnittstelle 940 eine Schnittstelle mit Grafikkomponenten, um an einen Benutzer des Systems 900 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 940 eine hochauflösende (HD; high definition) Anzeige treiben, die an einen Benutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z. B. 1080p), Retina-Displays, 4K (ultrahochauflösend oder UHD (ultrahigh definition)) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 940 eine Anzeige basierend auf Daten, die in dem Speicher 930 gespeichert sind oder basierend auf Operationen, die der Prozessor 910 ausführt oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 940 eine Anzeige basierend auf Daten, die in dem Speicher 930 gespeichert sind oder basierend auf Operationen, die der Prozessor 910 ausführt oder beidem.In one example, system 900 includes an interface 912 coupled to processor 910, which may represent a higher speed interface or a high throughput interface for system components requiring higher bandwidth connections, such as a memory subsystem 920 or graphics interface components 940 or accelerators 942. The interface 912 represents an interface circuit that may be a stand alone component or integrated on a processor die. If present, the graphics interface 940 interfaces with graphics components to provide a visual display to a user of the system 900 . In one example, graphics interface 940 may drive a high definition (HD) display that provides an output to a user. High definition can refer to a display that has a pixel density of approximately 100 PPI (pixels per inch) or greater and can include formats such as Full HD (e.g. 1080p), Retina displays, 4K (ultra high definition or UHD (ultra high definition)) or others. In one example, the display may include a touch screen display. In one example, graphics interface 940 generates a display based on data stored in memory 930 or based on operations performed by processor 910, or both. In one example, graphics interface 940 generates a display based on data stored in memory 930 or based on operations performed by processor 910, or both.

Die Beschleuniger 942 können Programmierbare- oder Feste-Funktion-Auslagerungsmaschinen sein, auf die ein Prozessor 910 zugreifen kann oder die von einem Prozessor 910 verwendet werden können. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 942 Kompressions-(DC) Fähigkeit, Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierung-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 942 zusätzlich oder alternativ die hierin beschriebenen Feldauswahlsteuerungsfähigkeiten bereit. In einigen Fällen können die Beschleuniger 942 in eine CPU integriert oder durch verschiedene Vorrichtungen mit einer CPU verbunden sein (z. B. ein Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt). Beispielsweise können die Beschleuniger 942 einen Einzel- oder Multi-Kern-Prozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Einzel- oder Multi-Level-Cache, funktionale Einheiten, verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronales-Netzwerk-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie beispielsweise feldprogrammierbare Gate-Arrays (FPGAs) umfassen. Die Beschleuniger 942 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten bereitstellen oder Grafikverarbeitungseinheiten können für die Verwendung durch Modelle der künstlichen Intelligenz (KI (artificial intelligence (AI)) oder des maschinellen Lernens (ML; machine learning) zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell eines oder mehrere verwenden oder umfassen von: einem Bestärkendes-Lemen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrenten kombinatorischen neuronalen Netzwerk oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch AI- oder ML-Modelle zur Verfügung gestellt werden.The accelerators 942 may be programmable or fixed function offload engines that a processor 910 can access or use. at for example, an accelerator among accelerators 942 may provide compression (DC) capability, cryptographic services such as public key encryption (PKE), cipher, hash/authentication capabilities, decryption, or other capabilities or services. In some embodiments, an accelerator among accelerators 942 additionally or alternatively provides the field selection control capabilities described herein. In some cases, the accelerators 942 may be integrated into a CPU or connected to a CPU through various devices (e.g., a connector to a motherboard or circuit board that includes a CPU and provides an electrical interface with the CPU). For example, accelerators 942 may include a single or multi-core processor, graphics processing unit, logic execution unit, single or multi-level cache, functional units usable for executing programs or threads independently, application specific integrated circuits (ASICs), Neural network processors (NNPs), programmable control logic, and programmable processing elements such as field programmable gate arrays (FPGAs). The accelerators 942 may provide multiple neural networks, CPUs, processor cores, general purpose graphics processing units, or graphics processing units may be provided for use by artificial intelligence (AI) or machine learning (ML) models For example, the AI model may use or include one or more of: a reinforcement learning scheme, a Q-learning scheme, deep Q-learning, or an Asynchronous Advantage Actor-Critic (A3C), a combinatorial neural network , a recurrent combinatorial neural network, or another AI or ML model Multiple neural networks, processor cores, or graphics processing units can be made available for use by AI or ML models.

Ein Speicherteilsystem 920 stellt den Hauptspeicher des Systems 900 dar und stellt Speicherung für einen Code, der durch den Prozessor 910 ausgeführt werden soll, oder für Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 920 kann eine oder mehrere Speichervorrichtungen 930 umfassen, wie beispielsweise Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM; random access memory), wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 930 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 932, um eine Softwareplattform für eine Ausführung von Anweisungen in dem System 900 bereitzustellen. Zusätzlich können Anwendungen 934 auf der Software-Plattform des OS 932 von dem Speicher 930 ausgeführt werden. Die Anwendungen 934 repräsentieren Programme, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 936 repräsentieren Agenten oder Routinen, die an das OS 932 oder eine oder mehrere Anwendungen 934 Hilfsfunktionen bereitstellen, oder eine Kombination. Das OS 932, die Anwendungen 934 und die Prozesse 936 stellen Software-Logik bereit, um Funktionen für das System 900 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 920 eine Speichersteuerung 922, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 930 ist. Es wird darauf hingewiesen, dass die Speichersteuerung 922 ein physikalischer Teil des Prozessors 910 oder ein physikalischer Teil der Schnittstelle 912 sein könnte. Zum Beispiel kann die Speichersteuerung 922 eine integrierte Speichersteuerung sein, die auf einer Schaltung mit dem Prozessor 910 integriert ist.A memory subsystem 920 represents the main memory of system 900 and provides storage for code to be executed by processor 910 or data values to be used in executing a routine. The memory subsystem 920 may include one or more memory devices 930, such as read-only memory (ROM), flash memory, one or more varieties of random access memory (RAM), such as DRAM, or other storage devices, or a combination of such devices. Memory 930 stores and hosts, among other things, an operating system (OS) 932 to provide a software platform for execution of instructions in system 900 . In addition, applications 934 can be executed from memory 930 on the OS 932 software platform. Applications 934 represent programs that have their own operational logic for performing one or more functions. Processes 936 represent agents or routines that provide utility functions to the OS 932 or one or more applications 934, or a combination. The OS 932, applications 934, and processes 936 provide software logic to provide system 900 functions. In one example, memory subsystem 920 includes a memory controller 922, which is a memory controller for generating and issuing instructions to memory 930. It is noted that the memory controller 922 could be a physical part of the processor 910 or a physical part of the interface 912. For example, memory controller 922 may be an integrated memory controller integrated on circuit with processor 910 .

Auch wenn nicht eigens dargestellt, versteht es sich, dass das System 900 einen oder mehrere Busse oder Bus-Systeme zwischen Vorrichtungen umfassen kann, wie beispielsweise einen Speicher-Bus, einen Grafik-Bus, Schnittstellen-Busse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheral Component Interconnect- (PCI-) Bus, einem Hyper Transport- oder Industry Standard Architecture- (ISA-) Bus, einem Small Computer System Interface- (SCSI-) Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers (IEEE) Standard 1394-Bus (Firewire) umfassen.Although not specifically illustrated, it is understood that the system 900 may include one or more inter-device buses or bus systems, such as a memory bus, a graphics bus, interface buses, or others. Buses or other signal lines may communicatively or electrically couple components together, or communicatively as well as electrically couple the components. Buses may include physical communication lines, point-to-point links, bridges, adapters, controllers, or other circuitry or a combination. For example, buses may be one or more of a system bus, a Peripheral Component Interconnect (PCI) bus, a Hyper Transport or Industry Standard Architecture (ISA) bus, a Small Computer System Interface (SCSI) bus, a universal serial bus (USB) or an Institute of Electrical and Electronics Engineers (IEEE) standard 1394 bus (Firewire).

Bei einem Beispiel umfasst das System 900 eine Schnittstelle 914, die mit der Schnittstelle 912 gekoppelt sein kann. Bei einem Beispiel repräsentiert die Schnittstelle 914 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 914. Eine Netzwerkschnittstelle 950 stellt an das System 900 die Fähigkeit bereit, über ein oder mehrere Netzwerke mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 950 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlosstandard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 950 kann Daten an eine Vorrichtung senden, die in dem gleichen Rechenzentrum oder Rack ist, oder an eine entfernte Vorrichtung, was ein Senden von in einem Speicher gespeicherten Daten umfassen kann. Die Netzwerkschnittstelle 950 kann Daten von einer entfernten Vorrichtung empfangen, was eine Speicherung von empfangenen Daten in Speicher umfassen kann.In one example, system 900 includes an interface 914 that may be coupled to interface 912 . In one example, interface 914 represents interface circuitry, which may include discrete components and integrated circuitry. In one example, multiple user interface components or peripheral components, or both, couple to interface 914. A network interface 950 provides system 900 with the ability to communicate with remote devices (e.g., servers or other computing devices) over one or more networks. The network interface 950 can include an Ethernet adapter, wireless connection components ten, cellular network connection components, USB (Universal Serial Bus) or other wired or wireless standards-based or proprietary interfaces. Network interface 950 may send data to a device that is in the same data center or rack, or to a remote device, which may include sending data stored in memory. Network interface 950 may receive data from a remote device, which may include storing received data in memory.

Einige Beispiele der Netzwerkvorrichtung 950 sind Teil einer Infrastrukturverarbeitungseinheit (IPU) oder Datenverarbeitungseinheit (DPU) oder werden von einer IPU oder DPU verwendet. Eine IPU oder DPU kann eine Netzwerkschnittstelle mit einem oder mehreren programmierbaren oder Feste-Funktion-Prozessoren umfassen, um eine Auslagerung von Operationen auszuführen, die von einer CPU hätten ausgeführt werden können. Die IPU oder DPU kann eine oder mehrere Speichervorrichtungen umfassen. Bei einigen Beispielen kann die IPU oder DPU virtuelle Schaltoperationen ausführen, Speichertransaktionen verwalten (z. B. Komprimierung, Kryptographie, Virtualisierung usw.) und Operationen verwalten, die auf anderen IPUs, DPUs, Servern oder Vorrichtungen ausgeführt werden.Some examples of network device 950 are part of, or are used by, an infrastructure processing unit (IPU) or data processing unit (DPU). An IPU or DPU may include a network interface with one or more programmable or fixed function processors to offload operations that could have been performed by a CPU. The IPU or DPU may include one or more storage devices. In some examples, the IPU or DPU can perform virtual switching operations, manage memory transactions (e.g., compression, cryptography, virtualization, etc.), and manage operations performed on other IPUs, DPUs, servers, or devices.

Einige Beispiele der Netzwerkvorrichtung 950 können TLS-Auslagerung und Header-Suche gemäß hierin beschriebenen Ausführungsbeispielen ausführen.Some examples of network device 950 may perform TLS offload and header lookup according to embodiments described herein.

Bei einem Beispiel umfasst das System 900 eine oder mehrere Eingangs-/Ausgangs- (I/O; Input/Output) Schnittstelle(n) 960. Die I/O-Schnittstelle 960 kann eine oder mehrere Schnittstellenkomponenten umfassen, über die ein Benutzer mit dem System 900 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellenbildung). Eine Peripherieschnittstelle 970 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig mit dem System 900 verbinden. Eine abhängige Verbindung ist eine, bei der das System 900 die Software-Plattform oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.In one example, the system 900 includes one or more input/output (I/O) interface(s) 960. The I/O interface 960 may include one or more interface components through which a user can communicate with the System 900 interacts (e.g., audio, alphanumeric, tactile/touchable, or other interfacing). A peripheral interface 970 may include any hardware interface not specifically mentioned above. Peripheral devices generally refer to devices that dependently connect to system 900. A dependent connection is one in which the system 900 provides the software platform or hardware platform, or both, on which the operation is performed and with which a user interacts.

Bei einem Beispiel umfasst das System 900 ein Speicherungsteilsystem 980, um Daten auf eine nichtflüchtige Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 980 mit Komponenten des Speicherteilsystems 920 überlappen. Das Speicherungsteilsystem 980 umfasst eine oder mehrere Speicherungsvorrichtung(en) 984, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen können, wie beispielsweise eine oder mehrere magnetische, Festkörper- (solid state) oder optisch-basierte Platten oder eine Kombination. Eine Speicherung 984 umfasst einen Code oder Anweisungen und Daten 986 in einem dauerhaften Zustand (z. B. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 900 erhalten). Die Speicherung 984 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 930 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um an den Prozessor 910 Anweisungen bereitzustellen. Während die Speicherung 984 nichtflüchtig ist, kann der Speicher 930 einen flüchtigen Speicher umfassen (z. B. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 900 unterbrochen ist). Bei einem Beispiel umfasst das Speicherungsteilsystem 980 eine Steuerung 982, um eine Schnittstelle mit der Speicherung 984 zu bilden. Bei einem Beispiel ist die Steuerung 982 ein physischer Teil der Schnittstelle 914 oder des Prozessors 910 oder kann Schaltungen oder Logik sowohl in dem Prozessor 910 als auch in der Schnittstelle 914 umfassen.In one example, the system 900 includes a storage subsystem 980 to store data in a non-volatile manner. In one example, at least certain components of storage 980 may overlap with components of storage subsystem 920 in certain system implementations. Storage subsystem 980 includes one or more storage devices 984, which may be or include any conventional medium for storing large amounts of data in a non-volatile manner, such as one or more magnetic, solid state, or optical-based disks, or a combination . Storage 984 includes code or instructions and data 986 in a persistent state (e.g., the value persists despite power to the system 900 being interrupted). Storage 984 may generally be considered a "memory," although memory 930 is typically execution or operational memory for providing processor 910 with instructions. While storage 984 is non-volatile, memory 930 may include volatile memory (e.g., the value or state of the data is indeterminate when power to system 900 is interrupted). In one example, storage subsystem 980 includes a controller 982 to interface with storage 984 . In one example, controller 982 is a physical part of interface 914 or processor 910, or may include circuitry or logic in both processor 910 and interface 914.

Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, falls Leistung zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher erfordert ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). Ein weiteres Beispiel für einen flüchtigen Speicher umfasst einen Cache oder einen statischen Direktzugriffsspeicher (SRAM; static random access memory). Ein Speicherteilsystem, wie es hierin beschrieben ist, kann mit einer Reihe von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (Double Data Rate Version 3, ursprüngliche Herausgabe durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR-Version 4), LPDDR3 (Low Power DDR-Version3 (Niedrig-Leistungs-DDR-Version3), JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2 (breiter Eingang/Ausgang Version 2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (derzeit in Diskussion durch JEDEC), HBM2 (HBM-Version 2), derzeit in Diskussion durch JEDEC, oder anderen oder Kombinationen von Speichertechnologien, und Technologien, die auf Herleitungen oder Erweiterungen solcher Spezifikationen basieren.Volatile memory is memory whose state (and hence the data stored therein) is indeterminate if power to the device is interrupted. Dynamic volatile memory requires updating the data stored in the device to maintain state. An example of dynamic volatile memory includes dynamic random access memory (DRAM) or a variant such as synchronous DRAM (SDRAM). Another example of volatile memory includes a cache or static random access memory (SRAM). A memory subsystem as described herein may be compatible with a number of memory technologies, such as DDR3 (Double Data Rate Version 3, originally published by JEDEC (Joint Electronic Device Engineering Council) on June 27, 2007). DDR4 (DDR version 4, first specification published in September 2012 by JEDEC), DDR4E (DDR version 4), LPDDR3 (Low Power DDR version3), JESD209-3B, August 2013 by JEDEC ), LPDDR4) LPDDR version 4, JESD209-4 originally released by JEDEC August 2014), WIO2 (Wide Input/Output Version 2), JESD229-2 originally released by JEDEC August 2014 , HBM (High Bandwidth Memory), JESD325, originally published by JEDEC in October 2013, LPDDR5 (currently under discussion by JEDEC), HBM2 (HBM version 2), currently under discussion by JEDEC, or other or combinations of storage technologies, and technologies based on derivations or extensions of such specifications.

Eine nichtflüchtige Speicher- (NVM; non-volatile memory) Vorrichtung ist ein Speicher, dessen Zustand bestimmt ist, auch falls Leistung zu der Vorrichtung unterbrochen wird. Bei einem Ausführungsbeispiel kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise NAND-Technologien, oder genauer, einen Multi-Schwellenpegel-NAND-Flash-Speicher (zum Beispiel Single-Level Cell („SLC“), Multi-Level Cell („MLC“), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder ein anderes NAND) umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Write-in-Place Cross Point- (Vor-Ort-Schreiben-Kreuzpunkt-) Speichervorrichtung oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS), Intel® Optane™-Speicher, NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (z. B. Chalkogenidglas) verwenden, einen resistiven Speicher, umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM), magnetoresistiver Direktzugriffsspeicher (MRAM) mit Memristor-Technologie, Spin Transfer Torque- (STT-) MRAM, eine auf Spintronik-Magnet-Übergang-Speicher basierende Vorrichtung, eine auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basierende Vorrichtung, eine DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine oder mehrere der Obigen oder einen anderen Speicher.A non-volatile memory (NVM) device is a memory whose state is determined even if power to the device is interrupted. In one embodiment, the NVM device may be a block-addressable memory device such as NAND technologies, or more specifically, multi-threshold NAND flash memory (e.g., single-level cell ("SLC"), multi-level cell (" MLC"), Quad-Level Cell ("QLC"), Tri-Level Cell ("TLC"), or other NAND). An NVM device may also include a byte-addressable three-dimensional write-in-place cross-point memory device or other byte-addressable write-in-place NVM device (also referred to as persistent storage), such as single or multi-level phase change memory (PCM) or phase change memory with a switch (PCMS), Intel® Optane™ memory, NVM devices using chalcogenide phase change material (eg, chalcogenide glass), resistive memory, comprising metal oxide based, oxygen vacancy based and conductive bridge random access memory (CB-RAM), nanowire memory, ferroelectric random access memory (FeRAM, FRAM), magnetoresistive random access memory (MRAM) with memristor technology, spin transfer torque (STT) MRAM, a spintronic magnetic junction memory based device, a magnetic tunneling junction (MTJ) b asing device, a DW (Domain Wall; domain wall) and SOT (Spin Orbit Transfer) based device, a thyristor based memory device or one or more of the above or other memory.

Eine Leistungsquelle (nicht abgebildet) stellt an die Komponenten des Systems 900 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 900, um an die Komponenten des Systems 900 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC-(Wechselstrom-zu-Gleichstrom; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom- (AC-) Leistung kann eine Erneuerbare-Energien (z. B. Solarleistung) -Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom- (DC-) Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom- (AC-zu-DC-) Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.A power source (not shown) provides power to the system 900 components. More specifically, a power source typically interfaces with one or more power supplies in the system 900 to provide power to the system 900 components. In one example, the power supply includes an AC-to-DC (alternating current to direct current) adapter for plugging into an electrical outlet. Such alternating current (AC) power may be a renewable energy (e.g., solar power) power source. In one example, a power source includes a direct current (DC) power source, such as an external alternating current to direct current (AC to DC) converter. In one example, a power source or power supply includes wireless charging hardware for charging via proximity to a charging pad. In one example, a power source may include an internal battery, an AC power supply, a motion-based power supply, a solar power supply, or a fuel cell source.

Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzwerkzugänge miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Datenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um serverartige Funktionen auszuführen, das heißt, einen „Server auf einer Karte“. Dementsprechend umfasst ein Blade Komponenten, die herkömmlichen Servern gemeinsam sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (z. B. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.Embodiments herein may be implemented in various types of computing and networking equipment such as switches, routers, racks, and blade servers used in a data center and/or server farm environment. The servers used in data centers and server farms include tiered server configurations such as rack-based servers or blade servers. These servers are communicatively linked via various network approaches, such as partitioning server sets into local area networks (LANs) with appropriate switching and routing facilities between the LANs to form a private intranet. For example, cloud hosting facilities can typically utilize large data centers with multiple servers. A blade includes a separate computing platform configured to perform server-like functions, i.e., a "server on a card". Accordingly, a blade includes components that are common to conventional servers, including a main printed circuit board (mainboard; main board) that has internal cabling (e.g., buses) for coupling appropriate integrated circuits (ICs) and other components that are on the board are attached, provides.

Bei einem Beispiel kann das System 900 unter Verwendung von miteinander verbundenen Rechensystemen aus Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeitsverbindungen können verwendet werden, um Vorrichtungen kommunikativ zu koppeln, wobei Hochgeschwindigkeitsverbindungen konsistent sein können mit einem oder mehreren von: Ethernet (IEEE 802.3), remote direct memory access (RDMA), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), User Datagram Protocol (UDP), quick User Datagram Protocol (UDP) Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) interconnect, OpenCAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, und Variationen derselben. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknote kopiert oder gespeichert werden.In one example, system 900 may be implemented using interconnected computing systems of processors, memory, storage, network interfaces, and other components. High-speed links may be used to communicatively couple devices, where high-speed links may be consistent with one or more of: Ethernet (IEEE 802.3), remote direct memory access (RDMA), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), User Datagram Protocol (UDP), quick User Datagram Protocol (UDP) Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On -Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) interconnect, OpenCAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, and variations thereof. Data may be copied or stored on virtualized storage nodes using a protocol such as NVMe over Fabrics (NVMe-oF) or NVMe.

10 stellt eine Umgebung 1000 dar, umfassend mehrere Rechen-Racks 1002, von denen einige einen Top of Rack- (ToR) Schalter 1004, einen Pod-Verwalter 1006 und eine Mehrzahl von gepoolten Systemschubladen umfassen. Verschiedene Ausführungsformen können verwendet werden, um Daten in einer Netzwerkschnittstelle zu entschlüsseln und eine Header-Suche in einer Netzwerkschnittstelle auszuführen. Im Allgemeinen können die gepoolten Systemschubladen gepoolte Rechenschubladen und gepoolte Speicherungsschubladen umfassen. Optional können die gepoolten Systemschubladen auch gepoolte Speicherschubladen und gepoolte Eingangs-/Ausgangs- (I/O-) Schubladen umfassen. Bei dem dargestellten Ausführungsbeispiel umfassen die gepoolten Systemschubladen eine Intel® XEON® gepoolte Computerschublade 1008 und eine Intel® ATOM™ gepoolte Rechenschublade 1010, eine gepoolte Speicherungsschublade 1012, eine gepoolte Speicherschublade 1014 und eine gepoolte I/O-Schublade 1016. Einige der gepoolten Systemschubladen sind über einen Hochgeschwindigkeits-Link 1018 mit dem ToR-Schalter 1004 verbunden, wie beispielsweise einen Ethernet-Link oder einen Silizium-Photonik- (SiPh-) optischen Link. 10 Figure 10 illustrates an environment 1000 comprising multiple compute racks 1002, some of which include a top of rack (ToR) switch 1004, a pod manager 1006, and a plurality of pooled system drawers. Various embodiments may be used to decrypt data on a network interface and perform header lookup on a network interface. In general, the pooled system drawers may include pooled compute drawers and pooled storage drawers. Optionally, the pooled system drawers may also include pooled memory drawers and pooled input/output (I/O) drawers. In the illustrated embodiment, the pooled system drawers include an Intel® XEON® pooled compute drawer 1008 and an Intel® ATOM™ pooled compute drawer 1010, a pooled storage drawer 1012, a pooled memory drawer 1014, and a pooled I/O drawer 1016. Some of the pooled system drawers are connected to the ToR switch 1004 via a high-speed link 1018, such as an Ethernet link or a silicon photonics (SiPh) optical link.

Mehrere der Rechen-Racks 1002 können über ihre ToR-Schalter 1004 miteinander verbunden sein (z. B. mit einem Pod-Ebene-Schalter oder einem Datenzentrum-Schalter), wie durch die Verbindungen zu einem Netzwerk 1020 dargestellt. Bei einigen Ausführungsbeispielen werden Gruppen von Rechen-Racks 1002 als separate Pods über (einen) Pod-Verwalter 1006 verwaltet. Bei einem Ausführungsbeispiel wird ein einzelner Pod-Verwalter verwendet, um Racks in dem Pod zu verwalten. Alternativ können verteilte Pod-Verwalter für Pod-Verwaltungs-Operationen verwendet werden.Multiple of the compute racks 1002 may be interconnected (e.g., to a pod-level switch or a data center switch) via their ToR switches 1004 as represented by connections to a network 1020 . In some embodiments, groups of compute racks 1002 are managed as separate pods via a pod manager 1006 . In one embodiment, a single pod manager is used to manage racks in the pod. Alternatively, distributed pod managers can be used for pod management operations.

Eine Umgebung 1000 umfasst ferner eine Verwaltungsschnittstelle 1022, die verwendet wird, um verschiedene Aspekte der Umgebung zu verwalten. Dies umfasst ein Verwalten einer Rack-Konfiguration, mit entsprechenden Parametern, die als Rack-Konfigurationsdaten 1024 gespeichert sind.An environment 1000 also includes a management interface 1022 used to manage various aspects of the environment. This includes managing a rack configuration, with corresponding parameters stored as rack configuration data 1024 .

Bei einigen Beispielen können die Netzwerkschnittstelle und andere hierin beschriebene Ausführungsbeispiele in Verbindung mit einer Basisstation (z. B. 3G, 4G, 5G usw.), Makro-Basisstation (z. B. 5G-Netzwerke), Picostation (z. B. ein IEEE 802.11-kompatibler Zugangspunkt), Nanostation (z. B. für Point-to-MultiPoint- (PtMP-) Anwendungen), lokalen Rechenzentren, externen Rechenzentren, Edge-Netzwerkelementen, Nebelnetzwerkelementen und/oder hybriden Rechenzentren (z. B. Rechenzentren, die Virtualisierung, Cloud und softwaredefinierte Netzwerke verwenden, um Anwendungs-Workloads über physische Rechenzentren und verteilte Multi-Cloud-Umgebungen hinweg bereitzustellen) verwendet werden.In some examples, the network interface and other embodiments described herein may be used in conjunction with a base station (e.g., 3G, 4G, 5G, etc.), macro base station (e.g., 5G networks), pico station (e.g., a IEEE 802.11 compliant access point), nanostation (e.g., for point-to-multipoint (PtMP) applications), on-premises data centers, remote data centers, edge network elements, fog network elements, and/or hybrid data centers (e.g., data centers, that use virtualization, cloud, and software-defined networking to deliver application workloads across physical data centers and distributed multi-cloud environments).

Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination von beiden implementiert sein. Bei einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze usw. umfassen. Bei einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination derselben umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklus-Budget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Ein Prozessor kann eines oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitalen Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder Software-Elementen.Various examples may be implemented using hardware elements, software elements, or a combination of both. In some examples, hardware elements can include devices, components, processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, etc.), integrated circuits, ASICs, PLDs, DSPs, FPGAs, memory units, logic gates, registers , a semiconductor device, chips, microchips, chipsets, etc. In some examples, software elements can be software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, APIs, sets of instructions, computational code, computer code, code segments , computer code segments, words, values, symbols, or any combination thereof. The determination of whether an example is implemented using hardware elements and/or software elements can be made according to any number of factors such as desired computation rate, power levels, thermal tolerances, processing cycle budget, input data rates, output data rates , memory resources, data bus speeds, and other design or performance constraints as desired for a given implementation. A processor can be one or more of a combination of a hardware state machine, digital control logic, central processing unit, or any hardware, firmware, and/or software elements.

Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zur Speicherung von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speicherungsmedium eine oder mehrere Arten von computerlesbaren Speicherungsmedien umfassen, die fähig sind, elektronische Daten zu speichern, umfassend flüchtigen oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter. Bei einigen Beispielen kann die Logik verschiedene Software-Elemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Teilroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon umfassen.Some examples may be implemented using or as an article of manufacture or at least one computer-readable medium. A computer-readable medium may include a non-transitory storage medium for storing logic. In some examples, the non-volatile storage medium may include one or more types of computer-readable storage media capable of storing electronic data, including volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writable or rewritable memory, and so on. In some examples, the logic can be various software elements, such as software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, API, sets of instructions , computational code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof.

Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speichervorrichtungsmedium zum Speichern oder Aufrechterhalten von Anweisungen umfassen, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System ausgeführt werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und dergleichen. Die Anweisungen können gemäß einer vordefinierten Computersprache, -weise oder -syntax implementiert sein, um eine Maschine, ein(e) Rechenvorrichtung oder System anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprachen-, Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.According to some examples, a computer-readable medium may include a non-transitory storage device medium for storing or maintaining instructions that, when executed by a machine, computing device, or system, cause the machine, computing device, or system to perform methods and/or operations pursuant to carry out the examples described. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The instructions may be implemented according to a predefined computer language, manner, or syntax to direct a machine, computing device, or system to perform a particular function. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled, and/or interpreted programming language.

Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.One or more aspects of at least one example may be implemented by representative instructions, stored on at least one machine-readable medium, representing various logic within the processor that, when read by a machine, computing device, or system, the machine , causing the computing device or system to produce logic for performing the techniques described herein. Such representations, known as "IP cores," may be stored on a tangible, machine-readable medium and shipped to various customers or manufacturing facilities for loading into the manufacturing machines that actually make the logic or processor.

Das Auftreten der Phrase „ein einzelnes Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren abgebildet sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zur Implementierung dieser Funktionen notwendigerweise unterteilt, weggelassen oder bei Ausführungsbeispielen umfasst sein müssten.Occurrences of the phrase "a single example" or "an example" are not necessarily referring to the same example or embodiment. Any aspect described herein may be combined with any other aspect or similar aspect described herein, regardless of whether the aspects are described in relation to the same figure or element. Dividing, omitting, or including block functions depicted in the accompanying figures does not imply that the hardware components, circuits, software, and/or elements to implement those functions must necessarily be divided, omitted, or included in exemplary embodiments.

Einige Beispiele können unter Verwendung der Ausdrücke „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch weiter miteinander zusammenarbeiten oder interagieren.Some examples may be described using the terms "coupled" and "connected" along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, descriptions using the terms "connected" and/or "coupled" may indicate that two or more elements are in direct physical or electrical contact with one another. However, the term "coupled" can also mean that two or more elements are not in direct contact with each other, but continue to cooperate or interact with each other.

Die Begriffe „erste,r,s“, „zweite,r,s“ und Ähnliches bezeichnen hierin nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein,e,s“ (a, an) bezeichnen hierin nicht eine Mengenbeschränkung, sondern vielmehr das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „aufgeschaltet“ (asserted), der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anwenden irgendeines Logikpegels auf das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgen oder folgen nach einem anderen Ereignis oder Ereignissen beziehen. Andere Abfolgen von Schritten können auch gemäß alternativen Ausführungsbeispielen ausgeführt werden. Ferner können zusätzliche Schritte, abhängig von den bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Fachmann auf dem Gebiet, der den Nutzen dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und alternativen Ausführungsbeispiele verstehen.The terms "first,r,s", "second,r,s" and the like are not used herein to denote any order, quantity, or importance, but rather are used to distinguish one element from another. As used herein, the terms "a,e,s" (a, an) do not denote a quantity limitation, but rather the presence of at least one of the items referred to. The term "asserted," as used herein with respect to a signal, means a state of the signal in which the signal is active and achieved by applying any logic level to the signal, either logic 0 or logic 1 can. The terms "follow" or "after" may refer to immediately following or following another event or events. Other sequences of steps may also be performed according to alternative embodiments. Furthermore, additional steps may be added or removed depending on the particular application. Any combination of changes may be used and the many variations, modifications, and alternative embodiments would be understood by those skilled in the art having the benefit of this disclosure.

Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff usw. entweder X, Y oder Z oder irgendeine Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen und soll nicht implizieren, dass bestimmte Ausführungsbeispiele das Vorliegen von zumindest einem von X, zumindest einem von Y oder zumindest einem von Z erfordern. Zusätzlich soll konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder irgendeine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.Disjunctive language, such as the phrase "at least one of X, Y, or Z," unless specifically stated otherwise, is otherwise understood within the context generally used to show that an object, term, etc. can be either X, Y or Z or any combination thereof (e.g. X, Y and/or Z). Thus, such disjunctive language is not generally intended and is not intended to imply that particular embodiments require the presence of at least one of X, at least one of Y, or at least one of Z. Additionally, conjunctive language such as the phrase "at least one of X, Y, and Z" should also be understood as X, Y, Z, or any combination thereof, including "X, Y, and/or Z", unless specifically stated otherwise .

Darstellende Beispiele der Vorrichtungen, Systeme und Verfahren, die hierin offenbart sind, sind nachfolgend bereitgestellt. Ein Ausführungsbeispiel der Vorrichtungen, Systeme und Verfahren kann irgendein einzelnes oder mehrere und irgendeine Kombination der nachfolgend beschriebenen Beispiele umfassen.Representative examples of the devices, systems, and methods disclosed herein are provided below. An embodiment of the devices, systems, and methods may include any one or more and any combination of the examples described below.

Beispiel 1 umfasst eine Vorrichtung, umfassend: eine Transport Layer Security- (TLS) Auslagerungsmaschine, um: basierend auf der Detektion von verschlüsselten Daten, die einem zuvor detektierten Daten-Header nicht zugeordnet sind: nach einem oder mehreren Daten-Headern zu suchen; zumindest zwei Kandidaten-Daten-Header zur Validierung zu identifizieren, und basierend auf dem Empfang einer Anzeige, dass die zumindest zwei Kandidaten-Daten-Header gültig sind, eine Entschlüsselung von empfangenen Daten in einem oder mehreren Paketen auszuführen.Example 1 includes an apparatus comprising: a Transport Layer Security (TLS) offload engine to: based on detection of encrypted data unassociated with a previously detected data header: search for one or more data headers; identify at least two candidate data headers for validation; and based on receiving an indication that the at least two candidate data headers are valid, perform decryption of received data in one or more packets.

Beispiel 2 umfasst ein oder mehrere andere Beispiele, wobei die TLS-Auslagerungsmaschine ausgebildet ist, um: basierend auf dem Empfang einer Anzeige, dass einer oder mehrere der zumindest zwei Kandidaten-Daten-Header kein gültiger Header sind, nach zwei oder mehr anderen Kandidaten-Daten-Headern zu suchen.Example 2 includes one or more other examples wherein the TLS offload engine is configured to: based on receiving an indication that one or more of the at least two candidate data headers is not a valid header, for two or more other candidate search data headers.

Beispiel 3 umfasst ein oder mehrere andere Beispiele, wobei zur Suche nach einem oder mehreren Daten-Headern die TLS-Auslagerungsmaschine ausgebildet ist, um: einen Header-Zeichensatz zu identifizieren, der einem ersten Kandidaten-Daten-Header zugeordnet ist; eine Datenlänge zu bestimmen, die dem ersten Kandidaten-Daten-Header zugeordnet ist; und den Header-Zeichensatz zu identifizieren, der an einer Stelle basierend auf der Datenlänge einem zweiten Kandidaten-Daten-Header zugeordnet ist.Example 3 includes one or more other examples wherein, to search for one or more data headers, the TLS offload engine is configured to: identify a header character set associated with a first candidate data header; determine a data length associated with the first candidate data header; and identify the header character set associated with a second candidate data header at a location based on the data length.

Beispiel 4 umfasst ein oder mehrere andere Beispiele, wobei zur Identifizierung von zumindest zwei Kandidaten-Daten-Headern zur Validierung die TLS-Auslagerungsmaschine ausgebildet ist, um: die ersten und zweiten Kandidaten-Daten-Header an einen anderen Agenten oder eine Entität zur Validierung bereitzustellen.Example 4 includes one or more other examples wherein to identify at least two candidate data headers for validation, the TLS offload engine is configured to: provide the first and second candidate data headers to another agent or entity for validation .

Beispiel 5 umfasst ein oder mehrere andere Beispiele, wobei die TLS-Auslagerungsmaschine ausgebildet ist, um: nach einem anderen Kandidaten-Daten-Header nach dem ersten Kandidaten-Daten-Header und vor dem zweiten Kandidaten-Daten-Header zu suchen.Example 5 includes one or more other examples where the TLS offload engine is configured to: search for another candidate data header after the first candidate data header and before the second candidate data header.

Beispiel 6 umfasst ein oder mehrere andere Beispiele, wobei zumindest ein Kandidaten-Daten-Header eines oder mehrere umfasst von: einer Präambel, einem Header und einem Längenfeld.Example 6 includes one or more other examples where at least one candidate data header includes one or more of: a preamble, a header, and a length field.

Beispiel 7 umfasst ein oder mehrere andere Beispiele, wobei zur Suche nach einem oder mehreren Daten-Headern die TLS-Auslagerungsmaschine ausgebildet ist, die ansonsten für die Entschlüsselung verwendeten Ressourcen zu verwenden, um nach einem oder mehreren Daten-Headern zu suchen.Example 7 includes one or more other examples where to search for one or more data headers, the TLS offload engine is configured to use resources otherwise used for decryption to search for one or more data headers.

Beispiel 8 umfasst ein oder mehrere andere Beispiele und umfasst eine Netzwerkschnittstelle, die die TLS-Auslagerungsmaschine umfasst, wobei die Netzwerkschnittstelle eines oder mehrere umfasst von: einer Infrastrukturverarbeitungseinheit (IPU), einer Datenverarbeitungseinheit (DPU), einer Netzwerkschnittstellensteuerung (NIC) oder einer smartNIC.Example 8 includes one or more other examples and includes a network interface that includes the TLS offload engine, wherein the network interface includes one or more of: an infrastructure processing unit (IPU), a data processing unit (DPU), a network interface controller (NIC), or a smartNIC.

Beispiel 9 umfasst ein oder mehrere andere Beispiele und umfasst einen Server, wobei der Server ausgebildet ist, zu bestimmen, ob die zumindest zwei Kandidaten-Daten-Header gültig sind, und anzuzeigen, ob die zumindest zwei Kandidaten-Daten-Header gültig sind oder einen oder mehrere ungültige Kandidaten-Daten-Header umfassen.Example 9 includes one or more other examples and includes a server, the server configured to determine whether the at least two candidate data headers are valid and to indicate whether the at least two candidate data headers are valid or one or include multiple invalid candidate data headers.

Beispiel 10 umfasst ein oder mehrere andere Beispiele und umfasst ein Verfahren, umfassend: an einer Transport Layer Security- (TLS) Auslagerungsmaschine, basierend auf der Detektion von verschlüsselten Daten, die einem zuvor detektierten Header nicht zugeordnet sind: Suchen nach einem oder mehreren Headern; Identifizieren von zumindest zwei Kandidaten-Headern; und basierend auf dem Empfang einer Anzeige, dass die zumindest zwei Kandidaten-Header gültige Header sind, Ausführen einer Entschlüsselung von empfangenen Daten in einem oder mehreren Paketen.Example 10 includes one or more other examples and includes a method comprising: at a Transport Layer Security (TLS) offload engine based on the detection of encryption lten data not associated with a previously detected header: searching for one or more headers; identifying at least two candidate headers; and based on receiving an indication that the at least two candidate headers are valid headers, performing decryption of received data in one or more packets.

Beispiel 11 umfasst ein oder mehrere andere Beispiele und umfasst: an der TLS-Auslagerungsmaschine: basierend auf dem Empfang einer Anzeige, dass einer oder mehrere der zumindest zwei Kandidaten-Header kein gültiger Header sind, Suchen nach zwei oder mehr anderen Kandidaten-Headern.Example 11 includes one or more other examples and includes: at the TLS offload engine: based on receiving an indication that one or more of the at least two candidate headers is not a valid header, searching for two or more other candidate headers.

Beispiel 12 umfasst ein oder mehrere andere Beispiele, das Suchen nach einem oder mehreren Headern umfassend: Identifizieren eines Header-Zeichensatzes, der einem ersten Kandidaten-Header zugeordnet ist; Bestimmen einer Datenlänge, die dem ersten Kandidaten-Header zugeordnet ist; und Identifizieren des Header-Zeichensatzes, der einem zweiten Kandidaten-Header an einer Stelle basierend auf der Datenlänge zugeordnet ist.Example 12 includes one or more other examples, searching for one or more headers comprising: identifying a header character set associated with a first candidate header; determining a data length associated with the first candidate header; and identifying the header character set associated with a second candidate header at a location based on the data length.

Beispiel 13 umfasst ein oder mehrere andere Beispiele, das Identifizieren von zumindest zwei Kandidaten-Headern zur Validierung umfassend: Bereitstellen des ersten und zweiten Kandidaten-Headers an einen Server zur Validierung.Example 13 includes one or more other examples comprising identifying at least two candidate headers for validation: providing the first and second candidate headers to a server for validation.

Beispiel 14 umfasst ein oder mehrere andere Beispiele und umfasst: Suchen nach einem anderen Kandidaten-Header nach dem ersten Kandidaten-Header und vor dem zweiten Kandidaten-Header.Example 14 includes one or more other examples and includes: searching for another candidate header after the first candidate header and before the second candidate header.

Beispiel 15 umfasst ein oder mehrere andere Beispiele, wobei zumindest ein Kandidaten-Header eines oder mehrere umfasst von: einer Präambel, einem Header und einem Längenfeld.Example 15 includes one or more other examples where at least one candidate header includes one or more of: a preamble, a header, and a length field.

Beispiel 16 umfasst ein oder mehrere andere Beispiele und zumindest ein computerlesbares Medium, umfassend darauf gespeicherte Anweisungen, die, falls sie durch zumindest einen Prozessor ausgeführt werden, den zumindest einen Prozessor veranlassen zum: Ausführen eines Vorrichtungstreibers, um eine Netzwerkschnittstellensteuerung so zu konfigurieren, dass sie basierend auf einer Identifizierung von Daten, für die ihr Header zuvor nicht identifiziert wurde, nach zwei oder mehr Kandidaten-Headern sucht.Example 16 includes one or more other examples and at least one computer-readable medium comprising instructions stored thereon that, if executed by at least one processor, cause the at least one processor to: execute a device driver to configure a network interface controller to: searches for two or more candidate headers based on an identification of data for which its header has not previously been identified.

Beispiel 17 umfasst ein oder mehrere andere Beispiele, wobei zur Suche nach zwei oder mehr Kandidaten-Headern die Netzwerkschnittstellensteuerung ausgebildet ist zum: Identifizieren eines Header-Zeichensatzes, der einem ersten Kandidaten-Header zugeordnet ist; Bestimmen einer Datenlänge, die dem ersten Kandidaten-Header zugeordnet ist; und Identifizieren des Header-Zeichensatzes, der einem zweiten Kandidaten-Header zugeordnet ist.Example 17 includes one or more other examples wherein to search for two or more candidate headers, the network interface controller is configured to: identify a header character set associated with a first candidate header; determining a data length associated with the first candidate header; and identifying the header character set associated with a second candidate header.

Beispiel 18 umfasst ein oder mehrere andere Beispiele, wobei die Netzwerkschnittstellensteuerung ausgebildet ist zum: Bereitstellen des ersten und zweiten Kandidaten-Headers an ein Hostsystem zur Validierung.Example 18 includes one or more other examples where the network interface controller is configured to: provide the first and second candidate headers to a host system for validation.

Beispiel 19 umfasst ein oder mehrere andere Beispiele, wobei zur Suche nach einem oder mehreren Kandidaten-Headern die Netzwerkschnittstelle ausgebildet ist zum: Suchen nach einem anderen Kandidaten-Header nach dem ersten Kandidaten-Header und vor dem zweiten Kandidaten-Header.Example 19 includes one or more other examples wherein to search for one or more candidate headers, the network interface is configured to: search for another candidate header after the first candidate header and before the second candidate header.

Beispiel 20 umfasst ein oder mehrere andere Beispiele, wobei zumindest ein Kandidaten-Header eines oder mehrere umfasst von: einer Präambel, einem Header und einem Längenfeld.Example 20 includes one or more other examples where at least one candidate header includes one or more of: a preamble, a header, and a length field.

Claims (20)

Eine Vorrichtung, umfassend: eine Transport Layer Security- (TLS) Auslagerungsmaschine, um: basierend auf der Detektion von verschlüsselten Daten, die einem zuvor detektierten Daten-Header nicht zugeordnet sind: nach einem oder mehreren Daten-Headern zu suchen; zumindest zwei Kandidaten-Daten-Header zur Validierung zu identifizieren, und basierend auf dem Empfang einer Anzeige, dass die zumindest zwei Kandidaten-Daten-Header gültig sind, eine Entschlüsselung von empfangenen Daten in einem oder mehreren Paketen auszuführen.A device comprising: a Transport Layer Security (TLS) offload engine to: based on the detection of encrypted data not associated with a previously detected data header: search for one or more data headers; identify at least two candidate data headers for validation, and perform decryption of received data in one or more packets based on receiving an indication that the at least two candidate data headers are valid. Die Vorrichtung gemäß Anspruch 1, wobei die TLS-Auslagerungsmaschine ausgebildet ist, um: basierend auf dem Empfang einer Anzeige, dass einer oder mehrere der zumindest zwei Kandidaten-Daten-Header kein gültiger Header sind, nach zwei oder mehr anderen Kandidaten-Daten-Headern zu suchen.The device according to claim 1 wherein the TLS offload engine is configured to: search for two or more other candidate data headers based on receiving an indication that one or more of the at least two candidate data headers are not a valid header. Die Vorrichtung gemäß einem der vorangehenden Ansprüche, wobei zur Suche nach einem oder mehreren Daten-Headern die TLS-Auslagerungsmaschine ausgebildet ist, um: einen Header-Zeichensatz zu identifizieren, der einem ersten Kandidaten-Daten-Header zugeordnet ist; eine Datenlänge zu bestimmen, die dem ersten Kandidaten-Daten-Header zugeordnet ist; und den Header-Zeichensatz zu identifizieren, der an einer Stelle basierend auf der Datenlänge einem zweiten Kandidaten-Daten-Header zugeordnet ist.The apparatus of any preceding claim, wherein to search for one or more data headers, the TLS offload engine is configured to: identify a header character set associated with a first candidate data header; determine a data length associated with the first candidate data header; and identify the header character set associated with a second candidate data header at a location based on data length. Die Vorrichtung gemäß Anspruch 3, wobei zur Identifizierung von zumindest zwei Kandidaten-Daten-Headern zur Validierung die TLS-Auslagerungsmaschine ausgebildet ist, um: die ersten und zweiten Kandidaten-Daten-Header an einen anderen Agenten oder eine Entität zur Validierung bereitzustellen.The device according to claim 3 wherein to identify at least two candidate data headers for validation, the TLS offload engine is configured to: provide the first and second candidate data headers to another agent or entity for validation. Die Vorrichtung gemäß Anspruch 3 oder 4, wobei die TLS-Auslagerungsmaschine ausgebildet ist, um: nach einem anderen Kandidaten-Daten-Header nach dem ersten Kandidaten-Daten-Header und vor dem zweiten Kandidaten-Daten-Header zu suchen.The device according to claim 3 or 4 wherein the TLS offload engine is configured to: search for another candidate data header after the first candidate data header and before the second candidate data header. Die Vorrichtung gemäß Anspruch 1, wobei zumindest ein Kandidaten-Daten-Header eines oder mehrere umfasst von: einer Präambel, einem Header und einem Längenfeld.The device according to claim 1 wherein at least one candidate data header comprises one or more of: a preamble, a header, and a length field. Die Vorrichtung gemäß einem der vorangehenden Ansprüche, wobei zur Suche nach einem oder mehreren Daten-Headern die TLS-Auslagerungsmaschine ausgebildet ist, die ansonsten für die Entschlüsselung verwendeten Ressourcen zu verwenden, um nach einem oder mehreren Daten-Headern zu suchen.The apparatus of any preceding claim, wherein to search for one or more data headers, the TLS offload engine is configured to use resources otherwise used for decryption to search for one or more data headers. Die Vorrichtung gemäß einem der vorangehenden Ansprüche, umfassend eine Netzwerkschnittstelle, die die TLS-Auslagerungsmaschine umfasst, wobei die Netzwerkschnittstelle eines oder mehrere umfasst von: einer Infrastrukturverarbeitungseinheit (IPU), einer Datenverarbeitungseinheit (DPU), einer Netzwerkschnittstellensteuerung (NIC) oder einer smartNIC.The device according to any one of the preceding claims, comprising a network interface comprising the TLS offload engine, the network interface comprising one or more of: an infrastructure processing unit (IPU), a data processing unit (DPU), a network interface controller (NIC) or a smartNIC. Die Vorrichtung gemäß einem der vorangehenden Ansprüche, umfassend einen Server, wobei der Server ausgebildet ist, zu bestimmen, ob die zumindest zwei Kandidaten-Daten-Header gültig sind, und anzuzeigen, ob die zumindest zwei Kandidaten-Daten-Header gültig sind oder einen oder mehrere ungültige Kandidaten-Daten-Header umfassen.The device according to any one of the preceding claims, comprising a server, the server being adapted to determine whether the at least two candidate data headers are valid and to indicate whether the at least two candidate data headers are valid or one or contain multiple invalid candidate data headers. Ein Verfahren, umfassend: an einer Transport Layer Security- (TLS) Auslagerungsmaschine, basierend auf der Detektion von verschlüsselten Daten, die einem zuvor detektierten Header nicht zugeordnet sind: Suchen nach einem oder mehreren Headern; Identifizieren von zumindest zwei Kandidaten-Headern; und basierend auf dem Empfang einer Anzeige, dass die zumindest zwei Kandidaten-Header gültige Header sind, Ausführen einer Entschlüsselung von empfangenen Daten in einem oder mehreren Paketen.A method comprising: at a Transport Layer Security (TLS) offloading engine, based on the detection of encrypted data not associated with a previously detected header: Search for one or more headers; identifying at least two candidate headers; and based on receiving an indication that the at least two candidate headers are valid headers, performing decryption of received data in one or more packets. Das Verfahren gemäß Anspruch 10, umfassend: an der TLS-Auslagerungsmaschine: basierend auf dem Empfang einer Anzeige, dass einer oder mehrere der zumindest zwei Kandidaten-Header kein gültiger Header sind, Suchen nach zwei oder mehr anderen Kandidaten-Headem.The procedure according to claim 10 comprising: at the TLS offload engine: based on receiving an indication that one or more of the at least two candidate headers is not a valid header, searching for two or more other candidate headers. Das Verfahren gemäß Anspruch 10 oder 11, das Suchen nach einem oder mehreren Headem umfassend: Identifizieren eines Header-Zeichensatzes, der einem ersten Kandidaten-Header zugeordnet ist; Bestimmen einer Datenlänge, die dem ersten Kandidaten-Header zugeordnet ist; und Identifizieren des Header-Zeichensatzes, der einem zweiten Kandidaten-Header an einer Stelle basierend auf der Datenlänge zugeordnet ist.The procedure according to claim 10 or 11 , searching for one or more headers, comprising: identifying a header character set associated with a first candidate header; determining a data length associated with the first candidate header; and identifying the header character set associated with a second candidate header at a location based on the data length. Das Verfahren gemäß Anspruch 12, das Identifizieren von zumindest zwei Kandidaten-Headern zur Validierung umfassend: Bereitstellen des ersten und zweiten Kandidaten-Headers an einen Server zur Validierung.The procedure according to claim 12 , identifying at least two candidate headers for validation, comprising: providing the first and second candidate headers to a server for validation. Das Verfahren gemäß Anspruch 12 oder 13, umfassend: Suchen nach einem anderen Kandidaten-Header nach dem ersten Kandidaten-Header und vor dem zweiten Kandidaten-Header.The procedure according to claim 12 or 13 , comprising: searching for another candidate header after the first candidate header and before the second candidate header. Das Verfahren gemäß Anspruch 12, 13 oder 14, wobei zumindest ein Kandidaten-Header eines oder mehrere umfasst von: einer Präambel, einem Header und einem Längenfeld.The procedure according to claim 12 , 13 or 14 wherein at least one candidate header comprises one or more of: a preamble, a header, and a length field. Zumindest ein computerlesbares Medium, umfassend darauf gespeicherte Anweisungen, die, falls sie durch zumindest einen Prozessor ausgeführt werden, den zumindest einen Prozessor veranlassen zum: Ausführen eines Vorrichtungstreibers, um eine Netzwerkschnittstellensteuerung so zu konfigurieren, dass sie basierend auf einer Identifizierung von Daten, für die ihr Header zuvor nicht identifiziert wurde, nach zwei oder mehr Kandidaten-Headern sucht.At least one computer-readable medium comprising instructions stored thereon that, when executed by at least one processor, cause the at least one processor to: Running a device driver to configure a network interface controller to search for two or more candidate headers based on an identification of data for which its header has not previously been identified. Das zumindest eine computerlesbare Medium gemäß Anspruch 16, wobei zur Suche nach zwei oder mehr Kandidaten-Headern die Netzwerkschnittstellensteuerung ausgebildet ist zum: Identifizieren eines Header-Zeichensatzes, der einem ersten Kandidaten-Header zugeordnet ist; Bestimmen einer Datenlänge, die dem ersten Kandidaten-Header zugeordnet ist; und Identifizieren des Header-Zeichensatzes, der einem zweiten Kandidaten-Header zugeordnet ist.The at least one computer-readable medium according to Claim 16 wherein to search for two or more candidate headers, the network interface controller is configured to: identify a header character set associated with a first candidate header; determining a data length associated with the first candidate header; and identifying the header character set associated with a second candidate header. Das zumindest eine computerlesbare Medium gemäß Anspruch 17, wobei die Netzwerkschnittstellensteuerung ausgebildet ist zum: Bereitstellen des ersten und zweiten Kandidaten-Headers an ein Hostsystem zur Validierung.The at least one computer-readable medium according to Claim 17 , wherein the network interface controller is configured to: provide the first and second candidate headers to a host system for validation. Das zumindest eine computerlesbare Medium gemäß Anspruch 17 oder 18, wobei zur Suche nach einem oder mehreren Kandidaten-Headern die Netzwerkschnittstelle ausgebildet ist zum: Suchen nach einem anderen Kandidaten-Header nach dem ersten Kandidaten-Header und vor dem zweiten Kandidaten-Header.The at least one computer-readable medium according to Claim 17 or 18 wherein to search for one or more candidate headers, the network interface is configured to: search for another candidate header after the first candidate header and before the second candidate header. Das zumindest eine computerlesbare Medium gemäß Anspruch 18, 18 oder 19, wobei zumindest ein Kandidaten-Header eines oder mehrere umfasst von: einer Präambel, einem Header und einem Längenfeld.The at least one computer-readable medium according to Claim 18 , 18 or 19 wherein at least one candidate header comprises one or more of: a preamble, a header, and a length field.
DE102021134581.2A 2020-12-26 2021-12-23 OUTSOURCING DECRYPTION OPERATIONS Pending DE102021134581A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063130669P 2020-12-26 2020-12-26
US63/130,669 2020-12-26
US17/189,219 US20210211467A1 (en) 2020-04-02 2021-03-01 Offload of decryption operations
US17/189,219 2021-03-01

Publications (1)

Publication Number Publication Date
DE102021134581A1 true DE102021134581A1 (en) 2022-06-30

Family

ID=76654743

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021134581.2A Pending DE102021134581A1 (en) 2020-12-26 2021-12-23 OUTSOURCING DECRYPTION OPERATIONS

Country Status (3)

Country Link
US (1) US20210211467A1 (en)
DE (1) DE102021134581A1 (en)
WO (1) WO2022139929A1 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210211467A1 (en) * 2020-04-02 2021-07-08 Intel Corporation Offload of decryption operations
US20210391978A1 (en) * 2020-06-15 2021-12-16 Microchip Technology Incorporated Increased data integrity for authenticated encryption algorithms
CN111541726B (en) 2020-07-08 2021-05-18 支付宝(杭州)信息技术有限公司 Replay transaction identification method and device based on block chain all-in-one machine
CN111541783B (en) 2020-07-08 2020-10-20 支付宝(杭州)信息技术有限公司 Transaction forwarding method and device based on block chain all-in-one machine
CN111539829B (en) 2020-07-08 2020-12-29 支付宝(杭州)信息技术有限公司 To-be-filtered transaction identification method and device based on block chain all-in-one machine
CN111541789A (en) * 2020-07-08 2020-08-14 支付宝(杭州)信息技术有限公司 Data synchronization method and device based on block chain all-in-one machine
CN111541784B (en) 2020-07-08 2021-07-20 支付宝(杭州)信息技术有限公司 Transaction processing method and device based on block chain all-in-one machine
CN116032545B (en) * 2022-12-06 2024-03-22 北京中睿天下信息技术有限公司 Multi-stage filtering method and system for ssl or tls flow

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409558B2 (en) * 2004-09-02 2008-08-05 International Business Machines Corporation Low-latency data decryption interface
JP4635855B2 (en) * 2005-12-13 2011-02-23 株式会社日立製作所 Data communication method and system
JP2009246801A (en) * 2008-03-31 2009-10-22 Fujitsu Microelectronics Ltd Method of encrypting divided packet, method of decrypting encrypted divided packet, encryption apparatus and program
US8498229B2 (en) * 2008-12-30 2013-07-30 Intel Corporation Reduced power state network processing
US8281122B2 (en) * 2009-03-02 2012-10-02 Intel Corporation Generation and/or reception, at least in part, of packet including encrypted payload
CN108400946B (en) * 2013-06-11 2019-09-17 杭州硕文软件有限公司 It is a kind of for reducing the method, apparatus, system and medium of Internet traffic
US10211985B1 (en) * 2015-03-30 2019-02-19 Amazon Technologies, Inc. Validating using an offload device security component
US9893883B1 (en) * 2015-06-26 2018-02-13 Juniper Networks, Inc. Decryption of secure sockets layer sessions having enabled perfect forward secrecy using a diffie-hellman key exchange
US20220329558A1 (en) * 2019-04-12 2022-10-13 Zafar Khan Registered Encrypted Electronic Message and Selected Content View Proof System
US20200236140A1 (en) * 2019-04-16 2020-07-23 Intel Corporation Transport layer security offload to a network interface
US20210211467A1 (en) * 2020-04-02 2021-07-08 Intel Corporation Offload of decryption operations

Also Published As

Publication number Publication date
WO2022139929A1 (en) 2022-06-30
US20210211467A1 (en) 2021-07-08

Similar Documents

Publication Publication Date Title
DE102021134581A1 (en) OUTSOURCING DECRYPTION OPERATIONS
US20200236140A1 (en) Transport layer security offload to a network interface
DE112020007201T5 (en) Memory allocation for distributed processing devices
DE112020006859T5 (en) PRESERVATION OF STORE NAMESPACE IDENTIFIERS FOR HOT MIGRATION OF VIRTUALIZED EXECUTION ENVIRONMENTS
US11909642B2 (en) Offload of acknowledgements to a network device
DE102020133738A1 (en) FIRMWARE UPDATE TECHNIQUES
DE102020127924A1 (en) SHARED STORAGE SPACE BELOW DEVICES
DE112020006664T5 (en) OUTSOURCING STREAMING PROTOCOL PACKET FORMATION
DE112013005090T5 (en) Control messaging in a multi-slot link layer flit
DE102020122301A1 (en) CONFIGURATION DIAGRAM FOR LINK PRODUCTION
US20210294702A1 (en) High-availability memory replication in one or more network devices
DE112022002284T5 (en) OUTSOURCE OF THE NETWORK LAYER 7 TO AN INFRASTRUCTURE PROCESSING UNIT FOR A MESH SERVICE NETWORK
DE102022126611A1 (en) SERVICE MESH OFFSET TO NETWORK DEVICES
DE112020006858T5 (en) DYNAMIC INTERRUPT DEPLOYMENT
DE102022107778A1 (en) ADDRESS TRANSLATION AT A TARGET NETWORK INTERFACE DEVICE
DE112022002377T5 (en) PACKET FORMAT ADAPTATION TECHNOLOGIES
DE102020129690A1 (en) SEMIFLEXIBLE PACKAGE COMBINATION CONTROL PATH
DE102020133272A1 (en) Buffer allocation for parallel processing of data
DE102021117755A1 (en) PROTECTION AGAINST NETWORK-INITIATED ATTACKS
DE102022107769A1 (en) EFFICIENT ENCRYPTION IN VPN SESSIONS
DE102022129250A1 (en) Transmission rate based on detected available bandwidth
DE102021122233A1 (en) ACCELERATOR CONTROLLER HUB
DE102022117807A1 (en) PAGE FAULT MANAGEMENT TECHNOLOGIES
DE102020102981A1 (en) Selection of inputs for look-up operations
DE102022103981A1 (en) FLOW CONTROL TECHNOLOGIES

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)