IP Library › Granted Patent US 11,726,666
Granted Patent B2
US 11,726,666 · App. 17/372,466 · Granted Aug 15, 2023

Network adapter with efficient storage-protocol emulation

Inventors: Ben Ben-Ishay (Tel Aviv, IL); Boris Pismenny (Haifa, IL); Yorai Itzhak Zack (Haifa, IL); Khalid Manaa (Majd Alkrum, IL); Liran Liss (Misgav, IL); Uria Basher (Ganei Tal, IL); Or Gerlitz (Ramat-Gan, IL); Miriam Menes (Tel Aviv, IL)
Assignee: MELLANOX TECHNOLOGIES, LTD.
G06F3/0619G06F3/067G06F3/0611G06F3/0659G06F3/0679H04L1/0041H04L1/0045H04L1/189
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,726,666
App. No.
17/372,466
Granted
Aug 15, 2023
Kind
B2
Abstract

A network adapter includes a network interface controller and a processor. The network interface controller is to communicate over a peripheral bus with a host, and over a network with a remote storage device. The processor is to expose on the peripheral bus a peripheral-bus device that communicates with the host using a bus storage protocol, to receive first I/O transactions of the bus storage protocol from the host, via the exposed peripheral-bus device, and to complete the first I/O transactions in the remote storage device by (i) translating between the first I/O transactions and second I/O transactions of a network storage protocol, and (ii) executing the second I/O transactions in the remote storage device. For receiving and completing the first I/O transactions, the processor is to cause the network interface controller to transfer data directly between the remote storage device and a memory of the host using zero-copy.

Claims (29)

1. A network adapter, comprising:

a network interface controller to communicate over a peripheral bus with a host and over a network with a remote storage device; and

a processor to:

expose on the peripheral bus a peripheral-bus device that communicates with the host using a bus storage protocol;

receive a first plurality of first Input/Output (I/O) transactions of the bus storage protocol from the host via the exposed peripheral-bus device; and

complete the first plurality of first I/O transactions for the host in the remote storage device by (i) translating between the first plurality of first I/O transactions of the bus storage protocol and a second plurality of second I/O transactions of a network storage protocol, and (ii) executing the second plurality of second I/O transactions in the remote storage device,

wherein the second plurality of second I/O transactions of the network storage protocol comprise packets having packet headers and packet data, and

wherein, for receiving and completing the first plurality of first I/O transactions, the network interface controller is to:

(i) transfer the packet data of the second plurality of second I/O transactions directly between the remote storage device and a memory of the host using zero-copy transfer; and

(ii) transfer the packet headers of the second plurality of second I/O transactions between the remote storage device and the processor.

2. The network adapter according to claim 1 , wherein the bus storage protocol is Non Volatile Memory express (NVMe), and wherein the network storage protocol is NVMe over Transmission Control Protocol (NVMe-over-TCP).

3. The network adapter according to claim 1 , wherein, to cause the network interface controller to transfer the packet data directly, the processor is to map a memory buffer in the memory of the host to Direct Memory Access (DMA) addresses in the network interface controller.

4. The network adapter according to claim 1 , wherein, upon a failure to transfer a packet of the network storage protocol to the remote storage device, the processor is to retrieve the packet data of the packet from the memory of the host, and to retransmit the packet with the retrieved packet data.

5. The network adapter according to claim 1 , wherein, in transferring the packet data directly from the memory of the host to the remote storage device, the network interface controller is to calculate a Cyclic Redundancy Check (CRC) over the transferred packet data and to transfer the CRC with the packet data.

6. The network adapter according to claim 1 , wherein, in transferring the packet data directly from the remote storage device to the memory of the host, the network interface controller is to verify a Cyclic Redundancy Check (CRC) that is received with the packet data.

7. The network adapter according to claim 6 , wherein, upon failing to verify the CRC, the network interface controller is to trigger the processor to verify the CRC, and the processor is to retrieve at least some of the packet data from the memory of the host and to verify the CRC using the retrieved packet data.

8. A method in a network adapter that includes a network interface controller and a processor, the method comprising:

using the network interface controller of the network adapter, communicating over a peripheral bus with a host and over a network with a remote storage device; and

using the processor of the network adapter, (i) exposing on the peripheral bus a peripheral-bus device that communicates with the host using a bus storage protocol, (ii) receiving a first plurality of first Input/Output (I/O) transactions of the bus storage protocol from the host via the exposed peripheral-bus device, and (iii) completing the first plurality of first I/O transactions for the host in the remote storage device by (a) translating between the first plurality of first I/O transactions of the bus storage protocol and a second plurality of second I/O transactions of a network storage protocol and (b) executing the second plurality of second I/O transactions in the remote storage device,

wherein the second plurality of second I/O transactions of the network storage protocol comprise packets having packet headers and packet data, and

wherein receiving and completing the first plurality of first I/O transactions comprises, using the network interface controller,

(i) transferring the packet data of the second plurality of the second I/O transactions directly between the remote storage device and a memory of the host using zero-copy transfer; and

(ii) transferring the packet headers of the second plurality of second I/O transactions between the remote storage device and the processor.

9. The method according to claim 8 , wherein the bus storage protocol is Non Volatile Memory express (NVMe), and wherein the network storage protocol is NVMe over Transmission Control Protocol (NVMe-over-TCP).

10. The method according to claim 8 , wherein transferring the data directly comprises mapping a memory buffer in the memory of the host to Direct Memory Access (DMA) addresses in the network interface controller.

11. The method according to claim 8 , and comprising, upon a failure to transfer a packet of the network storage protocol to the remote storage device, retrieving the packet data of the packet from the memory of the host to the processor, and retransmitting the packet with the retrieved packet data.

12. The method according to claim 8 , wherein transferring the packet data directly from the memory of the host to the remote storage device comprises calculating a Cyclic Redundancy Check (CRC) over the transferred packet data and transferring the CRC with the packet data.

13. The method according to claim 8 , wherein transferring the packet data directly from the remote storage device to the memory of the host comprises verifying a Cyclic Redundancy Check (CRC) that is received with the packet data.

14. The method according to claim 13 , and comprising, upon failing to verify the CRC, triggering the processor to verify the CRC, and, using the processor, retrieving at least some of the packet data from the memory of the host and verifying the CRC using the retrieved packet data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 15, 2021
From: BEN-ISHAY, BEN; PISMENNY, BORIS; ZACK, YORAI ITZHAK; MANAA, KHALID; LISS, LIRAN; BASHER, URIA; GERLITZ, OR; MENES, MIRIAM
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 056861/0662 →
Continuity (1)
Related Publication 20230010150A1 · Jan 12, 2023
Cited By (1)
US 12,608,132