IP Library Granted Patent US 7,912,979
Granted Patent B2
US 7,912,979 · App. 10/734,037 · Granted Mar 22, 2011

In-order delivery of plurality of RDMA messages

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 7,912,979
App. No.
10/734,037
Granted
Mar 22, 2011
Kind
B2
Abstract

An RNIC implementation that performs direct data placement to memory where all segments of a particular connection are aligned, or moves data through reassembly buffers where all segments of a particular connection are non-aligned. The type of connection that cuts-through without accessing the reassembly buffers is referred to as a “Fast” connection because it is highly likely to be aligned, while the other type is referred to as a “Slow” connection. When a consumer establishes a connection, it specifies a connection type. The connection type can change from Fast to Slow and back. The invention reduces memory bandwidth, latency, error recovery using TCP retransmit and provides for a “graceful recovery” from an empty receive queue. The implementation also may conduct CRC validation for a majority of inbound DDP segments in the Fast connection before sending a TCP acknowledgement (Ack) confirming segment reception.

Claims (36)

1. A method for delivering of a plurality of RDMA messages, the method comprising the steps of:

placing each out-of-order RDMA message to a reassembly buffer, wherein each in-order RDMA message bypasses the reassembly buffer and is sent to an internal data buffer for direct placement to a destination buffer;

storing information regarding each out-of-order RDMA message on a per TCP hole basis, wherein a TCP hole is a vacancy created in a TCP stream as a result of an out-of-order TCP segment, wherein the information stored for RDMA Read messages includes at least a number of pending RDMA Read Request messages waiting for a doorbell ring in a connection context on a per TCP hole basis or a number of completed RDMA Read Response messages on a per TCP hole basis; and

delivering the plurality of RDMA messages in-order, such that the out-of-order RDMA messages are reassembled in-order in the reassembly buffer, wherein, for RDMA Send type messages, the delivering includes, for each RDMA Send message of a TCP hold, placing a completion queue element (CQE), the CQE including RDMA Send message specific information, in a work queue element (WQE) associated with the respective RDMA Send message and keeping a number of RDMA Send messages in a connection context on a per TCP hole basis.

2. The method of claim 1 , wherein, for an RDMA Read Request message, the storing step includes:

ringing the doorbell of a network interface controller (NIC) that each of the number of pending RDMA read response messages have been posted to a respective work queue element (WQE) of a read queue upon closing of a respective TCP hole.

3. The method of claim 2 , further comprising the step of processing each WQE.

4. The method of claim 1 , further comprising the step of placing a completion queue element (CQE) to a completion queue (CQ) upon closing of the TCP hole.

5. The method of claim 1 , wherein a number of CQEs is equal to a number of RDMA Send messages of the TCP hole.

6. The method of claim 1 , wherein RDMA Send message specific information is retrieved from a respective WQE upon a Poll-for-Completion request by an RDMA verb interface.

7. The method of claim 1 , wherein, for RDMA Read Response type messages, the method further comprises the step of:

reporting completion of RDMA Read work requests upon closing of the TCP hole.

8. A system for delivering of a plurality of RDMA messages, the system comprising:

a processor; and

a memory, further comprising:

a system for placing each out-of-order RDMA message to a reassembly buffer, wherein each in-order RDMA message bypasses the reassembly buffer and is sent to an internal data buffer for direct placement to a destination buffer;

a system for storing information regarding each out-of-order RDMA message on a per TCP hole basis, wherein a TCP hole is a vacancy created in a TCP stream as a result of an out-of-order TCP segment, wherein the information stored for RDMA Read messages includes at least a number of pending RDMA Read Request messages waiting for a doorbell ring in a connection context on a per TCP hole basis or a number of completed RDMA Read Response messages on a per TCP hole basis; and

a system for delivering the plurality of RDMA messages in-order, such that the out-of-order RDMA messages are reassembled in-order in the reassembly buffer, wherein, for RDMA Send type messages, the delivering includes, for each RDMA Send message of a TCP hold, placing a completion queue element (CQE), the CQE including RDMA Send message specific information, in a work queue element (WQE) associated with the respective RDMA Send message and keeping a number of RDMA Send messages in a connection context on a per TCP hole basis.

9. The system of claim 8 , wherein, for an RDMA Read message, the storing means includes:

a system for ringing the doorbell of the delivery means that each of the number of pending RDMA Read Response messages have been posted to a respective work queue element (WQE) of a read queue upon closing of a respective TCP hole.

10. The system of claim 8 , further comprising means for placing a completion queue element (CQE) to a completion queue (CQ) upon closing of the TCP hole.

11. The system of claim 8 , wherein a number of CQEs is equal to a number of RDMA Send messages of the TCP hole.

12. The system of claim 8 , wherein the RDMA Send message specific information is retrieved from a respective WQE upon a Poll-for-Completion request by an RDMA verb interface.

13. The system of claim 8 , further comprising:

a system for reporting completion of RDMA Read work requests upon closing of the TCP hole.

14. A computer program product comprising a tangible computer useable storage medium having computer readable program code embodied therein for delivering of a plurality of RDMA messages, the program product comprising:

program code configured to place each out-of-order RDMA message to a reassembly buffer, wherein each in-order RDMA message bypasses the reassembly buffer and is sent to an internal data buffer for direct placement to a destination buffer;

program code configured to store information regarding each out-of-order RDMA message on a per TCP hole basis, wherein a TCP hole is a vacancy created in a TCP stream as a result of an out-of-order TCP segment, wherein the information stored for RDMA Read messages includes at least a number of pending RDMA Read Request messages waiting for a doorbell ring in a connection context on a per TCP hole basis or a number of completed RDMA Read Response messages on a per TCP hole basis; and

program code configured to deliver the plurality of RDMA messages in-order, such that the out-of-order RDMA messages are reassembled in-order in the reassembly buffer, wherein, for RDMA Send type messages, the delivering includes, for each RDMA Send message of a TCP hold, placing a completion queue element (CQE), the CQE including RDMA Send message specific information, in a work queue element (WQE) associated with the respective RDMA Send message and keeping a number of RDMA Send messages in a connection context on a per TCP hole basis.

15. The program product of claim 14 , wherein, for an RDMA Read message, the storing program code includes:

program code configured to ring the doorbell of a network interface controller (NIC) that each of the number of pending RDMA Read Response messages have been posted to a respective work queue element (WQE) of a read queue upon closing of a respective TCP hole.

16. The program product of claim 14 , further comprising program code configured to place a completion queue element (CQE) to a completion queue (CQ) upon closing of the TCP hole.

17. The program product of claim 14 , wherein a number of CQEs is equal to a number of RDMA Send messages of the TCP hole.

18. The program product of claim 14 , wherein the RDMA Send message specific information is retrieved from a respective WQE upon a Poll-for-Completion request by an RDMA verb interface.

19. The program product of claim 14 , further comprising:

program code configured to report completion of RDMA Read work requests upon closing of the TCP hole.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2018
From: ARUBA NETWORKS, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 045921/0055 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: ARUBA NETWORKS, INC.
Reel/Frame 036379/0274 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2015
From: ARUBA NETWORKS, INC.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 035814/0518 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2014
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: ARUBA NETWORKS, INC.
Reel/Frame 033249/0051 →