IP Library Granted Patent US 10,310,760
Granted Patent B1
US 10,310,760 · App. 16/175,316 · Granted Jun 4, 2019

Layering communication fabric protocols

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 10,310,760
App. No.
16/175,316
Granted
Jun 4, 2019
Kind
B1
Abstract

Layering communication fabric protocols, including: allocating storage resources on an initiating storage system for a data transfer, wherein a command protocol to implement the data transfer specifies an exchange of multiple messages; receiving, from a target storage system and into the allocated storage resources at the initiating storage system, data within a single message corresponding to the command protocol that specifies an exchange of multiple messages to implement the data transfer; and in response to receiving the data within the single message corresponding to the command protocol that specifies an exchange of multiple messages to implement the data transfer, generating a status message indicating receipt of the data.

Claims (29)

1. A method of layering communication fabric protocols, the method comprising:

allocating storage resources on an initiating storage system for a data transfer, wherein a command protocol to implement the data transfer specifies an exchange of multiple messages;

receiving, from a target storage system and into the allocated storage resources at the initiating storage system, data within a single message corresponding to the command protocol that specifies an exchange of multiple messages to implement the data transfer; and

in response to receiving the data within the single message corresponding to the command protocol that specifies an exchange of multiple messages to implement the data transfer, generating a status message indicating receipt of the data.

2. The method of claim 1 , wherein the data transfer is performed after receiving the single message without receiving all messages comprising the command protocol.

3. The method of claim 1 , wherein the storage resources are allocated for a read message from the initiating storage system to the target storage system, and wherein the initiating storage system does not expect data returned from the target storage system in response to the read message.

4. The method of claim 1 , wherein the storage resources allocated comprise multiple memory buffers.

5. The method of claim 4 , wherein a size for the memory buffer is allocated in dependence upon one or more of: a communication link bandwidth, network latency, or a payload specification for the command protocol.

6. The method of claim 4 , wherein a size of one memory buffer or a combined size of more than one memory buffer of the multiple buffers is based upon a maximum quantity of data that can be in transit between the initiating storage system and the target storage system at a given time.

7. The method of claim 1 , wherein the command protocol is non-volatile memory express (NVMe), wherein a communication fabric linking the source storage system to the target storage system implements Fibre Channel, wherein the data transfer is performed using an open exchange created by the target storage system sending an NVMe SQE (submission queue entry) message, and wherein the status message is an NVMe CQE (completion queue entry) message.

8. An apparatus for layering communication fabric protocols, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

allocating storage resources on an initiating storage system for a data transfer, wherein a command protocol to implement the data transfer specifies an exchange of multiple messages;

receiving, from a target storage system and into the allocated storage resources at the initiating storage system, data within a single message corresponding to the command protocol that specifies an exchange of multiple messages to implement the data transfer; and

in response to receiving the data within the single message corresponding to the command protocol that specifies an exchange of multiple messages to implement the data transfer, generating a status message indicating receipt of the data.

9. The apparatus of claim 8 , wherein the data transfer is performed after receiving the single message without receiving all messages comprising the command protocol.

10. The apparatus of claim 8 , wherein the storage resources are allocated for a read message from the initiating storage system to the target storage system, and wherein the initiating storage system does not expect data returned from the target storage system in response to the read message.

11. The apparatus of claim 8 , wherein the storage resources allocated comprise multiple memory buffers.

12. The apparatus of claim 11 , wherein a size for the memory buffer is allocated in dependence upon one or more of: a communication link bandwidth, network latency, or a payload specification for the command protocol.

13. The apparatus of claim 11 , wherein a size of one memory buffer or a combined size of more than one memory buffer of the multiple buffers is based upon a maximum quantity of data that can be in transit between the initiating storage system and the target storage system at a given time.

14. The apparatus of claim 8 , wherein the command protocol is non-volatile memory express (NVMe), wherein a communication fabric linking the source storage system to the target storage system implements Fibre Channel, wherein the data transfer is performed using an open exchange created by the target storage system sending an NVMe SQE (submission queue entry) message, and wherein the status message is an NVMe CQE (completion queue entry) message.

15. A computer program product for layering communication fabric protocols, the computer program product disposed upon a computer readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:

allocating storage resources on an initiating storage system for a data transfer, wherein a command protocol to implement the data transfer specifies an exchange of multiple messages;

receiving, from a target storage system and into the allocated storage resources at the initiating storage system, data within a single message corresponding to the command protocol that specifies an exchange of multiple messages to implement the data transfer; and

in response to receiving the data within the single message corresponding to the command protocol that specifies an exchange of multiple messages to implement the data transfer, generating a status message indicating receipt of the data.

16. The computer program product of claim 15 , wherein the data transfer is performed after receiving the single message without receiving all messages comprising the command protocol.

17. The computer program product of claim 15 , wherein the storage resources are allocated for a read message from the initiating storage system to the target storage system, and wherein the initiating storage system does not expect data returned from the target storage system in response to the read message.

18. The computer program product of claim 15 , wherein the storage resources allocated comprise multiple memory buffers.

19. The computer program product of claim 18 , wherein a size for the memory buffer is allocated in dependence upon one or more of: a communication link bandwidth, network latency, or a payload specification for the command protocol.

20. The computer program product of claim 18 , wherein a size of one memory buffer or a combined size of more than one memory buffer of the multiple buffers is based upon a maximum quantity of data that can be in transit between the initiating storage system and the target storage system at a given time.

Assignments (3)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2018
From: DREIER, ROLAND; HODGSON, STEVEN; KARR, RONALD
To: PURE STORAGE, INC.
Reel/Frame 047359/0847 →
Cited By (22)
US 12,204,988 US 12,277,524 US 12,306,751 US 12,353,714 US 12,361,371 US 12,367,320 US 12,393,533 US 12,430,029 US 12,443,350 US 12,443,887 US 12,456,092 US 12,488,307 US 12,499,071 US 12,504,985 US 12,511,163 US 12,524,171 US 12,566,576 US 12,579,500 US 12,586,034 US 12,602,160 US 12,619,374 US 12,626,215