IP Library › Granted Patent US 12,126,548
Granted Patent B2
US 12,126,548 · App. 17/212,478 · Granted Oct 22, 2024

Supporting communications for data storage

Inventor: Pranjal Kumar Dutta (Sunnyvale, CA)
Assignee: Nokia Solutions and Networks Oy
H04L49/90H04L45/24H04L69/22
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 12,126,548
App. No.
17/212,478
Granted
Oct 22, 2024
Kind
B2
Abstract

Various example embodiments for supporting communications for data storage are presented herein. Various example embodiments for supporting communications for data storage may be configured to support communications between a host and a storage element for supporting storage of data in the storage element by the host. Various example embodiments for supporting communications between a host and a storage element may be configured to support communications between a host and a controller of the storage element. Various example embodiments for supporting communications between a host and a controller of a storage element may be configured to support, using a single transport layer connection, communications of multiple queue pairs supporting communications between the host and the controller of the storage element, where each of the queue pairs includes a queue on the host and a queue on the controller of the storage element.

Claims (49)

1. An apparatus, comprising:

at least one processor; and

at least one memory including instructions which, when executed by the at least one processor, cause the apparatus to:

support, by a host based on a transport layer connection with a controller of a storage element, communications between the host and the controller of the storage element for multiple queues on the host, wherein each queue of the multiple queues includes a respective send queue configured to support sending of communications toward a respective receive queue on the controller of the storage element and a respective receive queue configured to support receiving of communications from a respective send queue on the controller of the storage element, wherein each queue of the multiple queues has a respective queue identifier associated therewith; and

support communications between the host and the controller of the storage element for the multiple queues on the host based on the respective queue identifiers associated with the respective multiple queues.

2. The apparatus of claim 1 , wherein the multiple queues on the host are disposed on a core of the host.

3. The apparatus of claim 1 , wherein the multiple queues on the host are disposed on two or more cores of the host.

4. The apparatus of claim 1 , wherein the communications between the host and the controller of the storage element for the multiple queues on the host include communications related to storage of data by the host in the storage element.

5. The apparatus of claim 4 , wherein the communications related to storage of data by the host in the storage element includes at least one of a communication related to writing a data item in the storage element, a communication related to reading a data item from the storage element, or a communication related to flushing a data item from the storage element.

6. The apparatus of claim 1 , wherein, to support the communications between the host and the controller of the storage element for the multiple queues on the host, the instructions, when executed by the at least one processor, cause the apparatus to:

support establishment of the transport layer connection between the host and the controller of the storage element.

7. The apparatus of claim 1 , wherein, to support the communications between the host and the controller of the storage element for the multiple queues on the host, the instructions, when executed by the at least one processor, cause the apparatus to:

support establishment of a storage access protocol connection between the host and the controller of the storage element.

8. The apparatus of claim 7 , wherein, to support the establishment of the storage access protocol connection between the host and the controller of the storage element, the instructions, when executed by the at least one processor, cause the apparatus to:

negotiate, by the host with the controller of the storage element, a capability to use a transport layer protocol to support communication between the multiple queues on the host and multiple queues on the controller of the storage element.

9. The apparatus of claim 8 , wherein, to negotiate the capability to use a transport layer protocol to support communication between the multiple queues on the host and the multiple queues on the controller of the storage element, the instructions, when executed by the at least one processor, cause the apparatus to:

send an indicator indicative that use of a transport layer protocol to support communication between the multiple queues on the host and the multiple queues on the controller of the storage element is supported.

10. The apparatus of claim 7 , wherein, to support the establishment of the storage access protocol connection between the host and the controller of the storage element, the instructions, when executed by the at least one processor, cause the apparatus to:

send, by the host toward the controller of the storage element, an initialize connection request including a first indication that the host supports use of a transport layer protocol to support communication between the multiple queues on the host and multiple queues on the controller of the storage element;

receive, by the host from the controller of the storage element, an initialize connection response including a second indication that the controller of the storage element supports use of a transport layer protocol to support communication between the multiple queues on the host and the multiple queues on the controller of the storage element; and

establish, by the host based on the first indication and the second indication, the storage access protocol connection between the host and the controller of the storage element in a manner for supporting use of a transport layer protocol to support communication between the multiple queues on the host and the multiple queues on the controller of the storage element.

11. The apparatus of claim 1 , wherein, to support the communications between the host and the controller of the storage element for the multiple queues on the host, the instructions, when executed by the at least one processor, cause the apparatus to:

support communication of data between the host and the controller of the storage element using one of the multiple queues.

12. The apparatus of claim 11 , wherein, to support communication of data between the host and the controller of the storage element using one of the multiple queues, the instructions, when executed by the at least one processor, cause the apparatus to:

support communication of a protocol data unit having a header including the respective queue identifier associated with the one of the multiple queues.

13. The apparatus of claim 12 , wherein the header of the protocol data unit includes an indicator configured to indicate a presence of the respective queue identifier in the header of the protocol data unit.

14. The apparatus of claim 13 , wherein the indicator configured to indicate the presence of the respective queue identifier in the header of the protocol data unit includes at least one bit in a flags field of the header of the protocol data unit.

15. The apparatus of claim 1 , wherein, to support the communications between the host and the controller of the storage element for the multiple queues on the host, the instructions, when executed by the at least one processor, cause the apparatus to:

support, based on the transport layer connection, sending of data from the host toward the controller of the storage element using one of the multiple queues.

16. The apparatus of claim 15 , wherein, to support the sending of data from the host toward the controller of the storage element using the one of the multiple queues, the instructions, when executed by the at least one processor, cause the apparatus to:

send, by the host toward the controller of the storage element using the transport layer connection, a protocol data unit including a command identifier configured to indicate that the protocol data unit is associated with a write command, the respective queue identifier associated with the one of the multiple queues, and the data.

17. The apparatus of claim 1 , wherein, to support the communications between the host and the controller of the storage element for the multiple queues on the host, the instructions, when executed by the at least one processor, cause the apparatus to:

support, based on the transport layer connection, receiving of data by the host from the controller of the storage element using one of the multiple queues.

18. The apparatus of claim 17 , wherein, to support the sending of data from the host toward the controller of the storage element using the one of the multiple queues, the instructions, when executed by the at least one processor, cause the apparatus to:

receive, by the host from the controller of the storage element using the transport layer connection, a protocol data unit including a command identifier configured to indicate that the protocol data unit is associated with a read command, the respective queue identifier associated with the one of the multiple queues, and the data.

19. The apparatus of claim 1 , wherein the communications between the host and the controller of the storage element for the multiple queues on the host are supported by a set of multiple transport layer subflows of the transport layer connection.

20. The apparatus of claim 1 , wherein the communications between the host and the controller of the storage element for the multiple queues on the host are based on a storage access and transport protocol.

21. The apparatus of claim 20 , wherein the storage access and transport protocol includes a Multi-Queue Non-Volatile Memory Express (MQ-NVMe) protocol.

22. The apparatus of claim 1 , wherein the transport layer connection includes a Transmission Control Protocol (TCP) connection, a Multipath - TCP (MP-TCP) connection, a Stream Control Transmission Protocol (SCTP) connection, or a QUIC connection.

23. A method, comprising:

supporting, by a host based on a transport layer connection with a controller of a storage element, communications between the host and the controller of the storage element for multiple queues on the host, wherein each queue of the multiple queues includes a respective send queue configured to support sending of communications toward a respective receive queue on the controller of the storage element and a respective receive queue configured to support receiving of communications from a respective send queue on the controller of the storage element, wherein each queue of the multiple queues has a respective queue identifier associated therewith; and

supporting communications between the host and the controller of the storage element for the multiple queues on the host based on the respective queue identifiers associated with the respective multiple queues.

24. An apparatus, comprising:

at least one processor; and

at least one memory including instructions which, when executed by the at least one processor, cause the apparatus to:

support establishment of a transport layer connection between a host and a controller of a storage element;

support establishment of a storage access and transport protocol connection between the host and the controller of the storage element based on the transport layer connection;

support, based on an indication that the storage access and transport protocol connection is configured to support communications for multiple queues based on the transport layer connection, establishment of the multiple queues for the storage access and transport protocol connection, wherein each queue of the multiple queues includes a respective send queue and a respective receive queue, wherein each queue of the multiple queues has a respective queue identifier associated therewith; and

support, based on the respective queue identifiers associated with the respective multiple queues, communication between the host and the controller of the storage element.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2021
From: DUTTA, PRANJAL KUMAR
To: NOKIA OF AMERICA CORPORATION
Reel/Frame 056403/0427 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2021
From: NOKIA OF AMERICA CORPORATION
To: NOKIA SOLUTIONS AND NETWORKS OY
Reel/Frame 056403/0545 →
Continuity (1)
Related Publication 20220311716A1 · Sep 29, 2022