IP Library › Granted Patent US 11,892,964
Granted Patent B2
US 11,892,964 · App. 17/211,928 · Granted Feb 6, 2024

Storage protocol emulation in a peripheral device

Inventors: Oren Duer (Kohav Yair, IL); Dror Goldenberg (Zichron Yaakov, IL)
Assignee: MELLANOX TECHNOLOGIES, LTD.
G06F13/4221G06F13/385G06F13/4081H04L67/1097
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,892,964
App. No.
17/211,928
Granted
Feb 6, 2024
Kind
B2
Abstract

A peripheral device includes a host interface and processing circuitry. The host interface is configured to communicate with a host over a peripheral bus. The processing circuitry is configured to expose on the peripheral bus a peripheral-bus device that communicates with the host using a bus storage protocol, to receive, using the exposed peripheral-bus device, Input/Output (I/O) transactions that are issued by the host, and to complete the I/O transactions for the host in accordance with a network storage protocol, by running at least part of a host-side protocol stack of the network storage protocol.

Claims (40)

1. A peripheral device, comprising:

a host interface, configured to communicate with a host over a peripheral bus; and

processing circuitry, configured to:

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

receive, using the exposed peripheral-bus device, Input/Output (I/O) transactions that are issued by the host; and

complete the I/O transactions for the host in accordance with a network storage protocol, by running at least part of a host-side protocol stack of the network storage protocol,

wherein, in running at least part of the host-side protocol stack, the processing circuitry is configured to isolate the host from control-plane operations of the network storage protocol.

2. The peripheral device according to claim 1 , wherein the processing circuitry is configured to complete at least some, or at least part, of the I/O transactions for the host in a local storage.

3. The peripheral device according to claim 1 , further comprising a network port configured to communicate over a network, wherein the processing circuitry is configured to complete at least some, or at least part, of the I/O transactions for the host by communicating over the network with a storage system that operates in accordance with the network storage protocol.

4. The peripheral device according to claim 3 , wherein, in completing an I/O transaction over the network, the processing circuitry is configured to transfer data directly between a memory of the host and the storage system using zero-copy transfer.

5. The peripheral device according to claim 4 , wherein the processing circuitry is configured to determine one or more addresses for the data in the storage system, and then to transfer the data directly between the one or more addresses and the memory of the host, without intermediate storage of the data in the peripheral device.

6. The peripheral device according to claim 1 , wherein at least one of the bus storage protocol and the network storage protocol is a block storage protocol.

7. The peripheral device according to claim 1 , wherein at least one of the bus storage protocol and the network storage protocol is a File-System (FS) protocol.

8. The peripheral device according to claim 1 , wherein at least one of the bus storage protocol and the network storage protocol is an object storage protocol.

9. The peripheral device according to claim 1 , wherein at least one of the bus storage protocol and the network storage protocol is a Key-Value (KV) protocol.

10. The peripheral device according to claim 1 , wherein, in exposing the peripheral-bus device, the processing circuitry is configured to emulate a hot-plug indication, notifying the host that a storage device has connected to the peripheral bus.

11. The peripheral device according to claim 1 , wherein the processing circuitry is configured to receive from the host a doorbell indicative of a queue on which the host posted one or more work requests pertaining to an I/O transaction, and to read and execute the one or more work requests so as to complete the I/O transaction.

12. The peripheral device according to claim 11 , wherein the processing circuitry comprises hardware that is configured to receive the doorbell and to read the one or more work requests from the queue in response to the doorbell.

13. The peripheral device according to claim 1 , wherein the processing circuitry is configured to issue a Message Signaled Interrupt to the host upon completing an I/O transaction.

14. The peripheral device according to claim 1 , wherein the processing circuitry is configured to communicate with the host via one or more registers exposed on the peripheral bus.

15. The peripheral device according to claim 1 , wherein the processing circuitry is further configured to perform one or more of storage virtualization and data manipulation operations.

16. A method, comprising:

in a peripheral device that communicates with a host over a peripheral bus, exposing on the peripheral bus a peripheral-bus device that communicates with the host using a bus storage protocol;

receiving in the peripheral device, using the exposed peripheral-bus device, Input/Output (I/O) transactions that are issued by the host; and

completing the I/O transactions for the host, by the peripheral device, in accordance with a network storage protocol, by running at least part of a host-side protocol stack of the network storage protocol,

wherein running at least part of the host-side protocol stack comprises isolating the host from control-plane operations of the network storage protocol.

17. The method according to claim 16 , wherein completing the I/O transactions comprises completing at least some, or at least part, of the I/O transactions for the host in a local storage.

18. The method according to claim 16 , wherein completing the I/O transactions comprises completing at least some, or at least part, of the I/O transactions for the host by communicating over a network with a storage system that operates in accordance with the network storage protocol.

19. The method according to claim 18 , wherein completing an I/O transaction over the network comprises transferring data directly between a memory of the host and the storage system using zero-copy transfer.

20. The method according to claim 19 , wherein transferring the data comprises determining one or more addresses for the data in the storage system, and then transferring the data directly between the one or more addresses and the memory of the host, without intermediate storage of the data in the peripheral device.

21. The method according to claim 16 , wherein at least one of the bus storage protocol and the network storage protocol is a block storage protocol.

22. The method according to claim 16 , wherein at least one of the bus storage protocol and the network storage protocol is a File-System (FS) protocol.

23. The method according to claim 16 , wherein at least one of the bus storage protocol and the network storage protocol is an object storage protocol.

24. The method according to claim 16 , wherein at least one of the bus storage protocol and the network storage protocol is a Key-Value (KV) protocol.

25. The method according to claim 16 , wherein exposing the peripheral-bus device comprises emulating a hot-plug indication, notifying the host that a storage device has connected to the peripheral bus.

26. The method according to claim 16 , wherein receiving the I/O transactions comprises receiving from the host a doorbell indicative of a queue on which the host posted one or more work requests pertaining to an I/O transaction, and wherein completing the I/O transactions comprises reading and executing the one or more work requests.

27. The method according to claim 26 , wherein receiving the doorbell comprises receiving the doorbell, and read the one or more work requests from the queue in response to the doorbell, using hardware.

28. The method according to claim 16 , wherein completing the I/O transactions comprises issuing a Message Signaled Interrupt to the host upon completing an I/O transaction.

29. The method according to claim 16 , wherein exposing the peripheral-bus device comprises communicating with the host via one or more registers exposed on the peripheral bus.

30. The method according to claim 16 , wherein running at least part of the host-side protocol stack comprises performing one or more of storage virtualization and data manipulation operations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2021
From: DUER, OREN; GOLDENBERG, DROR
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 055711/0219 →
Continuity (1)
Related Publication 20220309019A1 · Sep 29, 2022