DE102022207043A1 - Netzwerkadapter mit effizienter speicherprotokollemulation - Google Patents

Netzwerkadapter mit effizienter speicherprotokollemulation Download PDF

Info

Publication number
DE102022207043A1
DE102022207043A1 DE102022207043.7A DE102022207043A DE102022207043A1 DE 102022207043 A1 DE102022207043 A1 DE 102022207043A1 DE 102022207043 A DE102022207043 A DE 102022207043A DE 102022207043 A1 DE102022207043 A1 DE 102022207043A1
Authority
DE
Germany
Prior art keywords
host
memory
data
storage device
network
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
DE102022207043.7A
Other languages
English (en)
Inventor
Ben Ben-Ishay
Boris Pismenny
Yorai Itzhak Zack
Khalid Manaa
Liran Liss
Uria Basher
Or Gerlitz
Miriam Menes
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.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies Ltd
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 Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of DE102022207043A1 publication Critical patent/DE102022207043A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/189Transmission or retransmission of more than one copy of a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Bus Control (AREA)

Abstract

Ein Netzwerkadapter enthält einen Netzwerkschnittstellen-Controller und einen Prozessor. Der Netzwerkschnittstellen-Controller soll über einen Peripheriebus mit einem Host und über ein Netzwerk mit einem entfernten Speichergerät kommunizieren. Der Prozessor soll auf dem Peripheriebus ein Peripherie-Bus-Gerät freilegen, das mit dem Host unter Verwendung eines Bus-Speicherprotokolls kommuniziert, um erste E/A-Transaktionen des Bus-Speicherprotokolls vom Host über das freiliegende Peripherie-Bus-Gerät zu empfangen und die ersten E/A-Transaktionen in dem entfernten Speichergerät abzuschließen, indem (i) zwischen den ersten E/A-Transaktionen und zweiten E/A-Transaktionen eines Netzwerkspeicherprotokolls übersetzt wird und (ii) die zweiten E/A-Transaktionen in dem entfernten Speichergerät ausgeführt werden. Zum Empfangen und Abschließen der ersten E/A-Transaktionen soll der Prozessor die Netzwerkschnittstellen-Controller veranlassen, Daten direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung von Null-Kopie zu übertragen.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf die Datenspeicherung und insbesondere auf Verfahren und Systeme zur Emulation von Fernspeichern.
  • HINTERGRUND DER ERFINDUNG
  • Verschiedene Techniken zur Datenspeicherung unter Verwendung von Netzwerkadaptern sind in der Technik bekannt. Zum Beispiel beschreiben die US-Patente 9,696,942 und 9,727,503 Techniken für den Zugriff auf entfernte Speichergeräte unter Verwendung eines lokalen Busprotokolls. Ein offenbartes Verfahren umfasst das Konfigurieren eines Treiberprogramms auf einem Host-Computer, um Befehle gemäß einem Protokoll zu empfangen, das für den Zugriff auf lokale Speichergeräte definiert ist, die mit einem Peripheriekomponenten-Schnittstellenbus des Host-Computers verbunden sind. Wenn das Treiberprogramm von einem Anwendungsprogramm, das auf dem Host-Computer läuft, einen Speicherzugriffsbefehl in Übereinstimmung mit dem Protokoll empfängt, der eine Speichertransaktion spezifiziert, wird ein direkter Fernspeicherzugriffsvorgang (RDMA, Engl. „remote direct memory access“) von einem Netzwerkschnittstellen-Controller (NIC, Engl. „network interface controller“) durchgeführt, der mit dem Host-Computer verbunden ist, um die Speichertransaktion über ein Netzwerk auf einem entfernten Speichergerät auszuführen.
  • Das U.S.-Patent 10,657,077 beschreibt eine HyperConverged NVMF Speicher-NIC-Karte. Eine Speicher- und Kommunikationsvorrichtung zum Einstecken in einen Server umfasst eine Leiterplatte, eine Busschnittstelle, einen MAC-Prozessor (Medium Access Control), ein oder mehrere Speichergeräte und mindestens eine CPU (Central Processing Unit). Die Busschnittstelle ist so konfiguriert, dass sie das Gerät zumindest mit einem Prozessor des Servers verbindet. Der MAC ist auf der Leiterplatte montiert und für den Anschluss an ein Kommunikationsnetz konfiguriert. Die Speichergeräte sind auf der Leiterplatte montiert und zum Speichern von Daten konfiguriert. Die CPU ist auf der Leiterplatte montiert und so konfiguriert, dass sie die Speichergeräte sowohl (i) dem Prozessor des Servers über die Bus-Schnittstelle als auch (ii) indirekt anderen Servern über das Kommunikationsnetz zur Verfügung stellt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung wird durch die Ansprüche definiert. Zur Veranschaulichung der Erfindung werden hier Aspekte und Ausführungsformen beschrieben, die in den Anwendungsbereich der Ansprüche fallen können oder auch nicht.
  • Eine hier beschriebene Ausführungsform der vorliegenden Erfindung stellt einen Netzwerkadapter bereit, der einen Netzwerkschnittstellen-Controller und einen Prozessor enthält. Der Netzwerkschnittstellen-Controller soll über einen Peripheriebus mit einem Host und über ein Netzwerk mit einem entfernten Speichergerät kommunizieren. Der Prozessor soll auf dem Peripheriebus ein Peripherie-Bus-Gerät freilegen, das mit dem Host unter Verwendung eines Bus-Speicherprotokolls kommuniziert, um erste Eingabe/Ausgabe(E/A)-Transaktionen des Bus-Speicherprotokolls vom Host über das freigelegte Peripherie-Bus-Gerät zu empfangen und die ersten E/A-Transaktionen für den Host in dem entfernten Speichergerät abzuschließen, indem er (i) zwischen den ersten E/A-Transaktionen des Bus-Speicherprotokolls und zweiten E/A-Transaktionen eines Netzwerkspeicherprotokolls übersetzt und (ii) die zweiten E/A-Transaktionen in dem entfernten Speichergerät ausführt. Um die ersten E/A-Transaktionen zu empfangen und zu vervollständigen, soll der Prozessor den Netzwerkschnittstellen-Controller veranlassen, Daten der ersten und zweiten E/A-Transaktionen direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung einer Null-Kopie-Übertragung (Engl. „zero-copy transfer“) zu übertragen.
  • In einer Ausführungsform ist das Bus-Speicherprotokoll Non Volatile Memory Express (NVMe), und das Netzwerkspeicherprotokoll ist NVMe over Transmission Control Protocol (NVMe-over-TCP). In einer offengelegten Ausführungsform soll der Prozessor Paketköpfe des Netzwerkspeicherprotokolls verarbeiten und mit dem entfernten Speichergerät austauschen, während der Netzwerkschnittstellen-Controller die Daten direkt zwischen dem entfernten Speichergerät und dem Speicher des Hosts austauscht. In einem Ausführungsbeispiel soll der Prozessor, um den Netzwerkschnittstellen-Controller zu veranlassen, die Daten direkt zu übertragen, einen Speicherpuffer im Speicher des Hosts auf DMA-Adressen (Direct Memory Access) im Netzwerkschnittstellen-Controller abbilden.
  • In einer anderen Ausführungsform soll der Prozessor bei einem Fehler bei der Übertragung eines Pakets des Netzwerkspeicherprotokolls an das entfernte Speichergerät die Daten des Pakets aus dem Speicher des Hosts abrufen und das Paket mit den abgerufenen Daten erneut übertragen. In einer weiteren Ausführungsform berechnet der Netzwerkschnittstellen-Controller bei der direkten Übertragung der Daten vom Speicher des Hosts zum entfernten Speichergerät eine zyklische Redundanzprüfung (CRC, Engl. „Cyclic Redundancy Check“) über die übertragenen Daten und überträgt die CRC mit den Daten.
  • In einigen Ausführungsformen muss der Netzwerkschnittstellen-Controller bei der direkten Übertragung der Daten vom entfernten Speichergerät zum Speicher des Hosts eine zyklische Redundanzprüfung (CRC) überprüfen, die mit den Daten empfangen wird. In einem Ausführungsbeispiel soll der Netzwerkschnittstellen-Controller, wenn die CRC-Prüfung fehlschlägt, den Prozessor veranlassen, die CRC-Prüfung vorzunehmen, und der Prozessor soll zumindest einige der Daten aus dem Speicher des Hosts abrufen und die CRC-Prüfung anhand der abgerufenen Daten vornehmen.
  • Zusätzlich wird gemäß einer Ausführungsform der vorliegenden Erfindung ein Verfahren in einem Netzwerkadapter bereitgestellt, der eine Netzwerkschnittstellen-Controller und einen Prozessor enthält. Das Verfahren umfasst unter Verwendung des Netzwerkschnittstellen-Controllers des Netzwerkadapters die Kommunikation über einen Peripheriebus mit einem Host und über ein Netzwerk mit einem entfernten Speichergerät. Unter Verwendung des Prozessors des Netzwerkadapters wird (i) ein Peripherie-Bus-Gerät, das mit dem Host unter Verwendung eines Bus-Speicherprotokolls kommuniziert, auf dem Peripherie-Bus freigelegt, (ii) werden erste Eingabe/Ausgabe (E/A)-Transaktionen des Bus-Speicherprotokolls von dem Host über das freigelegte Peripherie-Bus-Gerät empfangen, und (iii) werden die ersten E/A-Transaktionen für den Host in dem entfernten Speichergerät abgeschlossen, indem (a) zwischen den ersten E/A-Transaktionen des Bus-Speicherprotokolls und zweiten E/A-Transaktionen eines Netzwerk-Speicherprotokolls übersetzt wird, und (b) die zweiten E/A-Transaktionen in dem entfernten Speichergerät ausgeführt werden. Das Empfangen und Abschließen der ersten E/A-Transaktionen beinhaltet das Veranlassen des Netzwerk-Schnittstellen-Controllers, Daten der ersten und zweiten E/A-Transaktionen direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung einer Null-Kopie-Übertragung zu übertragen.
  • In einer Ausführungsform ist das Bus-Speicherprotokoll Non Volatile Memory Express (NVMe), und das Netzwerkspeicherprotokoll ist NVMe over Transmission Control Protocol (NVMe-over-TCP). In einer offengelegten Ausführungsform umfasst die Ausführung der zweiten E/A-Transaktionen unter Verwendung des Prozessors die Verarbeitung und den Austausch von Paketköpfen des Netzwerkspeicherprotokolls mit dem entfernten Speichergerät, während der Netzwerkschnittstellen-Controller die Daten direkt zwischen dem entfernten Speichergerät und dem Speicher des Hosts austauscht. In einem Ausführungsbeispiel umfasst das Veranlassen des Netzwerkschnittstellen-Controllers, die Daten direkt zu übertragen, das Abbilden eines Speicherpuffers im Speicher des Hosts auf DMA-Adressen (Direct Memory Access) im Netzwerkschnittstellen-Controller.
  • In einer anderen Ausführungsform umfasst das Verfahren ferner, dass bei einem Fehler bei der Übertragung eines Pakets des Netzwerkspeicherprotokolls an das entfernte Speichergerät die Daten des Pakets aus dem Speicher des Hosts an den Prozessor abgerufen werden und das Paket mit den abgerufenen Daten erneut übertragen wird. In einer weiteren Ausführungsform umfasst die direkte Übertragung der Daten aus dem Speicher des Hosts an das entfernte Speichergerät die Berechnung einer zyklischen Redundanzprüfung (CRC) über die übertragenen Daten und die Übertragung der CRC mit den Daten.
  • In einigen Ausführungsformen umfasst die direkte Übertragung der Daten vom entfernten Speichergerät zum Speicher des Hosts die Überprüfung einer zyklischen Redundanzprüfung (CRC), die mit den Daten empfangen wird. In einem Ausführungsbeispiel umfasst das Verfahren ferner, wenn die CRC nicht verifiziert werden kann, das Auslösen des Prozessors zur Verifizierung der CRC und, unter Verwendung des Prozessors, das Abrufen mindestens einiger der Daten aus dem Speicher des Hosts und die Verifizierung der CRC unter Verwendung der abgerufenen Daten.
  • Ferner wird gemäß einer Ausführungsform der vorliegenden Erfindung ein Verfahren zum Ausführen von Eingabe/Ausgabe-Transaktionen (E/A) für einen Host in einem entfernten Speichergerät unter Verwendung eines Netzwerkadapters bereitgestellt. Das Verfahren umfasst die Verwendung eines Netzwerkschnittstellen-Controllers im Netzwerkadapter, die Kommunikation mit dem Host über einen Peripheriebus und die Kommunikation mit dem entfernten Speichergerät über ein Netzwerk. Unter Verwendung eines Prozessors im Netzwerkadapter werden E/A-Transaktionen eines Bus-Speicherprotokolls vom Host empfangen, und die E/A-Transaktionen werden für den Host im entfernten Speichergerät durch Übersetzung zwischen dem Bus-Speicherprotokoll und einem Netzwerkspeicherprotokoll abgeschlossen. Das Empfangen und Abschließen der E/A-Transaktionen beinhaltet, dass der Netzwerkschnittstellen-Controller veranlasst wird, Daten der E/A-Transaktionen direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung einer Null-Kopie-Übertragung zu übertragen.
  • In einer Ausführungsform ist das Bus-Speicherprotokoll Non Volatile Memory Express (NVMe), und das Netzwerkspeicherprotokoll ist NVMe over Transmission Control Protocol (NVMe-over-TCP).
  • Gemäß einer Ausführungsform der vorliegenden Erfindung ist zusätzlich ein Netzwerkadapter mit einem Netzwerkschnittstellen-Controller und einem Prozessor vorgesehen. Der Netzwerkschnittstellen-Controller soll über einen Peripheriebus mit einem Host und über ein Netzwerk mit einem entfernten Speichergerät kommunizieren. Der Prozessor soll auf dem Peripheriebus ein Peripherie-Bus-Gerät freilegen, das mit dem Host unter Verwendung eines Bus-Speicherprotokolls kommuniziert, um erste E/A-Transaktionen des Bus-Speicherprotokolls vom Host über das freiliegende Peripherie-Bus-Gerät zu empfangen und die ersten E/A-Transaktionen in dem entfernten Speichergerät abzuschließen, indem (i) zwischen den ersten E/A-Transaktionen und zweiten E/A-Transaktionen eines Netzwerkspeicherprotokolls übersetzt wird und (ii) die zweiten E/A-Transaktionen in dem entfernten Speichergerät ausgeführt werden. Zum Empfangen und Abschließen der ersten E/A-Transaktionen soll der Prozessor die Netzwerkschnittstellen-Controller veranlassen, Daten direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung von Null-Kopie zu übertragen.
  • Jedes Merkmal eines Aspekts oder einer Ausführungsform kann auf andere Aspekte oder Ausführungsformen angewandt werden, und zwar in jeder geeigneten Kombination. Insbesondere kann jedes Merkmal eines Verfahrensaspekts oder einer -ausführungsform auf einen Vorrichtungsaspekt oder eine -ausführungsform angewandt werden und umgekehrt.
  • Die vorliegende Erfindung wird aus der folgenden detaillierten Beschreibung der Ausführungsformen in Verbindung mit den Zeichnungen, in denen sie dargestellt ist, besser verständlich:
  • Figurenliste
    • 1 ist ein Blockdiagramm, das schematisch ein Rechen- und Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 2 ist ein Diagramm, das schematisch die Emulation eines Lesebefehls in dem System von 1 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 3 ist ein Diagramm, das schematisch die Emulation eines Schreibbefehls in dem System von 1 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt; und
    • 4 ist ein Flussdiagramm, das schematisch ein Verfahren zur Ausführung eines Lesebefehls in dem System von 1 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • ÜBERSICHT
  • Die hier beschriebenen Ausführungsformen der vorliegenden Erfindung bieten verbesserte Datenspeichertechniken, bei denen ein Netzwerkadapter Daten für einen Host in einem entfernten Speichergerät speichert und abruft. Der Netzwerkadapter kommuniziert mit dem Host über einen peripheren Bus, z. B. einen Peripheral Component Interconnect Express (PCIe)-Bus, und mit dem entfernten Speichergerät über ein Netzwerk.
  • In den offengelegten Ausführungsformen „emuliert“ das Netzwerkgerät ein Bus-Speicherprotokoll (z. B. Non Volatile Memory Express - NVMe) zum Host und speichert und ruft gleichzeitig Daten im entfernten Speichergerät unter Verwendung eines Netzwerkspeicherprotokolls (z. B. NVMe over Transmission Control Protocol - NVMe-over-TCP) ab. Die folgende Beschreibung bezieht sich hauptsächlich auf die NVMe- und NVMe-over-TCP-Protokolle.
  • Der Begriff „Emulation“ bedeutet, dass der Netzwerkadapter aus Sicht des Hosts wie ein lokales Speichergerät erscheint und sich auch so verhält, z. B. als NVMe-Platte, die an den PCIe-Bus des Hosts angeschlossen ist. In Wirklichkeit empfängt der Netzwerkadapter jedoch NVMe-Befehle vom Host, übersetzt die NVMe-Befehle in NVMe-over-TCP-Befehle und führt die NVMe-over-TCP-Befehle in dem entfernten Speichergerät aus. (Die Begriffe „Befehle“ und „E/A-Transaktionen“ oder einfach „Transaktionen“ werden hier austauschbar verwendet).
  • In einigen Ausführungsformen ist der Netzwerkadapter eine Datenverarbeitungseinheit (Data Processing Unit, DPU), die einen Netzwerkschnittstellen-Controller (Network Interface Controller, NIC) und einen leistungsstarken Prozessor umfasst (der Übersichtlichkeit halber hier auch als „DPU-Prozessor“ bezeichnet). In einem Ausführungsbeispiel besteht der Prozessor aus einer Reihe von ARM-Kernen.
  • In einigen Ausführungsformen stellt der DPU-Prozessor dem Host über den PCIe-Bus ein dediziertes PCIe-Gerät zur Verfügung, das das NVMe-Protokoll emuliert. Der Host gibt NVMe-Befehle aus, z. B. Lese- und/oder Schreibbefehle, und sendet sie an das dedizierte PCIe-Gerät, ähnlich wie der Host NVMe-Befehle an eine lokale Festplatte senden würde. Der DPU-Prozessor empfängt die NVMe-Befehle vom Host über das dedizierte PCIe-Gerät und führt die NVMe-Befehle für den Host aus, indem er (i) zwischen den NVMe-Befehlen und NVMe-over-TCP-Befehlen übersetzt und (ii) die NVMe-over-TCP-Befehle in dem entfernten Speichergerät ausführt.
  • Wie im Folgenden näher erläutert wird, überträgt der NIC in der DPU die Daten der NVMe- und NVMe-over-TCP-Transaktionen direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung der Null-Kopie-Übertragung. Im vorliegenden Kontext bedeutet der Begriff „Null-Kopie“, dass die Daten direkt zwischen dem Speicher des Hosts und dem entfernten Speichergerät übertragen werden, ohne Zwischenspeicherung in der DPU. Durch die kopierfreie Datenübertragung wird die Gesamttransaktionslatenz erheblich verringert und der erreichbare Durchsatz erhöht. Beispielhafte Techniken dieser Art sind in der US-Patentanmeldung 17/338,131 mit dem Titel „Cross Bus Memory Mapping“ beschrieben, die am 3. Juni 2021 eingereicht wurde und deren Offenbarung hier durch Bezugnahme aufgenommen wird.
  • In einigen Ausführungsformen ermöglicht der DPU-Prozessor dem NIC eine solche direkte Null-Kopie-Datenübertragung, indem er einen Speicherpuffer im Host-Speicher den entsprechenden DMA-Adressen (Direct Memory Access) des NIC zuordnet. Sobald die Zuordnung erfolgt ist, kann der NIC direkt auf den Speicher des Hosts zugreifen, wobei der eigene Adressraum des Hosts verwendet wird. Techniken dieser Art werden in der US-Patentanmeldung 17/189,303 mit dem Titel „Cross Address-Space Bridging“ beschrieben, die am 2. März 2021 eingereicht wurde und deren Offenbarung hier durch Bezugnahme aufgenommen wird.
  • In einigen Ausführungsformen führt der DPU-Prozessor einen TCP-Protokollstapel aus und baut eine TCP-Verbindung mit dem entfernten Speichergerät auf. Die DPU führt dann die NVMe-over-TCP-Transaktionen durch den Austausch von TCP-Paketen mit dem entfernten Speichergerät über die TCP-Verbindung aus. Intern in der DPU überträgt der NIC Paketdaten und Paketheader über verschiedene Pfade. Die Daten werden direkt von dem NIC zum/vom Host-Speicher übertragen, wobei wie oben erwähnt eine Null-Kopie-Übertragung verwendet wird. Die Paketköpfe werden von dem NIC zum/vom DPU-Prozessor übertragen, um die TCP-Verbindung zu beenden und anderweitig zu bearbeiten. Durch diese Technik entfällt das Kopieren von Paketdaten zwischen dem NIC und dem DPU-Prozessor, wodurch die Latenzzeit verringert und der Durchsatz verbessert wird.
  • Bei der hier beschriebenen Konfiguration durchlaufen die Daten der E/A-Transaktionen normalerweise nicht den DPU-Prozessor. Daher ist in einigen Ausführungsformen der NIC für die Berechnung und Überprüfung der datenabhängigen zyklischen Redundanzprüfcodes („CRCs“) zuständig. Bei der Übertragung berechnet der NIC normalerweise CRCs über die Daten und sendet die Daten und die entsprechenden CRCs an das entfernte Speichergerät. Beim Empfang empfängt der NIC in der Regel Daten und entsprechende CRCs vom entfernten Speichergerät, berechnet CRCs über die empfangenen Daten und prüft, ob die berechneten CRCs mit den empfangenen CRCs übereinstimmen.
  • Es werden mehrere Beispielimplementierungen der hier beschriebenen Techniken beschrieben. Ergänzende Techniken, wie z. B. Fallback-Schemata, bei denen der DPU-Prozessor Zugriff auf die Daten der E/A-Transaktionen erhält, werden ebenfalls beschrieben. Solche Fallback-Schemata werden z. B. für die Implementierung der TCP-Wiederholung und für die Wiederherstellung von CRC-Fehlern aufgrund der Ankunft von Paketen außerhalb der Reihenfolge verwendet.
  • BESCHREIBUNG DES SYSTEMS
  • 1 ist ein Blockdiagramm, das schematisch ein Rechen- und Speichersystem 20 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Das System 20 umfasst einen Hochleistungsnetzwerkadapter 24, der auch als Datenverarbeitungseinheit (DPU) bezeichnet wird und einen Host 28 bedient. Die DPU 24 kommuniziert mit dem Host 28 über einen Peripheriebus, im vorliegenden Beispiel einen Peripheral Component Interconnect express (PCIe)-Bus 36.
  • Die DPU 24 versorgt den Host 28 mit Datenspeicherdiensten, möglicherweise neben anderen Aufgaben, z. B. zusätzlich zu den herkömmlichen Netzwerkdiensten. Im Beispiel von 1 verbindet die DPU 24 den Host 28 mit einem Netzwerk 32 und speichert und ruft Daten für den Host 28 über das Netzwerk 32 in einem entfernten Speichergerät 40 ab.
  • Im vorliegenden Beispiel umfasst der Host 28 eine Host-CPU 44 und einen Speicher 48. Auf der Host-CPU 44 können je nach Anwendungsfall verschiedene Softwareanwendungen („Apps“) 52 laufen. Neben anderen Aufgaben führen die Anwendungen 52 Eingabe-/Ausgabe-Transaktionen (E/A-Transaktionen) durch, z. B. Transaktionen, die Daten in Dateien oder Objekte schreiben, Daten aus Dateien oder Objekten lesen oder Dateien, Verzeichnisse, Objekte und Ähnliches erstellen, ändern oder löschen. Im Allgemeinen können E/A-Transaktionen von jeder Software ausgeführt werden, die auf der Host-CPU 44 läuft, z. B. von virtuellen Maschinen (VMs), Prozessen, Containern, vom Betriebssystem des Hosts oder von jeder anderen Software.
  • In der Ausführungsform von 1 führt die Host-CPU 44 einen NVMe-Treiber 56 aus, der Datenspeicherdienste für die verschiedenen Arten von Software bereitstellt, die auf der Host-CPU laufen, z. B. für Anwendungen 52. Der Treiber 56 speichert und ruft Daten für Anwendungen 52 ab, indem er NVMe-Befehle an ein oder mehrere NVMe-Geräte ausgibt, die an den PCIe-Bus 36 angeschlossen sein können.
  • Insbesondere gibt der Treiber 56 NVMe-Befehle an ein dediziertes NVMe-PCIe-Gerät 60 aus, das von der DPU 24 freigelegt wird, wie im Folgenden erläutert wird.
  • Aus Gründen der Übersichtlichkeit ist das PCIe-Gerät 60 in der Abbildung innerhalb des Hosts 28 dargestellt, um die Interaktion zwischen dem Gerät 60 und der Host-CPU 44 zu verdeutlichen. In Wirklichkeit handelt es sich bei dem PCIe-Gerät 60 jedoch um eine logische Schnittstelle, die dem Host 28 von der DPU 24 über den Bus 36 bereitgestellt wird. Die Begriffe „PCIe-Gerät“ und „PCIe-Schnittstelle“ können daher austauschbar verwendet werden. Das PCIe-Gerät 60 kann eine physische PCIe-Funktion oder eine virtuelle Funktion umfassen. Die Interaktion zwischen der Host-CPU 44 und dem PCIe-Gerät 60 kann mit Standard-Betriebssystemtreibern oder als herstellerspezifischer Treiber implementiert werden.
  • Wie in zu sehen ist, umfasst die DPU 24 einen Netzwerkschnittstellen-Controller (NIC) 64 und einen DPU-Prozessor 68. In einem Ausführungsbeispiel wird der NIC 64 mit einer anwendungsspezifischen integrierten Schaltung (ASIC) implementiert, und der DPU-Prozessor 68 umfasst mehrere miteinander verbundene ARM-Prozessorkerne, auf denen geeignete Software läuft. Alternativ kann aber auch jede andere geeignete Implementierung verwendet werden.
  • In einigen Ausführungsformen emuliert die DPU 24 das NVMe-Speicherprotokoll gegenüber dem Host 28. Für die tatsächliche Ausführung der E/A-Transaktionen kommuniziert die DPU 24 jedoch mit dem entfernten Speichergerät 40 über das Netzwerk 32 unter Verwendung von NVMe-over-TCP. Die Funktionsweise der DPU 24 wird im Folgenden ausführlich erläutert. Im Allgemeinen überträgt der NIC 64 die Daten der NVMe- und NVMe-over-TCP-Transaktionen direkt zwischen dem entfernten Speichergerät 40 und dem Host-Speicher 48, wobei eine Null-Kopie-Übertragung verwendet wird. Der DPU-Prozessor 68 ermöglicht (oder veranlasst) der NIC 64, diese Null-Kopie-Datenübertragung durchzuführen, indem er einen Speicherpuffer im Host-Speicher 48 den entsprechenden DMA-Adressen der NIC 64 zuordnet. Durch diese Zuordnung kann der NIC 64 Paketdaten direkt im Host-Speicher lesen und schreiben, wobei der Adressraum des Hosts verwendet wird.
  • Die in 1 gezeigten Konfigurationen des Systems 20 und seiner Komponenten, z. B. DPU 24 und Host 28, sind Beispielkonfigurationen, die lediglich der konzeptionellen Klarheit halber dargestellt sind. In alternativen Ausführungsformen können beliebige andere geeignete Konfigurationen verwendet werden. Die verschiedenen Elemente des Systems 20 und seiner Komponenten, z. B. DPU 24 und Host 28, können mit Hilfe von Software, geeigneter Hardware, wie z. B. einem oder mehreren anwendungsspezifischen integrierten Schaltkreisen (ASIC, Engl. „Application-Specific Integrated Circuit“) oder feldprogrammierbaren Gate-Arrays (FPGA, Engl. „Field-Programmable Gate Arrays"), oder mit einer Kombination aus Software- und Hardwareelementen implementiert werden.
  • Typischerweise bestehen die Host-CPU 44 und der DPU-Prozessor 68 aus programmierbaren Prozessoren, die in Software programmiert sind, um die hier beschriebenen Funktionen auszuführen. Die Software kann auf jeden der Prozessoren in elektronischer Form heruntergeladen werden, z. B. über ein Netzwerk, oder sie kann alternativ oder zusätzlich auf nicht-übertragbaren, greifbaren Medien, wie z. B. einem magnetischen, optischen oder elektronischen Speicher, bereitgestellt und/oder gespeichert werden.
  • SPEICHEREMULATION OHNE KOPIEREN VON DATEN ZWISCHEN NIC UND DPU-PROZESSOR
  • Wie bereits erwähnt, empfängt die DPU 24 NVMe-Befehle vom Host 28 über das PCIe-Gerät 60, übersetzt die NVMe-Befehle in NVMe-over-TCP-Befehle und führt die NVMe-over-TCP-Befehle im entfernten Speichergerät 40 aus. In einigen Ausführungsformen überträgt der NIC 64 Paketdaten (im Gegensatz zu Headern und/oder anderen Metadaten) direkt zwischen dem Host 28 und dem entfernten Speichergerät 40. Während des normalen Betriebs durchlaufen die Paketdaten nicht den DPU-Prozessor 68, so dass es nicht notwendig ist, die Daten zwischen NIC 64 und DPU-Prozessor 68 zu kopieren oder anderweitig zu übertragen. Diese Lösung führt zu einer erheblichen Verringerung der Latenzzeit, sowohl bei der Übertragung (z. B. beim Schreiben von Daten vom Host zum entfernten Speichergerät) als auch beim Empfang (z. B. beim Lesen von Daten vom entfernten Speichergerät zum Host).
  • 2 ist ein Diagramm, das schematisch die Emulation eines Lesebefehls im System 20 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Abbildung konzentriert sich auf eine bestimmte Phase der Ausführung des Lesebefehls - die Übertragung der angeforderten Daten vom entfernten Speichergerät 40 über die DPU 24 zum Host 28. Eine vollständige Beschreibung des Lesevorgangs, einschließlich der vorangehenden Phasen, ist in 4 unten dargestellt.
  • In Übereinstimmung mit NVMe-over-TCP sendet das entfernte Speichergerät 40 die angeforderten Daten in einer oder mehreren TCP-Protokolldateneinheiten (PDUs, Engl. „TCP Protocol Data Units“) an die DPU 24. (Die Begriffe PDU und Paket werden hier manchmal austauschbar verwendet.) Jede PDU umfasst einen Paketkopf und Paketdaten. Darüber hinaus erzeugt und sendet das entfernte Speichergerät 40 CRC-Pakete, wobei jedes CRC-Paket einen CRC-Code enthält, der über eine oder mehrere PDUs berechnet wird.
  • Die Pfade, die von den PDU-Daten, den PDU-Kopfzeilen und den CRC-Paketen durchlaufen werden, sind in durch fette Pfeile dargestellt. Wie zu sehen ist, werden die PDU-Daten vom NIC 64 empfangen und direkt in den Host-Speicher 48 übertragen, ohne den DPU-Prozessor 68 zu passieren. Die PDU-Kopfzeilen und CRC-Pakete werden von NIC 64 empfangen und an den DPU-Prozessor 68 übertragen.
  • Der DPU-Prozessor 68 führt normalerweise einen TCP-Protokollstapel aus und dient als TCP-Endpunkt der TCP-Verbindung zwischen der DPU 24 und dem entfernten Speichergerät 40. Im Rahmen der Ausführung des Protokollstapels beendet der DPU-Prozessor 68 die TCP-Verbindung, hält den Zustand der TCP-Verbindung aufrecht, indem er eine geeignete Zustandsmaschine ausführt, usw. Für die Durchführung dieser Aufgaben reicht es aus, wenn der DPU-Prozessor 68 die PDU-Kopfzeilen und die CRC empfängt, nicht aber die PDU-Daten.
  • 3 ist ein Diagramm, das schematisch die Emulation eines Schreibbefehls im System 20 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Auch hier konzentriert sich die Abbildung auf eine bestimmte Phase der Ausführung des Schreibbefehls - die Übertragung der zu speichernden Daten vom Host 28 über die DPU 24 zum entfernten Speichergerät 40.
  • In dem Beispiel von sendet die DPU 24 die Daten in einer oder mehreren TCP-PDUs an das entfernte Speichergerät 40. Jede PDU umfasst einen Paketkopf und Paketdaten. Darüber hinaus erzeugt und sendet die DPU 24 CRC-Pakete, wobei jedes CRC-Paket einen CRC-Code enthält, der über eine oder mehrere PDUs berechnet wird.
  • Die fettgedruckten Pfeile in zeigen die verschiedenen Wege, die die PDU-Daten, die PDU-Kopfzeilen und die CRC-Pakete durchlaufen. Wie zu sehen ist, werden die PDU-Daten von dem NIC 64 direkt vom Host-Speicher 48 zum entfernten Speichergerät 40 übertragen. Die PDU-Kopfzeilen werden von NIC 64 vom DPU-Prozessor 68 an das entfernte Speichergerät 40 übertragen. Die CRC-Pakete werden in NIC 64 erzeugt und an das entfernte Speichergerät 40 gesendet.
  • Die Beispiele in den und zeigen, dass bei der Ausführung von Lese- und Schreibbefehlen unter Verwendung der offengelegten Techniken die PDU-Daten nicht durch den DPU-Prozessor 68 laufen. Somit entfallen Datenkopiervorgänge zwischen NIC 64 und DPU-Prozessor 68.
  • ist ein Flussdiagramm, das schematisch ein Verfahren zur Ausführung eines Lesebefehls in dem System von gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Das Verfahren beginnt mit der Ausgabe eines NVMe-Lesebefehls durch die Host-CPU 44 in einer Befehlsausgabestufe 80. Typischerweise wird der NVMe-Befehl vom NVMe-Treiber 56 an das NVMe-PCIe-Gerät 60 ( ) gesendet. Der Befehl spezifiziert typischerweise (i) Adressen (in einem Adressraum eines NVMe-Geräts, das von der DPU 24 emuliert wird), von denen die angeforderten Daten gelesen werden sollen, und (ii) Adressen eines Speicherpuffers im Host-Speicher 48, in den die Daten geholt werden sollen.
  • In einer Zuordnungsstufe 84 ordnet der DPU-Prozessor 68 die Adressen des Host-Speicherpuffers, die im NVMe-Lesebefehl angegeben wurden, den entsprechenden DMA-Adressen (Direct Memory Access) der DPU-NIC 64 zu. Diese Zuordnung ermöglicht es DPU NIC 64, Daten direkt in den entsprechenden Puffer im Host-Speicher 48 zu schreiben und dabei den Adressraum der Host-CPU 44 selbst zu nutzen. In einigen Ausführungsformen ordnet der DPU-Prozessor 68 die physischen Adressen des Speicherpuffers im Host-Speicher 48 den DMA-Adressen der DPU-NIC 64 zu. Die Zuordnung kann vordefiniert sein oder bei Bedarf über einen Mechanismus wie NIC On-Demand-Paging erfolgen. Auf diese Weise kann der DPU-Prozessor 68 den DPU-NIC 64 anweisen, die abgerufenen Daten an die entsprechenden physischen Adressen im Host-Speicher 44 zu schreiben.
  • In einer Protkollübersetzungsstufe 88 übersetzt der DPU-Prozessor 68 den NVMe-Lesebefehl in eine NVMe-over-TCP-Leseanforderung. Die Übersetzung ist typischerweise eine Eins-zu-Eins-Übersetzung, d. h. ein gegebener NVMe-Lesebefehl wird in eine entsprechende NVMe-over-TCP-Leseanforderung übersetzt, aber die offengelegten Techniken sind in keiner Weise auf eine Eins-zu-Eins-Übersetzung beschränkt. In einer Anfragesendestufe 92 sendet die DPU NIC 64 die NVMe-over-TCP-Leseanforderung über das Netzwerk 32 an das entfernte Speichergerät 40.
  • In einer Antwortverarbeitungsstufe 96 empfängt die DPU NIC 64 ein Antwortpaket vom entfernten Speichergerät 40 als Antwort auf die NVME-over-TCP-Leseanforderung. Das Antwortpaket enthält u. a. die angeforderten Daten. DPU NIC 64 schreibt die Daten direkt an die entsprechenden Adressen im Host-Speicher 48 (an die in Stufe 84 zugeordneten Adressen). Weder die Host-CPU 44 noch der DPU-Prozessor 44 sind an dieser direkten Übertragung von Daten beteiligt.
  • Der in gezeigte Verfahrensablauf ist ein Beispiel, das nur aus Gründen der konzeptionellen Klarheit dargestellt ist. In alternativen Ausführungsformen können die offengelegten Techniken mit jedem anderen geeigneten Ablauf durchgeführt werden.
  • So kann beispielsweise ein NVMe-Schreibbefehl von der DPU 24 auf ähnliche Weise verarbeitet werden. Bei einem Schreibbefehl spezifiziert der Befehl (i) einen Host-Speicherpuffer, der die zu schreibenden Daten enthält, und (ii) Adressen (in einem Adressraum eines NVMe-Geräts, das von DPU 24 emuliert wird), in die die Daten geschrieben werden sollen. Der DPU-Prozessor 68 ordnet den Host-Speicherpuffer den jeweiligen DMA-Adressen der DPU-NIC 64 zu. Mithilfe dieser Zuordnung kann die DPU NIC 64 die Daten direkt aus dem Host-Speicherpuffer in das entfernte Speichergerät 40 schreiben. Bei der Verarbeitung des NVMe-Schreibbefehls setzt der DPU-Prozessor 68 den NVMe-Schreibbefehl in eine NVMe-over-TCP-Schreibanforderung um. Die NVMe-over-TCP-Schreibanforderung überträgt die zu schreibenden Daten. DPU NIC 64 schreibt die Daten aus dem Host-Speicherpuffer in das entfernte Speichergerät, indem es diese Schreibanforderung über das Netzwerk 32 sendet.
  • Typischerweise verwendet die DPU 24 bei der Ausführung des Flusses von oder des oben beschriebenen NVME-Schreibbefehlsflusses verschiedene Pfade für Paketdaten und Paketheader, wie in und beschrieben.
  • AUSLAGERUNG VON CRC-VORGÄNGEN
  • Wie hier ausführlich erläutert, werden die Daten bei der Übertragung von DPU 24 zwischen dem Host 28 und dem entfernten Speichergerät 40 über die DPU-NIC 64 übertragen und erreichen normalerweise nicht den DPU-Prozessor 68. Daher werden in einigen Ausführungsformen die Berechnung und Überprüfung der zyklischen Redundanzprüfung (CRC) (die per Definition von den Daten abhängt) von NIC 64 durchgeführt. Diese Lösung vermeidet die Übertragung von Daten vom NIC 64 zum DPU-Prozessor 68 für CRC-Operationen und die daraus resultierende Verschlechterung der Latenz und des Durchsatzes.
  • In einer Ausführungsform berechnet der NIC 64 CRCs, wenn er Schreibbefehle für den Host 28 im entfernten Speichergerät 40 ausführt. Typischerweise (siehe ) empfängt NIC 64 die Daten des Schreibbefehls vom Host 28 und PDU-Header vom DPU-Prozessor 68. NIC 64 setzt NVMe-over-TCP-Pakete aus den Daten und den Headern zusammen, berechnet CRC über die Daten einer Gruppe von Paketen und sendet die NVMe-over-TCP-Pakete an das entfernte Speichergerät.
  • Zusätzlich oder alternativ prüft NIC 64 die Korrektheit von CRCs, die vom entfernten Speichergerät empfangen werden, als Teil der Ausführung von Lesebefehlen. Typischerweise (siehe ) empfängt NIC 64 NVMe-over-TCP-Pakete vom entfernten Speichergerät 40. Die NVMe-over-TCP-Pakete umfassen PDU-Daten, PDU-Header und CRCs, die vom entfernten Speichergerät über die PDU-Daten berechnet wurden. NIC 64 berechnet CRCs über die empfangenen Daten und prüft, ob die berechneten CRCs mit den empfangenen CRCs übereinstimmen.
  • Eine Abweichung zwischen einem empfangenen CRC und einem entsprechenden berechneten CRC (einem vom NIC über die empfangenen Daten berechneten CRC) ist ein Hinweis auf einen Empfangsfehler oder in einigen Fällen auf Pakete, die nicht in der richtigen Reihenfolge ankommen. Wenn eine CRC-Fehlanpassung („CRC-Fehler“) festgestellt wird, gibt der NIC 64 in der Regel eine Fehlermeldung an den DPU-Prozessor 68 aus.
  • FALLBACK-SZENARIEN MIT DATENZUGRIFF DURCH DPU-PROZESSOR
  • In den hier beschriebenen Ausführungsformen erreichen die PDU-Daten den Prozessor 68 der DPU während der normalen Verarbeitung von Lese- und Schreibbefehlen nicht. Dieses Merkmal führt zu einer erheblichen Verbesserung des Durchsatzes und der Latenzzeit, da innerhalb der DPU 24 keine großen Datenmengen zwischen der Netzwerkkarte 64 und dem Prozessor 68 kopiert werden müssen. In einigen abnormalen Szenarien erhält der DPU-Prozessor 68 jedoch zumindest vorübergehend Zugriff auf einen Teil der Daten. Dieser Zugriff wird z. B. für die Durchführung von Aktionen auf TCP-Ebene benötigt, die von den Daten abhängen. Solche Aktionen sind relativ selten, so dass die entstehende Latenzzeit akzeptabel ist.
  • Entschärfung von CRC-Fehlern, die durch die Ankunft von Paketen in falscher Reihenfolge verursacht werden
  • Ein Beispielszenario dieser Art bezieht sich auf CRC-Fehler aufgrund von Paketen, die nicht in der richtigen Reihenfolge ankommen. Betrachten wir ein Szenario, in dem die DPU 24 eine Folge von NVMe-over-TCP-Paketen empfängt und darüber hinaus einen CRC-Wert erhält, der über die Folge berechnet wurde. Aus irgendeinem Grund kommen jedoch einige der Pakete in der Sequenz in einer anderen Reihenfolge an als die, in der sie vom entfernten Speichergerät gesendet wurden. Ein solches Ereignis führt zu einer CRC-Fehlanpassung an der NIC 64 (da der NIC die CRC gemäß der Reihenfolge des Eintreffens der Pakete berechnet, während das entfernte Speichergerät die CRC gemäß der Reihenfolge der Übertragung der Pakete berechnet).
  • Grundsätzlich ist es möglich, dass DPU 24 einfach die gesamte Folge von Paketen als fehlgeschlagen betrachtet. Diese Lösung ist jedoch äußerst verschwenderisch und erfordert eine umfangreiche Neuübertragung von Daten. Außerdem erfordert ein CRC-Fehler in der Regel eine vollständige NVME-over-TCP-Neuverbindung und nicht nur eine erneute Übertragung. In einigen Ausführungsformen entschärft die DPU 24 dieses Szenario ohne erneute Übertragung, indem der DPU-Prozessor 68 auf die Daten im Host-Speicher 48 zugreift. Bei dieser Lösung wird die Tatsache ausgenutzt, dass die Paketdaten im Host-Speicher entsprechend den Paketfolgenummern geordnet sind, unabhängig davon, ob die Pakete in der richtigen Reihenfolge angekommen sind oder nicht. Der NIC 64, der paketweise arbeitet und keine Kenntnis von den Paketfolgenummern hat, verfügt nicht über diese Ordnungsinformationen.
  • In einigen Ausführungsformen löst der NIC 64 bei Feststellung eines CRC-Fehlers den DPU-Prozessor 68 aus, um zu versuchen, den Fehler zu beheben. Der DPU-Prozessor 68 greift auf die Daten der Paketfolge im Host-Speicher 48 zu und berechnet den CRC über die Daten neu, aber diesmal mit dem Wissen, dass die Daten in der richtigen Reihenfolge organisiert sind. Wenn der vom DPU-Prozessor neu berechnete CRC-Wert mit dem CRC-Wert übereinstimmt, der vom entfernten Speichergerät empfangen wurde, erklärt der DPU-Prozessor 68 die CRC-Prüfung für erfolgreich, und die PDU-Daten können sicher an die anfordernde Anwendung 52 übermittelt werden. Wenn der vom DPU-Prozessor neu berechnete CRC-Wert immer noch nicht mit dem vom entfernten Speichergerät empfangenen CRC-Wert übereinstimmt, erklärt der DPU-Prozessor die Auflösung der CRC-Fehlanpassung für fehlgeschlagen und kehrt zur NVME-over-TCP-Wiederverbindung und -Übertragung zurück.
  • Erneute Übertragung von TCP-Paketen
  • Ein weiteres Beispielszenario bezieht sich auf die erneute Übertragung von TCP-Paketen. Man stelle sich ein Szenario vor, in dem die DPU 24 eine Folge von NVMe-over-TCP-Paketen an das entfernte Speichergerät 40 übertragen hat, aber ein bestimmtes Paket von dem entfernten Speichergerät nicht korrekt empfangen wurde und erneut übertragen werden muss. Die DPU kann z. B. eine NACK-Nachricht empfangen, die das Paket anzeigt, das erneut übertragen werden muss. In der Regel kann der NIC 64 ein Paket nicht selbstständig erneut übertragen, da er (i) nicht im Besitz der Daten des fehlgeschlagenen Pakets ist und (ii) die erneute Übertragung nicht nur die erneute Übertragung der Daten, sondern auch die Rekonstruktion des Zustands der TCP-Verbindung zum Zeitpunkt der Übertragung des ursprünglichen Pakets erfordert.
  • In einigen Ausführungsformen wird daher die erneute Übertragung von Paketen vom DPU-Prozessor 68 durchgeführt, der, wie oben erläutert, den TCP-Protokollstapel ausführt. In einer Ausführungsform ruft der DPU-Prozessor die PDU-Daten des Pakets aus dem Host-Speicher 48 ab, rekonstruiert den TCP-Verbindungsstatus aus seinem intern ausgeführten Protokollstapel und sendet dann das Paket mit dem korrekten Status erneut.
  • Obwohl die hier beschriebenen Ausführungsformen hauptsächlich die NVMe- und NVMe-over-TCP-Protokolle betreffen, können die hier beschriebenen Verfahren und Systeme auch mit anderen Bus-Speicherprotokollen und Netzwerkvarianten verwendet werden, z. B. iSCSI und iSCSIover-TCP.
  • Es wird daher deutlich, dass die oben beschriebenen Ausführungsformen als Beispiele angeführt sind und dass die vorliegende Erfindung nicht auf das beschränkt ist, was hierin besonders gezeigt und beschrieben wurde. Vielmehr umfasst der Umfang der vorliegenden Erfindung sowohl Kombinationen und Unterkombinationen der verschiedenen hierin beschriebenen Merkmale als auch Variationen und Modifikationen davon, die dem Fachmann beim Lesen der vorstehenden Beschreibung einfallen würden und die im Stand der Technik nicht offenbart sind. Dokumente, die durch Verweis in die vorliegende Patentanmeldung aufgenommen wurden, sind als integraler Bestandteil der Anmeldung zu betrachten, mit der Ausnahme, dass in dem Maße, in dem Begriffe in diesen aufgenommenen Dokumenten in einer Weise definiert werden, die im Widerspruch zu den in der vorliegenden Beschreibung explizit oder implizit gemachten Definitionen steht, nur die Definitionen in der vorliegenden Beschreibung zu berücksichtigen sind.
  • Es versteht sich, dass die oben beschriebenen Aspekte und Ausführungsformen nur beispielhaft sind und dass im Rahmen der Ansprüche Änderungen im Detail vorgenommen werden können.
  • Jede Vorrichtung, jedes Verfahren und Merkmal, das in der Beschreibung und (gegebenenfalls) in den Ansprüchen und Zeichnungen offenbart wird, kann unabhängig oder in jeder geeigneten Kombination bereitgestellt werden.
  • Die in den Ansprüchen enthaltenen Bezugszeichen dienen nur der Veranschaulichung und haben keine einschränkende Wirkung auf den Umfang der Ansprüche.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9696942 [0002]
    • US 9727503 [0002]
    • US 17338131 [0023]
    • US 17189303 [0024]

Claims (18)

  1. Netzwerkadapter, umfassend: einen Netzwerkschnittstellen-Controller, um über einen Peripheriebus mit einem Host und über ein Netzwerk mit einem entfernten Speichergerät zu kommunizieren; und einen Prozessor zum: Exponieren eines Peripherie-Bus-Geräts auf dem Peripheriebus, wobei das Peripherie-Bus-Gerät mit dem Host über ein Bus-Speicherprotokoll kommuniziert; Empfangen erster Eingangs-/Ausgangs(E/A)-Transaktionen des Bus-Speicherprotokolls vom Host über das exponierte Peripherie-Bus-Gerät; und Abschließen ersten E/A-Transaktionen für den Host im entfernten Speichergerät abschließen, indem (i) zwischen den ersten E/A-Transaktionen des Bus-Speicherprotokolls und den zweiten E/A-Transaktionen eines Netzwerkspeicherprotokolls übersetzt wird, und (ii) die zweiten E/A-Transaktionen im entfernten Speichergerät ausgeführt werden, wobei der Prozessor zum Empfangen und Abschließen der ersten E/A-Transaktionen den Netzwerkschnittstellen-Controller veranlasst, Daten der ersten und zweiten E/A-Transaktionen direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung einer Null-Kopie-Übertragung zu übertragen.
  2. Netzwerkadapter nach Anspruch 1, wobei das Bus-Speicherprotokoll Non Volatile Memory Express (NVMe) ist und wobei das Netzwerkspeicherprotokoll NVMe over Transmission Control Protocol (NVMe-over-TCP) ist.
  3. Netzwerkadapter nach Anspruch 1 oder 2, wobei der Prozessor dazu dient, Paketköpfe des Netzwerkspeicherprotokolls zu verarbeiten und mit dem entfernten Speichergerät auszutauschen, während der Netzwerkschnittstellen-Controller die Daten direkt zwischen dem entfernten Speichergerät und dem Speicher des Hosts austauscht.
  4. Netzwerkadapter nach Anspruch 1, 2 oder 3, wobei der Prozessor, um den Netzwerkschnittstellen-Controller zu veranlassen, die Daten direkt zu übertragen, einen Speicherpuffer im Speicher des Hosts auf DMA-Adressen (Direct Memory Access) im Netzwerkschnittstellen-Controller abbildet.
  5. Netzwerkadapter nach einem der vorhergehenden Ansprüche, wobei der Prozessor bei einem Fehler bei der Übertragung eines Pakets des Netzwerkspeicherprotokolls an das entfernte Speichergerät die Daten des Pakets aus dem Speicher des Hosts abruft und das Paket mit den abgerufenen Daten erneut überträgt.
  6. Netzwerkadapter nach einem der vorhergehenden Ansprüche, wobei der Netzwerkschnittstellen-Controller bei der direkten Übertragung der Daten aus dem Speicher des Hosts an das entfernte Speichergerät eine zyklische Redundanzprüfung (CRC) über die übertragenen Daten berechnet und die CRC mit den Daten überträgt.
  7. Netzwerkadapter nach einem der vorhergehenden Ansprüche, wobei der Netzwerkschnittstellen-Controller bei der direkten Übertragung der Daten vom entfernten Speichergerät zum Speicher des Hosts eine zyklische Redundanzprüfung (CRC) verifiziert, die mit den Daten empfangen wird.
  8. Netzwerkadapter nach Anspruch 7, wobei der Netzwerkschnittstellen-Controller bei Nichtverifizierung des CRC den Prozessor zur Verifizierung des CRC veranlasst und der Prozessor mindestens einige der Daten aus dem Speicher des Hosts abruft und den CRC unter Verwendung der abgerufenen Daten verifiziert.
  9. Verfahren in einem Netzwerkadapter, der einen Netzwerkschnittstellen-Controller und einen Prozessor enthält, wobei das Verfahren Folgendes umfasst: unter Verwendung des Netzwerkschnittstellen-Controllers des Netzwerkadapters Kommunizieren über einen Peripheriebus mit einem Host und über ein Netzwerk mit einem entfernten Speichergerät zu kommunizieren; und Verwenden des Prozessors des Netzwerkadapters, (i) Exponieren eines Peripherie-Bus-Geräts auf dem Peripherie-Bus, das mit dem Host unter Verwendung eines Bus-Speicherprotokolls kommuniziert, (ii) Empfangen erster Eingabe/Ausgabe(E/A)-Transaktionen des Bus-Speicherprotokolls vom Host über das exponierte Peripherie-Bus-Gerät, und (iii) Abschließen der ersten E/A-Transaktionen für den Host in dem entfernten Speichergerät durch (a) Übersetzen zwischen den ersten E/A-Transaktionen des Bus-Speicherprotokolls und zweiten E/A-Transaktionen eines Netzwerk-Speicherprotokolls, und (b) Ausführen der zweiten E/A-Transaktionen in dem entfernten Speichergerät, wobei das Empfangen und Abschließen der ersten E/A-Transaktionen das Veranlassen des Netzwerkschnittstellen-Controllers umfasst, Daten der ersten und zweiten E/A-Transaktionen direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung einer Null-Kopie-Übertragung zu übertragen.
  10. Verfahren nach Anspruch 9, wobei das Bus-Speicherprotokoll Non Volatile Memory Express (NVMe) ist und wobei das Netzwerkspeicherprotokoll NVMe over Transmission Control Protocol (NVMe-over-TCP) ist.
  11. Verfahren nach Anspruch 9 oder 10, wobei die Ausführung der zweiten E/A-Transaktionen unter Verwendung des Prozessors die Verarbeitung und den Austausch von Paketköpfen des Netzwerkspeicherprotokolls mit dem entfernten Speichergerät umfasst, während der Netzwerkschnittstellen-Controller die Daten direkt zwischen dem entfernten Speichergerät und dem Speicher des Hosts austauscht.
  12. Verfahren nach Anspruch 9, 10 oder 11, wobei das Veranlassen des Netzwerkschnittstellen-Controllers zur direkten Übertragung der Daten das Abbilden eines Speicherpuffers im Speicher des Hosts auf DMA-Adressen (Direct Memory Access) im Netzwerkschnittstellen-Controller umfasst.
  13. Verfahren nach einem der Ansprüche 9 bis 12, das bei einem Fehler bei der Übertragung eines Pakets des Netzwerkspeicherprotokolls an das entfernte Speichergerät das Abrufen der Daten des Pakets aus dem Speicher des Hosts an den Prozessor und das erneute Übertragen des Pakets mit den abgerufenen Daten umfasst.
  14. Verfahren nach einem der Ansprüche 9 bis 13, wobei das Übertragen der Daten direkt aus dem Speicher des Hosts an das entfernte Speichergerät das Berechnen einer zyklischen Redundanzprüfung (CRC) über die übertragenen Daten und das Übertragen der CRC mit den Daten umfasst.
  15. Verfahren nach einem der Ansprüche 9 bis 14, wobei das Übertragen der Daten direkt von der entfernten Speichervorrichtung in den Speicher des Hosts das Verifizieren einer zyklischen Redundanzprüfung (CRC) umfasst, die mit den Daten empfangen wird.
  16. Verfahren nach Anspruch 15, bei dem, wenn die Verifizierung des CRC fehlschlägt, der Prozessor veranlasst wird, den CRC zu verifizieren, und mit Hilfe des Prozessors mindestens einige der Daten aus dem Speicher des Hosts abgerufen werden und der CRC unter Verwendung der abgerufenen Daten verifiziert wird.
  17. Verfahren zum Ausführen von Eingabe/Ausgabe(E/A)-Transaktionen für einen Host in einem entfernten Speichergerät unter Verwendung eines Netzwerkadapters, wobei das Verfahren umfasst: Verwendung eines Netzwerkschnittstellen-Controllers im Netzwerkadapter, Kommunikation mit dem Host über einen Peripheriebus und Kommunikation mit dem entfernten Speichergerät über ein Netzwerk; Verwenden eines Prozessors im Netzwerkadapter, Empfangen von E/A-Transaktionen eines Bus-Speicherprotokolls vom Host und Abschließen der E/A-Transaktionen für den Host im entfernten Speichergerät durch Übersetzen zwischen dem Bus-Speicherprotokoll und einem Netzwerkspeicherprotokoll, wobei das Empfangen und Abschließen der E/A-Transaktionen das Veranlassen des Netzwerk-Schnittstellen-Controllers umfasst, Daten der E/A-Transaktionen direkt zwischen dem entfernten Speichergerät und einem Speicher des Hosts unter Verwendung einer Null-Kopie-Übertragung zu übertragen.
  18. Verfahren nach Anspruch 17, wobei das Bus-Speicherprotokoll Non Volatile Memory Express (NVMe) ist und wobei das Netzwerkspeicherprotokoll NVMe over Transmission Control Protocol (NVMe-over-TCP) ist.
DE102022207043.7A 2021-07-11 2022-07-11 Netzwerkadapter mit effizienter speicherprotokollemulation Pending DE102022207043A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/372,466 2021-07-11
US17/372,466 US11726666B2 (en) 2021-07-11 2021-07-11 Network adapter with efficient storage-protocol emulation

Publications (1)

Publication Number Publication Date
DE102022207043A1 true DE102022207043A1 (de) 2023-04-06

Family

ID=84798270

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022207043.7A Pending DE102022207043A1 (de) 2021-07-11 2022-07-11 Netzwerkadapter mit effizienter speicherprotokollemulation

Country Status (3)

Country Link
US (1) US11726666B2 (de)
CN (1) CN115664883A (de)
DE (1) DE102022207043A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116880759A (zh) * 2023-07-13 2023-10-13 北京大禹智芯科技有限公司 一种基于DPU的NVMe系统及其启动方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
US9727503B2 (en) 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3001592A (en) 1954-09-03 1961-09-26 De Long Corp Well drilling and servicing barge including bridge and rig structure and methods
NL128092C (de) 1959-06-26
US5003465A (en) 1988-06-27 1991-03-26 International Business Machines Corp. Method and apparatus for increasing system throughput via an input/output bus and enhancing address capability of a computer system during DMA read/write operations between a common memory and an input/output device
DE19580606C2 (de) 1994-06-08 2003-06-18 Intel Corp Plattenlaufwerksverbinderschnittstelle zur Verwendung an einem PCI-Bus
US5615404A (en) 1994-10-31 1997-03-25 Intel Corporation System having independently addressable bus interfaces coupled to serially connected multi-ported signal distributors generating and maintaining frame based polling schedule favoring isochronous peripherals
US5954802A (en) 1996-01-31 1999-09-21 Texas Instruments Incorporated System for interfacing ISA compatible computer devices with non-ISA buses using secondary DMA controllers and glue logic circuit
US6070219A (en) 1996-10-09 2000-05-30 Intel Corporation Hierarchical interrupt structure for event notification on multi-virtual circuit network interface controller
US5864876A (en) 1997-01-06 1999-01-26 Creative Technology Ltd. DMA device with local page table
US5893166A (en) 1997-05-01 1999-04-06 Oracle Corporation Addressing method and system for sharing a large memory address space using a system space global memory section
US6321276B1 (en) 1998-08-04 2001-11-20 Microsoft Corporation Recoverable methods and systems for processing input/output requests including virtual memory addresses
US6701405B1 (en) 1999-10-01 2004-03-02 Hitachi, Ltd. DMA handshake protocol
US6581130B1 (en) 2000-04-04 2003-06-17 Hewlett Packard Development Company, L.P. Dynamic remapping of address registers for address translation between multiple busses
US6981027B1 (en) 2000-04-10 2005-12-27 International Business Machines Corporation Method and system for memory management in a network processing system
US7171484B1 (en) 2000-05-24 2007-01-30 Krause Michael R Reliable datagram transport service
US7475398B2 (en) 2000-08-01 2009-01-06 Wind River Systems, Inc. System and method for implementing a smart system call
US6766467B1 (en) 2000-10-19 2004-07-20 International Business Machines Corporation Method and apparatus for pausing a send queue without causing sympathy errors
US8051212B2 (en) 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
US7155602B2 (en) 2001-04-30 2006-12-26 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US6789143B2 (en) 2001-09-24 2004-09-07 International Business Machines Corporation Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries
GB2383440A (en) * 2001-12-21 2003-06-25 Sun Microsystems Inc DMA memory system with further DMA unit
US7263103B2 (en) 2002-07-23 2007-08-28 Mellanox Technologies Ltd. Receive queue descriptor pool
US7299266B2 (en) 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
GB2395307A (en) 2002-11-15 2004-05-19 Quadrics Ltd Virtual to physical memory mapping in network interfaces
GB2395308B (en) 2002-11-18 2005-10-19 Quadrics Ltd Command scheduling in computer networks
JP4233373B2 (ja) 2003-04-14 2009-03-04 株式会社ルネサステクノロジ データ転送制御装置
US7225277B2 (en) 2003-09-04 2007-05-29 International Business Machines Corporation Proxy direct memory access
US20050216552A1 (en) 2004-03-24 2005-09-29 Samuel Fineberg Communication-link-attached persistent memory system
EP1619589B1 (de) 2004-07-23 2007-12-26 Stmicroelectronics SA Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
US7761619B2 (en) 2005-05-13 2010-07-20 Microsoft Corporation Method and system for parallelizing completion event processing
US20070011429A1 (en) 2005-07-07 2007-01-11 Vasudevan Sangili Virtual memory key generation
US7721299B2 (en) * 2005-08-05 2010-05-18 Red Hat, Inc. Zero-copy network I/O for virtual hosts
US7577773B1 (en) 2005-09-09 2009-08-18 Qlogic, Corporation Method and system for DMA optimization
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7739474B2 (en) 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
JP4942375B2 (ja) * 2006-03-27 2012-05-30 株式会社ソニー・コンピュータエンタテインメント ネットワーク処理装置
US7827381B2 (en) 2006-06-05 2010-11-02 Oracle America, Inc. Hybrid techniques for memory virtualization in a computer system
US7752417B2 (en) 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US7613876B2 (en) 2006-06-08 2009-11-03 Bitmicro Networks, Inc. Hybrid multi-tiered caching storage system
JP4757109B2 (ja) * 2006-06-23 2011-08-24 富士通株式会社 データ通信プログラム
JP2008009817A (ja) 2006-06-30 2008-01-17 Fujitsu Ltd 半導体装置及びデータ転送方法
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US7991839B2 (en) 2006-12-19 2011-08-02 International Business Machines Corporation Communication between host systems using a socket connection and shared memories
US8065687B2 (en) 2007-01-05 2011-11-22 Moka5, Inc. Bypass virtualization
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US7945752B1 (en) 2008-03-27 2011-05-17 Netapp, Inc. Method and apparatus for achieving consistent read latency from an array of solid-state storage devices
GB0813833D0 (en) 2008-07-29 2008-09-03 Transitive Ltd Apparatus and method for handling page protection faults in a computing system
US7921237B1 (en) * 2008-09-29 2011-04-05 Network Appliance, Inc. Preserving data integrity of DMA descriptors
US7921178B2 (en) 2008-12-04 2011-04-05 Voltaire Ltd. Device, system, and method of accessing storage
GB0823162D0 (en) 2008-12-18 2009-01-28 Solarflare Communications Inc Virtualised Interface Functions
US8468417B2 (en) * 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods
CN101819564B (zh) 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US8255475B2 (en) 2009-04-28 2012-08-28 Mellanox Technologies Ltd. Network interface device with memory management capabilities
US8260980B2 (en) 2009-06-10 2012-09-04 Lsi Corporation Simultaneous intermediate proxy direct memory access
US8386745B2 (en) 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US9015268B2 (en) 2010-04-02 2015-04-21 Intel Corporation Remote direct storage access
US9092426B1 (en) * 2011-01-03 2015-07-28 Applied Micro Circuts Corporation Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
WO2012137265A1 (en) 2011-04-08 2012-10-11 Hitachi, Ltd. Computer, computer system, and data communication method
US8645663B2 (en) 2011-09-12 2014-02-04 Mellanox Technologies Ltd. Network interface controller with flexible memory handling
US9143467B2 (en) 2011-10-25 2015-09-22 Mellanox Technologies Ltd. Network interface controller with circular receive buffer
US8751701B2 (en) 2011-12-26 2014-06-10 Mellanox Technologies Ltd. Host channel adapter with pattern-type DMA
US9256545B2 (en) 2012-05-15 2016-02-09 Mellanox Technologies Ltd. Shared memory access using independent memory maps
US9122810B2 (en) 2012-05-18 2015-09-01 Dell Products, Lp System and method for providing input/output functionality to a processing node
US9298723B1 (en) 2012-09-19 2016-03-29 Amazon Technologies, Inc. Deduplication architecture
US10303618B2 (en) 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US8745276B2 (en) 2012-09-27 2014-06-03 Mellanox Technologies Ltd. Use of free pages in handling of page faults
US8914458B2 (en) 2012-09-27 2014-12-16 Mellanox Technologies Ltd. Look-ahead handling of page faults in I/O operations
US9639464B2 (en) 2012-09-27 2017-05-02 Mellanox Technologies, Ltd. Application-assisted handling of page faults in I/O operations
US9298642B2 (en) 2012-11-01 2016-03-29 Mellanox Technologies Ltd. Sharing address translation between CPU and peripheral devices
US10078603B2 (en) 2012-11-30 2018-09-18 Red Hat Israel, Ltd. MSI events using dynamic memory monitoring
US9098402B2 (en) 2012-12-21 2015-08-04 Intel Corporation Techniques to configure a solid state drive to operate in a storage mode or a memory mode
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US9311110B2 (en) 2013-07-08 2016-04-12 Intel Corporation Techniques to initialize from a remotely accessible storage device
US8949486B1 (en) 2013-07-17 2015-02-03 Mellanox Technologies Ltd. Direct memory access to storage devices
US9411775B2 (en) * 2013-07-24 2016-08-09 Intel Corporation iWARP send with immediate data operations
US10684973B2 (en) * 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
US9513869B2 (en) 2013-09-18 2016-12-06 HGST Netherlands B.V. Doorbell-less endpoint-initiated protocol for storage devices
US9294567B2 (en) 2014-05-02 2016-03-22 Cavium, Inc. Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller
US10498654B2 (en) * 2015-12-28 2019-12-03 Amazon Technologies, Inc. Multi-path transport design
US10715499B2 (en) 2017-12-27 2020-07-14 Toshiba Memory Corporation System and method for accessing and managing key-value data over networks
US10657077B2 (en) 2018-08-20 2020-05-19 Mellanox Technologies, Ltd. HyperConverged NVMF storage-NIC card
US11016911B2 (en) * 2018-08-24 2021-05-25 Samsung Electronics Co., Ltd. Non-volatile memory express over fabric messages between a host and a target using a burst mode
US11086713B1 (en) * 2019-07-23 2021-08-10 Pure Storage, Inc. Optimized end-to-end integrity storage system
US20220075747A1 (en) 2020-09-09 2022-03-10 Mellanox Technologies Tlv Ltd. Support for multiple hot pluggable devices via emulated switch
US11561915B2 (en) * 2020-09-30 2023-01-24 EMC IP Holding Company LLC Remote sharing of directly connected storage
US10999364B1 (en) 2020-10-11 2021-05-04 Mellanox Technologies, Ltd. Emulation of memory access transport services

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
US9727503B2 (en) 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server

Also Published As

Publication number Publication date
CN115664883A (zh) 2023-01-31
US20230010150A1 (en) 2023-01-12
US11726666B2 (en) 2023-08-15

Similar Documents

Publication Publication Date Title
DE60316776T2 (de) Auf netzwerkdatenspeicherung bezogene operationen
US11016911B2 (en) Non-volatile memory express over fabric messages between a host and a target using a burst mode
DE102012209016B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE60213616T2 (de) Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung
DE102004038649B4 (de) Dauerspeichervorrichtung für Sicherungsprozess-Prüfpunktzustände
DE102012208803B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102012214324B4 (de) Verfahren und Vorrichtung zur Erleichterung der Datenüberprüfung mithilfe einer Prüfsumme in Verbindung mit einem Sidefile
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE102004004796B4 (de) Vorrichtung zur Datenübertragung zwischen Speichern
DE102011014588A1 (de) Multicasting-Schreibanforderungen an Mehrfachspeicher-Controller
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE112013005090T5 (de) Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
DE112011102415T5 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung
DE112004002375B4 (de) Verfahren, System und Programm zum Verwalten von Datenleseoperationen
DE102012209009B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE19924922A1 (de) System und Verfahren für Nachrichtenübermittlung zwisfchen Netzwerkknoten, die durch parallele Verbindungen verbunden sind
DE112010002178T5 (de) Verfahren und vorrichtung für id-basierte ströme über pci-express
DE102012209011A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE10118789A1 (de) Datenspeichersystem mit gesondertem Datenübertragungsabschnitt und Nachrichtenübertragungsnetzwerk sowie mit Bus-Zuteilung
DE102022207043A1 (de) Netzwerkadapter mit effizienter speicherprotokollemulation
DE102022202780A1 (de) Speicherprotokoll-emulation in einem peripheriegerät
DE112004002043T5 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE112010004194T5 (de) Erleichterung der Datenverdichtung während des Kopierens
DE60318252T2 (de) Verfahren und vorrichtungen zur datenübertragung zwischen speichernetzwerken
DE10116360A1 (de) Datenspeichersystem mit gesondertem Datenübertragungsabschnitt und Nachrichtenübertragungsnetzwerk, mit einer Mehrzahl von Leitsteuereinrichtungen auf einer gemeinsamen gedruckten Schaltungsplatte und redundanten Schaltnetzwerken

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R437 Application is deemed to be withdrawn due to failure to submit translation
R073 Re-establishment requested
R074 Re-establishment allowed