IP Library › Granted Patent US 11,500,810
Granted Patent B2
US 11,500,810 · App. 17/466,371 · Granted Nov 15, 2022

Techniques for command validation for access to a storage device by a remote client

Inventors: Eliezer Tamir (Bait Shemesh, IL); Vadim Makhervaks (Austin, TX); Ben-Zion Friedman (Jerusalem, IL); Phil Cayton (Warren, OR); Theodore L. Willke (Portland, OR)
Assignee: Tahoe Research, Ltd.
G06F15/17331G06F3/061G06F3/0611G06F3/0655G06F3/0659G06F3/0683G06F3/0688G06F13/4282G06F15/167G06F21/44G06F21/79G06F21/80H04L67/1097H04L69/12G06F2213/0026Y02D10/00
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,500,810
App. No.
17/466,371
Granted
Nov 15, 2022
Kind
B2
Abstract

Examples are disclosed for access to a storage device maintained at a server. In some examples, a network input/output device coupled to the server may allocate, in a memory of the server, a buffer, a doorbell, and a queue pair accessible to a client remote to the server. For these examples, the network input/output device may assign an Non-Volatile Memory Express (NVMe) namespace context to the client. For these examples, indications of the allocated buffer, doorbell, queue pair, and namespace context may be transmitted to the client. Other examples are described and claimed.

Claims (38)

1. An apparatus comprising:

circuitry for a network interface device, the circuitry to:

receive a command from a client via a network, the command to request access to a storage device controlled by a Non-Volatile Memory Express (NVMe) controller coupled to the network interface device;

validate the command based on an index identifier in the command and an NVMe namespace identifier allocated to the client, wherein the client is one of a plurality of clients, wherein the NVMe namespace identifier is one of a plurality of NVMe namespace identifiers, wherein respective ones of the plurality of clients are assigned to respective ones of the plurality of NVMe namespace identifiers; and

based on the validation of the command, provide an indication of the command to a command submission queue for the NVMe controller.

2. The apparatus of claim 1 , the circuitry to:

validate the command based on an operation code (Opcode) in the command and a plurality of Opcodes supported by the network interface device.

3. The apparatus of claim 1 , the command to be received in a packet compatible with a remote direct memory access (RDMA) protocol, the RDMA protocol to include one of Internet Wide Area RDMA protocol (iWARP), Infiniband, or RDMA over Converged Ethernet (RoCE).

4. The apparatus of claim 1 , the circuitry to:

indicate, to the client, that the received command was completed based on an indication in a command completion queue that indicates the received command was executed by the NVMe controller.

5. The apparatus of claim 1 , the circuitry to:

write data to be written to the storage device to a buffer allocated to the client.

6. The apparatus of claim 5 , the circuitry to further validate the command based on a size of the data to be written to the storage device and a size of the buffer.

7. The apparatus of claim 1 , the network interface device, the storage device, and the NVMe controller arranged to operate in compliance with PCIe Base Specification, revision 3.0, or NVMe Specification, revision 1.1.

8. A non-transitory computer-readable storage medium including instructions that when executed by a processor of a network interface device, cause the processor to:

receive, at the network interface device, a command from a client via a network, the command to request access to a storage device controlled by a Non-Volatile Memory Express (NVMe) controller coupled to the network interface device;

validate the command based on an index identifier in the command and an NVMe namespace identifier allocated to the client, wherein the client is one of a plurality of clients, wherein the NVMe namespace identifier is one of a plurality of NVMe namespace identifiers, wherein respective ones of the plurality of clients are assigned to respective ones of the plurality of NVMe namespace identifiers; and

based on the validation of the command, provide an indication of the command to a command submission queue for the NVMe controller.

9. The computer-readable storage medium of claim 8 , wherein the instructions further cause the processor to:

validate the command based on an operation code (Opcode) in the command and a plurality of Opcodes supported by the network interface device.

10. The computer-readable storage medium of claim 8 , the command to be received in a packet compatible with a remote direct memory access (RDMA) protocol, the RDMA protocol to include one of Internet Wide Area RDMA protocol (iWARP), Infiniband, or RDMA over Converged Ethernet (RoCE).

11. The computer-readable storage medium of claim 8 , wherein the instructions further cause the processor to:

indicate, to the client, that the received command was completed based on an indication in a command completion queue that indicates the received command was executed by the NVMe controller.

12. The computer-readable storage medium of claim 8 , wherein the instructions further cause the processor to write data to be written to the storage device to a buffer allocated to the client.

13. The computer-readable storage medium of claim 12 , wherein instructions further cause the processor to validate the command based on a size of the data to be written to the storage device and a size of the buffer.

14. The computer-readable storage medium of claim 8 , the command to comprise service tags (STags) or transaction tags (TTags) compatible with a remote direct memory access (RDMA) protocol to include one of Internet Wide Area RDMA protocol (iWARP), Infiniband, or RDMA over Converged Ethernet (RoCE).

15. A method, comprising:

receiving, at a network interface device, a command from a client via a network, the command to request access to a storage device controlled by a Non-Volatile Memory Express (NVMe) controller coupled to the network interface device;

validating the command based on an index identifier in the command and an NVMe namespace identifier allocated to the client, wherein the client is one of a plurality of clients, wherein the NVMe namespace identifier is one of a plurality of NVMe namespace identifiers, wherein respective ones of the plurality of clients are assigned to respective ones of the plurality of NVMe namespace identifiers; and

based on the validation of the command, providing an indication of the command to a command submission queue for the NVMe controller.

16. The method of claim 15 , further comprising:

validating the command based on an operation code (Opcode) in the command and a plurality of Opcodes supported by the network interface device.

17. The method of claim 15 , the command received in a packet compatible with a remote direct memory access (RDMA) protocol, the RDMA protocol to include one of Internet Wide Area RDMA protocol (iWARP), Infiniband, or RDMA over Converged Ethernet (RoCE).

18. The method of claim 15 , further comprising:

indicating, to the client, that the received command was completed based on an indication in a command completion queue that indicates the received command was executed by the NVMe controller.

19. The method of claim 15 , further comprising writing data to be written to the storage device to a buffer allocated to the client.

20. The method of claim 19 , further comprising validating the command based on a size of the data to be written to the storage device and a size of the buffer.

21. The method of claim 15 , the network interface device, the storage device, and the NVMe controller arranged to operate in compliance with PCIe Base Specification, revision 3.0, or NVMe Specification, revision 1.1.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →
Continuity (4)
Continuation 16426685 · May 30, 2019
Continuation 13997996
Provisional Application 61587541 · Jan 17, 2012
Related Publication 20220100696A1 · Mar 31, 2022